diff --git a/.github/update.log b/.github/update.log index 259fac3202..fdcd9dc9fe 100644 --- a/.github/update.log +++ b/.github/update.log @@ -646,3 +646,4 @@ Update On Fri May 10 20:29:17 CEST 2024 Update On Sat May 11 20:27:59 CEST 2024 Update On Sun May 12 20:29:03 CEST 2024 Update On Mon May 13 20:26:53 CEST 2024 +Update On Tue May 14 20:30:05 CEST 2024 diff --git a/bb-evolved/CHANGELOG.md b/bb-evolved/CHANGELOG.md index 1a5703aa3d..72ded08c91 100644 --- a/bb-evolved/CHANGELOG.md +++ b/bb-evolved/CHANGELOG.md @@ -1,6 +1,33 @@ # 更新日志 +## v2.8.11-preview +`2024-05-14` + +包含 [v2.8.11](https://github.com/the1812/Bilibili-Evolved/releases/tag/v2.8.11) 的所有更新内容. + +✨新增 +- `下载视频 - WASM 混流输出` 支持批量下载. (PR #4726 by [WakelessSloth56](https://github.com/WakelessSloth56)) +- `夜间模式` 增加 `color-scheme` meta 信息, 适配 Chrome 的 [Fluent overlay scrollbars](chrome://flags/#fluent-overlay-scrollbars). (#4717) + +## v2.8.11 +`2024-05-14` + +🐛修复 +- 修复了搜索框中的 XSS 注入问题. +- 修复 `评论区IP属地显示` 失效. (#4690) +- 在搜索框中删除搜索历史时将不再收起下拉菜单. (#4732) +- 修复功能反复开关时, 功能面板中的按钮重复出现. (#4731) +- 修复功能面板空间不足时出现折行. (#4721) +- 修复 `启用视频截图` 在番剧区失效. (#4719) + +☕开发者相关 +- Comment API 调整: + - 增加对 `CommentArea` 销毁的监测. + - `forEachCommentItem` / `forEechCommentArea` 参数统一支持 `added` 和 `removed` 回调. + - `CommentReplyItem` / `CommentItem` 增加属性 `vueProps`. + + ## v2.8.10-preview `2024-04-23` diff --git a/bb-evolved/dist/bilibili-evolved.preview.user.js b/bb-evolved/dist/bilibili-evolved.preview.user.js index a4017d5577..80760906ba 100644 --- a/bb-evolved/dist/bilibili-evolved.preview.user.js +++ b/bb-evolved/dist/bilibili-evolved.preview.user.js @@ -3,7 +3,7 @@ // @description Bilibili Evolved 的预览版, 可以抢先体验新功能. // @updateURL https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/dist/bilibili-evolved.preview.user.js // @downloadURL https://raw.githubusercontent.com/the1812/Bilibili-Evolved/preview/dist/bilibili-evolved.preview.user.js -// @version 2.8.10 +// @version 2.8.11 // @author Grant Howard, Coulomb-G // @copyright 2024, Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G) // @license MIT @@ -46,46 +46,46 @@ const r=()=>{(0,o.contentLoaded)((async()=>{document.body.classList.add("round-c /* eslint-disable no-bitwise */ function*(e,t){let n,o=t?.low??0,i=t?.high??e.length;for(;o+1>>1;(yield{low:o,high:i,mid:n,slice:e.slice(o,n),rouge:Math.trunc(Math.log2(i-o))})?i=n:o=n}return{low:o,high:i,mid:n,slice:e.slice(o,n),rouge:Math.trunc(Math.log2(i-o)),target:e[o]}};var c=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",[t("div",[e._v("可能出问题的组件是:"+e._s(e.displayName)+"("+e._s(e.name)+")")]),e._v(" "),t("div",[t("span",{staticClass:"link",on:{click:e.restore}},[e._v("恢复原状("+e._s(e.countdown)+" 秒)")])])])};c._withStripped=!0;var s=n(5026);const l=n.n(s)().extend({data:()=>({countdown:30,userComponent:void 0}),computed:{displayName(){return this.userComponent?.metadata?.displayName},name(){return this.userComponent?.metadata?.name}},watch:{countdown(e){0===e&&this.restore()}},created(){this.interval=setInterval((()=>{this.countdown>0?this.countdown--:clearInterval(this.interval)}),1e3)},destroyed(){clearInterval(this.interval)},methods:{restore(){clearInterval(this.interval),this.$emit("restore")}}});const d=(0,n(4893).Z)(l,c,[],!1,null,null,null).exports;let m,f,u,p,b;const h=e=>{m?Object.assign(m,e):m=e},g=e=>{f=e},F=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,5067)),{userComponents:t}=e,o=lodash.pickBy(t,(e=>e.metadata.configurable||!0)),{targetComponents:i,keepDisabledComponents:r,keepEnabledComponents:a}=lodash.transform(o,((e,t,n)=>{m.keepEnabledComponents?.includes(n)?e.keepEnabledComponents.push(t):m.keepDisabledComponents?.includes(n)?e.keepDisabledComponents.push(t):e.targetComponents.push(t)}),{targetComponents:[],keepDisabledComponents:[],keepEnabledComponents:[]});return{userComponents:t,configurableUserComponents:o,targetComponents:i,keepDisabledComponents:r,keepEnabledComponents:a}},v=(e,t)=>e.forEach((e=>e.settings.enabled=t)),w=e=>e.map((e=>`${e.metadata.displayName}(${e.metadata.name})`)).join(", ")||"无",y=()=>!lodash.isEmpty(m.bisectInitialState),x=async()=>{f?.log("stop - 准备停止组件二等分"),b?.close();const{configurableUserComponents:e}=await F(),t=[];for(const[n,o]of Object.entries(e)){const e=m.originalComponentEnableState?.[n];null!=e?o.settings.enabled=e:t.push(o)}if(t.length){const e=`部分组件未能还原状态:${w(t)}`;f?.warn(`stop - ${e}`),i.Toast.error(e,"组件二等分"),await(0,r.delay)(3e3)}f?.log("stop - 清理状态"),u=null,m.bisectInitialState={},m.originalComponentEnableState={},f?.log("stop - 重载页面"),location.reload()},k=async(e,t)=>{b?.close(),f?.log("next - 当前工作状态:"+( // eslint-disable-next-line no-nested-ternary -null==e?"未知":e?"异常":"正常"));const{done:n,value:o}=u.next(e);if(n){const{low:e,high:t}=o;m.bisectInitialState={low:e,high:t};const n=`bisector-result-toast-content-${(0,r.getRandomId)()}`;i.Toast.info(`
`,"组件二等分结果"),await(0,r.delay)();const a=(0,r.mountVueComponent)(d,`#${n}`);a.userComponent=o.target,a.$on("restore",(()=>{x()}))}else{const{slice:e,low:n,high:i}=o,r=e,a=lodash.difference(p.targetComponents,e);m.bisectInitialState={low:n,high:i},f?.log(`next - 关闭组件:${w(a)}`),f?.log(`next - 开启组件:${w(r)}`),v(a,!1),v(r,!0),t&&(f?.log("next - 重载页面"),location.reload())}return{done:n,value:o}},C=async()=>{f?.log("recover - 准备恢复组件二等分"),p=await F();const{targetComponents:e,keepDisabledComponents:t,keepEnabledComponents:i}=p;v(i,!0),v(t,!1),f?.log(`recover - 保持关闭组件:${w(t)}`),f?.log(`recover - 保持开启组件:${w(i)}`),f?.log(`recover - 全部目标组件:${w(e)}`),u=a(e,m.bisectInitialState);const{done:r,value:c}=await k();if(!r){const{rouge:e}=c;b=(0,o.showDialog)({title:()=>Promise.resolve().then(n.bind(n,3346)),content:()=>Promise.resolve().then(n.bind(n,8030)),contentProps:{rouge:e,onGood:()=>k(!1,!0),onBad:()=>k(!0,!0),onAbort:()=>x()}})}},A=async()=>{if(y())return void await C();f?.log("start - 准备开始组件二等分"),p=await F();const{configurableUserComponents:e,targetComponents:t,keepDisabledComponents:n,keepEnabledComponents:o}=p;f?.log("start - 保存组件初始启用状态"),m.originalComponentEnableState=lodash.mapValues(e,(e=>e.settings.enabled)),v(t,!0),v(o,!0),v(n,!1),f?.log(`start - 保持关闭组件:${w(n)}`),f?.log(`start - 保持开启组件:${w(o)}`),f?.log(`start - 启用全部目标组件:${w(t)}`),u=a(t,m.bisectInitialState),await k(void 0,!0)}},5157:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getBuiltInComponents:()=>O,isBuiltInComponent:()=>V});var o=n(3937),i=n(8612),r=n(2860),a=n(6136);const c={name:"launchBar.plugin",displayName:"搜索栏 - 快捷键支持",setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.showLaunchBar={displayName:"显示搜索栏",run:async()=>{const{toggleLaunchBar:e}=await Promise.resolve().then(n.bind(n,3410));return e(),!0}}})),t("keymap.presets",(e=>{e.showLaunchBar="/"}))}},s=(0,r.defineComponentMetadata)({name:"launchBar",displayName:"搜索栏",configurable:!1,entry:i.none,plugin:c,hidden:!0,tags:[a.t.general,a.t.utils],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});var l=n(8884),d=n(2951),m=n(2545);function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u{constructor(){f(this,"accepts",(e=>e.nodeType===Node.ELEMENT_NODE)),f(this,"getValue",(e=>e.nodeValue)),f(this,"setValue",((e,t)=>{e.nodeValue=t})),f(this,"getElement",(e=>e))}translate(e){let t=this.getValue(e);if(!t||"string"!=typeof t||"*"===t)return;t=t.trim();const n=u.map.get(t);if(void 0===n){const n=u.regex.find((e=>{let[n]=e;return n.test(t)}));if(n){const[o,i]=n;this.setValue(e,t.replace(o,i))}}else if("string"==typeof n)this.setValue(e,n);else if(Array.isArray(n)){let t=null;for(const o of n)if("string"==typeof o)t=o;else{const{text:n,selector:i,not:r}=o;this.getElement(e)?.matches(i)!==Boolean(r)&&(t=n)}null!==t&&this.setValue(e,t)}else{const{text:t,selector:o,not:i}=n;this.getElement(e)?.matches(o)!==Boolean(i)&&this.setValue(e,t)}}static walk(e,t){const n=document.createNodeIterator(e, +null==e?"未知":e?"异常":"正常"));const{done:n,value:o}=u.next(e);if(n){const{low:e,high:t}=o;m.bisectInitialState={low:e,high:t};const n=`bisector-result-toast-content-${(0,r.getRandomId)()}`;i.Toast.info(`
`,"组件二等分结果"),await(0,r.delay)();const a=(0,r.mountVueComponent)(d,`#${n}`);a.userComponent=o.target,a.$on("restore",(()=>{x()}))}else{const{slice:e,low:n,high:i}=o,r=e,a=lodash.difference(p.targetComponents,e);m.bisectInitialState={low:n,high:i},f?.log(`next - 关闭组件:${w(a)}`),f?.log(`next - 开启组件:${w(r)}`),v(a,!1),v(r,!0),t&&(f?.log("next - 重载页面"),location.reload())}return{done:n,value:o}},C=async()=>{f?.log("recover - 准备恢复组件二等分"),p=await F();const{targetComponents:e,keepDisabledComponents:t,keepEnabledComponents:i}=p;v(i,!0),v(t,!1),f?.log(`recover - 保持关闭组件:${w(t)}`),f?.log(`recover - 保持开启组件:${w(i)}`),f?.log(`recover - 全部目标组件:${w(e)}`),u=a(e,m.bisectInitialState);const{done:r,value:c}=await k();if(!r){const{rouge:e}=c;b=(0,o.showDialog)({title:()=>Promise.resolve().then(n.bind(n,3346)),content:()=>Promise.resolve().then(n.bind(n,8030)),contentProps:{rouge:e,onGood:()=>k(!1,!0),onBad:()=>k(!0,!0),onAbort:()=>x()}})}},A=async()=>{if(y())return void await C();f?.log("start - 准备开始组件二等分"),p=await F();const{configurableUserComponents:e,targetComponents:t,keepDisabledComponents:n,keepEnabledComponents:o}=p;f?.log("start - 保存组件初始启用状态"),m.originalComponentEnableState=lodash.mapValues(e,(e=>e.settings.enabled)),v(t,!0),v(o,!0),v(n,!1),f?.log(`start - 保持关闭组件:${w(n)}`),f?.log(`start - 保持开启组件:${w(o)}`),f?.log(`start - 启用全部目标组件:${w(t)}`),u=a(t,m.bisectInitialState),await k(void 0,!0)}},5157:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getBuiltInComponents:()=>O,isBuiltInComponent:()=>V});var o=n(3937),i=n(8612),r=n(2860),a=n(6136);const c={name:"launchBar.plugin",displayName:"搜索栏 - 快捷键支持",setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.showLaunchBar={displayName:"显示搜索栏",run:async()=>{const{toggleLaunchBar:e}=await Promise.resolve().then(n.bind(n,3410));return e(),!0}}})),t("keymap.presets",(e=>{e.showLaunchBar="/"}))}},s=(0,r.defineComponentMetadata)({name:"launchBar",displayName:"搜索栏",configurable:!1,entry:i.none,plugin:c,hidden:!0,tags:[a.t.general,a.t.utils],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});var l=n(8884),d=n(2951),m=n(2545);function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u{constructor(){f(this,"accepts",(e=>e.nodeType===Node.ELEMENT_NODE)),f(this,"getValue",(e=>e.nodeValue)),f(this,"setValue",((e,t)=>{e.nodeValue=t})),f(this,"getElement",(e=>e))}translate(e){let t=this.getValue(e);if(!t||"string"!=typeof t||"*"===t)return;t=t.trim();const n=u.map.get(t);if(void 0===n){const n=u.regex.find((e=>{let[n]=e;return n.test(t)}));if(n){const[o,i]=n;this.setValue(e,t.replace(o,i))}}else if("string"==typeof n)this.setValue(e,n);else if(Array.isArray(n)){let t=null;for(const o of n)if("string"==typeof o)t=o;else{const{text:n,selector:i,not:r}=o;this.getElement(e)?.matches(i)!==Boolean(r)&&(t=n)}null!==t&&this.setValue(e,t)}else{const{text:t,selector:o,not:i}=n;this.getElement(e)?.matches(o)!==Boolean(i)&&this.setValue(e,t)}}static walk(e,t){const n=document.createNodeIterator(e, // eslint-disable-next-line no-bitwise -NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT);let o=n.nextNode();for(;o;)t(o),o=n.nextNode()}static translate(e){if(e.nodeType===Node.TEXT_NODE)return void u.textNode.translate(e);const t=e=>{for(const t of u.sensitiveTranslators)t.accepts(e)&&t.translate(e)};t(e),u.walk(e,t)}static translateCssMatches(){const e=u.map.get("*");if(e)for(const{selector:t,text:n}of e){const e=document.querySelector(t);e&&[...e.childNodes].filter((e=>e.nodeType===Node.TEXT_NODE)).forEach((e=>e.nodeValue=n))}}}f(u,"textNode",void 0),f(u,"title",void 0),f(u,"placeholder",void 0),f(u,"sensitiveTranslators",void 0),f(u,"map",void 0),f(u,"regex",void 0);u.textNode=new class extends u{constructor(){super(...arguments),f(this,"accepts",(e=>e.nodeType===Node.TEXT_NODE)),f(this,"getElement",(e=>e.parentElement))}},u.title=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("title"))),f(this,"setValue",((e,t)=>{e.setAttribute("title",t)}))}},u.placeholder=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("placeholder"))),f(this,"setValue",((e,t)=>{e.setAttribute("placeholder",t)}))}},u.sensitiveTranslators=[u.textNode,u.title,u.placeholder];const p=(0,r.defineComponentMetadata)({name:"i18n",displayName:"多语言",configurable:!1,entry:async()=>{const{getSelectedLanguage:e}=await Promise.resolve().then(n.bind(n,2504)),t=e();if(t===l.defaultLanguageCode)return;const{registerAndGetData:o}=await Promise.resolve().then(n.bind(n,4909)),[i,r]=o(`i18n.${t}`,new Map,[]);console.log(t,i.size,r.length),0===i.size&&0===r.length||(document.documentElement.setAttribute("lang",t),u.map=i,u.regex=r,u.translate(document.body),u.translateCssMatches(),(0,m.allMutations)((e=>{e.forEach((e=>{"childList"===e.type?(e.addedNodes.length>0&&u.translateCssMatches(),e.addedNodes.forEach((e=>{u.translate(e)}))):"characterData"===e.type?u.textNode.translate(e.target):"attributes"===e.type&&("title"===e.attributeName?u.title.translate(e.target):"placeholder"===e.attributeName&&u.placeholder.translate(e.target))}))})))},tags:[a.t.utils,a.t.experimental,a.t.general],description:{"zh-CN":"安装其他语言包可以更换界面语言, 机器翻译选择可以设定其他一些功能如`动态翻译`, `评论翻译`使用的翻译器. 机器翻译的选择不影响界面语言."},options:{language:{defaultValue:l.languageCodeToName[l.defaultLanguageCode],displayName:"界面语言选择",dropdownEnum:l.languageCodeToName},translator:{defaultValue:Object.keys(d.WK)[0],displayName:"机器翻译选择",dropdownEnum:d.U6}},hidden:!0,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});var b=n(2046),h=n(5067),g=n(9219),F=n(6048),v=n(3846);const{checkComponentsUpdate:w,checkLastFeature:y,forceCheckUpdate:x,forceCheckUpdateAndReload:k,silentCheckUpdate:C}=v,A=(0,r.defineOptionsMetadata)({lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},lastInstalledVersion:{displayName:"最后安装版本",defaultValue:"2.0.0",hidden:!0},localPortOverride:{displayName:"本地组件链接端口",defaultValue:"",hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5},urls:{displayName:"更新链接",defaultValue:{components:{},plugins:{},styles:{}},hidden:!0},maxUpdateCount:{displayName:"单次最大更新量 (个)",defaultValue:4}}),E=(0,r.defineComponentMetadata)({name:F.u2,displayName:"自动更新器",description:{"zh-CN":"自动检查组件, 插件和样式的更新. (仅限从设置面板中安装的)"},tags:[a.t.utils],options:A,extraOptions:()=>Promise.resolve().then(n.bind(n,8712)).then((e=>e.default)),entry:async e=>{let{settings:{options:t}}=e;if((0,i.isIframe)())return v;const n=Number(new Date)-t.lastUpdateCheck>=t.minimumDuration,o=new g.Version(b.meta.version).greaterThan(new g.Version(t.lastInstalledVersion));return n?coreApis.lifeCycle.fullyLoaded((()=>C())):o&&coreApis.lifeCycle.fullyLoaded((()=>x())),v},plugin:{displayName:"自动更新器 - 功能扩展",description:{"zh-CN":"记录在设置面板中的功能安装/卸载数据供自动更新使用; 并在组件详情中支持手动检查该组件的更新."},setup:e=>{let{addData:t,addHook:o}=e;["components","plugins","styles"].forEach((e=>{o(`user${lodash.startCase(e)}.add`,{after:(t,n,o)=>{const{options:i}=(0,h.getComponentSettings)("autoUpdate"),r=i.urls[e][o.name];r?(r.url=n,r.lastUpdateCheck=Number(new Date),r.alwaysUpdate=(0,F.jN)(n)):i.urls[e][o.name]={url:n,lastUpdateCheck:Number(new Date),installTime:Number(new Date),alwaysUpdate:(0,F.jN)(n)}}}),o(`user${lodash.startCase(e)}.remove`,{after:t=>{const{options:n}=(0,h.getComponentSettings)("autoUpdate");n.urls[e][t.name]&&delete n.urls[e][t.name]}})})),t("settingsPanel.componentActions",(e=>{const{options:t}=(0,h.getComponentSettings)("autoUpdate");e.push((e=>{const o=t.urls.components[e.name];if(o)return{name:"checkUpdate",displayName:"检查更新",icon:(0,F.jN)(o.url)?"mdi-file-download-outline":"mdi-cloud-download-outline",visible:(0,h.isUserComponent)(e),title:o.url,action:async()=>{const{Toast:t}=await Promise.resolve().then(n.bind(n,3823)),o=t.info("检查更新中...","检查更新");o.message=await w({filterNames:[e.name],force:!0}),o.duration=3e3}}}))}));const i="mdi-cloud-sync-outline";t("launchBar.actions",(e=>{e.push({name:"updateAllFeaturesActions",getActions:async()=>[{name:"检查所有更新",description:"Check Updates",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,3823)),t=e.info("正在检查更新...","检查所有更新");await k(),t.close()},icon:i}]})})),t("settingsPanel.searchBarActions",(e=>{e.unshift({key:"updateFeatures",title:e=>{let{selectedComponents:t}=e;return t.length>0?"更新所选组件":"检查所有更新"},icon:"mdi-cloud-download-outline",run:async e=>{const t=e.selectedComponents.length>0?`确定要更新所选的 ${e.selectedComponents.length} 个组件吗?`:"确定要检查所有更新吗?";if(!window.confirm(t))return;const{Toast:o}=await Promise.resolve().then(n.bind(n,3823)),{isBuiltInComponent:i}=await Promise.resolve().then(n.bind(n,5157));if(0===e.selectedComponents.length){const e=o.info("正在检查更新...","检查所有更新");k(),await k(),e.close()}else e.selectedComponents.forEach((async e=>{let{name:t}=e;if(i(t))o.info("内置组件不能更新","检查更新",3e3);else{const e=o.info("检查更新中...","检查更新"),n=await w({filterNames:[t],force:!0});e.message=n,e.duration=3e3}}))}})})),(0,h.getGeneralSettings)().devMode&&t("launchBar.actions",(e=>{e.push({name:"updateLastFeatureActions",getActions:async()=>[{name:"检查最近更新的功能",description:"Check Last Update",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,3823)),t=e.info("正在检查更新...","检查最近更新的功能");await y(),t.close()},icon:i}]})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}),B=async()=>{const{cdnRoots:e}=await Promise.resolve().then(n.bind(n,7274)),{meta:t}=await Promise.resolve().then(n.bind(n,2046)),{getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,5067));return`${e[o().cdnRoot](t.compilationInfo.branch)}dist/${t.originalFilename}`},D=(0,r.defineComponentMetadata)({name:"notifyNewVersion",displayName:"新版本提示",description:"定期检查脚本本体的更新, 并弹出提示.",tags:[a.t.utils],options:{lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5}},entry:async e=>{let{settings:{options:t}}=e;try{const{Version:e}=await Promise.resolve().then(n.bind(n,9219)),{monkey:o}=await Promise.resolve().then(n.bind(n,5267)),{meta:i}=await Promise.resolve().then(n.bind(n,2046)),{Toast:r}=await Promise.resolve().then(n.bind(n,3823)),{isDataSaveMode:a}=await Promise.resolve().then(n.bind(n,8612));if(a())return;const c=Number(new Date);if(c-t.lastUpdateCheck${m.versionString} 已发布. 查看详情`,"检查更新");(await p.element).querySelector(".view-details").addEventListener("click",(()=>{(async e=>{const{showDialog:t}=await Promise.resolve().then(n.bind(n,5167));t({title:"更新说明",content:()=>Promise.resolve().then(n.bind(n,6991)),contentProps:{content:e,updateUrl:await B()}})})(u)}))}catch(e){console.warn("[新版本提示] 检查更新时发生错误: ",e)}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}),I=(0,r.defineOptionsMetadata)({originalComponentEnableState:{defaultValue:{},hidden:!0},keepDisabledComponents:{defaultValue:[],hidden:!0},keepEnabledComponents:{defaultValue:[],hidden:!0},bisectInitialState:{defaultValue:{},hidden:!0}});var z=n(1197),S=n(4732);const M=(0,r.defineComponentMetadata)({name:"bisector",displayName:"组件二等分",tags:[a.t.general,a.t.utils],hidden:!0,configurable:!1,entry:async e=>{let{settings:{options:t}}=e;const o=await Promise.resolve().then(n.bind(n,4132));o.setOptions(t),o.setConsole((0,S.useScopedConsole)("组件二等分")),unsafeWindow.addEventListener(z.LifeCycleEventTypes.ComponentsLoaded,(()=>{o.isRecover()&&o.recover()}))},options:I,plugin:{displayName:"组件二等分 - 功能扩展",setup:e=>{let{addData:t}=e;t("launchBar.actions",(e=>{e.push({name:"bisector-start",getActions:async()=>[{name:"开始 / 继续组件二等分",description:"Start / Continue component bisection",icon:"mdi-view-split-horizontal",action:async()=>{const e=await Promise.resolve().then(n.bind(n,4132));await e.start()}}]})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}),P=(0,r.defineComponentMetadata)({name:"compatibilities",displayName:"兼容性选项",configurable:!1,tags:[a.t.general],options:{disableOnBalh:{defaultValue:!1,displayName:'与 "解除 B 站区域限制" 互斥'}},entry:i.none,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(7761);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,8232,17)).then((e=>e.default))}})()}),O=()=>[o.component,s,p,E,D,M,P],V=e=>O().some((t=>t.name===e))},6316:(e,t,n)=>{"use strict";n.r(t),n.d(t,{components:()=>d,componentsMap:()=>l,componentsTags:()=>c.t,defineComponentMetadata:()=>s.defineComponentMetadata,defineOptionMetadata:()=>s.defineOptionMetadata,defineOptionsMetadata:()=>s.defineOptionsMetadata,importComponent:()=>b,loadAllComponents:()=>F,loadAllUserComponents:()=>g,loadComponent:()=>h});var o=n(5067),i=n(1197),r=n(9770),a=n(5157),c=n(6136),s=n(2860);const l={},d=lodash.once((()=>{const e=(0,a.getBuiltInComponents)();return e.forEach((e=>l[e.name]=e)),e}))(),m=async e=>{if(!e.i18n)return;const{addI18nData:t}=await Promise.resolve().then(n.bind(n,2504));for(const[n,o]of Object.entries(e.i18n)){const{map:e=[],regex:i=[]}="function"==typeof o?await o():o;t(n,e,i)}},f=e=>`${e.name}.widget`,u=async e=>{if(e.widget){const t={...e.widget,name:f(e)},{addData:o}=await Promise.resolve().then(n.bind(n,4909)),{WidgetsPlugin:i}=await Promise.resolve().then(n.bind(n,3937));o(i,(n=>{if(n.find((e=>e.name===t.name)))return;const{urlInclude:o,urlExclude:i}=t;e.urlInclude&&(o?o.push(...e.urlInclude):t.urlInclude=[...e.urlInclude]),e.urlExclude&&(i?i.push(...e.urlExclude):t.urlExclude=[...e.urlExclude]),n.push(t)}))}},p={},b=e=>{if(!(e in p))throw new Error(`组件'${e}'未加载, 请确认拼写无误且组件已开启.`);return p[e]},h=async e=>{const{componentLoadTrace:t}=await Promise.resolve().then(n.bind(n,2857)),{matchUrlPattern:i}=await Promise.resolve().then(n.bind(n,8612)),{coreApis:r}=await Promise.resolve().then(n.bind(n,4435));await t(e);const a=async()=>{u(e);const t=await e.entry({settings:(0,o.getComponentSettings)(e),metadata:e,coreApis:r});p[e.name]=t||{}};e.reload&&e.unload&&(0,o.addComponentListener)(e.name,(async t=>{if(!1!==e.configurable&&!(e.urlExclude&&e.urlExclude.some(i)||e.urlInclude&&e.urlInclude.every(lodash.negate(i))))if(e.name in p){if(t&&e.reload&&(e.reload(),e.widget&&u(e)),!t&&e.unload&&(e.unload(),e.widget)){const{getData:t}=await Promise.resolve().then(n.bind(n,4909)),{WidgetsPlugin:o}=await Promise.resolve().then(n.bind(n,3937)),[i]=t(o);if(i){const t=f(e),n=i.findIndex((e=>e.name===t));-1!==n&&i.splice(n,1)}}}else t&&await a()})),(0,o.isComponentEnabled)(e)&&await a()},g=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,5067)),{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,5705));for(const[n,i]of Object.entries(e.userComponents)){const{code:e}=i;let r;try{r=t(e)}catch(e){console.error("从代码加载用户组件失败。代码可能有语法错误或代码执行时有抛出值。",{componentName:n,error:e});continue}o=r,d.push(o),l[o.name]=o}var o},F=async()=>{const e=(0,o.getGeneralSettings)(),{loadAllPlugins:t}=await Promise.resolve().then(n.bind(n,9094)),a=()=>t(d).then((()=>Promise.all(d.map(m)))).then((()=>Promise.all(d.map(h)))).then((async()=>{if(e.devMode){const{componentLoadTime:e,componentResolveTime:t}=await Promise.resolve().then(n.bind(n,2857)),{logStats:o}=await Promise.resolve().then(n.bind(n,5043));o("components block",e),o("components resolve",t)}}));return new Promise(((t,n)=>{e.scriptLoadingMode===r.LoadingMode.Delay?(0,i.fullyLoaded)((()=>a().then(t).catch(n))):e.scriptLoadingMode===r.LoadingMode.Race&&(0,i.contentLoaded)((()=>a().then(t).catch(n)))}))}},2860:(e,t,n)=>{"use strict";n.r(t),n.d(t,{defineComponentMetadata:()=>r,defineOptionMetadata:()=>o,defineOptionsMetadata:()=>i});const o=e=>e,i=e=>e,r=e=>e},6080:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getDescriptionHTML:()=>c,getDescriptionMarkdown:()=>a,getDescriptionText:()=>s});var o=n(9896),i=n.n(o),r=n(2504);const a=async e=>{const{description:t,author:n}=e;return(n?Array.isArray(n)?`by ${n.map((e=>`[@${e.name}](${e.link})`)).join(",")}\n\n`:`by [@${n.name}](${n.link})\n\n`:"")+await(async()=>{if(!t)return"暂无描述.";const e=async e=>"string"==typeof e?e:e();if("object"==typeof t){const n=(0,r.getSelectedLanguage)();return e(t[n]??t["zh-CN"])}return e(t)})()},c=async e=>i()(await a(e)),s=async e=>{const t=await c(e),n=document.createElement("div");return n.innerHTML=t,n.innerText}},2504:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addI18nData:()=>a,getSelectedLanguage:()=>c});var o=n(4909),i=n(5067),r=n(8884);const a=(e,t,n)=>{(0,o.addData)(`i18n.${e}`,((e,o)=>{t?.forEach((t=>{let[n,o]=t;return e.set(n,o)})),n&&o.push(...n)}))},c=()=>{const e=(0,i.getComponentSettings)("i18n");return(0,r.languageNameToCode)(e.options.language)}},2951:(e,t,n)=>{"use strict";n.d(t,{Ty:()=>p,U6:()=>u,WK:()=>f});var o=n(5267),i=n(4021),r=n(5067),a=n(8884),c=n(4909),s=n(8612);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){l(this,"name",void 0),l(this,"link",void 0),l(this,"defaultLanguage",void 0)}getTargetLanguage(){const e=(0,r.getComponentSettings)("i18n");return e.enabled?(0,a.languageNameToCode)(e.options.language):this.defaultLanguage}toString(){return this.name}}class m extends d{constructor(){super(...arguments),l(this,"name","Google"),l(this,"link","https://translate.google.com/"),l(this,"defaultLanguage","zh"),l(this,"apiUrl","https://translate.google.com/translate_a/single")}async translate(e){let t=this.getTargetLanguage();t.includes("-")&&t!==this.defaultLanguage&&(t=t.substring(0,t.indexOf("-")));try{const n=await(0,o.monkey)({url:`${this.apiUrl}?${(0,s.formData)({client:"gtx",sl:"auto",tl:t,dt:"t",q:encodeURIComponent(e)})}`,method:"GET",headers:{"User-Agent":i.UserAgent},responseType:"json"});return n[0].map((e=>e[0])).join("")}catch(e){throw console.error("Translator: Google",e),new Error("调用Google翻译失败.")}}}const[f]=(0,c.registerAndGetData)("i18n.machineTranslators",{GoogleCN:new class extends m{constructor(){super(...arguments),l(this,"name","GoogleCN"),l(this,"link","https://translate.google.cn/"),l(this,"apiUrl","https://translate.google.cn/translate_a/single")}},Google:new m}),u=Object.keys(f),p=()=>{const{options:{translator:e}}=(0,r.getComponentSettings)("i18n");return f[e]||f.GoogleCN}},7187:(e,t,n)=>{"use strict";n.d(t,{WY:()=>a,dr:()=>c});var o=n(9047);const i="search_history:search_history",r=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;const t=await o.crossOriginLocalStorage.getItem(e),n=t?JSON.parse(t):[];return n},a=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;console.log("add",e),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(lodash.sortBy(lodash.uniqBy([{value:e,timestamp:Number(new Date)},...await r()],(e=>e.value)),(e=>e.timestamp)).reverse().slice(0,20)))},c={name:"history",getActions:async()=>{const{search:e}=await Promise.resolve().then(n.bind(n,1244)),t={name:"清除搜索历史",icon:"mdi-trash-can-outline",description:"Clear History",explicitSelect:!0,action:async()=>{await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;return o.crossOriginLocalStorage.setItem(e,"[]")}()}},a=(await r()).map((t=>({name:t.value,icon:"mdi-history",explicitSelect:!0,action:()=>{e(t.value)},deleteAction:async()=>{await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;const n=await r(),a=n.findIndex((t=>t.value===e));console.log("delete",e,a),-1!==a&&(n.splice(a,1),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(n)))}(t.value)}})));return a.length>0&&a.push(t),a}}},7801:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LaunchBarActionProviders:()=>o});const o="launchBar.actions"},1244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{search:()=>a,searchProvider:()=>c});var o=n(8612),i=n(5267),r=n(7187);const a=e=>{if(!e)return;(0,r.WY)(e);const t={keyword:e,from_source:"nav_suggest_new"};window.open(`https://search.bilibili.com/all?${(0,o.formData)(t)}`,"_blank")},c={name:"search",getActions:async e=>{const t=`https://s.search.bilibili.com/main/suggest?func=suggest&suggest_type=accurate&sub_type=tag&main_ver=v1&highlight=&userid=${(0,o.getUID)()}&bangumi_acc_num=1&special_acc_num=1&topic_acc_num=1&upuser_acc_num=3&tag_num=10&special_num=10&bangumi_num=10&upuser_num=3&term=${e}`,n=await(0,i.getJson)(t),r=[{name:e,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{domProps:{innerHTML:`${e}`}})}),action:()=>a(e)}];if(0!==n.code)return r;const c=lodash.get(n,"result.tag");return c?(r.push(...c.map((e=>({name:e.value,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{domProps:{innerHTML:e.name.replace(/suggest_high_light/g,"suggest-highlight")}})}),action:()=>a(e.value)})))),lodash.uniqBy(r,(e=>e.name))):r}}},3410:(e,t,n)=>{"use strict";n.r(t),n.d(t,{toggleLaunchBar:()=>b});var o=n(8612),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"global-launch-bar-container",attrs:{lazy:!1,fixed:""},on:{"!keydown":function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.close()}},model:{value:e.show,callback:function(t){e.show=t},expression:"show"}},[t("LaunchBar",{ref:"launchBar",on:{close:function(t){return e.close()}}})],1)};i._withStripped=!0;var r=n(9397),a=n(7147);const c=Vue.extend({components:{LaunchBar:a.Z,VPopup:r.default},data:()=>({show:!0}),watch:{show(e){e&&this.focus()}},async mounted(){await this.$nextTick(),this.focus()},methods:{focus(){const e=this.$refs.launchBar?.$refs.input;e?.focus(),e?.select()},close(){this.show=!1;const e=this.$refs.launchBar?.$refs.input;e?.blur()}}});var s=n(8332),l=n.n(s),d=n(6570),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,i,[],!1,null,null,null).exports;let p;const b=()=>{if(!p)return p=(0,o.mountVueComponent)(u),void document.body.append(p.$el);p.show=!p.show}},1491:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});let o=function(e){return e.Left="左侧",e.Right="右侧",e}({})},8730:(e,t,n)=>{"use strict";n.r(t),n.d(t,{map:()=>o});const o=new Map([["通用设置","General"],["实验性","Experimental"],["通用","General"],["开发者模式","Dev mode"],["辅助颜色","Accent color"],["功能加载模式","Script loading mode"],["样式加载模式","Style loading mode"]])},3937:(e,t,n)=>{"use strict";n.r(t),n.d(t,{WidgetsPlugin:()=>b,component:()=>g});var o=n(8612),i=n(9770),r=n(205),a=n(7274),c=n(5067),s=n(6932),l=n(6136),d=n(2860),m=n(4909),f=n(7801),u=n(5074);var p=n(1491);const b="widgets",h=(0,d.defineOptionsMetadata)({themeColor:{defaultValue:"#00A0D8",displayName:"主题颜色",color:!0},scriptLoadingMode:{defaultValue:i.LoadingMode.Delay,displayName:"功能加载模式",dropdownEnum:i.LoadingMode},styleLoadingMode:{defaultValue:i.LoadingMode.Race,displayName:"样式加载模式",dropdownEnum:i.LoadingMode},textColor:{defaultValue:r.TextColor.Auto,displayName:"文本颜色",dropdownEnum:r.TextColor},cdnRoot:{defaultValue:a.CdnTypes.AltCdn,displayName:"更新源",dropdownEnum:a.CdnTypes},dockSide:{defaultValue:p.l.Left,displayName:"设置面板停靠",dropdownEnum:p.l},filenameFormat:{defaultValue:"[title][ - ep]",displayName:"文件命名格式"},batchFilenameFormat:{defaultValue:"[n - ][ep]",displayName:"批量命名格式"},downloadPackageEmitMode:{defaultValue:s.h.Packed,displayName:"文件下载模式",dropdownEnum:s.h},devMode:{defaultValue:!1,displayName:"开发者模式"}}),g=(0,d.defineComponentMetadata)({name:"settingsPanel",displayName:"通用设置",configurable:!1,entry:async e=>{let{metadata:t}=e;const{isIframe:i}=await Promise.resolve().then(n.bind(n,8612));i()||((0,c.addComponentListener)(`${t.name}.dockSide`,(e=>{document.body.classList.toggle("settings-panel-dock-right",e===p.l.Right)}),!0),requestIdleCallback((async()=>{const e=await Promise.resolve().then(n.bind(n,5974)),t=(0,o.mountVueComponent)(e);document.body.insertAdjacentElement("beforeend",t.$el)})))},options:h,tags:[l.t.general],plugin:{displayName:"设置面板 - 功能扩展",setup:()=>{(0,m.addData)(f.LaunchBarActionProviders,(e=>{e.push({name:"onlineRegistry",getActions:async()=>[{name:"切换在线仓库",description:"Toggle Online Registry",icon:"mdi-web",action:async()=>{const{togglePopup:e}=await Promise.resolve().then(n.bind(n,304));e()}}]},{name:"aboutPageActionsProvider",getActions:async()=>u.a.map((e=>e.actionName?{name:e.name,displayName:e.displayName,icon:e.icon,description:e.actionName,action:()=>e.run()}:null)).filter((e=>null!==e))})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(4311);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,6284,17)).then((e=>e.default))}})(),i18n:(()=>{const e=n(3552);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.ts$/)[1],e(t)])))}})()})},5158:(e,t,n)=>{"use strict";n.d(t,{B:()=>r,U:()=>i});var o=n(5067);const i=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,o.getComponentSettings)(this.componentData)}}}),r=e=>Vue.extend({data:()=>({virtual:!1}),async mounted(){const{dq:t}=await Promise.resolve().then(n.bind(n,8612)),{visibleInside:o}=await Promise.resolve().then(n.bind(n,2545)),i=this.$el,r=t(e);r?o(i,r,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.warn("virtual container not found, virtual scroll will be disabled!")}})},5074:(e,t,n)=>{"use strict";n.d(t,{a:()=>r});var o=n(4909);const i=[{icon:"mdi-inbox-arrow-up-outline",name:"exportSettings",displayName:"导出设置",actionName:"Export Settings",run:async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,5067)),{DownloadPackage:t}=await Promise.resolve().then(n.bind(n,3720));t.single("settings.json",JSON.stringify(e,void 0,2))}},{icon:"mdi-inbox-arrow-down-outline",name:"importSettings",displayName:"导入设置",actionName:"Import Settings",run:async()=>{const{logError:e}=await Promise.resolve().then(n.bind(n,4732)),{pickFile:t}=await Promise.resolve().then(n.bind(n,7120)),{Toast:o}=await Promise.resolve().then(n.bind(n,3823)),i=await t({accept:"*.json"});if(0===i.length)return;const[r]=i;try{const e=JSON.parse(await r.text());Object.entries(e).forEach((e=>{let[t,n]=e;GM_setValue(t,n)})),o.success("导入成功, 正在刷新页面...","导入设置"),window.location.reload()}catch(t){e(t)}}}],[r]=(0,o.registerAndGetData)("settingsPanel.about.actions",i)},304:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initPopup:()=>N,togglePopup:()=>q});var o=n(8612),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"online-registry be-settings-extra-options",attrs:{fixed:"","auto-close":!1},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("div",{staticClass:"online-registry-header"},[t("VIcon",{staticClass:"online-registry-header-title-icon",attrs:{icon:"mdi-web"}}),e._v(" "),t("div",{staticClass:"online-registry-header-title"},[e._v("在线仓库")]),e._v(" "),t("VIcon",{staticClass:"online-registry-header-refresh-icon",attrs:{icon:"mdi-refresh",size:22,title:"刷新"},on:{click:function(t){return e.fetchFeatures()}}}),e._v(" "),t("VIcon",{staticClass:"online-registry-header-close-icon",attrs:{icon:"mdi-close",size:24,title:"关闭"},on:{click:function(t){e.popupOpen=!1}}})],1),e._v(" "),t("div",{staticClass:"online-registry-header"},[t("div",{staticClass:"online-registry-header-search"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{attrs:{disabled:e.loading,placeholder:"搜索功能"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-branch"},[e._v("\n 分支:\n "),t("VDropdown",{attrs:{disabled:e.loading,items:e.registryBranches},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.selectedBranch,callback:function(t){e.selectedBranch=t},expression:"selectedBranch"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-filter"},[e._v("\n 查看:\n "),e._l(e.itemFilterOptions,(function(n){return t("RadioButton",{key:n.value,attrs:{group:"itemFilter",checked:e.itemFilter===n.value},on:{change:function(t){t&&(e.itemFilter=n.value)}}},[e._v("\n "+e._s(n.label)+"\n ")])}))],2)]),e._v(" "),t("div",{staticClass:"online-registry-separator"}),e._v(" "),t("div",{ref:"content",staticClass:"online-registry-content"},[e.loading?t("VLoading"):e._e(),e._v(" "),e.loading||e.list.length?e._e():t("VEmpty"),e._v(" "),e._l(e.filteredList,(function(n){return t("RegistryItem",{key:n.name,ref:"items",refInFor:!0,attrs:{item:n,branch:e.selectedBranch,"item-filter":e.itemFilter},on:{refresh:e.checkInstalled}})}))],2)])};i._withStripped=!0;var r=n(7942),a=n(5267),c=n(7274),s=n(2046),l=n(5067),d=n(4732),m=n(2570),f=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("MiniToast",{staticClass:"online-registry-item-wrapper",class:{virtual:e.virtual,hidden:e.hidden},attrs:{placement:e.placement,container:"body",delay:[200,0],offset:[0,12]},scopedSlots:e._u([{key:"toast",fn:function(){return[e.item.description?t("ComponentDescription",{attrs:{"component-data":e.item}}):e._e()]},proxy:!0}])},[e.virtual?e._e():t("div",{staticClass:"online-registry-item"},[t("VIcon",{staticClass:"item-icon",attrs:{size:18,icon:e.icon}}),e._v(" "),t("div",{staticClass:"item-badge"},[e._v("\n "+e._s(e.badge)+"\n ")]),e._v(" "),t("div",{staticClass:"item-display-name"},[e._v("\n "+e._s(e.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"item-action"},[e.installed?t("VButton",{staticClass:"reinstall-button",attrs:{title:"重新安装",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[e._v("\n "+e._s(e.installing?"正在安装":"已安装")+"\n ")]):t("VButton",{staticClass:"install-button",attrs:{title:"安装",type:"primary",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:15}}),e._v("\n "+e._s(e.installing?"正在安装":"安装")+"\n ")],1)],1)],1)])};f._withStripped=!0;var u=n(9761),p=n(2545),b=n(6904),h=n(1491);let g=function(e){return e.All="all",e.Installed="installed",e.NotInstalled="notInstalled",e}({});const F=(e,t)=>`${(0,c.cdnRoots[(0,l.getGeneralSettings)().cdnRoot])(t,e.owner)}${e.fullAbsolutePath}`,v=e=>{const t=`user${lodash.startCase(e.type)}s`;return e.name in l.settings[t]},w={component:{icon:"mdi-cube-scan",badge:"组件",getUrl:F,isInstalled:v},plugin:{icon:"mdi-puzzle-outline",badge:"插件",getUrl:F,isInstalled:v},style:{icon:"mdi-tune",badge:"样式",getUrl:F,isInstalled:v},pack:{icon:"mdi-package-variant-closed",badge:"合集包",getUrl:(e,t)=>e.items.map((e=>F(e,t))).join("\n"),isInstalled:e=>e.items.every(v)}},y=Vue.extend({components:{VIcon:m.VIcon,VButton:m.VButton,MiniToast:m.MiniToast,ComponentDescription:b.Z},props:{item:{type:Object,required:!0},branch:{type:String,required:!0},itemFilter:{type:String,default:g.All}},data(){const{icon:e,badge:t,getUrl:n,isInstalled:o}=w[this.item.type];return{icon:e,badge:t,getUrl:e=>n(e,this.branch),isInstalled:o,installing:!1,installed:!1,virtual:!1,placement:"right"}},computed:{hidden(){switch(this.itemFilter){case g.All:default:return!1;case g.Installed:return!this.installed;case g.NotInstalled:return this.installed}}},created(){this.checkInstalled(),(0,l.addComponentListener)("settingsPanel.dockSide",(e=>{this.placement=e===h.l.Left?"right":"left"}),!0)},mounted(){const e=this.$el;(0,p.visibleInside)(e,e.parentElement,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))}))},methods:{checkInstalled(){this.installed=this.isInstalled(this.item)},async install(e){const t=e.split("\n").map((e=>e.trim())).filter((e=>""!==e));try{this.installing=!0,await Promise.all(t.map((async e=>(0,u.installFeature)(e)))),this.checkInstalled(),"pack"===this.item.type&&this.$emit("refresh")}catch(e){(0,d.logError)(e)}finally{this.installing=!1}}}});var x=n(8332),k=n.n(x),C=n(4947),A=n.n(C),E={insert:"head",singleton:!1};k()(A(),E);A().locals;var B=n(4893);const D=(0,B.Z)(y,f,[],!1,null,null,null).exports;var I=n(4909);const[z]=(0,I.registerAndGetData)("settingsPanel.registryBranches",["master","preview"]),S=(0,l.getGeneralSettings)();function M(e){if(!e)return void(this.filteredList=this.list);const t=this.fuse.search(e);this.filteredList=t.map((e=>e.item)),this.$nextTick().then((()=>this.$refs.content.scrollTo(0,0)))}const P=[{label:"全部",value:g.All},{label:"已安装",value:g.Installed},{label:"未安装",value:g.NotInstalled}],O=Vue.extend({components:{VIcon:m.VIcon,VDropdown:m.VDropdown,TextBox:m.TextBox,VPopup:m.VPopup,RegistryItem:D,VLoading:m.VLoading,VEmpty:m.VEmpty,RadioButton:m.RadioButton},props:{open:{default:!1,type:Boolean}},data(){const e=[S.registryBranch,s.meta.compilationInfo.branch,z[0]].filter((e=>z.includes(e)&&Boolean(e)));return{searchKeyword:"",popupOpen:!1,loading:!1,list:[],itemFilter:g.All,itemFilterOptions:P,filteredList:[],fuse:null,registryBranches:z,selectedBranch:e[0]}},watch:{searchKeyword:lodash.debounce(M,200),selectedBranch(e){S.registryBranch=e,this.fetchFeatures()}},mounted(){this.fetchFeatures()},methods:{async fetchFeatures(){if(this.loading)return;const e=c.cdnRoots[S.cdnRoot](this.selectedBranch);try{this.loading=!0,this.list=[],this.filteredList=[];const t=`${e}doc/features/features.json`,n=`${e}doc/features/pack/pack.json`,o=await(0,a.monkey)({url:t,responseType:"json"}),i=await(0,a.monkey)({url:n,responseType:"json"});if(!Array.isArray(o)||!Array.isArray(i))throw console.error("Fetch failed:",o,i,t,n),new Error("获取在线仓库数据失败, 请尝试在通用设置中设置其他更新源, 然后再试一次.");this.list=[...i,...o],this.fuse=new r.Z(this.list,{keys:["displayName","name","description"]}),M.call(this,this.searchKeyword)}catch(e){(0,d.logError)(e)}finally{this.loading=!1}},checkInstalled(){this.$refs.items?.forEach((e=>e.checkInstalled()))}}});var V=n(7621),T=n.n(V),L={insert:"head",singleton:!1};k()(T(),L);T().locals;const j=(0,B.Z)(O,i,[],!1,null,null,null).exports;let R;const N=()=>{R||(R=(0,o.mountVueComponent)(j),document.body.append(R.$el))},q=()=>{R||N(),R.popupOpen=!R.popupOpen}},6136:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o={video:{name:"video",displayName:"视频",color:"#2196F3",icon:"mdi-play-circle-outline",order:1},style:{name:"style",displayName:"样式",color:"#8BC34A",icon:"mdi-palette-outline",order:2},feeds:{name:"feeds",displayName:"动态",color:"#00ACC1",icon:"mdi-pinwheel-outline",order:3},live:{name:"live",displayName:"直播",color:"#26A69A",icon:"mdi-video-wireless-outline",order:4},utils:{name:"utils",displayName:"工具",color:"#A36FFD",icon:"mdi-rocket-launch-outline",order:5},touch:{name:"touch",displayName:"触摸",color:"#78909C",icon:"mdi-gesture-tap-button",order:6},experimental:{name:"experimental",displayName:"实验",color:"#FF5722",icon:"mdi-flask-outline",order:7},general:{name:"general",displayName:"通用",color:"#888",icon:"mdi-progress-wrench",order:8}}},4227:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bisectComponent:()=>d,installComponent:()=>c,toggleComponent:()=>l,uninstallComponent:()=>s});var o=n(5067),i=n(5157),r=n(6316),a=n(4132);const c=async e=>{const{components:t}=await Promise.resolve().then(n.bind(n,6316)),{loadFeatureCode:a}=await Promise.resolve().then(n.bind(n,1841));let c;try{c=a(e)}catch(e){throw new Error("无效的组件代码",{cause:e})}const{settings:s}=await Promise.resolve().then(n.bind(n,5067));if((0,i.isBuiltInComponent)(c.name))throw new Error(`不能覆盖内置组件'${c.name}', 请更换名称`);const l={...lodash.omit(c,"entry","widget","instantStyles","reload","unload","plugin","urlInclude","urlExclude")},d=s.userComponents[c.name];if(d){d.code=e,d.metadata=l;const t=(0,o.componentToSettings)(c);return lodash.defaultsDeep(d.settings.options,lodash.pickBy(t.options,(e=>!Array.isArray(e)))),{metadata:c,message:`已更新组件'${c.displayName}', 刷新后生效`}}return s.userComponents[c.name]={code:e,metadata:l,settings:(0,o.componentToSettings)(c)},t.push(c),r.componentsMap[c.name]=c,{metadata:c,message:`已安装组件'${c.displayName}', 刷新后生效`}},s=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,5067)),{components:o}=await Promise.resolve().then(n.bind(n,6316)),i=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[a,{metadata:c,settings:s}]=i,l=o.findIndex((e=>e.name===a));if(-1!==l){const{instantStyles:e}=o[l];if(e){const{removeStyle:t}=await Promise.resolve().then(n.bind(n,4460));e.forEach((e=>t(e.name)))}s.enabled=!1,o.splice(l,1),delete r.componentsMap[a]}return delete t.userComponents[a],{metadata:c,message:`已卸载组件'${c.displayName}, 刷新后生效'`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,5067)),o=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!o)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[,i]=o;i.settings.enabled=!i.settings.enabled;const{enabled:r}=i.settings,{displayName:a}=i.metadata;return`已${r?"开启":"关闭"}组件'${a}', 可能需要刷新后才能生效`},d=async e=>(e&&a.setOptions(e),a)},7748:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{updateCategories:()=>updateCategories,updateIcons:()=>updateIcons});var _core_ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5267),_core_download__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3720);const updateCategories=async()=>{const[script]=dqa("script").filter((e=>e.src.includes("stardust-video")));if(!script)throw new Error("no script found");const scriptText=await(0,_core_ajax__WEBPACK_IMPORTED_MODULE_0__.getText)(script.src),match=scriptText.match(/([\w]+?=\[\{name:"首页".+?\}.+?\]),[\w]+?=\[\{name:"首頁"/);if(!match)throw new Error("no match in script");const variables=match[1].match(/(\w+?)(?==\[)/g),data=eval(`var ${match[1]}; [${variables.join(",")}]`);_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("raw.json",data)},updateIcons=()=>{const e=dqa(".bili-header-channel-panel svg");if(0===e.length)throw new Error("svg icons not found");const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("aria-hidden","true"),t.setAttribute("style","position: absolute; width: 0px; height: 0px; overflow: hidden;"),t.id="be-category-icons",e.forEach((e=>{const n=document.createElementNS("http://www.w3.org/2000/svg","symbol");n.innerHTML=e.innerHTML,n.id=e.id.replace(/^channel-icon-/,"header-icon-")||`header-icon-${e.parentElement?.href.match(/\/v\/(.+)$/)?.[1]}`,"header-icon-teleplay"===n.id&&(n.id="header-icon-tv"),n.id||console.warn("cannot find id for",e),n.setAttribute("viewBox",e.getAttribute("viewBox")),t.appendChild(n)})),_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("icons.svg",t.outerHTML)}},8895:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerMode:()=>a,createPlayerModeChangeEvent:()=>c,playerPolyfill:()=>p});var o=n(2545),i=n(3311),r=n(8612);let a=function(e){return e.Normal="normal",e.WideScreen="wide",e.WebFullscreen="web",e.Fullscreen="full",e}({});const c=e=>new CustomEvent("playerModeChange",{detail:{mode:e,bubbles:!0,cancelable:!0}}),s=lodash.once((async()=>{(async()=>{await(0,r.playerReady)();const e=await(0,i.select)(".bpx-player-container");if(!e)return void console.warn("[bpx player polyfill] bpxContainer not found");let t=a.Normal;(0,o.attributes)(e,(()=>{const n=e.getAttribute("data-screen"),o="player-mode-",i=[a.Normal,a.WideScreen,a.WebFullscreen,a.Fullscreen].map((e=>`${o}${e}`));document.body.classList.remove(...i),n!==a.Normal&&document.body.classList.add(`${o}${n}`),n!==t&&(window.dispatchEvent(c(n)),t=n)}))})(),(async()=>{const e=await(0,i.select)(".bpx-player-video-perch");e&&(0,r.preventEvent)(e,"dblclick")})()}));var l=n(146);const d=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getVideoMessage)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,4732)),r=t("v2 player polyfill");(0,o.allMutations)((()=>{const t=e.getVideoMessage();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),m=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getUserParams)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,4732)),r=t("v3 player polyfill");(0,o.allMutations)((()=>{const{input:t}=e.getUserParams();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),f=e=>{if(""===e)return!1;const t=parseInt(e);return!!Number.isNaN(t)||t>0},u=lodash.once((()=>{unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getManifest)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,4732)),a=t("v4 player polyfill");(0,o.allMutations)((()=>{const t=e.getManifest();if(!t)return void a.warn("invalid getManifest data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid??""};(l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))?f(n.aid)&&f(n.cid):Object.values(n).every((e=>f(e))))||a.warn("invalid manifest data",n),Object.assign(unsafeWindow,n)}))})()})),p=lodash.once((()=>Promise.allSettled([s(),d(),m(),u()])))},6768:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerAgentEventTypes:()=>a,playerAgent:()=>h});var o=n(146),i=n(3311),r=n(8612);let a=function(e){return e.Play="play",e.Pause="pause",e}({});function c(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const s=e=>{const t=e=>"string"!=typeof e?lodash.mapValues(e,t):(e=>{const t=()=>(0,i.select)(e);return t.selector=e,t.sync=()=>dq(e),t})(e);return lodash.mapValues(e,t)},l=e=>{const t=e.sync();return t?.click(),t};class d extends EventTarget{constructor(){super(),c(this,"isBpxPlayer",!0),c(this,"type",void 0),c(this,"query",void 0),c(this,"eventHandlerMap",new Map)}provideCustomQuery(e){const t=s(e[this.type]??e.video);return{...this,custom:t}}widescreen(){return l(this.query.control.buttons.widescreen)}webFullscreen(){return l(this.query.control.buttons.webFullscreen)}fullscreen(){return l(this.query.control.buttons.fullscreen)}togglePlay(){return l(this.query.control.buttons.start)}togglePip(){return l(this.query.control.buttons.pip)}toggleMute(){return l(this.query.control.buttons.volume)}toggleDanmaku(){const e=this.query.danmakuSwitch.sync();return e?(e.checked=!e.checked,(0,r.raiseEvent)(e,"change"),e.checked):null}async toggleLight(e){if(!this.nativeApi)return null;const t=this.nativeApi.getLightOff();return void 0===e?(this.nativeApi.setLightOff(!t),!t):e&&t?(this.nativeApi.setLightOff(!1),!0):e||t?null:(this.nativeApi.setLightOff(!0),!1)}getPlayerConfig(e,t){const n=this.isBpxPlayer?"bpx_player_profile":"bilibili_player_settings";return lodash.get(JSON.parse(localStorage.getItem(n)),e,t)}isAutoPlay(){return this.getPlayerConfig("video_status.autoplay")}get nativeApi(){return unsafeWindow.player||unsafeWindow.playerRaw}get nanoApi(){return unsafeWindow.nano}get nanoTypeMap(){return{[a.Play]:this.nanoApi.EventType.Player_Play,[a.Pause]:this.nanoApi.EventType.Player_Pause}}addEventListener(e,t,n){super.addEventListener(e,t,n);const o=this.nanoTypeMap[e];o?(e=>{"object"==typeof n&&n.once?this.nativeApi.once(e,t):this.nativeApi.on(e,t),this.eventHandlerMap.set(t,{handler:t,options:n})})(o):console.warn("[PlayerAgent] unknown event type",e)}removeEventListener(e,t,n){super.removeEventListener(e,t,n);const o=this.nanoTypeMap[e];o&&(e=>{const o=this.eventHandlerMap.get(t);o&&!lodash.isEqual(n,o.options)&&this.nativeApi.off(e,o.handler)})(o)}isMute(){return this.nativeApi?this.nativeApi.isMuted?this.nativeApi.isMuted():this.nativeApi.isMute():null}changeVolume(e){if(!this.nativeApi)return null;if(this.nativeApi.getVolume){const t=this.nativeApi.getVolume();return this.nativeApi.setVolume(t+e/100),Math.round(100*this.nativeApi.getVolume())}const t=this.nativeApi.volume();return this.nativeApi.volume(t+e/100),Math.round(100*this.nativeApi.volume())}seek(e){return this.nativeApi?(this.nativeApi.seek(e),this.nativeApi.getCurrentTime()):null}changeTime(e){if(!this.nativeApi)return null;const t=this.query.video.element.sync();return t?(this.nativeApi.seek(t.currentTime+e,t.paused),this.nativeApi.getCurrentTime()):null}} +NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT);let o=n.nextNode();for(;o;)t(o),o=n.nextNode()}static translate(e){if(e.nodeType===Node.TEXT_NODE)return void u.textNode.translate(e);const t=e=>{for(const t of u.sensitiveTranslators)t.accepts(e)&&t.translate(e)};t(e),u.walk(e,t)}static translateCssMatches(){const e=u.map.get("*");if(e)for(const{selector:t,text:n}of e){const e=document.querySelector(t);e&&[...e.childNodes].filter((e=>e.nodeType===Node.TEXT_NODE)).forEach((e=>e.nodeValue=n))}}}f(u,"textNode",void 0),f(u,"title",void 0),f(u,"placeholder",void 0),f(u,"sensitiveTranslators",void 0),f(u,"map",void 0),f(u,"regex",void 0);u.textNode=new class extends u{constructor(){super(...arguments),f(this,"accepts",(e=>e.nodeType===Node.TEXT_NODE)),f(this,"getElement",(e=>e.parentElement))}},u.title=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("title"))),f(this,"setValue",((e,t)=>{e.setAttribute("title",t)}))}},u.placeholder=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("placeholder"))),f(this,"setValue",((e,t)=>{e.setAttribute("placeholder",t)}))}},u.sensitiveTranslators=[u.textNode,u.title,u.placeholder];const p=(0,r.defineComponentMetadata)({name:"i18n",displayName:"多语言",configurable:!1,entry:async()=>{const{getSelectedLanguage:e}=await Promise.resolve().then(n.bind(n,2504)),t=e();if(t===l.defaultLanguageCode)return;const{registerAndGetData:o}=await Promise.resolve().then(n.bind(n,4909)),[i,r]=o(`i18n.${t}`,new Map,[]);console.log(t,i.size,r.length),0===i.size&&0===r.length||(document.documentElement.setAttribute("lang",t),u.map=i,u.regex=r,u.translate(document.body),u.translateCssMatches(),(0,m.allMutations)((e=>{e.forEach((e=>{"childList"===e.type?(e.addedNodes.length>0&&u.translateCssMatches(),e.addedNodes.forEach((e=>{u.translate(e)}))):"characterData"===e.type?u.textNode.translate(e.target):"attributes"===e.type&&("title"===e.attributeName?u.title.translate(e.target):"placeholder"===e.attributeName&&u.placeholder.translate(e.target))}))})))},tags:[a.t.utils,a.t.experimental,a.t.general],description:{"zh-CN":"安装其他语言包可以更换界面语言, 机器翻译选择可以设定其他一些功能如`动态翻译`, `评论翻译`使用的翻译器. 机器翻译的选择不影响界面语言."},options:{language:{defaultValue:l.languageCodeToName[l.defaultLanguageCode],displayName:"界面语言选择",dropdownEnum:l.languageCodeToName},translator:{defaultValue:Object.keys(d.WK)[0],displayName:"机器翻译选择",dropdownEnum:d.U6}},hidden:!0,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});var b=n(2046),h=n(5067),g=n(9219),F=n(6048),v=n(3846);const{checkComponentsUpdate:w,checkLastFeature:y,forceCheckUpdate:x,forceCheckUpdateAndReload:k,silentCheckUpdate:C}=v,A=(0,r.defineOptionsMetadata)({lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},lastInstalledVersion:{displayName:"最后安装版本",defaultValue:"2.0.0",hidden:!0},localPortOverride:{displayName:"本地组件链接端口",defaultValue:"",hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5},urls:{displayName:"更新链接",defaultValue:{components:{},plugins:{},styles:{}},hidden:!0},maxUpdateCount:{displayName:"单次最大更新量 (个)",defaultValue:4}}),E=(0,r.defineComponentMetadata)({name:F.u2,displayName:"自动更新器",description:{"zh-CN":"自动检查组件, 插件和样式的更新. (仅限从设置面板中安装的)"},tags:[a.t.utils],options:A,extraOptions:()=>Promise.resolve().then(n.bind(n,8712)).then((e=>e.default)),entry:async e=>{let{settings:{options:t}}=e;if((0,i.isIframe)())return v;const n=Number(new Date)-t.lastUpdateCheck>=t.minimumDuration,o=new g.Version(b.meta.version).greaterThan(new g.Version(t.lastInstalledVersion));return n?coreApis.lifeCycle.fullyLoaded((()=>C())):o&&coreApis.lifeCycle.fullyLoaded((()=>x())),v},plugin:{displayName:"自动更新器 - 功能扩展",description:{"zh-CN":"记录在设置面板中的功能安装/卸载数据供自动更新使用; 并在组件详情中支持手动检查该组件的更新."},setup:e=>{let{addData:t,addHook:o}=e;["components","plugins","styles"].forEach((e=>{o(`user${lodash.startCase(e)}.add`,{after:(t,n,o)=>{const{options:i}=(0,h.getComponentSettings)("autoUpdate"),r=i.urls[e][o.name];r?(r.url=n,r.lastUpdateCheck=Number(new Date),r.alwaysUpdate=(0,F.jN)(n)):i.urls[e][o.name]={url:n,lastUpdateCheck:Number(new Date),installTime:Number(new Date),alwaysUpdate:(0,F.jN)(n)}}}),o(`user${lodash.startCase(e)}.remove`,{after:t=>{const{options:n}=(0,h.getComponentSettings)("autoUpdate");n.urls[e][t.name]&&delete n.urls[e][t.name]}})})),t("settingsPanel.componentActions",(e=>{const{options:t}=(0,h.getComponentSettings)("autoUpdate");e.push((e=>{const o=t.urls.components[e.name];if(o)return{name:"checkUpdate",displayName:"检查更新",icon:(0,F.jN)(o.url)?"mdi-file-download-outline":"mdi-cloud-download-outline",visible:(0,h.isUserComponent)(e),title:o.url,action:async()=>{const{Toast:t}=await Promise.resolve().then(n.bind(n,3823)),o=t.info("检查更新中...","检查更新");o.message=await w({filterNames:[e.name],force:!0}),o.duration=3e3}}}))}));const i="mdi-cloud-sync-outline";t("launchBar.actions",(e=>{e.push({name:"updateAllFeaturesActions",getActions:async()=>[{name:"检查所有更新",description:"Check Updates",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,3823)),t=e.info("正在检查更新...","检查所有更新");await k(),t.close()},icon:i}]})})),t("settingsPanel.searchBarActions",(e=>{e.unshift({key:"updateFeatures",title:e=>{let{selectedComponents:t}=e;return t.length>0?"更新所选组件":"检查所有更新"},icon:"mdi-cloud-download-outline",run:async e=>{const t=e.selectedComponents.length>0?`确定要更新所选的 ${e.selectedComponents.length} 个组件吗?`:"确定要检查所有更新吗?";if(!window.confirm(t))return;const{Toast:o}=await Promise.resolve().then(n.bind(n,3823)),{isBuiltInComponent:i}=await Promise.resolve().then(n.bind(n,5157));if(0===e.selectedComponents.length){const e=o.info("正在检查更新...","检查所有更新");k(),await k(),e.close()}else e.selectedComponents.forEach((async e=>{let{name:t}=e;if(i(t))o.info("内置组件不能更新","检查更新",3e3);else{const e=o.info("检查更新中...","检查更新"),n=await w({filterNames:[t],force:!0});e.message=n,e.duration=3e3}}))}})})),(0,h.getGeneralSettings)().devMode&&t("launchBar.actions",(e=>{e.push({name:"updateLastFeatureActions",getActions:async()=>[{name:"检查最近更新的功能",description:"Check Last Update",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,3823)),t=e.info("正在检查更新...","检查最近更新的功能");await y(),t.close()},icon:i}]})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}),B=async()=>{const{cdnRoots:e}=await Promise.resolve().then(n.bind(n,7274)),{meta:t}=await Promise.resolve().then(n.bind(n,2046)),{getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,5067));return`${e[o().cdnRoot](t.compilationInfo.branch)}dist/${t.originalFilename}`},D=(0,r.defineComponentMetadata)({name:"notifyNewVersion",displayName:"新版本提示",description:"定期检查脚本本体的更新, 并弹出提示.",tags:[a.t.utils],options:{lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5}},entry:async e=>{let{settings:{options:t}}=e;try{const{Version:e}=await Promise.resolve().then(n.bind(n,9219)),{monkey:o}=await Promise.resolve().then(n.bind(n,5267)),{meta:i}=await Promise.resolve().then(n.bind(n,2046)),{Toast:r}=await Promise.resolve().then(n.bind(n,3823)),{isDataSaveMode:a}=await Promise.resolve().then(n.bind(n,8612));if(a())return;const c=Number(new Date);if(c-t.lastUpdateCheck${m.versionString} 已发布. 查看详情`,"检查更新");(await p.element).querySelector(".view-details").addEventListener("click",(()=>{(async e=>{const{showDialog:t}=await Promise.resolve().then(n.bind(n,5167));t({title:"更新说明",content:()=>Promise.resolve().then(n.bind(n,6991)),contentProps:{content:e,updateUrl:await B()}})})(u)}))}catch(e){console.warn("[新版本提示] 检查更新时发生错误: ",e)}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}),I=(0,r.defineOptionsMetadata)({originalComponentEnableState:{defaultValue:{},hidden:!0},keepDisabledComponents:{defaultValue:[],hidden:!0},keepEnabledComponents:{defaultValue:[],hidden:!0},bisectInitialState:{defaultValue:{},hidden:!0}});var z=n(1197),S=n(4732);const P=(0,r.defineComponentMetadata)({name:"bisector",displayName:"组件二等分",tags:[a.t.general,a.t.utils],hidden:!0,configurable:!1,entry:async e=>{let{settings:{options:t}}=e;const o=await Promise.resolve().then(n.bind(n,4132));o.setOptions(t),o.setConsole((0,S.useScopedConsole)("组件二等分")),unsafeWindow.addEventListener(z.LifeCycleEventTypes.ComponentsLoaded,(()=>{o.isRecover()&&o.recover()}))},options:I,plugin:{displayName:"组件二等分 - 功能扩展",setup:e=>{let{addData:t}=e;t("launchBar.actions",(e=>{e.push({name:"bisector-start",getActions:async()=>[{name:"开始 / 继续组件二等分",description:"Start / Continue component bisection",icon:"mdi-view-split-horizontal",action:async()=>{const e=await Promise.resolve().then(n.bind(n,4132));await e.start()}}]})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}),M=(0,r.defineComponentMetadata)({name:"compatibilities",displayName:"兼容性选项",configurable:!1,tags:[a.t.general],options:{disableOnBalh:{defaultValue:!1,displayName:'与 "解除 B 站区域限制" 互斥'}},entry:i.none,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(7761);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,8232,17)).then((e=>e.default))}})()}),O=()=>[o.component,s,p,E,D,P,M],V=e=>O().some((t=>t.name===e))},6316:(e,t,n)=>{"use strict";n.r(t),n.d(t,{components:()=>d,componentsMap:()=>l,componentsTags:()=>c.t,defineComponentMetadata:()=>s.defineComponentMetadata,defineOptionMetadata:()=>s.defineOptionMetadata,defineOptionsMetadata:()=>s.defineOptionsMetadata,importComponent:()=>b,loadAllComponents:()=>F,loadAllUserComponents:()=>g,loadComponent:()=>h});var o=n(5067),i=n(1197),r=n(9770),a=n(5157),c=n(6136),s=n(2860);const l={},d=lodash.once((()=>{const e=(0,a.getBuiltInComponents)();return e.forEach((e=>l[e.name]=e)),e}))(),m=async e=>{if(!e.i18n)return;const{addI18nData:t}=await Promise.resolve().then(n.bind(n,2504));for(const[n,o]of Object.entries(e.i18n)){const{map:e=[],regex:i=[]}="function"==typeof o?await o():o;t(n,e,i)}},f=e=>`${e.name}.widget`,u=async e=>{if(e.widget){const t={...e.widget,name:f(e)},{addData:o}=await Promise.resolve().then(n.bind(n,4909)),{WidgetsPlugin:i}=await Promise.resolve().then(n.bind(n,3937));o(i,(n=>{if(n.find((e=>e.name===t.name)))return;const{urlInclude:o,urlExclude:i}=t;e.urlInclude&&(o?o.push(...e.urlInclude):t.urlInclude=[...e.urlInclude]),e.urlExclude&&(i?i.push(...e.urlExclude):t.urlExclude=[...e.urlExclude]),n.push(t)}))}},p={},b=e=>{if(!(e in p))throw new Error(`组件'${e}'未加载, 请确认拼写无误且组件已开启.`);return p[e]},h=async e=>{const{componentLoadTrace:t}=await Promise.resolve().then(n.bind(n,2857)),{matchUrlPattern:i}=await Promise.resolve().then(n.bind(n,8612)),{coreApis:r}=await Promise.resolve().then(n.bind(n,4435));await t(e);const a=async()=>{u(e);const t=await e.entry({settings:(0,o.getComponentSettings)(e),metadata:e,coreApis:r});p[e.name]=t||{}};e.reload&&e.unload&&(0,o.addComponentListener)(e.name,(async t=>{if(!1!==e.configurable&&!(e.urlExclude&&e.urlExclude.some(i)||e.urlInclude&&e.urlInclude.every(lodash.negate(i))))if(e.name in p){if(t&&e.reload&&(e.reload(),e.widget&&u(e)),!t&&e.unload&&(e.unload(),e.widget)){const{getData:t}=await Promise.resolve().then(n.bind(n,4909)),{WidgetsPlugin:o}=await Promise.resolve().then(n.bind(n,3937)),[i]=t(o);if(i){const t=f(e),n=i.findIndex((e=>e.name===t));-1!==n&&i.splice(n,1)}}}else t&&await a()})),(0,o.isComponentEnabled)(e)&&await a()},g=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,5067)),{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,5705));for(const[n,i]of Object.entries(e.userComponents)){const{code:e}=i;let r;try{r=t(e)}catch(e){console.error("从代码加载用户组件失败。代码可能有语法错误或代码执行时有抛出值。",{componentName:n,error:e});continue}o=r,d.push(o),l[o.name]=o}var o},F=async()=>{const e=(0,o.getGeneralSettings)(),{loadAllPlugins:t}=await Promise.resolve().then(n.bind(n,9094)),a=()=>t(d).then((()=>Promise.all(d.map(m)))).then((()=>Promise.all(d.map(h)))).then((async()=>{if(e.devMode){const{componentLoadTime:e,componentResolveTime:t}=await Promise.resolve().then(n.bind(n,2857)),{logStats:o}=await Promise.resolve().then(n.bind(n,5043));o("components block",e),o("components resolve",t)}}));return new Promise(((t,n)=>{e.scriptLoadingMode===r.LoadingMode.Delay?(0,i.fullyLoaded)((()=>a().then(t).catch(n))):e.scriptLoadingMode===r.LoadingMode.Race&&(0,i.contentLoaded)((()=>a().then(t).catch(n)))}))}},2860:(e,t,n)=>{"use strict";n.r(t),n.d(t,{defineComponentMetadata:()=>r,defineOptionMetadata:()=>o,defineOptionsMetadata:()=>i});const o=e=>e,i=e=>e,r=e=>e},6080:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getDescriptionHTML:()=>c,getDescriptionMarkdown:()=>a,getDescriptionText:()=>s});var o=n(9896),i=n.n(o),r=n(2504);const a=async e=>{const{description:t,author:n}=e;return(n?Array.isArray(n)?`by ${n.map((e=>`[@${e.name}](${e.link})`)).join(",")}\n\n`:`by [@${n.name}](${n.link})\n\n`:"")+await(async()=>{if(!t)return"暂无描述.";const e=async e=>"string"==typeof e?e:e();if("object"==typeof t){const n=(0,r.getSelectedLanguage)();return e(t[n]??t["zh-CN"])}return e(t)})()},c=async e=>i()(await a(e)),s=async e=>{const t=await c(e),n=document.createElement("div");return n.innerHTML=t,n.innerText}},2504:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addI18nData:()=>a,getSelectedLanguage:()=>c});var o=n(4909),i=n(5067),r=n(8884);const a=(e,t,n)=>{(0,o.addData)(`i18n.${e}`,((e,o)=>{t?.forEach((t=>{let[n,o]=t;return e.set(n,o)})),n&&o.push(...n)}))},c=()=>{const e=(0,i.getComponentSettings)("i18n");return(0,r.languageNameToCode)(e.options.language)}},2951:(e,t,n)=>{"use strict";n.d(t,{Ty:()=>p,U6:()=>u,WK:()=>f});var o=n(5267),i=n(4021),r=n(5067),a=n(8884),c=n(4909),s=n(8612);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){l(this,"name",void 0),l(this,"link",void 0),l(this,"defaultLanguage",void 0)}getTargetLanguage(){const e=(0,r.getComponentSettings)("i18n");return e.enabled?(0,a.languageNameToCode)(e.options.language):this.defaultLanguage}toString(){return this.name}}class m extends d{constructor(){super(...arguments),l(this,"name","Google"),l(this,"link","https://translate.google.com/"),l(this,"defaultLanguage","zh"),l(this,"apiUrl","https://translate.google.com/translate_a/single")}async translate(e){let t=this.getTargetLanguage();t.includes("-")&&t!==this.defaultLanguage&&(t=t.substring(0,t.indexOf("-")));try{const n=await(0,o.monkey)({url:`${this.apiUrl}?${(0,s.formData)({client:"gtx",sl:"auto",tl:t,dt:"t",q:encodeURIComponent(e)})}`,method:"GET",headers:{"User-Agent":i.UserAgent},responseType:"json"});return n[0].map((e=>e[0])).join("")}catch(e){throw console.error("Translator: Google",e),new Error("调用Google翻译失败.")}}}const[f]=(0,c.registerAndGetData)("i18n.machineTranslators",{GoogleCN:new class extends m{constructor(){super(...arguments),l(this,"name","GoogleCN"),l(this,"link","https://translate.google.cn/"),l(this,"apiUrl","https://translate.google.cn/translate_a/single")}},Google:new m}),u=Object.keys(f),p=()=>{const{options:{translator:e}}=(0,r.getComponentSettings)("i18n");return f[e]||f.GoogleCN}},7187:(e,t,n)=>{"use strict";n.d(t,{WY:()=>a,dr:()=>c});var o=n(9047);const i="search_history:search_history",r=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;const t=await o.crossOriginLocalStorage.getItem(e),n=t?JSON.parse(t):[];return n},a=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;console.log("add",e),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(lodash.sortBy(lodash.uniqBy([{value:e,timestamp:Number(new Date)},...await r()],(e=>e.value)),(e=>e.timestamp)).reverse().slice(0,20)))},c={name:"history",getActions:async()=>{const{search:e}=await Promise.resolve().then(n.bind(n,1244)),t={name:"清除搜索历史",icon:"mdi-trash-can-outline",description:"Clear History",explicitSelect:!0,action:async()=>{await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;return o.crossOriginLocalStorage.setItem(e,"[]")}()}},a=(await r()).map((t=>({name:t.value,icon:"mdi-history",explicitSelect:!0,action:()=>{e(t.value)},deleteAction:async()=>{await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;const n=await r(),a=n.findIndex((t=>t.value===e));console.log("delete",e,a),-1!==a&&(n.splice(a,1),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(n)))}(t.value)}})));return a.length>0&&a.push(t),a}}},7801:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LaunchBarActionProviders:()=>o});const o="launchBar.actions"},1244:(e,t,n)=>{"use strict";n.r(t),n.d(t,{search:()=>a,searchProvider:()=>c});var o=n(8612),i=n(5267),r=n(7187);const a=e=>{if(!e)return;(0,r.WY)(e);const t={keyword:e,from_source:"nav_suggest_new"};window.open(`https://search.bilibili.com/all?${(0,o.formData)(t)}`,"_blank")},c={name:"search",getActions:async e=>{const t=`https://s.search.bilibili.com/main/suggest?func=suggest&suggest_type=accurate&sub_type=tag&main_ver=v1&highlight=&userid=${(0,o.getUID)()}&bangumi_acc_num=1&special_acc_num=1&topic_acc_num=1&upuser_acc_num=3&tag_num=10&special_num=10&bangumi_num=10&upuser_num=3&term=${e}`,n=await(0,i.getJson)(t),r=[{name:e,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{class:"suggest-highlight"},[e])}),action:()=>a(e)}];if(0!==n.code)return r;const c=lodash.get(n,"result.tag");return c?(r.push(...c.map((e=>({name:e.value,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{domProps:{innerHTML:e.name.replace(/suggest_high_light/g,"suggest-highlight")}})}),action:()=>a(e.value)})))),lodash.uniqBy(r,(e=>e.name))):r}}},3410:(e,t,n)=>{"use strict";n.r(t),n.d(t,{toggleLaunchBar:()=>b});var o=n(8612),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"global-launch-bar-container",attrs:{lazy:!1,fixed:""},on:{"!keydown":function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.close()}},model:{value:e.show,callback:function(t){e.show=t},expression:"show"}},[t("LaunchBar",{ref:"launchBar",on:{close:function(t){return e.close()}}})],1)};i._withStripped=!0;var r=n(9397),a=n(9431);const c=Vue.extend({components:{LaunchBar:a.Z,VPopup:r.default},data:()=>({show:!0}),watch:{show(e){e&&this.focus()}},async mounted(){await this.$nextTick(),this.focus()},methods:{focus(){const e=this.$refs.launchBar?.$refs.input;e?.focus(),e?.select()},close(){this.show=!1;const e=this.$refs.launchBar?.$refs.input;e?.blur()}}});var s=n(8332),l=n.n(s),d=n(6570),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,i,[],!1,null,null,null).exports;let p;const b=()=>{if(!p)return p=(0,o.mountVueComponent)(u),void document.body.append(p.$el);p.show=!p.show}},1491:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});let o=function(e){return e.Left="左侧",e.Right="右侧",e}({})},8730:(e,t,n)=>{"use strict";n.r(t),n.d(t,{map:()=>o});const o=new Map([["通用设置","General"],["实验性","Experimental"],["通用","General"],["开发者模式","Dev mode"],["辅助颜色","Accent color"],["功能加载模式","Script loading mode"],["样式加载模式","Style loading mode"]])},3937:(e,t,n)=>{"use strict";n.r(t),n.d(t,{WidgetsPlugin:()=>b,component:()=>g});var o=n(8612),i=n(9770),r=n(205),a=n(7274),c=n(5067),s=n(6932),l=n(6136),d=n(2860),m=n(4909),f=n(7801),u=n(5074);var p=n(1491);const b="widgets",h=(0,d.defineOptionsMetadata)({themeColor:{defaultValue:"#00A0D8",displayName:"主题颜色",color:!0},scriptLoadingMode:{defaultValue:i.LoadingMode.Delay,displayName:"功能加载模式",dropdownEnum:i.LoadingMode},styleLoadingMode:{defaultValue:i.LoadingMode.Race,displayName:"样式加载模式",dropdownEnum:i.LoadingMode},textColor:{defaultValue:r.TextColor.Auto,displayName:"文本颜色",dropdownEnum:r.TextColor},cdnRoot:{defaultValue:a.CdnTypes.AltCdn,displayName:"更新源",dropdownEnum:a.CdnTypes},dockSide:{defaultValue:p.l.Left,displayName:"设置面板停靠",dropdownEnum:p.l},filenameFormat:{defaultValue:"[title][ - ep]",displayName:"文件命名格式"},batchFilenameFormat:{defaultValue:"[n - ][ep]",displayName:"批量命名格式"},downloadPackageEmitMode:{defaultValue:s.h.Packed,displayName:"文件下载模式",dropdownEnum:s.h},devMode:{defaultValue:!1,displayName:"开发者模式"}}),g=(0,d.defineComponentMetadata)({name:"settingsPanel",displayName:"通用设置",configurable:!1,entry:async e=>{let{metadata:t}=e;const{isIframe:i}=await Promise.resolve().then(n.bind(n,8612));i()||((0,c.addComponentListener)(`${t.name}.dockSide`,(e=>{document.body.classList.toggle("settings-panel-dock-right",e===p.l.Right)}),!0),requestIdleCallback((async()=>{const e=await Promise.resolve().then(n.bind(n,5974)),t=(0,o.mountVueComponent)(e);document.body.insertAdjacentElement("beforeend",t.$el)})))},options:h,tags:[l.t.general],plugin:{displayName:"设置面板 - 功能扩展",setup:()=>{(0,m.addData)(f.LaunchBarActionProviders,(e=>{e.push({name:"onlineRegistry",getActions:async()=>[{name:"切换在线仓库",description:"Toggle Online Registry",icon:"mdi-web",action:async()=>{const{togglePopup:e}=await Promise.resolve().then(n.bind(n,304));e()}}]},{name:"aboutPageActionsProvider",getActions:async()=>u.a.map((e=>e.actionName?{name:e.name,displayName:e.displayName,icon:e.icon,description:e.actionName,action:()=>e.run()}:null)).filter((e=>null!==e))})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(4311);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,6284,17)).then((e=>e.default))}})(),i18n:(()=>{const e=n(3552);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.ts$/)[1],e(t)])))}})()})},5158:(e,t,n)=>{"use strict";n.d(t,{B:()=>r,U:()=>i});var o=n(5067);const i=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,o.getComponentSettings)(this.componentData)}}}),r=e=>Vue.extend({data:()=>({virtual:!1}),async mounted(){const{dq:t}=await Promise.resolve().then(n.bind(n,8612)),{visibleInside:o}=await Promise.resolve().then(n.bind(n,2545)),i=this.$el,r=t(e);r?o(i,r,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.warn("virtual container not found, virtual scroll will be disabled!")}})},5074:(e,t,n)=>{"use strict";n.d(t,{a:()=>r});var o=n(4909);const i=[{icon:"mdi-inbox-arrow-up-outline",name:"exportSettings",displayName:"导出设置",actionName:"Export Settings",run:async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,5067)),{DownloadPackage:t}=await Promise.resolve().then(n.bind(n,3720));t.single("settings.json",JSON.stringify(e,void 0,2))}},{icon:"mdi-inbox-arrow-down-outline",name:"importSettings",displayName:"导入设置",actionName:"Import Settings",run:async()=>{const{logError:e}=await Promise.resolve().then(n.bind(n,4732)),{pickFile:t}=await Promise.resolve().then(n.bind(n,7120)),{Toast:o}=await Promise.resolve().then(n.bind(n,3823)),i=await t({accept:"*.json"});if(0===i.length)return;const[r]=i;try{const e=JSON.parse(await r.text());Object.entries(e).forEach((e=>{let[t,n]=e;GM_setValue(t,n)})),o.success("导入成功, 正在刷新页面...","导入设置"),window.location.reload()}catch(t){e(t)}}}],[r]=(0,o.registerAndGetData)("settingsPanel.about.actions",i)},304:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initPopup:()=>N,togglePopup:()=>q});var o=n(8612),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"online-registry be-settings-extra-options",attrs:{fixed:"","auto-close":!1},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("div",{staticClass:"online-registry-header"},[t("VIcon",{staticClass:"online-registry-header-title-icon",attrs:{icon:"mdi-web"}}),e._v(" "),t("div",{staticClass:"online-registry-header-title"},[e._v("在线仓库")]),e._v(" "),t("VIcon",{staticClass:"online-registry-header-refresh-icon",attrs:{icon:"mdi-refresh",size:22,title:"刷新"},on:{click:function(t){return e.fetchFeatures()}}}),e._v(" "),t("VIcon",{staticClass:"online-registry-header-close-icon",attrs:{icon:"mdi-close",size:24,title:"关闭"},on:{click:function(t){e.popupOpen=!1}}})],1),e._v(" "),t("div",{staticClass:"online-registry-header"},[t("div",{staticClass:"online-registry-header-search"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{attrs:{disabled:e.loading,placeholder:"搜索功能"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-branch"},[e._v("\n 分支:\n "),t("VDropdown",{attrs:{disabled:e.loading,items:e.registryBranches},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.selectedBranch,callback:function(t){e.selectedBranch=t},expression:"selectedBranch"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-filter"},[e._v("\n 查看:\n "),e._l(e.itemFilterOptions,(function(n){return t("RadioButton",{key:n.value,attrs:{group:"itemFilter",checked:e.itemFilter===n.value},on:{change:function(t){t&&(e.itemFilter=n.value)}}},[e._v("\n "+e._s(n.label)+"\n ")])}))],2)]),e._v(" "),t("div",{staticClass:"online-registry-separator"}),e._v(" "),t("div",{ref:"content",staticClass:"online-registry-content"},[e.loading?t("VLoading"):e._e(),e._v(" "),e.loading||e.list.length?e._e():t("VEmpty"),e._v(" "),e._l(e.filteredList,(function(n){return t("RegistryItem",{key:n.name,ref:"items",refInFor:!0,attrs:{item:n,branch:e.selectedBranch,"item-filter":e.itemFilter},on:{refresh:e.checkInstalled}})}))],2)])};i._withStripped=!0;var r=n(7942),a=n(5267),c=n(7274),s=n(2046),l=n(5067),d=n(4732),m=n(2570),f=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("MiniToast",{staticClass:"online-registry-item-wrapper",class:{virtual:e.virtual,hidden:e.hidden},attrs:{placement:e.placement,container:"body",delay:[200,0],offset:[0,12]},scopedSlots:e._u([{key:"toast",fn:function(){return[e.item.description?t("ComponentDescription",{attrs:{"component-data":e.item}}):e._e()]},proxy:!0}])},[e.virtual?e._e():t("div",{staticClass:"online-registry-item"},[t("VIcon",{staticClass:"item-icon",attrs:{size:18,icon:e.icon}}),e._v(" "),t("div",{staticClass:"item-badge"},[e._v("\n "+e._s(e.badge)+"\n ")]),e._v(" "),t("div",{staticClass:"item-display-name"},[e._v("\n "+e._s(e.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"item-action"},[e.installed?t("VButton",{staticClass:"reinstall-button",attrs:{title:"重新安装",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[e._v("\n "+e._s(e.installing?"正在安装":"已安装")+"\n ")]):t("VButton",{staticClass:"install-button",attrs:{title:"安装",type:"primary",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:15}}),e._v("\n "+e._s(e.installing?"正在安装":"安装")+"\n ")],1)],1)],1)])};f._withStripped=!0;var u=n(9761),p=n(2545),b=n(6904),h=n(1491);let g=function(e){return e.All="all",e.Installed="installed",e.NotInstalled="notInstalled",e}({});const F=(e,t)=>`${(0,c.cdnRoots[(0,l.getGeneralSettings)().cdnRoot])(t,e.owner)}${e.fullAbsolutePath}`,v=e=>{const t=`user${lodash.startCase(e.type)}s`;return e.name in l.settings[t]},w={component:{icon:"mdi-cube-scan",badge:"组件",getUrl:F,isInstalled:v},plugin:{icon:"mdi-puzzle-outline",badge:"插件",getUrl:F,isInstalled:v},style:{icon:"mdi-tune",badge:"样式",getUrl:F,isInstalled:v},pack:{icon:"mdi-package-variant-closed",badge:"合集包",getUrl:(e,t)=>e.items.map((e=>F(e,t))).join("\n"),isInstalled:e=>e.items.every(v)}},y=Vue.extend({components:{VIcon:m.VIcon,VButton:m.VButton,MiniToast:m.MiniToast,ComponentDescription:b.Z},props:{item:{type:Object,required:!0},branch:{type:String,required:!0},itemFilter:{type:String,default:g.All}},data(){const{icon:e,badge:t,getUrl:n,isInstalled:o}=w[this.item.type];return{icon:e,badge:t,getUrl:e=>n(e,this.branch),isInstalled:o,installing:!1,installed:!1,virtual:!1,placement:"right"}},computed:{hidden(){switch(this.itemFilter){case g.All:default:return!1;case g.Installed:return!this.installed;case g.NotInstalled:return this.installed}}},created(){this.checkInstalled(),(0,l.addComponentListener)("settingsPanel.dockSide",(e=>{this.placement=e===h.l.Left?"right":"left"}),!0)},mounted(){const e=this.$el;(0,p.visibleInside)(e,e.parentElement,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))}))},methods:{checkInstalled(){this.installed=this.isInstalled(this.item)},async install(e){const t=e.split("\n").map((e=>e.trim())).filter((e=>""!==e));try{this.installing=!0,await Promise.all(t.map((async e=>(0,u.installFeature)(e)))),this.checkInstalled(),"pack"===this.item.type&&this.$emit("refresh")}catch(e){(0,d.logError)(e)}finally{this.installing=!1}}}});var x=n(8332),k=n.n(x),C=n(4947),A=n.n(C),E={insert:"head",singleton:!1};k()(A(),E);A().locals;var B=n(4893);const D=(0,B.Z)(y,f,[],!1,null,null,null).exports;var I=n(4909);const[z]=(0,I.registerAndGetData)("settingsPanel.registryBranches",["master","preview"]),S=(0,l.getGeneralSettings)();function P(e){if(!e)return void(this.filteredList=this.list);const t=this.fuse.search(e);this.filteredList=t.map((e=>e.item)),this.$nextTick().then((()=>this.$refs.content.scrollTo(0,0)))}const M=[{label:"全部",value:g.All},{label:"已安装",value:g.Installed},{label:"未安装",value:g.NotInstalled}],O=Vue.extend({components:{VIcon:m.VIcon,VDropdown:m.VDropdown,TextBox:m.TextBox,VPopup:m.VPopup,RegistryItem:D,VLoading:m.VLoading,VEmpty:m.VEmpty,RadioButton:m.RadioButton},props:{open:{default:!1,type:Boolean}},data(){const e=[S.registryBranch,s.meta.compilationInfo.branch,z[0]].filter((e=>z.includes(e)&&Boolean(e)));return{searchKeyword:"",popupOpen:!1,loading:!1,list:[],itemFilter:g.All,itemFilterOptions:M,filteredList:[],fuse:null,registryBranches:z,selectedBranch:e[0]}},watch:{searchKeyword:lodash.debounce(P,200),selectedBranch(e){S.registryBranch=e,this.fetchFeatures()}},mounted(){this.fetchFeatures()},methods:{async fetchFeatures(){if(this.loading)return;const e=c.cdnRoots[S.cdnRoot](this.selectedBranch);try{this.loading=!0,this.list=[],this.filteredList=[];const t=`${e}doc/features/features.json`,n=`${e}doc/features/pack/pack.json`,o=await(0,a.monkey)({url:t,responseType:"json"}),i=await(0,a.monkey)({url:n,responseType:"json"});if(!Array.isArray(o)||!Array.isArray(i))throw console.error("Fetch failed:",o,i,t,n),new Error("获取在线仓库数据失败, 请尝试在通用设置中设置其他更新源, 然后再试一次.");this.list=[...i,...o],this.fuse=new r.Z(this.list,{keys:["displayName","name","description"]}),P.call(this,this.searchKeyword)}catch(e){(0,d.logError)(e)}finally{this.loading=!1}},checkInstalled(){this.$refs.items?.forEach((e=>e.checkInstalled()))}}});var V=n(7621),T=n.n(V),L={insert:"head",singleton:!1};k()(T(),L);T().locals;const j=(0,B.Z)(O,i,[],!1,null,null,null).exports;let R;const N=()=>{R||(R=(0,o.mountVueComponent)(j),document.body.append(R.$el))},q=()=>{R||N(),R.popupOpen=!R.popupOpen}},6136:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o={video:{name:"video",displayName:"视频",color:"#2196F3",icon:"mdi-play-circle-outline",order:1},style:{name:"style",displayName:"样式",color:"#8BC34A",icon:"mdi-palette-outline",order:2},feeds:{name:"feeds",displayName:"动态",color:"#00ACC1",icon:"mdi-pinwheel-outline",order:3},live:{name:"live",displayName:"直播",color:"#26A69A",icon:"mdi-video-wireless-outline",order:4},utils:{name:"utils",displayName:"工具",color:"#A36FFD",icon:"mdi-rocket-launch-outline",order:5},touch:{name:"touch",displayName:"触摸",color:"#78909C",icon:"mdi-gesture-tap-button",order:6},experimental:{name:"experimental",displayName:"实验",color:"#FF5722",icon:"mdi-flask-outline",order:7},general:{name:"general",displayName:"通用",color:"#888",icon:"mdi-progress-wrench",order:8}}},4227:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bisectComponent:()=>d,installComponent:()=>c,toggleComponent:()=>l,uninstallComponent:()=>s});var o=n(5067),i=n(5157),r=n(6316),a=n(4132);const c=async e=>{const{components:t}=await Promise.resolve().then(n.bind(n,6316)),{loadFeatureCode:a}=await Promise.resolve().then(n.bind(n,1841));let c;try{c=a(e)}catch(e){throw new Error("无效的组件代码",{cause:e})}const{settings:s}=await Promise.resolve().then(n.bind(n,5067));if((0,i.isBuiltInComponent)(c.name))throw new Error(`不能覆盖内置组件'${c.name}', 请更换名称`);const l={...lodash.omit(c,"entry","widget","instantStyles","reload","unload","plugin","urlInclude","urlExclude")},d=s.userComponents[c.name];if(d){d.code=e,d.metadata=l;const t=(0,o.componentToSettings)(c);return lodash.defaultsDeep(d.settings.options,lodash.pickBy(t.options,(e=>!Array.isArray(e)))),{metadata:c,message:`已更新组件'${c.displayName}', 刷新后生效`}}return s.userComponents[c.name]={code:e,metadata:l,settings:(0,o.componentToSettings)(c)},t.push(c),r.componentsMap[c.name]=c,{metadata:c,message:`已安装组件'${c.displayName}', 刷新后生效`}},s=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,5067)),{components:o}=await Promise.resolve().then(n.bind(n,6316)),i=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[a,{metadata:c,settings:s}]=i,l=o.findIndex((e=>e.name===a));if(-1!==l){const{instantStyles:e}=o[l];if(e){const{removeStyle:t}=await Promise.resolve().then(n.bind(n,4460));e.forEach((e=>t(e.name)))}s.enabled=!1,o.splice(l,1),delete r.componentsMap[a]}return delete t.userComponents[a],{metadata:c,message:`已卸载组件'${c.displayName}, 刷新后生效'`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,5067)),o=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!o)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[,i]=o;i.settings.enabled=!i.settings.enabled;const{enabled:r}=i.settings,{displayName:a}=i.metadata;return`已${r?"开启":"关闭"}组件'${a}', 可能需要刷新后才能生效`},d=async e=>(e&&a.setOptions(e),a)},7748:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{updateCategories:()=>updateCategories,updateIcons:()=>updateIcons});var _core_ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5267),_core_download__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3720);const updateCategories=async()=>{const[script]=dqa("script").filter((e=>e.src.includes("stardust-video")));if(!script)throw new Error("no script found");const scriptText=await(0,_core_ajax__WEBPACK_IMPORTED_MODULE_0__.getText)(script.src),match=scriptText.match(/([\w]+?=\[\{name:"首页".+?\}.+?\]),[\w]+?=\[\{name:"首頁"/);if(!match)throw new Error("no match in script");const variables=match[1].match(/(\w+?)(?==\[)/g),data=eval(`var ${match[1]}; [${variables.join(",")}]`);_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("raw.json",data)},updateIcons=()=>{const e=dqa(".bili-header-channel-panel svg");if(0===e.length)throw new Error("svg icons not found");const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("aria-hidden","true"),t.setAttribute("style","position: absolute; width: 0px; height: 0px; overflow: hidden;"),t.id="be-category-icons",e.forEach((e=>{const n=document.createElementNS("http://www.w3.org/2000/svg","symbol");n.innerHTML=e.innerHTML,n.id=e.id.replace(/^channel-icon-/,"header-icon-")||`header-icon-${e.parentElement?.href.match(/\/v\/(.+)$/)?.[1]}`,"header-icon-teleplay"===n.id&&(n.id="header-icon-tv"),n.id||console.warn("cannot find id for",e),n.setAttribute("viewBox",e.getAttribute("viewBox")),t.appendChild(n)})),_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("icons.svg",t.outerHTML)}},8895:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerMode:()=>a,createPlayerModeChangeEvent:()=>c,playerPolyfill:()=>p});var o=n(2545),i=n(3311),r=n(8612);let a=function(e){return e.Normal="normal",e.WideScreen="wide",e.WebFullscreen="web",e.Fullscreen="full",e}({});const c=e=>new CustomEvent("playerModeChange",{detail:{mode:e,bubbles:!0,cancelable:!0}}),s=lodash.once((async()=>{(async()=>{await(0,r.playerReady)();const e=await(0,i.select)(".bpx-player-container");if(!e)return void console.warn("[bpx player polyfill] bpxContainer not found");let t=a.Normal;(0,o.attributes)(e,(()=>{const n=e.getAttribute("data-screen"),o="player-mode-",i=[a.Normal,a.WideScreen,a.WebFullscreen,a.Fullscreen].map((e=>`${o}${e}`));document.body.classList.remove(...i),n!==a.Normal&&document.body.classList.add(`${o}${n}`),n!==t&&(window.dispatchEvent(c(n)),t=n)}))})(),(async()=>{const e=await(0,i.select)(".bpx-player-video-perch");e&&(0,r.preventEvent)(e,"dblclick")})()}));var l=n(146);const d=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getVideoMessage)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,4732)),r=t("v2 player polyfill");(0,o.allMutations)((()=>{const t=e.getVideoMessage();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),m=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getUserParams)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,4732)),r=t("v3 player polyfill");(0,o.allMutations)((()=>{const{input:t}=e.getUserParams();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),f=e=>{if(""===e)return!1;const t=parseInt(e);return!!Number.isNaN(t)||t>0},u=lodash.once((()=>{unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getManifest)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,4732)),a=t("v4 player polyfill");(0,o.allMutations)((()=>{const t=e.getManifest();if(!t)return void a.warn("invalid getManifest data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid??""};(l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))?f(n.aid)&&f(n.cid):Object.values(n).every((e=>f(e))))||a.warn("invalid manifest data",n),Object.assign(unsafeWindow,n)}))})()})),p=lodash.once((()=>Promise.allSettled([s(),d(),m(),u()])))},6768:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerAgentEventTypes:()=>a,playerAgent:()=>h});var o=n(146),i=n(3311),r=n(8612);let a=function(e){return e.Play="play",e.Pause="pause",e}({});function c(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const s=e=>{const t=e=>"string"!=typeof e?lodash.mapValues(e,t):(e=>{const t=()=>(0,i.select)(e);return t.selector=e,t.sync=()=>dq(e),t})(e);return lodash.mapValues(e,t)},l=e=>{const t=e.sync();return t?.click(),t};class d extends EventTarget{constructor(){super(),c(this,"isBpxPlayer",!0),c(this,"type",void 0),c(this,"query",void 0),c(this,"eventHandlerMap",new Map)}provideCustomQuery(e){const t=s(e[this.type]??e.video);return{...this,custom:t}}widescreen(){return l(this.query.control.buttons.widescreen)}webFullscreen(){return l(this.query.control.buttons.webFullscreen)}fullscreen(){return l(this.query.control.buttons.fullscreen)}togglePlay(){return l(this.query.control.buttons.start)}togglePip(){return l(this.query.control.buttons.pip)}toggleMute(){return l(this.query.control.buttons.volume)}toggleDanmaku(){const e=this.query.danmakuSwitch.sync();return e?(e.checked=!e.checked,(0,r.raiseEvent)(e,"change"),e.checked):null}async toggleLight(e){if(!this.nativeApi)return null;const t=this.nativeApi.getLightOff();return void 0===e?(this.nativeApi.setLightOff(!t),!t):e&&t?(this.nativeApi.setLightOff(!1),!0):e||t?null:(this.nativeApi.setLightOff(!0),!1)}getPlayerConfig(e,t){const n=this.isBpxPlayer?"bpx_player_profile":"bilibili_player_settings";return lodash.get(JSON.parse(localStorage.getItem(n)),e,t)}isAutoPlay(){return this.getPlayerConfig("video_status.autoplay")}get nativeApi(){return unsafeWindow.player||unsafeWindow.playerRaw}get nanoApi(){return unsafeWindow.nano}get nanoTypeMap(){return{[a.Play]:this.nanoApi.EventType.Player_Play,[a.Pause]:this.nanoApi.EventType.Player_Pause}}addEventListener(e,t,n){super.addEventListener(e,t,n);const o=this.nanoTypeMap[e];o?(e=>{"object"==typeof n&&n.once?this.nativeApi.once(e,t):this.nativeApi.on(e,t),this.eventHandlerMap.set(t,{handler:t,options:n})})(o):console.warn("[PlayerAgent] unknown event type",e)}removeEventListener(e,t,n){super.removeEventListener(e,t,n);const o=this.nanoTypeMap[e];o&&(e=>{const o=this.eventHandlerMap.get(t);o&&!lodash.isEqual(n,o.options)&&this.nativeApi.off(e,o.handler)})(o)}isMute(){return this.nativeApi?this.nativeApi.isMuted?this.nativeApi.isMuted():this.nativeApi.isMute():null}changeVolume(e){if(!this.nativeApi)return null;if(this.nativeApi.getVolume){const t=this.nativeApi.getVolume();return this.nativeApi.setVolume(t+e/100),Math.round(100*this.nativeApi.getVolume())}const t=this.nativeApi.volume();return this.nativeApi.volume(t+e/100),Math.round(100*this.nativeApi.volume())}seek(e){return this.nativeApi?(this.nativeApi.seek(e),this.nativeApi.getCurrentTime()):null}changeTime(e){if(!this.nativeApi)return null;const t=this.query.video.element.sync();return t?(this.nativeApi.seek(t.currentTime+e,t.paused),this.nativeApi.getCurrentTime()):null}} // spell-checker: disable const m={playerArea:".bpx-player-primary-area",video:{element:".bpx-player-video-wrap video",wrap:".bpx-player-video-area",top:".bpx-player-top-wrap",state:".bpx-player-state-wrap",panel:".bpx-player-ending-panel",popup:".bpx-player-dialog-wrap",subtitle:".bpx-player-subtitle-wrap",basDanmaku:".bpx-player-bas-dm-wrap",advDanmaku:".bpx-player-adv-dm-wrap",danmaku:".bpx-player-row-dm-wrap",container:".bpx-player-video-perch"},control:{element:".bpx-player-control-entity",wrap:".bpx-player-control-wrap",mask:".bpx-player-control-mask",top:".bpx-player-control-top",progress:".bpx-player-progress",bottom:".bpx-player-control-bottom",bottomLeft:".bpx-player-control-bottom-left",bottomCenter:".bpx-player-control-bottom-center",bottomRight:".bpx-player-control-bottom-right",buttons:{start:".bpx-player-ctrl-play",next:".bpx-player-ctrl-btn-next",time:".bpx-player-ctrl-time",quality:".bpx-player-ctrl-quality",pageList:".bpx-player-ctrl-eplist",speed:".bpx-player-ctrl-playbackrate",subtitle:".bpx-player-ctrl-subtitle > div > span",volume:".bpx-player-ctrl-volume-icon",settings:".bpx-player-ctrl-setting",pip:".bpx-player-ctrl-pip",widescreen:".bpx-player-ctrl-wide",webFullscreen:".bpx-player-ctrl-web",fullscreen:".bpx-player-ctrl-full"},settings:{wrap:".bpx-player-ctrl-setting-box",lightOff:".bpx-player-ctrl-setting-lightoff .bui-checkbox-input"}},toastWrap:".bpx-player-dialog-wrap",danmakuTipLayer:".bpx-player-dm-tip",danmakuSwitch:".bpx-player-dm-switch input"}; // spell-checker: enable -function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u extends d{constructor(){super(),f(this,"type","bangumi"),f(this,"query",s({playerWrap:"#bilibili-player-wrap",bilibiliPlayer:"#bilibili-player",...m}))}seek(e){const t=super.seek(e);return null===t||setTimeout((()=>{const e=dq(".bpx-player-toast-row .bpx-player-toast-item .bpx-player-toast-text");e?.textContent?.startsWith("已为您定位至")&&(e.textContent="已为您定位至00:00")})),t}}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends d{constructor(){super(),p(this,"type","video"),p(this,"query",s({playerWrap:".player-wrap",bilibiliPlayer:"#bilibili-player",...m})),this.checkBwpVideo()}checkBwpVideo(){const e=this.query.video.element.selector,t=".bilibili-player-video bwp-video,.bpx-player-video-area bwp-video";this.query.video.element=(()=>{const n=async()=>await(0,r.isBwpVideo)()?(0,i.select)(t):(0,i.select)(e);return n.selector=e,n.sync=()=>dq(e),(0,r.isBwpVideo)().then((e=>{e&&(n.selector=t,n.sync=()=>dq(t))})),n})()}}const h=(0,o.matchCurrentPage)(o.bangumiUrls)?new u:new b},5267:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bilibiliApi:()=>k,getBlob:()=>c,getBlobWithCredentials:()=>s,getJson:()=>p,getJsonWithCredentials:()=>b,getPages:()=>x,getText:()=>d,getTextWithCredentials:()=>m,monkey:()=>w,postJson:()=>F,postJsonWithCredentials:()=>v,postText:()=>h,postTextWithCredentials:()=>g,responsiveGetPages:()=>y});var o=n(4732);const i=e=>{const t=new XMLHttpRequest,{isText:n=!0,body:o}=e(t);return new Promise(((e,i)=>{t.addEventListener("load",(()=>e(n?t.responseText:t.response))),t.addEventListener("error",(()=>i(t.status))),t.send(o)}))},r=e=>t=>(t.withCredentials=!0,e(t)),a=e=>t=>(t.responseType="blob",t.open("GET",e),{isText:!1}),c=e=>i(a(e)),s=e=>i(r(a(e))),l=e=>t=>(t.responseType="text",t.open("GET",e),{isText:!0}),d=e=>i(l(e)),m=e=>i(r(l(e))),f=e=>t=>(t.responseType="json",t.open("GET",e),{isText:!1}),u=e=>"string"==typeof e?JSON.parse(e):e,p=async e=>{const t=await i(f(e));return u(t)},b=async e=>{const t=await i(r(f(e)));return u(t)},h=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),g=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),F=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),v=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),w=e=>new Promise(((t,n)=>{const o={nocache:!0,...e,onload:e=>t(e.response),onerror:e=>{const t={...JSON.parse(JSON.stringify(e)),toString(){return JSON.stringify(this)}};n(t)}};"method"in o||(o.method="GET"),GM_xmlhttpRequest(o)})),y=e=>{let t;const n=new Promise((n=>{t=new Promise((t=>{(async()=>{const{api:o,getList:i,getTotal:r}=e;let a=1,c=1/0;const s=[];for(;s.length{const[,t]=y(e);return await t},k=async(e,t)=>{const n=await e;if(0!==n.code){const e=new Error(`${t}: code = ${n.code}, message = ${n.message||n.msg}`);throw(0,o.logError)(e),e}return n.data||n.result||{}}},7274:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CdnTypes:()=>i,cdnRoots:()=>a,defaultOwner:()=>r});var o=n(2046);let i=function(e){return e.jsDelivr="jsDelivr",e.AltCdn="AltCdn",e.GitHub="GitHub",e}({});const r="the1812",a={jsDelivr:(e,t)=>o.meta.compilationInfo.allCdns.jsDelivr.root(e,t),AltCdn:(e,t)=>o.meta.compilationInfo.altCdn.root(e,t),GitHub:(e,t)=>`https://raw.githubusercontent.com/${t||r}/Bilibili-Evolved/${e}/`}},4435:(e,t,n)=>{"use strict";n.r(t),n.d(t,{coreApis:()=>Do,externalApis:()=>Io});var o={};n.r(o),n.d(o,{enableHorizontalScroll:()=>O});var i={};n.r(i),n.d(i,{Reorder:()=>G,ReorderDecreaseClassName:()=>q,ReorderEnabledClassName:()=>U,ReorderIncreaseClassName:()=>Z,ReorderOrientations:()=>W,ReorderingClassName:()=>H});var r={};n.r(r),n.d(r,{getUserInfo:()=>$});var a={};n.r(a),n.d(a,{loadDanmakuSettingsPanel:()=>se,loadLazyPanel:()=>ae,loadLazyPlayerSettingsPanel:()=>ce,loadSubtitleSettingsPanel:()=>le});var c={};n.r(c),n.d(c,{styledComponentEntry:()=>ve,toggleStyle:()=>we});var s={};n.r(s),n.d(s,{getWatchlaterList:()=>Ce,toggleWatchlater:()=>Ae,watchlaterList:()=>ke});var l={};n.r(l),n.d(l,{FeedsCardsManager:()=>Te,FeedsCardsManagerEventType:()=>Ve,addMenuItem:()=>rt,applyContentFilter:()=>et,bangumiTypeList:()=>Ie,createNodeValidator:()=>Oe,feedsCardCallbacks:()=>Pe,feedsCardTypes:()=>Be,feedsCardsManager:()=>Xe,forEachFeedsCard:()=>Ke,getFeeds:()=>ot,getFeedsUrl:()=>nt,getVideoFeeds:()=>it,getVueData:()=>te.getVue2Data,groupVideoFeeds:()=>Je,isPreOrderedVideo:()=>_e,isRepostType:()=>De,isV2Feeds:()=>Ye,navbarFeedsTypeList:()=>ze,withContentFilter:()=>tt});var d={};n.r(d),n.d(d,{DisableProfilePopupClass:()=>Vt,disableProfilePopup:()=>Tt,enableProfilePopup:()=>Lt});var m={};n.r(m),n.d(m,{compareID:()=>Nt,getLatestID:()=>Rt,getNotifyCount:()=>Wt,getNotifyCountByType:()=>Ht,isNewID:()=>Zt,setLatestID:()=>qt,updateInterval:()=>jt,updateLatestID:()=>Ut});var f={};n.r(f),n.d(f,{convertHexColorForDialogue:()=>Qt,convertHexColorForStyle:()=>Yt,convertTimeByDuration:()=>Kt,convertTimeByEndTime:()=>Jt,normalizeContent:()=>_t});var u={};n.r(u),n.d(u,{escapeContent:()=>nn,normalizeContent:()=>on});var p={};n.r(p),n.d(p,{lightOff:()=>sn,lightOn:()=>cn,toggleLight:()=>ln});var b={};n.r(b),n.d(b,{addVideoActionButton:()=>dn});var h={};n.r(h),n.d(h,{forEachVideoDanmaku:()=>mn});var g={};n.r(g),n.d(g,{BangumiInfo:()=>pn,VideoInfo:()=>un});var F={};n.r(F),n.d(F,{allQualities:()=>gn,loginRequiredQualities:()=>bn,vipRequiredQualities:()=>hn});var v={};n.r(v),n.d(v,{addMenuItem:()=>vn,forEachContextMenu:()=>Fn});var w={};n.r(w),n.d(w,{addControlBarButton:()=>kn});var y={};n.r(y),n.d(y,{getBlobByAid:()=>An,getVideoCoverUrlByAid:()=>Cn});var x={};n.r(x),n.d(x,{waitForControlBar:()=>Bn,withControlBar:()=>En});var k={};n.r(k),n.d(k,{LiveSocket:()=>On});var C={};n.r(C),n.d(C,{CommentArea:()=>Nn,CommentAreaV1:()=>qn,CommentAreaV2:()=>Gn,CommentItem:()=>jn,CommentReplyItem:()=>Tn,addMenuItem:()=>$n,commentAreaManager:()=>Kn,forEachCommentArea:()=>Jn,forEachCommentItem:()=>_n,getCommentArea:()=>Qn});var A={};n.r(A),n.d(A,{addCategoryIcons:()=>lo,categories:()=>ao,categoryCodes:()=>co,categoryLinks:()=>so,rawData:()=>to});var E={};n.r(E),n.d(E,{createSwitchOptions:()=>Fo,defineSwitchItemsMetadata:()=>vo,defineSwitchMetadata:()=>wo,newSwitchComponentWrapper:()=>xo,wrapSwitchOptions:()=>yo});var B=n(5267),D=n(7274),I=n(3720),z=n(5167),S=n(1841),M=n(7120),P=n(9761);const O=e=>{const t=t=>{t.deltaY&&!t.deltaX&&(t.preventDefault(),requestAnimationFrame((()=>{e.scrollBy(t.deltaY,0)})))};return e.addEventListener("wheel",t),e.style.scrollSnapType="none",()=>{e.removeEventListener("wheel",t),e.style.scrollSnapType=""}};var V=n(1197),T=n(9770),L=n(9047),j=n(2046),R=n(2545);function N(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const q="reorder-decrease",Z="reorder-increase",U="reorder-enabled",H="reordering",W={horizontal:{name:"horizontal",getMoveTransform:e=>`translateX(${e}px)`,setOtherTransform:lodash.throttle(((e,t,n)=>{if(!t.classList.contains(H))return;const o=e.find((e=>e.element===t));if(!o)return;const i=o.rect,r=e.filter((e=>e.rect.leftt.rect.left-e.rect.left)),a=e.filter((e=>e.rect.left>i.left)).sort(((e,t)=>e.rect.left-t.rect.left));if(n>=0){const[e]=a;r.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),a.forEach((t=>{i.left+n+i.width>=t.rect.left+t.rect.width/2?(t.element.classList.add(q),t.element.style.transform=`translateX(-${e.rect.left-i.left}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=r;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),r.forEach((t=>{i.left+n<=t.rect.left+t.rect.width/2?(t.element.classList.add(Z),t.element.style.transform=`translateX(${i.left+i.width-e.rect.left-e.rect.width}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)},vertical:{name:"vertical",getMoveTransform:(e,t)=>`translateY(${t}px)`,setOtherTransform:lodash.throttle(((e,t,n,o)=>{if(!t.classList.contains(H))return;const i=e.find((e=>e.element===t));if(!i)return;const r=i.rect,a=e.filter((e=>e.rect.topt.rect.top-e.rect.top)),c=e.filter((e=>e.rect.top>r.top)).sort(((e,t)=>e.rect.top-t.rect.top));if(o>=0){const[e]=c;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),c.forEach((t=>{r.top+o+r.height>=t.rect.top+t.rect.height/2?(t.element.classList.add(q),t.element.style.transform=`translateY(-${e.rect.top-r.top}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=a;c.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),a.forEach((t=>{r.top+o<=t.rect.top+t.rect.height/2?(t.element.classList.add(Z),t.element.style.transform=`translateY(${r.top+r.height-e.rect.top-e.rect.height}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)}};class G extends EventTarget{constructor(e){super(),this.container=e,N(this,"orientation",W.horizontal),N(this,"enabled",!1),N(this,"children",void 0),N(this,"snapshots",new Map),N(this,"attachedEvents",[]),this.children=[...this.container.children],this.children.every((e=>""===e.style.order))&&this.children.forEach(((e,t)=>{e.style.order=(t+1).toString()}))}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.addEventListener(e,t,n)}getOrderMap(){return new Map(this.children.map((e=>[e,parseInt(e.style.order)])))}toggle(){this.enabled?this.disable():this.enable()}generateSnapshots(){this.children.forEach((e=>{this.snapshots.set(e,{element:e,rect:e.getBoundingClientRect()})}))}enable(){this.children.forEach((e=>{let t=0,n=0,o=!1;e.classList.add(U);(()=>{const i=(i,r)=>{e.classList.add(H),e.style.transition="none",e.style.userSelect="none",this.generateSnapshots(),this.children.filter((t=>t!==e)).forEach((e=>{e.style.transition="transform .2s ease-out"})),t=i,n=r,o=!0},r=e=>{i(e.screenX,e.screenY)};e.addEventListener("mousedown",r),this.attachedEvents.push((()=>e.removeEventListener("mousedown",r)));const a=e=>{if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY)};e.addEventListener("touchstart",a),this.attachedEvents.push((()=>e.removeEventListener("touchstart",a)))})(),(()=>{const i=(o,i)=>{const r=o-t,a=i-n;e.style.transform=this.orientation.getMoveTransform(r,a),this.orientation.setOtherTransform([...this.snapshots.values()],e,r,a)},r=e=>{o&&(i(e.screenX,e.screenY),e.cancelable&&e.preventDefault())};document.addEventListener("mousemove",r),this.attachedEvents.push((()=>document.removeEventListener("mousemove",r)));const a=e=>{if(!o)return;if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY),e.cancelable&&e.preventDefault()};e.addEventListener("touchmove",a,{passive:!1}),this.attachedEvents.push((()=>e.removeEventListener("touchmove",a)))})(),(()=>{const t=()=>{if(!o)return;e.classList.remove(H),o=!1;let t=0;const n=this.children.filter((t=>t!==e)),i=[];n.forEach((e=>{e.style.transform="",e.style.transition="",e.classList.contains(Z)?(t--,e.style.order=(parseInt(e.style.order)+1).toString(),e.classList.remove(Z),i.push(this.snapshots.get(e))):e.classList.contains(q)&&(t++,e.style.order=(parseInt(e.style.order)-1).toString(),e.classList.remove(q),i.push(this.snapshots.get(e)))})),e.style.userSelect="",e.style.order=(parseInt(e.style.order)+t).toString(),e.style.transform="",e.style.transition="",this.dispatchEvent(new CustomEvent("reorder",{detail:this.children.map((e=>({element:e,order:parseInt(e.style.order)})))}))};document.addEventListener("mouseup",t),this.attachedEvents.push((()=>document.removeEventListener("mouseup",t))),e.addEventListener("touchend",t),this.attachedEvents.push((()=>e.removeEventListener("touchend",t)))})()})),this.enabled=!0}disable(){this.attachedEvents.forEach((e=>e())),this.children.forEach((e=>e.classList.remove(U))),this.enabled=!1}}var Q=n(1003),Y=n(3311),X=n(4460),K=n(205),J=n(5067);const _={isLogin:!1},$=lodash.once((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,8612));if(!e())return _;const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,5267)),o=await t("https://api.bilibili.com/x/web-interface/nav");return 0!==o.code&&-101!==o.code?(console.warn("[store.fetchUserInfo] API Error",o.message),_):o.data}));var ee=n(9219),te=n(8612),ne=n(4021),oe=n(9083),ie=n(6571),re=n(8884);const ae=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{style:n,enterDelay:o=750,leaveDelay:i=1e3}=t,r=await(0,Y.select)(e);if(!r)throw new Error(`lazy panel failed! selector = ${e}`);let a;return void 0!==n&&(a=document.createElement("style"),a.textContent=n,document.body.insertAdjacentElement("beforeend",a)),(0,te.raiseEvent)(r,"mouseover"),await(0,te.delay)(o),(0,te.raiseEvent)(r,"mouseout"),setTimeout((()=>a?.remove()),i),r},ce=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};await ae(e,{style:`${t} { display: none !important; }`,...n});const o=(0,te.dq)(t);if(!o)throw new Error(`lazy player settings panel failed! panelSelector = ${t}`);return o},se=()=>ce(".bilibili-player-video-danmaku-setting, .bpx-player-dm-setting",".bilibili-player-video-danmaku-setting-wrap, .bpx-player-dm-setting-wrap"),le=()=>ce(".bilibili-player-video-btn-subtitle, .bpx-player-ctrl-subtitle",".bilibili-player-video-subtitle-setting-wrap, .bpx-player-ctrl-subtitle-box",{style:"\n .bpx-player-ctrl-subtitle-box,\n .bilibili-player-video-subtitle-setting-wrap,\n .bilibili-player-video-subtitle {\n display: none\n }\n "});var de=n(4732),me=n(8014),fe=n(146),ue=n(3823),pe=n(5523),be=n(2570),he=n(5157),ge=n(6316),Fe=n(4227);const ve=(e,t)=>async o=>{const{default:i}=await e(),{addStyle:r}=await Promise.resolve().then(n.bind(n,4460));return r(i,o.metadata.name),t(o)},we=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:te.none,i=null;const r=async()=>{if(i)return;const{default:o}=await t(),{addStyle:r}=await Promise.resolve().then(n.bind(n,4460));i=r(o,e)};return{name:e,entry:e=>r().then((()=>o(e))),reload:r,unload:()=>{i?.remove(),i=null}}};var ye=n(2860),xe=n(6080);const ke=[];async function Ce(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{getUID:t}=await Promise.resolve().then(n.bind(n,8612));if(!t())return console.warn("[稍后再看列表] 账号未登录"),[];const o="https://api.bilibili.com/x/v2/history/toview/web",{getJsonWithCredentials:i}=await Promise.resolve().then(n.bind(n,5267)),r=await i(o);if(0!==r.code)return(0,de.logError)(new Error(`获取稍后再看列表失败: ${r.message}`)),[];if(!r.data.list)return(0,te.deleteValues)(ke,(()=>!0)),[];const a=r.data.list;(0,te.deleteValues)(ke,(e=>!a.find((t=>t.aid===e))));const c=a.filter((e=>!ke.find((t=>t===e.aid))));return ke.push(...c.map((e=>e.aid))),e?a:a.map((e=>e.aid))}const Ae=async(e,t)=>{const o=parseInt(e.toString());if(Number.isNaN(o))return;void 0===t&&(t=!ke.includes(o));const i=t?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del",{getCsrf:r}=await Promise.resolve().then(n.bind(n,8612)),a=r(),{postTextWithCredentials:c}=await Promise.resolve().then(n.bind(n,5267)),s=await c(i,`aid=${e}&csrf=${a}`),l=JSON.parse(s);0===l.code?t?ke.push(o):(0,te.deleteValue)(ke,(e=>e===o)):(0,de.logError)(new Error(`稍后再看操作失败: ${l.message}`))};requestIdleCallback((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,8612));e()&&Ce()}));var Ee=n(4909);const Be={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频",apiType:"video"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏",apiType:"article"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧",apiType:"pgc"},share:{id:2048,name:"分享"},manga:{id:2049,name:"漫画"},film:{id:4098,name:"电影"},tv:{id:4099,name:"TV剧"},chinese:{id:4100,name:"国创"},documentary:{id:4101,name:"纪录片"},mediaList:{id:4300,name:"收藏夹"},liveRecord:{id:2047,name:"开播记录"}},De=e=>e.type===Be.repost,Ie="512,4097,4098,4099,4100,4101",ze="8,64,512,4097,4098,4099,4100,4101",Se="feeds.manager.listAdaptors";function Me(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}(0,Ee.addData)(Se,(e=>{e.push({name:"live",match:[...fe.liveUrls],watchCardsList:async e=>{const t=await(0,Y.select)(".room-feed");if(!t)return!1;console.log("live watch");let n=null;return(0,R.childList)(t,(async()=>{if(dq(".room-feed-content")){const t=await(0,Y.select)(".room-feed-content .content");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"space",match:["https://space.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".s-space");if(!t)return!1;const n={},o=()=>{n.listElement&&n.observer&&(console.log("space feeds stop"),n.observer?.then((e=>e.disconnect())),delete n.observer,delete n.listElement,e.cleanUpCards())},i=()=>{if(n.observer)return n.observer;const t=(0,Y.select)(".bili-dyn-list__items");return n.observer=(async()=>{const r=await t;r!==await n.listElement&&(n.listElement&&o(),n.listElement=t,i()),console.log("space feeds start");const[a]=e.updateCards(r);return a})(),n.observer};return(0,R.childListSubtree)(t,(async()=>{dq(".bili-dyn-list__items")?i():o()})),!0}},{name:"topic",match:["https://t.bilibili.com/topic"],watchCardsList:async e=>{const t=await(0,Y.select)(".page-container");if(!t)return!1;let n=null;return(0,R.childList)(t,(async()=>{if(dq(".page-container .feed")){const t=await(0,Y.select)(".feed .feed-topic");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"opus-detail",match:["https://www.bilibili.com/opus/"],watchCardsList:async e=>{const t=await(0,Y.select)(".opus-detail");return!!t&&(e.updateCards(t),!0)}},{name:"default",match:["https://t.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".feed-card .content, .detail-content .detail-card, #app > .content > .card, .bili-dyn-list__items");if(!t)return!1;if(t.classList.contains("bili-dyn-list__items")){const n=t.parentElement.parentElement;let o;(0,R.childList)(n,(()=>{const t=dq(n,".bili-dyn-list__items");t&&(o?.disconnect(),e.cards=[],[o]=e.updateCards(t))}))}else e.updateCards(t);return!0}})}));const Pe=[],Oe=e=>t=>{const n=Boolean(t),o=t&&t.parentNode,i=t instanceof HTMLElement&&t.matches(e);return n&&o&&i};let Ve=function(e){return e.AddCard="addCard",e.RemoveCard="removeCard",e}({});class Te extends EventTarget{constructor(){super(...arguments),Me(this,"watching",!1),Me(this,"cards",[]),Me(this,"managerType",void 0)}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchCardEvent(e,t){const n=new CustomEvent(e,{detail:t});this.dispatchEvent(n),Pe.forEach((n=>n[e===Ve.AddCard?"added":"removed"](t)))}async startWatching(){if(this.watching)return!0;this.watching=!0;const[e]=(0,Ee.registerAndGetData)(Se,[]),t=e.find((e=>e.match.some((e=>(0,te.matchUrlPattern)(e)))));return t?t.watchCardsList(this):(console.warn("[FeedsCardsManager] No adaptor found",e),!1)}cleanUpCards(){this.cards=this.cards.filter((e=>e.presented))}}function Le(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const je=e=>e.querySelector(".repost")?Be.repost:e.querySelector(".imagesbox")?Be.textWithImages:e.querySelector(".video-container")?Be.video:e.querySelector(".bangumi-container")?Be.bangumi:e.querySelector(".article-container")?Be.column:e.querySelector(".music-container")?Be.audio:e.querySelector(".h5share-container")?Be.share:e.querySelector(".vc-ctnr")?Be.miniVideo:e.querySelector(".live-container")?Be.liveRecord:Be.text,Re=async e=>{const t=async t=>{const n=await(0,Y.sq)((()=>e.querySelector(t)),(t=>null!==t||null===e.parentNode),{queryInterval:100});if(null===e.parentNode)return"";if(null===n)return console.warn(e,t,e.parentNode),"";return n.innerText.trim()},n=e=>{if(void 0===e.card.origin)return{originalText:"",originalDescription:"",originalTitle:""};const t=JSON.parse(e.card.origin);return{originalText:e.originCardData.pureText,originalDescription:lodash.get(t,"item.description",lodash.get(t,"desc","")),originalTitle:t.title}},o=async e=>{const n=parseInt(await t(e));return isNaN(n)?0:n},i={id:e.getAttribute("data-did"),username:await t(".main-content .user-name"),text:"",reposts:await o(".button-bar .single-button:nth-child(1) .text-offset"),comments:await o(".button-bar .single-button:nth-child(2) .text-offset"),likes:await o(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:je(e),get presented(){return null!==e.parentNode},async getText(){return(async t=>{if(t===Be.bangumi)return"";const o=await(0,Y.sq)((()=>e),(t=>Boolean((0,te.getVue2Data)(t)||!e.parentNode)),{queryInterval:100});if(null===e.parentNode)return"";if(null===o)return console.warn(o,e,(0,te.getVue2Data)(o),e.parentNode),"";const i=(0,te.getVue2Data)(o);if(t===Be.repost){const e=i.card.item.content,t=n(i);return[e,...Object.values(t).filter((e=>""!==e))].filter((e=>Boolean(e))).join("\n")}return[i.originCardData.pureText,i.originCardData.title].filter((e=>Boolean(e))).join("\n")})(this.type)}};if(i.text=await i.getText(),e.setAttribute("data-type",i.type.id.toString()),De(i)){const t=i.username,o=(0,te.getVue2Data)(i.element),r=lodash.get(o,"card.origin_user.info.uname","");t===r&&e.setAttribute("data-self-repost","true"),i.repostUsername=r,i.repostText=n(o).originalText}return i};class Ne extends Te{constructor(){super(...arguments),Le(this,"managerType","v1")}async addCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card"))if(null!==e.querySelector(".skeleton")){const[t]=(0,R.childList)(e,(()=>{null===e.querySelector(".skeleton")&&(t.disconnect(),this.addCard(e))}))}else{if(null===e.parentNode)return;const t=await Re(e);if(!t.presented)return;if(this.cards.find((e=>e.id===t.id)))return;this.cards.push(t),this.cards.sort(((e,t)=>e.id===t.id?0:e.id>t.id?-1:1)),this.dispatchCardEvent(Ve.AddCard,t)}}async removeCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card")){const t=e.getAttribute("data-did"),n=this.cards.findIndex((e=>e.id===t));if(-1===n)return;const o=this.cards[n];this.cards.splice(n,1),this.dispatchCardEvent(Ve.RemoveCard,o)}}updateCards(e){const t=".card[data-did]",n=e=>{if(e instanceof HTMLElement){if(e.matches(t))return e;const n=e.querySelector(t);if(n)return n}};return[...e.querySelectorAll(t)].forEach((e=>this.addCard(e))),(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))}))}))}}function qe(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ze={DynamicTypeForward:Be.repost,DynamicTypeAv:Be.video,DynamicTypeDraw:Be.textWithImages,DynamicTypeWord:Be.text,DynamicTypePgc:Be.bangumi,DynamicTypeArticle:Be.column,DynamicTypeMusic:Be.audio,DynamicTypeLiveRcmd:Be.liveRecord},Ue=function(){for(var e=arguments.length,t=new Array(e),n=0;nBoolean(e))).join("\n").trim()},He=e=>Ze[(0,te.pascalCase)(e)]??Ze.DynamicTypeWord,We=(e,t)=>{if(Object.hasOwn(e,"paragraphs")){return e.paragraphs.find((e=>1===e.para_type)).text.nodes.map((e=>"TEXT_NODE_TYPE_WORD"===e.type?lodash.get(e,"word.words"):"TEXT_NODE_TYPE_RICH"===e.type?lodash.get(e,"rich.orig_text"):"")).join("")}const{desc:n,major:o}=e,i=o?.opus?lodash.get(o.opus,"summary.text"):n?.text??"",r=(()=>{switch(t){default:return"";case Be.bangumi:case Be.column:case Be.video:{const e=o.archive??o.pgc??o.article;if(e){const{title:t,desc:n}=e;return Ue(t,n)}if(o.opus){const{title:e,summary:t}=o.opus;return Ue(e,t.text)}return""}}})();return Ue(i,r)},Ge=Oe(".bili-dyn-list__item, .bili-dyn-item, .bili-opus-view");class Qe extends Te{constructor(){super(...arguments),qe(this,"managerType","v2")}async addCard(e){if(!Ge(e))return;const t=await(async e=>{const t=(0,te.getVue2Data)(e),n=e=>Array.isArray(e)?Object.fromEntries(e.map((e=>{const[t]=Object.keys(e).filter((e=>"module_type"!==e));return"module_content"===t?["module_dynamic",e[t]]:[t,e[t]]}))):e,{modules:o,id_str:i,type:r}=t.data,a=n(o),{name:c}=a.module_author,{like:s,forward:l,comment:d}=a.module_stat,m=He(r);e.dataset.type=m.id.toString();const f={id:i,username:c,likes:s.count,reposts:l.count,comments:d.count,text:"",type:m,element:e,get presented(){return document.body.contains(e)},getText:async()=>We(a.module_dynamic,m)};if(De(f)){const o=f.username,{module_author:{name:i},module_dynamic:r}=n(t.data.orig.modules),c=He(t.data.orig.type);f.repostUsername=i,f.repostText=We(r,c),i===o&&e.setAttribute("data-self-repost","true"),f.getText=async()=>Ue(We(a.module_dynamic,m),We(r,m))}return f.text=await f.getText(),f.element.setAttribute("data-did",f.id),await(0,Y.selectAll)((()=>e.querySelectorAll(".bili-dyn-item *")),{queryInterval:50}),f})(e);t.presented&&(this.cards.push(t),this.cards.sort((0,me.descendingStringSort)((e=>e.id))),this.dispatchCardEvent(Ve.AddCard,t))}async removeCard(e){if(!Ge(e))return;const t=(0,te.getVue2Data)(e);if(!t)return;const n=t.data?.id_str??"0",o=this.cards.findIndex((e=>e.id===n));if(-1===o)return;const[i]=this.cards.splice(o,1);this.dispatchCardEvent(Ve.RemoveCard,i)}updateCards(e){const t=".bili-dyn-list__item, :not(.bili-dyn-list__item) > .bili-dyn-item, .bili-opus-view";dqa(e,t).forEach((e=>this.addCard(e)));const n=e=>Ge(e)?e.matches(t)?e:e.querySelector(t):null;return(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))})),this.cleanUpCards()}))}}const Ye=()=>!!(parseInt((0,te.getCookieValue)("hit-dyn-v2"))>0)&&["t.bilibili.com","space.bilibili.com",/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/].some((e=>(0,te.matchUrlPattern)(e))),Xe=Ye()?new Qe:new Ne,Ke=async e=>{if(fe.feedsUrls.every((e=>!(0,te.matchUrlPattern)(e))))return null;if(!await Xe.startWatching())return console.error("feedsCardsManager.startWatching() failed"),null;const{added:t}=e;return t&&Xe.cards.forEach((e=>t(e))),Pe.push({added:none,removed:none,...e}),Xe},Je=e=>{const t=lodash.groupBy(e,(e=>e.aid)),n=e=>({id:e.upID,name:e.upName,faceUrl:e.upFaceUrl});return Object.values(t).map((e=>{if(1===e.length)return e[0];const[t,...o]=e;return t.cooperation=[n(t),...o.map(n)],console.log([...t.cooperation]),t})).sort((0,me.descendingStringSort)((e=>e.id)))},_e=e=>1===lodash.get(e,"extra.is_reserve_recall",0),$e="feeds.contentFilters";(0,Ee.registerData)($e,[]);const et=e=>{const[t]=(0,Ee.getData)($e);return t.reduce(((e,t)=>t.filter(e)),e)},tt=e=>function(){return e(...arguments).then((e=>et(e)))},nt=(e,t)=>{const n=new URLSearchParams;return"string"==typeof e?n.set("type",e):e.apiType?n.set("type",e.apiType):(console.warn(`unknown apiType for ${e.name}`),n.set("type","all")),t&&n.set("offset",t.toString()),`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?${n.toString()}`},ot=async(e,t)=>(0,B.getJsonWithCredentials)(nt(e,t)),it=tt((async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"video",t=arguments.length>1?arguments[1]:void 0;if(!(0,te.getUID)())return[];const n=await(0,B.getJsonWithCredentials)(nt("video"===e?Be.video:Be.bangumi,t));if(0!==n.code)throw new Error(n.message);const o=n.data.items;return"video"===e?Je(o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.archive"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_dynamic.desc.text",""),i=lodash.get(e,"modules.module_stat"),r=lodash.get(e,"modules.module_dynamic.desc.rich_text_nodes",[]).filter((e=>"RICH_TEXT_NODE_TYPE_TOPIC"===e.type)).map((e=>({id:e.text,name:e.text,url:e.jump_url})));return{id:e.id_str,aid:parseInt(t.aid),bvid:t.bvid,title:t.title,upFaceUrl:n.face,upName:n.name,upID:n.mid,coverUrl:t.cover,description:t.desc,timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),topics:r,dynamic:o,like:(0,oe.formatCount)(i.like.count),duration:(0,oe.parseDuration)(t.duration_text),durationText:(0,oe.formatDuration)((0,oe.parseDuration)(t.duration_text)),playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:ke.includes(t.aid)}}))):"bangumi"===e?o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.pgc"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_stat");return{id:e.id_str,epID:t.epid,title:t.title.replace(new RegExp(`^${n.name}:`),""),upName:n.name,upFaceUrl:n.face,coverUrl:t.cover,description:"",timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),like:(0,oe.formatCount)(o.like.count),durationText:"",playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:!1}})):[]})),rt=(e,t)=>{const n=dq(e.element,".more-panel, .bili-dyn-more__menu, .opus-more__menu"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return void console.warn("more panel not found",e.element);const a=!n.classList.contains("more-panel"),c=n.classList.contains("opus-more__menu"),s=document.createElement(a?"div":"p");if(c){s.classList.add("opus-more__menu__item",o);const e=n.children[0];e&&s.setAttribute("style",e.getAttribute("style")),s.dataset.type="more",s.dataset.stype=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else if(a){s.classList.add("bili-dyn-more__menu__item",o);const e=n.children[0];e?s.setAttribute("style",e.getAttribute("style")):(s.style.height="25px",s.style.padding="2px 0",s.style.textAlign="center"),s.dataset.module="more",s.dataset.type=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else s.classList.add("child-button","c-pointer",o);s.textContent=i;[...new Set([...n.children].map((e=>e.getAttributeNames().filter((e=>e.startsWith("data-v-"))))).flat())].forEach((e=>s.setAttribute(e,""))),s.addEventListener("click",(t=>{r(t),e.element.click()})),n.appendChild(s)};var at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"bangumi-card",class:{new:e.isNew},attrs:{target:"_blank",href:e.data.url}},[t("div",{staticClass:"ep-cover-container"},[t("DpiImage",{staticClass:"ep-cover",attrs:{size:{width:100},src:e.data.epCoverUrl}})],1),e._v(" "),t("h1",{staticClass:"ep-title",attrs:{title:e.data.epTitle}},[e._v(e._s(e.data.epTitle))]),e._v(" "),t("div",{staticClass:"up",attrs:{title:e.data.title}},[t("DpiImage",{staticClass:"cover",attrs:{size:24,src:e.data.coverUrl}}),e._v(" "),t("div",{staticClass:"title"},[e._v(e._s(e.data.title))])],1)])};at._withStripped=!0;const ct=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var st=n(8332),lt=n.n(st),dt=n(8840),mt=n.n(dt),ft={insert:"head",singleton:!1};lt()(mt(),ft);mt().locals;var ut=n(4893);const pt=(0,ut.Z)(ct,at,[],!1,null,"b2f4653c",null).exports;var bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"be-up-info",class:{fallback:!e.upFaceUrl},attrs:{href:e.actualHref,title:e.upName,target:"_blank"}},[e.upFaceUrl?t("DpiImage",{staticClass:"be-up-info-cover",attrs:{size:24,src:e.upFaceUrl}}):t("div",{staticClass:"be-up-info-cover-fallback"},[e._t("fallback-icon",(function(){return[t("VIcon",{attrs:{icon:"up-outline",size:18}})]}))],2),e._v(" "),t("div",{staticClass:"be-up-info-name"},[e._v("\n "+e._s(e.upName)+"\n ")])],1)};bt._withStripped=!0;const ht=Vue.extend({components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{href:{type:String,default:""},upId:{type:[String,Number],default:""},upFaceUrl:{type:String,default:""},upName:{type:String,required:!0}},computed:{actualHref(){return this.href?this.href:`https://space.bilibili.com/${this.upId}`}}});var gt=n(2835),Ft=n.n(gt),vt={insert:"head",singleton:!1};lt()(Ft(),vt);Ft().locals;const wt=(0,ut.Z)(ht,bt,[],!1,null,null,null).exports;var yt=function(){var e=this,t=e._self._c;return t("a",{staticClass:"video-card",class:{vertical:"vertical"===e.orientation,"no-stats":!e.showStats},attrs:{target:"_blank",href:e.epID?"https://www.bilibili.com/bangumi/play/ep"+e.epID:"https://www.bilibili.com/video/"+e.bvid}},[t("div",{staticClass:"cover-container"},[t("DpiImage",{staticClass:"cover",attrs:{src:e.coverUrl,size:{height:120,width:196}}}),e._v(" "),e.isNew?t("div",{staticClass:"new"},[e._v("NEW")]):e._e(),e._v(" "),e.pubTime&&e.pubTimeText?[t("div",{staticClass:"publish-time-summary"},[e._v("\n "+e._s(e.pubTimeText)+"\n ")]),e._v(" "),t("div",{staticClass:"publish-time-detail"},[e._v("\n "+e._s(e.pubTime)+"\n ")])]:e._e(),e._v(" "),e.durationText?t("div",{staticClass:"duration"},[e._v(e._s(e.durationText))]):e._e(),e._v(" "),e.durationText&&null!==e.watchlater&&void 0!==e.watchlater?t("div",{staticClass:"watchlater",on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.toggleWatchlater(e.aid)}}},[t("VIcon",{attrs:{size:15,icon:e.watchlater?"mdi-check-circle":"mdi-clock-outline"}}),e._v("\n "+e._s(e.watchlater?"已添加":"稍后再看")+"\n ")],1):e._e()],2),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.title}},[e._v(e._s(e.title))]),e._v(" "),e.topics&&e.topics.length?t("div",{staticClass:"topics"},e._l(e.topics.slice(0,3),(function(n){return t("a",{key:n.id,staticClass:"topic",attrs:{title:n.name,target:"_blank",href:n.url||"https://t.bilibili.com/topic/name/"+n.name+"/feed"}},[t("VIcon",{attrs:{icon:"mdi-tag-outline",size:14}}),e._v(" "),t("div",{staticClass:"topic-name"},[e._v("\n "+e._s(n.name)+"\n ")])],1)})),0):t("p",{staticClass:"description",attrs:{title:e.description}},[e._v(e._s(e.description))]),e._v(" "),0===e.cooperation.length?t("a",{staticClass:"up",class:{"no-face":!e.upFaceUrl},attrs:{target:"_blank",href:e.upID?"https://space.bilibili.com/"+e.upID:null}},[e.upFaceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.upFaceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}}),e._v(" "),t("div",{staticClass:"name",attrs:{title:e.upName}},[e._v(e._s(e.upName))])],1):e._e(),e._v(" "),0!==e.cooperation.length?t("div",{staticClass:"cooperation"},[t("div",{staticClass:"cooperation-ups"},e._l(e.reversedCooperation,(function(e){return t("a",{key:e.id,staticClass:"cooperation-up",class:{"no-face":!e.faceUrl},attrs:{target:"_blank",title:e.name,href:e.id?"https://space.bilibili.com/"+e.id:null}},[e.faceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.faceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}})],1)})),0),e._v(" "),t("div",{staticClass:"cooperation-note"},[e._v("联合投稿")])]):e._e(),e._v(" "),e.showStats?t("div",{staticClass:"stats"},[e.vertical?[e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e(),e._v(" "),e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e()]:[e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e(),e._v(" "),e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e()]],2):e._e()])};yt._withStripped=!0;const xt={components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{data:{type:Object,required:!0},orientation:{type:String,default:"horizontal"},showStats:{type:Boolean,default:!0},isNew:{type:Boolean,default:!1}},data(){return{watchlaterList:ke,upFaceUrl:"",danmakuCount:"",like:"",coins:"",favorites:"",dynamic:"",topics:[],upID:0,epID:0,cooperation:[],pubTime:0,pubTimeText:"",...lodash.omit(this.data,"watchlater"),watchlaterInit:this.data.watchlater,statsIconSize:14}},computed:{vertical(){return"vertical"===this.orientation},watchlater(){return(0,te.getUID)()&&null!==this.watchlaterInit?this.watchlaterList.includes(this.aid):null},reversedCooperation(){return[...this.cooperation].reverse().slice(0,3)}},methods:{toggleWatchlater:Ae}};var kt=n(450),Ct=n.n(kt),At={insert:"head",singleton:!1};lt()(Ct(),At);Ct().locals;const Et=(0,ut.Z)(xt,yt,[],!1,null,"57e48aec",null).exports;var Bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"column-card",attrs:{target:"_blank",href:`https://www.bilibili.com/read/cv${e.data.cvID}`}},[t("div",{staticClass:"covers"},e._l(e.data.covers,(function(e){return t("DpiImage",{key:e,staticClass:"cover",attrs:{size:{height:120},src:e}})})),1),e._v(" "),t("a",{staticClass:"up",attrs:{target:"_blank",href:`https://space.bilibili.com/${e.data.upID}`}},[t("DpiImage",{staticClass:"face",attrs:{size:24,src:e.data.upFaceUrl}}),e._v(" "),t("div",{staticClass:"name"},[e._v(e._s(e.data.upName))])],1),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.data.title}},[e._v(e._s(e.data.title))]),e._v(" "),t("div",{staticClass:"description",attrs:{title:e.data.description}},[e._v(e._s(e.data.description))])])};Bt._withStripped=!0;const Dt=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var It=n(5579),zt=n.n(It),St={insert:"head",singleton:!1};lt()(zt(),St);zt().locals;const Mt=(0,ut.Z)(Dt,Bt,[],!1,null,"335afa63",null).exports;let Pt=!1,Ot=0;const Vt="disable-profile-popup",Tt=async()=>{if("https://t.bilibili.com/"!==document.URL.replace(window.location.search,""))return;const e=await(0,Y.select)(".live-up-list, .bili-dyn-live-users__body");null!==e&&(Ot++,Pt||(e.addEventListener("mouseenter",(e=>{Ot>0&&e.stopImmediatePropagation()}),{capture:!0}),Pt=!0))},Lt=()=>{Ot--},jt=3e5,Rt=()=>(0,te.getCookieValue)(`bp_t_offset_${(0,te.getUID)()}`),Nt=(e,t)=>e===t?0:e.length>t.length?1:t.length>e.length?-1:e>t==!0?1:-1,qt=e=>{if(null==e)return;const t=Rt();Nt(e,t)<0||(document.cookie=`bp_t_offset_${(0,te.getUID)()}=${e};path=/;domain=.bilibili.com;max-age=2592000`)},Zt=e=>Nt(e,Rt())>0,Ut=e=>{const[t]=[...e.map((e=>e.id))].sort(Nt).reverse();qt(t)},Ht=async e=>{const t=`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all/update?type=${e}&update_baseline=${Rt()}`,n=await(0,B.getJsonWithCredentials)(t);return 0!==n.code?0:lodash.get(n,"data.update_num",0)},Wt=async()=>{const e=await(0,B.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/dynamic/entrance");return 0!==e.code?0:lodash.get(e,"data.update_info.item.count",0)},Gt=e=>{e.startsWith("#")&&(e=e.substring(1));return{red:e.substring(0,2),green:e.substring(2,4),blue:e.substring(4,6)}},Qt=e=>{const{red:t,green:n,blue:o}=Gt(e);return`\\c&H${`${o}${n}${t}`.toUpperCase()}&`},Yt=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const{red:n,green:o,blue:i}=Gt(e),r=Math.round(255*(1-t)).toString(16).padStart(2,"0");return`&H${r}${i}${o}${n}`.toUpperCase()},Xt=e=>{let t=0,n=0;for(;e>=60;)e-=60,n++;for(;n>=60;)n-=60,t++;return`${t}:${String(n).padStart(2,"0")}:${(e=>{const[t,n="00"]=String(e).split(".");return`${t.padStart(2,"0")}.${n.substring(0,2).padEnd(2,"0")}`})(e)}`},Kt=(e,t)=>[Xt(e),Xt(e+t)],Jt=(e,t)=>[Xt(e),Xt(t)],_t=e=>{const t={"{":"{","}":"}","&":"&","<":"<",">":">",""":'"',"'":"'","\n":"\\N"};for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},$t={"&":"&","<":"<",">":">",""":'"',"'":"'"},en=Object.fromEntries(Object.entries($t).map((e=>e.reverse()))),tn=(e,t)=>{if(!e)return"";for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},nn=e=>tn(e,en),on=e=>tn(e,$t);var rn=n(6768);const an=e=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?async()=>{const t=rn.playerAgent,{query:{control:{settings:n,buttons:o}}}=t;ce(o.settings.selector,n.wrap.selector),t.toggleLight(e)}:te.none,cn=an(!0),sn=an(!1),ln=an(),dn=async e=>{await(0,te.playerReady)();const t=dq(".video-toolbar .ops .collect, .video-toolbar-v1 .toolbar-left .collect, .video-toolbar-left-item.video-fav");if(!t)return null;const{hasVideo:o}=await Promise.resolve().then(n.bind(n,3311));await o();const i=await e();return t.classList.contains("video-fav")?t.parentElement.insertAdjacentElement("afterend",i):t.insertAdjacentElement("afterend",i),i},mn=async e=>{await(0,Y.hasVideo)()&&(0,R.videoChange)((async()=>{const t=await rn.playerAgent.query.video.danmaku();t&&((e,t)=>{const n=[];(0,R.childListSubtree)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{if(e.nodeType===Node.TEXT_NODE){const o=e.parentElement,i=n.find((e=>e.element===o));if(!i)return;return i.text=e.textContent||"",i.reuse=!0,void(t.added&&t.added(i))}if(!(e instanceof HTMLElement))return;const o={element:i=e,reuse:!1,text:i.textContent||""};var i;n.push(o),t.added&&t.added(o)})),e.removedNodes.forEach((e=>{if(!(e instanceof HTMLElement))return;const o=n.findIndex((t=>t.element===e));if(-1!==o){const[e]=n.splice(o,1);t.removed&&t.removed(e)}}))}))}))})(t,e)}))};function fn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class un{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];fn(this,"aid",void 0),fn(this,"bvid",void 0),fn(this,"cid",void 0),fn(this,"createTime",void 0),fn(this,"pageCount",void 0),fn(this,"coverUrl",void 0),fn(this,"tagId",void 0),fn(this,"tagName",void 0),fn(this,"title",void 0),fn(this,"description",void 0),fn(this,"up",void 0),fn(this,"pages",void 0),t?this.bvid=e:this.aid=e}async fetchInfo(){let e;this.aid?e=`https://api.bilibili.com/x/web-interface/view?aid=${this.aid}`:this.bvid&&(e=`https://api.bilibili.com/x/web-interface/view?bvid=${this.bvid}`),this.cid&&(e=`${e}&cid=${this.cid}`);const t=await(0,B.getJsonWithCredentials)(e);if(0!==t.code)throw new Error(t.message);const{data:n}=t;return this.aid=n.aid,this.bvid=n.bvid,this.cid=n.cid,this.createTime=new Date(1e3*n.ctime),this.pageCount=n.videos,this.coverUrl=n.pic.replace("http:","https:"),this.tagId=n.tid,this.tagName=n.tname,this.title=n.title,this.description=n.desc,this.up={uid:n.owner.mid,name:n.owner.name,faceUrl:n.owner.face.replace("http:","https:")},this.pages=n.pages.map((e=>({cid:e.cid,title:e.part,pageNumber:e.page}))),this}get subtitles(){return console.warn("VideoInfo.subtitles is deprecated"),[]}}class pn{constructor(e){fn(this,"ep",void 0),fn(this,"videos",void 0),fn(this,"title",void 0),fn(this,"cover",void 0),fn(this,"squareCover",void 0),fn(this,"aid",void 0),fn(this,"cid",void 0),this.ep=e,this.videos=[]}async fetchInfo(){const e=await(0,B.getText)(`https://www.bilibili.com/bangumi/play/ep${this.ep}/`),t=JSON.parse(e.match(/window\.__INITIAL_STATE__=(.*);\(function\(\){/)[1]);return this.title=t.mediaInfo.title,this.cover=t.mediaInfo.cover,this.squareCover=t.mediaInfo.square_cover,this.aid=t.epInfo.aid,this.cid=t.epInfo.cid,this.videos=t.epList.map((async e=>({title:e.index_title,aid:e.aid,cid:e.cid,info:await new un(e.aid).fetchInfo()}))),this}}const bn=[{name:"720P",displayName:"高清 720P",value:64},{name:"1080P",displayName:"高清 1080P",value:80}],hn=[{name:"8K",displayName:"超高清 8K",value:127},{name:"DolbyVision",displayName:"杜比视界",value:126},{name:"HDR",displayName:"真彩 HDR",value:125},{name:"4K",displayName:"超清 4K",value:120},{name:"1080P60",displayName:"高清 1080P60",value:116},{name:"1080P+",displayName:"高清 1080P+",value:112},{name:"720P60",displayName:"高清 720P60",value:74}],gn=[...hn,...bn,{name:"480P",displayName:"清晰 480P",value:32},{name:"360P",displayName:"流畅 360P",value:16}].sort((0,me.descendingSort)((e=>e.value))),Fn=async e=>{const{open:t,close:n}=e;if(!(0,Y.hasVideo)())return;const o=await(0,Y.select)(".bilibili-player");if(!o)return;const[i]=(0,R.childList)(o,(()=>{const e=dq(".bilibili-player-context-menu-origin");if(e){i.disconnect();const o=dq(e,"ul"),r={containerElement:e,listElement:o,get itemElements(){return dqa(e,".context-menu-function")},get isOpen(){return e.classList.contains("active")}};(0,R.childList)(o,(()=>{r.isOpen?t?.(r):n?.(r)}))}}))},vn=async(e,t)=>Fn({open:t=>{if(t.listElement.contains(e))return;const n=document.createElement("li");n.classList.add("context-line","context-menu-function"),n.setAttribute("data-append","1");const o=document.createElement("a");o.classList.add("context-menu-a","js-action"),o.href="javascript:void(0);",o.appendChild(e),n.addEventListener("mouseover",(()=>n.classList.add("hover"))),n.addEventListener("mouseout",(()=>n.classList.remove("hover"))),n.appendChild(o),t.listElement.appendChild(n)},close:e=>t?.(e)});let wn=null;const yn=[],xn=lodash.once((()=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?new Promise((e=>{(0,R.videoChange)((async()=>{const{playerAgent:t}=await Promise.resolve().then(n.bind(n,6768)),o=await t.query.control.buttons.time(),i=await Promise.resolve().then(n.bind(n,8979)).then((e=>e.default));if(null===o||null!==o.parentElement?.querySelector(".be-video-control-bar-extend"))return;const r=new i({propsData:{items:yn}}).$mount();o.insertAdjacentElement("afterend",r.$el),e(r)}))})):Promise.resolve(null))),kn=async e=>{wn||(wn=xn());await wn&&yn.push(e)},Cn=async e=>{const t=new un(e);try{await t.fetchInfo()}catch(e){throw(0,de.logError)(e),e}return t.coverUrl.replace("http:","https:")},An=async e=>{const t=await Cn(e),n=await fetch(t);return await n.blob()},En=async e=>{const t=await(0,Y.select)(".live-player-mounter"),n=(0,de.useScopedConsole)("withControlBar");if(!t)return void n.warn("livePlayer not found");(0,te.raiseEvent)(t,"mousemove");const o=dq(t,".web-player-controller-wrap .control-area");o?(await e(o),(0,te.raiseEvent)(t,"mouseleave")):n.warn("controlBar not found")},Bn=async e=>{if(!fe.liveUrls.some((e=>(0,te.matchUrlPattern)(e))))return;const t=await(0,Y.select)(".bilibili-live-player-video-controller, .web-player-controller-wrap:not(.web-player-controller-bg)");if(!t)return;const{init:n,callback:o}=e;n?.(t),(0,R.childList)(t,(async()=>{const e=dq(t,".control-area");e&&o?.(e)}))};function Dn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const In=0,zn=2,Sn={heartBeat:2,heartBeatResponse:3,message:5,enterRoom:7,enterRoomResponse:8};class Mn{constructor(){Dn(this,"textEncoder",new TextEncoder),Dn(this,"textDecoder",new TextDecoder)}static readInt(e,t,n){let o=0;for(let i=n-1;i>=0;i--)o+=256**(n-i-1)*e[t+i];return o}static writeInt(e,t,n,o){let i=0;for(;i{const o={packetLength:Mn.readInt(e,0,4),headerLength:Mn.readInt(e,4,2),protocolVersion:Mn.readInt(e,6,2),operation:Mn.readInt(e,8,4),sequenceID:Mn.readInt(e,12,4)},i=[o];if(o.packetLengthe.messages[0])))}else o.protocolVersion===In&&(o.messages=[JSON.parse(this.textDecoder.decode(i))])}else o.operation===Sn.heartBeatResponse&&(o.heartBeatResponse={count:Mn.readInt(e,16,4)});return i};return new Promise(((n,o)=>{const i=new FileReader;i.onload=async e=>{if(!e.target)return void o(e);const i=new Uint8Array(e.target.result);n(await t(i))},i.readAsArrayBuffer(e)}))}}class Pn{constructor(){Dn(this,"startTime",0)}getLiveTime(){return new Promise((e=>{if(this.startTime)return void e(this.startTime);const t=(0,te.dq)(".bilibili-live-player-video-controller-duration-btn span"),[n]=(0,R.childList)(t,(t=>{if(t.length>0&&t.some((e=>e.addedNodes.length>0&&[...e.addedNodes].every((e=>e.nodeType===Node.TEXT_NODE))))){n.disconnect();const o=t[0].addedNodes[0].textContent,[i,r,a=0]=o.split(":").reverse().map(lodash.unary(parseInt)),c=Number(new Date);this.startTime=c-1e3*a*3600-60*r*1e3-1e3*i,e(this.startTime)}}))}))}}class On extends EventTarget{constructor(e){super(),this.roomID=e,Dn(this,"heartBeatTimer",void 0),Dn(this,"webSocket",void 0),Dn(this,"retryInterval",200),Dn(this,"autoRetry",!0),Dn(this,"servers",["broadcastlv.chat.bilibili.com"]),Dn(this,"selectedServer",""),Dn(this,"liveTime",new Pn),Dn(this,"bufferHelper",new Mn),Dn(this,"stopRequested",!1),window.addEventListener("unload",(()=>this.stop()))}heartBeat(){this.webSocket.readyState===WebSocket.OPEN?this.webSocket.send(this.bufferHelper.encode("","heartBeat")):(this.stop(),this.restart())}restart(){if(this.dispatchEvent(new CustomEvent("restart")),!this.stopRequested&&this.autoRetry){console.log(`Live Socket: unexpected disconnect, retry in ${this.retryInterval}ms`);const e=this.servers.indexOf(this.selectedServer);ethis.start()),this.retryInterval)}}async start(){const e=await(0,B.getJson)(`https://api.live.bilibili.com/room/v1/Danmu/getConf?room_id=${this.roomID}&platform=pc&player=web`),t=lodash.get(e,"data.host_server_list",[]);this.servers=[...new Set([...this.servers,...t.map((e=>e.host))])],""===this.selectedServer&&([this.selectedServer]=this.servers,console.log("Initial server:",this.selectedServer)),this.webSocket&&[WebSocket.CONNECTING,WebSocket.OPEN].includes(this.webSocket.readyState)&&this.stop(),this.webSocket=new WebSocket(`wss://${this.selectedServer}/sub`),this.stopRequested=!1,this.dispatchEvent(new CustomEvent("start",{detail:this.webSocket})),this.webSocket.addEventListener("open",(()=>{const t={roomid:this.roomID,uid:parseInt((0,te.getUID)()),protover:2,platform:"web",clientVer:"1.10.1",type:"2",key:lodash.get(e,"data.token")};this.webSocket.send(this.bufferHelper.encode(JSON.stringify(t),"enterRoom")),this.dispatchEvent(new CustomEvent("open",{detail:t}))})),this.webSocket.addEventListener("message",(async e=>{const[t]=await this.bufferHelper.decode(e.data);switch(this.dispatchEvent(new CustomEvent("message",{detail:t})),t.operation){case Sn.enterRoomResponse:this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.heartBeatTimer=window.setInterval((()=>{this.heartBeat()}),3e4);break;case Sn.heartBeatResponse:if(!t.heartBeatResponse)break;this.dispatchEvent(new CustomEvent("heartBeatResponse",{detail:t.heartBeatResponse.count}));break;case Sn.message:{if(!t.messages)break;const e=await this.liveTime.getLiveTime();t.messages.forEach((t=>{if("DANMU_MSG"===t.cmd){const{info:n}=t,o={content:n[1],type:n[0][1],fontSize:n[0][2],color:n[0][3],sendTime:n[0][4],userHash:n[0][7],userID:n[2][0],userName:n[2][1],startTime:e,get time(){return this.sendTime-this.startTime}};this.dispatchEvent(new CustomEvent("danmaku",{detail:o}))}}));break}}})),this.webSocket.addEventListener("close",(e=>{this.stopRequested||(console.error("Live Socket: close",e),this.restart())})),this.webSocket.addEventListener("error",(e=>{console.error("Live Socket: error",e),this.restart()}))}stop(){this.stopRequested=!0,this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.webSocket&&this.webSocket.readyState===WebSocket.OPEN&&this.webSocket.close()}}function Vn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Tn extends EventTarget{constructor(e){super(),Vn(this,"element",void 0),Vn(this,"id",void 0),Vn(this,"userId",void 0),Vn(this,"userName",void 0),Vn(this,"content",void 0),Vn(this,"timeText",void 0),Vn(this,"time",void 0),Vn(this,"likes",void 0),this.element=e.element,this.id=e.id,this.userId=e.userId,this.userName=e.userName,this.content=e.content,this.timeText=e.timeText,this.time=e.time,this.likes=e.likes}}function Ln(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class jn extends Tn{constructor(e){super(e),Ln(this,"pictures",void 0),Ln(this,"replies",void 0),this.pictures=e.pictures??[],this.replies=e.replies}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchRepliesUpdate(e){return super.dispatchEvent((e=>new CustomEvent("repliesUpdate",{detail:e}))(e))}}function Rn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Nn{constructor(e){Rn(this,"element",void 0),Rn(this,"items",[]),Rn(this,"observer",void 0),Rn(this,"itemAddedCallbacks",[]),Rn(this,"itemRemovedCallbacks",[]),this.element=e}isCommentItem(e){return e instanceof HTMLElement&&e.matches(Nn.replyItemSelector)}beforeParse(e){return lodash.noop(e)}observeItems(){if(this.observer)return;performance.mark("observeItems start");const e=dqa(this.element,Nn.replyItemSelector);e.length>0&&(this.beforeParse(e),this.items=e.map((e=>this.parseCommentItem(e)))),this.items.forEach((e=>{this.itemAddedCallbacks.forEach((t=>t(e)))})),[this.observer]=(0,R.childListSubtree)(this.element,(e=>{const t=(0,te.getRandomId)();performance.mark(`observeItems subtree start ${t}`);const n=[],o=[];e.forEach((e=>{e.addedNodes.forEach((e=>{this.isCommentItem(e)&&n.push(e)})),e.removedNodes.forEach((e=>{this.isCommentItem(e)&&o.push(e)}))})),n.length>0&&this.beforeParse(n),n.forEach((e=>{const t=this.parseCommentItem(e);this.items.push(t),this.itemAddedCallbacks.forEach((e=>e(t)))})),o.forEach((e=>{const t=this.getCommentId(e),n=this.items.findIndex((e=>e.id===t));if(-1!==n){const[e]=this.items.splice(n,1);this.itemRemovedCallbacks.forEach((t=>t(e)))}})),performance.mark(`observeItems subtree end ${t}`),performance.measure(`observeItems subtree ${t}`,`observeItems subtree start ${t}`,`observeItems subtree end ${t}`)})),performance.mark("observeItems end"),performance.measure("observeItems","observeItems start","observeItems end")}forEachCommentItem(e){const{added:t,removed:n}=e;t&&(this.items.forEach((e=>t(e))),this.itemAddedCallbacks.push(t)),n&&this.itemRemovedCallbacks.push(n)}}Rn(Nn,"replyItemClasses",["list-item.reply-wrap","reply-item"]),Rn(Nn,"replyItemSelector",Nn.replyItemClasses.map((e=>`.${e}`)).join(","));class qn extends Nn{addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".opera-list ul");if(!n)throw new Error("Invalid operation list");const{className:o,text:i,action:r}=t;if(dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o),a.textContent=i,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=e.querySelector(".con .user .name");if(!t)throw new Error("Invalid comment item");const n=e=>{const t=e.querySelector(".reply-face"),n=e.querySelector(".reply-con .user .name");return new Tn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:n.textContent,content:e.querySelector(".text-con").textContent,timeText:e.querySelector(".info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".info .like span").textContent)})},o=new jn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:t.textContent,content:e.querySelector(".con .text").textContent,timeText:e.querySelector(".con .info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".con .like span").textContent),replies:[]});if(dq(e,".reply-box .view-more")){const t=dq(e,".reply-box");(0,R.childList)(t,(t=>{o.replies=dqa(e,".reply-box .reply-item").map(n),0!==t.length&&o.dispatchRepliesUpdate(o.replies)}))}else o.replies=dqa(e,".reply-box .reply-item").map(n);return o}getCommentId(e){const t=e.getAttribute("data-id");if(!t)throw new Error("Invalid comment item");return t}}function Zn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)} +function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u extends d{constructor(){super(),f(this,"type","bangumi"),f(this,"query",s({playerWrap:"#bilibili-player-wrap",bilibiliPlayer:"#bilibili-player",...m}))}seek(e){const t=super.seek(e);return null===t||setTimeout((()=>{const e=dq(".bpx-player-toast-row .bpx-player-toast-item .bpx-player-toast-text");e?.textContent?.startsWith("已为您定位至")&&(e.textContent="已为您定位至00:00")})),t}}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends d{constructor(){super(),p(this,"type","video"),p(this,"query",s({playerWrap:".player-wrap",bilibiliPlayer:"#bilibili-player",...m})),this.checkBwpVideo()}checkBwpVideo(){const e=this.query.video.element.selector,t=".bilibili-player-video bwp-video,.bpx-player-video-area bwp-video";this.query.video.element=(()=>{const n=async()=>await(0,r.isBwpVideo)()?(0,i.select)(t):(0,i.select)(e);return n.selector=e,n.sync=()=>dq(e),(0,r.isBwpVideo)().then((e=>{e&&(n.selector=t,n.sync=()=>dq(t))})),n})()}}const h=(0,o.matchCurrentPage)(o.bangumiUrls)?new u:new b},5267:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bilibiliApi:()=>k,getBlob:()=>c,getBlobWithCredentials:()=>s,getJson:()=>p,getJsonWithCredentials:()=>b,getPages:()=>x,getText:()=>d,getTextWithCredentials:()=>m,monkey:()=>w,postJson:()=>F,postJsonWithCredentials:()=>v,postText:()=>h,postTextWithCredentials:()=>g,responsiveGetPages:()=>y});var o=n(4732);const i=e=>{const t=new XMLHttpRequest,{isText:n=!0,body:o}=e(t);return new Promise(((e,i)=>{t.addEventListener("load",(()=>e(n?t.responseText:t.response))),t.addEventListener("error",(()=>i(t.status))),t.send(o)}))},r=e=>t=>(t.withCredentials=!0,e(t)),a=e=>t=>(t.responseType="blob",t.open("GET",e),{isText:!1}),c=e=>i(a(e)),s=e=>i(r(a(e))),l=e=>t=>(t.responseType="text",t.open("GET",e),{isText:!0}),d=e=>i(l(e)),m=e=>i(r(l(e))),f=e=>t=>(t.responseType="json",t.open("GET",e),{isText:!1}),u=e=>"string"==typeof e?JSON.parse(e):e,p=async e=>{const t=await i(f(e));return u(t)},b=async e=>{const t=await i(r(f(e)));return u(t)},h=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),g=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),F=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),v=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),w=e=>new Promise(((t,n)=>{const o={nocache:!0,...e,onload:e=>t(e.response),onerror:e=>{const t={...JSON.parse(JSON.stringify(e)),toString(){return JSON.stringify(this)}};n(t)}};"method"in o||(o.method="GET"),GM_xmlhttpRequest(o)})),y=e=>{let t;const n=new Promise((n=>{t=new Promise((t=>{(async()=>{const{api:o,getList:i,getTotal:r}=e;let a=1,c=1/0;const s=[];for(;s.length{const[,t]=y(e);return await t},k=async(e,t)=>{const n=await e;if(0!==n.code){const e=new Error(`${t}: code = ${n.code}, message = ${n.message||n.msg}`);throw(0,o.logError)(e),e}return n.data||n.result||{}}},7274:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CdnTypes:()=>i,cdnRoots:()=>a,defaultOwner:()=>r});var o=n(2046);let i=function(e){return e.jsDelivr="jsDelivr",e.AltCdn="AltCdn",e.GitHub="GitHub",e}({});const r="the1812",a={jsDelivr:(e,t)=>o.meta.compilationInfo.allCdns.jsDelivr.root(e,t),AltCdn:(e,t)=>o.meta.compilationInfo.altCdn.root(e,t),GitHub:(e,t)=>`https://raw.githubusercontent.com/${t||r}/Bilibili-Evolved/${e}/`}},4435:(e,t,n)=>{"use strict";n.r(t),n.d(t,{coreApis:()=>Do,externalApis:()=>Io});var o={};n.r(o),n.d(o,{enableHorizontalScroll:()=>O});var i={};n.r(i),n.d(i,{Reorder:()=>G,ReorderDecreaseClassName:()=>q,ReorderEnabledClassName:()=>U,ReorderIncreaseClassName:()=>Z,ReorderOrientations:()=>W,ReorderingClassName:()=>H});var r={};n.r(r),n.d(r,{getUserInfo:()=>$});var a={};n.r(a),n.d(a,{loadDanmakuSettingsPanel:()=>se,loadLazyPanel:()=>ae,loadLazyPlayerSettingsPanel:()=>ce,loadSubtitleSettingsPanel:()=>le});var c={};n.r(c),n.d(c,{styledComponentEntry:()=>ve,toggleStyle:()=>we});var s={};n.r(s),n.d(s,{getWatchlaterList:()=>Ce,toggleWatchlater:()=>Ae,watchlaterList:()=>ke});var l={};n.r(l),n.d(l,{FeedsCardsManager:()=>Te,FeedsCardsManagerEventType:()=>Ve,addMenuItem:()=>rt,applyContentFilter:()=>et,bangumiTypeList:()=>Ie,createNodeValidator:()=>Oe,feedsCardCallbacks:()=>Me,feedsCardTypes:()=>Be,feedsCardsManager:()=>Xe,forEachFeedsCard:()=>Ke,getFeeds:()=>ot,getFeedsUrl:()=>nt,getVideoFeeds:()=>it,getVueData:()=>te.getVue2Data,groupVideoFeeds:()=>Je,isPreOrderedVideo:()=>_e,isRepostType:()=>De,isV2Feeds:()=>Ye,navbarFeedsTypeList:()=>ze,withContentFilter:()=>tt});var d={};n.r(d),n.d(d,{DisableProfilePopupClass:()=>Vt,disableProfilePopup:()=>Tt,enableProfilePopup:()=>Lt});var m={};n.r(m),n.d(m,{compareID:()=>Nt,getLatestID:()=>Rt,getNotifyCount:()=>Wt,getNotifyCountByType:()=>Ht,isNewID:()=>Zt,setLatestID:()=>qt,updateInterval:()=>jt,updateLatestID:()=>Ut});var f={};n.r(f),n.d(f,{convertHexColorForDialogue:()=>Qt,convertHexColorForStyle:()=>Yt,convertTimeByDuration:()=>Kt,convertTimeByEndTime:()=>Jt,normalizeContent:()=>_t});var u={};n.r(u),n.d(u,{escapeContent:()=>nn,normalizeContent:()=>on});var p={};n.r(p),n.d(p,{lightOff:()=>sn,lightOn:()=>cn,toggleLight:()=>ln});var b={};n.r(b),n.d(b,{addVideoActionButton:()=>dn});var h={};n.r(h),n.d(h,{forEachVideoDanmaku:()=>mn});var g={};n.r(g),n.d(g,{BangumiInfo:()=>pn,VideoInfo:()=>un});var F={};n.r(F),n.d(F,{allQualities:()=>gn,loginRequiredQualities:()=>bn,vipRequiredQualities:()=>hn});var v={};n.r(v),n.d(v,{addMenuItem:()=>vn,forEachContextMenu:()=>Fn});var w={};n.r(w),n.d(w,{addControlBarButton:()=>kn});var y={};n.r(y),n.d(y,{getBlobByAid:()=>An,getVideoCoverUrlByAid:()=>Cn});var x={};n.r(x),n.d(x,{waitForControlBar:()=>Bn,withControlBar:()=>En});var k={};n.r(k),n.d(k,{LiveSocket:()=>On});var C={};n.r(C),n.d(C,{CommentArea:()=>Nn,CommentAreaV1:()=>qn,CommentAreaV2:()=>Gn,CommentItem:()=>jn,CommentReplyItem:()=>Tn,addMenuItem:()=>$n,commentAreaManager:()=>Kn,forEachCommentArea:()=>Jn,forEachCommentItem:()=>_n,getCommentArea:()=>Qn});var A={};n.r(A),n.d(A,{addCategoryIcons:()=>lo,categories:()=>ao,categoryCodes:()=>co,categoryLinks:()=>so,rawData:()=>to});var E={};n.r(E),n.d(E,{createSwitchOptions:()=>Fo,defineSwitchItemsMetadata:()=>vo,defineSwitchMetadata:()=>wo,newSwitchComponentWrapper:()=>xo,wrapSwitchOptions:()=>yo});var B=n(5267),D=n(7274),I=n(3720),z=n(5167),S=n(1841),P=n(7120),M=n(9761);const O=e=>{const t=t=>{t.deltaY&&!t.deltaX&&(t.preventDefault(),requestAnimationFrame((()=>{e.scrollBy(t.deltaY,0)})))};return e.addEventListener("wheel",t),e.style.scrollSnapType="none",()=>{e.removeEventListener("wheel",t),e.style.scrollSnapType=""}};var V=n(1197),T=n(9770),L=n(9047),j=n(2046),R=n(2545);function N(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const q="reorder-decrease",Z="reorder-increase",U="reorder-enabled",H="reordering",W={horizontal:{name:"horizontal",getMoveTransform:e=>`translateX(${e}px)`,setOtherTransform:lodash.throttle(((e,t,n)=>{if(!t.classList.contains(H))return;const o=e.find((e=>e.element===t));if(!o)return;const i=o.rect,r=e.filter((e=>e.rect.leftt.rect.left-e.rect.left)),a=e.filter((e=>e.rect.left>i.left)).sort(((e,t)=>e.rect.left-t.rect.left));if(n>=0){const[e]=a;r.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),a.forEach((t=>{i.left+n+i.width>=t.rect.left+t.rect.width/2?(t.element.classList.add(q),t.element.style.transform=`translateX(-${e.rect.left-i.left}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=r;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),r.forEach((t=>{i.left+n<=t.rect.left+t.rect.width/2?(t.element.classList.add(Z),t.element.style.transform=`translateX(${i.left+i.width-e.rect.left-e.rect.width}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)},vertical:{name:"vertical",getMoveTransform:(e,t)=>`translateY(${t}px)`,setOtherTransform:lodash.throttle(((e,t,n,o)=>{if(!t.classList.contains(H))return;const i=e.find((e=>e.element===t));if(!i)return;const r=i.rect,a=e.filter((e=>e.rect.topt.rect.top-e.rect.top)),c=e.filter((e=>e.rect.top>r.top)).sort(((e,t)=>e.rect.top-t.rect.top));if(o>=0){const[e]=c;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),c.forEach((t=>{r.top+o+r.height>=t.rect.top+t.rect.height/2?(t.element.classList.add(q),t.element.style.transform=`translateY(-${e.rect.top-r.top}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=a;c.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),a.forEach((t=>{r.top+o<=t.rect.top+t.rect.height/2?(t.element.classList.add(Z),t.element.style.transform=`translateY(${r.top+r.height-e.rect.top-e.rect.height}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)}};class G extends EventTarget{constructor(e){super(),this.container=e,N(this,"orientation",W.horizontal),N(this,"enabled",!1),N(this,"children",void 0),N(this,"snapshots",new Map),N(this,"attachedEvents",[]),this.children=[...this.container.children],this.children.every((e=>""===e.style.order))&&this.children.forEach(((e,t)=>{e.style.order=(t+1).toString()}))}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.addEventListener(e,t,n)}getOrderMap(){return new Map(this.children.map((e=>[e,parseInt(e.style.order)])))}toggle(){this.enabled?this.disable():this.enable()}generateSnapshots(){this.children.forEach((e=>{this.snapshots.set(e,{element:e,rect:e.getBoundingClientRect()})}))}enable(){this.children.forEach((e=>{let t=0,n=0,o=!1;e.classList.add(U);(()=>{const i=(i,r)=>{e.classList.add(H),e.style.transition="none",e.style.userSelect="none",this.generateSnapshots(),this.children.filter((t=>t!==e)).forEach((e=>{e.style.transition="transform .2s ease-out"})),t=i,n=r,o=!0},r=e=>{i(e.screenX,e.screenY)};e.addEventListener("mousedown",r),this.attachedEvents.push((()=>e.removeEventListener("mousedown",r)));const a=e=>{if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY)};e.addEventListener("touchstart",a),this.attachedEvents.push((()=>e.removeEventListener("touchstart",a)))})(),(()=>{const i=(o,i)=>{const r=o-t,a=i-n;e.style.transform=this.orientation.getMoveTransform(r,a),this.orientation.setOtherTransform([...this.snapshots.values()],e,r,a)},r=e=>{o&&(i(e.screenX,e.screenY),e.cancelable&&e.preventDefault())};document.addEventListener("mousemove",r),this.attachedEvents.push((()=>document.removeEventListener("mousemove",r)));const a=e=>{if(!o)return;if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY),e.cancelable&&e.preventDefault()};e.addEventListener("touchmove",a,{passive:!1}),this.attachedEvents.push((()=>e.removeEventListener("touchmove",a)))})(),(()=>{const t=()=>{if(!o)return;e.classList.remove(H),o=!1;let t=0;const n=this.children.filter((t=>t!==e)),i=[];n.forEach((e=>{e.style.transform="",e.style.transition="",e.classList.contains(Z)?(t--,e.style.order=(parseInt(e.style.order)+1).toString(),e.classList.remove(Z),i.push(this.snapshots.get(e))):e.classList.contains(q)&&(t++,e.style.order=(parseInt(e.style.order)-1).toString(),e.classList.remove(q),i.push(this.snapshots.get(e)))})),e.style.userSelect="",e.style.order=(parseInt(e.style.order)+t).toString(),e.style.transform="",e.style.transition="",this.dispatchEvent(new CustomEvent("reorder",{detail:this.children.map((e=>({element:e,order:parseInt(e.style.order)})))}))};document.addEventListener("mouseup",t),this.attachedEvents.push((()=>document.removeEventListener("mouseup",t))),e.addEventListener("touchend",t),this.attachedEvents.push((()=>e.removeEventListener("touchend",t)))})()})),this.enabled=!0}disable(){this.attachedEvents.forEach((e=>e())),this.children.forEach((e=>e.classList.remove(U))),this.enabled=!1}}var Q=n(1003),Y=n(3311),X=n(4460),K=n(205),J=n(5067);const _={isLogin:!1},$=lodash.once((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,8612));if(!e())return _;const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,5267)),o=await t("https://api.bilibili.com/x/web-interface/nav");return 0!==o.code&&-101!==o.code?(console.warn("[store.fetchUserInfo] API Error",o.message),_):o.data}));var ee=n(9219),te=n(8612),ne=n(4021),oe=n(9083),ie=n(6571),re=n(8884);const ae=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{style:n,enterDelay:o=750,leaveDelay:i=1e3}=t,r=await(0,Y.select)(e);if(!r)throw new Error(`lazy panel failed! selector = ${e}`);let a;return void 0!==n&&(a=document.createElement("style"),a.textContent=n,document.body.insertAdjacentElement("beforeend",a)),(0,te.raiseEvent)(r,"mouseover"),await(0,te.delay)(o),(0,te.raiseEvent)(r,"mouseout"),setTimeout((()=>a?.remove()),i),r},ce=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};await ae(e,{style:`${t} { display: none !important; }`,...n});const o=(0,te.dq)(t);if(!o)throw new Error(`lazy player settings panel failed! panelSelector = ${t}`);return o},se=()=>ce(".bilibili-player-video-danmaku-setting, .bpx-player-dm-setting",".bilibili-player-video-danmaku-setting-wrap, .bpx-player-dm-setting-wrap"),le=()=>ce(".bilibili-player-video-btn-subtitle, .bpx-player-ctrl-subtitle",".bilibili-player-video-subtitle-setting-wrap, .bpx-player-ctrl-subtitle-box",{style:"\n .bpx-player-ctrl-subtitle-box,\n .bilibili-player-video-subtitle-setting-wrap,\n .bilibili-player-video-subtitle {\n display: none\n }\n "});var de=n(4732),me=n(8014),fe=n(146),ue=n(3823),pe=n(5523),be=n(2570),he=n(5157),ge=n(6316),Fe=n(4227);const ve=(e,t)=>async o=>{const{default:i}=await e(),{addStyle:r}=await Promise.resolve().then(n.bind(n,4460));return r(i,o.metadata.name),t(o)},we=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:te.none,i=null;const r=async()=>{if(i)return;const{default:o}=await t(),{addStyle:r}=await Promise.resolve().then(n.bind(n,4460));i=r(o,e)};return{name:e,entry:e=>r().then((()=>o(e))),reload:r,unload:()=>{i?.remove(),i=null}}};var ye=n(2860),xe=n(6080);const ke=[];async function Ce(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{getUID:t}=await Promise.resolve().then(n.bind(n,8612));if(!t())return console.warn("[稍后再看列表] 账号未登录"),[];const o="https://api.bilibili.com/x/v2/history/toview/web",{getJsonWithCredentials:i}=await Promise.resolve().then(n.bind(n,5267)),r=await i(o);if(0!==r.code)return(0,de.logError)(new Error(`获取稍后再看列表失败: ${r.message}`)),[];if(!r.data.list)return(0,te.deleteValues)(ke,(()=>!0)),[];const a=r.data.list;(0,te.deleteValues)(ke,(e=>!a.find((t=>t.aid===e))));const c=a.filter((e=>!ke.find((t=>t===e.aid))));return ke.push(...c.map((e=>e.aid))),e?a:a.map((e=>e.aid))}const Ae=async(e,t)=>{const o=parseInt(e.toString());if(Number.isNaN(o))return;void 0===t&&(t=!ke.includes(o));const i=t?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del",{getCsrf:r}=await Promise.resolve().then(n.bind(n,8612)),a=r(),{postTextWithCredentials:c}=await Promise.resolve().then(n.bind(n,5267)),s=await c(i,`aid=${e}&csrf=${a}`),l=JSON.parse(s);0===l.code?t?ke.push(o):(0,te.deleteValue)(ke,(e=>e===o)):(0,de.logError)(new Error(`稍后再看操作失败: ${l.message}`))};requestIdleCallback((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,8612));e()&&Ce()}));var Ee=n(4909);const Be={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频",apiType:"video"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏",apiType:"article"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧",apiType:"pgc"},share:{id:2048,name:"分享"},manga:{id:2049,name:"漫画"},film:{id:4098,name:"电影"},tv:{id:4099,name:"TV剧"},chinese:{id:4100,name:"国创"},documentary:{id:4101,name:"纪录片"},mediaList:{id:4300,name:"收藏夹"},liveRecord:{id:2047,name:"开播记录"}},De=e=>e.type===Be.repost,Ie="512,4097,4098,4099,4100,4101",ze="8,64,512,4097,4098,4099,4100,4101",Se="feeds.manager.listAdaptors";function Pe(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}(0,Ee.addData)(Se,(e=>{e.push({name:"live",match:[...fe.liveUrls],watchCardsList:async e=>{const t=await(0,Y.select)(".room-feed");if(!t)return!1;console.log("live watch");let n=null;return(0,R.childList)(t,(async()=>{if(dq(".room-feed-content")){const t=await(0,Y.select)(".room-feed-content .content");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"space",match:["https://space.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".s-space");if(!t)return!1;const n={},o=()=>{n.listElement&&n.observer&&(console.log("space feeds stop"),n.observer?.then((e=>e.disconnect())),delete n.observer,delete n.listElement,e.cleanUpCards())},i=()=>{if(n.observer)return n.observer;const t=(0,Y.select)(".bili-dyn-list__items");return n.observer=(async()=>{const r=await t;r!==await n.listElement&&(n.listElement&&o(),n.listElement=t,i()),console.log("space feeds start");const[a]=e.updateCards(r);return a})(),n.observer};return(0,R.childListSubtree)(t,(async()=>{dq(".bili-dyn-list__items")?i():o()})),!0}},{name:"topic",match:["https://t.bilibili.com/topic"],watchCardsList:async e=>{const t=await(0,Y.select)(".page-container");if(!t)return!1;let n=null;return(0,R.childList)(t,(async()=>{if(dq(".page-container .feed")){const t=await(0,Y.select)(".feed .feed-topic");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"opus-detail",match:["https://www.bilibili.com/opus/"],watchCardsList:async e=>{const t=await(0,Y.select)(".opus-detail");return!!t&&(e.updateCards(t),!0)}},{name:"default",match:["https://t.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".feed-card .content, .detail-content .detail-card, #app > .content > .card, .bili-dyn-list__items");if(!t)return!1;if(t.classList.contains("bili-dyn-list__items")){const n=t.parentElement.parentElement;let o;(0,R.childList)(n,(()=>{const t=dq(n,".bili-dyn-list__items");t&&(o?.disconnect(),e.cards=[],[o]=e.updateCards(t))}))}else e.updateCards(t);return!0}})}));const Me=[],Oe=e=>t=>{const n=Boolean(t),o=t&&t.parentNode,i=t instanceof HTMLElement&&t.matches(e);return n&&o&&i};let Ve=function(e){return e.AddCard="addCard",e.RemoveCard="removeCard",e}({});class Te extends EventTarget{constructor(){super(...arguments),Pe(this,"watching",!1),Pe(this,"cards",[]),Pe(this,"managerType",void 0)}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchCardEvent(e,t){const n=new CustomEvent(e,{detail:t});this.dispatchEvent(n),Me.forEach((n=>n[e===Ve.AddCard?"added":"removed"](t)))}async startWatching(){if(this.watching)return!0;this.watching=!0;const[e]=(0,Ee.registerAndGetData)(Se,[]),t=e.find((e=>e.match.some((e=>(0,te.matchUrlPattern)(e)))));return t?t.watchCardsList(this):(console.warn("[FeedsCardsManager] No adaptor found",e),!1)}cleanUpCards(){this.cards=this.cards.filter((e=>e.presented))}}function Le(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const je=e=>e.querySelector(".repost")?Be.repost:e.querySelector(".imagesbox")?Be.textWithImages:e.querySelector(".video-container")?Be.video:e.querySelector(".bangumi-container")?Be.bangumi:e.querySelector(".article-container")?Be.column:e.querySelector(".music-container")?Be.audio:e.querySelector(".h5share-container")?Be.share:e.querySelector(".vc-ctnr")?Be.miniVideo:e.querySelector(".live-container")?Be.liveRecord:Be.text,Re=async e=>{const t=async t=>{const n=await(0,Y.sq)((()=>e.querySelector(t)),(t=>null!==t||null===e.parentNode),{queryInterval:100});if(null===e.parentNode)return"";if(null===n)return console.warn(e,t,e.parentNode),"";return n.innerText.trim()},n=e=>{if(void 0===e.card.origin)return{originalText:"",originalDescription:"",originalTitle:""};const t=JSON.parse(e.card.origin);return{originalText:e.originCardData.pureText,originalDescription:lodash.get(t,"item.description",lodash.get(t,"desc","")),originalTitle:t.title}},o=async e=>{const n=parseInt(await t(e));return isNaN(n)?0:n},i={id:e.getAttribute("data-did"),username:await t(".main-content .user-name"),text:"",reposts:await o(".button-bar .single-button:nth-child(1) .text-offset"),comments:await o(".button-bar .single-button:nth-child(2) .text-offset"),likes:await o(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:je(e),get presented(){return null!==e.parentNode},async getText(){return(async t=>{if(t===Be.bangumi)return"";const o=await(0,Y.sq)((()=>e),(t=>Boolean((0,te.getVue2Data)(t)||!e.parentNode)),{queryInterval:100});if(null===e.parentNode)return"";if(null===o)return console.warn(o,e,(0,te.getVue2Data)(o),e.parentNode),"";const i=(0,te.getVue2Data)(o);if(t===Be.repost){const e=i.card.item.content,t=n(i);return[e,...Object.values(t).filter((e=>""!==e))].filter((e=>Boolean(e))).join("\n")}return[i.originCardData.pureText,i.originCardData.title].filter((e=>Boolean(e))).join("\n")})(this.type)}};if(i.text=await i.getText(),e.setAttribute("data-type",i.type.id.toString()),De(i)){const t=i.username,o=(0,te.getVue2Data)(i.element),r=lodash.get(o,"card.origin_user.info.uname","");t===r&&e.setAttribute("data-self-repost","true"),i.repostUsername=r,i.repostText=n(o).originalText}return i};class Ne extends Te{constructor(){super(...arguments),Le(this,"managerType","v1")}async addCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card"))if(null!==e.querySelector(".skeleton")){const[t]=(0,R.childList)(e,(()=>{null===e.querySelector(".skeleton")&&(t.disconnect(),this.addCard(e))}))}else{if(null===e.parentNode)return;const t=await Re(e);if(!t.presented)return;if(this.cards.find((e=>e.id===t.id)))return;this.cards.push(t),this.cards.sort(((e,t)=>e.id===t.id?0:e.id>t.id?-1:1)),this.dispatchCardEvent(Ve.AddCard,t)}}async removeCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card")){const t=e.getAttribute("data-did"),n=this.cards.findIndex((e=>e.id===t));if(-1===n)return;const o=this.cards[n];this.cards.splice(n,1),this.dispatchCardEvent(Ve.RemoveCard,o)}}updateCards(e){const t=".card[data-did]",n=e=>{if(e instanceof HTMLElement){if(e.matches(t))return e;const n=e.querySelector(t);if(n)return n}};return[...e.querySelectorAll(t)].forEach((e=>this.addCard(e))),(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))}))}))}}function qe(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ze={DynamicTypeForward:Be.repost,DynamicTypeAv:Be.video,DynamicTypeDraw:Be.textWithImages,DynamicTypeWord:Be.text,DynamicTypePgc:Be.bangumi,DynamicTypeArticle:Be.column,DynamicTypeMusic:Be.audio,DynamicTypeLiveRcmd:Be.liveRecord},Ue=function(){for(var e=arguments.length,t=new Array(e),n=0;nBoolean(e))).join("\n").trim()},He=e=>Ze[(0,te.pascalCase)(e)]??Ze.DynamicTypeWord,We=(e,t)=>{if(Object.hasOwn(e,"paragraphs")){return e.paragraphs.find((e=>1===e.para_type)).text.nodes.map((e=>"TEXT_NODE_TYPE_WORD"===e.type?lodash.get(e,"word.words"):"TEXT_NODE_TYPE_RICH"===e.type?lodash.get(e,"rich.orig_text"):"")).join("")}const{desc:n,major:o}=e,i=o?.opus?lodash.get(o.opus,"summary.text"):n?.text??"",r=(()=>{switch(t){default:return"";case Be.bangumi:case Be.column:case Be.video:{const e=o.archive??o.pgc??o.article;if(e){const{title:t,desc:n}=e;return Ue(t,n)}if(o.opus){const{title:e,summary:t}=o.opus;return Ue(e,t.text)}return""}}})();return Ue(i,r)},Ge=Oe(".bili-dyn-list__item, .bili-dyn-item, .bili-opus-view");class Qe extends Te{constructor(){super(...arguments),qe(this,"managerType","v2")}async addCard(e){if(!Ge(e))return;const t=await(async e=>{const t=(0,te.getVue2Data)(e),n=e=>Array.isArray(e)?Object.fromEntries(e.map((e=>{const[t]=Object.keys(e).filter((e=>"module_type"!==e));return"module_content"===t?["module_dynamic",e[t]]:[t,e[t]]}))):e,{modules:o,id_str:i,type:r}=t.data,a=n(o),{name:c}=a.module_author,{like:s,forward:l,comment:d}=a.module_stat,m=He(r);e.dataset.type=m.id.toString();const f={id:i,username:c,likes:s.count,reposts:l.count,comments:d.count,text:"",type:m,element:e,get presented(){return document.body.contains(e)},getText:async()=>We(a.module_dynamic,m)};if(De(f)){const o=f.username,{module_author:{name:i},module_dynamic:r}=n(t.data.orig.modules),c=He(t.data.orig.type);f.repostUsername=i,f.repostText=We(r,c),i===o&&e.setAttribute("data-self-repost","true"),f.getText=async()=>Ue(We(a.module_dynamic,m),We(r,m))}return f.text=await f.getText(),f.element.setAttribute("data-did",f.id),await(0,Y.selectAll)((()=>e.querySelectorAll(".bili-dyn-item *")),{queryInterval:50}),f})(e);t.presented&&(this.cards.push(t),this.cards.sort((0,me.descendingStringSort)((e=>e.id))),this.dispatchCardEvent(Ve.AddCard,t))}async removeCard(e){if(!Ge(e))return;const t=(0,te.getVue2Data)(e);if(!t)return;const n=t.data?.id_str??"0",o=this.cards.findIndex((e=>e.id===n));if(-1===o)return;const[i]=this.cards.splice(o,1);this.dispatchCardEvent(Ve.RemoveCard,i)}updateCards(e){const t=".bili-dyn-list__item, :not(.bili-dyn-list__item) > .bili-dyn-item, .bili-opus-view";dqa(e,t).forEach((e=>this.addCard(e)));const n=e=>Ge(e)?e.matches(t)?e:e.querySelector(t):null;return(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))})),this.cleanUpCards()}))}}const Ye=()=>!!(parseInt((0,te.getCookieValue)("hit-dyn-v2"))>0)&&["t.bilibili.com","space.bilibili.com",/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/].some((e=>(0,te.matchUrlPattern)(e))),Xe=Ye()?new Qe:new Ne,Ke=async e=>{if(fe.feedsUrls.every((e=>!(0,te.matchUrlPattern)(e))))return null;if(!await Xe.startWatching())return console.error("feedsCardsManager.startWatching() failed"),null;const{added:t}=e;return t&&Xe.cards.forEach((e=>t(e))),Me.push({added:none,removed:none,...e}),Xe},Je=e=>{const t=lodash.groupBy(e,(e=>e.aid)),n=e=>({id:e.upID,name:e.upName,faceUrl:e.upFaceUrl});return Object.values(t).map((e=>{if(1===e.length)return e[0];const[t,...o]=e;return t.cooperation=[n(t),...o.map(n)],console.log([...t.cooperation]),t})).sort((0,me.descendingStringSort)((e=>e.id)))},_e=e=>1===lodash.get(e,"extra.is_reserve_recall",0),$e="feeds.contentFilters";(0,Ee.registerData)($e,[]);const et=e=>{const[t]=(0,Ee.getData)($e);return t.reduce(((e,t)=>t.filter(e)),e)},tt=e=>function(){return e(...arguments).then((e=>et(e)))},nt=(e,t)=>{const n=new URLSearchParams;return"string"==typeof e?n.set("type",e):e.apiType?n.set("type",e.apiType):(console.warn(`unknown apiType for ${e.name}`),n.set("type","all")),t&&n.set("offset",t.toString()),`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?${n.toString()}`},ot=async(e,t)=>(0,B.getJsonWithCredentials)(nt(e,t)),it=tt((async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"video",t=arguments.length>1?arguments[1]:void 0;if(!(0,te.getUID)())return[];const n=await(0,B.getJsonWithCredentials)(nt("video"===e?Be.video:Be.bangumi,t));if(0!==n.code)throw new Error(n.message);const o=n.data.items;return"video"===e?Je(o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.archive"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_dynamic.desc.text",""),i=lodash.get(e,"modules.module_stat"),r=lodash.get(e,"modules.module_dynamic.desc.rich_text_nodes",[]).filter((e=>"RICH_TEXT_NODE_TYPE_TOPIC"===e.type)).map((e=>({id:e.text,name:e.text,url:e.jump_url})));return{id:e.id_str,aid:parseInt(t.aid),bvid:t.bvid,title:t.title,upFaceUrl:n.face,upName:n.name,upID:n.mid,coverUrl:t.cover,description:t.desc,timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),topics:r,dynamic:o,like:(0,oe.formatCount)(i.like.count),duration:(0,oe.parseDuration)(t.duration_text),durationText:(0,oe.formatDuration)((0,oe.parseDuration)(t.duration_text)),playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:ke.includes(t.aid)}}))):"bangumi"===e?o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.pgc"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_stat");return{id:e.id_str,epID:t.epid,title:t.title.replace(new RegExp(`^${n.name}:`),""),upName:n.name,upFaceUrl:n.face,coverUrl:t.cover,description:"",timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),like:(0,oe.formatCount)(o.like.count),durationText:"",playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:!1}})):[]})),rt=(e,t)=>{const n=dq(e.element,".more-panel, .bili-dyn-more__menu, .opus-more__menu"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return void console.warn("more panel not found",e.element);const a=!n.classList.contains("more-panel"),c=n.classList.contains("opus-more__menu"),s=document.createElement(a?"div":"p");if(c){s.classList.add("opus-more__menu__item",o);const e=n.children[0];e&&s.setAttribute("style",e.getAttribute("style")),s.dataset.type="more",s.dataset.stype=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else if(a){s.classList.add("bili-dyn-more__menu__item",o);const e=n.children[0];e?s.setAttribute("style",e.getAttribute("style")):(s.style.height="25px",s.style.padding="2px 0",s.style.textAlign="center"),s.dataset.module="more",s.dataset.type=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else s.classList.add("child-button","c-pointer",o);s.textContent=i;[...new Set([...n.children].map((e=>e.getAttributeNames().filter((e=>e.startsWith("data-v-"))))).flat())].forEach((e=>s.setAttribute(e,""))),s.addEventListener("click",(t=>{r(t),e.element.click()})),n.appendChild(s)};var at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"bangumi-card",class:{new:e.isNew},attrs:{target:"_blank",href:e.data.url}},[t("div",{staticClass:"ep-cover-container"},[t("DpiImage",{staticClass:"ep-cover",attrs:{size:{width:100},src:e.data.epCoverUrl}})],1),e._v(" "),t("h1",{staticClass:"ep-title",attrs:{title:e.data.epTitle}},[e._v(e._s(e.data.epTitle))]),e._v(" "),t("div",{staticClass:"up",attrs:{title:e.data.title}},[t("DpiImage",{staticClass:"cover",attrs:{size:24,src:e.data.coverUrl}}),e._v(" "),t("div",{staticClass:"title"},[e._v(e._s(e.data.title))])],1)])};at._withStripped=!0;const ct=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var st=n(8332),lt=n.n(st),dt=n(8840),mt=n.n(dt),ft={insert:"head",singleton:!1};lt()(mt(),ft);mt().locals;var ut=n(4893);const pt=(0,ut.Z)(ct,at,[],!1,null,"b2f4653c",null).exports;var bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"be-up-info",class:{fallback:!e.upFaceUrl},attrs:{href:e.actualHref,title:e.upName,target:"_blank"}},[e.upFaceUrl?t("DpiImage",{staticClass:"be-up-info-cover",attrs:{size:24,src:e.upFaceUrl}}):t("div",{staticClass:"be-up-info-cover-fallback"},[e._t("fallback-icon",(function(){return[t("VIcon",{attrs:{icon:"up-outline",size:18}})]}))],2),e._v(" "),t("div",{staticClass:"be-up-info-name"},[e._v("\n "+e._s(e.upName)+"\n ")])],1)};bt._withStripped=!0;const ht=Vue.extend({components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{href:{type:String,default:""},upId:{type:[String,Number],default:""},upFaceUrl:{type:String,default:""},upName:{type:String,required:!0}},computed:{actualHref(){return this.href?this.href:`https://space.bilibili.com/${this.upId}`}}});var gt=n(2835),Ft=n.n(gt),vt={insert:"head",singleton:!1};lt()(Ft(),vt);Ft().locals;const wt=(0,ut.Z)(ht,bt,[],!1,null,null,null).exports;var yt=function(){var e=this,t=e._self._c;return t("a",{staticClass:"video-card",class:{vertical:"vertical"===e.orientation,"no-stats":!e.showStats},attrs:{target:"_blank",href:e.epID?"https://www.bilibili.com/bangumi/play/ep"+e.epID:"https://www.bilibili.com/video/"+e.bvid}},[t("div",{staticClass:"cover-container"},[t("DpiImage",{staticClass:"cover",attrs:{src:e.coverUrl,size:{height:120,width:196}}}),e._v(" "),e.isNew?t("div",{staticClass:"new"},[e._v("NEW")]):e._e(),e._v(" "),e.pubTime&&e.pubTimeText?[t("div",{staticClass:"publish-time-summary"},[e._v("\n "+e._s(e.pubTimeText)+"\n ")]),e._v(" "),t("div",{staticClass:"publish-time-detail"},[e._v("\n "+e._s(e.pubTime)+"\n ")])]:e._e(),e._v(" "),e.durationText?t("div",{staticClass:"duration"},[e._v(e._s(e.durationText))]):e._e(),e._v(" "),e.durationText&&null!==e.watchlater&&void 0!==e.watchlater?t("div",{staticClass:"watchlater",on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.toggleWatchlater(e.aid)}}},[t("VIcon",{attrs:{size:15,icon:e.watchlater?"mdi-check-circle":"mdi-clock-outline"}}),e._v("\n "+e._s(e.watchlater?"已添加":"稍后再看")+"\n ")],1):e._e()],2),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.title}},[e._v(e._s(e.title))]),e._v(" "),e.topics&&e.topics.length?t("div",{staticClass:"topics"},e._l(e.topics.slice(0,3),(function(n){return t("a",{key:n.id,staticClass:"topic",attrs:{title:n.name,target:"_blank",href:n.url||"https://t.bilibili.com/topic/name/"+n.name+"/feed"}},[t("VIcon",{attrs:{icon:"mdi-tag-outline",size:14}}),e._v(" "),t("div",{staticClass:"topic-name"},[e._v("\n "+e._s(n.name)+"\n ")])],1)})),0):t("p",{staticClass:"description",attrs:{title:e.description}},[e._v(e._s(e.description))]),e._v(" "),0===e.cooperation.length?t("a",{staticClass:"up",class:{"no-face":!e.upFaceUrl},attrs:{target:"_blank",href:e.upID?"https://space.bilibili.com/"+e.upID:null}},[e.upFaceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.upFaceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}}),e._v(" "),t("div",{staticClass:"name",attrs:{title:e.upName}},[e._v(e._s(e.upName))])],1):e._e(),e._v(" "),0!==e.cooperation.length?t("div",{staticClass:"cooperation"},[t("div",{staticClass:"cooperation-ups"},e._l(e.reversedCooperation,(function(e){return t("a",{key:e.id,staticClass:"cooperation-up",class:{"no-face":!e.faceUrl},attrs:{target:"_blank",title:e.name,href:e.id?"https://space.bilibili.com/"+e.id:null}},[e.faceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.faceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}})],1)})),0),e._v(" "),t("div",{staticClass:"cooperation-note"},[e._v("联合投稿")])]):e._e(),e._v(" "),e.showStats?t("div",{staticClass:"stats"},[e.vertical?[e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e(),e._v(" "),e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e()]:[e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e(),e._v(" "),e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e()]],2):e._e()])};yt._withStripped=!0;const xt={components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{data:{type:Object,required:!0},orientation:{type:String,default:"horizontal"},showStats:{type:Boolean,default:!0},isNew:{type:Boolean,default:!1}},data(){return{watchlaterList:ke,upFaceUrl:"",danmakuCount:"",like:"",coins:"",favorites:"",dynamic:"",topics:[],upID:0,epID:0,cooperation:[],pubTime:0,pubTimeText:"",...lodash.omit(this.data,"watchlater"),watchlaterInit:this.data.watchlater,statsIconSize:14}},computed:{vertical(){return"vertical"===this.orientation},watchlater(){return(0,te.getUID)()&&null!==this.watchlaterInit?this.watchlaterList.includes(this.aid):null},reversedCooperation(){return[...this.cooperation].reverse().slice(0,3)}},methods:{toggleWatchlater:Ae}};var kt=n(450),Ct=n.n(kt),At={insert:"head",singleton:!1};lt()(Ct(),At);Ct().locals;const Et=(0,ut.Z)(xt,yt,[],!1,null,"57e48aec",null).exports;var Bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"column-card",attrs:{target:"_blank",href:`https://www.bilibili.com/read/cv${e.data.cvID}`}},[t("div",{staticClass:"covers"},e._l(e.data.covers,(function(e){return t("DpiImage",{key:e,staticClass:"cover",attrs:{size:{height:120},src:e}})})),1),e._v(" "),t("a",{staticClass:"up",attrs:{target:"_blank",href:`https://space.bilibili.com/${e.data.upID}`}},[t("DpiImage",{staticClass:"face",attrs:{size:24,src:e.data.upFaceUrl}}),e._v(" "),t("div",{staticClass:"name"},[e._v(e._s(e.data.upName))])],1),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.data.title}},[e._v(e._s(e.data.title))]),e._v(" "),t("div",{staticClass:"description",attrs:{title:e.data.description}},[e._v(e._s(e.data.description))])])};Bt._withStripped=!0;const Dt=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var It=n(5579),zt=n.n(It),St={insert:"head",singleton:!1};lt()(zt(),St);zt().locals;const Pt=(0,ut.Z)(Dt,Bt,[],!1,null,"335afa63",null).exports;let Mt=!1,Ot=0;const Vt="disable-profile-popup",Tt=async()=>{if("https://t.bilibili.com/"!==document.URL.replace(window.location.search,""))return;const e=await(0,Y.select)(".live-up-list, .bili-dyn-live-users__body");null!==e&&(Ot++,Mt||(e.addEventListener("mouseenter",(e=>{Ot>0&&e.stopImmediatePropagation()}),{capture:!0}),Mt=!0))},Lt=()=>{Ot--},jt=3e5,Rt=()=>(0,te.getCookieValue)(`bp_t_offset_${(0,te.getUID)()}`),Nt=(e,t)=>e===t?0:e.length>t.length?1:t.length>e.length?-1:e>t==!0?1:-1,qt=e=>{if(null==e)return;const t=Rt();Nt(e,t)<0||(document.cookie=`bp_t_offset_${(0,te.getUID)()}=${e};path=/;domain=.bilibili.com;max-age=2592000`)},Zt=e=>Nt(e,Rt())>0,Ut=e=>{const[t]=[...e.map((e=>e.id))].sort(Nt).reverse();qt(t)},Ht=async e=>{const t=`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all/update?type=${e}&update_baseline=${Rt()}`,n=await(0,B.getJsonWithCredentials)(t);return 0!==n.code?0:lodash.get(n,"data.update_num",0)},Wt=async()=>{const e=await(0,B.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/dynamic/entrance");return 0!==e.code?0:lodash.get(e,"data.update_info.item.count",0)},Gt=e=>{e.startsWith("#")&&(e=e.substring(1));return{red:e.substring(0,2),green:e.substring(2,4),blue:e.substring(4,6)}},Qt=e=>{const{red:t,green:n,blue:o}=Gt(e);return`\\c&H${`${o}${n}${t}`.toUpperCase()}&`},Yt=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const{red:n,green:o,blue:i}=Gt(e),r=Math.round(255*(1-t)).toString(16).padStart(2,"0");return`&H${r}${i}${o}${n}`.toUpperCase()},Xt=e=>{let t=0,n=0;for(;e>=60;)e-=60,n++;for(;n>=60;)n-=60,t++;return`${t}:${String(n).padStart(2,"0")}:${(e=>{const[t,n="00"]=String(e).split(".");return`${t.padStart(2,"0")}.${n.substring(0,2).padEnd(2,"0")}`})(e)}`},Kt=(e,t)=>[Xt(e),Xt(e+t)],Jt=(e,t)=>[Xt(e),Xt(t)],_t=e=>{const t={"{":"{","}":"}","&":"&","<":"<",">":">",""":'"',"'":"'","\n":"\\N"};for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},$t={"&":"&","<":"<",">":">",""":'"',"'":"'"},en=Object.fromEntries(Object.entries($t).map((e=>e.reverse()))),tn=(e,t)=>{if(!e)return"";for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},nn=e=>tn(e,en),on=e=>tn(e,$t);var rn=n(6768);const an=e=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?async()=>{const t=rn.playerAgent,{query:{control:{settings:n,buttons:o}}}=t;ce(o.settings.selector,n.wrap.selector),t.toggleLight(e)}:te.none,cn=an(!0),sn=an(!1),ln=an(),dn=async e=>{await(0,te.playerReady)();const t=dq(".video-toolbar .ops .collect, .video-toolbar-v1 .toolbar-left .collect, .video-toolbar-left-item.video-fav");if(!t)return null;const{hasVideo:o}=await Promise.resolve().then(n.bind(n,3311));await o();const i=await e();return t.classList.contains("video-fav")?t.parentElement.insertAdjacentElement("afterend",i):t.insertAdjacentElement("afterend",i),i},mn=async e=>{await(0,Y.hasVideo)()&&(0,R.videoChange)((async()=>{const t=await rn.playerAgent.query.video.danmaku();t&&((e,t)=>{const n=[];(0,R.childListSubtree)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{if(e.nodeType===Node.TEXT_NODE){const o=e.parentElement,i=n.find((e=>e.element===o));if(!i)return;return i.text=e.textContent||"",i.reuse=!0,void(t.added&&t.added(i))}if(!(e instanceof HTMLElement))return;const o={element:i=e,reuse:!1,text:i.textContent||""};var i;n.push(o),t.added&&t.added(o)})),e.removedNodes.forEach((e=>{if(!(e instanceof HTMLElement))return;const o=n.findIndex((t=>t.element===e));if(-1!==o){const[e]=n.splice(o,1);t.removed&&t.removed(e)}}))}))}))})(t,e)}))};function fn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class un{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];fn(this,"aid",void 0),fn(this,"bvid",void 0),fn(this,"cid",void 0),fn(this,"createTime",void 0),fn(this,"pageCount",void 0),fn(this,"coverUrl",void 0),fn(this,"tagId",void 0),fn(this,"tagName",void 0),fn(this,"title",void 0),fn(this,"description",void 0),fn(this,"up",void 0),fn(this,"pages",void 0),t?this.bvid=e:this.aid=e}async fetchInfo(){let e;this.aid?e=`https://api.bilibili.com/x/web-interface/view?aid=${this.aid}`:this.bvid&&(e=`https://api.bilibili.com/x/web-interface/view?bvid=${this.bvid}`),this.cid&&(e=`${e}&cid=${this.cid}`);const t=await(0,B.getJsonWithCredentials)(e);if(0!==t.code)throw new Error(t.message);const{data:n}=t;return this.aid=n.aid,this.bvid=n.bvid,this.cid=n.cid,this.createTime=new Date(1e3*n.ctime),this.pageCount=n.videos,this.coverUrl=n.pic.replace("http:","https:"),this.tagId=n.tid,this.tagName=n.tname,this.title=n.title,this.description=n.desc,this.up={uid:n.owner.mid,name:n.owner.name,faceUrl:n.owner.face.replace("http:","https:")},this.pages=n.pages.map((e=>({cid:e.cid,title:e.part,pageNumber:e.page}))),this}get subtitles(){return console.warn("VideoInfo.subtitles is deprecated"),[]}}class pn{constructor(e){fn(this,"ep",void 0),fn(this,"videos",void 0),fn(this,"title",void 0),fn(this,"cover",void 0),fn(this,"squareCover",void 0),fn(this,"aid",void 0),fn(this,"cid",void 0),this.ep=e,this.videos=[]}async fetchInfo(){const e=await(0,B.getText)(`https://www.bilibili.com/bangumi/play/ep${this.ep}/`),t=JSON.parse(e.match(/window\.__INITIAL_STATE__=(.*);\(function\(\){/)[1]);return this.title=t.mediaInfo.title,this.cover=t.mediaInfo.cover,this.squareCover=t.mediaInfo.square_cover,this.aid=t.epInfo.aid,this.cid=t.epInfo.cid,this.videos=t.epList.map((async e=>({title:e.index_title,aid:e.aid,cid:e.cid,info:await new un(e.aid).fetchInfo()}))),this}}const bn=[{name:"720P",displayName:"高清 720P",value:64},{name:"1080P",displayName:"高清 1080P",value:80}],hn=[{name:"8K",displayName:"超高清 8K",value:127},{name:"DolbyVision",displayName:"杜比视界",value:126},{name:"HDR",displayName:"真彩 HDR",value:125},{name:"4K",displayName:"超清 4K",value:120},{name:"1080P60",displayName:"高清 1080P60",value:116},{name:"1080P+",displayName:"高清 1080P+",value:112},{name:"720P60",displayName:"高清 720P60",value:74}],gn=[...hn,...bn,{name:"480P",displayName:"清晰 480P",value:32},{name:"360P",displayName:"流畅 360P",value:16}].sort((0,me.descendingSort)((e=>e.value))),Fn=async e=>{const{open:t,close:n}=e;if(!(0,Y.hasVideo)())return;const o=await(0,Y.select)(".bilibili-player");if(!o)return;const[i]=(0,R.childList)(o,(()=>{const e=dq(".bilibili-player-context-menu-origin");if(e){i.disconnect();const o=dq(e,"ul"),r={containerElement:e,listElement:o,get itemElements(){return dqa(e,".context-menu-function")},get isOpen(){return e.classList.contains("active")}};(0,R.childList)(o,(()=>{r.isOpen?t?.(r):n?.(r)}))}}))},vn=async(e,t)=>Fn({open:t=>{if(t.listElement.contains(e))return;const n=document.createElement("li");n.classList.add("context-line","context-menu-function"),n.setAttribute("data-append","1");const o=document.createElement("a");o.classList.add("context-menu-a","js-action"),o.href="javascript:void(0);",o.appendChild(e),n.addEventListener("mouseover",(()=>n.classList.add("hover"))),n.addEventListener("mouseout",(()=>n.classList.remove("hover"))),n.appendChild(o),t.listElement.appendChild(n)},close:e=>t?.(e)});let wn=null;const yn=[],xn=lodash.once((()=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?new Promise((e=>{(0,R.videoChange)((async()=>{const{playerAgent:t}=await Promise.resolve().then(n.bind(n,6768)),o=await t.query.control.buttons.time(),i=await Promise.resolve().then(n.bind(n,8979)).then((e=>e.default));if(null===o||null!==o.parentElement?.querySelector(".be-video-control-bar-extend"))return;const r=new i({propsData:{items:yn}}).$mount();o.insertAdjacentElement("afterend",r.$el),e(r)}))})):Promise.resolve(null))),kn=async e=>{wn||(wn=xn());await wn&&yn.push(e)},Cn=async e=>{const t=new un(e);try{await t.fetchInfo()}catch(e){throw(0,de.logError)(e),e}return t.coverUrl.replace("http:","https:")},An=async e=>{const t=await Cn(e),n=await fetch(t);return await n.blob()},En=async e=>{const t=await(0,Y.select)(".live-player-mounter"),n=(0,de.useScopedConsole)("withControlBar");if(!t)return void n.warn("livePlayer not found");(0,te.raiseEvent)(t,"mousemove");const o=dq(t,".web-player-controller-wrap .control-area");o?(await e(o),(0,te.raiseEvent)(t,"mouseleave")):n.warn("controlBar not found")},Bn=async e=>{if(!fe.liveUrls.some((e=>(0,te.matchUrlPattern)(e))))return;const t=await(0,Y.select)(".bilibili-live-player-video-controller, .web-player-controller-wrap:not(.web-player-controller-bg)");if(!t)return;const{init:n,callback:o}=e;n?.(t),(0,R.childList)(t,(async()=>{const e=dq(t,".control-area");e&&o?.(e)}))};function Dn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const In=0,zn=2,Sn={heartBeat:2,heartBeatResponse:3,message:5,enterRoom:7,enterRoomResponse:8};class Pn{constructor(){Dn(this,"textEncoder",new TextEncoder),Dn(this,"textDecoder",new TextDecoder)}static readInt(e,t,n){let o=0;for(let i=n-1;i>=0;i--)o+=256**(n-i-1)*e[t+i];return o}static writeInt(e,t,n,o){let i=0;for(;i{const o={packetLength:Pn.readInt(e,0,4),headerLength:Pn.readInt(e,4,2),protocolVersion:Pn.readInt(e,6,2),operation:Pn.readInt(e,8,4),sequenceID:Pn.readInt(e,12,4)},i=[o];if(o.packetLengthe.messages[0])))}else o.protocolVersion===In&&(o.messages=[JSON.parse(this.textDecoder.decode(i))])}else o.operation===Sn.heartBeatResponse&&(o.heartBeatResponse={count:Pn.readInt(e,16,4)});return i};return new Promise(((n,o)=>{const i=new FileReader;i.onload=async e=>{if(!e.target)return void o(e);const i=new Uint8Array(e.target.result);n(await t(i))},i.readAsArrayBuffer(e)}))}}class Mn{constructor(){Dn(this,"startTime",0)}getLiveTime(){return new Promise((e=>{if(this.startTime)return void e(this.startTime);const t=(0,te.dq)(".bilibili-live-player-video-controller-duration-btn span"),[n]=(0,R.childList)(t,(t=>{if(t.length>0&&t.some((e=>e.addedNodes.length>0&&[...e.addedNodes].every((e=>e.nodeType===Node.TEXT_NODE))))){n.disconnect();const o=t[0].addedNodes[0].textContent,[i,r,a=0]=o.split(":").reverse().map(lodash.unary(parseInt)),c=Number(new Date);this.startTime=c-1e3*a*3600-60*r*1e3-1e3*i,e(this.startTime)}}))}))}}class On extends EventTarget{constructor(e){super(),this.roomID=e,Dn(this,"heartBeatTimer",void 0),Dn(this,"webSocket",void 0),Dn(this,"retryInterval",200),Dn(this,"autoRetry",!0),Dn(this,"servers",["broadcastlv.chat.bilibili.com"]),Dn(this,"selectedServer",""),Dn(this,"liveTime",new Mn),Dn(this,"bufferHelper",new Pn),Dn(this,"stopRequested",!1),window.addEventListener("unload",(()=>this.stop()))}heartBeat(){this.webSocket.readyState===WebSocket.OPEN?this.webSocket.send(this.bufferHelper.encode("","heartBeat")):(this.stop(),this.restart())}restart(){if(this.dispatchEvent(new CustomEvent("restart")),!this.stopRequested&&this.autoRetry){console.log(`Live Socket: unexpected disconnect, retry in ${this.retryInterval}ms`);const e=this.servers.indexOf(this.selectedServer);ethis.start()),this.retryInterval)}}async start(){const e=await(0,B.getJson)(`https://api.live.bilibili.com/room/v1/Danmu/getConf?room_id=${this.roomID}&platform=pc&player=web`),t=lodash.get(e,"data.host_server_list",[]);this.servers=[...new Set([...this.servers,...t.map((e=>e.host))])],""===this.selectedServer&&([this.selectedServer]=this.servers,console.log("Initial server:",this.selectedServer)),this.webSocket&&[WebSocket.CONNECTING,WebSocket.OPEN].includes(this.webSocket.readyState)&&this.stop(),this.webSocket=new WebSocket(`wss://${this.selectedServer}/sub`),this.stopRequested=!1,this.dispatchEvent(new CustomEvent("start",{detail:this.webSocket})),this.webSocket.addEventListener("open",(()=>{const t={roomid:this.roomID,uid:parseInt((0,te.getUID)()),protover:2,platform:"web",clientVer:"1.10.1",type:"2",key:lodash.get(e,"data.token")};this.webSocket.send(this.bufferHelper.encode(JSON.stringify(t),"enterRoom")),this.dispatchEvent(new CustomEvent("open",{detail:t}))})),this.webSocket.addEventListener("message",(async e=>{const[t]=await this.bufferHelper.decode(e.data);switch(this.dispatchEvent(new CustomEvent("message",{detail:t})),t.operation){case Sn.enterRoomResponse:this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.heartBeatTimer=window.setInterval((()=>{this.heartBeat()}),3e4);break;case Sn.heartBeatResponse:if(!t.heartBeatResponse)break;this.dispatchEvent(new CustomEvent("heartBeatResponse",{detail:t.heartBeatResponse.count}));break;case Sn.message:{if(!t.messages)break;const e=await this.liveTime.getLiveTime();t.messages.forEach((t=>{if("DANMU_MSG"===t.cmd){const{info:n}=t,o={content:n[1],type:n[0][1],fontSize:n[0][2],color:n[0][3],sendTime:n[0][4],userHash:n[0][7],userID:n[2][0],userName:n[2][1],startTime:e,get time(){return this.sendTime-this.startTime}};this.dispatchEvent(new CustomEvent("danmaku",{detail:o}))}}));break}}})),this.webSocket.addEventListener("close",(e=>{this.stopRequested||(console.error("Live Socket: close",e),this.restart())})),this.webSocket.addEventListener("error",(e=>{console.error("Live Socket: error",e),this.restart()}))}stop(){this.stopRequested=!0,this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.webSocket&&this.webSocket.readyState===WebSocket.OPEN&&this.webSocket.close()}}function Vn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Tn extends EventTarget{constructor(e){super(),Vn(this,"element",void 0),Vn(this,"id",void 0),Vn(this,"userId",void 0),Vn(this,"userName",void 0),Vn(this,"content",void 0),Vn(this,"timeText",void 0),Vn(this,"time",void 0),Vn(this,"likes",void 0),Vn(this,"vueProps",void 0),this.element=e.element,this.id=e.id,this.userId=e.userId,this.userName=e.userName,this.content=e.content,this.timeText=e.timeText,this.time=e.time,this.likes=e.likes,this.vueProps=e.vueProps}}function Ln(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class jn extends Tn{constructor(e){super(e),Ln(this,"pictures",void 0),Ln(this,"replies",void 0),this.pictures=e.pictures??[],this.replies=e.replies}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchRepliesUpdate(e){return super.dispatchEvent((e=>new CustomEvent("repliesUpdate",{detail:e}))(e))}}function Rn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Nn{constructor(e){Rn(this,"element",void 0),Rn(this,"items",[]),Rn(this,"observer",void 0),Rn(this,"itemCallbacks",[]),this.element=e}isCommentItem(e){return e instanceof HTMLElement&&e.matches(Nn.replyItemSelector)}beforeParse(e){return lodash.noop(e)}observeItems(){if(this.observer)return;performance.mark("observeItems start");const e=dqa(this.element,Nn.replyItemSelector);e.length>0&&(this.beforeParse(e),this.items=e.map((e=>this.parseCommentItem(e)))),this.items.forEach((e=>{this.itemCallbacks.forEach((t=>t.added?.(e)))})),[this.observer]=(0,R.childListSubtree)(this.element,(e=>{const t=(0,te.getRandomId)();performance.mark(`observeItems subtree start ${t}`);const n=[],o=[];e.forEach((e=>{e.addedNodes.forEach((e=>{this.isCommentItem(e)&&n.push(e)})),e.removedNodes.forEach((e=>{this.isCommentItem(e)&&o.push(e)}))})),n.length>0&&this.beforeParse(n),n.forEach((e=>{const t=this.parseCommentItem(e);this.items.push(t),this.itemCallbacks.forEach((e=>e.added?.(t)))})),o.forEach((e=>{const t=this.getCommentId(e),n=this.items.findIndex((e=>e.id===t));if(-1!==n){const[e]=this.items.splice(n,1);this.itemCallbacks.forEach((t=>t.removed?.(e)))}})),performance.mark(`observeItems subtree end ${t}`),performance.measure(`observeItems subtree ${t}`,`observeItems subtree start ${t}`,`observeItems subtree end ${t}`)})),performance.mark("observeItems end"),performance.measure("observeItems","observeItems start","observeItems end")}destroy(){this.observer?.disconnect(),this.items.forEach((e=>{this.itemCallbacks.forEach((t=>t.removed?.(e)))}))}static resolveCallbackPair(e){return"function"==typeof e?{added:e}:e}forEachCommentItem(e){const t=Nn.resolveCallbackPair(e);this.items.forEach((e=>t.added?.(e))),this.itemCallbacks.push(t)}}Rn(Nn,"replyItemClasses",["list-item.reply-wrap","reply-item"]),Rn(Nn,"replyItemSelector",Nn.replyItemClasses.map((e=>`.${e}`)).join(","));class qn extends Nn{addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".opera-list ul");if(!n)throw new Error("Invalid operation list");const{className:o,text:i,action:r}=t;if(dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o),a.textContent=i,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=e.querySelector(".con .user .name");if(!t)throw new Error("Invalid comment item");const n=e=>{const t=e.querySelector(".reply-face"),n=e.querySelector(".reply-con .user .name");return new Tn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:n.textContent,content:e.querySelector(".text-con").textContent,timeText:e.querySelector(".info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".info .like span").textContent),vueProps:void 0})},o=new jn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:t.textContent,content:e.querySelector(".con .text").textContent,timeText:e.querySelector(".con .info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".con .like span").textContent),replies:[],vueProps:void 0});if(dq(e,".reply-box .view-more")){const t=dq(e,".reply-box");(0,R.childList)(t,(t=>{o.replies=dqa(e,".reply-box .reply-item").map(n),0!==t.length&&o.dispatchRepliesUpdate(o.replies)}))}else o.replies=dqa(e,".reply-box .reply-item").map(n);return o}getCommentId(e){const t=e.getAttribute("data-id");if(!t)throw new Error("Invalid comment item");return t}}function Zn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)} /* eslint-disable no-underscore-dangle */(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Un=Symbol.for("VNodeTargets");class Hn{constructor(e){this.rootElement=e,Zn(this,"isEnd",(()=>!0))}traverseToRoot(e){if(performance.mark("traverseToRoot"),e._vnode)return e;let t=e;for(;null!==t.parentElement&&t!==this.rootElement;){if(t.parentElement[Un]){if(t.parentElement[Un].includes(t)||t.parentElement[Un].push(t),t.parentElement._vnode)return t.parentElement;break}if(t.parentElement[Un]=[t],t.parentElement._vnode)return t.parentElement;t=t.parentElement}return this.rootElement}unwrapSubtree(e){return e.component?.subTree?(performance.mark("unwrapSubtree"),this.unwrapSubtree(e.component?.subTree)):e}exposeVNode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.rootElement._vnode;if(performance.mark("exposeVNode"),e.el&&!e.el._vnode&&(e.el._vnode=e),this.isEnd(e))return;const t=this.unwrapSubtree(e);if(!Array.isArray(t.children))return;t.children.filter((e=>e.type===Symbol.for("v-fgt")?(e.el[Un]=t.el?.[Un],!0):e.el?t.el?t.el?.[Un]?.includes(e.el):t[Un]?.includes(e.el):(e[Un]=t.el?.[Un]?.flatMap((e=>e?.[Un])),!0))).forEach((e=>{this.exposeVNode(e)}))}}function Wn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)} -/* eslint-disable no-underscore-dangle */(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Gn extends Nn{constructor(e){super(e),Wn(this,"vnodeManager",void 0),this.vnodeManager=new Hn(this.getVNodeRoot(e)),this.vnodeManager.isEnd=e=>e.props?.reply?0===e.props?.reply.replies.length:Boolean(e.props?.subReply)}beforeParse(e){const t=new Set;e.forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e)),dqa(e,".sub-reply-item").forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e))}))})),t.forEach((e=>this.vnodeManager.exposeVNode(e._vnode)))}getReplyFromVueData(e){const t=e._vnode?.props;return t?.reply??t?.subReply}getReplyItemElement(e,t){const[n]=dqa(e,".sub-reply-item").filter((e=>this.getReplyFromVueData(e).rpid_str===t));return n}getVNodeRoot(e){return e.__vue_app__?e:e.parentElement.__vue_app__?e.parentElement:null}addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".operation-list"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o,"operation-option"),a.innerHTML=`${i}`,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=this.getReplyFromVueData(e);if(!t)throw new Error("Invalid comment item");const n=()=>t.replies?t.replies.map((t=>new Tn({id:t.rpid_str,element:this.getReplyItemElement(e,t.rpid_str),userId:t.member.mid,userName:t.member.uname,content:t.content.message,time:1e3*t.ctime,likes:t.like}))):[],o=new jn({id:t.rpid_str,element:e,userId:t.member.mid,userName:t.member.uname,content:t.content.message,time:1e3*t.ctime,likes:t.like,pictures:t.content?.pictures?.map((e=>e.img_src)),replies:n()});if(o.replies.length{performance.mark(`parseReplies start ${o.id}`);const t=[];e.forEach((e=>{e.addedNodes.forEach((e=>{e instanceof HTMLElement&&e.matches(".sub-reply-item")&&t.push(e)}))})),0!==t.length&&(this.beforeParse(t),o.replies=n(),0!==e.length&&o.dispatchRepliesUpdate(o.replies),performance.mark(`parseReplies end ${o.id}`),performance.measure(`parseReplies ${o.id}`,`parseReplies start ${o.id}`,`parseReplies end ${o.id}`))}))}return o}getCommentId(e){const t=this.getReplyFromVueData(e);if(!t?.rpid_str)throw new Error("Invalid comment item");return t.rpid_str}static isV2Area(e){return e.__vue_app__||e.parentElement?.__vue_app__}}const Qn=e=>Gn.isV2Area(e)?new Gn(e):new qn(e);function Yn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Xn{constructor(){Yn(this,"commentAreas",[]),Yn(this,"commentAreaCallbacks",[])}init(){(0,R.allMutations)((e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.observeAreas(e)))}))})),dqa(Xn.commentAreaClasses.map((e=>`.${e}`)).join(",")).forEach((e=>this.observeAreas(e)))}observeAreas(e){if(e instanceof HTMLElement&&Xn.commentAreaClasses.some((t=>e.classList.contains(t)))){const t=Qn(e);this.commentAreas.push(t),t.observeItems(),this.commentAreaCallbacks.forEach((e=>e(t)))}}forEachCommentArea(e){this.commentAreas.forEach((t=>e(t))),this.commentAreaCallbacks.push(e)}forEachCommentItem(e){this.forEachCommentArea((t=>t.forEachCommentItem(e)))}}Yn(Xn,"commentAreaClasses",["bili-comment","bb-comment"]);const Kn=new Xn;(0,V.contentLoaded)((()=>{Kn.init()}));const Jn=e=>{Kn.forEachCommentArea(e)},_n=e=>{Kn.forEachCommentItem(e)},$n=(e,t)=>{Kn.forEachCommentArea((n=>n.addMenuItem(e,t)))};var eo=n(7748);const to=JSON.parse('[[{"name":"首页","route":"/","tid":"","locid":23,"sub":[]},{"name":"动画","route":"douga","tid":1,"locid":52,"count":"","subMenuSize":162,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2507,"leftId":2452,"rightId":2453},"sub":[{"name":"MAD·AMV","route":"mad","tid":24,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":151},"desc":"具有一定制作程度的动画或静画的二次创作视频","url":"//www.bilibili.com/video/douga-mad-1.html"},{"name":"MMD·3D","route":"mmd","tid":25,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":152},"desc":"使用MMD(MikuMikuDance)和其他3D建模类软件制作的视频","url":"//www.bilibili.com/video/douga-mmd-1.html"},{"name":"短片·手书·配音","route":"voice","tid":47,"ps":15,"rps":10,"desc":"追求创新并具有强烈特色的短片、手书(绘)及ACG相关配音","url":"//www.bilibili.com/video/douga-voice-1.html"},{"name":"手办·模玩","route":"garage_kit","tid":210,"ps":15,"rps":10,"desc":"手办模玩的测评、改造或其他衍生内容","url":""},{"name":"特摄","route":"tokusatsu","tid":86,"ps":15,"rps":10,"desc":"特摄相关衍生视频","url":"//www.bilibili.com/video/cinephile-tokusatsu.html"},{"name":"综合","route":"other","tid":27,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":153},"desc":"以动画及动画相关内容为素材,包括但不仅限于音频替换、杂谈、排行榜等内容","url":"//www.bilibili.com/video/douga-else-1.html"}]},{"name":"番剧","route":"anime","tid":13,"url":"//www.bilibili.com/anime/","takeOvered":true,"count":"","subMenuSize":172,"combination":true,"sub":[{"name":"连载动画","tid":33,"route":"serial","desc":"当季连载的动画番剧","url":"//www.bilibili.com/video/bangumi-two-1.html"},{"name":"完结动画","tid":32,"route":"finish","desc":"已完结的动画番剧合集","url":"//www.bilibili.com/video/part-twoelement-1.html"},{"name":"资讯","tid":51,"route":"information","desc":"动画番剧相关资讯视频","url":"//www.bilibili.com/video/douga-else-information-1.html"},{"name":"官方延伸","tid":152,"route":"offical","desc":"动画番剧为主题的宣传节目、采访视频,及声优相关视频","url":"//www.bilibili.com/video/bagumi_offical_1.html"},{"name":"新番时间表","url":"//www.bilibili.com/anime/timeline/","desc":""},{"name":"番剧索引","url":"//www.bilibili.com/anime/index/","desc":""}]},{"name":"国创","tid":167,"route":"guochuang","url":"//www.bilibili.com/guochuang/","takeOvered":true,"count":"","subMenuSize":214,"combination":true,"sub":[{"name":"国产动画","tid":153,"route":"chinese","desc":"我国出品的PGC动画","url":"//www.bilibili.com/video/bangumi_chinese_1.html"},{"name":"国产原创相关","tid":168,"route":"original","desc":"","url":"//www.bilibili.com/video/guochuang-fanvid-1.html"},{"name":"布袋戏","tid":169,"route":"puppetry","desc":"","url":"//www.bilibili.com/video/glove-puppetry-1.html"},{"name":"动态漫·广播剧","tid":195,"route":"motioncomic","desc":"","url":""},{"name":"资讯","tid":170,"route":"information","desc":"","url":"//www.bilibili.com/video/guochuang-offical-1.html"},{"name":"新番时间表","url":"//www.bilibili.com/guochuang/timeline/","desc":""},{"name":"国产动画索引","url":"//www.bilibili.com/guochuang/index/","desc":""}]},{"name":"音乐","route":"music","tid":3,"locid":58,"count":"","subMenuSize":268,"slider":{"width":620,"height":220},"viewTag":true,"customComponent":{"name":"Energy","titleId":2511,"leftId":2462,"rightId":3131,"rightType":"slide"},"sub":[{"name":"原创音乐","route":"original","tid":28,"ps":15,"rps":10,"viewHotTag":true,"ad":{"active":true,"dataLocId":243},"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"个人或团队制作以音乐为主要原创因素的歌曲或纯音乐","url":"//www.bilibili.com/video/music-original-1.html"},{"name":"翻唱","route":"cover","tid":31,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":245},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"一切非官方的人声再演绎歌曲作品","url":"//www.bilibili.com/video/music-Cover-1.html"},{"name":"VOCALOID·UTAU","route":"vocaloid","tid":30,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以雅马哈Vocaloid和UTAU引擎为基础,包含其他调教引擎,运用各类音源进行的歌曲创作内容","url":"//www.bilibili.com/video/music-vocaloid-1.html"},{"name":"电音","route":"electronic","tid":194,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以电子合成器、音乐软体等产生的电子声响制作的音乐","url":"#"},{"name":"演奏","route":"perform","tid":59,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":247},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"传统或非传统乐器及器材的演奏作品","url":"//www.bilibili.com/video/music-perform-1.html"},{"name":"MV","route":"mv","tid":193,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐录影带,为搭配音乐而拍摄或制作的视频","url":"//www.bilibili.com/video/music-coordinate-1.html"},{"name":"音乐现场","route":"live","tid":29,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐实况表演视频","url":"//www.bilibili.com/video/music-oped-1.html"},{"name":"音乐综合","route":"other","tid":130,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"收录无法定义到其他音乐子分区的音乐视频","url":"//www.bilibili.com/video/music-collection-1.html"},{"name":"音频","customZone":"Audio","route":"audio","url":"//www.bilibili.com/audio/home?musicType=music"},{"name":"说唱","url":"//www.bilibili.com/v/rap"}]},{"name":"舞蹈","route":"dance","tid":129,"locid":64,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2513,"leftId":2472,"rightId":2473},"sub":[{"name":"宅舞","route":"otaku","tid":20,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":249},"desc":"与ACG相关的翻跳、原创舞蹈","url":"//www.bilibili.com/video/dance-1.html"},{"name":"街舞","route":"hiphop","tid":198,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":251},"desc":"收录街舞相关内容,包括赛事现场、舞室作品、个人翻跳、FREESTYLE等","url":""},{"name":"明星舞蹈","route":"star","tid":199,"ps":15,"rps":10,"desc":"国内外明星发布的官方舞蹈及其翻跳内容","url":""},{"name":"中国舞","route":"china","tid":200,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":253},"desc":"传承中国艺术文化的舞蹈内容,包括古典舞、民族民间舞、汉唐舞、古风舞等","url":""},{"name":"舞蹈综合","route":"three_d","tid":154,"ps":15,"rps":10,"desc":"收录无法定义到其他舞蹈子分区的舞蹈视频","url":""},{"name":"舞蹈教程","route":"demo","tid":156,"ps":10,"rps":6,"desc":"镜面慢速,动作分解,基础教程等具有教学意义的舞蹈视频","url":"//www.bilibili.com/video/dance-demo-1.html"}]},{"name":"游戏","route":"game","tid":4,"locid":70,"count":"","subMenuSize":240,"slider":{"width":470,"height":216},"viewTag":true,"customComponent":{"name":"Energy","titleId":3761,"leftId":3765,"rightId":3775,"rightType":"slide"},"recommendCardType":"GameGroomBox","sub":[{"name":"单机游戏","route":"stand_alone","tid":17,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":255},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以所有平台(PC、主机、移动端)的单机或联机游戏为主的视频内容,包括游戏预告、CG、实况解说及相关的评测、杂谈与视频剪辑等","url":"//www.bilibili.com/video/videogame-1.html"},{"name":"电子竞技","route":"esports","tid":171,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":257},"desc":"具有高对抗性的电子竞技游戏项目,其相关的赛事、实况、攻略、解说、短剧等视频。","url":"//www.bilibili.com/video/esports-1.html"},{"name":"手机游戏","route":"mobile","tid":172,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"desc":"以手机及平板设备为主要平台的游戏,其相关的实况、攻略、解说、短剧、演示等视频。","url":"//www.bilibili.com/video/mobilegame-1.html"},{"name":"网络游戏","route":"online","tid":65,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":259},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由网络运营商运营的多人在线游戏,以及电子竞技的相关游戏内容。包括赛事、攻略、实况、解说等相关视频","url":"//www.bilibili.com/video/onlinegame-1.html"},{"name":"桌游棋牌","route":"board","tid":173,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"desc":"桌游、棋牌、卡牌对战等及其相关电子版游戏的实况、攻略、解说、演示等视频。","url":"//www.bilibili.com/video/boardgame-1.html"},{"name":"GMV","route":"gmv","tid":121,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由游戏素材制作的MV视频。以游戏内容或CG为主制作的,具有一定创作程度的MV类型的视频","url":"//www.bilibili.com/video/gmv-1.html"},{"name":"音游","route":"music","tid":136,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"各个平台上,通过配合音乐与节奏而进行的音乐类游戏视频","url":"//www.bilibili.com/video/music-game-1.html"},{"name":"Mugen","route":"mugen","tid":19,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以Mugen引擎为平台制作、或与Mugen相关的游戏视频","url":"//www.bilibili.com/video/game-mugen-1.html"},{"name":"游戏赛事","url":"//www.bilibili.com/v/game/match/","newIcon":true}]},{"name":"知识","route":"knowledge","tid":36,"locid":76,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2058,"leftId":2047,"rightId":2048},"sub":[{"name":"科学科普","route":"science","tid":201,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":261},"desc":"回答你的十万个为什么"},{"name":"社科·法律·心理","route":"social_science","tid":124,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":263},"desc":"基于社会科学、法学、心理学展开或个人观点输出的知识视频"},{"name":"人文历史","route":"humanity_history","tid":228,"ps":15,"rps":10,"desc":"看看古今人物,聊聊历史过往,品品文学典籍"},{"name":"财经商业","route":"business","tid":207,"ps":15,"rps":10,"desc":"说金融市场,谈宏观经济,一起畅聊商业故事"},{"name":"校园学习","route":"campus","tid":208,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":265},"desc":"老师很有趣,学生也有才,我们一起搞学习"},{"name":"职业职场","route":"career","tid":209,"ps":15,"rps":10,"desc":"职业分享、升级指南,一起成为最有料的职场人"},{"name":"设计·创意","route":"design","tid":229,"ps":15,"rps":10,"desc":"天马行空,创意设计,都在这里"},{"name":"野生技能协会","route":"skill","tid":122,"ps":15,"rps":10,"desc":"技能党集合,是时候展示真正的技术了"}]},{"name":"科技","route":"tech","tid":188,"locid":2977,"count":"","subMenuSize":80,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2980,"leftId":2978,"rightId":2979},"sub":[{"name":"数码","route":"digital","tid":95,"ps":15,"rps":10,"viewHotTag":true,"desc":"科技数码产品大全,一起来做发烧友","url":"#"},{"name":"软件应用","route":"application","tid":230,"ps":15,"rps":10,"viewHotTag":true,"desc":"超全软件应用指南","url":"#"},{"name":"计算机技术","route":"computer_tech","tid":231,"ps":15,"rps":10,"viewHotTag":true,"desc":"研究分析、教学演示、经验分享......有关计算机技术的都在这里","url":"#"},{"name":"工业·工程·机械","route":"industry","tid":232,"ps":15,"rps":10,"viewHotTag":true,"desc":"前方高能,机甲重工即将出没","url":"#"},{"name":"极客DIY","route":"diy","tid":233,"ps":15,"rps":10,"viewHotTag":true,"desc":"炫酷技能,极客文化,硬核技巧,准备好你的惊讶","url":"#"}]},{"name":"运动","route":"sports","tid":234,"locid":4639,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4646,"rightId":4652,"rightType":"slide"},"sub":[{"name":"篮球·足球","route":"basketballfootball","tid":235,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4656},"desc":"与篮球、足球相关的视频,包括但不限于篮足球赛事、教学、评述、剪辑、剧情等相关内容","url":"#"},{"name":"健身","route":"aerobics","tid":164,"ps":15,"rps":10,"desc":"与健身相关的视频,包括但不限于瑜伽、CrossFit、健美、力量举、普拉提、街健等相关内容","url":"//www.bilibili.com/video/fashion-body-1.html"},{"name":"竞技体育","route":"athletic","tid":236,"ps":15,"rps":10,"desc":"与竞技体育相关的视频,包括但不限于乒乓、羽毛球、排球、赛车等竞技项目的赛事、评述、剪辑、剧情等相关内容","url":"#"},{"name":"运动文化","route":"culture","tid":237,"ps":15,"rps":10,"desc":"与运动文化相关的视频,包络但不限于球鞋、球衣、球星卡等运动衍生品的分享、解读,体育产业的分析、科普等相关内容","url":"#"},{"name":"运动综合","route":"comprehensive","tid":238,"ps":15,"rps":10,"desc":"与运动综合相关的视频,包括但不限于钓鱼、骑行、滑板等日常运动分享、教学、Vlog等相关内容","url":"#"}]},{"name":"汽车","route":"car","tid":223,"locid":4428,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4435,"rightId":4441,"rightType":"slide"},"sub":[{"name":"汽车生活","route":"life","tid":176,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4445},"desc":"分享汽车及出行相关的生活体验类视频","url":"#"},{"name":"汽车文化","route":"culture","tid":224,"ps":15,"rps":10,"desc":"车迷的精神圣地,包括汽车赛事、品牌历史、汽车改装、经典车型和汽车模型等","url":"#"},{"name":"汽车极客","route":"geek","tid":225,"ps":15,"rps":10,"desc":"汽车硬核达人聚集地,包括DIY造车、专业评测和技术知识分享","url":"#"},{"name":"摩托车","route":"motorcycle","tid":240,"ps":15,"rps":10,"desc":"骑士们集合啦","url":"#"},{"name":"智能出行","route":"smart","tid":226,"ps":15,"rps":10,"desc":"探索新能源汽车和未来智能出行的前沿阵地","url":"#"},{"name":"购车攻略","route":"strategy","tid":227,"ps":15,"rps":10,"desc":"丰富详实的购车建议和新车体验","url":"#"}]},{"name":"生活","route":"life","tid":160,"locid":88,"count":"","subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2062,"leftId":1674,"rightId":1670},"sub":[{"name":"搞笑","route":"funny","tid":138,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":273},"desc":"各种沙雕有趣的搞笑剪辑,挑战,表演,配音等视频","url":"//www.bilibili.com/video/ent_funny_1.html","locid":4204,"recommendId":4210,"slider":{"width":620,"height":220},"customComponent":{"name":"Energy","leftId":4212,"rightId":4218,"rightType":"slide"}},{"name":"家居房产","route":"home","tid":239,"ps":15,"rps":10,"desc":"与买房、装修、居家生活相关的分享","url":"#"},{"name":"手工","route":"handmake","tid":161,"ps":15,"rps":10,"desc":"手工制品的制作过程或成品展示、教程、测评类视频","url":"//www.bilibili.com/video/ent-handmake-1.html"},{"name":"绘画","route":"painting","tid":162,"ps":15,"rps":10,"desc":"绘画过程或绘画教程,以及绘画相关的所有视频","url":"//www.bilibili.com/video/ent-painting-1.html"},{"name":"日常","route":"daily","tid":21,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":275},"desc":"记录日常生活,分享生活故事","url":"//www.bilibili.com/video/ent-life-1.html"}]},{"name":"美食","route":"food","tid":211,"locid":4243,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4258,"rightId":4264},"sub":[{"name":"美食制作","route":"make","tid":76,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4268},"desc":"学做人间美味,展示精湛厨艺","url":"#"},{"name":"美食侦探","route":"detective","tid":212,"ps":15,"rps":10,"desc":"寻找美味餐厅,发现街头美食","url":"#"},{"name":"美食测评","route":"measurement","tid":213,"ps":15,"rps":10,"desc":"吃货世界,品尝世间美味","url":"#"},{"name":"田园美食","route":"rural","tid":214,"ps":15,"rps":10,"desc":"品味乡野美食,寻找山与海的味道","url":"#"},{"name":"美食记录","route":"record","tid":215,"ps":15,"rps":10,"desc":"记录一日三餐,给生活添一点幸福感","url":"#"}]},{"name":"动物圈","route":"animal","tid":217,"locid":4365,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4376,"rightId":4381,"rightType":"slide"},"sub":[{"name":"喵星人","route":"cat","tid":218,"ps":15,"rps":10,"desc":"喵喵喵喵喵","url":"#","ad":{"active":true,"dataLocId":4385}},{"name":"汪星人","route":"dog","tid":219,"ps":15,"rps":10,"desc":"汪汪汪汪汪","url":"#"},{"name":"大熊猫","route":"panda","tid":220,"ps":15,"rps":10,"desc":"芝麻汤圆营业中","url":"#"},{"name":"野生动物","route":"wild_animal","tid":221,"ps":15,"rps":10,"desc":"内有“猛兽”出没","url":"#"},{"name":"爬宠","route":"reptiles","tid":222,"ps":15,"rps":10,"desc":"鳞甲有灵","url":"#"},{"name":"动物综合","route":"animal_composite","tid":75,"ps":15,"rps":10,"desc":"收录除上述子分区外,其余动物相关视频以及非动物主体或多个动物主体的动物相关延伸内容","url":"#"}]},{"name":"鬼畜","route":"kichiku","tid":119,"locid":100,"count":"","subMenuSize":182,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2509,"leftId":2482,"rightId":2483},"sub":[{"name":"鬼畜调教","route":"guide","tid":22,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":285},"desc":"使用素材在音频、画面上做一定处理,达到与BGM一定的同步感","url":"//www.bilibili.com/video/ent-Kichiku-1.html"},{"name":"音MAD","route":"mad","tid":26,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":287},"desc":"使用素材音频进行一定的二次创作来达到还原原曲的非商业性质稿件","url":"//www.bilibili.com/video/douga-kichiku-1.html"},{"name":"人力VOCALOID","route":"manual_vocaloid","tid":126,"ps":15,"rps":10,"desc":"将人物或者角色的无伴奏素材进行人工调音,使其就像VOCALOID一样歌唱的技术","url":"//www.bilibili.com/video/kichiku-manual_vocaloid-1.html"},{"name":"鬼畜剧场","route":"theatre","tid":216,"ps":15,"rps":10,"desc":"使用素材进行人工剪辑编排的有剧情的作品"},{"name":"教程演示","route":"course","tid":127,"ps":10,"rps":6,"rightComponent":{"name":"CmImgList","id":148},"ad":{"active":true,"dataLocId":289},"hideDropdown":false,"desc":"鬼畜相关的教程演示","url":"//www.bilibili.com/video/kichiku-course-1.html"}]},{"name":"时尚","route":"fashion","tid":155,"locid":94,"count":"","subMenuSize":124,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2515,"leftId":2492,"rightId":2493},"sub":[{"name":"美妆护肤","route":"makeup","tid":157,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":279},"desc":"彩妆护肤、美甲美发、仿妆、医美相关内容分享或产品测评","url":"//www.bilibili.com/video/fashion-makeup-fitness-1.html"},{"name":"穿搭","route":"clothing","tid":158,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":281},"desc":"穿搭风格、穿搭技巧的展示分享,涵盖衣服、鞋靴、箱包配件、配饰(帽子、钟表、珠宝首饰)等","url":"//www.bilibili.com/video/fashion-clothing-1.html"},{"name":"时尚潮流","route":"trend","tid":159,"ps":15,"rps":10,"desc":"时尚街拍、时装周、时尚大片,时尚品牌、潮流等行业相关记录及知识科普","url":"#"}]},{"name":"资讯","route":"information","tid":202,"locid":4076,"count":"","subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"sub":[{"name":"热点","route":"hotspot","tid":203,"ps":18,"rps":10,"desc":"全民关注的时政热门资讯"},{"name":"环球","route":"global","tid":204,"ps":18,"rps":10,"desc":"全球范围内发生的具有重大影响力的事件动态"},{"name":"社会","route":"social","tid":205,"ps":18,"rps":10,"desc":"日常生活的社会事件、社会问题、社会风貌的报道"},{"name":"综合","route":"multiple","tid":206,"ps":18,"rps":10,"desc":"除上述领域外其它垂直领域的综合资讯"}]},{"name":"娱乐","route":"ent","tid":5,"locid":82,"count":"","subMenuSize":62,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2067,"leftId":2065,"rightId":2066},"sub":[{"name":"综艺","route":"variety","tid":71,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":267},"desc":"所有综艺相关,全部一手掌握!","url":"//www.bilibili.com/video/ent-variety-1.html"},{"name":"娱乐杂谈","route":"talker","tid":241,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":269},"desc":"娱乐人物解读、娱乐热点点评、娱乐行业分析"},{"name":"粉丝创作","route":"fans","tid":242,"ps":15,"rps":10,"desc":"粉丝向创作视频"},{"name":"明星综合","route":"celebrity","tid":137,"ps":15,"rps":10,"desc":"娱乐圈动态、明星资讯相关"}]},{"name":"影视","route":"cinephile","tid":181,"locid":2211,"count":"","subMenuSize":84,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2309,"leftId":2307,"rightId":2308},"sub":[{"name":"影视杂谈","route":"cinecism","tid":182,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2212},"desc":"影视评论、解说、吐槽、科普等","url":"//www.bilibili.com/video/cinephile-cinecism.html"},{"name":"影视剪辑","route":"montage","tid":183,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2213},"desc":"对影视素材进行剪辑再创作的视频","url":"//www.bilibili.com/video/cinephile-montage.html"},{"name":"短片","route":"shortfilm","tid":85,"ps":15,"rps":10,"desc":"追求自我表达且具有特色的短片","url":"//www.bilibili.com/video/cinephile-shortfilm.html"},{"name":"预告·资讯","route":"trailer_info","tid":184,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2214},"desc":"影视类相关资讯,预告,花絮等视频","url":"//www.bilibili.com/video/cinephile-trailer-info.html"}]},{"name":"纪录片","route":"documentary","tid":177,"url":"//www.bilibili.com/documentary/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"人文·历史","tid":37,"route":"history","dise":"","url":"//www.bilibili.com/video/doco-history.html"},{"name":"科学·探索·自然","tid":178,"route":"science","dise":"","url":"//www.bilibili.com/video/doco-science.html"},{"name":"军事","tid":179,"route":"military","dise":"","url":"//www.bilibili.com/video/doco-military.html"},{"name":"社会·美食·旅行","tid":180,"route":"travel","dise":"","url":"//www.bilibili.com/video/doco-travel.html"},{"name":"纪录片索引","url":"//www.bilibili.com/documentary/index/"}]},{"name":"电影","route":"movie","tid":23,"url":"//www.bilibili.com/movie/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"华语电影","tid":147,"route":"chinese","desc":"","url":"//www.bilibili.com/video/movie_chinese_1.html"},{"name":"欧美电影","tid":145,"route":"west","desc":"","url":"//www.bilibili.com/video/movie_west_1.html"},{"name":"日本电影","tid":146,"route":"japan","desc":"","url":"//www.bilibili.com/video/movie_japan_1.html"},{"name":"其他国家","tid":83,"route":"movie","desc":"","url":"//www.bilibili.com/video/movie-movie-1.html"},{"name":"电影索引","url":"//www.bilibili.com/movie/index/"}]},{"name":"电视剧","route":"tv","tid":11,"url":"//www.bilibili.com/tv/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"国产剧","tid":185,"route":"mainland","desc":"","url":"//www.bilibili.com/video/tv-mainland.html"},{"name":"海外剧","tid":187,"route":"overseas","desc":"","url":"//www.bilibili.com/video/tv-overseas.html"},{"name":"电视剧索引","url":"//www.bilibili.com/tv/index/"}]},{"name":"虚拟UP主","route":"virtual","locid":4735,"count":"","isHide":true,"subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":4754,"leftId":4756},"sub":[{"name":"游戏","route":"game","tid":4,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/game"},{"name":"音乐","route":"music","tid":3,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/music"},{"name":"动画","route":"douga","tid":1,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/douga"},{"name":"其他","route":"other","tid":0,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/other"}]}],[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}],[{"name":"会员购","url":"//show.bilibili.com/platform/home.html","icon":"icon-vip-buy"},{"name":"游戏中心","url":"//game.bilibili.com","icon":"icon-game"},{"name":"画友","url":"http://h.bilibili.com","icon":"icon-hy"},{"name":"芒果TV","url":"//www.bilibili.com/mango","icon":"icon-mango"}],[{"name":"专栏","report":"article","url":"//www.bilibili.com/read/home","icon":"read"},{"name":"直播","report":"live","url":"//live.bilibili.com","icon":"live","sub":[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}]},{"name":"活动","report":"activity","url":"//www.bilibili.com/blackboard/activity-list.html","icon":"activit"},{"name":"课堂","report":"cheese","url":"//www.bilibili.com/cheese/","icon":"zhishi"},{"name":"小黑屋","report":"blackroom","url":"//www.bilibili.com/blackroom/","icon":"blackroom"},{"name":"新歌热榜","report":"musicplus","url":"//www.bilibili.com/v/musicplus/","icon":"musicplus"}]]'),no=e=>e.startsWith("//")?`https:${e}`:e.replace("http:","https:"),oo=to[0].filter((e=>"string"!=typeof e.tid)),io=to[3],ro={};oo.forEach((e=>{const t=no(e.url||`https://www.bilibili.com/v/${e.route}/`);ro[e.name]={icon:e.route,route:e.route,code:e.tid,link:t,subCategories:e.sub?Object.fromEntries(e.sub.map((t=>{const n=no(t.route?`https://www.bilibili.com/v/${e.route}/${t.route}/`:t.url);return[t.name,n]}))):null}})),io.forEach((e=>{ro[e.name]={icon:e.icon,code:null,route:e.route,link:no(e.url),subCategories:e.sub?Object.fromEntries(e.sub.map((e=>[e.name,no(e.url)]))):null}}));const ao=ro,co=Object.fromEntries(oo.map((e=>[e.route,e.tid]))),so=Object.fromEntries(Object.values(ro).map((e=>[e.icon,e.link]))),lo=async()=>{if(document.getElementById("be-category-icons"))return;const{default:e}=await Promise.resolve().then(n.t.bind(n,3066,17));document.body.insertAdjacentHTML("beforeend",e)};var mo=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"translate-container"},[e.working||e.translated?e._e():t("div",{staticClass:"translate",on:{click:function(t){return e.translate()}}},[t("VIcon",{attrs:{size:14,icon:"mdi-earth"}}),e._v("翻译\n ")],1),e._v(" "),e.translated?t("div",{staticClass:"translated"},[t("a",{attrs:{href:e.activeTranslator&&e.activeTranslator.link,target:"_blank"}},[e._v(" 翻译自 ")]),e._v(" "),t("VDropdown",{attrs:{items:Object.values(e.translateProviders),value:e.activeTranslator,"key-mapper":e=>e.name},on:{change:function(t){return e.changeTranslator(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t.name)+"\n ")]}}],null,!1,1956376614)})],1):e._e(),e._v(" "),e.working?t("VIcon",{staticClass:"translating mdi-spin",attrs:{size:18,icon:"mdi-loading"}}):e._e(),e._v(" "),!e.working&&e.translated?t("div",{staticClass:"translate-result",domProps:{textContent:e._s(e.result)}}):e._e()],1)};mo._withStripped=!0;var fo=n(2951);const uo=Vue.extend({components:{VDropdown:be.VDropdown,VIcon:be.VIcon},props:{text:{type:String,required:!0}},data:()=>({result:"",working:!1,translateProviders:fo.WK,activeTranslator:{}}),computed:{translated(){return""!==this.result}},mounted(){document.body.classList.add("machine-translator-enabled")},methods:{changeTranslator(e){(0,J.getComponentSettings)("i18n").options.translator=e.name,this.translate()},async translate(){try{this.working=!0;const e=this.text.replace(/#(.+?)#/g,"");this.activeTranslator=(0,fo.Ty)();const t=this.activeTranslator;this.result=await t.translate(e)}catch(e){(0,de.logError)(e)}finally{this.working=!1}}}});var po=n(6115),bo=n.n(po),ho={insert:"head",singleton:!1};lt()(bo(),ho);bo().locals;const go=(0,ut.Z)(uo,mo,[],!1,null,null,null).exports,Fo=e=>{void 0===e.radio&&(e.radio=!1);const{name:t,switches:o}=e,i={};return Object.entries(o).forEach((e=>{let[t,{displayName:n,defaultValue:o}]=e;i[`switch-${t}`]={defaultValue:o,displayName:n,hidden:!0}})),o=>{const r=`${o.displayName}选项`,a={componentName:o.name,optionDisplayName:r};Object.assign(e,a),i[t]={defaultValue:e,displayName:r},o.options={...o.options,...i},o.widget||(o.widget={component:()=>Promise.resolve().then(n.bind(n,3861)).then((e=>e.default)),options:e});const c=o.entry;return o.entry=async function(){for(var e=arguments.length,t=new Array(e),n=0;n{e.startsWith("switch-")&&(0,J.addComponentListener)(`${i}.${e}`,(t=>{document.body.classList.toggle(`${i}-${e}`,t)}),!0)}))},o}},vo=e=>e,wo=e=>e,yo=e=>{const t=(e=>{const t={},n=Object.entries(e);for(const[e,{displayName:o,defaultValue:i}]of n)t[`switch-${e}`]={defaultValue:i,displayName:o,hidden:!0};return(e,n)=>(t[n.name]={defaultValue:n,displayName:n.optionDisplayName},{...e,...t})})(e.switches);return o=>{const i=((e,t,n)=>({...e,radio:void 0!==e.radio&&e.radio,dimAt:e.dimAt,componentName:t,optionDisplayName:n}))(e,o.name,`${o.displayName}选项`);return o.widget||(o.widget=(e=>({component:()=>Promise.resolve().then(n.bind(n,3861)).then((e=>e.default)),options:e}))(i)),o.options=t(o.options,i),o.entry=(e=>{const t=e.entry;return function(){const n=t(...arguments),o=(0,J.getComponentSettings)(e.name).options;return Object.keys(o).forEach((t=>{t.startsWith("switch-")&&(0,J.addComponentListener)(`${e.name}.${t}`,(n=>{document.body.classList.toggle(`${e.name}-${t}`,n)}),!0)})),n}})(o),o}},xo=yo;const ko={builtInComponents:he,component:ge,userComponent:Fe,styledComponent:c,define:ye,description:xe,switchOptions:E,launchBar:{LaunchBar:n(7147).Z},feeds:{api:l,BangumiCard:pt,UpInfo:wt,VideoCard:Et,ColumnCard:Mt,disableProfilePopup:d,notify:m},video:{assUtils:f,playerLight:p,playerAgent:rn,videoActions:b,videoDanmaku:h,videoInfo:g,videoQuality:F,videoContextMenu:v,videoControlBar:w,videoCover:y,watchlater:s,xmlUtils:u},live:{liveControlBar:x,liveSocket:k},utils:{commentApis:C,categories:{updater:eo,data:A}},i18N:{machineTranslator:{MachineTranslator:go}}};var Co=n(473),Ao=n(9094),Eo=n(68);const Bo={style:Co,plugin:Ao,data:Ee,hook:Eo},Do={ajax:B,cdnTypes:D,download:I,dialog:z,externalInput:S,filePicker:M,installFeature:P,horizontalScroll:o,lifeCycle:V,loadingMode:T,localStorage:L,meta:j,observer:R,reorder:i,runtimeLibrary:Q,spinQuery:Y,style:X,textColor:K,userInfo:r,version:ee,settings:J,toast:ue,themeColor:pe,utils:{...te,constants:ne,formatters:oe,title:ie,i18n:re,lazyPanel:a,log:de,sort:me,urls:fe},ui:be,componentApis:ko,pluginApis:Bo},Io={ajax:B,...D,...I,...z,...S,...M,...P,...o,lifeCycle:V,...T,...L,...j,observer:R,...i,runtimeLibrary:Q,spinQuery:Y,...X,...K,...r,...ee,settingsApis:J,get settings(){return J.settings},...ue,utils:{...te,...ne,...oe,...ie,...re,...a,...de,...me,...fe},ui:be,componentApis:{...ko.component,...ko.userComponent,...ko.styledComponent,...ko.launchBar,...lodash.omit(ko,"component","userComponent","styledComponent","launchBar")},pluginApis:{...Bo.style,...Bo.plugin,...Bo.data,...Bo.hook},monkeyApis:{GM_setValue,GM_getValue,GM_deleteValue,GM_xmlhttpRequest,GM_info},lodash,Vue,sandboxWindow:window,theWorld:e=>{setTimeout((()=>{}),e)}}},5167:(e,t,n)=>{"use strict";n.r(t),n.d(t,{showDialog:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-dialog",class:{open:e.open},style:{zIndex:e.zIndex}},[t("div",{staticClass:"be-dialog-header"},[e.icon?t("div",{staticClass:"be-dialog-header-icon"},[t("VIcon",{attrs:{icon:e.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"be-dialog-header-title"},["string"==typeof e.title?[e._v(e._s(e.title))]:t(e.title,{tag:"component"})],2),e._v(" "),t("div",{staticClass:"be-dialog-header-close"},[t("VButton",{attrs:{type:"transparent"},on:{click:function(t){return e.close()}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1)]),e._v(" "),t("div",{staticClass:"be-dialog-content"},["string"==typeof e.content?[e._v(e._s(e.content))]:e.content?t(e.content,e._b({tag:"component",on:{"dialog-close":function(t){return e.close()}}},"component",e.contentProps,!1)):e._e()],2)])};o._withStripped=!0;var i=n(2570);const r=Vue.extend({components:{VIcon:i.VIcon,VButton:i.VButton},props:{icon:{type:String,default:""},title:{default:null},zIndex:{type:Number,default:100002},content:{default:null},contentProps:{default:()=>({})}},data:()=>({open:!1,closeListeners:[]}),methods:{close(){return new Promise((e=>{const t=this.$el,n=this.closeListeners;n.push((()=>{this.$emit("close"),e()}));const o=e=>{e.target===this.$el&&(t.removeEventListener("transitionend",o),n.forEach((e=>e())))};t.addEventListener("transitionend",o),this.open=!1}))}}});var a=n(8332),c=n.n(a),s=n(1358),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports,f=e=>{const{icon:t,title:n,zIndex:o,content:i,contentProps:r}=e,a=new m({propsData:{icon:t,title:n,zIndex:o,content:i,contentProps:r},data:{open:!1,closeListeners:[()=>{a.$destroy(),a.$el.remove()}]}}).$mount();return document.body.appendChild(a.$el),setTimeout((()=>{a.open=!0})),a}},6932:(e,t,n)=>{"use strict";n.d(t,{h:()=>o});let o=function(e){return e.Packed="打包下载",e.Individual="单独下载",e}({})},3720:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DownloadPackage:()=>d});var o=n(6932),i=n(1003),r=n(5067),a=n(9083),c=n(4732),s=n(8612);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.entries=e,l(this,"noEscape",!1)}add(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};null!=t&&this.entries.push({name:this.noEscape?e:(0,a.formatFilename)(e),data:t,options:n})}async blob(){const e=(0,c.useScopedConsole)("文件打包");if(0===this.entries.length)return null;if(1===this.entries.length){const{data:e}=this.entries[0];return"string"==typeof e?new Blob([e]):e}const t=new(await i.JSZipLibrary),n=e=>t.filter(((t,n)=>n.name===e)).length>0;return this.entries.forEach((o=>{let{name:i,data:r,options:a}=o;if(n(i)){let o=i;for(;n(o);){const e=i.lastIndexOf(".");o=`${i.substring(0,e)}.${(0,s.getRandomId)(8)}${i.substring(e)}`}return e.warn(`文件名 "${i}" 和已有文件冲突, 已临时更换为 "${o}"`),void t.file(o,r,a)}t.file(i,r,a)})),t.generateAsync({type:"blob"})}async emit(e){if(0===this.entries.length)return;e&&1!==this.entries.length||(e=this.entries[0].name);if((0,r.getGeneralSettings)().downloadPackageEmitMode===o.h.Individual&&this.entries.length>1)return void await Promise.all(this.entries.map((e=>d.single(e.name,e.data,e.options))));const t=await this.blob();t&&d.download(e,t)}static download(e,t){const n=(0,c.useScopedConsole)("文件下载"),o=document.createElement("a"),i=URL.createObjectURL(t);d.lastPackageUrl&&URL.revokeObjectURL(d.lastPackageUrl),d.lastPackageUrl=i;const r=(0,a.formatFilename)(e);o.setAttribute("href",i),o.setAttribute("download",r),n.log(r),document.body.appendChild(o),o.addEventListener("click",(e=>{e.stopPropagation()}),{capture:!0}),o.click(),o.remove()}static async single(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=new d;return o.add(e,t,n),o.emit()}}l(d,"lastPackageUrl","")},1841:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LoadFeatureCodeError:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.LoadFeatureCodeError,loadFeatureCode:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.loadFeatureCode,parseExternalInput:()=>parseExternalInput});var _core_file_picker__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(7120),_load_feature_code__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(5705);const parseExternalInput=async input=>{if(void 0===input){const files=await(0,_core_file_picker__WEBPACK_IMPORTED_MODULE_0__.pickFile)({accept:"application/json"});if(!(files.length>0))return console.error("[parseExternalInput] No file selected"),null;{const[file]=files,text=await file.text();try{return eval(`(${text})`)}catch(e){return console.error(e),null}}}else{if("string"!=typeof input)return input;try{const exports={},result=eval(input);if(Object.values(exports).length>0){const e=Object.values(exports)[0];return e}return result}catch(e){return console.error(e),null}}}},5705:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadFeatureCodeError:()=>o,loadFeatureCode:()=>r});class o extends Error{}let i;const r=e=>{i||(i=(()=>{const e=new Map([[Symbol.unscopables,void 0],["unsafeWindow",unsafeWindow]]),t=new Proxy(Object.create(null),{has:()=>!0,get:(t,n)=>e.has(n)?e.get(n):window[n],set:(t,n,o)=>!e.has(n)&&(window[n]=o)}),n="BILIBILI_EVOLVED_LOAD_FEATURE_CODE_CODE_KEY_3B63D912__",i=Function("window",`with (window) {\n return eval(${n}) \n }`).bind(void 0,t);return{run(t){let r;e.set("exports",{}),e.set(n,t);try{r=i()}catch(e){throw new o(void 0,{cause:e})}const a=Object.values(e.get("exports"));return[a.length>0?a[0]:void 0,r]}}})());const[t,n]=i.run(e);return t||n}},7120:(e,t,n)=>{"use strict";let o,i;n.r(t),n.d(t,{pickFile:()=>a});const r={accept:"*",multiple:!1},a=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;const{accept:t,multiple:n}={...r,...e};o||(o=document.createElement("input"),o.type="file",o.style.display="none",document.body.appendChild(o),o.addEventListener("change",(()=>{i?.([...o.files]),i=null}))),o.accept=t,o.multiple=n,o.value="",i&&i([]);const a=await new Promise((e=>{i=e,o.click()}));return a}},9761:(e,t,n)=>{"use strict";n.r(t),n.d(t,{installFeature:()=>l,installFeatureFromCode:()=>s,tryParseZip:()=>c});var o=n(4227),i=n(68),r=n(9094),a=n(473);const c=async e=>{const{JSZipLibrary:t}=await Promise.resolve().then(n.bind(n,1003)),{monkey:o}=await Promise.resolve().then(n.bind(n,5267)),i=e.endsWith(".zip"),r=i?"blob":"text",a=await o({url:e,method:"GET",responseType:r});if(!i||"string"==typeof a)return a;const c=await t,s=await c.loadAsync(a),l=Object.values(s.files);if(0===l.length)throw new Error("Empty zip file");return l[0].async("text")},s=async(e,t)=>{const{loadFeatureCode:c}=await Promise.resolve().then(n.bind(n,1841)),s=c(e),{type:l,installer:d}=(()=>{if((e=>Boolean(e?.entry))(s))return{type:"component",installer:()=>(0,o.installComponent)(e)};if((e=>Boolean(e?.setup))(s))return{type:"plugin",installer:()=>(0,r.installPlugin)(e)};if((e=>Boolean(e?.style))(s))return{type:"style",installer:()=>(0,a.installStyle)(e)};throw new Error("无效的功能代码")})(),{before:m,after:f}=(0,i.getHook)(`user${lodash.startCase(l)}s.add`,e,t);await m();const u=await d();return await f(u.metadata),u},l=async e=>{const t=await c(e);return s(t,e)}},1197:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LifeCycleEventTypes:()=>c,contentLoaded:()=>r,fullyLoaded:()=>a,headLoaded:()=>i,raiseLifeCycleEvent:()=>s});var o=n(2545);const i=e=>new Promise((t=>{if(null!==document.head)t(e());else{const[n]=(0,o.childList)(document.documentElement,(()=>{null!==document.head&&(n.disconnect(),t(e()))}))}})),r=e=>new Promise((t=>{"loading"!==document.readyState?t(e()):document.addEventListener("DOMContentLoaded",(()=>t(e())))})),a=e=>new Promise((t=>{"complete"===document.readyState?t(e()):unsafeWindow.addEventListener("load",(()=>t(e())))}));let c=function(e){return e.Start="be:start",e.StyleLoaded="be:style-loaded",e.ComponentsLoaded="be:components-loaded",e.End="be:end",e}({});const s=e=>{unsafeWindow.dispatchEvent(new CustomEvent(e))}},9770:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadingMode:()=>o});let o=function(e){return e.Delay="延后",e.Race="同时",e}({})},9047:(e,t,n)=>{"use strict";n.r(t),n.d(t,{crossOriginLocalStorage:()=>l,watchLocalStorage:()=>f});var o=n(3311),i=n(8612);const r=async e=>{const t=await(0,o.select)('iframe[src^="https://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html"][data-loaded="true"]');if(!t)throw new Error("COLS iframe not found");t.contentWindow.postMessage(e,"https://s1.hdslb.com")},a=[],c=[];window.addEventListener("message",(e=>{if("COLS_RES"===e.data.type){const t=e.data,{id:n}=t,o=()=>{const e=c.findIndex((e=>e.id===n));e<0||c[e].callback(t.value)};(()=>{const e=a.findIndex((e=>e.id===n));if(e<0)return;const[o]=a.splice(e,1);o.resolve(t.value)})(),o()}}));const s=e=>()=>new Promise((t=>{const n=(0,i.getRandomId)(32);a.push({id:n,resolve:t}),e(n)})),l={setItem:(e,t)=>s((n=>{r({id:n,type:"COLS_SET",key:e,value:t})}))(),getItem:e=>s((t=>{r({id:t,type:"COLS_GET",key:e})}))(),removeItem:e=>s((t=>{r({id:t,type:"COLS_RM",key:e})}))(),keys:e=>s((t=>{r({id:t,type:"COLS_KEYS",key:e})}))(),clear:e=>s((t=>{r({id:t,type:"COLS_CLR",key:e})}))(),addStorageListener:async(e,t)=>{const n=(0,i.getRandomId)(32);return c.push({id:n,callback:t}),r({type:"COLS_LIS",key:e,id:n}),n},removeStorageListener:async(e,t)=>{(0,i.deleteValue)(c,(e=>e.id===t)),r({type:"COLS_LIS_UN",key:e,id:t})}},d=[];let m=!1;const f=e=>{m||((0,i.createPostHook)(unsafeWindow.localStorage,"setItem",((e,t)=>{d.forEach((n=>n(e,t)))})),m=!0),d.push(e);const t=t=>{e(t.key,t.newValue)};return window.addEventListener("storage",t),()=>{const n=d.indexOf(e);n>-1&&d.splice(n,1),window.removeEventListener("storage",t)}}},2046:(e,t,n)=>{"use strict";n.r(t),n.d(t,{branches:()=>a,meta:()=>s});var o=n(113),i=n(7274),r=n(6204).compilationInfo;o.copyright=o.copyright.replace(/\[year\]/g,(new Date).getFullYear().toString());const a={stable:"master",stableCdn:"master-cdn",preview:"preview"},c=r,s={compilationInfo:c,name:GM_info.script.name,description:GM_info.script.description,get originalFilename(){const{branch:e}=c;return e===a.preview?`bilibili-evolved.${a.preview}.user.js`:"bilibili-evolved.user.js"},get updateURL(){return`${i.cdnRoots.AltCdn(c.branch)}dist/${this.originalFilename}`},get downloadURL(){return this.updateURL},...o}},2545:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allMutations:()=>h,allMutationsOn:()=>p,attributes:()=>d,attributesSubtree:()=>m,characterData:()=>f,characterDataSubtree:()=>u,childList:()=>s,childListSubtree:()=>l,intersectionObserve:()=>g,mutationObserve:()=>c,resizeObserve:()=>w,resolveTargets:()=>a,sizeChange:()=>y,urlChange:()=>k,videoChange:()=>E,visible:()=>F,visibleInside:()=>v});var o=n(8612),i=n(3311),r=n(146);const a=e=>"string"==typeof e?(0,o.dqa)(e):Array.isArray(e)?e:[e],c=(e,t,n)=>{const o=new MutationObserver(n);return e.forEach((e=>o.observe(e,t))),n([],o),[o,t]},s=(e,t)=>c(a(e),{childList:!0,subtree:!1,attributes:!1},t),l=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!1},t),d=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!0},t),m=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!0},t),f=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!1,characterData:!0},t),u=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!1,characterData:!0},t),p=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!0,characterData:!0},t),b={observer:null,config:null,callbacks:[]},h=e=>{if(b.observer)b.callbacks.push(e);else{b.callbacks.push(e);const[t,n]=p(document.body,(e=>b.callbacks.forEach((t=>t(e,b.observer)))));b.observer=t,b.config=n}return b},g=(e,t,n)=>{const o=new IntersectionObserver(n,t);return e.forEach((e=>o.observe(e))),[o,t]},F=(e,t)=>g(a(e),{},t),v=(e,t,n,o)=>g(a(e),{root:t,rootMargin:n},o),w=(e,t,n)=>{const o=new ResizeObserver(n);return e.forEach((e=>o.observe(e,t))),[o,t]},y=(e,t)=>w(a(e),{box:"border-box"},t),x=lodash.once((()=>{let e=document.URL;h((()=>{e!==document.URL&&((()=>{const e=new CustomEvent("urlChange",{detail:document.URL});window.dispatchEvent(e)})(),e=document.URL)}))})),k=(e,t)=>{x(),e(document.URL),window.addEventListener("urlChange",(()=>e(document.URL)),t)},C=lodash.once((()=>(0,i.select)((()=>unsafeWindow.cid?unsafeWindow.cid:null))));let A=!1;const E=async(e,t)=>{if(!(0,r.matchCurrentPage)(r.playerUrls))return!1;const n=await C();if(null===n)return!1;const o=()=>({aid:unsafeWindow.aid,cid:unsafeWindow.cid});if(!A){let e=n;h((()=>{const{cid:t}=o();Array.isArray(t)||e===t||lodash.isNil(t)||((()=>{const e=o(),t=new CustomEvent("videoChange",{detail:e});window.dispatchEvent(t)})(),e=t)})),A=!0}return e(o()),window.addEventListener("videoChange",(t=>e(t.detail)),t),!0}},2857:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentLoadTime:()=>o,componentLoadTrace:()=>r,componentResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,5067));if(!t().devMode)return;const r=e.entry;e.entry=async e=>{const{metadata:t}=e,n=performance.now();let a=r(e);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(t,c-n),i.set(t,s-n),a}}},1926:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pluginLoadTime:()=>o,pluginLoadTrace:()=>r,pluginResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,5067));if(!t().devMode)return;const r=e.setup;e.setup=async t=>{const n=performance.now();let a=r(t);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(e,c-n),i.set(e,s-n),a}}},9941:(e,t,n)=>{"use strict";n.r(t),n.d(t,{promiseLoadTime:()=>o,promiseLoadTrace:()=>r,promiseResolveTime:()=>i});const o=new Map,i=new Map,r=async(e,t)=>{const{getGeneralSettings:r}=await Promise.resolve().then(n.bind(n,5067));if(!r().devMode)return t();const a=performance.now(),c=t(),s=performance.now(),l=await c,d=performance.now();return o.set({name:e},s-a),i.set({name:e},d-a),l}},5043:(e,t,n)=>{"use strict";n.r(t),n.d(t,{logStats:()=>o});const o=(e,t)=>{const n=[...t.entries()],o=n.reduce(((e,t)=>e+t[1]),0);console.groupCollapsed(`${e} time:`,Math.round(100*o)/100+"ms",`for ${n.length} items`),n.forEach((e=>{let[t,n]=e;console.log(`%c${t.name} %c${Math.round(100*n)/100}ms ${Math.round(n/o*1e4)/100}% %c`,"color: #00A0D8","color: #888","color: unset")})),console.groupEnd()}},1003:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{JSZipLibrary:()=>JSZipLibrary,RuntimeLibrary:()=>RuntimeLibrary,SortableJSLibrary:()=>SortableJSLibrary,StreamSaverLibrary:()=>StreamSaverLibrary,protobufLibrary:()=>protobufLibrary});var _ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5267),_meta__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2046);function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"==typeof t?t:String(t)}function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class RuntimeLibrary{constructor(e){this.config=e,_defineProperty(this,"modulePromise",void 0)}async then(resolve,reject){try{const{url,getModule}=this.config;this.modulePromise||(this.modulePromise=(async()=>{console.log(`[Runtime Library] Start download from ${url}`);const code=await(0,_ajax__WEBPACK_IMPORTED_MODULE_0__.monkey)({url});return console.log(`[Runtime Library] Downloaded from ${url} , length = ${code.length}`),function runEval(){return eval(code); +/* eslint-disable no-underscore-dangle */(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Gn extends Nn{constructor(e){super(e),Wn(this,"vnodeManager",void 0),this.vnodeManager=new Hn(this.getVNodeRoot(e)),this.vnodeManager.isEnd=e=>e.props?.reply?0===e.props?.reply.replies.length:Boolean(e.props?.subReply)}beforeParse(e){const t=new Set;e.forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e)),dqa(e,".sub-reply-item").forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e))}))})),t.forEach((e=>this.vnodeManager.exposeVNode(e._vnode)))}getReplyFromVueProps(e){const t=e._vnode?.props;return t?.reply??t?.subReply}getReplyItemElement(e,t){const[n]=dqa(e,".sub-reply-item").filter((e=>this.getReplyFromVueProps(e).rpid_str===t));return n}getVNodeRoot(e){return e.__vue_app__?e:e.parentElement.__vue_app__?e.parentElement:null}addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".operation-list"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o,"operation-option"),a.innerHTML=`${i}`,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=this.getReplyFromVueProps(e);if(!t)throw new Error("Invalid comment item");const n=()=>t.replies?t.replies.map((n=>new Tn({id:n.rpid_str,element:this.getReplyItemElement(e,n.rpid_str),userId:n.member.mid,userName:n.member.uname,content:n.content.message,time:1e3*n.ctime,likes:n.like,vueProps:t}))):[],o=new jn({id:t.rpid_str,element:e,userId:t.member.mid,userName:t.member.uname,content:t.content.message,time:1e3*t.ctime,likes:t.like,pictures:t.content?.pictures?.map((e=>e.img_src)),replies:n(),vueProps:t});if(o.replies.length{performance.mark(`parseReplies start ${o.id}`);const t=[];e.forEach((e=>{e.addedNodes.forEach((e=>{e instanceof HTMLElement&&e.matches(".sub-reply-item")&&t.push(e)}))})),0!==t.length&&(this.beforeParse(t),o.replies=n(),0!==e.length&&o.dispatchRepliesUpdate(o.replies),performance.mark(`parseReplies end ${o.id}`),performance.measure(`parseReplies ${o.id}`,`parseReplies start ${o.id}`,`parseReplies end ${o.id}`))}))}return o}getCommentId(e){const t=this.getReplyFromVueProps(e);if(!t?.rpid_str)throw new Error("Invalid comment item");return t.rpid_str}static isV2Area(e){return e.__vue_app__||e.parentElement?.__vue_app__}}const Qn=e=>Gn.isV2Area(e)?new Gn(e):new qn(e);function Yn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Xn{constructor(){Yn(this,"commentAreas",[]),Yn(this,"commentAreaCallbacks",[])}init(){(0,R.allMutations)((e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.observeAreas(e)))}))})),dqa(Xn.commentAreaClasses.map((e=>`.${e}`)).join(",")).forEach((e=>this.observeAreas(e)))}observeAreas(e){if(e instanceof HTMLElement&&Xn.commentAreaClasses.some((t=>e.classList.contains(t)))){const t=Qn(e);this.commentAreas.push(t),t.observeItems(),this.commentAreaCallbacks.forEach((e=>e.added?.(t)));const[n]=(0,R.childList)(t.element.parentElement,(e=>{e.forEach((e=>{e.removedNodes.forEach((e=>{e===t.element&&((0,te.deleteValue)(this.commentAreas,(e=>e===t)),this.commentAreaCallbacks.forEach((e=>e.removed?.(t))),t.destroy(),n.disconnect())}))}))}))}}forEachCommentArea(e){const t=Nn.resolveCallbackPair(e);this.commentAreas.forEach((e=>t.added?.(e))),this.commentAreaCallbacks.push(t)}forEachCommentItem(e){this.forEachCommentArea((t=>t.forEachCommentItem(e)))}}Yn(Xn,"commentAreaClasses",["bili-comment","bb-comment"]);const Kn=new Xn;(0,V.contentLoaded)((()=>{Kn.init()}));const Jn=e=>{Kn.forEachCommentArea(e)},_n=e=>{Kn.forEachCommentItem(e)},$n=(e,t)=>{Kn.forEachCommentArea((n=>n.addMenuItem(e,t)))};var eo=n(7748);const to=JSON.parse('[[{"name":"首页","route":"/","tid":"","locid":23,"sub":[]},{"name":"动画","route":"douga","tid":1,"locid":52,"count":"","subMenuSize":162,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2507,"leftId":2452,"rightId":2453},"sub":[{"name":"MAD·AMV","route":"mad","tid":24,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":151},"desc":"具有一定制作程度的动画或静画的二次创作视频","url":"//www.bilibili.com/video/douga-mad-1.html"},{"name":"MMD·3D","route":"mmd","tid":25,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":152},"desc":"使用MMD(MikuMikuDance)和其他3D建模类软件制作的视频","url":"//www.bilibili.com/video/douga-mmd-1.html"},{"name":"短片·手书·配音","route":"voice","tid":47,"ps":15,"rps":10,"desc":"追求创新并具有强烈特色的短片、手书(绘)及ACG相关配音","url":"//www.bilibili.com/video/douga-voice-1.html"},{"name":"手办·模玩","route":"garage_kit","tid":210,"ps":15,"rps":10,"desc":"手办模玩的测评、改造或其他衍生内容","url":""},{"name":"特摄","route":"tokusatsu","tid":86,"ps":15,"rps":10,"desc":"特摄相关衍生视频","url":"//www.bilibili.com/video/cinephile-tokusatsu.html"},{"name":"综合","route":"other","tid":27,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":153},"desc":"以动画及动画相关内容为素材,包括但不仅限于音频替换、杂谈、排行榜等内容","url":"//www.bilibili.com/video/douga-else-1.html"}]},{"name":"番剧","route":"anime","tid":13,"url":"//www.bilibili.com/anime/","takeOvered":true,"count":"","subMenuSize":172,"combination":true,"sub":[{"name":"连载动画","tid":33,"route":"serial","desc":"当季连载的动画番剧","url":"//www.bilibili.com/video/bangumi-two-1.html"},{"name":"完结动画","tid":32,"route":"finish","desc":"已完结的动画番剧合集","url":"//www.bilibili.com/video/part-twoelement-1.html"},{"name":"资讯","tid":51,"route":"information","desc":"动画番剧相关资讯视频","url":"//www.bilibili.com/video/douga-else-information-1.html"},{"name":"官方延伸","tid":152,"route":"offical","desc":"动画番剧为主题的宣传节目、采访视频,及声优相关视频","url":"//www.bilibili.com/video/bagumi_offical_1.html"},{"name":"新番时间表","url":"//www.bilibili.com/anime/timeline/","desc":""},{"name":"番剧索引","url":"//www.bilibili.com/anime/index/","desc":""}]},{"name":"国创","tid":167,"route":"guochuang","url":"//www.bilibili.com/guochuang/","takeOvered":true,"count":"","subMenuSize":214,"combination":true,"sub":[{"name":"国产动画","tid":153,"route":"chinese","desc":"我国出品的PGC动画","url":"//www.bilibili.com/video/bangumi_chinese_1.html"},{"name":"国产原创相关","tid":168,"route":"original","desc":"","url":"//www.bilibili.com/video/guochuang-fanvid-1.html"},{"name":"布袋戏","tid":169,"route":"puppetry","desc":"","url":"//www.bilibili.com/video/glove-puppetry-1.html"},{"name":"动态漫·广播剧","tid":195,"route":"motioncomic","desc":"","url":""},{"name":"资讯","tid":170,"route":"information","desc":"","url":"//www.bilibili.com/video/guochuang-offical-1.html"},{"name":"新番时间表","url":"//www.bilibili.com/guochuang/timeline/","desc":""},{"name":"国产动画索引","url":"//www.bilibili.com/guochuang/index/","desc":""}]},{"name":"音乐","route":"music","tid":3,"locid":58,"count":"","subMenuSize":268,"slider":{"width":620,"height":220},"viewTag":true,"customComponent":{"name":"Energy","titleId":2511,"leftId":2462,"rightId":3131,"rightType":"slide"},"sub":[{"name":"原创音乐","route":"original","tid":28,"ps":15,"rps":10,"viewHotTag":true,"ad":{"active":true,"dataLocId":243},"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"个人或团队制作以音乐为主要原创因素的歌曲或纯音乐","url":"//www.bilibili.com/video/music-original-1.html"},{"name":"翻唱","route":"cover","tid":31,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":245},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"一切非官方的人声再演绎歌曲作品","url":"//www.bilibili.com/video/music-Cover-1.html"},{"name":"VOCALOID·UTAU","route":"vocaloid","tid":30,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以雅马哈Vocaloid和UTAU引擎为基础,包含其他调教引擎,运用各类音源进行的歌曲创作内容","url":"//www.bilibili.com/video/music-vocaloid-1.html"},{"name":"电音","route":"electronic","tid":194,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以电子合成器、音乐软体等产生的电子声响制作的音乐","url":"#"},{"name":"演奏","route":"perform","tid":59,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":247},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"传统或非传统乐器及器材的演奏作品","url":"//www.bilibili.com/video/music-perform-1.html"},{"name":"MV","route":"mv","tid":193,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐录影带,为搭配音乐而拍摄或制作的视频","url":"//www.bilibili.com/video/music-coordinate-1.html"},{"name":"音乐现场","route":"live","tid":29,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐实况表演视频","url":"//www.bilibili.com/video/music-oped-1.html"},{"name":"音乐综合","route":"other","tid":130,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"收录无法定义到其他音乐子分区的音乐视频","url":"//www.bilibili.com/video/music-collection-1.html"},{"name":"音频","customZone":"Audio","route":"audio","url":"//www.bilibili.com/audio/home?musicType=music"},{"name":"说唱","url":"//www.bilibili.com/v/rap"}]},{"name":"舞蹈","route":"dance","tid":129,"locid":64,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2513,"leftId":2472,"rightId":2473},"sub":[{"name":"宅舞","route":"otaku","tid":20,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":249},"desc":"与ACG相关的翻跳、原创舞蹈","url":"//www.bilibili.com/video/dance-1.html"},{"name":"街舞","route":"hiphop","tid":198,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":251},"desc":"收录街舞相关内容,包括赛事现场、舞室作品、个人翻跳、FREESTYLE等","url":""},{"name":"明星舞蹈","route":"star","tid":199,"ps":15,"rps":10,"desc":"国内外明星发布的官方舞蹈及其翻跳内容","url":""},{"name":"中国舞","route":"china","tid":200,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":253},"desc":"传承中国艺术文化的舞蹈内容,包括古典舞、民族民间舞、汉唐舞、古风舞等","url":""},{"name":"舞蹈综合","route":"three_d","tid":154,"ps":15,"rps":10,"desc":"收录无法定义到其他舞蹈子分区的舞蹈视频","url":""},{"name":"舞蹈教程","route":"demo","tid":156,"ps":10,"rps":6,"desc":"镜面慢速,动作分解,基础教程等具有教学意义的舞蹈视频","url":"//www.bilibili.com/video/dance-demo-1.html"}]},{"name":"游戏","route":"game","tid":4,"locid":70,"count":"","subMenuSize":240,"slider":{"width":470,"height":216},"viewTag":true,"customComponent":{"name":"Energy","titleId":3761,"leftId":3765,"rightId":3775,"rightType":"slide"},"recommendCardType":"GameGroomBox","sub":[{"name":"单机游戏","route":"stand_alone","tid":17,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":255},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以所有平台(PC、主机、移动端)的单机或联机游戏为主的视频内容,包括游戏预告、CG、实况解说及相关的评测、杂谈与视频剪辑等","url":"//www.bilibili.com/video/videogame-1.html"},{"name":"电子竞技","route":"esports","tid":171,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":257},"desc":"具有高对抗性的电子竞技游戏项目,其相关的赛事、实况、攻略、解说、短剧等视频。","url":"//www.bilibili.com/video/esports-1.html"},{"name":"手机游戏","route":"mobile","tid":172,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"desc":"以手机及平板设备为主要平台的游戏,其相关的实况、攻略、解说、短剧、演示等视频。","url":"//www.bilibili.com/video/mobilegame-1.html"},{"name":"网络游戏","route":"online","tid":65,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":259},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由网络运营商运营的多人在线游戏,以及电子竞技的相关游戏内容。包括赛事、攻略、实况、解说等相关视频","url":"//www.bilibili.com/video/onlinegame-1.html"},{"name":"桌游棋牌","route":"board","tid":173,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"desc":"桌游、棋牌、卡牌对战等及其相关电子版游戏的实况、攻略、解说、演示等视频。","url":"//www.bilibili.com/video/boardgame-1.html"},{"name":"GMV","route":"gmv","tid":121,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由游戏素材制作的MV视频。以游戏内容或CG为主制作的,具有一定创作程度的MV类型的视频","url":"//www.bilibili.com/video/gmv-1.html"},{"name":"音游","route":"music","tid":136,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"各个平台上,通过配合音乐与节奏而进行的音乐类游戏视频","url":"//www.bilibili.com/video/music-game-1.html"},{"name":"Mugen","route":"mugen","tid":19,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以Mugen引擎为平台制作、或与Mugen相关的游戏视频","url":"//www.bilibili.com/video/game-mugen-1.html"},{"name":"游戏赛事","url":"//www.bilibili.com/v/game/match/","newIcon":true}]},{"name":"知识","route":"knowledge","tid":36,"locid":76,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2058,"leftId":2047,"rightId":2048},"sub":[{"name":"科学科普","route":"science","tid":201,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":261},"desc":"回答你的十万个为什么"},{"name":"社科·法律·心理","route":"social_science","tid":124,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":263},"desc":"基于社会科学、法学、心理学展开或个人观点输出的知识视频"},{"name":"人文历史","route":"humanity_history","tid":228,"ps":15,"rps":10,"desc":"看看古今人物,聊聊历史过往,品品文学典籍"},{"name":"财经商业","route":"business","tid":207,"ps":15,"rps":10,"desc":"说金融市场,谈宏观经济,一起畅聊商业故事"},{"name":"校园学习","route":"campus","tid":208,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":265},"desc":"老师很有趣,学生也有才,我们一起搞学习"},{"name":"职业职场","route":"career","tid":209,"ps":15,"rps":10,"desc":"职业分享、升级指南,一起成为最有料的职场人"},{"name":"设计·创意","route":"design","tid":229,"ps":15,"rps":10,"desc":"天马行空,创意设计,都在这里"},{"name":"野生技能协会","route":"skill","tid":122,"ps":15,"rps":10,"desc":"技能党集合,是时候展示真正的技术了"}]},{"name":"科技","route":"tech","tid":188,"locid":2977,"count":"","subMenuSize":80,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2980,"leftId":2978,"rightId":2979},"sub":[{"name":"数码","route":"digital","tid":95,"ps":15,"rps":10,"viewHotTag":true,"desc":"科技数码产品大全,一起来做发烧友","url":"#"},{"name":"软件应用","route":"application","tid":230,"ps":15,"rps":10,"viewHotTag":true,"desc":"超全软件应用指南","url":"#"},{"name":"计算机技术","route":"computer_tech","tid":231,"ps":15,"rps":10,"viewHotTag":true,"desc":"研究分析、教学演示、经验分享......有关计算机技术的都在这里","url":"#"},{"name":"工业·工程·机械","route":"industry","tid":232,"ps":15,"rps":10,"viewHotTag":true,"desc":"前方高能,机甲重工即将出没","url":"#"},{"name":"极客DIY","route":"diy","tid":233,"ps":15,"rps":10,"viewHotTag":true,"desc":"炫酷技能,极客文化,硬核技巧,准备好你的惊讶","url":"#"}]},{"name":"运动","route":"sports","tid":234,"locid":4639,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4646,"rightId":4652,"rightType":"slide"},"sub":[{"name":"篮球·足球","route":"basketballfootball","tid":235,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4656},"desc":"与篮球、足球相关的视频,包括但不限于篮足球赛事、教学、评述、剪辑、剧情等相关内容","url":"#"},{"name":"健身","route":"aerobics","tid":164,"ps":15,"rps":10,"desc":"与健身相关的视频,包括但不限于瑜伽、CrossFit、健美、力量举、普拉提、街健等相关内容","url":"//www.bilibili.com/video/fashion-body-1.html"},{"name":"竞技体育","route":"athletic","tid":236,"ps":15,"rps":10,"desc":"与竞技体育相关的视频,包括但不限于乒乓、羽毛球、排球、赛车等竞技项目的赛事、评述、剪辑、剧情等相关内容","url":"#"},{"name":"运动文化","route":"culture","tid":237,"ps":15,"rps":10,"desc":"与运动文化相关的视频,包络但不限于球鞋、球衣、球星卡等运动衍生品的分享、解读,体育产业的分析、科普等相关内容","url":"#"},{"name":"运动综合","route":"comprehensive","tid":238,"ps":15,"rps":10,"desc":"与运动综合相关的视频,包括但不限于钓鱼、骑行、滑板等日常运动分享、教学、Vlog等相关内容","url":"#"}]},{"name":"汽车","route":"car","tid":223,"locid":4428,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4435,"rightId":4441,"rightType":"slide"},"sub":[{"name":"汽车生活","route":"life","tid":176,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4445},"desc":"分享汽车及出行相关的生活体验类视频","url":"#"},{"name":"汽车文化","route":"culture","tid":224,"ps":15,"rps":10,"desc":"车迷的精神圣地,包括汽车赛事、品牌历史、汽车改装、经典车型和汽车模型等","url":"#"},{"name":"汽车极客","route":"geek","tid":225,"ps":15,"rps":10,"desc":"汽车硬核达人聚集地,包括DIY造车、专业评测和技术知识分享","url":"#"},{"name":"摩托车","route":"motorcycle","tid":240,"ps":15,"rps":10,"desc":"骑士们集合啦","url":"#"},{"name":"智能出行","route":"smart","tid":226,"ps":15,"rps":10,"desc":"探索新能源汽车和未来智能出行的前沿阵地","url":"#"},{"name":"购车攻略","route":"strategy","tid":227,"ps":15,"rps":10,"desc":"丰富详实的购车建议和新车体验","url":"#"}]},{"name":"生活","route":"life","tid":160,"locid":88,"count":"","subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2062,"leftId":1674,"rightId":1670},"sub":[{"name":"搞笑","route":"funny","tid":138,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":273},"desc":"各种沙雕有趣的搞笑剪辑,挑战,表演,配音等视频","url":"//www.bilibili.com/video/ent_funny_1.html","locid":4204,"recommendId":4210,"slider":{"width":620,"height":220},"customComponent":{"name":"Energy","leftId":4212,"rightId":4218,"rightType":"slide"}},{"name":"家居房产","route":"home","tid":239,"ps":15,"rps":10,"desc":"与买房、装修、居家生活相关的分享","url":"#"},{"name":"手工","route":"handmake","tid":161,"ps":15,"rps":10,"desc":"手工制品的制作过程或成品展示、教程、测评类视频","url":"//www.bilibili.com/video/ent-handmake-1.html"},{"name":"绘画","route":"painting","tid":162,"ps":15,"rps":10,"desc":"绘画过程或绘画教程,以及绘画相关的所有视频","url":"//www.bilibili.com/video/ent-painting-1.html"},{"name":"日常","route":"daily","tid":21,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":275},"desc":"记录日常生活,分享生活故事","url":"//www.bilibili.com/video/ent-life-1.html"}]},{"name":"美食","route":"food","tid":211,"locid":4243,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4258,"rightId":4264},"sub":[{"name":"美食制作","route":"make","tid":76,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4268},"desc":"学做人间美味,展示精湛厨艺","url":"#"},{"name":"美食侦探","route":"detective","tid":212,"ps":15,"rps":10,"desc":"寻找美味餐厅,发现街头美食","url":"#"},{"name":"美食测评","route":"measurement","tid":213,"ps":15,"rps":10,"desc":"吃货世界,品尝世间美味","url":"#"},{"name":"田园美食","route":"rural","tid":214,"ps":15,"rps":10,"desc":"品味乡野美食,寻找山与海的味道","url":"#"},{"name":"美食记录","route":"record","tid":215,"ps":15,"rps":10,"desc":"记录一日三餐,给生活添一点幸福感","url":"#"}]},{"name":"动物圈","route":"animal","tid":217,"locid":4365,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4376,"rightId":4381,"rightType":"slide"},"sub":[{"name":"喵星人","route":"cat","tid":218,"ps":15,"rps":10,"desc":"喵喵喵喵喵","url":"#","ad":{"active":true,"dataLocId":4385}},{"name":"汪星人","route":"dog","tid":219,"ps":15,"rps":10,"desc":"汪汪汪汪汪","url":"#"},{"name":"大熊猫","route":"panda","tid":220,"ps":15,"rps":10,"desc":"芝麻汤圆营业中","url":"#"},{"name":"野生动物","route":"wild_animal","tid":221,"ps":15,"rps":10,"desc":"内有“猛兽”出没","url":"#"},{"name":"爬宠","route":"reptiles","tid":222,"ps":15,"rps":10,"desc":"鳞甲有灵","url":"#"},{"name":"动物综合","route":"animal_composite","tid":75,"ps":15,"rps":10,"desc":"收录除上述子分区外,其余动物相关视频以及非动物主体或多个动物主体的动物相关延伸内容","url":"#"}]},{"name":"鬼畜","route":"kichiku","tid":119,"locid":100,"count":"","subMenuSize":182,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2509,"leftId":2482,"rightId":2483},"sub":[{"name":"鬼畜调教","route":"guide","tid":22,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":285},"desc":"使用素材在音频、画面上做一定处理,达到与BGM一定的同步感","url":"//www.bilibili.com/video/ent-Kichiku-1.html"},{"name":"音MAD","route":"mad","tid":26,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":287},"desc":"使用素材音频进行一定的二次创作来达到还原原曲的非商业性质稿件","url":"//www.bilibili.com/video/douga-kichiku-1.html"},{"name":"人力VOCALOID","route":"manual_vocaloid","tid":126,"ps":15,"rps":10,"desc":"将人物或者角色的无伴奏素材进行人工调音,使其就像VOCALOID一样歌唱的技术","url":"//www.bilibili.com/video/kichiku-manual_vocaloid-1.html"},{"name":"鬼畜剧场","route":"theatre","tid":216,"ps":15,"rps":10,"desc":"使用素材进行人工剪辑编排的有剧情的作品"},{"name":"教程演示","route":"course","tid":127,"ps":10,"rps":6,"rightComponent":{"name":"CmImgList","id":148},"ad":{"active":true,"dataLocId":289},"hideDropdown":false,"desc":"鬼畜相关的教程演示","url":"//www.bilibili.com/video/kichiku-course-1.html"}]},{"name":"时尚","route":"fashion","tid":155,"locid":94,"count":"","subMenuSize":124,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2515,"leftId":2492,"rightId":2493},"sub":[{"name":"美妆护肤","route":"makeup","tid":157,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":279},"desc":"彩妆护肤、美甲美发、仿妆、医美相关内容分享或产品测评","url":"//www.bilibili.com/video/fashion-makeup-fitness-1.html"},{"name":"穿搭","route":"clothing","tid":158,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":281},"desc":"穿搭风格、穿搭技巧的展示分享,涵盖衣服、鞋靴、箱包配件、配饰(帽子、钟表、珠宝首饰)等","url":"//www.bilibili.com/video/fashion-clothing-1.html"},{"name":"时尚潮流","route":"trend","tid":159,"ps":15,"rps":10,"desc":"时尚街拍、时装周、时尚大片,时尚品牌、潮流等行业相关记录及知识科普","url":"#"}]},{"name":"资讯","route":"information","tid":202,"locid":4076,"count":"","subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"sub":[{"name":"热点","route":"hotspot","tid":203,"ps":18,"rps":10,"desc":"全民关注的时政热门资讯"},{"name":"环球","route":"global","tid":204,"ps":18,"rps":10,"desc":"全球范围内发生的具有重大影响力的事件动态"},{"name":"社会","route":"social","tid":205,"ps":18,"rps":10,"desc":"日常生活的社会事件、社会问题、社会风貌的报道"},{"name":"综合","route":"multiple","tid":206,"ps":18,"rps":10,"desc":"除上述领域外其它垂直领域的综合资讯"}]},{"name":"娱乐","route":"ent","tid":5,"locid":82,"count":"","subMenuSize":62,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2067,"leftId":2065,"rightId":2066},"sub":[{"name":"综艺","route":"variety","tid":71,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":267},"desc":"所有综艺相关,全部一手掌握!","url":"//www.bilibili.com/video/ent-variety-1.html"},{"name":"娱乐杂谈","route":"talker","tid":241,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":269},"desc":"娱乐人物解读、娱乐热点点评、娱乐行业分析"},{"name":"粉丝创作","route":"fans","tid":242,"ps":15,"rps":10,"desc":"粉丝向创作视频"},{"name":"明星综合","route":"celebrity","tid":137,"ps":15,"rps":10,"desc":"娱乐圈动态、明星资讯相关"}]},{"name":"影视","route":"cinephile","tid":181,"locid":2211,"count":"","subMenuSize":84,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2309,"leftId":2307,"rightId":2308},"sub":[{"name":"影视杂谈","route":"cinecism","tid":182,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2212},"desc":"影视评论、解说、吐槽、科普等","url":"//www.bilibili.com/video/cinephile-cinecism.html"},{"name":"影视剪辑","route":"montage","tid":183,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2213},"desc":"对影视素材进行剪辑再创作的视频","url":"//www.bilibili.com/video/cinephile-montage.html"},{"name":"短片","route":"shortfilm","tid":85,"ps":15,"rps":10,"desc":"追求自我表达且具有特色的短片","url":"//www.bilibili.com/video/cinephile-shortfilm.html"},{"name":"预告·资讯","route":"trailer_info","tid":184,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2214},"desc":"影视类相关资讯,预告,花絮等视频","url":"//www.bilibili.com/video/cinephile-trailer-info.html"}]},{"name":"纪录片","route":"documentary","tid":177,"url":"//www.bilibili.com/documentary/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"人文·历史","tid":37,"route":"history","dise":"","url":"//www.bilibili.com/video/doco-history.html"},{"name":"科学·探索·自然","tid":178,"route":"science","dise":"","url":"//www.bilibili.com/video/doco-science.html"},{"name":"军事","tid":179,"route":"military","dise":"","url":"//www.bilibili.com/video/doco-military.html"},{"name":"社会·美食·旅行","tid":180,"route":"travel","dise":"","url":"//www.bilibili.com/video/doco-travel.html"},{"name":"纪录片索引","url":"//www.bilibili.com/documentary/index/"}]},{"name":"电影","route":"movie","tid":23,"url":"//www.bilibili.com/movie/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"华语电影","tid":147,"route":"chinese","desc":"","url":"//www.bilibili.com/video/movie_chinese_1.html"},{"name":"欧美电影","tid":145,"route":"west","desc":"","url":"//www.bilibili.com/video/movie_west_1.html"},{"name":"日本电影","tid":146,"route":"japan","desc":"","url":"//www.bilibili.com/video/movie_japan_1.html"},{"name":"其他国家","tid":83,"route":"movie","desc":"","url":"//www.bilibili.com/video/movie-movie-1.html"},{"name":"电影索引","url":"//www.bilibili.com/movie/index/"}]},{"name":"电视剧","route":"tv","tid":11,"url":"//www.bilibili.com/tv/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"国产剧","tid":185,"route":"mainland","desc":"","url":"//www.bilibili.com/video/tv-mainland.html"},{"name":"海外剧","tid":187,"route":"overseas","desc":"","url":"//www.bilibili.com/video/tv-overseas.html"},{"name":"电视剧索引","url":"//www.bilibili.com/tv/index/"}]},{"name":"虚拟UP主","route":"virtual","locid":4735,"count":"","isHide":true,"subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":4754,"leftId":4756},"sub":[{"name":"游戏","route":"game","tid":4,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/game"},{"name":"音乐","route":"music","tid":3,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/music"},{"name":"动画","route":"douga","tid":1,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/douga"},{"name":"其他","route":"other","tid":0,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/other"}]}],[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}],[{"name":"会员购","url":"//show.bilibili.com/platform/home.html","icon":"icon-vip-buy"},{"name":"游戏中心","url":"//game.bilibili.com","icon":"icon-game"},{"name":"画友","url":"http://h.bilibili.com","icon":"icon-hy"},{"name":"芒果TV","url":"//www.bilibili.com/mango","icon":"icon-mango"}],[{"name":"专栏","report":"article","url":"//www.bilibili.com/read/home","icon":"read"},{"name":"直播","report":"live","url":"//live.bilibili.com","icon":"live","sub":[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}]},{"name":"活动","report":"activity","url":"//www.bilibili.com/blackboard/activity-list.html","icon":"activit"},{"name":"课堂","report":"cheese","url":"//www.bilibili.com/cheese/","icon":"zhishi"},{"name":"小黑屋","report":"blackroom","url":"//www.bilibili.com/blackroom/","icon":"blackroom"},{"name":"新歌热榜","report":"musicplus","url":"//www.bilibili.com/v/musicplus/","icon":"musicplus"}]]'),no=e=>e.startsWith("//")?`https:${e}`:e.replace("http:","https:"),oo=to[0].filter((e=>"string"!=typeof e.tid)),io=to[3],ro={};oo.forEach((e=>{const t=no(e.url||`https://www.bilibili.com/v/${e.route}/`);ro[e.name]={icon:e.route,route:e.route,code:e.tid,link:t,subCategories:e.sub?Object.fromEntries(e.sub.map((t=>{const n=no(t.route?`https://www.bilibili.com/v/${e.route}/${t.route}/`:t.url);return[t.name,n]}))):null}})),io.forEach((e=>{ro[e.name]={icon:e.icon,code:null,route:e.route,link:no(e.url),subCategories:e.sub?Object.fromEntries(e.sub.map((e=>[e.name,no(e.url)]))):null}}));const ao=ro,co=Object.fromEntries(oo.map((e=>[e.route,e.tid]))),so=Object.fromEntries(Object.values(ro).map((e=>[e.icon,e.link]))),lo=async()=>{if(document.getElementById("be-category-icons"))return;const{default:e}=await Promise.resolve().then(n.t.bind(n,3066,17));document.body.insertAdjacentHTML("beforeend",e)};var mo=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"translate-container"},[e.working||e.translated?e._e():t("div",{staticClass:"translate",on:{click:function(t){return e.translate()}}},[t("VIcon",{attrs:{size:14,icon:"mdi-earth"}}),e._v("翻译\n ")],1),e._v(" "),e.translated?t("div",{staticClass:"translated"},[t("a",{attrs:{href:e.activeTranslator&&e.activeTranslator.link,target:"_blank"}},[e._v(" 翻译自 ")]),e._v(" "),t("VDropdown",{attrs:{items:Object.values(e.translateProviders),value:e.activeTranslator,"key-mapper":e=>e.name},on:{change:function(t){return e.changeTranslator(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t.name)+"\n ")]}}],null,!1,1956376614)})],1):e._e(),e._v(" "),e.working?t("VIcon",{staticClass:"translating mdi-spin",attrs:{size:18,icon:"mdi-loading"}}):e._e(),e._v(" "),!e.working&&e.translated?t("div",{staticClass:"translate-result",domProps:{textContent:e._s(e.result)}}):e._e()],1)};mo._withStripped=!0;var fo=n(2951);const uo=Vue.extend({components:{VDropdown:be.VDropdown,VIcon:be.VIcon},props:{text:{type:String,required:!0}},data:()=>({result:"",working:!1,translateProviders:fo.WK,activeTranslator:{}}),computed:{translated(){return""!==this.result}},mounted(){document.body.classList.add("machine-translator-enabled")},methods:{changeTranslator(e){(0,J.getComponentSettings)("i18n").options.translator=e.name,this.translate()},async translate(){try{this.working=!0;const e=this.text.replace(/#(.+?)#/g,"");this.activeTranslator=(0,fo.Ty)();const t=this.activeTranslator;this.result=await t.translate(e)}catch(e){(0,de.logError)(e)}finally{this.working=!1}}}});var po=n(6115),bo=n.n(po),ho={insert:"head",singleton:!1};lt()(bo(),ho);bo().locals;const go=(0,ut.Z)(uo,mo,[],!1,null,null,null).exports,Fo=e=>{void 0===e.radio&&(e.radio=!1);const{name:t,switches:o}=e,i={};return Object.entries(o).forEach((e=>{let[t,{displayName:n,defaultValue:o}]=e;i[`switch-${t}`]={defaultValue:o,displayName:n,hidden:!0}})),o=>{const r=`${o.displayName}选项`,a={componentName:o.name,optionDisplayName:r};Object.assign(e,a),i[t]={defaultValue:e,displayName:r},o.options={...o.options,...i},o.widget||(o.widget={component:()=>Promise.resolve().then(n.bind(n,3861)).then((e=>e.default)),options:e});const c=o.entry;return o.entry=async function(){for(var e=arguments.length,t=new Array(e),n=0;n{e.startsWith("switch-")&&(0,J.addComponentListener)(`${i}.${e}`,(t=>{document.body.classList.toggle(`${i}-${e}`,t)}),!0)}))},o}},vo=e=>e,wo=e=>e,yo=e=>{const t=(e=>{const t={},n=Object.entries(e);for(const[e,{displayName:o,defaultValue:i}]of n)t[`switch-${e}`]={defaultValue:i,displayName:o,hidden:!0};return(e,n)=>(t[n.name]={defaultValue:n,displayName:n.optionDisplayName},{...e,...t})})(e.switches);return o=>{const i=((e,t,n)=>({...e,radio:void 0!==e.radio&&e.radio,dimAt:e.dimAt,componentName:t,optionDisplayName:n}))(e,o.name,`${o.displayName}选项`);return o.widget||(o.widget=(e=>({component:()=>Promise.resolve().then(n.bind(n,3861)).then((e=>e.default)),options:e}))(i)),o.options=t(o.options,i),o.entry=(e=>{const t=e.entry;return function(){const n=t(...arguments),o=(0,J.getComponentSettings)(e.name).options;return Object.keys(o).forEach((t=>{t.startsWith("switch-")&&(0,J.addComponentListener)(`${e.name}.${t}`,(n=>{document.body.classList.toggle(`${e.name}-${t}`,n)}),!0)})),n}})(o),o}},xo=yo;const ko={builtInComponents:he,component:ge,userComponent:Fe,styledComponent:c,define:ye,description:xe,switchOptions:E,launchBar:{LaunchBar:n(9431).Z},feeds:{api:l,BangumiCard:pt,UpInfo:wt,VideoCard:Et,ColumnCard:Pt,disableProfilePopup:d,notify:m},video:{assUtils:f,playerLight:p,playerAgent:rn,videoActions:b,videoDanmaku:h,videoInfo:g,videoQuality:F,videoContextMenu:v,videoControlBar:w,videoCover:y,watchlater:s,xmlUtils:u},live:{liveControlBar:x,liveSocket:k},utils:{commentApis:C,categories:{updater:eo,data:A}},i18N:{machineTranslator:{MachineTranslator:go}}};var Co=n(473),Ao=n(9094),Eo=n(68);const Bo={style:Co,plugin:Ao,data:Ee,hook:Eo},Do={ajax:B,cdnTypes:D,download:I,dialog:z,externalInput:S,filePicker:P,installFeature:M,horizontalScroll:o,lifeCycle:V,loadingMode:T,localStorage:L,meta:j,observer:R,reorder:i,runtimeLibrary:Q,spinQuery:Y,style:X,textColor:K,userInfo:r,version:ee,settings:J,toast:ue,themeColor:pe,utils:{...te,constants:ne,formatters:oe,title:ie,i18n:re,lazyPanel:a,log:de,sort:me,urls:fe},ui:be,componentApis:ko,pluginApis:Bo},Io={ajax:B,...D,...I,...z,...S,...P,...M,...o,lifeCycle:V,...T,...L,...j,observer:R,...i,runtimeLibrary:Q,spinQuery:Y,...X,...K,...r,...ee,settingsApis:J,get settings(){return J.settings},...ue,utils:{...te,...ne,...oe,...ie,...re,...a,...de,...me,...fe},ui:be,componentApis:{...ko.component,...ko.userComponent,...ko.styledComponent,...ko.launchBar,...lodash.omit(ko,"component","userComponent","styledComponent","launchBar")},pluginApis:{...Bo.style,...Bo.plugin,...Bo.data,...Bo.hook},monkeyApis:{GM_setValue,GM_getValue,GM_deleteValue,GM_xmlhttpRequest,GM_info},lodash,Vue,sandboxWindow:window,theWorld:e=>{setTimeout((()=>{}),e)}}},5167:(e,t,n)=>{"use strict";n.r(t),n.d(t,{showDialog:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-dialog",class:{open:e.open},style:{zIndex:e.zIndex}},[t("div",{staticClass:"be-dialog-header"},[e.icon?t("div",{staticClass:"be-dialog-header-icon"},[t("VIcon",{attrs:{icon:e.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"be-dialog-header-title"},["string"==typeof e.title?[e._v(e._s(e.title))]:t(e.title,{tag:"component"})],2),e._v(" "),t("div",{staticClass:"be-dialog-header-close"},[t("VButton",{attrs:{type:"transparent"},on:{click:function(t){return e.close()}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1)]),e._v(" "),t("div",{staticClass:"be-dialog-content"},["string"==typeof e.content?[e._v(e._s(e.content))]:e.content?t(e.content,e._b({tag:"component",on:{"dialog-close":function(t){return e.close()}}},"component",e.contentProps,!1)):e._e()],2)])};o._withStripped=!0;var i=n(2570);const r=Vue.extend({components:{VIcon:i.VIcon,VButton:i.VButton},props:{icon:{type:String,default:""},title:{default:null},zIndex:{type:Number,default:100002},content:{default:null},contentProps:{default:()=>({})}},data:()=>({open:!1,closeListeners:[]}),methods:{close(){return new Promise((e=>{const t=this.$el,n=this.closeListeners;n.push((()=>{this.$emit("close"),e()}));const o=e=>{e.target===this.$el&&(t.removeEventListener("transitionend",o),n.forEach((e=>e())))};t.addEventListener("transitionend",o),this.open=!1}))}}});var a=n(8332),c=n.n(a),s=n(1358),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports,f=e=>{const{icon:t,title:n,zIndex:o,content:i,contentProps:r}=e,a=new m({propsData:{icon:t,title:n,zIndex:o,content:i,contentProps:r},data:{open:!1,closeListeners:[()=>{a.$destroy(),a.$el.remove()}]}}).$mount();return document.body.appendChild(a.$el),setTimeout((()=>{a.open=!0})),a}},6932:(e,t,n)=>{"use strict";n.d(t,{h:()=>o});let o=function(e){return e.Packed="打包下载",e.Individual="单独下载",e}({})},3720:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DownloadPackage:()=>d});var o=n(6932),i=n(1003),r=n(5067),a=n(9083),c=n(4732),s=n(8612);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.entries=e,l(this,"noEscape",!1)}add(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};null!=t&&this.entries.push({name:this.noEscape?e:(0,a.formatFilename)(e),data:t,options:n})}async blob(){const e=(0,c.useScopedConsole)("文件打包");if(0===this.entries.length)return null;if(1===this.entries.length){const{data:e}=this.entries[0];return"string"==typeof e?new Blob([e]):e}const t=new(await i.JSZipLibrary),n=e=>t.filter(((t,n)=>n.name===e)).length>0;return this.entries.forEach((o=>{let{name:i,data:r,options:a}=o;if(n(i)){let o=i;for(;n(o);){const e=i.lastIndexOf(".");o=`${i.substring(0,e)}.${(0,s.getRandomId)(8)}${i.substring(e)}`}return e.warn(`文件名 "${i}" 和已有文件冲突, 已临时更换为 "${o}"`),void t.file(o,r,a)}t.file(i,r,a)})),t.generateAsync({type:"blob"})}async emit(e){if(0===this.entries.length)return;e&&1!==this.entries.length||(e=this.entries[0].name);if((0,r.getGeneralSettings)().downloadPackageEmitMode===o.h.Individual&&this.entries.length>1)return void await Promise.all(this.entries.map((e=>d.single(e.name,e.data,e.options))));const t=await this.blob();t&&d.download(e,t)}static download(e,t){const n=(0,c.useScopedConsole)("文件下载"),o=document.createElement("a"),i=URL.createObjectURL(t);d.lastPackageUrl&&URL.revokeObjectURL(d.lastPackageUrl),d.lastPackageUrl=i;const r=(0,a.formatFilename)(e);o.setAttribute("href",i),o.setAttribute("download",r),n.log(r),document.body.appendChild(o),o.addEventListener("click",(e=>{e.stopPropagation()}),{capture:!0}),o.click(),o.remove()}static async single(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=new d;return o.add(e,t,n),o.emit()}}l(d,"lastPackageUrl","")},1841:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LoadFeatureCodeError:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.LoadFeatureCodeError,loadFeatureCode:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.loadFeatureCode,parseExternalInput:()=>parseExternalInput});var _core_file_picker__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(7120),_load_feature_code__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(5705);const parseExternalInput=async input=>{if(void 0===input){const files=await(0,_core_file_picker__WEBPACK_IMPORTED_MODULE_0__.pickFile)({accept:"application/json"});if(!(files.length>0))return console.error("[parseExternalInput] No file selected"),null;{const[file]=files,text=await file.text();try{return eval(`(${text})`)}catch(e){return console.error(e),null}}}else{if("string"!=typeof input)return input;try{const exports={},result=eval(input);if(Object.values(exports).length>0){const e=Object.values(exports)[0];return e}return result}catch(e){return console.error(e),null}}}},5705:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadFeatureCodeError:()=>o,loadFeatureCode:()=>r});class o extends Error{}let i;const r=e=>{i||(i=(()=>{const e=new Map([[Symbol.unscopables,void 0],["unsafeWindow",unsafeWindow]]),t=new Proxy(Object.create(null),{has:()=>!0,get:(t,n)=>e.has(n)?e.get(n):window[n],set:(t,n,o)=>!e.has(n)&&(window[n]=o)}),n="BILIBILI_EVOLVED_LOAD_FEATURE_CODE_CODE_KEY_3B63D912__",i=Function("window",`with (window) {\n return eval(${n}) \n }`).bind(void 0,t);return{run(t){let r;e.set("exports",{}),e.set(n,t);try{r=i()}catch(e){throw new o(void 0,{cause:e})}const a=Object.values(e.get("exports"));return[a.length>0?a[0]:void 0,r]}}})());const[t,n]=i.run(e);return t||n}},7120:(e,t,n)=>{"use strict";let o,i;n.r(t),n.d(t,{pickFile:()=>a});const r={accept:"*",multiple:!1},a=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;const{accept:t,multiple:n}={...r,...e};o||(o=document.createElement("input"),o.type="file",o.style.display="none",document.body.appendChild(o),o.addEventListener("change",(()=>{i?.([...o.files]),i=null}))),o.accept=t,o.multiple=n,o.value="",i&&i([]);const a=await new Promise((e=>{i=e,o.click()}));return a}},9761:(e,t,n)=>{"use strict";n.r(t),n.d(t,{installFeature:()=>l,installFeatureFromCode:()=>s,tryParseZip:()=>c});var o=n(4227),i=n(68),r=n(9094),a=n(473);const c=async e=>{const{JSZipLibrary:t}=await Promise.resolve().then(n.bind(n,1003)),{monkey:o}=await Promise.resolve().then(n.bind(n,5267)),i=e.endsWith(".zip"),r=i?"blob":"text",a=await o({url:e,method:"GET",responseType:r});if(!i||"string"==typeof a)return a;const c=await t,s=await c.loadAsync(a),l=Object.values(s.files);if(0===l.length)throw new Error("Empty zip file");return l[0].async("text")},s=async(e,t)=>{const{loadFeatureCode:c}=await Promise.resolve().then(n.bind(n,1841)),s=c(e),{type:l,installer:d}=(()=>{if((e=>Boolean(e?.entry))(s))return{type:"component",installer:()=>(0,o.installComponent)(e)};if((e=>Boolean(e?.setup))(s))return{type:"plugin",installer:()=>(0,r.installPlugin)(e)};if((e=>Boolean(e?.style))(s))return{type:"style",installer:()=>(0,a.installStyle)(e)};throw new Error("无效的功能代码")})(),{before:m,after:f}=(0,i.getHook)(`user${lodash.startCase(l)}s.add`,e,t);await m();const u=await d();return await f(u.metadata),u},l=async e=>{const t=await c(e);return s(t,e)}},1197:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LifeCycleEventTypes:()=>c,contentLoaded:()=>r,fullyLoaded:()=>a,headLoaded:()=>i,raiseLifeCycleEvent:()=>s});var o=n(2545);const i=e=>new Promise((t=>{if(null!==document.head)t(e());else{const[n]=(0,o.childList)(document.documentElement,(()=>{null!==document.head&&(n.disconnect(),t(e()))}))}})),r=e=>new Promise((t=>{"loading"!==document.readyState?t(e()):document.addEventListener("DOMContentLoaded",(()=>t(e())))})),a=e=>new Promise((t=>{"complete"===document.readyState?t(e()):unsafeWindow.addEventListener("load",(()=>t(e())))}));let c=function(e){return e.Start="be:start",e.StyleLoaded="be:style-loaded",e.ComponentsLoaded="be:components-loaded",e.End="be:end",e}({});const s=e=>{unsafeWindow.dispatchEvent(new CustomEvent(e))}},9770:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadingMode:()=>o});let o=function(e){return e.Delay="延后",e.Race="同时",e}({})},9047:(e,t,n)=>{"use strict";n.r(t),n.d(t,{crossOriginLocalStorage:()=>l,watchLocalStorage:()=>f});var o=n(3311),i=n(8612);const r=async e=>{const t=await(0,o.select)('iframe[src^="https://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html"][data-loaded="true"]');if(!t)throw new Error("COLS iframe not found");t.contentWindow.postMessage(e,"https://s1.hdslb.com")},a=[],c=[];window.addEventListener("message",(e=>{if("COLS_RES"===e.data.type){const t=e.data,{id:n}=t,o=()=>{const e=c.findIndex((e=>e.id===n));e<0||c[e].callback(t.value)};(()=>{const e=a.findIndex((e=>e.id===n));if(e<0)return;const[o]=a.splice(e,1);o.resolve(t.value)})(),o()}}));const s=e=>()=>new Promise((t=>{const n=(0,i.getRandomId)(32);a.push({id:n,resolve:t}),e(n)})),l={setItem:(e,t)=>s((n=>{r({id:n,type:"COLS_SET",key:e,value:t})}))(),getItem:e=>s((t=>{r({id:t,type:"COLS_GET",key:e})}))(),removeItem:e=>s((t=>{r({id:t,type:"COLS_RM",key:e})}))(),keys:e=>s((t=>{r({id:t,type:"COLS_KEYS",key:e})}))(),clear:e=>s((t=>{r({id:t,type:"COLS_CLR",key:e})}))(),addStorageListener:async(e,t)=>{const n=(0,i.getRandomId)(32);return c.push({id:n,callback:t}),r({type:"COLS_LIS",key:e,id:n}),n},removeStorageListener:async(e,t)=>{(0,i.deleteValue)(c,(e=>e.id===t)),r({type:"COLS_LIS_UN",key:e,id:t})}},d=[];let m=!1;const f=e=>{m||((0,i.createPostHook)(unsafeWindow.localStorage,"setItem",((e,t)=>{d.forEach((n=>n(e,t)))})),m=!0),d.push(e);const t=t=>{e(t.key,t.newValue)};return window.addEventListener("storage",t),()=>{const n=d.indexOf(e);n>-1&&d.splice(n,1),window.removeEventListener("storage",t)}}},2046:(e,t,n)=>{"use strict";n.r(t),n.d(t,{branches:()=>a,meta:()=>s});var o=n(113),i=n(7274),r=n(6204).compilationInfo;o.copyright=o.copyright.replace(/\[year\]/g,(new Date).getFullYear().toString());const a={stable:"master",stableCdn:"master-cdn",preview:"preview"},c=r,s={compilationInfo:c,name:GM_info.script.name,description:GM_info.script.description,get originalFilename(){const{branch:e}=c;return e===a.preview?`bilibili-evolved.${a.preview}.user.js`:"bilibili-evolved.user.js"},get updateURL(){return`${i.cdnRoots.AltCdn(c.branch)}dist/${this.originalFilename}`},get downloadURL(){return this.updateURL},...o}},2545:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allMutations:()=>h,allMutationsOn:()=>p,attributes:()=>d,attributesSubtree:()=>m,characterData:()=>f,characterDataSubtree:()=>u,childList:()=>s,childListSubtree:()=>l,intersectionObserve:()=>g,mutationObserve:()=>c,resizeObserve:()=>w,resolveTargets:()=>a,sizeChange:()=>y,urlChange:()=>k,videoChange:()=>E,visible:()=>F,visibleInside:()=>v});var o=n(8612),i=n(3311),r=n(146);const a=e=>"string"==typeof e?(0,o.dqa)(e):Array.isArray(e)?e:[e],c=(e,t,n)=>{const o=new MutationObserver(n);return e.forEach((e=>o.observe(e,t))),n([],o),[o,t]},s=(e,t)=>c(a(e),{childList:!0,subtree:!1,attributes:!1},t),l=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!1},t),d=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!0},t),m=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!0},t),f=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!1,characterData:!0},t),u=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!1,characterData:!0},t),p=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!0,characterData:!0},t),b={observer:null,config:null,callbacks:[]},h=e=>{if(b.observer)b.callbacks.push(e);else{b.callbacks.push(e);const[t,n]=p(document.body,(e=>b.callbacks.forEach((t=>t(e,b.observer)))));b.observer=t,b.config=n}return b},g=(e,t,n)=>{const o=new IntersectionObserver(n,t);return e.forEach((e=>o.observe(e))),[o,t]},F=(e,t)=>g(a(e),{},t),v=(e,t,n,o)=>g(a(e),{root:t,rootMargin:n},o),w=(e,t,n)=>{const o=new ResizeObserver(n);return e.forEach((e=>o.observe(e,t))),[o,t]},y=(e,t)=>w(a(e),{box:"border-box"},t),x=lodash.once((()=>{let e=document.URL;h((()=>{e!==document.URL&&((()=>{const e=new CustomEvent("urlChange",{detail:document.URL});window.dispatchEvent(e)})(),e=document.URL)}))})),k=(e,t)=>{x(),e(document.URL),window.addEventListener("urlChange",(()=>e(document.URL)),t)},C=lodash.once((()=>(0,i.select)((()=>unsafeWindow.cid?unsafeWindow.cid:null))));let A=!1;const E=async(e,t)=>{if(!(0,r.matchCurrentPage)(r.playerUrls))return!1;const n=await C();if(null===n)return!1;const o=()=>({aid:unsafeWindow.aid,cid:unsafeWindow.cid});if(!A){let e=n;h((()=>{const{cid:t}=o();Array.isArray(t)||e===t||lodash.isNil(t)||((()=>{const e=o(),t=new CustomEvent("videoChange",{detail:e});window.dispatchEvent(t)})(),e=t)})),A=!0}return e(o()),window.addEventListener("videoChange",(t=>e(t.detail)),t),!0}},2857:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentLoadTime:()=>o,componentLoadTrace:()=>r,componentResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,5067));if(!t().devMode)return;const r=e.entry;e.entry=async e=>{const{metadata:t}=e,n=performance.now();let a=r(e);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(t,c-n),i.set(t,s-n),a}}},1926:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pluginLoadTime:()=>o,pluginLoadTrace:()=>r,pluginResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,5067));if(!t().devMode)return;const r=e.setup;e.setup=async t=>{const n=performance.now();let a=r(t);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(e,c-n),i.set(e,s-n),a}}},9941:(e,t,n)=>{"use strict";n.r(t),n.d(t,{promiseLoadTime:()=>o,promiseLoadTrace:()=>r,promiseResolveTime:()=>i});const o=new Map,i=new Map,r=async(e,t)=>{const{getGeneralSettings:r}=await Promise.resolve().then(n.bind(n,5067));if(!r().devMode)return t();const a=performance.now(),c=t(),s=performance.now(),l=await c,d=performance.now();return o.set({name:e},s-a),i.set({name:e},d-a),l}},5043:(e,t,n)=>{"use strict";n.r(t),n.d(t,{logStats:()=>o});const o=(e,t)=>{const n=[...t.entries()],o=n.reduce(((e,t)=>e+t[1]),0);console.groupCollapsed(`${e} time:`,Math.round(100*o)/100+"ms",`for ${n.length} items`),n.forEach((e=>{let[t,n]=e;console.log(`%c${t.name} %c${Math.round(100*n)/100}ms ${Math.round(n/o*1e4)/100}% %c`,"color: #00A0D8","color: #888","color: unset")})),console.groupEnd()}},1003:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{JSZipLibrary:()=>JSZipLibrary,RuntimeLibrary:()=>RuntimeLibrary,SortableJSLibrary:()=>SortableJSLibrary,StreamSaverLibrary:()=>StreamSaverLibrary,protobufLibrary:()=>protobufLibrary});var _ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5267),_meta__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2046);function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"==typeof t?t:String(t)}function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class RuntimeLibrary{constructor(e){this.config=e,_defineProperty(this,"modulePromise",void 0)}async then(resolve,reject){try{const{url,getModule}=this.config;this.modulePromise||(this.modulePromise=(async()=>{console.log(`[Runtime Library] Start download from ${url}`);const code=await(0,_ajax__WEBPACK_IMPORTED_MODULE_0__.monkey)({url});return console.log(`[Runtime Library] Downloaded from ${url} , length = ${code.length}`),function runEval(){return eval(code); // eslint-disable-next-line no-extra-bind -}.bind(window)(),getModule(window)})());const library=await this.modulePromise;return resolve(library)}catch(e){throw reject(e),e}}}const protobufLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.protobuf,getModule:e=>e.protobuf}),JSZipLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.jszip,getModule:e=>e.JSZip}),SortableJSLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.sortable,getModule:e=>e.Sortable}),StreamSaverLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.streamsaver,getModule:e=>e.streamSaver})},7219:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentToSettings:()=>c,getComponentSettings:()=>m,getGeneralSettings:()=>f,isComponentEnabled:()=>u,isUserComponent:()=>s,isUserPlugin:()=>l,metadataToOptions:()=>a});var o=n(6316),i=n(5067),r=n(8612);const a=e=>lodash.mapValues(e,(e=>e.defaultValue)),c=e=>{const{options:t}=e;return{enabled:e.enabledByDefault??!0,options:t?a(t):{}}},s=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userComponents[t])},l=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userPlugins[t])},d={enabled:!1,options:new Proxy({},{get:()=>!1})},m=e=>{let t;if("string"==typeof e){if(void 0===o.componentsMap[e])return i.settings.components.settingsPanel.options.devMode&&console.warn("No settings found for component:",e),d;t=o.componentsMap[e]}else t=e;if(s(t)){const{name:e}=t;return i.settings.userComponents[e]?.settings??d}return i.settings.components[t.name]},f=()=>m("settingsPanel").options,u=e=>("string"==typeof e&&(e=o.componentsMap[e]),!!e&&((!e.urlExclude||!e.urlExclude.some(r.matchUrlPattern))&&((!e.urlInclude||!e.urlInclude.every(lodash.negate(r.matchUrlPattern)))&&(!1===e.configurable?e.enabledByDefault??!0:m(e).enabled))))},5067:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addComponentListener:()=>b,addSettingsChangeListener:()=>f,componentToSettings:()=>o.componentToSettings,defaultSettings:()=>l,getComponentSettings:()=>o.getComponentSettings,getGeneralSettings:()=>o.getGeneralSettings,isComponentEnabled:()=>o.isComponentEnabled,isUserComponent:()=>o.isUserComponent,isUserPlugin:()=>o.isUserPlugin,metadataToOptions:()=>o.metadataToOptions,removeComponentListener:()=>h,removeSettingsChangeListener:()=>u,settings:()=>g});var o=n(7219);const i=Symbol("isProxy");var r=n(6316),a=n(9094);const c={userStyles:{},userPlugins:{},userComponents:{},components:{},plugins:{}},s={internalSettings:c,settingsLoaded:!1},l=lodash.cloneDeep(c),d=new Map,m=(e,t)=>"object"==typeof e?lodash.defaultsDeep(e,t):e;a.plugins.forEach((e=>{s.internalSettings.plugins[e.name]=!0})),r.components.forEach((e=>{s.internalSettings.components[e.name]=(0,o.componentToSettings)(e)})),s.internalSettings=((e,t)=>{const n=function(e,o){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];for(const[t,i]of Object.entries(e)){"object"==typeof i&&!(i instanceof RegExp)&&(e[t]=n(i,o||t,[...r,t]))}const a=new Proxy(e,{get:(e,t)=>t===i||e[t],set(e,a,c){const s=e[a],l=!Object.prototype.hasOwnProperty.call(e,a)&&void 0!==s;unsafeWindow.proxyDebug&&console.log({isImplicitProp:l,prop:a,rootProp:o,propPath:r,value:c,oldValue:s});return!("object"!=typeof c||c instanceof RegExp||!0===c[i]||l)&&(c=n(c,o||a,[...r,a])),e[a]=c,l||t?.(c,s,o||a,[...r,a]),!0},deleteProperty(e,n){const i=e[n];return delete e[n],t?.(void 0,i,o||n,[...r,n]),!0}});return a};return n(e)})((e=>{for(const[t,n]of Object.entries(e)){const o=GM_getValue(t,n);e[t]=m(o,n)}return e})(s.internalSettings),(function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(s.settingsLoaded){GM_setValue(n.toString(),s.internalSettings[n.toString()]);const i=o.join(".");if(o.length>1){const e=o.slice(0,o.length-1).join("."),t=lodash.get(s.internalSettings,e);if(Array.isArray(t)||lodash.isPlainObject(t)){d.get(e)?.forEach((e=>e(t,null,n,o)))}}d.get(i)?.forEach((i=>i(e,t,n,o)))}}));for(const[e,t]of Object.entries(s.internalSettings))GM_setValue(e,t);const f=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=d.get(e);if(o?o.push(t):d.set(e,[t]),n){const n=lodash.get(s.internalSettings,e);t(n,n,"",[])}},u=(e,t)=>{const n=d.get(e);if(!n)return;const o=n.indexOf(t);-1!==o&&n.splice(o,1)},p=e=>{const[t,...n]=e.split("."),i=n.join(".");return(0,o.isUserComponent)(t)?i?`userComponents.${t}.settings.options.${i}`:`userComponents.${t}.settings.enabled`:i?`components.${t}.options.${i}`:`components.${t}.enabled`},b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];f(p(e),t,n)},h=(e,t)=>{u(p(e),t)};s.settingsLoaded=!0;const g=s.internalSettings},3311:(e,t,n)=>{"use strict";n.r(t),n.d(t,{count:()=>b,hasVideo:()=>g,select:()=>l,selectAll:()=>u,selectAllLazy:()=>p,selectLazy:()=>d,sq:()=>a});var o=n(2545),i=n(8612);const r={maxRetry:15,queryInterval:1e3},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>Boolean(e),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r;const o={...r,...n};return new Promise((n=>{let r=null,a=0;const c=()=>{n(r)},s=()=>{a>o.maxRetry?n(null):(r=e(),!0===t(r,c)?n(r):setTimeout((()=>{"undefined"!=typeof document?(0,i.waitForForeground)((()=>{a++,s()})):s()}),o.queryInterval))};s()}))},c=new Map,s=(e,t)=>{let n;if("string"==typeof e){if(c.has(e))return c.get(e);n=()=>document.querySelector((0,i.bwpVideoFilter)(e))}else n=e;const o=t(n);if("string"==typeof e){const t=o.then((t=>(c.delete(e),t)));return c.set(e,t),t}return o},l=(e,t)=>s(e,(e=>a(e,(e=>null!=e),t))),d=e=>s(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),m=new Map,f=(e,t)=>{let n;if("string"==typeof e){if(m.has(e))return m.get(e);n=()=>Array.from(document.querySelectorAll((0,i.bwpVideoFilter)(e)))}else n=e;const o=e=>null===e?[]:e,r=t(n);if("string"==typeof e){const t=r.then((t=>(m.delete(e),o(t))));return m.set(e,t),t}return r.then((e=>o(e)))},u=(e,t)=>f(e,(e=>a(e,(e=>e.length>0),t))),p=e=>f(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),b=(e,t,n)=>a(e,(e=>e.length===t),n);let h;const g=async()=>{h||(h=new Promise((e=>(0,o.videoChange)((()=>e(unsafeWindow.cid))))));const e=await h;return Boolean(e)}},4460:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addImportantStyle:()=>a,addStyle:()=>r,getDefaultStyleID:()=>i,loadAllCustomStyles:()=>d,loadInstantStyle:()=>s,preloadStyles:()=>l,removeStyle:()=>c});var o=n(1197);const i=e=>e.replace(/([a-z][A-Z])/g,(e=>`${e[0]}-${e[1].toLowerCase()}`)),r=(e,t,n)=>{const o=t?i(t):null,r=dq(`#${o}`);if(!r||!t){const t=document.createElement("style");return t.id=o,t.textContent=e,(n||document.head).insertAdjacentElement("beforeend",t),t}return r},a=(e,t)=>r(e,t,document.body),c=function(){for(var e=arguments.length,t=new Array(e),n=0;n{const t=i(e);document.getElementById(t)?.remove()}))},s=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{head:document.head,body:document.body};e.instantStyles?.forEach((async e=>{const n=document.createElement("style");if(n.id=i(e.name),"string"==typeof e.style)n.textContent=e.style;else{const{default:t}=await e.style();n.textContent=t}e.important?t.body.appendChild(n):t.head.appendChild(n)}))},l=lodash.once((async()=>{const{LoadingMode:e}=await Promise.resolve().then(n.bind(n,9770)),{addHook:t}=await Promise.resolve().then(n.bind(n,68)),{getGeneralSettings:r,settings:a,isComponentEnabled:l,isUserComponent:d,addComponentListener:m,removeComponentListener:f}=await Promise.resolve().then(n.bind(n,5067)),u=async()=>{const{components:e}=await Promise.resolve().then(n.bind(n,6316)),r=document.createDocumentFragment(),u=document.createDocumentFragment();await Promise.all(e.map((e=>{const n=t=>t?s(e):e.instantStyles?.forEach((e=>c(e.name)));if(m(e.name,n),d(e)&&t("userComponents.remove",{after:t=>{t.name===e.name&&f(e.name,n)}}),l(e))return s(e,{head:r,body:u})})));const{UserStyleMode:p}=await Promise.resolve().then(n.bind(n,473));Object.values(a.userStyles).filter((e=>e.mode===p.Instant)).forEach((e=>{const t=document.createElement("style");t.id=i(e.name),t.textContent=e.style,r.appendChild(t)})),document.head.appendChild(r),(0,o.contentLoaded)((()=>document.body.appendChild(u)))};r().styleLoadingMode===e.Delay?await(0,o.contentLoaded)(u):await u(),(0,o.contentLoaded)((async()=>{const{initColors:e}=await Promise.resolve().then(n.bind(n,5523)),{initMdiStyle:t}=await Promise.resolve().then(n.bind(n,8633));document.head.appendChild(e());const o=t();document.head.appendChild(o)}))})),d=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,5067)),{UserStyleMode:t}=await Promise.resolve().then(n.bind(n,473));(0,o.contentLoaded)((()=>{Object.values(e.userStyles).filter((e=>e.mode===t.Important)).forEach((e=>{r(e.style,e.name,document.body)}))})),Object.values(e.userStyles).filter((e=>e.mode===t.Default)).forEach((e=>{r(e.style,e.name,document.head)}))}},205:(e,t,n)=>{"use strict";n.r(t),n.d(t,{TextColor:()=>o});let o=function(e){return e.Auto="自动",e.White="白色",e.Black="黑色",e}({})},5523:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initColors:()=>s});var o=n(4654),i=n.n(o),r=n(5067);const a=(e,t)=>{const n=t.hue()-e.hue(),o=100*((t.saturationv()-e.saturationv())/100+1),i=e=>Math.round(10*e)/10;return`hue-rotate(${i(n)}deg) saturate(${i(o)}%)`};var c=n(205);const s=()=>{const e=document.createElement("style"),t=new Map,n=(e,n)=>{t.set(e,n)},o=lodash.debounce((()=>{e.textContent=`\n html {\n ${[...t.entries()].map((e=>{let[t,n]=e;return`${t}: ${n};`})).join("\n")}\n }\n `.trim()}),100),s=e=>{let t;t=e===c.TextColor.Auto?i()((0,r.getGeneralSettings)().themeColor).isLight()?"black":"white":e===c.TextColor.Black?"black":"white",n("--text-color",t),n("--foreground-color",t),n("--foreground-color-d",i()(t,"keyword").alpha(.875).rgb().string()),n("--foreground-color-b",i()(t,"keyword").alpha(.75).rgb().string()),n("--brightness",("black"===t?"100":"0")+"%"),n("--invert-filter","black"===t?"invert(0)":"invert(1)"),o()};return(0,r.addComponentListener)("settingsPanel.themeColor",(e=>{n("--theme-color",e);for(let t=10;t<=90;t+=10){const o=i()(e,"hex");n(`--theme-color-${t}`,o.alpha(t/100).rgb().string()),n(`--theme-color-lightness-${t}`,o.lightness(t).rgb().toString())}n("--pink-image-filter",a(i()({r:251,g:113,b:152},"rgb"),i()(e,"hex"))),n("--blue-image-filter",a(i()({r:0,g:160,b:213},"rgb"),i()(e,"hex"))),s((0,r.getGeneralSettings)().textColor),o()}),!0),(0,r.addComponentListener)("settingsPanel.textColor",s,!0),e}},3823:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Toast:()=>g,ToastType:()=>h});var o=n(3311),i=n(8612),r=n(9945),a=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition-group",{staticClass:"toast-card-container",attrs:{name:"toast-card-container",tag:"div"}},e._l(e.cards,(function(e){return t("ToastCard",{key:e.key,attrs:{"data-key":e.key,card:e}})})),1)};a._withStripped=!0;const c=Vue.extend({components:{ToastCard:()=>Promise.resolve().then(n.bind(n,5947)).then((e=>e.default))},data:()=>({cards:[]})});var s=n(8332),l=n.n(s),d=n(3747),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports;function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let b,h=function(e){return e.Default="default",e.Info="info",e.Success="success",e.Error="error",e}({});class g{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.Default;this.message=e,this.title=t,this.type=n,p(this,"durationNumber",3e3),p(this,"durationTimeout",0),p(this,"closeTime",0),p(this,"creationTime",Number(new Date)),p(this,"randomKey",Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER+1)))}static get containerVM(){return b||g.createToastContainer(),b}static createToastContainer(){dq(".toast-card-container")||(b=(0,i.mountVueComponent)(u),document.body.insertAdjacentElement("beforeend",b.$el))}get element(){return(0,o.select)(`.toast-card[data-key='${this.key}']`)}get key(){return`${this.creationTime}[${this.randomKey}]`}get duration(){return this.durationNumber}set duration(e){this.durationNumber=e,this.durationTimeout&&this.clearDuration(),this.setDuration()}show(){this.setDuration(),g.containerVM.cards.unshift(this)}close(){const{cards:e}=g.containerVM;e.includes(this)&&e.splice(e.indexOf(this),1),this.clearDuration()}dismiss(){this.close()}setDuration(){void 0!==this.durationNumber?(this.durationTimeout&&this.clearDuration(),this.closeTime=Number(new Date)+this.durationNumber,this.durationTimeout=window.setTimeout((()=>this.close()),this.durationNumber)):this.closeTime=0}clearDuration(){this.durationTimeout&&(window.clearTimeout(this.durationTimeout),this.closeTime=0,this.durationTimeout=0)}static internalShow(e,t,n,o){const i=new g(e,t,o);return i.duration=n,i.show(),i}static show(e,t,n){return this.internalShow(e,t,n,h.Default)}static info(e,t,n){return this.internalShow(e,t,n,h.Info)}static success(e,t,n){return this.internalShow(e,t,n,h.Success)}static error(e,t,n){return this.internalShow(e,t,n,h.Error)}static mini(){return(0,r.$)(...arguments)}}},9945:(e,t,n)=>{"use strict";function o(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function i(e){return e instanceof o(e).Element||e instanceof Element}function r(e){return e instanceof o(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof o(e).ShadowRoot||e instanceof ShadowRoot)}n.d(t,{$:()=>dt});var c=Math.max,s=Math.min,l=Math.round;function d(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,c=e.offsetWidth;c>0&&(o=l(n.width)/c||1),a>0&&(i=l(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function m(e){var t=o(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function f(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((i(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return d(u(e)).left+m(e).scrollLeft}function b(e){return o(e).getComputedStyle(e)}function h(e){var t=b(e),n=t.overflow,o=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+o)}function g(e,t,n){void 0===n&&(n=!1);var i,a,c=r(t),s=r(t)&&function(e){var t=e.getBoundingClientRect(),n=l(t.width)/e.offsetWidth||1,o=l(t.height)/e.offsetHeight||1;return 1!==n||1!==o}(t),b=u(t),g=d(e,s),F={scrollLeft:0,scrollTop:0},v={x:0,y:0};return(c||!c&&!n)&&(("body"!==f(t)||h(b))&&(F=(i=t)!==o(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:m(i)),r(t)?((v=d(t,!0)).x+=t.clientLeft,v.y+=t.clientTop):b&&(v.x=p(b))),{x:g.left+F.scrollLeft-v.x,y:g.top+F.scrollTop-v.y,width:g.width,height:g.height}}function F(e){var t=d(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function v(e){return"html"===f(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||u(e)}function w(e){return["html","body","#document"].indexOf(f(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:w(v(e))}function y(e,t){var n;void 0===t&&(t=[]);var i=w(e),r=i===(null==(n=e.ownerDocument)?void 0:n.body),a=o(i),c=r?[a].concat(a.visualViewport||[],h(i)?i:[]):i,s=t.concat(c);return r?s:s.concat(y(v(c)))}function x(e){return["table","td","th"].indexOf(f(e))>=0}function k(e){return r(e)&&"fixed"!==b(e).position?e.offsetParent:null}function C(e){for(var t=o(e),n=k(e);n&&x(n)&&"static"===b(n).position;)n=k(n);return n&&("html"===f(n)||"body"===f(n)&&"static"===b(n).position)?t:n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===b(e).position)return null;var n=v(e);for(a(n)&&(n=n.host);r(n)&&["html","body"].indexOf(f(n))<0;){var o=b(n);if("none"!==o.transform||"none"!==o.perspective||"paint"===o.contain||-1!==["transform","perspective"].indexOf(o.willChange)||t&&"filter"===o.willChange||t&&o.filter&&"none"!==o.filter)return n;n=n.parentNode}return null}(e)||t}var A="top",E="bottom",B="right",D="left",I="auto",z=[A,E,B,D],S="start",M="end",P="viewport",O="popper",V=z.reduce((function(e,t){return e.concat([t+"-"+S,t+"-"+M])}),[]),T=[].concat(z,[I]).reduce((function(e,t){return e.concat([t,t+"-"+S,t+"-"+M])}),[]),L=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function j(e){var t=new Map,n=new Set,o=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var o=t.get(e);o&&i(o)}})),o.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||i(e)})),o}var R={placement:"bottom",modifiers:[],strategy:"absolute"};function N(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function G(e){var t,n=e.reference,o=e.element,i=e.placement,r=i?U(i):null,a=i?H(i):null,c=n.x+n.width/2-o.width/2,s=n.y+n.height/2-o.height/2;switch(r){case A:t={x:c,y:n.y-o.height};break;case E:t={x:c,y:n.y+n.height};break;case B:t={x:n.x+n.width,y:s};break;case D:t={x:n.x-o.width,y:s};break;default:t={x:n.x,y:n.y}}var l=r?W(r):null;if(null!=l){var d="y"===l?"height":"width";switch(a){case S:t[l]=t[l]-(n[d]/2-o[d]/2);break;case M:t[l]=t[l]+(n[d]/2-o[d]/2)}}return t} +}.bind(window)(),getModule(window)})());const library=await this.modulePromise;return resolve(library)}catch(e){throw reject(e),e}}}const protobufLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.protobuf,getModule:e=>e.protobuf}),JSZipLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.jszip,getModule:e=>e.JSZip}),SortableJSLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.sortable,getModule:e=>e.Sortable}),StreamSaverLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.streamsaver,getModule:e=>e.streamSaver})},7219:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentToSettings:()=>c,getComponentSettings:()=>m,getGeneralSettings:()=>f,isComponentEnabled:()=>u,isUserComponent:()=>s,isUserPlugin:()=>l,metadataToOptions:()=>a});var o=n(6316),i=n(5067),r=n(8612);const a=e=>lodash.mapValues(e,(e=>e.defaultValue)),c=e=>{const{options:t}=e;return{enabled:e.enabledByDefault??!0,options:t?a(t):{}}},s=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userComponents[t])},l=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userPlugins[t])},d={enabled:!1,options:new Proxy({},{get:()=>!1})},m=e=>{let t;if("string"==typeof e){if(void 0===o.componentsMap[e])return i.settings.components.settingsPanel.options.devMode&&console.warn("No settings found for component:",e),d;t=o.componentsMap[e]}else t=e;if(s(t)){const{name:e}=t;return i.settings.userComponents[e]?.settings??d}return i.settings.components[t.name]},f=()=>m("settingsPanel").options,u=e=>("string"==typeof e&&(e=o.componentsMap[e]),!!e&&((!e.urlExclude||!e.urlExclude.some(r.matchUrlPattern))&&((!e.urlInclude||!e.urlInclude.every(lodash.negate(r.matchUrlPattern)))&&(!1===e.configurable?e.enabledByDefault??!0:m(e).enabled))))},5067:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addComponentListener:()=>b,addSettingsChangeListener:()=>f,componentToSettings:()=>o.componentToSettings,defaultSettings:()=>l,getComponentSettings:()=>o.getComponentSettings,getGeneralSettings:()=>o.getGeneralSettings,isComponentEnabled:()=>o.isComponentEnabled,isUserComponent:()=>o.isUserComponent,isUserPlugin:()=>o.isUserPlugin,metadataToOptions:()=>o.metadataToOptions,removeComponentListener:()=>h,removeSettingsChangeListener:()=>u,settings:()=>g});var o=n(7219);const i=Symbol("isProxy");var r=n(6316),a=n(9094);const c={userStyles:{},userPlugins:{},userComponents:{},components:{},plugins:{}},s={internalSettings:c,settingsLoaded:!1},l=lodash.cloneDeep(c),d=new Map,m=(e,t)=>"object"==typeof e?lodash.defaultsDeep(e,t):e;a.plugins.forEach((e=>{s.internalSettings.plugins[e.name]=!0})),r.components.forEach((e=>{s.internalSettings.components[e.name]=(0,o.componentToSettings)(e)})),s.internalSettings=((e,t)=>{const n=function(e,o){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];for(const[t,i]of Object.entries(e)){"object"==typeof i&&!(i instanceof RegExp)&&(e[t]=n(i,o||t,[...r,t]))}const a=new Proxy(e,{get:(e,t)=>t===i||e[t],set(e,a,c){const s=e[a],l=!Object.prototype.hasOwnProperty.call(e,a)&&void 0!==s;unsafeWindow.proxyDebug&&console.log({isImplicitProp:l,prop:a,rootProp:o,propPath:r,value:c,oldValue:s});return!("object"!=typeof c||c instanceof RegExp||!0===c[i]||l)&&(c=n(c,o||a,[...r,a])),e[a]=c,l||t?.(c,s,o||a,[...r,a]),!0},deleteProperty(e,n){const i=e[n];return delete e[n],t?.(void 0,i,o||n,[...r,n]),!0}});return a};return n(e)})((e=>{for(const[t,n]of Object.entries(e)){const o=GM_getValue(t,n);e[t]=m(o,n)}return e})(s.internalSettings),(function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(s.settingsLoaded){GM_setValue(n.toString(),s.internalSettings[n.toString()]);const i=o.join(".");if(o.length>1){const e=o.slice(0,o.length-1).join("."),t=lodash.get(s.internalSettings,e);if(Array.isArray(t)||lodash.isPlainObject(t)){d.get(e)?.forEach((e=>e(t,null,n,o)))}}d.get(i)?.forEach((i=>i(e,t,n,o)))}}));for(const[e,t]of Object.entries(s.internalSettings))GM_setValue(e,t);const f=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=d.get(e);if(o?o.push(t):d.set(e,[t]),n){const n=lodash.get(s.internalSettings,e);t(n,n,"",[])}},u=(e,t)=>{const n=d.get(e);if(!n)return;const o=n.indexOf(t);-1!==o&&n.splice(o,1)},p=e=>{const[t,...n]=e.split("."),i=n.join(".");return(0,o.isUserComponent)(t)?i?`userComponents.${t}.settings.options.${i}`:`userComponents.${t}.settings.enabled`:i?`components.${t}.options.${i}`:`components.${t}.enabled`},b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];f(p(e),t,n)},h=(e,t)=>{u(p(e),t)};s.settingsLoaded=!0;const g=s.internalSettings},3311:(e,t,n)=>{"use strict";n.r(t),n.d(t,{count:()=>b,hasVideo:()=>g,select:()=>l,selectAll:()=>u,selectAllLazy:()=>p,selectLazy:()=>d,sq:()=>a});var o=n(2545),i=n(8612);const r={maxRetry:15,queryInterval:1e3},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>Boolean(e),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r;const o={...r,...n};return new Promise((n=>{let r=null,a=0;const c=()=>{n(r)},s=()=>{a>o.maxRetry?n(null):(r=e(),!0===t(r,c)?n(r):setTimeout((()=>{"undefined"!=typeof document?(0,i.waitForForeground)((()=>{a++,s()})):s()}),o.queryInterval))};s()}))},c=new Map,s=(e,t)=>{let n;if("string"==typeof e){if(c.has(e))return c.get(e);n=()=>document.querySelector((0,i.bwpVideoFilter)(e))}else n=e;const o=t(n);if("string"==typeof e){const t=o.then((t=>(c.delete(e),t)));return c.set(e,t),t}return o},l=(e,t)=>s(e,(e=>a(e,(e=>null!=e),t))),d=e=>s(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),m=new Map,f=(e,t)=>{let n;if("string"==typeof e){if(m.has(e))return m.get(e);n=()=>Array.from(document.querySelectorAll((0,i.bwpVideoFilter)(e)))}else n=e;const o=e=>null===e?[]:e,r=t(n);if("string"==typeof e){const t=r.then((t=>(m.delete(e),o(t))));return m.set(e,t),t}return r.then((e=>o(e)))},u=(e,t)=>f(e,(e=>a(e,(e=>e.length>0),t))),p=e=>f(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),b=(e,t,n)=>a(e,(e=>e.length===t),n);let h;const g=async()=>{h||(h=new Promise((e=>(0,o.videoChange)((()=>e(unsafeWindow.cid))))));const e=await h;return Boolean(e)}},4460:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addImportantStyle:()=>a,addStyle:()=>r,getDefaultStyleID:()=>i,loadAllCustomStyles:()=>d,loadInstantStyle:()=>s,preloadStyles:()=>l,removeStyle:()=>c});var o=n(1197);const i=e=>e.replace(/([a-z][A-Z])/g,(e=>`${e[0]}-${e[1].toLowerCase()}`)),r=(e,t,n)=>{const o=t?i(t):null,r=dq(`#${o}`);if(!r||!t){const t=document.createElement("style");return t.id=o,t.textContent=e,(n||document.head).insertAdjacentElement("beforeend",t),t}return r},a=(e,t)=>r(e,t,document.body),c=function(){for(var e=arguments.length,t=new Array(e),n=0;n{const t=i(e);document.getElementById(t)?.remove()}))},s=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{head:document.head,body:document.body};e.instantStyles?.forEach((async e=>{const n=document.createElement("style");if(n.id=i(e.name),"string"==typeof e.style)n.textContent=e.style;else{const{default:t}=await e.style();n.textContent=t}e.important?t.body.appendChild(n):t.head.appendChild(n)}))},l=lodash.once((async()=>{const{LoadingMode:e}=await Promise.resolve().then(n.bind(n,9770)),{addHook:t}=await Promise.resolve().then(n.bind(n,68)),{getGeneralSettings:r,settings:a,isComponentEnabled:l,isUserComponent:d,addComponentListener:m,removeComponentListener:f}=await Promise.resolve().then(n.bind(n,5067)),u=async()=>{const{components:e}=await Promise.resolve().then(n.bind(n,6316)),r=document.createDocumentFragment(),u=document.createDocumentFragment();await Promise.all(e.map((e=>{const n=t=>t?s(e):e.instantStyles?.forEach((e=>c(e.name)));if(m(e.name,n),d(e)&&t("userComponents.remove",{after:t=>{t.name===e.name&&f(e.name,n)}}),l(e))return s(e,{head:r,body:u})})));const{UserStyleMode:p}=await Promise.resolve().then(n.bind(n,473));Object.values(a.userStyles).filter((e=>e.mode===p.Instant)).forEach((e=>{const t=document.createElement("style");t.id=i(e.name),t.textContent=e.style,r.appendChild(t)})),document.head.appendChild(r),(0,o.contentLoaded)((()=>document.body.appendChild(u)))};r().styleLoadingMode===e.Delay?await(0,o.contentLoaded)(u):await u(),(0,o.contentLoaded)((async()=>{const{initColors:e}=await Promise.resolve().then(n.bind(n,5523)),{initMdiStyle:t}=await Promise.resolve().then(n.bind(n,8633));document.head.appendChild(e());const o=t();document.head.appendChild(o)}))})),d=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,5067)),{UserStyleMode:t}=await Promise.resolve().then(n.bind(n,473));(0,o.contentLoaded)((()=>{Object.values(e.userStyles).filter((e=>e.mode===t.Important)).forEach((e=>{r(e.style,e.name,document.body)}))})),Object.values(e.userStyles).filter((e=>e.mode===t.Default)).forEach((e=>{r(e.style,e.name,document.head)}))}},205:(e,t,n)=>{"use strict";n.r(t),n.d(t,{TextColor:()=>o});let o=function(e){return e.Auto="自动",e.White="白色",e.Black="黑色",e}({})},5523:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initColors:()=>s});var o=n(4654),i=n.n(o),r=n(5067);const a=(e,t)=>{const n=t.hue()-e.hue(),o=100*((t.saturationv()-e.saturationv())/100+1),i=e=>Math.round(10*e)/10;return`hue-rotate(${i(n)}deg) saturate(${i(o)}%)`};var c=n(205);const s=()=>{const e=document.createElement("style"),t=new Map,n=(e,n)=>{t.set(e,n)},o=lodash.debounce((()=>{e.textContent=`\n html {\n ${[...t.entries()].map((e=>{let[t,n]=e;return`${t}: ${n};`})).join("\n")}\n }\n `.trim()}),100),s=e=>{let t;t=e===c.TextColor.Auto?i()((0,r.getGeneralSettings)().themeColor).isLight()?"black":"white":e===c.TextColor.Black?"black":"white",n("--text-color",t),n("--foreground-color",t),n("--foreground-color-d",i()(t,"keyword").alpha(.875).rgb().string()),n("--foreground-color-b",i()(t,"keyword").alpha(.75).rgb().string()),n("--brightness",("black"===t?"100":"0")+"%"),n("--invert-filter","black"===t?"invert(0)":"invert(1)"),o()};return(0,r.addComponentListener)("settingsPanel.themeColor",(e=>{n("--theme-color",e);for(let t=10;t<=90;t+=10){const o=i()(e,"hex");n(`--theme-color-${t}`,o.alpha(t/100).rgb().string()),n(`--theme-color-lightness-${t}`,o.lightness(t).rgb().toString())}n("--pink-image-filter",a(i()({r:251,g:113,b:152},"rgb"),i()(e,"hex"))),n("--blue-image-filter",a(i()({r:0,g:160,b:213},"rgb"),i()(e,"hex"))),s((0,r.getGeneralSettings)().textColor),o()}),!0),(0,r.addComponentListener)("settingsPanel.textColor",s,!0),e}},3823:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Toast:()=>g,ToastType:()=>h});var o=n(3311),i=n(8612),r=n(9945),a=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition-group",{staticClass:"toast-card-container",attrs:{name:"toast-card-container",tag:"div"}},e._l(e.cards,(function(e){return t("ToastCard",{key:e.key,attrs:{"data-key":e.key,card:e}})})),1)};a._withStripped=!0;const c=Vue.extend({components:{ToastCard:()=>Promise.resolve().then(n.bind(n,5947)).then((e=>e.default))},data:()=>({cards:[]})});var s=n(8332),l=n.n(s),d=n(3747),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports;function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let b,h=function(e){return e.Default="default",e.Info="info",e.Success="success",e.Error="error",e}({});class g{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.Default;this.message=e,this.title=t,this.type=n,p(this,"durationNumber",3e3),p(this,"durationTimeout",0),p(this,"closeTime",0),p(this,"creationTime",Number(new Date)),p(this,"randomKey",Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER+1)))}static get containerVM(){return b||g.createToastContainer(),b}static createToastContainer(){dq(".toast-card-container")||(b=(0,i.mountVueComponent)(u),document.body.insertAdjacentElement("beforeend",b.$el))}get element(){return(0,o.select)(`.toast-card[data-key='${this.key}']`)}get key(){return`${this.creationTime}[${this.randomKey}]`}get duration(){return this.durationNumber}set duration(e){this.durationNumber=e,this.durationTimeout&&this.clearDuration(),this.setDuration()}show(){this.setDuration(),g.containerVM.cards.unshift(this)}close(){const{cards:e}=g.containerVM;e.includes(this)&&e.splice(e.indexOf(this),1),this.clearDuration()}dismiss(){this.close()}setDuration(){void 0!==this.durationNumber?(this.durationTimeout&&this.clearDuration(),this.closeTime=Number(new Date)+this.durationNumber,this.durationTimeout=window.setTimeout((()=>this.close()),this.durationNumber)):this.closeTime=0}clearDuration(){this.durationTimeout&&(window.clearTimeout(this.durationTimeout),this.closeTime=0,this.durationTimeout=0)}static internalShow(e,t,n,o){const i=new g(e,t,o);return i.duration=n,i.show(),i}static show(e,t,n){return this.internalShow(e,t,n,h.Default)}static info(e,t,n){return this.internalShow(e,t,n,h.Info)}static success(e,t,n){return this.internalShow(e,t,n,h.Success)}static error(e,t,n){return this.internalShow(e,t,n,h.Error)}static mini(){return(0,r.$)(...arguments)}}},9945:(e,t,n)=>{"use strict";function o(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function i(e){return e instanceof o(e).Element||e instanceof Element}function r(e){return e instanceof o(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof o(e).ShadowRoot||e instanceof ShadowRoot)}n.d(t,{$:()=>dt});var c=Math.max,s=Math.min,l=Math.round;function d(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,c=e.offsetWidth;c>0&&(o=l(n.width)/c||1),a>0&&(i=l(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function m(e){var t=o(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function f(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((i(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return d(u(e)).left+m(e).scrollLeft}function b(e){return o(e).getComputedStyle(e)}function h(e){var t=b(e),n=t.overflow,o=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+o)}function g(e,t,n){void 0===n&&(n=!1);var i,a,c=r(t),s=r(t)&&function(e){var t=e.getBoundingClientRect(),n=l(t.width)/e.offsetWidth||1,o=l(t.height)/e.offsetHeight||1;return 1!==n||1!==o}(t),b=u(t),g=d(e,s),F={scrollLeft:0,scrollTop:0},v={x:0,y:0};return(c||!c&&!n)&&(("body"!==f(t)||h(b))&&(F=(i=t)!==o(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:m(i)),r(t)?((v=d(t,!0)).x+=t.clientLeft,v.y+=t.clientTop):b&&(v.x=p(b))),{x:g.left+F.scrollLeft-v.x,y:g.top+F.scrollTop-v.y,width:g.width,height:g.height}}function F(e){var t=d(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function v(e){return"html"===f(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||u(e)}function w(e){return["html","body","#document"].indexOf(f(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:w(v(e))}function y(e,t){var n;void 0===t&&(t=[]);var i=w(e),r=i===(null==(n=e.ownerDocument)?void 0:n.body),a=o(i),c=r?[a].concat(a.visualViewport||[],h(i)?i:[]):i,s=t.concat(c);return r?s:s.concat(y(v(c)))}function x(e){return["table","td","th"].indexOf(f(e))>=0}function k(e){return r(e)&&"fixed"!==b(e).position?e.offsetParent:null}function C(e){for(var t=o(e),n=k(e);n&&x(n)&&"static"===b(n).position;)n=k(n);return n&&("html"===f(n)||"body"===f(n)&&"static"===b(n).position)?t:n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===b(e).position)return null;var n=v(e);for(a(n)&&(n=n.host);r(n)&&["html","body"].indexOf(f(n))<0;){var o=b(n);if("none"!==o.transform||"none"!==o.perspective||"paint"===o.contain||-1!==["transform","perspective"].indexOf(o.willChange)||t&&"filter"===o.willChange||t&&o.filter&&"none"!==o.filter)return n;n=n.parentNode}return null}(e)||t}var A="top",E="bottom",B="right",D="left",I="auto",z=[A,E,B,D],S="start",P="end",M="viewport",O="popper",V=z.reduce((function(e,t){return e.concat([t+"-"+S,t+"-"+P])}),[]),T=[].concat(z,[I]).reduce((function(e,t){return e.concat([t,t+"-"+S,t+"-"+P])}),[]),L=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function j(e){var t=new Map,n=new Set,o=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var o=t.get(e);o&&i(o)}})),o.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||i(e)})),o}var R={placement:"bottom",modifiers:[],strategy:"absolute"};function N(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function G(e){var t,n=e.reference,o=e.element,i=e.placement,r=i?U(i):null,a=i?H(i):null,c=n.x+n.width/2-o.width/2,s=n.y+n.height/2-o.height/2;switch(r){case A:t={x:c,y:n.y-o.height};break;case E:t={x:c,y:n.y+n.height};break;case B:t={x:n.x+n.width,y:s};break;case D:t={x:n.x-o.width,y:s};break;default:t={x:n.x,y:n.y}}var l=r?W(r):null;if(null!=l){var d="y"===l?"height":"width";switch(a){case S:t[l]=t[l]-(n[d]/2-o[d]/2);break;case P:t[l]=t[l]+(n[d]/2-o[d]/2)}}return t} // eslint-disable-next-line import/no-unused-modules -var Q={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Y(e){var t,n=e.popper,i=e.popperRect,r=e.placement,a=e.variation,c=e.offsets,s=e.position,d=e.gpuAcceleration,m=e.adaptive,f=e.roundOffsets,p=e.isFixed,h=c.x,g=void 0===h?0:h,F=c.y,v=void 0===F?0:F,w="function"==typeof f?f({x:g,y:v}):{x:g,y:v};g=w.x,v=w.y;var y=c.hasOwnProperty("x"),x=c.hasOwnProperty("y"),k=D,I=A,z=window;if(m){var S=C(n),P="clientHeight",O="clientWidth";if(S===o(n)&&"static"!==b(S=u(n)).position&&"absolute"===s&&(P="scrollHeight",O="scrollWidth"),r===A||(r===D||r===B)&&a===M)I=E,v-=(p&&S===z&&z.visualViewport?z.visualViewport.height:S[P])-i.height,v*=d?1:-1;if(r===D||(r===A||r===E)&&a===M)k=B,g-=(p&&S===z&&z.visualViewport?z.visualViewport.width:S[O])-i.width,g*=d?1:-1}var V,T=Object.assign({position:s},m&&Q),L=!0===f?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:l(t*o)/o||0,y:l(n*o)/o||0}}({x:g,y:v}):{x:g,y:v};return g=L.x,v=L.y,d?Object.assign({},T,((V={})[I]=x?"0":"",V[k]=y?"0":"",V.transform=(z.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",V)):Object.assign({},T,((t={})[I]=x?v+"px":"",t[k]=y?g+"px":"",t.transform="",t))}// eslint-disable-next-line import/no-unused-modules +var Q={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Y(e){var t,n=e.popper,i=e.popperRect,r=e.placement,a=e.variation,c=e.offsets,s=e.position,d=e.gpuAcceleration,m=e.adaptive,f=e.roundOffsets,p=e.isFixed,h=c.x,g=void 0===h?0:h,F=c.y,v=void 0===F?0:F,w="function"==typeof f?f({x:g,y:v}):{x:g,y:v};g=w.x,v=w.y;var y=c.hasOwnProperty("x"),x=c.hasOwnProperty("y"),k=D,I=A,z=window;if(m){var S=C(n),M="clientHeight",O="clientWidth";if(S===o(n)&&"static"!==b(S=u(n)).position&&"absolute"===s&&(M="scrollHeight",O="scrollWidth"),r===A||(r===D||r===B)&&a===P)I=E,v-=(p&&S===z&&z.visualViewport?z.visualViewport.height:S[M])-i.height,v*=d?1:-1;if(r===D||(r===A||r===E)&&a===P)k=B,g-=(p&&S===z&&z.visualViewport?z.visualViewport.width:S[O])-i.width,g*=d?1:-1}var V,T=Object.assign({position:s},m&&Q),L=!0===f?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:l(t*o)/o||0,y:l(n*o)/o||0}}({x:g,y:v}):{x:g,y:v};return g=L.x,v=L.y,d?Object.assign({},T,((V={})[I]=x?"0":"",V[k]=y?"0":"",V.transform=(z.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",V)):Object.assign({},T,((t={})[I]=x?v+"px":"",t[k]=y?g+"px":"",t.transform="",t))}// eslint-disable-next-line import/no-unused-modules const X={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&f(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});r(o)&&f(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};// eslint-disable-next-line import/no-unused-modules const K={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,o=e.name,i=n.offset,r=void 0===i?[0,0]:i,a=T.reduce((function(e,n){return e[n]= // eslint-disable-next-line import/no-unused-modules -function(e,t,n){var o=U(e),i=[D,A].indexOf(o)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=r[0],c=r[1];return a=a||0,c=(c||0)*i,[D,B].indexOf(o)>=0?{x:c,y:a}:{x:a,y:c}}(n,t.rects,r),e}),{}),c=a[t.placement],s=c.x,l=c.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=l),t.modifiersData[o]=a}};var J={left:"right",right:"left",bottom:"top",top:"bottom"};function _(e){return e.replace(/left|right|bottom|top/g,(function(e){return J[e]}))}var $={start:"end",end:"start"};function ee(e){return e.replace(/start|end/g,(function(e){return $[e]}))}function te(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function ne(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function oe(e,t){return t===P?ne(function(e){var t=o(e),n=u(e),i=t.visualViewport,r=n.clientWidth,a=n.clientHeight,c=0,s=0;return i&&(r=i.width,a=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(c=i.offsetLeft,s=i.offsetTop)),{width:r,height:a,x:c+p(e),y:s}}(e)):i(t)?function(e){var t=d(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):ne(function(e){var t,n=u(e),o=m(e),i=null==(t=e.ownerDocument)?void 0:t.body,r=c(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=c(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-o.scrollLeft+p(e),l=-o.scrollTop;return"rtl"===b(i||n).direction&&(s+=c(n.clientWidth,i?i.clientWidth:0)-r),{width:r,height:a,x:s,y:l}}(u(e)))}function ie(e,t,n){var o="clippingParents"===t?function(e){var t=y(v(e)),n=["absolute","fixed"].indexOf(b(e).position)>=0&&r(e)?C(e):e;return i(n)?t.filter((function(e){return i(e)&&te(e,n)&&"body"!==f(e)})):[]}(e):[].concat(t),a=[].concat(o,[n]),l=a[0],d=a.reduce((function(t,n){var o=oe(e,n);return t.top=c(o.top,t.top),t.right=s(o.right,t.right),t.bottom=s(o.bottom,t.bottom),t.left=c(o.left,t.left),t}),oe(e,l));return d.width=d.right-d.left,d.height=d.bottom-d.top,d.x=d.left,d.y=d.top,d}function re(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function ae(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})} +function(e,t,n){var o=U(e),i=[D,A].indexOf(o)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=r[0],c=r[1];return a=a||0,c=(c||0)*i,[D,B].indexOf(o)>=0?{x:c,y:a}:{x:a,y:c}}(n,t.rects,r),e}),{}),c=a[t.placement],s=c.x,l=c.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=l),t.modifiersData[o]=a}};var J={left:"right",right:"left",bottom:"top",top:"bottom"};function _(e){return e.replace(/left|right|bottom|top/g,(function(e){return J[e]}))}var $={start:"end",end:"start"};function ee(e){return e.replace(/start|end/g,(function(e){return $[e]}))}function te(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function ne(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function oe(e,t){return t===M?ne(function(e){var t=o(e),n=u(e),i=t.visualViewport,r=n.clientWidth,a=n.clientHeight,c=0,s=0;return i&&(r=i.width,a=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(c=i.offsetLeft,s=i.offsetTop)),{width:r,height:a,x:c+p(e),y:s}}(e)):i(t)?function(e){var t=d(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):ne(function(e){var t,n=u(e),o=m(e),i=null==(t=e.ownerDocument)?void 0:t.body,r=c(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=c(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-o.scrollLeft+p(e),l=-o.scrollTop;return"rtl"===b(i||n).direction&&(s+=c(n.clientWidth,i?i.clientWidth:0)-r),{width:r,height:a,x:s,y:l}}(u(e)))}function ie(e,t,n){var o="clippingParents"===t?function(e){var t=y(v(e)),n=["absolute","fixed"].indexOf(b(e).position)>=0&&r(e)?C(e):e;return i(n)?t.filter((function(e){return i(e)&&te(e,n)&&"body"!==f(e)})):[]}(e):[].concat(t),a=[].concat(o,[n]),l=a[0],d=a.reduce((function(t,n){var o=oe(e,n);return t.top=c(o.top,t.top),t.right=s(o.right,t.right),t.bottom=s(o.bottom,t.bottom),t.left=c(o.left,t.left),t}),oe(e,l));return d.width=d.right-d.left,d.height=d.bottom-d.top,d.x=d.left,d.y=d.top,d}function re(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function ae(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})} // eslint-disable-next-line import/no-unused-modules -function ce(e,t){void 0===t&&(t={});var n=t,o=n.placement,r=void 0===o?e.placement:o,a=n.boundary,c=void 0===a?"clippingParents":a,s=n.rootBoundary,l=void 0===s?P:s,m=n.elementContext,f=void 0===m?O:m,p=n.altBoundary,b=void 0!==p&&p,h=n.padding,g=void 0===h?0:h,F=re("number"!=typeof g?g:ae(g,z)),v=f===O?"reference":O,w=e.rects.popper,y=e.elements[b?v:f],x=ie(i(y)?y:y.contextElement||u(e.elements.popper),c,l),k=d(e.elements.reference),C=G({reference:k,element:w,strategy:"absolute",placement:r}),D=ne(Object.assign({},w,C)),I=f===O?D:k,S={top:x.top-I.top+F.top,bottom:I.bottom-x.bottom+F.bottom,left:x.left-I.left+F.left,right:I.right-x.right+F.right},M=e.modifiersData.offset;if(f===O&&M){var V=M[r];Object.keys(S).forEach((function(e){var t=[B,E].indexOf(e)>=0?1:-1,n=[A,E].indexOf(e)>=0?"y":"x";S[e]+=V[n]*t}))}return S}function se(e,t,n){return c(e,s(t,n))}// eslint-disable-next-line import/no-unused-modules -const le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,o=e.name,i=n.mainAxis,r=void 0===i||i,a=n.altAxis,l=void 0!==a&&a,d=n.boundary,m=n.rootBoundary,f=n.altBoundary,u=n.padding,p=n.tether,b=void 0===p||p,h=n.tetherOffset,g=void 0===h?0:h,v=ce(t,{boundary:d,rootBoundary:m,padding:u,altBoundary:f}),w=U(t.placement),y=H(t.placement),x=!y,k=W(w),I="x"===k?"y":"x",z=t.modifiersData.popperOffsets,M=t.rects.reference,P=t.rects.popper,O="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,V="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(z){if(r){var j,R="y"===k?A:D,N="y"===k?E:B,q="y"===k?"height":"width",Z=z[k],G=Z+v[R],Q=Z-v[N],Y=b?-P[q]/2:0,X=y===S?M[q]:P[q],K=y===S?-P[q]:-M[q],J=t.elements.arrow,_=b&&J?F(J):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},ee=$[R],te=$[N],ne=se(0,M[q],_[q]),oe=x?M[q]/2-Y-ne-ee-V.mainAxis:X-ne-ee-V.mainAxis,ie=x?-M[q]/2+Y+ne+te+V.mainAxis:K+ne+te+V.mainAxis,re=t.elements.arrow&&C(t.elements.arrow),ae=re?"y"===k?re.clientTop||0:re.clientLeft||0:0,le=null!=(j=null==T?void 0:T[k])?j:0,de=Z+ie-le,me=se(b?s(G,Z+oe-le-ae):G,Z,b?c(Q,de):Q);z[k]=me,L[k]=me-Z}if(l){var fe,ue="x"===k?A:D,pe="x"===k?E:B,be=z[I],he="y"===I?"height":"width",ge=be+v[ue],Fe=be-v[pe],ve=-1!==[A,D].indexOf(w),we=null!=(fe=null==T?void 0:T[I])?fe:0,ye=ve?ge:be-M[he]-P[he]-we+V.altAxis,xe=ve?be+M[he]+P[he]-we-V.altAxis:Fe,ke=b&&ve?function(e,t,n){var o=se(e,t,n);return o>n?n:o}(ye,be,xe):se(b?ye:ge,be,b?xe:Fe);z[I]=ke,L[I]=ke-be}t.modifiersData[o]=L}},requiresIfExists:["offset"]};// eslint-disable-next-line import/no-unused-modules +function ce(e,t){void 0===t&&(t={});var n=t,o=n.placement,r=void 0===o?e.placement:o,a=n.boundary,c=void 0===a?"clippingParents":a,s=n.rootBoundary,l=void 0===s?M:s,m=n.elementContext,f=void 0===m?O:m,p=n.altBoundary,b=void 0!==p&&p,h=n.padding,g=void 0===h?0:h,F=re("number"!=typeof g?g:ae(g,z)),v=f===O?"reference":O,w=e.rects.popper,y=e.elements[b?v:f],x=ie(i(y)?y:y.contextElement||u(e.elements.popper),c,l),k=d(e.elements.reference),C=G({reference:k,element:w,strategy:"absolute",placement:r}),D=ne(Object.assign({},w,C)),I=f===O?D:k,S={top:x.top-I.top+F.top,bottom:I.bottom-x.bottom+F.bottom,left:x.left-I.left+F.left,right:I.right-x.right+F.right},P=e.modifiersData.offset;if(f===O&&P){var V=P[r];Object.keys(S).forEach((function(e){var t=[B,E].indexOf(e)>=0?1:-1,n=[A,E].indexOf(e)>=0?"y":"x";S[e]+=V[n]*t}))}return S}function se(e,t,n){return c(e,s(t,n))}// eslint-disable-next-line import/no-unused-modules +const le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,o=e.name,i=n.mainAxis,r=void 0===i||i,a=n.altAxis,l=void 0!==a&&a,d=n.boundary,m=n.rootBoundary,f=n.altBoundary,u=n.padding,p=n.tether,b=void 0===p||p,h=n.tetherOffset,g=void 0===h?0:h,v=ce(t,{boundary:d,rootBoundary:m,padding:u,altBoundary:f}),w=U(t.placement),y=H(t.placement),x=!y,k=W(w),I="x"===k?"y":"x",z=t.modifiersData.popperOffsets,P=t.rects.reference,M=t.rects.popper,O="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,V="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(z){if(r){var j,R="y"===k?A:D,N="y"===k?E:B,q="y"===k?"height":"width",Z=z[k],G=Z+v[R],Q=Z-v[N],Y=b?-M[q]/2:0,X=y===S?P[q]:M[q],K=y===S?-M[q]:-P[q],J=t.elements.arrow,_=b&&J?F(J):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},ee=$[R],te=$[N],ne=se(0,P[q],_[q]),oe=x?P[q]/2-Y-ne-ee-V.mainAxis:X-ne-ee-V.mainAxis,ie=x?-P[q]/2+Y+ne+te+V.mainAxis:K+ne+te+V.mainAxis,re=t.elements.arrow&&C(t.elements.arrow),ae=re?"y"===k?re.clientTop||0:re.clientLeft||0:0,le=null!=(j=null==T?void 0:T[k])?j:0,de=Z+ie-le,me=se(b?s(G,Z+oe-le-ae):G,Z,b?c(Q,de):Q);z[k]=me,L[k]=me-Z}if(l){var fe,ue="x"===k?A:D,pe="x"===k?E:B,be=z[I],he="y"===I?"height":"width",ge=be+v[ue],Fe=be-v[pe],ve=-1!==[A,D].indexOf(w),we=null!=(fe=null==T?void 0:T[I])?fe:0,ye=ve?ge:be-P[he]-M[he]-we+V.altAxis,xe=ve?be+P[he]+M[he]-we-V.altAxis:Fe,ke=b&&ve?function(e,t,n){var o=se(e,t,n);return o>n?n:o}(ye,be,xe):se(b?ye:ge,be,b?xe:Fe);z[I]=ke,L[I]=ke-be}t.modifiersData[o]=L}},requiresIfExists:["offset"]};// eslint-disable-next-line import/no-unused-modules const de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,o=e.name,i=e.options,r=n.elements.arrow,a=n.modifiersData.popperOffsets,c=U(n.placement),s=W(c),l=[D,B].indexOf(c)>=0?"height":"width";if(r&&a){var d=function(e,t){return re("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:ae(e,z))}(i.padding,n),m=F(r),f="y"===s?A:D,u="y"===s?E:B,p=n.rects.reference[l]+n.rects.reference[s]-a[s]-n.rects.popper[l],b=a[s]-n.rects.reference[s],h=C(r),g=h?"y"===s?h.clientHeight||0:h.clientWidth||0:0,v=p/2-b/2,w=d[f],y=g-m[l]-d[u],x=g/2-m[l]/2+v,k=se(w,x,y),I=s;n.modifiersData[o]=((t={})[I]=k,t.centerOffset=k-x,t)}},effect:function(e){var t=e.state,n=e.options.element,o=void 0===n?"[data-popper-arrow]":n;null!=o&&("string"!=typeof o||(o=t.elements.popper.querySelector(o)))&&te(t.elements.popper,o)&&(t.elements.arrow=o)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function me(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function fe(e){return[A,B,E,D].some((function(t){return e[t]>=0}))}var ue=q({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,r=i.scroll,a=void 0===r||r,c=i.resize,s=void 0===c||c,l=o(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach((function(e){e.addEventListener("scroll",n.update,Z)})),s&&l.addEventListener("resize",n.update,Z),function(){a&&d.forEach((function(e){e.removeEventListener("scroll",n.update,Z)})),s&&l.removeEventListener("resize",n.update,Z)}}// eslint-disable-next-line import/no-unused-modules ,data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=G({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}// eslint-disable-next-line import/no-unused-modules ,data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,o=n.gpuAcceleration,i=void 0===o||o,r=n.adaptive,a=void 0===r||r,c=n.roundOffsets,s=void 0===c||c,l={placement:U(t.placement),variation:H(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Y(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Y(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}// eslint-disable-next-line import/no-unused-modules ,data:{}},X,K,{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var i=n.mainAxis,r=void 0===i||i,a=n.altAxis,c=void 0===a||a,s=n.fallbackPlacements,l=n.padding,d=n.boundary,m=n.rootBoundary,f=n.altBoundary,u=n.flipVariations,p=void 0===u||u,b=n.allowedAutoPlacements,h=t.options.placement,g=U(h),F=s||(g===h||!p?[_(h)]: // eslint-disable-next-line import/no-unused-modules -function(e){if(U(e)===I)return[];var t=_(e);return[ee(e),t,ee(t)]}(h)),v=[h].concat(F).reduce((function(e,n){return e.concat(U(n)===I?function(e,t){void 0===t&&(t={});var n=t,o=n.placement,i=n.boundary,r=n.rootBoundary,a=n.padding,c=n.flipVariations,s=n.allowedAutoPlacements,l=void 0===s?T:s,d=H(o),m=d?c?V:V.filter((function(e){return H(e)===d})):z,f=m.filter((function(e){return l.indexOf(e)>=0}));0===f.length&&(f=m);var u=f.reduce((function(t,n){return t[n]=ce(e,{placement:n,boundary:i,rootBoundary:r,padding:a})[U(n)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}(t,{placement:n,boundary:d,rootBoundary:m,padding:l,flipVariations:p,allowedAutoPlacements:b}):n)}),[]),w=t.rects.reference,y=t.rects.popper,x=new Map,k=!0,C=v[0],M=0;M=0,R=j?"width":"height",N=ce(t,{placement:P,boundary:d,rootBoundary:m,altBoundary:f,padding:l}),q=j?L?B:D:L?E:A;w[R]>y[R]&&(q=_(q));var Z=_(q),W=[];if(r&&W.push(N[O]<=0),c&&W.push(N[q]<=0,N[Z]<=0),W.every((function(e){return e}))){C=P,k=!1;break}x.set(P,W)}if(k)for(var G=function(e){var t=v.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},Q=p?3:1;Q>0;Q--){if("break"===G(Q))break}t.placement!==C&&(t.modifiersData[o]._skip=!0,t.placement=C,t.reset=!0)}}// eslint-disable-next-line import/no-unused-modules +function(e){if(U(e)===I)return[];var t=_(e);return[ee(e),t,ee(t)]}(h)),v=[h].concat(F).reduce((function(e,n){return e.concat(U(n)===I?function(e,t){void 0===t&&(t={});var n=t,o=n.placement,i=n.boundary,r=n.rootBoundary,a=n.padding,c=n.flipVariations,s=n.allowedAutoPlacements,l=void 0===s?T:s,d=H(o),m=d?c?V:V.filter((function(e){return H(e)===d})):z,f=m.filter((function(e){return l.indexOf(e)>=0}));0===f.length&&(f=m);var u=f.reduce((function(t,n){return t[n]=ce(e,{placement:n,boundary:i,rootBoundary:r,padding:a})[U(n)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}(t,{placement:n,boundary:d,rootBoundary:m,padding:l,flipVariations:p,allowedAutoPlacements:b}):n)}),[]),w=t.rects.reference,y=t.rects.popper,x=new Map,k=!0,C=v[0],P=0;P=0,R=j?"width":"height",N=ce(t,{placement:M,boundary:d,rootBoundary:m,altBoundary:f,padding:l}),q=j?L?B:D:L?E:A;w[R]>y[R]&&(q=_(q));var Z=_(q),W=[];if(r&&W.push(N[O]<=0),c&&W.push(N[q]<=0,N[Z]<=0),W.every((function(e){return e}))){C=M,k=!1;break}x.set(M,W)}if(k)for(var G=function(e){var t=v.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},Q=p?3:1;Q>0;Q--){if("break"===G(Q))break}t.placement!==C&&(t.modifiersData[o]._skip=!0,t.placement=C,t.reset=!0)}}// eslint-disable-next-line import/no-unused-modules ,requiresIfExists:["offset"],data:{_skip:!1}},le,de,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,o=t.rects.reference,i=t.rects.popper,r=t.modifiersData.preventOverflow,a=ce(t,{elementContext:"reference"}),c=ce(t,{altBoundary:!0}),s=me(a,o),l=me(c,i,r),d=fe(s),m=fe(l);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:l,isReferenceHidden:d,hasPopperEscaped:m},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":m})}// eslint-disable-next-line import/no-unused-modules -}]}),pe="tippy-content",be="tippy-backdrop",he="tippy-arrow",ge="tippy-svg-arrow",Fe={passive:!0,capture:!0},ve=function(){return document.body};function we(e,t,n){if(Array.isArray(e)){var o=e[t];return null==o?Array.isArray(n)?n[t]:n:o}return e}function ye(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function xe(e,t){return"function"==typeof e?e.apply(void 0,t):e}function ke(e,t){return 0===t?e:function(o){clearTimeout(n),n=setTimeout((function(){e(o)}),t)};var n}function Ce(e){return[].concat(e)}function Ae(e,t){-1===e.indexOf(t)&&e.push(t)}function Ee(e){return e.split("-")[0]}function Be(e){return[].slice.call(e)}function De(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function Ie(){return document.createElement("div")}function ze(e){return["Element","Fragment"].some((function(t){return ye(e,t)}))}function Se(e){return ye(e,"MouseEvent")}function Me(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function Pe(e){return ze(e)?[e]:function(e){return ye(e,"NodeList")}(e)?Be(e):Array.isArray(e)?e:Be(document.querySelectorAll(e))}function Oe(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function Ve(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function Te(e){var t,n=Ce(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function Le(e,t,n){var o=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[o](t,n)}))}function je(e,t){for(var n=t;n;){var o;if(e.contains(n))return!0;n=null==n.getRootNode||null==(o=n.getRootNode())?void 0:o.host}return!1}var Re={isTouch:!1},Ne=0;function qe(){Re.isTouch||(Re.isTouch=!0,window.performance&&document.addEventListener("mousemove",Ze))}function Ze(){var e=performance.now();e-Ne<20&&(Re.isTouch=!1,document.removeEventListener("mousemove",Ze)),Ne=e}function Ue(){var e=document.activeElement;if(Me(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var He=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&// @ts-ignore -!!window.msCrypto;var We={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Ge=Object.assign({appendTo:ve,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},We,{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),Qe=Object.keys(Ge);function Ye(e){var t=(e.plugins||[]).reduce((function(t,n){var o,i=n.name,r=n.defaultValue;i&&(t[i]=void 0!==e[i]?e[i]:null!=(o=Ge[i])?o:r);return t}),{});return Object.assign({},e,t)}function Xe(e,t){var n=Object.assign({},t,{content:xe(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(Ye(Object.assign({},Ge,{plugins:t}))):Qe).reduce((function(t,n){var o=(e.getAttribute("data-tippy-"+n)||"").trim();if(!o)return t;if("content"===n)t[n]=o;else try{t[n]=JSON.parse(o)}catch(e){t[n]=o}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},Ge.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function Ke(e,t){e.innerHTML=t}function Je(e){var t=Ie();return!0===e?t.className=he:(t.className=ge,ze(e)?t.appendChild(e):Ke(t,e)),t}function _e(e,t){ze(t.content)?(Ke(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?Ke(e,t.content):e.textContent=t.content)}function $e(e){var t=e.firstElementChild,n=Be(t.children);return{box:t,content:n.find((function(e){return e.classList.contains(pe)})),arrow:n.find((function(e){return e.classList.contains(he)||e.classList.contains(ge)})),backdrop:n.find((function(e){return e.classList.contains(be)}))}}function et(e){var t=Ie(),n=Ie();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var o=Ie();function i(n,o){var i=$e(t),r=i.box,a=i.content,c=i.arrow;o.theme?r.setAttribute("data-theme",o.theme):r.removeAttribute("data-theme"),"string"==typeof o.animation?r.setAttribute("data-animation",o.animation):r.removeAttribute("data-animation"),o.inertia?r.setAttribute("data-inertia",""):r.removeAttribute("data-inertia"),r.style.maxWidth="number"==typeof o.maxWidth?o.maxWidth+"px":o.maxWidth,o.role?r.setAttribute("role",o.role):r.removeAttribute("role"),n.content===o.content&&n.allowHTML===o.allowHTML||_e(a,e.props),o.arrow?c?n.arrow!==o.arrow&&(r.removeChild(c),r.appendChild(Je(o.arrow))):r.appendChild(Je(o.arrow)):c&&r.removeChild(c)}return o.className=pe,o.setAttribute("data-state","hidden"),_e(o,e.props),t.appendChild(n),n.appendChild(o),i(e.props,e.props),{popper:t,onUpdate:i}}et.$$tippy=!0;var tt=1,nt=[],ot=[];function it(e,t){var n,o,i,r,a,c,s,l,d=Xe(e,Object.assign({},Ge,Ye(De(t)))),m=!1,f=!1,u=!1,p=!1,b=[],h=ke(Q,d.interactiveDebounce),g=tt++,F=(l=d.plugins).filter((function(e,t){return l.indexOf(e)===t})),v={id:g,reference:e,popper:Ie(),popperInstance:null,props:d,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:F,clearDelayTimeouts:function(){clearTimeout(n),clearTimeout(o),cancelAnimationFrame(i)},setProps:function(t){0;if(v.state.isDestroyed)return;P("onBeforeUpdate",[v,t]),W();var n=v.props,o=Xe(e,Object.assign({},n,De(t),{ignoreAttributes:!0}));v.props=o,H(),n.interactiveDebounce!==o.interactiveDebounce&&(T(),h=ke(Q,o.interactiveDebounce));n.triggerTarget&&!o.triggerTarget?Ce(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):o.triggerTarget&&e.removeAttribute("aria-expanded");V(),M(),x&&x(n,o);v.popperInstance&&(J(),$().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));P("onAfterUpdate",[v,t])},setContent:function(e){v.setProps({content:e})},show:function(){0;var e=v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=Re.isTouch&&!v.props.touch,i=we(v.props.duration,0,Ge.duration);if(e||t||n||o)return;if(D().hasAttribute("disabled"))return;if(P("onShow",[v],!1),!1===v.props.onShow(v))return;v.state.isVisible=!0,B()&&(y.style.visibility="visible");M(),N(),v.state.isMounted||(y.style.transition="none");if(B()){var r=z(),a=r.box,s=r.content;Oe([a,s],0)}c=function(){var e;if(v.state.isVisible&&!p){if(p=!0,y.offsetHeight,y.style.transition=v.props.moveTransition,B()&&v.props.animation){var t=z(),n=t.box,o=t.content;Oe([n,o],i),Ve([n,o],"visible")}O(),V(),Ae(ot,v),null==(e=v.popperInstance)||e.forceUpdate(),P("onMount",[v]),v.props.animation&&B()&&function(e,t){Z(e,t)}(i,(function(){v.state.isShown=!0,P("onShown",[v])}))}},function(){var e,t=v.props.appendTo,n=D();e=v.props.interactive&&t===ve||"parent"===t?n.parentNode:xe(t,[n]);e.contains(y)||e.appendChild(y);v.state.isMounted=!0,J(),!1}()},hide:function(){0;var e=!v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=we(v.props.duration,1,Ge.duration);if(e||t||n)return;if(P("onHide",[v],!1),!1===v.props.onHide(v))return;v.state.isVisible=!1,v.state.isShown=!1,p=!1,m=!1,B()&&(y.style.visibility="hidden");if(T(),q(),M(!0),B()){var i=z(),r=i.box,a=i.content;v.props.animation&&(Oe([r,a],o),Ve([r,a],"hidden"))}O(),V(),v.props.animation?B()&&function(e,t){Z(e,(function(){!v.state.isVisible&&y.parentNode&&y.parentNode.contains(y)&&t()}))}(o,v.unmount):v.unmount()},hideWithInteractivity:function(e){0;I().addEventListener("mousemove",h),Ae(nt,h),h(e)},enable:function(){v.state.isEnabled=!0},disable:function(){v.hide(),v.state.isEnabled=!1},unmount:function(){0;v.state.isVisible&&v.hide();if(!v.state.isMounted)return;_(),$().forEach((function(e){e._tippy.unmount()})),y.parentNode&&y.parentNode.removeChild(y);ot=ot.filter((function(e){return e!==v})),v.state.isMounted=!1,P("onHidden",[v])},destroy:function(){0;if(v.state.isDestroyed)return;v.clearDelayTimeouts(),v.unmount(),W(),delete e._tippy,v.state.isDestroyed=!0,P("onDestroy",[v])}};if(!d.render)return v;var w=d.render(v),y=w.popper,x=w.onUpdate;y.setAttribute("data-tippy-root",""),y.id="tippy-"+v.id,v.popper=y,e._tippy=v,y._tippy=v;var k=F.map((function(e){return e.fn(v)})),C=e.hasAttribute("aria-expanded");return H(),V(),M(),P("onCreate",[v]),d.showOnCreate&&ee(),y.addEventListener("mouseenter",(function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()})),y.addEventListener("mouseleave",(function(){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&I().addEventListener("mousemove",h)})),v;function A(){var e=v.props.touch;return Array.isArray(e)?e:[e,0]}function E(){return"hold"===A()[0]}function B(){var e; +}]}),pe="tippy-content",be="tippy-backdrop",he="tippy-arrow",ge="tippy-svg-arrow",Fe={passive:!0,capture:!0},ve=function(){return document.body};function we(e,t,n){if(Array.isArray(e)){var o=e[t];return null==o?Array.isArray(n)?n[t]:n:o}return e}function ye(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function xe(e,t){return"function"==typeof e?e.apply(void 0,t):e}function ke(e,t){return 0===t?e:function(o){clearTimeout(n),n=setTimeout((function(){e(o)}),t)};var n}function Ce(e){return[].concat(e)}function Ae(e,t){-1===e.indexOf(t)&&e.push(t)}function Ee(e){return e.split("-")[0]}function Be(e){return[].slice.call(e)}function De(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function Ie(){return document.createElement("div")}function ze(e){return["Element","Fragment"].some((function(t){return ye(e,t)}))}function Se(e){return ye(e,"MouseEvent")}function Pe(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function Me(e){return ze(e)?[e]:function(e){return ye(e,"NodeList")}(e)?Be(e):Array.isArray(e)?e:Be(document.querySelectorAll(e))}function Oe(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function Ve(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function Te(e){var t,n=Ce(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function Le(e,t,n){var o=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[o](t,n)}))}function je(e,t){for(var n=t;n;){var o;if(e.contains(n))return!0;n=null==n.getRootNode||null==(o=n.getRootNode())?void 0:o.host}return!1}var Re={isTouch:!1},Ne=0;function qe(){Re.isTouch||(Re.isTouch=!0,window.performance&&document.addEventListener("mousemove",Ze))}function Ze(){var e=performance.now();e-Ne<20&&(Re.isTouch=!1,document.removeEventListener("mousemove",Ze)),Ne=e}function Ue(){var e=document.activeElement;if(Pe(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var He=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&// @ts-ignore +!!window.msCrypto;var We={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Ge=Object.assign({appendTo:ve,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},We,{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),Qe=Object.keys(Ge);function Ye(e){var t=(e.plugins||[]).reduce((function(t,n){var o,i=n.name,r=n.defaultValue;i&&(t[i]=void 0!==e[i]?e[i]:null!=(o=Ge[i])?o:r);return t}),{});return Object.assign({},e,t)}function Xe(e,t){var n=Object.assign({},t,{content:xe(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(Ye(Object.assign({},Ge,{plugins:t}))):Qe).reduce((function(t,n){var o=(e.getAttribute("data-tippy-"+n)||"").trim();if(!o)return t;if("content"===n)t[n]=o;else try{t[n]=JSON.parse(o)}catch(e){t[n]=o}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},Ge.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function Ke(e,t){e.innerHTML=t}function Je(e){var t=Ie();return!0===e?t.className=he:(t.className=ge,ze(e)?t.appendChild(e):Ke(t,e)),t}function _e(e,t){ze(t.content)?(Ke(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?Ke(e,t.content):e.textContent=t.content)}function $e(e){var t=e.firstElementChild,n=Be(t.children);return{box:t,content:n.find((function(e){return e.classList.contains(pe)})),arrow:n.find((function(e){return e.classList.contains(he)||e.classList.contains(ge)})),backdrop:n.find((function(e){return e.classList.contains(be)}))}}function et(e){var t=Ie(),n=Ie();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var o=Ie();function i(n,o){var i=$e(t),r=i.box,a=i.content,c=i.arrow;o.theme?r.setAttribute("data-theme",o.theme):r.removeAttribute("data-theme"),"string"==typeof o.animation?r.setAttribute("data-animation",o.animation):r.removeAttribute("data-animation"),o.inertia?r.setAttribute("data-inertia",""):r.removeAttribute("data-inertia"),r.style.maxWidth="number"==typeof o.maxWidth?o.maxWidth+"px":o.maxWidth,o.role?r.setAttribute("role",o.role):r.removeAttribute("role"),n.content===o.content&&n.allowHTML===o.allowHTML||_e(a,e.props),o.arrow?c?n.arrow!==o.arrow&&(r.removeChild(c),r.appendChild(Je(o.arrow))):r.appendChild(Je(o.arrow)):c&&r.removeChild(c)}return o.className=pe,o.setAttribute("data-state","hidden"),_e(o,e.props),t.appendChild(n),n.appendChild(o),i(e.props,e.props),{popper:t,onUpdate:i}}et.$$tippy=!0;var tt=1,nt=[],ot=[];function it(e,t){var n,o,i,r,a,c,s,l,d=Xe(e,Object.assign({},Ge,Ye(De(t)))),m=!1,f=!1,u=!1,p=!1,b=[],h=ke(Q,d.interactiveDebounce),g=tt++,F=(l=d.plugins).filter((function(e,t){return l.indexOf(e)===t})),v={id:g,reference:e,popper:Ie(),popperInstance:null,props:d,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:F,clearDelayTimeouts:function(){clearTimeout(n),clearTimeout(o),cancelAnimationFrame(i)},setProps:function(t){0;if(v.state.isDestroyed)return;M("onBeforeUpdate",[v,t]),W();var n=v.props,o=Xe(e,Object.assign({},n,De(t),{ignoreAttributes:!0}));v.props=o,H(),n.interactiveDebounce!==o.interactiveDebounce&&(T(),h=ke(Q,o.interactiveDebounce));n.triggerTarget&&!o.triggerTarget?Ce(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):o.triggerTarget&&e.removeAttribute("aria-expanded");V(),P(),x&&x(n,o);v.popperInstance&&(J(),$().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));M("onAfterUpdate",[v,t])},setContent:function(e){v.setProps({content:e})},show:function(){0;var e=v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=Re.isTouch&&!v.props.touch,i=we(v.props.duration,0,Ge.duration);if(e||t||n||o)return;if(D().hasAttribute("disabled"))return;if(M("onShow",[v],!1),!1===v.props.onShow(v))return;v.state.isVisible=!0,B()&&(y.style.visibility="visible");P(),N(),v.state.isMounted||(y.style.transition="none");if(B()){var r=z(),a=r.box,s=r.content;Oe([a,s],0)}c=function(){var e;if(v.state.isVisible&&!p){if(p=!0,y.offsetHeight,y.style.transition=v.props.moveTransition,B()&&v.props.animation){var t=z(),n=t.box,o=t.content;Oe([n,o],i),Ve([n,o],"visible")}O(),V(),Ae(ot,v),null==(e=v.popperInstance)||e.forceUpdate(),M("onMount",[v]),v.props.animation&&B()&&function(e,t){Z(e,t)}(i,(function(){v.state.isShown=!0,M("onShown",[v])}))}},function(){var e,t=v.props.appendTo,n=D();e=v.props.interactive&&t===ve||"parent"===t?n.parentNode:xe(t,[n]);e.contains(y)||e.appendChild(y);v.state.isMounted=!0,J(),!1}()},hide:function(){0;var e=!v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=we(v.props.duration,1,Ge.duration);if(e||t||n)return;if(M("onHide",[v],!1),!1===v.props.onHide(v))return;v.state.isVisible=!1,v.state.isShown=!1,p=!1,m=!1,B()&&(y.style.visibility="hidden");if(T(),q(),P(!0),B()){var i=z(),r=i.box,a=i.content;v.props.animation&&(Oe([r,a],o),Ve([r,a],"hidden"))}O(),V(),v.props.animation?B()&&function(e,t){Z(e,(function(){!v.state.isVisible&&y.parentNode&&y.parentNode.contains(y)&&t()}))}(o,v.unmount):v.unmount()},hideWithInteractivity:function(e){0;I().addEventListener("mousemove",h),Ae(nt,h),h(e)},enable:function(){v.state.isEnabled=!0},disable:function(){v.hide(),v.state.isEnabled=!1},unmount:function(){0;v.state.isVisible&&v.hide();if(!v.state.isMounted)return;_(),$().forEach((function(e){e._tippy.unmount()})),y.parentNode&&y.parentNode.removeChild(y);ot=ot.filter((function(e){return e!==v})),v.state.isMounted=!1,M("onHidden",[v])},destroy:function(){0;if(v.state.isDestroyed)return;v.clearDelayTimeouts(),v.unmount(),W(),delete e._tippy,v.state.isDestroyed=!0,M("onDestroy",[v])}};if(!d.render)return v;var w=d.render(v),y=w.popper,x=w.onUpdate;y.setAttribute("data-tippy-root",""),y.id="tippy-"+v.id,v.popper=y,e._tippy=v,y._tippy=v;var k=F.map((function(e){return e.fn(v)})),C=e.hasAttribute("aria-expanded");return H(),V(),P(),M("onCreate",[v]),d.showOnCreate&&ee(),y.addEventListener("mouseenter",(function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()})),y.addEventListener("mouseleave",(function(){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&I().addEventListener("mousemove",h)})),v;function A(){var e=v.props.touch;return Array.isArray(e)?e:[e,0]}function E(){return"hold"===A()[0]}function B(){var e; // @ts-ignore -return!(null==(e=v.props.render)||!e.$$tippy)}function D(){return s||e}function I(){var e=D().parentNode;return e?Te(e):document}function z(){return $e(y)}function S(e){return v.state.isMounted&&!v.state.isVisible||Re.isTouch||r&&"focus"===r.type?0:we(v.props.delay,e?0:1,Ge.delay)}function M(e){void 0===e&&(e=!1),y.style.pointerEvents=v.props.interactive&&!e?"":"none",y.style.zIndex=""+v.props.zIndex}function P(e,t,n){var o;(void 0===n&&(n=!0),k.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(o=v.props)[e].apply(o,t)}function O(){var t=v.props.aria;if(t.content){var n="aria-"+t.content,o=y.id;Ce(v.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(v.state.isVisible)e.setAttribute(n,t?t+" "+o:o);else{var i=t&&t.replace(o,"").trim();i?e.setAttribute(n,i):e.removeAttribute(n)}}))}}function V(){!C&&v.props.aria.expanded&&Ce(v.props.triggerTarget||e).forEach((function(e){v.props.interactive?e.setAttribute("aria-expanded",v.state.isVisible&&e===D()?"true":"false"):e.removeAttribute("aria-expanded")}))}function T(){I().removeEventListener("mousemove",h),nt=nt.filter((function(e){return e!==h}))}function L(t){if(!Re.isTouch||!u&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!v.props.interactive||!je(y,n)){if(Ce(v.props.triggerTarget||e).some((function(e){return je(e,n)}))){if(Re.isTouch)return;if(v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else P("onClickOutside",[v,t]);!0===v.props.hideOnClick&&(v.clearDelayTimeouts(),v.hide(),f=!0,setTimeout((function(){f=!1})),v.state.isMounted||q())}}}function j(){u=!0}function R(){u=!1}function N(){var e=I();e.addEventListener("mousedown",L,!0),e.addEventListener("touchend",L,Fe),e.addEventListener("touchstart",R,Fe),e.addEventListener("touchmove",j,Fe)}function q(){var e=I();e.removeEventListener("mousedown",L,!0),e.removeEventListener("touchend",L,Fe),e.removeEventListener("touchstart",R,Fe),e.removeEventListener("touchmove",j,Fe)}function Z(e,t){var n=z().box;function o(e){e.target===n&&(Le(n,"remove",o),t())}if(0===e)return t();Le(n,"remove",a),Le(n,"add",o),a=o}function U(t,n,o){void 0===o&&(o=!1),Ce(v.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,o),b.push({node:e,eventType:t,handler:n,options:o})}))}function H(){var e;E()&&(U("touchstart",G,{passive:!0}),U("touchend",Y,{passive:!0})),(e=v.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(U(e,G),e){case"mouseenter":U("mouseleave",Y);break;case"focus":U(He?"focusout":"blur",X);break;case"focusin":U("focusout",X)}}))}function W(){b.forEach((function(e){var t=e.node,n=e.eventType,o=e.handler,i=e.options;t.removeEventListener(n,o,i)})),b=[]}function G(e){var t,n=!1;if(v.state.isEnabled&&!K(e)&&!f){var o="focus"===(null==(t=r)?void 0:t.type);r=e,s=e.currentTarget,V(),!v.state.isVisible&&Se(e)&&nt.forEach((function(t){return t(e)})),"click"===e.type&&(v.props.trigger.indexOf("mouseenter")<0||m)&&!1!==v.props.hideOnClick&&v.state.isVisible?n=!0:ee(e),"click"===e.type&&(m=!n),n&&!o&&te(e)}}function Q(e){var t=e.target,n=D().contains(t)||y.contains(t);if("mousemove"!==e.type||!n){var o=$().concat(y).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:d}:null})).filter(Boolean);(function(e,t){var n=t.clientX,o=t.clientY;return e.every((function(e){var t=e.popperRect,i=e.popperState,r=e.props.interactiveBorder,a=Ee(i.placement),c=i.modifiersData.offset;if(!c)return!0;var s="bottom"===a?c.top.y:0,l="top"===a?c.bottom.y:0,d="right"===a?c.left.x:0,m="left"===a?c.right.x:0,f=t.top-o+s>r,u=o-t.bottom-l>r,p=t.left-n+d>r,b=n-t.right-m>r;return f||u||p||b}))})(o,e)&&(T(),te(e))}}function Y(e){K(e)||v.props.trigger.indexOf("click")>=0&&m||(v.props.interactive?v.hideWithInteractivity(e):te(e))}function X(e){v.props.trigger.indexOf("focusin")<0&&e.target!==D()||v.props.interactive&&e.relatedTarget&&y.contains(e.relatedTarget)||te(e)}function K(e){return!!Re.isTouch&&E()!==e.type.indexOf("touch")>=0}function J(){_();var t=v.props,n=t.popperOptions,o=t.placement,i=t.offset,r=t.getReferenceClientRect,a=t.moveTransition,s=B()?$e(y).arrow:null,l=r?{getBoundingClientRect:r,contextElement:r.contextElement||D()}:e,d={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(B()){var n=z().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}},m=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!a}},d];B()&&s&&m.push({name:"arrow",options:{element:s,padding:3}}),m.push.apply(m,(null==n?void 0:n.modifiers)||[]),v.popperInstance=ue(l,y,Object.assign({},n,{placement:o,onFirstUpdate:c,modifiers:m}))}function _(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function $(){return Be(y.querySelectorAll("[data-tippy-root]"))}function ee(e){v.clearDelayTimeouts(),e&&P("onTrigger",[v,e]),N();var t=S(!0),o=A(),i=o[0],r=o[1];Re.isTouch&&"hold"===i&&r&&(t=r),t?n=setTimeout((function(){v.show()}),t):v.show()}function te(e){if(v.clearDelayTimeouts(),P("onUntrigger",[v,e]),v.state.isVisible){if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&m)){var t=S(!1);t?o=setTimeout((function(){v.state.isVisible&&v.hide()}),t):i=requestAnimationFrame((function(){v.hide()}))}}else q()}}function rt(e,t){void 0===t&&(t={});var n=Ge.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",qe,Fe),window.addEventListener("blur",Ue);var o=Object.assign({},t,{plugins:n}),i=Pe(e).reduce((function(e,t){var n=t&&it(t,o);return n&&e.push(n),e}),[]);return ze(e)?i[0]:i}rt.defaultProps=Ge,rt.setDefaultProps=function(e){Object.keys(e).forEach((function(t){Ge[t]=e[t]}))},rt.currentInput=Re;Object.assign({},X,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}});rt.setDefaultProps({render:et});const at=rt;var ct=n(4460),st=n(813),lt=n.n(st);const dt=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,ct.addStyle)(lt(),"mini-toast-style"),Promise.resolve().then(n.bind(n,4902));const i=at(t,{content:e,allowHTML:!0,interactive:!0,delay:[0,200],arrow:!0,zIndex:11e4,...o});return{get message(){return i.props.content},set message(e){i.setContent(e)},get triggerElement(){return i.reference},get placement(){return i.props.placement},set placement(e){i.setProps({placement:e})},get tippy(){return i}}}},4021:(e,t,n)=>{"use strict";n.r(t),n.d(t,{EmptyImageUrl:()=>i,UserAgent:()=>o});const o="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0",i='data:image/svg+xml;utf-8,'},9083:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatCount:()=>l,formatDate:()=>m,formatDateTime:()=>u,formatDuration:()=>a,formatFileSize:()=>o,formatFilename:()=>p,formatNumber:()=>d,formatPercent:()=>i,formatTime:()=>f,parseCount:()=>c,parseDuration:()=>r});const o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];let o=e,i=0;for(;o>=1024;)o/=1024,i++;return`${Math.round(o*10**t)/10**t}${n[i]}`},i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.round(100*e*10**t)/10**t+"%"},r=e=>{const t=e.split(":");let n=0;return t.forEach(((e,o)=>{const i=o===t.length-1?parseFloat(e):parseInt(e);Number.isNaN(i)||(n+=i*60**(t.length-1-o))})),n},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=(e%60).toFixed(t),o=(Math.trunc(e/60)%60).toString(),i=Math.trunc(e/3600).toString(),r=0===t?2:3+t;return"0"===i?`${o.padStart(2,"0")}:${n.padStart(r,"0")}`:`${i}:${o.padStart(2,"0")}:${n.padStart(r,"0")}`},c=e=>{if("number"==typeof e)return e;const t=e.match(/亿$/)?1e8:e.match(/万$/)?1e4:1;return parseFloat(e)*t},s=e=>("string"==typeof e&&(e=parseInt(e)),e>=1e8?{number:(Math.round(e/1e7)/10).toString(),unit:"亿"}:e>=1e7?{number:Math.round(e/1e4).toString(),unit:"万"}:e>=1e4?{number:(Math.round(e/1e3)/10).toString(),unit:"万"}:{number:e.toString(),unit:""}),l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(null==e)return"0";const{number:n,unit:o}=s(e);return`${n.padStart(t,"0")}${o}`},d=(e,t)=>{if(Number.isNaN(e))return null;const n=Math.log10(t)+1,o=e.toString(),i=o.length-Math.trunc(e).toString().length;return o.padStart(n+i,"0")},m=e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")}`,f=e=>`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}`,u=e=>`${m(e)} ${f(e)}`,p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e.replace(/[\/\\:\*\?"<>\|]/g,t)}},8884:(e,t,n)=>{"use strict";n.r(t),n.d(t,{browserLanguageCode:()=>r,defaultLanguageCode:()=>i,languageCodeToName:()=>a,languageNameToCode:()=>c});var o=n(4909);const i="zh-CN",r=navigator.language,a={"zh-CN":"简体中文"};(0,o.registerAndGetData)("i18n",a);const c=e=>{const t=Object.entries(a).find((t=>{let[,n]=t;return n===e}));return t?t[0]:i}},8612:(e,t,n)=>{"use strict";function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t),n.d(t,{DoubleClickEvent:()=>M,bwpVideoFilter:()=>i,createHook:()=>E,createPostHook:()=>B,de:()=>c,dea:()=>s,deai:()=>l,delay:()=>u,deleteValue:()=>z,deleteValues:()=>S,des:()=>d,disableWindowScroll:()=>L,dq:()=>r,dqa:()=>a,fixed:()=>A,formData:()=>I,getCookieValue:()=>x,getCsrf:()=>C,getDpiSourceSet:()=>y,getNumberValidator:()=>j,getRandomId:()=>N,getUID:()=>k,getVue2Data:()=>W,isBwpVideo:()=>f,isDataSaveMode:()=>U,isEmbeddedPlayer:()=>g,isIframe:()=>F,isNotHtml:()=>v,isTyping:()=>O,matchPattern:()=>p,matchUrlPattern:()=>b,mountVueComponent:()=>h,none:()=>m,pascalCase:()=>R,playerReady:()=>P,preventEvent:()=>D,raiseEvent:()=>w,retrieveImageUrl:()=>V,simulateClick:()=>H,todo:()=>q,unreachable:()=>Z,waitForForeground:()=>T});const i=e=>{const t={video:", bwp-video",".bilibili-player-video video":", .bilibili-player-video bwp-video,.bpx-player-video-area bwp-video"}[e];return t?e+t:e},r=(e,t)=>t?e.querySelector(i(t)):document.querySelector(i(e)),a=(e,t)=>t?Array.from(e.querySelectorAll(i(t))):Array.from(document.querySelectorAll(i(e))),c=(e,t,n,o)=>document.evaluate(e,t,null,n,o),s=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,o);return Array.from({length:i.snapshotLength},((e,t)=>i.snapshotItem(t)))},l=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_ITERATOR_TYPE:XPathResult.UNORDERED_NODE_ITERATOR_TYPE,o);return{[Symbol.iterator]:()=>({next:()=>{let e=null;do{return e=i.iterateNext(),e?{done:!1,value:e}:{done:!0}}while(e)}})}},d=(e,t,n)=>c(e,t,XPathResult.FIRST_ORDERED_NODE_TYPE,n).singleNodeValue,m=()=>{},f=async()=>{const{hasVideo:e}=await Promise.resolve().then(n.bind(n,3311));return!!await e()&&( +return!(null==(e=v.props.render)||!e.$$tippy)}function D(){return s||e}function I(){var e=D().parentNode;return e?Te(e):document}function z(){return $e(y)}function S(e){return v.state.isMounted&&!v.state.isVisible||Re.isTouch||r&&"focus"===r.type?0:we(v.props.delay,e?0:1,Ge.delay)}function P(e){void 0===e&&(e=!1),y.style.pointerEvents=v.props.interactive&&!e?"":"none",y.style.zIndex=""+v.props.zIndex}function M(e,t,n){var o;(void 0===n&&(n=!0),k.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(o=v.props)[e].apply(o,t)}function O(){var t=v.props.aria;if(t.content){var n="aria-"+t.content,o=y.id;Ce(v.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(v.state.isVisible)e.setAttribute(n,t?t+" "+o:o);else{var i=t&&t.replace(o,"").trim();i?e.setAttribute(n,i):e.removeAttribute(n)}}))}}function V(){!C&&v.props.aria.expanded&&Ce(v.props.triggerTarget||e).forEach((function(e){v.props.interactive?e.setAttribute("aria-expanded",v.state.isVisible&&e===D()?"true":"false"):e.removeAttribute("aria-expanded")}))}function T(){I().removeEventListener("mousemove",h),nt=nt.filter((function(e){return e!==h}))}function L(t){if(!Re.isTouch||!u&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!v.props.interactive||!je(y,n)){if(Ce(v.props.triggerTarget||e).some((function(e){return je(e,n)}))){if(Re.isTouch)return;if(v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else M("onClickOutside",[v,t]);!0===v.props.hideOnClick&&(v.clearDelayTimeouts(),v.hide(),f=!0,setTimeout((function(){f=!1})),v.state.isMounted||q())}}}function j(){u=!0}function R(){u=!1}function N(){var e=I();e.addEventListener("mousedown",L,!0),e.addEventListener("touchend",L,Fe),e.addEventListener("touchstart",R,Fe),e.addEventListener("touchmove",j,Fe)}function q(){var e=I();e.removeEventListener("mousedown",L,!0),e.removeEventListener("touchend",L,Fe),e.removeEventListener("touchstart",R,Fe),e.removeEventListener("touchmove",j,Fe)}function Z(e,t){var n=z().box;function o(e){e.target===n&&(Le(n,"remove",o),t())}if(0===e)return t();Le(n,"remove",a),Le(n,"add",o),a=o}function U(t,n,o){void 0===o&&(o=!1),Ce(v.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,o),b.push({node:e,eventType:t,handler:n,options:o})}))}function H(){var e;E()&&(U("touchstart",G,{passive:!0}),U("touchend",Y,{passive:!0})),(e=v.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(U(e,G),e){case"mouseenter":U("mouseleave",Y);break;case"focus":U(He?"focusout":"blur",X);break;case"focusin":U("focusout",X)}}))}function W(){b.forEach((function(e){var t=e.node,n=e.eventType,o=e.handler,i=e.options;t.removeEventListener(n,o,i)})),b=[]}function G(e){var t,n=!1;if(v.state.isEnabled&&!K(e)&&!f){var o="focus"===(null==(t=r)?void 0:t.type);r=e,s=e.currentTarget,V(),!v.state.isVisible&&Se(e)&&nt.forEach((function(t){return t(e)})),"click"===e.type&&(v.props.trigger.indexOf("mouseenter")<0||m)&&!1!==v.props.hideOnClick&&v.state.isVisible?n=!0:ee(e),"click"===e.type&&(m=!n),n&&!o&&te(e)}}function Q(e){var t=e.target,n=D().contains(t)||y.contains(t);if("mousemove"!==e.type||!n){var o=$().concat(y).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:d}:null})).filter(Boolean);(function(e,t){var n=t.clientX,o=t.clientY;return e.every((function(e){var t=e.popperRect,i=e.popperState,r=e.props.interactiveBorder,a=Ee(i.placement),c=i.modifiersData.offset;if(!c)return!0;var s="bottom"===a?c.top.y:0,l="top"===a?c.bottom.y:0,d="right"===a?c.left.x:0,m="left"===a?c.right.x:0,f=t.top-o+s>r,u=o-t.bottom-l>r,p=t.left-n+d>r,b=n-t.right-m>r;return f||u||p||b}))})(o,e)&&(T(),te(e))}}function Y(e){K(e)||v.props.trigger.indexOf("click")>=0&&m||(v.props.interactive?v.hideWithInteractivity(e):te(e))}function X(e){v.props.trigger.indexOf("focusin")<0&&e.target!==D()||v.props.interactive&&e.relatedTarget&&y.contains(e.relatedTarget)||te(e)}function K(e){return!!Re.isTouch&&E()!==e.type.indexOf("touch")>=0}function J(){_();var t=v.props,n=t.popperOptions,o=t.placement,i=t.offset,r=t.getReferenceClientRect,a=t.moveTransition,s=B()?$e(y).arrow:null,l=r?{getBoundingClientRect:r,contextElement:r.contextElement||D()}:e,d={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(B()){var n=z().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}},m=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!a}},d];B()&&s&&m.push({name:"arrow",options:{element:s,padding:3}}),m.push.apply(m,(null==n?void 0:n.modifiers)||[]),v.popperInstance=ue(l,y,Object.assign({},n,{placement:o,onFirstUpdate:c,modifiers:m}))}function _(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function $(){return Be(y.querySelectorAll("[data-tippy-root]"))}function ee(e){v.clearDelayTimeouts(),e&&M("onTrigger",[v,e]),N();var t=S(!0),o=A(),i=o[0],r=o[1];Re.isTouch&&"hold"===i&&r&&(t=r),t?n=setTimeout((function(){v.show()}),t):v.show()}function te(e){if(v.clearDelayTimeouts(),M("onUntrigger",[v,e]),v.state.isVisible){if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&m)){var t=S(!1);t?o=setTimeout((function(){v.state.isVisible&&v.hide()}),t):i=requestAnimationFrame((function(){v.hide()}))}}else q()}}function rt(e,t){void 0===t&&(t={});var n=Ge.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",qe,Fe),window.addEventListener("blur",Ue);var o=Object.assign({},t,{plugins:n}),i=Me(e).reduce((function(e,t){var n=t&&it(t,o);return n&&e.push(n),e}),[]);return ze(e)?i[0]:i}rt.defaultProps=Ge,rt.setDefaultProps=function(e){Object.keys(e).forEach((function(t){Ge[t]=e[t]}))},rt.currentInput=Re;Object.assign({},X,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}});rt.setDefaultProps({render:et});const at=rt;var ct=n(4460),st=n(813),lt=n.n(st);const dt=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,ct.addStyle)(lt(),"mini-toast-style"),Promise.resolve().then(n.bind(n,4902));const i=at(t,{content:e,allowHTML:!0,interactive:!0,delay:[0,200],arrow:!0,zIndex:11e4,...o});return{get message(){return i.props.content},set message(e){i.setContent(e)},get triggerElement(){return i.reference},get placement(){return i.props.placement},set placement(e){i.setProps({placement:e})},get tippy(){return i}}}},4021:(e,t,n)=>{"use strict";n.r(t),n.d(t,{EmptyImageUrl:()=>i,UserAgent:()=>o});const o="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0",i='data:image/svg+xml;utf-8,'},9083:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatCount:()=>l,formatDate:()=>m,formatDateTime:()=>u,formatDuration:()=>a,formatFileSize:()=>o,formatFilename:()=>p,formatNumber:()=>d,formatPercent:()=>i,formatTime:()=>f,parseCount:()=>c,parseDuration:()=>r});const o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];let o=e,i=0;for(;o>=1024;)o/=1024,i++;return`${Math.round(o*10**t)/10**t}${n[i]}`},i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.round(100*e*10**t)/10**t+"%"},r=e=>{const t=e.split(":");let n=0;return t.forEach(((e,o)=>{const i=o===t.length-1?parseFloat(e):parseInt(e);Number.isNaN(i)||(n+=i*60**(t.length-1-o))})),n},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=(e%60).toFixed(t),o=(Math.trunc(e/60)%60).toString(),i=Math.trunc(e/3600).toString(),r=0===t?2:3+t;return"0"===i?`${o.padStart(2,"0")}:${n.padStart(r,"0")}`:`${i}:${o.padStart(2,"0")}:${n.padStart(r,"0")}`},c=e=>{if("number"==typeof e)return e;const t=e.match(/亿$/)?1e8:e.match(/万$/)?1e4:1;return parseFloat(e)*t},s=e=>("string"==typeof e&&(e=parseInt(e)),e>=1e8?{number:(Math.round(e/1e7)/10).toString(),unit:"亿"}:e>=1e7?{number:Math.round(e/1e4).toString(),unit:"万"}:e>=1e4?{number:(Math.round(e/1e3)/10).toString(),unit:"万"}:{number:e.toString(),unit:""}),l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(null==e)return"0";const{number:n,unit:o}=s(e);return`${n.padStart(t,"0")}${o}`},d=(e,t)=>{if(Number.isNaN(e))return null;const n=Math.log10(t)+1,o=e.toString(),i=o.length-Math.trunc(e).toString().length;return o.padStart(n+i,"0")},m=e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")}`,f=e=>`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}`,u=e=>`${m(e)} ${f(e)}`,p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e.replace(/[\/\\:\*\?"<>\|]/g,t)}},8884:(e,t,n)=>{"use strict";n.r(t),n.d(t,{browserLanguageCode:()=>r,defaultLanguageCode:()=>i,languageCodeToName:()=>a,languageNameToCode:()=>c});var o=n(4909);const i="zh-CN",r=navigator.language,a={"zh-CN":"简体中文"};(0,o.registerAndGetData)("i18n",a);const c=e=>{const t=Object.entries(a).find((t=>{let[,n]=t;return n===e}));return t?t[0]:i}},8612:(e,t,n)=>{"use strict";function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t),n.d(t,{DoubleClickEvent:()=>P,bwpVideoFilter:()=>i,createHook:()=>E,createPostHook:()=>B,de:()=>c,dea:()=>s,deai:()=>l,delay:()=>u,deleteValue:()=>z,deleteValues:()=>S,des:()=>d,disableWindowScroll:()=>L,dq:()=>r,dqa:()=>a,fixed:()=>A,formData:()=>I,getCookieValue:()=>x,getCsrf:()=>C,getDpiSourceSet:()=>y,getNumberValidator:()=>j,getRandomId:()=>N,getUID:()=>k,getVue2Data:()=>W,isBwpVideo:()=>f,isDataSaveMode:()=>U,isEmbeddedPlayer:()=>g,isIframe:()=>F,isNotHtml:()=>v,isTyping:()=>O,matchPattern:()=>p,matchUrlPattern:()=>b,mountVueComponent:()=>h,none:()=>m,pascalCase:()=>R,playerReady:()=>M,preventEvent:()=>D,raiseEvent:()=>w,retrieveImageUrl:()=>V,simulateClick:()=>H,todo:()=>q,unreachable:()=>Z,waitForForeground:()=>T});const i=e=>{const t={video:", bwp-video",".bilibili-player-video video":", .bilibili-player-video bwp-video,.bpx-player-video-area bwp-video"}[e];return t?e+t:e},r=(e,t)=>t?e.querySelector(i(t)):document.querySelector(i(e)),a=(e,t)=>t?Array.from(e.querySelectorAll(i(t))):Array.from(document.querySelectorAll(i(e))),c=(e,t,n,o)=>document.evaluate(e,t,null,n,o),s=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,o);return Array.from({length:i.snapshotLength},((e,t)=>i.snapshotItem(t)))},l=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_ITERATOR_TYPE:XPathResult.UNORDERED_NODE_ITERATOR_TYPE,o);return{[Symbol.iterator]:()=>({next:()=>{let e=null;do{return e=i.iterateNext(),e?{done:!1,value:e}:{done:!0}}while(e)}})}},d=(e,t,n)=>c(e,t,XPathResult.FIRST_ORDERED_NODE_TYPE,n).singleNodeValue,m=()=>{},f=async()=>{const{hasVideo:e}=await Promise.resolve().then(n.bind(n,3311));return!!await e()&&( // eslint-disable-next-line no-underscore-dangle -unsafeWindow.__ENABLE_WASM_PLAYER__||Boolean(r("#bilibili-player bwp-video")))},u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((t=>setTimeout((()=>t()),e)))},p=(e,t)=>"string"==typeof t?e.includes(t):t.test(e),b=e=>p(document.URL.replace(window.location.search,""),e),h=(e,t)=>{const n="default"in e?e.default:e;return(o=n,o instanceof Function?new o:o.functional?new(Vue.extend(o)):new Vue(o)).$mount(t);var o},g=()=>"player.bilibili.com"===window.location.host||document.URL.startsWith("https://www.bilibili.com/html/player.html"),F=()=>document.body&&unsafeWindow.parent.window!==unsafeWindow,v=()=>"text/html"!==document.contentType,w=(e,t)=>{const n=new Event(t);e.dispatchEvent(n)},y=(e,t,n)=>{if(!n){const t=e.match(/.+\.(.+)$/);n=t?t[1]:"jpg"}return n.startsWith(".")&&(n=n.substring(1)),[1,1.25,1.5,1.75,2,2.25,2.5,2.75,3,3.25,3.5,3.75,4].map((o=>{if("object"==typeof t){if("width"in t&&"height"in t)return`${e}@${Math.trunc(t.width*o)}w_${Math.trunc(t.height*o)}h.${n} ${o}x`;if("width"in t)return`${e}@${Math.trunc(t.width*o)}w.${n} ${o}x`;if("height"in t)return`${e}@${Math.trunc(t.height*o)}h.${n} ${o}x`;throw new Error(`Invalid argument 'baseSize': ${JSON.stringify(t)}`)}return`${e}@${Math.trunc(t*o)}w_${Math.trunc(t*o)}h.${n} ${o}x`})).join(",")},x=e=>document.cookie.replace(new RegExp(`(?:(?:^|.*;\\s*)${e}\\s*\\=\\s*([^;]*).*$)|^.*$`),"$1"),k=()=>x("DedeUserID"),C=()=>x("bili_jct"),A=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=10**t;let o=(Math.trunc(e*n)/n).toString();const i=o.indexOf(".");if(i>-1){const e=o.length-i-1;e{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},B=(e,t,n)=>{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},D=(e,t,n)=>{const o=e=>{(n?.(e)??1)&&e.stopImmediatePropagation()};return e.addEventListener(t,o,{capture:!0}),()=>{e.removeEventListener(t,o,{capture:!0})}},I=(e,t)=>{const{encode:n}={encode:!0,...t};return Object.entries(e).map((e=>{let[t,o]=e;return n?`${t}=${encodeURIComponent(o)}`:`${t}=${o}`})).join("&")},z=(e,t)=>{const n=e.findIndex(t);return-1!==n&&(e.splice(n,1),!0)},S=(e,t)=>{let n=!1;do{n=z(e,t)}while(n);return n};class M{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.handler=e,this.preventSingle=t,o(this,"elements",[]),o(this,"singleClickHandler",m),o(this,"clickedOnce",!1),o(this,"stopPropagationHandler",(e=>{e.stopImmediatePropagation()})),o(this,"doubleClickHandler",(e=>{this.clickedOnce?(this.clickedOnce=!1,Promise.resolve().then((()=>{this.handler?.(e)}))):(this.clickedOnce=!0,setTimeout((()=>{this.clickedOnce&&(this.clickedOnce=!1,this.preventSingle&&this.singleClickHandler?.(e))}),200)),this.preventSingle&&e.stopImmediatePropagation()}))}bind(e){-1===this.elements.indexOf(e)&&(this.elements.push(e),e.addEventListener("click",this.doubleClickHandler,{capture:!0}),e.addEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}unbind(e){const t=this.elements.indexOf(e);-1!==t&&(this.elements.splice(t,1),e.removeEventListener("click",this.doubleClickHandler,{capture:!0}),e.removeEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}}const P=async()=>{const{sq:e}=await Promise.resolve().then(n.bind(n,3311)),{logError:t}=await Promise.resolve().then(n.bind(n,4732));return await e((()=>unsafeWindow),(()=>void 0!==unsafeWindow.UserStatus)),new Promise(((e,n)=>{"https://www.bilibili.com/blackboard/newplayer.html"===document.URL.replace(window.location.search,"")&&document.URL.includes("fjw=true")||g()||(unsafeWindow.onLoginInfoLoaded?unsafeWindow.onLoginInfoLoaded(e):(t(new Error("utils.playerReady 失败")),console.error("typeof onLoginInfoLoaded === "+typeof unsafeWindow.onLoginInfoLoaded),n()))}))},O=()=>{const{activeElement:e}=document;return!!e&&(!!e.hasAttribute("contenteditable")||["input","textarea"].includes(e.nodeName.toLowerCase()))},V=e=>{if(!(e instanceof HTMLElement))return null;const t=(()=>{if(e.hasAttribute("data-src"))return e.getAttribute("data-src");if(e instanceof HTMLImageElement)return e.src;if(e instanceof HTMLPictureElement&&r(e,"img")){return r(e,"img").src}if(r(e,"picture img")){return r(e,"picture img").src}const{backgroundImage:t}=e.style;if(!t)return null;const n=t.match(/url\("(.+)"\)/);return n?n[1]:null})(),n=t.match(/^(.+)(\..+?)(@.+)$/);if(n)return{url:n[1]+n[2],extension:n[2]};const o=t.match(/^(.+)(\..+?)$/);return o?{url:o[1]+o[2],extension:o[2]}:null},T=e=>{const t=()=>"visible"===document.visibilityState&&(e(),document.removeEventListener("visibilitychange",t),!0);t()||document.addEventListener("visibilitychange",t)},L=async e=>{ +unsafeWindow.__ENABLE_WASM_PLAYER__||Boolean(r("#bilibili-player bwp-video")))},u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((t=>setTimeout((()=>t()),e)))},p=(e,t)=>"string"==typeof t?e.includes(t):t.test(e),b=e=>p(document.URL.replace(window.location.search,""),e),h=(e,t)=>{const n="default"in e?e.default:e;return(o=n,o instanceof Function?new o:o.functional?new(Vue.extend(o)):new Vue(o)).$mount(t);var o},g=()=>"player.bilibili.com"===window.location.host||document.URL.startsWith("https://www.bilibili.com/html/player.html"),F=()=>document.body&&unsafeWindow.parent.window!==unsafeWindow,v=()=>"text/html"!==document.contentType,w=(e,t)=>{const n=new Event(t);e.dispatchEvent(n)},y=(e,t,n)=>{if(!n){const t=e.match(/.+\.(.+)$/);n=t?t[1]:"jpg"}return n.startsWith(".")&&(n=n.substring(1)),[1,1.25,1.5,1.75,2,2.25,2.5,2.75,3,3.25,3.5,3.75,4].map((o=>{if("object"==typeof t){if("width"in t&&"height"in t)return`${e}@${Math.trunc(t.width*o)}w_${Math.trunc(t.height*o)}h.${n} ${o}x`;if("width"in t)return`${e}@${Math.trunc(t.width*o)}w.${n} ${o}x`;if("height"in t)return`${e}@${Math.trunc(t.height*o)}h.${n} ${o}x`;throw new Error(`Invalid argument 'baseSize': ${JSON.stringify(t)}`)}return`${e}@${Math.trunc(t*o)}w_${Math.trunc(t*o)}h.${n} ${o}x`})).join(",")},x=e=>document.cookie.replace(new RegExp(`(?:(?:^|.*;\\s*)${e}\\s*\\=\\s*([^;]*).*$)|^.*$`),"$1"),k=()=>x("DedeUserID"),C=()=>x("bili_jct"),A=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=10**t;let o=(Math.trunc(e*n)/n).toString();const i=o.indexOf(".");if(i>-1){const e=o.length-i-1;e{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},B=(e,t,n)=>{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},D=(e,t,n)=>{const o=e=>{(n?.(e)??1)&&e.stopImmediatePropagation()};return e.addEventListener(t,o,{capture:!0}),()=>{e.removeEventListener(t,o,{capture:!0})}},I=(e,t)=>{const{encode:n}={encode:!0,...t};return Object.entries(e).map((e=>{let[t,o]=e;return n?`${t}=${encodeURIComponent(o)}`:`${t}=${o}`})).join("&")},z=(e,t)=>{const n=e.findIndex(t);return-1!==n&&(e.splice(n,1),!0)},S=(e,t)=>{let n=!1;do{n=z(e,t)}while(n);return n};class P{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.handler=e,this.preventSingle=t,o(this,"elements",[]),o(this,"singleClickHandler",m),o(this,"clickedOnce",!1),o(this,"stopPropagationHandler",(e=>{e.stopImmediatePropagation()})),o(this,"doubleClickHandler",(e=>{this.clickedOnce?(this.clickedOnce=!1,Promise.resolve().then((()=>{this.handler?.(e)}))):(this.clickedOnce=!0,setTimeout((()=>{this.clickedOnce&&(this.clickedOnce=!1,this.preventSingle&&this.singleClickHandler?.(e))}),200)),this.preventSingle&&e.stopImmediatePropagation()}))}bind(e){-1===this.elements.indexOf(e)&&(this.elements.push(e),e.addEventListener("click",this.doubleClickHandler,{capture:!0}),e.addEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}unbind(e){const t=this.elements.indexOf(e);-1!==t&&(this.elements.splice(t,1),e.removeEventListener("click",this.doubleClickHandler,{capture:!0}),e.removeEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}}const M=async()=>{const{sq:e}=await Promise.resolve().then(n.bind(n,3311)),{logError:t}=await Promise.resolve().then(n.bind(n,4732));return await e((()=>unsafeWindow),(()=>void 0!==unsafeWindow.UserStatus)),new Promise(((e,n)=>{"https://www.bilibili.com/blackboard/newplayer.html"===document.URL.replace(window.location.search,"")&&document.URL.includes("fjw=true")||g()||(unsafeWindow.onLoginInfoLoaded?unsafeWindow.onLoginInfoLoaded(e):(t(new Error("utils.playerReady 失败")),console.error("typeof onLoginInfoLoaded === "+typeof unsafeWindow.onLoginInfoLoaded),n()))}))},O=()=>{const{activeElement:e}=document;return!!e&&(!!e.hasAttribute("contenteditable")||["input","textarea"].includes(e.nodeName.toLowerCase()))},V=e=>{if(!(e instanceof HTMLElement))return null;const t=(()=>{if(e.hasAttribute("data-src"))return e.getAttribute("data-src");if(e instanceof HTMLImageElement)return e.src;if(e instanceof HTMLPictureElement&&r(e,"img")){return r(e,"img").src}if(r(e,"picture img")){return r(e,"picture img").src}const{backgroundImage:t}=e.style;if(!t)return null;const n=t.match(/url\("(.+)"\)/);return n?n[1]:null})(),n=t.match(/^(.+)(\..+?)(@.+)$/);if(n)return{url:n[1]+n[2],extension:n[2]};const o=t.match(/^(.+)(\..+?)$/);return o?{url:o[1]+o[2],extension:o[2]}:null},T=e=>{const t=()=>"visible"===document.visibilityState&&(e(),document.removeEventListener("visibilitychange",t),!0);t()||document.addEventListener("visibilitychange",t)},L=async e=>{ // eslint-disable-next-line prefer-arrow-callback const t=E(unsafeWindow,"scrollTo",(function(){return!1}));return e?(await e(),t(),m):t},j=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1/0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0;return(n,o)=>lodash.isNumber(Number(n))?lodash.clamp(n,e,t):o},R=e=>lodash.upperFirst(lodash.camelCase(e)),N=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;const t=new Uint8Array(Math.ceil(e/2));return crypto.getRandomValues(t),[...t].map((e=>e.toString(16).padStart(2,"0"))).join("").substring(0,e)},q=function(){for(var e=arguments.length,t=new Array(e),n=0;n{throw new Error("unreachable")},U=()=>navigator.connection?.saveData??!1,H=(e,t)=>{const n=new MouseEvent("mousedown",t),o=new MouseEvent("mouseup",t),i=new PointerEvent("pointerdown",t),r=new PointerEvent("pointerup",t),a=new MouseEvent("click",t);e.dispatchEvent(i),e.dispatchEvent(n),e.dispatchEvent(r),e.dispatchEvent(o),e.dispatchEvent(a)},W=e=> // eslint-disable-next-line no-underscore-dangle -e.__vue__??e.parentElement.__vue__??e.children[0].__vue__??e.__vueParentComponent},4732:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ScopedConsoleCallHook:()=>m,ScopedConsoleCreateHook:()=>d,logError:()=>a,randomScopedConsole:()=>u,useScopedConsole:()=>f});var o=n(68),i=n(8612),r=n(5067);const a=async(e,t)=>{let o;"string"==typeof e?(o=e,console.error(o)):(o=(0,r.getGeneralSettings)().devMode?e.stack:e.message,console.error(e));const{Toast:i}=await Promise.resolve().then(n.bind(n,3823));i.error(o,"错误",t)},c=Symbol("ScopedConsole"),s=Symbol("NamePatch"),l={default:"#78909C",warn:"#CC7A00",error:"#BF6060",group:"#9575CD"},d="scopedConsole.create",m="scopedConsole.call",f=e=>{const{before:t,after:n}=(0,o.getHook)(d),{name:i,color:a=l.default,console:f=window.console}="string"==typeof e?{name:e}:e,u={name:i,color:a,console:f};t(e,f);let p=0;const b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.color;const i=e[c],r=(i?t.color:n)??l.default,a="#fff",d=i?["%c "]:["%c"],f={badgeNames:[...i?.badgeNames??[],...d,`%c${t.name}`],badgeValues:[...i?.badgeValues??[],"",`background-color: ${r}; color: ${a}; padding: 2px 4px; border-radius: 4px;`],original:i?.original??e},u=f.original,b=function(){for(var e=arguments.length,t=new Array(e),n=0;n2&&void 0!==arguments[2]?arguments[2]:t.color,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e=>e;const i=b(e,t,n),r=function(){for(var e=arguments.length,t=new Array(e),n=0;n{g[e][s]||(g[e][s]=e)}));const F={...unsafeWindow.console,...f};return F.log=b(f.log,u),F.info=b(f.info,u),F.warn=b(f.warn,u,l.warn),F.error=b(f.error,u,l.error),F.group=h(f.group,u,l.group,(e=>e+1)),F.groupCollapsed=h(f.groupCollapsed,u,l.group,(e=>e+1)),F.groupEnd=h(f.groupEnd,u,l.group,(e=>e-1)),F.debug=(()=>{const e=b(f.debug,u);return function(){if((0,r.getGeneralSettings)().devMode){for(var t=arguments.length,n=new Array(t),o=0;of({...e,name:(0,i.getRandomId)()})},8014:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ascendingBigIntSort:()=>a,ascendingSort:()=>i,ascendingStringSort:()=>r,descendingBigIntSort:()=>l,descendingSort:()=>c,descendingStringSort:()=>s});const o=e=>e,i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t)-e(n)},r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t).localeCompare(e(n))},a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>{const o=BigInt(e(t)),i=BigInt(e(n));return o===i?0:o>i?1:-1}},c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n)-e(t)},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n).localeCompare(e(t))},l=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>-a(e)(t,n)}},6571:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatTitle:()=>s,getFriendlyTitle:()=>l});var o=n(8612),i=n(5067),r=n(9083),a=n(8014);const c=e=>{let t=0,n=0;const o=[];return e.split("").forEach(((i,r)=>{"["===i&&(0===n?(o.push(e.substring(t,r)),t=r):n++),"]"===i&&(0===n?(o.push(e.substring(t,r+1)),t=r+1):n--)})),t""!==e))},s=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=new Date,s=()=>document.title.replace(/第[0-9]*[零一二三四五六七八九十百千]*[集话]-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/:([^:]+?)_.+?_bilibili_哔哩哔哩$/,"").replace(/_哔哩哔哩_bilibili$/,"").replace(/ - 哔哩哔哩$/,"").replace(/_哔哩哔哩 \(゜-゜\)つロ 干杯~-bilibili$/,"").replace(/(.*?) - (.*?) - 哔哩哔哩直播,二次元弹幕直播平台$/,"$1").trim(),l={title:(()=>{const e=(0,o.dq)(".video-info-container .video-title");if(null!==e)return e.getAttribute("title");const t=(0,o.dq)('[class*="mediainfo_mediaTitle"]');if(null!==t)return t.getAttribute("title");const n=(0,o.dq)(".header-info-ctnr .live-title .text");return null!==n?n.getAttribute("title"):s()})(),ep:(()=>{if(!t)return;const e=(0,o.dq)("#eplist_module li.cursor .ep-title");if(null!==e)return e.innerText;const n=(0,o.dq)("#multi_page .cur-list>ul li.on a, .video-episode-card__info-playing .video-episode-card__info-title");if(null!==n)return n.getAttribute("title");const i=(0,o.dq)(".multip-list-item.multip-list-item-active");return null!==i?i.getAttribute("title"):void 0})(),aid:unsafeWindow.aid,bvid:unsafeWindow.bvid,cid:unsafeWindow.cid,lid:document.URL.replace(/https:\/\/live\.bilibili\.com\/(blanc\/)?([\d]+)/,"$2"),y:i.getFullYear().toString(),M:(i.getMonth()+1).toString().padStart(2,"0"),d:i.getDate().toString().padStart(2,"0"),h:i.getHours().toString().padStart(2,"0"),m:i.getMinutes().toString().padStart(2,"0"),s:i.getSeconds().toString().padStart(2,"0"),ms:i.getMilliseconds().toString().substring(0,3)},d={...l,...n},m=c(e),f=Object.entries(d).sort((0,a.descendingSort)((e=>{let[t]=e;return t.length}))),u=m.map((e=>{if(!e.startsWith("[")||!e.endsWith("]"))return e;for(const[t,n]of f){const o=new RegExp(`^\\[([^\\[\\]]*?)${t}([^\\[\\]]*?)\\]$`),i=e.match(o);if(i&&Boolean(n))return`${i[1]??""}${n}${i[2]??""}`}return""})),p=u.join("");return(0,r.formatFilename)(p," ")},l=function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s((0,i.getGeneralSettings)().filenameFormat,e,t)}},146:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allVideoUrls:()=>u,bangumiUrls:()=>d,cheeseUrls:()=>m,columnUrls:()=>F,favoriteListUrls:()=>r,feedsUrls:()=>g,feedsUrlsWithoutDetail:()=>h,festivalUrls:()=>s,liveUrls:()=>b,mainSiteUrls:()=>p,matchCurrentPage:()=>w,mediaListUrls:()=>c,playerUrls:()=>v,upListUrls:()=>a,videoAndBangumiUrls:()=>f,videoUrls:()=>l,watchlaterUrls:()=>i});var o=n(8612);const i=["//www.bilibili.com/medialist/play/watchlater","//www.bilibili.com/list/watchlater"],r=["//www.bilibili.com/medialist/play/ml","//www.bilibili.com/list/ml"],a=[/\/\/www\.bilibili\.com\/medialist\/play\/\d+/,/\/\/www\.bilibili\.com\/list\/\d+/],c=[...i,...r,...a,/\/\/www\.bilibili\.com\/list\//],s=[/\/\/www\.bilibili\.com\/festival\//],l=["//www.bilibili.com/video/",...s,...c],d=["//www.bilibili.com/bangumi/play/"],m=["//www.bilibili.com/cheese/"],f=[...l,...d],u=[...f,...m],p=["https://www.bilibili.com/v/",/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/([^\/]+)\.html$/,/^https:\/\/www\.bilibili\.com\/watchlater\/#\/list$/,"https://www.bilibili.com/account/"],b=[/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],h=[/^https:\/\/t\.bilibili\.com\/$/,/^https:\/\/space\.bilibili\.com\//,/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],g=[...h,/^https:\/\/t\.bilibili\.com\//,/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/],F=[/^https:\/\/www\.bilibili\.com\/read\/cv/],v=["//player.bilibili.com","//www.bilibili.com/html/player.html",...l,...d,...m],w=function(){for(var e=arguments.length,t=new Array(e),n=0;nArray.isArray(e)?e.some((e=>(0,o.matchUrlPattern)(e))):(0,o.matchUrlPattern)(e)))}},9219:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CompareResult:()=>a,Version:()=>c,isFeatureAcceptable:()=>s});var o=n(1841),i=n(2046);function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let a=function(e){return e[e.Less=-1]="Less",e[e.Equal=0]="Equal",e[e.Greater=1]="Greater",e[e.Incomparable=NaN]="Incomparable",e}({});class c{constructor(e){if(this.versionString=e,r(this,"parts",void 0),!/^[\d\.]+$/.test(e))throw new Error("Invalid version string");this.parts=e.split(".").map((e=>parseInt(e)))}compareTo(e){for(let t=0;te.parts[t]?a.Greater:a.Less}return this.parts.length!==e.parts.length?a.Less:a.Equal}greaterThan(e){return this.compareTo(e)===a.Greater}lessThan(e){return this.compareTo(e)===a.Less}equals(e){return this.compareTo(e)===a.Equal}}const s=async e=>{try{if("string"==typeof e&&(e=(0,o.loadFeatureCode)(e)),null==e)return!1;const{version:t}=i.meta.compilationInfo,{coreVersion:n}=e;if(!n||!t)return!0;const r=new c(t),a=new c(n);return r.equals(a)||r.greaterThan(a)}catch(t){return console.warn("[isFeatureAcceptable] check failed, feature =",e),!0}}},4909:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addData:()=>r,getData:()=>a,registerAndGetData:()=>c,registerData:()=>i});const o=new Map,i=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i{if(o.has(e)){const{providers:n,loaded:i,data:r}=o.get(e);i?t(...r):n.push(t)}else o.set(e,{registered:!1,data:[],loaded:!1,providers:[t]})},a=e=>{if(o.has(e)){const t=o.get(e),{data:n,registered:i,loaded:r,providers:a}=t;if(i)return r||(a.forEach((e=>e(...n))),t.providers=[],t.loaded=!0),n}return[]},c=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o{"use strict";n.r(t),n.d(t,{addHook:()=>i,getHook:()=>r});const o=new Map,i=(e,t)=>{if(o.has(e)){const{providers:n}=o.get(e);n.push(t)}else o.set(e,{providers:[t]})},r=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;ie.before?.(...n.concat(t)))))},after:async function(){for(var e=arguments.length,t=new Array(e),o=0;oe.after?.(...n.concat(t)))))}}}return{before:async()=>Promise.all([]),after:async()=>Promise.all([])}}},8692:(e,t,n)=>{"use strict";n.r(t),n.d(t,{plugin:()=>r});const o=async(e,t,o)=>{const i={name:t,icon:"mdi-content-copy",description:`复制${e}`,indexer:o,action:async()=>{if(i.name===t){await navigator.clipboard.writeText(t);const{Toast:o}=await Promise.resolve().then(n.bind(n,3823));o.success("复制成功",`复制${e}`,1500)}}};return[i]},i=[{pattern:/^av([\d]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,5267)),i=await t(`https://api.bilibili.com/x/web-interface/view?aid=${e[1]}`),r=lodash.get(i,"data",{}),{bvid:a,title:c}=r,s=`av${e[1]}`;return{name:c||s,description:"av号跳转",indexer:s,link:`https://www.bilibili.com/av${e[1]}`,extraActions:a?await o("BV号",a,s):[]}}},{pattern:/^bv([\da-zA-Z]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,5267)),i=await t(`https://api.bilibili.com/x/web-interface/view?bvid=${e[1]}`),r=lodash.get(i,"data",{}),{aid:a,title:c}=r,s=`BV${e[1]}`;return{name:c||s,description:"BV号跳转",indexer:s,link:`https://www.bilibili.com/BV${e[1]}`,extraActions:a?await o("av号",`av${a}`,s):[]}}}],r={name:"launchBar.actions.IDSearch",displayName:"搜索栏 - 视频跳转",async setup(){const{addData:e}=await Promise.resolve().then(n.bind(n,4909)),{LaunchBarActionProviders:t}=await Promise.resolve().then(n.bind(n,7801));e(t,(e=>{e.push({name:"IDSearchProvider",getActions:async e=>{const t=[];for(const n of i){const o=e.match(n.pattern);if(o){const{name:e,description:i="",indexer:r,link:a,extraActions:c=[]}=await n.getActions(o);t.push({name:e,icon:"mdi-open-in-new",indexer:r,description:i,action:()=>{window.open(a,"_blank")},order:0},...c)}}return t}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}},9094:(e,t,n)=>{"use strict";n.r(t),n.d(t,{extractPluginFromComponent:()=>d,installPlugin:()=>s,loadAllPlugins:()=>f,loadPlugin:()=>m,plugins:()=>c,pluginsMap:()=>a,uninstallPlugin:()=>l});var o=n(8612),i=n(4909),r=n(68);const a={},c=lodash.once((()=>{const e=n(4353);return e.keys().map((t=>{const n=e(t);if("plugin"in n){const e=n.plugin;return a[e.name]=e,e}})).filter((e=>void 0!==e))}))(),s=async e=>{const{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,1841));let o;try{o=t(e)}catch(e){throw new Error("无效的插件代码",e)}const{settings:i}=await Promise.resolve().then(n.bind(n,5067)),r=i.userPlugins[o.name];if(r)return r.code=e,r.name=o.name,r.displayName=o.displayName||o.name,{metadata:o,message:`已更新插件'${o.displayName}', 刷新后生效`};const a={code:e,displayName:o.name,...o};return i.userPlugins[o.name]=a,c.push(a),{metadata:o,message:`已安装插件'${o.displayName||o.name}', 刷新后生效`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,5067)),i=Object.entries(t.userPlugins).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的插件`);const[r,a]=i;return delete t.userPlugins[r],(0,o.deleteValue)(c,(e=>e.name===r)),{metadata:a,message:`已卸载插件'${a.displayName}', 刷新后生效`}},d=e=>e.plugin?{name:`${e.name}.plugin`,displayName:`${e.displayName} - 附带插件`,...e.plugin}:null,m=async e=>{if(e.setup){const{pluginLoadTrace:t}=await Promise.resolve().then(n.bind(n,1926));await t(e);const{coreApis:o}=await Promise.resolve().then(n.bind(n,4435));return e.setup({coreApis:o,addData:i.addData,addHook:r.addHook,registerData:i.registerData,registerAndGetData:i.registerAndGetData,getHook:r.getHook})}return null},f=async e=>{const{settings:t,getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,5067)),{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,5705));for(const t of e){const e=d(t);e&&c.push(e)}for(const[e,n]of Object.entries(t.userPlugins)){const{code:t}=n;let o;try{o=i(t)}catch(t){console.error("从代码加载用户插件失败。代码可能包含语法错误或执行时产生了异常",{pluginName:e,error:t});continue}c.push(o)}return Promise.allSettled(c.map(m)).then((async()=>{if(o().devMode){const{pluginLoadTime:e,pluginResolveTime:t}=await Promise.resolve().then(n.bind(n,1926)),{logStats:o}=await Promise.resolve().then(n.bind(n,5043));o("plugins block",e),o("plugins resolve",t)}}))}},473:(e,t,n)=>{"use strict";n.r(t),n.d(t,{UserStyleMode:()=>r,installStyle:()=>c,styles:()=>a,uninstallStyle:()=>s});var o=n(5067),i=n(8612);let r=function(e){return e.Default="default",e.Instant="instant",e.Important="important",e}({});const a=Object.values(o.settings.userStyles),c=async e=>{try{let t;const{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,1841));t="string"==typeof e?i(e):e;const{name:c,style:s,displayName:l,mode:d}=t,{removeStyle:m,addImportantStyle:f,addStyle:u}=await Promise.resolve().then(n.bind(n,4460)),p=o.settings.userStyles[c];if(p)Object.assign(p,t),m(c);else{const e={displayName:c,mode:r.Default,...t};o.settings.userStyles[c]=e,a.push(e)}return d===r.Important?f(s,c):u(s,c),{metadata:t,message:`已安装样式'${l||c}'`}}catch(e){throw new Error("无效的样式代码",{cause:e})}},s=async e=>{const t=Object.entries(o.settings.userStyles).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!t)throw new Error(`没有找到与名称'${e}'相关联的样式`);const{removeStyle:r}=await Promise.resolve().then(n.bind(n,4460)),[c,{displayName:s}]=t;return r(c),delete o.settings.userStyles[c],(0,i.deleteValue)(a,(e=>e.name===c)),{metadata:t,message:`已卸载样式'${s}'`}}},2570:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AsyncButton:()=>s,CheckBox:()=>h,ColorPicker:()=>E,DefaultWidget:()=>mt,DpiImage:()=>M,ImagePicker:()=>R,ImageViewer:()=>Y,MiniToast:()=>ft.Z,ProgressBar:()=>ne,ProgressRing:()=>se,RadioButton:()=>ue,RangeInput:()=>we,ScrollTrigger:()=>Be,SwitchBox:()=>De.Z,TabControl:()=>Oe,TextArea:()=>qe,TextBox:()=>Ze.default,VButton:()=>r.default,VDropdown:()=>Xe,VEmpty:()=>ot,VIcon:()=>o.default,VLoading:()=>it.default,VPopup:()=>He.default,VSlider:()=>rt.default,showImage:()=>K});var o=n(714),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({attrs:{disabled:e.disabled||e.internalDisabled},on:{click:e.onClick}},"VButton",e.$attrs,!1),e.listeners),[e._t("default",(function(){return[e._v("Button")]}))],2)};i._withStripped=!0;var r=n(1589);const a=Vue.extend({components:{VButton:r.default},props:{disabled:{type:Boolean,default:!1}},data:()=>({internalDisabled:!1}),computed:{listeners(){return lodash.omit(this.$listeners,"click")},onClick(){var e=this;return async function(){try{e.internalDisabled=!0;for(var t=arguments.length,n=new Array(t),o=0;oPromise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,714)).then((e=>e.default))},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},iconPosition:{type:String,default:"left"},checkedIcon:{type:String,default:"mdi-checkbox-marked-circle"},notCheckedIcon:{type:String,default:"mdi-checkbox-blank-circle-outline"}}});var m=n(8332),f=n.n(m),u=n(2141),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,c.Z)(d,l,[],!1,null,"07bbf374",null).exports;var g=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-color-picker"},[t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.popupOpened=!e.popupOpened,expression:"() => (popupOpened = !popupOpened)"}],ref:"button",staticClass:"selected-color",style:{backgroundColor:e.color,width:e.size+"px",height:e.size+"px"},attrs:{role:"button",tabindex:"0"}}),e._v(" "),t("VPopup",{staticClass:"picker",class:{compact:e.compact},style:{"--offset":e.popupOffset+"px"},attrs:{"esc-close":"","auto-close":!1,"trigger-element":e.$refs.button},model:{value:e.popupOpened,callback:function(t){e.popupOpened=t},expression:"popupOpened"}},[t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("预设颜色")]),e._v(" "),t("div",{staticClass:"colors"},e._l(e.colors,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectHexColor(n),expression:"() => selectHexColor(c)"}],key:n,staticClass:"color",style:{backgroundColor:n},attrs:{role:"radio",tabindex:e.popupOpened?0:-1}})})),0)]),e._v(" "),t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("调色")]),e._v(" "),t("div",{staticClass:"bars"},[e.isRGB?[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("R")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.red},on:{change:function(t){return e.wrapper.change("red",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.redGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2466330035)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.red)},on:{change:function(t){return e.wrapper.change("red",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("G")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.green},on:{change:function(t){return e.wrapper.change("green",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.greenGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2962781435)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.green)},on:{change:function(t){return e.wrapper.change("green",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.blue},on:{change:function(t){return e.wrapper.change("blue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.blueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,660815582)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.blue)},on:{change:function(t){return e.wrapper.change("blue",t)}}})],1)]:[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("H")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:359.9,value:e.wrapper.hue},on:{change:function(t){return e.wrapper.change("hue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.hueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"4","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.hue)},on:{change:function(t){return e.wrapper.change("hue",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("S")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.saturation},on:{change:function(t){return e.wrapper.change("saturationv",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.saturationGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.saturation)},on:{change:function(t){return e.wrapper.change("saturationv",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.brightness},on:{change:function(t){return e.wrapper.change("value",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.brightnessGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.brightness)},on:{change:function(t){return e.wrapper.change("value",t)}}})],1)]],2)]),e._v(" "),t("div",{staticClass:"info item-group"},[t("VButton",{staticClass:"toggle-mode",attrs:{disabled:!e.popupOpened,type:"transparent",title:e.isRGB?"切换至HSB":"切换至RGB"},on:{click:function(t){e.isRGB=!e.isRGB}}},[e._v("\n "+e._s(e.isRGB?"切换至HSB":"切换至RGB")+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"color-preview",style:{backgroundColor:e.wrapper.hex}}),e._v(" "),t("TextBox",{staticClass:"hex",attrs:{disabled:!e.popupOpened,text:e.wrapper.hex,"change-on-blur":""},on:{change:function(t){return e.selectHexColor(t)}}})],1),e._v(" "),t("div",{staticClass:"operations item-group",on:{click:function(t){e.popupOpened=!e.popupOpened}}},[t("VButton",{staticClass:"cancel",attrs:{disabled:!e.popupOpened},on:{click:function(t){return e.reset()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{staticClass:"ok",attrs:{disabled:!e.popupOpened,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1)])],1)};g._withStripped=!0;var F=n(4654),v=n.n(F);const w=JSON.parse('["#E57373","#F06292","#BA68C8","#9575CD","#7986CB","#2196F3","#00A0D8","#00ACC1","#26A69A","#81C784","#9CCC65","#FF9800","#FF7043","#A1887F","#757575","#78909C"]'),y=e=>{let t=new(v())(e);const n={get color(){return t},set color(e){t=e,this.updateProps()},change(e,n){"string"==typeof n&&(n=parseFloat(n),Number.isNaN(n))||(this.color=t[e](n))},updateProps(){this.red=t.red(),this.green=t.green(),this.blue=t.blue(),this.hue=t.hue(),this.saturation=t.saturationv(),this.brightness=t.value(),this.hex=t.hex(),this.hueGradient=`linear-gradient(to right, ${t.hue(0).hex()}, ${t.hue(60).hex()}, ${t.hue(120).hex()}, ${t.hue(180).hex()}, ${t.hue(240).hex()}, ${t.hue(300).hex()}, ${t.hue(0).hex()})`,this.saturationGradient=`linear-gradient(to right, ${t.saturationv(0).hex()}, ${t.saturationv(100).hex()})`,this.brightnessGradient=`linear-gradient(to right, ${t.value(0).hex()}, ${t.value(100).hex()})`,this.redGradient=`linear-gradient(to right, ${t.red(0).hex()}, ${t.red(255).hex()})`,this.greenGradient=`linear-gradient(to right, ${t.green(0).hex()}, ${t.green(255).hex()})`,this.blueGradient=`linear-gradient(to right, ${t.blue(0).hex()}, ${t.blue(255).hex()})`}};return n.updateProps(),n},x=Vue.extend({name:"ColorPicker",components:{TextBox:()=>Promise.resolve().then(n.bind(n,2827)).then((e=>e.default)),VSlider:()=>Promise.resolve().then(n.bind(n,8308)).then((e=>e.default)),VButton:()=>Promise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,9397)).then((e=>e.default))},model:{prop:"color",event:"change"},props:{color:{type:String,default:"#000000",required:!0},size:{type:Number,default:24,required:!1},compact:{type:Boolean,default:!1},popupOffset:{type:Number,default:0}},data(){return{popupOpened:!1,wrapper:y(this.color),colors:w,isRGB:!1}},watch:{popupOpened(e){e&&(document.body.addEventListener("mousedown",(e=>{this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("mouseup",(()=>{this.popupOpened=!1}),{once:!0})})),document.body.addEventListener("touchstart",(e=>{1!==e.touches.length||this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("touchend",(()=>{this.popupOpened=!1}),{once:!0})})))}},methods:{ok(){this.$emit("change",this.wrapper.hex)},reset(){this.wrapper.color=new(v())(this.color)},selectHexColor(e){try{const t=new(v())(e,"hex");this.wrapper.color=t}catch(e){}},fixed:e=>(Math.round(10*e)/10).toString(),int:e=>Math.round(e).toString()}});var k=n(7521),C=n.n(k),A={insert:"head",singleton:!1};f()(C(),A);C().locals;const E=(0,c.Z)(x,g,[],!1,null,"5b939efc",null).exports;var B=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("img",e._b({class:{placeholder:e.isPlaceholderActive},attrs:{width:e.width,height:e.height,srcset:e.srcset,src:e.actualSrc}},"img",e.$attrs,!1))};B._withStripped=!0;var D=n(8612),I=n(4021);const z=Vue.extend({name:"DpiImage",props:{size:{type:[Object,Number],required:!0},src:{type:String,required:!0},intersection:{type:Object,default:()=>({})},placeholderImage:{type:Boolean,default:!1}},data:()=>({srcset:null,actualSrc:I.EmptyImageUrl,isPlaceholderActive:!1}),computed:{width(){return"object"==typeof this.size&&"width"in this.size?this.size.width:"number"==typeof this.size?this.size:null},height(){return"object"==typeof this.size&&"height"in this.size?this.size.height:"number"==typeof this.size?this.size:null}},watch:{size(){this.sourceChange()},src(){this.sourceChange()}},mounted(){const e={rootMargin:"200px",...this.intersection},t=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(this.calcSrc(),t.disconnect())}))}),e);t.observe(this.$el)},methods:{sourceChange(){this.actualSrc!==I.EmptyImageUrl&&null!==this.srcset&&this.calcSrc()},calcSrc(){const e=!this.src||!this.size;if(this.isPlaceholderActive=e&&this.placeholderImage,e)return this.srcset=null,void(this.placeholderImage?this.actualSrc="https://s1.hdslb.com/bfs/static/blive/live-web-center/static/img/no-cover.1ebe4d5.jpg":this.actualSrc=I.EmptyImageUrl);let{src:t}=this;if(t.startsWith("http:")&&(t=t.replace("http:","https:")),t.includes("//static.hdslb.com/images/member/noface.gif"))return this.srcset=t,void(this.actualSrc=t);this.srcset=(0,D.getDpiSourceSet)(t,this.size),this.actualSrc=t}}}),S=z;const M=(0,c.Z)(S,B,[],!1,null,null,null).exports;var P=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-image-picker"},[t("VButton",{ref:"pickButton",staticClass:"pick-button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[e._t("text",(function(){return[e._v(" 选择图片 ")]}))],2),e._v(" "),t("VPopup",{staticClass:"popup",attrs:{"trigger-element":e.$refs.pickButton},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.cancel()}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("transition-group",{staticClass:"images",attrs:{name:"image-list",tag:"div",tabindex:"-1"}},e._l(e.images,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectImage(n),expression:"() => selectImage(i)"}],key:n.name,staticClass:"image",class:{selected:n.name===e.selectedImage.name},attrs:{title:n.name,tabindex:e.popupOpen?0:-1}},[t("img",{attrs:{width:"64",height:"64",src:n.url}})])})),0),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:0===e.images.length,expression:"images.length === 0"}],staticClass:"empty-tip"},[e._v("空空如也哦 = ̄ω ̄=")]),e._v(" "),t("div",{staticClass:"operations"},[t("VPopup",{staticClass:"add-image-popup",attrs:{tabindex:"-1",lazy:!1,"trigger-element":e.$refs.addButton},model:{value:e.addImagePopupOpen,callback:function(t){e.addImagePopupOpen=t},expression:"addImagePopupOpen"}},[t("div",{staticClass:"add-image-row"},[e._v("\n 名称:\n "),t("TextBox",{ref:"addImageInput",attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.name,callback:function(t){e.$set(e.newImage,"name",t)},expression:"newImage.name"}})],1),e._v(" "),t("div",{staticClass:"add-image-row"},[e._v("\n 链接:\n "),t("TextBox",{attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.url,callback:function(t){e.$set(e.newImage,"url",t)},expression:"newImage.url"}})],1),e._v(" "),t("div",{staticClass:"add-image-row buttons"},[t("VButton",{attrs:{disabled:!e.addImagePopupOpen},on:{click:function(t){e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 取消\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.newImage.url||!e.newImage.name,type:"primary"},on:{click:function(t){e.addImage(e.newImage),e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 确定\n ")])],1)]),e._v(" "),t("VButton",{staticClass:"clear-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.clearImage()}}},[e._v("\n 清除选择\n ")]),e._v(" "),t("VButton",{ref:"addButton",staticClass:"add-image",attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.openAddImagePopup()}}},[e._v("\n 添加\n ")]),e._v(" "),t("VButton",{staticClass:"edit-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.editImage()}}},[e._v("\n 编辑\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.selectedImage.name},on:{click:function(t){e.removeImage(e.selectedImage),e.clearImage()}}},[e._v("\n 删除\n ")])],1),e._v(" "),t("div",{staticClass:"operations"},[t("VButton",{attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.cancel()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.popupOpen,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1),e._v(" "),e.addImagePopupOpen?t("div",{staticClass:"mask"}):e._e()],1)],1)};P._withStripped=!0;const O=[],V=Vue.extend({name:"ImagePicker",components:{VButton:()=>Promise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,9397)).then((e=>e.default)),TextBox:()=>Promise.resolve().then(n.bind(n,2827)).then((e=>e.default))},model:{prop:"image",event:"change"},props:{image:{type:Object,required:!0}},data:()=>({images:O,popupOpen:!1,addImagePopupOpen:!1,selectedImage:{name:"",url:""},newImage:{name:"",url:""}}),methods:{addImage:e=>{if(!e.name||!e.url)return;const t=O.find((t=>t.name===e.name));t?t.url=e.url:O.unshift(e)},removeImage:e=>{const t="string"==typeof e?e:e.name,n=O.findIndex((e=>e.name===t));-1!==n&&O.splice(n,1)},ok(){this.$emit("change",this.selectedImage),this.popupOpen=!1},cancel(){this.selectedImage=this.image,this.popupOpen=!1},selectImage(e){this.selectedImage.name===e.name?this.selectedImage={name:"",url:""}:this.selectedImage=e},clearImage(){this.selectedImage={name:"",url:""}},clearNewImage(){this.newImage={name:"",url:""}},editImage(){this.newImage=this.selectedImage,this.openAddImagePopup()},async openAddImagePopup(){this.addImagePopupOpen=!this.addImagePopupOpen,await this.$nextTick(),this.$refs.addImageInput.$refs.input.focus()}}});var T=n(1662),L=n.n(T),j={insert:"head",singleton:!1};f()(L(),j);L().locals;const R=(0,c.Z)(V,P,[],!1,null,"7b32c90b",null).exports;var N=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"image-viewer-container",class:{open:e.open},on:{click:e.detectOutside}},[t("div",{ref:"viewer",staticClass:"image-viewer"},[t("div",{staticClass:"image-container"},[e.image?t("img",{staticClass:"image",attrs:{src:e.image}}):e._e()]),e._v(" "),t("div",{staticClass:"close image-viewer-icon",attrs:{title:"关闭"},on:{click:function(t){e.open=!1}}},[t("VIcon",{attrs:{size:48,icon:"mdi-close"}})],1),e._v(" "),t("a",{staticClass:"copy-link image-viewer-icon",attrs:{target:"_blank",title:"复制原链接"},on:{click:function(t){return e.copyLink()}}},[e.copiedTimer?t("VIcon",{attrs:{size:48,icon:"mdi-check"}}):t("VIcon",{attrs:{size:48,icon:"mdi-link"}})],1),e._v(" "),t("a",{staticClass:"new-tab image-viewer-icon",attrs:{target:"_blank",title:"在新标签页打开"},on:{click:function(t){return e.newTab()}}},[t("VIcon",{attrs:{size:48,icon:"mdi-open-in-new"}})],1),e._v(" "),e.blobUrl?t("a",{staticClass:"download image-viewer-icon",attrs:{target:"_blank",title:"下载",href:e.blobUrl,download:e.filename}},[t("VIcon",{attrs:{size:48,icon:"mdi-download"}})],1):e._e()])])};N._withStripped=!0;var q=n(5067),Z=n(6571),U=n(5267);const H=Vue.extend({components:{VIcon:o.default},props:{image:{type:String,required:!0}},data:()=>({filename:"",open:!1,blobUrl:"",keyHandler:null,copiedTimer:0}),watch:{async image(e){this.blobUrl&&URL.revokeObjectURL(this.blobUrl),e||(this.blobUrl="");const t=await(0,U.getBlob)(e);this.blobUrl=URL.createObjectURL(t),this.updateFilename()}},mounted(){this.keyHandler=e=>{"Escape"===e.key&&(this.open=!1)},document.addEventListener("keydown",this.keyHandler),(0,q.addComponentListener)("settingsPanel.filenameFormat",(()=>{this.updateFilename()}),!0)},beforeDestroy(){document.removeEventListener("keydown",this.keyHandler)},methods:{async copyLink(){await navigator.clipboard.writeText(this.image),this.copiedTimer&&window.clearTimeout(this.copiedTimer),this.copiedTimer=window.setTimeout((()=>{this.copiedTimer=0}),2e3)},newTab(){window.open(this.image,"_blank")},detectOutside(e){const t=this.$el,{viewer:n}=this.$refs;e.target!==t&&e.target!==n||(this.open=!1)},updateFilename(){const e=this.image;this.filename=e?(0,Z.getFriendlyTitle)(document.URL.includes("/www.bilibili.com/bangumi/"))+e.substring(e.lastIndexOf(".")):""}}});var W=n(1635),G=n.n(W),Q={insert:"head",singleton:!1};f()(G(),Q);G().locals;const Y=(0,c.Z)(H,N,[],!1,null,"8829ba14",null).exports;let X;const K=async e=>(X||await(async()=>(X=new Y({propsData:{image:"",open:!1}}).$mount(),document.body.insertAdjacentElement("beforeend",X.$el),X))(),setTimeout((()=>{X.image=e,X.open=!0})),X);var J=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-progress-bar"},[t("div",{staticClass:"progress",class:{transition:e.transition},style:{width:e.width}})])};J._withStripped=!0;const _=Vue.extend({name:"ProgressBar",props:{progress:{type:Number,default:50},min:{type:Number,default:0},max:{type:Number,default:100},transition:{type:Boolean,default:!1}},computed:{width(){let e=this.progress;e>this.max?e=this.max:ethis.max?e=this.max:e{de.has(e)?de.get(e).push({instance:t,uncheck:n}):de.set(e,[{instance:t,uncheck:n}])})),fe=Vue.extend({name:"RadioButton",components:{CheckBox:h},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},allowUncheck:{type:Boolean,default:!1},group:{type:String,default:""},checkedIcon:{type:String,default:"mdi-radiobox-marked"},notCheckedIcon:{type:String,default:"mdi-radiobox-blank"}},watch:{checked(e){if(e){const e=this.group,t=this.$el;let n;n=""===e?t.parentElement:e,de.get(n).forEach((e=>{let{instance:t,uncheck:n}=e;t!==this&&n()}))}}},mounted(){const e=this.group,t=this.$el;let n;n=me(""===e?t.parentElement:e),n(this,(()=>this.$emit("change",!1)))},methods:{emitChange(e){(this.checked&&this.allowUncheck||!this.checked)&&this.$emit("change",e)}}});const ue=(0,c.Z)(fe,le,[],!1,null,null,null).exports;var pe=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-range-input"},[t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.start.toString()},on:{change:function(t){e.wrapper.start=t}}}),e._v(" "),e._t("separator",(function(){return[t("div",{staticClass:"default-separator"},[e._v("~")])]})),e._v(" "),t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.end.toString()},on:{change:function(t){e.wrapper.end=t}}})],2)};pe._withStripped=!0;const be=e=>({range:e.range,get start(){return this.range.start.toString()},set start(e){this.createNewRange(e,this.end)},get end(){return this.range.end.toString()},set end(e){this.createNewRange(this.start,e)},createNewRange(t,n){let o={start:t,end:n};e.validator&&(o=e.validator(o)),null!=o?(this.range=o,e.$emit("change",o)):this.range={start:this.range.start,end:this.range.end}}}),he=Vue.extend({name:"RangeInput",components:{TextBox:()=>Promise.resolve().then(n.bind(n,2827))},model:{prop:"range",event:"change"},props:{range:{type:Object,required:!0},validator:{type:Function,default:void 0}},data(){return{wrapper:be(this)}}});var ge=n(7824),Fe=n.n(ge),ve={insert:"head",singleton:!1};f()(Fe(),ve);Fe().locals;const we=(0,c.Z)(he,pe,[],!1,null,"b459c060",null).exports;var ye=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-scroll-trigger",on:{click:function(t){return e.trigger()}}},[e._t("default",(function(){return[t("VLoading")]}))],2)};ye._withStripped=!0;var xe=n(4732);const ke=Vue.extend({components:{VLoading:()=>Promise.resolve().then(n.bind(n,1803)).then((e=>e.default))},props:{detectViewport:{type:Boolean,required:!1,default:!1}},data:()=>({isFirstLoad:!0,isViewportTriggerRunning:!1,parentLoadState:"none"}),async mounted(){const e=(0,xe.useScopedConsole)("ScrollTrigger"),t=this.$el,{visible:o}=await Promise.resolve().then(n.bind(n,2545));o(t,(async n=>{if(n.some((e=>e.intersectionRatio>0))){if(e.log("Intersection Observer trigger"),this.trigger(),!this.detectViewport&&!this.isFirstLoad&&this.isViewportTriggerRunning)return;for(this.isViewportTriggerRunning=!0;this.getVisibleStateByViewport(t);)if(await(0,D.delay)(500),"loaded"===this.parentLoadState){if(!this.getVisibleStateByViewport(t))break;e.log("is first load & viewport trigger"),this.trigger()}this.isFirstLoad=!1}}))},methods:{getElementToViewportBottomDistance:e=>document.documentElement.clientHeight-e.getBoundingClientRect().top,getVisibleStateByViewport(e){return Boolean(this.getElementToViewportBottomDistance(e)>-20)},setLoadState(e){this.parentLoadState=e},resetIsFirstLoad(){this.isFirstLoad=!0},trigger(){this.$emit("trigger")}}});var Ce=n(975),Ae=n.n(Ce),Ee={insert:"head",singleton:!1};f()(Ae(),Ee);Ae().locals;const Be=(0,c.Z)(ke,ye,[],!1,null,null,null).exports;var De=n(7136),Ie=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-tab-control"},[t("div",{staticClass:"default-header"},[e._t("tabs",(function(){return[t("div",{staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},attrs:{"data-count":n.count>0?n.count:null},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)]})),e._v(" "),t("div",{staticClass:"header-item"},[e._t("header-item")],2),e._v(" "),null!==e.moreLink&&void 0!==e.moreLink?t("a",{staticClass:"be-more-link",attrs:{href:"function"==typeof e.moreLink?e.moreLink(e.selectedTab):e.moreLink,target:"_blank"}},[t("VButton",{attrs:{disabled:!e.moreLink,round:""}},[e._t("more-link",(function(){return[e._v("\n 查看更多\n "),t("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})]}))],2)],1):e._e()],2),e._v(" "),e._t("content",(function(){return[t("div",{staticClass:"default-content"},[t("transition",{attrs:{name:"content-transition"}},[t(e.selectedTab.component,e._b({tag:"component"},"component",e.selectedTab.propsData,!1))],1)],1)]}))],2)};Ie._withStripped=!0;const ze=Vue.extend({name:"TabControl",components:{VButton:()=>Promise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,714)).then((e=>e.default))},model:{prop:"link",event:"change"},props:{tabs:{type:Array,required:!0,validator:e=>0!==e.length},defaultTab:{type:String,required:!1,default:""},link:{type:String,required:!1,default:null},moreLink:{type:[String,Function],default:null}},data(){const e=this.tabs;return{selectedTabName:e.find((e=>e.name===this.defaultTab))?.name??e[0].name}},computed:{selectedTab(){return this.tabs.find((e=>e.name===this.selectedTabName))}},mounted(){this.$emit("change",this.selectedTab.activeLink)},methods:{selectTab(e){this.selectedTabName!==e.name?(this.selectedTabName=e.name,e.count=0,this.$emit("change",this.selectedTab.activeLink)):e.activeLink&&window.open(e.activeLink,"_blank")}}});var Se=n(1710),Me=n.n(Se),Pe={insert:"head",singleton:!1};f()(Me(),Pe);Me().locals;const Oe=(0,c.Z)(ze,Ie,[],!1,null,null,null).exports;var Ve=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-text-area",attrs:{role:"text"}},[t("textarea",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"textarea",e.$attrs,!1),e.restListeners))])};Ve._withStripped=!0;var Te=n(3448);const Le=Vue.extend({name:"TextArea",mixins:[Te.t]});var je=n(6780),Re=n.n(je),Ne={insert:"head",singleton:!1};f()(Re(),Ne);Re().locals;const qe=(0,c.Z)(Le,Ve,[],!1,null,null,null).exports;var Ze=n(2827),Ue=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{directives:[{name:"hit",rawName:"v-hit",value:e.hit,expression:"hit"}],staticClass:"be-dropdown",class:{disabled:e.disabled,round:e.round},attrs:{role:"combobox",tabindex:e.disabled?-1:0,"aria-disabled":e.disabled}},[t("div",{ref:"selected",staticClass:"selected"},[t("div",{staticClass:"selected-item"},[null!==e.value&&void 0!==e.value?e._t("item",(function(){return[e._v("\n "+e._s(e.value.displayName)+"\n ")]}),{item:e.value}):e._e()],2),e._v(" "),t("div",{staticClass:"arrow",class:{open:e.popupOpen}},[e._t("arrow",(function(){return[t("div",{staticClass:"default-arrow"},[t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"}},[t("defs",[t("clipPath",{attrs:{id:"clip-arrow-down"}},[t("rect",{attrs:{width:"24",height:"24"}})])]),e._v(" "),t("g",{attrs:{id:"arrow-down","clip-path":"url(#clip-arrow-down)"}},[t("path",{attrs:{id:"Path_1","data-name":"Path 1",d:"M2,17,12,7,22,17",transform:"translate(24 25) rotate(180)","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"}})])])])]}))],2)]),e._v(" "),t("VPopup",{ref:"popup",staticClass:"dropdown-popup",attrs:{lazy:!1,"trigger-element":e.$refs.selected},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.selectItem(e.value)}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(e.items,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectItem(n),expression:"() => selectItem(item)"}],key:e.keyMapper(n),staticClass:"bex-dropdown-item",attrs:{tabindex:e.popupOpen?0:-1}},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)})),0)],1)};Ue._withStripped=!0;var He=n(9397);const We=Vue.extend({name:"VDropdown",components:{VPopup:He.default},model:{prop:"value",event:"change"},props:{value:{required:!0},items:{type:Array,required:!0},keyMapper:{type:Function,default:e=>e.name},round:{type:Boolean,default:!1}},data:()=>({popupOpen:!1}),computed:{disabled(){return Boolean(this.$attrs.disabled)}},watch:{disabled(e){e&&(this.popupOpen=!1)}},created(){null!==this.value&&void 0!==this.value||this.$emit("change",this.items[0]||"")},methods:{selectItem(e){e!==this.value&&this.$emit("change",e),this.popupOpen=!1,this.$el.focus()},hit(e){if(this.disabled)return;const t=this.$refs.popup.$el,n=e.target;t===n||t.contains(n)||(this.popupOpen=!this.popupOpen)}}});var Ge=n(9820),Qe=n.n(Ge),Ye={insert:"head",singleton:!1};f()(Qe(),Ye);Qe().locals;const Xe=(0,c.Z)(We,Ue,[],!1,null,"6b51ccd4",null).exports;var Ke=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-empty"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};Ke._withStripped=!0;var Je=n(4909);const[_e]=(0,Je.registerAndGetData)("vEmpty",{content:"空空如也哦 = ̄ω ̄="}),$e=Vue.extend({name:"VEmpty",data:()=>({config:_e})});var et=n(4629),tt=n.n(et),nt={insert:"head",singleton:!1};f()(tt(),nt);tt().locals;const ot=(0,c.Z)($e,Ke,[],!1,null,null,null).exports;var it=n(1803),rt=n(8308),at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({staticClass:"default-widget"},"VButton",e.$attrs,!1),e.$listeners),[t("div",{staticClass:"widget-icon"},[e._t("icon",(function(){return[t("VIcon",{attrs:{type:e.iconType,icon:e.icon}})]}))],2),e._v(" "),t("div",{staticClass:"widget-name"},[e._t("default",(function(){return[e._v(e._s(e.name))]}))],2)])};at._withStripped=!0;const ct=Vue.extend({components:{VIcon:o.default,VButton:r.default},props:{name:{type:String,default:""},icon:{type:String,default:""},iconType:{type:String,default:""}}});var st=n(9057),lt=n.n(st),dt={insert:"head",singleton:!1};f()(lt(),dt);lt().locals;const mt=(0,c.Z)(ct,at,[],!1,null,"20e1bedd",null).exports;var ft=n(3792)},8633:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initMdiStyle:()=>r});var o=n(8964),i=n.n(o);const r=()=>{const e=document.createElement("style");return e.id="be-mdi",e.innerHTML=i(),e}},3448:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o=Vue.extend({model:{prop:"text",event:"change"},props:{text:{type:String,required:!1,default:""},changeOnBlur:{type:Boolean,required:!1,default:!1},validator:{type:Function,default:void 0}},data(){return{composing:!1,restListeners:lodash.omit(this.$listeners,"change","input","compositionstart","compositionend")}},methods:{emitChange(){let{value:e}=this.$refs.input;this.validator&&(e=this.validator(e,this.text),this.changeOnBlur&&(this.$refs.input.value=e)),e!==this.text&&this.$emit("change",e)},input(){this.changeOnBlur||this.composing||this.emitChange()},change(){this.changeOnBlur&&!this.composing&&this.emitChange()},compositionStart(){this.composing=!0},compositionEnd(){this.composing=!1,this.input()},focus(){this.$refs.input.focus()}}})},6204:(e,t,n)=>{"use strict";n.r(t),n.d(t,{compilationInfo:()=>f});var o=n(113);const i="the1812",r="cdn.jsdelivr.net",a={name:"jsDelivr",owner:i,host:r,stableClient:`https://${r}/gh/the1812/Bilibili-Evolved@master/dist/bilibili-evolved.user.js`,previewClient:`https://${r}/gh/the1812/Bilibili-Evolved@preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${r}/npm/lodash@4.17.21/lodash.min.js`,protobuf:`https://${r}/npm/protobufjs@6.10.1/dist/light/protobuf.min.js`,jszip:`https://${r}/npm/jszip@3.7.1/dist/jszip.min.js`,sortable:`https://${r}/npm/sortablejs@1.14.0/Sortable.min.js`,mdi:`https://${r}/gh/the1812/Bilibili-Evolved@master/docs/static/mdi/mdi.css`,streamsaver:`https://${r}/npm/streamsaver@2.0.6/StreamSaver.min.js`,ffmpeg:{worker:`https://${r}/npm/@ffmpeg/ffmpeg@0.12.4/dist/umd/814.ffmpeg.js`,core:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.js`,wasm:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.wasm`}},smallLogo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo-small.png`,logo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo.png`,root:(e,t)=>`https://${r}/gh/${t||i}/Bilibili-Evolved@${e}/`},c="the1812",s="raw.githubusercontent.com",l={name:"GitHub",owner:c,host:s,stableClient:`https://${s}/the1812/Bilibili-Evolved/master/dist/bilibili-evolved.user.js`,previewClient:`https://${s}/the1812/Bilibili-Evolved/preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${s}/lodash/lodash/4.17.21/dist/lodash.min.js`,protobuf:`https://${s}/protobufjs/protobuf.js/v6.10.1/dist/light/protobuf.min.js`,jszip:`https://${s}/Stuk/jszip/v3.7.1/dist/jszip.min.js`,sortable:`https://${s}/SortableJS/Sortable/1.14.0/Sortable.min.js`,mdi:"https://the1812.github.io/Bilibili-Evolved/static/mdi/mdi.css",streamsaver:`https://${s}/jimmywarting/StreamSaver.js/2.0.6/StreamSaver.js`,ffmpeg:a.library.ffmpeg},smallLogo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo-small.png`,logo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo.png`,root:(e,t)=>`https://${s}/${t||c}/Bilibili-Evolved/${e}/`},d=l,m={github:l,jsDelivr:a},f={...{year:(new Date).getFullYear(),version:o.version,altCdn:d,allCdns:m},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",branch:"master",nearestTag:"v2.8.10",versionWithTag:"v2.8.10-36-ge998998fc"}},4589:(e,t,n)=>{var o=n(3337),i={};for(var r in o)o.hasOwnProperty(r)&&(i[o[r]]=r);var a=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var c in a)if(a.hasOwnProperty(c)){if(!("channels"in a[c]))throw new Error("missing channels property: "+c);if(!("labels"in a[c]))throw new Error("missing channel labels property: "+c);if(a[c].labels.length!==a[c].channels)throw new Error("channel and label counts mismatch: "+c);var s=a[c].channels,l=a[c].labels;delete a[c].channels,delete a[c].labels,Object.defineProperty(a[c],"channels",{value:s}),Object.defineProperty(a[c],"labels",{value:l})}a.rgb.hsl=function(e){var t,n,o=e[0]/255,i=e[1]/255,r=e[2]/255,a=Math.min(o,i,r),c=Math.max(o,i,r),s=c-a;return c===a?t=0:o===c?t=(i-r)/s:i===c?t=2+(r-o)/s:r===c&&(t=4+(o-i)/s),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+c)/2,[t,100*(c===a?0:n<=.5?s/(c+a):s/(2-c-a)),100*n]},a.rgb.hsv=function(e){var t,n,o,i,r,a=e[0]/255,c=e[1]/255,s=e[2]/255,l=Math.max(a,c,s),d=l-Math.min(a,c,s),m=function(e){return(l-e)/6/d+.5};return 0===d?i=r=0:(r=d/l,t=m(a),n=m(c),o=m(s),a===l?i=o-n:c===l?i=1/3+t-o:s===l&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*r,100*l]},a.rgb.hwb=function(e){var t=e[0],n=e[1],o=e[2];return[a.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(n,o))),100*(o=1-1/255*Math.max(t,Math.max(n,o)))]},a.rgb.cmyk=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-o,1-i)))/(1-t)||0),100*((1-o-t)/(1-t)||0),100*((1-i-t)/(1-t)||0),100*t]},a.rgb.keyword=function(e){var t=i[e];if(t)return t;var n,r,a,c=1/0;for(var s in o)if(o.hasOwnProperty(s)){var l=o[s],d=(r=e,a=l,Math.pow(r[0]-a[0],2)+Math.pow(r[1]-a[1],2)+Math.pow(r[2]-a[2],2));d.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(o=o>.04045?Math.pow((o+.055)/1.055,2.4):o/12.92)),100*(.2126*t+.7152*n+.0722*o),100*(.0193*t+.1192*n+.9505*o)]},a.rgb.lab=function(e){var t=a.rgb.xyz(e),n=t[0],o=t[1],i=t[2];return o/=100,i/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116)-16,500*(n-o),200*(o-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.hsl.rgb=function(e){var t,n,o,i,r,a=e[0]/360,c=e[1]/100,s=e[2]/100;if(0===c)return[r=255*s,r,r];t=2*s-(n=s<.5?s*(1+c):s+c-s*c),i=[0,0,0];for(var l=0;l<3;l++)(o=a+1/3*-(l-1))<0&&o++,o>1&&o--,r=6*o<1?t+6*(n-t)*o:2*o<1?n:3*o<2?t+(n-t)*(2/3-o)*6:t,i[l]=255*r;return i},a.hsl.hsv=function(e){var t=e[0],n=e[1]/100,o=e[2]/100,i=n,r=Math.max(o,.01);return n*=(o*=2)<=1?o:2-o,i*=r<=1?r:2-r,[t,100*(0===o?2*i/(r+i):2*n/(o+n)),100*((o+n)/2)]},a.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,o=e[2]/100,i=Math.floor(t)%6,r=t-Math.floor(t),a=255*o*(1-n),c=255*o*(1-n*r),s=255*o*(1-n*(1-r));switch(o*=255,i){case 0:return[o,s,a];case 1:return[c,o,a];case 2:return[a,o,s];case 3:return[a,c,o];case 4:return[s,a,o];case 5:return[o,a,c]}},a.hsv.hsl=function(e){var t,n,o,i=e[0],r=e[1]/100,a=e[2]/100,c=Math.max(a,.01);return o=(2-r)*a,n=r*c,[i,100*(n=(n/=(t=(2-r)*c)<=1?t:2-t)||0),100*(o/=2)]},a.hwb.rgb=function(e){var t,n,o,i,r,a,c,s=e[0]/360,l=e[1]/100,d=e[2]/100,m=l+d;switch(m>1&&(l/=m,d/=m),o=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(o=1-o),i=l+o*((n=1-d)-l),t){default:case 6:case 0:r=n,a=i,c=l;break;case 1:r=i,a=n,c=l;break;case 2:r=l,a=n,c=i;break;case 3:r=l,a=i,c=n;break;case 4:r=i,a=l,c=n;break;case 5:r=n,a=l,c=i}return[255*r,255*a,255*c]},a.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,o=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,o*(1-i)+i))]},a.xyz.rgb=function(e){var t,n,o,i=e[0]/100,r=e[1]/100,a=e[2]/100;return n=-.9689*i+1.8758*r+.0415*a,o=.0557*i+-.204*r+1.057*a,t=(t=3.2406*i+-1.5372*r+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(o=Math.min(Math.max(0,o),1))]},a.xyz.lab=function(e){var t=e[0],n=e[1],o=e[2];return n/=100,o/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},a.lab.xyz=function(e){var t,n,o,i=e[0];t=e[1]/500+(n=(i+16)/116),o=n-e[2]/200;var r=Math.pow(n,3),a=Math.pow(t,3),c=Math.pow(o,3);return n=r>.008856?r:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,[t*=95.047,n*=100,o*=108.883]},a.lab.lch=function(e){var t,n=e[0],o=e[1],i=e[2];return(t=360*Math.atan2(i,o)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(o*o+i*i),t]},a.lch.lab=function(e){var t,n=e[0],o=e[1];return t=e[2]/360*2*Math.PI,[n,o*Math.cos(t),o*Math.sin(t)]},a.rgb.ansi16=function(e){var t=e[0],n=e[1],o=e[2],i=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];if(0===(i=Math.round(i/50)))return 30;var r=30+(Math.round(o/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===i&&(r+=60),r},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){var t=e[0],n=e[1],o=e[2];return t===n&&n===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},a.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},a.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var o=parseInt(n,16);return[o>>16&255,o>>8&255,255&o]},a.rgb.hcg=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255,r=Math.max(Math.max(n,o),i),a=Math.min(Math.min(n,o),i),c=r-a;return t=c<=0?0:r===n?(o-i)/c%6:r===o?2+(i-n)/c:4+(n-o)/c+4,t/=6,[360*(t%=1),100*c,100*(c<1?a/(1-c):0)]},a.hsl.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=1,i=0;return(o=n<.5?2*t*n:2*t*(1-n))<1&&(i=(n-.5*o)/(1-o)),[e[0],100*o,100*i]},a.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=t*n,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,o=e[2]/100;if(0===n)return[255*o,255*o,255*o];var i,r=[0,0,0],a=t%1*6,c=a%1,s=1-c;switch(Math.floor(a)){case 0:r[0]=1,r[1]=c,r[2]=0;break;case 1:r[0]=s,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=c;break;case 3:r[0]=0,r[1]=s,r[2]=1;break;case 4:r[0]=c,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=s}return i=(1-n)*o,[255*(n*r[0]+i),255*(n*r[1]+i),255*(n*r[2]+i)]},a.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),o=0;return n>0&&(o=t/n),[e[0],100*o,100*n]},a.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,o=0;return n>0&&n<.5?o=t/(2*n):n>=.5&&n<1&&(o=t/(2*(1-n))),[e[0],100*o,100*n]},a.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,o=n-t,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]},a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},8358:(e,t,n)=>{var o=n(4589),i=n(3314),r={};Object.keys(o).forEach((function(e){r[e]={},Object.defineProperty(r[e],"channels",{value:o[e].channels}),Object.defineProperty(r[e],"labels",{value:o[e].labels});var t=i(e);Object.keys(t).forEach((function(n){var o=t[n];r[e][n]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var o=n.length,i=0;i1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(o)}))})),e.exports=r},3314:(e,t,n)=>{var o=n(4589);function i(e){var t=function(){for(var e={},t=Object.keys(o),n=t.length,i=0;i{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9419:e=>{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},2489:(e,t,n)=>{var o=n(9419),i=n(7933),r=Object.hasOwnProperty,a=Object.create(null);for(var c in o)r.call(o,c)&&(a[o[c]]=c);var s=e.exports={to:{},get:{}};function l(e,t,n){return Math.min(Math.max(t,e),n)}function d(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}s.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=s.get.hsl(e),n="hsl";break;case"hwb":t=s.get.hwb(e),n="hwb";break;default:t=s.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},s.get.rgb=function(e){if(!e)return null;var t,n,i,a=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=t[2],t=t[1],n=0;n<3;n++){var c=2*n;a[n]=parseInt(t.slice(c,c+2),16)}i&&(a[3]=parseInt(i,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=(t=t[1])[3],n=0;n<3;n++)a[n]=parseInt(t[n]+t[n],16);i&&(a[3]=parseInt(i+i,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)a[n]=parseInt(t[n+1],0);t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:r.call(o,t[1])?((a=o[t[1]])[3]=1,a):null:null;for(n=0;n<3;n++)a[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}for(n=0;n<3;n++)a[n]=l(a[n],0,255);return a[3]=l(a[3],0,1),a},s.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.to.hex=function(){var e=i(arguments);return"#"+d(e[0])+d(e[1])+d(e[2])+(e[3]<1?d(Math.round(255*e[3])):"")},s.to.rgb=function(){var e=i(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},s.to.rgb.percent=function(){var e=i(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),o=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+o+"%)":"rgba("+t+"%, "+n+"%, "+o+"%, "+e[3]+")"},s.to.hsl=function(){var e=i(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},s.to.hwb=function(){var e=i(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},s.to.keyword=function(e){return a[e.slice(0,3)]}},4654:(e,t,n)=>{"use strict";var o=n(2489),i=n(8358),r=[].slice,a=["keyword","gray","hex"],c={};Object.keys(i).forEach((function(e){c[r.call(i[e].labels).sort().join("")]=e}));var s={};function l(e,t){if(!(this instanceof l))return new l(e,t);if(t&&t in a&&(t=null),t&&!(t in i))throw new Error("Unknown model: "+t);var n,d;if(null==e)// eslint-disable-line no-eq-null,eqeqeq +e.__vue__??e.parentElement.__vue__??e.children[0].__vue__??e.__vueParentComponent},4732:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ScopedConsoleCallHook:()=>m,ScopedConsoleCreateHook:()=>d,logError:()=>a,randomScopedConsole:()=>u,useScopedConsole:()=>f});var o=n(68),i=n(8612),r=n(5067);const a=async(e,t)=>{let o;"string"==typeof e?(o=e,console.error(o)):(o=(0,r.getGeneralSettings)().devMode?e.stack:e.message,console.error(e));const{Toast:i}=await Promise.resolve().then(n.bind(n,3823));i.error(o,"错误",t)},c=Symbol("ScopedConsole"),s=Symbol("NamePatch"),l={default:"#78909C",warn:"#CC7A00",error:"#BF6060",group:"#9575CD"},d="scopedConsole.create",m="scopedConsole.call",f=e=>{const{before:t,after:n}=(0,o.getHook)(d),{name:i,color:a=l.default,console:f=window.console}="string"==typeof e?{name:e}:e,u={name:i,color:a,console:f};t(e,f);let p=0;const b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.color;const i=e[c],r=(i?t.color:n)??l.default,a="#fff",d=i?["%c "]:["%c"],f={badgeNames:[...i?.badgeNames??[],...d,`%c${t.name}`],badgeValues:[...i?.badgeValues??[],"",`background-color: ${r}; color: ${a}; padding: 2px 4px; border-radius: 4px;`],original:i?.original??e},u=f.original,b=function(){for(var e=arguments.length,t=new Array(e),n=0;n2&&void 0!==arguments[2]?arguments[2]:t.color,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e=>e;const i=b(e,t,n),r=function(){for(var e=arguments.length,t=new Array(e),n=0;n{g[e][s]||(g[e][s]=e)}));const F={...unsafeWindow.console,...f};return F.log=b(f.log,u),F.info=b(f.info,u),F.warn=b(f.warn,u,l.warn),F.error=b(f.error,u,l.error),F.group=h(f.group,u,l.group,(e=>e+1)),F.groupCollapsed=h(f.groupCollapsed,u,l.group,(e=>e+1)),F.groupEnd=h(f.groupEnd,u,l.group,(e=>e-1)),F.debug=(()=>{const e=b(f.debug,u);return function(){if((0,r.getGeneralSettings)().devMode){for(var t=arguments.length,n=new Array(t),o=0;of({...e,name:(0,i.getRandomId)()})},8014:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ascendingBigIntSort:()=>a,ascendingSort:()=>i,ascendingStringSort:()=>r,descendingBigIntSort:()=>l,descendingSort:()=>c,descendingStringSort:()=>s});const o=e=>e,i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t)-e(n)},r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t).localeCompare(e(n))},a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>{const o=BigInt(e(t)),i=BigInt(e(n));return o===i?0:o>i?1:-1}},c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n)-e(t)},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n).localeCompare(e(t))},l=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>-a(e)(t,n)}},6571:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatTitle:()=>s,getFriendlyTitle:()=>l});var o=n(8612),i=n(5067),r=n(9083),a=n(8014);const c=e=>{let t=0,n=0;const o=[];return e.split("").forEach(((i,r)=>{"["===i&&(0===n?(o.push(e.substring(t,r)),t=r):n++),"]"===i&&(0===n?(o.push(e.substring(t,r+1)),t=r+1):n--)})),t""!==e))},s=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=new Date,s=()=>document.title.replace(/第[0-9]*[零一二三四五六七八九十百千]*[集话]-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/:([^:]+?)_.+?_bilibili_哔哩哔哩$/,"").replace(/_哔哩哔哩_bilibili$/,"").replace(/ - 哔哩哔哩$/,"").replace(/_哔哩哔哩 \(゜-゜\)つロ 干杯~-bilibili$/,"").replace(/(.*?) - (.*?) - 哔哩哔哩直播,二次元弹幕直播平台$/,"$1").trim(),l={title:(()=>{const e=(0,o.dq)(".video-info-container .video-title");if(null!==e)return e.getAttribute("title");const t=(0,o.dq)('[class*="mediainfo_mediaTitle"]');if(null!==t)return t.getAttribute("title");const n=(0,o.dq)(".header-info-ctnr .live-title .text");return null!==n?n.getAttribute("title"):s()})(),ep:(()=>{if(!t)return;const e=(0,o.dq)("#eplist_module li.cursor .ep-title");if(null!==e)return e.innerText;const n=(0,o.dq)("#multi_page .cur-list>ul li.on a, .video-episode-card__info-playing .video-episode-card__info-title");if(null!==n)return n.getAttribute("title");const i=(0,o.dq)(".multip-list-item.multip-list-item-active");return null!==i?i.getAttribute("title"):void 0})(),aid:unsafeWindow.aid,bvid:unsafeWindow.bvid,cid:unsafeWindow.cid,lid:document.URL.replace(/https:\/\/live\.bilibili\.com\/(blanc\/)?([\d]+)/,"$2"),y:i.getFullYear().toString(),M:(i.getMonth()+1).toString().padStart(2,"0"),d:i.getDate().toString().padStart(2,"0"),h:i.getHours().toString().padStart(2,"0"),m:i.getMinutes().toString().padStart(2,"0"),s:i.getSeconds().toString().padStart(2,"0"),ms:i.getMilliseconds().toString().substring(0,3)},d={...l,...n},m=c(e),f=Object.entries(d).sort((0,a.descendingSort)((e=>{let[t]=e;return t.length}))),u=m.map((e=>{if(!e.startsWith("[")||!e.endsWith("]"))return e;for(const[t,n]of f){const o=new RegExp(`^\\[([^\\[\\]]*?)${t}([^\\[\\]]*?)\\]$`),i=e.match(o);if(i&&Boolean(n))return`${i[1]??""}${n}${i[2]??""}`}return""})),p=u.join("");return(0,r.formatFilename)(p," ")},l=function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s((0,i.getGeneralSettings)().filenameFormat,e,t)}},146:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allVideoUrls:()=>u,bangumiUrls:()=>d,cheeseUrls:()=>m,columnUrls:()=>F,favoriteListUrls:()=>r,feedsUrls:()=>g,feedsUrlsWithoutDetail:()=>h,festivalUrls:()=>s,liveUrls:()=>b,mainSiteUrls:()=>p,matchCurrentPage:()=>w,mediaListUrls:()=>c,playerUrls:()=>v,upListUrls:()=>a,videoAndBangumiUrls:()=>f,videoUrls:()=>l,watchlaterUrls:()=>i});var o=n(8612);const i=["//www.bilibili.com/medialist/play/watchlater","//www.bilibili.com/list/watchlater"],r=["//www.bilibili.com/medialist/play/ml","//www.bilibili.com/list/ml"],a=[/\/\/www\.bilibili\.com\/medialist\/play\/\d+/,/\/\/www\.bilibili\.com\/list\/\d+/],c=[...i,...r,...a,/\/\/www\.bilibili\.com\/list\//],s=[/\/\/www\.bilibili\.com\/festival\//],l=["//www.bilibili.com/video/",...s,...c],d=["//www.bilibili.com/bangumi/play/"],m=["//www.bilibili.com/cheese/"],f=[...l,...d],u=[...f,...m],p=["https://www.bilibili.com/v/",/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/([^\/]+)\.html$/,/^https:\/\/www\.bilibili\.com\/watchlater\/#\/list$/,"https://www.bilibili.com/account/"],b=[/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],h=[/^https:\/\/t\.bilibili\.com\/$/,/^https:\/\/space\.bilibili\.com\//,/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],g=[...h,/^https:\/\/t\.bilibili\.com\//,/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/],F=[/^https:\/\/www\.bilibili\.com\/read\/cv/],v=["//player.bilibili.com","//www.bilibili.com/html/player.html",...l,...d,...m],w=function(){for(var e=arguments.length,t=new Array(e),n=0;nArray.isArray(e)?e.some((e=>(0,o.matchUrlPattern)(e))):(0,o.matchUrlPattern)(e)))}},9219:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CompareResult:()=>a,Version:()=>c,isFeatureAcceptable:()=>s});var o=n(1841),i=n(2046);function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let a=function(e){return e[e.Less=-1]="Less",e[e.Equal=0]="Equal",e[e.Greater=1]="Greater",e[e.Incomparable=NaN]="Incomparable",e}({});class c{constructor(e){if(this.versionString=e,r(this,"parts",void 0),!/^[\d\.]+$/.test(e))throw new Error("Invalid version string");this.parts=e.split(".").map((e=>parseInt(e)))}compareTo(e){for(let t=0;te.parts[t]?a.Greater:a.Less}return this.parts.length!==e.parts.length?a.Less:a.Equal}greaterThan(e){return this.compareTo(e)===a.Greater}lessThan(e){return this.compareTo(e)===a.Less}equals(e){return this.compareTo(e)===a.Equal}}const s=async e=>{try{if("string"==typeof e&&(e=(0,o.loadFeatureCode)(e)),null==e)return!1;const{version:t}=i.meta.compilationInfo,{coreVersion:n}=e;if(!n||!t)return!0;const r=new c(t),a=new c(n);return r.equals(a)||r.greaterThan(a)}catch(t){return console.warn("[isFeatureAcceptable] check failed, feature =",e),!0}}},4909:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addData:()=>r,getData:()=>a,registerAndGetData:()=>c,registerData:()=>i});const o=new Map,i=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i{if(o.has(e)){const{providers:n,loaded:i,data:r}=o.get(e);i?t(...r):n.push(t)}else o.set(e,{registered:!1,data:[],loaded:!1,providers:[t]})},a=e=>{if(o.has(e)){const t=o.get(e),{data:n,registered:i,loaded:r,providers:a}=t;if(i)return r||(a.forEach((e=>e(...n))),t.providers=[],t.loaded=!0),n}return[]},c=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o{"use strict";n.r(t),n.d(t,{addHook:()=>i,getHook:()=>r});const o=new Map,i=(e,t)=>{if(o.has(e)){const{providers:n}=o.get(e);n.push(t)}else o.set(e,{providers:[t]})},r=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;ie.before?.(...n.concat(t)))))},after:async function(){for(var e=arguments.length,t=new Array(e),o=0;oe.after?.(...n.concat(t)))))}}}return{before:async()=>Promise.all([]),after:async()=>Promise.all([])}}},8692:(e,t,n)=>{"use strict";n.r(t),n.d(t,{plugin:()=>r});const o=async(e,t,o)=>{const i={name:t,icon:"mdi-content-copy",description:`复制${e}`,indexer:o,action:async()=>{if(i.name===t){await navigator.clipboard.writeText(t);const{Toast:o}=await Promise.resolve().then(n.bind(n,3823));o.success("复制成功",`复制${e}`,1500)}}};return[i]},i=[{pattern:/^av([\d]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,5267)),i=await t(`https://api.bilibili.com/x/web-interface/view?aid=${e[1]}`),r=lodash.get(i,"data",{}),{bvid:a,title:c}=r,s=`av${e[1]}`;return{name:c||s,description:"av号跳转",indexer:s,link:`https://www.bilibili.com/av${e[1]}`,extraActions:a?await o("BV号",a,s):[]}}},{pattern:/^bv([\da-zA-Z]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,5267)),i=await t(`https://api.bilibili.com/x/web-interface/view?bvid=${e[1]}`),r=lodash.get(i,"data",{}),{aid:a,title:c}=r,s=`BV${e[1]}`;return{name:c||s,description:"BV号跳转",indexer:s,link:`https://www.bilibili.com/BV${e[1]}`,extraActions:a?await o("av号",`av${a}`,s):[]}}}],r={name:"launchBar.actions.IDSearch",displayName:"搜索栏 - 视频跳转",async setup(){const{addData:e}=await Promise.resolve().then(n.bind(n,4909)),{LaunchBarActionProviders:t}=await Promise.resolve().then(n.bind(n,7801));e(t,(e=>{e.push({name:"IDSearchProvider",getActions:async e=>{const t=[];for(const n of i){const o=e.match(n.pattern);if(o){const{name:e,description:i="",indexer:r,link:a,extraActions:c=[]}=await n.getActions(o);t.push({name:e,icon:"mdi-open-in-new",indexer:r,description:i,action:()=>{window.open(a,"_blank")},order:0},...c)}}return t}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}},9094:(e,t,n)=>{"use strict";n.r(t),n.d(t,{extractPluginFromComponent:()=>d,installPlugin:()=>s,loadAllPlugins:()=>f,loadPlugin:()=>m,plugins:()=>c,pluginsMap:()=>a,uninstallPlugin:()=>l});var o=n(8612),i=n(4909),r=n(68);const a={},c=lodash.once((()=>{const e=n(4353);return e.keys().map((t=>{const n=e(t);if("plugin"in n){const e=n.plugin;return a[e.name]=e,e}})).filter((e=>void 0!==e))}))(),s=async e=>{const{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,1841));let o;try{o=t(e)}catch(e){throw new Error("无效的插件代码",e)}const{settings:i}=await Promise.resolve().then(n.bind(n,5067)),r=i.userPlugins[o.name];if(r)return r.code=e,r.name=o.name,r.displayName=o.displayName||o.name,{metadata:o,message:`已更新插件'${o.displayName}', 刷新后生效`};const a={code:e,displayName:o.name,...o};return i.userPlugins[o.name]=a,c.push(a),{metadata:o,message:`已安装插件'${o.displayName||o.name}', 刷新后生效`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,5067)),i=Object.entries(t.userPlugins).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的插件`);const[r,a]=i;return delete t.userPlugins[r],(0,o.deleteValue)(c,(e=>e.name===r)),{metadata:a,message:`已卸载插件'${a.displayName}', 刷新后生效`}},d=e=>e.plugin?{name:`${e.name}.plugin`,displayName:`${e.displayName} - 附带插件`,...e.plugin}:null,m=async e=>{if(e.setup){const{pluginLoadTrace:t}=await Promise.resolve().then(n.bind(n,1926));await t(e);const{coreApis:o}=await Promise.resolve().then(n.bind(n,4435));return e.setup({coreApis:o,addData:i.addData,addHook:r.addHook,registerData:i.registerData,registerAndGetData:i.registerAndGetData,getHook:r.getHook})}return null},f=async e=>{const{settings:t,getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,5067)),{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,5705));for(const t of e){const e=d(t);e&&c.push(e)}for(const[e,n]of Object.entries(t.userPlugins)){const{code:t}=n;let o;try{o=i(t)}catch(t){console.error("从代码加载用户插件失败。代码可能包含语法错误或执行时产生了异常",{pluginName:e,error:t});continue}c.push(o)}return Promise.allSettled(c.map(m)).then((async()=>{if(o().devMode){const{pluginLoadTime:e,pluginResolveTime:t}=await Promise.resolve().then(n.bind(n,1926)),{logStats:o}=await Promise.resolve().then(n.bind(n,5043));o("plugins block",e),o("plugins resolve",t)}}))}},473:(e,t,n)=>{"use strict";n.r(t),n.d(t,{UserStyleMode:()=>r,installStyle:()=>c,styles:()=>a,uninstallStyle:()=>s});var o=n(5067),i=n(8612);let r=function(e){return e.Default="default",e.Instant="instant",e.Important="important",e}({});const a=Object.values(o.settings.userStyles),c=async e=>{try{let t;const{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,1841));t="string"==typeof e?i(e):e;const{name:c,style:s,displayName:l,mode:d}=t,{removeStyle:m,addImportantStyle:f,addStyle:u}=await Promise.resolve().then(n.bind(n,4460)),p=o.settings.userStyles[c];if(p)Object.assign(p,t),m(c);else{const e={displayName:c,mode:r.Default,...t};o.settings.userStyles[c]=e,a.push(e)}return d===r.Important?f(s,c):u(s,c),{metadata:t,message:`已安装样式'${l||c}'`}}catch(e){throw new Error("无效的样式代码",{cause:e})}},s=async e=>{const t=Object.entries(o.settings.userStyles).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!t)throw new Error(`没有找到与名称'${e}'相关联的样式`);const{removeStyle:r}=await Promise.resolve().then(n.bind(n,4460)),[c,{displayName:s}]=t;return r(c),delete o.settings.userStyles[c],(0,i.deleteValue)(a,(e=>e.name===c)),{metadata:t,message:`已卸载样式'${s}'`}}},2570:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AsyncButton:()=>s,CheckBox:()=>h,ColorPicker:()=>E,DefaultWidget:()=>mt,DpiImage:()=>P,ImagePicker:()=>R,ImageViewer:()=>Y,MiniToast:()=>ft.Z,ProgressBar:()=>ne,ProgressRing:()=>se,RadioButton:()=>ue,RangeInput:()=>we,ScrollTrigger:()=>Be,SwitchBox:()=>De.Z,TabControl:()=>Oe,TextArea:()=>qe,TextBox:()=>Ze.default,VButton:()=>r.default,VDropdown:()=>Xe,VEmpty:()=>ot,VIcon:()=>o.default,VLoading:()=>it.default,VPopup:()=>He.default,VSlider:()=>rt.default,showImage:()=>K});var o=n(714),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({attrs:{disabled:e.disabled||e.internalDisabled},on:{click:e.onClick}},"VButton",e.$attrs,!1),e.listeners),[e._t("default",(function(){return[e._v("Button")]}))],2)};i._withStripped=!0;var r=n(1589);const a=Vue.extend({components:{VButton:r.default},props:{disabled:{type:Boolean,default:!1}},data:()=>({internalDisabled:!1}),computed:{listeners(){return lodash.omit(this.$listeners,"click")},onClick(){var e=this;return async function(){try{e.internalDisabled=!0;for(var t=arguments.length,n=new Array(t),o=0;oPromise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,714)).then((e=>e.default))},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},iconPosition:{type:String,default:"left"},checkedIcon:{type:String,default:"mdi-checkbox-marked-circle"},notCheckedIcon:{type:String,default:"mdi-checkbox-blank-circle-outline"}}});var m=n(8332),f=n.n(m),u=n(2141),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,c.Z)(d,l,[],!1,null,"07bbf374",null).exports;var g=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-color-picker"},[t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.popupOpened=!e.popupOpened,expression:"() => (popupOpened = !popupOpened)"}],ref:"button",staticClass:"selected-color",style:{backgroundColor:e.color,width:e.size+"px",height:e.size+"px"},attrs:{role:"button",tabindex:"0"}}),e._v(" "),t("VPopup",{staticClass:"picker",class:{compact:e.compact},style:{"--offset":e.popupOffset+"px"},attrs:{"esc-close":"","auto-close":!1,"trigger-element":e.$refs.button},model:{value:e.popupOpened,callback:function(t){e.popupOpened=t},expression:"popupOpened"}},[t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("预设颜色")]),e._v(" "),t("div",{staticClass:"colors"},e._l(e.colors,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectHexColor(n),expression:"() => selectHexColor(c)"}],key:n,staticClass:"color",style:{backgroundColor:n},attrs:{role:"radio",tabindex:e.popupOpened?0:-1}})})),0)]),e._v(" "),t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("调色")]),e._v(" "),t("div",{staticClass:"bars"},[e.isRGB?[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("R")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.red},on:{change:function(t){return e.wrapper.change("red",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.redGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2466330035)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.red)},on:{change:function(t){return e.wrapper.change("red",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("G")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.green},on:{change:function(t){return e.wrapper.change("green",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.greenGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2962781435)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.green)},on:{change:function(t){return e.wrapper.change("green",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.blue},on:{change:function(t){return e.wrapper.change("blue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.blueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,660815582)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.blue)},on:{change:function(t){return e.wrapper.change("blue",t)}}})],1)]:[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("H")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:359.9,value:e.wrapper.hue},on:{change:function(t){return e.wrapper.change("hue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.hueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"4","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.hue)},on:{change:function(t){return e.wrapper.change("hue",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("S")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.saturation},on:{change:function(t){return e.wrapper.change("saturationv",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.saturationGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.saturation)},on:{change:function(t){return e.wrapper.change("saturationv",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.brightness},on:{change:function(t){return e.wrapper.change("value",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.brightnessGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.brightness)},on:{change:function(t){return e.wrapper.change("value",t)}}})],1)]],2)]),e._v(" "),t("div",{staticClass:"info item-group"},[t("VButton",{staticClass:"toggle-mode",attrs:{disabled:!e.popupOpened,type:"transparent",title:e.isRGB?"切换至HSB":"切换至RGB"},on:{click:function(t){e.isRGB=!e.isRGB}}},[e._v("\n "+e._s(e.isRGB?"切换至HSB":"切换至RGB")+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"color-preview",style:{backgroundColor:e.wrapper.hex}}),e._v(" "),t("TextBox",{staticClass:"hex",attrs:{disabled:!e.popupOpened,text:e.wrapper.hex,"change-on-blur":""},on:{change:function(t){return e.selectHexColor(t)}}})],1),e._v(" "),t("div",{staticClass:"operations item-group",on:{click:function(t){e.popupOpened=!e.popupOpened}}},[t("VButton",{staticClass:"cancel",attrs:{disabled:!e.popupOpened},on:{click:function(t){return e.reset()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{staticClass:"ok",attrs:{disabled:!e.popupOpened,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1)])],1)};g._withStripped=!0;var F=n(4654),v=n.n(F);const w=JSON.parse('["#E57373","#F06292","#BA68C8","#9575CD","#7986CB","#2196F3","#00A0D8","#00ACC1","#26A69A","#81C784","#9CCC65","#FF9800","#FF7043","#A1887F","#757575","#78909C"]'),y=e=>{let t=new(v())(e);const n={get color(){return t},set color(e){t=e,this.updateProps()},change(e,n){"string"==typeof n&&(n=parseFloat(n),Number.isNaN(n))||(this.color=t[e](n))},updateProps(){this.red=t.red(),this.green=t.green(),this.blue=t.blue(),this.hue=t.hue(),this.saturation=t.saturationv(),this.brightness=t.value(),this.hex=t.hex(),this.hueGradient=`linear-gradient(to right, ${t.hue(0).hex()}, ${t.hue(60).hex()}, ${t.hue(120).hex()}, ${t.hue(180).hex()}, ${t.hue(240).hex()}, ${t.hue(300).hex()}, ${t.hue(0).hex()})`,this.saturationGradient=`linear-gradient(to right, ${t.saturationv(0).hex()}, ${t.saturationv(100).hex()})`,this.brightnessGradient=`linear-gradient(to right, ${t.value(0).hex()}, ${t.value(100).hex()})`,this.redGradient=`linear-gradient(to right, ${t.red(0).hex()}, ${t.red(255).hex()})`,this.greenGradient=`linear-gradient(to right, ${t.green(0).hex()}, ${t.green(255).hex()})`,this.blueGradient=`linear-gradient(to right, ${t.blue(0).hex()}, ${t.blue(255).hex()})`}};return n.updateProps(),n},x=Vue.extend({name:"ColorPicker",components:{TextBox:()=>Promise.resolve().then(n.bind(n,2827)).then((e=>e.default)),VSlider:()=>Promise.resolve().then(n.bind(n,8308)).then((e=>e.default)),VButton:()=>Promise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,9397)).then((e=>e.default))},model:{prop:"color",event:"change"},props:{color:{type:String,default:"#000000",required:!0},size:{type:Number,default:24,required:!1},compact:{type:Boolean,default:!1},popupOffset:{type:Number,default:0}},data(){return{popupOpened:!1,wrapper:y(this.color),colors:w,isRGB:!1}},watch:{popupOpened(e){e&&(document.body.addEventListener("mousedown",(e=>{this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("mouseup",(()=>{this.popupOpened=!1}),{once:!0})})),document.body.addEventListener("touchstart",(e=>{1!==e.touches.length||this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("touchend",(()=>{this.popupOpened=!1}),{once:!0})})))}},methods:{ok(){this.$emit("change",this.wrapper.hex)},reset(){this.wrapper.color=new(v())(this.color)},selectHexColor(e){try{const t=new(v())(e,"hex");this.wrapper.color=t}catch(e){}},fixed:e=>(Math.round(10*e)/10).toString(),int:e=>Math.round(e).toString()}});var k=n(7521),C=n.n(k),A={insert:"head",singleton:!1};f()(C(),A);C().locals;const E=(0,c.Z)(x,g,[],!1,null,"5b939efc",null).exports;var B=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("img",e._b({class:{placeholder:e.isPlaceholderActive},attrs:{width:e.width,height:e.height,srcset:e.srcset,src:e.actualSrc}},"img",e.$attrs,!1))};B._withStripped=!0;var D=n(8612),I=n(4021);const z=Vue.extend({name:"DpiImage",props:{size:{type:[Object,Number],required:!0},src:{type:String,required:!0},intersection:{type:Object,default:()=>({})},placeholderImage:{type:Boolean,default:!1}},data:()=>({srcset:null,actualSrc:I.EmptyImageUrl,isPlaceholderActive:!1}),computed:{width(){return"object"==typeof this.size&&"width"in this.size?this.size.width:"number"==typeof this.size?this.size:null},height(){return"object"==typeof this.size&&"height"in this.size?this.size.height:"number"==typeof this.size?this.size:null}},watch:{size(){this.sourceChange()},src(){this.sourceChange()}},mounted(){const e={rootMargin:"200px",...this.intersection},t=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(this.calcSrc(),t.disconnect())}))}),e);t.observe(this.$el)},methods:{sourceChange(){this.actualSrc!==I.EmptyImageUrl&&null!==this.srcset&&this.calcSrc()},calcSrc(){const e=!this.src||!this.size;if(this.isPlaceholderActive=e&&this.placeholderImage,e)return this.srcset=null,void(this.placeholderImage?this.actualSrc="https://s1.hdslb.com/bfs/static/blive/live-web-center/static/img/no-cover.1ebe4d5.jpg":this.actualSrc=I.EmptyImageUrl);let{src:t}=this;if(t.startsWith("http:")&&(t=t.replace("http:","https:")),t.includes("//static.hdslb.com/images/member/noface.gif"))return this.srcset=t,void(this.actualSrc=t);this.srcset=(0,D.getDpiSourceSet)(t,this.size),this.actualSrc=t}}}),S=z;const P=(0,c.Z)(S,B,[],!1,null,null,null).exports;var M=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-image-picker"},[t("VButton",{ref:"pickButton",staticClass:"pick-button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[e._t("text",(function(){return[e._v(" 选择图片 ")]}))],2),e._v(" "),t("VPopup",{staticClass:"popup",attrs:{"trigger-element":e.$refs.pickButton},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.cancel()}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("transition-group",{staticClass:"images",attrs:{name:"image-list",tag:"div",tabindex:"-1"}},e._l(e.images,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectImage(n),expression:"() => selectImage(i)"}],key:n.name,staticClass:"image",class:{selected:n.name===e.selectedImage.name},attrs:{title:n.name,tabindex:e.popupOpen?0:-1}},[t("img",{attrs:{width:"64",height:"64",src:n.url}})])})),0),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:0===e.images.length,expression:"images.length === 0"}],staticClass:"empty-tip"},[e._v("空空如也哦 = ̄ω ̄=")]),e._v(" "),t("div",{staticClass:"operations"},[t("VPopup",{staticClass:"add-image-popup",attrs:{tabindex:"-1",lazy:!1,"trigger-element":e.$refs.addButton},model:{value:e.addImagePopupOpen,callback:function(t){e.addImagePopupOpen=t},expression:"addImagePopupOpen"}},[t("div",{staticClass:"add-image-row"},[e._v("\n 名称:\n "),t("TextBox",{ref:"addImageInput",attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.name,callback:function(t){e.$set(e.newImage,"name",t)},expression:"newImage.name"}})],1),e._v(" "),t("div",{staticClass:"add-image-row"},[e._v("\n 链接:\n "),t("TextBox",{attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.url,callback:function(t){e.$set(e.newImage,"url",t)},expression:"newImage.url"}})],1),e._v(" "),t("div",{staticClass:"add-image-row buttons"},[t("VButton",{attrs:{disabled:!e.addImagePopupOpen},on:{click:function(t){e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 取消\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.newImage.url||!e.newImage.name,type:"primary"},on:{click:function(t){e.addImage(e.newImage),e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 确定\n ")])],1)]),e._v(" "),t("VButton",{staticClass:"clear-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.clearImage()}}},[e._v("\n 清除选择\n ")]),e._v(" "),t("VButton",{ref:"addButton",staticClass:"add-image",attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.openAddImagePopup()}}},[e._v("\n 添加\n ")]),e._v(" "),t("VButton",{staticClass:"edit-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.editImage()}}},[e._v("\n 编辑\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.selectedImage.name},on:{click:function(t){e.removeImage(e.selectedImage),e.clearImage()}}},[e._v("\n 删除\n ")])],1),e._v(" "),t("div",{staticClass:"operations"},[t("VButton",{attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.cancel()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.popupOpen,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1),e._v(" "),e.addImagePopupOpen?t("div",{staticClass:"mask"}):e._e()],1)],1)};M._withStripped=!0;const O=[],V=Vue.extend({name:"ImagePicker",components:{VButton:()=>Promise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,9397)).then((e=>e.default)),TextBox:()=>Promise.resolve().then(n.bind(n,2827)).then((e=>e.default))},model:{prop:"image",event:"change"},props:{image:{type:Object,required:!0}},data:()=>({images:O,popupOpen:!1,addImagePopupOpen:!1,selectedImage:{name:"",url:""},newImage:{name:"",url:""}}),methods:{addImage:e=>{if(!e.name||!e.url)return;const t=O.find((t=>t.name===e.name));t?t.url=e.url:O.unshift(e)},removeImage:e=>{const t="string"==typeof e?e:e.name,n=O.findIndex((e=>e.name===t));-1!==n&&O.splice(n,1)},ok(){this.$emit("change",this.selectedImage),this.popupOpen=!1},cancel(){this.selectedImage=this.image,this.popupOpen=!1},selectImage(e){this.selectedImage.name===e.name?this.selectedImage={name:"",url:""}:this.selectedImage=e},clearImage(){this.selectedImage={name:"",url:""}},clearNewImage(){this.newImage={name:"",url:""}},editImage(){this.newImage=this.selectedImage,this.openAddImagePopup()},async openAddImagePopup(){this.addImagePopupOpen=!this.addImagePopupOpen,await this.$nextTick(),this.$refs.addImageInput.$refs.input.focus()}}});var T=n(1662),L=n.n(T),j={insert:"head",singleton:!1};f()(L(),j);L().locals;const R=(0,c.Z)(V,M,[],!1,null,"7b32c90b",null).exports;var N=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"image-viewer-container",class:{open:e.open},on:{click:e.detectOutside}},[t("div",{ref:"viewer",staticClass:"image-viewer"},[t("div",{staticClass:"image-container"},[e.image?t("img",{staticClass:"image",attrs:{src:e.image}}):e._e()]),e._v(" "),t("div",{staticClass:"close image-viewer-icon",attrs:{title:"关闭"},on:{click:function(t){e.open=!1}}},[t("VIcon",{attrs:{size:48,icon:"mdi-close"}})],1),e._v(" "),t("a",{staticClass:"copy-link image-viewer-icon",attrs:{target:"_blank",title:"复制原链接"},on:{click:function(t){return e.copyLink()}}},[e.copiedTimer?t("VIcon",{attrs:{size:48,icon:"mdi-check"}}):t("VIcon",{attrs:{size:48,icon:"mdi-link"}})],1),e._v(" "),t("a",{staticClass:"new-tab image-viewer-icon",attrs:{target:"_blank",title:"在新标签页打开"},on:{click:function(t){return e.newTab()}}},[t("VIcon",{attrs:{size:48,icon:"mdi-open-in-new"}})],1),e._v(" "),e.blobUrl?t("a",{staticClass:"download image-viewer-icon",attrs:{target:"_blank",title:"下载",href:e.blobUrl,download:e.filename}},[t("VIcon",{attrs:{size:48,icon:"mdi-download"}})],1):e._e()])])};N._withStripped=!0;var q=n(5067),Z=n(6571),U=n(5267);const H=Vue.extend({components:{VIcon:o.default},props:{image:{type:String,required:!0}},data:()=>({filename:"",open:!1,blobUrl:"",keyHandler:null,copiedTimer:0}),watch:{async image(e){this.blobUrl&&URL.revokeObjectURL(this.blobUrl),e||(this.blobUrl="");const t=await(0,U.getBlob)(e);this.blobUrl=URL.createObjectURL(t),this.updateFilename()}},mounted(){this.keyHandler=e=>{"Escape"===e.key&&(this.open=!1)},document.addEventListener("keydown",this.keyHandler),(0,q.addComponentListener)("settingsPanel.filenameFormat",(()=>{this.updateFilename()}),!0)},beforeDestroy(){document.removeEventListener("keydown",this.keyHandler)},methods:{async copyLink(){await navigator.clipboard.writeText(this.image),this.copiedTimer&&window.clearTimeout(this.copiedTimer),this.copiedTimer=window.setTimeout((()=>{this.copiedTimer=0}),2e3)},newTab(){window.open(this.image,"_blank")},detectOutside(e){const t=this.$el,{viewer:n}=this.$refs;e.target!==t&&e.target!==n||(this.open=!1)},updateFilename(){const e=this.image;this.filename=e?(0,Z.getFriendlyTitle)(document.URL.includes("/www.bilibili.com/bangumi/"))+e.substring(e.lastIndexOf(".")):""}}});var W=n(1635),G=n.n(W),Q={insert:"head",singleton:!1};f()(G(),Q);G().locals;const Y=(0,c.Z)(H,N,[],!1,null,"8829ba14",null).exports;let X;const K=async e=>(X||await(async()=>(X=new Y({propsData:{image:"",open:!1}}).$mount(),document.body.insertAdjacentElement("beforeend",X.$el),X))(),setTimeout((()=>{X.image=e,X.open=!0})),X);var J=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-progress-bar"},[t("div",{staticClass:"progress",class:{transition:e.transition},style:{width:e.width}})])};J._withStripped=!0;const _=Vue.extend({name:"ProgressBar",props:{progress:{type:Number,default:50},min:{type:Number,default:0},max:{type:Number,default:100},transition:{type:Boolean,default:!1}},computed:{width(){let e=this.progress;e>this.max?e=this.max:ethis.max?e=this.max:e{de.has(e)?de.get(e).push({instance:t,uncheck:n}):de.set(e,[{instance:t,uncheck:n}])})),fe=Vue.extend({name:"RadioButton",components:{CheckBox:h},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},allowUncheck:{type:Boolean,default:!1},group:{type:String,default:""},checkedIcon:{type:String,default:"mdi-radiobox-marked"},notCheckedIcon:{type:String,default:"mdi-radiobox-blank"}},watch:{checked(e){if(e){const e=this.group,t=this.$el;let n;n=""===e?t.parentElement:e,de.get(n).forEach((e=>{let{instance:t,uncheck:n}=e;t!==this&&n()}))}}},mounted(){const e=this.group,t=this.$el;let n;n=me(""===e?t.parentElement:e),n(this,(()=>this.$emit("change",!1)))},methods:{emitChange(e){(this.checked&&this.allowUncheck||!this.checked)&&this.$emit("change",e)}}});const ue=(0,c.Z)(fe,le,[],!1,null,null,null).exports;var pe=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-range-input"},[t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.start.toString()},on:{change:function(t){e.wrapper.start=t}}}),e._v(" "),e._t("separator",(function(){return[t("div",{staticClass:"default-separator"},[e._v("~")])]})),e._v(" "),t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.end.toString()},on:{change:function(t){e.wrapper.end=t}}})],2)};pe._withStripped=!0;const be=e=>({range:e.range,get start(){return this.range.start.toString()},set start(e){this.createNewRange(e,this.end)},get end(){return this.range.end.toString()},set end(e){this.createNewRange(this.start,e)},createNewRange(t,n){let o={start:t,end:n};e.validator&&(o=e.validator(o)),null!=o?(this.range=o,e.$emit("change",o)):this.range={start:this.range.start,end:this.range.end}}}),he=Vue.extend({name:"RangeInput",components:{TextBox:()=>Promise.resolve().then(n.bind(n,2827))},model:{prop:"range",event:"change"},props:{range:{type:Object,required:!0},validator:{type:Function,default:void 0}},data(){return{wrapper:be(this)}}});var ge=n(7824),Fe=n.n(ge),ve={insert:"head",singleton:!1};f()(Fe(),ve);Fe().locals;const we=(0,c.Z)(he,pe,[],!1,null,"b459c060",null).exports;var ye=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-scroll-trigger",on:{click:function(t){return e.trigger()}}},[e._t("default",(function(){return[t("VLoading")]}))],2)};ye._withStripped=!0;var xe=n(4732);const ke=Vue.extend({components:{VLoading:()=>Promise.resolve().then(n.bind(n,1803)).then((e=>e.default))},props:{detectViewport:{type:Boolean,required:!1,default:!1}},data:()=>({isFirstLoad:!0,isViewportTriggerRunning:!1,parentLoadState:"none"}),async mounted(){const e=(0,xe.useScopedConsole)("ScrollTrigger"),t=this.$el,{visible:o}=await Promise.resolve().then(n.bind(n,2545));o(t,(async n=>{if(n.some((e=>e.intersectionRatio>0))){if(e.log("Intersection Observer trigger"),this.trigger(),!this.detectViewport&&!this.isFirstLoad&&this.isViewportTriggerRunning)return;for(this.isViewportTriggerRunning=!0;this.getVisibleStateByViewport(t);)if(await(0,D.delay)(500),"loaded"===this.parentLoadState){if(!this.getVisibleStateByViewport(t))break;e.log("is first load & viewport trigger"),this.trigger()}this.isFirstLoad=!1}}))},methods:{getElementToViewportBottomDistance:e=>document.documentElement.clientHeight-e.getBoundingClientRect().top,getVisibleStateByViewport(e){return Boolean(this.getElementToViewportBottomDistance(e)>-20)},setLoadState(e){this.parentLoadState=e},resetIsFirstLoad(){this.isFirstLoad=!0},trigger(){this.$emit("trigger")}}});var Ce=n(975),Ae=n.n(Ce),Ee={insert:"head",singleton:!1};f()(Ae(),Ee);Ae().locals;const Be=(0,c.Z)(ke,ye,[],!1,null,null,null).exports;var De=n(7136),Ie=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-tab-control"},[t("div",{staticClass:"default-header"},[e._t("tabs",(function(){return[t("div",{staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},attrs:{"data-count":n.count>0?n.count:null},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)]})),e._v(" "),t("div",{staticClass:"header-item"},[e._t("header-item")],2),e._v(" "),null!==e.moreLink&&void 0!==e.moreLink?t("a",{staticClass:"be-more-link",attrs:{href:"function"==typeof e.moreLink?e.moreLink(e.selectedTab):e.moreLink,target:"_blank"}},[t("VButton",{attrs:{disabled:!e.moreLink,round:""}},[e._t("more-link",(function(){return[e._v("\n 查看更多\n "),t("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})]}))],2)],1):e._e()],2),e._v(" "),e._t("content",(function(){return[t("div",{staticClass:"default-content"},[t("transition",{attrs:{name:"content-transition"}},[t(e.selectedTab.component,e._b({tag:"component"},"component",e.selectedTab.propsData,!1))],1)],1)]}))],2)};Ie._withStripped=!0;const ze=Vue.extend({name:"TabControl",components:{VButton:()=>Promise.resolve().then(n.bind(n,1589)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,714)).then((e=>e.default))},model:{prop:"link",event:"change"},props:{tabs:{type:Array,required:!0,validator:e=>0!==e.length},defaultTab:{type:String,required:!1,default:""},link:{type:String,required:!1,default:null},moreLink:{type:[String,Function],default:null}},data(){const e=this.tabs;return{selectedTabName:e.find((e=>e.name===this.defaultTab))?.name??e[0].name}},computed:{selectedTab(){return this.tabs.find((e=>e.name===this.selectedTabName))}},mounted(){this.$emit("change",this.selectedTab.activeLink)},methods:{selectTab(e){this.selectedTabName!==e.name?(this.selectedTabName=e.name,e.count=0,this.$emit("change",this.selectedTab.activeLink)):e.activeLink&&window.open(e.activeLink,"_blank")}}});var Se=n(1710),Pe=n.n(Se),Me={insert:"head",singleton:!1};f()(Pe(),Me);Pe().locals;const Oe=(0,c.Z)(ze,Ie,[],!1,null,null,null).exports;var Ve=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-text-area",attrs:{role:"text"}},[t("textarea",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"textarea",e.$attrs,!1),e.restListeners))])};Ve._withStripped=!0;var Te=n(3448);const Le=Vue.extend({name:"TextArea",mixins:[Te.t]});var je=n(6780),Re=n.n(je),Ne={insert:"head",singleton:!1};f()(Re(),Ne);Re().locals;const qe=(0,c.Z)(Le,Ve,[],!1,null,null,null).exports;var Ze=n(2827),Ue=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{directives:[{name:"hit",rawName:"v-hit",value:e.hit,expression:"hit"}],staticClass:"be-dropdown",class:{disabled:e.disabled,round:e.round},attrs:{role:"combobox",tabindex:e.disabled?-1:0,"aria-disabled":e.disabled}},[t("div",{ref:"selected",staticClass:"selected"},[t("div",{staticClass:"selected-item"},[null!==e.value&&void 0!==e.value?e._t("item",(function(){return[e._v("\n "+e._s(e.value.displayName)+"\n ")]}),{item:e.value}):e._e()],2),e._v(" "),t("div",{staticClass:"arrow",class:{open:e.popupOpen}},[e._t("arrow",(function(){return[t("div",{staticClass:"default-arrow"},[t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"}},[t("defs",[t("clipPath",{attrs:{id:"clip-arrow-down"}},[t("rect",{attrs:{width:"24",height:"24"}})])]),e._v(" "),t("g",{attrs:{id:"arrow-down","clip-path":"url(#clip-arrow-down)"}},[t("path",{attrs:{id:"Path_1","data-name":"Path 1",d:"M2,17,12,7,22,17",transform:"translate(24 25) rotate(180)","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"}})])])])]}))],2)]),e._v(" "),t("VPopup",{ref:"popup",staticClass:"dropdown-popup",attrs:{lazy:!1,"trigger-element":e.$refs.selected},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.selectItem(e.value)}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(e.items,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectItem(n),expression:"() => selectItem(item)"}],key:e.keyMapper(n),staticClass:"bex-dropdown-item",attrs:{tabindex:e.popupOpen?0:-1}},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)})),0)],1)};Ue._withStripped=!0;var He=n(9397);const We=Vue.extend({name:"VDropdown",components:{VPopup:He.default},model:{prop:"value",event:"change"},props:{value:{required:!0},items:{type:Array,required:!0},keyMapper:{type:Function,default:e=>e.name},round:{type:Boolean,default:!1}},data:()=>({popupOpen:!1}),computed:{disabled(){return Boolean(this.$attrs.disabled)}},watch:{disabled(e){e&&(this.popupOpen=!1)}},created(){null!==this.value&&void 0!==this.value||this.$emit("change",this.items[0]||"")},methods:{selectItem(e){e!==this.value&&this.$emit("change",e),this.popupOpen=!1,this.$el.focus()},hit(e){if(this.disabled)return;const t=this.$refs.popup.$el,n=e.target;t===n||t.contains(n)||(this.popupOpen=!this.popupOpen)}}});var Ge=n(9820),Qe=n.n(Ge),Ye={insert:"head",singleton:!1};f()(Qe(),Ye);Qe().locals;const Xe=(0,c.Z)(We,Ue,[],!1,null,"6b51ccd4",null).exports;var Ke=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-empty"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};Ke._withStripped=!0;var Je=n(4909);const[_e]=(0,Je.registerAndGetData)("vEmpty",{content:"空空如也哦 = ̄ω ̄="}),$e=Vue.extend({name:"VEmpty",data:()=>({config:_e})});var et=n(4629),tt=n.n(et),nt={insert:"head",singleton:!1};f()(tt(),nt);tt().locals;const ot=(0,c.Z)($e,Ke,[],!1,null,null,null).exports;var it=n(1803),rt=n(8308),at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({staticClass:"default-widget"},"VButton",e.$attrs,!1),e.$listeners),[t("div",{staticClass:"widget-icon"},[e._t("icon",(function(){return[t("VIcon",{attrs:{type:e.iconType,icon:e.icon}})]}))],2),e._v(" "),t("div",{staticClass:"widget-name"},[e._t("default",(function(){return[e._v(e._s(e.name))]}))],2)])};at._withStripped=!0;const ct=Vue.extend({components:{VIcon:o.default,VButton:r.default},props:{name:{type:String,default:""},icon:{type:String,default:""},iconType:{type:String,default:""}}});var st=n(9057),lt=n.n(st),dt={insert:"head",singleton:!1};f()(lt(),dt);lt().locals;const mt=(0,c.Z)(ct,at,[],!1,null,"20e1bedd",null).exports;var ft=n(3792)},8633:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initMdiStyle:()=>r});var o=n(8964),i=n.n(o);const r=()=>{const e=document.createElement("style");return e.id="be-mdi",e.innerHTML=i(),e}},3448:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o=Vue.extend({model:{prop:"text",event:"change"},props:{text:{type:String,required:!1,default:""},changeOnBlur:{type:Boolean,required:!1,default:!1},validator:{type:Function,default:void 0}},data(){return{composing:!1,restListeners:lodash.omit(this.$listeners,"change","input","compositionstart","compositionend")}},methods:{emitChange(){let{value:e}=this.$refs.input;this.validator&&(e=this.validator(e,this.text),this.changeOnBlur&&(this.$refs.input.value=e)),e!==this.text&&this.$emit("change",e)},input(){this.changeOnBlur||this.composing||this.emitChange()},change(){this.changeOnBlur&&!this.composing&&this.emitChange()},compositionStart(){this.composing=!0},compositionEnd(){this.composing=!1,this.input()},focus(){this.$refs.input.focus()}}})},6204:(e,t,n)=>{"use strict";n.r(t),n.d(t,{compilationInfo:()=>f});var o=n(113);const i="the1812",r="cdn.jsdelivr.net",a={name:"jsDelivr",owner:i,host:r,stableClient:`https://${r}/gh/the1812/Bilibili-Evolved@master/dist/bilibili-evolved.user.js`,previewClient:`https://${r}/gh/the1812/Bilibili-Evolved@preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${r}/npm/lodash@4.17.21/lodash.min.js`,protobuf:`https://${r}/npm/protobufjs@6.10.1/dist/light/protobuf.min.js`,jszip:`https://${r}/npm/jszip@3.7.1/dist/jszip.min.js`,sortable:`https://${r}/npm/sortablejs@1.14.0/Sortable.min.js`,mdi:`https://${r}/gh/the1812/Bilibili-Evolved@master/docs/static/mdi/mdi.css`,streamsaver:`https://${r}/npm/streamsaver@2.0.6/StreamSaver.min.js`,ffmpeg:{worker:`https://${r}/npm/@ffmpeg/ffmpeg@0.12.4/dist/umd/814.ffmpeg.js`,core:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.js`,wasm:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.wasm`}},smallLogo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo-small.png`,logo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo.png`,root:(e,t)=>`https://${r}/gh/${t||i}/Bilibili-Evolved@${e}/`},c="the1812",s="raw.githubusercontent.com",l={name:"GitHub",owner:c,host:s,stableClient:`https://${s}/the1812/Bilibili-Evolved/master/dist/bilibili-evolved.user.js`,previewClient:`https://${s}/the1812/Bilibili-Evolved/preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${s}/lodash/lodash/4.17.21/dist/lodash.min.js`,protobuf:`https://${s}/protobufjs/protobuf.js/v6.10.1/dist/light/protobuf.min.js`,jszip:`https://${s}/Stuk/jszip/v3.7.1/dist/jszip.min.js`,sortable:`https://${s}/SortableJS/Sortable/1.14.0/Sortable.min.js`,mdi:"https://the1812.github.io/Bilibili-Evolved/static/mdi/mdi.css",streamsaver:`https://${s}/jimmywarting/StreamSaver.js/2.0.6/StreamSaver.js`,ffmpeg:a.library.ffmpeg},smallLogo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo-small.png`,logo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo.png`,root:(e,t)=>`https://${s}/${t||c}/Bilibili-Evolved/${e}/`},d=l,m={github:l,jsDelivr:a},f={...{year:(new Date).getFullYear(),version:o.version,altCdn:d,allCdns:m},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",branch:"master",nearestTag:"v2.8.11",versionWithTag:"v2.8.11-36-g66ede2a74"}},4589:(e,t,n)=>{var o=n(3337),i={};for(var r in o)o.hasOwnProperty(r)&&(i[o[r]]=r);var a=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var c in a)if(a.hasOwnProperty(c)){if(!("channels"in a[c]))throw new Error("missing channels property: "+c);if(!("labels"in a[c]))throw new Error("missing channel labels property: "+c);if(a[c].labels.length!==a[c].channels)throw new Error("channel and label counts mismatch: "+c);var s=a[c].channels,l=a[c].labels;delete a[c].channels,delete a[c].labels,Object.defineProperty(a[c],"channels",{value:s}),Object.defineProperty(a[c],"labels",{value:l})}a.rgb.hsl=function(e){var t,n,o=e[0]/255,i=e[1]/255,r=e[2]/255,a=Math.min(o,i,r),c=Math.max(o,i,r),s=c-a;return c===a?t=0:o===c?t=(i-r)/s:i===c?t=2+(r-o)/s:r===c&&(t=4+(o-i)/s),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+c)/2,[t,100*(c===a?0:n<=.5?s/(c+a):s/(2-c-a)),100*n]},a.rgb.hsv=function(e){var t,n,o,i,r,a=e[0]/255,c=e[1]/255,s=e[2]/255,l=Math.max(a,c,s),d=l-Math.min(a,c,s),m=function(e){return(l-e)/6/d+.5};return 0===d?i=r=0:(r=d/l,t=m(a),n=m(c),o=m(s),a===l?i=o-n:c===l?i=1/3+t-o:s===l&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*r,100*l]},a.rgb.hwb=function(e){var t=e[0],n=e[1],o=e[2];return[a.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(n,o))),100*(o=1-1/255*Math.max(t,Math.max(n,o)))]},a.rgb.cmyk=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-o,1-i)))/(1-t)||0),100*((1-o-t)/(1-t)||0),100*((1-i-t)/(1-t)||0),100*t]},a.rgb.keyword=function(e){var t=i[e];if(t)return t;var n,r,a,c=1/0;for(var s in o)if(o.hasOwnProperty(s)){var l=o[s],d=(r=e,a=l,Math.pow(r[0]-a[0],2)+Math.pow(r[1]-a[1],2)+Math.pow(r[2]-a[2],2));d.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(o=o>.04045?Math.pow((o+.055)/1.055,2.4):o/12.92)),100*(.2126*t+.7152*n+.0722*o),100*(.0193*t+.1192*n+.9505*o)]},a.rgb.lab=function(e){var t=a.rgb.xyz(e),n=t[0],o=t[1],i=t[2];return o/=100,i/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116)-16,500*(n-o),200*(o-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.hsl.rgb=function(e){var t,n,o,i,r,a=e[0]/360,c=e[1]/100,s=e[2]/100;if(0===c)return[r=255*s,r,r];t=2*s-(n=s<.5?s*(1+c):s+c-s*c),i=[0,0,0];for(var l=0;l<3;l++)(o=a+1/3*-(l-1))<0&&o++,o>1&&o--,r=6*o<1?t+6*(n-t)*o:2*o<1?n:3*o<2?t+(n-t)*(2/3-o)*6:t,i[l]=255*r;return i},a.hsl.hsv=function(e){var t=e[0],n=e[1]/100,o=e[2]/100,i=n,r=Math.max(o,.01);return n*=(o*=2)<=1?o:2-o,i*=r<=1?r:2-r,[t,100*(0===o?2*i/(r+i):2*n/(o+n)),100*((o+n)/2)]},a.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,o=e[2]/100,i=Math.floor(t)%6,r=t-Math.floor(t),a=255*o*(1-n),c=255*o*(1-n*r),s=255*o*(1-n*(1-r));switch(o*=255,i){case 0:return[o,s,a];case 1:return[c,o,a];case 2:return[a,o,s];case 3:return[a,c,o];case 4:return[s,a,o];case 5:return[o,a,c]}},a.hsv.hsl=function(e){var t,n,o,i=e[0],r=e[1]/100,a=e[2]/100,c=Math.max(a,.01);return o=(2-r)*a,n=r*c,[i,100*(n=(n/=(t=(2-r)*c)<=1?t:2-t)||0),100*(o/=2)]},a.hwb.rgb=function(e){var t,n,o,i,r,a,c,s=e[0]/360,l=e[1]/100,d=e[2]/100,m=l+d;switch(m>1&&(l/=m,d/=m),o=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(o=1-o),i=l+o*((n=1-d)-l),t){default:case 6:case 0:r=n,a=i,c=l;break;case 1:r=i,a=n,c=l;break;case 2:r=l,a=n,c=i;break;case 3:r=l,a=i,c=n;break;case 4:r=i,a=l,c=n;break;case 5:r=n,a=l,c=i}return[255*r,255*a,255*c]},a.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,o=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,o*(1-i)+i))]},a.xyz.rgb=function(e){var t,n,o,i=e[0]/100,r=e[1]/100,a=e[2]/100;return n=-.9689*i+1.8758*r+.0415*a,o=.0557*i+-.204*r+1.057*a,t=(t=3.2406*i+-1.5372*r+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(o=Math.min(Math.max(0,o),1))]},a.xyz.lab=function(e){var t=e[0],n=e[1],o=e[2];return n/=100,o/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},a.lab.xyz=function(e){var t,n,o,i=e[0];t=e[1]/500+(n=(i+16)/116),o=n-e[2]/200;var r=Math.pow(n,3),a=Math.pow(t,3),c=Math.pow(o,3);return n=r>.008856?r:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,[t*=95.047,n*=100,o*=108.883]},a.lab.lch=function(e){var t,n=e[0],o=e[1],i=e[2];return(t=360*Math.atan2(i,o)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(o*o+i*i),t]},a.lch.lab=function(e){var t,n=e[0],o=e[1];return t=e[2]/360*2*Math.PI,[n,o*Math.cos(t),o*Math.sin(t)]},a.rgb.ansi16=function(e){var t=e[0],n=e[1],o=e[2],i=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];if(0===(i=Math.round(i/50)))return 30;var r=30+(Math.round(o/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===i&&(r+=60),r},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){var t=e[0],n=e[1],o=e[2];return t===n&&n===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},a.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},a.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var o=parseInt(n,16);return[o>>16&255,o>>8&255,255&o]},a.rgb.hcg=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255,r=Math.max(Math.max(n,o),i),a=Math.min(Math.min(n,o),i),c=r-a;return t=c<=0?0:r===n?(o-i)/c%6:r===o?2+(i-n)/c:4+(n-o)/c+4,t/=6,[360*(t%=1),100*c,100*(c<1?a/(1-c):0)]},a.hsl.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=1,i=0;return(o=n<.5?2*t*n:2*t*(1-n))<1&&(i=(n-.5*o)/(1-o)),[e[0],100*o,100*i]},a.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=t*n,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,o=e[2]/100;if(0===n)return[255*o,255*o,255*o];var i,r=[0,0,0],a=t%1*6,c=a%1,s=1-c;switch(Math.floor(a)){case 0:r[0]=1,r[1]=c,r[2]=0;break;case 1:r[0]=s,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=c;break;case 3:r[0]=0,r[1]=s,r[2]=1;break;case 4:r[0]=c,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=s}return i=(1-n)*o,[255*(n*r[0]+i),255*(n*r[1]+i),255*(n*r[2]+i)]},a.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),o=0;return n>0&&(o=t/n),[e[0],100*o,100*n]},a.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,o=0;return n>0&&n<.5?o=t/(2*n):n>=.5&&n<1&&(o=t/(2*(1-n))),[e[0],100*o,100*n]},a.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,o=n-t,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]},a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},8358:(e,t,n)=>{var o=n(4589),i=n(3314),r={};Object.keys(o).forEach((function(e){r[e]={},Object.defineProperty(r[e],"channels",{value:o[e].channels}),Object.defineProperty(r[e],"labels",{value:o[e].labels});var t=i(e);Object.keys(t).forEach((function(n){var o=t[n];r[e][n]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var o=n.length,i=0;i1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(o)}))})),e.exports=r},3314:(e,t,n)=>{var o=n(4589);function i(e){var t=function(){for(var e={},t=Object.keys(o),n=t.length,i=0;i{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9419:e=>{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},2489:(e,t,n)=>{var o=n(9419),i=n(7933),r=Object.hasOwnProperty,a=Object.create(null);for(var c in o)r.call(o,c)&&(a[o[c]]=c);var s=e.exports={to:{},get:{}};function l(e,t,n){return Math.min(Math.max(t,e),n)}function d(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}s.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=s.get.hsl(e),n="hsl";break;case"hwb":t=s.get.hwb(e),n="hwb";break;default:t=s.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},s.get.rgb=function(e){if(!e)return null;var t,n,i,a=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=t[2],t=t[1],n=0;n<3;n++){var c=2*n;a[n]=parseInt(t.slice(c,c+2),16)}i&&(a[3]=parseInt(i,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=(t=t[1])[3],n=0;n<3;n++)a[n]=parseInt(t[n]+t[n],16);i&&(a[3]=parseInt(i+i,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)a[n]=parseInt(t[n+1],0);t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:r.call(o,t[1])?((a=o[t[1]])[3]=1,a):null:null;for(n=0;n<3;n++)a[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}for(n=0;n<3;n++)a[n]=l(a[n],0,255);return a[3]=l(a[3],0,1),a},s.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.to.hex=function(){var e=i(arguments);return"#"+d(e[0])+d(e[1])+d(e[2])+(e[3]<1?d(Math.round(255*e[3])):"")},s.to.rgb=function(){var e=i(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},s.to.rgb.percent=function(){var e=i(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),o=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+o+"%)":"rgba("+t+"%, "+n+"%, "+o+"%, "+e[3]+")"},s.to.hsl=function(){var e=i(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},s.to.hwb=function(){var e=i(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},s.to.keyword=function(e){return a[e.slice(0,3)]}},4654:(e,t,n)=>{"use strict";var o=n(2489),i=n(8358),r=[].slice,a=["keyword","gray","hex"],c={};Object.keys(i).forEach((function(e){c[r.call(i[e].labels).sort().join("")]=e}));var s={};function l(e,t){if(!(this instanceof l))return new l(e,t);if(t&&t in a&&(t=null),t&&!(t in i))throw new Error("Unknown model: "+t);var n,d;if(null==e)// eslint-disable-line no-eq-null,eqeqeq this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof l)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var m=o.get(e);if(null===m)throw new Error("Unable to parse color from string: "+e);this.model=m.model,d=i[this.model].channels,this.color=m.value.slice(0,d),this.valpha="number"==typeof m.value[d]?m.value[d]:1}else if(e.length){this.model=t||"rgb",d=i[this.model].channels;var f=r.call(e,0,d);this.color=u(f,d),this.valpha="number"==typeof e[d]?e[d]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var p=Object.keys(e);"alpha"in e&&(p.splice(p.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var b=p.sort().join("");if(!(b in c))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=c[b];var h=i[this.model].labels,g=[];for(n=0;nn?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return l.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var n=e.rgb(),o=this.rgb(),i=void 0===t?.5:t,r=2*i-1,a=n.alpha()-o.alpha(),c=((r*a==-1?r:(r+a)/(1+r*a))+1)/2,s=1-c;return l.rgb(c*n.red()+s*o.red(),c*n.green()+s*o.green(),c*n.blue()+s*o.blue(),n.alpha()*i+o.alpha()*(1-i))}},Object.keys(i).forEach((function(e){if(-1===a.indexOf(e)){var t=i[e].channels;l.prototype[e]=function(){if(this.model===e)return new l(this);if(arguments.length)return new l(arguments,e);var n="number"==typeof arguments[t]?t:this.valpha;return new l(f(i[this.model][e].raw(this.color)).concat(n),e)},l[e]=function(n){return"number"==typeof n&&(n=u(r.call(arguments),t)),new l(n,e)}}})),e.exports=l},2080:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}',""]),e.exports=o},6292:(e,t,n)=>{var o=n(8218),i=n(3014),r=n(8195),a=o((function(e){return e[1]})),c=i(r);a.push([e.id,'@font-face{font-family:"Material Design Icons";src:url('+c+');font-weight:normal;font-style:normal}.mdi:before,.mdi-set{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-ab-testing::before{content:"\\F01C9"}.mdi-abjad-arabic::before{content:"\\F1328"}.mdi-abjad-hebrew::before{content:"\\F1329"}.mdi-abugida-devanagari::before{content:"\\F132A"}.mdi-abugida-thai::before{content:"\\F132B"}.mdi-access-point::before{content:"\\F0003"}.mdi-access-point-network::before{content:"\\F0002"}.mdi-access-point-network-off::before{content:"\\F0BE1"}.mdi-account::before{content:"\\F0004"}.mdi-account-alert::before{content:"\\F0005"}.mdi-account-alert-outline::before{content:"\\F0B50"}.mdi-account-arrow-left::before{content:"\\F0B51"}.mdi-account-arrow-left-outline::before{content:"\\F0B52"}.mdi-account-arrow-right::before{content:"\\F0B53"}.mdi-account-arrow-right-outline::before{content:"\\F0B54"}.mdi-account-box::before{content:"\\F0006"}.mdi-account-box-multiple::before{content:"\\F0934"}.mdi-account-box-multiple-outline::before{content:"\\F100A"}.mdi-account-box-outline::before{content:"\\F0007"}.mdi-account-cancel::before{content:"\\F12DF"}.mdi-account-cancel-outline::before{content:"\\F12E0"}.mdi-account-cash::before{content:"\\F1097"}.mdi-account-cash-outline::before{content:"\\F1098"}.mdi-account-check::before{content:"\\F0008"}.mdi-account-check-outline::before{content:"\\F0BE2"}.mdi-account-child::before{content:"\\F0A89"}.mdi-account-child-circle::before{content:"\\F0A8A"}.mdi-account-child-outline::before{content:"\\F10C8"}.mdi-account-circle::before{content:"\\F0009"}.mdi-account-circle-outline::before{content:"\\F0B55"}.mdi-account-clock::before{content:"\\F0B56"}.mdi-account-clock-outline::before{content:"\\F0B57"}.mdi-account-cog::before{content:"\\F1370"}.mdi-account-cog-outline::before{content:"\\F1371"}.mdi-account-convert::before{content:"\\F000A"}.mdi-account-convert-outline::before{content:"\\F1301"}.mdi-account-cowboy-hat::before{content:"\\F0E9B"}.mdi-account-details::before{content:"\\F0631"}.mdi-account-details-outline::before{content:"\\F1372"}.mdi-account-edit::before{content:"\\F06BC"}.mdi-account-edit-outline::before{content:"\\F0FFB"}.mdi-account-group::before{content:"\\F0849"}.mdi-account-group-outline::before{content:"\\F0B58"}.mdi-account-hard-hat::before{content:"\\F05B5"}.mdi-account-heart::before{content:"\\F0899"}.mdi-account-heart-outline::before{content:"\\F0BE3"}.mdi-account-key::before{content:"\\F000B"}.mdi-account-key-outline::before{content:"\\F0BE4"}.mdi-account-lock::before{content:"\\F115E"}.mdi-account-lock-outline::before{content:"\\F115F"}.mdi-account-minus::before{content:"\\F000D"}.mdi-account-minus-outline::before{content:"\\F0AEC"}.mdi-account-multiple::before{content:"\\F000E"}.mdi-account-multiple-check::before{content:"\\F08C5"}.mdi-account-multiple-check-outline::before{content:"\\F11FE"}.mdi-account-multiple-minus::before{content:"\\F05D3"}.mdi-account-multiple-minus-outline::before{content:"\\F0BE5"}.mdi-account-multiple-outline::before{content:"\\F000F"}.mdi-account-multiple-plus::before{content:"\\F0010"}.mdi-account-multiple-plus-outline::before{content:"\\F0800"}.mdi-account-multiple-remove::before{content:"\\F120A"}.mdi-account-multiple-remove-outline::before{content:"\\F120B"}.mdi-account-music::before{content:"\\F0803"}.mdi-account-music-outline::before{content:"\\F0CE9"}.mdi-account-network::before{content:"\\F0011"}.mdi-account-network-outline::before{content:"\\F0BE6"}.mdi-account-off::before{content:"\\F0012"}.mdi-account-off-outline::before{content:"\\F0BE7"}.mdi-account-outline::before{content:"\\F0013"}.mdi-account-plus::before{content:"\\F0014"}.mdi-account-plus-outline::before{content:"\\F0801"}.mdi-account-question::before{content:"\\F0B59"}.mdi-account-question-outline::before{content:"\\F0B5A"}.mdi-account-remove::before{content:"\\F0015"}.mdi-account-remove-outline::before{content:"\\F0AED"}.mdi-account-search::before{content:"\\F0016"}.mdi-account-search-outline::before{content:"\\F0935"}.mdi-account-settings::before{content:"\\F0630"}.mdi-account-settings-outline::before{content:"\\F10C9"}.mdi-account-star::before{content:"\\F0017"}.mdi-account-star-outline::before{content:"\\F0BE8"}.mdi-account-supervisor::before{content:"\\F0A8B"}.mdi-account-supervisor-circle::before{content:"\\F0A8C"}.mdi-account-supervisor-outline::before{content:"\\F112D"}.mdi-account-switch::before{content:"\\F0019"}.mdi-account-switch-outline::before{content:"\\F04CB"}.mdi-account-tie::before{content:"\\F0CE3"}.mdi-account-tie-outline::before{content:"\\F10CA"}.mdi-account-tie-voice::before{content:"\\F1308"}.mdi-account-tie-voice-off::before{content:"\\F130A"}.mdi-account-tie-voice-off-outline::before{content:"\\F130B"}.mdi-account-tie-voice-outline::before{content:"\\F1309"}.mdi-account-voice::before{content:"\\F05CB"}.mdi-adjust::before{content:"\\F001A"}.mdi-adobe::before{content:"\\F0936"}.mdi-adobe-acrobat::before{content:"\\F0F9D"}.mdi-air-conditioner::before{content:"\\F001B"}.mdi-air-filter::before{content:"\\F0D43"}.mdi-air-horn::before{content:"\\F0DAC"}.mdi-air-humidifier::before{content:"\\F1099"}.mdi-air-humidifier-off::before{content:"\\F1466"}.mdi-air-purifier::before{content:"\\F0D44"}.mdi-airbag::before{content:"\\F0BE9"}.mdi-airballoon::before{content:"\\F001C"}.mdi-airballoon-outline::before{content:"\\F100B"}.mdi-airplane::before{content:"\\F001D"}.mdi-airplane-landing::before{content:"\\F05D4"}.mdi-airplane-off::before{content:"\\F001E"}.mdi-airplane-takeoff::before{content:"\\F05D5"}.mdi-airport::before{content:"\\F084B"}.mdi-alarm::before{content:"\\F0020"}.mdi-alarm-bell::before{content:"\\F078E"}.mdi-alarm-check::before{content:"\\F0021"}.mdi-alarm-light::before{content:"\\F078F"}.mdi-alarm-light-outline::before{content:"\\F0BEA"}.mdi-alarm-multiple::before{content:"\\F0022"}.mdi-alarm-note::before{content:"\\F0E71"}.mdi-alarm-note-off::before{content:"\\F0E72"}.mdi-alarm-off::before{content:"\\F0023"}.mdi-alarm-plus::before{content:"\\F0024"}.mdi-alarm-snooze::before{content:"\\F068E"}.mdi-album::before{content:"\\F0025"}.mdi-alert::before{content:"\\F0026"}.mdi-alert-box::before{content:"\\F0027"}.mdi-alert-box-outline::before{content:"\\F0CE4"}.mdi-alert-circle::before{content:"\\F0028"}.mdi-alert-circle-check::before{content:"\\F11ED"}.mdi-alert-circle-check-outline::before{content:"\\F11EE"}.mdi-alert-circle-outline::before{content:"\\F05D6"}.mdi-alert-decagram::before{content:"\\F06BD"}.mdi-alert-decagram-outline::before{content:"\\F0CE5"}.mdi-alert-minus::before{content:"\\F14BB"}.mdi-alert-minus-outline::before{content:"\\F14BE"}.mdi-alert-octagon::before{content:"\\F0029"}.mdi-alert-octagon-outline::before{content:"\\F0CE6"}.mdi-alert-octagram::before{content:"\\F0767"}.mdi-alert-octagram-outline::before{content:"\\F0CE7"}.mdi-alert-outline::before{content:"\\F002A"}.mdi-alert-plus::before{content:"\\F14BA"}.mdi-alert-plus-outline::before{content:"\\F14BD"}.mdi-alert-remove::before{content:"\\F14BC"}.mdi-alert-remove-outline::before{content:"\\F14BF"}.mdi-alert-rhombus::before{content:"\\F11CE"}.mdi-alert-rhombus-outline::before{content:"\\F11CF"}.mdi-alien::before{content:"\\F089A"}.mdi-alien-outline::before{content:"\\F10CB"}.mdi-align-horizontal-center::before{content:"\\F11C3"}.mdi-align-horizontal-left::before{content:"\\F11C2"}.mdi-align-horizontal-right::before{content:"\\F11C4"}.mdi-align-vertical-bottom::before{content:"\\F11C5"}.mdi-align-vertical-center::before{content:"\\F11C6"}.mdi-align-vertical-top::before{content:"\\F11C7"}.mdi-all-inclusive::before{content:"\\F06BE"}.mdi-allergy::before{content:"\\F1258"}.mdi-alpha::before{content:"\\F002B"}.mdi-alpha-a::before{content:"\\F0AEE"}.mdi-alpha-a-box::before{content:"\\F0B08"}.mdi-alpha-a-box-outline::before{content:"\\F0BEB"}.mdi-alpha-a-circle::before{content:"\\F0BEC"}.mdi-alpha-a-circle-outline::before{content:"\\F0BED"}.mdi-alpha-b::before{content:"\\F0AEF"}.mdi-alpha-b-box::before{content:"\\F0B09"}.mdi-alpha-b-box-outline::before{content:"\\F0BEE"}.mdi-alpha-b-circle::before{content:"\\F0BEF"}.mdi-alpha-b-circle-outline::before{content:"\\F0BF0"}.mdi-alpha-c::before{content:"\\F0AF0"}.mdi-alpha-c-box::before{content:"\\F0B0A"}.mdi-alpha-c-box-outline::before{content:"\\F0BF1"}.mdi-alpha-c-circle::before{content:"\\F0BF2"}.mdi-alpha-c-circle-outline::before{content:"\\F0BF3"}.mdi-alpha-d::before{content:"\\F0AF1"}.mdi-alpha-d-box::before{content:"\\F0B0B"}.mdi-alpha-d-box-outline::before{content:"\\F0BF4"}.mdi-alpha-d-circle::before{content:"\\F0BF5"}.mdi-alpha-d-circle-outline::before{content:"\\F0BF6"}.mdi-alpha-e::before{content:"\\F0AF2"}.mdi-alpha-e-box::before{content:"\\F0B0C"}.mdi-alpha-e-box-outline::before{content:"\\F0BF7"}.mdi-alpha-e-circle::before{content:"\\F0BF8"}.mdi-alpha-e-circle-outline::before{content:"\\F0BF9"}.mdi-alpha-f::before{content:"\\F0AF3"}.mdi-alpha-f-box::before{content:"\\F0B0D"}.mdi-alpha-f-box-outline::before{content:"\\F0BFA"}.mdi-alpha-f-circle::before{content:"\\F0BFB"}.mdi-alpha-f-circle-outline::before{content:"\\F0BFC"}.mdi-alpha-g::before{content:"\\F0AF4"}.mdi-alpha-g-box::before{content:"\\F0B0E"}.mdi-alpha-g-box-outline::before{content:"\\F0BFD"}.mdi-alpha-g-circle::before{content:"\\F0BFE"}.mdi-alpha-g-circle-outline::before{content:"\\F0BFF"}.mdi-alpha-h::before{content:"\\F0AF5"}.mdi-alpha-h-box::before{content:"\\F0B0F"}.mdi-alpha-h-box-outline::before{content:"\\F0C00"}.mdi-alpha-h-circle::before{content:"\\F0C01"}.mdi-alpha-h-circle-outline::before{content:"\\F0C02"}.mdi-alpha-i::before{content:"\\F0AF6"}.mdi-alpha-i-box::before{content:"\\F0B10"}.mdi-alpha-i-box-outline::before{content:"\\F0C03"}.mdi-alpha-i-circle::before{content:"\\F0C04"}.mdi-alpha-i-circle-outline::before{content:"\\F0C05"}.mdi-alpha-j::before{content:"\\F0AF7"}.mdi-alpha-j-box::before{content:"\\F0B11"}.mdi-alpha-j-box-outline::before{content:"\\F0C06"}.mdi-alpha-j-circle::before{content:"\\F0C07"}.mdi-alpha-j-circle-outline::before{content:"\\F0C08"}.mdi-alpha-k::before{content:"\\F0AF8"}.mdi-alpha-k-box::before{content:"\\F0B12"}.mdi-alpha-k-box-outline::before{content:"\\F0C09"}.mdi-alpha-k-circle::before{content:"\\F0C0A"}.mdi-alpha-k-circle-outline::before{content:"\\F0C0B"}.mdi-alpha-l::before{content:"\\F0AF9"}.mdi-alpha-l-box::before{content:"\\F0B13"}.mdi-alpha-l-box-outline::before{content:"\\F0C0C"}.mdi-alpha-l-circle::before{content:"\\F0C0D"}.mdi-alpha-l-circle-outline::before{content:"\\F0C0E"}.mdi-alpha-m::before{content:"\\F0AFA"}.mdi-alpha-m-box::before{content:"\\F0B14"}.mdi-alpha-m-box-outline::before{content:"\\F0C0F"}.mdi-alpha-m-circle::before{content:"\\F0C10"}.mdi-alpha-m-circle-outline::before{content:"\\F0C11"}.mdi-alpha-n::before{content:"\\F0AFB"}.mdi-alpha-n-box::before{content:"\\F0B15"}.mdi-alpha-n-box-outline::before{content:"\\F0C12"}.mdi-alpha-n-circle::before{content:"\\F0C13"}.mdi-alpha-n-circle-outline::before{content:"\\F0C14"}.mdi-alpha-o::before{content:"\\F0AFC"}.mdi-alpha-o-box::before{content:"\\F0B16"}.mdi-alpha-o-box-outline::before{content:"\\F0C15"}.mdi-alpha-o-circle::before{content:"\\F0C16"}.mdi-alpha-o-circle-outline::before{content:"\\F0C17"}.mdi-alpha-p::before{content:"\\F0AFD"}.mdi-alpha-p-box::before{content:"\\F0B17"}.mdi-alpha-p-box-outline::before{content:"\\F0C18"}.mdi-alpha-p-circle::before{content:"\\F0C19"}.mdi-alpha-p-circle-outline::before{content:"\\F0C1A"}.mdi-alpha-q::before{content:"\\F0AFE"}.mdi-alpha-q-box::before{content:"\\F0B18"}.mdi-alpha-q-box-outline::before{content:"\\F0C1B"}.mdi-alpha-q-circle::before{content:"\\F0C1C"}.mdi-alpha-q-circle-outline::before{content:"\\F0C1D"}.mdi-alpha-r::before{content:"\\F0AFF"}.mdi-alpha-r-box::before{content:"\\F0B19"}.mdi-alpha-r-box-outline::before{content:"\\F0C1E"}.mdi-alpha-r-circle::before{content:"\\F0C1F"}.mdi-alpha-r-circle-outline::before{content:"\\F0C20"}.mdi-alpha-s::before{content:"\\F0B00"}.mdi-alpha-s-box::before{content:"\\F0B1A"}.mdi-alpha-s-box-outline::before{content:"\\F0C21"}.mdi-alpha-s-circle::before{content:"\\F0C22"}.mdi-alpha-s-circle-outline::before{content:"\\F0C23"}.mdi-alpha-t::before{content:"\\F0B01"}.mdi-alpha-t-box::before{content:"\\F0B1B"}.mdi-alpha-t-box-outline::before{content:"\\F0C24"}.mdi-alpha-t-circle::before{content:"\\F0C25"}.mdi-alpha-t-circle-outline::before{content:"\\F0C26"}.mdi-alpha-u::before{content:"\\F0B02"}.mdi-alpha-u-box::before{content:"\\F0B1C"}.mdi-alpha-u-box-outline::before{content:"\\F0C27"}.mdi-alpha-u-circle::before{content:"\\F0C28"}.mdi-alpha-u-circle-outline::before{content:"\\F0C29"}.mdi-alpha-v::before{content:"\\F0B03"}.mdi-alpha-v-box::before{content:"\\F0B1D"}.mdi-alpha-v-box-outline::before{content:"\\F0C2A"}.mdi-alpha-v-circle::before{content:"\\F0C2B"}.mdi-alpha-v-circle-outline::before{content:"\\F0C2C"}.mdi-alpha-w::before{content:"\\F0B04"}.mdi-alpha-w-box::before{content:"\\F0B1E"}.mdi-alpha-w-box-outline::before{content:"\\F0C2D"}.mdi-alpha-w-circle::before{content:"\\F0C2E"}.mdi-alpha-w-circle-outline::before{content:"\\F0C2F"}.mdi-alpha-x::before{content:"\\F0B05"}.mdi-alpha-x-box::before{content:"\\F0B1F"}.mdi-alpha-x-box-outline::before{content:"\\F0C30"}.mdi-alpha-x-circle::before{content:"\\F0C31"}.mdi-alpha-x-circle-outline::before{content:"\\F0C32"}.mdi-alpha-y::before{content:"\\F0B06"}.mdi-alpha-y-box::before{content:"\\F0B20"}.mdi-alpha-y-box-outline::before{content:"\\F0C33"}.mdi-alpha-y-circle::before{content:"\\F0C34"}.mdi-alpha-y-circle-outline::before{content:"\\F0C35"}.mdi-alpha-z::before{content:"\\F0B07"}.mdi-alpha-z-box::before{content:"\\F0B21"}.mdi-alpha-z-box-outline::before{content:"\\F0C36"}.mdi-alpha-z-circle::before{content:"\\F0C37"}.mdi-alpha-z-circle-outline::before{content:"\\F0C38"}.mdi-alphabet-aurebesh::before{content:"\\F132C"}.mdi-alphabet-cyrillic::before{content:"\\F132D"}.mdi-alphabet-greek::before{content:"\\F132E"}.mdi-alphabet-latin::before{content:"\\F132F"}.mdi-alphabet-piqad::before{content:"\\F1330"}.mdi-alphabet-tengwar::before{content:"\\F1337"}.mdi-alphabetical::before{content:"\\F002C"}.mdi-alphabetical-off::before{content:"\\F100C"}.mdi-alphabetical-variant::before{content:"\\F100D"}.mdi-alphabetical-variant-off::before{content:"\\F100E"}.mdi-altimeter::before{content:"\\F05D7"}.mdi-amazon::before{content:"\\F002D"}.mdi-amazon-alexa::before{content:"\\F08C6"}.mdi-ambulance::before{content:"\\F002F"}.mdi-ammunition::before{content:"\\F0CE8"}.mdi-ampersand::before{content:"\\F0A8D"}.mdi-amplifier::before{content:"\\F0030"}.mdi-amplifier-off::before{content:"\\F11B5"}.mdi-anchor::before{content:"\\F0031"}.mdi-android::before{content:"\\F0032"}.mdi-android-auto::before{content:"\\F0A8E"}.mdi-android-debug-bridge::before{content:"\\F0033"}.mdi-android-messages::before{content:"\\F0D45"}.mdi-android-studio::before{content:"\\F0034"}.mdi-angle-acute::before{content:"\\F0937"}.mdi-angle-obtuse::before{content:"\\F0938"}.mdi-angle-right::before{content:"\\F0939"}.mdi-angular::before{content:"\\F06B2"}.mdi-angularjs::before{content:"\\F06BF"}.mdi-animation::before{content:"\\F05D8"}.mdi-animation-outline::before{content:"\\F0A8F"}.mdi-animation-play::before{content:"\\F093A"}.mdi-animation-play-outline::before{content:"\\F0A90"}.mdi-ansible::before{content:"\\F109A"}.mdi-antenna::before{content:"\\F1119"}.mdi-anvil::before{content:"\\F089B"}.mdi-apache-kafka::before{content:"\\F100F"}.mdi-api::before{content:"\\F109B"}.mdi-api-off::before{content:"\\F1257"}.mdi-apple::before{content:"\\F0035"}.mdi-apple-airplay::before{content:"\\F001F"}.mdi-apple-finder::before{content:"\\F0036"}.mdi-apple-icloud::before{content:"\\F0038"}.mdi-apple-ios::before{content:"\\F0037"}.mdi-apple-keyboard-caps::before{content:"\\F0632"}.mdi-apple-keyboard-command::before{content:"\\F0633"}.mdi-apple-keyboard-control::before{content:"\\F0634"}.mdi-apple-keyboard-option::before{content:"\\F0635"}.mdi-apple-keyboard-shift::before{content:"\\F0636"}.mdi-apple-safari::before{content:"\\F0039"}.mdi-application::before{content:"\\F0614"}.mdi-application-export::before{content:"\\F0DAD"}.mdi-application-import::before{content:"\\F0DAE"}.mdi-approximately-equal::before{content:"\\F0F9E"}.mdi-approximately-equal-box::before{content:"\\F0F9F"}.mdi-apps::before{content:"\\F003B"}.mdi-apps-box::before{content:"\\F0D46"}.mdi-arch::before{content:"\\F08C7"}.mdi-archive::before{content:"\\F003C"}.mdi-archive-arrow-down::before{content:"\\F1259"}.mdi-archive-arrow-down-outline::before{content:"\\F125A"}.mdi-archive-arrow-up::before{content:"\\F125B"}.mdi-archive-arrow-up-outline::before{content:"\\F125C"}.mdi-archive-outline::before{content:"\\F120E"}.mdi-arm-flex::before{content:"\\F0FD7"}.mdi-arm-flex-outline::before{content:"\\F0FD6"}.mdi-arrange-bring-forward::before{content:"\\F003D"}.mdi-arrange-bring-to-front::before{content:"\\F003E"}.mdi-arrange-send-backward::before{content:"\\F003F"}.mdi-arrange-send-to-back::before{content:"\\F0040"}.mdi-arrow-all::before{content:"\\F0041"}.mdi-arrow-bottom-left::before{content:"\\F0042"}.mdi-arrow-bottom-left-bold-outline::before{content:"\\F09B7"}.mdi-arrow-bottom-left-thick::before{content:"\\F09B8"}.mdi-arrow-bottom-right::before{content:"\\F0043"}.mdi-arrow-bottom-right-bold-outline::before{content:"\\F09B9"}.mdi-arrow-bottom-right-thick::before{content:"\\F09BA"}.mdi-arrow-collapse::before{content:"\\F0615"}.mdi-arrow-collapse-all::before{content:"\\F0044"}.mdi-arrow-collapse-down::before{content:"\\F0792"}.mdi-arrow-collapse-horizontal::before{content:"\\F084C"}.mdi-arrow-collapse-left::before{content:"\\F0793"}.mdi-arrow-collapse-right::before{content:"\\F0794"}.mdi-arrow-collapse-up::before{content:"\\F0795"}.mdi-arrow-collapse-vertical::before{content:"\\F084D"}.mdi-arrow-decision::before{content:"\\F09BB"}.mdi-arrow-decision-auto::before{content:"\\F09BC"}.mdi-arrow-decision-auto-outline::before{content:"\\F09BD"}.mdi-arrow-decision-outline::before{content:"\\F09BE"}.mdi-arrow-down::before{content:"\\F0045"}.mdi-arrow-down-bold::before{content:"\\F072E"}.mdi-arrow-down-bold-box::before{content:"\\F072F"}.mdi-arrow-down-bold-box-outline::before{content:"\\F0730"}.mdi-arrow-down-bold-circle::before{content:"\\F0047"}.mdi-arrow-down-bold-circle-outline::before{content:"\\F0048"}.mdi-arrow-down-bold-hexagon-outline::before{content:"\\F0049"}.mdi-arrow-down-bold-outline::before{content:"\\F09BF"}.mdi-arrow-down-box::before{content:"\\F06C0"}.mdi-arrow-down-circle::before{content:"\\F0CDB"}.mdi-arrow-down-circle-outline::before{content:"\\F0CDC"}.mdi-arrow-down-drop-circle::before{content:"\\F004A"}.mdi-arrow-down-drop-circle-outline::before{content:"\\F004B"}.mdi-arrow-down-thick::before{content:"\\F0046"}.mdi-arrow-expand::before{content:"\\F0616"}.mdi-arrow-expand-all::before{content:"\\F004C"}.mdi-arrow-expand-down::before{content:"\\F0796"}.mdi-arrow-expand-horizontal::before{content:"\\F084E"}.mdi-arrow-expand-left::before{content:"\\F0797"}.mdi-arrow-expand-right::before{content:"\\F0798"}.mdi-arrow-expand-up::before{content:"\\F0799"}.mdi-arrow-expand-vertical::before{content:"\\F084F"}.mdi-arrow-horizontal-lock::before{content:"\\F115B"}.mdi-arrow-left::before{content:"\\F004D"}.mdi-arrow-left-bold::before{content:"\\F0731"}.mdi-arrow-left-bold-box::before{content:"\\F0732"}.mdi-arrow-left-bold-box-outline::before{content:"\\F0733"}.mdi-arrow-left-bold-circle::before{content:"\\F004F"}.mdi-arrow-left-bold-circle-outline::before{content:"\\F0050"}.mdi-arrow-left-bold-hexagon-outline::before{content:"\\F0051"}.mdi-arrow-left-bold-outline::before{content:"\\F09C0"}.mdi-arrow-left-box::before{content:"\\F06C1"}.mdi-arrow-left-circle::before{content:"\\F0CDD"}.mdi-arrow-left-circle-outline::before{content:"\\F0CDE"}.mdi-arrow-left-drop-circle::before{content:"\\F0052"}.mdi-arrow-left-drop-circle-outline::before{content:"\\F0053"}.mdi-arrow-left-right::before{content:"\\F0E73"}.mdi-arrow-left-right-bold::before{content:"\\F0E74"}.mdi-arrow-left-right-bold-outline::before{content:"\\F09C1"}.mdi-arrow-left-thick::before{content:"\\F004E"}.mdi-arrow-right::before{content:"\\F0054"}.mdi-arrow-right-bold::before{content:"\\F0734"}.mdi-arrow-right-bold-box::before{content:"\\F0735"}.mdi-arrow-right-bold-box-outline::before{content:"\\F0736"}.mdi-arrow-right-bold-circle::before{content:"\\F0056"}.mdi-arrow-right-bold-circle-outline::before{content:"\\F0057"}.mdi-arrow-right-bold-hexagon-outline::before{content:"\\F0058"}.mdi-arrow-right-bold-outline::before{content:"\\F09C2"}.mdi-arrow-right-box::before{content:"\\F06C2"}.mdi-arrow-right-circle::before{content:"\\F0CDF"}.mdi-arrow-right-circle-outline::before{content:"\\F0CE0"}.mdi-arrow-right-drop-circle::before{content:"\\F0059"}.mdi-arrow-right-drop-circle-outline::before{content:"\\F005A"}.mdi-arrow-right-thick::before{content:"\\F0055"}.mdi-arrow-split-horizontal::before{content:"\\F093B"}.mdi-arrow-split-vertical::before{content:"\\F093C"}.mdi-arrow-top-left::before{content:"\\F005B"}.mdi-arrow-top-left-bold-outline::before{content:"\\F09C3"}.mdi-arrow-top-left-bottom-right::before{content:"\\F0E75"}.mdi-arrow-top-left-bottom-right-bold::before{content:"\\F0E76"}.mdi-arrow-top-left-thick::before{content:"\\F09C4"}.mdi-arrow-top-right::before{content:"\\F005C"}.mdi-arrow-top-right-bold-outline::before{content:"\\F09C5"}.mdi-arrow-top-right-bottom-left::before{content:"\\F0E77"}.mdi-arrow-top-right-bottom-left-bold::before{content:"\\F0E78"}.mdi-arrow-top-right-thick::before{content:"\\F09C6"}.mdi-arrow-up::before{content:"\\F005D"}.mdi-arrow-up-bold::before{content:"\\F0737"}.mdi-arrow-up-bold-box::before{content:"\\F0738"}.mdi-arrow-up-bold-box-outline::before{content:"\\F0739"}.mdi-arrow-up-bold-circle::before{content:"\\F005F"}.mdi-arrow-up-bold-circle-outline::before{content:"\\F0060"}.mdi-arrow-up-bold-hexagon-outline::before{content:"\\F0061"}.mdi-arrow-up-bold-outline::before{content:"\\F09C7"}.mdi-arrow-up-box::before{content:"\\F06C3"}.mdi-arrow-up-circle::before{content:"\\F0CE1"}.mdi-arrow-up-circle-outline::before{content:"\\F0CE2"}.mdi-arrow-up-down::before{content:"\\F0E79"}.mdi-arrow-up-down-bold::before{content:"\\F0E7A"}.mdi-arrow-up-down-bold-outline::before{content:"\\F09C8"}.mdi-arrow-up-drop-circle::before{content:"\\F0062"}.mdi-arrow-up-drop-circle-outline::before{content:"\\F0063"}.mdi-arrow-up-thick::before{content:"\\F005E"}.mdi-arrow-vertical-lock::before{content:"\\F115C"}.mdi-artstation::before{content:"\\F0B5B"}.mdi-aspect-ratio::before{content:"\\F0A24"}.mdi-assistant::before{content:"\\F0064"}.mdi-asterisk::before{content:"\\F06C4"}.mdi-at::before{content:"\\F0065"}.mdi-atlassian::before{content:"\\F0804"}.mdi-atm::before{content:"\\F0D47"}.mdi-atom::before{content:"\\F0768"}.mdi-atom-variant::before{content:"\\F0E7B"}.mdi-attachment::before{content:"\\F0066"}.mdi-audio-video::before{content:"\\F093D"}.mdi-audio-video-off::before{content:"\\F11B6"}.mdi-augmented-reality::before{content:"\\F0850"}.mdi-auto-download::before{content:"\\F137E"}.mdi-auto-fix::before{content:"\\F0068"}.mdi-auto-upload::before{content:"\\F0069"}.mdi-autorenew::before{content:"\\F006A"}.mdi-av-timer::before{content:"\\F006B"}.mdi-aws::before{content:"\\F0E0F"}.mdi-axe::before{content:"\\F08C8"}.mdi-axis::before{content:"\\F0D48"}.mdi-axis-arrow::before{content:"\\F0D49"}.mdi-axis-arrow-info::before{content:"\\F140E"}.mdi-axis-arrow-lock::before{content:"\\F0D4A"}.mdi-axis-lock::before{content:"\\F0D4B"}.mdi-axis-x-arrow::before{content:"\\F0D4C"}.mdi-axis-x-arrow-lock::before{content:"\\F0D4D"}.mdi-axis-x-rotate-clockwise::before{content:"\\F0D4E"}.mdi-axis-x-rotate-counterclockwise::before{content:"\\F0D4F"}.mdi-axis-x-y-arrow-lock::before{content:"\\F0D50"}.mdi-axis-y-arrow::before{content:"\\F0D51"}.mdi-axis-y-arrow-lock::before{content:"\\F0D52"}.mdi-axis-y-rotate-clockwise::before{content:"\\F0D53"}.mdi-axis-y-rotate-counterclockwise::before{content:"\\F0D54"}.mdi-axis-z-arrow::before{content:"\\F0D55"}.mdi-axis-z-arrow-lock::before{content:"\\F0D56"}.mdi-axis-z-rotate-clockwise::before{content:"\\F0D57"}.mdi-axis-z-rotate-counterclockwise::before{content:"\\F0D58"}.mdi-babel::before{content:"\\F0A25"}.mdi-baby::before{content:"\\F006C"}.mdi-baby-bottle::before{content:"\\F0F39"}.mdi-baby-bottle-outline::before{content:"\\F0F3A"}.mdi-baby-buggy::before{content:"\\F13E0"}.mdi-baby-carriage::before{content:"\\F068F"}.mdi-baby-carriage-off::before{content:"\\F0FA0"}.mdi-baby-face::before{content:"\\F0E7C"}.mdi-baby-face-outline::before{content:"\\F0E7D"}.mdi-backburger::before{content:"\\F006D"}.mdi-backspace::before{content:"\\F006E"}.mdi-backspace-outline::before{content:"\\F0B5C"}.mdi-backspace-reverse::before{content:"\\F0E7E"}.mdi-backspace-reverse-outline::before{content:"\\F0E7F"}.mdi-backup-restore::before{content:"\\F006F"}.mdi-bacteria::before{content:"\\F0ED5"}.mdi-bacteria-outline::before{content:"\\F0ED6"}.mdi-badge-account::before{content:"\\F0DA7"}.mdi-badge-account-alert::before{content:"\\F0DA8"}.mdi-badge-account-alert-outline::before{content:"\\F0DA9"}.mdi-badge-account-horizontal::before{content:"\\F0E0D"}.mdi-badge-account-horizontal-outline::before{content:"\\F0E0E"}.mdi-badge-account-outline::before{content:"\\F0DAA"}.mdi-badminton::before{content:"\\F0851"}.mdi-bag-carry-on::before{content:"\\F0F3B"}.mdi-bag-carry-on-check::before{content:"\\F0D65"}.mdi-bag-carry-on-off::before{content:"\\F0F3C"}.mdi-bag-checked::before{content:"\\F0F3D"}.mdi-bag-personal::before{content:"\\F0E10"}.mdi-bag-personal-off::before{content:"\\F0E11"}.mdi-bag-personal-off-outline::before{content:"\\F0E12"}.mdi-bag-personal-outline::before{content:"\\F0E13"}.mdi-baguette::before{content:"\\F0F3E"}.mdi-balloon::before{content:"\\F0A26"}.mdi-ballot::before{content:"\\F09C9"}.mdi-ballot-outline::before{content:"\\F09CA"}.mdi-ballot-recount::before{content:"\\F0C39"}.mdi-ballot-recount-outline::before{content:"\\F0C3A"}.mdi-bandage::before{content:"\\F0DAF"}.mdi-bandcamp::before{content:"\\F0675"}.mdi-bank::before{content:"\\F0070"}.mdi-bank-minus::before{content:"\\F0DB0"}.mdi-bank-outline::before{content:"\\F0E80"}.mdi-bank-plus::before{content:"\\F0DB1"}.mdi-bank-remove::before{content:"\\F0DB2"}.mdi-bank-transfer::before{content:"\\F0A27"}.mdi-bank-transfer-in::before{content:"\\F0A28"}.mdi-bank-transfer-out::before{content:"\\F0A29"}.mdi-barcode::before{content:"\\F0071"}.mdi-barcode-off::before{content:"\\F1236"}.mdi-barcode-scan::before{content:"\\F0072"}.mdi-barley::before{content:"\\F0073"}.mdi-barley-off::before{content:"\\F0B5D"}.mdi-barn::before{content:"\\F0B5E"}.mdi-barrel::before{content:"\\F0074"}.mdi-baseball::before{content:"\\F0852"}.mdi-baseball-bat::before{content:"\\F0853"}.mdi-bash::before{content:"\\F1183"}.mdi-basket::before{content:"\\F0076"}.mdi-basket-fill::before{content:"\\F0077"}.mdi-basket-outline::before{content:"\\F1181"}.mdi-basket-unfill::before{content:"\\F0078"}.mdi-basketball::before{content:"\\F0806"}.mdi-basketball-hoop::before{content:"\\F0C3B"}.mdi-basketball-hoop-outline::before{content:"\\F0C3C"}.mdi-bat::before{content:"\\F0B5F"}.mdi-battery::before{content:"\\F0079"}.mdi-battery-10::before{content:"\\F007A"}.mdi-battery-10-bluetooth::before{content:"\\F093E"}.mdi-battery-20::before{content:"\\F007B"}.mdi-battery-20-bluetooth::before{content:"\\F093F"}.mdi-battery-30::before{content:"\\F007C"}.mdi-battery-30-bluetooth::before{content:"\\F0940"}.mdi-battery-40::before{content:"\\F007D"}.mdi-battery-40-bluetooth::before{content:"\\F0941"}.mdi-battery-50::before{content:"\\F007E"}.mdi-battery-50-bluetooth::before{content:"\\F0942"}.mdi-battery-60::before{content:"\\F007F"}.mdi-battery-60-bluetooth::before{content:"\\F0943"}.mdi-battery-70::before{content:"\\F0080"}.mdi-battery-70-bluetooth::before{content:"\\F0944"}.mdi-battery-80::before{content:"\\F0081"}.mdi-battery-80-bluetooth::before{content:"\\F0945"}.mdi-battery-90::before{content:"\\F0082"}.mdi-battery-90-bluetooth::before{content:"\\F0946"}.mdi-battery-alert::before{content:"\\F0083"}.mdi-battery-alert-bluetooth::before{content:"\\F0947"}.mdi-battery-alert-variant::before{content:"\\F10CC"}.mdi-battery-alert-variant-outline::before{content:"\\F10CD"}.mdi-battery-bluetooth::before{content:"\\F0948"}.mdi-battery-bluetooth-variant::before{content:"\\F0949"}.mdi-battery-charging::before{content:"\\F0084"}.mdi-battery-charging-10::before{content:"\\F089C"}.mdi-battery-charging-100::before{content:"\\F0085"}.mdi-battery-charging-20::before{content:"\\F0086"}.mdi-battery-charging-30::before{content:"\\F0087"}.mdi-battery-charging-40::before{content:"\\F0088"}.mdi-battery-charging-50::before{content:"\\F089D"}.mdi-battery-charging-60::before{content:"\\F0089"}.mdi-battery-charging-70::before{content:"\\F089E"}.mdi-battery-charging-80::before{content:"\\F008A"}.mdi-battery-charging-90::before{content:"\\F008B"}.mdi-battery-charging-high::before{content:"\\F12A6"}.mdi-battery-charging-low::before{content:"\\F12A4"}.mdi-battery-charging-medium::before{content:"\\F12A5"}.mdi-battery-charging-outline::before{content:"\\F089F"}.mdi-battery-charging-wireless::before{content:"\\F0807"}.mdi-battery-charging-wireless-10::before{content:"\\F0808"}.mdi-battery-charging-wireless-20::before{content:"\\F0809"}.mdi-battery-charging-wireless-30::before{content:"\\F080A"}.mdi-battery-charging-wireless-40::before{content:"\\F080B"}.mdi-battery-charging-wireless-50::before{content:"\\F080C"}.mdi-battery-charging-wireless-60::before{content:"\\F080D"}.mdi-battery-charging-wireless-70::before{content:"\\F080E"}.mdi-battery-charging-wireless-80::before{content:"\\F080F"}.mdi-battery-charging-wireless-90::before{content:"\\F0810"}.mdi-battery-charging-wireless-alert::before{content:"\\F0811"}.mdi-battery-charging-wireless-outline::before{content:"\\F0812"}.mdi-battery-heart::before{content:"\\F120F"}.mdi-battery-heart-outline::before{content:"\\F1210"}.mdi-battery-heart-variant::before{content:"\\F1211"}.mdi-battery-high::before{content:"\\F12A3"}.mdi-battery-low::before{content:"\\F12A1"}.mdi-battery-medium::before{content:"\\F12A2"}.mdi-battery-minus::before{content:"\\F008C"}.mdi-battery-negative::before{content:"\\F008D"}.mdi-battery-off::before{content:"\\F125D"}.mdi-battery-off-outline::before{content:"\\F125E"}.mdi-battery-outline::before{content:"\\F008E"}.mdi-battery-plus::before{content:"\\F008F"}.mdi-battery-positive::before{content:"\\F0090"}.mdi-battery-unknown::before{content:"\\F0091"}.mdi-battery-unknown-bluetooth::before{content:"\\F094A"}.mdi-battlenet::before{content:"\\F0B60"}.mdi-beach::before{content:"\\F0092"}.mdi-beaker::before{content:"\\F0CEA"}.mdi-beaker-alert::before{content:"\\F1229"}.mdi-beaker-alert-outline::before{content:"\\F122A"}.mdi-beaker-check::before{content:"\\F122B"}.mdi-beaker-check-outline::before{content:"\\F122C"}.mdi-beaker-minus::before{content:"\\F122D"}.mdi-beaker-minus-outline::before{content:"\\F122E"}.mdi-beaker-outline::before{content:"\\F0690"}.mdi-beaker-plus::before{content:"\\F122F"}.mdi-beaker-plus-outline::before{content:"\\F1230"}.mdi-beaker-question::before{content:"\\F1231"}.mdi-beaker-question-outline::before{content:"\\F1232"}.mdi-beaker-remove::before{content:"\\F1233"}.mdi-beaker-remove-outline::before{content:"\\F1234"}.mdi-bed::before{content:"\\F02E3"}.mdi-bed-double::before{content:"\\F0FD4"}.mdi-bed-double-outline::before{content:"\\F0FD3"}.mdi-bed-empty::before{content:"\\F08A0"}.mdi-bed-king::before{content:"\\F0FD2"}.mdi-bed-king-outline::before{content:"\\F0FD1"}.mdi-bed-outline::before{content:"\\F0099"}.mdi-bed-queen::before{content:"\\F0FD0"}.mdi-bed-queen-outline::before{content:"\\F0FDB"}.mdi-bed-single::before{content:"\\F106D"}.mdi-bed-single-outline::before{content:"\\F106E"}.mdi-bee::before{content:"\\F0FA1"}.mdi-bee-flower::before{content:"\\F0FA2"}.mdi-beehive-off-outline::before{content:"\\F13ED"}.mdi-beehive-outline::before{content:"\\F10CE"}.mdi-beer::before{content:"\\F0098"}.mdi-beer-outline::before{content:"\\F130C"}.mdi-bell::before{content:"\\F009A"}.mdi-bell-alert::before{content:"\\F0D59"}.mdi-bell-alert-outline::before{content:"\\F0E81"}.mdi-bell-cancel::before{content:"\\F13E7"}.mdi-bell-cancel-outline::before{content:"\\F13E8"}.mdi-bell-check::before{content:"\\F11E5"}.mdi-bell-check-outline::before{content:"\\F11E6"}.mdi-bell-circle::before{content:"\\F0D5A"}.mdi-bell-circle-outline::before{content:"\\F0D5B"}.mdi-bell-minus::before{content:"\\F13E9"}.mdi-bell-minus-outline::before{content:"\\F13EA"}.mdi-bell-off::before{content:"\\F009B"}.mdi-bell-off-outline::before{content:"\\F0A91"}.mdi-bell-outline::before{content:"\\F009C"}.mdi-bell-plus::before{content:"\\F009D"}.mdi-bell-plus-outline::before{content:"\\F0A92"}.mdi-bell-remove::before{content:"\\F13EB"}.mdi-bell-remove-outline::before{content:"\\F13EC"}.mdi-bell-ring::before{content:"\\F009E"}.mdi-bell-ring-outline::before{content:"\\F009F"}.mdi-bell-sleep::before{content:"\\F00A0"}.mdi-bell-sleep-outline::before{content:"\\F0A93"}.mdi-beta::before{content:"\\F00A1"}.mdi-betamax::before{content:"\\F09CB"}.mdi-biathlon::before{content:"\\F0E14"}.mdi-bicycle::before{content:"\\F109C"}.mdi-bicycle-basket::before{content:"\\F1235"}.mdi-bike::before{content:"\\F00A3"}.mdi-bike-fast::before{content:"\\F111F"}.mdi-billboard::before{content:"\\F1010"}.mdi-billiards::before{content:"\\F0B61"}.mdi-billiards-rack::before{content:"\\F0B62"}.mdi-binoculars::before{content:"\\F00A5"}.mdi-bio::before{content:"\\F00A6"}.mdi-biohazard::before{content:"\\F00A7"}.mdi-bitbucket::before{content:"\\F00A8"}.mdi-bitcoin::before{content:"\\F0813"}.mdi-black-mesa::before{content:"\\F00A9"}.mdi-blender::before{content:"\\F0CEB"}.mdi-blender-software::before{content:"\\F00AB"}.mdi-blinds::before{content:"\\F00AC"}.mdi-blinds-open::before{content:"\\F1011"}.mdi-block-helper::before{content:"\\F00AD"}.mdi-blogger::before{content:"\\F00AE"}.mdi-blood-bag::before{content:"\\F0CEC"}.mdi-bluetooth::before{content:"\\F00AF"}.mdi-bluetooth-audio::before{content:"\\F00B0"}.mdi-bluetooth-connect::before{content:"\\F00B1"}.mdi-bluetooth-off::before{content:"\\F00B2"}.mdi-bluetooth-settings::before{content:"\\F00B3"}.mdi-bluetooth-transfer::before{content:"\\F00B4"}.mdi-blur::before{content:"\\F00B5"}.mdi-blur-linear::before{content:"\\F00B6"}.mdi-blur-off::before{content:"\\F00B7"}.mdi-blur-radial::before{content:"\\F00B8"}.mdi-bolnisi-cross::before{content:"\\F0CED"}.mdi-bolt::before{content:"\\F0DB3"}.mdi-bomb::before{content:"\\F0691"}.mdi-bomb-off::before{content:"\\F06C5"}.mdi-bone::before{content:"\\F00B9"}.mdi-book::before{content:"\\F00BA"}.mdi-book-account::before{content:"\\F13AD"}.mdi-book-account-outline::before{content:"\\F13AE"}.mdi-book-alphabet::before{content:"\\F061D"}.mdi-book-cross::before{content:"\\F00A2"}.mdi-book-information-variant::before{content:"\\F106F"}.mdi-book-lock::before{content:"\\F079A"}.mdi-book-lock-open::before{content:"\\F079B"}.mdi-book-minus::before{content:"\\F05D9"}.mdi-book-minus-multiple::before{content:"\\F0A94"}.mdi-book-minus-multiple-outline::before{content:"\\F090B"}.mdi-book-multiple::before{content:"\\F00BB"}.mdi-book-multiple-outline::before{content:"\\F0436"}.mdi-book-music::before{content:"\\F0067"}.mdi-book-open::before{content:"\\F00BD"}.mdi-book-open-outline::before{content:"\\F0B63"}.mdi-book-open-page-variant::before{content:"\\F05DA"}.mdi-book-open-variant::before{content:"\\F00BE"}.mdi-book-outline::before{content:"\\F0B64"}.mdi-book-play::before{content:"\\F0E82"}.mdi-book-play-outline::before{content:"\\F0E83"}.mdi-book-plus::before{content:"\\F05DB"}.mdi-book-plus-multiple::before{content:"\\F0A95"}.mdi-book-plus-multiple-outline::before{content:"\\F0ADE"}.mdi-book-remove::before{content:"\\F0A97"}.mdi-book-remove-multiple::before{content:"\\F0A96"}.mdi-book-remove-multiple-outline::before{content:"\\F04CA"}.mdi-book-search::before{content:"\\F0E84"}.mdi-book-search-outline::before{content:"\\F0E85"}.mdi-book-variant::before{content:"\\F00BF"}.mdi-book-variant-multiple::before{content:"\\F00BC"}.mdi-bookmark::before{content:"\\F00C0"}.mdi-bookmark-check::before{content:"\\F00C1"}.mdi-bookmark-check-outline::before{content:"\\F137B"}.mdi-bookmark-minus::before{content:"\\F09CC"}.mdi-bookmark-minus-outline::before{content:"\\F09CD"}.mdi-bookmark-multiple::before{content:"\\F0E15"}.mdi-bookmark-multiple-outline::before{content:"\\F0E16"}.mdi-bookmark-music::before{content:"\\F00C2"}.mdi-bookmark-music-outline::before{content:"\\F1379"}.mdi-bookmark-off::before{content:"\\F09CE"}.mdi-bookmark-off-outline::before{content:"\\F09CF"}.mdi-bookmark-outline::before{content:"\\F00C3"}.mdi-bookmark-plus::before{content:"\\F00C5"}.mdi-bookmark-plus-outline::before{content:"\\F00C4"}.mdi-bookmark-remove::before{content:"\\F00C6"}.mdi-bookmark-remove-outline::before{content:"\\F137A"}.mdi-bookshelf::before{content:"\\F125F"}.mdi-boom-gate::before{content:"\\F0E86"}.mdi-boom-gate-alert::before{content:"\\F0E87"}.mdi-boom-gate-alert-outline::before{content:"\\F0E88"}.mdi-boom-gate-down::before{content:"\\F0E89"}.mdi-boom-gate-down-outline::before{content:"\\F0E8A"}.mdi-boom-gate-outline::before{content:"\\F0E8B"}.mdi-boom-gate-up::before{content:"\\F0E8C"}.mdi-boom-gate-up-outline::before{content:"\\F0E8D"}.mdi-boombox::before{content:"\\F05DC"}.mdi-boomerang::before{content:"\\F10CF"}.mdi-bootstrap::before{content:"\\F06C6"}.mdi-border-all::before{content:"\\F00C7"}.mdi-border-all-variant::before{content:"\\F08A1"}.mdi-border-bottom::before{content:"\\F00C8"}.mdi-border-bottom-variant::before{content:"\\F08A2"}.mdi-border-color::before{content:"\\F00C9"}.mdi-border-horizontal::before{content:"\\F00CA"}.mdi-border-inside::before{content:"\\F00CB"}.mdi-border-left::before{content:"\\F00CC"}.mdi-border-left-variant::before{content:"\\F08A3"}.mdi-border-none::before{content:"\\F00CD"}.mdi-border-none-variant::before{content:"\\F08A4"}.mdi-border-outside::before{content:"\\F00CE"}.mdi-border-right::before{content:"\\F00CF"}.mdi-border-right-variant::before{content:"\\F08A5"}.mdi-border-style::before{content:"\\F00D0"}.mdi-border-top::before{content:"\\F00D1"}.mdi-border-top-variant::before{content:"\\F08A6"}.mdi-border-vertical::before{content:"\\F00D2"}.mdi-bottle-soda::before{content:"\\F1070"}.mdi-bottle-soda-classic::before{content:"\\F1071"}.mdi-bottle-soda-classic-outline::before{content:"\\F1363"}.mdi-bottle-soda-outline::before{content:"\\F1072"}.mdi-bottle-tonic::before{content:"\\F112E"}.mdi-bottle-tonic-outline::before{content:"\\F112F"}.mdi-bottle-tonic-plus::before{content:"\\F1130"}.mdi-bottle-tonic-plus-outline::before{content:"\\F1131"}.mdi-bottle-tonic-skull::before{content:"\\F1132"}.mdi-bottle-tonic-skull-outline::before{content:"\\F1133"}.mdi-bottle-wine::before{content:"\\F0854"}.mdi-bottle-wine-outline::before{content:"\\F1310"}.mdi-bow-tie::before{content:"\\F0678"}.mdi-bowl::before{content:"\\F028E"}.mdi-bowl-mix::before{content:"\\F0617"}.mdi-bowl-mix-outline::before{content:"\\F02E4"}.mdi-bowl-outline::before{content:"\\F02A9"}.mdi-bowling::before{content:"\\F00D3"}.mdi-box::before{content:"\\F00D4"}.mdi-box-cutter::before{content:"\\F00D5"}.mdi-box-cutter-off::before{content:"\\F0B4A"}.mdi-box-shadow::before{content:"\\F0637"}.mdi-boxing-glove::before{content:"\\F0B65"}.mdi-braille::before{content:"\\F09D0"}.mdi-brain::before{content:"\\F09D1"}.mdi-bread-slice::before{content:"\\F0CEE"}.mdi-bread-slice-outline::before{content:"\\F0CEF"}.mdi-bridge::before{content:"\\F0618"}.mdi-briefcase::before{content:"\\F00D6"}.mdi-briefcase-account::before{content:"\\F0CF0"}.mdi-briefcase-account-outline::before{content:"\\F0CF1"}.mdi-briefcase-check::before{content:"\\F00D7"}.mdi-briefcase-check-outline::before{content:"\\F131E"}.mdi-briefcase-clock::before{content:"\\F10D0"}.mdi-briefcase-clock-outline::before{content:"\\F10D1"}.mdi-briefcase-download::before{content:"\\F00D8"}.mdi-briefcase-download-outline::before{content:"\\F0C3D"}.mdi-briefcase-edit::before{content:"\\F0A98"}.mdi-briefcase-edit-outline::before{content:"\\F0C3E"}.mdi-briefcase-minus::before{content:"\\F0A2A"}.mdi-briefcase-minus-outline::before{content:"\\F0C3F"}.mdi-briefcase-outline::before{content:"\\F0814"}.mdi-briefcase-plus::before{content:"\\F0A2B"}.mdi-briefcase-plus-outline::before{content:"\\F0C40"}.mdi-briefcase-remove::before{content:"\\F0A2C"}.mdi-briefcase-remove-outline::before{content:"\\F0C41"}.mdi-briefcase-search::before{content:"\\F0A2D"}.mdi-briefcase-search-outline::before{content:"\\F0C42"}.mdi-briefcase-upload::before{content:"\\F00D9"}.mdi-briefcase-upload-outline::before{content:"\\F0C43"}.mdi-briefcase-variant::before{content:"\\F1494"}.mdi-briefcase-variant-outline::before{content:"\\F1495"}.mdi-brightness-1::before{content:"\\F00DA"}.mdi-brightness-2::before{content:"\\F00DB"}.mdi-brightness-3::before{content:"\\F00DC"}.mdi-brightness-4::before{content:"\\F00DD"}.mdi-brightness-5::before{content:"\\F00DE"}.mdi-brightness-6::before{content:"\\F00DF"}.mdi-brightness-7::before{content:"\\F00E0"}.mdi-brightness-auto::before{content:"\\F00E1"}.mdi-brightness-percent::before{content:"\\F0CF2"}.mdi-broom::before{content:"\\F00E2"}.mdi-brush::before{content:"\\F00E3"}.mdi-bucket::before{content:"\\F1415"}.mdi-bucket-outline::before{content:"\\F1416"}.mdi-buddhism::before{content:"\\F094B"}.mdi-buffer::before{content:"\\F0619"}.mdi-buffet::before{content:"\\F0578"}.mdi-bug::before{content:"\\F00E4"}.mdi-bug-check::before{content:"\\F0A2E"}.mdi-bug-check-outline::before{content:"\\F0A2F"}.mdi-bug-outline::before{content:"\\F0A30"}.mdi-bugle::before{content:"\\F0DB4"}.mdi-bulldozer::before{content:"\\F0B22"}.mdi-bullet::before{content:"\\F0CF3"}.mdi-bulletin-board::before{content:"\\F00E5"}.mdi-bullhorn::before{content:"\\F00E6"}.mdi-bullhorn-outline::before{content:"\\F0B23"}.mdi-bullseye::before{content:"\\F05DD"}.mdi-bullseye-arrow::before{content:"\\F08C9"}.mdi-bulma::before{content:"\\F12E7"}.mdi-bunk-bed::before{content:"\\F1302"}.mdi-bunk-bed-outline::before{content:"\\F0097"}.mdi-bus::before{content:"\\F00E7"}.mdi-bus-alert::before{content:"\\F0A99"}.mdi-bus-articulated-end::before{content:"\\F079C"}.mdi-bus-articulated-front::before{content:"\\F079D"}.mdi-bus-clock::before{content:"\\F08CA"}.mdi-bus-double-decker::before{content:"\\F079E"}.mdi-bus-marker::before{content:"\\F1212"}.mdi-bus-multiple::before{content:"\\F0F3F"}.mdi-bus-school::before{content:"\\F079F"}.mdi-bus-side::before{content:"\\F07A0"}.mdi-bus-stop::before{content:"\\F1012"}.mdi-bus-stop-covered::before{content:"\\F1013"}.mdi-bus-stop-uncovered::before{content:"\\F1014"}.mdi-cable-data::before{content:"\\F1394"}.mdi-cached::before{content:"\\F00E8"}.mdi-cactus::before{content:"\\F0DB5"}.mdi-cake::before{content:"\\F00E9"}.mdi-cake-layered::before{content:"\\F00EA"}.mdi-cake-variant::before{content:"\\F00EB"}.mdi-calculator::before{content:"\\F00EC"}.mdi-calculator-variant::before{content:"\\F0A9A"}.mdi-calendar::before{content:"\\F00ED"}.mdi-calendar-account::before{content:"\\F0ED7"}.mdi-calendar-account-outline::before{content:"\\F0ED8"}.mdi-calendar-alert::before{content:"\\F0A31"}.mdi-calendar-arrow-left::before{content:"\\F1134"}.mdi-calendar-arrow-right::before{content:"\\F1135"}.mdi-calendar-blank::before{content:"\\F00EE"}.mdi-calendar-blank-multiple::before{content:"\\F1073"}.mdi-calendar-blank-outline::before{content:"\\F0B66"}.mdi-calendar-check::before{content:"\\F00EF"}.mdi-calendar-check-outline::before{content:"\\F0C44"}.mdi-calendar-clock::before{content:"\\F00F0"}.mdi-calendar-edit::before{content:"\\F08A7"}.mdi-calendar-export::before{content:"\\F0B24"}.mdi-calendar-heart::before{content:"\\F09D2"}.mdi-calendar-import::before{content:"\\F0B25"}.mdi-calendar-minus::before{content:"\\F0D5C"}.mdi-calendar-month::before{content:"\\F0E17"}.mdi-calendar-month-outline::before{content:"\\F0E18"}.mdi-calendar-multiple::before{content:"\\F00F1"}.mdi-calendar-multiple-check::before{content:"\\F00F2"}.mdi-calendar-multiselect::before{content:"\\F0A32"}.mdi-calendar-outline::before{content:"\\F0B67"}.mdi-calendar-plus::before{content:"\\F00F3"}.mdi-calendar-question::before{content:"\\F0692"}.mdi-calendar-range::before{content:"\\F0679"}.mdi-calendar-range-outline::before{content:"\\F0B68"}.mdi-calendar-refresh::before{content:"\\F01E1"}.mdi-calendar-refresh-outline::before{content:"\\F0203"}.mdi-calendar-remove::before{content:"\\F00F4"}.mdi-calendar-remove-outline::before{content:"\\F0C45"}.mdi-calendar-search::before{content:"\\F094C"}.mdi-calendar-star::before{content:"\\F09D3"}.mdi-calendar-sync::before{content:"\\F0E8E"}.mdi-calendar-sync-outline::before{content:"\\F0E8F"}.mdi-calendar-text::before{content:"\\F00F5"}.mdi-calendar-text-outline::before{content:"\\F0C46"}.mdi-calendar-today::before{content:"\\F00F6"}.mdi-calendar-week::before{content:"\\F0A33"}.mdi-calendar-week-begin::before{content:"\\F0A34"}.mdi-calendar-weekend::before{content:"\\F0ED9"}.mdi-calendar-weekend-outline::before{content:"\\F0EDA"}.mdi-call-made::before{content:"\\F00F7"}.mdi-call-merge::before{content:"\\F00F8"}.mdi-call-missed::before{content:"\\F00F9"}.mdi-call-received::before{content:"\\F00FA"}.mdi-call-split::before{content:"\\F00FB"}.mdi-camcorder::before{content:"\\F00FC"}.mdi-camcorder-off::before{content:"\\F00FF"}.mdi-camera::before{content:"\\F0100"}.mdi-camera-account::before{content:"\\F08CB"}.mdi-camera-burst::before{content:"\\F0693"}.mdi-camera-control::before{content:"\\F0B69"}.mdi-camera-enhance::before{content:"\\F0101"}.mdi-camera-enhance-outline::before{content:"\\F0B6A"}.mdi-camera-front::before{content:"\\F0102"}.mdi-camera-front-variant::before{content:"\\F0103"}.mdi-camera-gopro::before{content:"\\F07A1"}.mdi-camera-image::before{content:"\\F08CC"}.mdi-camera-iris::before{content:"\\F0104"}.mdi-camera-metering-center::before{content:"\\F07A2"}.mdi-camera-metering-matrix::before{content:"\\F07A3"}.mdi-camera-metering-partial::before{content:"\\F07A4"}.mdi-camera-metering-spot::before{content:"\\F07A5"}.mdi-camera-off::before{content:"\\F05DF"}.mdi-camera-outline::before{content:"\\F0D5D"}.mdi-camera-party-mode::before{content:"\\F0105"}.mdi-camera-plus::before{content:"\\F0EDB"}.mdi-camera-plus-outline::before{content:"\\F0EDC"}.mdi-camera-rear::before{content:"\\F0106"}.mdi-camera-rear-variant::before{content:"\\F0107"}.mdi-camera-retake::before{content:"\\F0E19"}.mdi-camera-retake-outline::before{content:"\\F0E1A"}.mdi-camera-switch::before{content:"\\F0108"}.mdi-camera-switch-outline::before{content:"\\F084A"}.mdi-camera-timer::before{content:"\\F0109"}.mdi-camera-wireless::before{content:"\\F0DB6"}.mdi-camera-wireless-outline::before{content:"\\F0DB7"}.mdi-campfire::before{content:"\\F0EDD"}.mdi-cancel::before{content:"\\F073A"}.mdi-candle::before{content:"\\F05E2"}.mdi-candycane::before{content:"\\F010A"}.mdi-cannabis::before{content:"\\F07A6"}.mdi-caps-lock::before{content:"\\F0A9B"}.mdi-car::before{content:"\\F010B"}.mdi-car-2-plus::before{content:"\\F1015"}.mdi-car-3-plus::before{content:"\\F1016"}.mdi-car-arrow-left::before{content:"\\F13B2"}.mdi-car-arrow-right::before{content:"\\F13B3"}.mdi-car-back::before{content:"\\F0E1B"}.mdi-car-battery::before{content:"\\F010C"}.mdi-car-brake-abs::before{content:"\\F0C47"}.mdi-car-brake-alert::before{content:"\\F0C48"}.mdi-car-brake-hold::before{content:"\\F0D5E"}.mdi-car-brake-parking::before{content:"\\F0D5F"}.mdi-car-brake-retarder::before{content:"\\F1017"}.mdi-car-child-seat::before{content:"\\F0FA3"}.mdi-car-clutch::before{content:"\\F1018"}.mdi-car-cog::before{content:"\\F13CC"}.mdi-car-connected::before{content:"\\F010D"}.mdi-car-convertible::before{content:"\\F07A7"}.mdi-car-coolant-level::before{content:"\\F1019"}.mdi-car-cruise-control::before{content:"\\F0D60"}.mdi-car-defrost-front::before{content:"\\F0D61"}.mdi-car-defrost-rear::before{content:"\\F0D62"}.mdi-car-door::before{content:"\\F0B6B"}.mdi-car-door-lock::before{content:"\\F109D"}.mdi-car-electric::before{content:"\\F0B6C"}.mdi-car-esp::before{content:"\\F0C49"}.mdi-car-estate::before{content:"\\F07A8"}.mdi-car-hatchback::before{content:"\\F07A9"}.mdi-car-info::before{content:"\\F11BE"}.mdi-car-key::before{content:"\\F0B6D"}.mdi-car-light-dimmed::before{content:"\\F0C4A"}.mdi-car-light-fog::before{content:"\\F0C4B"}.mdi-car-light-high::before{content:"\\F0C4C"}.mdi-car-limousine::before{content:"\\F08CD"}.mdi-car-multiple::before{content:"\\F0B6E"}.mdi-car-off::before{content:"\\F0E1C"}.mdi-car-parking-lights::before{content:"\\F0D63"}.mdi-car-pickup::before{content:"\\F07AA"}.mdi-car-seat::before{content:"\\F0FA4"}.mdi-car-seat-cooler::before{content:"\\F0FA5"}.mdi-car-seat-heater::before{content:"\\F0FA6"}.mdi-car-settings::before{content:"\\F13CD"}.mdi-car-shift-pattern::before{content:"\\F0F40"}.mdi-car-side::before{content:"\\F07AB"}.mdi-car-sports::before{content:"\\F07AC"}.mdi-car-tire-alert::before{content:"\\F0C4D"}.mdi-car-traction-control::before{content:"\\F0D64"}.mdi-car-turbocharger::before{content:"\\F101A"}.mdi-car-wash::before{content:"\\F010E"}.mdi-car-windshield::before{content:"\\F101B"}.mdi-car-windshield-outline::before{content:"\\F101C"}.mdi-carabiner::before{content:"\\F14C0"}.mdi-caravan::before{content:"\\F07AD"}.mdi-card::before{content:"\\F0B6F"}.mdi-card-account-details::before{content:"\\F05D2"}.mdi-card-account-details-outline::before{content:"\\F0DAB"}.mdi-card-account-details-star::before{content:"\\F02A3"}.mdi-card-account-details-star-outline::before{content:"\\F06DB"}.mdi-card-account-mail::before{content:"\\F018E"}.mdi-card-account-mail-outline::before{content:"\\F0E98"}.mdi-card-account-phone::before{content:"\\F0E99"}.mdi-card-account-phone-outline::before{content:"\\F0E9A"}.mdi-card-bulleted::before{content:"\\F0B70"}.mdi-card-bulleted-off::before{content:"\\F0B71"}.mdi-card-bulleted-off-outline::before{content:"\\F0B72"}.mdi-card-bulleted-outline::before{content:"\\F0B73"}.mdi-card-bulleted-settings::before{content:"\\F0B74"}.mdi-card-bulleted-settings-outline::before{content:"\\F0B75"}.mdi-card-outline::before{content:"\\F0B76"}.mdi-card-plus::before{content:"\\F11FF"}.mdi-card-plus-outline::before{content:"\\F1200"}.mdi-card-search::before{content:"\\F1074"}.mdi-card-search-outline::before{content:"\\F1075"}.mdi-card-text::before{content:"\\F0B77"}.mdi-card-text-outline::before{content:"\\F0B78"}.mdi-cards::before{content:"\\F0638"}.mdi-cards-club::before{content:"\\F08CE"}.mdi-cards-diamond::before{content:"\\F08CF"}.mdi-cards-diamond-outline::before{content:"\\F101D"}.mdi-cards-heart::before{content:"\\F08D0"}.mdi-cards-outline::before{content:"\\F0639"}.mdi-cards-playing-outline::before{content:"\\F063A"}.mdi-cards-spade::before{content:"\\F08D1"}.mdi-cards-variant::before{content:"\\F06C7"}.mdi-carrot::before{content:"\\F010F"}.mdi-cart::before{content:"\\F0110"}.mdi-cart-arrow-down::before{content:"\\F0D66"}.mdi-cart-arrow-right::before{content:"\\F0C4E"}.mdi-cart-arrow-up::before{content:"\\F0D67"}.mdi-cart-minus::before{content:"\\F0D68"}.mdi-cart-off::before{content:"\\F066B"}.mdi-cart-outline::before{content:"\\F0111"}.mdi-cart-plus::before{content:"\\F0112"}.mdi-cart-remove::before{content:"\\F0D69"}.mdi-case-sensitive-alt::before{content:"\\F0113"}.mdi-cash::before{content:"\\F0114"}.mdi-cash-100::before{content:"\\F0115"}.mdi-cash-marker::before{content:"\\F0DB8"}.mdi-cash-minus::before{content:"\\F1260"}.mdi-cash-multiple::before{content:"\\F0116"}.mdi-cash-plus::before{content:"\\F1261"}.mdi-cash-refund::before{content:"\\F0A9C"}.mdi-cash-register::before{content:"\\F0CF4"}.mdi-cash-remove::before{content:"\\F1262"}.mdi-cash-usd::before{content:"\\F1176"}.mdi-cash-usd-outline::before{content:"\\F0117"}.mdi-cassette::before{content:"\\F09D4"}.mdi-cast::before{content:"\\F0118"}.mdi-cast-audio::before{content:"\\F101E"}.mdi-cast-connected::before{content:"\\F0119"}.mdi-cast-education::before{content:"\\F0E1D"}.mdi-cast-off::before{content:"\\F078A"}.mdi-castle::before{content:"\\F011A"}.mdi-cat::before{content:"\\F011B"}.mdi-cctv::before{content:"\\F07AE"}.mdi-ceiling-light::before{content:"\\F0769"}.mdi-cellphone::before{content:"\\F011C"}.mdi-cellphone-android::before{content:"\\F011D"}.mdi-cellphone-arrow-down::before{content:"\\F09D5"}.mdi-cellphone-basic::before{content:"\\F011E"}.mdi-cellphone-charging::before{content:"\\F1397"}.mdi-cellphone-cog::before{content:"\\F0951"}.mdi-cellphone-dock::before{content:"\\F011F"}.mdi-cellphone-erase::before{content:"\\F094D"}.mdi-cellphone-information::before{content:"\\F0F41"}.mdi-cellphone-iphone::before{content:"\\F0120"}.mdi-cellphone-key::before{content:"\\F094E"}.mdi-cellphone-link::before{content:"\\F0121"}.mdi-cellphone-link-off::before{content:"\\F0122"}.mdi-cellphone-lock::before{content:"\\F094F"}.mdi-cellphone-message::before{content:"\\F08D3"}.mdi-cellphone-message-off::before{content:"\\F10D2"}.mdi-cellphone-nfc::before{content:"\\F0E90"}.mdi-cellphone-nfc-off::before{content:"\\F12D8"}.mdi-cellphone-off::before{content:"\\F0950"}.mdi-cellphone-play::before{content:"\\F101F"}.mdi-cellphone-screenshot::before{content:"\\F0A35"}.mdi-cellphone-settings::before{content:"\\F0123"}.mdi-cellphone-sound::before{content:"\\F0952"}.mdi-cellphone-text::before{content:"\\F08D2"}.mdi-cellphone-wireless::before{content:"\\F0815"}.mdi-celtic-cross::before{content:"\\F0CF5"}.mdi-centos::before{content:"\\F111A"}.mdi-certificate::before{content:"\\F0124"}.mdi-certificate-outline::before{content:"\\F1188"}.mdi-chair-rolling::before{content:"\\F0F48"}.mdi-chair-school::before{content:"\\F0125"}.mdi-charity::before{content:"\\F0C4F"}.mdi-chart-arc::before{content:"\\F0126"}.mdi-chart-areaspline::before{content:"\\F0127"}.mdi-chart-areaspline-variant::before{content:"\\F0E91"}.mdi-chart-bar::before{content:"\\F0128"}.mdi-chart-bar-stacked::before{content:"\\F076A"}.mdi-chart-bell-curve::before{content:"\\F0C50"}.mdi-chart-bell-curve-cumulative::before{content:"\\F0FA7"}.mdi-chart-bubble::before{content:"\\F05E3"}.mdi-chart-donut::before{content:"\\F07AF"}.mdi-chart-donut-variant::before{content:"\\F07B0"}.mdi-chart-gantt::before{content:"\\F066C"}.mdi-chart-histogram::before{content:"\\F0129"}.mdi-chart-line::before{content:"\\F012A"}.mdi-chart-line-stacked::before{content:"\\F076B"}.mdi-chart-line-variant::before{content:"\\F07B1"}.mdi-chart-multiline::before{content:"\\F08D4"}.mdi-chart-multiple::before{content:"\\F1213"}.mdi-chart-pie::before{content:"\\F012B"}.mdi-chart-ppf::before{content:"\\F1380"}.mdi-chart-sankey::before{content:"\\F11DF"}.mdi-chart-sankey-variant::before{content:"\\F11E0"}.mdi-chart-scatter-plot::before{content:"\\F0E92"}.mdi-chart-scatter-plot-hexbin::before{content:"\\F066D"}.mdi-chart-timeline::before{content:"\\F066E"}.mdi-chart-timeline-variant::before{content:"\\F0E93"}.mdi-chart-tree::before{content:"\\F0E94"}.mdi-chat::before{content:"\\F0B79"}.mdi-chat-alert::before{content:"\\F0B7A"}.mdi-chat-alert-outline::before{content:"\\F12C9"}.mdi-chat-minus::before{content:"\\F1410"}.mdi-chat-minus-outline::before{content:"\\F1413"}.mdi-chat-outline::before{content:"\\F0EDE"}.mdi-chat-plus::before{content:"\\F140F"}.mdi-chat-plus-outline::before{content:"\\F1412"}.mdi-chat-processing::before{content:"\\F0B7B"}.mdi-chat-processing-outline::before{content:"\\F12CA"}.mdi-chat-remove::before{content:"\\F1411"}.mdi-chat-remove-outline::before{content:"\\F1414"}.mdi-chat-sleep::before{content:"\\F12D1"}.mdi-chat-sleep-outline::before{content:"\\F12D2"}.mdi-check::before{content:"\\F012C"}.mdi-check-all::before{content:"\\F012D"}.mdi-check-bold::before{content:"\\F0E1E"}.mdi-check-box-multiple-outline::before{content:"\\F0C51"}.mdi-check-box-outline::before{content:"\\F0C52"}.mdi-check-circle::before{content:"\\F05E0"}.mdi-check-circle-outline::before{content:"\\F05E1"}.mdi-check-decagram::before{content:"\\F0791"}.mdi-check-network::before{content:"\\F0C53"}.mdi-check-network-outline::before{content:"\\F0C54"}.mdi-check-outline::before{content:"\\F0855"}.mdi-check-underline::before{content:"\\F0E1F"}.mdi-check-underline-circle::before{content:"\\F0E20"}.mdi-check-underline-circle-outline::before{content:"\\F0E21"}.mdi-checkbook::before{content:"\\F0A9D"}.mdi-checkbox-blank::before{content:"\\F012E"}.mdi-checkbox-blank-circle::before{content:"\\F012F"}.mdi-checkbox-blank-circle-outline::before{content:"\\F0130"}.mdi-checkbox-blank-off::before{content:"\\F12EC"}.mdi-checkbox-blank-off-outline::before{content:"\\F12ED"}.mdi-checkbox-blank-outline::before{content:"\\F0131"}.mdi-checkbox-intermediate::before{content:"\\F0856"}.mdi-checkbox-marked::before{content:"\\F0132"}.mdi-checkbox-marked-circle::before{content:"\\F0133"}.mdi-checkbox-marked-circle-outline::before{content:"\\F0134"}.mdi-checkbox-marked-outline::before{content:"\\F0135"}.mdi-checkbox-multiple-blank::before{content:"\\F0136"}.mdi-checkbox-multiple-blank-circle::before{content:"\\F063B"}.mdi-checkbox-multiple-blank-circle-outline::before{content:"\\F063C"}.mdi-checkbox-multiple-blank-outline::before{content:"\\F0137"}.mdi-checkbox-multiple-marked::before{content:"\\F0138"}.mdi-checkbox-multiple-marked-circle::before{content:"\\F063D"}.mdi-checkbox-multiple-marked-circle-outline::before{content:"\\F063E"}.mdi-checkbox-multiple-marked-outline::before{content:"\\F0139"}.mdi-checkerboard::before{content:"\\F013A"}.mdi-checkerboard-minus::before{content:"\\F1202"}.mdi-checkerboard-plus::before{content:"\\F1201"}.mdi-checkerboard-remove::before{content:"\\F1203"}.mdi-cheese::before{content:"\\F12B9"}.mdi-cheese-off::before{content:"\\F13EE"}.mdi-chef-hat::before{content:"\\F0B7C"}.mdi-chemical-weapon::before{content:"\\F013B"}.mdi-chess-bishop::before{content:"\\F085C"}.mdi-chess-king::before{content:"\\F0857"}.mdi-chess-knight::before{content:"\\F0858"}.mdi-chess-pawn::before{content:"\\F0859"}.mdi-chess-queen::before{content:"\\F085A"}.mdi-chess-rook::before{content:"\\F085B"}.mdi-chevron-double-down::before{content:"\\F013C"}.mdi-chevron-double-left::before{content:"\\F013D"}.mdi-chevron-double-right::before{content:"\\F013E"}.mdi-chevron-double-up::before{content:"\\F013F"}.mdi-chevron-down::before{content:"\\F0140"}.mdi-chevron-down-box::before{content:"\\F09D6"}.mdi-chevron-down-box-outline::before{content:"\\F09D7"}.mdi-chevron-down-circle::before{content:"\\F0B26"}.mdi-chevron-down-circle-outline::before{content:"\\F0B27"}.mdi-chevron-left::before{content:"\\F0141"}.mdi-chevron-left-box::before{content:"\\F09D8"}.mdi-chevron-left-box-outline::before{content:"\\F09D9"}.mdi-chevron-left-circle::before{content:"\\F0B28"}.mdi-chevron-left-circle-outline::before{content:"\\F0B29"}.mdi-chevron-right::before{content:"\\F0142"}.mdi-chevron-right-box::before{content:"\\F09DA"}.mdi-chevron-right-box-outline::before{content:"\\F09DB"}.mdi-chevron-right-circle::before{content:"\\F0B2A"}.mdi-chevron-right-circle-outline::before{content:"\\F0B2B"}.mdi-chevron-triple-down::before{content:"\\F0DB9"}.mdi-chevron-triple-left::before{content:"\\F0DBA"}.mdi-chevron-triple-right::before{content:"\\F0DBB"}.mdi-chevron-triple-up::before{content:"\\F0DBC"}.mdi-chevron-up::before{content:"\\F0143"}.mdi-chevron-up-box::before{content:"\\F09DC"}.mdi-chevron-up-box-outline::before{content:"\\F09DD"}.mdi-chevron-up-circle::before{content:"\\F0B2C"}.mdi-chevron-up-circle-outline::before{content:"\\F0B2D"}.mdi-chili-hot::before{content:"\\F07B2"}.mdi-chili-medium::before{content:"\\F07B3"}.mdi-chili-mild::before{content:"\\F07B4"}.mdi-chili-off::before{content:"\\F1467"}.mdi-chip::before{content:"\\F061A"}.mdi-christianity::before{content:"\\F0953"}.mdi-christianity-outline::before{content:"\\F0CF6"}.mdi-church::before{content:"\\F0144"}.mdi-cigar::before{content:"\\F1189"}.mdi-cigar-off::before{content:"\\F141B"}.mdi-circle::before{content:"\\F0765"}.mdi-circle-double::before{content:"\\F0E95"}.mdi-circle-edit-outline::before{content:"\\F08D5"}.mdi-circle-expand::before{content:"\\F0E96"}.mdi-circle-half::before{content:"\\F1395"}.mdi-circle-half-full::before{content:"\\F1396"}.mdi-circle-medium::before{content:"\\F09DE"}.mdi-circle-multiple::before{content:"\\F0B38"}.mdi-circle-multiple-outline::before{content:"\\F0695"}.mdi-circle-off-outline::before{content:"\\F10D3"}.mdi-circle-outline::before{content:"\\F0766"}.mdi-circle-slice-1::before{content:"\\F0A9E"}.mdi-circle-slice-2::before{content:"\\F0A9F"}.mdi-circle-slice-3::before{content:"\\F0AA0"}.mdi-circle-slice-4::before{content:"\\F0AA1"}.mdi-circle-slice-5::before{content:"\\F0AA2"}.mdi-circle-slice-6::before{content:"\\F0AA3"}.mdi-circle-slice-7::before{content:"\\F0AA4"}.mdi-circle-slice-8::before{content:"\\F0AA5"}.mdi-circle-small::before{content:"\\F09DF"}.mdi-circular-saw::before{content:"\\F0E22"}.mdi-city::before{content:"\\F0146"}.mdi-city-variant::before{content:"\\F0A36"}.mdi-city-variant-outline::before{content:"\\F0A37"}.mdi-clipboard::before{content:"\\F0147"}.mdi-clipboard-account::before{content:"\\F0148"}.mdi-clipboard-account-outline::before{content:"\\F0C55"}.mdi-clipboard-alert::before{content:"\\F0149"}.mdi-clipboard-alert-outline::before{content:"\\F0CF7"}.mdi-clipboard-arrow-down::before{content:"\\F014A"}.mdi-clipboard-arrow-down-outline::before{content:"\\F0C56"}.mdi-clipboard-arrow-left::before{content:"\\F014B"}.mdi-clipboard-arrow-left-outline::before{content:"\\F0CF8"}.mdi-clipboard-arrow-right::before{content:"\\F0CF9"}.mdi-clipboard-arrow-right-outline::before{content:"\\F0CFA"}.mdi-clipboard-arrow-up::before{content:"\\F0C57"}.mdi-clipboard-arrow-up-outline::before{content:"\\F0C58"}.mdi-clipboard-check::before{content:"\\F014E"}.mdi-clipboard-check-multiple::before{content:"\\F1263"}.mdi-clipboard-check-multiple-outline::before{content:"\\F1264"}.mdi-clipboard-check-outline::before{content:"\\F08A8"}.mdi-clipboard-file::before{content:"\\F1265"}.mdi-clipboard-file-outline::before{content:"\\F1266"}.mdi-clipboard-flow::before{content:"\\F06C8"}.mdi-clipboard-flow-outline::before{content:"\\F1117"}.mdi-clipboard-list::before{content:"\\F10D4"}.mdi-clipboard-list-outline::before{content:"\\F10D5"}.mdi-clipboard-multiple::before{content:"\\F1267"}.mdi-clipboard-multiple-outline::before{content:"\\F1268"}.mdi-clipboard-outline::before{content:"\\F014C"}.mdi-clipboard-play::before{content:"\\F0C59"}.mdi-clipboard-play-multiple::before{content:"\\F1269"}.mdi-clipboard-play-multiple-outline::before{content:"\\F126A"}.mdi-clipboard-play-outline::before{content:"\\F0C5A"}.mdi-clipboard-plus::before{content:"\\F0751"}.mdi-clipboard-plus-outline::before{content:"\\F131F"}.mdi-clipboard-pulse::before{content:"\\F085D"}.mdi-clipboard-pulse-outline::before{content:"\\F085E"}.mdi-clipboard-text::before{content:"\\F014D"}.mdi-clipboard-text-multiple::before{content:"\\F126B"}.mdi-clipboard-text-multiple-outline::before{content:"\\F126C"}.mdi-clipboard-text-outline::before{content:"\\F0A38"}.mdi-clipboard-text-play::before{content:"\\F0C5B"}.mdi-clipboard-text-play-outline::before{content:"\\F0C5C"}.mdi-clippy::before{content:"\\F014F"}.mdi-clock::before{content:"\\F0954"}.mdi-clock-alert::before{content:"\\F0955"}.mdi-clock-alert-outline::before{content:"\\F05CE"}.mdi-clock-check::before{content:"\\F0FA8"}.mdi-clock-check-outline::before{content:"\\F0FA9"}.mdi-clock-digital::before{content:"\\F0E97"}.mdi-clock-end::before{content:"\\F0151"}.mdi-clock-fast::before{content:"\\F0152"}.mdi-clock-in::before{content:"\\F0153"}.mdi-clock-out::before{content:"\\F0154"}.mdi-clock-outline::before{content:"\\F0150"}.mdi-clock-start::before{content:"\\F0155"}.mdi-clock-time-eight::before{content:"\\F1446"}.mdi-clock-time-eight-outline::before{content:"\\F1452"}.mdi-clock-time-eleven::before{content:"\\F1449"}.mdi-clock-time-eleven-outline::before{content:"\\F1455"}.mdi-clock-time-five::before{content:"\\F1443"}.mdi-clock-time-five-outline::before{content:"\\F144F"}.mdi-clock-time-four::before{content:"\\F1442"}.mdi-clock-time-four-outline::before{content:"\\F144E"}.mdi-clock-time-nine::before{content:"\\F1447"}.mdi-clock-time-nine-outline::before{content:"\\F1453"}.mdi-clock-time-one::before{content:"\\F143F"}.mdi-clock-time-one-outline::before{content:"\\F144B"}.mdi-clock-time-seven::before{content:"\\F1445"}.mdi-clock-time-seven-outline::before{content:"\\F1451"}.mdi-clock-time-six::before{content:"\\F1444"}.mdi-clock-time-six-outline::before{content:"\\F1450"}.mdi-clock-time-ten::before{content:"\\F1448"}.mdi-clock-time-ten-outline::before{content:"\\F1454"}.mdi-clock-time-three::before{content:"\\F1441"}.mdi-clock-time-three-outline::before{content:"\\F144D"}.mdi-clock-time-twelve::before{content:"\\F144A"}.mdi-clock-time-twelve-outline::before{content:"\\F1456"}.mdi-clock-time-two::before{content:"\\F1440"}.mdi-clock-time-two-outline::before{content:"\\F144C"}.mdi-close::before{content:"\\F0156"}.mdi-close-box::before{content:"\\F0157"}.mdi-close-box-multiple::before{content:"\\F0C5D"}.mdi-close-box-multiple-outline::before{content:"\\F0C5E"}.mdi-close-box-outline::before{content:"\\F0158"}.mdi-close-circle::before{content:"\\F0159"}.mdi-close-circle-multiple::before{content:"\\F062A"}.mdi-close-circle-multiple-outline::before{content:"\\F0883"}.mdi-close-circle-outline::before{content:"\\F015A"}.mdi-close-network::before{content:"\\F015B"}.mdi-close-network-outline::before{content:"\\F0C5F"}.mdi-close-octagon::before{content:"\\F015C"}.mdi-close-octagon-outline::before{content:"\\F015D"}.mdi-close-outline::before{content:"\\F06C9"}.mdi-close-thick::before{content:"\\F1398"}.mdi-closed-caption::before{content:"\\F015E"}.mdi-closed-caption-outline::before{content:"\\F0DBD"}.mdi-cloud::before{content:"\\F015F"}.mdi-cloud-alert::before{content:"\\F09E0"}.mdi-cloud-braces::before{content:"\\F07B5"}.mdi-cloud-check::before{content:"\\F0160"}.mdi-cloud-check-outline::before{content:"\\F12CC"}.mdi-cloud-circle::before{content:"\\F0161"}.mdi-cloud-download::before{content:"\\F0162"}.mdi-cloud-download-outline::before{content:"\\F0B7D"}.mdi-cloud-lock::before{content:"\\F11F1"}.mdi-cloud-lock-outline::before{content:"\\F11F2"}.mdi-cloud-off-outline::before{content:"\\F0164"}.mdi-cloud-outline::before{content:"\\F0163"}.mdi-cloud-print::before{content:"\\F0165"}.mdi-cloud-print-outline::before{content:"\\F0166"}.mdi-cloud-question::before{content:"\\F0A39"}.mdi-cloud-refresh::before{content:"\\F052A"}.mdi-cloud-search::before{content:"\\F0956"}.mdi-cloud-search-outline::before{content:"\\F0957"}.mdi-cloud-sync::before{content:"\\F063F"}.mdi-cloud-sync-outline::before{content:"\\F12D6"}.mdi-cloud-tags::before{content:"\\F07B6"}.mdi-cloud-upload::before{content:"\\F0167"}.mdi-cloud-upload-outline::before{content:"\\F0B7E"}.mdi-clover::before{content:"\\F0816"}.mdi-coach-lamp::before{content:"\\F1020"}.mdi-coat-rack::before{content:"\\F109E"}.mdi-code-array::before{content:"\\F0168"}.mdi-code-braces::before{content:"\\F0169"}.mdi-code-braces-box::before{content:"\\F10D6"}.mdi-code-brackets::before{content:"\\F016A"}.mdi-code-equal::before{content:"\\F016B"}.mdi-code-greater-than::before{content:"\\F016C"}.mdi-code-greater-than-or-equal::before{content:"\\F016D"}.mdi-code-json::before{content:"\\F0626"}.mdi-code-less-than::before{content:"\\F016E"}.mdi-code-less-than-or-equal::before{content:"\\F016F"}.mdi-code-not-equal::before{content:"\\F0170"}.mdi-code-not-equal-variant::before{content:"\\F0171"}.mdi-code-parentheses::before{content:"\\F0172"}.mdi-code-parentheses-box::before{content:"\\F10D7"}.mdi-code-string::before{content:"\\F0173"}.mdi-code-tags::before{content:"\\F0174"}.mdi-code-tags-check::before{content:"\\F0694"}.mdi-codepen::before{content:"\\F0175"}.mdi-coffee::before{content:"\\F0176"}.mdi-coffee-maker::before{content:"\\F109F"}.mdi-coffee-off::before{content:"\\F0FAA"}.mdi-coffee-off-outline::before{content:"\\F0FAB"}.mdi-coffee-outline::before{content:"\\F06CA"}.mdi-coffee-to-go::before{content:"\\F0177"}.mdi-coffee-to-go-outline::before{content:"\\F130E"}.mdi-coffin::before{content:"\\F0B7F"}.mdi-cog::before{content:"\\F0493"}.mdi-cog-box::before{content:"\\F0494"}.mdi-cog-clockwise::before{content:"\\F11DD"}.mdi-cog-counterclockwise::before{content:"\\F11DE"}.mdi-cog-off::before{content:"\\F13CE"}.mdi-cog-off-outline::before{content:"\\F13CF"}.mdi-cog-outline::before{content:"\\F08BB"}.mdi-cog-refresh::before{content:"\\F145E"}.mdi-cog-refresh-outline::before{content:"\\F145F"}.mdi-cog-sync::before{content:"\\F1460"}.mdi-cog-sync-outline::before{content:"\\F1461"}.mdi-cog-transfer::before{content:"\\F105B"}.mdi-cog-transfer-outline::before{content:"\\F105C"}.mdi-cogs::before{content:"\\F08D6"}.mdi-collage::before{content:"\\F0640"}.mdi-collapse-all::before{content:"\\F0AA6"}.mdi-collapse-all-outline::before{content:"\\F0AA7"}.mdi-color-helper::before{content:"\\F0179"}.mdi-comma::before{content:"\\F0E23"}.mdi-comma-box::before{content:"\\F0E2B"}.mdi-comma-box-outline::before{content:"\\F0E24"}.mdi-comma-circle::before{content:"\\F0E25"}.mdi-comma-circle-outline::before{content:"\\F0E26"}.mdi-comment::before{content:"\\F017A"}.mdi-comment-account::before{content:"\\F017B"}.mdi-comment-account-outline::before{content:"\\F017C"}.mdi-comment-alert::before{content:"\\F017D"}.mdi-comment-alert-outline::before{content:"\\F017E"}.mdi-comment-arrow-left::before{content:"\\F09E1"}.mdi-comment-arrow-left-outline::before{content:"\\F09E2"}.mdi-comment-arrow-right::before{content:"\\F09E3"}.mdi-comment-arrow-right-outline::before{content:"\\F09E4"}.mdi-comment-check::before{content:"\\F017F"}.mdi-comment-check-outline::before{content:"\\F0180"}.mdi-comment-edit::before{content:"\\F11BF"}.mdi-comment-edit-outline::before{content:"\\F12C4"}.mdi-comment-eye::before{content:"\\F0A3A"}.mdi-comment-eye-outline::before{content:"\\F0A3B"}.mdi-comment-multiple::before{content:"\\F085F"}.mdi-comment-multiple-outline::before{content:"\\F0181"}.mdi-comment-outline::before{content:"\\F0182"}.mdi-comment-plus::before{content:"\\F09E5"}.mdi-comment-plus-outline::before{content:"\\F0183"}.mdi-comment-processing::before{content:"\\F0184"}.mdi-comment-processing-outline::before{content:"\\F0185"}.mdi-comment-question::before{content:"\\F0817"}.mdi-comment-question-outline::before{content:"\\F0186"}.mdi-comment-quote::before{content:"\\F1021"}.mdi-comment-quote-outline::before{content:"\\F1022"}.mdi-comment-remove::before{content:"\\F05DE"}.mdi-comment-remove-outline::before{content:"\\F0187"}.mdi-comment-search::before{content:"\\F0A3C"}.mdi-comment-search-outline::before{content:"\\F0A3D"}.mdi-comment-text::before{content:"\\F0188"}.mdi-comment-text-multiple::before{content:"\\F0860"}.mdi-comment-text-multiple-outline::before{content:"\\F0861"}.mdi-comment-text-outline::before{content:"\\F0189"}.mdi-compare::before{content:"\\F018A"}.mdi-compare-horizontal::before{content:"\\F1492"}.mdi-compare-vertical::before{content:"\\F1493"}.mdi-compass::before{content:"\\F018B"}.mdi-compass-off::before{content:"\\F0B80"}.mdi-compass-off-outline::before{content:"\\F0B81"}.mdi-compass-outline::before{content:"\\F018C"}.mdi-compass-rose::before{content:"\\F1382"}.mdi-concourse-ci::before{content:"\\F10A0"}.mdi-console::before{content:"\\F018D"}.mdi-console-line::before{content:"\\F07B7"}.mdi-console-network::before{content:"\\F08A9"}.mdi-console-network-outline::before{content:"\\F0C60"}.mdi-consolidate::before{content:"\\F10D8"}.mdi-contactless-payment::before{content:"\\F0D6A"}.mdi-contactless-payment-circle::before{content:"\\F0321"}.mdi-contactless-payment-circle-outline::before{content:"\\F0408"}.mdi-contacts::before{content:"\\F06CB"}.mdi-contacts-outline::before{content:"\\F05B8"}.mdi-contain::before{content:"\\F0A3E"}.mdi-contain-end::before{content:"\\F0A3F"}.mdi-contain-start::before{content:"\\F0A40"}.mdi-content-copy::before{content:"\\F018F"}.mdi-content-cut::before{content:"\\F0190"}.mdi-content-duplicate::before{content:"\\F0191"}.mdi-content-paste::before{content:"\\F0192"}.mdi-content-save::before{content:"\\F0193"}.mdi-content-save-alert::before{content:"\\F0F42"}.mdi-content-save-alert-outline::before{content:"\\F0F43"}.mdi-content-save-all::before{content:"\\F0194"}.mdi-content-save-all-outline::before{content:"\\F0F44"}.mdi-content-save-cog::before{content:"\\F145B"}.mdi-content-save-cog-outline::before{content:"\\F145C"}.mdi-content-save-edit::before{content:"\\F0CFB"}.mdi-content-save-edit-outline::before{content:"\\F0CFC"}.mdi-content-save-move::before{content:"\\F0E27"}.mdi-content-save-move-outline::before{content:"\\F0E28"}.mdi-content-save-outline::before{content:"\\F0818"}.mdi-content-save-settings::before{content:"\\F061B"}.mdi-content-save-settings-outline::before{content:"\\F0B2E"}.mdi-contrast::before{content:"\\F0195"}.mdi-contrast-box::before{content:"\\F0196"}.mdi-contrast-circle::before{content:"\\F0197"}.mdi-controller-classic::before{content:"\\F0B82"}.mdi-controller-classic-outline::before{content:"\\F0B83"}.mdi-cookie::before{content:"\\F0198"}.mdi-coolant-temperature::before{content:"\\F03C8"}.mdi-copyright::before{content:"\\F05E6"}.mdi-cordova::before{content:"\\F0958"}.mdi-corn::before{content:"\\F07B8"}.mdi-corn-off::before{content:"\\F13EF"}.mdi-cosine-wave::before{content:"\\F1479"}.mdi-counter::before{content:"\\F0199"}.mdi-cow::before{content:"\\F019A"}.mdi-cpu-32-bit::before{content:"\\F0EDF"}.mdi-cpu-64-bit::before{content:"\\F0EE0"}.mdi-crane::before{content:"\\F0862"}.mdi-creation::before{content:"\\F0674"}.mdi-creative-commons::before{content:"\\F0D6B"}.mdi-credit-card::before{content:"\\F0FEF"}.mdi-credit-card-check::before{content:"\\F13D0"}.mdi-credit-card-check-outline::before{content:"\\F13D1"}.mdi-credit-card-clock::before{content:"\\F0EE1"}.mdi-credit-card-clock-outline::before{content:"\\F0EE2"}.mdi-credit-card-marker::before{content:"\\F06A8"}.mdi-credit-card-marker-outline::before{content:"\\F0DBE"}.mdi-credit-card-minus::before{content:"\\F0FAC"}.mdi-credit-card-minus-outline::before{content:"\\F0FAD"}.mdi-credit-card-multiple::before{content:"\\F0FF0"}.mdi-credit-card-multiple-outline::before{content:"\\F019C"}.mdi-credit-card-off::before{content:"\\F0FF1"}.mdi-credit-card-off-outline::before{content:"\\F05E4"}.mdi-credit-card-outline::before{content:"\\F019B"}.mdi-credit-card-plus::before{content:"\\F0FF2"}.mdi-credit-card-plus-outline::before{content:"\\F0676"}.mdi-credit-card-refund::before{content:"\\F0FF3"}.mdi-credit-card-refund-outline::before{content:"\\F0AA8"}.mdi-credit-card-remove::before{content:"\\F0FAE"}.mdi-credit-card-remove-outline::before{content:"\\F0FAF"}.mdi-credit-card-scan::before{content:"\\F0FF4"}.mdi-credit-card-scan-outline::before{content:"\\F019D"}.mdi-credit-card-settings::before{content:"\\F0FF5"}.mdi-credit-card-settings-outline::before{content:"\\F08D7"}.mdi-credit-card-wireless::before{content:"\\F0802"}.mdi-credit-card-wireless-off::before{content:"\\F057A"}.mdi-credit-card-wireless-off-outline::before{content:"\\F057B"}.mdi-credit-card-wireless-outline::before{content:"\\F0D6C"}.mdi-cricket::before{content:"\\F0D6D"}.mdi-crop::before{content:"\\F019E"}.mdi-crop-free::before{content:"\\F019F"}.mdi-crop-landscape::before{content:"\\F01A0"}.mdi-crop-portrait::before{content:"\\F01A1"}.mdi-crop-rotate::before{content:"\\F0696"}.mdi-crop-square::before{content:"\\F01A2"}.mdi-crosshairs::before{content:"\\F01A3"}.mdi-crosshairs-gps::before{content:"\\F01A4"}.mdi-crosshairs-off::before{content:"\\F0F45"}.mdi-crosshairs-question::before{content:"\\F1136"}.mdi-crown::before{content:"\\F01A5"}.mdi-crown-outline::before{content:"\\F11D0"}.mdi-cryengine::before{content:"\\F0959"}.mdi-crystal-ball::before{content:"\\F0B2F"}.mdi-cube::before{content:"\\F01A6"}.mdi-cube-off::before{content:"\\F141C"}.mdi-cube-off-outline::before{content:"\\F141D"}.mdi-cube-outline::before{content:"\\F01A7"}.mdi-cube-scan::before{content:"\\F0B84"}.mdi-cube-send::before{content:"\\F01A8"}.mdi-cube-unfolded::before{content:"\\F01A9"}.mdi-cup::before{content:"\\F01AA"}.mdi-cup-off::before{content:"\\F05E5"}.mdi-cup-off-outline::before{content:"\\F137D"}.mdi-cup-outline::before{content:"\\F130F"}.mdi-cup-water::before{content:"\\F01AB"}.mdi-cupboard::before{content:"\\F0F46"}.mdi-cupboard-outline::before{content:"\\F0F47"}.mdi-cupcake::before{content:"\\F095A"}.mdi-curling::before{content:"\\F0863"}.mdi-currency-bdt::before{content:"\\F0864"}.mdi-currency-brl::before{content:"\\F0B85"}.mdi-currency-btc::before{content:"\\F01AC"}.mdi-currency-cny::before{content:"\\F07BA"}.mdi-currency-eth::before{content:"\\F07BB"}.mdi-currency-eur::before{content:"\\F01AD"}.mdi-currency-eur-off::before{content:"\\F1315"}.mdi-currency-gbp::before{content:"\\F01AE"}.mdi-currency-ils::before{content:"\\F0C61"}.mdi-currency-inr::before{content:"\\F01AF"}.mdi-currency-jpy::before{content:"\\F07BC"}.mdi-currency-krw::before{content:"\\F07BD"}.mdi-currency-kzt::before{content:"\\F0865"}.mdi-currency-ngn::before{content:"\\F01B0"}.mdi-currency-php::before{content:"\\F09E6"}.mdi-currency-rial::before{content:"\\F0E9C"}.mdi-currency-rub::before{content:"\\F01B1"}.mdi-currency-sign::before{content:"\\F07BE"}.mdi-currency-try::before{content:"\\F01B2"}.mdi-currency-twd::before{content:"\\F07BF"}.mdi-currency-usd::before{content:"\\F01C1"}.mdi-currency-usd-circle::before{content:"\\F116B"}.mdi-currency-usd-circle-outline::before{content:"\\F0178"}.mdi-currency-usd-off::before{content:"\\F067A"}.mdi-current-ac::before{content:"\\F1480"}.mdi-current-dc::before{content:"\\F095C"}.mdi-cursor-default::before{content:"\\F01C0"}.mdi-cursor-default-click::before{content:"\\F0CFD"}.mdi-cursor-default-click-outline::before{content:"\\F0CFE"}.mdi-cursor-default-gesture::before{content:"\\F1127"}.mdi-cursor-default-gesture-outline::before{content:"\\F1128"}.mdi-cursor-default-outline::before{content:"\\F01BF"}.mdi-cursor-move::before{content:"\\F01BE"}.mdi-cursor-pointer::before{content:"\\F01BD"}.mdi-cursor-text::before{content:"\\F05E7"}.mdi-database::before{content:"\\F01BC"}.mdi-database-check::before{content:"\\F0AA9"}.mdi-database-edit::before{content:"\\F0B86"}.mdi-database-export::before{content:"\\F095E"}.mdi-database-import::before{content:"\\F095D"}.mdi-database-lock::before{content:"\\F0AAA"}.mdi-database-marker::before{content:"\\F12F6"}.mdi-database-minus::before{content:"\\F01BB"}.mdi-database-plus::before{content:"\\F01BA"}.mdi-database-refresh::before{content:"\\F05C2"}.mdi-database-remove::before{content:"\\F0D00"}.mdi-database-search::before{content:"\\F0866"}.mdi-database-settings::before{content:"\\F0D01"}.mdi-database-sync::before{content:"\\F0CFF"}.mdi-death-star::before{content:"\\F08D8"}.mdi-death-star-variant::before{content:"\\F08D9"}.mdi-deathly-hallows::before{content:"\\F0B87"}.mdi-debian::before{content:"\\F08DA"}.mdi-debug-step-into::before{content:"\\F01B9"}.mdi-debug-step-out::before{content:"\\F01B8"}.mdi-debug-step-over::before{content:"\\F01B7"}.mdi-decagram::before{content:"\\F076C"}.mdi-decagram-outline::before{content:"\\F076D"}.mdi-decimal::before{content:"\\F10A1"}.mdi-decimal-comma::before{content:"\\F10A2"}.mdi-decimal-comma-decrease::before{content:"\\F10A3"}.mdi-decimal-comma-increase::before{content:"\\F10A4"}.mdi-decimal-decrease::before{content:"\\F01B6"}.mdi-decimal-increase::before{content:"\\F01B5"}.mdi-delete::before{content:"\\F01B4"}.mdi-delete-alert::before{content:"\\F10A5"}.mdi-delete-alert-outline::before{content:"\\F10A6"}.mdi-delete-circle::before{content:"\\F0683"}.mdi-delete-circle-outline::before{content:"\\F0B88"}.mdi-delete-empty::before{content:"\\F06CC"}.mdi-delete-empty-outline::before{content:"\\F0E9D"}.mdi-delete-forever::before{content:"\\F05E8"}.mdi-delete-forever-outline::before{content:"\\F0B89"}.mdi-delete-off::before{content:"\\F10A7"}.mdi-delete-off-outline::before{content:"\\F10A8"}.mdi-delete-outline::before{content:"\\F09E7"}.mdi-delete-restore::before{content:"\\F0819"}.mdi-delete-sweep::before{content:"\\F05E9"}.mdi-delete-sweep-outline::before{content:"\\F0C62"}.mdi-delete-variant::before{content:"\\F01B3"}.mdi-delta::before{content:"\\F01C2"}.mdi-desk::before{content:"\\F1239"}.mdi-desk-lamp::before{content:"\\F095F"}.mdi-deskphone::before{content:"\\F01C3"}.mdi-desktop-classic::before{content:"\\F07C0"}.mdi-desktop-mac::before{content:"\\F01C4"}.mdi-desktop-mac-dashboard::before{content:"\\F09E8"}.mdi-desktop-tower::before{content:"\\F01C5"}.mdi-desktop-tower-monitor::before{content:"\\F0AAB"}.mdi-details::before{content:"\\F01C6"}.mdi-dev-to::before{content:"\\F0D6E"}.mdi-developer-board::before{content:"\\F0697"}.mdi-deviantart::before{content:"\\F01C7"}.mdi-devices::before{content:"\\F0FB0"}.mdi-diabetes::before{content:"\\F1126"}.mdi-dialpad::before{content:"\\F061C"}.mdi-diameter::before{content:"\\F0C63"}.mdi-diameter-outline::before{content:"\\F0C64"}.mdi-diameter-variant::before{content:"\\F0C65"}.mdi-diamond::before{content:"\\F0B8A"}.mdi-diamond-outline::before{content:"\\F0B8B"}.mdi-diamond-stone::before{content:"\\F01C8"}.mdi-dice-1::before{content:"\\F01CA"}.mdi-dice-1-outline::before{content:"\\F114A"}.mdi-dice-2::before{content:"\\F01CB"}.mdi-dice-2-outline::before{content:"\\F114B"}.mdi-dice-3::before{content:"\\F01CC"}.mdi-dice-3-outline::before{content:"\\F114C"}.mdi-dice-4::before{content:"\\F01CD"}.mdi-dice-4-outline::before{content:"\\F114D"}.mdi-dice-5::before{content:"\\F01CE"}.mdi-dice-5-outline::before{content:"\\F114E"}.mdi-dice-6::before{content:"\\F01CF"}.mdi-dice-6-outline::before{content:"\\F114F"}.mdi-dice-d10::before{content:"\\F1153"}.mdi-dice-d10-outline::before{content:"\\F076F"}.mdi-dice-d12::before{content:"\\F1154"}.mdi-dice-d12-outline::before{content:"\\F0867"}.mdi-dice-d20::before{content:"\\F1155"}.mdi-dice-d20-outline::before{content:"\\F05EA"}.mdi-dice-d4::before{content:"\\F1150"}.mdi-dice-d4-outline::before{content:"\\F05EB"}.mdi-dice-d6::before{content:"\\F1151"}.mdi-dice-d6-outline::before{content:"\\F05ED"}.mdi-dice-d8::before{content:"\\F1152"}.mdi-dice-d8-outline::before{content:"\\F05EC"}.mdi-dice-multiple::before{content:"\\F076E"}.mdi-dice-multiple-outline::before{content:"\\F1156"}.mdi-digital-ocean::before{content:"\\F1237"}.mdi-dip-switch::before{content:"\\F07C1"}.mdi-directions::before{content:"\\F01D0"}.mdi-directions-fork::before{content:"\\F0641"}.mdi-disc::before{content:"\\F05EE"}.mdi-disc-alert::before{content:"\\F01D1"}.mdi-disc-player::before{content:"\\F0960"}.mdi-discord::before{content:"\\F066F"}.mdi-dishwasher::before{content:"\\F0AAC"}.mdi-dishwasher-alert::before{content:"\\F11B8"}.mdi-dishwasher-off::before{content:"\\F11B9"}.mdi-disqus::before{content:"\\F01D2"}.mdi-distribute-horizontal-center::before{content:"\\F11C9"}.mdi-distribute-horizontal-left::before{content:"\\F11C8"}.mdi-distribute-horizontal-right::before{content:"\\F11CA"}.mdi-distribute-vertical-bottom::before{content:"\\F11CB"}.mdi-distribute-vertical-center::before{content:"\\F11CC"}.mdi-distribute-vertical-top::before{content:"\\F11CD"}.mdi-diving-flippers::before{content:"\\F0DBF"}.mdi-diving-helmet::before{content:"\\F0DC0"}.mdi-diving-scuba::before{content:"\\F0DC1"}.mdi-diving-scuba-flag::before{content:"\\F0DC2"}.mdi-diving-scuba-tank::before{content:"\\F0DC3"}.mdi-diving-scuba-tank-multiple::before{content:"\\F0DC4"}.mdi-diving-snorkel::before{content:"\\F0DC5"}.mdi-division::before{content:"\\F01D4"}.mdi-division-box::before{content:"\\F01D5"}.mdi-dlna::before{content:"\\F0A41"}.mdi-dna::before{content:"\\F0684"}.mdi-dns::before{content:"\\F01D6"}.mdi-dns-outline::before{content:"\\F0B8C"}.mdi-do-not-disturb::before{content:"\\F0698"}.mdi-do-not-disturb-off::before{content:"\\F0699"}.mdi-dock-bottom::before{content:"\\F10A9"}.mdi-dock-left::before{content:"\\F10AA"}.mdi-dock-right::before{content:"\\F10AB"}.mdi-dock-window::before{content:"\\F10AC"}.mdi-docker::before{content:"\\F0868"}.mdi-doctor::before{content:"\\F0A42"}.mdi-dog::before{content:"\\F0A43"}.mdi-dog-service::before{content:"\\F0AAD"}.mdi-dog-side::before{content:"\\F0A44"}.mdi-dolby::before{content:"\\F06B3"}.mdi-dolly::before{content:"\\F0E9E"}.mdi-domain::before{content:"\\F01D7"}.mdi-domain-off::before{content:"\\F0D6F"}.mdi-domain-plus::before{content:"\\F10AD"}.mdi-domain-remove::before{content:"\\F10AE"}.mdi-dome-light::before{content:"\\F141E"}.mdi-domino-mask::before{content:"\\F1023"}.mdi-donkey::before{content:"\\F07C2"}.mdi-door::before{content:"\\F081A"}.mdi-door-closed::before{content:"\\F081B"}.mdi-door-closed-lock::before{content:"\\F10AF"}.mdi-door-open::before{content:"\\F081C"}.mdi-doorbell::before{content:"\\F12E6"}.mdi-doorbell-video::before{content:"\\F0869"}.mdi-dot-net::before{content:"\\F0AAE"}.mdi-dots-horizontal::before{content:"\\F01D8"}.mdi-dots-horizontal-circle::before{content:"\\F07C3"}.mdi-dots-horizontal-circle-outline::before{content:"\\F0B8D"}.mdi-dots-vertical::before{content:"\\F01D9"}.mdi-dots-vertical-circle::before{content:"\\F07C4"}.mdi-dots-vertical-circle-outline::before{content:"\\F0B8E"}.mdi-douban::before{content:"\\F069A"}.mdi-download::before{content:"\\F01DA"}.mdi-download-box::before{content:"\\F1462"}.mdi-download-box-outline::before{content:"\\F1463"}.mdi-download-circle::before{content:"\\F1464"}.mdi-download-circle-outline::before{content:"\\F1465"}.mdi-download-lock::before{content:"\\F1320"}.mdi-download-lock-outline::before{content:"\\F1321"}.mdi-download-multiple::before{content:"\\F09E9"}.mdi-download-network::before{content:"\\F06F4"}.mdi-download-network-outline::before{content:"\\F0C66"}.mdi-download-off::before{content:"\\F10B0"}.mdi-download-off-outline::before{content:"\\F10B1"}.mdi-download-outline::before{content:"\\F0B8F"}.mdi-drag::before{content:"\\F01DB"}.mdi-drag-horizontal::before{content:"\\F01DC"}.mdi-drag-horizontal-variant::before{content:"\\F12F0"}.mdi-drag-variant::before{content:"\\F0B90"}.mdi-drag-vertical::before{content:"\\F01DD"}.mdi-drag-vertical-variant::before{content:"\\F12F1"}.mdi-drama-masks::before{content:"\\F0D02"}.mdi-draw::before{content:"\\F0F49"}.mdi-drawing::before{content:"\\F01DE"}.mdi-drawing-box::before{content:"\\F01DF"}.mdi-dresser::before{content:"\\F0F4A"}.mdi-dresser-outline::before{content:"\\F0F4B"}.mdi-drone::before{content:"\\F01E2"}.mdi-dropbox::before{content:"\\F01E3"}.mdi-drupal::before{content:"\\F01E4"}.mdi-duck::before{content:"\\F01E5"}.mdi-dumbbell::before{content:"\\F01E6"}.mdi-dump-truck::before{content:"\\F0C67"}.mdi-ear-hearing::before{content:"\\F07C5"}.mdi-ear-hearing-off::before{content:"\\F0A45"}.mdi-earth::before{content:"\\F01E7"}.mdi-earth-arrow-right::before{content:"\\F1311"}.mdi-earth-box::before{content:"\\F06CD"}.mdi-earth-box-minus::before{content:"\\F1407"}.mdi-earth-box-off::before{content:"\\F06CE"}.mdi-earth-box-plus::before{content:"\\F1406"}.mdi-earth-box-remove::before{content:"\\F1408"}.mdi-earth-minus::before{content:"\\F1404"}.mdi-earth-off::before{content:"\\F01E8"}.mdi-earth-plus::before{content:"\\F1403"}.mdi-earth-remove::before{content:"\\F1405"}.mdi-egg::before{content:"\\F0AAF"}.mdi-egg-easter::before{content:"\\F0AB0"}.mdi-egg-off::before{content:"\\F13F0"}.mdi-egg-off-outline::before{content:"\\F13F1"}.mdi-egg-outline::before{content:"\\F13F2"}.mdi-eight-track::before{content:"\\F09EA"}.mdi-eject::before{content:"\\F01EA"}.mdi-eject-outline::before{content:"\\F0B91"}.mdi-electric-switch::before{content:"\\F0E9F"}.mdi-electric-switch-closed::before{content:"\\F10D9"}.mdi-electron-framework::before{content:"\\F1024"}.mdi-elephant::before{content:"\\F07C6"}.mdi-elevation-decline::before{content:"\\F01EB"}.mdi-elevation-rise::before{content:"\\F01EC"}.mdi-elevator::before{content:"\\F01ED"}.mdi-elevator-down::before{content:"\\F12C2"}.mdi-elevator-passenger::before{content:"\\F1381"}.mdi-elevator-up::before{content:"\\F12C1"}.mdi-ellipse::before{content:"\\F0EA0"}.mdi-ellipse-outline::before{content:"\\F0EA1"}.mdi-email::before{content:"\\F01EE"}.mdi-email-alert::before{content:"\\F06CF"}.mdi-email-alert-outline::before{content:"\\F0D42"}.mdi-email-box::before{content:"\\F0D03"}.mdi-email-check::before{content:"\\F0AB1"}.mdi-email-check-outline::before{content:"\\F0AB2"}.mdi-email-edit::before{content:"\\F0EE3"}.mdi-email-edit-outline::before{content:"\\F0EE4"}.mdi-email-lock::before{content:"\\F01F1"}.mdi-email-mark-as-unread::before{content:"\\F0B92"}.mdi-email-minus::before{content:"\\F0EE5"}.mdi-email-minus-outline::before{content:"\\F0EE6"}.mdi-email-multiple::before{content:"\\F0EE7"}.mdi-email-multiple-outline::before{content:"\\F0EE8"}.mdi-email-newsletter::before{content:"\\F0FB1"}.mdi-email-off::before{content:"\\F13E3"}.mdi-email-off-outline::before{content:"\\F13E4"}.mdi-email-open::before{content:"\\F01EF"}.mdi-email-open-multiple::before{content:"\\F0EE9"}.mdi-email-open-multiple-outline::before{content:"\\F0EEA"}.mdi-email-open-outline::before{content:"\\F05EF"}.mdi-email-outline::before{content:"\\F01F0"}.mdi-email-plus::before{content:"\\F09EB"}.mdi-email-plus-outline::before{content:"\\F09EC"}.mdi-email-receive::before{content:"\\F10DA"}.mdi-email-receive-outline::before{content:"\\F10DB"}.mdi-email-search::before{content:"\\F0961"}.mdi-email-search-outline::before{content:"\\F0962"}.mdi-email-send::before{content:"\\F10DC"}.mdi-email-send-outline::before{content:"\\F10DD"}.mdi-email-sync::before{content:"\\F12C7"}.mdi-email-sync-outline::before{content:"\\F12C8"}.mdi-email-variant::before{content:"\\F05F0"}.mdi-ember::before{content:"\\F0B30"}.mdi-emby::before{content:"\\F06B4"}.mdi-emoticon::before{content:"\\F0C68"}.mdi-emoticon-angry::before{content:"\\F0C69"}.mdi-emoticon-angry-outline::before{content:"\\F0C6A"}.mdi-emoticon-confused::before{content:"\\F10DE"}.mdi-emoticon-confused-outline::before{content:"\\F10DF"}.mdi-emoticon-cool::before{content:"\\F0C6B"}.mdi-emoticon-cool-outline::before{content:"\\F01F3"}.mdi-emoticon-cry::before{content:"\\F0C6C"}.mdi-emoticon-cry-outline::before{content:"\\F0C6D"}.mdi-emoticon-dead::before{content:"\\F0C6E"}.mdi-emoticon-dead-outline::before{content:"\\F069B"}.mdi-emoticon-devil::before{content:"\\F0C6F"}.mdi-emoticon-devil-outline::before{content:"\\F01F4"}.mdi-emoticon-excited::before{content:"\\F0C70"}.mdi-emoticon-excited-outline::before{content:"\\F069C"}.mdi-emoticon-frown::before{content:"\\F0F4C"}.mdi-emoticon-frown-outline::before{content:"\\F0F4D"}.mdi-emoticon-happy::before{content:"\\F0C71"}.mdi-emoticon-happy-outline::before{content:"\\F01F5"}.mdi-emoticon-kiss::before{content:"\\F0C72"}.mdi-emoticon-kiss-outline::before{content:"\\F0C73"}.mdi-emoticon-lol::before{content:"\\F1214"}.mdi-emoticon-lol-outline::before{content:"\\F1215"}.mdi-emoticon-neutral::before{content:"\\F0C74"}.mdi-emoticon-neutral-outline::before{content:"\\F01F6"}.mdi-emoticon-outline::before{content:"\\F01F2"}.mdi-emoticon-poop::before{content:"\\F01F7"}.mdi-emoticon-poop-outline::before{content:"\\F0C75"}.mdi-emoticon-sad::before{content:"\\F0C76"}.mdi-emoticon-sad-outline::before{content:"\\F01F8"}.mdi-emoticon-tongue::before{content:"\\F01F9"}.mdi-emoticon-tongue-outline::before{content:"\\F0C77"}.mdi-emoticon-wink::before{content:"\\F0C78"}.mdi-emoticon-wink-outline::before{content:"\\F0C79"}.mdi-engine::before{content:"\\F01FA"}.mdi-engine-off::before{content:"\\F0A46"}.mdi-engine-off-outline::before{content:"\\F0A47"}.mdi-engine-outline::before{content:"\\F01FB"}.mdi-epsilon::before{content:"\\F10E0"}.mdi-equal::before{content:"\\F01FC"}.mdi-equal-box::before{content:"\\F01FD"}.mdi-equalizer::before{content:"\\F0EA2"}.mdi-equalizer-outline::before{content:"\\F0EA3"}.mdi-eraser::before{content:"\\F01FE"}.mdi-eraser-variant::before{content:"\\F0642"}.mdi-escalator::before{content:"\\F01FF"}.mdi-escalator-box::before{content:"\\F1399"}.mdi-escalator-down::before{content:"\\F12C0"}.mdi-escalator-up::before{content:"\\F12BF"}.mdi-eslint::before{content:"\\F0C7A"}.mdi-et::before{content:"\\F0AB3"}.mdi-ethereum::before{content:"\\F086A"}.mdi-ethernet::before{content:"\\F0200"}.mdi-ethernet-cable::before{content:"\\F0201"}.mdi-ethernet-cable-off::before{content:"\\F0202"}.mdi-ev-station::before{content:"\\F05F1"}.mdi-evernote::before{content:"\\F0204"}.mdi-excavator::before{content:"\\F1025"}.mdi-exclamation::before{content:"\\F0205"}.mdi-exclamation-thick::before{content:"\\F1238"}.mdi-exit-run::before{content:"\\F0A48"}.mdi-exit-to-app::before{content:"\\F0206"}.mdi-expand-all::before{content:"\\F0AB4"}.mdi-expand-all-outline::before{content:"\\F0AB5"}.mdi-expansion-card::before{content:"\\F08AE"}.mdi-expansion-card-variant::before{content:"\\F0FB2"}.mdi-exponent::before{content:"\\F0963"}.mdi-exponent-box::before{content:"\\F0964"}.mdi-export::before{content:"\\F0207"}.mdi-export-variant::before{content:"\\F0B93"}.mdi-eye::before{content:"\\F0208"}.mdi-eye-check::before{content:"\\F0D04"}.mdi-eye-check-outline::before{content:"\\F0D05"}.mdi-eye-circle::before{content:"\\F0B94"}.mdi-eye-circle-outline::before{content:"\\F0B95"}.mdi-eye-minus::before{content:"\\F1026"}.mdi-eye-minus-outline::before{content:"\\F1027"}.mdi-eye-off::before{content:"\\F0209"}.mdi-eye-off-outline::before{content:"\\F06D1"}.mdi-eye-outline::before{content:"\\F06D0"}.mdi-eye-plus::before{content:"\\F086B"}.mdi-eye-plus-outline::before{content:"\\F086C"}.mdi-eye-settings::before{content:"\\F086D"}.mdi-eye-settings-outline::before{content:"\\F086E"}.mdi-eyedropper::before{content:"\\F020A"}.mdi-eyedropper-minus::before{content:"\\F13DD"}.mdi-eyedropper-off::before{content:"\\F13DF"}.mdi-eyedropper-plus::before{content:"\\F13DC"}.mdi-eyedropper-remove::before{content:"\\F13DE"}.mdi-eyedropper-variant::before{content:"\\F020B"}.mdi-face::before{content:"\\F0643"}.mdi-face-agent::before{content:"\\F0D70"}.mdi-face-outline::before{content:"\\F0B96"}.mdi-face-profile::before{content:"\\F0644"}.mdi-face-profile-woman::before{content:"\\F1076"}.mdi-face-recognition::before{content:"\\F0C7B"}.mdi-face-woman::before{content:"\\F1077"}.mdi-face-woman-outline::before{content:"\\F1078"}.mdi-facebook::before{content:"\\F020C"}.mdi-facebook-messenger::before{content:"\\F020E"}.mdi-facebook-workplace::before{content:"\\F0B31"}.mdi-factory::before{content:"\\F020F"}.mdi-fan::before{content:"\\F0210"}.mdi-fan-alert::before{content:"\\F146C"}.mdi-fan-chevron-down::before{content:"\\F146D"}.mdi-fan-chevron-up::before{content:"\\F146E"}.mdi-fan-minus::before{content:"\\F1470"}.mdi-fan-off::before{content:"\\F081D"}.mdi-fan-plus::before{content:"\\F146F"}.mdi-fan-remove::before{content:"\\F1471"}.mdi-fan-speed-1::before{content:"\\F1472"}.mdi-fan-speed-2::before{content:"\\F1473"}.mdi-fan-speed-3::before{content:"\\F1474"}.mdi-fast-forward::before{content:"\\F0211"}.mdi-fast-forward-10::before{content:"\\F0D71"}.mdi-fast-forward-30::before{content:"\\F0D06"}.mdi-fast-forward-5::before{content:"\\F11F8"}.mdi-fast-forward-outline::before{content:"\\F06D2"}.mdi-fax::before{content:"\\F0212"}.mdi-feather::before{content:"\\F06D3"}.mdi-feature-search::before{content:"\\F0A49"}.mdi-feature-search-outline::before{content:"\\F0A4A"}.mdi-fedora::before{content:"\\F08DB"}.mdi-fencing::before{content:"\\F14C1"}.mdi-ferris-wheel::before{content:"\\F0EA4"}.mdi-ferry::before{content:"\\F0213"}.mdi-file::before{content:"\\F0214"}.mdi-file-account::before{content:"\\F073B"}.mdi-file-account-outline::before{content:"\\F1028"}.mdi-file-alert::before{content:"\\F0A4B"}.mdi-file-alert-outline::before{content:"\\F0A4C"}.mdi-file-cabinet::before{content:"\\F0AB6"}.mdi-file-cad::before{content:"\\F0EEB"}.mdi-file-cad-box::before{content:"\\F0EEC"}.mdi-file-cancel::before{content:"\\F0DC6"}.mdi-file-cancel-outline::before{content:"\\F0DC7"}.mdi-file-certificate::before{content:"\\F1186"}.mdi-file-certificate-outline::before{content:"\\F1187"}.mdi-file-chart::before{content:"\\F0215"}.mdi-file-chart-outline::before{content:"\\F1029"}.mdi-file-check::before{content:"\\F0216"}.mdi-file-check-outline::before{content:"\\F0E29"}.mdi-file-clock::before{content:"\\F12E1"}.mdi-file-clock-outline::before{content:"\\F12E2"}.mdi-file-cloud::before{content:"\\F0217"}.mdi-file-cloud-outline::before{content:"\\F102A"}.mdi-file-code::before{content:"\\F022E"}.mdi-file-code-outline::before{content:"\\F102B"}.mdi-file-cog::before{content:"\\F107B"}.mdi-file-cog-outline::before{content:"\\F107C"}.mdi-file-compare::before{content:"\\F08AA"}.mdi-file-delimited::before{content:"\\F0218"}.mdi-file-delimited-outline::before{content:"\\F0EA5"}.mdi-file-document::before{content:"\\F0219"}.mdi-file-document-edit::before{content:"\\F0DC8"}.mdi-file-document-edit-outline::before{content:"\\F0DC9"}.mdi-file-document-outline::before{content:"\\F09EE"}.mdi-file-download::before{content:"\\F0965"}.mdi-file-download-outline::before{content:"\\F0966"}.mdi-file-edit::before{content:"\\F11E7"}.mdi-file-edit-outline::before{content:"\\F11E8"}.mdi-file-excel::before{content:"\\F021B"}.mdi-file-excel-box::before{content:"\\F021C"}.mdi-file-excel-box-outline::before{content:"\\F102C"}.mdi-file-excel-outline::before{content:"\\F102D"}.mdi-file-export::before{content:"\\F021D"}.mdi-file-export-outline::before{content:"\\F102E"}.mdi-file-eye::before{content:"\\F0DCA"}.mdi-file-eye-outline::before{content:"\\F0DCB"}.mdi-file-find::before{content:"\\F021E"}.mdi-file-find-outline::before{content:"\\F0B97"}.mdi-file-hidden::before{content:"\\F0613"}.mdi-file-image::before{content:"\\F021F"}.mdi-file-image-outline::before{content:"\\F0EB0"}.mdi-file-import::before{content:"\\F0220"}.mdi-file-import-outline::before{content:"\\F102F"}.mdi-file-key::before{content:"\\F1184"}.mdi-file-key-outline::before{content:"\\F1185"}.mdi-file-link::before{content:"\\F1177"}.mdi-file-link-outline::before{content:"\\F1178"}.mdi-file-lock::before{content:"\\F0221"}.mdi-file-lock-outline::before{content:"\\F1030"}.mdi-file-move::before{content:"\\F0AB9"}.mdi-file-move-outline::before{content:"\\F1031"}.mdi-file-multiple::before{content:"\\F0222"}.mdi-file-multiple-outline::before{content:"\\F1032"}.mdi-file-music::before{content:"\\F0223"}.mdi-file-music-outline::before{content:"\\F0E2A"}.mdi-file-outline::before{content:"\\F0224"}.mdi-file-pdf::before{content:"\\F0225"}.mdi-file-pdf-box::before{content:"\\F0226"}.mdi-file-pdf-box-outline::before{content:"\\F0FB3"}.mdi-file-pdf-outline::before{content:"\\F0E2D"}.mdi-file-percent::before{content:"\\F081E"}.mdi-file-percent-outline::before{content:"\\F1033"}.mdi-file-phone::before{content:"\\F1179"}.mdi-file-phone-outline::before{content:"\\F117A"}.mdi-file-plus::before{content:"\\F0752"}.mdi-file-plus-outline::before{content:"\\F0EED"}.mdi-file-powerpoint::before{content:"\\F0227"}.mdi-file-powerpoint-box::before{content:"\\F0228"}.mdi-file-powerpoint-box-outline::before{content:"\\F1034"}.mdi-file-powerpoint-outline::before{content:"\\F1035"}.mdi-file-presentation-box::before{content:"\\F0229"}.mdi-file-question::before{content:"\\F086F"}.mdi-file-question-outline::before{content:"\\F1036"}.mdi-file-refresh::before{content:"\\F0918"}.mdi-file-refresh-outline::before{content:"\\F0541"}.mdi-file-remove::before{content:"\\F0B98"}.mdi-file-remove-outline::before{content:"\\F1037"}.mdi-file-replace::before{content:"\\F0B32"}.mdi-file-replace-outline::before{content:"\\F0B33"}.mdi-file-restore::before{content:"\\F0670"}.mdi-file-restore-outline::before{content:"\\F1038"}.mdi-file-search::before{content:"\\F0C7C"}.mdi-file-search-outline::before{content:"\\F0C7D"}.mdi-file-send::before{content:"\\F022A"}.mdi-file-send-outline::before{content:"\\F1039"}.mdi-file-settings::before{content:"\\F1079"}.mdi-file-settings-outline::before{content:"\\F107A"}.mdi-file-star::before{content:"\\F103A"}.mdi-file-star-outline::before{content:"\\F103B"}.mdi-file-swap::before{content:"\\F0FB4"}.mdi-file-swap-outline::before{content:"\\F0FB5"}.mdi-file-sync::before{content:"\\F1216"}.mdi-file-sync-outline::before{content:"\\F1217"}.mdi-file-table::before{content:"\\F0C7E"}.mdi-file-table-box::before{content:"\\F10E1"}.mdi-file-table-box-multiple::before{content:"\\F10E2"}.mdi-file-table-box-multiple-outline::before{content:"\\F10E3"}.mdi-file-table-box-outline::before{content:"\\F10E4"}.mdi-file-table-outline::before{content:"\\F0C7F"}.mdi-file-tree::before{content:"\\F0645"}.mdi-file-tree-outline::before{content:"\\F13D2"}.mdi-file-undo::before{content:"\\F08DC"}.mdi-file-undo-outline::before{content:"\\F103C"}.mdi-file-upload::before{content:"\\F0A4D"}.mdi-file-upload-outline::before{content:"\\F0A4E"}.mdi-file-video::before{content:"\\F022B"}.mdi-file-video-outline::before{content:"\\F0E2C"}.mdi-file-word::before{content:"\\F022C"}.mdi-file-word-box::before{content:"\\F022D"}.mdi-file-word-box-outline::before{content:"\\F103D"}.mdi-file-word-outline::before{content:"\\F103E"}.mdi-film::before{content:"\\F022F"}.mdi-filmstrip::before{content:"\\F0230"}.mdi-filmstrip-box::before{content:"\\F0332"}.mdi-filmstrip-box-multiple::before{content:"\\F0D18"}.mdi-filmstrip-off::before{content:"\\F0231"}.mdi-filter::before{content:"\\F0232"}.mdi-filter-menu::before{content:"\\F10E5"}.mdi-filter-menu-outline::before{content:"\\F10E6"}.mdi-filter-minus::before{content:"\\F0EEE"}.mdi-filter-minus-outline::before{content:"\\F0EEF"}.mdi-filter-outline::before{content:"\\F0233"}.mdi-filter-plus::before{content:"\\F0EF0"}.mdi-filter-plus-outline::before{content:"\\F0EF1"}.mdi-filter-remove::before{content:"\\F0234"}.mdi-filter-remove-outline::before{content:"\\F0235"}.mdi-filter-variant::before{content:"\\F0236"}.mdi-filter-variant-minus::before{content:"\\F1112"}.mdi-filter-variant-plus::before{content:"\\F1113"}.mdi-filter-variant-remove::before{content:"\\F103F"}.mdi-finance::before{content:"\\F081F"}.mdi-find-replace::before{content:"\\F06D4"}.mdi-fingerprint::before{content:"\\F0237"}.mdi-fingerprint-off::before{content:"\\F0EB1"}.mdi-fire::before{content:"\\F0238"}.mdi-fire-extinguisher::before{content:"\\F0EF2"}.mdi-fire-hydrant::before{content:"\\F1137"}.mdi-fire-hydrant-alert::before{content:"\\F1138"}.mdi-fire-hydrant-off::before{content:"\\F1139"}.mdi-fire-truck::before{content:"\\F08AB"}.mdi-firebase::before{content:"\\F0967"}.mdi-firefox::before{content:"\\F0239"}.mdi-fireplace::before{content:"\\F0E2E"}.mdi-fireplace-off::before{content:"\\F0E2F"}.mdi-firework::before{content:"\\F0E30"}.mdi-fish::before{content:"\\F023A"}.mdi-fish-off::before{content:"\\F13F3"}.mdi-fishbowl::before{content:"\\F0EF3"}.mdi-fishbowl-outline::before{content:"\\F0EF4"}.mdi-fit-to-page::before{content:"\\F0EF5"}.mdi-fit-to-page-outline::before{content:"\\F0EF6"}.mdi-flag::before{content:"\\F023B"}.mdi-flag-checkered::before{content:"\\F023C"}.mdi-flag-minus::before{content:"\\F0B99"}.mdi-flag-minus-outline::before{content:"\\F10B2"}.mdi-flag-outline::before{content:"\\F023D"}.mdi-flag-plus::before{content:"\\F0B9A"}.mdi-flag-plus-outline::before{content:"\\F10B3"}.mdi-flag-remove::before{content:"\\F0B9B"}.mdi-flag-remove-outline::before{content:"\\F10B4"}.mdi-flag-triangle::before{content:"\\F023F"}.mdi-flag-variant::before{content:"\\F0240"}.mdi-flag-variant-outline::before{content:"\\F023E"}.mdi-flare::before{content:"\\F0D72"}.mdi-flash::before{content:"\\F0241"}.mdi-flash-alert::before{content:"\\F0EF7"}.mdi-flash-alert-outline::before{content:"\\F0EF8"}.mdi-flash-auto::before{content:"\\F0242"}.mdi-flash-circle::before{content:"\\F0820"}.mdi-flash-off::before{content:"\\F0243"}.mdi-flash-outline::before{content:"\\F06D5"}.mdi-flash-red-eye::before{content:"\\F067B"}.mdi-flashlight::before{content:"\\F0244"}.mdi-flashlight-off::before{content:"\\F0245"}.mdi-flask::before{content:"\\F0093"}.mdi-flask-empty::before{content:"\\F0094"}.mdi-flask-empty-minus::before{content:"\\F123A"}.mdi-flask-empty-minus-outline::before{content:"\\F123B"}.mdi-flask-empty-off::before{content:"\\F13F4"}.mdi-flask-empty-off-outline::before{content:"\\F13F5"}.mdi-flask-empty-outline::before{content:"\\F0095"}.mdi-flask-empty-plus::before{content:"\\F123C"}.mdi-flask-empty-plus-outline::before{content:"\\F123D"}.mdi-flask-empty-remove::before{content:"\\F123E"}.mdi-flask-empty-remove-outline::before{content:"\\F123F"}.mdi-flask-minus::before{content:"\\F1240"}.mdi-flask-minus-outline::before{content:"\\F1241"}.mdi-flask-off::before{content:"\\F13F6"}.mdi-flask-off-outline::before{content:"\\F13F7"}.mdi-flask-outline::before{content:"\\F0096"}.mdi-flask-plus::before{content:"\\F1242"}.mdi-flask-plus-outline::before{content:"\\F1243"}.mdi-flask-remove::before{content:"\\F1244"}.mdi-flask-remove-outline::before{content:"\\F1245"}.mdi-flask-round-bottom::before{content:"\\F124B"}.mdi-flask-round-bottom-empty::before{content:"\\F124C"}.mdi-flask-round-bottom-empty-outline::before{content:"\\F124D"}.mdi-flask-round-bottom-outline::before{content:"\\F124E"}.mdi-fleur-de-lis::before{content:"\\F1303"}.mdi-flip-horizontal::before{content:"\\F10E7"}.mdi-flip-to-back::before{content:"\\F0247"}.mdi-flip-to-front::before{content:"\\F0248"}.mdi-flip-vertical::before{content:"\\F10E8"}.mdi-floor-lamp::before{content:"\\F08DD"}.mdi-floor-lamp-dual::before{content:"\\F1040"}.mdi-floor-lamp-variant::before{content:"\\F1041"}.mdi-floor-plan::before{content:"\\F0821"}.mdi-floppy::before{content:"\\F0249"}.mdi-floppy-variant::before{content:"\\F09EF"}.mdi-flower::before{content:"\\F024A"}.mdi-flower-outline::before{content:"\\F09F0"}.mdi-flower-poppy::before{content:"\\F0D08"}.mdi-flower-tulip::before{content:"\\F09F1"}.mdi-flower-tulip-outline::before{content:"\\F09F2"}.mdi-focus-auto::before{content:"\\F0F4E"}.mdi-focus-field::before{content:"\\F0F4F"}.mdi-focus-field-horizontal::before{content:"\\F0F50"}.mdi-focus-field-vertical::before{content:"\\F0F51"}.mdi-folder::before{content:"\\F024B"}.mdi-folder-account::before{content:"\\F024C"}.mdi-folder-account-outline::before{content:"\\F0B9C"}.mdi-folder-alert::before{content:"\\F0DCC"}.mdi-folder-alert-outline::before{content:"\\F0DCD"}.mdi-folder-clock::before{content:"\\F0ABA"}.mdi-folder-clock-outline::before{content:"\\F0ABB"}.mdi-folder-cog::before{content:"\\F107F"}.mdi-folder-cog-outline::before{content:"\\F1080"}.mdi-folder-download::before{content:"\\F024D"}.mdi-folder-download-outline::before{content:"\\F10E9"}.mdi-folder-edit::before{content:"\\F08DE"}.mdi-folder-edit-outline::before{content:"\\F0DCE"}.mdi-folder-google-drive::before{content:"\\F024E"}.mdi-folder-heart::before{content:"\\F10EA"}.mdi-folder-heart-outline::before{content:"\\F10EB"}.mdi-folder-home::before{content:"\\F10B5"}.mdi-folder-home-outline::before{content:"\\F10B6"}.mdi-folder-image::before{content:"\\F024F"}.mdi-folder-information::before{content:"\\F10B7"}.mdi-folder-information-outline::before{content:"\\F10B8"}.mdi-folder-key::before{content:"\\F08AC"}.mdi-folder-key-network::before{content:"\\F08AD"}.mdi-folder-key-network-outline::before{content:"\\F0C80"}.mdi-folder-key-outline::before{content:"\\F10EC"}.mdi-folder-lock::before{content:"\\F0250"}.mdi-folder-lock-open::before{content:"\\F0251"}.mdi-folder-marker::before{content:"\\F126D"}.mdi-folder-marker-outline::before{content:"\\F126E"}.mdi-folder-move::before{content:"\\F0252"}.mdi-folder-move-outline::before{content:"\\F1246"}.mdi-folder-multiple::before{content:"\\F0253"}.mdi-folder-multiple-image::before{content:"\\F0254"}.mdi-folder-multiple-outline::before{content:"\\F0255"}.mdi-folder-multiple-plus::before{content:"\\F147E"}.mdi-folder-multiple-plus-outline::before{content:"\\F147F"}.mdi-folder-music::before{content:"\\F1359"}.mdi-folder-music-outline::before{content:"\\F135A"}.mdi-folder-network::before{content:"\\F0870"}.mdi-folder-network-outline::before{content:"\\F0C81"}.mdi-folder-open::before{content:"\\F0770"}.mdi-folder-open-outline::before{content:"\\F0DCF"}.mdi-folder-outline::before{content:"\\F0256"}.mdi-folder-plus::before{content:"\\F0257"}.mdi-folder-plus-outline::before{content:"\\F0B9D"}.mdi-folder-pound::before{content:"\\F0D09"}.mdi-folder-pound-outline::before{content:"\\F0D0A"}.mdi-folder-refresh::before{content:"\\F0749"}.mdi-folder-refresh-outline::before{content:"\\F0542"}.mdi-folder-remove::before{content:"\\F0258"}.mdi-folder-remove-outline::before{content:"\\F0B9E"}.mdi-folder-search::before{content:"\\F0968"}.mdi-folder-search-outline::before{content:"\\F0969"}.mdi-folder-settings::before{content:"\\F107D"}.mdi-folder-settings-outline::before{content:"\\F107E"}.mdi-folder-star::before{content:"\\F069D"}.mdi-folder-star-multiple::before{content:"\\F13D3"}.mdi-folder-star-multiple-outline::before{content:"\\F13D4"}.mdi-folder-star-outline::before{content:"\\F0B9F"}.mdi-folder-swap::before{content:"\\F0FB6"}.mdi-folder-swap-outline::before{content:"\\F0FB7"}.mdi-folder-sync::before{content:"\\F0D0B"}.mdi-folder-sync-outline::before{content:"\\F0D0C"}.mdi-folder-table::before{content:"\\F12E3"}.mdi-folder-table-outline::before{content:"\\F12E4"}.mdi-folder-text::before{content:"\\F0C82"}.mdi-folder-text-outline::before{content:"\\F0C83"}.mdi-folder-upload::before{content:"\\F0259"}.mdi-folder-upload-outline::before{content:"\\F10ED"}.mdi-folder-zip::before{content:"\\F06EB"}.mdi-folder-zip-outline::before{content:"\\F07B9"}.mdi-font-awesome::before{content:"\\F003A"}.mdi-food::before{content:"\\F025A"}.mdi-food-apple::before{content:"\\F025B"}.mdi-food-apple-outline::before{content:"\\F0C84"}.mdi-food-croissant::before{content:"\\F07C8"}.mdi-food-drumstick::before{content:"\\F141F"}.mdi-food-drumstick-off::before{content:"\\F1468"}.mdi-food-drumstick-off-outline::before{content:"\\F1469"}.mdi-food-drumstick-outline::before{content:"\\F1420"}.mdi-food-fork-drink::before{content:"\\F05F2"}.mdi-food-off::before{content:"\\F05F3"}.mdi-food-steak::before{content:"\\F146A"}.mdi-food-steak-off::before{content:"\\F146B"}.mdi-food-variant::before{content:"\\F025C"}.mdi-food-variant-off::before{content:"\\F13E5"}.mdi-foot-print::before{content:"\\F0F52"}.mdi-football::before{content:"\\F025D"}.mdi-football-australian::before{content:"\\F025E"}.mdi-football-helmet::before{content:"\\F025F"}.mdi-forklift::before{content:"\\F07C9"}.mdi-form-dropdown::before{content:"\\F1400"}.mdi-form-select::before{content:"\\F1401"}.mdi-form-textarea::before{content:"\\F1095"}.mdi-form-textbox::before{content:"\\F060E"}.mdi-form-textbox-lock::before{content:"\\F135D"}.mdi-form-textbox-password::before{content:"\\F07F5"}.mdi-format-align-bottom::before{content:"\\F0753"}.mdi-format-align-center::before{content:"\\F0260"}.mdi-format-align-justify::before{content:"\\F0261"}.mdi-format-align-left::before{content:"\\F0262"}.mdi-format-align-middle::before{content:"\\F0754"}.mdi-format-align-right::before{content:"\\F0263"}.mdi-format-align-top::before{content:"\\F0755"}.mdi-format-annotation-minus::before{content:"\\F0ABC"}.mdi-format-annotation-plus::before{content:"\\F0646"}.mdi-format-bold::before{content:"\\F0264"}.mdi-format-clear::before{content:"\\F0265"}.mdi-format-color-fill::before{content:"\\F0266"}.mdi-format-color-highlight::before{content:"\\F0E31"}.mdi-format-color-marker-cancel::before{content:"\\F1313"}.mdi-format-color-text::before{content:"\\F069E"}.mdi-format-columns::before{content:"\\F08DF"}.mdi-format-float-center::before{content:"\\F0267"}.mdi-format-float-left::before{content:"\\F0268"}.mdi-format-float-none::before{content:"\\F0269"}.mdi-format-float-right::before{content:"\\F026A"}.mdi-format-font::before{content:"\\F06D6"}.mdi-format-font-size-decrease::before{content:"\\F09F3"}.mdi-format-font-size-increase::before{content:"\\F09F4"}.mdi-format-header-1::before{content:"\\F026B"}.mdi-format-header-2::before{content:"\\F026C"}.mdi-format-header-3::before{content:"\\F026D"}.mdi-format-header-4::before{content:"\\F026E"}.mdi-format-header-5::before{content:"\\F026F"}.mdi-format-header-6::before{content:"\\F0270"}.mdi-format-header-decrease::before{content:"\\F0271"}.mdi-format-header-equal::before{content:"\\F0272"}.mdi-format-header-increase::before{content:"\\F0273"}.mdi-format-header-pound::before{content:"\\F0274"}.mdi-format-horizontal-align-center::before{content:"\\F061E"}.mdi-format-horizontal-align-left::before{content:"\\F061F"}.mdi-format-horizontal-align-right::before{content:"\\F0620"}.mdi-format-indent-decrease::before{content:"\\F0275"}.mdi-format-indent-increase::before{content:"\\F0276"}.mdi-format-italic::before{content:"\\F0277"}.mdi-format-letter-case::before{content:"\\F0B34"}.mdi-format-letter-case-lower::before{content:"\\F0B35"}.mdi-format-letter-case-upper::before{content:"\\F0B36"}.mdi-format-letter-ends-with::before{content:"\\F0FB8"}.mdi-format-letter-matches::before{content:"\\F0FB9"}.mdi-format-letter-starts-with::before{content:"\\F0FBA"}.mdi-format-line-spacing::before{content:"\\F0278"}.mdi-format-line-style::before{content:"\\F05C8"}.mdi-format-line-weight::before{content:"\\F05C9"}.mdi-format-list-bulleted::before{content:"\\F0279"}.mdi-format-list-bulleted-square::before{content:"\\F0DD0"}.mdi-format-list-bulleted-triangle::before{content:"\\F0EB2"}.mdi-format-list-bulleted-type::before{content:"\\F027A"}.mdi-format-list-checkbox::before{content:"\\F096A"}.mdi-format-list-checks::before{content:"\\F0756"}.mdi-format-list-numbered::before{content:"\\F027B"}.mdi-format-list-numbered-rtl::before{content:"\\F0D0D"}.mdi-format-list-text::before{content:"\\F126F"}.mdi-format-overline::before{content:"\\F0EB3"}.mdi-format-page-break::before{content:"\\F06D7"}.mdi-format-paint::before{content:"\\F027C"}.mdi-format-paragraph::before{content:"\\F027D"}.mdi-format-pilcrow::before{content:"\\F06D8"}.mdi-format-quote-close::before{content:"\\F027E"}.mdi-format-quote-close-outline::before{content:"\\F11A8"}.mdi-format-quote-open::before{content:"\\F0757"}.mdi-format-quote-open-outline::before{content:"\\F11A7"}.mdi-format-rotate-90::before{content:"\\F06AA"}.mdi-format-section::before{content:"\\F069F"}.mdi-format-size::before{content:"\\F027F"}.mdi-format-strikethrough::before{content:"\\F0280"}.mdi-format-strikethrough-variant::before{content:"\\F0281"}.mdi-format-subscript::before{content:"\\F0282"}.mdi-format-superscript::before{content:"\\F0283"}.mdi-format-text::before{content:"\\F0284"}.mdi-format-text-rotation-angle-down::before{content:"\\F0FBB"}.mdi-format-text-rotation-angle-up::before{content:"\\F0FBC"}.mdi-format-text-rotation-down::before{content:"\\F0D73"}.mdi-format-text-rotation-down-vertical::before{content:"\\F0FBD"}.mdi-format-text-rotation-none::before{content:"\\F0D74"}.mdi-format-text-rotation-up::before{content:"\\F0FBE"}.mdi-format-text-rotation-vertical::before{content:"\\F0FBF"}.mdi-format-text-variant::before{content:"\\F0E32"}.mdi-format-text-wrapping-clip::before{content:"\\F0D0E"}.mdi-format-text-wrapping-overflow::before{content:"\\F0D0F"}.mdi-format-text-wrapping-wrap::before{content:"\\F0D10"}.mdi-format-textbox::before{content:"\\F0D11"}.mdi-format-textdirection-l-to-r::before{content:"\\F0285"}.mdi-format-textdirection-r-to-l::before{content:"\\F0286"}.mdi-format-title::before{content:"\\F05F4"}.mdi-format-underline::before{content:"\\F0287"}.mdi-format-vertical-align-bottom::before{content:"\\F0621"}.mdi-format-vertical-align-center::before{content:"\\F0622"}.mdi-format-vertical-align-top::before{content:"\\F0623"}.mdi-format-wrap-inline::before{content:"\\F0288"}.mdi-format-wrap-square::before{content:"\\F0289"}.mdi-format-wrap-tight::before{content:"\\F028A"}.mdi-format-wrap-top-bottom::before{content:"\\F028B"}.mdi-forum::before{content:"\\F028C"}.mdi-forum-outline::before{content:"\\F0822"}.mdi-forward::before{content:"\\F028D"}.mdi-forwardburger::before{content:"\\F0D75"}.mdi-fountain::before{content:"\\F096B"}.mdi-fountain-pen::before{content:"\\F0D12"}.mdi-fountain-pen-tip::before{content:"\\F0D13"}.mdi-freebsd::before{content:"\\F08E0"}.mdi-frequently-asked-questions::before{content:"\\F0EB4"}.mdi-fridge::before{content:"\\F0290"}.mdi-fridge-alert::before{content:"\\F11B1"}.mdi-fridge-alert-outline::before{content:"\\F11B2"}.mdi-fridge-bottom::before{content:"\\F0292"}.mdi-fridge-off::before{content:"\\F11AF"}.mdi-fridge-off-outline::before{content:"\\F11B0"}.mdi-fridge-outline::before{content:"\\F028F"}.mdi-fridge-top::before{content:"\\F0291"}.mdi-fruit-cherries::before{content:"\\F1042"}.mdi-fruit-cherries-off::before{content:"\\F13F8"}.mdi-fruit-citrus::before{content:"\\F1043"}.mdi-fruit-citrus-off::before{content:"\\F13F9"}.mdi-fruit-grapes::before{content:"\\F1044"}.mdi-fruit-grapes-outline::before{content:"\\F1045"}.mdi-fruit-pineapple::before{content:"\\F1046"}.mdi-fruit-watermelon::before{content:"\\F1047"}.mdi-fuel::before{content:"\\F07CA"}.mdi-fullscreen::before{content:"\\F0293"}.mdi-fullscreen-exit::before{content:"\\F0294"}.mdi-function::before{content:"\\F0295"}.mdi-function-variant::before{content:"\\F0871"}.mdi-furigana-horizontal::before{content:"\\F1081"}.mdi-furigana-vertical::before{content:"\\F1082"}.mdi-fuse::before{content:"\\F0C85"}.mdi-fuse-alert::before{content:"\\F142D"}.mdi-fuse-blade::before{content:"\\F0C86"}.mdi-fuse-off::before{content:"\\F142C"}.mdi-gamepad::before{content:"\\F0296"}.mdi-gamepad-circle::before{content:"\\F0E33"}.mdi-gamepad-circle-down::before{content:"\\F0E34"}.mdi-gamepad-circle-left::before{content:"\\F0E35"}.mdi-gamepad-circle-outline::before{content:"\\F0E36"}.mdi-gamepad-circle-right::before{content:"\\F0E37"}.mdi-gamepad-circle-up::before{content:"\\F0E38"}.mdi-gamepad-down::before{content:"\\F0E39"}.mdi-gamepad-left::before{content:"\\F0E3A"}.mdi-gamepad-right::before{content:"\\F0E3B"}.mdi-gamepad-round::before{content:"\\F0E3C"}.mdi-gamepad-round-down::before{content:"\\F0E3D"}.mdi-gamepad-round-left::before{content:"\\F0E3E"}.mdi-gamepad-round-outline::before{content:"\\F0E3F"}.mdi-gamepad-round-right::before{content:"\\F0E40"}.mdi-gamepad-round-up::before{content:"\\F0E41"}.mdi-gamepad-square::before{content:"\\F0EB5"}.mdi-gamepad-square-outline::before{content:"\\F0EB6"}.mdi-gamepad-up::before{content:"\\F0E42"}.mdi-gamepad-variant::before{content:"\\F0297"}.mdi-gamepad-variant-outline::before{content:"\\F0EB7"}.mdi-gamma::before{content:"\\F10EE"}.mdi-gantry-crane::before{content:"\\F0DD1"}.mdi-garage::before{content:"\\F06D9"}.mdi-garage-alert::before{content:"\\F0872"}.mdi-garage-alert-variant::before{content:"\\F12D5"}.mdi-garage-open::before{content:"\\F06DA"}.mdi-garage-open-variant::before{content:"\\F12D4"}.mdi-garage-variant::before{content:"\\F12D3"}.mdi-gas-cylinder::before{content:"\\F0647"}.mdi-gas-station::before{content:"\\F0298"}.mdi-gas-station-off::before{content:"\\F1409"}.mdi-gas-station-off-outline::before{content:"\\F140A"}.mdi-gas-station-outline::before{content:"\\F0EB8"}.mdi-gate::before{content:"\\F0299"}.mdi-gate-and::before{content:"\\F08E1"}.mdi-gate-arrow-right::before{content:"\\F1169"}.mdi-gate-nand::before{content:"\\F08E2"}.mdi-gate-nor::before{content:"\\F08E3"}.mdi-gate-not::before{content:"\\F08E4"}.mdi-gate-open::before{content:"\\F116A"}.mdi-gate-or::before{content:"\\F08E5"}.mdi-gate-xnor::before{content:"\\F08E6"}.mdi-gate-xor::before{content:"\\F08E7"}.mdi-gatsby::before{content:"\\F0E43"}.mdi-gauge::before{content:"\\F029A"}.mdi-gauge-empty::before{content:"\\F0873"}.mdi-gauge-full::before{content:"\\F0874"}.mdi-gauge-low::before{content:"\\F0875"}.mdi-gavel::before{content:"\\F029B"}.mdi-gender-female::before{content:"\\F029C"}.mdi-gender-male::before{content:"\\F029D"}.mdi-gender-male-female::before{content:"\\F029E"}.mdi-gender-male-female-variant::before{content:"\\F113F"}.mdi-gender-non-binary::before{content:"\\F1140"}.mdi-gender-transgender::before{content:"\\F029F"}.mdi-gentoo::before{content:"\\F08E8"}.mdi-gesture::before{content:"\\F07CB"}.mdi-gesture-double-tap::before{content:"\\F073C"}.mdi-gesture-pinch::before{content:"\\F0ABD"}.mdi-gesture-spread::before{content:"\\F0ABE"}.mdi-gesture-swipe::before{content:"\\F0D76"}.mdi-gesture-swipe-down::before{content:"\\F073D"}.mdi-gesture-swipe-horizontal::before{content:"\\F0ABF"}.mdi-gesture-swipe-left::before{content:"\\F073E"}.mdi-gesture-swipe-right::before{content:"\\F073F"}.mdi-gesture-swipe-up::before{content:"\\F0740"}.mdi-gesture-swipe-vertical::before{content:"\\F0AC0"}.mdi-gesture-tap::before{content:"\\F0741"}.mdi-gesture-tap-box::before{content:"\\F12A9"}.mdi-gesture-tap-button::before{content:"\\F12A8"}.mdi-gesture-tap-hold::before{content:"\\F0D77"}.mdi-gesture-two-double-tap::before{content:"\\F0742"}.mdi-gesture-two-tap::before{content:"\\F0743"}.mdi-ghost::before{content:"\\F02A0"}.mdi-ghost-off::before{content:"\\F09F5"}.mdi-gif::before{content:"\\F0D78"}.mdi-gift::before{content:"\\F0E44"}.mdi-gift-outline::before{content:"\\F02A1"}.mdi-git::before{content:"\\F02A2"}.mdi-github::before{content:"\\F02A4"}.mdi-gitlab::before{content:"\\F0BA0"}.mdi-glass-cocktail::before{content:"\\F0356"}.mdi-glass-flute::before{content:"\\F02A5"}.mdi-glass-mug::before{content:"\\F02A6"}.mdi-glass-mug-variant::before{content:"\\F1116"}.mdi-glass-pint-outline::before{content:"\\F130D"}.mdi-glass-stange::before{content:"\\F02A7"}.mdi-glass-tulip::before{content:"\\F02A8"}.mdi-glass-wine::before{content:"\\F0876"}.mdi-glasses::before{content:"\\F02AA"}.mdi-globe-light::before{content:"\\F12D7"}.mdi-globe-model::before{content:"\\F08E9"}.mdi-gmail::before{content:"\\F02AB"}.mdi-gnome::before{content:"\\F02AC"}.mdi-go-kart::before{content:"\\F0D79"}.mdi-go-kart-track::before{content:"\\F0D7A"}.mdi-gog::before{content:"\\F0BA1"}.mdi-gold::before{content:"\\F124F"}.mdi-golf::before{content:"\\F0823"}.mdi-golf-cart::before{content:"\\F11A4"}.mdi-golf-tee::before{content:"\\F1083"}.mdi-gondola::before{content:"\\F0686"}.mdi-goodreads::before{content:"\\F0D7B"}.mdi-google::before{content:"\\F02AD"}.mdi-google-ads::before{content:"\\F0C87"}.mdi-google-analytics::before{content:"\\F07CC"}.mdi-google-assistant::before{content:"\\F07CD"}.mdi-google-cardboard::before{content:"\\F02AE"}.mdi-google-chrome::before{content:"\\F02AF"}.mdi-google-circles::before{content:"\\F02B0"}.mdi-google-circles-communities::before{content:"\\F02B1"}.mdi-google-circles-extended::before{content:"\\F02B2"}.mdi-google-circles-group::before{content:"\\F02B3"}.mdi-google-classroom::before{content:"\\F02C0"}.mdi-google-cloud::before{content:"\\F11F6"}.mdi-google-controller::before{content:"\\F02B4"}.mdi-google-controller-off::before{content:"\\F02B5"}.mdi-google-downasaur::before{content:"\\F1362"}.mdi-google-drive::before{content:"\\F02B6"}.mdi-google-earth::before{content:"\\F02B7"}.mdi-google-fit::before{content:"\\F096C"}.mdi-google-glass::before{content:"\\F02B8"}.mdi-google-hangouts::before{content:"\\F02C9"}.mdi-google-home::before{content:"\\F0824"}.mdi-google-keep::before{content:"\\F06DC"}.mdi-google-lens::before{content:"\\F09F6"}.mdi-google-maps::before{content:"\\F05F5"}.mdi-google-my-business::before{content:"\\F1048"}.mdi-google-nearby::before{content:"\\F02B9"}.mdi-google-photos::before{content:"\\F06DD"}.mdi-google-play::before{content:"\\F02BC"}.mdi-google-plus::before{content:"\\F02BD"}.mdi-google-podcast::before{content:"\\F0EB9"}.mdi-google-spreadsheet::before{content:"\\F09F7"}.mdi-google-street-view::before{content:"\\F0C88"}.mdi-google-translate::before{content:"\\F02BF"}.mdi-gradient::before{content:"\\F06A0"}.mdi-grain::before{content:"\\F0D7C"}.mdi-graph::before{content:"\\F1049"}.mdi-graph-outline::before{content:"\\F104A"}.mdi-graphql::before{content:"\\F0877"}.mdi-grave-stone::before{content:"\\F0BA2"}.mdi-grease-pencil::before{content:"\\F0648"}.mdi-greater-than::before{content:"\\F096D"}.mdi-greater-than-or-equal::before{content:"\\F096E"}.mdi-grid::before{content:"\\F02C1"}.mdi-grid-large::before{content:"\\F0758"}.mdi-grid-off::before{content:"\\F02C2"}.mdi-grill::before{content:"\\F0E45"}.mdi-grill-outline::before{content:"\\F118A"}.mdi-group::before{content:"\\F02C3"}.mdi-guitar-acoustic::before{content:"\\F0771"}.mdi-guitar-electric::before{content:"\\F02C4"}.mdi-guitar-pick::before{content:"\\F02C5"}.mdi-guitar-pick-outline::before{content:"\\F02C6"}.mdi-guy-fawkes-mask::before{content:"\\F0825"}.mdi-hail::before{content:"\\F0AC1"}.mdi-hair-dryer::before{content:"\\F10EF"}.mdi-hair-dryer-outline::before{content:"\\F10F0"}.mdi-halloween::before{content:"\\F0BA3"}.mdi-hamburger::before{content:"\\F0685"}.mdi-hammer::before{content:"\\F08EA"}.mdi-hammer-screwdriver::before{content:"\\F1322"}.mdi-hammer-wrench::before{content:"\\F1323"}.mdi-hand::before{content:"\\F0A4F"}.mdi-hand-heart::before{content:"\\F10F1"}.mdi-hand-left::before{content:"\\F0E46"}.mdi-hand-okay::before{content:"\\F0A50"}.mdi-hand-peace::before{content:"\\F0A51"}.mdi-hand-peace-variant::before{content:"\\F0A52"}.mdi-hand-pointing-down::before{content:"\\F0A53"}.mdi-hand-pointing-left::before{content:"\\F0A54"}.mdi-hand-pointing-right::before{content:"\\F02C7"}.mdi-hand-pointing-up::before{content:"\\F0A55"}.mdi-hand-right::before{content:"\\F0E47"}.mdi-hand-saw::before{content:"\\F0E48"}.mdi-hand-water::before{content:"\\F139F"}.mdi-handball::before{content:"\\F0F53"}.mdi-handcuffs::before{content:"\\F113E"}.mdi-handshake::before{content:"\\F1218"}.mdi-hanger::before{content:"\\F02C8"}.mdi-hard-hat::before{content:"\\F096F"}.mdi-harddisk::before{content:"\\F02CA"}.mdi-harddisk-plus::before{content:"\\F104B"}.mdi-harddisk-remove::before{content:"\\F104C"}.mdi-hat-fedora::before{content:"\\F0BA4"}.mdi-hazard-lights::before{content:"\\F0C89"}.mdi-hdr::before{content:"\\F0D7D"}.mdi-hdr-off::before{content:"\\F0D7E"}.mdi-head::before{content:"\\F135E"}.mdi-head-alert::before{content:"\\F1338"}.mdi-head-alert-outline::before{content:"\\F1339"}.mdi-head-check::before{content:"\\F133A"}.mdi-head-check-outline::before{content:"\\F133B"}.mdi-head-cog::before{content:"\\F133C"}.mdi-head-cog-outline::before{content:"\\F133D"}.mdi-head-dots-horizontal::before{content:"\\F133E"}.mdi-head-dots-horizontal-outline::before{content:"\\F133F"}.mdi-head-flash::before{content:"\\F1340"}.mdi-head-flash-outline::before{content:"\\F1341"}.mdi-head-heart::before{content:"\\F1342"}.mdi-head-heart-outline::before{content:"\\F1343"}.mdi-head-lightbulb::before{content:"\\F1344"}.mdi-head-lightbulb-outline::before{content:"\\F1345"}.mdi-head-minus::before{content:"\\F1346"}.mdi-head-minus-outline::before{content:"\\F1347"}.mdi-head-outline::before{content:"\\F135F"}.mdi-head-plus::before{content:"\\F1348"}.mdi-head-plus-outline::before{content:"\\F1349"}.mdi-head-question::before{content:"\\F134A"}.mdi-head-question-outline::before{content:"\\F134B"}.mdi-head-remove::before{content:"\\F134C"}.mdi-head-remove-outline::before{content:"\\F134D"}.mdi-head-snowflake::before{content:"\\F134E"}.mdi-head-snowflake-outline::before{content:"\\F134F"}.mdi-head-sync::before{content:"\\F1350"}.mdi-head-sync-outline::before{content:"\\F1351"}.mdi-headphones::before{content:"\\F02CB"}.mdi-headphones-bluetooth::before{content:"\\F0970"}.mdi-headphones-box::before{content:"\\F02CC"}.mdi-headphones-off::before{content:"\\F07CE"}.mdi-headphones-settings::before{content:"\\F02CD"}.mdi-headset::before{content:"\\F02CE"}.mdi-headset-dock::before{content:"\\F02CF"}.mdi-headset-off::before{content:"\\F02D0"}.mdi-heart::before{content:"\\F02D1"}.mdi-heart-box::before{content:"\\F02D2"}.mdi-heart-box-outline::before{content:"\\F02D3"}.mdi-heart-broken::before{content:"\\F02D4"}.mdi-heart-broken-outline::before{content:"\\F0D14"}.mdi-heart-circle::before{content:"\\F0971"}.mdi-heart-circle-outline::before{content:"\\F0972"}.mdi-heart-flash::before{content:"\\F0EF9"}.mdi-heart-half::before{content:"\\F06DF"}.mdi-heart-half-full::before{content:"\\F06DE"}.mdi-heart-half-outline::before{content:"\\F06E0"}.mdi-heart-minus::before{content:"\\F142F"}.mdi-heart-minus-outline::before{content:"\\F1432"}.mdi-heart-multiple::before{content:"\\F0A56"}.mdi-heart-multiple-outline::before{content:"\\F0A57"}.mdi-heart-off::before{content:"\\F0759"}.mdi-heart-off-outline::before{content:"\\F1434"}.mdi-heart-outline::before{content:"\\F02D5"}.mdi-heart-plus::before{content:"\\F142E"}.mdi-heart-plus-outline::before{content:"\\F1431"}.mdi-heart-pulse::before{content:"\\F05F6"}.mdi-heart-remove::before{content:"\\F1430"}.mdi-heart-remove-outline::before{content:"\\F1433"}.mdi-helicopter::before{content:"\\F0AC2"}.mdi-help::before{content:"\\F02D6"}.mdi-help-box::before{content:"\\F078B"}.mdi-help-circle::before{content:"\\F02D7"}.mdi-help-circle-outline::before{content:"\\F0625"}.mdi-help-network::before{content:"\\F06F5"}.mdi-help-network-outline::before{content:"\\F0C8A"}.mdi-help-rhombus::before{content:"\\F0BA5"}.mdi-help-rhombus-outline::before{content:"\\F0BA6"}.mdi-hexadecimal::before{content:"\\F12A7"}.mdi-hexagon::before{content:"\\F02D8"}.mdi-hexagon-multiple::before{content:"\\F06E1"}.mdi-hexagon-multiple-outline::before{content:"\\F10F2"}.mdi-hexagon-outline::before{content:"\\F02D9"}.mdi-hexagon-slice-1::before{content:"\\F0AC3"}.mdi-hexagon-slice-2::before{content:"\\F0AC4"}.mdi-hexagon-slice-3::before{content:"\\F0AC5"}.mdi-hexagon-slice-4::before{content:"\\F0AC6"}.mdi-hexagon-slice-5::before{content:"\\F0AC7"}.mdi-hexagon-slice-6::before{content:"\\F0AC8"}.mdi-hexagram::before{content:"\\F0AC9"}.mdi-hexagram-outline::before{content:"\\F0ACA"}.mdi-high-definition::before{content:"\\F07CF"}.mdi-high-definition-box::before{content:"\\F0878"}.mdi-highway::before{content:"\\F05F7"}.mdi-hiking::before{content:"\\F0D7F"}.mdi-hinduism::before{content:"\\F0973"}.mdi-history::before{content:"\\F02DA"}.mdi-hockey-puck::before{content:"\\F0879"}.mdi-hockey-sticks::before{content:"\\F087A"}.mdi-hololens::before{content:"\\F02DB"}.mdi-home::before{content:"\\F02DC"}.mdi-home-account::before{content:"\\F0826"}.mdi-home-alert::before{content:"\\F087B"}.mdi-home-analytics::before{content:"\\F0EBA"}.mdi-home-assistant::before{content:"\\F07D0"}.mdi-home-automation::before{content:"\\F07D1"}.mdi-home-circle::before{content:"\\F07D2"}.mdi-home-circle-outline::before{content:"\\F104D"}.mdi-home-city::before{content:"\\F0D15"}.mdi-home-city-outline::before{content:"\\F0D16"}.mdi-home-currency-usd::before{content:"\\F08AF"}.mdi-home-edit::before{content:"\\F1159"}.mdi-home-edit-outline::before{content:"\\F115A"}.mdi-home-export-outline::before{content:"\\F0F9B"}.mdi-home-flood::before{content:"\\F0EFA"}.mdi-home-floor-0::before{content:"\\F0DD2"}.mdi-home-floor-1::before{content:"\\F0D80"}.mdi-home-floor-2::before{content:"\\F0D81"}.mdi-home-floor-3::before{content:"\\F0D82"}.mdi-home-floor-a::before{content:"\\F0D83"}.mdi-home-floor-b::before{content:"\\F0D84"}.mdi-home-floor-g::before{content:"\\F0D85"}.mdi-home-floor-l::before{content:"\\F0D86"}.mdi-home-floor-negative-1::before{content:"\\F0DD3"}.mdi-home-group::before{content:"\\F0DD4"}.mdi-home-heart::before{content:"\\F0827"}.mdi-home-import-outline::before{content:"\\F0F9C"}.mdi-home-lightbulb::before{content:"\\F1251"}.mdi-home-lightbulb-outline::before{content:"\\F1252"}.mdi-home-lock::before{content:"\\F08EB"}.mdi-home-lock-open::before{content:"\\F08EC"}.mdi-home-map-marker::before{content:"\\F05F8"}.mdi-home-minus::before{content:"\\F0974"}.mdi-home-minus-outline::before{content:"\\F13D5"}.mdi-home-modern::before{content:"\\F02DD"}.mdi-home-outline::before{content:"\\F06A1"}.mdi-home-plus::before{content:"\\F0975"}.mdi-home-plus-outline::before{content:"\\F13D6"}.mdi-home-remove::before{content:"\\F1247"}.mdi-home-remove-outline::before{content:"\\F13D7"}.mdi-home-roof::before{content:"\\F112B"}.mdi-home-search::before{content:"\\F13B0"}.mdi-home-search-outline::before{content:"\\F13B1"}.mdi-home-thermometer::before{content:"\\F0F54"}.mdi-home-thermometer-outline::before{content:"\\F0F55"}.mdi-home-variant::before{content:"\\F02DE"}.mdi-home-variant-outline::before{content:"\\F0BA7"}.mdi-hook::before{content:"\\F06E2"}.mdi-hook-off::before{content:"\\F06E3"}.mdi-hops::before{content:"\\F02DF"}.mdi-horizontal-rotate-clockwise::before{content:"\\F10F3"}.mdi-horizontal-rotate-counterclockwise::before{content:"\\F10F4"}.mdi-horseshoe::before{content:"\\F0A58"}.mdi-hospital::before{content:"\\F0FF6"}.mdi-hospital-box::before{content:"\\F02E0"}.mdi-hospital-box-outline::before{content:"\\F0FF7"}.mdi-hospital-building::before{content:"\\F02E1"}.mdi-hospital-marker::before{content:"\\F02E2"}.mdi-hot-tub::before{content:"\\F0828"}.mdi-hours-24::before{content:"\\F1478"}.mdi-hubspot::before{content:"\\F0D17"}.mdi-hulu::before{content:"\\F0829"}.mdi-human::before{content:"\\F02E6"}.mdi-human-baby-changing-table::before{content:"\\F138B"}.mdi-human-child::before{content:"\\F02E7"}.mdi-human-female::before{content:"\\F0649"}.mdi-human-female-boy::before{content:"\\F0A59"}.mdi-human-female-female::before{content:"\\F0A5A"}.mdi-human-female-girl::before{content:"\\F0A5B"}.mdi-human-greeting::before{content:"\\F064A"}.mdi-human-handsdown::before{content:"\\F064B"}.mdi-human-handsup::before{content:"\\F064C"}.mdi-human-male::before{content:"\\F064D"}.mdi-human-male-boy::before{content:"\\F0A5C"}.mdi-human-male-child::before{content:"\\F138C"}.mdi-human-male-female::before{content:"\\F02E8"}.mdi-human-male-girl::before{content:"\\F0A5D"}.mdi-human-male-height::before{content:"\\F0EFB"}.mdi-human-male-height-variant::before{content:"\\F0EFC"}.mdi-human-male-male::before{content:"\\F0A5E"}.mdi-human-pregnant::before{content:"\\F05CF"}.mdi-human-wheelchair::before{content:"\\F138D"}.mdi-humble-bundle::before{content:"\\F0744"}.mdi-hvac::before{content:"\\F1352"}.mdi-hydraulic-oil-level::before{content:"\\F1324"}.mdi-hydraulic-oil-temperature::before{content:"\\F1325"}.mdi-hydro-power::before{content:"\\F12E5"}.mdi-ice-cream::before{content:"\\F082A"}.mdi-ice-cream-off::before{content:"\\F0E52"}.mdi-ice-pop::before{content:"\\F0EFD"}.mdi-id-card::before{content:"\\F0FC0"}.mdi-identifier::before{content:"\\F0EFE"}.mdi-ideogram-cjk::before{content:"\\F1331"}.mdi-ideogram-cjk-variant::before{content:"\\F1332"}.mdi-iframe::before{content:"\\F0C8B"}.mdi-iframe-array::before{content:"\\F10F5"}.mdi-iframe-array-outline::before{content:"\\F10F6"}.mdi-iframe-braces::before{content:"\\F10F7"}.mdi-iframe-braces-outline::before{content:"\\F10F8"}.mdi-iframe-outline::before{content:"\\F0C8C"}.mdi-iframe-parentheses::before{content:"\\F10F9"}.mdi-iframe-parentheses-outline::before{content:"\\F10FA"}.mdi-iframe-variable::before{content:"\\F10FB"}.mdi-iframe-variable-outline::before{content:"\\F10FC"}.mdi-image::before{content:"\\F02E9"}.mdi-image-album::before{content:"\\F02EA"}.mdi-image-area::before{content:"\\F02EB"}.mdi-image-area-close::before{content:"\\F02EC"}.mdi-image-auto-adjust::before{content:"\\F0FC1"}.mdi-image-broken::before{content:"\\F02ED"}.mdi-image-broken-variant::before{content:"\\F02EE"}.mdi-image-edit::before{content:"\\F11E3"}.mdi-image-edit-outline::before{content:"\\F11E4"}.mdi-image-filter-black-white::before{content:"\\F02F0"}.mdi-image-filter-center-focus::before{content:"\\F02F1"}.mdi-image-filter-center-focus-strong::before{content:"\\F0EFF"}.mdi-image-filter-center-focus-strong-outline::before{content:"\\F0F00"}.mdi-image-filter-center-focus-weak::before{content:"\\F02F2"}.mdi-image-filter-drama::before{content:"\\F02F3"}.mdi-image-filter-frames::before{content:"\\F02F4"}.mdi-image-filter-hdr::before{content:"\\F02F5"}.mdi-image-filter-none::before{content:"\\F02F6"}.mdi-image-filter-tilt-shift::before{content:"\\F02F7"}.mdi-image-filter-vintage::before{content:"\\F02F8"}.mdi-image-frame::before{content:"\\F0E49"}.mdi-image-minus::before{content:"\\F1419"}.mdi-image-move::before{content:"\\F09F8"}.mdi-image-multiple::before{content:"\\F02F9"}.mdi-image-multiple-outline::before{content:"\\F02EF"}.mdi-image-off::before{content:"\\F082B"}.mdi-image-off-outline::before{content:"\\F11D1"}.mdi-image-outline::before{content:"\\F0976"}.mdi-image-plus::before{content:"\\F087C"}.mdi-image-remove::before{content:"\\F1418"}.mdi-image-search::before{content:"\\F0977"}.mdi-image-search-outline::before{content:"\\F0978"}.mdi-image-size-select-actual::before{content:"\\F0C8D"}.mdi-image-size-select-large::before{content:"\\F0C8E"}.mdi-image-size-select-small::before{content:"\\F0C8F"}.mdi-import::before{content:"\\F02FA"}.mdi-inbox::before{content:"\\F0687"}.mdi-inbox-arrow-down::before{content:"\\F02FB"}.mdi-inbox-arrow-down-outline::before{content:"\\F1270"}.mdi-inbox-arrow-up::before{content:"\\F03D1"}.mdi-inbox-arrow-up-outline::before{content:"\\F1271"}.mdi-inbox-full::before{content:"\\F1272"}.mdi-inbox-full-outline::before{content:"\\F1273"}.mdi-inbox-multiple::before{content:"\\F08B0"}.mdi-inbox-multiple-outline::before{content:"\\F0BA8"}.mdi-inbox-outline::before{content:"\\F1274"}.mdi-incognito::before{content:"\\F05F9"}.mdi-incognito-circle::before{content:"\\F1421"}.mdi-incognito-circle-off::before{content:"\\F1422"}.mdi-incognito-off::before{content:"\\F0075"}.mdi-infinity::before{content:"\\F06E4"}.mdi-information::before{content:"\\F02FC"}.mdi-information-outline::before{content:"\\F02FD"}.mdi-information-variant::before{content:"\\F064E"}.mdi-instagram::before{content:"\\F02FE"}.mdi-instrument-triangle::before{content:"\\F104E"}.mdi-invert-colors::before{content:"\\F0301"}.mdi-invert-colors-off::before{content:"\\F0E4A"}.mdi-iobroker::before{content:"\\F12E8"}.mdi-ip::before{content:"\\F0A5F"}.mdi-ip-network::before{content:"\\F0A60"}.mdi-ip-network-outline::before{content:"\\F0C90"}.mdi-ipod::before{content:"\\F0C91"}.mdi-islam::before{content:"\\F0979"}.mdi-island::before{content:"\\F104F"}.mdi-iv-bag::before{content:"\\F10B9"}.mdi-jabber::before{content:"\\F0DD5"}.mdi-jeepney::before{content:"\\F0302"}.mdi-jellyfish::before{content:"\\F0F01"}.mdi-jellyfish-outline::before{content:"\\F0F02"}.mdi-jira::before{content:"\\F0303"}.mdi-jquery::before{content:"\\F087D"}.mdi-jsfiddle::before{content:"\\F0304"}.mdi-judaism::before{content:"\\F097A"}.mdi-jump-rope::before{content:"\\F12FF"}.mdi-kabaddi::before{content:"\\F0D87"}.mdi-karate::before{content:"\\F082C"}.mdi-keg::before{content:"\\F0305"}.mdi-kettle::before{content:"\\F05FA"}.mdi-kettle-alert::before{content:"\\F1317"}.mdi-kettle-alert-outline::before{content:"\\F1318"}.mdi-kettle-off::before{content:"\\F131B"}.mdi-kettle-off-outline::before{content:"\\F131C"}.mdi-kettle-outline::before{content:"\\F0F56"}.mdi-kettle-steam::before{content:"\\F1319"}.mdi-kettle-steam-outline::before{content:"\\F131A"}.mdi-kettlebell::before{content:"\\F1300"}.mdi-key::before{content:"\\F0306"}.mdi-key-arrow-right::before{content:"\\F1312"}.mdi-key-change::before{content:"\\F0307"}.mdi-key-link::before{content:"\\F119F"}.mdi-key-minus::before{content:"\\F0308"}.mdi-key-outline::before{content:"\\F0DD6"}.mdi-key-plus::before{content:"\\F0309"}.mdi-key-remove::before{content:"\\F030A"}.mdi-key-star::before{content:"\\F119E"}.mdi-key-variant::before{content:"\\F030B"}.mdi-key-wireless::before{content:"\\F0FC2"}.mdi-keyboard::before{content:"\\F030C"}.mdi-keyboard-backspace::before{content:"\\F030D"}.mdi-keyboard-caps::before{content:"\\F030E"}.mdi-keyboard-close::before{content:"\\F030F"}.mdi-keyboard-esc::before{content:"\\F12B7"}.mdi-keyboard-f1::before{content:"\\F12AB"}.mdi-keyboard-f10::before{content:"\\F12B4"}.mdi-keyboard-f11::before{content:"\\F12B5"}.mdi-keyboard-f12::before{content:"\\F12B6"}.mdi-keyboard-f2::before{content:"\\F12AC"}.mdi-keyboard-f3::before{content:"\\F12AD"}.mdi-keyboard-f4::before{content:"\\F12AE"}.mdi-keyboard-f5::before{content:"\\F12AF"}.mdi-keyboard-f6::before{content:"\\F12B0"}.mdi-keyboard-f7::before{content:"\\F12B1"}.mdi-keyboard-f8::before{content:"\\F12B2"}.mdi-keyboard-f9::before{content:"\\F12B3"}.mdi-keyboard-off::before{content:"\\F0310"}.mdi-keyboard-off-outline::before{content:"\\F0E4B"}.mdi-keyboard-outline::before{content:"\\F097B"}.mdi-keyboard-return::before{content:"\\F0311"}.mdi-keyboard-settings::before{content:"\\F09F9"}.mdi-keyboard-settings-outline::before{content:"\\F09FA"}.mdi-keyboard-space::before{content:"\\F1050"}.mdi-keyboard-tab::before{content:"\\F0312"}.mdi-keyboard-variant::before{content:"\\F0313"}.mdi-khanda::before{content:"\\F10FD"}.mdi-kickstarter::before{content:"\\F0745"}.mdi-klingon::before{content:"\\F135B"}.mdi-knife::before{content:"\\F09FB"}.mdi-knife-military::before{content:"\\F09FC"}.mdi-kodi::before{content:"\\F0314"}.mdi-kubernetes::before{content:"\\F10FE"}.mdi-label::before{content:"\\F0315"}.mdi-label-multiple::before{content:"\\F1375"}.mdi-label-multiple-outline::before{content:"\\F1376"}.mdi-label-off::before{content:"\\F0ACB"}.mdi-label-off-outline::before{content:"\\F0ACC"}.mdi-label-outline::before{content:"\\F0316"}.mdi-label-percent::before{content:"\\F12EA"}.mdi-label-percent-outline::before{content:"\\F12EB"}.mdi-label-variant::before{content:"\\F0ACD"}.mdi-label-variant-outline::before{content:"\\F0ACE"}.mdi-ladybug::before{content:"\\F082D"}.mdi-lambda::before{content:"\\F0627"}.mdi-lamp::before{content:"\\F06B5"}.mdi-lan::before{content:"\\F0317"}.mdi-lan-check::before{content:"\\F12AA"}.mdi-lan-connect::before{content:"\\F0318"}.mdi-lan-disconnect::before{content:"\\F0319"}.mdi-lan-pending::before{content:"\\F031A"}.mdi-language-c::before{content:"\\F0671"}.mdi-language-cpp::before{content:"\\F0672"}.mdi-language-csharp::before{content:"\\F031B"}.mdi-language-css3::before{content:"\\F031C"}.mdi-language-fortran::before{content:"\\F121A"}.mdi-language-go::before{content:"\\F07D3"}.mdi-language-haskell::before{content:"\\F0C92"}.mdi-language-html5::before{content:"\\F031D"}.mdi-language-java::before{content:"\\F0B37"}.mdi-language-javascript::before{content:"\\F031E"}.mdi-language-kotlin::before{content:"\\F1219"}.mdi-language-lua::before{content:"\\F08B1"}.mdi-language-markdown::before{content:"\\F0354"}.mdi-language-markdown-outline::before{content:"\\F0F5B"}.mdi-language-php::before{content:"\\F031F"}.mdi-language-python::before{content:"\\F0320"}.mdi-language-r::before{content:"\\F07D4"}.mdi-language-ruby::before{content:"\\F0D2D"}.mdi-language-ruby-on-rails::before{content:"\\F0ACF"}.mdi-language-swift::before{content:"\\F06E5"}.mdi-language-typescript::before{content:"\\F06E6"}.mdi-language-xaml::before{content:"\\F0673"}.mdi-laptop::before{content:"\\F0322"}.mdi-laptop-chromebook::before{content:"\\F0323"}.mdi-laptop-mac::before{content:"\\F0324"}.mdi-laptop-off::before{content:"\\F06E7"}.mdi-laptop-windows::before{content:"\\F0325"}.mdi-laravel::before{content:"\\F0AD0"}.mdi-laser-pointer::before{content:"\\F1484"}.mdi-lasso::before{content:"\\F0F03"}.mdi-lastpass::before{content:"\\F0446"}.mdi-latitude::before{content:"\\F0F57"}.mdi-launch::before{content:"\\F0327"}.mdi-lava-lamp::before{content:"\\F07D5"}.mdi-layers::before{content:"\\F0328"}.mdi-layers-minus::before{content:"\\F0E4C"}.mdi-layers-off::before{content:"\\F0329"}.mdi-layers-off-outline::before{content:"\\F09FD"}.mdi-layers-outline::before{content:"\\F09FE"}.mdi-layers-plus::before{content:"\\F0E4D"}.mdi-layers-remove::before{content:"\\F0E4E"}.mdi-layers-search::before{content:"\\F1206"}.mdi-layers-search-outline::before{content:"\\F1207"}.mdi-layers-triple::before{content:"\\F0F58"}.mdi-layers-triple-outline::before{content:"\\F0F59"}.mdi-lead-pencil::before{content:"\\F064F"}.mdi-leaf::before{content:"\\F032A"}.mdi-leaf-maple::before{content:"\\F0C93"}.mdi-leaf-maple-off::before{content:"\\F12DA"}.mdi-leaf-off::before{content:"\\F12D9"}.mdi-leak::before{content:"\\F0DD7"}.mdi-leak-off::before{content:"\\F0DD8"}.mdi-led-off::before{content:"\\F032B"}.mdi-led-on::before{content:"\\F032C"}.mdi-led-outline::before{content:"\\F032D"}.mdi-led-strip::before{content:"\\F07D6"}.mdi-led-strip-variant::before{content:"\\F1051"}.mdi-led-variant-off::before{content:"\\F032E"}.mdi-led-variant-on::before{content:"\\F032F"}.mdi-led-variant-outline::before{content:"\\F0330"}.mdi-leek::before{content:"\\F117D"}.mdi-less-than::before{content:"\\F097C"}.mdi-less-than-or-equal::before{content:"\\F097D"}.mdi-library::before{content:"\\F0331"}.mdi-library-shelves::before{content:"\\F0BA9"}.mdi-license::before{content:"\\F0FC3"}.mdi-lifebuoy::before{content:"\\F087E"}.mdi-light-switch::before{content:"\\F097E"}.mdi-lightbulb::before{content:"\\F0335"}.mdi-lightbulb-cfl::before{content:"\\F1208"}.mdi-lightbulb-cfl-off::before{content:"\\F1209"}.mdi-lightbulb-cfl-spiral::before{content:"\\F1275"}.mdi-lightbulb-cfl-spiral-off::before{content:"\\F12C3"}.mdi-lightbulb-group::before{content:"\\F1253"}.mdi-lightbulb-group-off::before{content:"\\F12CD"}.mdi-lightbulb-group-off-outline::before{content:"\\F12CE"}.mdi-lightbulb-group-outline::before{content:"\\F1254"}.mdi-lightbulb-multiple::before{content:"\\F1255"}.mdi-lightbulb-multiple-off::before{content:"\\F12CF"}.mdi-lightbulb-multiple-off-outline::before{content:"\\F12D0"}.mdi-lightbulb-multiple-outline::before{content:"\\F1256"}.mdi-lightbulb-off::before{content:"\\F0E4F"}.mdi-lightbulb-off-outline::before{content:"\\F0E50"}.mdi-lightbulb-on::before{content:"\\F06E8"}.mdi-lightbulb-on-outline::before{content:"\\F06E9"}.mdi-lightbulb-outline::before{content:"\\F0336"}.mdi-lighthouse::before{content:"\\F09FF"}.mdi-lighthouse-on::before{content:"\\F0A00"}.mdi-lightning-bolt::before{content:"\\F140B"}.mdi-lightning-bolt-outline::before{content:"\\F140C"}.mdi-lingerie::before{content:"\\F1476"}.mdi-link::before{content:"\\F0337"}.mdi-link-box::before{content:"\\F0D1A"}.mdi-link-box-outline::before{content:"\\F0D1B"}.mdi-link-box-variant::before{content:"\\F0D1C"}.mdi-link-box-variant-outline::before{content:"\\F0D1D"}.mdi-link-lock::before{content:"\\F10BA"}.mdi-link-off::before{content:"\\F0338"}.mdi-link-plus::before{content:"\\F0C94"}.mdi-link-variant::before{content:"\\F0339"}.mdi-link-variant-minus::before{content:"\\F10FF"}.mdi-link-variant-off::before{content:"\\F033A"}.mdi-link-variant-plus::before{content:"\\F1100"}.mdi-link-variant-remove::before{content:"\\F1101"}.mdi-linkedin::before{content:"\\F033B"}.mdi-linux::before{content:"\\F033D"}.mdi-linux-mint::before{content:"\\F08ED"}.mdi-lipstick::before{content:"\\F13B5"}.mdi-litecoin::before{content:"\\F0A61"}.mdi-loading::before{content:"\\F0772"}.mdi-location-enter::before{content:"\\F0FC4"}.mdi-location-exit::before{content:"\\F0FC5"}.mdi-lock::before{content:"\\F033E"}.mdi-lock-alert::before{content:"\\F08EE"}.mdi-lock-check::before{content:"\\F139A"}.mdi-lock-clock::before{content:"\\F097F"}.mdi-lock-open::before{content:"\\F033F"}.mdi-lock-open-alert::before{content:"\\F139B"}.mdi-lock-open-check::before{content:"\\F139C"}.mdi-lock-open-outline::before{content:"\\F0340"}.mdi-lock-open-variant::before{content:"\\F0FC6"}.mdi-lock-open-variant-outline::before{content:"\\F0FC7"}.mdi-lock-outline::before{content:"\\F0341"}.mdi-lock-pattern::before{content:"\\F06EA"}.mdi-lock-plus::before{content:"\\F05FB"}.mdi-lock-question::before{content:"\\F08EF"}.mdi-lock-reset::before{content:"\\F0773"}.mdi-lock-smart::before{content:"\\F08B2"}.mdi-locker::before{content:"\\F07D7"}.mdi-locker-multiple::before{content:"\\F07D8"}.mdi-login::before{content:"\\F0342"}.mdi-login-variant::before{content:"\\F05FC"}.mdi-logout::before{content:"\\F0343"}.mdi-logout-variant::before{content:"\\F05FD"}.mdi-longitude::before{content:"\\F0F5A"}.mdi-looks::before{content:"\\F0344"}.mdi-loupe::before{content:"\\F0345"}.mdi-lumx::before{content:"\\F0346"}.mdi-lungs::before{content:"\\F1084"}.mdi-magnet::before{content:"\\F0347"}.mdi-magnet-on::before{content:"\\F0348"}.mdi-magnify::before{content:"\\F0349"}.mdi-magnify-close::before{content:"\\F0980"}.mdi-magnify-minus::before{content:"\\F034A"}.mdi-magnify-minus-cursor::before{content:"\\F0A62"}.mdi-magnify-minus-outline::before{content:"\\F06EC"}.mdi-magnify-plus::before{content:"\\F034B"}.mdi-magnify-plus-cursor::before{content:"\\F0A63"}.mdi-magnify-plus-outline::before{content:"\\F06ED"}.mdi-magnify-remove-cursor::before{content:"\\F120C"}.mdi-magnify-remove-outline::before{content:"\\F120D"}.mdi-magnify-scan::before{content:"\\F1276"}.mdi-mail::before{content:"\\F0EBB"}.mdi-mailbox::before{content:"\\F06EE"}.mdi-mailbox-open::before{content:"\\F0D88"}.mdi-mailbox-open-outline::before{content:"\\F0D89"}.mdi-mailbox-open-up::before{content:"\\F0D8A"}.mdi-mailbox-open-up-outline::before{content:"\\F0D8B"}.mdi-mailbox-outline::before{content:"\\F0D8C"}.mdi-mailbox-up::before{content:"\\F0D8D"}.mdi-mailbox-up-outline::before{content:"\\F0D8E"}.mdi-map::before{content:"\\F034D"}.mdi-map-check::before{content:"\\F0EBC"}.mdi-map-check-outline::before{content:"\\F0EBD"}.mdi-map-clock::before{content:"\\F0D1E"}.mdi-map-clock-outline::before{content:"\\F0D1F"}.mdi-map-legend::before{content:"\\F0A01"}.mdi-map-marker::before{content:"\\F034E"}.mdi-map-marker-alert::before{content:"\\F0F05"}.mdi-map-marker-alert-outline::before{content:"\\F0F06"}.mdi-map-marker-check::before{content:"\\F0C95"}.mdi-map-marker-check-outline::before{content:"\\F12FB"}.mdi-map-marker-circle::before{content:"\\F034F"}.mdi-map-marker-distance::before{content:"\\F08F0"}.mdi-map-marker-down::before{content:"\\F1102"}.mdi-map-marker-left::before{content:"\\F12DB"}.mdi-map-marker-left-outline::before{content:"\\F12DD"}.mdi-map-marker-minus::before{content:"\\F0650"}.mdi-map-marker-minus-outline::before{content:"\\F12F9"}.mdi-map-marker-multiple::before{content:"\\F0350"}.mdi-map-marker-multiple-outline::before{content:"\\F1277"}.mdi-map-marker-off::before{content:"\\F0351"}.mdi-map-marker-off-outline::before{content:"\\F12FD"}.mdi-map-marker-outline::before{content:"\\F07D9"}.mdi-map-marker-path::before{content:"\\F0D20"}.mdi-map-marker-plus::before{content:"\\F0651"}.mdi-map-marker-plus-outline::before{content:"\\F12F8"}.mdi-map-marker-question::before{content:"\\F0F07"}.mdi-map-marker-question-outline::before{content:"\\F0F08"}.mdi-map-marker-radius::before{content:"\\F0352"}.mdi-map-marker-radius-outline::before{content:"\\F12FC"}.mdi-map-marker-remove::before{content:"\\F0F09"}.mdi-map-marker-remove-outline::before{content:"\\F12FA"}.mdi-map-marker-remove-variant::before{content:"\\F0F0A"}.mdi-map-marker-right::before{content:"\\F12DC"}.mdi-map-marker-right-outline::before{content:"\\F12DE"}.mdi-map-marker-up::before{content:"\\F1103"}.mdi-map-minus::before{content:"\\F0981"}.mdi-map-outline::before{content:"\\F0982"}.mdi-map-plus::before{content:"\\F0983"}.mdi-map-search::before{content:"\\F0984"}.mdi-map-search-outline::before{content:"\\F0985"}.mdi-mapbox::before{content:"\\F0BAA"}.mdi-margin::before{content:"\\F0353"}.mdi-marker::before{content:"\\F0652"}.mdi-marker-cancel::before{content:"\\F0DD9"}.mdi-marker-check::before{content:"\\F0355"}.mdi-mastodon::before{content:"\\F0AD1"}.mdi-material-design::before{content:"\\F0986"}.mdi-material-ui::before{content:"\\F0357"}.mdi-math-compass::before{content:"\\F0358"}.mdi-math-cos::before{content:"\\F0C96"}.mdi-math-integral::before{content:"\\F0FC8"}.mdi-math-integral-box::before{content:"\\F0FC9"}.mdi-math-log::before{content:"\\F1085"}.mdi-math-norm::before{content:"\\F0FCA"}.mdi-math-norm-box::before{content:"\\F0FCB"}.mdi-math-sin::before{content:"\\F0C97"}.mdi-math-tan::before{content:"\\F0C98"}.mdi-matrix::before{content:"\\F0628"}.mdi-medal::before{content:"\\F0987"}.mdi-medal-outline::before{content:"\\F1326"}.mdi-medical-bag::before{content:"\\F06EF"}.mdi-meditation::before{content:"\\F117B"}.mdi-memory::before{content:"\\F035B"}.mdi-menu::before{content:"\\F035C"}.mdi-menu-down::before{content:"\\F035D"}.mdi-menu-down-outline::before{content:"\\F06B6"}.mdi-menu-left::before{content:"\\F035E"}.mdi-menu-left-outline::before{content:"\\F0A02"}.mdi-menu-open::before{content:"\\F0BAB"}.mdi-menu-right::before{content:"\\F035F"}.mdi-menu-right-outline::before{content:"\\F0A03"}.mdi-menu-swap::before{content:"\\F0A64"}.mdi-menu-swap-outline::before{content:"\\F0A65"}.mdi-menu-up::before{content:"\\F0360"}.mdi-menu-up-outline::before{content:"\\F06B7"}.mdi-merge::before{content:"\\F0F5C"}.mdi-message::before{content:"\\F0361"}.mdi-message-alert::before{content:"\\F0362"}.mdi-message-alert-outline::before{content:"\\F0A04"}.mdi-message-arrow-left::before{content:"\\F12F2"}.mdi-message-arrow-left-outline::before{content:"\\F12F3"}.mdi-message-arrow-right::before{content:"\\F12F4"}.mdi-message-arrow-right-outline::before{content:"\\F12F5"}.mdi-message-bulleted::before{content:"\\F06A2"}.mdi-message-bulleted-off::before{content:"\\F06A3"}.mdi-message-cog::before{content:"\\F06F1"}.mdi-message-cog-outline::before{content:"\\F1172"}.mdi-message-draw::before{content:"\\F0363"}.mdi-message-image::before{content:"\\F0364"}.mdi-message-image-outline::before{content:"\\F116C"}.mdi-message-lock::before{content:"\\F0FCC"}.mdi-message-lock-outline::before{content:"\\F116D"}.mdi-message-minus::before{content:"\\F116E"}.mdi-message-minus-outline::before{content:"\\F116F"}.mdi-message-outline::before{content:"\\F0365"}.mdi-message-plus::before{content:"\\F0653"}.mdi-message-plus-outline::before{content:"\\F10BB"}.mdi-message-processing::before{content:"\\F0366"}.mdi-message-processing-outline::before{content:"\\F1170"}.mdi-message-reply::before{content:"\\F0367"}.mdi-message-reply-text::before{content:"\\F0368"}.mdi-message-settings::before{content:"\\F06F0"}.mdi-message-settings-outline::before{content:"\\F1171"}.mdi-message-text::before{content:"\\F0369"}.mdi-message-text-clock::before{content:"\\F1173"}.mdi-message-text-clock-outline::before{content:"\\F1174"}.mdi-message-text-lock::before{content:"\\F0FCD"}.mdi-message-text-lock-outline::before{content:"\\F1175"}.mdi-message-text-outline::before{content:"\\F036A"}.mdi-message-video::before{content:"\\F036B"}.mdi-meteor::before{content:"\\F0629"}.mdi-metronome::before{content:"\\F07DA"}.mdi-metronome-tick::before{content:"\\F07DB"}.mdi-micro-sd::before{content:"\\F07DC"}.mdi-microphone::before{content:"\\F036C"}.mdi-microphone-minus::before{content:"\\F08B3"}.mdi-microphone-off::before{content:"\\F036D"}.mdi-microphone-outline::before{content:"\\F036E"}.mdi-microphone-plus::before{content:"\\F08B4"}.mdi-microphone-settings::before{content:"\\F036F"}.mdi-microphone-variant::before{content:"\\F0370"}.mdi-microphone-variant-off::before{content:"\\F0371"}.mdi-microscope::before{content:"\\F0654"}.mdi-microsoft::before{content:"\\F0372"}.mdi-microsoft-access::before{content:"\\F138E"}.mdi-microsoft-azure::before{content:"\\F0805"}.mdi-microsoft-azure-devops::before{content:"\\F0FD5"}.mdi-microsoft-bing::before{content:"\\F00A4"}.mdi-microsoft-dynamics-365::before{content:"\\F0988"}.mdi-microsoft-edge::before{content:"\\F01E9"}.mdi-microsoft-edge-legacy::before{content:"\\F1250"}.mdi-microsoft-excel::before{content:"\\F138F"}.mdi-microsoft-internet-explorer::before{content:"\\F0300"}.mdi-microsoft-office::before{content:"\\F03C6"}.mdi-microsoft-onedrive::before{content:"\\F03CA"}.mdi-microsoft-onenote::before{content:"\\F0747"}.mdi-microsoft-outlook::before{content:"\\F0D22"}.mdi-microsoft-powerpoint::before{content:"\\F1390"}.mdi-microsoft-sharepoint::before{content:"\\F1391"}.mdi-microsoft-teams::before{content:"\\F02BB"}.mdi-microsoft-visual-studio::before{content:"\\F0610"}.mdi-microsoft-visual-studio-code::before{content:"\\F0A1E"}.mdi-microsoft-windows::before{content:"\\F05B3"}.mdi-microsoft-windows-classic::before{content:"\\F0A21"}.mdi-microsoft-word::before{content:"\\F1392"}.mdi-microsoft-xbox::before{content:"\\F05B9"}.mdi-microsoft-xbox-controller::before{content:"\\F05BA"}.mdi-microsoft-xbox-controller-battery-alert::before{content:"\\F074B"}.mdi-microsoft-xbox-controller-battery-charging::before{content:"\\F0A22"}.mdi-microsoft-xbox-controller-battery-empty::before{content:"\\F074C"}.mdi-microsoft-xbox-controller-battery-full::before{content:"\\F074D"}.mdi-microsoft-xbox-controller-battery-low::before{content:"\\F074E"}.mdi-microsoft-xbox-controller-battery-medium::before{content:"\\F074F"}.mdi-microsoft-xbox-controller-battery-unknown::before{content:"\\F0750"}.mdi-microsoft-xbox-controller-menu::before{content:"\\F0E6F"}.mdi-microsoft-xbox-controller-off::before{content:"\\F05BB"}.mdi-microsoft-xbox-controller-view::before{content:"\\F0E70"}.mdi-microsoft-yammer::before{content:"\\F0789"}.mdi-microwave::before{content:"\\F0C99"}.mdi-microwave-off::before{content:"\\F1423"}.mdi-middleware::before{content:"\\F0F5D"}.mdi-middleware-outline::before{content:"\\F0F5E"}.mdi-midi::before{content:"\\F08F1"}.mdi-midi-port::before{content:"\\F08F2"}.mdi-mine::before{content:"\\F0DDA"}.mdi-minecraft::before{content:"\\F0373"}.mdi-mini-sd::before{content:"\\F0A05"}.mdi-minidisc::before{content:"\\F0A06"}.mdi-minus::before{content:"\\F0374"}.mdi-minus-box::before{content:"\\F0375"}.mdi-minus-box-multiple::before{content:"\\F1141"}.mdi-minus-box-multiple-outline::before{content:"\\F1142"}.mdi-minus-box-outline::before{content:"\\F06F2"}.mdi-minus-circle::before{content:"\\F0376"}.mdi-minus-circle-multiple::before{content:"\\F035A"}.mdi-minus-circle-multiple-outline::before{content:"\\F0AD3"}.mdi-minus-circle-off::before{content:"\\F1459"}.mdi-minus-circle-off-outline::before{content:"\\F145A"}.mdi-minus-circle-outline::before{content:"\\F0377"}.mdi-minus-network::before{content:"\\F0378"}.mdi-minus-network-outline::before{content:"\\F0C9A"}.mdi-mirror::before{content:"\\F11FD"}.mdi-mixed-martial-arts::before{content:"\\F0D8F"}.mdi-mixed-reality::before{content:"\\F087F"}.mdi-mixer::before{content:"\\F07DD"}.mdi-molecule::before{content:"\\F0BAC"}.mdi-molecule-co::before{content:"\\F12FE"}.mdi-molecule-co2::before{content:"\\F07E4"}.mdi-monitor::before{content:"\\F0379"}.mdi-monitor-cellphone::before{content:"\\F0989"}.mdi-monitor-cellphone-star::before{content:"\\F098A"}.mdi-monitor-clean::before{content:"\\F1104"}.mdi-monitor-dashboard::before{content:"\\F0A07"}.mdi-monitor-edit::before{content:"\\F12C6"}.mdi-monitor-eye::before{content:"\\F13B4"}.mdi-monitor-lock::before{content:"\\F0DDB"}.mdi-monitor-multiple::before{content:"\\F037A"}.mdi-monitor-off::before{content:"\\F0D90"}.mdi-monitor-screenshot::before{content:"\\F0E51"}.mdi-monitor-share::before{content:"\\F1483"}.mdi-monitor-speaker::before{content:"\\F0F5F"}.mdi-monitor-speaker-off::before{content:"\\F0F60"}.mdi-monitor-star::before{content:"\\F0DDC"}.mdi-moon-first-quarter::before{content:"\\F0F61"}.mdi-moon-full::before{content:"\\F0F62"}.mdi-moon-last-quarter::before{content:"\\F0F63"}.mdi-moon-new::before{content:"\\F0F64"}.mdi-moon-waning-crescent::before{content:"\\F0F65"}.mdi-moon-waning-gibbous::before{content:"\\F0F66"}.mdi-moon-waxing-crescent::before{content:"\\F0F67"}.mdi-moon-waxing-gibbous::before{content:"\\F0F68"}.mdi-moped::before{content:"\\F1086"}.mdi-more::before{content:"\\F037B"}.mdi-mother-heart::before{content:"\\F1314"}.mdi-mother-nurse::before{content:"\\F0D21"}.mdi-motion-sensor::before{content:"\\F0D91"}.mdi-motion-sensor-off::before{content:"\\F1435"}.mdi-motorbike::before{content:"\\F037C"}.mdi-mouse::before{content:"\\F037D"}.mdi-mouse-bluetooth::before{content:"\\F098B"}.mdi-mouse-off::before{content:"\\F037E"}.mdi-mouse-variant::before{content:"\\F037F"}.mdi-mouse-variant-off::before{content:"\\F0380"}.mdi-move-resize::before{content:"\\F0655"}.mdi-move-resize-variant::before{content:"\\F0656"}.mdi-movie::before{content:"\\F0381"}.mdi-movie-edit::before{content:"\\F1122"}.mdi-movie-edit-outline::before{content:"\\F1123"}.mdi-movie-filter::before{content:"\\F1124"}.mdi-movie-filter-outline::before{content:"\\F1125"}.mdi-movie-open::before{content:"\\F0FCE"}.mdi-movie-open-outline::before{content:"\\F0FCF"}.mdi-movie-outline::before{content:"\\F0DDD"}.mdi-movie-roll::before{content:"\\F07DE"}.mdi-movie-search::before{content:"\\F11D2"}.mdi-movie-search-outline::before{content:"\\F11D3"}.mdi-muffin::before{content:"\\F098C"}.mdi-multiplication::before{content:"\\F0382"}.mdi-multiplication-box::before{content:"\\F0383"}.mdi-mushroom::before{content:"\\F07DF"}.mdi-mushroom-off::before{content:"\\F13FA"}.mdi-mushroom-off-outline::before{content:"\\F13FB"}.mdi-mushroom-outline::before{content:"\\F07E0"}.mdi-music::before{content:"\\F075A"}.mdi-music-accidental-double-flat::before{content:"\\F0F69"}.mdi-music-accidental-double-sharp::before{content:"\\F0F6A"}.mdi-music-accidental-flat::before{content:"\\F0F6B"}.mdi-music-accidental-natural::before{content:"\\F0F6C"}.mdi-music-accidental-sharp::before{content:"\\F0F6D"}.mdi-music-box::before{content:"\\F0384"}.mdi-music-box-multiple::before{content:"\\F0333"}.mdi-music-box-multiple-outline::before{content:"\\F0F04"}.mdi-music-box-outline::before{content:"\\F0385"}.mdi-music-circle::before{content:"\\F0386"}.mdi-music-circle-outline::before{content:"\\F0AD4"}.mdi-music-clef-alto::before{content:"\\F0F6E"}.mdi-music-clef-bass::before{content:"\\F0F6F"}.mdi-music-clef-treble::before{content:"\\F0F70"}.mdi-music-note::before{content:"\\F0387"}.mdi-music-note-bluetooth::before{content:"\\F05FE"}.mdi-music-note-bluetooth-off::before{content:"\\F05FF"}.mdi-music-note-eighth::before{content:"\\F0388"}.mdi-music-note-eighth-dotted::before{content:"\\F0F71"}.mdi-music-note-half::before{content:"\\F0389"}.mdi-music-note-half-dotted::before{content:"\\F0F72"}.mdi-music-note-off::before{content:"\\F038A"}.mdi-music-note-off-outline::before{content:"\\F0F73"}.mdi-music-note-outline::before{content:"\\F0F74"}.mdi-music-note-plus::before{content:"\\F0DDE"}.mdi-music-note-quarter::before{content:"\\F038B"}.mdi-music-note-quarter-dotted::before{content:"\\F0F75"}.mdi-music-note-sixteenth::before{content:"\\F038C"}.mdi-music-note-sixteenth-dotted::before{content:"\\F0F76"}.mdi-music-note-whole::before{content:"\\F038D"}.mdi-music-note-whole-dotted::before{content:"\\F0F77"}.mdi-music-off::before{content:"\\F075B"}.mdi-music-rest-eighth::before{content:"\\F0F78"}.mdi-music-rest-half::before{content:"\\F0F79"}.mdi-music-rest-quarter::before{content:"\\F0F7A"}.mdi-music-rest-sixteenth::before{content:"\\F0F7B"}.mdi-music-rest-whole::before{content:"\\F0F7C"}.mdi-nail::before{content:"\\F0DDF"}.mdi-nas::before{content:"\\F08F3"}.mdi-nativescript::before{content:"\\F0880"}.mdi-nature::before{content:"\\F038E"}.mdi-nature-people::before{content:"\\F038F"}.mdi-navigation::before{content:"\\F0390"}.mdi-near-me::before{content:"\\F05CD"}.mdi-necklace::before{content:"\\F0F0B"}.mdi-needle::before{content:"\\F0391"}.mdi-netflix::before{content:"\\F0746"}.mdi-network::before{content:"\\F06F3"}.mdi-network-off::before{content:"\\F0C9B"}.mdi-network-off-outline::before{content:"\\F0C9C"}.mdi-network-outline::before{content:"\\F0C9D"}.mdi-network-strength-1::before{content:"\\F08F4"}.mdi-network-strength-1-alert::before{content:"\\F08F5"}.mdi-network-strength-2::before{content:"\\F08F6"}.mdi-network-strength-2-alert::before{content:"\\F08F7"}.mdi-network-strength-3::before{content:"\\F08F8"}.mdi-network-strength-3-alert::before{content:"\\F08F9"}.mdi-network-strength-4::before{content:"\\F08FA"}.mdi-network-strength-4-alert::before{content:"\\F08FB"}.mdi-network-strength-off::before{content:"\\F08FC"}.mdi-network-strength-off-outline::before{content:"\\F08FD"}.mdi-network-strength-outline::before{content:"\\F08FE"}.mdi-new-box::before{content:"\\F0394"}.mdi-newspaper::before{content:"\\F0395"}.mdi-newspaper-minus::before{content:"\\F0F0C"}.mdi-newspaper-plus::before{content:"\\F0F0D"}.mdi-newspaper-variant::before{content:"\\F1001"}.mdi-newspaper-variant-multiple::before{content:"\\F1002"}.mdi-newspaper-variant-multiple-outline::before{content:"\\F1003"}.mdi-newspaper-variant-outline::before{content:"\\F1004"}.mdi-nfc::before{content:"\\F0396"}.mdi-nfc-search-variant::before{content:"\\F0E53"}.mdi-nfc-tap::before{content:"\\F0397"}.mdi-nfc-variant::before{content:"\\F0398"}.mdi-nfc-variant-off::before{content:"\\F0E54"}.mdi-ninja::before{content:"\\F0774"}.mdi-nintendo-game-boy::before{content:"\\F1393"}.mdi-nintendo-switch::before{content:"\\F07E1"}.mdi-nintendo-wii::before{content:"\\F05AB"}.mdi-nintendo-wiiu::before{content:"\\F072D"}.mdi-nix::before{content:"\\F1105"}.mdi-nodejs::before{content:"\\F0399"}.mdi-noodles::before{content:"\\F117E"}.mdi-not-equal::before{content:"\\F098D"}.mdi-not-equal-variant::before{content:"\\F098E"}.mdi-note::before{content:"\\F039A"}.mdi-note-multiple::before{content:"\\F06B8"}.mdi-note-multiple-outline::before{content:"\\F06B9"}.mdi-note-outline::before{content:"\\F039B"}.mdi-note-plus::before{content:"\\F039C"}.mdi-note-plus-outline::before{content:"\\F039D"}.mdi-note-text::before{content:"\\F039E"}.mdi-note-text-outline::before{content:"\\F11D7"}.mdi-notebook::before{content:"\\F082E"}.mdi-notebook-multiple::before{content:"\\F0E55"}.mdi-notebook-outline::before{content:"\\F0EBF"}.mdi-notification-clear-all::before{content:"\\F039F"}.mdi-npm::before{content:"\\F06F7"}.mdi-nuke::before{content:"\\F06A4"}.mdi-null::before{content:"\\F07E2"}.mdi-numeric::before{content:"\\F03A0"}.mdi-numeric-0::before{content:"\\F0B39"}.mdi-numeric-0-box::before{content:"\\F03A1"}.mdi-numeric-0-box-multiple::before{content:"\\F0F0E"}.mdi-numeric-0-box-multiple-outline::before{content:"\\F03A2"}.mdi-numeric-0-box-outline::before{content:"\\F03A3"}.mdi-numeric-0-circle::before{content:"\\F0C9E"}.mdi-numeric-0-circle-outline::before{content:"\\F0C9F"}.mdi-numeric-1::before{content:"\\F0B3A"}.mdi-numeric-1-box::before{content:"\\F03A4"}.mdi-numeric-1-box-multiple::before{content:"\\F0F0F"}.mdi-numeric-1-box-multiple-outline::before{content:"\\F03A5"}.mdi-numeric-1-box-outline::before{content:"\\F03A6"}.mdi-numeric-1-circle::before{content:"\\F0CA0"}.mdi-numeric-1-circle-outline::before{content:"\\F0CA1"}.mdi-numeric-10::before{content:"\\F0FE9"}.mdi-numeric-10-box::before{content:"\\F0F7D"}.mdi-numeric-10-box-multiple::before{content:"\\F0FEA"}.mdi-numeric-10-box-multiple-outline::before{content:"\\F0FEB"}.mdi-numeric-10-box-outline::before{content:"\\F0F7E"}.mdi-numeric-10-circle::before{content:"\\F0FEC"}.mdi-numeric-10-circle-outline::before{content:"\\F0FED"}.mdi-numeric-2::before{content:"\\F0B3B"}.mdi-numeric-2-box::before{content:"\\F03A7"}.mdi-numeric-2-box-multiple::before{content:"\\F0F10"}.mdi-numeric-2-box-multiple-outline::before{content:"\\F03A8"}.mdi-numeric-2-box-outline::before{content:"\\F03A9"}.mdi-numeric-2-circle::before{content:"\\F0CA2"}.mdi-numeric-2-circle-outline::before{content:"\\F0CA3"}.mdi-numeric-3::before{content:"\\F0B3C"}.mdi-numeric-3-box::before{content:"\\F03AA"}.mdi-numeric-3-box-multiple::before{content:"\\F0F11"}.mdi-numeric-3-box-multiple-outline::before{content:"\\F03AB"}.mdi-numeric-3-box-outline::before{content:"\\F03AC"}.mdi-numeric-3-circle::before{content:"\\F0CA4"}.mdi-numeric-3-circle-outline::before{content:"\\F0CA5"}.mdi-numeric-4::before{content:"\\F0B3D"}.mdi-numeric-4-box::before{content:"\\F03AD"}.mdi-numeric-4-box-multiple::before{content:"\\F0F12"}.mdi-numeric-4-box-multiple-outline::before{content:"\\F03B2"}.mdi-numeric-4-box-outline::before{content:"\\F03AE"}.mdi-numeric-4-circle::before{content:"\\F0CA6"}.mdi-numeric-4-circle-outline::before{content:"\\F0CA7"}.mdi-numeric-5::before{content:"\\F0B3E"}.mdi-numeric-5-box::before{content:"\\F03B1"}.mdi-numeric-5-box-multiple::before{content:"\\F0F13"}.mdi-numeric-5-box-multiple-outline::before{content:"\\F03AF"}.mdi-numeric-5-box-outline::before{content:"\\F03B0"}.mdi-numeric-5-circle::before{content:"\\F0CA8"}.mdi-numeric-5-circle-outline::before{content:"\\F0CA9"}.mdi-numeric-6::before{content:"\\F0B3F"}.mdi-numeric-6-box::before{content:"\\F03B3"}.mdi-numeric-6-box-multiple::before{content:"\\F0F14"}.mdi-numeric-6-box-multiple-outline::before{content:"\\F03B4"}.mdi-numeric-6-box-outline::before{content:"\\F03B5"}.mdi-numeric-6-circle::before{content:"\\F0CAA"}.mdi-numeric-6-circle-outline::before{content:"\\F0CAB"}.mdi-numeric-7::before{content:"\\F0B40"}.mdi-numeric-7-box::before{content:"\\F03B6"}.mdi-numeric-7-box-multiple::before{content:"\\F0F15"}.mdi-numeric-7-box-multiple-outline::before{content:"\\F03B7"}.mdi-numeric-7-box-outline::before{content:"\\F03B8"}.mdi-numeric-7-circle::before{content:"\\F0CAC"}.mdi-numeric-7-circle-outline::before{content:"\\F0CAD"}.mdi-numeric-8::before{content:"\\F0B41"}.mdi-numeric-8-box::before{content:"\\F03B9"}.mdi-numeric-8-box-multiple::before{content:"\\F0F16"}.mdi-numeric-8-box-multiple-outline::before{content:"\\F03BA"}.mdi-numeric-8-box-outline::before{content:"\\F03BB"}.mdi-numeric-8-circle::before{content:"\\F0CAE"}.mdi-numeric-8-circle-outline::before{content:"\\F0CAF"}.mdi-numeric-9::before{content:"\\F0B42"}.mdi-numeric-9-box::before{content:"\\F03BC"}.mdi-numeric-9-box-multiple::before{content:"\\F0F17"}.mdi-numeric-9-box-multiple-outline::before{content:"\\F03BD"}.mdi-numeric-9-box-outline::before{content:"\\F03BE"}.mdi-numeric-9-circle::before{content:"\\F0CB0"}.mdi-numeric-9-circle-outline::before{content:"\\F0CB1"}.mdi-numeric-9-plus::before{content:"\\F0FEE"}.mdi-numeric-9-plus-box::before{content:"\\F03BF"}.mdi-numeric-9-plus-box-multiple::before{content:"\\F0F18"}.mdi-numeric-9-plus-box-multiple-outline::before{content:"\\F03C0"}.mdi-numeric-9-plus-box-outline::before{content:"\\F03C1"}.mdi-numeric-9-plus-circle::before{content:"\\F0CB2"}.mdi-numeric-9-plus-circle-outline::before{content:"\\F0CB3"}.mdi-numeric-negative-1::before{content:"\\F1052"}.mdi-nut::before{content:"\\F06F8"}.mdi-nutrition::before{content:"\\F03C2"}.mdi-nuxt::before{content:"\\F1106"}.mdi-oar::before{content:"\\F067C"}.mdi-ocarina::before{content:"\\F0DE0"}.mdi-oci::before{content:"\\F12E9"}.mdi-ocr::before{content:"\\F113A"}.mdi-octagon::before{content:"\\F03C3"}.mdi-octagon-outline::before{content:"\\F03C4"}.mdi-octagram::before{content:"\\F06F9"}.mdi-octagram-outline::before{content:"\\F0775"}.mdi-odnoklassniki::before{content:"\\F03C5"}.mdi-offer::before{content:"\\F121B"}.mdi-office-building::before{content:"\\F0991"}.mdi-oil::before{content:"\\F03C7"}.mdi-oil-lamp::before{content:"\\F0F19"}.mdi-oil-level::before{content:"\\F1053"}.mdi-oil-temperature::before{content:"\\F0FF8"}.mdi-omega::before{content:"\\F03C9"}.mdi-one-up::before{content:"\\F0BAD"}.mdi-onepassword::before{content:"\\F0881"}.mdi-opacity::before{content:"\\F05CC"}.mdi-open-in-app::before{content:"\\F03CB"}.mdi-open-in-new::before{content:"\\F03CC"}.mdi-open-source-initiative::before{content:"\\F0BAE"}.mdi-openid::before{content:"\\F03CD"}.mdi-opera::before{content:"\\F03CE"}.mdi-orbit::before{content:"\\F0018"}.mdi-order-alphabetical-ascending::before{content:"\\F020D"}.mdi-order-alphabetical-descending::before{content:"\\F0D07"}.mdi-order-bool-ascending::before{content:"\\F02BE"}.mdi-order-bool-ascending-variant::before{content:"\\F098F"}.mdi-order-bool-descending::before{content:"\\F1384"}.mdi-order-bool-descending-variant::before{content:"\\F0990"}.mdi-order-numeric-ascending::before{content:"\\F0545"}.mdi-order-numeric-descending::before{content:"\\F0546"}.mdi-origin::before{content:"\\F0B43"}.mdi-ornament::before{content:"\\F03CF"}.mdi-ornament-variant::before{content:"\\F03D0"}.mdi-outdoor-lamp::before{content:"\\F1054"}.mdi-overscan::before{content:"\\F1005"}.mdi-owl::before{content:"\\F03D2"}.mdi-pac-man::before{content:"\\F0BAF"}.mdi-package::before{content:"\\F03D3"}.mdi-package-down::before{content:"\\F03D4"}.mdi-package-up::before{content:"\\F03D5"}.mdi-package-variant::before{content:"\\F03D6"}.mdi-package-variant-closed::before{content:"\\F03D7"}.mdi-page-first::before{content:"\\F0600"}.mdi-page-last::before{content:"\\F0601"}.mdi-page-layout-body::before{content:"\\F06FA"}.mdi-page-layout-footer::before{content:"\\F06FB"}.mdi-page-layout-header::before{content:"\\F06FC"}.mdi-page-layout-header-footer::before{content:"\\F0F7F"}.mdi-page-layout-sidebar-left::before{content:"\\F06FD"}.mdi-page-layout-sidebar-right::before{content:"\\F06FE"}.mdi-page-next::before{content:"\\F0BB0"}.mdi-page-next-outline::before{content:"\\F0BB1"}.mdi-page-previous::before{content:"\\F0BB2"}.mdi-page-previous-outline::before{content:"\\F0BB3"}.mdi-pail::before{content:"\\F1417"}.mdi-pail-minus::before{content:"\\F1437"}.mdi-pail-minus-outline::before{content:"\\F143C"}.mdi-pail-off::before{content:"\\F1439"}.mdi-pail-off-outline::before{content:"\\F143E"}.mdi-pail-outline::before{content:"\\F143A"}.mdi-pail-plus::before{content:"\\F1436"}.mdi-pail-plus-outline::before{content:"\\F143B"}.mdi-pail-remove::before{content:"\\F1438"}.mdi-pail-remove-outline::before{content:"\\F143D"}.mdi-palette::before{content:"\\F03D8"}.mdi-palette-advanced::before{content:"\\F03D9"}.mdi-palette-outline::before{content:"\\F0E0C"}.mdi-palette-swatch::before{content:"\\F08B5"}.mdi-palette-swatch-outline::before{content:"\\F135C"}.mdi-palm-tree::before{content:"\\F1055"}.mdi-pan::before{content:"\\F0BB4"}.mdi-pan-bottom-left::before{content:"\\F0BB5"}.mdi-pan-bottom-right::before{content:"\\F0BB6"}.mdi-pan-down::before{content:"\\F0BB7"}.mdi-pan-horizontal::before{content:"\\F0BB8"}.mdi-pan-left::before{content:"\\F0BB9"}.mdi-pan-right::before{content:"\\F0BBA"}.mdi-pan-top-left::before{content:"\\F0BBB"}.mdi-pan-top-right::before{content:"\\F0BBC"}.mdi-pan-up::before{content:"\\F0BBD"}.mdi-pan-vertical::before{content:"\\F0BBE"}.mdi-panda::before{content:"\\F03DA"}.mdi-pandora::before{content:"\\F03DB"}.mdi-panorama::before{content:"\\F03DC"}.mdi-panorama-fisheye::before{content:"\\F03DD"}.mdi-panorama-horizontal::before{content:"\\F03DE"}.mdi-panorama-vertical::before{content:"\\F03DF"}.mdi-panorama-wide-angle::before{content:"\\F03E0"}.mdi-paper-cut-vertical::before{content:"\\F03E1"}.mdi-paper-roll::before{content:"\\F1157"}.mdi-paper-roll-outline::before{content:"\\F1158"}.mdi-paperclip::before{content:"\\F03E2"}.mdi-parachute::before{content:"\\F0CB4"}.mdi-parachute-outline::before{content:"\\F0CB5"}.mdi-parking::before{content:"\\F03E3"}.mdi-party-popper::before{content:"\\F1056"}.mdi-passport::before{content:"\\F07E3"}.mdi-passport-biometric::before{content:"\\F0DE1"}.mdi-pasta::before{content:"\\F1160"}.mdi-patio-heater::before{content:"\\F0F80"}.mdi-patreon::before{content:"\\F0882"}.mdi-pause::before{content:"\\F03E4"}.mdi-pause-circle::before{content:"\\F03E5"}.mdi-pause-circle-outline::before{content:"\\F03E6"}.mdi-pause-octagon::before{content:"\\F03E7"}.mdi-pause-octagon-outline::before{content:"\\F03E8"}.mdi-paw::before{content:"\\F03E9"}.mdi-paw-off::before{content:"\\F0657"}.mdi-pdf-box::before{content:"\\F0E56"}.mdi-peace::before{content:"\\F0884"}.mdi-peanut::before{content:"\\F0FFC"}.mdi-peanut-off::before{content:"\\F0FFD"}.mdi-peanut-off-outline::before{content:"\\F0FFF"}.mdi-peanut-outline::before{content:"\\F0FFE"}.mdi-pen::before{content:"\\F03EA"}.mdi-pen-lock::before{content:"\\F0DE2"}.mdi-pen-minus::before{content:"\\F0DE3"}.mdi-pen-off::before{content:"\\F0DE4"}.mdi-pen-plus::before{content:"\\F0DE5"}.mdi-pen-remove::before{content:"\\F0DE6"}.mdi-pencil::before{content:"\\F03EB"}.mdi-pencil-box::before{content:"\\F03EC"}.mdi-pencil-box-multiple::before{content:"\\F1144"}.mdi-pencil-box-multiple-outline::before{content:"\\F1145"}.mdi-pencil-box-outline::before{content:"\\F03ED"}.mdi-pencil-circle::before{content:"\\F06FF"}.mdi-pencil-circle-outline::before{content:"\\F0776"}.mdi-pencil-lock::before{content:"\\F03EE"}.mdi-pencil-lock-outline::before{content:"\\F0DE7"}.mdi-pencil-minus::before{content:"\\F0DE8"}.mdi-pencil-minus-outline::before{content:"\\F0DE9"}.mdi-pencil-off::before{content:"\\F03EF"}.mdi-pencil-off-outline::before{content:"\\F0DEA"}.mdi-pencil-outline::before{content:"\\F0CB6"}.mdi-pencil-plus::before{content:"\\F0DEB"}.mdi-pencil-plus-outline::before{content:"\\F0DEC"}.mdi-pencil-remove::before{content:"\\F0DED"}.mdi-pencil-remove-outline::before{content:"\\F0DEE"}.mdi-pencil-ruler::before{content:"\\F1353"}.mdi-penguin::before{content:"\\F0EC0"}.mdi-pentagon::before{content:"\\F0701"}.mdi-pentagon-outline::before{content:"\\F0700"}.mdi-percent::before{content:"\\F03F0"}.mdi-percent-outline::before{content:"\\F1278"}.mdi-periodic-table::before{content:"\\F08B6"}.mdi-perspective-less::before{content:"\\F0D23"}.mdi-perspective-more::before{content:"\\F0D24"}.mdi-pharmacy::before{content:"\\F03F1"}.mdi-phone::before{content:"\\F03F2"}.mdi-phone-alert::before{content:"\\F0F1A"}.mdi-phone-alert-outline::before{content:"\\F118E"}.mdi-phone-bluetooth::before{content:"\\F03F3"}.mdi-phone-bluetooth-outline::before{content:"\\F118F"}.mdi-phone-cancel::before{content:"\\F10BC"}.mdi-phone-cancel-outline::before{content:"\\F1190"}.mdi-phone-check::before{content:"\\F11A9"}.mdi-phone-check-outline::before{content:"\\F11AA"}.mdi-phone-classic::before{content:"\\F0602"}.mdi-phone-classic-off::before{content:"\\F1279"}.mdi-phone-forward::before{content:"\\F03F4"}.mdi-phone-forward-outline::before{content:"\\F1191"}.mdi-phone-hangup::before{content:"\\F03F5"}.mdi-phone-hangup-outline::before{content:"\\F1192"}.mdi-phone-in-talk::before{content:"\\F03F6"}.mdi-phone-in-talk-outline::before{content:"\\F1182"}.mdi-phone-incoming::before{content:"\\F03F7"}.mdi-phone-incoming-outline::before{content:"\\F1193"}.mdi-phone-lock::before{content:"\\F03F8"}.mdi-phone-lock-outline::before{content:"\\F1194"}.mdi-phone-log::before{content:"\\F03F9"}.mdi-phone-log-outline::before{content:"\\F1195"}.mdi-phone-message::before{content:"\\F1196"}.mdi-phone-message-outline::before{content:"\\F1197"}.mdi-phone-minus::before{content:"\\F0658"}.mdi-phone-minus-outline::before{content:"\\F1198"}.mdi-phone-missed::before{content:"\\F03FA"}.mdi-phone-missed-outline::before{content:"\\F11A5"}.mdi-phone-off::before{content:"\\F0DEF"}.mdi-phone-off-outline::before{content:"\\F11A6"}.mdi-phone-outgoing::before{content:"\\F03FB"}.mdi-phone-outgoing-outline::before{content:"\\F1199"}.mdi-phone-outline::before{content:"\\F0DF0"}.mdi-phone-paused::before{content:"\\F03FC"}.mdi-phone-paused-outline::before{content:"\\F119A"}.mdi-phone-plus::before{content:"\\F0659"}.mdi-phone-plus-outline::before{content:"\\F119B"}.mdi-phone-return::before{content:"\\F082F"}.mdi-phone-return-outline::before{content:"\\F119C"}.mdi-phone-ring::before{content:"\\F11AB"}.mdi-phone-ring-outline::before{content:"\\F11AC"}.mdi-phone-rotate-landscape::before{content:"\\F0885"}.mdi-phone-rotate-portrait::before{content:"\\F0886"}.mdi-phone-settings::before{content:"\\F03FD"}.mdi-phone-settings-outline::before{content:"\\F119D"}.mdi-phone-voip::before{content:"\\F03FE"}.mdi-pi::before{content:"\\F03FF"}.mdi-pi-box::before{content:"\\F0400"}.mdi-pi-hole::before{content:"\\F0DF1"}.mdi-piano::before{content:"\\F067D"}.mdi-pickaxe::before{content:"\\F08B7"}.mdi-picture-in-picture-bottom-right::before{content:"\\F0E57"}.mdi-picture-in-picture-bottom-right-outline::before{content:"\\F0E58"}.mdi-picture-in-picture-top-right::before{content:"\\F0E59"}.mdi-picture-in-picture-top-right-outline::before{content:"\\F0E5A"}.mdi-pier::before{content:"\\F0887"}.mdi-pier-crane::before{content:"\\F0888"}.mdi-pig::before{content:"\\F0401"}.mdi-pig-variant::before{content:"\\F1006"}.mdi-piggy-bank::before{content:"\\F1007"}.mdi-pill::before{content:"\\F0402"}.mdi-pillar::before{content:"\\F0702"}.mdi-pin::before{content:"\\F0403"}.mdi-pin-off::before{content:"\\F0404"}.mdi-pin-off-outline::before{content:"\\F0930"}.mdi-pin-outline::before{content:"\\F0931"}.mdi-pine-tree::before{content:"\\F0405"}.mdi-pine-tree-box::before{content:"\\F0406"}.mdi-pine-tree-fire::before{content:"\\F141A"}.mdi-pinterest::before{content:"\\F0407"}.mdi-pinwheel::before{content:"\\F0AD5"}.mdi-pinwheel-outline::before{content:"\\F0AD6"}.mdi-pipe::before{content:"\\F07E5"}.mdi-pipe-disconnected::before{content:"\\F07E6"}.mdi-pipe-leak::before{content:"\\F0889"}.mdi-pipe-wrench::before{content:"\\F1354"}.mdi-pirate::before{content:"\\F0A08"}.mdi-pistol::before{content:"\\F0703"}.mdi-piston::before{content:"\\F088A"}.mdi-pizza::before{content:"\\F0409"}.mdi-play::before{content:"\\F040A"}.mdi-play-box::before{content:"\\F127A"}.mdi-play-box-multiple::before{content:"\\F0D19"}.mdi-play-box-multiple-outline::before{content:"\\F13E6"}.mdi-play-box-outline::before{content:"\\F040B"}.mdi-play-circle::before{content:"\\F040C"}.mdi-play-circle-outline::before{content:"\\F040D"}.mdi-play-network::before{content:"\\F088B"}.mdi-play-network-outline::before{content:"\\F0CB7"}.mdi-play-outline::before{content:"\\F0F1B"}.mdi-play-pause::before{content:"\\F040E"}.mdi-play-protected-content::before{content:"\\F040F"}.mdi-play-speed::before{content:"\\F08FF"}.mdi-playlist-check::before{content:"\\F05C7"}.mdi-playlist-edit::before{content:"\\F0900"}.mdi-playlist-minus::before{content:"\\F0410"}.mdi-playlist-music::before{content:"\\F0CB8"}.mdi-playlist-music-outline::before{content:"\\F0CB9"}.mdi-playlist-play::before{content:"\\F0411"}.mdi-playlist-plus::before{content:"\\F0412"}.mdi-playlist-remove::before{content:"\\F0413"}.mdi-playlist-star::before{content:"\\F0DF2"}.mdi-plex::before{content:"\\F06BA"}.mdi-plus::before{content:"\\F0415"}.mdi-plus-box::before{content:"\\F0416"}.mdi-plus-box-multiple::before{content:"\\F0334"}.mdi-plus-box-multiple-outline::before{content:"\\F1143"}.mdi-plus-box-outline::before{content:"\\F0704"}.mdi-plus-circle::before{content:"\\F0417"}.mdi-plus-circle-multiple::before{content:"\\F034C"}.mdi-plus-circle-multiple-outline::before{content:"\\F0418"}.mdi-plus-circle-outline::before{content:"\\F0419"}.mdi-plus-minus::before{content:"\\F0992"}.mdi-plus-minus-box::before{content:"\\F0993"}.mdi-plus-minus-variant::before{content:"\\F14C9"}.mdi-plus-network::before{content:"\\F041A"}.mdi-plus-network-outline::before{content:"\\F0CBA"}.mdi-plus-one::before{content:"\\F041B"}.mdi-plus-outline::before{content:"\\F0705"}.mdi-plus-thick::before{content:"\\F11EC"}.mdi-podcast::before{content:"\\F0994"}.mdi-podium::before{content:"\\F0D25"}.mdi-podium-bronze::before{content:"\\F0D26"}.mdi-podium-gold::before{content:"\\F0D27"}.mdi-podium-silver::before{content:"\\F0D28"}.mdi-point-of-sale::before{content:"\\F0D92"}.mdi-pokeball::before{content:"\\F041D"}.mdi-pokemon-go::before{content:"\\F0A09"}.mdi-poker-chip::before{content:"\\F0830"}.mdi-polaroid::before{content:"\\F041E"}.mdi-police-badge::before{content:"\\F1167"}.mdi-police-badge-outline::before{content:"\\F1168"}.mdi-poll::before{content:"\\F041F"}.mdi-poll-box::before{content:"\\F0420"}.mdi-poll-box-outline::before{content:"\\F127B"}.mdi-polo::before{content:"\\F14C3"}.mdi-polymer::before{content:"\\F0421"}.mdi-pool::before{content:"\\F0606"}.mdi-popcorn::before{content:"\\F0422"}.mdi-post::before{content:"\\F1008"}.mdi-post-outline::before{content:"\\F1009"}.mdi-postage-stamp::before{content:"\\F0CBB"}.mdi-pot::before{content:"\\F02E5"}.mdi-pot-mix::before{content:"\\F065B"}.mdi-pot-mix-outline::before{content:"\\F0677"}.mdi-pot-outline::before{content:"\\F02FF"}.mdi-pot-steam::before{content:"\\F065A"}.mdi-pot-steam-outline::before{content:"\\F0326"}.mdi-pound::before{content:"\\F0423"}.mdi-pound-box::before{content:"\\F0424"}.mdi-pound-box-outline::before{content:"\\F117F"}.mdi-power::before{content:"\\F0425"}.mdi-power-cycle::before{content:"\\F0901"}.mdi-power-off::before{content:"\\F0902"}.mdi-power-on::before{content:"\\F0903"}.mdi-power-plug::before{content:"\\F06A5"}.mdi-power-plug-off::before{content:"\\F06A6"}.mdi-power-plug-off-outline::before{content:"\\F1424"}.mdi-power-plug-outline::before{content:"\\F1425"}.mdi-power-settings::before{content:"\\F0426"}.mdi-power-sleep::before{content:"\\F0904"}.mdi-power-socket::before{content:"\\F0427"}.mdi-power-socket-au::before{content:"\\F0905"}.mdi-power-socket-de::before{content:"\\F1107"}.mdi-power-socket-eu::before{content:"\\F07E7"}.mdi-power-socket-fr::before{content:"\\F1108"}.mdi-power-socket-jp::before{content:"\\F1109"}.mdi-power-socket-uk::before{content:"\\F07E8"}.mdi-power-socket-us::before{content:"\\F07E9"}.mdi-power-standby::before{content:"\\F0906"}.mdi-powershell::before{content:"\\F0A0A"}.mdi-prescription::before{content:"\\F0706"}.mdi-presentation::before{content:"\\F0428"}.mdi-presentation-play::before{content:"\\F0429"}.mdi-printer::before{content:"\\F042A"}.mdi-printer-3d::before{content:"\\F042B"}.mdi-printer-3d-nozzle::before{content:"\\F0E5B"}.mdi-printer-3d-nozzle-alert::before{content:"\\F11C0"}.mdi-printer-3d-nozzle-alert-outline::before{content:"\\F11C1"}.mdi-printer-3d-nozzle-outline::before{content:"\\F0E5C"}.mdi-printer-alert::before{content:"\\F042C"}.mdi-printer-check::before{content:"\\F1146"}.mdi-printer-eye::before{content:"\\F1458"}.mdi-printer-off::before{content:"\\F0E5D"}.mdi-printer-pos::before{content:"\\F1057"}.mdi-printer-search::before{content:"\\F1457"}.mdi-printer-settings::before{content:"\\F0707"}.mdi-printer-wireless::before{content:"\\F0A0B"}.mdi-priority-high::before{content:"\\F0603"}.mdi-priority-low::before{content:"\\F0604"}.mdi-professional-hexagon::before{content:"\\F042D"}.mdi-progress-alert::before{content:"\\F0CBC"}.mdi-progress-check::before{content:"\\F0995"}.mdi-progress-clock::before{content:"\\F0996"}.mdi-progress-close::before{content:"\\F110A"}.mdi-progress-download::before{content:"\\F0997"}.mdi-progress-upload::before{content:"\\F0998"}.mdi-progress-wrench::before{content:"\\F0CBD"}.mdi-projector::before{content:"\\F042E"}.mdi-projector-screen::before{content:"\\F042F"}.mdi-propane-tank::before{content:"\\F1357"}.mdi-propane-tank-outline::before{content:"\\F1358"}.mdi-protocol::before{content:"\\F0FD8"}.mdi-publish::before{content:"\\F06A7"}.mdi-pulse::before{content:"\\F0430"}.mdi-pump::before{content:"\\F1402"}.mdi-pumpkin::before{content:"\\F0BBF"}.mdi-purse::before{content:"\\F0F1C"}.mdi-purse-outline::before{content:"\\F0F1D"}.mdi-puzzle::before{content:"\\F0431"}.mdi-puzzle-check::before{content:"\\F1426"}.mdi-puzzle-check-outline::before{content:"\\F1427"}.mdi-puzzle-edit::before{content:"\\F14D3"}.mdi-puzzle-edit-outline::before{content:"\\F14D9"}.mdi-puzzle-heart::before{content:"\\F14D4"}.mdi-puzzle-heart-outline::before{content:"\\F14DA"}.mdi-puzzle-minus::before{content:"\\F14D1"}.mdi-puzzle-minus-outline::before{content:"\\F14D7"}.mdi-puzzle-outline::before{content:"\\F0A66"}.mdi-puzzle-plus::before{content:"\\F14D0"}.mdi-puzzle-plus-outline::before{content:"\\F14D6"}.mdi-puzzle-remove::before{content:"\\F14D2"}.mdi-puzzle-remove-outline::before{content:"\\F14D8"}.mdi-puzzle-star::before{content:"\\F14D5"}.mdi-puzzle-star-outline::before{content:"\\F14DB"}.mdi-qi::before{content:"\\F0999"}.mdi-qqchat::before{content:"\\F0605"}.mdi-qrcode::before{content:"\\F0432"}.mdi-qrcode-edit::before{content:"\\F08B8"}.mdi-qrcode-minus::before{content:"\\F118C"}.mdi-qrcode-plus::before{content:"\\F118B"}.mdi-qrcode-remove::before{content:"\\F118D"}.mdi-qrcode-scan::before{content:"\\F0433"}.mdi-quadcopter::before{content:"\\F0434"}.mdi-quality-high::before{content:"\\F0435"}.mdi-quality-low::before{content:"\\F0A0C"}.mdi-quality-medium::before{content:"\\F0A0D"}.mdi-quora::before{content:"\\F0D29"}.mdi-rabbit::before{content:"\\F0907"}.mdi-racing-helmet::before{content:"\\F0D93"}.mdi-racquetball::before{content:"\\F0D94"}.mdi-radar::before{content:"\\F0437"}.mdi-radiator::before{content:"\\F0438"}.mdi-radiator-disabled::before{content:"\\F0AD7"}.mdi-radiator-off::before{content:"\\F0AD8"}.mdi-radio::before{content:"\\F0439"}.mdi-radio-am::before{content:"\\F0CBE"}.mdi-radio-fm::before{content:"\\F0CBF"}.mdi-radio-handheld::before{content:"\\F043A"}.mdi-radio-off::before{content:"\\F121C"}.mdi-radio-tower::before{content:"\\F043B"}.mdi-radioactive::before{content:"\\F043C"}.mdi-radioactive-off::before{content:"\\F0EC1"}.mdi-radiobox-blank::before{content:"\\F043D"}.mdi-radiobox-marked::before{content:"\\F043E"}.mdi-radiology-box::before{content:"\\F14C5"}.mdi-radiology-box-outline::before{content:"\\F14C6"}.mdi-radius::before{content:"\\F0CC0"}.mdi-radius-outline::before{content:"\\F0CC1"}.mdi-railroad-light::before{content:"\\F0F1E"}.mdi-raspberry-pi::before{content:"\\F043F"}.mdi-ray-end::before{content:"\\F0440"}.mdi-ray-end-arrow::before{content:"\\F0441"}.mdi-ray-start::before{content:"\\F0442"}.mdi-ray-start-arrow::before{content:"\\F0443"}.mdi-ray-start-end::before{content:"\\F0444"}.mdi-ray-vertex::before{content:"\\F0445"}.mdi-react::before{content:"\\F0708"}.mdi-read::before{content:"\\F0447"}.mdi-receipt::before{content:"\\F0449"}.mdi-record::before{content:"\\F044A"}.mdi-record-circle::before{content:"\\F0EC2"}.mdi-record-circle-outline::before{content:"\\F0EC3"}.mdi-record-player::before{content:"\\F099A"}.mdi-record-rec::before{content:"\\F044B"}.mdi-rectangle::before{content:"\\F0E5E"}.mdi-rectangle-outline::before{content:"\\F0E5F"}.mdi-recycle::before{content:"\\F044C"}.mdi-recycle-variant::before{content:"\\F139D"}.mdi-reddit::before{content:"\\F044D"}.mdi-redhat::before{content:"\\F111B"}.mdi-redo::before{content:"\\F044E"}.mdi-redo-variant::before{content:"\\F044F"}.mdi-reflect-horizontal::before{content:"\\F0A0E"}.mdi-reflect-vertical::before{content:"\\F0A0F"}.mdi-refresh::before{content:"\\F0450"}.mdi-refresh-circle::before{content:"\\F1377"}.mdi-regex::before{content:"\\F0451"}.mdi-registered-trademark::before{content:"\\F0A67"}.mdi-relation-many-to-many::before{content:"\\F1496"}.mdi-relation-many-to-one::before{content:"\\F1497"}.mdi-relation-many-to-one-or-many::before{content:"\\F1498"}.mdi-relation-many-to-only-one::before{content:"\\F1499"}.mdi-relation-many-to-zero-or-many::before{content:"\\F149A"}.mdi-relation-many-to-zero-or-one::before{content:"\\F149B"}.mdi-relation-one-or-many-to-many::before{content:"\\F149C"}.mdi-relation-one-or-many-to-one::before{content:"\\F149D"}.mdi-relation-one-or-many-to-one-or-many::before{content:"\\F149E"}.mdi-relation-one-or-many-to-only-one::before{content:"\\F149F"}.mdi-relation-one-or-many-to-zero-or-many::before{content:"\\F14A0"}.mdi-relation-one-or-many-to-zero-or-one::before{content:"\\F14A1"}.mdi-relation-one-to-many::before{content:"\\F14A2"}.mdi-relation-one-to-one::before{content:"\\F14A3"}.mdi-relation-one-to-one-or-many::before{content:"\\F14A4"}.mdi-relation-one-to-only-one::before{content:"\\F14A5"}.mdi-relation-one-to-zero-or-many::before{content:"\\F14A6"}.mdi-relation-one-to-zero-or-one::before{content:"\\F14A7"}.mdi-relation-only-one-to-many::before{content:"\\F14A8"}.mdi-relation-only-one-to-one::before{content:"\\F14A9"}.mdi-relation-only-one-to-one-or-many::before{content:"\\F14AA"}.mdi-relation-only-one-to-only-one::before{content:"\\F14AB"}.mdi-relation-only-one-to-zero-or-many::before{content:"\\F14AC"}.mdi-relation-only-one-to-zero-or-one::before{content:"\\F14AD"}.mdi-relation-zero-or-many-to-many::before{content:"\\F14AE"}.mdi-relation-zero-or-many-to-one::before{content:"\\F14AF"}.mdi-relation-zero-or-many-to-one-or-many::before{content:"\\F14B0"}.mdi-relation-zero-or-many-to-only-one::before{content:"\\F14B1"}.mdi-relation-zero-or-many-to-zero-or-many::before{content:"\\F14B2"}.mdi-relation-zero-or-many-to-zero-or-one::before{content:"\\F14B3"}.mdi-relation-zero-or-one-to-many::before{content:"\\F14B4"}.mdi-relation-zero-or-one-to-one::before{content:"\\F14B5"}.mdi-relation-zero-or-one-to-one-or-many::before{content:"\\F14B6"}.mdi-relation-zero-or-one-to-only-one::before{content:"\\F14B7"}.mdi-relation-zero-or-one-to-zero-or-many::before{content:"\\F14B8"}.mdi-relation-zero-or-one-to-zero-or-one::before{content:"\\F14B9"}.mdi-relative-scale::before{content:"\\F0452"}.mdi-reload::before{content:"\\F0453"}.mdi-reload-alert::before{content:"\\F110B"}.mdi-reminder::before{content:"\\F088C"}.mdi-remote::before{content:"\\F0454"}.mdi-remote-desktop::before{content:"\\F08B9"}.mdi-remote-off::before{content:"\\F0EC4"}.mdi-remote-tv::before{content:"\\F0EC5"}.mdi-remote-tv-off::before{content:"\\F0EC6"}.mdi-rename-box::before{content:"\\F0455"}.mdi-reorder-horizontal::before{content:"\\F0688"}.mdi-reorder-vertical::before{content:"\\F0689"}.mdi-repeat::before{content:"\\F0456"}.mdi-repeat-off::before{content:"\\F0457"}.mdi-repeat-once::before{content:"\\F0458"}.mdi-replay::before{content:"\\F0459"}.mdi-reply::before{content:"\\F045A"}.mdi-reply-all::before{content:"\\F045B"}.mdi-reply-all-outline::before{content:"\\F0F1F"}.mdi-reply-circle::before{content:"\\F11AE"}.mdi-reply-outline::before{content:"\\F0F20"}.mdi-reproduction::before{content:"\\F045C"}.mdi-resistor::before{content:"\\F0B44"}.mdi-resistor-nodes::before{content:"\\F0B45"}.mdi-resize::before{content:"\\F0A68"}.mdi-resize-bottom-right::before{content:"\\F045D"}.mdi-responsive::before{content:"\\F045E"}.mdi-restart::before{content:"\\F0709"}.mdi-restart-alert::before{content:"\\F110C"}.mdi-restart-off::before{content:"\\F0D95"}.mdi-restore::before{content:"\\F099B"}.mdi-restore-alert::before{content:"\\F110D"}.mdi-rewind::before{content:"\\F045F"}.mdi-rewind-10::before{content:"\\F0D2A"}.mdi-rewind-30::before{content:"\\F0D96"}.mdi-rewind-5::before{content:"\\F11F9"}.mdi-rewind-outline::before{content:"\\F070A"}.mdi-rhombus::before{content:"\\F070B"}.mdi-rhombus-medium::before{content:"\\F0A10"}.mdi-rhombus-medium-outline::before{content:"\\F14DC"}.mdi-rhombus-outline::before{content:"\\F070C"}.mdi-rhombus-split::before{content:"\\F0A11"}.mdi-rhombus-split-outline::before{content:"\\F14DD"}.mdi-ribbon::before{content:"\\F0460"}.mdi-rice::before{content:"\\F07EA"}.mdi-ring::before{content:"\\F07EB"}.mdi-rivet::before{content:"\\F0E60"}.mdi-road::before{content:"\\F0461"}.mdi-road-variant::before{content:"\\F0462"}.mdi-robber::before{content:"\\F1058"}.mdi-robot::before{content:"\\F06A9"}.mdi-robot-industrial::before{content:"\\F0B46"}.mdi-robot-mower::before{content:"\\F11F7"}.mdi-robot-mower-outline::before{content:"\\F11F3"}.mdi-robot-vacuum::before{content:"\\F070D"}.mdi-robot-vacuum-variant::before{content:"\\F0908"}.mdi-rocket::before{content:"\\F0463"}.mdi-rocket-launch::before{content:"\\F14DE"}.mdi-rocket-launch-outline::before{content:"\\F14DF"}.mdi-rocket-outline::before{content:"\\F13AF"}.mdi-rodent::before{content:"\\F1327"}.mdi-roller-skate::before{content:"\\F0D2B"}.mdi-roller-skate-off::before{content:"\\F0145"}.mdi-rollerblade::before{content:"\\F0D2C"}.mdi-rollerblade-off::before{content:"\\F002E"}.mdi-rollupjs::before{content:"\\F0BC0"}.mdi-roman-numeral-1::before{content:"\\F1088"}.mdi-roman-numeral-10::before{content:"\\F1091"}.mdi-roman-numeral-2::before{content:"\\F1089"}.mdi-roman-numeral-3::before{content:"\\F108A"}.mdi-roman-numeral-4::before{content:"\\F108B"}.mdi-roman-numeral-5::before{content:"\\F108C"}.mdi-roman-numeral-6::before{content:"\\F108D"}.mdi-roman-numeral-7::before{content:"\\F108E"}.mdi-roman-numeral-8::before{content:"\\F108F"}.mdi-roman-numeral-9::before{content:"\\F1090"}.mdi-room-service::before{content:"\\F088D"}.mdi-room-service-outline::before{content:"\\F0D97"}.mdi-rotate-3d::before{content:"\\F0EC7"}.mdi-rotate-3d-variant::before{content:"\\F0464"}.mdi-rotate-left::before{content:"\\F0465"}.mdi-rotate-left-variant::before{content:"\\F0466"}.mdi-rotate-orbit::before{content:"\\F0D98"}.mdi-rotate-right::before{content:"\\F0467"}.mdi-rotate-right-variant::before{content:"\\F0468"}.mdi-rounded-corner::before{content:"\\F0607"}.mdi-router::before{content:"\\F11E2"}.mdi-router-network::before{content:"\\F1087"}.mdi-router-wireless::before{content:"\\F0469"}.mdi-router-wireless-settings::before{content:"\\F0A69"}.mdi-routes::before{content:"\\F046A"}.mdi-routes-clock::before{content:"\\F1059"}.mdi-rowing::before{content:"\\F0608"}.mdi-rss::before{content:"\\F046B"}.mdi-rss-box::before{content:"\\F046C"}.mdi-rss-off::before{content:"\\F0F21"}.mdi-rug::before{content:"\\F1475"}.mdi-rugby::before{content:"\\F0D99"}.mdi-ruler::before{content:"\\F046D"}.mdi-ruler-square::before{content:"\\F0CC2"}.mdi-ruler-square-compass::before{content:"\\F0EBE"}.mdi-run::before{content:"\\F070E"}.mdi-run-fast::before{content:"\\F046E"}.mdi-rv-truck::before{content:"\\F11D4"}.mdi-sack::before{content:"\\F0D2E"}.mdi-sack-percent::before{content:"\\F0D2F"}.mdi-safe::before{content:"\\F0A6A"}.mdi-safe-square::before{content:"\\F127C"}.mdi-safe-square-outline::before{content:"\\F127D"}.mdi-safety-goggles::before{content:"\\F0D30"}.mdi-sail-boat::before{content:"\\F0EC8"}.mdi-sale::before{content:"\\F046F"}.mdi-salesforce::before{content:"\\F088E"}.mdi-sass::before{content:"\\F07EC"}.mdi-satellite::before{content:"\\F0470"}.mdi-satellite-uplink::before{content:"\\F0909"}.mdi-satellite-variant::before{content:"\\F0471"}.mdi-sausage::before{content:"\\F08BA"}.mdi-saw-blade::before{content:"\\F0E61"}.mdi-sawtooth-wave::before{content:"\\F147A"}.mdi-saxophone::before{content:"\\F0609"}.mdi-scale::before{content:"\\F0472"}.mdi-scale-balance::before{content:"\\F05D1"}.mdi-scale-bathroom::before{content:"\\F0473"}.mdi-scale-off::before{content:"\\F105A"}.mdi-scan-helper::before{content:"\\F13D8"}.mdi-scanner::before{content:"\\F06AB"}.mdi-scanner-off::before{content:"\\F090A"}.mdi-scatter-plot::before{content:"\\F0EC9"}.mdi-scatter-plot-outline::before{content:"\\F0ECA"}.mdi-school::before{content:"\\F0474"}.mdi-school-outline::before{content:"\\F1180"}.mdi-scissors-cutting::before{content:"\\F0A6B"}.mdi-scooter::before{content:"\\F11E9"}.mdi-scoreboard::before{content:"\\F127E"}.mdi-scoreboard-outline::before{content:"\\F127F"}.mdi-screen-rotation::before{content:"\\F0475"}.mdi-screen-rotation-lock::before{content:"\\F0478"}.mdi-screw-flat-top::before{content:"\\F0DF3"}.mdi-screw-lag::before{content:"\\F0DF4"}.mdi-screw-machine-flat-top::before{content:"\\F0DF5"}.mdi-screw-machine-round-top::before{content:"\\F0DF6"}.mdi-screw-round-top::before{content:"\\F0DF7"}.mdi-screwdriver::before{content:"\\F0476"}.mdi-script::before{content:"\\F0BC1"}.mdi-script-outline::before{content:"\\F0477"}.mdi-script-text::before{content:"\\F0BC2"}.mdi-script-text-outline::before{content:"\\F0BC3"}.mdi-sd::before{content:"\\F0479"}.mdi-seal::before{content:"\\F047A"}.mdi-seal-variant::before{content:"\\F0FD9"}.mdi-search-web::before{content:"\\F070F"}.mdi-seat::before{content:"\\F0CC3"}.mdi-seat-flat::before{content:"\\F047B"}.mdi-seat-flat-angled::before{content:"\\F047C"}.mdi-seat-individual-suite::before{content:"\\F047D"}.mdi-seat-legroom-extra::before{content:"\\F047E"}.mdi-seat-legroom-normal::before{content:"\\F047F"}.mdi-seat-legroom-reduced::before{content:"\\F0480"}.mdi-seat-outline::before{content:"\\F0CC4"}.mdi-seat-passenger::before{content:"\\F1249"}.mdi-seat-recline-extra::before{content:"\\F0481"}.mdi-seat-recline-normal::before{content:"\\F0482"}.mdi-seatbelt::before{content:"\\F0CC5"}.mdi-security::before{content:"\\F0483"}.mdi-security-network::before{content:"\\F0484"}.mdi-seed::before{content:"\\F0E62"}.mdi-seed-off::before{content:"\\F13FD"}.mdi-seed-off-outline::before{content:"\\F13FE"}.mdi-seed-outline::before{content:"\\F0E63"}.mdi-segment::before{content:"\\F0ECB"}.mdi-select::before{content:"\\F0485"}.mdi-select-all::before{content:"\\F0486"}.mdi-select-color::before{content:"\\F0D31"}.mdi-select-compare::before{content:"\\F0AD9"}.mdi-select-drag::before{content:"\\F0A6C"}.mdi-select-group::before{content:"\\F0F82"}.mdi-select-inverse::before{content:"\\F0487"}.mdi-select-marker::before{content:"\\F1280"}.mdi-select-multiple::before{content:"\\F1281"}.mdi-select-multiple-marker::before{content:"\\F1282"}.mdi-select-off::before{content:"\\F0488"}.mdi-select-place::before{content:"\\F0FDA"}.mdi-select-search::before{content:"\\F1204"}.mdi-selection::before{content:"\\F0489"}.mdi-selection-drag::before{content:"\\F0A6D"}.mdi-selection-ellipse::before{content:"\\F0D32"}.mdi-selection-ellipse-arrow-inside::before{content:"\\F0F22"}.mdi-selection-marker::before{content:"\\F1283"}.mdi-selection-multiple::before{content:"\\F1285"}.mdi-selection-multiple-marker::before{content:"\\F1284"}.mdi-selection-off::before{content:"\\F0777"}.mdi-selection-search::before{content:"\\F1205"}.mdi-semantic-web::before{content:"\\F1316"}.mdi-send::before{content:"\\F048A"}.mdi-send-check::before{content:"\\F1161"}.mdi-send-check-outline::before{content:"\\F1162"}.mdi-send-circle::before{content:"\\F0DF8"}.mdi-send-circle-outline::before{content:"\\F0DF9"}.mdi-send-clock::before{content:"\\F1163"}.mdi-send-clock-outline::before{content:"\\F1164"}.mdi-send-lock::before{content:"\\F07ED"}.mdi-send-lock-outline::before{content:"\\F1166"}.mdi-send-outline::before{content:"\\F1165"}.mdi-serial-port::before{content:"\\F065C"}.mdi-server::before{content:"\\F048B"}.mdi-server-minus::before{content:"\\F048C"}.mdi-server-network::before{content:"\\F048D"}.mdi-server-network-off::before{content:"\\F048E"}.mdi-server-off::before{content:"\\F048F"}.mdi-server-plus::before{content:"\\F0490"}.mdi-server-remove::before{content:"\\F0491"}.mdi-server-security::before{content:"\\F0492"}.mdi-set-all::before{content:"\\F0778"}.mdi-set-center::before{content:"\\F0779"}.mdi-set-center-right::before{content:"\\F077A"}.mdi-set-left::before{content:"\\F077B"}.mdi-set-left-center::before{content:"\\F077C"}.mdi-set-left-right::before{content:"\\F077D"}.mdi-set-merge::before{content:"\\F14E0"}.mdi-set-none::before{content:"\\F077E"}.mdi-set-right::before{content:"\\F077F"}.mdi-set-split::before{content:"\\F14E1"}.mdi-set-square::before{content:"\\F145D"}.mdi-set-top-box::before{content:"\\F099F"}.mdi-settings-helper::before{content:"\\F0A6E"}.mdi-shaker::before{content:"\\F110E"}.mdi-shaker-outline::before{content:"\\F110F"}.mdi-shape::before{content:"\\F0831"}.mdi-shape-circle-plus::before{content:"\\F065D"}.mdi-shape-outline::before{content:"\\F0832"}.mdi-shape-oval-plus::before{content:"\\F11FA"}.mdi-shape-plus::before{content:"\\F0495"}.mdi-shape-polygon-plus::before{content:"\\F065E"}.mdi-shape-rectangle-plus::before{content:"\\F065F"}.mdi-shape-square-plus::before{content:"\\F0660"}.mdi-share::before{content:"\\F0496"}.mdi-share-all::before{content:"\\F11F4"}.mdi-share-all-outline::before{content:"\\F11F5"}.mdi-share-circle::before{content:"\\F11AD"}.mdi-share-off::before{content:"\\F0F23"}.mdi-share-off-outline::before{content:"\\F0F24"}.mdi-share-outline::before{content:"\\F0932"}.mdi-share-variant::before{content:"\\F0497"}.mdi-sheep::before{content:"\\F0CC6"}.mdi-shield::before{content:"\\F0498"}.mdi-shield-account::before{content:"\\F088F"}.mdi-shield-account-outline::before{content:"\\F0A12"}.mdi-shield-airplane::before{content:"\\F06BB"}.mdi-shield-airplane-outline::before{content:"\\F0CC7"}.mdi-shield-alert::before{content:"\\F0ECC"}.mdi-shield-alert-outline::before{content:"\\F0ECD"}.mdi-shield-bug::before{content:"\\F13DA"}.mdi-shield-bug-outline::before{content:"\\F13DB"}.mdi-shield-car::before{content:"\\F0F83"}.mdi-shield-check::before{content:"\\F0565"}.mdi-shield-check-outline::before{content:"\\F0CC8"}.mdi-shield-cross::before{content:"\\F0CC9"}.mdi-shield-cross-outline::before{content:"\\F0CCA"}.mdi-shield-edit::before{content:"\\F11A0"}.mdi-shield-edit-outline::before{content:"\\F11A1"}.mdi-shield-half::before{content:"\\F1360"}.mdi-shield-half-full::before{content:"\\F0780"}.mdi-shield-home::before{content:"\\F068A"}.mdi-shield-home-outline::before{content:"\\F0CCB"}.mdi-shield-key::before{content:"\\F0BC4"}.mdi-shield-key-outline::before{content:"\\F0BC5"}.mdi-shield-link-variant::before{content:"\\F0D33"}.mdi-shield-link-variant-outline::before{content:"\\F0D34"}.mdi-shield-lock::before{content:"\\F099D"}.mdi-shield-lock-outline::before{content:"\\F0CCC"}.mdi-shield-off::before{content:"\\F099E"}.mdi-shield-off-outline::before{content:"\\F099C"}.mdi-shield-outline::before{content:"\\F0499"}.mdi-shield-plus::before{content:"\\F0ADA"}.mdi-shield-plus-outline::before{content:"\\F0ADB"}.mdi-shield-refresh::before{content:"\\F00AA"}.mdi-shield-refresh-outline::before{content:"\\F01E0"}.mdi-shield-remove::before{content:"\\F0ADC"}.mdi-shield-remove-outline::before{content:"\\F0ADD"}.mdi-shield-search::before{content:"\\F0D9A"}.mdi-shield-star::before{content:"\\F113B"}.mdi-shield-star-outline::before{content:"\\F113C"}.mdi-shield-sun::before{content:"\\F105D"}.mdi-shield-sun-outline::before{content:"\\F105E"}.mdi-shield-sync::before{content:"\\F11A2"}.mdi-shield-sync-outline::before{content:"\\F11A3"}.mdi-ship-wheel::before{content:"\\F0833"}.mdi-shoe-formal::before{content:"\\F0B47"}.mdi-shoe-heel::before{content:"\\F0B48"}.mdi-shoe-print::before{content:"\\F0DFA"}.mdi-shopping::before{content:"\\F049A"}.mdi-shopping-music::before{content:"\\F049B"}.mdi-shopping-outline::before{content:"\\F11D5"}.mdi-shopping-search::before{content:"\\F0F84"}.mdi-shovel::before{content:"\\F0710"}.mdi-shovel-off::before{content:"\\F0711"}.mdi-shower::before{content:"\\F09A0"}.mdi-shower-head::before{content:"\\F09A1"}.mdi-shredder::before{content:"\\F049C"}.mdi-shuffle::before{content:"\\F049D"}.mdi-shuffle-disabled::before{content:"\\F049E"}.mdi-shuffle-variant::before{content:"\\F049F"}.mdi-shuriken::before{content:"\\F137F"}.mdi-sigma::before{content:"\\F04A0"}.mdi-sigma-lower::before{content:"\\F062B"}.mdi-sign-caution::before{content:"\\F04A1"}.mdi-sign-direction::before{content:"\\F0781"}.mdi-sign-direction-minus::before{content:"\\F1000"}.mdi-sign-direction-plus::before{content:"\\F0FDC"}.mdi-sign-direction-remove::before{content:"\\F0FDD"}.mdi-sign-real-estate::before{content:"\\F1118"}.mdi-sign-text::before{content:"\\F0782"}.mdi-signal::before{content:"\\F04A2"}.mdi-signal-2g::before{content:"\\F0712"}.mdi-signal-3g::before{content:"\\F0713"}.mdi-signal-4g::before{content:"\\F0714"}.mdi-signal-5g::before{content:"\\F0A6F"}.mdi-signal-cellular-1::before{content:"\\F08BC"}.mdi-signal-cellular-2::before{content:"\\F08BD"}.mdi-signal-cellular-3::before{content:"\\F08BE"}.mdi-signal-cellular-outline::before{content:"\\F08BF"}.mdi-signal-distance-variant::before{content:"\\F0E64"}.mdi-signal-hspa::before{content:"\\F0715"}.mdi-signal-hspa-plus::before{content:"\\F0716"}.mdi-signal-off::before{content:"\\F0783"}.mdi-signal-variant::before{content:"\\F060A"}.mdi-signature::before{content:"\\F0DFB"}.mdi-signature-freehand::before{content:"\\F0DFC"}.mdi-signature-image::before{content:"\\F0DFD"}.mdi-signature-text::before{content:"\\F0DFE"}.mdi-silo::before{content:"\\F0B49"}.mdi-silverware::before{content:"\\F04A3"}.mdi-silverware-clean::before{content:"\\F0FDE"}.mdi-silverware-fork::before{content:"\\F04A4"}.mdi-silverware-fork-knife::before{content:"\\F0A70"}.mdi-silverware-spoon::before{content:"\\F04A5"}.mdi-silverware-variant::before{content:"\\F04A6"}.mdi-sim::before{content:"\\F04A7"}.mdi-sim-alert::before{content:"\\F04A8"}.mdi-sim-off::before{content:"\\F04A9"}.mdi-simple-icons::before{content:"\\F131D"}.mdi-sina-weibo::before{content:"\\F0ADF"}.mdi-sine-wave::before{content:"\\F095B"}.mdi-sitemap::before{content:"\\F04AA"}.mdi-size-l::before{content:"\\F13A6"}.mdi-size-m::before{content:"\\F13A5"}.mdi-size-s::before{content:"\\F13A4"}.mdi-size-xl::before{content:"\\F13A7"}.mdi-size-xs::before{content:"\\F13A3"}.mdi-size-xxl::before{content:"\\F13A8"}.mdi-size-xxs::before{content:"\\F13A2"}.mdi-size-xxxl::before{content:"\\F13A9"}.mdi-skate::before{content:"\\F0D35"}.mdi-skateboard::before{content:"\\F14C2"}.mdi-skew-less::before{content:"\\F0D36"}.mdi-skew-more::before{content:"\\F0D37"}.mdi-ski::before{content:"\\F1304"}.mdi-ski-cross-country::before{content:"\\F1305"}.mdi-ski-water::before{content:"\\F1306"}.mdi-skip-backward::before{content:"\\F04AB"}.mdi-skip-backward-outline::before{content:"\\F0F25"}.mdi-skip-forward::before{content:"\\F04AC"}.mdi-skip-forward-outline::before{content:"\\F0F26"}.mdi-skip-next::before{content:"\\F04AD"}.mdi-skip-next-circle::before{content:"\\F0661"}.mdi-skip-next-circle-outline::before{content:"\\F0662"}.mdi-skip-next-outline::before{content:"\\F0F27"}.mdi-skip-previous::before{content:"\\F04AE"}.mdi-skip-previous-circle::before{content:"\\F0663"}.mdi-skip-previous-circle-outline::before{content:"\\F0664"}.mdi-skip-previous-outline::before{content:"\\F0F28"}.mdi-skull::before{content:"\\F068C"}.mdi-skull-crossbones::before{content:"\\F0BC6"}.mdi-skull-crossbones-outline::before{content:"\\F0BC7"}.mdi-skull-outline::before{content:"\\F0BC8"}.mdi-skull-scan::before{content:"\\F14C7"}.mdi-skull-scan-outline::before{content:"\\F14C8"}.mdi-skype::before{content:"\\F04AF"}.mdi-skype-business::before{content:"\\F04B0"}.mdi-slack::before{content:"\\F04B1"}.mdi-slash-forward::before{content:"\\F0FDF"}.mdi-slash-forward-box::before{content:"\\F0FE0"}.mdi-sleep::before{content:"\\F04B2"}.mdi-sleep-off::before{content:"\\F04B3"}.mdi-slope-downhill::before{content:"\\F0DFF"}.mdi-slope-uphill::before{content:"\\F0E00"}.mdi-slot-machine::before{content:"\\F1114"}.mdi-slot-machine-outline::before{content:"\\F1115"}.mdi-smart-card::before{content:"\\F10BD"}.mdi-smart-card-outline::before{content:"\\F10BE"}.mdi-smart-card-reader::before{content:"\\F10BF"}.mdi-smart-card-reader-outline::before{content:"\\F10C0"}.mdi-smog::before{content:"\\F0A71"}.mdi-smoke-detector::before{content:"\\F0392"}.mdi-smoking::before{content:"\\F04B4"}.mdi-smoking-off::before{content:"\\F04B5"}.mdi-smoking-pipe::before{content:"\\F140D"}.mdi-smoking-pipe-off::before{content:"\\F1428"}.mdi-snapchat::before{content:"\\F04B6"}.mdi-snowboard::before{content:"\\F1307"}.mdi-snowflake::before{content:"\\F0717"}.mdi-snowflake-alert::before{content:"\\F0F29"}.mdi-snowflake-melt::before{content:"\\F12CB"}.mdi-snowflake-variant::before{content:"\\F0F2A"}.mdi-snowman::before{content:"\\F04B7"}.mdi-soccer::before{content:"\\F04B8"}.mdi-soccer-field::before{content:"\\F0834"}.mdi-sofa::before{content:"\\F04B9"}.mdi-solar-panel::before{content:"\\F0D9B"}.mdi-solar-panel-large::before{content:"\\F0D9C"}.mdi-solar-power::before{content:"\\F0A72"}.mdi-soldering-iron::before{content:"\\F1092"}.mdi-solid::before{content:"\\F068D"}.mdi-sony-playstation::before{content:"\\F0414"}.mdi-sort::before{content:"\\F04BA"}.mdi-sort-alphabetical-ascending::before{content:"\\F05BD"}.mdi-sort-alphabetical-ascending-variant::before{content:"\\F1148"}.mdi-sort-alphabetical-descending::before{content:"\\F05BF"}.mdi-sort-alphabetical-descending-variant::before{content:"\\F1149"}.mdi-sort-alphabetical-variant::before{content:"\\F04BB"}.mdi-sort-ascending::before{content:"\\F04BC"}.mdi-sort-bool-ascending::before{content:"\\F1385"}.mdi-sort-bool-ascending-variant::before{content:"\\F1386"}.mdi-sort-bool-descending::before{content:"\\F1387"}.mdi-sort-bool-descending-variant::before{content:"\\F1388"}.mdi-sort-descending::before{content:"\\F04BD"}.mdi-sort-numeric-ascending::before{content:"\\F1389"}.mdi-sort-numeric-ascending-variant::before{content:"\\F090D"}.mdi-sort-numeric-descending::before{content:"\\F138A"}.mdi-sort-numeric-descending-variant::before{content:"\\F0AD2"}.mdi-sort-numeric-variant::before{content:"\\F04BE"}.mdi-sort-reverse-variant::before{content:"\\F033C"}.mdi-sort-variant::before{content:"\\F04BF"}.mdi-sort-variant-lock::before{content:"\\F0CCD"}.mdi-sort-variant-lock-open::before{content:"\\F0CCE"}.mdi-sort-variant-remove::before{content:"\\F1147"}.mdi-soundcloud::before{content:"\\F04C0"}.mdi-source-branch::before{content:"\\F062C"}.mdi-source-branch-check::before{content:"\\F14CF"}.mdi-source-branch-minus::before{content:"\\F14CB"}.mdi-source-branch-plus::before{content:"\\F14CA"}.mdi-source-branch-refresh::before{content:"\\F14CD"}.mdi-source-branch-remove::before{content:"\\F14CC"}.mdi-source-branch-sync::before{content:"\\F14CE"}.mdi-source-commit::before{content:"\\F0718"}.mdi-source-commit-end::before{content:"\\F0719"}.mdi-source-commit-end-local::before{content:"\\F071A"}.mdi-source-commit-local::before{content:"\\F071B"}.mdi-source-commit-next-local::before{content:"\\F071C"}.mdi-source-commit-start::before{content:"\\F071D"}.mdi-source-commit-start-next-local::before{content:"\\F071E"}.mdi-source-fork::before{content:"\\F04C1"}.mdi-source-merge::before{content:"\\F062D"}.mdi-source-pull::before{content:"\\F04C2"}.mdi-source-repository::before{content:"\\F0CCF"}.mdi-source-repository-multiple::before{content:"\\F0CD0"}.mdi-soy-sauce::before{content:"\\F07EE"}.mdi-soy-sauce-off::before{content:"\\F13FC"}.mdi-spa::before{content:"\\F0CD1"}.mdi-spa-outline::before{content:"\\F0CD2"}.mdi-space-invaders::before{content:"\\F0BC9"}.mdi-space-station::before{content:"\\F1383"}.mdi-spade::before{content:"\\F0E65"}.mdi-speaker::before{content:"\\F04C3"}.mdi-speaker-bluetooth::before{content:"\\F09A2"}.mdi-speaker-multiple::before{content:"\\F0D38"}.mdi-speaker-off::before{content:"\\F04C4"}.mdi-speaker-wireless::before{content:"\\F071F"}.mdi-speedometer::before{content:"\\F04C5"}.mdi-speedometer-medium::before{content:"\\F0F85"}.mdi-speedometer-slow::before{content:"\\F0F86"}.mdi-spellcheck::before{content:"\\F04C6"}.mdi-spider::before{content:"\\F11EA"}.mdi-spider-thread::before{content:"\\F11EB"}.mdi-spider-web::before{content:"\\F0BCA"}.mdi-spoon-sugar::before{content:"\\F1429"}.mdi-spotify::before{content:"\\F04C7"}.mdi-spotlight::before{content:"\\F04C8"}.mdi-spotlight-beam::before{content:"\\F04C9"}.mdi-spray::before{content:"\\F0665"}.mdi-spray-bottle::before{content:"\\F0AE0"}.mdi-sprinkler::before{content:"\\F105F"}.mdi-sprinkler-variant::before{content:"\\F1060"}.mdi-sprout::before{content:"\\F0E66"}.mdi-sprout-outline::before{content:"\\F0E67"}.mdi-square::before{content:"\\F0764"}.mdi-square-edit-outline::before{content:"\\F090C"}.mdi-square-medium::before{content:"\\F0A13"}.mdi-square-medium-outline::before{content:"\\F0A14"}.mdi-square-off::before{content:"\\F12EE"}.mdi-square-off-outline::before{content:"\\F12EF"}.mdi-square-outline::before{content:"\\F0763"}.mdi-square-root::before{content:"\\F0784"}.mdi-square-root-box::before{content:"\\F09A3"}.mdi-square-small::before{content:"\\F0A15"}.mdi-square-wave::before{content:"\\F147B"}.mdi-squeegee::before{content:"\\F0AE1"}.mdi-ssh::before{content:"\\F08C0"}.mdi-stack-exchange::before{content:"\\F060B"}.mdi-stack-overflow::before{content:"\\F04CC"}.mdi-stackpath::before{content:"\\F0359"}.mdi-stadium::before{content:"\\F0FF9"}.mdi-stadium-variant::before{content:"\\F0720"}.mdi-stairs::before{content:"\\F04CD"}.mdi-stairs-box::before{content:"\\F139E"}.mdi-stairs-down::before{content:"\\F12BE"}.mdi-stairs-up::before{content:"\\F12BD"}.mdi-stamper::before{content:"\\F0D39"}.mdi-standard-definition::before{content:"\\F07EF"}.mdi-star::before{content:"\\F04CE"}.mdi-star-box::before{content:"\\F0A73"}.mdi-star-box-multiple::before{content:"\\F1286"}.mdi-star-box-multiple-outline::before{content:"\\F1287"}.mdi-star-box-outline::before{content:"\\F0A74"}.mdi-star-circle::before{content:"\\F04CF"}.mdi-star-circle-outline::before{content:"\\F09A4"}.mdi-star-face::before{content:"\\F09A5"}.mdi-star-four-points::before{content:"\\F0AE2"}.mdi-star-four-points-outline::before{content:"\\F0AE3"}.mdi-star-half::before{content:"\\F0246"}.mdi-star-half-full::before{content:"\\F04D0"}.mdi-star-off::before{content:"\\F04D1"}.mdi-star-outline::before{content:"\\F04D2"}.mdi-star-three-points::before{content:"\\F0AE4"}.mdi-star-three-points-outline::before{content:"\\F0AE5"}.mdi-state-machine::before{content:"\\F11EF"}.mdi-steam::before{content:"\\F04D3"}.mdi-steering::before{content:"\\F04D4"}.mdi-steering-off::before{content:"\\F090E"}.mdi-step-backward::before{content:"\\F04D5"}.mdi-step-backward-2::before{content:"\\F04D6"}.mdi-step-forward::before{content:"\\F04D7"}.mdi-step-forward-2::before{content:"\\F04D8"}.mdi-stethoscope::before{content:"\\F04D9"}.mdi-sticker::before{content:"\\F1364"}.mdi-sticker-alert::before{content:"\\F1365"}.mdi-sticker-alert-outline::before{content:"\\F1366"}.mdi-sticker-check::before{content:"\\F1367"}.mdi-sticker-check-outline::before{content:"\\F1368"}.mdi-sticker-circle-outline::before{content:"\\F05D0"}.mdi-sticker-emoji::before{content:"\\F0785"}.mdi-sticker-minus::before{content:"\\F1369"}.mdi-sticker-minus-outline::before{content:"\\F136A"}.mdi-sticker-outline::before{content:"\\F136B"}.mdi-sticker-plus::before{content:"\\F136C"}.mdi-sticker-plus-outline::before{content:"\\F136D"}.mdi-sticker-remove::before{content:"\\F136E"}.mdi-sticker-remove-outline::before{content:"\\F136F"}.mdi-stocking::before{content:"\\F04DA"}.mdi-stomach::before{content:"\\F1093"}.mdi-stop::before{content:"\\F04DB"}.mdi-stop-circle::before{content:"\\F0666"}.mdi-stop-circle-outline::before{content:"\\F0667"}.mdi-store::before{content:"\\F04DC"}.mdi-store-24-hour::before{content:"\\F04DD"}.mdi-store-outline::before{content:"\\F1361"}.mdi-storefront::before{content:"\\F07C7"}.mdi-storefront-outline::before{content:"\\F10C1"}.mdi-stove::before{content:"\\F04DE"}.mdi-strategy::before{content:"\\F11D6"}.mdi-stretch-to-page::before{content:"\\F0F2B"}.mdi-stretch-to-page-outline::before{content:"\\F0F2C"}.mdi-string-lights::before{content:"\\F12BA"}.mdi-string-lights-off::before{content:"\\F12BB"}.mdi-subdirectory-arrow-left::before{content:"\\F060C"}.mdi-subdirectory-arrow-right::before{content:"\\F060D"}.mdi-subtitles::before{content:"\\F0A16"}.mdi-subtitles-outline::before{content:"\\F0A17"}.mdi-subway::before{content:"\\F06AC"}.mdi-subway-alert-variant::before{content:"\\F0D9D"}.mdi-subway-variant::before{content:"\\F04DF"}.mdi-summit::before{content:"\\F0786"}.mdi-sunglasses::before{content:"\\F04E0"}.mdi-surround-sound::before{content:"\\F05C5"}.mdi-surround-sound-2-0::before{content:"\\F07F0"}.mdi-surround-sound-3-1::before{content:"\\F07F1"}.mdi-surround-sound-5-1::before{content:"\\F07F2"}.mdi-surround-sound-7-1::before{content:"\\F07F3"}.mdi-svg::before{content:"\\F0721"}.mdi-swap-horizontal::before{content:"\\F04E1"}.mdi-swap-horizontal-bold::before{content:"\\F0BCD"}.mdi-swap-horizontal-circle::before{content:"\\F0FE1"}.mdi-swap-horizontal-circle-outline::before{content:"\\F0FE2"}.mdi-swap-horizontal-variant::before{content:"\\F08C1"}.mdi-swap-vertical::before{content:"\\F04E2"}.mdi-swap-vertical-bold::before{content:"\\F0BCE"}.mdi-swap-vertical-circle::before{content:"\\F0FE3"}.mdi-swap-vertical-circle-outline::before{content:"\\F0FE4"}.mdi-swap-vertical-variant::before{content:"\\F08C2"}.mdi-swim::before{content:"\\F04E3"}.mdi-switch::before{content:"\\F04E4"}.mdi-sword::before{content:"\\F04E5"}.mdi-sword-cross::before{content:"\\F0787"}.mdi-syllabary-hangul::before{content:"\\F1333"}.mdi-syllabary-hiragana::before{content:"\\F1334"}.mdi-syllabary-katakana::before{content:"\\F1335"}.mdi-syllabary-katakana-halfwidth::before{content:"\\F1336"}.mdi-symfony::before{content:"\\F0AE6"}.mdi-sync::before{content:"\\F04E6"}.mdi-sync-alert::before{content:"\\F04E7"}.mdi-sync-circle::before{content:"\\F1378"}.mdi-sync-off::before{content:"\\F04E8"}.mdi-tab::before{content:"\\F04E9"}.mdi-tab-minus::before{content:"\\F0B4B"}.mdi-tab-plus::before{content:"\\F075C"}.mdi-tab-remove::before{content:"\\F0B4C"}.mdi-tab-unselected::before{content:"\\F04EA"}.mdi-table::before{content:"\\F04EB"}.mdi-table-account::before{content:"\\F13B9"}.mdi-table-alert::before{content:"\\F13BA"}.mdi-table-arrow-down::before{content:"\\F13BB"}.mdi-table-arrow-left::before{content:"\\F13BC"}.mdi-table-arrow-right::before{content:"\\F13BD"}.mdi-table-arrow-up::before{content:"\\F13BE"}.mdi-table-border::before{content:"\\F0A18"}.mdi-table-cancel::before{content:"\\F13BF"}.mdi-table-chair::before{content:"\\F1061"}.mdi-table-check::before{content:"\\F13C0"}.mdi-table-clock::before{content:"\\F13C1"}.mdi-table-cog::before{content:"\\F13C2"}.mdi-table-column::before{content:"\\F0835"}.mdi-table-column-plus-after::before{content:"\\F04EC"}.mdi-table-column-plus-before::before{content:"\\F04ED"}.mdi-table-column-remove::before{content:"\\F04EE"}.mdi-table-column-width::before{content:"\\F04EF"}.mdi-table-edit::before{content:"\\F04F0"}.mdi-table-eye::before{content:"\\F1094"}.mdi-table-eye-off::before{content:"\\F13C3"}.mdi-table-furniture::before{content:"\\F05BC"}.mdi-table-headers-eye::before{content:"\\F121D"}.mdi-table-headers-eye-off::before{content:"\\F121E"}.mdi-table-heart::before{content:"\\F13C4"}.mdi-table-key::before{content:"\\F13C5"}.mdi-table-large::before{content:"\\F04F1"}.mdi-table-large-plus::before{content:"\\F0F87"}.mdi-table-large-remove::before{content:"\\F0F88"}.mdi-table-lock::before{content:"\\F13C6"}.mdi-table-merge-cells::before{content:"\\F09A6"}.mdi-table-minus::before{content:"\\F13C7"}.mdi-table-multiple::before{content:"\\F13C8"}.mdi-table-network::before{content:"\\F13C9"}.mdi-table-of-contents::before{content:"\\F0836"}.mdi-table-off::before{content:"\\F13CA"}.mdi-table-plus::before{content:"\\F0A75"}.mdi-table-refresh::before{content:"\\F13A0"}.mdi-table-remove::before{content:"\\F0A76"}.mdi-table-row::before{content:"\\F0837"}.mdi-table-row-height::before{content:"\\F04F2"}.mdi-table-row-plus-after::before{content:"\\F04F3"}.mdi-table-row-plus-before::before{content:"\\F04F4"}.mdi-table-row-remove::before{content:"\\F04F5"}.mdi-table-search::before{content:"\\F090F"}.mdi-table-settings::before{content:"\\F0838"}.mdi-table-split-cell::before{content:"\\F142A"}.mdi-table-star::before{content:"\\F13CB"}.mdi-table-sync::before{content:"\\F13A1"}.mdi-table-tennis::before{content:"\\F0E68"}.mdi-tablet::before{content:"\\F04F6"}.mdi-tablet-android::before{content:"\\F04F7"}.mdi-tablet-cellphone::before{content:"\\F09A7"}.mdi-tablet-dashboard::before{content:"\\F0ECE"}.mdi-tablet-ipad::before{content:"\\F04F8"}.mdi-taco::before{content:"\\F0762"}.mdi-tag::before{content:"\\F04F9"}.mdi-tag-faces::before{content:"\\F04FA"}.mdi-tag-heart::before{content:"\\F068B"}.mdi-tag-heart-outline::before{content:"\\F0BCF"}.mdi-tag-minus::before{content:"\\F0910"}.mdi-tag-minus-outline::before{content:"\\F121F"}.mdi-tag-multiple::before{content:"\\F04FB"}.mdi-tag-multiple-outline::before{content:"\\F12F7"}.mdi-tag-off::before{content:"\\F1220"}.mdi-tag-off-outline::before{content:"\\F1221"}.mdi-tag-outline::before{content:"\\F04FC"}.mdi-tag-plus::before{content:"\\F0722"}.mdi-tag-plus-outline::before{content:"\\F1222"}.mdi-tag-remove::before{content:"\\F0723"}.mdi-tag-remove-outline::before{content:"\\F1223"}.mdi-tag-text::before{content:"\\F1224"}.mdi-tag-text-outline::before{content:"\\F04FD"}.mdi-tailwind::before{content:"\\F13FF"}.mdi-tank::before{content:"\\F0D3A"}.mdi-tanker-truck::before{content:"\\F0FE5"}.mdi-tape-measure::before{content:"\\F0B4D"}.mdi-target::before{content:"\\F04FE"}.mdi-target-account::before{content:"\\F0BD0"}.mdi-target-variant::before{content:"\\F0A77"}.mdi-taxi::before{content:"\\F04FF"}.mdi-tea::before{content:"\\F0D9E"}.mdi-tea-outline::before{content:"\\F0D9F"}.mdi-teach::before{content:"\\F0890"}.mdi-teamviewer::before{content:"\\F0500"}.mdi-telegram::before{content:"\\F0501"}.mdi-telescope::before{content:"\\F0B4E"}.mdi-television::before{content:"\\F0502"}.mdi-television-ambient-light::before{content:"\\F1356"}.mdi-television-box::before{content:"\\F0839"}.mdi-television-classic::before{content:"\\F07F4"}.mdi-television-classic-off::before{content:"\\F083A"}.mdi-television-clean::before{content:"\\F1110"}.mdi-television-guide::before{content:"\\F0503"}.mdi-television-off::before{content:"\\F083B"}.mdi-television-pause::before{content:"\\F0F89"}.mdi-television-play::before{content:"\\F0ECF"}.mdi-television-stop::before{content:"\\F0F8A"}.mdi-temperature-celsius::before{content:"\\F0504"}.mdi-temperature-fahrenheit::before{content:"\\F0505"}.mdi-temperature-kelvin::before{content:"\\F0506"}.mdi-tennis::before{content:"\\F0DA0"}.mdi-tennis-ball::before{content:"\\F0507"}.mdi-tent::before{content:"\\F0508"}.mdi-terraform::before{content:"\\F1062"}.mdi-terrain::before{content:"\\F0509"}.mdi-test-tube::before{content:"\\F0668"}.mdi-test-tube-empty::before{content:"\\F0911"}.mdi-test-tube-off::before{content:"\\F0912"}.mdi-text::before{content:"\\F09A8"}.mdi-text-box::before{content:"\\F021A"}.mdi-text-box-check::before{content:"\\F0EA6"}.mdi-text-box-check-outline::before{content:"\\F0EA7"}.mdi-text-box-minus::before{content:"\\F0EA8"}.mdi-text-box-minus-outline::before{content:"\\F0EA9"}.mdi-text-box-multiple::before{content:"\\F0AB7"}.mdi-text-box-multiple-outline::before{content:"\\F0AB8"}.mdi-text-box-outline::before{content:"\\F09ED"}.mdi-text-box-plus::before{content:"\\F0EAA"}.mdi-text-box-plus-outline::before{content:"\\F0EAB"}.mdi-text-box-remove::before{content:"\\F0EAC"}.mdi-text-box-remove-outline::before{content:"\\F0EAD"}.mdi-text-box-search::before{content:"\\F0EAE"}.mdi-text-box-search-outline::before{content:"\\F0EAF"}.mdi-text-recognition::before{content:"\\F113D"}.mdi-text-search::before{content:"\\F13B8"}.mdi-text-shadow::before{content:"\\F0669"}.mdi-text-short::before{content:"\\F09A9"}.mdi-text-subject::before{content:"\\F09AA"}.mdi-text-to-speech::before{content:"\\F050A"}.mdi-text-to-speech-off::before{content:"\\F050B"}.mdi-texture::before{content:"\\F050C"}.mdi-texture-box::before{content:"\\F0FE6"}.mdi-theater::before{content:"\\F050D"}.mdi-theme-light-dark::before{content:"\\F050E"}.mdi-thermometer::before{content:"\\F050F"}.mdi-thermometer-alert::before{content:"\\F0E01"}.mdi-thermometer-chevron-down::before{content:"\\F0E02"}.mdi-thermometer-chevron-up::before{content:"\\F0E03"}.mdi-thermometer-high::before{content:"\\F10C2"}.mdi-thermometer-lines::before{content:"\\F0510"}.mdi-thermometer-low::before{content:"\\F10C3"}.mdi-thermometer-minus::before{content:"\\F0E04"}.mdi-thermometer-plus::before{content:"\\F0E05"}.mdi-thermostat::before{content:"\\F0393"}.mdi-thermostat-box::before{content:"\\F0891"}.mdi-thought-bubble::before{content:"\\F07F6"}.mdi-thought-bubble-outline::before{content:"\\F07F7"}.mdi-thumb-down::before{content:"\\F0511"}.mdi-thumb-down-outline::before{content:"\\F0512"}.mdi-thumb-up::before{content:"\\F0513"}.mdi-thumb-up-outline::before{content:"\\F0514"}.mdi-thumbs-up-down::before{content:"\\F0515"}.mdi-ticket::before{content:"\\F0516"}.mdi-ticket-account::before{content:"\\F0517"}.mdi-ticket-confirmation::before{content:"\\F0518"}.mdi-ticket-confirmation-outline::before{content:"\\F13AA"}.mdi-ticket-outline::before{content:"\\F0913"}.mdi-ticket-percent::before{content:"\\F0724"}.mdi-ticket-percent-outline::before{content:"\\F142B"}.mdi-tie::before{content:"\\F0519"}.mdi-tilde::before{content:"\\F0725"}.mdi-timelapse::before{content:"\\F051A"}.mdi-timeline::before{content:"\\F0BD1"}.mdi-timeline-alert::before{content:"\\F0F95"}.mdi-timeline-alert-outline::before{content:"\\F0F98"}.mdi-timeline-clock::before{content:"\\F11FB"}.mdi-timeline-clock-outline::before{content:"\\F11FC"}.mdi-timeline-help::before{content:"\\F0F99"}.mdi-timeline-help-outline::before{content:"\\F0F9A"}.mdi-timeline-outline::before{content:"\\F0BD2"}.mdi-timeline-plus::before{content:"\\F0F96"}.mdi-timeline-plus-outline::before{content:"\\F0F97"}.mdi-timeline-text::before{content:"\\F0BD3"}.mdi-timeline-text-outline::before{content:"\\F0BD4"}.mdi-timer::before{content:"\\F13AB"}.mdi-timer-10::before{content:"\\F051C"}.mdi-timer-3::before{content:"\\F051D"}.mdi-timer-off::before{content:"\\F13AC"}.mdi-timer-off-outline::before{content:"\\F051E"}.mdi-timer-outline::before{content:"\\F051B"}.mdi-timer-sand::before{content:"\\F051F"}.mdi-timer-sand-empty::before{content:"\\F06AD"}.mdi-timer-sand-full::before{content:"\\F078C"}.mdi-timetable::before{content:"\\F0520"}.mdi-toaster::before{content:"\\F1063"}.mdi-toaster-off::before{content:"\\F11B7"}.mdi-toaster-oven::before{content:"\\F0CD3"}.mdi-toggle-switch::before{content:"\\F0521"}.mdi-toggle-switch-off::before{content:"\\F0522"}.mdi-toggle-switch-off-outline::before{content:"\\F0A19"}.mdi-toggle-switch-outline::before{content:"\\F0A1A"}.mdi-toilet::before{content:"\\F09AB"}.mdi-toolbox::before{content:"\\F09AC"}.mdi-toolbox-outline::before{content:"\\F09AD"}.mdi-tools::before{content:"\\F1064"}.mdi-tooltip::before{content:"\\F0523"}.mdi-tooltip-account::before{content:"\\F000C"}.mdi-tooltip-edit::before{content:"\\F0524"}.mdi-tooltip-edit-outline::before{content:"\\F12C5"}.mdi-tooltip-image::before{content:"\\F0525"}.mdi-tooltip-image-outline::before{content:"\\F0BD5"}.mdi-tooltip-outline::before{content:"\\F0526"}.mdi-tooltip-plus::before{content:"\\F0BD6"}.mdi-tooltip-plus-outline::before{content:"\\F0527"}.mdi-tooltip-text::before{content:"\\F0528"}.mdi-tooltip-text-outline::before{content:"\\F0BD7"}.mdi-tooth::before{content:"\\F08C3"}.mdi-tooth-outline::before{content:"\\F0529"}.mdi-toothbrush::before{content:"\\F1129"}.mdi-toothbrush-electric::before{content:"\\F112C"}.mdi-toothbrush-paste::before{content:"\\F112A"}.mdi-tortoise::before{content:"\\F0D3B"}.mdi-toslink::before{content:"\\F12B8"}.mdi-tournament::before{content:"\\F09AE"}.mdi-tow-truck::before{content:"\\F083C"}.mdi-tower-beach::before{content:"\\F0681"}.mdi-tower-fire::before{content:"\\F0682"}.mdi-toy-brick::before{content:"\\F1288"}.mdi-toy-brick-marker::before{content:"\\F1289"}.mdi-toy-brick-marker-outline::before{content:"\\F128A"}.mdi-toy-brick-minus::before{content:"\\F128B"}.mdi-toy-brick-minus-outline::before{content:"\\F128C"}.mdi-toy-brick-outline::before{content:"\\F128D"}.mdi-toy-brick-plus::before{content:"\\F128E"}.mdi-toy-brick-plus-outline::before{content:"\\F128F"}.mdi-toy-brick-remove::before{content:"\\F1290"}.mdi-toy-brick-remove-outline::before{content:"\\F1291"}.mdi-toy-brick-search::before{content:"\\F1292"}.mdi-toy-brick-search-outline::before{content:"\\F1293"}.mdi-track-light::before{content:"\\F0914"}.mdi-trackpad::before{content:"\\F07F8"}.mdi-trackpad-lock::before{content:"\\F0933"}.mdi-tractor::before{content:"\\F0892"}.mdi-tractor-variant::before{content:"\\F14C4"}.mdi-trademark::before{content:"\\F0A78"}.mdi-traffic-cone::before{content:"\\F137C"}.mdi-traffic-light::before{content:"\\F052B"}.mdi-train::before{content:"\\F052C"}.mdi-train-car::before{content:"\\F0BD8"}.mdi-train-variant::before{content:"\\F08C4"}.mdi-tram::before{content:"\\F052D"}.mdi-tram-side::before{content:"\\F0FE7"}.mdi-transcribe::before{content:"\\F052E"}.mdi-transcribe-close::before{content:"\\F052F"}.mdi-transfer::before{content:"\\F1065"}.mdi-transfer-down::before{content:"\\F0DA1"}.mdi-transfer-left::before{content:"\\F0DA2"}.mdi-transfer-right::before{content:"\\F0530"}.mdi-transfer-up::before{content:"\\F0DA3"}.mdi-transit-connection::before{content:"\\F0D3C"}.mdi-transit-connection-variant::before{content:"\\F0D3D"}.mdi-transit-detour::before{content:"\\F0F8B"}.mdi-transit-transfer::before{content:"\\F06AE"}.mdi-transition::before{content:"\\F0915"}.mdi-transition-masked::before{content:"\\F0916"}.mdi-translate::before{content:"\\F05CA"}.mdi-translate-off::before{content:"\\F0E06"}.mdi-transmission-tower::before{content:"\\F0D3E"}.mdi-trash-can::before{content:"\\F0A79"}.mdi-trash-can-outline::before{content:"\\F0A7A"}.mdi-tray::before{content:"\\F1294"}.mdi-tray-alert::before{content:"\\F1295"}.mdi-tray-full::before{content:"\\F1296"}.mdi-tray-minus::before{content:"\\F1297"}.mdi-tray-plus::before{content:"\\F1298"}.mdi-tray-remove::before{content:"\\F1299"}.mdi-treasure-chest::before{content:"\\F0726"}.mdi-tree::before{content:"\\F0531"}.mdi-tree-outline::before{content:"\\F0E69"}.mdi-trello::before{content:"\\F0532"}.mdi-trending-down::before{content:"\\F0533"}.mdi-trending-neutral::before{content:"\\F0534"}.mdi-trending-up::before{content:"\\F0535"}.mdi-triangle::before{content:"\\F0536"}.mdi-triangle-outline::before{content:"\\F0537"}.mdi-triangle-wave::before{content:"\\F147C"}.mdi-triforce::before{content:"\\F0BD9"}.mdi-trophy::before{content:"\\F0538"}.mdi-trophy-award::before{content:"\\F0539"}.mdi-trophy-broken::before{content:"\\F0DA4"}.mdi-trophy-outline::before{content:"\\F053A"}.mdi-trophy-variant::before{content:"\\F053B"}.mdi-trophy-variant-outline::before{content:"\\F053C"}.mdi-truck::before{content:"\\F053D"}.mdi-truck-check::before{content:"\\F0CD4"}.mdi-truck-check-outline::before{content:"\\F129A"}.mdi-truck-delivery::before{content:"\\F053E"}.mdi-truck-delivery-outline::before{content:"\\F129B"}.mdi-truck-fast::before{content:"\\F0788"}.mdi-truck-fast-outline::before{content:"\\F129C"}.mdi-truck-outline::before{content:"\\F129D"}.mdi-truck-trailer::before{content:"\\F0727"}.mdi-trumpet::before{content:"\\F1096"}.mdi-tshirt-crew::before{content:"\\F0A7B"}.mdi-tshirt-crew-outline::before{content:"\\F053F"}.mdi-tshirt-v::before{content:"\\F0A7C"}.mdi-tshirt-v-outline::before{content:"\\F0540"}.mdi-tumble-dryer::before{content:"\\F0917"}.mdi-tumble-dryer-alert::before{content:"\\F11BA"}.mdi-tumble-dryer-off::before{content:"\\F11BB"}.mdi-tune::before{content:"\\F062E"}.mdi-tune-vertical::before{content:"\\F066A"}.mdi-turnstile::before{content:"\\F0CD5"}.mdi-turnstile-outline::before{content:"\\F0CD6"}.mdi-turtle::before{content:"\\F0CD7"}.mdi-twitch::before{content:"\\F0543"}.mdi-twitter::before{content:"\\F0544"}.mdi-twitter-retweet::before{content:"\\F0547"}.mdi-two-factor-authentication::before{content:"\\F09AF"}.mdi-typewriter::before{content:"\\F0F2D"}.mdi-ubisoft::before{content:"\\F0BDA"}.mdi-ubuntu::before{content:"\\F0548"}.mdi-ufo::before{content:"\\F10C4"}.mdi-ufo-outline::before{content:"\\F10C5"}.mdi-ultra-high-definition::before{content:"\\F07F9"}.mdi-umbraco::before{content:"\\F0549"}.mdi-umbrella::before{content:"\\F054A"}.mdi-umbrella-closed::before{content:"\\F09B0"}.mdi-umbrella-closed-outline::before{content:"\\F13E2"}.mdi-umbrella-closed-variant::before{content:"\\F13E1"}.mdi-umbrella-outline::before{content:"\\F054B"}.mdi-undo::before{content:"\\F054C"}.mdi-undo-variant::before{content:"\\F054D"}.mdi-unfold-less-horizontal::before{content:"\\F054E"}.mdi-unfold-less-vertical::before{content:"\\F0760"}.mdi-unfold-more-horizontal::before{content:"\\F054F"}.mdi-unfold-more-vertical::before{content:"\\F0761"}.mdi-ungroup::before{content:"\\F0550"}.mdi-unicode::before{content:"\\F0ED0"}.mdi-unity::before{content:"\\F06AF"}.mdi-unreal::before{content:"\\F09B1"}.mdi-untappd::before{content:"\\F0551"}.mdi-update::before{content:"\\F06B0"}.mdi-upload::before{content:"\\F0552"}.mdi-upload-lock::before{content:"\\F1373"}.mdi-upload-lock-outline::before{content:"\\F1374"}.mdi-upload-multiple::before{content:"\\F083D"}.mdi-upload-network::before{content:"\\F06F6"}.mdi-upload-network-outline::before{content:"\\F0CD8"}.mdi-upload-off::before{content:"\\F10C6"}.mdi-upload-off-outline::before{content:"\\F10C7"}.mdi-upload-outline::before{content:"\\F0E07"}.mdi-usb::before{content:"\\F0553"}.mdi-usb-flash-drive::before{content:"\\F129E"}.mdi-usb-flash-drive-outline::before{content:"\\F129F"}.mdi-usb-port::before{content:"\\F11F0"}.mdi-valve::before{content:"\\F1066"}.mdi-valve-closed::before{content:"\\F1067"}.mdi-valve-open::before{content:"\\F1068"}.mdi-van-passenger::before{content:"\\F07FA"}.mdi-van-utility::before{content:"\\F07FB"}.mdi-vanish::before{content:"\\F07FC"}.mdi-vanity-light::before{content:"\\F11E1"}.mdi-variable::before{content:"\\F0AE7"}.mdi-variable-box::before{content:"\\F1111"}.mdi-vector-arrange-above::before{content:"\\F0554"}.mdi-vector-arrange-below::before{content:"\\F0555"}.mdi-vector-bezier::before{content:"\\F0AE8"}.mdi-vector-circle::before{content:"\\F0556"}.mdi-vector-circle-variant::before{content:"\\F0557"}.mdi-vector-combine::before{content:"\\F0558"}.mdi-vector-curve::before{content:"\\F0559"}.mdi-vector-difference::before{content:"\\F055A"}.mdi-vector-difference-ab::before{content:"\\F055B"}.mdi-vector-difference-ba::before{content:"\\F055C"}.mdi-vector-ellipse::before{content:"\\F0893"}.mdi-vector-intersection::before{content:"\\F055D"}.mdi-vector-line::before{content:"\\F055E"}.mdi-vector-link::before{content:"\\F0FE8"}.mdi-vector-point::before{content:"\\F055F"}.mdi-vector-polygon::before{content:"\\F0560"}.mdi-vector-polyline::before{content:"\\F0561"}.mdi-vector-polyline-edit::before{content:"\\F1225"}.mdi-vector-polyline-minus::before{content:"\\F1226"}.mdi-vector-polyline-plus::before{content:"\\F1227"}.mdi-vector-polyline-remove::before{content:"\\F1228"}.mdi-vector-radius::before{content:"\\F074A"}.mdi-vector-rectangle::before{content:"\\F05C6"}.mdi-vector-selection::before{content:"\\F0562"}.mdi-vector-square::before{content:"\\F0001"}.mdi-vector-triangle::before{content:"\\F0563"}.mdi-vector-union::before{content:"\\F0564"}.mdi-vhs::before{content:"\\F0A1B"}.mdi-vibrate::before{content:"\\F0566"}.mdi-vibrate-off::before{content:"\\F0CD9"}.mdi-video::before{content:"\\F0567"}.mdi-video-3d::before{content:"\\F07FD"}.mdi-video-3d-off::before{content:"\\F13D9"}.mdi-video-3d-variant::before{content:"\\F0ED1"}.mdi-video-4k-box::before{content:"\\F083E"}.mdi-video-account::before{content:"\\F0919"}.mdi-video-box::before{content:"\\F00FD"}.mdi-video-box-off::before{content:"\\F00FE"}.mdi-video-check::before{content:"\\F1069"}.mdi-video-check-outline::before{content:"\\F106A"}.mdi-video-image::before{content:"\\F091A"}.mdi-video-input-antenna::before{content:"\\F083F"}.mdi-video-input-component::before{content:"\\F0840"}.mdi-video-input-hdmi::before{content:"\\F0841"}.mdi-video-input-scart::before{content:"\\F0F8C"}.mdi-video-input-svideo::before{content:"\\F0842"}.mdi-video-minus::before{content:"\\F09B2"}.mdi-video-minus-outline::before{content:"\\F02BA"}.mdi-video-off::before{content:"\\F0568"}.mdi-video-off-outline::before{content:"\\F0BDB"}.mdi-video-outline::before{content:"\\F0BDC"}.mdi-video-plus::before{content:"\\F09B3"}.mdi-video-plus-outline::before{content:"\\F01D3"}.mdi-video-stabilization::before{content:"\\F091B"}.mdi-video-switch::before{content:"\\F0569"}.mdi-video-switch-outline::before{content:"\\F0790"}.mdi-video-vintage::before{content:"\\F0A1C"}.mdi-video-wireless::before{content:"\\F0ED2"}.mdi-video-wireless-outline::before{content:"\\F0ED3"}.mdi-view-agenda::before{content:"\\F056A"}.mdi-view-agenda-outline::before{content:"\\F11D8"}.mdi-view-array::before{content:"\\F056B"}.mdi-view-array-outline::before{content:"\\F1485"}.mdi-view-carousel::before{content:"\\F056C"}.mdi-view-carousel-outline::before{content:"\\F1486"}.mdi-view-column::before{content:"\\F056D"}.mdi-view-column-outline::before{content:"\\F1487"}.mdi-view-comfy::before{content:"\\F0E6A"}.mdi-view-comfy-outline::before{content:"\\F1488"}.mdi-view-compact::before{content:"\\F0E6B"}.mdi-view-compact-outline::before{content:"\\F0E6C"}.mdi-view-dashboard::before{content:"\\F056E"}.mdi-view-dashboard-outline::before{content:"\\F0A1D"}.mdi-view-dashboard-variant::before{content:"\\F0843"}.mdi-view-dashboard-variant-outline::before{content:"\\F1489"}.mdi-view-day::before{content:"\\F056F"}.mdi-view-day-outline::before{content:"\\F148A"}.mdi-view-grid::before{content:"\\F0570"}.mdi-view-grid-outline::before{content:"\\F11D9"}.mdi-view-grid-plus::before{content:"\\F0F8D"}.mdi-view-grid-plus-outline::before{content:"\\F11DA"}.mdi-view-headline::before{content:"\\F0571"}.mdi-view-list::before{content:"\\F0572"}.mdi-view-list-outline::before{content:"\\F148B"}.mdi-view-module::before{content:"\\F0573"}.mdi-view-module-outline::before{content:"\\F148C"}.mdi-view-parallel::before{content:"\\F0728"}.mdi-view-parallel-outline::before{content:"\\F148D"}.mdi-view-quilt::before{content:"\\F0574"}.mdi-view-quilt-outline::before{content:"\\F148E"}.mdi-view-sequential::before{content:"\\F0729"}.mdi-view-sequential-outline::before{content:"\\F148F"}.mdi-view-split-horizontal::before{content:"\\F0BCB"}.mdi-view-split-vertical::before{content:"\\F0BCC"}.mdi-view-stream::before{content:"\\F0575"}.mdi-view-stream-outline::before{content:"\\F1490"}.mdi-view-week::before{content:"\\F0576"}.mdi-view-week-outline::before{content:"\\F1491"}.mdi-vimeo::before{content:"\\F0577"}.mdi-violin::before{content:"\\F060F"}.mdi-virtual-reality::before{content:"\\F0894"}.mdi-virus::before{content:"\\F13B6"}.mdi-virus-outline::before{content:"\\F13B7"}.mdi-vk::before{content:"\\F0579"}.mdi-vlc::before{content:"\\F057C"}.mdi-voice-off::before{content:"\\F0ED4"}.mdi-voicemail::before{content:"\\F057D"}.mdi-volleyball::before{content:"\\F09B4"}.mdi-volume-high::before{content:"\\F057E"}.mdi-volume-low::before{content:"\\F057F"}.mdi-volume-medium::before{content:"\\F0580"}.mdi-volume-minus::before{content:"\\F075E"}.mdi-volume-mute::before{content:"\\F075F"}.mdi-volume-off::before{content:"\\F0581"}.mdi-volume-plus::before{content:"\\F075D"}.mdi-volume-source::before{content:"\\F1120"}.mdi-volume-variant-off::before{content:"\\F0E08"}.mdi-volume-vibrate::before{content:"\\F1121"}.mdi-vote::before{content:"\\F0A1F"}.mdi-vote-outline::before{content:"\\F0A20"}.mdi-vpn::before{content:"\\F0582"}.mdi-vuejs::before{content:"\\F0844"}.mdi-vuetify::before{content:"\\F0E6D"}.mdi-walk::before{content:"\\F0583"}.mdi-wall::before{content:"\\F07FE"}.mdi-wall-sconce::before{content:"\\F091C"}.mdi-wall-sconce-flat::before{content:"\\F091D"}.mdi-wall-sconce-flat-variant::before{content:"\\F041C"}.mdi-wall-sconce-round::before{content:"\\F0748"}.mdi-wall-sconce-round-variant::before{content:"\\F091E"}.mdi-wallet::before{content:"\\F0584"}.mdi-wallet-giftcard::before{content:"\\F0585"}.mdi-wallet-membership::before{content:"\\F0586"}.mdi-wallet-outline::before{content:"\\F0BDD"}.mdi-wallet-plus::before{content:"\\F0F8E"}.mdi-wallet-plus-outline::before{content:"\\F0F8F"}.mdi-wallet-travel::before{content:"\\F0587"}.mdi-wallpaper::before{content:"\\F0E09"}.mdi-wan::before{content:"\\F0588"}.mdi-wardrobe::before{content:"\\F0F90"}.mdi-wardrobe-outline::before{content:"\\F0F91"}.mdi-warehouse::before{content:"\\F0F81"}.mdi-washing-machine::before{content:"\\F072A"}.mdi-washing-machine-alert::before{content:"\\F11BC"}.mdi-washing-machine-off::before{content:"\\F11BD"}.mdi-watch::before{content:"\\F0589"}.mdi-watch-export::before{content:"\\F058A"}.mdi-watch-export-variant::before{content:"\\F0895"}.mdi-watch-import::before{content:"\\F058B"}.mdi-watch-import-variant::before{content:"\\F0896"}.mdi-watch-variant::before{content:"\\F0897"}.mdi-watch-vibrate::before{content:"\\F06B1"}.mdi-watch-vibrate-off::before{content:"\\F0CDA"}.mdi-water::before{content:"\\F058C"}.mdi-water-boiler::before{content:"\\F0F92"}.mdi-water-boiler-alert::before{content:"\\F11B3"}.mdi-water-boiler-off::before{content:"\\F11B4"}.mdi-water-off::before{content:"\\F058D"}.mdi-water-outline::before{content:"\\F0E0A"}.mdi-water-percent::before{content:"\\F058E"}.mdi-water-polo::before{content:"\\F12A0"}.mdi-water-pump::before{content:"\\F058F"}.mdi-water-pump-off::before{content:"\\F0F93"}.mdi-water-well::before{content:"\\F106B"}.mdi-water-well-outline::before{content:"\\F106C"}.mdi-watering-can::before{content:"\\F1481"}.mdi-watering-can-outline::before{content:"\\F1482"}.mdi-watermark::before{content:"\\F0612"}.mdi-wave::before{content:"\\F0F2E"}.mdi-waveform::before{content:"\\F147D"}.mdi-waves::before{content:"\\F078D"}.mdi-waze::before{content:"\\F0BDE"}.mdi-weather-cloudy::before{content:"\\F0590"}.mdi-weather-cloudy-alert::before{content:"\\F0F2F"}.mdi-weather-cloudy-arrow-right::before{content:"\\F0E6E"}.mdi-weather-fog::before{content:"\\F0591"}.mdi-weather-hail::before{content:"\\F0592"}.mdi-weather-hazy::before{content:"\\F0F30"}.mdi-weather-hurricane::before{content:"\\F0898"}.mdi-weather-lightning::before{content:"\\F0593"}.mdi-weather-lightning-rainy::before{content:"\\F067E"}.mdi-weather-night::before{content:"\\F0594"}.mdi-weather-night-partly-cloudy::before{content:"\\F0F31"}.mdi-weather-partly-cloudy::before{content:"\\F0595"}.mdi-weather-partly-lightning::before{content:"\\F0F32"}.mdi-weather-partly-rainy::before{content:"\\F0F33"}.mdi-weather-partly-snowy::before{content:"\\F0F34"}.mdi-weather-partly-snowy-rainy::before{content:"\\F0F35"}.mdi-weather-pouring::before{content:"\\F0596"}.mdi-weather-rainy::before{content:"\\F0597"}.mdi-weather-snowy::before{content:"\\F0598"}.mdi-weather-snowy-heavy::before{content:"\\F0F36"}.mdi-weather-snowy-rainy::before{content:"\\F067F"}.mdi-weather-sunny::before{content:"\\F0599"}.mdi-weather-sunny-alert::before{content:"\\F0F37"}.mdi-weather-sunset::before{content:"\\F059A"}.mdi-weather-sunset-down::before{content:"\\F059B"}.mdi-weather-sunset-up::before{content:"\\F059C"}.mdi-weather-tornado::before{content:"\\F0F38"}.mdi-weather-windy::before{content:"\\F059D"}.mdi-weather-windy-variant::before{content:"\\F059E"}.mdi-web::before{content:"\\F059F"}.mdi-web-box::before{content:"\\F0F94"}.mdi-web-clock::before{content:"\\F124A"}.mdi-webcam::before{content:"\\F05A0"}.mdi-webhook::before{content:"\\F062F"}.mdi-webpack::before{content:"\\F072B"}.mdi-webrtc::before{content:"\\F1248"}.mdi-wechat::before{content:"\\F0611"}.mdi-weight::before{content:"\\F05A1"}.mdi-weight-gram::before{content:"\\F0D3F"}.mdi-weight-kilogram::before{content:"\\F05A2"}.mdi-weight-lifter::before{content:"\\F115D"}.mdi-weight-pound::before{content:"\\F09B5"}.mdi-whatsapp::before{content:"\\F05A3"}.mdi-wheelchair-accessibility::before{content:"\\F05A4"}.mdi-whistle::before{content:"\\F09B6"}.mdi-whistle-outline::before{content:"\\F12BC"}.mdi-white-balance-auto::before{content:"\\F05A5"}.mdi-white-balance-incandescent::before{content:"\\F05A6"}.mdi-white-balance-iridescent::before{content:"\\F05A7"}.mdi-white-balance-sunny::before{content:"\\F05A8"}.mdi-widgets::before{content:"\\F072C"}.mdi-widgets-outline::before{content:"\\F1355"}.mdi-wifi::before{content:"\\F05A9"}.mdi-wifi-off::before{content:"\\F05AA"}.mdi-wifi-star::before{content:"\\F0E0B"}.mdi-wifi-strength-1::before{content:"\\F091F"}.mdi-wifi-strength-1-alert::before{content:"\\F0920"}.mdi-wifi-strength-1-lock::before{content:"\\F0921"}.mdi-wifi-strength-2::before{content:"\\F0922"}.mdi-wifi-strength-2-alert::before{content:"\\F0923"}.mdi-wifi-strength-2-lock::before{content:"\\F0924"}.mdi-wifi-strength-3::before{content:"\\F0925"}.mdi-wifi-strength-3-alert::before{content:"\\F0926"}.mdi-wifi-strength-3-lock::before{content:"\\F0927"}.mdi-wifi-strength-4::before{content:"\\F0928"}.mdi-wifi-strength-4-alert::before{content:"\\F0929"}.mdi-wifi-strength-4-lock::before{content:"\\F092A"}.mdi-wifi-strength-alert-outline::before{content:"\\F092B"}.mdi-wifi-strength-lock-outline::before{content:"\\F092C"}.mdi-wifi-strength-off::before{content:"\\F092D"}.mdi-wifi-strength-off-outline::before{content:"\\F092E"}.mdi-wifi-strength-outline::before{content:"\\F092F"}.mdi-wikipedia::before{content:"\\F05AC"}.mdi-wind-turbine::before{content:"\\F0DA5"}.mdi-window-close::before{content:"\\F05AD"}.mdi-window-closed::before{content:"\\F05AE"}.mdi-window-closed-variant::before{content:"\\F11DB"}.mdi-window-maximize::before{content:"\\F05AF"}.mdi-window-minimize::before{content:"\\F05B0"}.mdi-window-open::before{content:"\\F05B1"}.mdi-window-open-variant::before{content:"\\F11DC"}.mdi-window-restore::before{content:"\\F05B2"}.mdi-window-shutter::before{content:"\\F111C"}.mdi-window-shutter-alert::before{content:"\\F111D"}.mdi-window-shutter-open::before{content:"\\F111E"}.mdi-wiper::before{content:"\\F0AE9"}.mdi-wiper-wash::before{content:"\\F0DA6"}.mdi-wizard-hat::before{content:"\\F1477"}.mdi-wordpress::before{content:"\\F05B4"}.mdi-wrap::before{content:"\\F05B6"}.mdi-wrap-disabled::before{content:"\\F0BDF"}.mdi-wrench::before{content:"\\F05B7"}.mdi-wrench-outline::before{content:"\\F0BE0"}.mdi-xamarin::before{content:"\\F0845"}.mdi-xamarin-outline::before{content:"\\F0846"}.mdi-xing::before{content:"\\F05BE"}.mdi-xml::before{content:"\\F05C0"}.mdi-xmpp::before{content:"\\F07FF"}.mdi-y-combinator::before{content:"\\F0624"}.mdi-yahoo::before{content:"\\F0B4F"}.mdi-yeast::before{content:"\\F05C1"}.mdi-yin-yang::before{content:"\\F0680"}.mdi-yoga::before{content:"\\F117C"}.mdi-youtube::before{content:"\\F05C3"}.mdi-youtube-gaming::before{content:"\\F0848"}.mdi-youtube-studio::before{content:"\\F0847"}.mdi-youtube-subscription::before{content:"\\F0D40"}.mdi-youtube-tv::before{content:"\\F0448"}.mdi-z-wave::before{content:"\\F0AEA"}.mdi-zend::before{content:"\\F0AEB"}.mdi-zigbee::before{content:"\\F0D41"}.mdi-zip-box::before{content:"\\F05C4"}.mdi-zip-box-outline::before{content:"\\F0FFA"}.mdi-zip-disk::before{content:"\\F0A23"}.mdi-zodiac-aquarius::before{content:"\\F0A7D"}.mdi-zodiac-aries::before{content:"\\F0A7E"}.mdi-zodiac-cancer::before{content:"\\F0A7F"}.mdi-zodiac-capricorn::before{content:"\\F0A80"}.mdi-zodiac-gemini::before{content:"\\F0A81"}.mdi-zodiac-leo::before{content:"\\F0A82"}.mdi-zodiac-libra::before{content:"\\F0A83"}.mdi-zodiac-pisces::before{content:"\\F0A84"}.mdi-zodiac-sagittarius::before{content:"\\F0A85"}.mdi-zodiac-scorpio::before{content:"\\F0A86"}.mdi-zodiac-taurus::before{content:"\\F0A87"}.mdi-zodiac-virgo::before{content:"\\F0A88"}.mdi-blank::before{content:"\\F68C";visibility:hidden}.mdi-18px.mdi-set,.mdi-18px.mdi:before{font-size:18px}.mdi-24px.mdi-set,.mdi-24px.mdi:before{font-size:24px}.mdi-36px.mdi-set,.mdi-36px.mdi:before{font-size:36px}.mdi-48px.mdi-set,.mdi-48px.mdi:before{font-size:48px}.mdi-dark:before{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive:before{color:rgba(0,0,0,0.26)}.mdi-light:before{color:#fff}.mdi-light.mdi-inactive:before{color:rgba(255,255,255,0.3)}.mdi-rotate-45:before{transform:rotate(45deg)}.mdi-rotate-90:before{transform:rotate(90deg)}.mdi-rotate-135:before{transform:rotate(135deg)}.mdi-rotate-180:before{transform:rotate(180deg)}.mdi-rotate-225:before{transform:rotate(225deg)}.mdi-rotate-270:before{transform:rotate(270deg)}.mdi-rotate-315:before{transform:rotate(315deg)}.mdi-flip-h:before{transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.mdi-flip-v:before{transform:scaleY(-1);filter:FlipV;-ms-filter:"FlipV"}.mdi-spin:before{animation:mdi-spin 2s infinite linear}@keyframes mdi-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}',""]),e.exports=a},2119:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".switch-options {\n position: relative;\n --columns: 1;\n}\n.switch-options.grid {\n width: 100%;\n}\n.switch-options .switch-icon {\n margin-right: 8px;\n transform: scale(0.9);\n}\n.switch-options .dim {\n opacity: 0.5;\n}\n.switch-options-grid {\n font-size: 12px;\n display: grid;\n grid-template-columns: repeat(auto-fill, 50%);\n}\n.switch-options-popup {\n font-size: 12px;\n transition: 0.2s ease-out;\n transform-origin: left;\n transform: translateY(-50%) scale(0.9);\n top: 50%;\n left: calc(100% + 8px);\n background-color: #fff;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n white-space: nowrap;\n padding: 4px;\n display: grid;\n width: max-content;\n grid-template-columns: repeat(var(--columns), auto);\n border-radius: 5px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n max-height: calc(100vh - 100px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\nbody.dark .switch-options-popup {\n background-color: #333;\n}\nbody.dark .switch-options-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.switch-options-popup::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.switch-options-popup.open {\n transform: translateY(-50%) scale(1);\n}\nbody.settings-panel-dock-right .switch-options-popup {\n right: calc(100% + 8px);\n left: unset;\n transform-origin: right;\n}\n.switch-options.small-size .switch-options-popup {\n transform-origin: top;\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%) scale(0.9);\n}\n.switch-options.small-size .switch-options-popup.open {\n transform: translateX(-50%) scale(1);\n}",""]),e.exports=o},2701:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".check-all-updates[data-v-76652ef2] {\n margin: 1px 0;\n}\n.check-all-updates .be-icon[data-v-76652ef2] {\n margin-right: 6px;\n}",""]),e.exports=o},6538:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bisector-dialog-content-container[data-v-31cf1990] {\n padding: 0 16px;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text.weak[data-v-31cf1990] {\n opacity: 0.6;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text[data-v-31cf1990],\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n margin-bottom: 8px;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n display: grid;\n gap: 8px;\n grid-template-columns: 1fr 1fr;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group .be-button[data-v-31cf1990]:last-child {\n grid-column: span 2;\n}",""]),e.exports=o},8335:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,"div[data-v-386ddf8e] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.peek[data-v-386ddf8e] {\n cursor: pointer;\n}",""]),e.exports=o},8840:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.bangumi-card[data-v-b2f4653c] {\n --cover-width: 94px;\n background-color: #fff;\n margin: 0 8px 8px 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 8px;\n display: grid;\n grid-template-areas: "cover epTitle" "cover title";\n grid-template-columns: var(--cover-width) 1fr;\n grid-template-rows: 6fr 5fr;\n position: relative;\n flex-shrink: 0;\n}\n.bangumi-card .up[data-v-b2f4653c] {\n grid-area: title;\n display: flex;\n align-items: center;\n padding: 0 12px;\n align-self: center;\n overflow: hidden;\n margin-bottom: 4px;\n}\n.bangumi-card .up .cover[data-v-b2f4653c] {\n height: 18px;\n width: 18px;\n border-radius: 50%;\n}\n.bangumi-card .up .title[data-v-b2f4653c] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0 6px;\n line-height: normal;\n}\n.bangumi-card .ep-title[data-v-b2f4653c] {\n grid-area: epTitle;\n font-size: 11pt;\n font-weight: 600;\n padding: 0 12px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n align-self: center;\n color: inherit;\n line-height: normal;\n margin: 4px 0 0 0;\n}\n.bangumi-card .ep-cover-container[data-v-b2f4653c] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n overflow: hidden;\n display: flex;\n}\n.bangumi-card .ep-cover-container .ep-cover[data-v-b2f4653c] {\n background-color: rgba(136, 136, 136, 0.2666666667);\n width: var(--cover-width);\n min-height: 62.5px;\n}\n.bangumi-card:hover .ep-title[data-v-b2f4653c] {\n color: var(--theme-color);\n}\n.bangumi-card:hover .ep-cover[data-v-b2f4653c] {\n transform: scale(1.05);\n}\nbody.dark .bangumi-card[data-v-b2f4653c] {\n box-shadow: rgba(0, 0, 0, 0.0666666667) 0 4px 12px 0px;\n background-color: #2d2d2d;\n color: #eee;\n}\n.bangumi-card.new[data-v-b2f4653c]::before {\n content: "NEW";\n position: absolute;\n top: 4px;\n left: 4px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n padding: 0 6px;\n height: 18px;\n border-radius: 9px;\n font-weight: 700;\n font-size: 11px;\n line-height: 18px;\n z-index: 1;\n}',""]),e.exports=o},5579:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".column-card[data-v-335afa63] {\n width: 356px;\n display: flex;\n flex-direction: column;\n margin-bottom: 12px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n background-color: #fff;\n box-sizing: border-box;\n position: relative;\n flex-shrink: 0;\n font-size: 12px;\n cursor: pointer;\n border-radius: 8px;\n}\nbody.dark .column-card[data-v-335afa63] {\n background-color: #282828;\n color: #eee;\n}\n.column-card .covers[data-v-335afa63] {\n position: relative;\n display: flex;\n overflow: hidden;\n border-radius: 8px 8px 0 0;\n}\n.column-card .covers .cover[data-v-335afa63] {\n flex: 1 0 0;\n height: 120px;\n width: 0;\n object-fit: cover;\n}\n.column-card .up[data-v-335afa63] {\n position: absolute;\n left: 8px;\n top: 86px;\n padding: 2px;\n display: flex;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.6666666667);\n border-radius: 14px;\n height: 28px;\n box-sizing: border-box;\n}\n.column-card .up .face[data-v-335afa63] {\n border-radius: 50%;\n height: 24px;\n width: 24px;\n}\n.column-card .up .name[data-v-335afa63] {\n margin: 0 6px;\n color: #fff;\n}\n.column-card .title[data-v-335afa63] {\n padding: 10px 10px 0;\n margin: 0;\n font-size: 11pt;\n font-weight: 600;\n color: inherit;\n line-height: normal;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.column-card .description[data-v-335afa63] {\n margin: 8px 10px;\n display: -webkit-box;\n white-space: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 1.5;\n max-height: 3em;\n}\n.column-card:hover .title[data-v-335afa63] {\n color: var(--theme-color);\n}\n.column-card:hover .cover[data-v-335afa63] {\n transform: scale(1.05);\n}",""]),e.exports=o},2835:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-up-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n line-height: normal;\n}\n.be-up-info:not(.fallback) {\n background-color: #fff;\n color: black;\n border-radius: 14px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 28px;\n border-radius: 14px;\n padding: 2px;\n box-shadow: none;\n padding-right: 8px;\n}\nbody.dark .be-up-info:not(.fallback) {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-up-info:not(.fallback) {\n background-color: #282828;\n color: #eee;\n}\n.be-up-info-cover {\n border-radius: 50%;\n}\n.be-up-info-cover-fallback {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 18px;\n margin-right: -3px;\n}\n.be-up-info-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: 0.2s ease-out;\n}\n.be-up-info:hover .be-up-info-name {\n color: var(--theme-color) !important;\n}",""]),e.exports=o},450:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.video-card[data-v-57e48aec] {\n display: grid;\n grid-template-columns: 196px 1fr;\n grid-template-rows: 1fr 1fr 1fr;\n grid-template-areas: "cover title" "cover description" "cover up";\n height: var(--card-height);\n width: var(--card-width);\n color: black;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n margin-right: var(--card-margin);\n margin-bottom: var(--card-margin);\n position: relative;\n}\nbody.dark .video-card[data-v-57e48aec], body.dark .video-card[data-v-57e48aec]:hover {\n background-color: #282828;\n color: #eee;\n}\n.video-card[data-v-57e48aec]:hover {\n color: black;\n}\n.video-card.vertical[data-v-57e48aec] {\n grid-template-columns: auto auto;\n grid-template-rows: auto 1fr auto auto;\n grid-template-areas: "cover cover" "title title" "up up" "stats stats";\n gap: 4px;\n}\n.video-card.vertical .description[data-v-57e48aec],\n.video-card.vertical .topics[data-v-57e48aec] {\n display: none;\n}\n.video-card.vertical .cover-container[data-v-57e48aec] {\n border-radius: 8px 8px 0 0;\n width: calc(var(--card-width) - 2px);\n height: calc(var(--card-width) / 20 * 12.5);\n}\n.video-card.vertical .title[data-v-57e48aec] {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n max-height: 3em;\n word-break: break-all;\n white-space: normal;\n line-height: 1.5;\n margin: 4px 0;\n padding: 0 10px;\n font-size: 14px;\n}\n.video-card.vertical .up[data-v-57e48aec] {\n align-self: start;\n white-space: nowrap;\n}\n.video-card.vertical .up .name[data-v-57e48aec] {\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.video-card.vertical .up[data-v-57e48aec]:not(.no-face) {\n margin-left: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .up.no-face[data-v-57e48aec] {\n margin-top: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .cooperation[data-v-57e48aec] {\n margin: 0 12px 6px 8px;\n}\n.video-card.vertical .cooperation-note[data-v-57e48aec] {\n display: flex;\n opacity: 0.5;\n}\n.video-card.vertical .stats[data-v-57e48aec] {\n grid-area: stats;\n align-self: end;\n justify-self: start;\n margin-bottom: 8px;\n margin-right: 0;\n}\n.video-card > *[data-v-57e48aec] {\n justify-self: self-start;\n align-self: center;\n}\n.video-card .publish-time-summary[data-v-57e48aec],\n.video-card .publish-time-detail[data-v-57e48aec],\n.video-card .duration[data-v-57e48aec],\n.video-card .watchlater[data-v-57e48aec] {\n opacity: 0;\n}\n.video-card:hover .cover[data-v-57e48aec] {\n transform: scale(1.05);\n}\n.video-card:hover .publish-time-summary[data-v-57e48aec],\n.video-card:hover .duration[data-v-57e48aec],\n.video-card:hover .watchlater[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .publish-time-summary[data-v-57e48aec]:hover {\n opacity: 0;\n}\n.video-card .publish-time-summary:hover ~ .publish-time-detail[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .cover-container[data-v-57e48aec] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n position: relative;\n width: calc(var(--card-height) / 12.5 * 20);\n height: calc(var(--card-height) - 2px);\n overflow: hidden;\n}\n.video-card .cover-container .cover[data-v-57e48aec] {\n transition: 0.1s cubic-bezier(0.39, 0.58, 0.57, 1);\n -webkit-transform: rotate(0deg);\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n.video-card .cover-container[data-v-57e48aec] > :not(.cover) {\n position: absolute;\n display: flex;\n align-items: center;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec],\n.video-card .cover-container .duration[data-v-57e48aec],\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n bottom: 6px;\n padding: 2px 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n color: white;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail .mdi[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary .mdi[data-v-57e48aec],\n.video-card .cover-container .duration .mdi[data-v-57e48aec],\n.video-card .cover-container .watchlater .mdi[data-v-57e48aec] {\n margin-right: 4px;\n}\n.video-card .cover-container .new[data-v-57e48aec] {\n top: 6px;\n left: 6px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec] {\n z-index: 0;\n}\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n z-index: 1;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n top: 6px;\n right: 6px;\n}\n.video-card .cover-container .duration[data-v-57e48aec] {\n left: 6px;\n}\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n right: 6px;\n padding-left: 4px;\n}\n.video-card .title[data-v-57e48aec] {\n grid-area: title;\n font-size: 15px;\n font-weight: 600;\n color: inherit;\n padding: 4px 12px 0 12px;\n white-space: nowrap;\n overflow: hidden;\n justify-self: stretch;\n text-overflow: ellipsis;\n}\n.video-card .title[data-v-57e48aec]:hover {\n color: var(--theme-color);\n}\n.video-card .topics[data-v-57e48aec] {\n display: flex;\n align-items: center;\n grid-area: description;\n margin-left: 12px;\n}\n.video-card .topics .topic[data-v-57e48aec] {\n display: flex;\n align-items: center;\n gap: 4px;\n color: inherit;\n padding: 4px 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n margin-right: 8px;\n border-radius: 14px;\n opacity: 0.75;\n}\n.video-card .topics .topic .topic-name[data-v-57e48aec] {\n max-width: 84px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.video-card .topics .topic[data-v-57e48aec]:hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: var(--theme-color);\n opacity: 1;\n}\n.video-card .description[data-v-57e48aec] {\n grid-area: description;\n color: inherit;\n overflow: hidden;\n align-self: stretch;\n justify-self: stretch;\n margin: 0 12px;\n line-height: 1.5;\n height: 3em;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n scrollbar-width: none !important;\n}\n.video-card .description[data-v-57e48aec]::-webkit-scrollbar {\n width: 0px !important;\n}\n.video-card .description.single-line[data-v-57e48aec] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.video-card .cooperation[data-v-57e48aec],\n.video-card .up[data-v-57e48aec],\n.video-card .stats[data-v-57e48aec] {\n grid-area: up;\n}\n.video-card .up[data-v-57e48aec] {\n margin-left: 12px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n padding: 2px;\n background-color: transparent;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n border-radius: 15px;\n color: inherit;\n}\n.video-card .up .name[data-v-57e48aec] {\n margin: 0 8px;\n}\n.video-card .up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .up[data-v-57e48aec]:not(.no-face):hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.video-card .up:hover .name[data-v-57e48aec],\n.video-card .up:hover .be-icon[data-v-57e48aec] {\n color: var(--theme-color);\n}\n.video-card.no-stats .up[data-v-57e48aec],\n.video-card.no-stats .cooperation[data-v-57e48aec] {\n margin-bottom: 4px;\n}\n.video-card .cooperation[data-v-57e48aec] {\n margin-left: 12px;\n display: flex;\n align-items: center;\n justify-self: stretch;\n justify-content: space-between;\n}\n.video-card .cooperation-ups[data-v-57e48aec] {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: flex-start;\n}\n.video-card .cooperation-ups .cooperation-up[data-v-57e48aec] {\n flex: 0 0 15px;\n width: 15px;\n display: flex;\n}\n.video-card .cooperation-ups .cooperation-up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .cooperation-ups .cooperation-up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 2px;\n background-color: #fff;\n}\nbody.dark .video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n background-color: #282828;\n}\n.video-card .cooperation-ups:hover .cooperation-up[data-v-57e48aec] {\n flex-basis: auto;\n width: 30px;\n margin-right: 4px;\n}\n.video-card .cooperation-note[data-v-57e48aec] {\n display: none;\n}\n.video-card .stats[data-v-57e48aec] {\n font-size: 11px;\n justify-self: self-end;\n margin-right: 12px;\n display: flex;\n align-items: center;\n opacity: 0.5;\n}\n.video-card .stats[data-v-57e48aec] > :nth-child(n+4) {\n display: none;\n}\n.video-card .stats .be-icon[data-v-57e48aec] {\n margin: 0 4px 0 12px;\n}',""]),e.exports=o},6115:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bb-comment .translate-container,\n.card-content .translate-container {\n margin: 4px 0 2px 0;\n display: inline-block;\n font-weight: normal;\n font-size: 14px;\n}\n.bb-comment .translate-container .translated,\n.card-content .translate-container .translated {\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.bb-comment .translate-container .translated a,\n.card-content .translate-container .translated a {\n color: #aaa !important;\n}\n.bb-comment .translate-container .translated a:hover,\n.card-content .translate-container .translated a:hover {\n color: var(--theme-color) !important;\n}\n.bb-comment .translate-container .translate,\n.card-content .translate-container .translate {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 12px;\n height: 18px;\n color: #aaa;\n cursor: pointer;\n}\n.bb-comment .translate-container .translate:hover,\n.card-content .translate-container .translate:hover {\n color: var(--theme-color);\n}\n.bb-comment .translate-container .translate-result,\n.card-content .translate-container .translate-result {\n padding-top: 6px;\n white-space: pre-wrap;\n line-height: 20px;\n word-break: break-all;\n overflow-wrap: break-word;\n}\nbody.dark .bb-comment .translate-container .translate-result,\nbody.dark .card-content .translate-container .translate-result {\n color: #eee;\n}\nbody.machine-translator-enabled .bb-comment .reply-con .text-con {\n display: block;\n margin: 0 !important;\n}\nbody.machine-translator-enabled .card-content .translate-container {\n margin: 13px 0 2px 0;\n}",""]),e.exports=o},1965:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".suggest-item {\n outline: none !important;\n padding: 6px 6px 6px 10px;\n cursor: pointer;\n}\n.suggest-item.disabled {\n cursor: default;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.suggest-item:not(.disabled):hover, .suggest-item:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.suggest-item:first-child {\n padding-top: 8px;\n border-radius: 7px 7px 0 0;\n}\n.suggest-item:last-child {\n padding-bottom: 8px;\n border-radius: 0 0 7px 7px;\n}\n.suggest-item-content {\n display: flex;\n align-items: center;\n}\n.suggest-item-icon {\n margin-right: 6px;\n}\n.suggest-item-title {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n flex: 1 0 0;\n width: 0;\n}\n.suggest-item-name {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-description {\n opacity: 0.5;\n font-size: smaller;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-delete {\n opacity: 0.5;\n margin-right: 4px;\n}\n.suggest-item-delete:hover {\n opacity: 1;\n}",""]),e.exports=o},6570:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".global-launch-bar-container {\n display: flex;\n top: 20vh;\n left: 50%;\n width: 40vw;\n max-width: 650px;\n height: 50px;\n padding: 0 8px;\n z-index: 5000;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n font-size: 16px;\n transform: translateX(-50%);\n transition: opacity 0.2s ease-out;\n}\nbody.dark .global-launch-bar-container {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .global-launch-bar-container {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .global-launch-bar-container {\n background-color: #222;\n}\n.global-launch-bar-container .launch-bar {\n flex: 1;\n}\nbody.dark .global-launch-bar-container .launch-bar {\n --color: #eee;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list {\n transition: 0.2s ease-out;\n top: calc(100% + 8px);\n max-height: calc(80vh - 16px - 50px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n font-size: 14px;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}",""]),e.exports=o},6379:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".launch-bar {\n --color: black;\n color: var(--color);\n position: relative;\n display: flex;\n align-items: center;\n}\n.launch-bar .input-area {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n.launch-bar .input-area .recommended-target {\n display: none;\n}\n.launch-bar .input-area .launch-bar-form {\n flex: 1;\n display: flex;\n}\n.launch-bar .input-area .launch-bar-form .input {\n flex: 1;\n padding: 8px;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: inherit;\n box-sizing: border-box;\n width: 15vw;\n font-size: inherit;\n}\n.launch-bar .input-area .launch-bar-form .input::placeholder {\n color: inherit !important;\n opacity: 0.8;\n}\n.launch-bar .input-area .launch-bar-form .submit {\n color: inherit;\n padding: 4px;\n background: transparent;\n border: none;\n outline: none !important;\n cursor: pointer;\n}\n.launch-bar .input-area .input-active-bar {\n flex: 0 0 auto;\n align-self: flex-start;\n height: 2px;\n width: 0;\n border-radius: 1px;\n background-color: var(--theme-color);\n transition: 0.3s ease-in-out;\n}\n.launch-bar .launch-bar-suggest-list {\n position: absolute;\n top: 100%;\n left: 50%;\n opacity: 0;\n width: 100%;\n transform: translateX(-50%) translateY(-4px);\n pointer-events: none;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n white-space: nowrap;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n background-color: #fff;\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n color: #eee;\n background-color: #222;\n}\n.launch-bar .launch-bar-suggest-list .suggest-highlight {\n color: var(--theme-color);\n font-style: normal;\n}\n.launch-bar:focus-within .input-active-bar {\n width: 100%;\n}\n.launch-bar:focus-within .launch-bar-suggest-list,\n.launch-bar .launch-bar-suggest-list:focus-within {\n opacity: 1;\n transform: translateX(-50%);\n pointer-events: initial;\n}",""]),e.exports=o},4396:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.release-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 12px;\n padding: 0 16px 16px 16px;\n}\n.release-content-markdown {\n font-size: 14px;\n flex-grow: 1;\n max-height: calc(100vh - 220px);\n overflow: auto;\n line-height: normal;\n}\n.release-content-markdown ul,\n.release-content-markdown ul li {\n list-style: disc;\n}\n.release-content-markdown ol,\n.release-content-markdown ol li {\n list-style: decimal;\n}\n.release-content-markdown ul,\n.release-content-markdown ol {\n padding-left: 16px;\n margin: 0;\n}\n.release-content-markdown ul li,\n.release-content-markdown ol li {\n line-height: 1.75;\n}\n.release-content-markdown p {\n margin: 0;\n}\n.release-content-markdown details {\n line-height: 1.75;\n}\n.release-content-markdown details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.release-content-markdown > p {\n line-height: 1.75;\n}\n.release-content-markdown p + p {\n margin-top: 8px;\n}\n.release-content-markdown pre {\n white-space: pre-wrap;\n}\n.release-content-markdown code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.release-content-markdown kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .release-content-markdown kbd {\n border-color: #666;\n}\n.release-content-markdown blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .release-content-markdown blockquote * {\n color: inherit !important;\n}\n.release-content-markdown blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.release-content-markdown a,\n.release-content-markdown a:focus-within,\n.release-content-markdown a:hover {\n color: var(--theme-color);\n}\n.release-content-markdown > :last-child {\n margin-bottom: 0;\n}\n.release-content-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n font-size: 15px;\n justify-content: flex-end;\n}\n.release-content-actions .be-button {\n padding: 6px 12px;\n}',""]),e.exports=o},1301:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-description {\n word-break: break-all;\n line-height: normal;\n}\n.component-description ul,\n.component-description ul li {\n list-style: disc;\n}\n.component-description ol,\n.component-description ol li {\n list-style: decimal;\n}\n.component-description ul,\n.component-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.component-description ul li,\n.component-description ol li {\n line-height: 1.75;\n}\n.component-description p {\n margin: 0;\n}\n.component-description details {\n line-height: 1.75;\n}\n.component-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.component-description > p {\n line-height: 1.75;\n}\n.component-description p + p {\n margin-top: 8px;\n}\n.component-description pre {\n white-space: pre-wrap;\n}\n.component-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.component-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .component-description kbd {\n border-color: #666;\n}\n.component-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .component-description blockquote * {\n color: inherit !important;\n}\n.component-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.component-description a,\n.component-description a:focus-within,\n.component-description a:hover {\n color: var(--theme-color);\n}\n.component-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},2270:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-detail {\n min-width: 264px;\n width: 264px;\n flex: 1;\n background-color: inherit;\n border-radius: 7px;\n overflow: auto;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n.component-detail .extra-option {\n display: flow-root;\n}\n.component-detail-separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n margin-bottom: 12px;\n flex-shrink: 0;\n align-self: stretch;\n}\n.component-detail-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: inherit;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n.component-detail-header .display-name {\n font-weight: 600;\n font-size: 16px;\n}\n.component-detail-header .close {\n cursor: pointer;\n}\n.component-detail-header .close:hover {\n color: var(--theme-color);\n}\n.component-detail-description:not(:last-child) {\n padding: 12px 12px 0;\n}\n.component-detail-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n padding: 0 8px 8px;\n}\n.component-detail-tags .tag {\n display: flex;\n align-items: center;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 24px;\n border-radius: 12px;\n padding: 2px 6px;\n margin-right: 4px;\n margin-bottom: 4px;\n font-size: 12px;\n box-shadow: none;\n}\nbody.dark .component-detail-tags .tag {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .component-detail-tags .tag {\n background-color: #282828;\n color: #eee;\n}\n.component-detail-tags .tag .tag-color {\n border-radius: 50%;\n width: 12px;\n height: 12px;\n margin-right: 4px;\n}\n.component-detail-internal-data {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n justify-content: center;\n flex-shrink: 0;\n position: sticky;\n bottom: 0;\n min-height: 24px;\n box-sizing: content-box;\n background-color: inherit;\n padding: 8px 12px;\n}\n.component-detail-internal-data-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n line-height: 24px;\n}\n.component-detail-internal-data .internal-name {\n opacity: 0.5;\n}\n.component-detail-internal-data .tippy-content {\n padding: 4px;\n}\n.component-detail-internal-data .extra-actions-wrapper {\n position: relative;\n transform: translateX(2px);\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions {\n padding: 4px;\n cursor: pointer;\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions-list {\n width: max-content;\n}\n.component-detail-operations {\n display: flex;\n align-items: center;\n}\n.component-detail-operations > * {\n flex: 1 0 0;\n}\n.component-detail-operations > *:not(:last-child) {\n margin-right: 8px;\n}\n.component-detail-options {\n padding: 8px 12px;\n}\n.component-detail-options .component-detail-options-title {\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 8px;\n}\n.component-detail-options .generated-option:not(:last-child) {\n margin-bottom: 4px;\n}\n.component-detail-grow {\n flex: 1;\n}",""]),e.exports=o},1130:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-option[data-v-730efac0] {\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n.component-option .unknown-option-type[data-v-730efac0],\n.component-option .be-slider[data-v-730efac0],\n.component-option .be-range-input[data-v-730efac0],\n.component-option .be-text-box[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=boolean] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=dropdown] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=color] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=switch][data-v-730efac0] {\n justify-content: center;\n}\n.component-option[data-type=switch] .option-name[data-v-730efac0] {\n display: none;\n}\n.component-option .option-name[data-v-730efac0] {\n margin-right: 8px;\n}\n.component-option .be-slider[data-v-730efac0] {\n margin: 0 8px;\n}",""]),e.exports=o},2071:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-settings {\n display: flex;\n flex-direction: column;\n justify-content: center;\n box-sizing: border-box;\n overflow: hidden;\n padding: 7px 12px 7px 7px;\n width: 100%;\n min-height: 36px;\n position: relative;\n cursor: pointer;\n transition: 0.2s ease-out;\n -webkit-user-select: none;\n user-select: none;\n}\n.component-settings::after {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n top: 0;\n left: 10px;\n height: 100%;\n width: calc(100% - 20px);\n pointer-events: none;\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 10px, rgba(136, 136, 136, 0.1333333333) 10px, rgba(136, 136, 136, 0.1333333333) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 38px, rgba(136, 136, 136, 0.1333333333) 38px, rgba(136, 136, 136, 0.1333333333) 50px, rgba(0, 0, 0, 0) 50px);\n}\n.component-settings.virtual::after {\n opacity: 1;\n}\n.component-settings.virtual .component-settings-row {\n display: none;\n}\n.component-settings .component-settings-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.component-settings .component-settings-row:not(:last-child) {\n margin-bottom: 8px;\n}\n.component-settings .display-name {\n font-size: 14px;\n height: 20px;\n flex: 1 0 auto;\n margin-left: 6px;\n width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n}\n.component-settings .details-arrow {\n opacity: 0.75;\n width: 32px;\n justify-content: flex-end;\n}\n.component-settings .be-switch-box {\n margin: 0;\n}\n.component-settings:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.component-settings:hover .options-count {\n opacity: 1;\n}\n.component-settings.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}',""]),e.exports=o},1360:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-content .sidebar > * {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page {\n font-size: 13px;\n top: 12px;\n transition: 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n transform: translateX(calc(-12.5% * var(--direction)));\n min-width: 372px;\n padding: 12px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n background-color: #282828;\n color: #eee;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page.open {\n transform: translateX(0);\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row:not(:last-child) {\n margin-bottom: 12px;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n width: 100%;\n}\n.settings-panel-content .sidebar > * .component-tags-item {\n background-color: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n white-space: nowrap;\n padding: 8px;\n padding-right: 10px;\n font-size: 13px;\n}\n.settings-panel-content .sidebar > * .component-tags-item .tag-name {\n margin-right: 4px;\n margin-left: 8px;\n}\n.settings-panel-content .sidebar > * .component-tags-item:hover, .settings-panel-content .sidebar > * .component-tags-item.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.settings-panel-content .sidebar > * .icon-list,\n.settings-panel-content .sidebar > * .component-tags {\n flex-grow: 1;\n max-height: calc(var(--panel-height) - var(--header-height));\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n background-color: transparent;\n width: 40px;\n display: flex;\n flex-direction: column;\n}\n.settings-panel-content .sidebar > * .icon-list::-webkit-scrollbar,\n.settings-panel-content .sidebar > * .component-tags::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-content .sidebar > * .icon-list .grow,\n.settings-panel-content .sidebar > * .component-tags .grow {\n flex-grow: 1;\n}\n.settings-panel-content .sidebar > * .icon-list .be-icon,\n.settings-panel-content .sidebar > * .component-tags .be-icon {\n margin-left: 2px;\n}\n.settings-panel-content .sidebar > * .component-tags {\n height: 100%;\n width: auto;\n position: absolute;\n top: 0;\n opacity: 0;\n transition: 0.2s ease-out;\n pointer-events: none;\n background-color: #fff;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.dark .settings-panel-content .sidebar > * .component-tags {\n background-color: #222;\n}\n.settings-panel-content .sidebar > * .icon-list:hover ~ .component-tags,\n.settings-panel-content .sidebar > * .component-tags:hover {\n opacity: 1;\n pointer-events: initial;\n}",""]),e.exports=o},2733:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-settings {\n line-height: normal;\n font-size: 12px;\n --panel-height: calc(100vh - 120px);\n}\nbody.player-mode-blackmask .be-settings {\n visibility: hidden;\n}\n.be-settings > .sidebar {\n position: fixed;\n top: 50%;\n z-index: 1002;\n transform: translateX(calc(-50% * var(--direction))) translateY(-50%);\n}\nbody.player-mode-full .be-settings > .sidebar, body.player-fullscreen-fix .be-settings > .sidebar, body.player-mode-web .be-settings > .sidebar, body.player-full-win .be-settings > .sidebar {\n z-index: 1;\n}\n.be-settings > .sidebar > * {\n transition: transform 0.3s ease-out, opacity 0.3s ease-out;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 26px;\n height: 26px;\n padding: 8px;\n box-sizing: content-box;\n background-color: rgba(255, 255, 255, 0.6666666667);\n border-radius: 50%;\n position: relative;\n}\nbody.dark .be-settings > .sidebar > * {\n background-color: rgba(51, 51, 51, 0.6666666667);\n}\n.be-settings > .sidebar > *:not(:last-child) {\n margin-bottom: 26px;\n}\n.be-settings > .sidebar > *::after {\n content: "";\n width: 140%;\n height: 140%;\n position: absolute;\n top: -20%;\n left: -20%;\n background: transparent;\n}\n.be-settings > .sidebar > * .be-icon {\n font-size: 26px;\n color: #888;\n fill: #888;\n transition: fill 0.3s ease-out;\n}\n.be-settings > .sidebar > *:hover {\n transform: translateX(calc(60% * var(--direction))) scale(1.1);\n background-color: #fff;\n}\nbody.dark .be-settings > .sidebar > *:hover {\n background-color: #333;\n}\n.be-settings > .sidebar > *:hover .be-icon {\n color: #222;\n fill: #222;\n}\nbody.dark .be-settings > .sidebar > *:hover .be-icon {\n color: #eee;\n fill: #eee;\n}\n.be-settings > .sidebar > *.open {\n transform: translateX(calc(100% * var(--direction))) scale(1.5);\n opacity: 0;\n}\n.be-settings .settings-panel-popup {\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n top: 50%;\n z-index: 100001;\n}\n.be-settings .settings-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .settings-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.be-settings .widgets-panel-popup {\n top: 50%;\n z-index: 100001;\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.be-settings .widgets-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .widgets-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.bilibili-player-dm-tip-wrap {\n pointer-events: none !important;\n}\nbody:not(.settings-panel-dock-right) .contact-help {\n display: none !important;\n}\nbody:not(.settings-panel-dock-right) .be-settings {\n --direction: 1;\n}\nbody:not(.settings-panel-dock-right) .be-settings > .sidebar {\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .widgets-panel-popup,\nbody:not(.settings-panel-dock-right) .settings-panel-popup {\n left: 12px;\n transform-origin: left;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .sidebar {\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .main {\n border-bottom-right-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags {\n border-bottom-left-radius: 8px;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-left-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-sub-page {\n left: 53px;\n}\nbody.settings-panel-dock-right {\n --direction: -1;\n}\nbody.settings-panel-dock-right .be-settings > .sidebar {\n right: 0;\n}\nbody.settings-panel-dock-right .widgets-panel-popup,\nbody.settings-panel-dock-right .settings-panel-popup {\n right: 12px;\n transform-origin: right;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .sidebar {\n order: 1;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .main {\n border-bottom-left-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags {\n border-bottom-right-radius: 8px;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n right: 0;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-right-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings {\n padding: 7px 7px 7px 12px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row {\n flex-direction: row-reverse;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .details-arrow {\n transform: rotate(180deg);\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .display-name {\n margin-left: 12px;\n width: 180px;\n}\nbody.settings-panel-dock-right .settings-panel-sub-page {\n right: 53px;\n}',""]),e.exports=o},6716:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-popup {\n z-index: 1000;\n}\n.settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n --header-height: 50px;\n --settings-panel-background: #fff;\n background-color: var(--settings-panel-background);\n position: relative;\n overscroll-behavior: contain;\n border-radius: 8px;\n color: black;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: content-box;\n width: auto;\n min-width: 320px;\n height: var(--panel-height);\n transition: opacity 0.2s 0.2s ease-out;\n}\nbody.dark .settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel {\n --settings-panel-background: #222;\n color: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header {\n box-sizing: border-box;\n height: var(--header-height);\n padding: 12px;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n display: flex;\n align-items: center;\n gap: 8px;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .settings-panel-popup .settings-panel .settings-panel-header {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .title {\n font-size: 18px;\n font-weight: 600;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon {\n font-size: 28px;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .peek {\n cursor: pointer;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon {\n cursor: pointer;\n transition: 0.2s ease-out;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon:hover,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon:hover {\n color: var(--theme-color);\n}\n.settings-panel-popup .settings-panel .settings-panel-content {\n flex: 1;\n display: flex;\n max-height: calc(var(--panel-height) - var(--header-height));\n}\n.settings-panel-popup .settings-panel .settings-panel-content .sidebar {\n display: flex;\n flex-direction: column;\n z-index: 2;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main {\n flex: 1;\n padding: 0;\n position: relative;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .be-empty {\n min-height: 36px;\n padding: 7px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list {\n display: grid;\n grid-template-columns: auto;\n gap: 0;\n width: auto;\n margin: 0;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-move, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-active, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n transition: all 0.5s ease;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-from, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-to {\n opacity: 0;\n transform: translateY(-30px);\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n position: absolute;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar {\n display: flex;\n align-items: center;\n background-color: var(--settings-panel-background);\n padding-right: 8px;\n height: 36px;\n box-sizing: border-box;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n position: sticky;\n top: 0;\n z-index: 1;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search {\n align-self: stretch;\n font-size: 13px;\n box-shadow: none;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search input {\n padding: 4px 10px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main > * {\n flex: 1;\n}\n.settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n top: 50%;\n left: calc(100% - 12px);\n height: calc(100% - 22px);\n z-index: -1;\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n padding-left: 12px;\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel .component-detail-panel {\n left: unset;\n right: calc(100% - 12px);\n padding: 0 12px 0 0;\n}\n.settings-panel-popup .settings-panel .component-detail-panel.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.settings-panel-popup .settings-panel.collapsed {\n height: auto;\n transform: translateY(calc(50% - 45vh));\n opacity: 0.3;\n}\n.settings-panel-popup .settings-panel.collapsed .header, body.dark .settings-panel-popup .settings-panel.collapsed .header {\n border-color: transparent;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar,\n.settings-panel-popup .settings-panel.collapsed .main {\n opacity: 0;\n padding: 0;\n pointer-events: none;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar {\n display: none;\n}\n.settings-panel-popup .settings-panel.collapsed:hover {\n opacity: 1;\n}\n.settings-panel-popup .settings-panel.peek {\n opacity: 0.1;\n}",""]),e.exports=o},5392:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tag-ring {\n display: flex;\n transform: scaleX(-1) rotate(-90deg);\n}\n.tag-ring svg {\n height: 18px;\n width: 18px;\n}",""]),e.exports=o},7056:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.widgets-panel {\n max-height: var(--panel-height);\n min-height: 80px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n flex-wrap: wrap;\n padding: 16px;\n padding-right: 20px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .widgets-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .widgets-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .widgets-panel {\n background-color: #222;\n}\nbody.dark .widgets-panel {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.widgets-panel-header {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-weight: 600;\n font-size: 18px;\n margin-bottom: 18px;\n}\n.widgets-panel-header .be-icon {\n margin-right: 6px;\n}\n.widgets-panel .widgets-loading,\n.widgets-panel .widgets-empty {\n padding: 12px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content,\n.widgets-panel .widgets-empty .widgets-empty-content {\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ul li {\n list-style: disc;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n list-style: decimal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ol {\n padding-left: 16px;\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p,\n.widgets-panel .widgets-empty .widgets-empty-content p {\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details,\n.widgets-panel .widgets-empty .widgets-empty-content details {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details summary,\n.widgets-panel .widgets-empty .widgets-empty-content details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content > p,\n.widgets-panel .widgets-empty .widgets-empty-content > p {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p + p,\n.widgets-panel .widgets-empty .widgets-empty-content p + p {\n margin-top: 8px;\n}\n.widgets-panel .widgets-loading .widgets-empty-content pre,\n.widgets-panel .widgets-empty .widgets-empty-content pre {\n white-space: pre-wrap;\n}\n.widgets-panel .widgets-loading .widgets-empty-content code,\n.widgets-panel .widgets-empty .widgets-empty-content code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content kbd,\n.widgets-panel .widgets-empty .widgets-empty-content kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content kbd,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content kbd {\n border-color: #666;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content blockquote *,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content blockquote * {\n color: inherit !important;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote::before,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content a,\n.widgets-panel .widgets-loading .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-loading .widgets-empty-content a:hover,\n.widgets-panel .widgets-empty .widgets-empty-content a,\n.widgets-panel .widgets-empty .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-empty .widgets-empty-content a:hover {\n color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content > :last-child,\n.widgets-panel .widgets-empty .widgets-empty-content > :last-child {\n margin-bottom: 0;\n}\n.widgets-panel .widget-items {\n position: relative;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n}\n.widgets-panel .widget-items .widget-item {\n font-size: 14px;\n transition: 0.2s ease-out;\n display: flex;\n}\n.widgets-panel .widget-items .widget-item-enter, .widgets-panel .widget-items .widget-item-leave-to {\n opacity: 0;\n transform: scale(0.9);\n}\n.widgets-panel .widget-items .widget-item-leave-active {\n transition: 0.24s cubic-bezier(0.22, 0.61, 0.36, 1);\n position: absolute;\n white-space: nowrap;\n}\n.widgets-panel .widget-items .multiple-widgets {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n position: relative;\n}',""]),e.exports=o},5851:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-action {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n border-radius: 4px;\n padding: 4px 8px 4px 6px;\n font-size: 13px;\n}\n.component-action:hover {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.component-action.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},6565:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-about-page {\n flex: 1;\n}\n.be-about-page-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 12px;\n}\n.be-about-page-header .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.be-about-page-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 24px;\n}\n.be-about-page-content .script-meta-info {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 8px;\n text-align: center;\n padding: 0 24px;\n}\n.be-about-page-content .script-meta-info .meta-info-name {\n font-weight: 500;\n font-size: 22px;\n}\n.be-about-page-content .script-meta-info .meta-info-version {\n font-size: 14px;\n color: var(--theme-color);\n}\n.be-about-page-content .script-meta-info .meta-info-description {\n opacity: 0.5;\n}\n.be-about-page-content .script-links .script-link {\n display: flex;\n align-items: stretch;\n}\n.be-about-page-content .script-links .script-link .be-button {\n flex: 1;\n}\n.be-about-page-content .script-links,\n.be-about-page-content .about-page-actions {\n display: flex;\n align-items: stretch;\n gap: 8px;\n flex-wrap: wrap;\n}\n.be-about-page-content .script-links .script-link,\n.be-about-page-content .script-links .about-page-action,\n.be-about-page-content .about-page-actions .script-link,\n.be-about-page-content .about-page-actions .about-page-action {\n flex: 1 0 auto;\n}\n.be-about-page-content .script-links .script-link .be-icon,\n.be-about-page-content .script-links .about-page-action .be-icon,\n.be-about-page-content .about-page-actions .script-link .be-icon,\n.be-about-page-content .about-page-actions .about-page-action .be-icon {\n margin-right: 6px;\n}",""]),e.exports=o},2060:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel .manage-item {\n flex: 0 0 auto;\n min-height: 30px;\n width: 100%;\n box-sizing: border-box;\n}",""]),e.exports=o},9356:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel {\n height: calc(var(--panel-height) - 52px - 48px);\n display: flex;\n flex-direction: column;\n}\n.manage-panel > :not(:last-child) {\n margin-bottom: 12px;\n}\n.manage-panel .be-button .be-icon {\n margin-right: 6px;\n}\n.manage-panel .exclude-built-in .be-switch-box {\n margin-left: 6px;\n}\n.manage-panel .title-text {\n font-size: 14px;\n font-weight: 600;\n}\n.manage-panel .item-url-result {\n color: var(--theme-color);\n}\n.manage-panel .item-url {\n margin-right: 12px;\n}\n.manage-panel .manage-item-list {\n display: flex;\n align-items: center;\n flex-direction: column;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n flex-shrink: 1;\n}\n.manage-panel .manage-item-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.manage-panel .item-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.manage-panel .exclude-built-in {\n display: flex;\n align-items: center;\n}\n.manage-panel .be-loading {\n width: 100%;\n text-align: center;\n}\n.manage-panel .description-text {\n opacity: 0.75;\n}\n.manage-panel .add-item-row {\n position: relative;\n}\n.manage-panel .batch-add-popup {\n top: calc(100% + 8px);\n left: 50%;\n transition: 0.2s ease-out;\n transform: translateX(-50%) translateY(-8px);\n padding: 8px;\n width: 100%;\n min-height: calc(var(--panel-height) / 2);\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n}\nbody.dark .manage-panel .batch-add-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #222;\n}\n.manage-panel .batch-add-popup.open {\n transform: translateX(-50%) translateY(0px);\n}\n.manage-panel .batch-add-popup .be-text-area {\n flex: 1 0 auto;\n}\n.manage-panel .batch-add-popup .batch-add-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-button {\n flex: 1 0 0;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-icon {\n margin-right: 6px;\n}\n.manage-panel-title {\n gap: 6px;\n}\n.manage-panel-title .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.manage-panel .search-item-row {\n gap: 6px;\n}",""]),e.exports=o},4436:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.manage-panel .user-item {\n display: grid;\n column-gap: 6px;\n grid-template: "displayName line remove" auto "name line remove" auto/auto 1fr auto;\n align-items: center;\n padding: 6px 0;\n}\n.manage-panel .user-item .user-item-display-name {\n grid-area: displayName;\n}\n.manage-panel .user-item .user-item-name {\n grid-area: name;\n opacity: 0.5;\n font-size: 11px;\n}\n.manage-panel .user-item .user-item-line {\n grid-area: line;\n justify-self: stretch;\n transition: 0.2s ease-out;\n opacity: 0;\n height: 0;\n width: 100%;\n border-bottom: 1px dashed;\n box-sizing: border-box;\n}\n.manage-panel .user-item .user-item-toggle {\n grid-area: toggle;\n justify-self: end;\n}\n.manage-panel .user-item .user-item-remove-confirm {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: white;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button {\n color: inherit;\n font-size: 12px;\n padding: 4px;\n padding-right: 6px;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button .be-icon {\n margin-right: 4px;\n}\n.manage-panel .user-item .tippy-box {\n border-radius: 8px;\n}\n.manage-panel .user-item .tippy-box .tippy-content {\n padding-right: 5px;\n}\n.manage-panel .user-item .user-item-remove {\n grid-area: remove;\n justify-self: end;\n display: flex;\n align-items: center;\n opacity: 0.1;\n transition: 0.2s ease-out;\n cursor: pointer;\n padding: 4px;\n}\n.manage-panel .user-item .user-item-remove:hover {\n opacity: 1;\n color: #e54e4e;\n}\n.manage-panel .user-item:hover .user-item-remove:not(:hover) {\n opacity: 0.75;\n}\n.manage-panel .user-item:hover .user-item-line {\n opacity: 0.5;\n}',""]),e.exports=o},7621:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".online-registry {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n width: 400px;\n height: 85vh;\n z-index: 100000;\n transition: 0.2s ease-out;\n font-size: 14px;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .online-registry {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .online-registry {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .online-registry {\n background-color: #222;\n}\n.online-registry.open {\n transform: translate(-50%, -50%) scale(1);\n}\n.online-registry-header {\n padding: 12px 12px 6px 12px;\n display: flex;\n align-items: center;\n gap: 12px;\n row-gap: 6px;\n flex-wrap: wrap;\n}\n.online-registry-header + .online-registry-header {\n padding-top: 6px;\n}\n.online-registry-header-title {\n flex: 1;\n font-size: 18px;\n font-weight: 600;\n}\n.online-registry-header-search {\n flex: 1;\n justify-content: center;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.online-registry-header-search .be-textbox {\n max-width: 320px;\n flex: 1;\n font-size: 12px;\n}\n.online-registry-header-filter {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-branch {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-refresh-icon, .online-registry-header-close-icon {\n padding: 2px;\n cursor: pointer;\n transition: 0.3s ease-out;\n}\n.online-registry-header-refresh-icon:hover, .online-registry-header-close-icon:hover {\n color: var(--theme-color);\n}\n.online-registry-header-refresh-icon {\n padding: 3px;\n}\n.online-registry-header-refresh-icon:hover {\n transform: rotate(360deg);\n}\n.online-registry-separator {\n height: 1px;\n width: calc(100% - 24px);\n margin: 0 12px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-content {\n flex: 1;\n padding: 4px 0;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.online-registry-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.online-registry-content .be-loading,\n.online-registry-content .be-empty {\n margin: 12px 0;\n}",""]),e.exports=o},4947:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.online-registry-item-wrapper {\n min-height: 39px;\n position: relative;\n}\n.online-registry-item-wrapper.hidden {\n display: none;\n}\n.online-registry-item-wrapper::before {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n pointer-events: none;\n top: 50%;\n left: 12px;\n transform: translateY(-50%);\n width: calc(100% - 24px);\n height: 20px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n display: flex;\n}\n.online-registry-item-wrapper.virtual::before {\n opacity: 1;\n}\n.online-registry-item {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n padding: 8px 12px;\n}\n.online-registry-item:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.online-registry-item:not(:last-child) {\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-item .item-badge {\n padding: 2px 4px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 4px;\n font-size: 12px;\n}\n.online-registry-item .item-display-name {\n font-weight: 600;\n}\n.online-registry-item .grow {\n flex: 1 0 0;\n}\n.online-registry-item .item-action {\n font-size: 12px;\n}\n.online-registry-item .item-action .be-icon {\n margin-right: 6px;\n}\n.online-registry-item .item-action .reinstall-button:not(:hover):not(:focus-within) {\n opacity: 0.5;\n}\n.online-registry-item:hover .item-description {\n opacity: 1;\n}\n.online-registry-description {\n font-size: 13px;\n line-height: normal;\n word-break: break-all;\n}\n.online-registry-description ul,\n.online-registry-description ul li {\n list-style: disc;\n}\n.online-registry-description ol,\n.online-registry-description ol li {\n list-style: decimal;\n}\n.online-registry-description ul,\n.online-registry-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.online-registry-description ul li,\n.online-registry-description ol li {\n line-height: 1.75;\n}\n.online-registry-description p {\n margin: 0;\n}\n.online-registry-description details {\n line-height: 1.75;\n}\n.online-registry-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.online-registry-description > p {\n line-height: 1.75;\n}\n.online-registry-description p + p {\n margin-top: 8px;\n}\n.online-registry-description pre {\n white-space: pre-wrap;\n}\n.online-registry-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.online-registry-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .online-registry-description kbd {\n border-color: #666;\n}\n.online-registry-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .online-registry-description blockquote * {\n color: inherit !important;\n}\n.online-registry-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.online-registry-description a,\n.online-registry-description a:focus-within,\n.online-registry-description a:hover {\n color: var(--theme-color);\n}\n.online-registry-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},3520:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-video-control-bar-extend {\n display: flex;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend {\n margin-top: 1px;\n}\n.be-video-control-bar-extend, .squirtle-controller.squirtle-wide-screen .be-video-control-bar-extend.squirtle-block-wrap {\n width: auto !important;\n margin-top: 0px;\n}\n.be-video-control-bar-extend .bp-svgicon {\n width: auto;\n padding-top: 1px;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n transition: transform 0.2s ease-out;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon svg,\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 22px;\n width: 22px;\n height: 22px;\n color: #fff;\n fill: #fff;\n}\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon svg,\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 28px;\n width: 28px;\n height: 28px;\n}\n.be-video-control-bar-extend .be-video-control-tooltip {\n pointer-events: none;\n font-size: 12px;\n padding: 6px 8px;\n line-height: normal;\n white-space: nowrap;\n color: #fff;\n background-color: rgba(0, 0, 0, 0.7019607843);\n border-radius: 4px;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%) translateY(calc(-100% - 11px));\n opacity: 0;\n}\n.be-video-control-bar-extend-item {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n position: relative;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend-item {\n align-items: center;\n}\n.be-video-control-bar-extend-item:hover .be-video-control-tooltip {\n transition: all 0.3s ease-in-out 0.3s;\n opacity: 1;\n transform: translateX(-50%) translateY(calc(-100% - 19px));\n}\n.be-video-control-bar-extend-item:active .bp-svgicon .be-icon {\n transform: scale(0.95);\n}\n.be-video-control-bar-extend-item button {\n background-color: transparent;\n margin: 0;\n padding: 0;\n border: none;\n cursor: pointer;\n}\n.be-video-control-bar-extend-item button:hover, .be-video-control-bar-extend-item button:active {\n outline: none !important;\n}\nbody.player-mode-full .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-fullscreen-fix .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-mode-web .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-full-win .bpx-player-control-wrap .be-video-control-bar-extend-item button {\n padding-top: 2px;\n}",""]),e.exports=o},1358:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dialog {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n min-width: 200px;\n min-height: 150px;\n max-width: calc(100vw - 100px);\n max-height: calc(100vh - 100px);\n position: fixed;\n transition: 0.2s ease-out;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scale(0.95);\n opacity: 0;\n pointer-events: none;\n}\nbody.dark .be-dialog {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-dialog {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-dialog {\n background-color: #222;\n}\n.be-dialog.open {\n transform: translateX(-50%) translateY(-50%) scale(1);\n opacity: 1;\n pointer-events: initial;\n}\n.be-dialog-header {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: space-between;\n padding: 12px 12px 12px 16px;\n}\n.be-dialog-header-title {\n font-weight: 600;\n font-size: 18px;\n}\n.be-dialog-header-close .be-button {\n padding: 6px;\n}\n.be-dialog-content {\n flex: 1 0 auto;\n overflow: auto;\n}",""]),e.exports=o},6128:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card {\n background: #fff;\n min-width: var(--card-min-width);\n max-width: 60vw;\n min-height: 87px;\n margin: 8px 0;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.2666666667);\n transform-origin: left;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n position: relative;\n padding-left: 8px;\n border-radius: 8px;\n}\nbody.dark .toast-card {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.toast-card.toast-card-container-enter, .toast-card.toast-card-container-leave-to {\n opacity: 0;\n transform: translateX(var(--card-min-width-negative));\n}\n.toast-card.toast-card-container-leave-active {\n position: absolute;\n transition: 0.3s cubic-bezier(0.6, -0.28, 0.74, 0.05);\n}\n.toast-card-header {\n display: flex;\n align-items: center;\n}\n.toast-card-title {\n font-size: 18px;\n color: #444;\n opacity: 0.5;\n margin: 12px;\n font-weight: 600;\n flex: 1 1 auto;\n}\nbody.dark .toast-card-title {\n color: #999;\n}\n.toast-card-close {\n height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n position: relative;\n justify-content: center;\n flex: 0 0 auto;\n padding: 14px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n box-sizing: content-box;\n opacity: 0.75;\n}\n.toast-card-close:hover {\n opacity: 0.85;\n}\n.toast-card-close:hover .be-icon {\n transform: scale(1.2);\n}\n.toast-card-close:active {\n opacity: 0.9;\n}\n.toast-card-close:active .be-icon {\n transform: scale(1.3);\n}\n.toast-card-close .be-icon {\n transition: 0.2s ease-out;\n}\n.toast-card-close .be-progress-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n --ring-color: currentColor;\n opacity: 0;\n}\n.toast-card-close.show-progress .be-progress-ring {\n opacity: 1;\n}\n.toast-card-message {\n color: #000;\n font-size: 14px;\n margin: 0 16px 12px 12px;\n white-space: pre-wrap;\n display: flex;\n align-items: center;\n line-height: 1.5;\n flex-wrap: wrap;\n word-break: break-all;\n max-height: 200px;\n overflow: auto;\n}\n.toast-card-border {\n position: absolute;\n border-radius: 2px;\n height: calc(100% - 10px);\n width: 4px;\n top: 5px;\n left: 0;\n}\n.toast-card.toast-default .toast-card-border {\n background-color: #444;\n}\n.toast-card.toast-error .toast-card-border {\n background-color: #f44336;\n}\n.toast-card.toast-info .toast-card-border {\n background-color: #2196f3;\n}\n.toast-card.toast-success .toast-card-border {\n background-color: #8bc34a;\n}\n.toast-card span,\n.toast-card .link {\n display: inline-block;\n padding: 2px 4px;\n margin: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n text-decoration: none;\n color: #000;\n transition: all 0.2s ease-out;\n border-radius: 6px;\n}\n.toast-card .link {\n cursor: pointer;\n}\n.toast-card .link:hover {\n background-color: rgba(136, 136, 136, 0.2);\n}\n.toast-card .link:active {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.toast-card .download-link,\n.toast-card .download-link:hover {\n color: inherit !important;\n text-decoration: underline;\n word-break: break-all;\n}",""]),e.exports=o},3747:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card-container {\n --card-min-width: 240px;\n --card-min-width-negative: -240px;\n position: fixed;\n left: 0;\n bottom: 0;\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n padding-left: 16px;\n z-index: 100001;\n pointer-events: none;\n overflow: hidden;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n}\n.toast-card-container * {\n pointer-events: initial;\n transition: 0.2s ease-out;\n}",""]),e.exports=o},2141:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-check-box .text-container[data-v-07bbf374] {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n}\n.be-check-box .icon-container[data-v-07bbf374] {\n flex-shrink: 0;\n position: relative;\n margin: 2px 0 2px 8px;\n}\n.be-check-box .icon-container > *[data-v-07bbf374] {\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n}\n.be-check-box .icon-container .not-checked[data-v-07bbf374] {\n opacity: 0.75;\n}\n.be-check-box .icon-container .checked[data-v-07bbf374] {\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n transform: scale(0);\n}\n.be-check-box.checked .icon-container[data-v-07bbf374] {\n color: var(--theme-color);\n}\n.be-check-box.checked .icon-container .not-checked[data-v-07bbf374] {\n transform: scale(0);\n opacity: 0;\n}\n.be-check-box.checked .icon-container .checked[data-v-07bbf374] {\n transform: scale(1);\n opacity: 1;\n}\n.be-check-box.left-icon .icon-container[data-v-07bbf374] {\n order: -1;\n margin: 2px 6px 2px 0;\n}",""]),e.exports=o},7521:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-color-picker[data-v-5b939efc] {\n font-size: 14px;\n display: flex;\n position: relative;\n color: #000;\n}\n.be-color-picker[data-v-5b939efc], .be-color-picker *[data-v-5b939efc] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-color-picker[data-v-5b939efc] {\n color: #eee;\n}\n.be-color-picker .selected-color[data-v-5b939efc] {\n cursor: pointer;\n border-radius: 50%;\n outline: none !important;\n transition: box-shadow 0.2s ease-out;\n}\n.be-color-picker .selected-color[data-v-5b939efc]:focus-within {\n box-shadow: 0 0 0 3px var(--theme-color-20);\n}\n.be-color-picker .picker[data-v-5b939efc] {\n left: calc(50% + var(--offset));\n top: 100%;\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n padding: 14px;\n width: 240px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: content-box;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #222;\n}\n.be-color-picker .picker.open[data-v-5b939efc] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-color-picker .picker .item-group[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .item-title[data-v-5b939efc] {\n font-weight: 600;\n margin-bottom: 8px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc], .be-color-picker .picker .item-group.operations[data-v-5b939efc] {\n flex-direction: row;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc],\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n padding: 6px 8px;\n flex: 1 0 0;\n text-align: center;\n font-size: 14px;\n}\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n margin-right: 4px;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc] {\n margin-left: 4px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.be-color-picker .picker .item-group.info .color-preview[data-v-5b939efc] {\n transition: none;\n width: 24px;\n height: 24px;\n margin-right: 8px;\n border-radius: 50%;\n}\n.be-color-picker .picker .item-group.info .grow[data-v-5b939efc] {\n flex: 1 0 0;\n}\n.be-color-picker .picker .item-group.info .toggle-mode[data-v-5b939efc] {\n font-size: 14px;\n padding: 4px 8px;\n}\n.be-color-picker .picker .item-group.info .hex[data-v-5b939efc] {\n flex: 1 1 64px;\n}\n.be-color-picker .picker .item-group .colors[data-v-5b939efc] {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc] {\n outline: none !important;\n margin-right: 6px;\n margin-bottom: 6px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n border-radius: 50%;\n transition: transform 0.2s ease-out;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:hover, .be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:focus-within {\n transform: scale(1.1);\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:active {\n transform: scale(1.05);\n}\n.be-color-picker .picker .item-group .bars[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .bars .bar[data-v-5b939efc] {\n display: flex;\n align-items: center;\n font-size: 14px;\n margin-bottom: 4px;\n}\n.be-color-picker .picker .item-group .bars .bar .color-bar[data-v-5b939efc] {\n height: 4px;\n border-radius: 2px;\n box-shadow: 0 0 0 2px rgba(136, 136, 136, 0.1333333333);\n}\n.be-color-picker .picker .item-group .bars .bar .color-thumb[data-v-5b939efc] {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid var(--theme-color-20);\n transition: border 0.2s ease-out;\n background-color: #fff;\n}\n.be-color-picker .picker .item-group .bars .bar .be-slider:focus-within .color-thumb[data-v-5b939efc] {\n border-color: var(--theme-color);\n}\n.be-color-picker .picker .item-group .bars .bar-name[data-v-5b939efc] {\n flex-shrink: 0;\n width: 24px;\n}\n.be-color-picker .picker .item-group .bars .bar-value[data-v-5b939efc] {\n flex: 0 0 48px;\n margin-left: 6px;\n text-align: right;\n}\n.be-color-picker .picker .item-group .bars .be-slider[data-v-5b939efc] {\n flex: 1 0 0;\n margin: 4px 6px;\n}\n.be-color-picker .picker .item-group[data-v-5b939efc]:not(:last-child) {\n margin-bottom: 16px;\n}\n.be-color-picker .picker.compact[data-v-5b939efc] {\n width: 200px;\n}\n.be-color-picker .picker.compact .item-group .colors .color[data-v-5b939efc] {\n width: 19px;\n height: 19px;\n}",""]),e.exports=o},9057:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".default-widget[data-v-20e1bedd] {\n position: relative;\n}\n.default-widget .widget-icon[data-v-20e1bedd] {\n margin-right: 8px;\n opacity: 0.75;\n}\n.default-widget .widget-name[data-v-20e1bedd] {\n display: flex;\n}",""]),e.exports=o},1662:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-image-picker[data-v-7b32c90b] {\n position: relative;\n font-size: 14px;\n}\n.be-image-picker .popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n top: 100%;\n left: 50%;\n padding: 8px;\n width: 302px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: black;\n fill: black;\n stroke: black;\n text-align: center;\n margin-bottom: 16px;\n}\nbody.dark .be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .images[data-v-7b32c90b] {\n max-height: 240px;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n outline: none !important;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n padding-left: 6px;\n padding-top: 6px;\n}\n.be-image-picker .popup .images[data-v-7b32c90b]::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b] {\n border-radius: 4px;\n transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;\n outline: none !important;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n margin-right: 6px;\n margin-bottom: 6px;\n}\n.be-image-picker .popup .images .image.image-list-enter[data-v-7b32c90b], .be-image-picker .popup .images .image.image-list-leave-to[data-v-7b32c90b] {\n opacity: 0;\n}\n.be-image-picker .popup .images .image.image-list-leave-active[data-v-7b32c90b] {\n position: absolute;\n}\n.be-image-picker .popup .images .image img[data-v-7b32c90b] {\n object-fit: cover;\n transition: 0.2s ease-out;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b]:hover, .be-image-picker .popup .images .image[data-v-7b32c90b]:focus-within {\n box-shadow: 0 0 0 2px var(--theme-color), 0 0 0 4px var(--theme-color-20);\n}\n.be-image-picker .popup .images .image:hover img[data-v-7b32c90b], .be-image-picker .popup .images .image:focus-within img[data-v-7b32c90b] {\n transform: scale(1.1);\n}\n.be-image-picker .popup .images .image.selected[data-v-7b32c90b] {\n box-shadow: 0 0 0 3px var(--theme-color);\n}\n.be-image-picker .popup .mask[data-v-7b32c90b] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] {\n display: flex;\n margin: 8px 4px 4px 4px;\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}\n.be-image-picker .popup .operations > .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations > .be-button.clear-image[data-v-7b32c90b] {\n flex-grow: 2;\n}\n.be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(-50%) scale(0.75);\n top: 50%;\n left: 50%;\n padding: 14px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n width: 80%;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup .operations .add-image-popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(-50%) scale(1);\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b]:not(:last-child) {\n margin-bottom: 12px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-textbox[data-v-7b32c90b] {\n margin-left: 8px;\n flex: 1 0 0;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .title[data-v-7b32c90b] {\n font-weight: 600;\n font-size: 16px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row.buttons[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}",""]),e.exports=o},1635:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.image-viewer-container[data-v-8829ba14] {\n background: rgba(0, 0, 0, 0.85);\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100002;\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n color: #eee;\n}\n.image-viewer-container[data-v-8829ba14], .image-viewer-container *[data-v-8829ba14] {\n transition: 0.2s ease-out;\n}\n.image-viewer-container.open[data-v-8829ba14] {\n opacity: 1;\n pointer-events: initial;\n}\n.image-viewer-container .image-viewer[data-v-8829ba14] {\n width: 90%;\n height: 90%;\n display: grid;\n grid-template: "image close" 48px "image ." auto "image copy-link" 48px "image ." 12px "image new-tab" 48px "image ." 18px "image download" 48px/auto 48px;\n column-gap: 12px;\n justify-items: center;\n justify-content: stretch;\n align-items: center;\n align-content: stretch;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .image-container[data-v-8829ba14] {\n grid-area: image;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.image-viewer-container .image-viewer .image-container .image[data-v-8829ba14] {\n flex: 1 0 0;\n height: 0;\n object-fit: contain;\n}\n.image-viewer-container .image-viewer .close[data-v-8829ba14] {\n grid-area: close;\n}\n.image-viewer-container .image-viewer .download[data-v-8829ba14] {\n grid-area: download;\n}\n.image-viewer-container .image-viewer .copy-link[data-v-8829ba14] {\n grid-area: copy-link;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .new-tab[data-v-8829ba14] {\n grid-area: new-tab;\n transform: scale(0.85);\n}\n.image-viewer-container .image-viewer .image-viewer-icon[data-v-8829ba14] {\n cursor: pointer;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n color: #eee;\n}\n.image-viewer-container .image-viewer .image-viewer-icon:hover .be-icon[data-v-8829ba14] {\n color: var(--theme-color);\n}\n.image-viewer-container.open .image-viewer[data-v-8829ba14] {\n transform: scale(1);\n}',""]),e.exports=o},8566:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-bar[data-v-56b62124] {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n height: 4px;\n background-color: rgba(136, 136, 136, 0.2666666667);\n border-radius: 2px;\n min-width: 24px;\n overflow: hidden;\n}\n.be-progress-bar .progress[data-v-56b62124] {\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.be-progress-bar .progress.transition[data-v-56b62124] {\n transition: width 0.3s ease-out;\n}",""]),e.exports=o},1726:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-ring[data-v-360d0319] {\n --ring-color: var(--theme-color);\n --ring-background: #8884;\n display: flex;\n}\n.be-progress-ring svg[data-v-360d0319] {\n transform: rotate(-90deg);\n}\n.be-progress-ring svg .progress[data-v-360d0319] {\n stroke: var(--ring-color);\n}\n.be-progress-ring svg .progress.transition[data-v-360d0319] {\n transition: stroke-dashoffset 0.3s ease-out;\n}\n.be-progress-ring svg .progress-background[data-v-360d0319] {\n stroke: var(--ring-background);\n}",""]),e.exports=o},7824:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-range-input[data-v-b459c060] {\n display: flex;\n align-items: center;\n}\n.be-range-input > .be-textbox[data-v-b459c060] {\n flex: 1;\n}\n.be-range-input .default-separator[data-v-b459c060] {\n margin: 0 8px;\n flex: 0 0 auto;\n}",""]),e.exports=o},975:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-scroll-trigger {\n cursor: pointer;\n}",""]),e.exports=o},1278:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-switch-box {\n outline: none !important;\n width: 32px;\n margin: 4px 0;\n}\n.be-switch-box, .be-switch-box *, .be-switch-box *::before, .be-switch-box *::after {\n transition: 0.2s all ease-out;\n}\n.be-switch-box input[type=checkbox] {\n display: none;\n}\n.be-switch-box label {\n display: block;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.be-switch-box .bar {\n position: relative;\n background-color: rgba(136, 136, 136, 0.2666666667);\n box-sizing: border-box;\n height: 12px;\n border-radius: 6px;\n}\n.be-switch-box .bar .thumb {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: #fff;\n border: 1px solid #ddd;\n}\nbody.dark .be-switch-box .bar .thumb {\n border-color: #555;\n background-color: #666;\n}\n.be-switch-box.checked .bar {\n background-color: var(--theme-color-50);\n}\n.be-switch-box.checked .bar .thumb {\n background-color: var(--theme-color);\n border-color: transparent;\n left: calc(100% - 18px);\n}\nbody.dark .be-switch-box.checked .bar .thumb {\n border-color: transparent;\n background-color: var(--theme-color);\n}\n.be-switch-box:focus-within.checked .thumb {\n box-shadow: 0 0 0 1px var(--theme-color-20);\n}\n.be-switch-box.disabled {\n opacity: 0.5;\n}\n.be-switch-box.disabled, .be-switch-box.disabled * {\n cursor: not-allowed;\n}",""]),e.exports=o},1710:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-tab-control {\n display: flex;\n flex-direction: column;\n}\n.be-tab-control .default-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 8px 8px 0;\n}\n.be-tab-control .default-header .default-tabs {\n display: flex;\n padding: 6px 8px;\n}\n.be-tab-control .default-header .default-tabs .default-tab {\n font-size: 14px;\n position: relative;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(:last-child) {\n margin-right: 16px;\n}\n.be-tab-control .default-header .default-tabs .default-tab::after {\n content: "";\n position: absolute;\n top: calc(100% + 4px);\n left: 50%;\n display: block;\n height: 3px;\n border-radius: 2px;\n width: 80%;\n background-color: var(--theme-color);\n transition: transform 0.2s ease-out;\n transform: translateX(-50%) scaleX(0);\n}\n.be-tab-control .default-header .default-tabs .default-tab-name {\n transition: transform 0.2s ease-out;\n opacity: 0.5;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected .default-tab-name {\n font-weight: 600;\n transform: scale(1.1);\n opacity: 1;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected::after {\n transform: translateX(-50%) scaleX(1);\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n content: attr(data-count);\n position: absolute;\n bottom: calc(100% + 2px);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n font-size: 11px;\n border-radius: 10px;\n background-color: #fff;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n height: 10px;\n min-width: 10px;\n box-sizing: content-box;\n line-height: 1;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n background-color: #333;\n}\n.be-tab-control .default-header .header-item {\n flex: 1;\n margin: 0 8px;\n}\n.be-tab-control .default-header .header-item:empty {\n display: none;\n}\n.be-tab-control .default-header .be-more-link .be-button {\n padding: 4px 6px 4px 10px;\n}\n.be-tab-control .default-header .be-more-link .be-button .be-icon {\n margin-left: 4px;\n}\n.be-tab-control .default-content {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 6px 0;\n position: relative;\n max-height: 100%;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.be-tab-control .default-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-tab-control .default-content .content-transition-enter, .be-tab-control .default-content .content-transition-leave-to {\n opacity: 0;\n transform: translateY(-12px);\n}\n.be-tab-control .default-content .content-transition-leave-active {\n position: absolute;\n}\n.be-tab-control .default-content .content-transition-enter-active, .be-tab-control .default-content .content-transition-leave-active {\n transition: 0.2s ease-out;\n}',""]),e.exports=o},6780:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-text-area {\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-text-area:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-text-area textarea {\n resize: none;\n width: 0;\n flex: 1 0 0;\n padding: 4px 6px;\n border-radius: 4px;\n background-color: transparent;\n overflow: auto;\n border: none;\n outline: none !important;\n color: black;\n font-size: inherit;\n}\nbody.dark .be-text-area textarea {\n color: #eee;\n}\n.be-text-area textarea:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-text-area textarea::-webkit-input-placeholder {\n color: #888;\n}",""]),e.exports=o},7146:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-textbox[data-v-d1f779a8] {\n position: relative;\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-textbox[data-v-d1f779a8]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-textbox input[type=text][data-v-d1f779a8] {\n line-height: normal;\n padding: 4px 6px;\n border-radius: 4px;\n flex: 1 0 0;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: black;\n width: 0;\n font-size: inherit;\n}\nbody.dark .be-textbox input[type=text][data-v-d1f779a8] {\n color: #eee;\n}\n.be-textbox input[type=text][data-v-d1f779a8]:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-textbox input[type=text][data-v-d1f779a8]::-webkit-input-placeholder {\n color: #888;\n}\n.be-textbox.linear[data-v-d1f779a8] {\n box-shadow: none;\n}\n.be-textbox.linear input[type=text][data-v-d1f779a8] {\n padding: 4px;\n}\n.be-textbox.linear .linear-bar[data-v-d1f779a8] {\n position: absolute;\n top: calc(100% - 1px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 1px;\n height: 1px;\n width: 100%;\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-textbox.linear[data-v-d1f779a8]:focus-within {\n box-shadow: none;\n}\n.be-textbox.linear:focus-within .linear-bar[data-v-d1f779a8] {\n background-color: var(--theme-color);\n}",""]),e.exports=o},3171:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-button[data-v-18aa9448] {\n outline: none !important;\n line-height: normal;\n transition: background-color 0.2s ease-out, box-shadow 0.2s ease-out;\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: black;\n border: none;\n border-radius: 4px;\n padding: 4px 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.be-button[data-v-18aa9448], .be-button *[data-v-18aa9448] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-button[data-v-18aa9448] {\n color: #eee;\n}\n.be-button.round[data-v-18aa9448] {\n border-radius: calc(1em + 8px);\n padding: 4px 10px;\n}\n.be-button.icon[data-v-18aa9448] {\n border-radius: 50%;\n padding: 4px;\n background-image: none !important;\n}\n.be-button .content-container[data-v-18aa9448] {\n -webkit-user-select: none;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.be-button.transparent[data-v-18aa9448] {\n background-color: transparent;\n}\n.be-button.primary[data-v-18aa9448] {\n box-shadow: 0 0 0 1px var(--theme-color-80);\n background-color: var(--theme-color-80);\n color: var(--foreground-color);\n}\n.be-button.light[data-v-18aa9448] {\n background-color: #fff;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n transition: box-shadow 0.2s ease-out;\n}\nbody.dark .be-button.light[data-v-18aa9448] {\n background-color: #333;\n}\n.be-button[data-v-18aa9448]:not(.disabled):hover, .be-button[data-v-18aa9448]:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-button[data-v-18aa9448]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).transparent[data-v-18aa9448]:hover, .be-button:not(.disabled).transparent[data-v-18aa9448]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover, .be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n background-color: var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:active, .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:active, body.dark .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button.disabled[data-v-18aa9448] {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},9820:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dropdown[data-v-6b51ccd4] {\n display: flex;\n border-radius: 4px;\n color: black;\n fill: black;\n stroke: black;\n background-color: #fff;\n transition: box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n position: relative;\n cursor: pointer;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-dropdown[data-v-6b51ccd4], .be-dropdown *[data-v-6b51ccd4] {\n -webkit-tap-highlight-color: transparent;\n outline: none !important;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n background-color: #333;\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):active, .be-dropdown[data-v-6b51ccd4]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n background-color: inherit;\n top: calc(100% + 4px);\n left: 50%;\n transform: translateX(-50%) translateY(-4px) scale(0.8);\n transform-origin: top;\n transition: 0.2s ease-out;\n min-width: 100%;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n}\nbody.dark .be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.be-dropdown .dropdown-popup.open[data-v-6b51ccd4] {\n transform: translateX(-50%) scale(1);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4] {\n padding: 4px 6px;\n margin: 2px 4px;\n border-radius: 4px;\n white-space: nowrap;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease-out;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:hover, .be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:first-child {\n margin-top: 4px;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:last-child {\n margin-bottom: 4px;\n}\n.be-dropdown .selected[data-v-6b51ccd4] {\n display: flex;\n align-items: center;\n flex-grow: 1;\n line-height: normal;\n}\n.be-dropdown .selected-item[data-v-6b51ccd4] {\n flex: 1;\n padding: 4px 8px;\n}\n.be-dropdown .selected .arrow[data-v-6b51ccd4] {\n flex-shrink: 0;\n transition: transform 0.2s ease-out;\n}\n.be-dropdown .selected .arrow.open[data-v-6b51ccd4] {\n transform: rotate(180deg);\n}\n.be-dropdown .selected .arrow .default-arrow[data-v-6b51ccd4] {\n padding: 0 6px;\n display: flex;\n align-items: center;\n}\n.be-dropdown .selected .arrow .default-arrow path[data-v-6b51ccd4] {\n fill: transparent;\n}\n.be-dropdown .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n transition: 0.2s ease-out;\n stroke: rgba(136, 136, 136, 0.6666666667);\n fill: transparent;\n width: 12px;\n height: 12px;\n}\n.be-dropdown:not(.disabled):hover .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):active .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):focus-within .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n stroke: var(--theme-color);\n}\n.be-dropdown.disabled[data-v-6b51ccd4] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.be-dropdown.round[data-v-6b51ccd4] {\n border-radius: calc(1em + 8px);\n}\n.be-dropdown.round .selected-item[data-v-6b51ccd4] {\n padding: 4px 10px;\n}",""]),e.exports=o},4629:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-empty {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},8199:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-loading {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},6708:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-popup {\n position: absolute;\n z-index: 1;\n border-radius: 8px;\n}\n.be-popup.fixed {\n position: fixed;\n}\n.be-popup.close.closed-style {\n pointer-events: none;\n opacity: 0;\n}\n.be-popup.open {\n pointer-events: initial;\n opacity: 1;\n}",""]),e.exports=o},2013:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-slider[data-v-94f62aa6] {\n min-width: 50px;\n position: relative;\n outline: none !important;\n}\n.be-slider .bar-container[data-v-94f62aa6] {\n padding: 6px 0;\n}\n.be-slider .default-bar[data-v-94f62aa6] {\n height: 4px;\n cursor: pointer;\n border-radius: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-slider .thumb-container[data-v-94f62aa6] {\n cursor: pointer;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n transition: none;\n}\n.be-slider .default-thumb[data-v-94f62aa6] {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: var(--theme-color);\n box-shadow: 0 0 0 2px var(--theme-color-20);\n transition: box-shadow 0.2s ease-out;\n}",""]),e.exports=o},5137:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'@charset "UTF-8";\n/** 由于允许自定义SVG插入, 样式不能是scoped的, 否则匹配不上 */\n@font-face {\n font-family: "be-iconfont-bilifont";\n src: url("//s1.hdslb.com/bfs/seed/jinkela/header-v2/asserts/iconfont.ttf") format("truetype");\n}\n@font-face {\n font-family: "be-iconfont-vanfont";\n src: url("//s1.hdslb.com/bfs/static/jinkela/video/asserts/iconfont.6401a86.ttf") format("truetype");\n}\n.be-icon {\n color: inherit;\n fill: inherit;\n stroke: inherit;\n font-size: var(--size);\n font-style: normal;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--size);\n height: var(--size);\n}\n.be-icon.be-iconfont-logo::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e725";\n}\n.be-icon.be-iconfont-profile::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e722";\n}\n.be-icon.be-iconfont-posts::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-wallet::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71f";\n}\n.be-icon.be-iconfont-live-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e720";\n}\n.be-icon.be-iconfont-order-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71e";\n}\n.be-icon.be-iconfont-course::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e60e";\n}\n.be-icon.be-iconfont-logout::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e721";\n}\n.be-icon.be-iconfont-ok::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e749";\n}\n.be-icon.be-iconfont-cancel::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e74a";\n}\n.be-icon.be-iconfont-bind-phone::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e733";\n}\n.be-icon.be-iconfont-bind-email::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e735";\n}\n.be-icon.be-iconfont-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e734";\n}\n.be-icon.be-iconfont-b-coin::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-b-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-activity::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-feeds::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-message::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e731";\n}\n.be-icon.be-iconfont-favorites-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e730";\n}\n.be-icon.be-iconfont-history::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72f";\n}\n.be-icon.be-iconfont-vip::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72e";\n}\n.be-icon.be-iconfont-up-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e741";\n}\n.be-icon.be-iconfont-play-triangle::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e737";\n}\n.be-icon.be-iconfont-refresh::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e73c";\n}\n.be-icon.be-iconfont-eye::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e742";\n}\n.be-icon.be-iconfont-coin::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e4";\n}\n.be-icon.be-iconfont-favorites::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e1";\n}\n.be-icon.be-iconfont-play::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e6";\n}\n.be-icon.be-iconfont-danmaku::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e7";\n}\n.be-icon.be-iconfont-like::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e0";\n}\n.be-icon.be-iconfont-like-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63a";\n}\n.be-icon.be-iconfont-dislike-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e638";\n}\n.be-icon.be-iconfont-comment-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e639";\n}\n.be-icon.be-iconfont-up::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-left-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f1";\n}\n.be-icon.be-iconfont-right-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f0";\n}\n.be-icon.be-iconfont-up-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ec";\n}\n.be-icon.be-iconfont-down-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6eb";\n}\n.be-icon.be-iconfont-close::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63c";\n}\n.be-icon.be-iconfont-search::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e635";\n}\n.be-icon.be-iconfont-upload::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e634";\n}\n.be-icon.be-iconfont-lv0::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cb";\n color: #9a9a9a;\n}\nbody.dark .be-icon.be-iconfont-lv0::before {\n color: #777;\n}\n.be-icon.be-iconfont-lv1::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cc";\n color: #646464;\n}\nbody.dark .be-icon.be-iconfont-lv1::before {\n color: #ddd;\n}\n.be-icon.be-iconfont-lv2::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cd";\n color: #1bc861;\n}\n.be-icon.be-iconfont-lv3::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ce";\n color: #22baea;\n}\n.be-icon.be-iconfont-lv4::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cf";\n color: #eaa722;\n}\n.be-icon.be-iconfont-lv5::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d0";\n color: #ff7631;\n}\n.be-icon.be-iconfont-lv6::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d1";\n color: #ff3131;\n}\n.be-icon:not(.colored) svg, .be-icon:not(.colored) svg path {\n fill: inherit;\n stroke: inherit;\n stroke-width: 0;\n}\n.be-icon .custom-icon {\n display: flex;\n}\n.be-icon .custom-icon > svg {\n width: var(--size);\n height: var(--size);\n}',""]),e.exports=o},8815:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tippy-box {\n font-size: inherit;\n filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.2));\n}",""]),e.exports=o},8218:e=>{"use strict"; +saturationl:d("hsl",1,m(100)),lightness:d("hsl",2,m(100)),saturationv:d("hsv",1,m(100)),value:d("hsv",2,m(100)),chroma:d("hcg",1,m(100)),gray:d("hcg",2,m(100)),white:d("hwb",1,m(100)),wblack:d("hwb",2,m(100)),cyan:d("cmyk",0,m(100)),magenta:d("cmyk",1,m(100)),yellow:d("cmyk",2,m(100)),black:d("cmyk",3,m(100)),x:d("xyz",0,m(100)),y:d("xyz",1,m(100)),z:d("xyz",2,m(100)),l:d("lab",0,m(100)),a:d("lab",1),b:d("lab",2),keyword:function(e){return arguments.length?new l(e):i[this.model].keyword(this.color)},hex:function(e){return arguments.length?new l(e):o.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],n=0;nn?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return l.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var n=e.rgb(),o=this.rgb(),i=void 0===t?.5:t,r=2*i-1,a=n.alpha()-o.alpha(),c=((r*a==-1?r:(r+a)/(1+r*a))+1)/2,s=1-c;return l.rgb(c*n.red()+s*o.red(),c*n.green()+s*o.green(),c*n.blue()+s*o.blue(),n.alpha()*i+o.alpha()*(1-i))}},Object.keys(i).forEach((function(e){if(-1===a.indexOf(e)){var t=i[e].channels;l.prototype[e]=function(){if(this.model===e)return new l(this);if(arguments.length)return new l(arguments,e);var n="number"==typeof arguments[t]?t:this.valpha;return new l(f(i[this.model][e].raw(this.color)).concat(n),e)},l[e]=function(n){return"number"==typeof n&&(n=u(r.call(arguments),t)),new l(n,e)}}})),e.exports=l},2080:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}',""]),e.exports=o},6292:(e,t,n)=>{var o=n(8218),i=n(3014),r=n(8195),a=o((function(e){return e[1]})),c=i(r);a.push([e.id,'@font-face{font-family:"Material Design Icons";src:url('+c+');font-weight:normal;font-style:normal}.mdi:before,.mdi-set{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-ab-testing::before{content:"\\F01C9"}.mdi-abjad-arabic::before{content:"\\F1328"}.mdi-abjad-hebrew::before{content:"\\F1329"}.mdi-abugida-devanagari::before{content:"\\F132A"}.mdi-abugida-thai::before{content:"\\F132B"}.mdi-access-point::before{content:"\\F0003"}.mdi-access-point-network::before{content:"\\F0002"}.mdi-access-point-network-off::before{content:"\\F0BE1"}.mdi-account::before{content:"\\F0004"}.mdi-account-alert::before{content:"\\F0005"}.mdi-account-alert-outline::before{content:"\\F0B50"}.mdi-account-arrow-left::before{content:"\\F0B51"}.mdi-account-arrow-left-outline::before{content:"\\F0B52"}.mdi-account-arrow-right::before{content:"\\F0B53"}.mdi-account-arrow-right-outline::before{content:"\\F0B54"}.mdi-account-box::before{content:"\\F0006"}.mdi-account-box-multiple::before{content:"\\F0934"}.mdi-account-box-multiple-outline::before{content:"\\F100A"}.mdi-account-box-outline::before{content:"\\F0007"}.mdi-account-cancel::before{content:"\\F12DF"}.mdi-account-cancel-outline::before{content:"\\F12E0"}.mdi-account-cash::before{content:"\\F1097"}.mdi-account-cash-outline::before{content:"\\F1098"}.mdi-account-check::before{content:"\\F0008"}.mdi-account-check-outline::before{content:"\\F0BE2"}.mdi-account-child::before{content:"\\F0A89"}.mdi-account-child-circle::before{content:"\\F0A8A"}.mdi-account-child-outline::before{content:"\\F10C8"}.mdi-account-circle::before{content:"\\F0009"}.mdi-account-circle-outline::before{content:"\\F0B55"}.mdi-account-clock::before{content:"\\F0B56"}.mdi-account-clock-outline::before{content:"\\F0B57"}.mdi-account-cog::before{content:"\\F1370"}.mdi-account-cog-outline::before{content:"\\F1371"}.mdi-account-convert::before{content:"\\F000A"}.mdi-account-convert-outline::before{content:"\\F1301"}.mdi-account-cowboy-hat::before{content:"\\F0E9B"}.mdi-account-details::before{content:"\\F0631"}.mdi-account-details-outline::before{content:"\\F1372"}.mdi-account-edit::before{content:"\\F06BC"}.mdi-account-edit-outline::before{content:"\\F0FFB"}.mdi-account-group::before{content:"\\F0849"}.mdi-account-group-outline::before{content:"\\F0B58"}.mdi-account-hard-hat::before{content:"\\F05B5"}.mdi-account-heart::before{content:"\\F0899"}.mdi-account-heart-outline::before{content:"\\F0BE3"}.mdi-account-key::before{content:"\\F000B"}.mdi-account-key-outline::before{content:"\\F0BE4"}.mdi-account-lock::before{content:"\\F115E"}.mdi-account-lock-outline::before{content:"\\F115F"}.mdi-account-minus::before{content:"\\F000D"}.mdi-account-minus-outline::before{content:"\\F0AEC"}.mdi-account-multiple::before{content:"\\F000E"}.mdi-account-multiple-check::before{content:"\\F08C5"}.mdi-account-multiple-check-outline::before{content:"\\F11FE"}.mdi-account-multiple-minus::before{content:"\\F05D3"}.mdi-account-multiple-minus-outline::before{content:"\\F0BE5"}.mdi-account-multiple-outline::before{content:"\\F000F"}.mdi-account-multiple-plus::before{content:"\\F0010"}.mdi-account-multiple-plus-outline::before{content:"\\F0800"}.mdi-account-multiple-remove::before{content:"\\F120A"}.mdi-account-multiple-remove-outline::before{content:"\\F120B"}.mdi-account-music::before{content:"\\F0803"}.mdi-account-music-outline::before{content:"\\F0CE9"}.mdi-account-network::before{content:"\\F0011"}.mdi-account-network-outline::before{content:"\\F0BE6"}.mdi-account-off::before{content:"\\F0012"}.mdi-account-off-outline::before{content:"\\F0BE7"}.mdi-account-outline::before{content:"\\F0013"}.mdi-account-plus::before{content:"\\F0014"}.mdi-account-plus-outline::before{content:"\\F0801"}.mdi-account-question::before{content:"\\F0B59"}.mdi-account-question-outline::before{content:"\\F0B5A"}.mdi-account-remove::before{content:"\\F0015"}.mdi-account-remove-outline::before{content:"\\F0AED"}.mdi-account-search::before{content:"\\F0016"}.mdi-account-search-outline::before{content:"\\F0935"}.mdi-account-settings::before{content:"\\F0630"}.mdi-account-settings-outline::before{content:"\\F10C9"}.mdi-account-star::before{content:"\\F0017"}.mdi-account-star-outline::before{content:"\\F0BE8"}.mdi-account-supervisor::before{content:"\\F0A8B"}.mdi-account-supervisor-circle::before{content:"\\F0A8C"}.mdi-account-supervisor-outline::before{content:"\\F112D"}.mdi-account-switch::before{content:"\\F0019"}.mdi-account-switch-outline::before{content:"\\F04CB"}.mdi-account-tie::before{content:"\\F0CE3"}.mdi-account-tie-outline::before{content:"\\F10CA"}.mdi-account-tie-voice::before{content:"\\F1308"}.mdi-account-tie-voice-off::before{content:"\\F130A"}.mdi-account-tie-voice-off-outline::before{content:"\\F130B"}.mdi-account-tie-voice-outline::before{content:"\\F1309"}.mdi-account-voice::before{content:"\\F05CB"}.mdi-adjust::before{content:"\\F001A"}.mdi-adobe::before{content:"\\F0936"}.mdi-adobe-acrobat::before{content:"\\F0F9D"}.mdi-air-conditioner::before{content:"\\F001B"}.mdi-air-filter::before{content:"\\F0D43"}.mdi-air-horn::before{content:"\\F0DAC"}.mdi-air-humidifier::before{content:"\\F1099"}.mdi-air-humidifier-off::before{content:"\\F1466"}.mdi-air-purifier::before{content:"\\F0D44"}.mdi-airbag::before{content:"\\F0BE9"}.mdi-airballoon::before{content:"\\F001C"}.mdi-airballoon-outline::before{content:"\\F100B"}.mdi-airplane::before{content:"\\F001D"}.mdi-airplane-landing::before{content:"\\F05D4"}.mdi-airplane-off::before{content:"\\F001E"}.mdi-airplane-takeoff::before{content:"\\F05D5"}.mdi-airport::before{content:"\\F084B"}.mdi-alarm::before{content:"\\F0020"}.mdi-alarm-bell::before{content:"\\F078E"}.mdi-alarm-check::before{content:"\\F0021"}.mdi-alarm-light::before{content:"\\F078F"}.mdi-alarm-light-outline::before{content:"\\F0BEA"}.mdi-alarm-multiple::before{content:"\\F0022"}.mdi-alarm-note::before{content:"\\F0E71"}.mdi-alarm-note-off::before{content:"\\F0E72"}.mdi-alarm-off::before{content:"\\F0023"}.mdi-alarm-plus::before{content:"\\F0024"}.mdi-alarm-snooze::before{content:"\\F068E"}.mdi-album::before{content:"\\F0025"}.mdi-alert::before{content:"\\F0026"}.mdi-alert-box::before{content:"\\F0027"}.mdi-alert-box-outline::before{content:"\\F0CE4"}.mdi-alert-circle::before{content:"\\F0028"}.mdi-alert-circle-check::before{content:"\\F11ED"}.mdi-alert-circle-check-outline::before{content:"\\F11EE"}.mdi-alert-circle-outline::before{content:"\\F05D6"}.mdi-alert-decagram::before{content:"\\F06BD"}.mdi-alert-decagram-outline::before{content:"\\F0CE5"}.mdi-alert-minus::before{content:"\\F14BB"}.mdi-alert-minus-outline::before{content:"\\F14BE"}.mdi-alert-octagon::before{content:"\\F0029"}.mdi-alert-octagon-outline::before{content:"\\F0CE6"}.mdi-alert-octagram::before{content:"\\F0767"}.mdi-alert-octagram-outline::before{content:"\\F0CE7"}.mdi-alert-outline::before{content:"\\F002A"}.mdi-alert-plus::before{content:"\\F14BA"}.mdi-alert-plus-outline::before{content:"\\F14BD"}.mdi-alert-remove::before{content:"\\F14BC"}.mdi-alert-remove-outline::before{content:"\\F14BF"}.mdi-alert-rhombus::before{content:"\\F11CE"}.mdi-alert-rhombus-outline::before{content:"\\F11CF"}.mdi-alien::before{content:"\\F089A"}.mdi-alien-outline::before{content:"\\F10CB"}.mdi-align-horizontal-center::before{content:"\\F11C3"}.mdi-align-horizontal-left::before{content:"\\F11C2"}.mdi-align-horizontal-right::before{content:"\\F11C4"}.mdi-align-vertical-bottom::before{content:"\\F11C5"}.mdi-align-vertical-center::before{content:"\\F11C6"}.mdi-align-vertical-top::before{content:"\\F11C7"}.mdi-all-inclusive::before{content:"\\F06BE"}.mdi-allergy::before{content:"\\F1258"}.mdi-alpha::before{content:"\\F002B"}.mdi-alpha-a::before{content:"\\F0AEE"}.mdi-alpha-a-box::before{content:"\\F0B08"}.mdi-alpha-a-box-outline::before{content:"\\F0BEB"}.mdi-alpha-a-circle::before{content:"\\F0BEC"}.mdi-alpha-a-circle-outline::before{content:"\\F0BED"}.mdi-alpha-b::before{content:"\\F0AEF"}.mdi-alpha-b-box::before{content:"\\F0B09"}.mdi-alpha-b-box-outline::before{content:"\\F0BEE"}.mdi-alpha-b-circle::before{content:"\\F0BEF"}.mdi-alpha-b-circle-outline::before{content:"\\F0BF0"}.mdi-alpha-c::before{content:"\\F0AF0"}.mdi-alpha-c-box::before{content:"\\F0B0A"}.mdi-alpha-c-box-outline::before{content:"\\F0BF1"}.mdi-alpha-c-circle::before{content:"\\F0BF2"}.mdi-alpha-c-circle-outline::before{content:"\\F0BF3"}.mdi-alpha-d::before{content:"\\F0AF1"}.mdi-alpha-d-box::before{content:"\\F0B0B"}.mdi-alpha-d-box-outline::before{content:"\\F0BF4"}.mdi-alpha-d-circle::before{content:"\\F0BF5"}.mdi-alpha-d-circle-outline::before{content:"\\F0BF6"}.mdi-alpha-e::before{content:"\\F0AF2"}.mdi-alpha-e-box::before{content:"\\F0B0C"}.mdi-alpha-e-box-outline::before{content:"\\F0BF7"}.mdi-alpha-e-circle::before{content:"\\F0BF8"}.mdi-alpha-e-circle-outline::before{content:"\\F0BF9"}.mdi-alpha-f::before{content:"\\F0AF3"}.mdi-alpha-f-box::before{content:"\\F0B0D"}.mdi-alpha-f-box-outline::before{content:"\\F0BFA"}.mdi-alpha-f-circle::before{content:"\\F0BFB"}.mdi-alpha-f-circle-outline::before{content:"\\F0BFC"}.mdi-alpha-g::before{content:"\\F0AF4"}.mdi-alpha-g-box::before{content:"\\F0B0E"}.mdi-alpha-g-box-outline::before{content:"\\F0BFD"}.mdi-alpha-g-circle::before{content:"\\F0BFE"}.mdi-alpha-g-circle-outline::before{content:"\\F0BFF"}.mdi-alpha-h::before{content:"\\F0AF5"}.mdi-alpha-h-box::before{content:"\\F0B0F"}.mdi-alpha-h-box-outline::before{content:"\\F0C00"}.mdi-alpha-h-circle::before{content:"\\F0C01"}.mdi-alpha-h-circle-outline::before{content:"\\F0C02"}.mdi-alpha-i::before{content:"\\F0AF6"}.mdi-alpha-i-box::before{content:"\\F0B10"}.mdi-alpha-i-box-outline::before{content:"\\F0C03"}.mdi-alpha-i-circle::before{content:"\\F0C04"}.mdi-alpha-i-circle-outline::before{content:"\\F0C05"}.mdi-alpha-j::before{content:"\\F0AF7"}.mdi-alpha-j-box::before{content:"\\F0B11"}.mdi-alpha-j-box-outline::before{content:"\\F0C06"}.mdi-alpha-j-circle::before{content:"\\F0C07"}.mdi-alpha-j-circle-outline::before{content:"\\F0C08"}.mdi-alpha-k::before{content:"\\F0AF8"}.mdi-alpha-k-box::before{content:"\\F0B12"}.mdi-alpha-k-box-outline::before{content:"\\F0C09"}.mdi-alpha-k-circle::before{content:"\\F0C0A"}.mdi-alpha-k-circle-outline::before{content:"\\F0C0B"}.mdi-alpha-l::before{content:"\\F0AF9"}.mdi-alpha-l-box::before{content:"\\F0B13"}.mdi-alpha-l-box-outline::before{content:"\\F0C0C"}.mdi-alpha-l-circle::before{content:"\\F0C0D"}.mdi-alpha-l-circle-outline::before{content:"\\F0C0E"}.mdi-alpha-m::before{content:"\\F0AFA"}.mdi-alpha-m-box::before{content:"\\F0B14"}.mdi-alpha-m-box-outline::before{content:"\\F0C0F"}.mdi-alpha-m-circle::before{content:"\\F0C10"}.mdi-alpha-m-circle-outline::before{content:"\\F0C11"}.mdi-alpha-n::before{content:"\\F0AFB"}.mdi-alpha-n-box::before{content:"\\F0B15"}.mdi-alpha-n-box-outline::before{content:"\\F0C12"}.mdi-alpha-n-circle::before{content:"\\F0C13"}.mdi-alpha-n-circle-outline::before{content:"\\F0C14"}.mdi-alpha-o::before{content:"\\F0AFC"}.mdi-alpha-o-box::before{content:"\\F0B16"}.mdi-alpha-o-box-outline::before{content:"\\F0C15"}.mdi-alpha-o-circle::before{content:"\\F0C16"}.mdi-alpha-o-circle-outline::before{content:"\\F0C17"}.mdi-alpha-p::before{content:"\\F0AFD"}.mdi-alpha-p-box::before{content:"\\F0B17"}.mdi-alpha-p-box-outline::before{content:"\\F0C18"}.mdi-alpha-p-circle::before{content:"\\F0C19"}.mdi-alpha-p-circle-outline::before{content:"\\F0C1A"}.mdi-alpha-q::before{content:"\\F0AFE"}.mdi-alpha-q-box::before{content:"\\F0B18"}.mdi-alpha-q-box-outline::before{content:"\\F0C1B"}.mdi-alpha-q-circle::before{content:"\\F0C1C"}.mdi-alpha-q-circle-outline::before{content:"\\F0C1D"}.mdi-alpha-r::before{content:"\\F0AFF"}.mdi-alpha-r-box::before{content:"\\F0B19"}.mdi-alpha-r-box-outline::before{content:"\\F0C1E"}.mdi-alpha-r-circle::before{content:"\\F0C1F"}.mdi-alpha-r-circle-outline::before{content:"\\F0C20"}.mdi-alpha-s::before{content:"\\F0B00"}.mdi-alpha-s-box::before{content:"\\F0B1A"}.mdi-alpha-s-box-outline::before{content:"\\F0C21"}.mdi-alpha-s-circle::before{content:"\\F0C22"}.mdi-alpha-s-circle-outline::before{content:"\\F0C23"}.mdi-alpha-t::before{content:"\\F0B01"}.mdi-alpha-t-box::before{content:"\\F0B1B"}.mdi-alpha-t-box-outline::before{content:"\\F0C24"}.mdi-alpha-t-circle::before{content:"\\F0C25"}.mdi-alpha-t-circle-outline::before{content:"\\F0C26"}.mdi-alpha-u::before{content:"\\F0B02"}.mdi-alpha-u-box::before{content:"\\F0B1C"}.mdi-alpha-u-box-outline::before{content:"\\F0C27"}.mdi-alpha-u-circle::before{content:"\\F0C28"}.mdi-alpha-u-circle-outline::before{content:"\\F0C29"}.mdi-alpha-v::before{content:"\\F0B03"}.mdi-alpha-v-box::before{content:"\\F0B1D"}.mdi-alpha-v-box-outline::before{content:"\\F0C2A"}.mdi-alpha-v-circle::before{content:"\\F0C2B"}.mdi-alpha-v-circle-outline::before{content:"\\F0C2C"}.mdi-alpha-w::before{content:"\\F0B04"}.mdi-alpha-w-box::before{content:"\\F0B1E"}.mdi-alpha-w-box-outline::before{content:"\\F0C2D"}.mdi-alpha-w-circle::before{content:"\\F0C2E"}.mdi-alpha-w-circle-outline::before{content:"\\F0C2F"}.mdi-alpha-x::before{content:"\\F0B05"}.mdi-alpha-x-box::before{content:"\\F0B1F"}.mdi-alpha-x-box-outline::before{content:"\\F0C30"}.mdi-alpha-x-circle::before{content:"\\F0C31"}.mdi-alpha-x-circle-outline::before{content:"\\F0C32"}.mdi-alpha-y::before{content:"\\F0B06"}.mdi-alpha-y-box::before{content:"\\F0B20"}.mdi-alpha-y-box-outline::before{content:"\\F0C33"}.mdi-alpha-y-circle::before{content:"\\F0C34"}.mdi-alpha-y-circle-outline::before{content:"\\F0C35"}.mdi-alpha-z::before{content:"\\F0B07"}.mdi-alpha-z-box::before{content:"\\F0B21"}.mdi-alpha-z-box-outline::before{content:"\\F0C36"}.mdi-alpha-z-circle::before{content:"\\F0C37"}.mdi-alpha-z-circle-outline::before{content:"\\F0C38"}.mdi-alphabet-aurebesh::before{content:"\\F132C"}.mdi-alphabet-cyrillic::before{content:"\\F132D"}.mdi-alphabet-greek::before{content:"\\F132E"}.mdi-alphabet-latin::before{content:"\\F132F"}.mdi-alphabet-piqad::before{content:"\\F1330"}.mdi-alphabet-tengwar::before{content:"\\F1337"}.mdi-alphabetical::before{content:"\\F002C"}.mdi-alphabetical-off::before{content:"\\F100C"}.mdi-alphabetical-variant::before{content:"\\F100D"}.mdi-alphabetical-variant-off::before{content:"\\F100E"}.mdi-altimeter::before{content:"\\F05D7"}.mdi-amazon::before{content:"\\F002D"}.mdi-amazon-alexa::before{content:"\\F08C6"}.mdi-ambulance::before{content:"\\F002F"}.mdi-ammunition::before{content:"\\F0CE8"}.mdi-ampersand::before{content:"\\F0A8D"}.mdi-amplifier::before{content:"\\F0030"}.mdi-amplifier-off::before{content:"\\F11B5"}.mdi-anchor::before{content:"\\F0031"}.mdi-android::before{content:"\\F0032"}.mdi-android-auto::before{content:"\\F0A8E"}.mdi-android-debug-bridge::before{content:"\\F0033"}.mdi-android-messages::before{content:"\\F0D45"}.mdi-android-studio::before{content:"\\F0034"}.mdi-angle-acute::before{content:"\\F0937"}.mdi-angle-obtuse::before{content:"\\F0938"}.mdi-angle-right::before{content:"\\F0939"}.mdi-angular::before{content:"\\F06B2"}.mdi-angularjs::before{content:"\\F06BF"}.mdi-animation::before{content:"\\F05D8"}.mdi-animation-outline::before{content:"\\F0A8F"}.mdi-animation-play::before{content:"\\F093A"}.mdi-animation-play-outline::before{content:"\\F0A90"}.mdi-ansible::before{content:"\\F109A"}.mdi-antenna::before{content:"\\F1119"}.mdi-anvil::before{content:"\\F089B"}.mdi-apache-kafka::before{content:"\\F100F"}.mdi-api::before{content:"\\F109B"}.mdi-api-off::before{content:"\\F1257"}.mdi-apple::before{content:"\\F0035"}.mdi-apple-airplay::before{content:"\\F001F"}.mdi-apple-finder::before{content:"\\F0036"}.mdi-apple-icloud::before{content:"\\F0038"}.mdi-apple-ios::before{content:"\\F0037"}.mdi-apple-keyboard-caps::before{content:"\\F0632"}.mdi-apple-keyboard-command::before{content:"\\F0633"}.mdi-apple-keyboard-control::before{content:"\\F0634"}.mdi-apple-keyboard-option::before{content:"\\F0635"}.mdi-apple-keyboard-shift::before{content:"\\F0636"}.mdi-apple-safari::before{content:"\\F0039"}.mdi-application::before{content:"\\F0614"}.mdi-application-export::before{content:"\\F0DAD"}.mdi-application-import::before{content:"\\F0DAE"}.mdi-approximately-equal::before{content:"\\F0F9E"}.mdi-approximately-equal-box::before{content:"\\F0F9F"}.mdi-apps::before{content:"\\F003B"}.mdi-apps-box::before{content:"\\F0D46"}.mdi-arch::before{content:"\\F08C7"}.mdi-archive::before{content:"\\F003C"}.mdi-archive-arrow-down::before{content:"\\F1259"}.mdi-archive-arrow-down-outline::before{content:"\\F125A"}.mdi-archive-arrow-up::before{content:"\\F125B"}.mdi-archive-arrow-up-outline::before{content:"\\F125C"}.mdi-archive-outline::before{content:"\\F120E"}.mdi-arm-flex::before{content:"\\F0FD7"}.mdi-arm-flex-outline::before{content:"\\F0FD6"}.mdi-arrange-bring-forward::before{content:"\\F003D"}.mdi-arrange-bring-to-front::before{content:"\\F003E"}.mdi-arrange-send-backward::before{content:"\\F003F"}.mdi-arrange-send-to-back::before{content:"\\F0040"}.mdi-arrow-all::before{content:"\\F0041"}.mdi-arrow-bottom-left::before{content:"\\F0042"}.mdi-arrow-bottom-left-bold-outline::before{content:"\\F09B7"}.mdi-arrow-bottom-left-thick::before{content:"\\F09B8"}.mdi-arrow-bottom-right::before{content:"\\F0043"}.mdi-arrow-bottom-right-bold-outline::before{content:"\\F09B9"}.mdi-arrow-bottom-right-thick::before{content:"\\F09BA"}.mdi-arrow-collapse::before{content:"\\F0615"}.mdi-arrow-collapse-all::before{content:"\\F0044"}.mdi-arrow-collapse-down::before{content:"\\F0792"}.mdi-arrow-collapse-horizontal::before{content:"\\F084C"}.mdi-arrow-collapse-left::before{content:"\\F0793"}.mdi-arrow-collapse-right::before{content:"\\F0794"}.mdi-arrow-collapse-up::before{content:"\\F0795"}.mdi-arrow-collapse-vertical::before{content:"\\F084D"}.mdi-arrow-decision::before{content:"\\F09BB"}.mdi-arrow-decision-auto::before{content:"\\F09BC"}.mdi-arrow-decision-auto-outline::before{content:"\\F09BD"}.mdi-arrow-decision-outline::before{content:"\\F09BE"}.mdi-arrow-down::before{content:"\\F0045"}.mdi-arrow-down-bold::before{content:"\\F072E"}.mdi-arrow-down-bold-box::before{content:"\\F072F"}.mdi-arrow-down-bold-box-outline::before{content:"\\F0730"}.mdi-arrow-down-bold-circle::before{content:"\\F0047"}.mdi-arrow-down-bold-circle-outline::before{content:"\\F0048"}.mdi-arrow-down-bold-hexagon-outline::before{content:"\\F0049"}.mdi-arrow-down-bold-outline::before{content:"\\F09BF"}.mdi-arrow-down-box::before{content:"\\F06C0"}.mdi-arrow-down-circle::before{content:"\\F0CDB"}.mdi-arrow-down-circle-outline::before{content:"\\F0CDC"}.mdi-arrow-down-drop-circle::before{content:"\\F004A"}.mdi-arrow-down-drop-circle-outline::before{content:"\\F004B"}.mdi-arrow-down-thick::before{content:"\\F0046"}.mdi-arrow-expand::before{content:"\\F0616"}.mdi-arrow-expand-all::before{content:"\\F004C"}.mdi-arrow-expand-down::before{content:"\\F0796"}.mdi-arrow-expand-horizontal::before{content:"\\F084E"}.mdi-arrow-expand-left::before{content:"\\F0797"}.mdi-arrow-expand-right::before{content:"\\F0798"}.mdi-arrow-expand-up::before{content:"\\F0799"}.mdi-arrow-expand-vertical::before{content:"\\F084F"}.mdi-arrow-horizontal-lock::before{content:"\\F115B"}.mdi-arrow-left::before{content:"\\F004D"}.mdi-arrow-left-bold::before{content:"\\F0731"}.mdi-arrow-left-bold-box::before{content:"\\F0732"}.mdi-arrow-left-bold-box-outline::before{content:"\\F0733"}.mdi-arrow-left-bold-circle::before{content:"\\F004F"}.mdi-arrow-left-bold-circle-outline::before{content:"\\F0050"}.mdi-arrow-left-bold-hexagon-outline::before{content:"\\F0051"}.mdi-arrow-left-bold-outline::before{content:"\\F09C0"}.mdi-arrow-left-box::before{content:"\\F06C1"}.mdi-arrow-left-circle::before{content:"\\F0CDD"}.mdi-arrow-left-circle-outline::before{content:"\\F0CDE"}.mdi-arrow-left-drop-circle::before{content:"\\F0052"}.mdi-arrow-left-drop-circle-outline::before{content:"\\F0053"}.mdi-arrow-left-right::before{content:"\\F0E73"}.mdi-arrow-left-right-bold::before{content:"\\F0E74"}.mdi-arrow-left-right-bold-outline::before{content:"\\F09C1"}.mdi-arrow-left-thick::before{content:"\\F004E"}.mdi-arrow-right::before{content:"\\F0054"}.mdi-arrow-right-bold::before{content:"\\F0734"}.mdi-arrow-right-bold-box::before{content:"\\F0735"}.mdi-arrow-right-bold-box-outline::before{content:"\\F0736"}.mdi-arrow-right-bold-circle::before{content:"\\F0056"}.mdi-arrow-right-bold-circle-outline::before{content:"\\F0057"}.mdi-arrow-right-bold-hexagon-outline::before{content:"\\F0058"}.mdi-arrow-right-bold-outline::before{content:"\\F09C2"}.mdi-arrow-right-box::before{content:"\\F06C2"}.mdi-arrow-right-circle::before{content:"\\F0CDF"}.mdi-arrow-right-circle-outline::before{content:"\\F0CE0"}.mdi-arrow-right-drop-circle::before{content:"\\F0059"}.mdi-arrow-right-drop-circle-outline::before{content:"\\F005A"}.mdi-arrow-right-thick::before{content:"\\F0055"}.mdi-arrow-split-horizontal::before{content:"\\F093B"}.mdi-arrow-split-vertical::before{content:"\\F093C"}.mdi-arrow-top-left::before{content:"\\F005B"}.mdi-arrow-top-left-bold-outline::before{content:"\\F09C3"}.mdi-arrow-top-left-bottom-right::before{content:"\\F0E75"}.mdi-arrow-top-left-bottom-right-bold::before{content:"\\F0E76"}.mdi-arrow-top-left-thick::before{content:"\\F09C4"}.mdi-arrow-top-right::before{content:"\\F005C"}.mdi-arrow-top-right-bold-outline::before{content:"\\F09C5"}.mdi-arrow-top-right-bottom-left::before{content:"\\F0E77"}.mdi-arrow-top-right-bottom-left-bold::before{content:"\\F0E78"}.mdi-arrow-top-right-thick::before{content:"\\F09C6"}.mdi-arrow-up::before{content:"\\F005D"}.mdi-arrow-up-bold::before{content:"\\F0737"}.mdi-arrow-up-bold-box::before{content:"\\F0738"}.mdi-arrow-up-bold-box-outline::before{content:"\\F0739"}.mdi-arrow-up-bold-circle::before{content:"\\F005F"}.mdi-arrow-up-bold-circle-outline::before{content:"\\F0060"}.mdi-arrow-up-bold-hexagon-outline::before{content:"\\F0061"}.mdi-arrow-up-bold-outline::before{content:"\\F09C7"}.mdi-arrow-up-box::before{content:"\\F06C3"}.mdi-arrow-up-circle::before{content:"\\F0CE1"}.mdi-arrow-up-circle-outline::before{content:"\\F0CE2"}.mdi-arrow-up-down::before{content:"\\F0E79"}.mdi-arrow-up-down-bold::before{content:"\\F0E7A"}.mdi-arrow-up-down-bold-outline::before{content:"\\F09C8"}.mdi-arrow-up-drop-circle::before{content:"\\F0062"}.mdi-arrow-up-drop-circle-outline::before{content:"\\F0063"}.mdi-arrow-up-thick::before{content:"\\F005E"}.mdi-arrow-vertical-lock::before{content:"\\F115C"}.mdi-artstation::before{content:"\\F0B5B"}.mdi-aspect-ratio::before{content:"\\F0A24"}.mdi-assistant::before{content:"\\F0064"}.mdi-asterisk::before{content:"\\F06C4"}.mdi-at::before{content:"\\F0065"}.mdi-atlassian::before{content:"\\F0804"}.mdi-atm::before{content:"\\F0D47"}.mdi-atom::before{content:"\\F0768"}.mdi-atom-variant::before{content:"\\F0E7B"}.mdi-attachment::before{content:"\\F0066"}.mdi-audio-video::before{content:"\\F093D"}.mdi-audio-video-off::before{content:"\\F11B6"}.mdi-augmented-reality::before{content:"\\F0850"}.mdi-auto-download::before{content:"\\F137E"}.mdi-auto-fix::before{content:"\\F0068"}.mdi-auto-upload::before{content:"\\F0069"}.mdi-autorenew::before{content:"\\F006A"}.mdi-av-timer::before{content:"\\F006B"}.mdi-aws::before{content:"\\F0E0F"}.mdi-axe::before{content:"\\F08C8"}.mdi-axis::before{content:"\\F0D48"}.mdi-axis-arrow::before{content:"\\F0D49"}.mdi-axis-arrow-info::before{content:"\\F140E"}.mdi-axis-arrow-lock::before{content:"\\F0D4A"}.mdi-axis-lock::before{content:"\\F0D4B"}.mdi-axis-x-arrow::before{content:"\\F0D4C"}.mdi-axis-x-arrow-lock::before{content:"\\F0D4D"}.mdi-axis-x-rotate-clockwise::before{content:"\\F0D4E"}.mdi-axis-x-rotate-counterclockwise::before{content:"\\F0D4F"}.mdi-axis-x-y-arrow-lock::before{content:"\\F0D50"}.mdi-axis-y-arrow::before{content:"\\F0D51"}.mdi-axis-y-arrow-lock::before{content:"\\F0D52"}.mdi-axis-y-rotate-clockwise::before{content:"\\F0D53"}.mdi-axis-y-rotate-counterclockwise::before{content:"\\F0D54"}.mdi-axis-z-arrow::before{content:"\\F0D55"}.mdi-axis-z-arrow-lock::before{content:"\\F0D56"}.mdi-axis-z-rotate-clockwise::before{content:"\\F0D57"}.mdi-axis-z-rotate-counterclockwise::before{content:"\\F0D58"}.mdi-babel::before{content:"\\F0A25"}.mdi-baby::before{content:"\\F006C"}.mdi-baby-bottle::before{content:"\\F0F39"}.mdi-baby-bottle-outline::before{content:"\\F0F3A"}.mdi-baby-buggy::before{content:"\\F13E0"}.mdi-baby-carriage::before{content:"\\F068F"}.mdi-baby-carriage-off::before{content:"\\F0FA0"}.mdi-baby-face::before{content:"\\F0E7C"}.mdi-baby-face-outline::before{content:"\\F0E7D"}.mdi-backburger::before{content:"\\F006D"}.mdi-backspace::before{content:"\\F006E"}.mdi-backspace-outline::before{content:"\\F0B5C"}.mdi-backspace-reverse::before{content:"\\F0E7E"}.mdi-backspace-reverse-outline::before{content:"\\F0E7F"}.mdi-backup-restore::before{content:"\\F006F"}.mdi-bacteria::before{content:"\\F0ED5"}.mdi-bacteria-outline::before{content:"\\F0ED6"}.mdi-badge-account::before{content:"\\F0DA7"}.mdi-badge-account-alert::before{content:"\\F0DA8"}.mdi-badge-account-alert-outline::before{content:"\\F0DA9"}.mdi-badge-account-horizontal::before{content:"\\F0E0D"}.mdi-badge-account-horizontal-outline::before{content:"\\F0E0E"}.mdi-badge-account-outline::before{content:"\\F0DAA"}.mdi-badminton::before{content:"\\F0851"}.mdi-bag-carry-on::before{content:"\\F0F3B"}.mdi-bag-carry-on-check::before{content:"\\F0D65"}.mdi-bag-carry-on-off::before{content:"\\F0F3C"}.mdi-bag-checked::before{content:"\\F0F3D"}.mdi-bag-personal::before{content:"\\F0E10"}.mdi-bag-personal-off::before{content:"\\F0E11"}.mdi-bag-personal-off-outline::before{content:"\\F0E12"}.mdi-bag-personal-outline::before{content:"\\F0E13"}.mdi-baguette::before{content:"\\F0F3E"}.mdi-balloon::before{content:"\\F0A26"}.mdi-ballot::before{content:"\\F09C9"}.mdi-ballot-outline::before{content:"\\F09CA"}.mdi-ballot-recount::before{content:"\\F0C39"}.mdi-ballot-recount-outline::before{content:"\\F0C3A"}.mdi-bandage::before{content:"\\F0DAF"}.mdi-bandcamp::before{content:"\\F0675"}.mdi-bank::before{content:"\\F0070"}.mdi-bank-minus::before{content:"\\F0DB0"}.mdi-bank-outline::before{content:"\\F0E80"}.mdi-bank-plus::before{content:"\\F0DB1"}.mdi-bank-remove::before{content:"\\F0DB2"}.mdi-bank-transfer::before{content:"\\F0A27"}.mdi-bank-transfer-in::before{content:"\\F0A28"}.mdi-bank-transfer-out::before{content:"\\F0A29"}.mdi-barcode::before{content:"\\F0071"}.mdi-barcode-off::before{content:"\\F1236"}.mdi-barcode-scan::before{content:"\\F0072"}.mdi-barley::before{content:"\\F0073"}.mdi-barley-off::before{content:"\\F0B5D"}.mdi-barn::before{content:"\\F0B5E"}.mdi-barrel::before{content:"\\F0074"}.mdi-baseball::before{content:"\\F0852"}.mdi-baseball-bat::before{content:"\\F0853"}.mdi-bash::before{content:"\\F1183"}.mdi-basket::before{content:"\\F0076"}.mdi-basket-fill::before{content:"\\F0077"}.mdi-basket-outline::before{content:"\\F1181"}.mdi-basket-unfill::before{content:"\\F0078"}.mdi-basketball::before{content:"\\F0806"}.mdi-basketball-hoop::before{content:"\\F0C3B"}.mdi-basketball-hoop-outline::before{content:"\\F0C3C"}.mdi-bat::before{content:"\\F0B5F"}.mdi-battery::before{content:"\\F0079"}.mdi-battery-10::before{content:"\\F007A"}.mdi-battery-10-bluetooth::before{content:"\\F093E"}.mdi-battery-20::before{content:"\\F007B"}.mdi-battery-20-bluetooth::before{content:"\\F093F"}.mdi-battery-30::before{content:"\\F007C"}.mdi-battery-30-bluetooth::before{content:"\\F0940"}.mdi-battery-40::before{content:"\\F007D"}.mdi-battery-40-bluetooth::before{content:"\\F0941"}.mdi-battery-50::before{content:"\\F007E"}.mdi-battery-50-bluetooth::before{content:"\\F0942"}.mdi-battery-60::before{content:"\\F007F"}.mdi-battery-60-bluetooth::before{content:"\\F0943"}.mdi-battery-70::before{content:"\\F0080"}.mdi-battery-70-bluetooth::before{content:"\\F0944"}.mdi-battery-80::before{content:"\\F0081"}.mdi-battery-80-bluetooth::before{content:"\\F0945"}.mdi-battery-90::before{content:"\\F0082"}.mdi-battery-90-bluetooth::before{content:"\\F0946"}.mdi-battery-alert::before{content:"\\F0083"}.mdi-battery-alert-bluetooth::before{content:"\\F0947"}.mdi-battery-alert-variant::before{content:"\\F10CC"}.mdi-battery-alert-variant-outline::before{content:"\\F10CD"}.mdi-battery-bluetooth::before{content:"\\F0948"}.mdi-battery-bluetooth-variant::before{content:"\\F0949"}.mdi-battery-charging::before{content:"\\F0084"}.mdi-battery-charging-10::before{content:"\\F089C"}.mdi-battery-charging-100::before{content:"\\F0085"}.mdi-battery-charging-20::before{content:"\\F0086"}.mdi-battery-charging-30::before{content:"\\F0087"}.mdi-battery-charging-40::before{content:"\\F0088"}.mdi-battery-charging-50::before{content:"\\F089D"}.mdi-battery-charging-60::before{content:"\\F0089"}.mdi-battery-charging-70::before{content:"\\F089E"}.mdi-battery-charging-80::before{content:"\\F008A"}.mdi-battery-charging-90::before{content:"\\F008B"}.mdi-battery-charging-high::before{content:"\\F12A6"}.mdi-battery-charging-low::before{content:"\\F12A4"}.mdi-battery-charging-medium::before{content:"\\F12A5"}.mdi-battery-charging-outline::before{content:"\\F089F"}.mdi-battery-charging-wireless::before{content:"\\F0807"}.mdi-battery-charging-wireless-10::before{content:"\\F0808"}.mdi-battery-charging-wireless-20::before{content:"\\F0809"}.mdi-battery-charging-wireless-30::before{content:"\\F080A"}.mdi-battery-charging-wireless-40::before{content:"\\F080B"}.mdi-battery-charging-wireless-50::before{content:"\\F080C"}.mdi-battery-charging-wireless-60::before{content:"\\F080D"}.mdi-battery-charging-wireless-70::before{content:"\\F080E"}.mdi-battery-charging-wireless-80::before{content:"\\F080F"}.mdi-battery-charging-wireless-90::before{content:"\\F0810"}.mdi-battery-charging-wireless-alert::before{content:"\\F0811"}.mdi-battery-charging-wireless-outline::before{content:"\\F0812"}.mdi-battery-heart::before{content:"\\F120F"}.mdi-battery-heart-outline::before{content:"\\F1210"}.mdi-battery-heart-variant::before{content:"\\F1211"}.mdi-battery-high::before{content:"\\F12A3"}.mdi-battery-low::before{content:"\\F12A1"}.mdi-battery-medium::before{content:"\\F12A2"}.mdi-battery-minus::before{content:"\\F008C"}.mdi-battery-negative::before{content:"\\F008D"}.mdi-battery-off::before{content:"\\F125D"}.mdi-battery-off-outline::before{content:"\\F125E"}.mdi-battery-outline::before{content:"\\F008E"}.mdi-battery-plus::before{content:"\\F008F"}.mdi-battery-positive::before{content:"\\F0090"}.mdi-battery-unknown::before{content:"\\F0091"}.mdi-battery-unknown-bluetooth::before{content:"\\F094A"}.mdi-battlenet::before{content:"\\F0B60"}.mdi-beach::before{content:"\\F0092"}.mdi-beaker::before{content:"\\F0CEA"}.mdi-beaker-alert::before{content:"\\F1229"}.mdi-beaker-alert-outline::before{content:"\\F122A"}.mdi-beaker-check::before{content:"\\F122B"}.mdi-beaker-check-outline::before{content:"\\F122C"}.mdi-beaker-minus::before{content:"\\F122D"}.mdi-beaker-minus-outline::before{content:"\\F122E"}.mdi-beaker-outline::before{content:"\\F0690"}.mdi-beaker-plus::before{content:"\\F122F"}.mdi-beaker-plus-outline::before{content:"\\F1230"}.mdi-beaker-question::before{content:"\\F1231"}.mdi-beaker-question-outline::before{content:"\\F1232"}.mdi-beaker-remove::before{content:"\\F1233"}.mdi-beaker-remove-outline::before{content:"\\F1234"}.mdi-bed::before{content:"\\F02E3"}.mdi-bed-double::before{content:"\\F0FD4"}.mdi-bed-double-outline::before{content:"\\F0FD3"}.mdi-bed-empty::before{content:"\\F08A0"}.mdi-bed-king::before{content:"\\F0FD2"}.mdi-bed-king-outline::before{content:"\\F0FD1"}.mdi-bed-outline::before{content:"\\F0099"}.mdi-bed-queen::before{content:"\\F0FD0"}.mdi-bed-queen-outline::before{content:"\\F0FDB"}.mdi-bed-single::before{content:"\\F106D"}.mdi-bed-single-outline::before{content:"\\F106E"}.mdi-bee::before{content:"\\F0FA1"}.mdi-bee-flower::before{content:"\\F0FA2"}.mdi-beehive-off-outline::before{content:"\\F13ED"}.mdi-beehive-outline::before{content:"\\F10CE"}.mdi-beer::before{content:"\\F0098"}.mdi-beer-outline::before{content:"\\F130C"}.mdi-bell::before{content:"\\F009A"}.mdi-bell-alert::before{content:"\\F0D59"}.mdi-bell-alert-outline::before{content:"\\F0E81"}.mdi-bell-cancel::before{content:"\\F13E7"}.mdi-bell-cancel-outline::before{content:"\\F13E8"}.mdi-bell-check::before{content:"\\F11E5"}.mdi-bell-check-outline::before{content:"\\F11E6"}.mdi-bell-circle::before{content:"\\F0D5A"}.mdi-bell-circle-outline::before{content:"\\F0D5B"}.mdi-bell-minus::before{content:"\\F13E9"}.mdi-bell-minus-outline::before{content:"\\F13EA"}.mdi-bell-off::before{content:"\\F009B"}.mdi-bell-off-outline::before{content:"\\F0A91"}.mdi-bell-outline::before{content:"\\F009C"}.mdi-bell-plus::before{content:"\\F009D"}.mdi-bell-plus-outline::before{content:"\\F0A92"}.mdi-bell-remove::before{content:"\\F13EB"}.mdi-bell-remove-outline::before{content:"\\F13EC"}.mdi-bell-ring::before{content:"\\F009E"}.mdi-bell-ring-outline::before{content:"\\F009F"}.mdi-bell-sleep::before{content:"\\F00A0"}.mdi-bell-sleep-outline::before{content:"\\F0A93"}.mdi-beta::before{content:"\\F00A1"}.mdi-betamax::before{content:"\\F09CB"}.mdi-biathlon::before{content:"\\F0E14"}.mdi-bicycle::before{content:"\\F109C"}.mdi-bicycle-basket::before{content:"\\F1235"}.mdi-bike::before{content:"\\F00A3"}.mdi-bike-fast::before{content:"\\F111F"}.mdi-billboard::before{content:"\\F1010"}.mdi-billiards::before{content:"\\F0B61"}.mdi-billiards-rack::before{content:"\\F0B62"}.mdi-binoculars::before{content:"\\F00A5"}.mdi-bio::before{content:"\\F00A6"}.mdi-biohazard::before{content:"\\F00A7"}.mdi-bitbucket::before{content:"\\F00A8"}.mdi-bitcoin::before{content:"\\F0813"}.mdi-black-mesa::before{content:"\\F00A9"}.mdi-blender::before{content:"\\F0CEB"}.mdi-blender-software::before{content:"\\F00AB"}.mdi-blinds::before{content:"\\F00AC"}.mdi-blinds-open::before{content:"\\F1011"}.mdi-block-helper::before{content:"\\F00AD"}.mdi-blogger::before{content:"\\F00AE"}.mdi-blood-bag::before{content:"\\F0CEC"}.mdi-bluetooth::before{content:"\\F00AF"}.mdi-bluetooth-audio::before{content:"\\F00B0"}.mdi-bluetooth-connect::before{content:"\\F00B1"}.mdi-bluetooth-off::before{content:"\\F00B2"}.mdi-bluetooth-settings::before{content:"\\F00B3"}.mdi-bluetooth-transfer::before{content:"\\F00B4"}.mdi-blur::before{content:"\\F00B5"}.mdi-blur-linear::before{content:"\\F00B6"}.mdi-blur-off::before{content:"\\F00B7"}.mdi-blur-radial::before{content:"\\F00B8"}.mdi-bolnisi-cross::before{content:"\\F0CED"}.mdi-bolt::before{content:"\\F0DB3"}.mdi-bomb::before{content:"\\F0691"}.mdi-bomb-off::before{content:"\\F06C5"}.mdi-bone::before{content:"\\F00B9"}.mdi-book::before{content:"\\F00BA"}.mdi-book-account::before{content:"\\F13AD"}.mdi-book-account-outline::before{content:"\\F13AE"}.mdi-book-alphabet::before{content:"\\F061D"}.mdi-book-cross::before{content:"\\F00A2"}.mdi-book-information-variant::before{content:"\\F106F"}.mdi-book-lock::before{content:"\\F079A"}.mdi-book-lock-open::before{content:"\\F079B"}.mdi-book-minus::before{content:"\\F05D9"}.mdi-book-minus-multiple::before{content:"\\F0A94"}.mdi-book-minus-multiple-outline::before{content:"\\F090B"}.mdi-book-multiple::before{content:"\\F00BB"}.mdi-book-multiple-outline::before{content:"\\F0436"}.mdi-book-music::before{content:"\\F0067"}.mdi-book-open::before{content:"\\F00BD"}.mdi-book-open-outline::before{content:"\\F0B63"}.mdi-book-open-page-variant::before{content:"\\F05DA"}.mdi-book-open-variant::before{content:"\\F00BE"}.mdi-book-outline::before{content:"\\F0B64"}.mdi-book-play::before{content:"\\F0E82"}.mdi-book-play-outline::before{content:"\\F0E83"}.mdi-book-plus::before{content:"\\F05DB"}.mdi-book-plus-multiple::before{content:"\\F0A95"}.mdi-book-plus-multiple-outline::before{content:"\\F0ADE"}.mdi-book-remove::before{content:"\\F0A97"}.mdi-book-remove-multiple::before{content:"\\F0A96"}.mdi-book-remove-multiple-outline::before{content:"\\F04CA"}.mdi-book-search::before{content:"\\F0E84"}.mdi-book-search-outline::before{content:"\\F0E85"}.mdi-book-variant::before{content:"\\F00BF"}.mdi-book-variant-multiple::before{content:"\\F00BC"}.mdi-bookmark::before{content:"\\F00C0"}.mdi-bookmark-check::before{content:"\\F00C1"}.mdi-bookmark-check-outline::before{content:"\\F137B"}.mdi-bookmark-minus::before{content:"\\F09CC"}.mdi-bookmark-minus-outline::before{content:"\\F09CD"}.mdi-bookmark-multiple::before{content:"\\F0E15"}.mdi-bookmark-multiple-outline::before{content:"\\F0E16"}.mdi-bookmark-music::before{content:"\\F00C2"}.mdi-bookmark-music-outline::before{content:"\\F1379"}.mdi-bookmark-off::before{content:"\\F09CE"}.mdi-bookmark-off-outline::before{content:"\\F09CF"}.mdi-bookmark-outline::before{content:"\\F00C3"}.mdi-bookmark-plus::before{content:"\\F00C5"}.mdi-bookmark-plus-outline::before{content:"\\F00C4"}.mdi-bookmark-remove::before{content:"\\F00C6"}.mdi-bookmark-remove-outline::before{content:"\\F137A"}.mdi-bookshelf::before{content:"\\F125F"}.mdi-boom-gate::before{content:"\\F0E86"}.mdi-boom-gate-alert::before{content:"\\F0E87"}.mdi-boom-gate-alert-outline::before{content:"\\F0E88"}.mdi-boom-gate-down::before{content:"\\F0E89"}.mdi-boom-gate-down-outline::before{content:"\\F0E8A"}.mdi-boom-gate-outline::before{content:"\\F0E8B"}.mdi-boom-gate-up::before{content:"\\F0E8C"}.mdi-boom-gate-up-outline::before{content:"\\F0E8D"}.mdi-boombox::before{content:"\\F05DC"}.mdi-boomerang::before{content:"\\F10CF"}.mdi-bootstrap::before{content:"\\F06C6"}.mdi-border-all::before{content:"\\F00C7"}.mdi-border-all-variant::before{content:"\\F08A1"}.mdi-border-bottom::before{content:"\\F00C8"}.mdi-border-bottom-variant::before{content:"\\F08A2"}.mdi-border-color::before{content:"\\F00C9"}.mdi-border-horizontal::before{content:"\\F00CA"}.mdi-border-inside::before{content:"\\F00CB"}.mdi-border-left::before{content:"\\F00CC"}.mdi-border-left-variant::before{content:"\\F08A3"}.mdi-border-none::before{content:"\\F00CD"}.mdi-border-none-variant::before{content:"\\F08A4"}.mdi-border-outside::before{content:"\\F00CE"}.mdi-border-right::before{content:"\\F00CF"}.mdi-border-right-variant::before{content:"\\F08A5"}.mdi-border-style::before{content:"\\F00D0"}.mdi-border-top::before{content:"\\F00D1"}.mdi-border-top-variant::before{content:"\\F08A6"}.mdi-border-vertical::before{content:"\\F00D2"}.mdi-bottle-soda::before{content:"\\F1070"}.mdi-bottle-soda-classic::before{content:"\\F1071"}.mdi-bottle-soda-classic-outline::before{content:"\\F1363"}.mdi-bottle-soda-outline::before{content:"\\F1072"}.mdi-bottle-tonic::before{content:"\\F112E"}.mdi-bottle-tonic-outline::before{content:"\\F112F"}.mdi-bottle-tonic-plus::before{content:"\\F1130"}.mdi-bottle-tonic-plus-outline::before{content:"\\F1131"}.mdi-bottle-tonic-skull::before{content:"\\F1132"}.mdi-bottle-tonic-skull-outline::before{content:"\\F1133"}.mdi-bottle-wine::before{content:"\\F0854"}.mdi-bottle-wine-outline::before{content:"\\F1310"}.mdi-bow-tie::before{content:"\\F0678"}.mdi-bowl::before{content:"\\F028E"}.mdi-bowl-mix::before{content:"\\F0617"}.mdi-bowl-mix-outline::before{content:"\\F02E4"}.mdi-bowl-outline::before{content:"\\F02A9"}.mdi-bowling::before{content:"\\F00D3"}.mdi-box::before{content:"\\F00D4"}.mdi-box-cutter::before{content:"\\F00D5"}.mdi-box-cutter-off::before{content:"\\F0B4A"}.mdi-box-shadow::before{content:"\\F0637"}.mdi-boxing-glove::before{content:"\\F0B65"}.mdi-braille::before{content:"\\F09D0"}.mdi-brain::before{content:"\\F09D1"}.mdi-bread-slice::before{content:"\\F0CEE"}.mdi-bread-slice-outline::before{content:"\\F0CEF"}.mdi-bridge::before{content:"\\F0618"}.mdi-briefcase::before{content:"\\F00D6"}.mdi-briefcase-account::before{content:"\\F0CF0"}.mdi-briefcase-account-outline::before{content:"\\F0CF1"}.mdi-briefcase-check::before{content:"\\F00D7"}.mdi-briefcase-check-outline::before{content:"\\F131E"}.mdi-briefcase-clock::before{content:"\\F10D0"}.mdi-briefcase-clock-outline::before{content:"\\F10D1"}.mdi-briefcase-download::before{content:"\\F00D8"}.mdi-briefcase-download-outline::before{content:"\\F0C3D"}.mdi-briefcase-edit::before{content:"\\F0A98"}.mdi-briefcase-edit-outline::before{content:"\\F0C3E"}.mdi-briefcase-minus::before{content:"\\F0A2A"}.mdi-briefcase-minus-outline::before{content:"\\F0C3F"}.mdi-briefcase-outline::before{content:"\\F0814"}.mdi-briefcase-plus::before{content:"\\F0A2B"}.mdi-briefcase-plus-outline::before{content:"\\F0C40"}.mdi-briefcase-remove::before{content:"\\F0A2C"}.mdi-briefcase-remove-outline::before{content:"\\F0C41"}.mdi-briefcase-search::before{content:"\\F0A2D"}.mdi-briefcase-search-outline::before{content:"\\F0C42"}.mdi-briefcase-upload::before{content:"\\F00D9"}.mdi-briefcase-upload-outline::before{content:"\\F0C43"}.mdi-briefcase-variant::before{content:"\\F1494"}.mdi-briefcase-variant-outline::before{content:"\\F1495"}.mdi-brightness-1::before{content:"\\F00DA"}.mdi-brightness-2::before{content:"\\F00DB"}.mdi-brightness-3::before{content:"\\F00DC"}.mdi-brightness-4::before{content:"\\F00DD"}.mdi-brightness-5::before{content:"\\F00DE"}.mdi-brightness-6::before{content:"\\F00DF"}.mdi-brightness-7::before{content:"\\F00E0"}.mdi-brightness-auto::before{content:"\\F00E1"}.mdi-brightness-percent::before{content:"\\F0CF2"}.mdi-broom::before{content:"\\F00E2"}.mdi-brush::before{content:"\\F00E3"}.mdi-bucket::before{content:"\\F1415"}.mdi-bucket-outline::before{content:"\\F1416"}.mdi-buddhism::before{content:"\\F094B"}.mdi-buffer::before{content:"\\F0619"}.mdi-buffet::before{content:"\\F0578"}.mdi-bug::before{content:"\\F00E4"}.mdi-bug-check::before{content:"\\F0A2E"}.mdi-bug-check-outline::before{content:"\\F0A2F"}.mdi-bug-outline::before{content:"\\F0A30"}.mdi-bugle::before{content:"\\F0DB4"}.mdi-bulldozer::before{content:"\\F0B22"}.mdi-bullet::before{content:"\\F0CF3"}.mdi-bulletin-board::before{content:"\\F00E5"}.mdi-bullhorn::before{content:"\\F00E6"}.mdi-bullhorn-outline::before{content:"\\F0B23"}.mdi-bullseye::before{content:"\\F05DD"}.mdi-bullseye-arrow::before{content:"\\F08C9"}.mdi-bulma::before{content:"\\F12E7"}.mdi-bunk-bed::before{content:"\\F1302"}.mdi-bunk-bed-outline::before{content:"\\F0097"}.mdi-bus::before{content:"\\F00E7"}.mdi-bus-alert::before{content:"\\F0A99"}.mdi-bus-articulated-end::before{content:"\\F079C"}.mdi-bus-articulated-front::before{content:"\\F079D"}.mdi-bus-clock::before{content:"\\F08CA"}.mdi-bus-double-decker::before{content:"\\F079E"}.mdi-bus-marker::before{content:"\\F1212"}.mdi-bus-multiple::before{content:"\\F0F3F"}.mdi-bus-school::before{content:"\\F079F"}.mdi-bus-side::before{content:"\\F07A0"}.mdi-bus-stop::before{content:"\\F1012"}.mdi-bus-stop-covered::before{content:"\\F1013"}.mdi-bus-stop-uncovered::before{content:"\\F1014"}.mdi-cable-data::before{content:"\\F1394"}.mdi-cached::before{content:"\\F00E8"}.mdi-cactus::before{content:"\\F0DB5"}.mdi-cake::before{content:"\\F00E9"}.mdi-cake-layered::before{content:"\\F00EA"}.mdi-cake-variant::before{content:"\\F00EB"}.mdi-calculator::before{content:"\\F00EC"}.mdi-calculator-variant::before{content:"\\F0A9A"}.mdi-calendar::before{content:"\\F00ED"}.mdi-calendar-account::before{content:"\\F0ED7"}.mdi-calendar-account-outline::before{content:"\\F0ED8"}.mdi-calendar-alert::before{content:"\\F0A31"}.mdi-calendar-arrow-left::before{content:"\\F1134"}.mdi-calendar-arrow-right::before{content:"\\F1135"}.mdi-calendar-blank::before{content:"\\F00EE"}.mdi-calendar-blank-multiple::before{content:"\\F1073"}.mdi-calendar-blank-outline::before{content:"\\F0B66"}.mdi-calendar-check::before{content:"\\F00EF"}.mdi-calendar-check-outline::before{content:"\\F0C44"}.mdi-calendar-clock::before{content:"\\F00F0"}.mdi-calendar-edit::before{content:"\\F08A7"}.mdi-calendar-export::before{content:"\\F0B24"}.mdi-calendar-heart::before{content:"\\F09D2"}.mdi-calendar-import::before{content:"\\F0B25"}.mdi-calendar-minus::before{content:"\\F0D5C"}.mdi-calendar-month::before{content:"\\F0E17"}.mdi-calendar-month-outline::before{content:"\\F0E18"}.mdi-calendar-multiple::before{content:"\\F00F1"}.mdi-calendar-multiple-check::before{content:"\\F00F2"}.mdi-calendar-multiselect::before{content:"\\F0A32"}.mdi-calendar-outline::before{content:"\\F0B67"}.mdi-calendar-plus::before{content:"\\F00F3"}.mdi-calendar-question::before{content:"\\F0692"}.mdi-calendar-range::before{content:"\\F0679"}.mdi-calendar-range-outline::before{content:"\\F0B68"}.mdi-calendar-refresh::before{content:"\\F01E1"}.mdi-calendar-refresh-outline::before{content:"\\F0203"}.mdi-calendar-remove::before{content:"\\F00F4"}.mdi-calendar-remove-outline::before{content:"\\F0C45"}.mdi-calendar-search::before{content:"\\F094C"}.mdi-calendar-star::before{content:"\\F09D3"}.mdi-calendar-sync::before{content:"\\F0E8E"}.mdi-calendar-sync-outline::before{content:"\\F0E8F"}.mdi-calendar-text::before{content:"\\F00F5"}.mdi-calendar-text-outline::before{content:"\\F0C46"}.mdi-calendar-today::before{content:"\\F00F6"}.mdi-calendar-week::before{content:"\\F0A33"}.mdi-calendar-week-begin::before{content:"\\F0A34"}.mdi-calendar-weekend::before{content:"\\F0ED9"}.mdi-calendar-weekend-outline::before{content:"\\F0EDA"}.mdi-call-made::before{content:"\\F00F7"}.mdi-call-merge::before{content:"\\F00F8"}.mdi-call-missed::before{content:"\\F00F9"}.mdi-call-received::before{content:"\\F00FA"}.mdi-call-split::before{content:"\\F00FB"}.mdi-camcorder::before{content:"\\F00FC"}.mdi-camcorder-off::before{content:"\\F00FF"}.mdi-camera::before{content:"\\F0100"}.mdi-camera-account::before{content:"\\F08CB"}.mdi-camera-burst::before{content:"\\F0693"}.mdi-camera-control::before{content:"\\F0B69"}.mdi-camera-enhance::before{content:"\\F0101"}.mdi-camera-enhance-outline::before{content:"\\F0B6A"}.mdi-camera-front::before{content:"\\F0102"}.mdi-camera-front-variant::before{content:"\\F0103"}.mdi-camera-gopro::before{content:"\\F07A1"}.mdi-camera-image::before{content:"\\F08CC"}.mdi-camera-iris::before{content:"\\F0104"}.mdi-camera-metering-center::before{content:"\\F07A2"}.mdi-camera-metering-matrix::before{content:"\\F07A3"}.mdi-camera-metering-partial::before{content:"\\F07A4"}.mdi-camera-metering-spot::before{content:"\\F07A5"}.mdi-camera-off::before{content:"\\F05DF"}.mdi-camera-outline::before{content:"\\F0D5D"}.mdi-camera-party-mode::before{content:"\\F0105"}.mdi-camera-plus::before{content:"\\F0EDB"}.mdi-camera-plus-outline::before{content:"\\F0EDC"}.mdi-camera-rear::before{content:"\\F0106"}.mdi-camera-rear-variant::before{content:"\\F0107"}.mdi-camera-retake::before{content:"\\F0E19"}.mdi-camera-retake-outline::before{content:"\\F0E1A"}.mdi-camera-switch::before{content:"\\F0108"}.mdi-camera-switch-outline::before{content:"\\F084A"}.mdi-camera-timer::before{content:"\\F0109"}.mdi-camera-wireless::before{content:"\\F0DB6"}.mdi-camera-wireless-outline::before{content:"\\F0DB7"}.mdi-campfire::before{content:"\\F0EDD"}.mdi-cancel::before{content:"\\F073A"}.mdi-candle::before{content:"\\F05E2"}.mdi-candycane::before{content:"\\F010A"}.mdi-cannabis::before{content:"\\F07A6"}.mdi-caps-lock::before{content:"\\F0A9B"}.mdi-car::before{content:"\\F010B"}.mdi-car-2-plus::before{content:"\\F1015"}.mdi-car-3-plus::before{content:"\\F1016"}.mdi-car-arrow-left::before{content:"\\F13B2"}.mdi-car-arrow-right::before{content:"\\F13B3"}.mdi-car-back::before{content:"\\F0E1B"}.mdi-car-battery::before{content:"\\F010C"}.mdi-car-brake-abs::before{content:"\\F0C47"}.mdi-car-brake-alert::before{content:"\\F0C48"}.mdi-car-brake-hold::before{content:"\\F0D5E"}.mdi-car-brake-parking::before{content:"\\F0D5F"}.mdi-car-brake-retarder::before{content:"\\F1017"}.mdi-car-child-seat::before{content:"\\F0FA3"}.mdi-car-clutch::before{content:"\\F1018"}.mdi-car-cog::before{content:"\\F13CC"}.mdi-car-connected::before{content:"\\F010D"}.mdi-car-convertible::before{content:"\\F07A7"}.mdi-car-coolant-level::before{content:"\\F1019"}.mdi-car-cruise-control::before{content:"\\F0D60"}.mdi-car-defrost-front::before{content:"\\F0D61"}.mdi-car-defrost-rear::before{content:"\\F0D62"}.mdi-car-door::before{content:"\\F0B6B"}.mdi-car-door-lock::before{content:"\\F109D"}.mdi-car-electric::before{content:"\\F0B6C"}.mdi-car-esp::before{content:"\\F0C49"}.mdi-car-estate::before{content:"\\F07A8"}.mdi-car-hatchback::before{content:"\\F07A9"}.mdi-car-info::before{content:"\\F11BE"}.mdi-car-key::before{content:"\\F0B6D"}.mdi-car-light-dimmed::before{content:"\\F0C4A"}.mdi-car-light-fog::before{content:"\\F0C4B"}.mdi-car-light-high::before{content:"\\F0C4C"}.mdi-car-limousine::before{content:"\\F08CD"}.mdi-car-multiple::before{content:"\\F0B6E"}.mdi-car-off::before{content:"\\F0E1C"}.mdi-car-parking-lights::before{content:"\\F0D63"}.mdi-car-pickup::before{content:"\\F07AA"}.mdi-car-seat::before{content:"\\F0FA4"}.mdi-car-seat-cooler::before{content:"\\F0FA5"}.mdi-car-seat-heater::before{content:"\\F0FA6"}.mdi-car-settings::before{content:"\\F13CD"}.mdi-car-shift-pattern::before{content:"\\F0F40"}.mdi-car-side::before{content:"\\F07AB"}.mdi-car-sports::before{content:"\\F07AC"}.mdi-car-tire-alert::before{content:"\\F0C4D"}.mdi-car-traction-control::before{content:"\\F0D64"}.mdi-car-turbocharger::before{content:"\\F101A"}.mdi-car-wash::before{content:"\\F010E"}.mdi-car-windshield::before{content:"\\F101B"}.mdi-car-windshield-outline::before{content:"\\F101C"}.mdi-carabiner::before{content:"\\F14C0"}.mdi-caravan::before{content:"\\F07AD"}.mdi-card::before{content:"\\F0B6F"}.mdi-card-account-details::before{content:"\\F05D2"}.mdi-card-account-details-outline::before{content:"\\F0DAB"}.mdi-card-account-details-star::before{content:"\\F02A3"}.mdi-card-account-details-star-outline::before{content:"\\F06DB"}.mdi-card-account-mail::before{content:"\\F018E"}.mdi-card-account-mail-outline::before{content:"\\F0E98"}.mdi-card-account-phone::before{content:"\\F0E99"}.mdi-card-account-phone-outline::before{content:"\\F0E9A"}.mdi-card-bulleted::before{content:"\\F0B70"}.mdi-card-bulleted-off::before{content:"\\F0B71"}.mdi-card-bulleted-off-outline::before{content:"\\F0B72"}.mdi-card-bulleted-outline::before{content:"\\F0B73"}.mdi-card-bulleted-settings::before{content:"\\F0B74"}.mdi-card-bulleted-settings-outline::before{content:"\\F0B75"}.mdi-card-outline::before{content:"\\F0B76"}.mdi-card-plus::before{content:"\\F11FF"}.mdi-card-plus-outline::before{content:"\\F1200"}.mdi-card-search::before{content:"\\F1074"}.mdi-card-search-outline::before{content:"\\F1075"}.mdi-card-text::before{content:"\\F0B77"}.mdi-card-text-outline::before{content:"\\F0B78"}.mdi-cards::before{content:"\\F0638"}.mdi-cards-club::before{content:"\\F08CE"}.mdi-cards-diamond::before{content:"\\F08CF"}.mdi-cards-diamond-outline::before{content:"\\F101D"}.mdi-cards-heart::before{content:"\\F08D0"}.mdi-cards-outline::before{content:"\\F0639"}.mdi-cards-playing-outline::before{content:"\\F063A"}.mdi-cards-spade::before{content:"\\F08D1"}.mdi-cards-variant::before{content:"\\F06C7"}.mdi-carrot::before{content:"\\F010F"}.mdi-cart::before{content:"\\F0110"}.mdi-cart-arrow-down::before{content:"\\F0D66"}.mdi-cart-arrow-right::before{content:"\\F0C4E"}.mdi-cart-arrow-up::before{content:"\\F0D67"}.mdi-cart-minus::before{content:"\\F0D68"}.mdi-cart-off::before{content:"\\F066B"}.mdi-cart-outline::before{content:"\\F0111"}.mdi-cart-plus::before{content:"\\F0112"}.mdi-cart-remove::before{content:"\\F0D69"}.mdi-case-sensitive-alt::before{content:"\\F0113"}.mdi-cash::before{content:"\\F0114"}.mdi-cash-100::before{content:"\\F0115"}.mdi-cash-marker::before{content:"\\F0DB8"}.mdi-cash-minus::before{content:"\\F1260"}.mdi-cash-multiple::before{content:"\\F0116"}.mdi-cash-plus::before{content:"\\F1261"}.mdi-cash-refund::before{content:"\\F0A9C"}.mdi-cash-register::before{content:"\\F0CF4"}.mdi-cash-remove::before{content:"\\F1262"}.mdi-cash-usd::before{content:"\\F1176"}.mdi-cash-usd-outline::before{content:"\\F0117"}.mdi-cassette::before{content:"\\F09D4"}.mdi-cast::before{content:"\\F0118"}.mdi-cast-audio::before{content:"\\F101E"}.mdi-cast-connected::before{content:"\\F0119"}.mdi-cast-education::before{content:"\\F0E1D"}.mdi-cast-off::before{content:"\\F078A"}.mdi-castle::before{content:"\\F011A"}.mdi-cat::before{content:"\\F011B"}.mdi-cctv::before{content:"\\F07AE"}.mdi-ceiling-light::before{content:"\\F0769"}.mdi-cellphone::before{content:"\\F011C"}.mdi-cellphone-android::before{content:"\\F011D"}.mdi-cellphone-arrow-down::before{content:"\\F09D5"}.mdi-cellphone-basic::before{content:"\\F011E"}.mdi-cellphone-charging::before{content:"\\F1397"}.mdi-cellphone-cog::before{content:"\\F0951"}.mdi-cellphone-dock::before{content:"\\F011F"}.mdi-cellphone-erase::before{content:"\\F094D"}.mdi-cellphone-information::before{content:"\\F0F41"}.mdi-cellphone-iphone::before{content:"\\F0120"}.mdi-cellphone-key::before{content:"\\F094E"}.mdi-cellphone-link::before{content:"\\F0121"}.mdi-cellphone-link-off::before{content:"\\F0122"}.mdi-cellphone-lock::before{content:"\\F094F"}.mdi-cellphone-message::before{content:"\\F08D3"}.mdi-cellphone-message-off::before{content:"\\F10D2"}.mdi-cellphone-nfc::before{content:"\\F0E90"}.mdi-cellphone-nfc-off::before{content:"\\F12D8"}.mdi-cellphone-off::before{content:"\\F0950"}.mdi-cellphone-play::before{content:"\\F101F"}.mdi-cellphone-screenshot::before{content:"\\F0A35"}.mdi-cellphone-settings::before{content:"\\F0123"}.mdi-cellphone-sound::before{content:"\\F0952"}.mdi-cellphone-text::before{content:"\\F08D2"}.mdi-cellphone-wireless::before{content:"\\F0815"}.mdi-celtic-cross::before{content:"\\F0CF5"}.mdi-centos::before{content:"\\F111A"}.mdi-certificate::before{content:"\\F0124"}.mdi-certificate-outline::before{content:"\\F1188"}.mdi-chair-rolling::before{content:"\\F0F48"}.mdi-chair-school::before{content:"\\F0125"}.mdi-charity::before{content:"\\F0C4F"}.mdi-chart-arc::before{content:"\\F0126"}.mdi-chart-areaspline::before{content:"\\F0127"}.mdi-chart-areaspline-variant::before{content:"\\F0E91"}.mdi-chart-bar::before{content:"\\F0128"}.mdi-chart-bar-stacked::before{content:"\\F076A"}.mdi-chart-bell-curve::before{content:"\\F0C50"}.mdi-chart-bell-curve-cumulative::before{content:"\\F0FA7"}.mdi-chart-bubble::before{content:"\\F05E3"}.mdi-chart-donut::before{content:"\\F07AF"}.mdi-chart-donut-variant::before{content:"\\F07B0"}.mdi-chart-gantt::before{content:"\\F066C"}.mdi-chart-histogram::before{content:"\\F0129"}.mdi-chart-line::before{content:"\\F012A"}.mdi-chart-line-stacked::before{content:"\\F076B"}.mdi-chart-line-variant::before{content:"\\F07B1"}.mdi-chart-multiline::before{content:"\\F08D4"}.mdi-chart-multiple::before{content:"\\F1213"}.mdi-chart-pie::before{content:"\\F012B"}.mdi-chart-ppf::before{content:"\\F1380"}.mdi-chart-sankey::before{content:"\\F11DF"}.mdi-chart-sankey-variant::before{content:"\\F11E0"}.mdi-chart-scatter-plot::before{content:"\\F0E92"}.mdi-chart-scatter-plot-hexbin::before{content:"\\F066D"}.mdi-chart-timeline::before{content:"\\F066E"}.mdi-chart-timeline-variant::before{content:"\\F0E93"}.mdi-chart-tree::before{content:"\\F0E94"}.mdi-chat::before{content:"\\F0B79"}.mdi-chat-alert::before{content:"\\F0B7A"}.mdi-chat-alert-outline::before{content:"\\F12C9"}.mdi-chat-minus::before{content:"\\F1410"}.mdi-chat-minus-outline::before{content:"\\F1413"}.mdi-chat-outline::before{content:"\\F0EDE"}.mdi-chat-plus::before{content:"\\F140F"}.mdi-chat-plus-outline::before{content:"\\F1412"}.mdi-chat-processing::before{content:"\\F0B7B"}.mdi-chat-processing-outline::before{content:"\\F12CA"}.mdi-chat-remove::before{content:"\\F1411"}.mdi-chat-remove-outline::before{content:"\\F1414"}.mdi-chat-sleep::before{content:"\\F12D1"}.mdi-chat-sleep-outline::before{content:"\\F12D2"}.mdi-check::before{content:"\\F012C"}.mdi-check-all::before{content:"\\F012D"}.mdi-check-bold::before{content:"\\F0E1E"}.mdi-check-box-multiple-outline::before{content:"\\F0C51"}.mdi-check-box-outline::before{content:"\\F0C52"}.mdi-check-circle::before{content:"\\F05E0"}.mdi-check-circle-outline::before{content:"\\F05E1"}.mdi-check-decagram::before{content:"\\F0791"}.mdi-check-network::before{content:"\\F0C53"}.mdi-check-network-outline::before{content:"\\F0C54"}.mdi-check-outline::before{content:"\\F0855"}.mdi-check-underline::before{content:"\\F0E1F"}.mdi-check-underline-circle::before{content:"\\F0E20"}.mdi-check-underline-circle-outline::before{content:"\\F0E21"}.mdi-checkbook::before{content:"\\F0A9D"}.mdi-checkbox-blank::before{content:"\\F012E"}.mdi-checkbox-blank-circle::before{content:"\\F012F"}.mdi-checkbox-blank-circle-outline::before{content:"\\F0130"}.mdi-checkbox-blank-off::before{content:"\\F12EC"}.mdi-checkbox-blank-off-outline::before{content:"\\F12ED"}.mdi-checkbox-blank-outline::before{content:"\\F0131"}.mdi-checkbox-intermediate::before{content:"\\F0856"}.mdi-checkbox-marked::before{content:"\\F0132"}.mdi-checkbox-marked-circle::before{content:"\\F0133"}.mdi-checkbox-marked-circle-outline::before{content:"\\F0134"}.mdi-checkbox-marked-outline::before{content:"\\F0135"}.mdi-checkbox-multiple-blank::before{content:"\\F0136"}.mdi-checkbox-multiple-blank-circle::before{content:"\\F063B"}.mdi-checkbox-multiple-blank-circle-outline::before{content:"\\F063C"}.mdi-checkbox-multiple-blank-outline::before{content:"\\F0137"}.mdi-checkbox-multiple-marked::before{content:"\\F0138"}.mdi-checkbox-multiple-marked-circle::before{content:"\\F063D"}.mdi-checkbox-multiple-marked-circle-outline::before{content:"\\F063E"}.mdi-checkbox-multiple-marked-outline::before{content:"\\F0139"}.mdi-checkerboard::before{content:"\\F013A"}.mdi-checkerboard-minus::before{content:"\\F1202"}.mdi-checkerboard-plus::before{content:"\\F1201"}.mdi-checkerboard-remove::before{content:"\\F1203"}.mdi-cheese::before{content:"\\F12B9"}.mdi-cheese-off::before{content:"\\F13EE"}.mdi-chef-hat::before{content:"\\F0B7C"}.mdi-chemical-weapon::before{content:"\\F013B"}.mdi-chess-bishop::before{content:"\\F085C"}.mdi-chess-king::before{content:"\\F0857"}.mdi-chess-knight::before{content:"\\F0858"}.mdi-chess-pawn::before{content:"\\F0859"}.mdi-chess-queen::before{content:"\\F085A"}.mdi-chess-rook::before{content:"\\F085B"}.mdi-chevron-double-down::before{content:"\\F013C"}.mdi-chevron-double-left::before{content:"\\F013D"}.mdi-chevron-double-right::before{content:"\\F013E"}.mdi-chevron-double-up::before{content:"\\F013F"}.mdi-chevron-down::before{content:"\\F0140"}.mdi-chevron-down-box::before{content:"\\F09D6"}.mdi-chevron-down-box-outline::before{content:"\\F09D7"}.mdi-chevron-down-circle::before{content:"\\F0B26"}.mdi-chevron-down-circle-outline::before{content:"\\F0B27"}.mdi-chevron-left::before{content:"\\F0141"}.mdi-chevron-left-box::before{content:"\\F09D8"}.mdi-chevron-left-box-outline::before{content:"\\F09D9"}.mdi-chevron-left-circle::before{content:"\\F0B28"}.mdi-chevron-left-circle-outline::before{content:"\\F0B29"}.mdi-chevron-right::before{content:"\\F0142"}.mdi-chevron-right-box::before{content:"\\F09DA"}.mdi-chevron-right-box-outline::before{content:"\\F09DB"}.mdi-chevron-right-circle::before{content:"\\F0B2A"}.mdi-chevron-right-circle-outline::before{content:"\\F0B2B"}.mdi-chevron-triple-down::before{content:"\\F0DB9"}.mdi-chevron-triple-left::before{content:"\\F0DBA"}.mdi-chevron-triple-right::before{content:"\\F0DBB"}.mdi-chevron-triple-up::before{content:"\\F0DBC"}.mdi-chevron-up::before{content:"\\F0143"}.mdi-chevron-up-box::before{content:"\\F09DC"}.mdi-chevron-up-box-outline::before{content:"\\F09DD"}.mdi-chevron-up-circle::before{content:"\\F0B2C"}.mdi-chevron-up-circle-outline::before{content:"\\F0B2D"}.mdi-chili-hot::before{content:"\\F07B2"}.mdi-chili-medium::before{content:"\\F07B3"}.mdi-chili-mild::before{content:"\\F07B4"}.mdi-chili-off::before{content:"\\F1467"}.mdi-chip::before{content:"\\F061A"}.mdi-christianity::before{content:"\\F0953"}.mdi-christianity-outline::before{content:"\\F0CF6"}.mdi-church::before{content:"\\F0144"}.mdi-cigar::before{content:"\\F1189"}.mdi-cigar-off::before{content:"\\F141B"}.mdi-circle::before{content:"\\F0765"}.mdi-circle-double::before{content:"\\F0E95"}.mdi-circle-edit-outline::before{content:"\\F08D5"}.mdi-circle-expand::before{content:"\\F0E96"}.mdi-circle-half::before{content:"\\F1395"}.mdi-circle-half-full::before{content:"\\F1396"}.mdi-circle-medium::before{content:"\\F09DE"}.mdi-circle-multiple::before{content:"\\F0B38"}.mdi-circle-multiple-outline::before{content:"\\F0695"}.mdi-circle-off-outline::before{content:"\\F10D3"}.mdi-circle-outline::before{content:"\\F0766"}.mdi-circle-slice-1::before{content:"\\F0A9E"}.mdi-circle-slice-2::before{content:"\\F0A9F"}.mdi-circle-slice-3::before{content:"\\F0AA0"}.mdi-circle-slice-4::before{content:"\\F0AA1"}.mdi-circle-slice-5::before{content:"\\F0AA2"}.mdi-circle-slice-6::before{content:"\\F0AA3"}.mdi-circle-slice-7::before{content:"\\F0AA4"}.mdi-circle-slice-8::before{content:"\\F0AA5"}.mdi-circle-small::before{content:"\\F09DF"}.mdi-circular-saw::before{content:"\\F0E22"}.mdi-city::before{content:"\\F0146"}.mdi-city-variant::before{content:"\\F0A36"}.mdi-city-variant-outline::before{content:"\\F0A37"}.mdi-clipboard::before{content:"\\F0147"}.mdi-clipboard-account::before{content:"\\F0148"}.mdi-clipboard-account-outline::before{content:"\\F0C55"}.mdi-clipboard-alert::before{content:"\\F0149"}.mdi-clipboard-alert-outline::before{content:"\\F0CF7"}.mdi-clipboard-arrow-down::before{content:"\\F014A"}.mdi-clipboard-arrow-down-outline::before{content:"\\F0C56"}.mdi-clipboard-arrow-left::before{content:"\\F014B"}.mdi-clipboard-arrow-left-outline::before{content:"\\F0CF8"}.mdi-clipboard-arrow-right::before{content:"\\F0CF9"}.mdi-clipboard-arrow-right-outline::before{content:"\\F0CFA"}.mdi-clipboard-arrow-up::before{content:"\\F0C57"}.mdi-clipboard-arrow-up-outline::before{content:"\\F0C58"}.mdi-clipboard-check::before{content:"\\F014E"}.mdi-clipboard-check-multiple::before{content:"\\F1263"}.mdi-clipboard-check-multiple-outline::before{content:"\\F1264"}.mdi-clipboard-check-outline::before{content:"\\F08A8"}.mdi-clipboard-file::before{content:"\\F1265"}.mdi-clipboard-file-outline::before{content:"\\F1266"}.mdi-clipboard-flow::before{content:"\\F06C8"}.mdi-clipboard-flow-outline::before{content:"\\F1117"}.mdi-clipboard-list::before{content:"\\F10D4"}.mdi-clipboard-list-outline::before{content:"\\F10D5"}.mdi-clipboard-multiple::before{content:"\\F1267"}.mdi-clipboard-multiple-outline::before{content:"\\F1268"}.mdi-clipboard-outline::before{content:"\\F014C"}.mdi-clipboard-play::before{content:"\\F0C59"}.mdi-clipboard-play-multiple::before{content:"\\F1269"}.mdi-clipboard-play-multiple-outline::before{content:"\\F126A"}.mdi-clipboard-play-outline::before{content:"\\F0C5A"}.mdi-clipboard-plus::before{content:"\\F0751"}.mdi-clipboard-plus-outline::before{content:"\\F131F"}.mdi-clipboard-pulse::before{content:"\\F085D"}.mdi-clipboard-pulse-outline::before{content:"\\F085E"}.mdi-clipboard-text::before{content:"\\F014D"}.mdi-clipboard-text-multiple::before{content:"\\F126B"}.mdi-clipboard-text-multiple-outline::before{content:"\\F126C"}.mdi-clipboard-text-outline::before{content:"\\F0A38"}.mdi-clipboard-text-play::before{content:"\\F0C5B"}.mdi-clipboard-text-play-outline::before{content:"\\F0C5C"}.mdi-clippy::before{content:"\\F014F"}.mdi-clock::before{content:"\\F0954"}.mdi-clock-alert::before{content:"\\F0955"}.mdi-clock-alert-outline::before{content:"\\F05CE"}.mdi-clock-check::before{content:"\\F0FA8"}.mdi-clock-check-outline::before{content:"\\F0FA9"}.mdi-clock-digital::before{content:"\\F0E97"}.mdi-clock-end::before{content:"\\F0151"}.mdi-clock-fast::before{content:"\\F0152"}.mdi-clock-in::before{content:"\\F0153"}.mdi-clock-out::before{content:"\\F0154"}.mdi-clock-outline::before{content:"\\F0150"}.mdi-clock-start::before{content:"\\F0155"}.mdi-clock-time-eight::before{content:"\\F1446"}.mdi-clock-time-eight-outline::before{content:"\\F1452"}.mdi-clock-time-eleven::before{content:"\\F1449"}.mdi-clock-time-eleven-outline::before{content:"\\F1455"}.mdi-clock-time-five::before{content:"\\F1443"}.mdi-clock-time-five-outline::before{content:"\\F144F"}.mdi-clock-time-four::before{content:"\\F1442"}.mdi-clock-time-four-outline::before{content:"\\F144E"}.mdi-clock-time-nine::before{content:"\\F1447"}.mdi-clock-time-nine-outline::before{content:"\\F1453"}.mdi-clock-time-one::before{content:"\\F143F"}.mdi-clock-time-one-outline::before{content:"\\F144B"}.mdi-clock-time-seven::before{content:"\\F1445"}.mdi-clock-time-seven-outline::before{content:"\\F1451"}.mdi-clock-time-six::before{content:"\\F1444"}.mdi-clock-time-six-outline::before{content:"\\F1450"}.mdi-clock-time-ten::before{content:"\\F1448"}.mdi-clock-time-ten-outline::before{content:"\\F1454"}.mdi-clock-time-three::before{content:"\\F1441"}.mdi-clock-time-three-outline::before{content:"\\F144D"}.mdi-clock-time-twelve::before{content:"\\F144A"}.mdi-clock-time-twelve-outline::before{content:"\\F1456"}.mdi-clock-time-two::before{content:"\\F1440"}.mdi-clock-time-two-outline::before{content:"\\F144C"}.mdi-close::before{content:"\\F0156"}.mdi-close-box::before{content:"\\F0157"}.mdi-close-box-multiple::before{content:"\\F0C5D"}.mdi-close-box-multiple-outline::before{content:"\\F0C5E"}.mdi-close-box-outline::before{content:"\\F0158"}.mdi-close-circle::before{content:"\\F0159"}.mdi-close-circle-multiple::before{content:"\\F062A"}.mdi-close-circle-multiple-outline::before{content:"\\F0883"}.mdi-close-circle-outline::before{content:"\\F015A"}.mdi-close-network::before{content:"\\F015B"}.mdi-close-network-outline::before{content:"\\F0C5F"}.mdi-close-octagon::before{content:"\\F015C"}.mdi-close-octagon-outline::before{content:"\\F015D"}.mdi-close-outline::before{content:"\\F06C9"}.mdi-close-thick::before{content:"\\F1398"}.mdi-closed-caption::before{content:"\\F015E"}.mdi-closed-caption-outline::before{content:"\\F0DBD"}.mdi-cloud::before{content:"\\F015F"}.mdi-cloud-alert::before{content:"\\F09E0"}.mdi-cloud-braces::before{content:"\\F07B5"}.mdi-cloud-check::before{content:"\\F0160"}.mdi-cloud-check-outline::before{content:"\\F12CC"}.mdi-cloud-circle::before{content:"\\F0161"}.mdi-cloud-download::before{content:"\\F0162"}.mdi-cloud-download-outline::before{content:"\\F0B7D"}.mdi-cloud-lock::before{content:"\\F11F1"}.mdi-cloud-lock-outline::before{content:"\\F11F2"}.mdi-cloud-off-outline::before{content:"\\F0164"}.mdi-cloud-outline::before{content:"\\F0163"}.mdi-cloud-print::before{content:"\\F0165"}.mdi-cloud-print-outline::before{content:"\\F0166"}.mdi-cloud-question::before{content:"\\F0A39"}.mdi-cloud-refresh::before{content:"\\F052A"}.mdi-cloud-search::before{content:"\\F0956"}.mdi-cloud-search-outline::before{content:"\\F0957"}.mdi-cloud-sync::before{content:"\\F063F"}.mdi-cloud-sync-outline::before{content:"\\F12D6"}.mdi-cloud-tags::before{content:"\\F07B6"}.mdi-cloud-upload::before{content:"\\F0167"}.mdi-cloud-upload-outline::before{content:"\\F0B7E"}.mdi-clover::before{content:"\\F0816"}.mdi-coach-lamp::before{content:"\\F1020"}.mdi-coat-rack::before{content:"\\F109E"}.mdi-code-array::before{content:"\\F0168"}.mdi-code-braces::before{content:"\\F0169"}.mdi-code-braces-box::before{content:"\\F10D6"}.mdi-code-brackets::before{content:"\\F016A"}.mdi-code-equal::before{content:"\\F016B"}.mdi-code-greater-than::before{content:"\\F016C"}.mdi-code-greater-than-or-equal::before{content:"\\F016D"}.mdi-code-json::before{content:"\\F0626"}.mdi-code-less-than::before{content:"\\F016E"}.mdi-code-less-than-or-equal::before{content:"\\F016F"}.mdi-code-not-equal::before{content:"\\F0170"}.mdi-code-not-equal-variant::before{content:"\\F0171"}.mdi-code-parentheses::before{content:"\\F0172"}.mdi-code-parentheses-box::before{content:"\\F10D7"}.mdi-code-string::before{content:"\\F0173"}.mdi-code-tags::before{content:"\\F0174"}.mdi-code-tags-check::before{content:"\\F0694"}.mdi-codepen::before{content:"\\F0175"}.mdi-coffee::before{content:"\\F0176"}.mdi-coffee-maker::before{content:"\\F109F"}.mdi-coffee-off::before{content:"\\F0FAA"}.mdi-coffee-off-outline::before{content:"\\F0FAB"}.mdi-coffee-outline::before{content:"\\F06CA"}.mdi-coffee-to-go::before{content:"\\F0177"}.mdi-coffee-to-go-outline::before{content:"\\F130E"}.mdi-coffin::before{content:"\\F0B7F"}.mdi-cog::before{content:"\\F0493"}.mdi-cog-box::before{content:"\\F0494"}.mdi-cog-clockwise::before{content:"\\F11DD"}.mdi-cog-counterclockwise::before{content:"\\F11DE"}.mdi-cog-off::before{content:"\\F13CE"}.mdi-cog-off-outline::before{content:"\\F13CF"}.mdi-cog-outline::before{content:"\\F08BB"}.mdi-cog-refresh::before{content:"\\F145E"}.mdi-cog-refresh-outline::before{content:"\\F145F"}.mdi-cog-sync::before{content:"\\F1460"}.mdi-cog-sync-outline::before{content:"\\F1461"}.mdi-cog-transfer::before{content:"\\F105B"}.mdi-cog-transfer-outline::before{content:"\\F105C"}.mdi-cogs::before{content:"\\F08D6"}.mdi-collage::before{content:"\\F0640"}.mdi-collapse-all::before{content:"\\F0AA6"}.mdi-collapse-all-outline::before{content:"\\F0AA7"}.mdi-color-helper::before{content:"\\F0179"}.mdi-comma::before{content:"\\F0E23"}.mdi-comma-box::before{content:"\\F0E2B"}.mdi-comma-box-outline::before{content:"\\F0E24"}.mdi-comma-circle::before{content:"\\F0E25"}.mdi-comma-circle-outline::before{content:"\\F0E26"}.mdi-comment::before{content:"\\F017A"}.mdi-comment-account::before{content:"\\F017B"}.mdi-comment-account-outline::before{content:"\\F017C"}.mdi-comment-alert::before{content:"\\F017D"}.mdi-comment-alert-outline::before{content:"\\F017E"}.mdi-comment-arrow-left::before{content:"\\F09E1"}.mdi-comment-arrow-left-outline::before{content:"\\F09E2"}.mdi-comment-arrow-right::before{content:"\\F09E3"}.mdi-comment-arrow-right-outline::before{content:"\\F09E4"}.mdi-comment-check::before{content:"\\F017F"}.mdi-comment-check-outline::before{content:"\\F0180"}.mdi-comment-edit::before{content:"\\F11BF"}.mdi-comment-edit-outline::before{content:"\\F12C4"}.mdi-comment-eye::before{content:"\\F0A3A"}.mdi-comment-eye-outline::before{content:"\\F0A3B"}.mdi-comment-multiple::before{content:"\\F085F"}.mdi-comment-multiple-outline::before{content:"\\F0181"}.mdi-comment-outline::before{content:"\\F0182"}.mdi-comment-plus::before{content:"\\F09E5"}.mdi-comment-plus-outline::before{content:"\\F0183"}.mdi-comment-processing::before{content:"\\F0184"}.mdi-comment-processing-outline::before{content:"\\F0185"}.mdi-comment-question::before{content:"\\F0817"}.mdi-comment-question-outline::before{content:"\\F0186"}.mdi-comment-quote::before{content:"\\F1021"}.mdi-comment-quote-outline::before{content:"\\F1022"}.mdi-comment-remove::before{content:"\\F05DE"}.mdi-comment-remove-outline::before{content:"\\F0187"}.mdi-comment-search::before{content:"\\F0A3C"}.mdi-comment-search-outline::before{content:"\\F0A3D"}.mdi-comment-text::before{content:"\\F0188"}.mdi-comment-text-multiple::before{content:"\\F0860"}.mdi-comment-text-multiple-outline::before{content:"\\F0861"}.mdi-comment-text-outline::before{content:"\\F0189"}.mdi-compare::before{content:"\\F018A"}.mdi-compare-horizontal::before{content:"\\F1492"}.mdi-compare-vertical::before{content:"\\F1493"}.mdi-compass::before{content:"\\F018B"}.mdi-compass-off::before{content:"\\F0B80"}.mdi-compass-off-outline::before{content:"\\F0B81"}.mdi-compass-outline::before{content:"\\F018C"}.mdi-compass-rose::before{content:"\\F1382"}.mdi-concourse-ci::before{content:"\\F10A0"}.mdi-console::before{content:"\\F018D"}.mdi-console-line::before{content:"\\F07B7"}.mdi-console-network::before{content:"\\F08A9"}.mdi-console-network-outline::before{content:"\\F0C60"}.mdi-consolidate::before{content:"\\F10D8"}.mdi-contactless-payment::before{content:"\\F0D6A"}.mdi-contactless-payment-circle::before{content:"\\F0321"}.mdi-contactless-payment-circle-outline::before{content:"\\F0408"}.mdi-contacts::before{content:"\\F06CB"}.mdi-contacts-outline::before{content:"\\F05B8"}.mdi-contain::before{content:"\\F0A3E"}.mdi-contain-end::before{content:"\\F0A3F"}.mdi-contain-start::before{content:"\\F0A40"}.mdi-content-copy::before{content:"\\F018F"}.mdi-content-cut::before{content:"\\F0190"}.mdi-content-duplicate::before{content:"\\F0191"}.mdi-content-paste::before{content:"\\F0192"}.mdi-content-save::before{content:"\\F0193"}.mdi-content-save-alert::before{content:"\\F0F42"}.mdi-content-save-alert-outline::before{content:"\\F0F43"}.mdi-content-save-all::before{content:"\\F0194"}.mdi-content-save-all-outline::before{content:"\\F0F44"}.mdi-content-save-cog::before{content:"\\F145B"}.mdi-content-save-cog-outline::before{content:"\\F145C"}.mdi-content-save-edit::before{content:"\\F0CFB"}.mdi-content-save-edit-outline::before{content:"\\F0CFC"}.mdi-content-save-move::before{content:"\\F0E27"}.mdi-content-save-move-outline::before{content:"\\F0E28"}.mdi-content-save-outline::before{content:"\\F0818"}.mdi-content-save-settings::before{content:"\\F061B"}.mdi-content-save-settings-outline::before{content:"\\F0B2E"}.mdi-contrast::before{content:"\\F0195"}.mdi-contrast-box::before{content:"\\F0196"}.mdi-contrast-circle::before{content:"\\F0197"}.mdi-controller-classic::before{content:"\\F0B82"}.mdi-controller-classic-outline::before{content:"\\F0B83"}.mdi-cookie::before{content:"\\F0198"}.mdi-coolant-temperature::before{content:"\\F03C8"}.mdi-copyright::before{content:"\\F05E6"}.mdi-cordova::before{content:"\\F0958"}.mdi-corn::before{content:"\\F07B8"}.mdi-corn-off::before{content:"\\F13EF"}.mdi-cosine-wave::before{content:"\\F1479"}.mdi-counter::before{content:"\\F0199"}.mdi-cow::before{content:"\\F019A"}.mdi-cpu-32-bit::before{content:"\\F0EDF"}.mdi-cpu-64-bit::before{content:"\\F0EE0"}.mdi-crane::before{content:"\\F0862"}.mdi-creation::before{content:"\\F0674"}.mdi-creative-commons::before{content:"\\F0D6B"}.mdi-credit-card::before{content:"\\F0FEF"}.mdi-credit-card-check::before{content:"\\F13D0"}.mdi-credit-card-check-outline::before{content:"\\F13D1"}.mdi-credit-card-clock::before{content:"\\F0EE1"}.mdi-credit-card-clock-outline::before{content:"\\F0EE2"}.mdi-credit-card-marker::before{content:"\\F06A8"}.mdi-credit-card-marker-outline::before{content:"\\F0DBE"}.mdi-credit-card-minus::before{content:"\\F0FAC"}.mdi-credit-card-minus-outline::before{content:"\\F0FAD"}.mdi-credit-card-multiple::before{content:"\\F0FF0"}.mdi-credit-card-multiple-outline::before{content:"\\F019C"}.mdi-credit-card-off::before{content:"\\F0FF1"}.mdi-credit-card-off-outline::before{content:"\\F05E4"}.mdi-credit-card-outline::before{content:"\\F019B"}.mdi-credit-card-plus::before{content:"\\F0FF2"}.mdi-credit-card-plus-outline::before{content:"\\F0676"}.mdi-credit-card-refund::before{content:"\\F0FF3"}.mdi-credit-card-refund-outline::before{content:"\\F0AA8"}.mdi-credit-card-remove::before{content:"\\F0FAE"}.mdi-credit-card-remove-outline::before{content:"\\F0FAF"}.mdi-credit-card-scan::before{content:"\\F0FF4"}.mdi-credit-card-scan-outline::before{content:"\\F019D"}.mdi-credit-card-settings::before{content:"\\F0FF5"}.mdi-credit-card-settings-outline::before{content:"\\F08D7"}.mdi-credit-card-wireless::before{content:"\\F0802"}.mdi-credit-card-wireless-off::before{content:"\\F057A"}.mdi-credit-card-wireless-off-outline::before{content:"\\F057B"}.mdi-credit-card-wireless-outline::before{content:"\\F0D6C"}.mdi-cricket::before{content:"\\F0D6D"}.mdi-crop::before{content:"\\F019E"}.mdi-crop-free::before{content:"\\F019F"}.mdi-crop-landscape::before{content:"\\F01A0"}.mdi-crop-portrait::before{content:"\\F01A1"}.mdi-crop-rotate::before{content:"\\F0696"}.mdi-crop-square::before{content:"\\F01A2"}.mdi-crosshairs::before{content:"\\F01A3"}.mdi-crosshairs-gps::before{content:"\\F01A4"}.mdi-crosshairs-off::before{content:"\\F0F45"}.mdi-crosshairs-question::before{content:"\\F1136"}.mdi-crown::before{content:"\\F01A5"}.mdi-crown-outline::before{content:"\\F11D0"}.mdi-cryengine::before{content:"\\F0959"}.mdi-crystal-ball::before{content:"\\F0B2F"}.mdi-cube::before{content:"\\F01A6"}.mdi-cube-off::before{content:"\\F141C"}.mdi-cube-off-outline::before{content:"\\F141D"}.mdi-cube-outline::before{content:"\\F01A7"}.mdi-cube-scan::before{content:"\\F0B84"}.mdi-cube-send::before{content:"\\F01A8"}.mdi-cube-unfolded::before{content:"\\F01A9"}.mdi-cup::before{content:"\\F01AA"}.mdi-cup-off::before{content:"\\F05E5"}.mdi-cup-off-outline::before{content:"\\F137D"}.mdi-cup-outline::before{content:"\\F130F"}.mdi-cup-water::before{content:"\\F01AB"}.mdi-cupboard::before{content:"\\F0F46"}.mdi-cupboard-outline::before{content:"\\F0F47"}.mdi-cupcake::before{content:"\\F095A"}.mdi-curling::before{content:"\\F0863"}.mdi-currency-bdt::before{content:"\\F0864"}.mdi-currency-brl::before{content:"\\F0B85"}.mdi-currency-btc::before{content:"\\F01AC"}.mdi-currency-cny::before{content:"\\F07BA"}.mdi-currency-eth::before{content:"\\F07BB"}.mdi-currency-eur::before{content:"\\F01AD"}.mdi-currency-eur-off::before{content:"\\F1315"}.mdi-currency-gbp::before{content:"\\F01AE"}.mdi-currency-ils::before{content:"\\F0C61"}.mdi-currency-inr::before{content:"\\F01AF"}.mdi-currency-jpy::before{content:"\\F07BC"}.mdi-currency-krw::before{content:"\\F07BD"}.mdi-currency-kzt::before{content:"\\F0865"}.mdi-currency-ngn::before{content:"\\F01B0"}.mdi-currency-php::before{content:"\\F09E6"}.mdi-currency-rial::before{content:"\\F0E9C"}.mdi-currency-rub::before{content:"\\F01B1"}.mdi-currency-sign::before{content:"\\F07BE"}.mdi-currency-try::before{content:"\\F01B2"}.mdi-currency-twd::before{content:"\\F07BF"}.mdi-currency-usd::before{content:"\\F01C1"}.mdi-currency-usd-circle::before{content:"\\F116B"}.mdi-currency-usd-circle-outline::before{content:"\\F0178"}.mdi-currency-usd-off::before{content:"\\F067A"}.mdi-current-ac::before{content:"\\F1480"}.mdi-current-dc::before{content:"\\F095C"}.mdi-cursor-default::before{content:"\\F01C0"}.mdi-cursor-default-click::before{content:"\\F0CFD"}.mdi-cursor-default-click-outline::before{content:"\\F0CFE"}.mdi-cursor-default-gesture::before{content:"\\F1127"}.mdi-cursor-default-gesture-outline::before{content:"\\F1128"}.mdi-cursor-default-outline::before{content:"\\F01BF"}.mdi-cursor-move::before{content:"\\F01BE"}.mdi-cursor-pointer::before{content:"\\F01BD"}.mdi-cursor-text::before{content:"\\F05E7"}.mdi-database::before{content:"\\F01BC"}.mdi-database-check::before{content:"\\F0AA9"}.mdi-database-edit::before{content:"\\F0B86"}.mdi-database-export::before{content:"\\F095E"}.mdi-database-import::before{content:"\\F095D"}.mdi-database-lock::before{content:"\\F0AAA"}.mdi-database-marker::before{content:"\\F12F6"}.mdi-database-minus::before{content:"\\F01BB"}.mdi-database-plus::before{content:"\\F01BA"}.mdi-database-refresh::before{content:"\\F05C2"}.mdi-database-remove::before{content:"\\F0D00"}.mdi-database-search::before{content:"\\F0866"}.mdi-database-settings::before{content:"\\F0D01"}.mdi-database-sync::before{content:"\\F0CFF"}.mdi-death-star::before{content:"\\F08D8"}.mdi-death-star-variant::before{content:"\\F08D9"}.mdi-deathly-hallows::before{content:"\\F0B87"}.mdi-debian::before{content:"\\F08DA"}.mdi-debug-step-into::before{content:"\\F01B9"}.mdi-debug-step-out::before{content:"\\F01B8"}.mdi-debug-step-over::before{content:"\\F01B7"}.mdi-decagram::before{content:"\\F076C"}.mdi-decagram-outline::before{content:"\\F076D"}.mdi-decimal::before{content:"\\F10A1"}.mdi-decimal-comma::before{content:"\\F10A2"}.mdi-decimal-comma-decrease::before{content:"\\F10A3"}.mdi-decimal-comma-increase::before{content:"\\F10A4"}.mdi-decimal-decrease::before{content:"\\F01B6"}.mdi-decimal-increase::before{content:"\\F01B5"}.mdi-delete::before{content:"\\F01B4"}.mdi-delete-alert::before{content:"\\F10A5"}.mdi-delete-alert-outline::before{content:"\\F10A6"}.mdi-delete-circle::before{content:"\\F0683"}.mdi-delete-circle-outline::before{content:"\\F0B88"}.mdi-delete-empty::before{content:"\\F06CC"}.mdi-delete-empty-outline::before{content:"\\F0E9D"}.mdi-delete-forever::before{content:"\\F05E8"}.mdi-delete-forever-outline::before{content:"\\F0B89"}.mdi-delete-off::before{content:"\\F10A7"}.mdi-delete-off-outline::before{content:"\\F10A8"}.mdi-delete-outline::before{content:"\\F09E7"}.mdi-delete-restore::before{content:"\\F0819"}.mdi-delete-sweep::before{content:"\\F05E9"}.mdi-delete-sweep-outline::before{content:"\\F0C62"}.mdi-delete-variant::before{content:"\\F01B3"}.mdi-delta::before{content:"\\F01C2"}.mdi-desk::before{content:"\\F1239"}.mdi-desk-lamp::before{content:"\\F095F"}.mdi-deskphone::before{content:"\\F01C3"}.mdi-desktop-classic::before{content:"\\F07C0"}.mdi-desktop-mac::before{content:"\\F01C4"}.mdi-desktop-mac-dashboard::before{content:"\\F09E8"}.mdi-desktop-tower::before{content:"\\F01C5"}.mdi-desktop-tower-monitor::before{content:"\\F0AAB"}.mdi-details::before{content:"\\F01C6"}.mdi-dev-to::before{content:"\\F0D6E"}.mdi-developer-board::before{content:"\\F0697"}.mdi-deviantart::before{content:"\\F01C7"}.mdi-devices::before{content:"\\F0FB0"}.mdi-diabetes::before{content:"\\F1126"}.mdi-dialpad::before{content:"\\F061C"}.mdi-diameter::before{content:"\\F0C63"}.mdi-diameter-outline::before{content:"\\F0C64"}.mdi-diameter-variant::before{content:"\\F0C65"}.mdi-diamond::before{content:"\\F0B8A"}.mdi-diamond-outline::before{content:"\\F0B8B"}.mdi-diamond-stone::before{content:"\\F01C8"}.mdi-dice-1::before{content:"\\F01CA"}.mdi-dice-1-outline::before{content:"\\F114A"}.mdi-dice-2::before{content:"\\F01CB"}.mdi-dice-2-outline::before{content:"\\F114B"}.mdi-dice-3::before{content:"\\F01CC"}.mdi-dice-3-outline::before{content:"\\F114C"}.mdi-dice-4::before{content:"\\F01CD"}.mdi-dice-4-outline::before{content:"\\F114D"}.mdi-dice-5::before{content:"\\F01CE"}.mdi-dice-5-outline::before{content:"\\F114E"}.mdi-dice-6::before{content:"\\F01CF"}.mdi-dice-6-outline::before{content:"\\F114F"}.mdi-dice-d10::before{content:"\\F1153"}.mdi-dice-d10-outline::before{content:"\\F076F"}.mdi-dice-d12::before{content:"\\F1154"}.mdi-dice-d12-outline::before{content:"\\F0867"}.mdi-dice-d20::before{content:"\\F1155"}.mdi-dice-d20-outline::before{content:"\\F05EA"}.mdi-dice-d4::before{content:"\\F1150"}.mdi-dice-d4-outline::before{content:"\\F05EB"}.mdi-dice-d6::before{content:"\\F1151"}.mdi-dice-d6-outline::before{content:"\\F05ED"}.mdi-dice-d8::before{content:"\\F1152"}.mdi-dice-d8-outline::before{content:"\\F05EC"}.mdi-dice-multiple::before{content:"\\F076E"}.mdi-dice-multiple-outline::before{content:"\\F1156"}.mdi-digital-ocean::before{content:"\\F1237"}.mdi-dip-switch::before{content:"\\F07C1"}.mdi-directions::before{content:"\\F01D0"}.mdi-directions-fork::before{content:"\\F0641"}.mdi-disc::before{content:"\\F05EE"}.mdi-disc-alert::before{content:"\\F01D1"}.mdi-disc-player::before{content:"\\F0960"}.mdi-discord::before{content:"\\F066F"}.mdi-dishwasher::before{content:"\\F0AAC"}.mdi-dishwasher-alert::before{content:"\\F11B8"}.mdi-dishwasher-off::before{content:"\\F11B9"}.mdi-disqus::before{content:"\\F01D2"}.mdi-distribute-horizontal-center::before{content:"\\F11C9"}.mdi-distribute-horizontal-left::before{content:"\\F11C8"}.mdi-distribute-horizontal-right::before{content:"\\F11CA"}.mdi-distribute-vertical-bottom::before{content:"\\F11CB"}.mdi-distribute-vertical-center::before{content:"\\F11CC"}.mdi-distribute-vertical-top::before{content:"\\F11CD"}.mdi-diving-flippers::before{content:"\\F0DBF"}.mdi-diving-helmet::before{content:"\\F0DC0"}.mdi-diving-scuba::before{content:"\\F0DC1"}.mdi-diving-scuba-flag::before{content:"\\F0DC2"}.mdi-diving-scuba-tank::before{content:"\\F0DC3"}.mdi-diving-scuba-tank-multiple::before{content:"\\F0DC4"}.mdi-diving-snorkel::before{content:"\\F0DC5"}.mdi-division::before{content:"\\F01D4"}.mdi-division-box::before{content:"\\F01D5"}.mdi-dlna::before{content:"\\F0A41"}.mdi-dna::before{content:"\\F0684"}.mdi-dns::before{content:"\\F01D6"}.mdi-dns-outline::before{content:"\\F0B8C"}.mdi-do-not-disturb::before{content:"\\F0698"}.mdi-do-not-disturb-off::before{content:"\\F0699"}.mdi-dock-bottom::before{content:"\\F10A9"}.mdi-dock-left::before{content:"\\F10AA"}.mdi-dock-right::before{content:"\\F10AB"}.mdi-dock-window::before{content:"\\F10AC"}.mdi-docker::before{content:"\\F0868"}.mdi-doctor::before{content:"\\F0A42"}.mdi-dog::before{content:"\\F0A43"}.mdi-dog-service::before{content:"\\F0AAD"}.mdi-dog-side::before{content:"\\F0A44"}.mdi-dolby::before{content:"\\F06B3"}.mdi-dolly::before{content:"\\F0E9E"}.mdi-domain::before{content:"\\F01D7"}.mdi-domain-off::before{content:"\\F0D6F"}.mdi-domain-plus::before{content:"\\F10AD"}.mdi-domain-remove::before{content:"\\F10AE"}.mdi-dome-light::before{content:"\\F141E"}.mdi-domino-mask::before{content:"\\F1023"}.mdi-donkey::before{content:"\\F07C2"}.mdi-door::before{content:"\\F081A"}.mdi-door-closed::before{content:"\\F081B"}.mdi-door-closed-lock::before{content:"\\F10AF"}.mdi-door-open::before{content:"\\F081C"}.mdi-doorbell::before{content:"\\F12E6"}.mdi-doorbell-video::before{content:"\\F0869"}.mdi-dot-net::before{content:"\\F0AAE"}.mdi-dots-horizontal::before{content:"\\F01D8"}.mdi-dots-horizontal-circle::before{content:"\\F07C3"}.mdi-dots-horizontal-circle-outline::before{content:"\\F0B8D"}.mdi-dots-vertical::before{content:"\\F01D9"}.mdi-dots-vertical-circle::before{content:"\\F07C4"}.mdi-dots-vertical-circle-outline::before{content:"\\F0B8E"}.mdi-douban::before{content:"\\F069A"}.mdi-download::before{content:"\\F01DA"}.mdi-download-box::before{content:"\\F1462"}.mdi-download-box-outline::before{content:"\\F1463"}.mdi-download-circle::before{content:"\\F1464"}.mdi-download-circle-outline::before{content:"\\F1465"}.mdi-download-lock::before{content:"\\F1320"}.mdi-download-lock-outline::before{content:"\\F1321"}.mdi-download-multiple::before{content:"\\F09E9"}.mdi-download-network::before{content:"\\F06F4"}.mdi-download-network-outline::before{content:"\\F0C66"}.mdi-download-off::before{content:"\\F10B0"}.mdi-download-off-outline::before{content:"\\F10B1"}.mdi-download-outline::before{content:"\\F0B8F"}.mdi-drag::before{content:"\\F01DB"}.mdi-drag-horizontal::before{content:"\\F01DC"}.mdi-drag-horizontal-variant::before{content:"\\F12F0"}.mdi-drag-variant::before{content:"\\F0B90"}.mdi-drag-vertical::before{content:"\\F01DD"}.mdi-drag-vertical-variant::before{content:"\\F12F1"}.mdi-drama-masks::before{content:"\\F0D02"}.mdi-draw::before{content:"\\F0F49"}.mdi-drawing::before{content:"\\F01DE"}.mdi-drawing-box::before{content:"\\F01DF"}.mdi-dresser::before{content:"\\F0F4A"}.mdi-dresser-outline::before{content:"\\F0F4B"}.mdi-drone::before{content:"\\F01E2"}.mdi-dropbox::before{content:"\\F01E3"}.mdi-drupal::before{content:"\\F01E4"}.mdi-duck::before{content:"\\F01E5"}.mdi-dumbbell::before{content:"\\F01E6"}.mdi-dump-truck::before{content:"\\F0C67"}.mdi-ear-hearing::before{content:"\\F07C5"}.mdi-ear-hearing-off::before{content:"\\F0A45"}.mdi-earth::before{content:"\\F01E7"}.mdi-earth-arrow-right::before{content:"\\F1311"}.mdi-earth-box::before{content:"\\F06CD"}.mdi-earth-box-minus::before{content:"\\F1407"}.mdi-earth-box-off::before{content:"\\F06CE"}.mdi-earth-box-plus::before{content:"\\F1406"}.mdi-earth-box-remove::before{content:"\\F1408"}.mdi-earth-minus::before{content:"\\F1404"}.mdi-earth-off::before{content:"\\F01E8"}.mdi-earth-plus::before{content:"\\F1403"}.mdi-earth-remove::before{content:"\\F1405"}.mdi-egg::before{content:"\\F0AAF"}.mdi-egg-easter::before{content:"\\F0AB0"}.mdi-egg-off::before{content:"\\F13F0"}.mdi-egg-off-outline::before{content:"\\F13F1"}.mdi-egg-outline::before{content:"\\F13F2"}.mdi-eight-track::before{content:"\\F09EA"}.mdi-eject::before{content:"\\F01EA"}.mdi-eject-outline::before{content:"\\F0B91"}.mdi-electric-switch::before{content:"\\F0E9F"}.mdi-electric-switch-closed::before{content:"\\F10D9"}.mdi-electron-framework::before{content:"\\F1024"}.mdi-elephant::before{content:"\\F07C6"}.mdi-elevation-decline::before{content:"\\F01EB"}.mdi-elevation-rise::before{content:"\\F01EC"}.mdi-elevator::before{content:"\\F01ED"}.mdi-elevator-down::before{content:"\\F12C2"}.mdi-elevator-passenger::before{content:"\\F1381"}.mdi-elevator-up::before{content:"\\F12C1"}.mdi-ellipse::before{content:"\\F0EA0"}.mdi-ellipse-outline::before{content:"\\F0EA1"}.mdi-email::before{content:"\\F01EE"}.mdi-email-alert::before{content:"\\F06CF"}.mdi-email-alert-outline::before{content:"\\F0D42"}.mdi-email-box::before{content:"\\F0D03"}.mdi-email-check::before{content:"\\F0AB1"}.mdi-email-check-outline::before{content:"\\F0AB2"}.mdi-email-edit::before{content:"\\F0EE3"}.mdi-email-edit-outline::before{content:"\\F0EE4"}.mdi-email-lock::before{content:"\\F01F1"}.mdi-email-mark-as-unread::before{content:"\\F0B92"}.mdi-email-minus::before{content:"\\F0EE5"}.mdi-email-minus-outline::before{content:"\\F0EE6"}.mdi-email-multiple::before{content:"\\F0EE7"}.mdi-email-multiple-outline::before{content:"\\F0EE8"}.mdi-email-newsletter::before{content:"\\F0FB1"}.mdi-email-off::before{content:"\\F13E3"}.mdi-email-off-outline::before{content:"\\F13E4"}.mdi-email-open::before{content:"\\F01EF"}.mdi-email-open-multiple::before{content:"\\F0EE9"}.mdi-email-open-multiple-outline::before{content:"\\F0EEA"}.mdi-email-open-outline::before{content:"\\F05EF"}.mdi-email-outline::before{content:"\\F01F0"}.mdi-email-plus::before{content:"\\F09EB"}.mdi-email-plus-outline::before{content:"\\F09EC"}.mdi-email-receive::before{content:"\\F10DA"}.mdi-email-receive-outline::before{content:"\\F10DB"}.mdi-email-search::before{content:"\\F0961"}.mdi-email-search-outline::before{content:"\\F0962"}.mdi-email-send::before{content:"\\F10DC"}.mdi-email-send-outline::before{content:"\\F10DD"}.mdi-email-sync::before{content:"\\F12C7"}.mdi-email-sync-outline::before{content:"\\F12C8"}.mdi-email-variant::before{content:"\\F05F0"}.mdi-ember::before{content:"\\F0B30"}.mdi-emby::before{content:"\\F06B4"}.mdi-emoticon::before{content:"\\F0C68"}.mdi-emoticon-angry::before{content:"\\F0C69"}.mdi-emoticon-angry-outline::before{content:"\\F0C6A"}.mdi-emoticon-confused::before{content:"\\F10DE"}.mdi-emoticon-confused-outline::before{content:"\\F10DF"}.mdi-emoticon-cool::before{content:"\\F0C6B"}.mdi-emoticon-cool-outline::before{content:"\\F01F3"}.mdi-emoticon-cry::before{content:"\\F0C6C"}.mdi-emoticon-cry-outline::before{content:"\\F0C6D"}.mdi-emoticon-dead::before{content:"\\F0C6E"}.mdi-emoticon-dead-outline::before{content:"\\F069B"}.mdi-emoticon-devil::before{content:"\\F0C6F"}.mdi-emoticon-devil-outline::before{content:"\\F01F4"}.mdi-emoticon-excited::before{content:"\\F0C70"}.mdi-emoticon-excited-outline::before{content:"\\F069C"}.mdi-emoticon-frown::before{content:"\\F0F4C"}.mdi-emoticon-frown-outline::before{content:"\\F0F4D"}.mdi-emoticon-happy::before{content:"\\F0C71"}.mdi-emoticon-happy-outline::before{content:"\\F01F5"}.mdi-emoticon-kiss::before{content:"\\F0C72"}.mdi-emoticon-kiss-outline::before{content:"\\F0C73"}.mdi-emoticon-lol::before{content:"\\F1214"}.mdi-emoticon-lol-outline::before{content:"\\F1215"}.mdi-emoticon-neutral::before{content:"\\F0C74"}.mdi-emoticon-neutral-outline::before{content:"\\F01F6"}.mdi-emoticon-outline::before{content:"\\F01F2"}.mdi-emoticon-poop::before{content:"\\F01F7"}.mdi-emoticon-poop-outline::before{content:"\\F0C75"}.mdi-emoticon-sad::before{content:"\\F0C76"}.mdi-emoticon-sad-outline::before{content:"\\F01F8"}.mdi-emoticon-tongue::before{content:"\\F01F9"}.mdi-emoticon-tongue-outline::before{content:"\\F0C77"}.mdi-emoticon-wink::before{content:"\\F0C78"}.mdi-emoticon-wink-outline::before{content:"\\F0C79"}.mdi-engine::before{content:"\\F01FA"}.mdi-engine-off::before{content:"\\F0A46"}.mdi-engine-off-outline::before{content:"\\F0A47"}.mdi-engine-outline::before{content:"\\F01FB"}.mdi-epsilon::before{content:"\\F10E0"}.mdi-equal::before{content:"\\F01FC"}.mdi-equal-box::before{content:"\\F01FD"}.mdi-equalizer::before{content:"\\F0EA2"}.mdi-equalizer-outline::before{content:"\\F0EA3"}.mdi-eraser::before{content:"\\F01FE"}.mdi-eraser-variant::before{content:"\\F0642"}.mdi-escalator::before{content:"\\F01FF"}.mdi-escalator-box::before{content:"\\F1399"}.mdi-escalator-down::before{content:"\\F12C0"}.mdi-escalator-up::before{content:"\\F12BF"}.mdi-eslint::before{content:"\\F0C7A"}.mdi-et::before{content:"\\F0AB3"}.mdi-ethereum::before{content:"\\F086A"}.mdi-ethernet::before{content:"\\F0200"}.mdi-ethernet-cable::before{content:"\\F0201"}.mdi-ethernet-cable-off::before{content:"\\F0202"}.mdi-ev-station::before{content:"\\F05F1"}.mdi-evernote::before{content:"\\F0204"}.mdi-excavator::before{content:"\\F1025"}.mdi-exclamation::before{content:"\\F0205"}.mdi-exclamation-thick::before{content:"\\F1238"}.mdi-exit-run::before{content:"\\F0A48"}.mdi-exit-to-app::before{content:"\\F0206"}.mdi-expand-all::before{content:"\\F0AB4"}.mdi-expand-all-outline::before{content:"\\F0AB5"}.mdi-expansion-card::before{content:"\\F08AE"}.mdi-expansion-card-variant::before{content:"\\F0FB2"}.mdi-exponent::before{content:"\\F0963"}.mdi-exponent-box::before{content:"\\F0964"}.mdi-export::before{content:"\\F0207"}.mdi-export-variant::before{content:"\\F0B93"}.mdi-eye::before{content:"\\F0208"}.mdi-eye-check::before{content:"\\F0D04"}.mdi-eye-check-outline::before{content:"\\F0D05"}.mdi-eye-circle::before{content:"\\F0B94"}.mdi-eye-circle-outline::before{content:"\\F0B95"}.mdi-eye-minus::before{content:"\\F1026"}.mdi-eye-minus-outline::before{content:"\\F1027"}.mdi-eye-off::before{content:"\\F0209"}.mdi-eye-off-outline::before{content:"\\F06D1"}.mdi-eye-outline::before{content:"\\F06D0"}.mdi-eye-plus::before{content:"\\F086B"}.mdi-eye-plus-outline::before{content:"\\F086C"}.mdi-eye-settings::before{content:"\\F086D"}.mdi-eye-settings-outline::before{content:"\\F086E"}.mdi-eyedropper::before{content:"\\F020A"}.mdi-eyedropper-minus::before{content:"\\F13DD"}.mdi-eyedropper-off::before{content:"\\F13DF"}.mdi-eyedropper-plus::before{content:"\\F13DC"}.mdi-eyedropper-remove::before{content:"\\F13DE"}.mdi-eyedropper-variant::before{content:"\\F020B"}.mdi-face::before{content:"\\F0643"}.mdi-face-agent::before{content:"\\F0D70"}.mdi-face-outline::before{content:"\\F0B96"}.mdi-face-profile::before{content:"\\F0644"}.mdi-face-profile-woman::before{content:"\\F1076"}.mdi-face-recognition::before{content:"\\F0C7B"}.mdi-face-woman::before{content:"\\F1077"}.mdi-face-woman-outline::before{content:"\\F1078"}.mdi-facebook::before{content:"\\F020C"}.mdi-facebook-messenger::before{content:"\\F020E"}.mdi-facebook-workplace::before{content:"\\F0B31"}.mdi-factory::before{content:"\\F020F"}.mdi-fan::before{content:"\\F0210"}.mdi-fan-alert::before{content:"\\F146C"}.mdi-fan-chevron-down::before{content:"\\F146D"}.mdi-fan-chevron-up::before{content:"\\F146E"}.mdi-fan-minus::before{content:"\\F1470"}.mdi-fan-off::before{content:"\\F081D"}.mdi-fan-plus::before{content:"\\F146F"}.mdi-fan-remove::before{content:"\\F1471"}.mdi-fan-speed-1::before{content:"\\F1472"}.mdi-fan-speed-2::before{content:"\\F1473"}.mdi-fan-speed-3::before{content:"\\F1474"}.mdi-fast-forward::before{content:"\\F0211"}.mdi-fast-forward-10::before{content:"\\F0D71"}.mdi-fast-forward-30::before{content:"\\F0D06"}.mdi-fast-forward-5::before{content:"\\F11F8"}.mdi-fast-forward-outline::before{content:"\\F06D2"}.mdi-fax::before{content:"\\F0212"}.mdi-feather::before{content:"\\F06D3"}.mdi-feature-search::before{content:"\\F0A49"}.mdi-feature-search-outline::before{content:"\\F0A4A"}.mdi-fedora::before{content:"\\F08DB"}.mdi-fencing::before{content:"\\F14C1"}.mdi-ferris-wheel::before{content:"\\F0EA4"}.mdi-ferry::before{content:"\\F0213"}.mdi-file::before{content:"\\F0214"}.mdi-file-account::before{content:"\\F073B"}.mdi-file-account-outline::before{content:"\\F1028"}.mdi-file-alert::before{content:"\\F0A4B"}.mdi-file-alert-outline::before{content:"\\F0A4C"}.mdi-file-cabinet::before{content:"\\F0AB6"}.mdi-file-cad::before{content:"\\F0EEB"}.mdi-file-cad-box::before{content:"\\F0EEC"}.mdi-file-cancel::before{content:"\\F0DC6"}.mdi-file-cancel-outline::before{content:"\\F0DC7"}.mdi-file-certificate::before{content:"\\F1186"}.mdi-file-certificate-outline::before{content:"\\F1187"}.mdi-file-chart::before{content:"\\F0215"}.mdi-file-chart-outline::before{content:"\\F1029"}.mdi-file-check::before{content:"\\F0216"}.mdi-file-check-outline::before{content:"\\F0E29"}.mdi-file-clock::before{content:"\\F12E1"}.mdi-file-clock-outline::before{content:"\\F12E2"}.mdi-file-cloud::before{content:"\\F0217"}.mdi-file-cloud-outline::before{content:"\\F102A"}.mdi-file-code::before{content:"\\F022E"}.mdi-file-code-outline::before{content:"\\F102B"}.mdi-file-cog::before{content:"\\F107B"}.mdi-file-cog-outline::before{content:"\\F107C"}.mdi-file-compare::before{content:"\\F08AA"}.mdi-file-delimited::before{content:"\\F0218"}.mdi-file-delimited-outline::before{content:"\\F0EA5"}.mdi-file-document::before{content:"\\F0219"}.mdi-file-document-edit::before{content:"\\F0DC8"}.mdi-file-document-edit-outline::before{content:"\\F0DC9"}.mdi-file-document-outline::before{content:"\\F09EE"}.mdi-file-download::before{content:"\\F0965"}.mdi-file-download-outline::before{content:"\\F0966"}.mdi-file-edit::before{content:"\\F11E7"}.mdi-file-edit-outline::before{content:"\\F11E8"}.mdi-file-excel::before{content:"\\F021B"}.mdi-file-excel-box::before{content:"\\F021C"}.mdi-file-excel-box-outline::before{content:"\\F102C"}.mdi-file-excel-outline::before{content:"\\F102D"}.mdi-file-export::before{content:"\\F021D"}.mdi-file-export-outline::before{content:"\\F102E"}.mdi-file-eye::before{content:"\\F0DCA"}.mdi-file-eye-outline::before{content:"\\F0DCB"}.mdi-file-find::before{content:"\\F021E"}.mdi-file-find-outline::before{content:"\\F0B97"}.mdi-file-hidden::before{content:"\\F0613"}.mdi-file-image::before{content:"\\F021F"}.mdi-file-image-outline::before{content:"\\F0EB0"}.mdi-file-import::before{content:"\\F0220"}.mdi-file-import-outline::before{content:"\\F102F"}.mdi-file-key::before{content:"\\F1184"}.mdi-file-key-outline::before{content:"\\F1185"}.mdi-file-link::before{content:"\\F1177"}.mdi-file-link-outline::before{content:"\\F1178"}.mdi-file-lock::before{content:"\\F0221"}.mdi-file-lock-outline::before{content:"\\F1030"}.mdi-file-move::before{content:"\\F0AB9"}.mdi-file-move-outline::before{content:"\\F1031"}.mdi-file-multiple::before{content:"\\F0222"}.mdi-file-multiple-outline::before{content:"\\F1032"}.mdi-file-music::before{content:"\\F0223"}.mdi-file-music-outline::before{content:"\\F0E2A"}.mdi-file-outline::before{content:"\\F0224"}.mdi-file-pdf::before{content:"\\F0225"}.mdi-file-pdf-box::before{content:"\\F0226"}.mdi-file-pdf-box-outline::before{content:"\\F0FB3"}.mdi-file-pdf-outline::before{content:"\\F0E2D"}.mdi-file-percent::before{content:"\\F081E"}.mdi-file-percent-outline::before{content:"\\F1033"}.mdi-file-phone::before{content:"\\F1179"}.mdi-file-phone-outline::before{content:"\\F117A"}.mdi-file-plus::before{content:"\\F0752"}.mdi-file-plus-outline::before{content:"\\F0EED"}.mdi-file-powerpoint::before{content:"\\F0227"}.mdi-file-powerpoint-box::before{content:"\\F0228"}.mdi-file-powerpoint-box-outline::before{content:"\\F1034"}.mdi-file-powerpoint-outline::before{content:"\\F1035"}.mdi-file-presentation-box::before{content:"\\F0229"}.mdi-file-question::before{content:"\\F086F"}.mdi-file-question-outline::before{content:"\\F1036"}.mdi-file-refresh::before{content:"\\F0918"}.mdi-file-refresh-outline::before{content:"\\F0541"}.mdi-file-remove::before{content:"\\F0B98"}.mdi-file-remove-outline::before{content:"\\F1037"}.mdi-file-replace::before{content:"\\F0B32"}.mdi-file-replace-outline::before{content:"\\F0B33"}.mdi-file-restore::before{content:"\\F0670"}.mdi-file-restore-outline::before{content:"\\F1038"}.mdi-file-search::before{content:"\\F0C7C"}.mdi-file-search-outline::before{content:"\\F0C7D"}.mdi-file-send::before{content:"\\F022A"}.mdi-file-send-outline::before{content:"\\F1039"}.mdi-file-settings::before{content:"\\F1079"}.mdi-file-settings-outline::before{content:"\\F107A"}.mdi-file-star::before{content:"\\F103A"}.mdi-file-star-outline::before{content:"\\F103B"}.mdi-file-swap::before{content:"\\F0FB4"}.mdi-file-swap-outline::before{content:"\\F0FB5"}.mdi-file-sync::before{content:"\\F1216"}.mdi-file-sync-outline::before{content:"\\F1217"}.mdi-file-table::before{content:"\\F0C7E"}.mdi-file-table-box::before{content:"\\F10E1"}.mdi-file-table-box-multiple::before{content:"\\F10E2"}.mdi-file-table-box-multiple-outline::before{content:"\\F10E3"}.mdi-file-table-box-outline::before{content:"\\F10E4"}.mdi-file-table-outline::before{content:"\\F0C7F"}.mdi-file-tree::before{content:"\\F0645"}.mdi-file-tree-outline::before{content:"\\F13D2"}.mdi-file-undo::before{content:"\\F08DC"}.mdi-file-undo-outline::before{content:"\\F103C"}.mdi-file-upload::before{content:"\\F0A4D"}.mdi-file-upload-outline::before{content:"\\F0A4E"}.mdi-file-video::before{content:"\\F022B"}.mdi-file-video-outline::before{content:"\\F0E2C"}.mdi-file-word::before{content:"\\F022C"}.mdi-file-word-box::before{content:"\\F022D"}.mdi-file-word-box-outline::before{content:"\\F103D"}.mdi-file-word-outline::before{content:"\\F103E"}.mdi-film::before{content:"\\F022F"}.mdi-filmstrip::before{content:"\\F0230"}.mdi-filmstrip-box::before{content:"\\F0332"}.mdi-filmstrip-box-multiple::before{content:"\\F0D18"}.mdi-filmstrip-off::before{content:"\\F0231"}.mdi-filter::before{content:"\\F0232"}.mdi-filter-menu::before{content:"\\F10E5"}.mdi-filter-menu-outline::before{content:"\\F10E6"}.mdi-filter-minus::before{content:"\\F0EEE"}.mdi-filter-minus-outline::before{content:"\\F0EEF"}.mdi-filter-outline::before{content:"\\F0233"}.mdi-filter-plus::before{content:"\\F0EF0"}.mdi-filter-plus-outline::before{content:"\\F0EF1"}.mdi-filter-remove::before{content:"\\F0234"}.mdi-filter-remove-outline::before{content:"\\F0235"}.mdi-filter-variant::before{content:"\\F0236"}.mdi-filter-variant-minus::before{content:"\\F1112"}.mdi-filter-variant-plus::before{content:"\\F1113"}.mdi-filter-variant-remove::before{content:"\\F103F"}.mdi-finance::before{content:"\\F081F"}.mdi-find-replace::before{content:"\\F06D4"}.mdi-fingerprint::before{content:"\\F0237"}.mdi-fingerprint-off::before{content:"\\F0EB1"}.mdi-fire::before{content:"\\F0238"}.mdi-fire-extinguisher::before{content:"\\F0EF2"}.mdi-fire-hydrant::before{content:"\\F1137"}.mdi-fire-hydrant-alert::before{content:"\\F1138"}.mdi-fire-hydrant-off::before{content:"\\F1139"}.mdi-fire-truck::before{content:"\\F08AB"}.mdi-firebase::before{content:"\\F0967"}.mdi-firefox::before{content:"\\F0239"}.mdi-fireplace::before{content:"\\F0E2E"}.mdi-fireplace-off::before{content:"\\F0E2F"}.mdi-firework::before{content:"\\F0E30"}.mdi-fish::before{content:"\\F023A"}.mdi-fish-off::before{content:"\\F13F3"}.mdi-fishbowl::before{content:"\\F0EF3"}.mdi-fishbowl-outline::before{content:"\\F0EF4"}.mdi-fit-to-page::before{content:"\\F0EF5"}.mdi-fit-to-page-outline::before{content:"\\F0EF6"}.mdi-flag::before{content:"\\F023B"}.mdi-flag-checkered::before{content:"\\F023C"}.mdi-flag-minus::before{content:"\\F0B99"}.mdi-flag-minus-outline::before{content:"\\F10B2"}.mdi-flag-outline::before{content:"\\F023D"}.mdi-flag-plus::before{content:"\\F0B9A"}.mdi-flag-plus-outline::before{content:"\\F10B3"}.mdi-flag-remove::before{content:"\\F0B9B"}.mdi-flag-remove-outline::before{content:"\\F10B4"}.mdi-flag-triangle::before{content:"\\F023F"}.mdi-flag-variant::before{content:"\\F0240"}.mdi-flag-variant-outline::before{content:"\\F023E"}.mdi-flare::before{content:"\\F0D72"}.mdi-flash::before{content:"\\F0241"}.mdi-flash-alert::before{content:"\\F0EF7"}.mdi-flash-alert-outline::before{content:"\\F0EF8"}.mdi-flash-auto::before{content:"\\F0242"}.mdi-flash-circle::before{content:"\\F0820"}.mdi-flash-off::before{content:"\\F0243"}.mdi-flash-outline::before{content:"\\F06D5"}.mdi-flash-red-eye::before{content:"\\F067B"}.mdi-flashlight::before{content:"\\F0244"}.mdi-flashlight-off::before{content:"\\F0245"}.mdi-flask::before{content:"\\F0093"}.mdi-flask-empty::before{content:"\\F0094"}.mdi-flask-empty-minus::before{content:"\\F123A"}.mdi-flask-empty-minus-outline::before{content:"\\F123B"}.mdi-flask-empty-off::before{content:"\\F13F4"}.mdi-flask-empty-off-outline::before{content:"\\F13F5"}.mdi-flask-empty-outline::before{content:"\\F0095"}.mdi-flask-empty-plus::before{content:"\\F123C"}.mdi-flask-empty-plus-outline::before{content:"\\F123D"}.mdi-flask-empty-remove::before{content:"\\F123E"}.mdi-flask-empty-remove-outline::before{content:"\\F123F"}.mdi-flask-minus::before{content:"\\F1240"}.mdi-flask-minus-outline::before{content:"\\F1241"}.mdi-flask-off::before{content:"\\F13F6"}.mdi-flask-off-outline::before{content:"\\F13F7"}.mdi-flask-outline::before{content:"\\F0096"}.mdi-flask-plus::before{content:"\\F1242"}.mdi-flask-plus-outline::before{content:"\\F1243"}.mdi-flask-remove::before{content:"\\F1244"}.mdi-flask-remove-outline::before{content:"\\F1245"}.mdi-flask-round-bottom::before{content:"\\F124B"}.mdi-flask-round-bottom-empty::before{content:"\\F124C"}.mdi-flask-round-bottom-empty-outline::before{content:"\\F124D"}.mdi-flask-round-bottom-outline::before{content:"\\F124E"}.mdi-fleur-de-lis::before{content:"\\F1303"}.mdi-flip-horizontal::before{content:"\\F10E7"}.mdi-flip-to-back::before{content:"\\F0247"}.mdi-flip-to-front::before{content:"\\F0248"}.mdi-flip-vertical::before{content:"\\F10E8"}.mdi-floor-lamp::before{content:"\\F08DD"}.mdi-floor-lamp-dual::before{content:"\\F1040"}.mdi-floor-lamp-variant::before{content:"\\F1041"}.mdi-floor-plan::before{content:"\\F0821"}.mdi-floppy::before{content:"\\F0249"}.mdi-floppy-variant::before{content:"\\F09EF"}.mdi-flower::before{content:"\\F024A"}.mdi-flower-outline::before{content:"\\F09F0"}.mdi-flower-poppy::before{content:"\\F0D08"}.mdi-flower-tulip::before{content:"\\F09F1"}.mdi-flower-tulip-outline::before{content:"\\F09F2"}.mdi-focus-auto::before{content:"\\F0F4E"}.mdi-focus-field::before{content:"\\F0F4F"}.mdi-focus-field-horizontal::before{content:"\\F0F50"}.mdi-focus-field-vertical::before{content:"\\F0F51"}.mdi-folder::before{content:"\\F024B"}.mdi-folder-account::before{content:"\\F024C"}.mdi-folder-account-outline::before{content:"\\F0B9C"}.mdi-folder-alert::before{content:"\\F0DCC"}.mdi-folder-alert-outline::before{content:"\\F0DCD"}.mdi-folder-clock::before{content:"\\F0ABA"}.mdi-folder-clock-outline::before{content:"\\F0ABB"}.mdi-folder-cog::before{content:"\\F107F"}.mdi-folder-cog-outline::before{content:"\\F1080"}.mdi-folder-download::before{content:"\\F024D"}.mdi-folder-download-outline::before{content:"\\F10E9"}.mdi-folder-edit::before{content:"\\F08DE"}.mdi-folder-edit-outline::before{content:"\\F0DCE"}.mdi-folder-google-drive::before{content:"\\F024E"}.mdi-folder-heart::before{content:"\\F10EA"}.mdi-folder-heart-outline::before{content:"\\F10EB"}.mdi-folder-home::before{content:"\\F10B5"}.mdi-folder-home-outline::before{content:"\\F10B6"}.mdi-folder-image::before{content:"\\F024F"}.mdi-folder-information::before{content:"\\F10B7"}.mdi-folder-information-outline::before{content:"\\F10B8"}.mdi-folder-key::before{content:"\\F08AC"}.mdi-folder-key-network::before{content:"\\F08AD"}.mdi-folder-key-network-outline::before{content:"\\F0C80"}.mdi-folder-key-outline::before{content:"\\F10EC"}.mdi-folder-lock::before{content:"\\F0250"}.mdi-folder-lock-open::before{content:"\\F0251"}.mdi-folder-marker::before{content:"\\F126D"}.mdi-folder-marker-outline::before{content:"\\F126E"}.mdi-folder-move::before{content:"\\F0252"}.mdi-folder-move-outline::before{content:"\\F1246"}.mdi-folder-multiple::before{content:"\\F0253"}.mdi-folder-multiple-image::before{content:"\\F0254"}.mdi-folder-multiple-outline::before{content:"\\F0255"}.mdi-folder-multiple-plus::before{content:"\\F147E"}.mdi-folder-multiple-plus-outline::before{content:"\\F147F"}.mdi-folder-music::before{content:"\\F1359"}.mdi-folder-music-outline::before{content:"\\F135A"}.mdi-folder-network::before{content:"\\F0870"}.mdi-folder-network-outline::before{content:"\\F0C81"}.mdi-folder-open::before{content:"\\F0770"}.mdi-folder-open-outline::before{content:"\\F0DCF"}.mdi-folder-outline::before{content:"\\F0256"}.mdi-folder-plus::before{content:"\\F0257"}.mdi-folder-plus-outline::before{content:"\\F0B9D"}.mdi-folder-pound::before{content:"\\F0D09"}.mdi-folder-pound-outline::before{content:"\\F0D0A"}.mdi-folder-refresh::before{content:"\\F0749"}.mdi-folder-refresh-outline::before{content:"\\F0542"}.mdi-folder-remove::before{content:"\\F0258"}.mdi-folder-remove-outline::before{content:"\\F0B9E"}.mdi-folder-search::before{content:"\\F0968"}.mdi-folder-search-outline::before{content:"\\F0969"}.mdi-folder-settings::before{content:"\\F107D"}.mdi-folder-settings-outline::before{content:"\\F107E"}.mdi-folder-star::before{content:"\\F069D"}.mdi-folder-star-multiple::before{content:"\\F13D3"}.mdi-folder-star-multiple-outline::before{content:"\\F13D4"}.mdi-folder-star-outline::before{content:"\\F0B9F"}.mdi-folder-swap::before{content:"\\F0FB6"}.mdi-folder-swap-outline::before{content:"\\F0FB7"}.mdi-folder-sync::before{content:"\\F0D0B"}.mdi-folder-sync-outline::before{content:"\\F0D0C"}.mdi-folder-table::before{content:"\\F12E3"}.mdi-folder-table-outline::before{content:"\\F12E4"}.mdi-folder-text::before{content:"\\F0C82"}.mdi-folder-text-outline::before{content:"\\F0C83"}.mdi-folder-upload::before{content:"\\F0259"}.mdi-folder-upload-outline::before{content:"\\F10ED"}.mdi-folder-zip::before{content:"\\F06EB"}.mdi-folder-zip-outline::before{content:"\\F07B9"}.mdi-font-awesome::before{content:"\\F003A"}.mdi-food::before{content:"\\F025A"}.mdi-food-apple::before{content:"\\F025B"}.mdi-food-apple-outline::before{content:"\\F0C84"}.mdi-food-croissant::before{content:"\\F07C8"}.mdi-food-drumstick::before{content:"\\F141F"}.mdi-food-drumstick-off::before{content:"\\F1468"}.mdi-food-drumstick-off-outline::before{content:"\\F1469"}.mdi-food-drumstick-outline::before{content:"\\F1420"}.mdi-food-fork-drink::before{content:"\\F05F2"}.mdi-food-off::before{content:"\\F05F3"}.mdi-food-steak::before{content:"\\F146A"}.mdi-food-steak-off::before{content:"\\F146B"}.mdi-food-variant::before{content:"\\F025C"}.mdi-food-variant-off::before{content:"\\F13E5"}.mdi-foot-print::before{content:"\\F0F52"}.mdi-football::before{content:"\\F025D"}.mdi-football-australian::before{content:"\\F025E"}.mdi-football-helmet::before{content:"\\F025F"}.mdi-forklift::before{content:"\\F07C9"}.mdi-form-dropdown::before{content:"\\F1400"}.mdi-form-select::before{content:"\\F1401"}.mdi-form-textarea::before{content:"\\F1095"}.mdi-form-textbox::before{content:"\\F060E"}.mdi-form-textbox-lock::before{content:"\\F135D"}.mdi-form-textbox-password::before{content:"\\F07F5"}.mdi-format-align-bottom::before{content:"\\F0753"}.mdi-format-align-center::before{content:"\\F0260"}.mdi-format-align-justify::before{content:"\\F0261"}.mdi-format-align-left::before{content:"\\F0262"}.mdi-format-align-middle::before{content:"\\F0754"}.mdi-format-align-right::before{content:"\\F0263"}.mdi-format-align-top::before{content:"\\F0755"}.mdi-format-annotation-minus::before{content:"\\F0ABC"}.mdi-format-annotation-plus::before{content:"\\F0646"}.mdi-format-bold::before{content:"\\F0264"}.mdi-format-clear::before{content:"\\F0265"}.mdi-format-color-fill::before{content:"\\F0266"}.mdi-format-color-highlight::before{content:"\\F0E31"}.mdi-format-color-marker-cancel::before{content:"\\F1313"}.mdi-format-color-text::before{content:"\\F069E"}.mdi-format-columns::before{content:"\\F08DF"}.mdi-format-float-center::before{content:"\\F0267"}.mdi-format-float-left::before{content:"\\F0268"}.mdi-format-float-none::before{content:"\\F0269"}.mdi-format-float-right::before{content:"\\F026A"}.mdi-format-font::before{content:"\\F06D6"}.mdi-format-font-size-decrease::before{content:"\\F09F3"}.mdi-format-font-size-increase::before{content:"\\F09F4"}.mdi-format-header-1::before{content:"\\F026B"}.mdi-format-header-2::before{content:"\\F026C"}.mdi-format-header-3::before{content:"\\F026D"}.mdi-format-header-4::before{content:"\\F026E"}.mdi-format-header-5::before{content:"\\F026F"}.mdi-format-header-6::before{content:"\\F0270"}.mdi-format-header-decrease::before{content:"\\F0271"}.mdi-format-header-equal::before{content:"\\F0272"}.mdi-format-header-increase::before{content:"\\F0273"}.mdi-format-header-pound::before{content:"\\F0274"}.mdi-format-horizontal-align-center::before{content:"\\F061E"}.mdi-format-horizontal-align-left::before{content:"\\F061F"}.mdi-format-horizontal-align-right::before{content:"\\F0620"}.mdi-format-indent-decrease::before{content:"\\F0275"}.mdi-format-indent-increase::before{content:"\\F0276"}.mdi-format-italic::before{content:"\\F0277"}.mdi-format-letter-case::before{content:"\\F0B34"}.mdi-format-letter-case-lower::before{content:"\\F0B35"}.mdi-format-letter-case-upper::before{content:"\\F0B36"}.mdi-format-letter-ends-with::before{content:"\\F0FB8"}.mdi-format-letter-matches::before{content:"\\F0FB9"}.mdi-format-letter-starts-with::before{content:"\\F0FBA"}.mdi-format-line-spacing::before{content:"\\F0278"}.mdi-format-line-style::before{content:"\\F05C8"}.mdi-format-line-weight::before{content:"\\F05C9"}.mdi-format-list-bulleted::before{content:"\\F0279"}.mdi-format-list-bulleted-square::before{content:"\\F0DD0"}.mdi-format-list-bulleted-triangle::before{content:"\\F0EB2"}.mdi-format-list-bulleted-type::before{content:"\\F027A"}.mdi-format-list-checkbox::before{content:"\\F096A"}.mdi-format-list-checks::before{content:"\\F0756"}.mdi-format-list-numbered::before{content:"\\F027B"}.mdi-format-list-numbered-rtl::before{content:"\\F0D0D"}.mdi-format-list-text::before{content:"\\F126F"}.mdi-format-overline::before{content:"\\F0EB3"}.mdi-format-page-break::before{content:"\\F06D7"}.mdi-format-paint::before{content:"\\F027C"}.mdi-format-paragraph::before{content:"\\F027D"}.mdi-format-pilcrow::before{content:"\\F06D8"}.mdi-format-quote-close::before{content:"\\F027E"}.mdi-format-quote-close-outline::before{content:"\\F11A8"}.mdi-format-quote-open::before{content:"\\F0757"}.mdi-format-quote-open-outline::before{content:"\\F11A7"}.mdi-format-rotate-90::before{content:"\\F06AA"}.mdi-format-section::before{content:"\\F069F"}.mdi-format-size::before{content:"\\F027F"}.mdi-format-strikethrough::before{content:"\\F0280"}.mdi-format-strikethrough-variant::before{content:"\\F0281"}.mdi-format-subscript::before{content:"\\F0282"}.mdi-format-superscript::before{content:"\\F0283"}.mdi-format-text::before{content:"\\F0284"}.mdi-format-text-rotation-angle-down::before{content:"\\F0FBB"}.mdi-format-text-rotation-angle-up::before{content:"\\F0FBC"}.mdi-format-text-rotation-down::before{content:"\\F0D73"}.mdi-format-text-rotation-down-vertical::before{content:"\\F0FBD"}.mdi-format-text-rotation-none::before{content:"\\F0D74"}.mdi-format-text-rotation-up::before{content:"\\F0FBE"}.mdi-format-text-rotation-vertical::before{content:"\\F0FBF"}.mdi-format-text-variant::before{content:"\\F0E32"}.mdi-format-text-wrapping-clip::before{content:"\\F0D0E"}.mdi-format-text-wrapping-overflow::before{content:"\\F0D0F"}.mdi-format-text-wrapping-wrap::before{content:"\\F0D10"}.mdi-format-textbox::before{content:"\\F0D11"}.mdi-format-textdirection-l-to-r::before{content:"\\F0285"}.mdi-format-textdirection-r-to-l::before{content:"\\F0286"}.mdi-format-title::before{content:"\\F05F4"}.mdi-format-underline::before{content:"\\F0287"}.mdi-format-vertical-align-bottom::before{content:"\\F0621"}.mdi-format-vertical-align-center::before{content:"\\F0622"}.mdi-format-vertical-align-top::before{content:"\\F0623"}.mdi-format-wrap-inline::before{content:"\\F0288"}.mdi-format-wrap-square::before{content:"\\F0289"}.mdi-format-wrap-tight::before{content:"\\F028A"}.mdi-format-wrap-top-bottom::before{content:"\\F028B"}.mdi-forum::before{content:"\\F028C"}.mdi-forum-outline::before{content:"\\F0822"}.mdi-forward::before{content:"\\F028D"}.mdi-forwardburger::before{content:"\\F0D75"}.mdi-fountain::before{content:"\\F096B"}.mdi-fountain-pen::before{content:"\\F0D12"}.mdi-fountain-pen-tip::before{content:"\\F0D13"}.mdi-freebsd::before{content:"\\F08E0"}.mdi-frequently-asked-questions::before{content:"\\F0EB4"}.mdi-fridge::before{content:"\\F0290"}.mdi-fridge-alert::before{content:"\\F11B1"}.mdi-fridge-alert-outline::before{content:"\\F11B2"}.mdi-fridge-bottom::before{content:"\\F0292"}.mdi-fridge-off::before{content:"\\F11AF"}.mdi-fridge-off-outline::before{content:"\\F11B0"}.mdi-fridge-outline::before{content:"\\F028F"}.mdi-fridge-top::before{content:"\\F0291"}.mdi-fruit-cherries::before{content:"\\F1042"}.mdi-fruit-cherries-off::before{content:"\\F13F8"}.mdi-fruit-citrus::before{content:"\\F1043"}.mdi-fruit-citrus-off::before{content:"\\F13F9"}.mdi-fruit-grapes::before{content:"\\F1044"}.mdi-fruit-grapes-outline::before{content:"\\F1045"}.mdi-fruit-pineapple::before{content:"\\F1046"}.mdi-fruit-watermelon::before{content:"\\F1047"}.mdi-fuel::before{content:"\\F07CA"}.mdi-fullscreen::before{content:"\\F0293"}.mdi-fullscreen-exit::before{content:"\\F0294"}.mdi-function::before{content:"\\F0295"}.mdi-function-variant::before{content:"\\F0871"}.mdi-furigana-horizontal::before{content:"\\F1081"}.mdi-furigana-vertical::before{content:"\\F1082"}.mdi-fuse::before{content:"\\F0C85"}.mdi-fuse-alert::before{content:"\\F142D"}.mdi-fuse-blade::before{content:"\\F0C86"}.mdi-fuse-off::before{content:"\\F142C"}.mdi-gamepad::before{content:"\\F0296"}.mdi-gamepad-circle::before{content:"\\F0E33"}.mdi-gamepad-circle-down::before{content:"\\F0E34"}.mdi-gamepad-circle-left::before{content:"\\F0E35"}.mdi-gamepad-circle-outline::before{content:"\\F0E36"}.mdi-gamepad-circle-right::before{content:"\\F0E37"}.mdi-gamepad-circle-up::before{content:"\\F0E38"}.mdi-gamepad-down::before{content:"\\F0E39"}.mdi-gamepad-left::before{content:"\\F0E3A"}.mdi-gamepad-right::before{content:"\\F0E3B"}.mdi-gamepad-round::before{content:"\\F0E3C"}.mdi-gamepad-round-down::before{content:"\\F0E3D"}.mdi-gamepad-round-left::before{content:"\\F0E3E"}.mdi-gamepad-round-outline::before{content:"\\F0E3F"}.mdi-gamepad-round-right::before{content:"\\F0E40"}.mdi-gamepad-round-up::before{content:"\\F0E41"}.mdi-gamepad-square::before{content:"\\F0EB5"}.mdi-gamepad-square-outline::before{content:"\\F0EB6"}.mdi-gamepad-up::before{content:"\\F0E42"}.mdi-gamepad-variant::before{content:"\\F0297"}.mdi-gamepad-variant-outline::before{content:"\\F0EB7"}.mdi-gamma::before{content:"\\F10EE"}.mdi-gantry-crane::before{content:"\\F0DD1"}.mdi-garage::before{content:"\\F06D9"}.mdi-garage-alert::before{content:"\\F0872"}.mdi-garage-alert-variant::before{content:"\\F12D5"}.mdi-garage-open::before{content:"\\F06DA"}.mdi-garage-open-variant::before{content:"\\F12D4"}.mdi-garage-variant::before{content:"\\F12D3"}.mdi-gas-cylinder::before{content:"\\F0647"}.mdi-gas-station::before{content:"\\F0298"}.mdi-gas-station-off::before{content:"\\F1409"}.mdi-gas-station-off-outline::before{content:"\\F140A"}.mdi-gas-station-outline::before{content:"\\F0EB8"}.mdi-gate::before{content:"\\F0299"}.mdi-gate-and::before{content:"\\F08E1"}.mdi-gate-arrow-right::before{content:"\\F1169"}.mdi-gate-nand::before{content:"\\F08E2"}.mdi-gate-nor::before{content:"\\F08E3"}.mdi-gate-not::before{content:"\\F08E4"}.mdi-gate-open::before{content:"\\F116A"}.mdi-gate-or::before{content:"\\F08E5"}.mdi-gate-xnor::before{content:"\\F08E6"}.mdi-gate-xor::before{content:"\\F08E7"}.mdi-gatsby::before{content:"\\F0E43"}.mdi-gauge::before{content:"\\F029A"}.mdi-gauge-empty::before{content:"\\F0873"}.mdi-gauge-full::before{content:"\\F0874"}.mdi-gauge-low::before{content:"\\F0875"}.mdi-gavel::before{content:"\\F029B"}.mdi-gender-female::before{content:"\\F029C"}.mdi-gender-male::before{content:"\\F029D"}.mdi-gender-male-female::before{content:"\\F029E"}.mdi-gender-male-female-variant::before{content:"\\F113F"}.mdi-gender-non-binary::before{content:"\\F1140"}.mdi-gender-transgender::before{content:"\\F029F"}.mdi-gentoo::before{content:"\\F08E8"}.mdi-gesture::before{content:"\\F07CB"}.mdi-gesture-double-tap::before{content:"\\F073C"}.mdi-gesture-pinch::before{content:"\\F0ABD"}.mdi-gesture-spread::before{content:"\\F0ABE"}.mdi-gesture-swipe::before{content:"\\F0D76"}.mdi-gesture-swipe-down::before{content:"\\F073D"}.mdi-gesture-swipe-horizontal::before{content:"\\F0ABF"}.mdi-gesture-swipe-left::before{content:"\\F073E"}.mdi-gesture-swipe-right::before{content:"\\F073F"}.mdi-gesture-swipe-up::before{content:"\\F0740"}.mdi-gesture-swipe-vertical::before{content:"\\F0AC0"}.mdi-gesture-tap::before{content:"\\F0741"}.mdi-gesture-tap-box::before{content:"\\F12A9"}.mdi-gesture-tap-button::before{content:"\\F12A8"}.mdi-gesture-tap-hold::before{content:"\\F0D77"}.mdi-gesture-two-double-tap::before{content:"\\F0742"}.mdi-gesture-two-tap::before{content:"\\F0743"}.mdi-ghost::before{content:"\\F02A0"}.mdi-ghost-off::before{content:"\\F09F5"}.mdi-gif::before{content:"\\F0D78"}.mdi-gift::before{content:"\\F0E44"}.mdi-gift-outline::before{content:"\\F02A1"}.mdi-git::before{content:"\\F02A2"}.mdi-github::before{content:"\\F02A4"}.mdi-gitlab::before{content:"\\F0BA0"}.mdi-glass-cocktail::before{content:"\\F0356"}.mdi-glass-flute::before{content:"\\F02A5"}.mdi-glass-mug::before{content:"\\F02A6"}.mdi-glass-mug-variant::before{content:"\\F1116"}.mdi-glass-pint-outline::before{content:"\\F130D"}.mdi-glass-stange::before{content:"\\F02A7"}.mdi-glass-tulip::before{content:"\\F02A8"}.mdi-glass-wine::before{content:"\\F0876"}.mdi-glasses::before{content:"\\F02AA"}.mdi-globe-light::before{content:"\\F12D7"}.mdi-globe-model::before{content:"\\F08E9"}.mdi-gmail::before{content:"\\F02AB"}.mdi-gnome::before{content:"\\F02AC"}.mdi-go-kart::before{content:"\\F0D79"}.mdi-go-kart-track::before{content:"\\F0D7A"}.mdi-gog::before{content:"\\F0BA1"}.mdi-gold::before{content:"\\F124F"}.mdi-golf::before{content:"\\F0823"}.mdi-golf-cart::before{content:"\\F11A4"}.mdi-golf-tee::before{content:"\\F1083"}.mdi-gondola::before{content:"\\F0686"}.mdi-goodreads::before{content:"\\F0D7B"}.mdi-google::before{content:"\\F02AD"}.mdi-google-ads::before{content:"\\F0C87"}.mdi-google-analytics::before{content:"\\F07CC"}.mdi-google-assistant::before{content:"\\F07CD"}.mdi-google-cardboard::before{content:"\\F02AE"}.mdi-google-chrome::before{content:"\\F02AF"}.mdi-google-circles::before{content:"\\F02B0"}.mdi-google-circles-communities::before{content:"\\F02B1"}.mdi-google-circles-extended::before{content:"\\F02B2"}.mdi-google-circles-group::before{content:"\\F02B3"}.mdi-google-classroom::before{content:"\\F02C0"}.mdi-google-cloud::before{content:"\\F11F6"}.mdi-google-controller::before{content:"\\F02B4"}.mdi-google-controller-off::before{content:"\\F02B5"}.mdi-google-downasaur::before{content:"\\F1362"}.mdi-google-drive::before{content:"\\F02B6"}.mdi-google-earth::before{content:"\\F02B7"}.mdi-google-fit::before{content:"\\F096C"}.mdi-google-glass::before{content:"\\F02B8"}.mdi-google-hangouts::before{content:"\\F02C9"}.mdi-google-home::before{content:"\\F0824"}.mdi-google-keep::before{content:"\\F06DC"}.mdi-google-lens::before{content:"\\F09F6"}.mdi-google-maps::before{content:"\\F05F5"}.mdi-google-my-business::before{content:"\\F1048"}.mdi-google-nearby::before{content:"\\F02B9"}.mdi-google-photos::before{content:"\\F06DD"}.mdi-google-play::before{content:"\\F02BC"}.mdi-google-plus::before{content:"\\F02BD"}.mdi-google-podcast::before{content:"\\F0EB9"}.mdi-google-spreadsheet::before{content:"\\F09F7"}.mdi-google-street-view::before{content:"\\F0C88"}.mdi-google-translate::before{content:"\\F02BF"}.mdi-gradient::before{content:"\\F06A0"}.mdi-grain::before{content:"\\F0D7C"}.mdi-graph::before{content:"\\F1049"}.mdi-graph-outline::before{content:"\\F104A"}.mdi-graphql::before{content:"\\F0877"}.mdi-grave-stone::before{content:"\\F0BA2"}.mdi-grease-pencil::before{content:"\\F0648"}.mdi-greater-than::before{content:"\\F096D"}.mdi-greater-than-or-equal::before{content:"\\F096E"}.mdi-grid::before{content:"\\F02C1"}.mdi-grid-large::before{content:"\\F0758"}.mdi-grid-off::before{content:"\\F02C2"}.mdi-grill::before{content:"\\F0E45"}.mdi-grill-outline::before{content:"\\F118A"}.mdi-group::before{content:"\\F02C3"}.mdi-guitar-acoustic::before{content:"\\F0771"}.mdi-guitar-electric::before{content:"\\F02C4"}.mdi-guitar-pick::before{content:"\\F02C5"}.mdi-guitar-pick-outline::before{content:"\\F02C6"}.mdi-guy-fawkes-mask::before{content:"\\F0825"}.mdi-hail::before{content:"\\F0AC1"}.mdi-hair-dryer::before{content:"\\F10EF"}.mdi-hair-dryer-outline::before{content:"\\F10F0"}.mdi-halloween::before{content:"\\F0BA3"}.mdi-hamburger::before{content:"\\F0685"}.mdi-hammer::before{content:"\\F08EA"}.mdi-hammer-screwdriver::before{content:"\\F1322"}.mdi-hammer-wrench::before{content:"\\F1323"}.mdi-hand::before{content:"\\F0A4F"}.mdi-hand-heart::before{content:"\\F10F1"}.mdi-hand-left::before{content:"\\F0E46"}.mdi-hand-okay::before{content:"\\F0A50"}.mdi-hand-peace::before{content:"\\F0A51"}.mdi-hand-peace-variant::before{content:"\\F0A52"}.mdi-hand-pointing-down::before{content:"\\F0A53"}.mdi-hand-pointing-left::before{content:"\\F0A54"}.mdi-hand-pointing-right::before{content:"\\F02C7"}.mdi-hand-pointing-up::before{content:"\\F0A55"}.mdi-hand-right::before{content:"\\F0E47"}.mdi-hand-saw::before{content:"\\F0E48"}.mdi-hand-water::before{content:"\\F139F"}.mdi-handball::before{content:"\\F0F53"}.mdi-handcuffs::before{content:"\\F113E"}.mdi-handshake::before{content:"\\F1218"}.mdi-hanger::before{content:"\\F02C8"}.mdi-hard-hat::before{content:"\\F096F"}.mdi-harddisk::before{content:"\\F02CA"}.mdi-harddisk-plus::before{content:"\\F104B"}.mdi-harddisk-remove::before{content:"\\F104C"}.mdi-hat-fedora::before{content:"\\F0BA4"}.mdi-hazard-lights::before{content:"\\F0C89"}.mdi-hdr::before{content:"\\F0D7D"}.mdi-hdr-off::before{content:"\\F0D7E"}.mdi-head::before{content:"\\F135E"}.mdi-head-alert::before{content:"\\F1338"}.mdi-head-alert-outline::before{content:"\\F1339"}.mdi-head-check::before{content:"\\F133A"}.mdi-head-check-outline::before{content:"\\F133B"}.mdi-head-cog::before{content:"\\F133C"}.mdi-head-cog-outline::before{content:"\\F133D"}.mdi-head-dots-horizontal::before{content:"\\F133E"}.mdi-head-dots-horizontal-outline::before{content:"\\F133F"}.mdi-head-flash::before{content:"\\F1340"}.mdi-head-flash-outline::before{content:"\\F1341"}.mdi-head-heart::before{content:"\\F1342"}.mdi-head-heart-outline::before{content:"\\F1343"}.mdi-head-lightbulb::before{content:"\\F1344"}.mdi-head-lightbulb-outline::before{content:"\\F1345"}.mdi-head-minus::before{content:"\\F1346"}.mdi-head-minus-outline::before{content:"\\F1347"}.mdi-head-outline::before{content:"\\F135F"}.mdi-head-plus::before{content:"\\F1348"}.mdi-head-plus-outline::before{content:"\\F1349"}.mdi-head-question::before{content:"\\F134A"}.mdi-head-question-outline::before{content:"\\F134B"}.mdi-head-remove::before{content:"\\F134C"}.mdi-head-remove-outline::before{content:"\\F134D"}.mdi-head-snowflake::before{content:"\\F134E"}.mdi-head-snowflake-outline::before{content:"\\F134F"}.mdi-head-sync::before{content:"\\F1350"}.mdi-head-sync-outline::before{content:"\\F1351"}.mdi-headphones::before{content:"\\F02CB"}.mdi-headphones-bluetooth::before{content:"\\F0970"}.mdi-headphones-box::before{content:"\\F02CC"}.mdi-headphones-off::before{content:"\\F07CE"}.mdi-headphones-settings::before{content:"\\F02CD"}.mdi-headset::before{content:"\\F02CE"}.mdi-headset-dock::before{content:"\\F02CF"}.mdi-headset-off::before{content:"\\F02D0"}.mdi-heart::before{content:"\\F02D1"}.mdi-heart-box::before{content:"\\F02D2"}.mdi-heart-box-outline::before{content:"\\F02D3"}.mdi-heart-broken::before{content:"\\F02D4"}.mdi-heart-broken-outline::before{content:"\\F0D14"}.mdi-heart-circle::before{content:"\\F0971"}.mdi-heart-circle-outline::before{content:"\\F0972"}.mdi-heart-flash::before{content:"\\F0EF9"}.mdi-heart-half::before{content:"\\F06DF"}.mdi-heart-half-full::before{content:"\\F06DE"}.mdi-heart-half-outline::before{content:"\\F06E0"}.mdi-heart-minus::before{content:"\\F142F"}.mdi-heart-minus-outline::before{content:"\\F1432"}.mdi-heart-multiple::before{content:"\\F0A56"}.mdi-heart-multiple-outline::before{content:"\\F0A57"}.mdi-heart-off::before{content:"\\F0759"}.mdi-heart-off-outline::before{content:"\\F1434"}.mdi-heart-outline::before{content:"\\F02D5"}.mdi-heart-plus::before{content:"\\F142E"}.mdi-heart-plus-outline::before{content:"\\F1431"}.mdi-heart-pulse::before{content:"\\F05F6"}.mdi-heart-remove::before{content:"\\F1430"}.mdi-heart-remove-outline::before{content:"\\F1433"}.mdi-helicopter::before{content:"\\F0AC2"}.mdi-help::before{content:"\\F02D6"}.mdi-help-box::before{content:"\\F078B"}.mdi-help-circle::before{content:"\\F02D7"}.mdi-help-circle-outline::before{content:"\\F0625"}.mdi-help-network::before{content:"\\F06F5"}.mdi-help-network-outline::before{content:"\\F0C8A"}.mdi-help-rhombus::before{content:"\\F0BA5"}.mdi-help-rhombus-outline::before{content:"\\F0BA6"}.mdi-hexadecimal::before{content:"\\F12A7"}.mdi-hexagon::before{content:"\\F02D8"}.mdi-hexagon-multiple::before{content:"\\F06E1"}.mdi-hexagon-multiple-outline::before{content:"\\F10F2"}.mdi-hexagon-outline::before{content:"\\F02D9"}.mdi-hexagon-slice-1::before{content:"\\F0AC3"}.mdi-hexagon-slice-2::before{content:"\\F0AC4"}.mdi-hexagon-slice-3::before{content:"\\F0AC5"}.mdi-hexagon-slice-4::before{content:"\\F0AC6"}.mdi-hexagon-slice-5::before{content:"\\F0AC7"}.mdi-hexagon-slice-6::before{content:"\\F0AC8"}.mdi-hexagram::before{content:"\\F0AC9"}.mdi-hexagram-outline::before{content:"\\F0ACA"}.mdi-high-definition::before{content:"\\F07CF"}.mdi-high-definition-box::before{content:"\\F0878"}.mdi-highway::before{content:"\\F05F7"}.mdi-hiking::before{content:"\\F0D7F"}.mdi-hinduism::before{content:"\\F0973"}.mdi-history::before{content:"\\F02DA"}.mdi-hockey-puck::before{content:"\\F0879"}.mdi-hockey-sticks::before{content:"\\F087A"}.mdi-hololens::before{content:"\\F02DB"}.mdi-home::before{content:"\\F02DC"}.mdi-home-account::before{content:"\\F0826"}.mdi-home-alert::before{content:"\\F087B"}.mdi-home-analytics::before{content:"\\F0EBA"}.mdi-home-assistant::before{content:"\\F07D0"}.mdi-home-automation::before{content:"\\F07D1"}.mdi-home-circle::before{content:"\\F07D2"}.mdi-home-circle-outline::before{content:"\\F104D"}.mdi-home-city::before{content:"\\F0D15"}.mdi-home-city-outline::before{content:"\\F0D16"}.mdi-home-currency-usd::before{content:"\\F08AF"}.mdi-home-edit::before{content:"\\F1159"}.mdi-home-edit-outline::before{content:"\\F115A"}.mdi-home-export-outline::before{content:"\\F0F9B"}.mdi-home-flood::before{content:"\\F0EFA"}.mdi-home-floor-0::before{content:"\\F0DD2"}.mdi-home-floor-1::before{content:"\\F0D80"}.mdi-home-floor-2::before{content:"\\F0D81"}.mdi-home-floor-3::before{content:"\\F0D82"}.mdi-home-floor-a::before{content:"\\F0D83"}.mdi-home-floor-b::before{content:"\\F0D84"}.mdi-home-floor-g::before{content:"\\F0D85"}.mdi-home-floor-l::before{content:"\\F0D86"}.mdi-home-floor-negative-1::before{content:"\\F0DD3"}.mdi-home-group::before{content:"\\F0DD4"}.mdi-home-heart::before{content:"\\F0827"}.mdi-home-import-outline::before{content:"\\F0F9C"}.mdi-home-lightbulb::before{content:"\\F1251"}.mdi-home-lightbulb-outline::before{content:"\\F1252"}.mdi-home-lock::before{content:"\\F08EB"}.mdi-home-lock-open::before{content:"\\F08EC"}.mdi-home-map-marker::before{content:"\\F05F8"}.mdi-home-minus::before{content:"\\F0974"}.mdi-home-minus-outline::before{content:"\\F13D5"}.mdi-home-modern::before{content:"\\F02DD"}.mdi-home-outline::before{content:"\\F06A1"}.mdi-home-plus::before{content:"\\F0975"}.mdi-home-plus-outline::before{content:"\\F13D6"}.mdi-home-remove::before{content:"\\F1247"}.mdi-home-remove-outline::before{content:"\\F13D7"}.mdi-home-roof::before{content:"\\F112B"}.mdi-home-search::before{content:"\\F13B0"}.mdi-home-search-outline::before{content:"\\F13B1"}.mdi-home-thermometer::before{content:"\\F0F54"}.mdi-home-thermometer-outline::before{content:"\\F0F55"}.mdi-home-variant::before{content:"\\F02DE"}.mdi-home-variant-outline::before{content:"\\F0BA7"}.mdi-hook::before{content:"\\F06E2"}.mdi-hook-off::before{content:"\\F06E3"}.mdi-hops::before{content:"\\F02DF"}.mdi-horizontal-rotate-clockwise::before{content:"\\F10F3"}.mdi-horizontal-rotate-counterclockwise::before{content:"\\F10F4"}.mdi-horseshoe::before{content:"\\F0A58"}.mdi-hospital::before{content:"\\F0FF6"}.mdi-hospital-box::before{content:"\\F02E0"}.mdi-hospital-box-outline::before{content:"\\F0FF7"}.mdi-hospital-building::before{content:"\\F02E1"}.mdi-hospital-marker::before{content:"\\F02E2"}.mdi-hot-tub::before{content:"\\F0828"}.mdi-hours-24::before{content:"\\F1478"}.mdi-hubspot::before{content:"\\F0D17"}.mdi-hulu::before{content:"\\F0829"}.mdi-human::before{content:"\\F02E6"}.mdi-human-baby-changing-table::before{content:"\\F138B"}.mdi-human-child::before{content:"\\F02E7"}.mdi-human-female::before{content:"\\F0649"}.mdi-human-female-boy::before{content:"\\F0A59"}.mdi-human-female-female::before{content:"\\F0A5A"}.mdi-human-female-girl::before{content:"\\F0A5B"}.mdi-human-greeting::before{content:"\\F064A"}.mdi-human-handsdown::before{content:"\\F064B"}.mdi-human-handsup::before{content:"\\F064C"}.mdi-human-male::before{content:"\\F064D"}.mdi-human-male-boy::before{content:"\\F0A5C"}.mdi-human-male-child::before{content:"\\F138C"}.mdi-human-male-female::before{content:"\\F02E8"}.mdi-human-male-girl::before{content:"\\F0A5D"}.mdi-human-male-height::before{content:"\\F0EFB"}.mdi-human-male-height-variant::before{content:"\\F0EFC"}.mdi-human-male-male::before{content:"\\F0A5E"}.mdi-human-pregnant::before{content:"\\F05CF"}.mdi-human-wheelchair::before{content:"\\F138D"}.mdi-humble-bundle::before{content:"\\F0744"}.mdi-hvac::before{content:"\\F1352"}.mdi-hydraulic-oil-level::before{content:"\\F1324"}.mdi-hydraulic-oil-temperature::before{content:"\\F1325"}.mdi-hydro-power::before{content:"\\F12E5"}.mdi-ice-cream::before{content:"\\F082A"}.mdi-ice-cream-off::before{content:"\\F0E52"}.mdi-ice-pop::before{content:"\\F0EFD"}.mdi-id-card::before{content:"\\F0FC0"}.mdi-identifier::before{content:"\\F0EFE"}.mdi-ideogram-cjk::before{content:"\\F1331"}.mdi-ideogram-cjk-variant::before{content:"\\F1332"}.mdi-iframe::before{content:"\\F0C8B"}.mdi-iframe-array::before{content:"\\F10F5"}.mdi-iframe-array-outline::before{content:"\\F10F6"}.mdi-iframe-braces::before{content:"\\F10F7"}.mdi-iframe-braces-outline::before{content:"\\F10F8"}.mdi-iframe-outline::before{content:"\\F0C8C"}.mdi-iframe-parentheses::before{content:"\\F10F9"}.mdi-iframe-parentheses-outline::before{content:"\\F10FA"}.mdi-iframe-variable::before{content:"\\F10FB"}.mdi-iframe-variable-outline::before{content:"\\F10FC"}.mdi-image::before{content:"\\F02E9"}.mdi-image-album::before{content:"\\F02EA"}.mdi-image-area::before{content:"\\F02EB"}.mdi-image-area-close::before{content:"\\F02EC"}.mdi-image-auto-adjust::before{content:"\\F0FC1"}.mdi-image-broken::before{content:"\\F02ED"}.mdi-image-broken-variant::before{content:"\\F02EE"}.mdi-image-edit::before{content:"\\F11E3"}.mdi-image-edit-outline::before{content:"\\F11E4"}.mdi-image-filter-black-white::before{content:"\\F02F0"}.mdi-image-filter-center-focus::before{content:"\\F02F1"}.mdi-image-filter-center-focus-strong::before{content:"\\F0EFF"}.mdi-image-filter-center-focus-strong-outline::before{content:"\\F0F00"}.mdi-image-filter-center-focus-weak::before{content:"\\F02F2"}.mdi-image-filter-drama::before{content:"\\F02F3"}.mdi-image-filter-frames::before{content:"\\F02F4"}.mdi-image-filter-hdr::before{content:"\\F02F5"}.mdi-image-filter-none::before{content:"\\F02F6"}.mdi-image-filter-tilt-shift::before{content:"\\F02F7"}.mdi-image-filter-vintage::before{content:"\\F02F8"}.mdi-image-frame::before{content:"\\F0E49"}.mdi-image-minus::before{content:"\\F1419"}.mdi-image-move::before{content:"\\F09F8"}.mdi-image-multiple::before{content:"\\F02F9"}.mdi-image-multiple-outline::before{content:"\\F02EF"}.mdi-image-off::before{content:"\\F082B"}.mdi-image-off-outline::before{content:"\\F11D1"}.mdi-image-outline::before{content:"\\F0976"}.mdi-image-plus::before{content:"\\F087C"}.mdi-image-remove::before{content:"\\F1418"}.mdi-image-search::before{content:"\\F0977"}.mdi-image-search-outline::before{content:"\\F0978"}.mdi-image-size-select-actual::before{content:"\\F0C8D"}.mdi-image-size-select-large::before{content:"\\F0C8E"}.mdi-image-size-select-small::before{content:"\\F0C8F"}.mdi-import::before{content:"\\F02FA"}.mdi-inbox::before{content:"\\F0687"}.mdi-inbox-arrow-down::before{content:"\\F02FB"}.mdi-inbox-arrow-down-outline::before{content:"\\F1270"}.mdi-inbox-arrow-up::before{content:"\\F03D1"}.mdi-inbox-arrow-up-outline::before{content:"\\F1271"}.mdi-inbox-full::before{content:"\\F1272"}.mdi-inbox-full-outline::before{content:"\\F1273"}.mdi-inbox-multiple::before{content:"\\F08B0"}.mdi-inbox-multiple-outline::before{content:"\\F0BA8"}.mdi-inbox-outline::before{content:"\\F1274"}.mdi-incognito::before{content:"\\F05F9"}.mdi-incognito-circle::before{content:"\\F1421"}.mdi-incognito-circle-off::before{content:"\\F1422"}.mdi-incognito-off::before{content:"\\F0075"}.mdi-infinity::before{content:"\\F06E4"}.mdi-information::before{content:"\\F02FC"}.mdi-information-outline::before{content:"\\F02FD"}.mdi-information-variant::before{content:"\\F064E"}.mdi-instagram::before{content:"\\F02FE"}.mdi-instrument-triangle::before{content:"\\F104E"}.mdi-invert-colors::before{content:"\\F0301"}.mdi-invert-colors-off::before{content:"\\F0E4A"}.mdi-iobroker::before{content:"\\F12E8"}.mdi-ip::before{content:"\\F0A5F"}.mdi-ip-network::before{content:"\\F0A60"}.mdi-ip-network-outline::before{content:"\\F0C90"}.mdi-ipod::before{content:"\\F0C91"}.mdi-islam::before{content:"\\F0979"}.mdi-island::before{content:"\\F104F"}.mdi-iv-bag::before{content:"\\F10B9"}.mdi-jabber::before{content:"\\F0DD5"}.mdi-jeepney::before{content:"\\F0302"}.mdi-jellyfish::before{content:"\\F0F01"}.mdi-jellyfish-outline::before{content:"\\F0F02"}.mdi-jira::before{content:"\\F0303"}.mdi-jquery::before{content:"\\F087D"}.mdi-jsfiddle::before{content:"\\F0304"}.mdi-judaism::before{content:"\\F097A"}.mdi-jump-rope::before{content:"\\F12FF"}.mdi-kabaddi::before{content:"\\F0D87"}.mdi-karate::before{content:"\\F082C"}.mdi-keg::before{content:"\\F0305"}.mdi-kettle::before{content:"\\F05FA"}.mdi-kettle-alert::before{content:"\\F1317"}.mdi-kettle-alert-outline::before{content:"\\F1318"}.mdi-kettle-off::before{content:"\\F131B"}.mdi-kettle-off-outline::before{content:"\\F131C"}.mdi-kettle-outline::before{content:"\\F0F56"}.mdi-kettle-steam::before{content:"\\F1319"}.mdi-kettle-steam-outline::before{content:"\\F131A"}.mdi-kettlebell::before{content:"\\F1300"}.mdi-key::before{content:"\\F0306"}.mdi-key-arrow-right::before{content:"\\F1312"}.mdi-key-change::before{content:"\\F0307"}.mdi-key-link::before{content:"\\F119F"}.mdi-key-minus::before{content:"\\F0308"}.mdi-key-outline::before{content:"\\F0DD6"}.mdi-key-plus::before{content:"\\F0309"}.mdi-key-remove::before{content:"\\F030A"}.mdi-key-star::before{content:"\\F119E"}.mdi-key-variant::before{content:"\\F030B"}.mdi-key-wireless::before{content:"\\F0FC2"}.mdi-keyboard::before{content:"\\F030C"}.mdi-keyboard-backspace::before{content:"\\F030D"}.mdi-keyboard-caps::before{content:"\\F030E"}.mdi-keyboard-close::before{content:"\\F030F"}.mdi-keyboard-esc::before{content:"\\F12B7"}.mdi-keyboard-f1::before{content:"\\F12AB"}.mdi-keyboard-f10::before{content:"\\F12B4"}.mdi-keyboard-f11::before{content:"\\F12B5"}.mdi-keyboard-f12::before{content:"\\F12B6"}.mdi-keyboard-f2::before{content:"\\F12AC"}.mdi-keyboard-f3::before{content:"\\F12AD"}.mdi-keyboard-f4::before{content:"\\F12AE"}.mdi-keyboard-f5::before{content:"\\F12AF"}.mdi-keyboard-f6::before{content:"\\F12B0"}.mdi-keyboard-f7::before{content:"\\F12B1"}.mdi-keyboard-f8::before{content:"\\F12B2"}.mdi-keyboard-f9::before{content:"\\F12B3"}.mdi-keyboard-off::before{content:"\\F0310"}.mdi-keyboard-off-outline::before{content:"\\F0E4B"}.mdi-keyboard-outline::before{content:"\\F097B"}.mdi-keyboard-return::before{content:"\\F0311"}.mdi-keyboard-settings::before{content:"\\F09F9"}.mdi-keyboard-settings-outline::before{content:"\\F09FA"}.mdi-keyboard-space::before{content:"\\F1050"}.mdi-keyboard-tab::before{content:"\\F0312"}.mdi-keyboard-variant::before{content:"\\F0313"}.mdi-khanda::before{content:"\\F10FD"}.mdi-kickstarter::before{content:"\\F0745"}.mdi-klingon::before{content:"\\F135B"}.mdi-knife::before{content:"\\F09FB"}.mdi-knife-military::before{content:"\\F09FC"}.mdi-kodi::before{content:"\\F0314"}.mdi-kubernetes::before{content:"\\F10FE"}.mdi-label::before{content:"\\F0315"}.mdi-label-multiple::before{content:"\\F1375"}.mdi-label-multiple-outline::before{content:"\\F1376"}.mdi-label-off::before{content:"\\F0ACB"}.mdi-label-off-outline::before{content:"\\F0ACC"}.mdi-label-outline::before{content:"\\F0316"}.mdi-label-percent::before{content:"\\F12EA"}.mdi-label-percent-outline::before{content:"\\F12EB"}.mdi-label-variant::before{content:"\\F0ACD"}.mdi-label-variant-outline::before{content:"\\F0ACE"}.mdi-ladybug::before{content:"\\F082D"}.mdi-lambda::before{content:"\\F0627"}.mdi-lamp::before{content:"\\F06B5"}.mdi-lan::before{content:"\\F0317"}.mdi-lan-check::before{content:"\\F12AA"}.mdi-lan-connect::before{content:"\\F0318"}.mdi-lan-disconnect::before{content:"\\F0319"}.mdi-lan-pending::before{content:"\\F031A"}.mdi-language-c::before{content:"\\F0671"}.mdi-language-cpp::before{content:"\\F0672"}.mdi-language-csharp::before{content:"\\F031B"}.mdi-language-css3::before{content:"\\F031C"}.mdi-language-fortran::before{content:"\\F121A"}.mdi-language-go::before{content:"\\F07D3"}.mdi-language-haskell::before{content:"\\F0C92"}.mdi-language-html5::before{content:"\\F031D"}.mdi-language-java::before{content:"\\F0B37"}.mdi-language-javascript::before{content:"\\F031E"}.mdi-language-kotlin::before{content:"\\F1219"}.mdi-language-lua::before{content:"\\F08B1"}.mdi-language-markdown::before{content:"\\F0354"}.mdi-language-markdown-outline::before{content:"\\F0F5B"}.mdi-language-php::before{content:"\\F031F"}.mdi-language-python::before{content:"\\F0320"}.mdi-language-r::before{content:"\\F07D4"}.mdi-language-ruby::before{content:"\\F0D2D"}.mdi-language-ruby-on-rails::before{content:"\\F0ACF"}.mdi-language-swift::before{content:"\\F06E5"}.mdi-language-typescript::before{content:"\\F06E6"}.mdi-language-xaml::before{content:"\\F0673"}.mdi-laptop::before{content:"\\F0322"}.mdi-laptop-chromebook::before{content:"\\F0323"}.mdi-laptop-mac::before{content:"\\F0324"}.mdi-laptop-off::before{content:"\\F06E7"}.mdi-laptop-windows::before{content:"\\F0325"}.mdi-laravel::before{content:"\\F0AD0"}.mdi-laser-pointer::before{content:"\\F1484"}.mdi-lasso::before{content:"\\F0F03"}.mdi-lastpass::before{content:"\\F0446"}.mdi-latitude::before{content:"\\F0F57"}.mdi-launch::before{content:"\\F0327"}.mdi-lava-lamp::before{content:"\\F07D5"}.mdi-layers::before{content:"\\F0328"}.mdi-layers-minus::before{content:"\\F0E4C"}.mdi-layers-off::before{content:"\\F0329"}.mdi-layers-off-outline::before{content:"\\F09FD"}.mdi-layers-outline::before{content:"\\F09FE"}.mdi-layers-plus::before{content:"\\F0E4D"}.mdi-layers-remove::before{content:"\\F0E4E"}.mdi-layers-search::before{content:"\\F1206"}.mdi-layers-search-outline::before{content:"\\F1207"}.mdi-layers-triple::before{content:"\\F0F58"}.mdi-layers-triple-outline::before{content:"\\F0F59"}.mdi-lead-pencil::before{content:"\\F064F"}.mdi-leaf::before{content:"\\F032A"}.mdi-leaf-maple::before{content:"\\F0C93"}.mdi-leaf-maple-off::before{content:"\\F12DA"}.mdi-leaf-off::before{content:"\\F12D9"}.mdi-leak::before{content:"\\F0DD7"}.mdi-leak-off::before{content:"\\F0DD8"}.mdi-led-off::before{content:"\\F032B"}.mdi-led-on::before{content:"\\F032C"}.mdi-led-outline::before{content:"\\F032D"}.mdi-led-strip::before{content:"\\F07D6"}.mdi-led-strip-variant::before{content:"\\F1051"}.mdi-led-variant-off::before{content:"\\F032E"}.mdi-led-variant-on::before{content:"\\F032F"}.mdi-led-variant-outline::before{content:"\\F0330"}.mdi-leek::before{content:"\\F117D"}.mdi-less-than::before{content:"\\F097C"}.mdi-less-than-or-equal::before{content:"\\F097D"}.mdi-library::before{content:"\\F0331"}.mdi-library-shelves::before{content:"\\F0BA9"}.mdi-license::before{content:"\\F0FC3"}.mdi-lifebuoy::before{content:"\\F087E"}.mdi-light-switch::before{content:"\\F097E"}.mdi-lightbulb::before{content:"\\F0335"}.mdi-lightbulb-cfl::before{content:"\\F1208"}.mdi-lightbulb-cfl-off::before{content:"\\F1209"}.mdi-lightbulb-cfl-spiral::before{content:"\\F1275"}.mdi-lightbulb-cfl-spiral-off::before{content:"\\F12C3"}.mdi-lightbulb-group::before{content:"\\F1253"}.mdi-lightbulb-group-off::before{content:"\\F12CD"}.mdi-lightbulb-group-off-outline::before{content:"\\F12CE"}.mdi-lightbulb-group-outline::before{content:"\\F1254"}.mdi-lightbulb-multiple::before{content:"\\F1255"}.mdi-lightbulb-multiple-off::before{content:"\\F12CF"}.mdi-lightbulb-multiple-off-outline::before{content:"\\F12D0"}.mdi-lightbulb-multiple-outline::before{content:"\\F1256"}.mdi-lightbulb-off::before{content:"\\F0E4F"}.mdi-lightbulb-off-outline::before{content:"\\F0E50"}.mdi-lightbulb-on::before{content:"\\F06E8"}.mdi-lightbulb-on-outline::before{content:"\\F06E9"}.mdi-lightbulb-outline::before{content:"\\F0336"}.mdi-lighthouse::before{content:"\\F09FF"}.mdi-lighthouse-on::before{content:"\\F0A00"}.mdi-lightning-bolt::before{content:"\\F140B"}.mdi-lightning-bolt-outline::before{content:"\\F140C"}.mdi-lingerie::before{content:"\\F1476"}.mdi-link::before{content:"\\F0337"}.mdi-link-box::before{content:"\\F0D1A"}.mdi-link-box-outline::before{content:"\\F0D1B"}.mdi-link-box-variant::before{content:"\\F0D1C"}.mdi-link-box-variant-outline::before{content:"\\F0D1D"}.mdi-link-lock::before{content:"\\F10BA"}.mdi-link-off::before{content:"\\F0338"}.mdi-link-plus::before{content:"\\F0C94"}.mdi-link-variant::before{content:"\\F0339"}.mdi-link-variant-minus::before{content:"\\F10FF"}.mdi-link-variant-off::before{content:"\\F033A"}.mdi-link-variant-plus::before{content:"\\F1100"}.mdi-link-variant-remove::before{content:"\\F1101"}.mdi-linkedin::before{content:"\\F033B"}.mdi-linux::before{content:"\\F033D"}.mdi-linux-mint::before{content:"\\F08ED"}.mdi-lipstick::before{content:"\\F13B5"}.mdi-litecoin::before{content:"\\F0A61"}.mdi-loading::before{content:"\\F0772"}.mdi-location-enter::before{content:"\\F0FC4"}.mdi-location-exit::before{content:"\\F0FC5"}.mdi-lock::before{content:"\\F033E"}.mdi-lock-alert::before{content:"\\F08EE"}.mdi-lock-check::before{content:"\\F139A"}.mdi-lock-clock::before{content:"\\F097F"}.mdi-lock-open::before{content:"\\F033F"}.mdi-lock-open-alert::before{content:"\\F139B"}.mdi-lock-open-check::before{content:"\\F139C"}.mdi-lock-open-outline::before{content:"\\F0340"}.mdi-lock-open-variant::before{content:"\\F0FC6"}.mdi-lock-open-variant-outline::before{content:"\\F0FC7"}.mdi-lock-outline::before{content:"\\F0341"}.mdi-lock-pattern::before{content:"\\F06EA"}.mdi-lock-plus::before{content:"\\F05FB"}.mdi-lock-question::before{content:"\\F08EF"}.mdi-lock-reset::before{content:"\\F0773"}.mdi-lock-smart::before{content:"\\F08B2"}.mdi-locker::before{content:"\\F07D7"}.mdi-locker-multiple::before{content:"\\F07D8"}.mdi-login::before{content:"\\F0342"}.mdi-login-variant::before{content:"\\F05FC"}.mdi-logout::before{content:"\\F0343"}.mdi-logout-variant::before{content:"\\F05FD"}.mdi-longitude::before{content:"\\F0F5A"}.mdi-looks::before{content:"\\F0344"}.mdi-loupe::before{content:"\\F0345"}.mdi-lumx::before{content:"\\F0346"}.mdi-lungs::before{content:"\\F1084"}.mdi-magnet::before{content:"\\F0347"}.mdi-magnet-on::before{content:"\\F0348"}.mdi-magnify::before{content:"\\F0349"}.mdi-magnify-close::before{content:"\\F0980"}.mdi-magnify-minus::before{content:"\\F034A"}.mdi-magnify-minus-cursor::before{content:"\\F0A62"}.mdi-magnify-minus-outline::before{content:"\\F06EC"}.mdi-magnify-plus::before{content:"\\F034B"}.mdi-magnify-plus-cursor::before{content:"\\F0A63"}.mdi-magnify-plus-outline::before{content:"\\F06ED"}.mdi-magnify-remove-cursor::before{content:"\\F120C"}.mdi-magnify-remove-outline::before{content:"\\F120D"}.mdi-magnify-scan::before{content:"\\F1276"}.mdi-mail::before{content:"\\F0EBB"}.mdi-mailbox::before{content:"\\F06EE"}.mdi-mailbox-open::before{content:"\\F0D88"}.mdi-mailbox-open-outline::before{content:"\\F0D89"}.mdi-mailbox-open-up::before{content:"\\F0D8A"}.mdi-mailbox-open-up-outline::before{content:"\\F0D8B"}.mdi-mailbox-outline::before{content:"\\F0D8C"}.mdi-mailbox-up::before{content:"\\F0D8D"}.mdi-mailbox-up-outline::before{content:"\\F0D8E"}.mdi-map::before{content:"\\F034D"}.mdi-map-check::before{content:"\\F0EBC"}.mdi-map-check-outline::before{content:"\\F0EBD"}.mdi-map-clock::before{content:"\\F0D1E"}.mdi-map-clock-outline::before{content:"\\F0D1F"}.mdi-map-legend::before{content:"\\F0A01"}.mdi-map-marker::before{content:"\\F034E"}.mdi-map-marker-alert::before{content:"\\F0F05"}.mdi-map-marker-alert-outline::before{content:"\\F0F06"}.mdi-map-marker-check::before{content:"\\F0C95"}.mdi-map-marker-check-outline::before{content:"\\F12FB"}.mdi-map-marker-circle::before{content:"\\F034F"}.mdi-map-marker-distance::before{content:"\\F08F0"}.mdi-map-marker-down::before{content:"\\F1102"}.mdi-map-marker-left::before{content:"\\F12DB"}.mdi-map-marker-left-outline::before{content:"\\F12DD"}.mdi-map-marker-minus::before{content:"\\F0650"}.mdi-map-marker-minus-outline::before{content:"\\F12F9"}.mdi-map-marker-multiple::before{content:"\\F0350"}.mdi-map-marker-multiple-outline::before{content:"\\F1277"}.mdi-map-marker-off::before{content:"\\F0351"}.mdi-map-marker-off-outline::before{content:"\\F12FD"}.mdi-map-marker-outline::before{content:"\\F07D9"}.mdi-map-marker-path::before{content:"\\F0D20"}.mdi-map-marker-plus::before{content:"\\F0651"}.mdi-map-marker-plus-outline::before{content:"\\F12F8"}.mdi-map-marker-question::before{content:"\\F0F07"}.mdi-map-marker-question-outline::before{content:"\\F0F08"}.mdi-map-marker-radius::before{content:"\\F0352"}.mdi-map-marker-radius-outline::before{content:"\\F12FC"}.mdi-map-marker-remove::before{content:"\\F0F09"}.mdi-map-marker-remove-outline::before{content:"\\F12FA"}.mdi-map-marker-remove-variant::before{content:"\\F0F0A"}.mdi-map-marker-right::before{content:"\\F12DC"}.mdi-map-marker-right-outline::before{content:"\\F12DE"}.mdi-map-marker-up::before{content:"\\F1103"}.mdi-map-minus::before{content:"\\F0981"}.mdi-map-outline::before{content:"\\F0982"}.mdi-map-plus::before{content:"\\F0983"}.mdi-map-search::before{content:"\\F0984"}.mdi-map-search-outline::before{content:"\\F0985"}.mdi-mapbox::before{content:"\\F0BAA"}.mdi-margin::before{content:"\\F0353"}.mdi-marker::before{content:"\\F0652"}.mdi-marker-cancel::before{content:"\\F0DD9"}.mdi-marker-check::before{content:"\\F0355"}.mdi-mastodon::before{content:"\\F0AD1"}.mdi-material-design::before{content:"\\F0986"}.mdi-material-ui::before{content:"\\F0357"}.mdi-math-compass::before{content:"\\F0358"}.mdi-math-cos::before{content:"\\F0C96"}.mdi-math-integral::before{content:"\\F0FC8"}.mdi-math-integral-box::before{content:"\\F0FC9"}.mdi-math-log::before{content:"\\F1085"}.mdi-math-norm::before{content:"\\F0FCA"}.mdi-math-norm-box::before{content:"\\F0FCB"}.mdi-math-sin::before{content:"\\F0C97"}.mdi-math-tan::before{content:"\\F0C98"}.mdi-matrix::before{content:"\\F0628"}.mdi-medal::before{content:"\\F0987"}.mdi-medal-outline::before{content:"\\F1326"}.mdi-medical-bag::before{content:"\\F06EF"}.mdi-meditation::before{content:"\\F117B"}.mdi-memory::before{content:"\\F035B"}.mdi-menu::before{content:"\\F035C"}.mdi-menu-down::before{content:"\\F035D"}.mdi-menu-down-outline::before{content:"\\F06B6"}.mdi-menu-left::before{content:"\\F035E"}.mdi-menu-left-outline::before{content:"\\F0A02"}.mdi-menu-open::before{content:"\\F0BAB"}.mdi-menu-right::before{content:"\\F035F"}.mdi-menu-right-outline::before{content:"\\F0A03"}.mdi-menu-swap::before{content:"\\F0A64"}.mdi-menu-swap-outline::before{content:"\\F0A65"}.mdi-menu-up::before{content:"\\F0360"}.mdi-menu-up-outline::before{content:"\\F06B7"}.mdi-merge::before{content:"\\F0F5C"}.mdi-message::before{content:"\\F0361"}.mdi-message-alert::before{content:"\\F0362"}.mdi-message-alert-outline::before{content:"\\F0A04"}.mdi-message-arrow-left::before{content:"\\F12F2"}.mdi-message-arrow-left-outline::before{content:"\\F12F3"}.mdi-message-arrow-right::before{content:"\\F12F4"}.mdi-message-arrow-right-outline::before{content:"\\F12F5"}.mdi-message-bulleted::before{content:"\\F06A2"}.mdi-message-bulleted-off::before{content:"\\F06A3"}.mdi-message-cog::before{content:"\\F06F1"}.mdi-message-cog-outline::before{content:"\\F1172"}.mdi-message-draw::before{content:"\\F0363"}.mdi-message-image::before{content:"\\F0364"}.mdi-message-image-outline::before{content:"\\F116C"}.mdi-message-lock::before{content:"\\F0FCC"}.mdi-message-lock-outline::before{content:"\\F116D"}.mdi-message-minus::before{content:"\\F116E"}.mdi-message-minus-outline::before{content:"\\F116F"}.mdi-message-outline::before{content:"\\F0365"}.mdi-message-plus::before{content:"\\F0653"}.mdi-message-plus-outline::before{content:"\\F10BB"}.mdi-message-processing::before{content:"\\F0366"}.mdi-message-processing-outline::before{content:"\\F1170"}.mdi-message-reply::before{content:"\\F0367"}.mdi-message-reply-text::before{content:"\\F0368"}.mdi-message-settings::before{content:"\\F06F0"}.mdi-message-settings-outline::before{content:"\\F1171"}.mdi-message-text::before{content:"\\F0369"}.mdi-message-text-clock::before{content:"\\F1173"}.mdi-message-text-clock-outline::before{content:"\\F1174"}.mdi-message-text-lock::before{content:"\\F0FCD"}.mdi-message-text-lock-outline::before{content:"\\F1175"}.mdi-message-text-outline::before{content:"\\F036A"}.mdi-message-video::before{content:"\\F036B"}.mdi-meteor::before{content:"\\F0629"}.mdi-metronome::before{content:"\\F07DA"}.mdi-metronome-tick::before{content:"\\F07DB"}.mdi-micro-sd::before{content:"\\F07DC"}.mdi-microphone::before{content:"\\F036C"}.mdi-microphone-minus::before{content:"\\F08B3"}.mdi-microphone-off::before{content:"\\F036D"}.mdi-microphone-outline::before{content:"\\F036E"}.mdi-microphone-plus::before{content:"\\F08B4"}.mdi-microphone-settings::before{content:"\\F036F"}.mdi-microphone-variant::before{content:"\\F0370"}.mdi-microphone-variant-off::before{content:"\\F0371"}.mdi-microscope::before{content:"\\F0654"}.mdi-microsoft::before{content:"\\F0372"}.mdi-microsoft-access::before{content:"\\F138E"}.mdi-microsoft-azure::before{content:"\\F0805"}.mdi-microsoft-azure-devops::before{content:"\\F0FD5"}.mdi-microsoft-bing::before{content:"\\F00A4"}.mdi-microsoft-dynamics-365::before{content:"\\F0988"}.mdi-microsoft-edge::before{content:"\\F01E9"}.mdi-microsoft-edge-legacy::before{content:"\\F1250"}.mdi-microsoft-excel::before{content:"\\F138F"}.mdi-microsoft-internet-explorer::before{content:"\\F0300"}.mdi-microsoft-office::before{content:"\\F03C6"}.mdi-microsoft-onedrive::before{content:"\\F03CA"}.mdi-microsoft-onenote::before{content:"\\F0747"}.mdi-microsoft-outlook::before{content:"\\F0D22"}.mdi-microsoft-powerpoint::before{content:"\\F1390"}.mdi-microsoft-sharepoint::before{content:"\\F1391"}.mdi-microsoft-teams::before{content:"\\F02BB"}.mdi-microsoft-visual-studio::before{content:"\\F0610"}.mdi-microsoft-visual-studio-code::before{content:"\\F0A1E"}.mdi-microsoft-windows::before{content:"\\F05B3"}.mdi-microsoft-windows-classic::before{content:"\\F0A21"}.mdi-microsoft-word::before{content:"\\F1392"}.mdi-microsoft-xbox::before{content:"\\F05B9"}.mdi-microsoft-xbox-controller::before{content:"\\F05BA"}.mdi-microsoft-xbox-controller-battery-alert::before{content:"\\F074B"}.mdi-microsoft-xbox-controller-battery-charging::before{content:"\\F0A22"}.mdi-microsoft-xbox-controller-battery-empty::before{content:"\\F074C"}.mdi-microsoft-xbox-controller-battery-full::before{content:"\\F074D"}.mdi-microsoft-xbox-controller-battery-low::before{content:"\\F074E"}.mdi-microsoft-xbox-controller-battery-medium::before{content:"\\F074F"}.mdi-microsoft-xbox-controller-battery-unknown::before{content:"\\F0750"}.mdi-microsoft-xbox-controller-menu::before{content:"\\F0E6F"}.mdi-microsoft-xbox-controller-off::before{content:"\\F05BB"}.mdi-microsoft-xbox-controller-view::before{content:"\\F0E70"}.mdi-microsoft-yammer::before{content:"\\F0789"}.mdi-microwave::before{content:"\\F0C99"}.mdi-microwave-off::before{content:"\\F1423"}.mdi-middleware::before{content:"\\F0F5D"}.mdi-middleware-outline::before{content:"\\F0F5E"}.mdi-midi::before{content:"\\F08F1"}.mdi-midi-port::before{content:"\\F08F2"}.mdi-mine::before{content:"\\F0DDA"}.mdi-minecraft::before{content:"\\F0373"}.mdi-mini-sd::before{content:"\\F0A05"}.mdi-minidisc::before{content:"\\F0A06"}.mdi-minus::before{content:"\\F0374"}.mdi-minus-box::before{content:"\\F0375"}.mdi-minus-box-multiple::before{content:"\\F1141"}.mdi-minus-box-multiple-outline::before{content:"\\F1142"}.mdi-minus-box-outline::before{content:"\\F06F2"}.mdi-minus-circle::before{content:"\\F0376"}.mdi-minus-circle-multiple::before{content:"\\F035A"}.mdi-minus-circle-multiple-outline::before{content:"\\F0AD3"}.mdi-minus-circle-off::before{content:"\\F1459"}.mdi-minus-circle-off-outline::before{content:"\\F145A"}.mdi-minus-circle-outline::before{content:"\\F0377"}.mdi-minus-network::before{content:"\\F0378"}.mdi-minus-network-outline::before{content:"\\F0C9A"}.mdi-mirror::before{content:"\\F11FD"}.mdi-mixed-martial-arts::before{content:"\\F0D8F"}.mdi-mixed-reality::before{content:"\\F087F"}.mdi-mixer::before{content:"\\F07DD"}.mdi-molecule::before{content:"\\F0BAC"}.mdi-molecule-co::before{content:"\\F12FE"}.mdi-molecule-co2::before{content:"\\F07E4"}.mdi-monitor::before{content:"\\F0379"}.mdi-monitor-cellphone::before{content:"\\F0989"}.mdi-monitor-cellphone-star::before{content:"\\F098A"}.mdi-monitor-clean::before{content:"\\F1104"}.mdi-monitor-dashboard::before{content:"\\F0A07"}.mdi-monitor-edit::before{content:"\\F12C6"}.mdi-monitor-eye::before{content:"\\F13B4"}.mdi-monitor-lock::before{content:"\\F0DDB"}.mdi-monitor-multiple::before{content:"\\F037A"}.mdi-monitor-off::before{content:"\\F0D90"}.mdi-monitor-screenshot::before{content:"\\F0E51"}.mdi-monitor-share::before{content:"\\F1483"}.mdi-monitor-speaker::before{content:"\\F0F5F"}.mdi-monitor-speaker-off::before{content:"\\F0F60"}.mdi-monitor-star::before{content:"\\F0DDC"}.mdi-moon-first-quarter::before{content:"\\F0F61"}.mdi-moon-full::before{content:"\\F0F62"}.mdi-moon-last-quarter::before{content:"\\F0F63"}.mdi-moon-new::before{content:"\\F0F64"}.mdi-moon-waning-crescent::before{content:"\\F0F65"}.mdi-moon-waning-gibbous::before{content:"\\F0F66"}.mdi-moon-waxing-crescent::before{content:"\\F0F67"}.mdi-moon-waxing-gibbous::before{content:"\\F0F68"}.mdi-moped::before{content:"\\F1086"}.mdi-more::before{content:"\\F037B"}.mdi-mother-heart::before{content:"\\F1314"}.mdi-mother-nurse::before{content:"\\F0D21"}.mdi-motion-sensor::before{content:"\\F0D91"}.mdi-motion-sensor-off::before{content:"\\F1435"}.mdi-motorbike::before{content:"\\F037C"}.mdi-mouse::before{content:"\\F037D"}.mdi-mouse-bluetooth::before{content:"\\F098B"}.mdi-mouse-off::before{content:"\\F037E"}.mdi-mouse-variant::before{content:"\\F037F"}.mdi-mouse-variant-off::before{content:"\\F0380"}.mdi-move-resize::before{content:"\\F0655"}.mdi-move-resize-variant::before{content:"\\F0656"}.mdi-movie::before{content:"\\F0381"}.mdi-movie-edit::before{content:"\\F1122"}.mdi-movie-edit-outline::before{content:"\\F1123"}.mdi-movie-filter::before{content:"\\F1124"}.mdi-movie-filter-outline::before{content:"\\F1125"}.mdi-movie-open::before{content:"\\F0FCE"}.mdi-movie-open-outline::before{content:"\\F0FCF"}.mdi-movie-outline::before{content:"\\F0DDD"}.mdi-movie-roll::before{content:"\\F07DE"}.mdi-movie-search::before{content:"\\F11D2"}.mdi-movie-search-outline::before{content:"\\F11D3"}.mdi-muffin::before{content:"\\F098C"}.mdi-multiplication::before{content:"\\F0382"}.mdi-multiplication-box::before{content:"\\F0383"}.mdi-mushroom::before{content:"\\F07DF"}.mdi-mushroom-off::before{content:"\\F13FA"}.mdi-mushroom-off-outline::before{content:"\\F13FB"}.mdi-mushroom-outline::before{content:"\\F07E0"}.mdi-music::before{content:"\\F075A"}.mdi-music-accidental-double-flat::before{content:"\\F0F69"}.mdi-music-accidental-double-sharp::before{content:"\\F0F6A"}.mdi-music-accidental-flat::before{content:"\\F0F6B"}.mdi-music-accidental-natural::before{content:"\\F0F6C"}.mdi-music-accidental-sharp::before{content:"\\F0F6D"}.mdi-music-box::before{content:"\\F0384"}.mdi-music-box-multiple::before{content:"\\F0333"}.mdi-music-box-multiple-outline::before{content:"\\F0F04"}.mdi-music-box-outline::before{content:"\\F0385"}.mdi-music-circle::before{content:"\\F0386"}.mdi-music-circle-outline::before{content:"\\F0AD4"}.mdi-music-clef-alto::before{content:"\\F0F6E"}.mdi-music-clef-bass::before{content:"\\F0F6F"}.mdi-music-clef-treble::before{content:"\\F0F70"}.mdi-music-note::before{content:"\\F0387"}.mdi-music-note-bluetooth::before{content:"\\F05FE"}.mdi-music-note-bluetooth-off::before{content:"\\F05FF"}.mdi-music-note-eighth::before{content:"\\F0388"}.mdi-music-note-eighth-dotted::before{content:"\\F0F71"}.mdi-music-note-half::before{content:"\\F0389"}.mdi-music-note-half-dotted::before{content:"\\F0F72"}.mdi-music-note-off::before{content:"\\F038A"}.mdi-music-note-off-outline::before{content:"\\F0F73"}.mdi-music-note-outline::before{content:"\\F0F74"}.mdi-music-note-plus::before{content:"\\F0DDE"}.mdi-music-note-quarter::before{content:"\\F038B"}.mdi-music-note-quarter-dotted::before{content:"\\F0F75"}.mdi-music-note-sixteenth::before{content:"\\F038C"}.mdi-music-note-sixteenth-dotted::before{content:"\\F0F76"}.mdi-music-note-whole::before{content:"\\F038D"}.mdi-music-note-whole-dotted::before{content:"\\F0F77"}.mdi-music-off::before{content:"\\F075B"}.mdi-music-rest-eighth::before{content:"\\F0F78"}.mdi-music-rest-half::before{content:"\\F0F79"}.mdi-music-rest-quarter::before{content:"\\F0F7A"}.mdi-music-rest-sixteenth::before{content:"\\F0F7B"}.mdi-music-rest-whole::before{content:"\\F0F7C"}.mdi-nail::before{content:"\\F0DDF"}.mdi-nas::before{content:"\\F08F3"}.mdi-nativescript::before{content:"\\F0880"}.mdi-nature::before{content:"\\F038E"}.mdi-nature-people::before{content:"\\F038F"}.mdi-navigation::before{content:"\\F0390"}.mdi-near-me::before{content:"\\F05CD"}.mdi-necklace::before{content:"\\F0F0B"}.mdi-needle::before{content:"\\F0391"}.mdi-netflix::before{content:"\\F0746"}.mdi-network::before{content:"\\F06F3"}.mdi-network-off::before{content:"\\F0C9B"}.mdi-network-off-outline::before{content:"\\F0C9C"}.mdi-network-outline::before{content:"\\F0C9D"}.mdi-network-strength-1::before{content:"\\F08F4"}.mdi-network-strength-1-alert::before{content:"\\F08F5"}.mdi-network-strength-2::before{content:"\\F08F6"}.mdi-network-strength-2-alert::before{content:"\\F08F7"}.mdi-network-strength-3::before{content:"\\F08F8"}.mdi-network-strength-3-alert::before{content:"\\F08F9"}.mdi-network-strength-4::before{content:"\\F08FA"}.mdi-network-strength-4-alert::before{content:"\\F08FB"}.mdi-network-strength-off::before{content:"\\F08FC"}.mdi-network-strength-off-outline::before{content:"\\F08FD"}.mdi-network-strength-outline::before{content:"\\F08FE"}.mdi-new-box::before{content:"\\F0394"}.mdi-newspaper::before{content:"\\F0395"}.mdi-newspaper-minus::before{content:"\\F0F0C"}.mdi-newspaper-plus::before{content:"\\F0F0D"}.mdi-newspaper-variant::before{content:"\\F1001"}.mdi-newspaper-variant-multiple::before{content:"\\F1002"}.mdi-newspaper-variant-multiple-outline::before{content:"\\F1003"}.mdi-newspaper-variant-outline::before{content:"\\F1004"}.mdi-nfc::before{content:"\\F0396"}.mdi-nfc-search-variant::before{content:"\\F0E53"}.mdi-nfc-tap::before{content:"\\F0397"}.mdi-nfc-variant::before{content:"\\F0398"}.mdi-nfc-variant-off::before{content:"\\F0E54"}.mdi-ninja::before{content:"\\F0774"}.mdi-nintendo-game-boy::before{content:"\\F1393"}.mdi-nintendo-switch::before{content:"\\F07E1"}.mdi-nintendo-wii::before{content:"\\F05AB"}.mdi-nintendo-wiiu::before{content:"\\F072D"}.mdi-nix::before{content:"\\F1105"}.mdi-nodejs::before{content:"\\F0399"}.mdi-noodles::before{content:"\\F117E"}.mdi-not-equal::before{content:"\\F098D"}.mdi-not-equal-variant::before{content:"\\F098E"}.mdi-note::before{content:"\\F039A"}.mdi-note-multiple::before{content:"\\F06B8"}.mdi-note-multiple-outline::before{content:"\\F06B9"}.mdi-note-outline::before{content:"\\F039B"}.mdi-note-plus::before{content:"\\F039C"}.mdi-note-plus-outline::before{content:"\\F039D"}.mdi-note-text::before{content:"\\F039E"}.mdi-note-text-outline::before{content:"\\F11D7"}.mdi-notebook::before{content:"\\F082E"}.mdi-notebook-multiple::before{content:"\\F0E55"}.mdi-notebook-outline::before{content:"\\F0EBF"}.mdi-notification-clear-all::before{content:"\\F039F"}.mdi-npm::before{content:"\\F06F7"}.mdi-nuke::before{content:"\\F06A4"}.mdi-null::before{content:"\\F07E2"}.mdi-numeric::before{content:"\\F03A0"}.mdi-numeric-0::before{content:"\\F0B39"}.mdi-numeric-0-box::before{content:"\\F03A1"}.mdi-numeric-0-box-multiple::before{content:"\\F0F0E"}.mdi-numeric-0-box-multiple-outline::before{content:"\\F03A2"}.mdi-numeric-0-box-outline::before{content:"\\F03A3"}.mdi-numeric-0-circle::before{content:"\\F0C9E"}.mdi-numeric-0-circle-outline::before{content:"\\F0C9F"}.mdi-numeric-1::before{content:"\\F0B3A"}.mdi-numeric-1-box::before{content:"\\F03A4"}.mdi-numeric-1-box-multiple::before{content:"\\F0F0F"}.mdi-numeric-1-box-multiple-outline::before{content:"\\F03A5"}.mdi-numeric-1-box-outline::before{content:"\\F03A6"}.mdi-numeric-1-circle::before{content:"\\F0CA0"}.mdi-numeric-1-circle-outline::before{content:"\\F0CA1"}.mdi-numeric-10::before{content:"\\F0FE9"}.mdi-numeric-10-box::before{content:"\\F0F7D"}.mdi-numeric-10-box-multiple::before{content:"\\F0FEA"}.mdi-numeric-10-box-multiple-outline::before{content:"\\F0FEB"}.mdi-numeric-10-box-outline::before{content:"\\F0F7E"}.mdi-numeric-10-circle::before{content:"\\F0FEC"}.mdi-numeric-10-circle-outline::before{content:"\\F0FED"}.mdi-numeric-2::before{content:"\\F0B3B"}.mdi-numeric-2-box::before{content:"\\F03A7"}.mdi-numeric-2-box-multiple::before{content:"\\F0F10"}.mdi-numeric-2-box-multiple-outline::before{content:"\\F03A8"}.mdi-numeric-2-box-outline::before{content:"\\F03A9"}.mdi-numeric-2-circle::before{content:"\\F0CA2"}.mdi-numeric-2-circle-outline::before{content:"\\F0CA3"}.mdi-numeric-3::before{content:"\\F0B3C"}.mdi-numeric-3-box::before{content:"\\F03AA"}.mdi-numeric-3-box-multiple::before{content:"\\F0F11"}.mdi-numeric-3-box-multiple-outline::before{content:"\\F03AB"}.mdi-numeric-3-box-outline::before{content:"\\F03AC"}.mdi-numeric-3-circle::before{content:"\\F0CA4"}.mdi-numeric-3-circle-outline::before{content:"\\F0CA5"}.mdi-numeric-4::before{content:"\\F0B3D"}.mdi-numeric-4-box::before{content:"\\F03AD"}.mdi-numeric-4-box-multiple::before{content:"\\F0F12"}.mdi-numeric-4-box-multiple-outline::before{content:"\\F03B2"}.mdi-numeric-4-box-outline::before{content:"\\F03AE"}.mdi-numeric-4-circle::before{content:"\\F0CA6"}.mdi-numeric-4-circle-outline::before{content:"\\F0CA7"}.mdi-numeric-5::before{content:"\\F0B3E"}.mdi-numeric-5-box::before{content:"\\F03B1"}.mdi-numeric-5-box-multiple::before{content:"\\F0F13"}.mdi-numeric-5-box-multiple-outline::before{content:"\\F03AF"}.mdi-numeric-5-box-outline::before{content:"\\F03B0"}.mdi-numeric-5-circle::before{content:"\\F0CA8"}.mdi-numeric-5-circle-outline::before{content:"\\F0CA9"}.mdi-numeric-6::before{content:"\\F0B3F"}.mdi-numeric-6-box::before{content:"\\F03B3"}.mdi-numeric-6-box-multiple::before{content:"\\F0F14"}.mdi-numeric-6-box-multiple-outline::before{content:"\\F03B4"}.mdi-numeric-6-box-outline::before{content:"\\F03B5"}.mdi-numeric-6-circle::before{content:"\\F0CAA"}.mdi-numeric-6-circle-outline::before{content:"\\F0CAB"}.mdi-numeric-7::before{content:"\\F0B40"}.mdi-numeric-7-box::before{content:"\\F03B6"}.mdi-numeric-7-box-multiple::before{content:"\\F0F15"}.mdi-numeric-7-box-multiple-outline::before{content:"\\F03B7"}.mdi-numeric-7-box-outline::before{content:"\\F03B8"}.mdi-numeric-7-circle::before{content:"\\F0CAC"}.mdi-numeric-7-circle-outline::before{content:"\\F0CAD"}.mdi-numeric-8::before{content:"\\F0B41"}.mdi-numeric-8-box::before{content:"\\F03B9"}.mdi-numeric-8-box-multiple::before{content:"\\F0F16"}.mdi-numeric-8-box-multiple-outline::before{content:"\\F03BA"}.mdi-numeric-8-box-outline::before{content:"\\F03BB"}.mdi-numeric-8-circle::before{content:"\\F0CAE"}.mdi-numeric-8-circle-outline::before{content:"\\F0CAF"}.mdi-numeric-9::before{content:"\\F0B42"}.mdi-numeric-9-box::before{content:"\\F03BC"}.mdi-numeric-9-box-multiple::before{content:"\\F0F17"}.mdi-numeric-9-box-multiple-outline::before{content:"\\F03BD"}.mdi-numeric-9-box-outline::before{content:"\\F03BE"}.mdi-numeric-9-circle::before{content:"\\F0CB0"}.mdi-numeric-9-circle-outline::before{content:"\\F0CB1"}.mdi-numeric-9-plus::before{content:"\\F0FEE"}.mdi-numeric-9-plus-box::before{content:"\\F03BF"}.mdi-numeric-9-plus-box-multiple::before{content:"\\F0F18"}.mdi-numeric-9-plus-box-multiple-outline::before{content:"\\F03C0"}.mdi-numeric-9-plus-box-outline::before{content:"\\F03C1"}.mdi-numeric-9-plus-circle::before{content:"\\F0CB2"}.mdi-numeric-9-plus-circle-outline::before{content:"\\F0CB3"}.mdi-numeric-negative-1::before{content:"\\F1052"}.mdi-nut::before{content:"\\F06F8"}.mdi-nutrition::before{content:"\\F03C2"}.mdi-nuxt::before{content:"\\F1106"}.mdi-oar::before{content:"\\F067C"}.mdi-ocarina::before{content:"\\F0DE0"}.mdi-oci::before{content:"\\F12E9"}.mdi-ocr::before{content:"\\F113A"}.mdi-octagon::before{content:"\\F03C3"}.mdi-octagon-outline::before{content:"\\F03C4"}.mdi-octagram::before{content:"\\F06F9"}.mdi-octagram-outline::before{content:"\\F0775"}.mdi-odnoklassniki::before{content:"\\F03C5"}.mdi-offer::before{content:"\\F121B"}.mdi-office-building::before{content:"\\F0991"}.mdi-oil::before{content:"\\F03C7"}.mdi-oil-lamp::before{content:"\\F0F19"}.mdi-oil-level::before{content:"\\F1053"}.mdi-oil-temperature::before{content:"\\F0FF8"}.mdi-omega::before{content:"\\F03C9"}.mdi-one-up::before{content:"\\F0BAD"}.mdi-onepassword::before{content:"\\F0881"}.mdi-opacity::before{content:"\\F05CC"}.mdi-open-in-app::before{content:"\\F03CB"}.mdi-open-in-new::before{content:"\\F03CC"}.mdi-open-source-initiative::before{content:"\\F0BAE"}.mdi-openid::before{content:"\\F03CD"}.mdi-opera::before{content:"\\F03CE"}.mdi-orbit::before{content:"\\F0018"}.mdi-order-alphabetical-ascending::before{content:"\\F020D"}.mdi-order-alphabetical-descending::before{content:"\\F0D07"}.mdi-order-bool-ascending::before{content:"\\F02BE"}.mdi-order-bool-ascending-variant::before{content:"\\F098F"}.mdi-order-bool-descending::before{content:"\\F1384"}.mdi-order-bool-descending-variant::before{content:"\\F0990"}.mdi-order-numeric-ascending::before{content:"\\F0545"}.mdi-order-numeric-descending::before{content:"\\F0546"}.mdi-origin::before{content:"\\F0B43"}.mdi-ornament::before{content:"\\F03CF"}.mdi-ornament-variant::before{content:"\\F03D0"}.mdi-outdoor-lamp::before{content:"\\F1054"}.mdi-overscan::before{content:"\\F1005"}.mdi-owl::before{content:"\\F03D2"}.mdi-pac-man::before{content:"\\F0BAF"}.mdi-package::before{content:"\\F03D3"}.mdi-package-down::before{content:"\\F03D4"}.mdi-package-up::before{content:"\\F03D5"}.mdi-package-variant::before{content:"\\F03D6"}.mdi-package-variant-closed::before{content:"\\F03D7"}.mdi-page-first::before{content:"\\F0600"}.mdi-page-last::before{content:"\\F0601"}.mdi-page-layout-body::before{content:"\\F06FA"}.mdi-page-layout-footer::before{content:"\\F06FB"}.mdi-page-layout-header::before{content:"\\F06FC"}.mdi-page-layout-header-footer::before{content:"\\F0F7F"}.mdi-page-layout-sidebar-left::before{content:"\\F06FD"}.mdi-page-layout-sidebar-right::before{content:"\\F06FE"}.mdi-page-next::before{content:"\\F0BB0"}.mdi-page-next-outline::before{content:"\\F0BB1"}.mdi-page-previous::before{content:"\\F0BB2"}.mdi-page-previous-outline::before{content:"\\F0BB3"}.mdi-pail::before{content:"\\F1417"}.mdi-pail-minus::before{content:"\\F1437"}.mdi-pail-minus-outline::before{content:"\\F143C"}.mdi-pail-off::before{content:"\\F1439"}.mdi-pail-off-outline::before{content:"\\F143E"}.mdi-pail-outline::before{content:"\\F143A"}.mdi-pail-plus::before{content:"\\F1436"}.mdi-pail-plus-outline::before{content:"\\F143B"}.mdi-pail-remove::before{content:"\\F1438"}.mdi-pail-remove-outline::before{content:"\\F143D"}.mdi-palette::before{content:"\\F03D8"}.mdi-palette-advanced::before{content:"\\F03D9"}.mdi-palette-outline::before{content:"\\F0E0C"}.mdi-palette-swatch::before{content:"\\F08B5"}.mdi-palette-swatch-outline::before{content:"\\F135C"}.mdi-palm-tree::before{content:"\\F1055"}.mdi-pan::before{content:"\\F0BB4"}.mdi-pan-bottom-left::before{content:"\\F0BB5"}.mdi-pan-bottom-right::before{content:"\\F0BB6"}.mdi-pan-down::before{content:"\\F0BB7"}.mdi-pan-horizontal::before{content:"\\F0BB8"}.mdi-pan-left::before{content:"\\F0BB9"}.mdi-pan-right::before{content:"\\F0BBA"}.mdi-pan-top-left::before{content:"\\F0BBB"}.mdi-pan-top-right::before{content:"\\F0BBC"}.mdi-pan-up::before{content:"\\F0BBD"}.mdi-pan-vertical::before{content:"\\F0BBE"}.mdi-panda::before{content:"\\F03DA"}.mdi-pandora::before{content:"\\F03DB"}.mdi-panorama::before{content:"\\F03DC"}.mdi-panorama-fisheye::before{content:"\\F03DD"}.mdi-panorama-horizontal::before{content:"\\F03DE"}.mdi-panorama-vertical::before{content:"\\F03DF"}.mdi-panorama-wide-angle::before{content:"\\F03E0"}.mdi-paper-cut-vertical::before{content:"\\F03E1"}.mdi-paper-roll::before{content:"\\F1157"}.mdi-paper-roll-outline::before{content:"\\F1158"}.mdi-paperclip::before{content:"\\F03E2"}.mdi-parachute::before{content:"\\F0CB4"}.mdi-parachute-outline::before{content:"\\F0CB5"}.mdi-parking::before{content:"\\F03E3"}.mdi-party-popper::before{content:"\\F1056"}.mdi-passport::before{content:"\\F07E3"}.mdi-passport-biometric::before{content:"\\F0DE1"}.mdi-pasta::before{content:"\\F1160"}.mdi-patio-heater::before{content:"\\F0F80"}.mdi-patreon::before{content:"\\F0882"}.mdi-pause::before{content:"\\F03E4"}.mdi-pause-circle::before{content:"\\F03E5"}.mdi-pause-circle-outline::before{content:"\\F03E6"}.mdi-pause-octagon::before{content:"\\F03E7"}.mdi-pause-octagon-outline::before{content:"\\F03E8"}.mdi-paw::before{content:"\\F03E9"}.mdi-paw-off::before{content:"\\F0657"}.mdi-pdf-box::before{content:"\\F0E56"}.mdi-peace::before{content:"\\F0884"}.mdi-peanut::before{content:"\\F0FFC"}.mdi-peanut-off::before{content:"\\F0FFD"}.mdi-peanut-off-outline::before{content:"\\F0FFF"}.mdi-peanut-outline::before{content:"\\F0FFE"}.mdi-pen::before{content:"\\F03EA"}.mdi-pen-lock::before{content:"\\F0DE2"}.mdi-pen-minus::before{content:"\\F0DE3"}.mdi-pen-off::before{content:"\\F0DE4"}.mdi-pen-plus::before{content:"\\F0DE5"}.mdi-pen-remove::before{content:"\\F0DE6"}.mdi-pencil::before{content:"\\F03EB"}.mdi-pencil-box::before{content:"\\F03EC"}.mdi-pencil-box-multiple::before{content:"\\F1144"}.mdi-pencil-box-multiple-outline::before{content:"\\F1145"}.mdi-pencil-box-outline::before{content:"\\F03ED"}.mdi-pencil-circle::before{content:"\\F06FF"}.mdi-pencil-circle-outline::before{content:"\\F0776"}.mdi-pencil-lock::before{content:"\\F03EE"}.mdi-pencil-lock-outline::before{content:"\\F0DE7"}.mdi-pencil-minus::before{content:"\\F0DE8"}.mdi-pencil-minus-outline::before{content:"\\F0DE9"}.mdi-pencil-off::before{content:"\\F03EF"}.mdi-pencil-off-outline::before{content:"\\F0DEA"}.mdi-pencil-outline::before{content:"\\F0CB6"}.mdi-pencil-plus::before{content:"\\F0DEB"}.mdi-pencil-plus-outline::before{content:"\\F0DEC"}.mdi-pencil-remove::before{content:"\\F0DED"}.mdi-pencil-remove-outline::before{content:"\\F0DEE"}.mdi-pencil-ruler::before{content:"\\F1353"}.mdi-penguin::before{content:"\\F0EC0"}.mdi-pentagon::before{content:"\\F0701"}.mdi-pentagon-outline::before{content:"\\F0700"}.mdi-percent::before{content:"\\F03F0"}.mdi-percent-outline::before{content:"\\F1278"}.mdi-periodic-table::before{content:"\\F08B6"}.mdi-perspective-less::before{content:"\\F0D23"}.mdi-perspective-more::before{content:"\\F0D24"}.mdi-pharmacy::before{content:"\\F03F1"}.mdi-phone::before{content:"\\F03F2"}.mdi-phone-alert::before{content:"\\F0F1A"}.mdi-phone-alert-outline::before{content:"\\F118E"}.mdi-phone-bluetooth::before{content:"\\F03F3"}.mdi-phone-bluetooth-outline::before{content:"\\F118F"}.mdi-phone-cancel::before{content:"\\F10BC"}.mdi-phone-cancel-outline::before{content:"\\F1190"}.mdi-phone-check::before{content:"\\F11A9"}.mdi-phone-check-outline::before{content:"\\F11AA"}.mdi-phone-classic::before{content:"\\F0602"}.mdi-phone-classic-off::before{content:"\\F1279"}.mdi-phone-forward::before{content:"\\F03F4"}.mdi-phone-forward-outline::before{content:"\\F1191"}.mdi-phone-hangup::before{content:"\\F03F5"}.mdi-phone-hangup-outline::before{content:"\\F1192"}.mdi-phone-in-talk::before{content:"\\F03F6"}.mdi-phone-in-talk-outline::before{content:"\\F1182"}.mdi-phone-incoming::before{content:"\\F03F7"}.mdi-phone-incoming-outline::before{content:"\\F1193"}.mdi-phone-lock::before{content:"\\F03F8"}.mdi-phone-lock-outline::before{content:"\\F1194"}.mdi-phone-log::before{content:"\\F03F9"}.mdi-phone-log-outline::before{content:"\\F1195"}.mdi-phone-message::before{content:"\\F1196"}.mdi-phone-message-outline::before{content:"\\F1197"}.mdi-phone-minus::before{content:"\\F0658"}.mdi-phone-minus-outline::before{content:"\\F1198"}.mdi-phone-missed::before{content:"\\F03FA"}.mdi-phone-missed-outline::before{content:"\\F11A5"}.mdi-phone-off::before{content:"\\F0DEF"}.mdi-phone-off-outline::before{content:"\\F11A6"}.mdi-phone-outgoing::before{content:"\\F03FB"}.mdi-phone-outgoing-outline::before{content:"\\F1199"}.mdi-phone-outline::before{content:"\\F0DF0"}.mdi-phone-paused::before{content:"\\F03FC"}.mdi-phone-paused-outline::before{content:"\\F119A"}.mdi-phone-plus::before{content:"\\F0659"}.mdi-phone-plus-outline::before{content:"\\F119B"}.mdi-phone-return::before{content:"\\F082F"}.mdi-phone-return-outline::before{content:"\\F119C"}.mdi-phone-ring::before{content:"\\F11AB"}.mdi-phone-ring-outline::before{content:"\\F11AC"}.mdi-phone-rotate-landscape::before{content:"\\F0885"}.mdi-phone-rotate-portrait::before{content:"\\F0886"}.mdi-phone-settings::before{content:"\\F03FD"}.mdi-phone-settings-outline::before{content:"\\F119D"}.mdi-phone-voip::before{content:"\\F03FE"}.mdi-pi::before{content:"\\F03FF"}.mdi-pi-box::before{content:"\\F0400"}.mdi-pi-hole::before{content:"\\F0DF1"}.mdi-piano::before{content:"\\F067D"}.mdi-pickaxe::before{content:"\\F08B7"}.mdi-picture-in-picture-bottom-right::before{content:"\\F0E57"}.mdi-picture-in-picture-bottom-right-outline::before{content:"\\F0E58"}.mdi-picture-in-picture-top-right::before{content:"\\F0E59"}.mdi-picture-in-picture-top-right-outline::before{content:"\\F0E5A"}.mdi-pier::before{content:"\\F0887"}.mdi-pier-crane::before{content:"\\F0888"}.mdi-pig::before{content:"\\F0401"}.mdi-pig-variant::before{content:"\\F1006"}.mdi-piggy-bank::before{content:"\\F1007"}.mdi-pill::before{content:"\\F0402"}.mdi-pillar::before{content:"\\F0702"}.mdi-pin::before{content:"\\F0403"}.mdi-pin-off::before{content:"\\F0404"}.mdi-pin-off-outline::before{content:"\\F0930"}.mdi-pin-outline::before{content:"\\F0931"}.mdi-pine-tree::before{content:"\\F0405"}.mdi-pine-tree-box::before{content:"\\F0406"}.mdi-pine-tree-fire::before{content:"\\F141A"}.mdi-pinterest::before{content:"\\F0407"}.mdi-pinwheel::before{content:"\\F0AD5"}.mdi-pinwheel-outline::before{content:"\\F0AD6"}.mdi-pipe::before{content:"\\F07E5"}.mdi-pipe-disconnected::before{content:"\\F07E6"}.mdi-pipe-leak::before{content:"\\F0889"}.mdi-pipe-wrench::before{content:"\\F1354"}.mdi-pirate::before{content:"\\F0A08"}.mdi-pistol::before{content:"\\F0703"}.mdi-piston::before{content:"\\F088A"}.mdi-pizza::before{content:"\\F0409"}.mdi-play::before{content:"\\F040A"}.mdi-play-box::before{content:"\\F127A"}.mdi-play-box-multiple::before{content:"\\F0D19"}.mdi-play-box-multiple-outline::before{content:"\\F13E6"}.mdi-play-box-outline::before{content:"\\F040B"}.mdi-play-circle::before{content:"\\F040C"}.mdi-play-circle-outline::before{content:"\\F040D"}.mdi-play-network::before{content:"\\F088B"}.mdi-play-network-outline::before{content:"\\F0CB7"}.mdi-play-outline::before{content:"\\F0F1B"}.mdi-play-pause::before{content:"\\F040E"}.mdi-play-protected-content::before{content:"\\F040F"}.mdi-play-speed::before{content:"\\F08FF"}.mdi-playlist-check::before{content:"\\F05C7"}.mdi-playlist-edit::before{content:"\\F0900"}.mdi-playlist-minus::before{content:"\\F0410"}.mdi-playlist-music::before{content:"\\F0CB8"}.mdi-playlist-music-outline::before{content:"\\F0CB9"}.mdi-playlist-play::before{content:"\\F0411"}.mdi-playlist-plus::before{content:"\\F0412"}.mdi-playlist-remove::before{content:"\\F0413"}.mdi-playlist-star::before{content:"\\F0DF2"}.mdi-plex::before{content:"\\F06BA"}.mdi-plus::before{content:"\\F0415"}.mdi-plus-box::before{content:"\\F0416"}.mdi-plus-box-multiple::before{content:"\\F0334"}.mdi-plus-box-multiple-outline::before{content:"\\F1143"}.mdi-plus-box-outline::before{content:"\\F0704"}.mdi-plus-circle::before{content:"\\F0417"}.mdi-plus-circle-multiple::before{content:"\\F034C"}.mdi-plus-circle-multiple-outline::before{content:"\\F0418"}.mdi-plus-circle-outline::before{content:"\\F0419"}.mdi-plus-minus::before{content:"\\F0992"}.mdi-plus-minus-box::before{content:"\\F0993"}.mdi-plus-minus-variant::before{content:"\\F14C9"}.mdi-plus-network::before{content:"\\F041A"}.mdi-plus-network-outline::before{content:"\\F0CBA"}.mdi-plus-one::before{content:"\\F041B"}.mdi-plus-outline::before{content:"\\F0705"}.mdi-plus-thick::before{content:"\\F11EC"}.mdi-podcast::before{content:"\\F0994"}.mdi-podium::before{content:"\\F0D25"}.mdi-podium-bronze::before{content:"\\F0D26"}.mdi-podium-gold::before{content:"\\F0D27"}.mdi-podium-silver::before{content:"\\F0D28"}.mdi-point-of-sale::before{content:"\\F0D92"}.mdi-pokeball::before{content:"\\F041D"}.mdi-pokemon-go::before{content:"\\F0A09"}.mdi-poker-chip::before{content:"\\F0830"}.mdi-polaroid::before{content:"\\F041E"}.mdi-police-badge::before{content:"\\F1167"}.mdi-police-badge-outline::before{content:"\\F1168"}.mdi-poll::before{content:"\\F041F"}.mdi-poll-box::before{content:"\\F0420"}.mdi-poll-box-outline::before{content:"\\F127B"}.mdi-polo::before{content:"\\F14C3"}.mdi-polymer::before{content:"\\F0421"}.mdi-pool::before{content:"\\F0606"}.mdi-popcorn::before{content:"\\F0422"}.mdi-post::before{content:"\\F1008"}.mdi-post-outline::before{content:"\\F1009"}.mdi-postage-stamp::before{content:"\\F0CBB"}.mdi-pot::before{content:"\\F02E5"}.mdi-pot-mix::before{content:"\\F065B"}.mdi-pot-mix-outline::before{content:"\\F0677"}.mdi-pot-outline::before{content:"\\F02FF"}.mdi-pot-steam::before{content:"\\F065A"}.mdi-pot-steam-outline::before{content:"\\F0326"}.mdi-pound::before{content:"\\F0423"}.mdi-pound-box::before{content:"\\F0424"}.mdi-pound-box-outline::before{content:"\\F117F"}.mdi-power::before{content:"\\F0425"}.mdi-power-cycle::before{content:"\\F0901"}.mdi-power-off::before{content:"\\F0902"}.mdi-power-on::before{content:"\\F0903"}.mdi-power-plug::before{content:"\\F06A5"}.mdi-power-plug-off::before{content:"\\F06A6"}.mdi-power-plug-off-outline::before{content:"\\F1424"}.mdi-power-plug-outline::before{content:"\\F1425"}.mdi-power-settings::before{content:"\\F0426"}.mdi-power-sleep::before{content:"\\F0904"}.mdi-power-socket::before{content:"\\F0427"}.mdi-power-socket-au::before{content:"\\F0905"}.mdi-power-socket-de::before{content:"\\F1107"}.mdi-power-socket-eu::before{content:"\\F07E7"}.mdi-power-socket-fr::before{content:"\\F1108"}.mdi-power-socket-jp::before{content:"\\F1109"}.mdi-power-socket-uk::before{content:"\\F07E8"}.mdi-power-socket-us::before{content:"\\F07E9"}.mdi-power-standby::before{content:"\\F0906"}.mdi-powershell::before{content:"\\F0A0A"}.mdi-prescription::before{content:"\\F0706"}.mdi-presentation::before{content:"\\F0428"}.mdi-presentation-play::before{content:"\\F0429"}.mdi-printer::before{content:"\\F042A"}.mdi-printer-3d::before{content:"\\F042B"}.mdi-printer-3d-nozzle::before{content:"\\F0E5B"}.mdi-printer-3d-nozzle-alert::before{content:"\\F11C0"}.mdi-printer-3d-nozzle-alert-outline::before{content:"\\F11C1"}.mdi-printer-3d-nozzle-outline::before{content:"\\F0E5C"}.mdi-printer-alert::before{content:"\\F042C"}.mdi-printer-check::before{content:"\\F1146"}.mdi-printer-eye::before{content:"\\F1458"}.mdi-printer-off::before{content:"\\F0E5D"}.mdi-printer-pos::before{content:"\\F1057"}.mdi-printer-search::before{content:"\\F1457"}.mdi-printer-settings::before{content:"\\F0707"}.mdi-printer-wireless::before{content:"\\F0A0B"}.mdi-priority-high::before{content:"\\F0603"}.mdi-priority-low::before{content:"\\F0604"}.mdi-professional-hexagon::before{content:"\\F042D"}.mdi-progress-alert::before{content:"\\F0CBC"}.mdi-progress-check::before{content:"\\F0995"}.mdi-progress-clock::before{content:"\\F0996"}.mdi-progress-close::before{content:"\\F110A"}.mdi-progress-download::before{content:"\\F0997"}.mdi-progress-upload::before{content:"\\F0998"}.mdi-progress-wrench::before{content:"\\F0CBD"}.mdi-projector::before{content:"\\F042E"}.mdi-projector-screen::before{content:"\\F042F"}.mdi-propane-tank::before{content:"\\F1357"}.mdi-propane-tank-outline::before{content:"\\F1358"}.mdi-protocol::before{content:"\\F0FD8"}.mdi-publish::before{content:"\\F06A7"}.mdi-pulse::before{content:"\\F0430"}.mdi-pump::before{content:"\\F1402"}.mdi-pumpkin::before{content:"\\F0BBF"}.mdi-purse::before{content:"\\F0F1C"}.mdi-purse-outline::before{content:"\\F0F1D"}.mdi-puzzle::before{content:"\\F0431"}.mdi-puzzle-check::before{content:"\\F1426"}.mdi-puzzle-check-outline::before{content:"\\F1427"}.mdi-puzzle-edit::before{content:"\\F14D3"}.mdi-puzzle-edit-outline::before{content:"\\F14D9"}.mdi-puzzle-heart::before{content:"\\F14D4"}.mdi-puzzle-heart-outline::before{content:"\\F14DA"}.mdi-puzzle-minus::before{content:"\\F14D1"}.mdi-puzzle-minus-outline::before{content:"\\F14D7"}.mdi-puzzle-outline::before{content:"\\F0A66"}.mdi-puzzle-plus::before{content:"\\F14D0"}.mdi-puzzle-plus-outline::before{content:"\\F14D6"}.mdi-puzzle-remove::before{content:"\\F14D2"}.mdi-puzzle-remove-outline::before{content:"\\F14D8"}.mdi-puzzle-star::before{content:"\\F14D5"}.mdi-puzzle-star-outline::before{content:"\\F14DB"}.mdi-qi::before{content:"\\F0999"}.mdi-qqchat::before{content:"\\F0605"}.mdi-qrcode::before{content:"\\F0432"}.mdi-qrcode-edit::before{content:"\\F08B8"}.mdi-qrcode-minus::before{content:"\\F118C"}.mdi-qrcode-plus::before{content:"\\F118B"}.mdi-qrcode-remove::before{content:"\\F118D"}.mdi-qrcode-scan::before{content:"\\F0433"}.mdi-quadcopter::before{content:"\\F0434"}.mdi-quality-high::before{content:"\\F0435"}.mdi-quality-low::before{content:"\\F0A0C"}.mdi-quality-medium::before{content:"\\F0A0D"}.mdi-quora::before{content:"\\F0D29"}.mdi-rabbit::before{content:"\\F0907"}.mdi-racing-helmet::before{content:"\\F0D93"}.mdi-racquetball::before{content:"\\F0D94"}.mdi-radar::before{content:"\\F0437"}.mdi-radiator::before{content:"\\F0438"}.mdi-radiator-disabled::before{content:"\\F0AD7"}.mdi-radiator-off::before{content:"\\F0AD8"}.mdi-radio::before{content:"\\F0439"}.mdi-radio-am::before{content:"\\F0CBE"}.mdi-radio-fm::before{content:"\\F0CBF"}.mdi-radio-handheld::before{content:"\\F043A"}.mdi-radio-off::before{content:"\\F121C"}.mdi-radio-tower::before{content:"\\F043B"}.mdi-radioactive::before{content:"\\F043C"}.mdi-radioactive-off::before{content:"\\F0EC1"}.mdi-radiobox-blank::before{content:"\\F043D"}.mdi-radiobox-marked::before{content:"\\F043E"}.mdi-radiology-box::before{content:"\\F14C5"}.mdi-radiology-box-outline::before{content:"\\F14C6"}.mdi-radius::before{content:"\\F0CC0"}.mdi-radius-outline::before{content:"\\F0CC1"}.mdi-railroad-light::before{content:"\\F0F1E"}.mdi-raspberry-pi::before{content:"\\F043F"}.mdi-ray-end::before{content:"\\F0440"}.mdi-ray-end-arrow::before{content:"\\F0441"}.mdi-ray-start::before{content:"\\F0442"}.mdi-ray-start-arrow::before{content:"\\F0443"}.mdi-ray-start-end::before{content:"\\F0444"}.mdi-ray-vertex::before{content:"\\F0445"}.mdi-react::before{content:"\\F0708"}.mdi-read::before{content:"\\F0447"}.mdi-receipt::before{content:"\\F0449"}.mdi-record::before{content:"\\F044A"}.mdi-record-circle::before{content:"\\F0EC2"}.mdi-record-circle-outline::before{content:"\\F0EC3"}.mdi-record-player::before{content:"\\F099A"}.mdi-record-rec::before{content:"\\F044B"}.mdi-rectangle::before{content:"\\F0E5E"}.mdi-rectangle-outline::before{content:"\\F0E5F"}.mdi-recycle::before{content:"\\F044C"}.mdi-recycle-variant::before{content:"\\F139D"}.mdi-reddit::before{content:"\\F044D"}.mdi-redhat::before{content:"\\F111B"}.mdi-redo::before{content:"\\F044E"}.mdi-redo-variant::before{content:"\\F044F"}.mdi-reflect-horizontal::before{content:"\\F0A0E"}.mdi-reflect-vertical::before{content:"\\F0A0F"}.mdi-refresh::before{content:"\\F0450"}.mdi-refresh-circle::before{content:"\\F1377"}.mdi-regex::before{content:"\\F0451"}.mdi-registered-trademark::before{content:"\\F0A67"}.mdi-relation-many-to-many::before{content:"\\F1496"}.mdi-relation-many-to-one::before{content:"\\F1497"}.mdi-relation-many-to-one-or-many::before{content:"\\F1498"}.mdi-relation-many-to-only-one::before{content:"\\F1499"}.mdi-relation-many-to-zero-or-many::before{content:"\\F149A"}.mdi-relation-many-to-zero-or-one::before{content:"\\F149B"}.mdi-relation-one-or-many-to-many::before{content:"\\F149C"}.mdi-relation-one-or-many-to-one::before{content:"\\F149D"}.mdi-relation-one-or-many-to-one-or-many::before{content:"\\F149E"}.mdi-relation-one-or-many-to-only-one::before{content:"\\F149F"}.mdi-relation-one-or-many-to-zero-or-many::before{content:"\\F14A0"}.mdi-relation-one-or-many-to-zero-or-one::before{content:"\\F14A1"}.mdi-relation-one-to-many::before{content:"\\F14A2"}.mdi-relation-one-to-one::before{content:"\\F14A3"}.mdi-relation-one-to-one-or-many::before{content:"\\F14A4"}.mdi-relation-one-to-only-one::before{content:"\\F14A5"}.mdi-relation-one-to-zero-or-many::before{content:"\\F14A6"}.mdi-relation-one-to-zero-or-one::before{content:"\\F14A7"}.mdi-relation-only-one-to-many::before{content:"\\F14A8"}.mdi-relation-only-one-to-one::before{content:"\\F14A9"}.mdi-relation-only-one-to-one-or-many::before{content:"\\F14AA"}.mdi-relation-only-one-to-only-one::before{content:"\\F14AB"}.mdi-relation-only-one-to-zero-or-many::before{content:"\\F14AC"}.mdi-relation-only-one-to-zero-or-one::before{content:"\\F14AD"}.mdi-relation-zero-or-many-to-many::before{content:"\\F14AE"}.mdi-relation-zero-or-many-to-one::before{content:"\\F14AF"}.mdi-relation-zero-or-many-to-one-or-many::before{content:"\\F14B0"}.mdi-relation-zero-or-many-to-only-one::before{content:"\\F14B1"}.mdi-relation-zero-or-many-to-zero-or-many::before{content:"\\F14B2"}.mdi-relation-zero-or-many-to-zero-or-one::before{content:"\\F14B3"}.mdi-relation-zero-or-one-to-many::before{content:"\\F14B4"}.mdi-relation-zero-or-one-to-one::before{content:"\\F14B5"}.mdi-relation-zero-or-one-to-one-or-many::before{content:"\\F14B6"}.mdi-relation-zero-or-one-to-only-one::before{content:"\\F14B7"}.mdi-relation-zero-or-one-to-zero-or-many::before{content:"\\F14B8"}.mdi-relation-zero-or-one-to-zero-or-one::before{content:"\\F14B9"}.mdi-relative-scale::before{content:"\\F0452"}.mdi-reload::before{content:"\\F0453"}.mdi-reload-alert::before{content:"\\F110B"}.mdi-reminder::before{content:"\\F088C"}.mdi-remote::before{content:"\\F0454"}.mdi-remote-desktop::before{content:"\\F08B9"}.mdi-remote-off::before{content:"\\F0EC4"}.mdi-remote-tv::before{content:"\\F0EC5"}.mdi-remote-tv-off::before{content:"\\F0EC6"}.mdi-rename-box::before{content:"\\F0455"}.mdi-reorder-horizontal::before{content:"\\F0688"}.mdi-reorder-vertical::before{content:"\\F0689"}.mdi-repeat::before{content:"\\F0456"}.mdi-repeat-off::before{content:"\\F0457"}.mdi-repeat-once::before{content:"\\F0458"}.mdi-replay::before{content:"\\F0459"}.mdi-reply::before{content:"\\F045A"}.mdi-reply-all::before{content:"\\F045B"}.mdi-reply-all-outline::before{content:"\\F0F1F"}.mdi-reply-circle::before{content:"\\F11AE"}.mdi-reply-outline::before{content:"\\F0F20"}.mdi-reproduction::before{content:"\\F045C"}.mdi-resistor::before{content:"\\F0B44"}.mdi-resistor-nodes::before{content:"\\F0B45"}.mdi-resize::before{content:"\\F0A68"}.mdi-resize-bottom-right::before{content:"\\F045D"}.mdi-responsive::before{content:"\\F045E"}.mdi-restart::before{content:"\\F0709"}.mdi-restart-alert::before{content:"\\F110C"}.mdi-restart-off::before{content:"\\F0D95"}.mdi-restore::before{content:"\\F099B"}.mdi-restore-alert::before{content:"\\F110D"}.mdi-rewind::before{content:"\\F045F"}.mdi-rewind-10::before{content:"\\F0D2A"}.mdi-rewind-30::before{content:"\\F0D96"}.mdi-rewind-5::before{content:"\\F11F9"}.mdi-rewind-outline::before{content:"\\F070A"}.mdi-rhombus::before{content:"\\F070B"}.mdi-rhombus-medium::before{content:"\\F0A10"}.mdi-rhombus-medium-outline::before{content:"\\F14DC"}.mdi-rhombus-outline::before{content:"\\F070C"}.mdi-rhombus-split::before{content:"\\F0A11"}.mdi-rhombus-split-outline::before{content:"\\F14DD"}.mdi-ribbon::before{content:"\\F0460"}.mdi-rice::before{content:"\\F07EA"}.mdi-ring::before{content:"\\F07EB"}.mdi-rivet::before{content:"\\F0E60"}.mdi-road::before{content:"\\F0461"}.mdi-road-variant::before{content:"\\F0462"}.mdi-robber::before{content:"\\F1058"}.mdi-robot::before{content:"\\F06A9"}.mdi-robot-industrial::before{content:"\\F0B46"}.mdi-robot-mower::before{content:"\\F11F7"}.mdi-robot-mower-outline::before{content:"\\F11F3"}.mdi-robot-vacuum::before{content:"\\F070D"}.mdi-robot-vacuum-variant::before{content:"\\F0908"}.mdi-rocket::before{content:"\\F0463"}.mdi-rocket-launch::before{content:"\\F14DE"}.mdi-rocket-launch-outline::before{content:"\\F14DF"}.mdi-rocket-outline::before{content:"\\F13AF"}.mdi-rodent::before{content:"\\F1327"}.mdi-roller-skate::before{content:"\\F0D2B"}.mdi-roller-skate-off::before{content:"\\F0145"}.mdi-rollerblade::before{content:"\\F0D2C"}.mdi-rollerblade-off::before{content:"\\F002E"}.mdi-rollupjs::before{content:"\\F0BC0"}.mdi-roman-numeral-1::before{content:"\\F1088"}.mdi-roman-numeral-10::before{content:"\\F1091"}.mdi-roman-numeral-2::before{content:"\\F1089"}.mdi-roman-numeral-3::before{content:"\\F108A"}.mdi-roman-numeral-4::before{content:"\\F108B"}.mdi-roman-numeral-5::before{content:"\\F108C"}.mdi-roman-numeral-6::before{content:"\\F108D"}.mdi-roman-numeral-7::before{content:"\\F108E"}.mdi-roman-numeral-8::before{content:"\\F108F"}.mdi-roman-numeral-9::before{content:"\\F1090"}.mdi-room-service::before{content:"\\F088D"}.mdi-room-service-outline::before{content:"\\F0D97"}.mdi-rotate-3d::before{content:"\\F0EC7"}.mdi-rotate-3d-variant::before{content:"\\F0464"}.mdi-rotate-left::before{content:"\\F0465"}.mdi-rotate-left-variant::before{content:"\\F0466"}.mdi-rotate-orbit::before{content:"\\F0D98"}.mdi-rotate-right::before{content:"\\F0467"}.mdi-rotate-right-variant::before{content:"\\F0468"}.mdi-rounded-corner::before{content:"\\F0607"}.mdi-router::before{content:"\\F11E2"}.mdi-router-network::before{content:"\\F1087"}.mdi-router-wireless::before{content:"\\F0469"}.mdi-router-wireless-settings::before{content:"\\F0A69"}.mdi-routes::before{content:"\\F046A"}.mdi-routes-clock::before{content:"\\F1059"}.mdi-rowing::before{content:"\\F0608"}.mdi-rss::before{content:"\\F046B"}.mdi-rss-box::before{content:"\\F046C"}.mdi-rss-off::before{content:"\\F0F21"}.mdi-rug::before{content:"\\F1475"}.mdi-rugby::before{content:"\\F0D99"}.mdi-ruler::before{content:"\\F046D"}.mdi-ruler-square::before{content:"\\F0CC2"}.mdi-ruler-square-compass::before{content:"\\F0EBE"}.mdi-run::before{content:"\\F070E"}.mdi-run-fast::before{content:"\\F046E"}.mdi-rv-truck::before{content:"\\F11D4"}.mdi-sack::before{content:"\\F0D2E"}.mdi-sack-percent::before{content:"\\F0D2F"}.mdi-safe::before{content:"\\F0A6A"}.mdi-safe-square::before{content:"\\F127C"}.mdi-safe-square-outline::before{content:"\\F127D"}.mdi-safety-goggles::before{content:"\\F0D30"}.mdi-sail-boat::before{content:"\\F0EC8"}.mdi-sale::before{content:"\\F046F"}.mdi-salesforce::before{content:"\\F088E"}.mdi-sass::before{content:"\\F07EC"}.mdi-satellite::before{content:"\\F0470"}.mdi-satellite-uplink::before{content:"\\F0909"}.mdi-satellite-variant::before{content:"\\F0471"}.mdi-sausage::before{content:"\\F08BA"}.mdi-saw-blade::before{content:"\\F0E61"}.mdi-sawtooth-wave::before{content:"\\F147A"}.mdi-saxophone::before{content:"\\F0609"}.mdi-scale::before{content:"\\F0472"}.mdi-scale-balance::before{content:"\\F05D1"}.mdi-scale-bathroom::before{content:"\\F0473"}.mdi-scale-off::before{content:"\\F105A"}.mdi-scan-helper::before{content:"\\F13D8"}.mdi-scanner::before{content:"\\F06AB"}.mdi-scanner-off::before{content:"\\F090A"}.mdi-scatter-plot::before{content:"\\F0EC9"}.mdi-scatter-plot-outline::before{content:"\\F0ECA"}.mdi-school::before{content:"\\F0474"}.mdi-school-outline::before{content:"\\F1180"}.mdi-scissors-cutting::before{content:"\\F0A6B"}.mdi-scooter::before{content:"\\F11E9"}.mdi-scoreboard::before{content:"\\F127E"}.mdi-scoreboard-outline::before{content:"\\F127F"}.mdi-screen-rotation::before{content:"\\F0475"}.mdi-screen-rotation-lock::before{content:"\\F0478"}.mdi-screw-flat-top::before{content:"\\F0DF3"}.mdi-screw-lag::before{content:"\\F0DF4"}.mdi-screw-machine-flat-top::before{content:"\\F0DF5"}.mdi-screw-machine-round-top::before{content:"\\F0DF6"}.mdi-screw-round-top::before{content:"\\F0DF7"}.mdi-screwdriver::before{content:"\\F0476"}.mdi-script::before{content:"\\F0BC1"}.mdi-script-outline::before{content:"\\F0477"}.mdi-script-text::before{content:"\\F0BC2"}.mdi-script-text-outline::before{content:"\\F0BC3"}.mdi-sd::before{content:"\\F0479"}.mdi-seal::before{content:"\\F047A"}.mdi-seal-variant::before{content:"\\F0FD9"}.mdi-search-web::before{content:"\\F070F"}.mdi-seat::before{content:"\\F0CC3"}.mdi-seat-flat::before{content:"\\F047B"}.mdi-seat-flat-angled::before{content:"\\F047C"}.mdi-seat-individual-suite::before{content:"\\F047D"}.mdi-seat-legroom-extra::before{content:"\\F047E"}.mdi-seat-legroom-normal::before{content:"\\F047F"}.mdi-seat-legroom-reduced::before{content:"\\F0480"}.mdi-seat-outline::before{content:"\\F0CC4"}.mdi-seat-passenger::before{content:"\\F1249"}.mdi-seat-recline-extra::before{content:"\\F0481"}.mdi-seat-recline-normal::before{content:"\\F0482"}.mdi-seatbelt::before{content:"\\F0CC5"}.mdi-security::before{content:"\\F0483"}.mdi-security-network::before{content:"\\F0484"}.mdi-seed::before{content:"\\F0E62"}.mdi-seed-off::before{content:"\\F13FD"}.mdi-seed-off-outline::before{content:"\\F13FE"}.mdi-seed-outline::before{content:"\\F0E63"}.mdi-segment::before{content:"\\F0ECB"}.mdi-select::before{content:"\\F0485"}.mdi-select-all::before{content:"\\F0486"}.mdi-select-color::before{content:"\\F0D31"}.mdi-select-compare::before{content:"\\F0AD9"}.mdi-select-drag::before{content:"\\F0A6C"}.mdi-select-group::before{content:"\\F0F82"}.mdi-select-inverse::before{content:"\\F0487"}.mdi-select-marker::before{content:"\\F1280"}.mdi-select-multiple::before{content:"\\F1281"}.mdi-select-multiple-marker::before{content:"\\F1282"}.mdi-select-off::before{content:"\\F0488"}.mdi-select-place::before{content:"\\F0FDA"}.mdi-select-search::before{content:"\\F1204"}.mdi-selection::before{content:"\\F0489"}.mdi-selection-drag::before{content:"\\F0A6D"}.mdi-selection-ellipse::before{content:"\\F0D32"}.mdi-selection-ellipse-arrow-inside::before{content:"\\F0F22"}.mdi-selection-marker::before{content:"\\F1283"}.mdi-selection-multiple::before{content:"\\F1285"}.mdi-selection-multiple-marker::before{content:"\\F1284"}.mdi-selection-off::before{content:"\\F0777"}.mdi-selection-search::before{content:"\\F1205"}.mdi-semantic-web::before{content:"\\F1316"}.mdi-send::before{content:"\\F048A"}.mdi-send-check::before{content:"\\F1161"}.mdi-send-check-outline::before{content:"\\F1162"}.mdi-send-circle::before{content:"\\F0DF8"}.mdi-send-circle-outline::before{content:"\\F0DF9"}.mdi-send-clock::before{content:"\\F1163"}.mdi-send-clock-outline::before{content:"\\F1164"}.mdi-send-lock::before{content:"\\F07ED"}.mdi-send-lock-outline::before{content:"\\F1166"}.mdi-send-outline::before{content:"\\F1165"}.mdi-serial-port::before{content:"\\F065C"}.mdi-server::before{content:"\\F048B"}.mdi-server-minus::before{content:"\\F048C"}.mdi-server-network::before{content:"\\F048D"}.mdi-server-network-off::before{content:"\\F048E"}.mdi-server-off::before{content:"\\F048F"}.mdi-server-plus::before{content:"\\F0490"}.mdi-server-remove::before{content:"\\F0491"}.mdi-server-security::before{content:"\\F0492"}.mdi-set-all::before{content:"\\F0778"}.mdi-set-center::before{content:"\\F0779"}.mdi-set-center-right::before{content:"\\F077A"}.mdi-set-left::before{content:"\\F077B"}.mdi-set-left-center::before{content:"\\F077C"}.mdi-set-left-right::before{content:"\\F077D"}.mdi-set-merge::before{content:"\\F14E0"}.mdi-set-none::before{content:"\\F077E"}.mdi-set-right::before{content:"\\F077F"}.mdi-set-split::before{content:"\\F14E1"}.mdi-set-square::before{content:"\\F145D"}.mdi-set-top-box::before{content:"\\F099F"}.mdi-settings-helper::before{content:"\\F0A6E"}.mdi-shaker::before{content:"\\F110E"}.mdi-shaker-outline::before{content:"\\F110F"}.mdi-shape::before{content:"\\F0831"}.mdi-shape-circle-plus::before{content:"\\F065D"}.mdi-shape-outline::before{content:"\\F0832"}.mdi-shape-oval-plus::before{content:"\\F11FA"}.mdi-shape-plus::before{content:"\\F0495"}.mdi-shape-polygon-plus::before{content:"\\F065E"}.mdi-shape-rectangle-plus::before{content:"\\F065F"}.mdi-shape-square-plus::before{content:"\\F0660"}.mdi-share::before{content:"\\F0496"}.mdi-share-all::before{content:"\\F11F4"}.mdi-share-all-outline::before{content:"\\F11F5"}.mdi-share-circle::before{content:"\\F11AD"}.mdi-share-off::before{content:"\\F0F23"}.mdi-share-off-outline::before{content:"\\F0F24"}.mdi-share-outline::before{content:"\\F0932"}.mdi-share-variant::before{content:"\\F0497"}.mdi-sheep::before{content:"\\F0CC6"}.mdi-shield::before{content:"\\F0498"}.mdi-shield-account::before{content:"\\F088F"}.mdi-shield-account-outline::before{content:"\\F0A12"}.mdi-shield-airplane::before{content:"\\F06BB"}.mdi-shield-airplane-outline::before{content:"\\F0CC7"}.mdi-shield-alert::before{content:"\\F0ECC"}.mdi-shield-alert-outline::before{content:"\\F0ECD"}.mdi-shield-bug::before{content:"\\F13DA"}.mdi-shield-bug-outline::before{content:"\\F13DB"}.mdi-shield-car::before{content:"\\F0F83"}.mdi-shield-check::before{content:"\\F0565"}.mdi-shield-check-outline::before{content:"\\F0CC8"}.mdi-shield-cross::before{content:"\\F0CC9"}.mdi-shield-cross-outline::before{content:"\\F0CCA"}.mdi-shield-edit::before{content:"\\F11A0"}.mdi-shield-edit-outline::before{content:"\\F11A1"}.mdi-shield-half::before{content:"\\F1360"}.mdi-shield-half-full::before{content:"\\F0780"}.mdi-shield-home::before{content:"\\F068A"}.mdi-shield-home-outline::before{content:"\\F0CCB"}.mdi-shield-key::before{content:"\\F0BC4"}.mdi-shield-key-outline::before{content:"\\F0BC5"}.mdi-shield-link-variant::before{content:"\\F0D33"}.mdi-shield-link-variant-outline::before{content:"\\F0D34"}.mdi-shield-lock::before{content:"\\F099D"}.mdi-shield-lock-outline::before{content:"\\F0CCC"}.mdi-shield-off::before{content:"\\F099E"}.mdi-shield-off-outline::before{content:"\\F099C"}.mdi-shield-outline::before{content:"\\F0499"}.mdi-shield-plus::before{content:"\\F0ADA"}.mdi-shield-plus-outline::before{content:"\\F0ADB"}.mdi-shield-refresh::before{content:"\\F00AA"}.mdi-shield-refresh-outline::before{content:"\\F01E0"}.mdi-shield-remove::before{content:"\\F0ADC"}.mdi-shield-remove-outline::before{content:"\\F0ADD"}.mdi-shield-search::before{content:"\\F0D9A"}.mdi-shield-star::before{content:"\\F113B"}.mdi-shield-star-outline::before{content:"\\F113C"}.mdi-shield-sun::before{content:"\\F105D"}.mdi-shield-sun-outline::before{content:"\\F105E"}.mdi-shield-sync::before{content:"\\F11A2"}.mdi-shield-sync-outline::before{content:"\\F11A3"}.mdi-ship-wheel::before{content:"\\F0833"}.mdi-shoe-formal::before{content:"\\F0B47"}.mdi-shoe-heel::before{content:"\\F0B48"}.mdi-shoe-print::before{content:"\\F0DFA"}.mdi-shopping::before{content:"\\F049A"}.mdi-shopping-music::before{content:"\\F049B"}.mdi-shopping-outline::before{content:"\\F11D5"}.mdi-shopping-search::before{content:"\\F0F84"}.mdi-shovel::before{content:"\\F0710"}.mdi-shovel-off::before{content:"\\F0711"}.mdi-shower::before{content:"\\F09A0"}.mdi-shower-head::before{content:"\\F09A1"}.mdi-shredder::before{content:"\\F049C"}.mdi-shuffle::before{content:"\\F049D"}.mdi-shuffle-disabled::before{content:"\\F049E"}.mdi-shuffle-variant::before{content:"\\F049F"}.mdi-shuriken::before{content:"\\F137F"}.mdi-sigma::before{content:"\\F04A0"}.mdi-sigma-lower::before{content:"\\F062B"}.mdi-sign-caution::before{content:"\\F04A1"}.mdi-sign-direction::before{content:"\\F0781"}.mdi-sign-direction-minus::before{content:"\\F1000"}.mdi-sign-direction-plus::before{content:"\\F0FDC"}.mdi-sign-direction-remove::before{content:"\\F0FDD"}.mdi-sign-real-estate::before{content:"\\F1118"}.mdi-sign-text::before{content:"\\F0782"}.mdi-signal::before{content:"\\F04A2"}.mdi-signal-2g::before{content:"\\F0712"}.mdi-signal-3g::before{content:"\\F0713"}.mdi-signal-4g::before{content:"\\F0714"}.mdi-signal-5g::before{content:"\\F0A6F"}.mdi-signal-cellular-1::before{content:"\\F08BC"}.mdi-signal-cellular-2::before{content:"\\F08BD"}.mdi-signal-cellular-3::before{content:"\\F08BE"}.mdi-signal-cellular-outline::before{content:"\\F08BF"}.mdi-signal-distance-variant::before{content:"\\F0E64"}.mdi-signal-hspa::before{content:"\\F0715"}.mdi-signal-hspa-plus::before{content:"\\F0716"}.mdi-signal-off::before{content:"\\F0783"}.mdi-signal-variant::before{content:"\\F060A"}.mdi-signature::before{content:"\\F0DFB"}.mdi-signature-freehand::before{content:"\\F0DFC"}.mdi-signature-image::before{content:"\\F0DFD"}.mdi-signature-text::before{content:"\\F0DFE"}.mdi-silo::before{content:"\\F0B49"}.mdi-silverware::before{content:"\\F04A3"}.mdi-silverware-clean::before{content:"\\F0FDE"}.mdi-silverware-fork::before{content:"\\F04A4"}.mdi-silverware-fork-knife::before{content:"\\F0A70"}.mdi-silverware-spoon::before{content:"\\F04A5"}.mdi-silverware-variant::before{content:"\\F04A6"}.mdi-sim::before{content:"\\F04A7"}.mdi-sim-alert::before{content:"\\F04A8"}.mdi-sim-off::before{content:"\\F04A9"}.mdi-simple-icons::before{content:"\\F131D"}.mdi-sina-weibo::before{content:"\\F0ADF"}.mdi-sine-wave::before{content:"\\F095B"}.mdi-sitemap::before{content:"\\F04AA"}.mdi-size-l::before{content:"\\F13A6"}.mdi-size-m::before{content:"\\F13A5"}.mdi-size-s::before{content:"\\F13A4"}.mdi-size-xl::before{content:"\\F13A7"}.mdi-size-xs::before{content:"\\F13A3"}.mdi-size-xxl::before{content:"\\F13A8"}.mdi-size-xxs::before{content:"\\F13A2"}.mdi-size-xxxl::before{content:"\\F13A9"}.mdi-skate::before{content:"\\F0D35"}.mdi-skateboard::before{content:"\\F14C2"}.mdi-skew-less::before{content:"\\F0D36"}.mdi-skew-more::before{content:"\\F0D37"}.mdi-ski::before{content:"\\F1304"}.mdi-ski-cross-country::before{content:"\\F1305"}.mdi-ski-water::before{content:"\\F1306"}.mdi-skip-backward::before{content:"\\F04AB"}.mdi-skip-backward-outline::before{content:"\\F0F25"}.mdi-skip-forward::before{content:"\\F04AC"}.mdi-skip-forward-outline::before{content:"\\F0F26"}.mdi-skip-next::before{content:"\\F04AD"}.mdi-skip-next-circle::before{content:"\\F0661"}.mdi-skip-next-circle-outline::before{content:"\\F0662"}.mdi-skip-next-outline::before{content:"\\F0F27"}.mdi-skip-previous::before{content:"\\F04AE"}.mdi-skip-previous-circle::before{content:"\\F0663"}.mdi-skip-previous-circle-outline::before{content:"\\F0664"}.mdi-skip-previous-outline::before{content:"\\F0F28"}.mdi-skull::before{content:"\\F068C"}.mdi-skull-crossbones::before{content:"\\F0BC6"}.mdi-skull-crossbones-outline::before{content:"\\F0BC7"}.mdi-skull-outline::before{content:"\\F0BC8"}.mdi-skull-scan::before{content:"\\F14C7"}.mdi-skull-scan-outline::before{content:"\\F14C8"}.mdi-skype::before{content:"\\F04AF"}.mdi-skype-business::before{content:"\\F04B0"}.mdi-slack::before{content:"\\F04B1"}.mdi-slash-forward::before{content:"\\F0FDF"}.mdi-slash-forward-box::before{content:"\\F0FE0"}.mdi-sleep::before{content:"\\F04B2"}.mdi-sleep-off::before{content:"\\F04B3"}.mdi-slope-downhill::before{content:"\\F0DFF"}.mdi-slope-uphill::before{content:"\\F0E00"}.mdi-slot-machine::before{content:"\\F1114"}.mdi-slot-machine-outline::before{content:"\\F1115"}.mdi-smart-card::before{content:"\\F10BD"}.mdi-smart-card-outline::before{content:"\\F10BE"}.mdi-smart-card-reader::before{content:"\\F10BF"}.mdi-smart-card-reader-outline::before{content:"\\F10C0"}.mdi-smog::before{content:"\\F0A71"}.mdi-smoke-detector::before{content:"\\F0392"}.mdi-smoking::before{content:"\\F04B4"}.mdi-smoking-off::before{content:"\\F04B5"}.mdi-smoking-pipe::before{content:"\\F140D"}.mdi-smoking-pipe-off::before{content:"\\F1428"}.mdi-snapchat::before{content:"\\F04B6"}.mdi-snowboard::before{content:"\\F1307"}.mdi-snowflake::before{content:"\\F0717"}.mdi-snowflake-alert::before{content:"\\F0F29"}.mdi-snowflake-melt::before{content:"\\F12CB"}.mdi-snowflake-variant::before{content:"\\F0F2A"}.mdi-snowman::before{content:"\\F04B7"}.mdi-soccer::before{content:"\\F04B8"}.mdi-soccer-field::before{content:"\\F0834"}.mdi-sofa::before{content:"\\F04B9"}.mdi-solar-panel::before{content:"\\F0D9B"}.mdi-solar-panel-large::before{content:"\\F0D9C"}.mdi-solar-power::before{content:"\\F0A72"}.mdi-soldering-iron::before{content:"\\F1092"}.mdi-solid::before{content:"\\F068D"}.mdi-sony-playstation::before{content:"\\F0414"}.mdi-sort::before{content:"\\F04BA"}.mdi-sort-alphabetical-ascending::before{content:"\\F05BD"}.mdi-sort-alphabetical-ascending-variant::before{content:"\\F1148"}.mdi-sort-alphabetical-descending::before{content:"\\F05BF"}.mdi-sort-alphabetical-descending-variant::before{content:"\\F1149"}.mdi-sort-alphabetical-variant::before{content:"\\F04BB"}.mdi-sort-ascending::before{content:"\\F04BC"}.mdi-sort-bool-ascending::before{content:"\\F1385"}.mdi-sort-bool-ascending-variant::before{content:"\\F1386"}.mdi-sort-bool-descending::before{content:"\\F1387"}.mdi-sort-bool-descending-variant::before{content:"\\F1388"}.mdi-sort-descending::before{content:"\\F04BD"}.mdi-sort-numeric-ascending::before{content:"\\F1389"}.mdi-sort-numeric-ascending-variant::before{content:"\\F090D"}.mdi-sort-numeric-descending::before{content:"\\F138A"}.mdi-sort-numeric-descending-variant::before{content:"\\F0AD2"}.mdi-sort-numeric-variant::before{content:"\\F04BE"}.mdi-sort-reverse-variant::before{content:"\\F033C"}.mdi-sort-variant::before{content:"\\F04BF"}.mdi-sort-variant-lock::before{content:"\\F0CCD"}.mdi-sort-variant-lock-open::before{content:"\\F0CCE"}.mdi-sort-variant-remove::before{content:"\\F1147"}.mdi-soundcloud::before{content:"\\F04C0"}.mdi-source-branch::before{content:"\\F062C"}.mdi-source-branch-check::before{content:"\\F14CF"}.mdi-source-branch-minus::before{content:"\\F14CB"}.mdi-source-branch-plus::before{content:"\\F14CA"}.mdi-source-branch-refresh::before{content:"\\F14CD"}.mdi-source-branch-remove::before{content:"\\F14CC"}.mdi-source-branch-sync::before{content:"\\F14CE"}.mdi-source-commit::before{content:"\\F0718"}.mdi-source-commit-end::before{content:"\\F0719"}.mdi-source-commit-end-local::before{content:"\\F071A"}.mdi-source-commit-local::before{content:"\\F071B"}.mdi-source-commit-next-local::before{content:"\\F071C"}.mdi-source-commit-start::before{content:"\\F071D"}.mdi-source-commit-start-next-local::before{content:"\\F071E"}.mdi-source-fork::before{content:"\\F04C1"}.mdi-source-merge::before{content:"\\F062D"}.mdi-source-pull::before{content:"\\F04C2"}.mdi-source-repository::before{content:"\\F0CCF"}.mdi-source-repository-multiple::before{content:"\\F0CD0"}.mdi-soy-sauce::before{content:"\\F07EE"}.mdi-soy-sauce-off::before{content:"\\F13FC"}.mdi-spa::before{content:"\\F0CD1"}.mdi-spa-outline::before{content:"\\F0CD2"}.mdi-space-invaders::before{content:"\\F0BC9"}.mdi-space-station::before{content:"\\F1383"}.mdi-spade::before{content:"\\F0E65"}.mdi-speaker::before{content:"\\F04C3"}.mdi-speaker-bluetooth::before{content:"\\F09A2"}.mdi-speaker-multiple::before{content:"\\F0D38"}.mdi-speaker-off::before{content:"\\F04C4"}.mdi-speaker-wireless::before{content:"\\F071F"}.mdi-speedometer::before{content:"\\F04C5"}.mdi-speedometer-medium::before{content:"\\F0F85"}.mdi-speedometer-slow::before{content:"\\F0F86"}.mdi-spellcheck::before{content:"\\F04C6"}.mdi-spider::before{content:"\\F11EA"}.mdi-spider-thread::before{content:"\\F11EB"}.mdi-spider-web::before{content:"\\F0BCA"}.mdi-spoon-sugar::before{content:"\\F1429"}.mdi-spotify::before{content:"\\F04C7"}.mdi-spotlight::before{content:"\\F04C8"}.mdi-spotlight-beam::before{content:"\\F04C9"}.mdi-spray::before{content:"\\F0665"}.mdi-spray-bottle::before{content:"\\F0AE0"}.mdi-sprinkler::before{content:"\\F105F"}.mdi-sprinkler-variant::before{content:"\\F1060"}.mdi-sprout::before{content:"\\F0E66"}.mdi-sprout-outline::before{content:"\\F0E67"}.mdi-square::before{content:"\\F0764"}.mdi-square-edit-outline::before{content:"\\F090C"}.mdi-square-medium::before{content:"\\F0A13"}.mdi-square-medium-outline::before{content:"\\F0A14"}.mdi-square-off::before{content:"\\F12EE"}.mdi-square-off-outline::before{content:"\\F12EF"}.mdi-square-outline::before{content:"\\F0763"}.mdi-square-root::before{content:"\\F0784"}.mdi-square-root-box::before{content:"\\F09A3"}.mdi-square-small::before{content:"\\F0A15"}.mdi-square-wave::before{content:"\\F147B"}.mdi-squeegee::before{content:"\\F0AE1"}.mdi-ssh::before{content:"\\F08C0"}.mdi-stack-exchange::before{content:"\\F060B"}.mdi-stack-overflow::before{content:"\\F04CC"}.mdi-stackpath::before{content:"\\F0359"}.mdi-stadium::before{content:"\\F0FF9"}.mdi-stadium-variant::before{content:"\\F0720"}.mdi-stairs::before{content:"\\F04CD"}.mdi-stairs-box::before{content:"\\F139E"}.mdi-stairs-down::before{content:"\\F12BE"}.mdi-stairs-up::before{content:"\\F12BD"}.mdi-stamper::before{content:"\\F0D39"}.mdi-standard-definition::before{content:"\\F07EF"}.mdi-star::before{content:"\\F04CE"}.mdi-star-box::before{content:"\\F0A73"}.mdi-star-box-multiple::before{content:"\\F1286"}.mdi-star-box-multiple-outline::before{content:"\\F1287"}.mdi-star-box-outline::before{content:"\\F0A74"}.mdi-star-circle::before{content:"\\F04CF"}.mdi-star-circle-outline::before{content:"\\F09A4"}.mdi-star-face::before{content:"\\F09A5"}.mdi-star-four-points::before{content:"\\F0AE2"}.mdi-star-four-points-outline::before{content:"\\F0AE3"}.mdi-star-half::before{content:"\\F0246"}.mdi-star-half-full::before{content:"\\F04D0"}.mdi-star-off::before{content:"\\F04D1"}.mdi-star-outline::before{content:"\\F04D2"}.mdi-star-three-points::before{content:"\\F0AE4"}.mdi-star-three-points-outline::before{content:"\\F0AE5"}.mdi-state-machine::before{content:"\\F11EF"}.mdi-steam::before{content:"\\F04D3"}.mdi-steering::before{content:"\\F04D4"}.mdi-steering-off::before{content:"\\F090E"}.mdi-step-backward::before{content:"\\F04D5"}.mdi-step-backward-2::before{content:"\\F04D6"}.mdi-step-forward::before{content:"\\F04D7"}.mdi-step-forward-2::before{content:"\\F04D8"}.mdi-stethoscope::before{content:"\\F04D9"}.mdi-sticker::before{content:"\\F1364"}.mdi-sticker-alert::before{content:"\\F1365"}.mdi-sticker-alert-outline::before{content:"\\F1366"}.mdi-sticker-check::before{content:"\\F1367"}.mdi-sticker-check-outline::before{content:"\\F1368"}.mdi-sticker-circle-outline::before{content:"\\F05D0"}.mdi-sticker-emoji::before{content:"\\F0785"}.mdi-sticker-minus::before{content:"\\F1369"}.mdi-sticker-minus-outline::before{content:"\\F136A"}.mdi-sticker-outline::before{content:"\\F136B"}.mdi-sticker-plus::before{content:"\\F136C"}.mdi-sticker-plus-outline::before{content:"\\F136D"}.mdi-sticker-remove::before{content:"\\F136E"}.mdi-sticker-remove-outline::before{content:"\\F136F"}.mdi-stocking::before{content:"\\F04DA"}.mdi-stomach::before{content:"\\F1093"}.mdi-stop::before{content:"\\F04DB"}.mdi-stop-circle::before{content:"\\F0666"}.mdi-stop-circle-outline::before{content:"\\F0667"}.mdi-store::before{content:"\\F04DC"}.mdi-store-24-hour::before{content:"\\F04DD"}.mdi-store-outline::before{content:"\\F1361"}.mdi-storefront::before{content:"\\F07C7"}.mdi-storefront-outline::before{content:"\\F10C1"}.mdi-stove::before{content:"\\F04DE"}.mdi-strategy::before{content:"\\F11D6"}.mdi-stretch-to-page::before{content:"\\F0F2B"}.mdi-stretch-to-page-outline::before{content:"\\F0F2C"}.mdi-string-lights::before{content:"\\F12BA"}.mdi-string-lights-off::before{content:"\\F12BB"}.mdi-subdirectory-arrow-left::before{content:"\\F060C"}.mdi-subdirectory-arrow-right::before{content:"\\F060D"}.mdi-subtitles::before{content:"\\F0A16"}.mdi-subtitles-outline::before{content:"\\F0A17"}.mdi-subway::before{content:"\\F06AC"}.mdi-subway-alert-variant::before{content:"\\F0D9D"}.mdi-subway-variant::before{content:"\\F04DF"}.mdi-summit::before{content:"\\F0786"}.mdi-sunglasses::before{content:"\\F04E0"}.mdi-surround-sound::before{content:"\\F05C5"}.mdi-surround-sound-2-0::before{content:"\\F07F0"}.mdi-surround-sound-3-1::before{content:"\\F07F1"}.mdi-surround-sound-5-1::before{content:"\\F07F2"}.mdi-surround-sound-7-1::before{content:"\\F07F3"}.mdi-svg::before{content:"\\F0721"}.mdi-swap-horizontal::before{content:"\\F04E1"}.mdi-swap-horizontal-bold::before{content:"\\F0BCD"}.mdi-swap-horizontal-circle::before{content:"\\F0FE1"}.mdi-swap-horizontal-circle-outline::before{content:"\\F0FE2"}.mdi-swap-horizontal-variant::before{content:"\\F08C1"}.mdi-swap-vertical::before{content:"\\F04E2"}.mdi-swap-vertical-bold::before{content:"\\F0BCE"}.mdi-swap-vertical-circle::before{content:"\\F0FE3"}.mdi-swap-vertical-circle-outline::before{content:"\\F0FE4"}.mdi-swap-vertical-variant::before{content:"\\F08C2"}.mdi-swim::before{content:"\\F04E3"}.mdi-switch::before{content:"\\F04E4"}.mdi-sword::before{content:"\\F04E5"}.mdi-sword-cross::before{content:"\\F0787"}.mdi-syllabary-hangul::before{content:"\\F1333"}.mdi-syllabary-hiragana::before{content:"\\F1334"}.mdi-syllabary-katakana::before{content:"\\F1335"}.mdi-syllabary-katakana-halfwidth::before{content:"\\F1336"}.mdi-symfony::before{content:"\\F0AE6"}.mdi-sync::before{content:"\\F04E6"}.mdi-sync-alert::before{content:"\\F04E7"}.mdi-sync-circle::before{content:"\\F1378"}.mdi-sync-off::before{content:"\\F04E8"}.mdi-tab::before{content:"\\F04E9"}.mdi-tab-minus::before{content:"\\F0B4B"}.mdi-tab-plus::before{content:"\\F075C"}.mdi-tab-remove::before{content:"\\F0B4C"}.mdi-tab-unselected::before{content:"\\F04EA"}.mdi-table::before{content:"\\F04EB"}.mdi-table-account::before{content:"\\F13B9"}.mdi-table-alert::before{content:"\\F13BA"}.mdi-table-arrow-down::before{content:"\\F13BB"}.mdi-table-arrow-left::before{content:"\\F13BC"}.mdi-table-arrow-right::before{content:"\\F13BD"}.mdi-table-arrow-up::before{content:"\\F13BE"}.mdi-table-border::before{content:"\\F0A18"}.mdi-table-cancel::before{content:"\\F13BF"}.mdi-table-chair::before{content:"\\F1061"}.mdi-table-check::before{content:"\\F13C0"}.mdi-table-clock::before{content:"\\F13C1"}.mdi-table-cog::before{content:"\\F13C2"}.mdi-table-column::before{content:"\\F0835"}.mdi-table-column-plus-after::before{content:"\\F04EC"}.mdi-table-column-plus-before::before{content:"\\F04ED"}.mdi-table-column-remove::before{content:"\\F04EE"}.mdi-table-column-width::before{content:"\\F04EF"}.mdi-table-edit::before{content:"\\F04F0"}.mdi-table-eye::before{content:"\\F1094"}.mdi-table-eye-off::before{content:"\\F13C3"}.mdi-table-furniture::before{content:"\\F05BC"}.mdi-table-headers-eye::before{content:"\\F121D"}.mdi-table-headers-eye-off::before{content:"\\F121E"}.mdi-table-heart::before{content:"\\F13C4"}.mdi-table-key::before{content:"\\F13C5"}.mdi-table-large::before{content:"\\F04F1"}.mdi-table-large-plus::before{content:"\\F0F87"}.mdi-table-large-remove::before{content:"\\F0F88"}.mdi-table-lock::before{content:"\\F13C6"}.mdi-table-merge-cells::before{content:"\\F09A6"}.mdi-table-minus::before{content:"\\F13C7"}.mdi-table-multiple::before{content:"\\F13C8"}.mdi-table-network::before{content:"\\F13C9"}.mdi-table-of-contents::before{content:"\\F0836"}.mdi-table-off::before{content:"\\F13CA"}.mdi-table-plus::before{content:"\\F0A75"}.mdi-table-refresh::before{content:"\\F13A0"}.mdi-table-remove::before{content:"\\F0A76"}.mdi-table-row::before{content:"\\F0837"}.mdi-table-row-height::before{content:"\\F04F2"}.mdi-table-row-plus-after::before{content:"\\F04F3"}.mdi-table-row-plus-before::before{content:"\\F04F4"}.mdi-table-row-remove::before{content:"\\F04F5"}.mdi-table-search::before{content:"\\F090F"}.mdi-table-settings::before{content:"\\F0838"}.mdi-table-split-cell::before{content:"\\F142A"}.mdi-table-star::before{content:"\\F13CB"}.mdi-table-sync::before{content:"\\F13A1"}.mdi-table-tennis::before{content:"\\F0E68"}.mdi-tablet::before{content:"\\F04F6"}.mdi-tablet-android::before{content:"\\F04F7"}.mdi-tablet-cellphone::before{content:"\\F09A7"}.mdi-tablet-dashboard::before{content:"\\F0ECE"}.mdi-tablet-ipad::before{content:"\\F04F8"}.mdi-taco::before{content:"\\F0762"}.mdi-tag::before{content:"\\F04F9"}.mdi-tag-faces::before{content:"\\F04FA"}.mdi-tag-heart::before{content:"\\F068B"}.mdi-tag-heart-outline::before{content:"\\F0BCF"}.mdi-tag-minus::before{content:"\\F0910"}.mdi-tag-minus-outline::before{content:"\\F121F"}.mdi-tag-multiple::before{content:"\\F04FB"}.mdi-tag-multiple-outline::before{content:"\\F12F7"}.mdi-tag-off::before{content:"\\F1220"}.mdi-tag-off-outline::before{content:"\\F1221"}.mdi-tag-outline::before{content:"\\F04FC"}.mdi-tag-plus::before{content:"\\F0722"}.mdi-tag-plus-outline::before{content:"\\F1222"}.mdi-tag-remove::before{content:"\\F0723"}.mdi-tag-remove-outline::before{content:"\\F1223"}.mdi-tag-text::before{content:"\\F1224"}.mdi-tag-text-outline::before{content:"\\F04FD"}.mdi-tailwind::before{content:"\\F13FF"}.mdi-tank::before{content:"\\F0D3A"}.mdi-tanker-truck::before{content:"\\F0FE5"}.mdi-tape-measure::before{content:"\\F0B4D"}.mdi-target::before{content:"\\F04FE"}.mdi-target-account::before{content:"\\F0BD0"}.mdi-target-variant::before{content:"\\F0A77"}.mdi-taxi::before{content:"\\F04FF"}.mdi-tea::before{content:"\\F0D9E"}.mdi-tea-outline::before{content:"\\F0D9F"}.mdi-teach::before{content:"\\F0890"}.mdi-teamviewer::before{content:"\\F0500"}.mdi-telegram::before{content:"\\F0501"}.mdi-telescope::before{content:"\\F0B4E"}.mdi-television::before{content:"\\F0502"}.mdi-television-ambient-light::before{content:"\\F1356"}.mdi-television-box::before{content:"\\F0839"}.mdi-television-classic::before{content:"\\F07F4"}.mdi-television-classic-off::before{content:"\\F083A"}.mdi-television-clean::before{content:"\\F1110"}.mdi-television-guide::before{content:"\\F0503"}.mdi-television-off::before{content:"\\F083B"}.mdi-television-pause::before{content:"\\F0F89"}.mdi-television-play::before{content:"\\F0ECF"}.mdi-television-stop::before{content:"\\F0F8A"}.mdi-temperature-celsius::before{content:"\\F0504"}.mdi-temperature-fahrenheit::before{content:"\\F0505"}.mdi-temperature-kelvin::before{content:"\\F0506"}.mdi-tennis::before{content:"\\F0DA0"}.mdi-tennis-ball::before{content:"\\F0507"}.mdi-tent::before{content:"\\F0508"}.mdi-terraform::before{content:"\\F1062"}.mdi-terrain::before{content:"\\F0509"}.mdi-test-tube::before{content:"\\F0668"}.mdi-test-tube-empty::before{content:"\\F0911"}.mdi-test-tube-off::before{content:"\\F0912"}.mdi-text::before{content:"\\F09A8"}.mdi-text-box::before{content:"\\F021A"}.mdi-text-box-check::before{content:"\\F0EA6"}.mdi-text-box-check-outline::before{content:"\\F0EA7"}.mdi-text-box-minus::before{content:"\\F0EA8"}.mdi-text-box-minus-outline::before{content:"\\F0EA9"}.mdi-text-box-multiple::before{content:"\\F0AB7"}.mdi-text-box-multiple-outline::before{content:"\\F0AB8"}.mdi-text-box-outline::before{content:"\\F09ED"}.mdi-text-box-plus::before{content:"\\F0EAA"}.mdi-text-box-plus-outline::before{content:"\\F0EAB"}.mdi-text-box-remove::before{content:"\\F0EAC"}.mdi-text-box-remove-outline::before{content:"\\F0EAD"}.mdi-text-box-search::before{content:"\\F0EAE"}.mdi-text-box-search-outline::before{content:"\\F0EAF"}.mdi-text-recognition::before{content:"\\F113D"}.mdi-text-search::before{content:"\\F13B8"}.mdi-text-shadow::before{content:"\\F0669"}.mdi-text-short::before{content:"\\F09A9"}.mdi-text-subject::before{content:"\\F09AA"}.mdi-text-to-speech::before{content:"\\F050A"}.mdi-text-to-speech-off::before{content:"\\F050B"}.mdi-texture::before{content:"\\F050C"}.mdi-texture-box::before{content:"\\F0FE6"}.mdi-theater::before{content:"\\F050D"}.mdi-theme-light-dark::before{content:"\\F050E"}.mdi-thermometer::before{content:"\\F050F"}.mdi-thermometer-alert::before{content:"\\F0E01"}.mdi-thermometer-chevron-down::before{content:"\\F0E02"}.mdi-thermometer-chevron-up::before{content:"\\F0E03"}.mdi-thermometer-high::before{content:"\\F10C2"}.mdi-thermometer-lines::before{content:"\\F0510"}.mdi-thermometer-low::before{content:"\\F10C3"}.mdi-thermometer-minus::before{content:"\\F0E04"}.mdi-thermometer-plus::before{content:"\\F0E05"}.mdi-thermostat::before{content:"\\F0393"}.mdi-thermostat-box::before{content:"\\F0891"}.mdi-thought-bubble::before{content:"\\F07F6"}.mdi-thought-bubble-outline::before{content:"\\F07F7"}.mdi-thumb-down::before{content:"\\F0511"}.mdi-thumb-down-outline::before{content:"\\F0512"}.mdi-thumb-up::before{content:"\\F0513"}.mdi-thumb-up-outline::before{content:"\\F0514"}.mdi-thumbs-up-down::before{content:"\\F0515"}.mdi-ticket::before{content:"\\F0516"}.mdi-ticket-account::before{content:"\\F0517"}.mdi-ticket-confirmation::before{content:"\\F0518"}.mdi-ticket-confirmation-outline::before{content:"\\F13AA"}.mdi-ticket-outline::before{content:"\\F0913"}.mdi-ticket-percent::before{content:"\\F0724"}.mdi-ticket-percent-outline::before{content:"\\F142B"}.mdi-tie::before{content:"\\F0519"}.mdi-tilde::before{content:"\\F0725"}.mdi-timelapse::before{content:"\\F051A"}.mdi-timeline::before{content:"\\F0BD1"}.mdi-timeline-alert::before{content:"\\F0F95"}.mdi-timeline-alert-outline::before{content:"\\F0F98"}.mdi-timeline-clock::before{content:"\\F11FB"}.mdi-timeline-clock-outline::before{content:"\\F11FC"}.mdi-timeline-help::before{content:"\\F0F99"}.mdi-timeline-help-outline::before{content:"\\F0F9A"}.mdi-timeline-outline::before{content:"\\F0BD2"}.mdi-timeline-plus::before{content:"\\F0F96"}.mdi-timeline-plus-outline::before{content:"\\F0F97"}.mdi-timeline-text::before{content:"\\F0BD3"}.mdi-timeline-text-outline::before{content:"\\F0BD4"}.mdi-timer::before{content:"\\F13AB"}.mdi-timer-10::before{content:"\\F051C"}.mdi-timer-3::before{content:"\\F051D"}.mdi-timer-off::before{content:"\\F13AC"}.mdi-timer-off-outline::before{content:"\\F051E"}.mdi-timer-outline::before{content:"\\F051B"}.mdi-timer-sand::before{content:"\\F051F"}.mdi-timer-sand-empty::before{content:"\\F06AD"}.mdi-timer-sand-full::before{content:"\\F078C"}.mdi-timetable::before{content:"\\F0520"}.mdi-toaster::before{content:"\\F1063"}.mdi-toaster-off::before{content:"\\F11B7"}.mdi-toaster-oven::before{content:"\\F0CD3"}.mdi-toggle-switch::before{content:"\\F0521"}.mdi-toggle-switch-off::before{content:"\\F0522"}.mdi-toggle-switch-off-outline::before{content:"\\F0A19"}.mdi-toggle-switch-outline::before{content:"\\F0A1A"}.mdi-toilet::before{content:"\\F09AB"}.mdi-toolbox::before{content:"\\F09AC"}.mdi-toolbox-outline::before{content:"\\F09AD"}.mdi-tools::before{content:"\\F1064"}.mdi-tooltip::before{content:"\\F0523"}.mdi-tooltip-account::before{content:"\\F000C"}.mdi-tooltip-edit::before{content:"\\F0524"}.mdi-tooltip-edit-outline::before{content:"\\F12C5"}.mdi-tooltip-image::before{content:"\\F0525"}.mdi-tooltip-image-outline::before{content:"\\F0BD5"}.mdi-tooltip-outline::before{content:"\\F0526"}.mdi-tooltip-plus::before{content:"\\F0BD6"}.mdi-tooltip-plus-outline::before{content:"\\F0527"}.mdi-tooltip-text::before{content:"\\F0528"}.mdi-tooltip-text-outline::before{content:"\\F0BD7"}.mdi-tooth::before{content:"\\F08C3"}.mdi-tooth-outline::before{content:"\\F0529"}.mdi-toothbrush::before{content:"\\F1129"}.mdi-toothbrush-electric::before{content:"\\F112C"}.mdi-toothbrush-paste::before{content:"\\F112A"}.mdi-tortoise::before{content:"\\F0D3B"}.mdi-toslink::before{content:"\\F12B8"}.mdi-tournament::before{content:"\\F09AE"}.mdi-tow-truck::before{content:"\\F083C"}.mdi-tower-beach::before{content:"\\F0681"}.mdi-tower-fire::before{content:"\\F0682"}.mdi-toy-brick::before{content:"\\F1288"}.mdi-toy-brick-marker::before{content:"\\F1289"}.mdi-toy-brick-marker-outline::before{content:"\\F128A"}.mdi-toy-brick-minus::before{content:"\\F128B"}.mdi-toy-brick-minus-outline::before{content:"\\F128C"}.mdi-toy-brick-outline::before{content:"\\F128D"}.mdi-toy-brick-plus::before{content:"\\F128E"}.mdi-toy-brick-plus-outline::before{content:"\\F128F"}.mdi-toy-brick-remove::before{content:"\\F1290"}.mdi-toy-brick-remove-outline::before{content:"\\F1291"}.mdi-toy-brick-search::before{content:"\\F1292"}.mdi-toy-brick-search-outline::before{content:"\\F1293"}.mdi-track-light::before{content:"\\F0914"}.mdi-trackpad::before{content:"\\F07F8"}.mdi-trackpad-lock::before{content:"\\F0933"}.mdi-tractor::before{content:"\\F0892"}.mdi-tractor-variant::before{content:"\\F14C4"}.mdi-trademark::before{content:"\\F0A78"}.mdi-traffic-cone::before{content:"\\F137C"}.mdi-traffic-light::before{content:"\\F052B"}.mdi-train::before{content:"\\F052C"}.mdi-train-car::before{content:"\\F0BD8"}.mdi-train-variant::before{content:"\\F08C4"}.mdi-tram::before{content:"\\F052D"}.mdi-tram-side::before{content:"\\F0FE7"}.mdi-transcribe::before{content:"\\F052E"}.mdi-transcribe-close::before{content:"\\F052F"}.mdi-transfer::before{content:"\\F1065"}.mdi-transfer-down::before{content:"\\F0DA1"}.mdi-transfer-left::before{content:"\\F0DA2"}.mdi-transfer-right::before{content:"\\F0530"}.mdi-transfer-up::before{content:"\\F0DA3"}.mdi-transit-connection::before{content:"\\F0D3C"}.mdi-transit-connection-variant::before{content:"\\F0D3D"}.mdi-transit-detour::before{content:"\\F0F8B"}.mdi-transit-transfer::before{content:"\\F06AE"}.mdi-transition::before{content:"\\F0915"}.mdi-transition-masked::before{content:"\\F0916"}.mdi-translate::before{content:"\\F05CA"}.mdi-translate-off::before{content:"\\F0E06"}.mdi-transmission-tower::before{content:"\\F0D3E"}.mdi-trash-can::before{content:"\\F0A79"}.mdi-trash-can-outline::before{content:"\\F0A7A"}.mdi-tray::before{content:"\\F1294"}.mdi-tray-alert::before{content:"\\F1295"}.mdi-tray-full::before{content:"\\F1296"}.mdi-tray-minus::before{content:"\\F1297"}.mdi-tray-plus::before{content:"\\F1298"}.mdi-tray-remove::before{content:"\\F1299"}.mdi-treasure-chest::before{content:"\\F0726"}.mdi-tree::before{content:"\\F0531"}.mdi-tree-outline::before{content:"\\F0E69"}.mdi-trello::before{content:"\\F0532"}.mdi-trending-down::before{content:"\\F0533"}.mdi-trending-neutral::before{content:"\\F0534"}.mdi-trending-up::before{content:"\\F0535"}.mdi-triangle::before{content:"\\F0536"}.mdi-triangle-outline::before{content:"\\F0537"}.mdi-triangle-wave::before{content:"\\F147C"}.mdi-triforce::before{content:"\\F0BD9"}.mdi-trophy::before{content:"\\F0538"}.mdi-trophy-award::before{content:"\\F0539"}.mdi-trophy-broken::before{content:"\\F0DA4"}.mdi-trophy-outline::before{content:"\\F053A"}.mdi-trophy-variant::before{content:"\\F053B"}.mdi-trophy-variant-outline::before{content:"\\F053C"}.mdi-truck::before{content:"\\F053D"}.mdi-truck-check::before{content:"\\F0CD4"}.mdi-truck-check-outline::before{content:"\\F129A"}.mdi-truck-delivery::before{content:"\\F053E"}.mdi-truck-delivery-outline::before{content:"\\F129B"}.mdi-truck-fast::before{content:"\\F0788"}.mdi-truck-fast-outline::before{content:"\\F129C"}.mdi-truck-outline::before{content:"\\F129D"}.mdi-truck-trailer::before{content:"\\F0727"}.mdi-trumpet::before{content:"\\F1096"}.mdi-tshirt-crew::before{content:"\\F0A7B"}.mdi-tshirt-crew-outline::before{content:"\\F053F"}.mdi-tshirt-v::before{content:"\\F0A7C"}.mdi-tshirt-v-outline::before{content:"\\F0540"}.mdi-tumble-dryer::before{content:"\\F0917"}.mdi-tumble-dryer-alert::before{content:"\\F11BA"}.mdi-tumble-dryer-off::before{content:"\\F11BB"}.mdi-tune::before{content:"\\F062E"}.mdi-tune-vertical::before{content:"\\F066A"}.mdi-turnstile::before{content:"\\F0CD5"}.mdi-turnstile-outline::before{content:"\\F0CD6"}.mdi-turtle::before{content:"\\F0CD7"}.mdi-twitch::before{content:"\\F0543"}.mdi-twitter::before{content:"\\F0544"}.mdi-twitter-retweet::before{content:"\\F0547"}.mdi-two-factor-authentication::before{content:"\\F09AF"}.mdi-typewriter::before{content:"\\F0F2D"}.mdi-ubisoft::before{content:"\\F0BDA"}.mdi-ubuntu::before{content:"\\F0548"}.mdi-ufo::before{content:"\\F10C4"}.mdi-ufo-outline::before{content:"\\F10C5"}.mdi-ultra-high-definition::before{content:"\\F07F9"}.mdi-umbraco::before{content:"\\F0549"}.mdi-umbrella::before{content:"\\F054A"}.mdi-umbrella-closed::before{content:"\\F09B0"}.mdi-umbrella-closed-outline::before{content:"\\F13E2"}.mdi-umbrella-closed-variant::before{content:"\\F13E1"}.mdi-umbrella-outline::before{content:"\\F054B"}.mdi-undo::before{content:"\\F054C"}.mdi-undo-variant::before{content:"\\F054D"}.mdi-unfold-less-horizontal::before{content:"\\F054E"}.mdi-unfold-less-vertical::before{content:"\\F0760"}.mdi-unfold-more-horizontal::before{content:"\\F054F"}.mdi-unfold-more-vertical::before{content:"\\F0761"}.mdi-ungroup::before{content:"\\F0550"}.mdi-unicode::before{content:"\\F0ED0"}.mdi-unity::before{content:"\\F06AF"}.mdi-unreal::before{content:"\\F09B1"}.mdi-untappd::before{content:"\\F0551"}.mdi-update::before{content:"\\F06B0"}.mdi-upload::before{content:"\\F0552"}.mdi-upload-lock::before{content:"\\F1373"}.mdi-upload-lock-outline::before{content:"\\F1374"}.mdi-upload-multiple::before{content:"\\F083D"}.mdi-upload-network::before{content:"\\F06F6"}.mdi-upload-network-outline::before{content:"\\F0CD8"}.mdi-upload-off::before{content:"\\F10C6"}.mdi-upload-off-outline::before{content:"\\F10C7"}.mdi-upload-outline::before{content:"\\F0E07"}.mdi-usb::before{content:"\\F0553"}.mdi-usb-flash-drive::before{content:"\\F129E"}.mdi-usb-flash-drive-outline::before{content:"\\F129F"}.mdi-usb-port::before{content:"\\F11F0"}.mdi-valve::before{content:"\\F1066"}.mdi-valve-closed::before{content:"\\F1067"}.mdi-valve-open::before{content:"\\F1068"}.mdi-van-passenger::before{content:"\\F07FA"}.mdi-van-utility::before{content:"\\F07FB"}.mdi-vanish::before{content:"\\F07FC"}.mdi-vanity-light::before{content:"\\F11E1"}.mdi-variable::before{content:"\\F0AE7"}.mdi-variable-box::before{content:"\\F1111"}.mdi-vector-arrange-above::before{content:"\\F0554"}.mdi-vector-arrange-below::before{content:"\\F0555"}.mdi-vector-bezier::before{content:"\\F0AE8"}.mdi-vector-circle::before{content:"\\F0556"}.mdi-vector-circle-variant::before{content:"\\F0557"}.mdi-vector-combine::before{content:"\\F0558"}.mdi-vector-curve::before{content:"\\F0559"}.mdi-vector-difference::before{content:"\\F055A"}.mdi-vector-difference-ab::before{content:"\\F055B"}.mdi-vector-difference-ba::before{content:"\\F055C"}.mdi-vector-ellipse::before{content:"\\F0893"}.mdi-vector-intersection::before{content:"\\F055D"}.mdi-vector-line::before{content:"\\F055E"}.mdi-vector-link::before{content:"\\F0FE8"}.mdi-vector-point::before{content:"\\F055F"}.mdi-vector-polygon::before{content:"\\F0560"}.mdi-vector-polyline::before{content:"\\F0561"}.mdi-vector-polyline-edit::before{content:"\\F1225"}.mdi-vector-polyline-minus::before{content:"\\F1226"}.mdi-vector-polyline-plus::before{content:"\\F1227"}.mdi-vector-polyline-remove::before{content:"\\F1228"}.mdi-vector-radius::before{content:"\\F074A"}.mdi-vector-rectangle::before{content:"\\F05C6"}.mdi-vector-selection::before{content:"\\F0562"}.mdi-vector-square::before{content:"\\F0001"}.mdi-vector-triangle::before{content:"\\F0563"}.mdi-vector-union::before{content:"\\F0564"}.mdi-vhs::before{content:"\\F0A1B"}.mdi-vibrate::before{content:"\\F0566"}.mdi-vibrate-off::before{content:"\\F0CD9"}.mdi-video::before{content:"\\F0567"}.mdi-video-3d::before{content:"\\F07FD"}.mdi-video-3d-off::before{content:"\\F13D9"}.mdi-video-3d-variant::before{content:"\\F0ED1"}.mdi-video-4k-box::before{content:"\\F083E"}.mdi-video-account::before{content:"\\F0919"}.mdi-video-box::before{content:"\\F00FD"}.mdi-video-box-off::before{content:"\\F00FE"}.mdi-video-check::before{content:"\\F1069"}.mdi-video-check-outline::before{content:"\\F106A"}.mdi-video-image::before{content:"\\F091A"}.mdi-video-input-antenna::before{content:"\\F083F"}.mdi-video-input-component::before{content:"\\F0840"}.mdi-video-input-hdmi::before{content:"\\F0841"}.mdi-video-input-scart::before{content:"\\F0F8C"}.mdi-video-input-svideo::before{content:"\\F0842"}.mdi-video-minus::before{content:"\\F09B2"}.mdi-video-minus-outline::before{content:"\\F02BA"}.mdi-video-off::before{content:"\\F0568"}.mdi-video-off-outline::before{content:"\\F0BDB"}.mdi-video-outline::before{content:"\\F0BDC"}.mdi-video-plus::before{content:"\\F09B3"}.mdi-video-plus-outline::before{content:"\\F01D3"}.mdi-video-stabilization::before{content:"\\F091B"}.mdi-video-switch::before{content:"\\F0569"}.mdi-video-switch-outline::before{content:"\\F0790"}.mdi-video-vintage::before{content:"\\F0A1C"}.mdi-video-wireless::before{content:"\\F0ED2"}.mdi-video-wireless-outline::before{content:"\\F0ED3"}.mdi-view-agenda::before{content:"\\F056A"}.mdi-view-agenda-outline::before{content:"\\F11D8"}.mdi-view-array::before{content:"\\F056B"}.mdi-view-array-outline::before{content:"\\F1485"}.mdi-view-carousel::before{content:"\\F056C"}.mdi-view-carousel-outline::before{content:"\\F1486"}.mdi-view-column::before{content:"\\F056D"}.mdi-view-column-outline::before{content:"\\F1487"}.mdi-view-comfy::before{content:"\\F0E6A"}.mdi-view-comfy-outline::before{content:"\\F1488"}.mdi-view-compact::before{content:"\\F0E6B"}.mdi-view-compact-outline::before{content:"\\F0E6C"}.mdi-view-dashboard::before{content:"\\F056E"}.mdi-view-dashboard-outline::before{content:"\\F0A1D"}.mdi-view-dashboard-variant::before{content:"\\F0843"}.mdi-view-dashboard-variant-outline::before{content:"\\F1489"}.mdi-view-day::before{content:"\\F056F"}.mdi-view-day-outline::before{content:"\\F148A"}.mdi-view-grid::before{content:"\\F0570"}.mdi-view-grid-outline::before{content:"\\F11D9"}.mdi-view-grid-plus::before{content:"\\F0F8D"}.mdi-view-grid-plus-outline::before{content:"\\F11DA"}.mdi-view-headline::before{content:"\\F0571"}.mdi-view-list::before{content:"\\F0572"}.mdi-view-list-outline::before{content:"\\F148B"}.mdi-view-module::before{content:"\\F0573"}.mdi-view-module-outline::before{content:"\\F148C"}.mdi-view-parallel::before{content:"\\F0728"}.mdi-view-parallel-outline::before{content:"\\F148D"}.mdi-view-quilt::before{content:"\\F0574"}.mdi-view-quilt-outline::before{content:"\\F148E"}.mdi-view-sequential::before{content:"\\F0729"}.mdi-view-sequential-outline::before{content:"\\F148F"}.mdi-view-split-horizontal::before{content:"\\F0BCB"}.mdi-view-split-vertical::before{content:"\\F0BCC"}.mdi-view-stream::before{content:"\\F0575"}.mdi-view-stream-outline::before{content:"\\F1490"}.mdi-view-week::before{content:"\\F0576"}.mdi-view-week-outline::before{content:"\\F1491"}.mdi-vimeo::before{content:"\\F0577"}.mdi-violin::before{content:"\\F060F"}.mdi-virtual-reality::before{content:"\\F0894"}.mdi-virus::before{content:"\\F13B6"}.mdi-virus-outline::before{content:"\\F13B7"}.mdi-vk::before{content:"\\F0579"}.mdi-vlc::before{content:"\\F057C"}.mdi-voice-off::before{content:"\\F0ED4"}.mdi-voicemail::before{content:"\\F057D"}.mdi-volleyball::before{content:"\\F09B4"}.mdi-volume-high::before{content:"\\F057E"}.mdi-volume-low::before{content:"\\F057F"}.mdi-volume-medium::before{content:"\\F0580"}.mdi-volume-minus::before{content:"\\F075E"}.mdi-volume-mute::before{content:"\\F075F"}.mdi-volume-off::before{content:"\\F0581"}.mdi-volume-plus::before{content:"\\F075D"}.mdi-volume-source::before{content:"\\F1120"}.mdi-volume-variant-off::before{content:"\\F0E08"}.mdi-volume-vibrate::before{content:"\\F1121"}.mdi-vote::before{content:"\\F0A1F"}.mdi-vote-outline::before{content:"\\F0A20"}.mdi-vpn::before{content:"\\F0582"}.mdi-vuejs::before{content:"\\F0844"}.mdi-vuetify::before{content:"\\F0E6D"}.mdi-walk::before{content:"\\F0583"}.mdi-wall::before{content:"\\F07FE"}.mdi-wall-sconce::before{content:"\\F091C"}.mdi-wall-sconce-flat::before{content:"\\F091D"}.mdi-wall-sconce-flat-variant::before{content:"\\F041C"}.mdi-wall-sconce-round::before{content:"\\F0748"}.mdi-wall-sconce-round-variant::before{content:"\\F091E"}.mdi-wallet::before{content:"\\F0584"}.mdi-wallet-giftcard::before{content:"\\F0585"}.mdi-wallet-membership::before{content:"\\F0586"}.mdi-wallet-outline::before{content:"\\F0BDD"}.mdi-wallet-plus::before{content:"\\F0F8E"}.mdi-wallet-plus-outline::before{content:"\\F0F8F"}.mdi-wallet-travel::before{content:"\\F0587"}.mdi-wallpaper::before{content:"\\F0E09"}.mdi-wan::before{content:"\\F0588"}.mdi-wardrobe::before{content:"\\F0F90"}.mdi-wardrobe-outline::before{content:"\\F0F91"}.mdi-warehouse::before{content:"\\F0F81"}.mdi-washing-machine::before{content:"\\F072A"}.mdi-washing-machine-alert::before{content:"\\F11BC"}.mdi-washing-machine-off::before{content:"\\F11BD"}.mdi-watch::before{content:"\\F0589"}.mdi-watch-export::before{content:"\\F058A"}.mdi-watch-export-variant::before{content:"\\F0895"}.mdi-watch-import::before{content:"\\F058B"}.mdi-watch-import-variant::before{content:"\\F0896"}.mdi-watch-variant::before{content:"\\F0897"}.mdi-watch-vibrate::before{content:"\\F06B1"}.mdi-watch-vibrate-off::before{content:"\\F0CDA"}.mdi-water::before{content:"\\F058C"}.mdi-water-boiler::before{content:"\\F0F92"}.mdi-water-boiler-alert::before{content:"\\F11B3"}.mdi-water-boiler-off::before{content:"\\F11B4"}.mdi-water-off::before{content:"\\F058D"}.mdi-water-outline::before{content:"\\F0E0A"}.mdi-water-percent::before{content:"\\F058E"}.mdi-water-polo::before{content:"\\F12A0"}.mdi-water-pump::before{content:"\\F058F"}.mdi-water-pump-off::before{content:"\\F0F93"}.mdi-water-well::before{content:"\\F106B"}.mdi-water-well-outline::before{content:"\\F106C"}.mdi-watering-can::before{content:"\\F1481"}.mdi-watering-can-outline::before{content:"\\F1482"}.mdi-watermark::before{content:"\\F0612"}.mdi-wave::before{content:"\\F0F2E"}.mdi-waveform::before{content:"\\F147D"}.mdi-waves::before{content:"\\F078D"}.mdi-waze::before{content:"\\F0BDE"}.mdi-weather-cloudy::before{content:"\\F0590"}.mdi-weather-cloudy-alert::before{content:"\\F0F2F"}.mdi-weather-cloudy-arrow-right::before{content:"\\F0E6E"}.mdi-weather-fog::before{content:"\\F0591"}.mdi-weather-hail::before{content:"\\F0592"}.mdi-weather-hazy::before{content:"\\F0F30"}.mdi-weather-hurricane::before{content:"\\F0898"}.mdi-weather-lightning::before{content:"\\F0593"}.mdi-weather-lightning-rainy::before{content:"\\F067E"}.mdi-weather-night::before{content:"\\F0594"}.mdi-weather-night-partly-cloudy::before{content:"\\F0F31"}.mdi-weather-partly-cloudy::before{content:"\\F0595"}.mdi-weather-partly-lightning::before{content:"\\F0F32"}.mdi-weather-partly-rainy::before{content:"\\F0F33"}.mdi-weather-partly-snowy::before{content:"\\F0F34"}.mdi-weather-partly-snowy-rainy::before{content:"\\F0F35"}.mdi-weather-pouring::before{content:"\\F0596"}.mdi-weather-rainy::before{content:"\\F0597"}.mdi-weather-snowy::before{content:"\\F0598"}.mdi-weather-snowy-heavy::before{content:"\\F0F36"}.mdi-weather-snowy-rainy::before{content:"\\F067F"}.mdi-weather-sunny::before{content:"\\F0599"}.mdi-weather-sunny-alert::before{content:"\\F0F37"}.mdi-weather-sunset::before{content:"\\F059A"}.mdi-weather-sunset-down::before{content:"\\F059B"}.mdi-weather-sunset-up::before{content:"\\F059C"}.mdi-weather-tornado::before{content:"\\F0F38"}.mdi-weather-windy::before{content:"\\F059D"}.mdi-weather-windy-variant::before{content:"\\F059E"}.mdi-web::before{content:"\\F059F"}.mdi-web-box::before{content:"\\F0F94"}.mdi-web-clock::before{content:"\\F124A"}.mdi-webcam::before{content:"\\F05A0"}.mdi-webhook::before{content:"\\F062F"}.mdi-webpack::before{content:"\\F072B"}.mdi-webrtc::before{content:"\\F1248"}.mdi-wechat::before{content:"\\F0611"}.mdi-weight::before{content:"\\F05A1"}.mdi-weight-gram::before{content:"\\F0D3F"}.mdi-weight-kilogram::before{content:"\\F05A2"}.mdi-weight-lifter::before{content:"\\F115D"}.mdi-weight-pound::before{content:"\\F09B5"}.mdi-whatsapp::before{content:"\\F05A3"}.mdi-wheelchair-accessibility::before{content:"\\F05A4"}.mdi-whistle::before{content:"\\F09B6"}.mdi-whistle-outline::before{content:"\\F12BC"}.mdi-white-balance-auto::before{content:"\\F05A5"}.mdi-white-balance-incandescent::before{content:"\\F05A6"}.mdi-white-balance-iridescent::before{content:"\\F05A7"}.mdi-white-balance-sunny::before{content:"\\F05A8"}.mdi-widgets::before{content:"\\F072C"}.mdi-widgets-outline::before{content:"\\F1355"}.mdi-wifi::before{content:"\\F05A9"}.mdi-wifi-off::before{content:"\\F05AA"}.mdi-wifi-star::before{content:"\\F0E0B"}.mdi-wifi-strength-1::before{content:"\\F091F"}.mdi-wifi-strength-1-alert::before{content:"\\F0920"}.mdi-wifi-strength-1-lock::before{content:"\\F0921"}.mdi-wifi-strength-2::before{content:"\\F0922"}.mdi-wifi-strength-2-alert::before{content:"\\F0923"}.mdi-wifi-strength-2-lock::before{content:"\\F0924"}.mdi-wifi-strength-3::before{content:"\\F0925"}.mdi-wifi-strength-3-alert::before{content:"\\F0926"}.mdi-wifi-strength-3-lock::before{content:"\\F0927"}.mdi-wifi-strength-4::before{content:"\\F0928"}.mdi-wifi-strength-4-alert::before{content:"\\F0929"}.mdi-wifi-strength-4-lock::before{content:"\\F092A"}.mdi-wifi-strength-alert-outline::before{content:"\\F092B"}.mdi-wifi-strength-lock-outline::before{content:"\\F092C"}.mdi-wifi-strength-off::before{content:"\\F092D"}.mdi-wifi-strength-off-outline::before{content:"\\F092E"}.mdi-wifi-strength-outline::before{content:"\\F092F"}.mdi-wikipedia::before{content:"\\F05AC"}.mdi-wind-turbine::before{content:"\\F0DA5"}.mdi-window-close::before{content:"\\F05AD"}.mdi-window-closed::before{content:"\\F05AE"}.mdi-window-closed-variant::before{content:"\\F11DB"}.mdi-window-maximize::before{content:"\\F05AF"}.mdi-window-minimize::before{content:"\\F05B0"}.mdi-window-open::before{content:"\\F05B1"}.mdi-window-open-variant::before{content:"\\F11DC"}.mdi-window-restore::before{content:"\\F05B2"}.mdi-window-shutter::before{content:"\\F111C"}.mdi-window-shutter-alert::before{content:"\\F111D"}.mdi-window-shutter-open::before{content:"\\F111E"}.mdi-wiper::before{content:"\\F0AE9"}.mdi-wiper-wash::before{content:"\\F0DA6"}.mdi-wizard-hat::before{content:"\\F1477"}.mdi-wordpress::before{content:"\\F05B4"}.mdi-wrap::before{content:"\\F05B6"}.mdi-wrap-disabled::before{content:"\\F0BDF"}.mdi-wrench::before{content:"\\F05B7"}.mdi-wrench-outline::before{content:"\\F0BE0"}.mdi-xamarin::before{content:"\\F0845"}.mdi-xamarin-outline::before{content:"\\F0846"}.mdi-xing::before{content:"\\F05BE"}.mdi-xml::before{content:"\\F05C0"}.mdi-xmpp::before{content:"\\F07FF"}.mdi-y-combinator::before{content:"\\F0624"}.mdi-yahoo::before{content:"\\F0B4F"}.mdi-yeast::before{content:"\\F05C1"}.mdi-yin-yang::before{content:"\\F0680"}.mdi-yoga::before{content:"\\F117C"}.mdi-youtube::before{content:"\\F05C3"}.mdi-youtube-gaming::before{content:"\\F0848"}.mdi-youtube-studio::before{content:"\\F0847"}.mdi-youtube-subscription::before{content:"\\F0D40"}.mdi-youtube-tv::before{content:"\\F0448"}.mdi-z-wave::before{content:"\\F0AEA"}.mdi-zend::before{content:"\\F0AEB"}.mdi-zigbee::before{content:"\\F0D41"}.mdi-zip-box::before{content:"\\F05C4"}.mdi-zip-box-outline::before{content:"\\F0FFA"}.mdi-zip-disk::before{content:"\\F0A23"}.mdi-zodiac-aquarius::before{content:"\\F0A7D"}.mdi-zodiac-aries::before{content:"\\F0A7E"}.mdi-zodiac-cancer::before{content:"\\F0A7F"}.mdi-zodiac-capricorn::before{content:"\\F0A80"}.mdi-zodiac-gemini::before{content:"\\F0A81"}.mdi-zodiac-leo::before{content:"\\F0A82"}.mdi-zodiac-libra::before{content:"\\F0A83"}.mdi-zodiac-pisces::before{content:"\\F0A84"}.mdi-zodiac-sagittarius::before{content:"\\F0A85"}.mdi-zodiac-scorpio::before{content:"\\F0A86"}.mdi-zodiac-taurus::before{content:"\\F0A87"}.mdi-zodiac-virgo::before{content:"\\F0A88"}.mdi-blank::before{content:"\\F68C";visibility:hidden}.mdi-18px.mdi-set,.mdi-18px.mdi:before{font-size:18px}.mdi-24px.mdi-set,.mdi-24px.mdi:before{font-size:24px}.mdi-36px.mdi-set,.mdi-36px.mdi:before{font-size:36px}.mdi-48px.mdi-set,.mdi-48px.mdi:before{font-size:48px}.mdi-dark:before{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive:before{color:rgba(0,0,0,0.26)}.mdi-light:before{color:#fff}.mdi-light.mdi-inactive:before{color:rgba(255,255,255,0.3)}.mdi-rotate-45:before{transform:rotate(45deg)}.mdi-rotate-90:before{transform:rotate(90deg)}.mdi-rotate-135:before{transform:rotate(135deg)}.mdi-rotate-180:before{transform:rotate(180deg)}.mdi-rotate-225:before{transform:rotate(225deg)}.mdi-rotate-270:before{transform:rotate(270deg)}.mdi-rotate-315:before{transform:rotate(315deg)}.mdi-flip-h:before{transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.mdi-flip-v:before{transform:scaleY(-1);filter:FlipV;-ms-filter:"FlipV"}.mdi-spin:before{animation:mdi-spin 2s infinite linear}@keyframes mdi-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}',""]),e.exports=a},2119:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".switch-options {\n position: relative;\n --columns: 1;\n}\n.switch-options.grid {\n width: 100%;\n}\n.switch-options .switch-icon {\n margin-right: 8px;\n transform: scale(0.9);\n}\n.switch-options .dim {\n opacity: 0.5;\n}\n.switch-options-grid {\n font-size: 12px;\n display: grid;\n grid-template-columns: repeat(auto-fill, 50%);\n}\n.switch-options-popup {\n font-size: 12px;\n transition: 0.2s ease-out;\n transform-origin: left;\n transform: translateY(-50%) scale(0.9);\n top: 50%;\n left: calc(100% + 8px);\n background-color: #fff;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n white-space: nowrap;\n padding: 4px;\n display: grid;\n width: max-content;\n grid-template-columns: repeat(var(--columns), auto);\n border-radius: 5px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n max-height: calc(100vh - 100px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\nbody.dark .switch-options-popup {\n background-color: #333;\n}\nbody.dark .switch-options-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.switch-options-popup::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.switch-options-popup.open {\n transform: translateY(-50%) scale(1);\n}\nbody.settings-panel-dock-right .switch-options-popup {\n right: calc(100% + 8px);\n left: unset;\n transform-origin: right;\n}\n.switch-options.small-size .switch-options-popup {\n transform-origin: top;\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%) scale(0.9);\n}\n.switch-options.small-size .switch-options-popup.open {\n transform: translateX(-50%) scale(1);\n}",""]),e.exports=o},2701:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".check-all-updates[data-v-76652ef2] {\n margin: 1px 0;\n}\n.check-all-updates .be-icon[data-v-76652ef2] {\n margin-right: 6px;\n}",""]),e.exports=o},6538:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bisector-dialog-content-container[data-v-31cf1990] {\n padding: 0 16px;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text.weak[data-v-31cf1990] {\n opacity: 0.6;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text[data-v-31cf1990],\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n margin-bottom: 8px;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n display: grid;\n gap: 8px;\n grid-template-columns: 1fr 1fr;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group .be-button[data-v-31cf1990]:last-child {\n grid-column: span 2;\n}",""]),e.exports=o},8335:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,"div[data-v-386ddf8e] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.peek[data-v-386ddf8e] {\n cursor: pointer;\n}",""]),e.exports=o},8840:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.bangumi-card[data-v-b2f4653c] {\n --cover-width: 94px;\n background-color: #fff;\n margin: 0 8px 8px 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 8px;\n display: grid;\n grid-template-areas: "cover epTitle" "cover title";\n grid-template-columns: var(--cover-width) 1fr;\n grid-template-rows: 6fr 5fr;\n position: relative;\n flex-shrink: 0;\n}\n.bangumi-card .up[data-v-b2f4653c] {\n grid-area: title;\n display: flex;\n align-items: center;\n padding: 0 12px;\n align-self: center;\n overflow: hidden;\n margin-bottom: 4px;\n}\n.bangumi-card .up .cover[data-v-b2f4653c] {\n height: 18px;\n width: 18px;\n border-radius: 50%;\n}\n.bangumi-card .up .title[data-v-b2f4653c] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0 6px;\n line-height: normal;\n}\n.bangumi-card .ep-title[data-v-b2f4653c] {\n grid-area: epTitle;\n font-size: 11pt;\n font-weight: 600;\n padding: 0 12px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n align-self: center;\n color: inherit;\n line-height: normal;\n margin: 4px 0 0 0;\n}\n.bangumi-card .ep-cover-container[data-v-b2f4653c] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n overflow: hidden;\n display: flex;\n}\n.bangumi-card .ep-cover-container .ep-cover[data-v-b2f4653c] {\n background-color: rgba(136, 136, 136, 0.2666666667);\n width: var(--cover-width);\n min-height: 62.5px;\n}\n.bangumi-card:hover .ep-title[data-v-b2f4653c] {\n color: var(--theme-color);\n}\n.bangumi-card:hover .ep-cover[data-v-b2f4653c] {\n transform: scale(1.05);\n}\nbody.dark .bangumi-card[data-v-b2f4653c] {\n box-shadow: rgba(0, 0, 0, 0.0666666667) 0 4px 12px 0px;\n background-color: #2d2d2d;\n color: #eee;\n}\n.bangumi-card.new[data-v-b2f4653c]::before {\n content: "NEW";\n position: absolute;\n top: 4px;\n left: 4px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n padding: 0 6px;\n height: 18px;\n border-radius: 9px;\n font-weight: 700;\n font-size: 11px;\n line-height: 18px;\n z-index: 1;\n}',""]),e.exports=o},5579:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".column-card[data-v-335afa63] {\n width: 356px;\n display: flex;\n flex-direction: column;\n margin-bottom: 12px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n background-color: #fff;\n box-sizing: border-box;\n position: relative;\n flex-shrink: 0;\n font-size: 12px;\n cursor: pointer;\n border-radius: 8px;\n}\nbody.dark .column-card[data-v-335afa63] {\n background-color: #282828;\n color: #eee;\n}\n.column-card .covers[data-v-335afa63] {\n position: relative;\n display: flex;\n overflow: hidden;\n border-radius: 8px 8px 0 0;\n}\n.column-card .covers .cover[data-v-335afa63] {\n flex: 1 0 0;\n height: 120px;\n width: 0;\n object-fit: cover;\n}\n.column-card .up[data-v-335afa63] {\n position: absolute;\n left: 8px;\n top: 86px;\n padding: 2px;\n display: flex;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.6666666667);\n border-radius: 14px;\n height: 28px;\n box-sizing: border-box;\n}\n.column-card .up .face[data-v-335afa63] {\n border-radius: 50%;\n height: 24px;\n width: 24px;\n}\n.column-card .up .name[data-v-335afa63] {\n margin: 0 6px;\n color: #fff;\n}\n.column-card .title[data-v-335afa63] {\n padding: 10px 10px 0;\n margin: 0;\n font-size: 11pt;\n font-weight: 600;\n color: inherit;\n line-height: normal;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.column-card .description[data-v-335afa63] {\n margin: 8px 10px;\n display: -webkit-box;\n white-space: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 1.5;\n max-height: 3em;\n}\n.column-card:hover .title[data-v-335afa63] {\n color: var(--theme-color);\n}\n.column-card:hover .cover[data-v-335afa63] {\n transform: scale(1.05);\n}",""]),e.exports=o},2835:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-up-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n line-height: normal;\n}\n.be-up-info:not(.fallback) {\n background-color: #fff;\n color: black;\n border-radius: 14px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 28px;\n border-radius: 14px;\n padding: 2px;\n box-shadow: none;\n padding-right: 8px;\n}\nbody.dark .be-up-info:not(.fallback) {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-up-info:not(.fallback) {\n background-color: #282828;\n color: #eee;\n}\n.be-up-info-cover {\n border-radius: 50%;\n}\n.be-up-info-cover-fallback {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 18px;\n margin-right: -3px;\n}\n.be-up-info-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: 0.2s ease-out;\n}\n.be-up-info:hover .be-up-info-name {\n color: var(--theme-color) !important;\n}",""]),e.exports=o},450:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.video-card[data-v-57e48aec] {\n display: grid;\n grid-template-columns: 196px 1fr;\n grid-template-rows: 1fr 1fr 1fr;\n grid-template-areas: "cover title" "cover description" "cover up";\n height: var(--card-height);\n width: var(--card-width);\n color: black;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n margin-right: var(--card-margin);\n margin-bottom: var(--card-margin);\n position: relative;\n}\nbody.dark .video-card[data-v-57e48aec], body.dark .video-card[data-v-57e48aec]:hover {\n background-color: #282828;\n color: #eee;\n}\n.video-card[data-v-57e48aec]:hover {\n color: black;\n}\n.video-card.vertical[data-v-57e48aec] {\n grid-template-columns: auto auto;\n grid-template-rows: auto 1fr auto auto;\n grid-template-areas: "cover cover" "title title" "up up" "stats stats";\n gap: 4px;\n}\n.video-card.vertical .description[data-v-57e48aec],\n.video-card.vertical .topics[data-v-57e48aec] {\n display: none;\n}\n.video-card.vertical .cover-container[data-v-57e48aec] {\n border-radius: 8px 8px 0 0;\n width: calc(var(--card-width) - 2px);\n height: calc(var(--card-width) / 20 * 12.5);\n}\n.video-card.vertical .title[data-v-57e48aec] {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n max-height: 3em;\n word-break: break-all;\n white-space: normal;\n line-height: 1.5;\n margin: 4px 0;\n padding: 0 10px;\n font-size: 14px;\n}\n.video-card.vertical .up[data-v-57e48aec] {\n align-self: start;\n white-space: nowrap;\n}\n.video-card.vertical .up .name[data-v-57e48aec] {\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.video-card.vertical .up[data-v-57e48aec]:not(.no-face) {\n margin-left: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .up.no-face[data-v-57e48aec] {\n margin-top: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .cooperation[data-v-57e48aec] {\n margin: 0 12px 6px 8px;\n}\n.video-card.vertical .cooperation-note[data-v-57e48aec] {\n display: flex;\n opacity: 0.5;\n}\n.video-card.vertical .stats[data-v-57e48aec] {\n grid-area: stats;\n align-self: end;\n justify-self: start;\n margin-bottom: 8px;\n margin-right: 0;\n}\n.video-card > *[data-v-57e48aec] {\n justify-self: self-start;\n align-self: center;\n}\n.video-card .publish-time-summary[data-v-57e48aec],\n.video-card .publish-time-detail[data-v-57e48aec],\n.video-card .duration[data-v-57e48aec],\n.video-card .watchlater[data-v-57e48aec] {\n opacity: 0;\n}\n.video-card:hover .cover[data-v-57e48aec] {\n transform: scale(1.05);\n}\n.video-card:hover .publish-time-summary[data-v-57e48aec],\n.video-card:hover .duration[data-v-57e48aec],\n.video-card:hover .watchlater[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .publish-time-summary[data-v-57e48aec]:hover {\n opacity: 0;\n}\n.video-card .publish-time-summary:hover ~ .publish-time-detail[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .cover-container[data-v-57e48aec] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n position: relative;\n width: calc(var(--card-height) / 12.5 * 20);\n height: calc(var(--card-height) - 2px);\n overflow: hidden;\n}\n.video-card .cover-container .cover[data-v-57e48aec] {\n transition: 0.1s cubic-bezier(0.39, 0.58, 0.57, 1);\n -webkit-transform: rotate(0deg);\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n.video-card .cover-container[data-v-57e48aec] > :not(.cover) {\n position: absolute;\n display: flex;\n align-items: center;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec],\n.video-card .cover-container .duration[data-v-57e48aec],\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n bottom: 6px;\n padding: 2px 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n color: white;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail .mdi[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary .mdi[data-v-57e48aec],\n.video-card .cover-container .duration .mdi[data-v-57e48aec],\n.video-card .cover-container .watchlater .mdi[data-v-57e48aec] {\n margin-right: 4px;\n}\n.video-card .cover-container .new[data-v-57e48aec] {\n top: 6px;\n left: 6px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec] {\n z-index: 0;\n}\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n z-index: 1;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n top: 6px;\n right: 6px;\n}\n.video-card .cover-container .duration[data-v-57e48aec] {\n left: 6px;\n}\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n right: 6px;\n padding-left: 4px;\n}\n.video-card .title[data-v-57e48aec] {\n grid-area: title;\n font-size: 15px;\n font-weight: 600;\n color: inherit;\n padding: 4px 12px 0 12px;\n white-space: nowrap;\n overflow: hidden;\n justify-self: stretch;\n text-overflow: ellipsis;\n}\n.video-card .title[data-v-57e48aec]:hover {\n color: var(--theme-color);\n}\n.video-card .topics[data-v-57e48aec] {\n display: flex;\n align-items: center;\n grid-area: description;\n margin-left: 12px;\n}\n.video-card .topics .topic[data-v-57e48aec] {\n display: flex;\n align-items: center;\n gap: 4px;\n color: inherit;\n padding: 4px 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n margin-right: 8px;\n border-radius: 14px;\n opacity: 0.75;\n}\n.video-card .topics .topic .topic-name[data-v-57e48aec] {\n max-width: 84px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.video-card .topics .topic[data-v-57e48aec]:hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: var(--theme-color);\n opacity: 1;\n}\n.video-card .description[data-v-57e48aec] {\n grid-area: description;\n color: inherit;\n overflow: hidden;\n align-self: stretch;\n justify-self: stretch;\n margin: 0 12px;\n line-height: 1.5;\n height: 3em;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n scrollbar-width: none !important;\n}\n.video-card .description[data-v-57e48aec]::-webkit-scrollbar {\n width: 0px !important;\n}\n.video-card .description.single-line[data-v-57e48aec] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.video-card .cooperation[data-v-57e48aec],\n.video-card .up[data-v-57e48aec],\n.video-card .stats[data-v-57e48aec] {\n grid-area: up;\n}\n.video-card .up[data-v-57e48aec] {\n margin-left: 12px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n padding: 2px;\n background-color: transparent;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n border-radius: 15px;\n color: inherit;\n}\n.video-card .up .name[data-v-57e48aec] {\n margin: 0 8px;\n}\n.video-card .up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .up[data-v-57e48aec]:not(.no-face):hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.video-card .up:hover .name[data-v-57e48aec],\n.video-card .up:hover .be-icon[data-v-57e48aec] {\n color: var(--theme-color);\n}\n.video-card.no-stats .up[data-v-57e48aec],\n.video-card.no-stats .cooperation[data-v-57e48aec] {\n margin-bottom: 4px;\n}\n.video-card .cooperation[data-v-57e48aec] {\n margin-left: 12px;\n display: flex;\n align-items: center;\n justify-self: stretch;\n justify-content: space-between;\n}\n.video-card .cooperation-ups[data-v-57e48aec] {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: flex-start;\n}\n.video-card .cooperation-ups .cooperation-up[data-v-57e48aec] {\n flex: 0 0 15px;\n width: 15px;\n display: flex;\n}\n.video-card .cooperation-ups .cooperation-up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .cooperation-ups .cooperation-up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 2px;\n background-color: #fff;\n}\nbody.dark .video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n background-color: #282828;\n}\n.video-card .cooperation-ups:hover .cooperation-up[data-v-57e48aec] {\n flex-basis: auto;\n width: 30px;\n margin-right: 4px;\n}\n.video-card .cooperation-note[data-v-57e48aec] {\n display: none;\n}\n.video-card .stats[data-v-57e48aec] {\n font-size: 11px;\n justify-self: self-end;\n margin-right: 12px;\n display: flex;\n align-items: center;\n opacity: 0.5;\n}\n.video-card .stats[data-v-57e48aec] > :nth-child(n+4) {\n display: none;\n}\n.video-card .stats .be-icon[data-v-57e48aec] {\n margin: 0 4px 0 12px;\n}',""]),e.exports=o},6115:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bb-comment .translate-container,\n.card-content .translate-container {\n margin: 4px 0 2px 0;\n display: inline-block;\n font-weight: normal;\n font-size: 14px;\n}\n.bb-comment .translate-container .translated,\n.card-content .translate-container .translated {\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.bb-comment .translate-container .translated a,\n.card-content .translate-container .translated a {\n color: #aaa !important;\n}\n.bb-comment .translate-container .translated a:hover,\n.card-content .translate-container .translated a:hover {\n color: var(--theme-color) !important;\n}\n.bb-comment .translate-container .translate,\n.card-content .translate-container .translate {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 12px;\n height: 18px;\n color: #aaa;\n cursor: pointer;\n}\n.bb-comment .translate-container .translate:hover,\n.card-content .translate-container .translate:hover {\n color: var(--theme-color);\n}\n.bb-comment .translate-container .translate-result,\n.card-content .translate-container .translate-result {\n padding-top: 6px;\n white-space: pre-wrap;\n line-height: 20px;\n word-break: break-all;\n overflow-wrap: break-word;\n}\nbody.dark .bb-comment .translate-container .translate-result,\nbody.dark .card-content .translate-container .translate-result {\n color: #eee;\n}\nbody.machine-translator-enabled .bb-comment .reply-con .text-con {\n display: block;\n margin: 0 !important;\n}\nbody.machine-translator-enabled .card-content .translate-container {\n margin: 13px 0 2px 0;\n}",""]),e.exports=o},1965:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".suggest-item {\n outline: none !important;\n padding: 6px 6px 6px 10px;\n cursor: pointer;\n}\n.suggest-item.disabled {\n cursor: default;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.suggest-item:not(.disabled):hover, .suggest-item:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.suggest-item:first-child {\n padding-top: 8px;\n border-radius: 7px 7px 0 0;\n}\n.suggest-item:last-child {\n padding-bottom: 8px;\n border-radius: 0 0 7px 7px;\n}\n.suggest-item-content {\n display: flex;\n align-items: center;\n}\n.suggest-item-icon {\n margin-right: 6px;\n}\n.suggest-item-title {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n flex: 1 0 0;\n width: 0;\n}\n.suggest-item-name {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-description {\n opacity: 0.5;\n font-size: smaller;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-delete {\n opacity: 0.5;\n margin-right: 4px;\n}\n.suggest-item-delete:hover {\n opacity: 1;\n}",""]),e.exports=o},6570:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".global-launch-bar-container {\n display: flex;\n top: 20vh;\n left: 50%;\n width: 40vw;\n max-width: 650px;\n height: 50px;\n padding: 0 8px;\n z-index: 5000;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n font-size: 16px;\n transform: translateX(-50%);\n transition: opacity 0.2s ease-out;\n}\nbody.dark .global-launch-bar-container {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .global-launch-bar-container {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .global-launch-bar-container {\n background-color: #222;\n}\n.global-launch-bar-container .launch-bar {\n flex: 1;\n}\nbody.dark .global-launch-bar-container .launch-bar {\n --color: #eee;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list {\n transition: 0.2s ease-out;\n top: calc(100% + 8px);\n max-height: calc(80vh - 16px - 50px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n font-size: 14px;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}",""]),e.exports=o},2919:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".launch-bar {\n --color: black;\n color: var(--color);\n position: relative;\n display: flex;\n align-items: center;\n}\n.launch-bar .input-area {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n.launch-bar .input-area .recommended-target {\n display: none;\n}\n.launch-bar .input-area .launch-bar-form {\n flex: 1;\n display: flex;\n}\n.launch-bar .input-area .launch-bar-form .input {\n flex: 1;\n padding: 8px;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: inherit;\n box-sizing: border-box;\n width: 15vw;\n font-size: inherit;\n}\n.launch-bar .input-area .launch-bar-form .input::placeholder {\n color: inherit !important;\n opacity: 0.8;\n}\n.launch-bar .input-area .launch-bar-form .submit {\n color: inherit;\n padding: 4px;\n background: transparent;\n border: none;\n outline: none !important;\n cursor: pointer;\n}\n.launch-bar .input-area .input-active-bar {\n flex: 0 0 auto;\n align-self: flex-start;\n height: 2px;\n width: 0;\n border-radius: 1px;\n background-color: var(--theme-color);\n transition: 0.3s ease-in-out;\n}\n.launch-bar .launch-bar-suggest-list {\n position: absolute;\n top: 100%;\n left: 50%;\n opacity: 0;\n width: 100%;\n transform: translateX(-50%) translateY(-4px);\n pointer-events: none;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n white-space: nowrap;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n background-color: #fff;\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n color: #eee;\n background-color: #222;\n}\n.launch-bar .launch-bar-suggest-list .suggest-highlight {\n color: var(--theme-color);\n font-style: normal;\n}\n.launch-bar:focus-within .input-active-bar {\n width: 100%;\n}\n.launch-bar:focus-within .launch-bar-suggest-list,\n.launch-bar .launch-bar-suggest-list:focus-within {\n opacity: 1;\n transform: translateX(-50%);\n pointer-events: initial;\n}",""]),e.exports=o},4396:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.release-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 12px;\n padding: 0 16px 16px 16px;\n}\n.release-content-markdown {\n font-size: 14px;\n flex-grow: 1;\n max-height: calc(100vh - 220px);\n overflow: auto;\n line-height: normal;\n}\n.release-content-markdown ul,\n.release-content-markdown ul li {\n list-style: disc;\n}\n.release-content-markdown ol,\n.release-content-markdown ol li {\n list-style: decimal;\n}\n.release-content-markdown ul,\n.release-content-markdown ol {\n padding-left: 16px;\n margin: 0;\n}\n.release-content-markdown ul li,\n.release-content-markdown ol li {\n line-height: 1.75;\n}\n.release-content-markdown p {\n margin: 0;\n}\n.release-content-markdown details {\n line-height: 1.75;\n}\n.release-content-markdown details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.release-content-markdown > p {\n line-height: 1.75;\n}\n.release-content-markdown p + p {\n margin-top: 8px;\n}\n.release-content-markdown pre {\n white-space: pre-wrap;\n}\n.release-content-markdown code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.release-content-markdown kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .release-content-markdown kbd {\n border-color: #666;\n}\n.release-content-markdown blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .release-content-markdown blockquote * {\n color: inherit !important;\n}\n.release-content-markdown blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.release-content-markdown a,\n.release-content-markdown a:focus-within,\n.release-content-markdown a:hover {\n color: var(--theme-color);\n}\n.release-content-markdown > :last-child {\n margin-bottom: 0;\n}\n.release-content-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n font-size: 15px;\n justify-content: flex-end;\n}\n.release-content-actions .be-button {\n padding: 6px 12px;\n}',""]),e.exports=o},1301:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-description {\n word-break: break-all;\n line-height: normal;\n}\n.component-description ul,\n.component-description ul li {\n list-style: disc;\n}\n.component-description ol,\n.component-description ol li {\n list-style: decimal;\n}\n.component-description ul,\n.component-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.component-description ul li,\n.component-description ol li {\n line-height: 1.75;\n}\n.component-description p {\n margin: 0;\n}\n.component-description details {\n line-height: 1.75;\n}\n.component-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.component-description > p {\n line-height: 1.75;\n}\n.component-description p + p {\n margin-top: 8px;\n}\n.component-description pre {\n white-space: pre-wrap;\n}\n.component-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.component-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .component-description kbd {\n border-color: #666;\n}\n.component-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .component-description blockquote * {\n color: inherit !important;\n}\n.component-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.component-description a,\n.component-description a:focus-within,\n.component-description a:hover {\n color: var(--theme-color);\n}\n.component-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},2270:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-detail {\n min-width: 264px;\n width: 264px;\n flex: 1;\n background-color: inherit;\n border-radius: 7px;\n overflow: auto;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n.component-detail .extra-option {\n display: flow-root;\n}\n.component-detail-separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n margin-bottom: 12px;\n flex-shrink: 0;\n align-self: stretch;\n}\n.component-detail-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: inherit;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n.component-detail-header .display-name {\n font-weight: 600;\n font-size: 16px;\n}\n.component-detail-header .close {\n cursor: pointer;\n}\n.component-detail-header .close:hover {\n color: var(--theme-color);\n}\n.component-detail-description:not(:last-child) {\n padding: 12px 12px 0;\n}\n.component-detail-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n padding: 0 8px 8px;\n}\n.component-detail-tags .tag {\n display: flex;\n align-items: center;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 24px;\n border-radius: 12px;\n padding: 2px 6px;\n margin-right: 4px;\n margin-bottom: 4px;\n font-size: 12px;\n box-shadow: none;\n}\nbody.dark .component-detail-tags .tag {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .component-detail-tags .tag {\n background-color: #282828;\n color: #eee;\n}\n.component-detail-tags .tag .tag-color {\n border-radius: 50%;\n width: 12px;\n height: 12px;\n margin-right: 4px;\n}\n.component-detail-internal-data {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n justify-content: center;\n flex-shrink: 0;\n position: sticky;\n bottom: 0;\n min-height: 24px;\n box-sizing: content-box;\n background-color: inherit;\n padding: 8px 12px;\n}\n.component-detail-internal-data-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n line-height: 24px;\n}\n.component-detail-internal-data .internal-name {\n opacity: 0.5;\n}\n.component-detail-internal-data .tippy-content {\n padding: 4px;\n}\n.component-detail-internal-data .extra-actions-wrapper {\n position: relative;\n transform: translateX(2px);\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions {\n padding: 4px;\n cursor: pointer;\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions-list {\n width: max-content;\n}\n.component-detail-operations {\n display: flex;\n align-items: center;\n}\n.component-detail-operations > * {\n flex: 1 0 0;\n}\n.component-detail-operations > *:not(:last-child) {\n margin-right: 8px;\n}\n.component-detail-options {\n padding: 8px 12px;\n}\n.component-detail-options .component-detail-options-title {\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 8px;\n}\n.component-detail-options .generated-option:not(:last-child) {\n margin-bottom: 4px;\n}\n.component-detail-grow {\n flex: 1;\n}",""]),e.exports=o},1130:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-option[data-v-730efac0] {\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n.component-option .unknown-option-type[data-v-730efac0],\n.component-option .be-slider[data-v-730efac0],\n.component-option .be-range-input[data-v-730efac0],\n.component-option .be-text-box[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=boolean] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=dropdown] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=color] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=switch][data-v-730efac0] {\n justify-content: center;\n}\n.component-option[data-type=switch] .option-name[data-v-730efac0] {\n display: none;\n}\n.component-option .option-name[data-v-730efac0] {\n margin-right: 8px;\n}\n.component-option .be-slider[data-v-730efac0] {\n margin: 0 8px;\n}",""]),e.exports=o},2071:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-settings {\n display: flex;\n flex-direction: column;\n justify-content: center;\n box-sizing: border-box;\n overflow: hidden;\n padding: 7px 12px 7px 7px;\n width: 100%;\n min-height: 36px;\n position: relative;\n cursor: pointer;\n transition: 0.2s ease-out;\n -webkit-user-select: none;\n user-select: none;\n}\n.component-settings::after {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n top: 0;\n left: 10px;\n height: 100%;\n width: calc(100% - 20px);\n pointer-events: none;\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 10px, rgba(136, 136, 136, 0.1333333333) 10px, rgba(136, 136, 136, 0.1333333333) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 38px, rgba(136, 136, 136, 0.1333333333) 38px, rgba(136, 136, 136, 0.1333333333) 50px, rgba(0, 0, 0, 0) 50px);\n}\n.component-settings.virtual::after {\n opacity: 1;\n}\n.component-settings.virtual .component-settings-row {\n display: none;\n}\n.component-settings .component-settings-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.component-settings .component-settings-row:not(:last-child) {\n margin-bottom: 8px;\n}\n.component-settings .display-name {\n font-size: 14px;\n height: 20px;\n flex: 1 0 auto;\n margin-left: 6px;\n width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n}\n.component-settings .details-arrow {\n opacity: 0.75;\n width: 32px;\n justify-content: flex-end;\n}\n.component-settings .be-switch-box {\n margin: 0;\n}\n.component-settings:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.component-settings:hover .options-count {\n opacity: 1;\n}\n.component-settings.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}',""]),e.exports=o},1360:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-content .sidebar > * {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page {\n font-size: 13px;\n top: 12px;\n transition: 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n transform: translateX(calc(-12.5% * var(--direction)));\n min-width: 372px;\n padding: 12px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n background-color: #282828;\n color: #eee;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page.open {\n transform: translateX(0);\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row:not(:last-child) {\n margin-bottom: 12px;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n width: 100%;\n}\n.settings-panel-content .sidebar > * .component-tags-item {\n background-color: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n white-space: nowrap;\n padding: 8px;\n padding-right: 10px;\n font-size: 13px;\n}\n.settings-panel-content .sidebar > * .component-tags-item .tag-name {\n margin-right: 4px;\n margin-left: 8px;\n}\n.settings-panel-content .sidebar > * .component-tags-item:hover, .settings-panel-content .sidebar > * .component-tags-item.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.settings-panel-content .sidebar > * .icon-list,\n.settings-panel-content .sidebar > * .component-tags {\n flex-grow: 1;\n max-height: calc(var(--panel-height) - var(--header-height));\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n background-color: transparent;\n width: 40px;\n display: flex;\n flex-direction: column;\n}\n.settings-panel-content .sidebar > * .icon-list::-webkit-scrollbar,\n.settings-panel-content .sidebar > * .component-tags::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-content .sidebar > * .icon-list .grow,\n.settings-panel-content .sidebar > * .component-tags .grow {\n flex-grow: 1;\n}\n.settings-panel-content .sidebar > * .icon-list .be-icon,\n.settings-panel-content .sidebar > * .component-tags .be-icon {\n margin-left: 2px;\n}\n.settings-panel-content .sidebar > * .component-tags {\n height: 100%;\n width: auto;\n position: absolute;\n top: 0;\n opacity: 0;\n transition: 0.2s ease-out;\n pointer-events: none;\n background-color: #fff;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.dark .settings-panel-content .sidebar > * .component-tags {\n background-color: #222;\n}\n.settings-panel-content .sidebar > * .icon-list:hover ~ .component-tags,\n.settings-panel-content .sidebar > * .component-tags:hover {\n opacity: 1;\n pointer-events: initial;\n}",""]),e.exports=o},2733:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-settings {\n line-height: normal;\n font-size: 12px;\n --panel-height: calc(100vh - 120px);\n}\nbody.player-mode-blackmask .be-settings {\n visibility: hidden;\n}\n.be-settings > .sidebar {\n position: fixed;\n top: 50%;\n z-index: 1002;\n transform: translateX(calc(-50% * var(--direction))) translateY(-50%);\n}\nbody.player-mode-full .be-settings > .sidebar, body.player-fullscreen-fix .be-settings > .sidebar, body.player-mode-web .be-settings > .sidebar, body.player-full-win .be-settings > .sidebar {\n z-index: 1;\n}\n.be-settings > .sidebar > * {\n transition: transform 0.3s ease-out, opacity 0.3s ease-out;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 26px;\n height: 26px;\n padding: 8px;\n box-sizing: content-box;\n background-color: rgba(255, 255, 255, 0.6666666667);\n border-radius: 50%;\n position: relative;\n}\nbody.dark .be-settings > .sidebar > * {\n background-color: rgba(51, 51, 51, 0.6666666667);\n}\n.be-settings > .sidebar > *:not(:last-child) {\n margin-bottom: 26px;\n}\n.be-settings > .sidebar > *::after {\n content: "";\n width: 140%;\n height: 140%;\n position: absolute;\n top: -20%;\n left: -20%;\n background: transparent;\n}\n.be-settings > .sidebar > * .be-icon {\n font-size: 26px;\n color: #888;\n fill: #888;\n transition: fill 0.3s ease-out;\n}\n.be-settings > .sidebar > *:hover {\n transform: translateX(calc(60% * var(--direction))) scale(1.1);\n background-color: #fff;\n}\nbody.dark .be-settings > .sidebar > *:hover {\n background-color: #333;\n}\n.be-settings > .sidebar > *:hover .be-icon {\n color: #222;\n fill: #222;\n}\nbody.dark .be-settings > .sidebar > *:hover .be-icon {\n color: #eee;\n fill: #eee;\n}\n.be-settings > .sidebar > *.open {\n transform: translateX(calc(100% * var(--direction))) scale(1.5);\n opacity: 0;\n}\n.be-settings .settings-panel-popup {\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n top: 50%;\n z-index: 100001;\n}\n.be-settings .settings-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .settings-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.be-settings .widgets-panel-popup {\n top: 50%;\n z-index: 100001;\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.be-settings .widgets-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .widgets-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.bilibili-player-dm-tip-wrap {\n pointer-events: none !important;\n}\nbody:not(.settings-panel-dock-right) .contact-help {\n display: none !important;\n}\nbody:not(.settings-panel-dock-right) .be-settings {\n --direction: 1;\n}\nbody:not(.settings-panel-dock-right) .be-settings > .sidebar {\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .widgets-panel-popup,\nbody:not(.settings-panel-dock-right) .settings-panel-popup {\n left: 12px;\n transform-origin: left;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .sidebar {\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .main {\n border-bottom-right-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags {\n border-bottom-left-radius: 8px;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-left-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-sub-page {\n left: 53px;\n}\nbody.settings-panel-dock-right {\n --direction: -1;\n}\nbody.settings-panel-dock-right .be-settings > .sidebar {\n right: 0;\n}\nbody.settings-panel-dock-right .widgets-panel-popup,\nbody.settings-panel-dock-right .settings-panel-popup {\n right: 12px;\n transform-origin: right;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .sidebar {\n order: 1;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .main {\n border-bottom-left-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags {\n border-bottom-right-radius: 8px;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n right: 0;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-right-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings {\n padding: 7px 7px 7px 12px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row {\n flex-direction: row-reverse;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .details-arrow {\n transform: rotate(180deg);\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .display-name {\n margin-left: 12px;\n width: 180px;\n}\nbody.settings-panel-dock-right .settings-panel-sub-page {\n right: 53px;\n}',""]),e.exports=o},6716:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-popup {\n z-index: 1000;\n}\n.settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n --header-height: 50px;\n --settings-panel-background: #fff;\n background-color: var(--settings-panel-background);\n position: relative;\n overscroll-behavior: contain;\n border-radius: 8px;\n color: black;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: content-box;\n width: auto;\n min-width: 320px;\n height: var(--panel-height);\n transition: opacity 0.2s 0.2s ease-out;\n}\nbody.dark .settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel {\n --settings-panel-background: #222;\n color: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header {\n box-sizing: border-box;\n height: var(--header-height);\n padding: 12px;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n display: flex;\n align-items: center;\n gap: 8px;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .settings-panel-popup .settings-panel .settings-panel-header {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .title {\n font-size: 18px;\n font-weight: 600;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon {\n font-size: 28px;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .peek {\n cursor: pointer;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon {\n cursor: pointer;\n transition: 0.2s ease-out;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon:hover,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon:hover {\n color: var(--theme-color);\n}\n.settings-panel-popup .settings-panel .settings-panel-content {\n flex: 1;\n display: flex;\n max-height: calc(var(--panel-height) - var(--header-height));\n}\n.settings-panel-popup .settings-panel .settings-panel-content .sidebar {\n display: flex;\n flex-direction: column;\n z-index: 2;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main {\n flex: 1;\n padding: 0;\n position: relative;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .be-empty {\n min-height: 36px;\n padding: 7px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list {\n display: grid;\n grid-template-columns: auto;\n gap: 0;\n width: auto;\n margin: 0;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-move, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-active, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n transition: all 0.5s ease;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-from, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-to {\n opacity: 0;\n transform: translateY(-30px);\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n position: absolute;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar {\n display: flex;\n align-items: center;\n background-color: var(--settings-panel-background);\n padding-right: 8px;\n height: 36px;\n box-sizing: border-box;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n position: sticky;\n top: 0;\n z-index: 1;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search {\n align-self: stretch;\n font-size: 13px;\n box-shadow: none;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search input {\n padding: 4px 10px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main > * {\n flex: 1;\n}\n.settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n top: 50%;\n left: calc(100% - 12px);\n height: calc(100% - 22px);\n z-index: -1;\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n padding-left: 12px;\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel .component-detail-panel {\n left: unset;\n right: calc(100% - 12px);\n padding: 0 12px 0 0;\n}\n.settings-panel-popup .settings-panel .component-detail-panel.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.settings-panel-popup .settings-panel.collapsed {\n height: auto;\n transform: translateY(calc(50% - 45vh));\n opacity: 0.3;\n}\n.settings-panel-popup .settings-panel.collapsed .header, body.dark .settings-panel-popup .settings-panel.collapsed .header {\n border-color: transparent;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar,\n.settings-panel-popup .settings-panel.collapsed .main {\n opacity: 0;\n padding: 0;\n pointer-events: none;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar {\n display: none;\n}\n.settings-panel-popup .settings-panel.collapsed:hover {\n opacity: 1;\n}\n.settings-panel-popup .settings-panel.peek {\n opacity: 0.1;\n}",""]),e.exports=o},5392:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tag-ring {\n display: flex;\n transform: scaleX(-1) rotate(-90deg);\n}\n.tag-ring svg {\n height: 18px;\n width: 18px;\n}",""]),e.exports=o},2572:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.widgets-panel {\n max-height: var(--panel-height);\n min-height: 80px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding: 16px;\n padding-right: 20px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .widgets-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .widgets-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .widgets-panel {\n background-color: #222;\n}\nbody.dark .widgets-panel {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.widgets-panel-header {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-weight: 600;\n font-size: 18px;\n margin-bottom: 18px;\n}\n.widgets-panel-header .be-icon {\n margin-right: 6px;\n}\n.widgets-panel .widgets-loading,\n.widgets-panel .widgets-empty {\n padding: 12px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content,\n.widgets-panel .widgets-empty .widgets-empty-content {\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ul li {\n list-style: disc;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n list-style: decimal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ol {\n padding-left: 16px;\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p,\n.widgets-panel .widgets-empty .widgets-empty-content p {\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details,\n.widgets-panel .widgets-empty .widgets-empty-content details {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details summary,\n.widgets-panel .widgets-empty .widgets-empty-content details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content > p,\n.widgets-panel .widgets-empty .widgets-empty-content > p {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p + p,\n.widgets-panel .widgets-empty .widgets-empty-content p + p {\n margin-top: 8px;\n}\n.widgets-panel .widgets-loading .widgets-empty-content pre,\n.widgets-panel .widgets-empty .widgets-empty-content pre {\n white-space: pre-wrap;\n}\n.widgets-panel .widgets-loading .widgets-empty-content code,\n.widgets-panel .widgets-empty .widgets-empty-content code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content kbd,\n.widgets-panel .widgets-empty .widgets-empty-content kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content kbd,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content kbd {\n border-color: #666;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content blockquote *,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content blockquote * {\n color: inherit !important;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote::before,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content a,\n.widgets-panel .widgets-loading .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-loading .widgets-empty-content a:hover,\n.widgets-panel .widgets-empty .widgets-empty-content a,\n.widgets-panel .widgets-empty .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-empty .widgets-empty-content a:hover {\n color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content > :last-child,\n.widgets-panel .widgets-empty .widgets-empty-content > :last-child {\n margin-bottom: 0;\n}\n.widgets-panel .widget-items {\n position: relative;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n}\n.widgets-panel .widget-items .widget-item {\n font-size: 14px;\n transition: 0.2s ease-out;\n display: flex;\n}\n.widgets-panel .widget-items .widget-item-enter, .widgets-panel .widget-items .widget-item-leave-to {\n opacity: 0;\n transform: scale(0.9);\n}\n.widgets-panel .widget-items .widget-item-leave-active {\n transition: 0.24s cubic-bezier(0.22, 0.61, 0.36, 1);\n position: absolute;\n white-space: nowrap;\n}\n.widgets-panel .widget-items .multiple-widgets {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n position: relative;\n}',""]),e.exports=o},5851:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-action {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n border-radius: 4px;\n padding: 4px 8px 4px 6px;\n font-size: 13px;\n}\n.component-action:hover {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.component-action.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},6565:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-about-page {\n flex: 1;\n}\n.be-about-page-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 12px;\n}\n.be-about-page-header .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.be-about-page-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 24px;\n}\n.be-about-page-content .script-meta-info {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 8px;\n text-align: center;\n padding: 0 24px;\n}\n.be-about-page-content .script-meta-info .meta-info-name {\n font-weight: 500;\n font-size: 22px;\n}\n.be-about-page-content .script-meta-info .meta-info-version {\n font-size: 14px;\n color: var(--theme-color);\n}\n.be-about-page-content .script-meta-info .meta-info-description {\n opacity: 0.5;\n}\n.be-about-page-content .script-links .script-link {\n display: flex;\n align-items: stretch;\n}\n.be-about-page-content .script-links .script-link .be-button {\n flex: 1;\n}\n.be-about-page-content .script-links,\n.be-about-page-content .about-page-actions {\n display: flex;\n align-items: stretch;\n gap: 8px;\n flex-wrap: wrap;\n}\n.be-about-page-content .script-links .script-link,\n.be-about-page-content .script-links .about-page-action,\n.be-about-page-content .about-page-actions .script-link,\n.be-about-page-content .about-page-actions .about-page-action {\n flex: 1 0 auto;\n}\n.be-about-page-content .script-links .script-link .be-icon,\n.be-about-page-content .script-links .about-page-action .be-icon,\n.be-about-page-content .about-page-actions .script-link .be-icon,\n.be-about-page-content .about-page-actions .about-page-action .be-icon {\n margin-right: 6px;\n}",""]),e.exports=o},2060:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel .manage-item {\n flex: 0 0 auto;\n min-height: 30px;\n width: 100%;\n box-sizing: border-box;\n}",""]),e.exports=o},9356:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel {\n height: calc(var(--panel-height) - 52px - 48px);\n display: flex;\n flex-direction: column;\n}\n.manage-panel > :not(:last-child) {\n margin-bottom: 12px;\n}\n.manage-panel .be-button .be-icon {\n margin-right: 6px;\n}\n.manage-panel .exclude-built-in .be-switch-box {\n margin-left: 6px;\n}\n.manage-panel .title-text {\n font-size: 14px;\n font-weight: 600;\n}\n.manage-panel .item-url-result {\n color: var(--theme-color);\n}\n.manage-panel .item-url {\n margin-right: 12px;\n}\n.manage-panel .manage-item-list {\n display: flex;\n align-items: center;\n flex-direction: column;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n flex-shrink: 1;\n}\n.manage-panel .manage-item-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.manage-panel .item-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.manage-panel .exclude-built-in {\n display: flex;\n align-items: center;\n}\n.manage-panel .be-loading {\n width: 100%;\n text-align: center;\n}\n.manage-panel .description-text {\n opacity: 0.75;\n}\n.manage-panel .add-item-row {\n position: relative;\n}\n.manage-panel .batch-add-popup {\n top: calc(100% + 8px);\n left: 50%;\n transition: 0.2s ease-out;\n transform: translateX(-50%) translateY(-8px);\n padding: 8px;\n width: 100%;\n min-height: calc(var(--panel-height) / 2);\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n}\nbody.dark .manage-panel .batch-add-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #222;\n}\n.manage-panel .batch-add-popup.open {\n transform: translateX(-50%) translateY(0px);\n}\n.manage-panel .batch-add-popup .be-text-area {\n flex: 1 0 auto;\n}\n.manage-panel .batch-add-popup .batch-add-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-button {\n flex: 1 0 0;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-icon {\n margin-right: 6px;\n}\n.manage-panel-title {\n gap: 6px;\n}\n.manage-panel-title .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.manage-panel .search-item-row {\n gap: 6px;\n}",""]),e.exports=o},4436:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.manage-panel .user-item {\n display: grid;\n column-gap: 6px;\n grid-template: "displayName line remove" auto "name line remove" auto/auto 1fr auto;\n align-items: center;\n padding: 6px 0;\n}\n.manage-panel .user-item .user-item-display-name {\n grid-area: displayName;\n}\n.manage-panel .user-item .user-item-name {\n grid-area: name;\n opacity: 0.5;\n font-size: 11px;\n}\n.manage-panel .user-item .user-item-line {\n grid-area: line;\n justify-self: stretch;\n transition: 0.2s ease-out;\n opacity: 0;\n height: 0;\n width: 100%;\n border-bottom: 1px dashed;\n box-sizing: border-box;\n}\n.manage-panel .user-item .user-item-toggle {\n grid-area: toggle;\n justify-self: end;\n}\n.manage-panel .user-item .user-item-remove-confirm {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: white;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button {\n color: inherit;\n font-size: 12px;\n padding: 4px;\n padding-right: 6px;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button .be-icon {\n margin-right: 4px;\n}\n.manage-panel .user-item .tippy-box {\n border-radius: 8px;\n}\n.manage-panel .user-item .tippy-box .tippy-content {\n padding-right: 5px;\n}\n.manage-panel .user-item .user-item-remove {\n grid-area: remove;\n justify-self: end;\n display: flex;\n align-items: center;\n opacity: 0.1;\n transition: 0.2s ease-out;\n cursor: pointer;\n padding: 4px;\n}\n.manage-panel .user-item .user-item-remove:hover {\n opacity: 1;\n color: #e54e4e;\n}\n.manage-panel .user-item:hover .user-item-remove:not(:hover) {\n opacity: 0.75;\n}\n.manage-panel .user-item:hover .user-item-line {\n opacity: 0.5;\n}',""]),e.exports=o},7621:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".online-registry {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n width: 400px;\n height: 85vh;\n z-index: 100000;\n transition: 0.2s ease-out;\n font-size: 14px;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .online-registry {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .online-registry {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .online-registry {\n background-color: #222;\n}\n.online-registry.open {\n transform: translate(-50%, -50%) scale(1);\n}\n.online-registry-header {\n padding: 12px 12px 6px 12px;\n display: flex;\n align-items: center;\n gap: 12px;\n row-gap: 6px;\n flex-wrap: wrap;\n}\n.online-registry-header + .online-registry-header {\n padding-top: 6px;\n}\n.online-registry-header-title {\n flex: 1;\n font-size: 18px;\n font-weight: 600;\n}\n.online-registry-header-search {\n flex: 1;\n justify-content: center;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.online-registry-header-search .be-textbox {\n max-width: 320px;\n flex: 1;\n font-size: 12px;\n}\n.online-registry-header-filter {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-branch {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-refresh-icon, .online-registry-header-close-icon {\n padding: 2px;\n cursor: pointer;\n transition: 0.3s ease-out;\n}\n.online-registry-header-refresh-icon:hover, .online-registry-header-close-icon:hover {\n color: var(--theme-color);\n}\n.online-registry-header-refresh-icon {\n padding: 3px;\n}\n.online-registry-header-refresh-icon:hover {\n transform: rotate(360deg);\n}\n.online-registry-separator {\n height: 1px;\n width: calc(100% - 24px);\n margin: 0 12px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-content {\n flex: 1;\n padding: 4px 0;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.online-registry-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.online-registry-content .be-loading,\n.online-registry-content .be-empty {\n margin: 12px 0;\n}",""]),e.exports=o},4947:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.online-registry-item-wrapper {\n min-height: 39px;\n position: relative;\n}\n.online-registry-item-wrapper.hidden {\n display: none;\n}\n.online-registry-item-wrapper::before {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n pointer-events: none;\n top: 50%;\n left: 12px;\n transform: translateY(-50%);\n width: calc(100% - 24px);\n height: 20px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n display: flex;\n}\n.online-registry-item-wrapper.virtual::before {\n opacity: 1;\n}\n.online-registry-item {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n padding: 8px 12px;\n}\n.online-registry-item:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.online-registry-item:not(:last-child) {\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-item .item-badge {\n padding: 2px 4px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 4px;\n font-size: 12px;\n}\n.online-registry-item .item-display-name {\n font-weight: 600;\n}\n.online-registry-item .grow {\n flex: 1 0 0;\n}\n.online-registry-item .item-action {\n font-size: 12px;\n}\n.online-registry-item .item-action .be-icon {\n margin-right: 6px;\n}\n.online-registry-item .item-action .reinstall-button:not(:hover):not(:focus-within) {\n opacity: 0.5;\n}\n.online-registry-item:hover .item-description {\n opacity: 1;\n}\n.online-registry-description {\n font-size: 13px;\n line-height: normal;\n word-break: break-all;\n}\n.online-registry-description ul,\n.online-registry-description ul li {\n list-style: disc;\n}\n.online-registry-description ol,\n.online-registry-description ol li {\n list-style: decimal;\n}\n.online-registry-description ul,\n.online-registry-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.online-registry-description ul li,\n.online-registry-description ol li {\n line-height: 1.75;\n}\n.online-registry-description p {\n margin: 0;\n}\n.online-registry-description details {\n line-height: 1.75;\n}\n.online-registry-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.online-registry-description > p {\n line-height: 1.75;\n}\n.online-registry-description p + p {\n margin-top: 8px;\n}\n.online-registry-description pre {\n white-space: pre-wrap;\n}\n.online-registry-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.online-registry-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .online-registry-description kbd {\n border-color: #666;\n}\n.online-registry-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .online-registry-description blockquote * {\n color: inherit !important;\n}\n.online-registry-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.online-registry-description a,\n.online-registry-description a:focus-within,\n.online-registry-description a:hover {\n color: var(--theme-color);\n}\n.online-registry-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},3520:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-video-control-bar-extend {\n display: flex;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend {\n margin-top: 1px;\n}\n.be-video-control-bar-extend, .squirtle-controller.squirtle-wide-screen .be-video-control-bar-extend.squirtle-block-wrap {\n width: auto !important;\n margin-top: 0px;\n}\n.be-video-control-bar-extend .bp-svgicon {\n width: auto;\n padding-top: 1px;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n transition: transform 0.2s ease-out;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon svg,\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 22px;\n width: 22px;\n height: 22px;\n color: #fff;\n fill: #fff;\n}\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon svg,\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 28px;\n width: 28px;\n height: 28px;\n}\n.be-video-control-bar-extend .be-video-control-tooltip {\n pointer-events: none;\n font-size: 12px;\n padding: 6px 8px;\n line-height: normal;\n white-space: nowrap;\n color: #fff;\n background-color: rgba(0, 0, 0, 0.7019607843);\n border-radius: 4px;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%) translateY(calc(-100% - 11px));\n opacity: 0;\n}\n.be-video-control-bar-extend-item {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n position: relative;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend-item {\n align-items: center;\n}\n.be-video-control-bar-extend-item:hover .be-video-control-tooltip {\n transition: all 0.3s ease-in-out 0.3s;\n opacity: 1;\n transform: translateX(-50%) translateY(calc(-100% - 19px));\n}\n.be-video-control-bar-extend-item:active .bp-svgicon .be-icon {\n transform: scale(0.95);\n}\n.be-video-control-bar-extend-item button {\n background-color: transparent;\n margin: 0;\n padding: 0;\n border: none;\n cursor: pointer;\n}\n.be-video-control-bar-extend-item button:hover, .be-video-control-bar-extend-item button:active {\n outline: none !important;\n}\nbody.player-mode-full .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-fullscreen-fix .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-mode-web .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-full-win .bpx-player-control-wrap .be-video-control-bar-extend-item button {\n padding-top: 2px;\n}",""]),e.exports=o},1358:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dialog {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n min-width: 200px;\n min-height: 150px;\n max-width: calc(100vw - 100px);\n max-height: calc(100vh - 100px);\n position: fixed;\n transition: 0.2s ease-out;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scale(0.95);\n opacity: 0;\n pointer-events: none;\n}\nbody.dark .be-dialog {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-dialog {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-dialog {\n background-color: #222;\n}\n.be-dialog.open {\n transform: translateX(-50%) translateY(-50%) scale(1);\n opacity: 1;\n pointer-events: initial;\n}\n.be-dialog-header {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: space-between;\n padding: 12px 12px 12px 16px;\n}\n.be-dialog-header-title {\n font-weight: 600;\n font-size: 18px;\n}\n.be-dialog-header-close .be-button {\n padding: 6px;\n}\n.be-dialog-content {\n flex: 1 0 auto;\n overflow: auto;\n}",""]),e.exports=o},6128:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card {\n background: #fff;\n min-width: var(--card-min-width);\n max-width: 60vw;\n min-height: 87px;\n margin: 8px 0;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.2666666667);\n transform-origin: left;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n position: relative;\n padding-left: 8px;\n border-radius: 8px;\n}\nbody.dark .toast-card {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.toast-card.toast-card-container-enter, .toast-card.toast-card-container-leave-to {\n opacity: 0;\n transform: translateX(var(--card-min-width-negative));\n}\n.toast-card.toast-card-container-leave-active {\n position: absolute;\n transition: 0.3s cubic-bezier(0.6, -0.28, 0.74, 0.05);\n}\n.toast-card-header {\n display: flex;\n align-items: center;\n}\n.toast-card-title {\n font-size: 18px;\n color: #444;\n opacity: 0.5;\n margin: 12px;\n font-weight: 600;\n flex: 1 1 auto;\n}\nbody.dark .toast-card-title {\n color: #999;\n}\n.toast-card-close {\n height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n position: relative;\n justify-content: center;\n flex: 0 0 auto;\n padding: 14px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n box-sizing: content-box;\n opacity: 0.75;\n}\n.toast-card-close:hover {\n opacity: 0.85;\n}\n.toast-card-close:hover .be-icon {\n transform: scale(1.2);\n}\n.toast-card-close:active {\n opacity: 0.9;\n}\n.toast-card-close:active .be-icon {\n transform: scale(1.3);\n}\n.toast-card-close .be-icon {\n transition: 0.2s ease-out;\n}\n.toast-card-close .be-progress-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n --ring-color: currentColor;\n opacity: 0;\n}\n.toast-card-close.show-progress .be-progress-ring {\n opacity: 1;\n}\n.toast-card-message {\n color: #000;\n font-size: 14px;\n margin: 0 16px 12px 12px;\n white-space: pre-wrap;\n display: flex;\n align-items: center;\n line-height: 1.5;\n flex-wrap: wrap;\n word-break: break-all;\n max-height: 200px;\n overflow: auto;\n}\n.toast-card-border {\n position: absolute;\n border-radius: 2px;\n height: calc(100% - 10px);\n width: 4px;\n top: 5px;\n left: 0;\n}\n.toast-card.toast-default .toast-card-border {\n background-color: #444;\n}\n.toast-card.toast-error .toast-card-border {\n background-color: #f44336;\n}\n.toast-card.toast-info .toast-card-border {\n background-color: #2196f3;\n}\n.toast-card.toast-success .toast-card-border {\n background-color: #8bc34a;\n}\n.toast-card span,\n.toast-card .link {\n display: inline-block;\n padding: 2px 4px;\n margin: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n text-decoration: none;\n color: #000;\n transition: all 0.2s ease-out;\n border-radius: 6px;\n}\n.toast-card .link {\n cursor: pointer;\n}\n.toast-card .link:hover {\n background-color: rgba(136, 136, 136, 0.2);\n}\n.toast-card .link:active {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.toast-card .download-link,\n.toast-card .download-link:hover {\n color: inherit !important;\n text-decoration: underline;\n word-break: break-all;\n}",""]),e.exports=o},3747:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card-container {\n --card-min-width: 240px;\n --card-min-width-negative: -240px;\n position: fixed;\n left: 0;\n bottom: 0;\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n padding-left: 16px;\n z-index: 100001;\n pointer-events: none;\n overflow: hidden;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n}\n.toast-card-container * {\n pointer-events: initial;\n transition: 0.2s ease-out;\n}",""]),e.exports=o},2141:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-check-box .text-container[data-v-07bbf374] {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n}\n.be-check-box .icon-container[data-v-07bbf374] {\n flex-shrink: 0;\n position: relative;\n margin: 2px 0 2px 8px;\n}\n.be-check-box .icon-container > *[data-v-07bbf374] {\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n}\n.be-check-box .icon-container .not-checked[data-v-07bbf374] {\n opacity: 0.75;\n}\n.be-check-box .icon-container .checked[data-v-07bbf374] {\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n transform: scale(0);\n}\n.be-check-box.checked .icon-container[data-v-07bbf374] {\n color: var(--theme-color);\n}\n.be-check-box.checked .icon-container .not-checked[data-v-07bbf374] {\n transform: scale(0);\n opacity: 0;\n}\n.be-check-box.checked .icon-container .checked[data-v-07bbf374] {\n transform: scale(1);\n opacity: 1;\n}\n.be-check-box.left-icon .icon-container[data-v-07bbf374] {\n order: -1;\n margin: 2px 6px 2px 0;\n}",""]),e.exports=o},7521:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-color-picker[data-v-5b939efc] {\n font-size: 14px;\n display: flex;\n position: relative;\n color: #000;\n}\n.be-color-picker[data-v-5b939efc], .be-color-picker *[data-v-5b939efc] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-color-picker[data-v-5b939efc] {\n color: #eee;\n}\n.be-color-picker .selected-color[data-v-5b939efc] {\n cursor: pointer;\n border-radius: 50%;\n outline: none !important;\n transition: box-shadow 0.2s ease-out;\n}\n.be-color-picker .selected-color[data-v-5b939efc]:focus-within {\n box-shadow: 0 0 0 3px var(--theme-color-20);\n}\n.be-color-picker .picker[data-v-5b939efc] {\n left: calc(50% + var(--offset));\n top: 100%;\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n padding: 14px;\n width: 240px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: content-box;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #222;\n}\n.be-color-picker .picker.open[data-v-5b939efc] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-color-picker .picker .item-group[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .item-title[data-v-5b939efc] {\n font-weight: 600;\n margin-bottom: 8px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc], .be-color-picker .picker .item-group.operations[data-v-5b939efc] {\n flex-direction: row;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc],\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n padding: 6px 8px;\n flex: 1 0 0;\n text-align: center;\n font-size: 14px;\n}\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n margin-right: 4px;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc] {\n margin-left: 4px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.be-color-picker .picker .item-group.info .color-preview[data-v-5b939efc] {\n transition: none;\n width: 24px;\n height: 24px;\n margin-right: 8px;\n border-radius: 50%;\n}\n.be-color-picker .picker .item-group.info .grow[data-v-5b939efc] {\n flex: 1 0 0;\n}\n.be-color-picker .picker .item-group.info .toggle-mode[data-v-5b939efc] {\n font-size: 14px;\n padding: 4px 8px;\n}\n.be-color-picker .picker .item-group.info .hex[data-v-5b939efc] {\n flex: 1 1 64px;\n}\n.be-color-picker .picker .item-group .colors[data-v-5b939efc] {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc] {\n outline: none !important;\n margin-right: 6px;\n margin-bottom: 6px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n border-radius: 50%;\n transition: transform 0.2s ease-out;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:hover, .be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:focus-within {\n transform: scale(1.1);\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:active {\n transform: scale(1.05);\n}\n.be-color-picker .picker .item-group .bars[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .bars .bar[data-v-5b939efc] {\n display: flex;\n align-items: center;\n font-size: 14px;\n margin-bottom: 4px;\n}\n.be-color-picker .picker .item-group .bars .bar .color-bar[data-v-5b939efc] {\n height: 4px;\n border-radius: 2px;\n box-shadow: 0 0 0 2px rgba(136, 136, 136, 0.1333333333);\n}\n.be-color-picker .picker .item-group .bars .bar .color-thumb[data-v-5b939efc] {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid var(--theme-color-20);\n transition: border 0.2s ease-out;\n background-color: #fff;\n}\n.be-color-picker .picker .item-group .bars .bar .be-slider:focus-within .color-thumb[data-v-5b939efc] {\n border-color: var(--theme-color);\n}\n.be-color-picker .picker .item-group .bars .bar-name[data-v-5b939efc] {\n flex-shrink: 0;\n width: 24px;\n}\n.be-color-picker .picker .item-group .bars .bar-value[data-v-5b939efc] {\n flex: 0 0 48px;\n margin-left: 6px;\n text-align: right;\n}\n.be-color-picker .picker .item-group .bars .be-slider[data-v-5b939efc] {\n flex: 1 0 0;\n margin: 4px 6px;\n}\n.be-color-picker .picker .item-group[data-v-5b939efc]:not(:last-child) {\n margin-bottom: 16px;\n}\n.be-color-picker .picker.compact[data-v-5b939efc] {\n width: 200px;\n}\n.be-color-picker .picker.compact .item-group .colors .color[data-v-5b939efc] {\n width: 19px;\n height: 19px;\n}",""]),e.exports=o},9057:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".default-widget[data-v-20e1bedd] {\n position: relative;\n}\n.default-widget .widget-icon[data-v-20e1bedd] {\n margin-right: 8px;\n opacity: 0.75;\n}\n.default-widget .widget-name[data-v-20e1bedd] {\n display: flex;\n}",""]),e.exports=o},1662:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-image-picker[data-v-7b32c90b] {\n position: relative;\n font-size: 14px;\n}\n.be-image-picker .popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n top: 100%;\n left: 50%;\n padding: 8px;\n width: 302px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: black;\n fill: black;\n stroke: black;\n text-align: center;\n margin-bottom: 16px;\n}\nbody.dark .be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .images[data-v-7b32c90b] {\n max-height: 240px;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n outline: none !important;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n padding-left: 6px;\n padding-top: 6px;\n}\n.be-image-picker .popup .images[data-v-7b32c90b]::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b] {\n border-radius: 4px;\n transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;\n outline: none !important;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n margin-right: 6px;\n margin-bottom: 6px;\n}\n.be-image-picker .popup .images .image.image-list-enter[data-v-7b32c90b], .be-image-picker .popup .images .image.image-list-leave-to[data-v-7b32c90b] {\n opacity: 0;\n}\n.be-image-picker .popup .images .image.image-list-leave-active[data-v-7b32c90b] {\n position: absolute;\n}\n.be-image-picker .popup .images .image img[data-v-7b32c90b] {\n object-fit: cover;\n transition: 0.2s ease-out;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b]:hover, .be-image-picker .popup .images .image[data-v-7b32c90b]:focus-within {\n box-shadow: 0 0 0 2px var(--theme-color), 0 0 0 4px var(--theme-color-20);\n}\n.be-image-picker .popup .images .image:hover img[data-v-7b32c90b], .be-image-picker .popup .images .image:focus-within img[data-v-7b32c90b] {\n transform: scale(1.1);\n}\n.be-image-picker .popup .images .image.selected[data-v-7b32c90b] {\n box-shadow: 0 0 0 3px var(--theme-color);\n}\n.be-image-picker .popup .mask[data-v-7b32c90b] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] {\n display: flex;\n margin: 8px 4px 4px 4px;\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}\n.be-image-picker .popup .operations > .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations > .be-button.clear-image[data-v-7b32c90b] {\n flex-grow: 2;\n}\n.be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(-50%) scale(0.75);\n top: 50%;\n left: 50%;\n padding: 14px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n width: 80%;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup .operations .add-image-popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(-50%) scale(1);\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b]:not(:last-child) {\n margin-bottom: 12px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-textbox[data-v-7b32c90b] {\n margin-left: 8px;\n flex: 1 0 0;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .title[data-v-7b32c90b] {\n font-weight: 600;\n font-size: 16px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row.buttons[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}",""]),e.exports=o},1635:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.image-viewer-container[data-v-8829ba14] {\n background: rgba(0, 0, 0, 0.85);\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100002;\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n color: #eee;\n}\n.image-viewer-container[data-v-8829ba14], .image-viewer-container *[data-v-8829ba14] {\n transition: 0.2s ease-out;\n}\n.image-viewer-container.open[data-v-8829ba14] {\n opacity: 1;\n pointer-events: initial;\n}\n.image-viewer-container .image-viewer[data-v-8829ba14] {\n width: 90%;\n height: 90%;\n display: grid;\n grid-template: "image close" 48px "image ." auto "image copy-link" 48px "image ." 12px "image new-tab" 48px "image ." 18px "image download" 48px/auto 48px;\n column-gap: 12px;\n justify-items: center;\n justify-content: stretch;\n align-items: center;\n align-content: stretch;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .image-container[data-v-8829ba14] {\n grid-area: image;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.image-viewer-container .image-viewer .image-container .image[data-v-8829ba14] {\n flex: 1 0 0;\n height: 0;\n object-fit: contain;\n}\n.image-viewer-container .image-viewer .close[data-v-8829ba14] {\n grid-area: close;\n}\n.image-viewer-container .image-viewer .download[data-v-8829ba14] {\n grid-area: download;\n}\n.image-viewer-container .image-viewer .copy-link[data-v-8829ba14] {\n grid-area: copy-link;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .new-tab[data-v-8829ba14] {\n grid-area: new-tab;\n transform: scale(0.85);\n}\n.image-viewer-container .image-viewer .image-viewer-icon[data-v-8829ba14] {\n cursor: pointer;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n color: #eee;\n}\n.image-viewer-container .image-viewer .image-viewer-icon:hover .be-icon[data-v-8829ba14] {\n color: var(--theme-color);\n}\n.image-viewer-container.open .image-viewer[data-v-8829ba14] {\n transform: scale(1);\n}',""]),e.exports=o},8566:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-bar[data-v-56b62124] {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n height: 4px;\n background-color: rgba(136, 136, 136, 0.2666666667);\n border-radius: 2px;\n min-width: 24px;\n overflow: hidden;\n}\n.be-progress-bar .progress[data-v-56b62124] {\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.be-progress-bar .progress.transition[data-v-56b62124] {\n transition: width 0.3s ease-out;\n}",""]),e.exports=o},1726:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-ring[data-v-360d0319] {\n --ring-color: var(--theme-color);\n --ring-background: #8884;\n display: flex;\n}\n.be-progress-ring svg[data-v-360d0319] {\n transform: rotate(-90deg);\n}\n.be-progress-ring svg .progress[data-v-360d0319] {\n stroke: var(--ring-color);\n}\n.be-progress-ring svg .progress.transition[data-v-360d0319] {\n transition: stroke-dashoffset 0.3s ease-out;\n}\n.be-progress-ring svg .progress-background[data-v-360d0319] {\n stroke: var(--ring-background);\n}",""]),e.exports=o},7824:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-range-input[data-v-b459c060] {\n display: flex;\n align-items: center;\n}\n.be-range-input > .be-textbox[data-v-b459c060] {\n flex: 1;\n}\n.be-range-input .default-separator[data-v-b459c060] {\n margin: 0 8px;\n flex: 0 0 auto;\n}",""]),e.exports=o},975:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-scroll-trigger {\n cursor: pointer;\n}",""]),e.exports=o},1278:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-switch-box {\n outline: none !important;\n width: 32px;\n margin: 4px 0;\n}\n.be-switch-box, .be-switch-box *, .be-switch-box *::before, .be-switch-box *::after {\n transition: 0.2s all ease-out;\n}\n.be-switch-box input[type=checkbox] {\n display: none;\n}\n.be-switch-box label {\n display: block;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.be-switch-box .bar {\n position: relative;\n background-color: rgba(136, 136, 136, 0.2666666667);\n box-sizing: border-box;\n height: 12px;\n border-radius: 6px;\n}\n.be-switch-box .bar .thumb {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: #fff;\n border: 1px solid #ddd;\n}\nbody.dark .be-switch-box .bar .thumb {\n border-color: #555;\n background-color: #666;\n}\n.be-switch-box.checked .bar {\n background-color: var(--theme-color-50);\n}\n.be-switch-box.checked .bar .thumb {\n background-color: var(--theme-color);\n border-color: transparent;\n left: calc(100% - 18px);\n}\nbody.dark .be-switch-box.checked .bar .thumb {\n border-color: transparent;\n background-color: var(--theme-color);\n}\n.be-switch-box:focus-within.checked .thumb {\n box-shadow: 0 0 0 1px var(--theme-color-20);\n}\n.be-switch-box.disabled {\n opacity: 0.5;\n}\n.be-switch-box.disabled, .be-switch-box.disabled * {\n cursor: not-allowed;\n}",""]),e.exports=o},1710:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-tab-control {\n display: flex;\n flex-direction: column;\n}\n.be-tab-control .default-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 8px 8px 0;\n}\n.be-tab-control .default-header .default-tabs {\n display: flex;\n padding: 6px 8px;\n}\n.be-tab-control .default-header .default-tabs .default-tab {\n font-size: 14px;\n position: relative;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(:last-child) {\n margin-right: 16px;\n}\n.be-tab-control .default-header .default-tabs .default-tab::after {\n content: "";\n position: absolute;\n top: calc(100% + 4px);\n left: 50%;\n display: block;\n height: 3px;\n border-radius: 2px;\n width: 80%;\n background-color: var(--theme-color);\n transition: transform 0.2s ease-out;\n transform: translateX(-50%) scaleX(0);\n}\n.be-tab-control .default-header .default-tabs .default-tab-name {\n transition: transform 0.2s ease-out;\n opacity: 0.5;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected .default-tab-name {\n font-weight: 600;\n transform: scale(1.1);\n opacity: 1;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected::after {\n transform: translateX(-50%) scaleX(1);\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n content: attr(data-count);\n position: absolute;\n bottom: calc(100% + 2px);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n font-size: 11px;\n border-radius: 10px;\n background-color: #fff;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n height: 10px;\n min-width: 10px;\n box-sizing: content-box;\n line-height: 1;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n background-color: #333;\n}\n.be-tab-control .default-header .header-item {\n flex: 1;\n margin: 0 8px;\n}\n.be-tab-control .default-header .header-item:empty {\n display: none;\n}\n.be-tab-control .default-header .be-more-link .be-button {\n padding: 4px 6px 4px 10px;\n}\n.be-tab-control .default-header .be-more-link .be-button .be-icon {\n margin-left: 4px;\n}\n.be-tab-control .default-content {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 6px 0;\n position: relative;\n max-height: 100%;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.be-tab-control .default-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-tab-control .default-content .content-transition-enter, .be-tab-control .default-content .content-transition-leave-to {\n opacity: 0;\n transform: translateY(-12px);\n}\n.be-tab-control .default-content .content-transition-leave-active {\n position: absolute;\n}\n.be-tab-control .default-content .content-transition-enter-active, .be-tab-control .default-content .content-transition-leave-active {\n transition: 0.2s ease-out;\n}',""]),e.exports=o},6780:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-text-area {\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-text-area:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-text-area textarea {\n resize: none;\n width: 0;\n flex: 1 0 0;\n padding: 4px 6px;\n border-radius: 4px;\n background-color: transparent;\n overflow: auto;\n border: none;\n outline: none !important;\n color: black;\n font-size: inherit;\n}\nbody.dark .be-text-area textarea {\n color: #eee;\n}\n.be-text-area textarea:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-text-area textarea::-webkit-input-placeholder {\n color: #888;\n}",""]),e.exports=o},7146:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-textbox[data-v-d1f779a8] {\n position: relative;\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-textbox[data-v-d1f779a8]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-textbox input[type=text][data-v-d1f779a8] {\n line-height: normal;\n padding: 4px 6px;\n border-radius: 4px;\n flex: 1 0 0;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: black;\n width: 0;\n font-size: inherit;\n}\nbody.dark .be-textbox input[type=text][data-v-d1f779a8] {\n color: #eee;\n}\n.be-textbox input[type=text][data-v-d1f779a8]:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-textbox input[type=text][data-v-d1f779a8]::-webkit-input-placeholder {\n color: #888;\n}\n.be-textbox.linear[data-v-d1f779a8] {\n box-shadow: none;\n}\n.be-textbox.linear input[type=text][data-v-d1f779a8] {\n padding: 4px;\n}\n.be-textbox.linear .linear-bar[data-v-d1f779a8] {\n position: absolute;\n top: calc(100% - 1px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 1px;\n height: 1px;\n width: 100%;\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-textbox.linear[data-v-d1f779a8]:focus-within {\n box-shadow: none;\n}\n.be-textbox.linear:focus-within .linear-bar[data-v-d1f779a8] {\n background-color: var(--theme-color);\n}",""]),e.exports=o},3171:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-button[data-v-18aa9448] {\n outline: none !important;\n line-height: normal;\n transition: background-color 0.2s ease-out, box-shadow 0.2s ease-out;\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: black;\n border: none;\n border-radius: 4px;\n padding: 4px 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.be-button[data-v-18aa9448], .be-button *[data-v-18aa9448] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-button[data-v-18aa9448] {\n color: #eee;\n}\n.be-button.round[data-v-18aa9448] {\n border-radius: calc(1em + 8px);\n padding: 4px 10px;\n}\n.be-button.icon[data-v-18aa9448] {\n border-radius: 50%;\n padding: 4px;\n background-image: none !important;\n}\n.be-button .content-container[data-v-18aa9448] {\n -webkit-user-select: none;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.be-button.transparent[data-v-18aa9448] {\n background-color: transparent;\n}\n.be-button.primary[data-v-18aa9448] {\n box-shadow: 0 0 0 1px var(--theme-color-80);\n background-color: var(--theme-color-80);\n color: var(--foreground-color);\n}\n.be-button.light[data-v-18aa9448] {\n background-color: #fff;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n transition: box-shadow 0.2s ease-out;\n}\nbody.dark .be-button.light[data-v-18aa9448] {\n background-color: #333;\n}\n.be-button[data-v-18aa9448]:not(.disabled):hover, .be-button[data-v-18aa9448]:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-button[data-v-18aa9448]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).transparent[data-v-18aa9448]:hover, .be-button:not(.disabled).transparent[data-v-18aa9448]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover, .be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n background-color: var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:active, .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:active, body.dark .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button.disabled[data-v-18aa9448] {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},9820:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dropdown[data-v-6b51ccd4] {\n display: flex;\n border-radius: 4px;\n color: black;\n fill: black;\n stroke: black;\n background-color: #fff;\n transition: box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n position: relative;\n cursor: pointer;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-dropdown[data-v-6b51ccd4], .be-dropdown *[data-v-6b51ccd4] {\n -webkit-tap-highlight-color: transparent;\n outline: none !important;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n background-color: #333;\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):active, .be-dropdown[data-v-6b51ccd4]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n background-color: inherit;\n top: calc(100% + 4px);\n left: 50%;\n transform: translateX(-50%) translateY(-4px) scale(0.8);\n transform-origin: top;\n transition: 0.2s ease-out;\n min-width: 100%;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n}\nbody.dark .be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.be-dropdown .dropdown-popup.open[data-v-6b51ccd4] {\n transform: translateX(-50%) scale(1);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4] {\n padding: 4px 6px;\n margin: 2px 4px;\n border-radius: 4px;\n white-space: nowrap;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease-out;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:hover, .be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:first-child {\n margin-top: 4px;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:last-child {\n margin-bottom: 4px;\n}\n.be-dropdown .selected[data-v-6b51ccd4] {\n display: flex;\n align-items: center;\n flex-grow: 1;\n line-height: normal;\n}\n.be-dropdown .selected-item[data-v-6b51ccd4] {\n flex: 1;\n padding: 4px 8px;\n}\n.be-dropdown .selected .arrow[data-v-6b51ccd4] {\n flex-shrink: 0;\n transition: transform 0.2s ease-out;\n}\n.be-dropdown .selected .arrow.open[data-v-6b51ccd4] {\n transform: rotate(180deg);\n}\n.be-dropdown .selected .arrow .default-arrow[data-v-6b51ccd4] {\n padding: 0 6px;\n display: flex;\n align-items: center;\n}\n.be-dropdown .selected .arrow .default-arrow path[data-v-6b51ccd4] {\n fill: transparent;\n}\n.be-dropdown .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n transition: 0.2s ease-out;\n stroke: rgba(136, 136, 136, 0.6666666667);\n fill: transparent;\n width: 12px;\n height: 12px;\n}\n.be-dropdown:not(.disabled):hover .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):active .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):focus-within .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n stroke: var(--theme-color);\n}\n.be-dropdown.disabled[data-v-6b51ccd4] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.be-dropdown.round[data-v-6b51ccd4] {\n border-radius: calc(1em + 8px);\n}\n.be-dropdown.round .selected-item[data-v-6b51ccd4] {\n padding: 4px 10px;\n}",""]),e.exports=o},4629:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-empty {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},8199:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-loading {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},6708:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-popup {\n position: absolute;\n z-index: 1;\n border-radius: 8px;\n}\n.be-popup.fixed {\n position: fixed;\n}\n.be-popup.close.closed-style {\n pointer-events: none;\n opacity: 0;\n}\n.be-popup.open {\n pointer-events: initial;\n opacity: 1;\n}",""]),e.exports=o},2013:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-slider[data-v-94f62aa6] {\n min-width: 50px;\n position: relative;\n outline: none !important;\n}\n.be-slider .bar-container[data-v-94f62aa6] {\n padding: 6px 0;\n}\n.be-slider .default-bar[data-v-94f62aa6] {\n height: 4px;\n cursor: pointer;\n border-radius: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-slider .thumb-container[data-v-94f62aa6] {\n cursor: pointer;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n transition: none;\n}\n.be-slider .default-thumb[data-v-94f62aa6] {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: var(--theme-color);\n box-shadow: 0 0 0 2px var(--theme-color-20);\n transition: box-shadow 0.2s ease-out;\n}",""]),e.exports=o},5137:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'@charset "UTF-8";\n/** 由于允许自定义SVG插入, 样式不能是scoped的, 否则匹配不上 */\n@font-face {\n font-family: "be-iconfont-bilifont";\n src: url("//s1.hdslb.com/bfs/seed/jinkela/header-v2/asserts/iconfont.ttf") format("truetype");\n}\n@font-face {\n font-family: "be-iconfont-vanfont";\n src: url("//s1.hdslb.com/bfs/static/jinkela/video/asserts/iconfont.6401a86.ttf") format("truetype");\n}\n.be-icon {\n color: inherit;\n fill: inherit;\n stroke: inherit;\n font-size: var(--size);\n font-style: normal;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--size);\n height: var(--size);\n}\n.be-icon.be-iconfont-logo::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e725";\n}\n.be-icon.be-iconfont-profile::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e722";\n}\n.be-icon.be-iconfont-posts::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-wallet::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71f";\n}\n.be-icon.be-iconfont-live-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e720";\n}\n.be-icon.be-iconfont-order-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71e";\n}\n.be-icon.be-iconfont-course::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e60e";\n}\n.be-icon.be-iconfont-logout::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e721";\n}\n.be-icon.be-iconfont-ok::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e749";\n}\n.be-icon.be-iconfont-cancel::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e74a";\n}\n.be-icon.be-iconfont-bind-phone::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e733";\n}\n.be-icon.be-iconfont-bind-email::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e735";\n}\n.be-icon.be-iconfont-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e734";\n}\n.be-icon.be-iconfont-b-coin::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-b-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-activity::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-feeds::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-message::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e731";\n}\n.be-icon.be-iconfont-favorites-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e730";\n}\n.be-icon.be-iconfont-history::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72f";\n}\n.be-icon.be-iconfont-vip::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72e";\n}\n.be-icon.be-iconfont-up-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e741";\n}\n.be-icon.be-iconfont-play-triangle::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e737";\n}\n.be-icon.be-iconfont-refresh::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e73c";\n}\n.be-icon.be-iconfont-eye::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e742";\n}\n.be-icon.be-iconfont-coin::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e4";\n}\n.be-icon.be-iconfont-favorites::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e1";\n}\n.be-icon.be-iconfont-play::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e6";\n}\n.be-icon.be-iconfont-danmaku::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e7";\n}\n.be-icon.be-iconfont-like::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e0";\n}\n.be-icon.be-iconfont-like-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63a";\n}\n.be-icon.be-iconfont-dislike-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e638";\n}\n.be-icon.be-iconfont-comment-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e639";\n}\n.be-icon.be-iconfont-up::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-left-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f1";\n}\n.be-icon.be-iconfont-right-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f0";\n}\n.be-icon.be-iconfont-up-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ec";\n}\n.be-icon.be-iconfont-down-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6eb";\n}\n.be-icon.be-iconfont-close::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63c";\n}\n.be-icon.be-iconfont-search::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e635";\n}\n.be-icon.be-iconfont-upload::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e634";\n}\n.be-icon.be-iconfont-lv0::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cb";\n color: #9a9a9a;\n}\nbody.dark .be-icon.be-iconfont-lv0::before {\n color: #777;\n}\n.be-icon.be-iconfont-lv1::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cc";\n color: #646464;\n}\nbody.dark .be-icon.be-iconfont-lv1::before {\n color: #ddd;\n}\n.be-icon.be-iconfont-lv2::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cd";\n color: #1bc861;\n}\n.be-icon.be-iconfont-lv3::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ce";\n color: #22baea;\n}\n.be-icon.be-iconfont-lv4::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cf";\n color: #eaa722;\n}\n.be-icon.be-iconfont-lv5::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d0";\n color: #ff7631;\n}\n.be-icon.be-iconfont-lv6::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d1";\n color: #ff3131;\n}\n.be-icon:not(.colored) svg, .be-icon:not(.colored) svg path {\n fill: inherit;\n stroke: inherit;\n stroke-width: 0;\n}\n.be-icon .custom-icon {\n display: flex;\n}\n.be-icon .custom-icon > svg {\n width: var(--size);\n height: var(--size);\n}',""]),e.exports=o},8815:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tippy-box {\n font-size: inherit;\n filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.2));\n}",""]),e.exports=o},8218:e=>{"use strict"; // eslint-disable-next-line func-names e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")}, // eslint-disable-next-line func-names @@ -100,11 +100,11 @@ e=e&&e.__esModule?e.default:e)?e:(/^['"].*['"]$/.test(e)&&( // eslint-disable-next-line no-param-reassign e=e.slice(1,-1)),t.hash&&( // eslint-disable-next-line no-param-reassign -e+=t.hash),/["'() \t\n]/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},7942:(e,t,n)=>{"use strict";function o(e){return Array.isArray?Array.isArray(e):"[object Array]"===l(e)}function i(e){return"string"==typeof e}function r(e){return"number"==typeof e}function a(e){return!0===e||!1===e||function(e){return function(e){return"object"==typeof e}(e)&&null!==e}(e)&&"[object Boolean]"==l(e)}function c(e){return null!=e}function s(e){return!e.trim().length}function l(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}n.d(t,{Z:()=>B});const d=Object.prototype.hasOwnProperty;class m{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach((e=>{let n=f(e);t+=n.weight,this._keys.push(n),this._keyMap[n.id]=n,t+=n.weight})),this._keys.forEach((e=>{e.weight/=t}))}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function f(e){let t=null,n=null,r=null,a=1,c=null;if(i(e)||o(e))r=e,t=u(e),n=p(e);else{if(!d.call(e,"name"))throw new Error("Missing name property in key");const o=e.name;if(r=o,d.call(e,"weight")&&(a=e.weight,a<=0))throw new Error((e=>`Property 'weight' in key '${e}' must be a positive integer`)(o));t=u(o),n=p(o),c=e.getFn}return{path:t,id:n,weight:a,src:r,getFn:c}}function u(e){return o(e)?e:e.split(".")}function p(e){return o(e)?e.join("."):e}var b={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx{if(c(e))if(t[d]){const m=e[t[d]];if(!c(m))return;if(d===t.length-1&&(i(m)||r(m)||a(m)))n.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;let t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(m));else if(o(m)){s=!0;for(let e=0,n=m.length;e{this._keysMap[e.id]=t}))}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,i(this.docs[0])?this.docs.forEach(((e,t)=>{this._addString(e,t)})):this.docs.forEach(((e,t)=>{this._addObject(e,t)})),this.norm.clear())}add(e){const t=this.size();i(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,n=this.size();t{let a=t.getFn?t.getFn(e):this.getFn(e,t.path);if(c(a))if(o(a)){let e=[];const t=[{nestedArrIndex:-1,value:a}];for(;t.length;){const{nestedArrIndex:n,value:r}=t.pop();if(c(r))if(i(r)&&!s(r)){let t={v:r,i:n,n:this.norm.get(r)};e.push(t)}else o(r)&&r.forEach(((e,n)=>{t.push({nestedArrIndex:n,value:e})}))}n.$[r]=e}else if(!s(a)){let e={v:a,n:this.norm.get(a)};n.$[r]=e}})),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function F(e,t,{getFn:n=b.getFn,fieldNormWeight:o=b.fieldNormWeight}={}){const i=new g({getFn:n,fieldNormWeight:o});return i.setKeys(e.map(f)),i.setSources(t),i.create(),i}function v(e,{errors:t=0,currentLocation:n=0,expectedLocation:o=0,distance:i=b.distance,ignoreLocation:r=b.ignoreLocation}={}){const a=t/e.length;if(r)return a;const c=Math.abs(o-n);return i?a+c/i:c?1:a}function w(e,t,n,{location:o=b.location,distance:i=b.distance,threshold:r=b.threshold,findAllMatches:a=b.findAllMatches,minMatchCharLength:c=b.minMatchCharLength,includeMatches:s=b.includeMatches,ignoreLocation:l=b.ignoreLocation}={}){if(t.length>32)throw new Error("Pattern length exceeds max of 32.");const d=t.length,m=e.length,f=Math.max(0,Math.min(o,m));let u=r,p=f;const h=c>1||s,g=h?Array(m):[];let F;for(;(F=e.indexOf(t,p))>-1;){let e=v(t,{currentLocation:F,expectedLocation:f,distance:i,ignoreLocation:l});if(u=Math.min(e,u),p=F+d,h){let e=0;for(;e=s;r-=1){let a=r-1,c=n[e.charAt(a)];if(h&&(g[a]=+!!c),F[r]=(F[r+1]<<1|1)&c,o&&(F[r]|=(w[r+1]|w[r])<<1|1|w[r+1]),F[r]&k&&(y=v(t,{errors:o,currentLocation:a,expectedLocation:f,distance:i,ignoreLocation:l}),y<=u)){if(u=y,p=a,p<=f)break;s=Math.max(1,2*f-p)}}if(v(t,{errors:o+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>u)break;w=F}const C={isMatch:p>=0,score:Math.max(.001,y)};if(h){const e=function(e=[],t=b.minMatchCharLength){let n=[],o=-1,i=-1,r=0;for(let a=e.length;r=t&&n.push([o,i]),o=-1)}return e[r-1]&&r-o>=t&&n.push([o,r-1]),n}(g,c);e.length?s&&(C.indices=e):C.isMatch=!1}return C}function y(e){let t={};for(let n=0,o=e.length;n{this.chunks.push({pattern:e,alphabet:y(e),startIndex:t})},d=this.pattern.length;if(d>32){let e=0;const t=d%32,n=d-t;for(;e{const{isMatch:p,score:b,indices:h}=w(e,t,f,{location:o+u,distance:i,threshold:r,findAllMatches:a,minMatchCharLength:c,includeMatches:n,ignoreLocation:s});p&&(m=!0),d+=b,p&&h&&(l=[...l,...h])}));let f={isMatch:m,score:m?d/this.chunks.length:1};return m&&n&&(f.indices=l),f}}const k=[];function C(e,t){for(let n=0,o=k.length;n{if(!c(e.indices)||!e.indices.length)return;const{indices:n,value:o}=e;let i={indices:n,value:o};e.key&&(i.key=e.key.src),e.idx>-1&&(i.refIndex=e.idx),t.matches.push(i)}))}function E(e,t){t.score=e.score}class B{constructor(e,t={},n){if(this.options={...b,...t},this.options.useExtendedSearch)throw new Error("Extended search is not available");this._keyStore=new m(this.options.keys),this.setCollection(e,n)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof g))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){c(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=(()=>!1)){const t=[];for(let n=0,o=this._docs.length;n{let n=1;e.matches.forEach((({key:e,norm:o,score:i})=>{const r=e?e.weight:null;n*=Math.pow(0===i&&r?Number.EPSILON:i,(r||1)*(t?1:o))})),e.score=n}))}(l,{ignoreFieldNorm:s}),a&&l.sort(c),r(t)&&t>-1&&(l=l.slice(0,t)),function(e,t,{includeMatches:n=b.includeMatches,includeScore:o=b.includeScore}={}){const i=[];return n&&i.push(A),o&&i.push(E),e.map((e=>{const{idx:n}=e,o={item:t[n],refIndex:n};return i.length&&i.forEach((t=>{t(e,o)})),o}))}(l,this._docs,{includeMatches:n,includeScore:o})}_searchStringList(e){const t=C(e,this.options),{records:n}=this._myIndex,o=[];return n.forEach((({v:e,i:n,n:i})=>{if(!c(e))return;const{isMatch:r,score:a,indices:s}=t.searchIn(e);r&&o.push({item:e,idx:n,matches:[{score:a,value:e,norm:i,indices:s}]})})),o}_searchLogical(e){throw new Error("Logical search is not available")}_searchObjectList(e){const t=C(e,this.options),{keys:n,records:o}=this._myIndex,i=[];return o.forEach((({$:e,i:o})=>{if(!c(e))return;let r=[];n.forEach(((n,o)=>{r.push(...this._findMatches({key:n,value:e[o],searcher:t}))})),r.length&&i.push({idx:o,item:e,matches:r})})),i}_findMatches({key:e,value:t,searcher:n}){if(!c(t))return[];let i=[];if(o(t))t.forEach((({v:t,i:o,n:r})=>{if(!c(t))return;const{isMatch:a,score:s,indices:l}=n.searchIn(t);a&&i.push({score:s,key:e,value:t,idx:o,norm:r,indices:l})}));else{const{v:o,n:r}=t,{isMatch:a,score:c,indices:s}=n.searchIn(o);a&&i.push({score:c,key:e,value:o,norm:r,indices:s})}return i}}B.version="6.6.1",B.createIndex=F,B.parseIndex=function(e,{getFn:t=b.getFn,fieldNormWeight:n=b.fieldNormWeight}={}){const{keys:o,records:i}=e,r=new g({getFn:t,fieldNormWeight:n});return r.setKeys(o),r.setIndexRecords(i),r},B.config=b},8254:e=>{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},9896:function(e){e.exports=function(){"use strict";function e(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(o=e[Symbol.iterator]()).next.bind(o)}function r(e){var t={exports:{}};return e(t,t.exports),t.exports}var a=r((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function n(t){e.exports.defaults=t}e.exports={defaults:t(),getDefaults:t,changeDefaults:n}})),c=/[&<>"']/,s=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,d=/[<>"']|&(?!#?\w+;)/g,m={"&":"&","<":"<",">":">",'"':""","'":"'"},f=function(e){return m[e]};function u(e,t){if(t){if(c.test(e))return e.replace(s,f)}else if(l.test(e))return e.replace(d,f);return e}var p=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function b(e){return e.replace(p,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var h=/(^|[^\[])\^/g;function g(e,t){e=e.source||e,t=t||"";var n={replace:function(t,o){return o=(o=o.source||o).replace(h,"$1"),e=e.replace(t,o),n},getRegex:function(){return new RegExp(e,t)}};return n}var F=/[^\w:]/g,v=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function w(e,t,n){if(e){var o;try{o=decodeURIComponent(b(n)).replace(F,"").toLowerCase()}catch(e){return null}if(0===o.indexOf("javascript:")||0===o.indexOf("vbscript:")||0===o.indexOf("data:"))return null}t&&!v.test(n)&&(n=A(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var y={},x=/^[^:]+:\/*[^/]*$/,k=/^([^:]+:)[\s\S]*$/,C=/^([^:]+:\/*[^/]*)[\s\S]*$/;function A(e,t){y[" "+e]||(x.test(e)?y[" "+e]=e+"/":y[" "+e]=D(e,"/",!0));var n=-1===(e=y[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(k,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(C,"$1")+t:e+t}function E(e){for(var t,n,o=1;o=0&&"\\"===n[i];)o=!o;return o?"|":" |"})).split(/ \|/),o=0;if(n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}var M={escape:u,unescape:b,edit:g,cleanUrl:w,resolveUrl:A,noopTest:{exec:function(){}},merge:E,splitCells:B,rtrim:D,findClosingBracket:I,checkSanitizeDeprecation:z,repeatString:S},P=a.defaults,O=M.rtrim,V=M.splitCells,T=M.escape,L=M.findClosingBracket;function j(e,t,n){var o=t.href,i=t.title?T(t.title):null,r=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:o,title:i,text:r}:{type:"image",raw:n,href:o,title:i,text:T(r)}}function R(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var o=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=o.length?e.slice(o.length):e})).join("\n")}var N=function(){function e(e){this.options=e||P}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var o=t[t.length-1];if(o&&"paragraph"===o.type)return{raw:n[0],text:n[0].trimRight()};var i=n[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?i:O(i,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],o=R(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:o}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var o=O(n,"#");this.options.pedantic?n=o.trim():o&&!/ $/.test(o)||(n=o.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var o,i=n.align.length;for(o=0;o ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,o,i,r,a,c,s,l,d=t[0],m=t[2],f=m.length>1,u={type:"list",raw:d,ordered:f,start:f?+m.slice(0,-1):"",loose:!1,items:[]},p=t[0].match(this.rules.block.item),b=!1,h=p.length;i=this.rules.block.listItemStart.exec(p[0]);for(var g=0;gi[1].length:r[1].length>i[0].length||r[1].length>3){p.splice(g,2,p[g]+"\n"+p[g+1]),g--,h--;continue}(!this.options.pedantic||this.options.smartLists?r[2][r[2].length-1]!==m[m.length-1]:f===(1===r[2].length))&&(a=p.slice(g+1).join("\n"),u.raw=u.raw.substring(0,u.raw.length-a.length),g=h-1),i=r}o=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) ?/,"")).indexOf("\n ")&&(o-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+o+"}","gm"),"")),c=b||/\n\n(?!\s*$)/.test(n),g!==h-1&&(b="\n"===n.charAt(n.length-1),c||(c=b)),c&&(u.loose=!0),this.options.gfm&&(l=void 0,(s=/^\[[ xX]\] /.test(n))&&(l=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,""))),u.items.push({type:"list_item",raw:d,task:s,checked:l,loose:c,text:n})}return u}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):T(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var o,i=n.align.length;for(o=0;o/i.test(o[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:o[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):T(o[0]):o[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var o=O(n.slice(0,-1),"\\");if((n.length-o.length)%2==0)return}else{var i=L(t[2],"()");if(i>-1){var r=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,r).trim(),t[3]=""}}var a=t[2],c="";if(this.options.pedantic){var s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);s&&(a=s[1],c=s[3])}else c=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),j(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:c?c.replace(this.rules.inline._escapes,"$1"):c},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var o=(n[2]||n[1]).replace(/\s+/g," ");if(!(o=t[o.toLowerCase()])||!o.href){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return j(n,o,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.strong.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="**"===o[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.strong.middle.exec(t.slice(0,o.index+3)))return{type:"strong",raw:e.slice(0,i[0].length),text:e.slice(2,i[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.em.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="*"===o[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.em.middle.exec(t.slice(0,o.index+2)))return{type:"em",raw:e.slice(0,i[0].length),text:e.slice(1,i[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),o=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return o&&i&&(n=n.substring(1,n.length-1)),n=T(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,o,i=this.rules.inline.autolink.exec(e);if(i)return o="@"===i[2]?"mailto:"+(n=T(this.options.mangle?t(i[1]):i[1])):n=T(i[1]),{type:"link",raw:i[0],text:n,href:o,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var o,i;if("@"===n[2])i="mailto:"+(o=T(this.options.mangle?t(n[0]):n[0]));else{var r;do{r=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(r!==n[0]);o=T(n[0]),i="www."===n[1]?"http://"+o:o}return{type:"link",raw:n[0],text:o,href:i,tokens:[{type:"text",raw:o,text:o}]}}},t.inlineText=function(e,t,n){var o,i=this.rules.inline.text.exec(e);if(i)return o=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):T(i[0]):i[0]:T(this.options.smartypants?n(i[0]):i[0]),{type:"text",raw:i[0],text:o}},e}(),q=M.noopTest,Z=M.edit,U=M.merge,H={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:q,table:q,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};H.def=Z(H.def).replace("label",H._label).replace("title",H._title).getRegex(),H.bullet=/(?:[*+-]|\d{1,9}[.)])/,H.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,H.item=Z(H.item,"gm").replace(/bull/g,H.bullet).getRegex(),H.listItemStart=Z(/^( *)(bull)/).replace("bull",H.bullet).getRegex(),H.list=Z(H.list).replace(/bull/g,H.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+H.def.source+")").getRegex(),H._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",H._comment=/|$)/,H.html=Z(H.html,"i").replace("comment",H._comment).replace("tag",H._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),H.paragraph=Z(H._paragraph).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.blockquote=Z(H.blockquote).replace("paragraph",H.paragraph).getRegex(),H.normal=U({},H),H.gfm=U({},H.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),H.gfm.nptable=Z(H.gfm.nptable).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.gfm.table=Z(H.gfm.table).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.pedantic=U({},H.normal,{html:Z("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",H._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:q,paragraph:Z(H.normal._paragraph).replace("hr",H.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",H.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var W={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:q,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation*\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation*\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:q,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};W.punctuation=Z(W.punctuation).replace(/punctuation/g,W._punctuation).getRegex(),W._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",W._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",W._comment=Z(H._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),W.em.start=Z(W.em.start).replace(/punctuation/g,W._punctuation).getRegex(),W.em.middle=Z(W.em.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.em.endAst=Z(W.em.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.em.endUnd=Z(W.em.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.start=Z(W.strong.start).replace(/punctuation/g,W._punctuation).getRegex(),W.strong.middle=Z(W.strong.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.strong.endAst=Z(W.strong.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.endUnd=Z(W.strong.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.blockSkip=Z(W._blockSkip,"g").getRegex(),W.overlapSkip=Z(W._overlapSkip,"g").getRegex(),W._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,W._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,W._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,W.autolink=Z(W.autolink).replace("scheme",W._scheme).replace("email",W._email).getRegex(),W._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,W.tag=Z(W.tag).replace("comment",W._comment).replace("attribute",W._attribute).getRegex(),W._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,W._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,W._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,W.link=Z(W.link).replace("label",W._label).replace("href",W._href).replace("title",W._title).getRegex(),W.reflink=Z(W.reflink).replace("label",W._label).getRegex(),W.reflinkSearch=Z(W.reflinkSearch,"g").replace("reflink",W.reflink).replace("nolink",W.nolink).getRegex(),W.normal=U({},W),W.pedantic=U({},W.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Z(/^!?\[(label)\]\((.*?)\)/).replace("label",W._label).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",W._label).getRegex()}),W.gfm=U({},W.normal,{escape:Z(W.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),o+="&#"+n+";";return o}var $=function(){function e(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Q,this.options.tokenizer=this.options.tokenizer||new N,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:Y.normal,inline:X.normal};this.options.pedantic?(t.block=Y.pedantic,t.inline=X.pedantic):this.options.gfm&&(t.block=Y.gfm,this.options.breaks?t.inline=X.breaks:t.inline=X.gfm),this.tokenizer.rules=t}e.lex=function(t,n){return new e(n).lex(t)},e.lexInline=function(t,n){return new e(n).inlineTokens(t)};var n=e.prototype;return n.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},n.blockTokens=function(e,t,n){var o,i,r,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(o=this.tokenizer.space(e))e=e.substring(o.raw.length),o.type&&t.push(o);else if(o=this.tokenizer.code(e,t))e=e.substring(o.raw.length),o.type?t.push(o):((a=t[t.length-1]).raw+="\n"+o.raw,a.text+="\n"+o.text);else if(o=this.tokenizer.fences(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.heading(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.nptable(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.hr(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.blockquote(e))e=e.substring(o.raw.length),o.tokens=this.blockTokens(o.text,[],n),t.push(o);else if(o=this.tokenizer.list(e)){for(e=e.substring(o.raw.length),r=o.items.length,i=0;i0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(s));)l.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(s));)s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(a||(c=""),a=!1,i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e,n,o))e=e.substring(i.raw.length),n=i.inLink,o=i.inRawBlock,t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.strong(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.em(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.autolink(e,_))e=e.substring(i.raw.length),t.push(i);else if(n||!(i=this.tokenizer.url(e,_))){if(i=this.tokenizer.inlineText(e,o,J))e=e.substring(i.raw.length),c=i.raw.slice(-1),a=!0,t.push(i);else if(e){var d="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}else e=e.substring(i.raw.length),t.push(i);return t},t(e,null,[{key:"rules",get:function(){return{block:Y,inline:X}}}]),e}(),ee=a.defaults,te=M.cleanUrl,ne=M.escape,oe=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,n){var o=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,o);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",o?'
'+(n?e:ne(e,!0))+"
\n":"
"+(n?e:ne(e,!0))+"
\n"},t.blockquote=function(e){return"
\n"+e+"
\n"},t.html=function(e){return e},t.heading=function(e,t,n,o){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
\n":"
\n"},t.list=function(e,t,n){var o=t?"ol":"ul";return"<"+o+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o='"},t.image=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o=''+n+'":">"},t.text=function(e){return e},e}(),ie=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),re=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,o=0;if(this.seen.hasOwnProperty(n)){o=this.seen[e];do{n=e+"-"+ ++o}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=o,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),ae=a.defaults,ce=M.unescape,se=function(){function e(e){this.options=e||ae,this.options.renderer=this.options.renderer||new oe,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ie,this.slugger=new re}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w="",y=e.length;for(n=0;n0&&"text"===h.tokens[0].type?(h.tokens[0].text=v+" "+h.tokens[0].text,h.tokens[0].tokens&&h.tokens[0].tokens.length>0&&"text"===h.tokens[0].tokens[0].type&&(h.tokens[0].tokens[0].text=v+" "+h.tokens[0].tokens[0].text)):h.tokens.unshift({type:"text",text:v}):b+=v),b+=this.parse(h.tokens,p),d+=this.renderer.listitem(b,F,g);w+=this.renderer.list(d,f,u);continue;case"html":w+=this.renderer.html(m.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(m.tokens));continue;case"text":for(d=m.tokens?this.parseInline(m.tokens):m.text;n+1An error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}}return be.options=be.setOptions=function(e){return le(be.defaults,e),ue(be.defaults),be},be.getDefaults=fe,be.defaults=pe,be.use=function(e){var t=le({},e);if(e.renderer&&function(){var n=be.defaults.renderer||new oe,o=function(t){var o=n[t];n[t]=function(){for(var i=arguments.length,r=new Array(i),a=0;aAn error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}},be.Parser=se,be.parser=se.parse,be.Renderer=oe,be.TextRenderer=ie,be.Lexer=$,be.lexer=$.lex,be.Tokenizer=N,be.Slugger=re,be.parse=be,be}()},7933:(e,t,n)=>{"use strict";var o=n(8254),i=Array.prototype.concat,r=Array.prototype.slice,a=e.exports=function(e){for(var t=[],n=0,a=e.length;n{"use strict";n.r(t),n.d(t,{default:()=>s});var o=n(8332),i=n.n(o),r=n(2080),a=n.n(r),c={insert:"head",singleton:!1};i()(a(),c);const s=a().locals||{}},8332:(e,t,n)=>{"use strict";var o,i=function(){return void 0===o&&( +e+=t.hash),/["'() \t\n]/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},7942:(e,t,n)=>{"use strict";function o(e){return Array.isArray?Array.isArray(e):"[object Array]"===l(e)}function i(e){return"string"==typeof e}function r(e){return"number"==typeof e}function a(e){return!0===e||!1===e||function(e){return function(e){return"object"==typeof e}(e)&&null!==e}(e)&&"[object Boolean]"==l(e)}function c(e){return null!=e}function s(e){return!e.trim().length}function l(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}n.d(t,{Z:()=>B});const d=Object.prototype.hasOwnProperty;class m{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach((e=>{let n=f(e);t+=n.weight,this._keys.push(n),this._keyMap[n.id]=n,t+=n.weight})),this._keys.forEach((e=>{e.weight/=t}))}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function f(e){let t=null,n=null,r=null,a=1,c=null;if(i(e)||o(e))r=e,t=u(e),n=p(e);else{if(!d.call(e,"name"))throw new Error("Missing name property in key");const o=e.name;if(r=o,d.call(e,"weight")&&(a=e.weight,a<=0))throw new Error((e=>`Property 'weight' in key '${e}' must be a positive integer`)(o));t=u(o),n=p(o),c=e.getFn}return{path:t,id:n,weight:a,src:r,getFn:c}}function u(e){return o(e)?e:e.split(".")}function p(e){return o(e)?e.join("."):e}var b={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx{if(c(e))if(t[d]){const m=e[t[d]];if(!c(m))return;if(d===t.length-1&&(i(m)||r(m)||a(m)))n.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;let t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(m));else if(o(m)){s=!0;for(let e=0,n=m.length;e{this._keysMap[e.id]=t}))}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,i(this.docs[0])?this.docs.forEach(((e,t)=>{this._addString(e,t)})):this.docs.forEach(((e,t)=>{this._addObject(e,t)})),this.norm.clear())}add(e){const t=this.size();i(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,n=this.size();t{let a=t.getFn?t.getFn(e):this.getFn(e,t.path);if(c(a))if(o(a)){let e=[];const t=[{nestedArrIndex:-1,value:a}];for(;t.length;){const{nestedArrIndex:n,value:r}=t.pop();if(c(r))if(i(r)&&!s(r)){let t={v:r,i:n,n:this.norm.get(r)};e.push(t)}else o(r)&&r.forEach(((e,n)=>{t.push({nestedArrIndex:n,value:e})}))}n.$[r]=e}else if(!s(a)){let e={v:a,n:this.norm.get(a)};n.$[r]=e}})),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function F(e,t,{getFn:n=b.getFn,fieldNormWeight:o=b.fieldNormWeight}={}){const i=new g({getFn:n,fieldNormWeight:o});return i.setKeys(e.map(f)),i.setSources(t),i.create(),i}function v(e,{errors:t=0,currentLocation:n=0,expectedLocation:o=0,distance:i=b.distance,ignoreLocation:r=b.ignoreLocation}={}){const a=t/e.length;if(r)return a;const c=Math.abs(o-n);return i?a+c/i:c?1:a}function w(e,t,n,{location:o=b.location,distance:i=b.distance,threshold:r=b.threshold,findAllMatches:a=b.findAllMatches,minMatchCharLength:c=b.minMatchCharLength,includeMatches:s=b.includeMatches,ignoreLocation:l=b.ignoreLocation}={}){if(t.length>32)throw new Error("Pattern length exceeds max of 32.");const d=t.length,m=e.length,f=Math.max(0,Math.min(o,m));let u=r,p=f;const h=c>1||s,g=h?Array(m):[];let F;for(;(F=e.indexOf(t,p))>-1;){let e=v(t,{currentLocation:F,expectedLocation:f,distance:i,ignoreLocation:l});if(u=Math.min(e,u),p=F+d,h){let e=0;for(;e=s;r-=1){let a=r-1,c=n[e.charAt(a)];if(h&&(g[a]=+!!c),F[r]=(F[r+1]<<1|1)&c,o&&(F[r]|=(w[r+1]|w[r])<<1|1|w[r+1]),F[r]&k&&(y=v(t,{errors:o,currentLocation:a,expectedLocation:f,distance:i,ignoreLocation:l}),y<=u)){if(u=y,p=a,p<=f)break;s=Math.max(1,2*f-p)}}if(v(t,{errors:o+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>u)break;w=F}const C={isMatch:p>=0,score:Math.max(.001,y)};if(h){const e=function(e=[],t=b.minMatchCharLength){let n=[],o=-1,i=-1,r=0;for(let a=e.length;r=t&&n.push([o,i]),o=-1)}return e[r-1]&&r-o>=t&&n.push([o,r-1]),n}(g,c);e.length?s&&(C.indices=e):C.isMatch=!1}return C}function y(e){let t={};for(let n=0,o=e.length;n{this.chunks.push({pattern:e,alphabet:y(e),startIndex:t})},d=this.pattern.length;if(d>32){let e=0;const t=d%32,n=d-t;for(;e{const{isMatch:p,score:b,indices:h}=w(e,t,f,{location:o+u,distance:i,threshold:r,findAllMatches:a,minMatchCharLength:c,includeMatches:n,ignoreLocation:s});p&&(m=!0),d+=b,p&&h&&(l=[...l,...h])}));let f={isMatch:m,score:m?d/this.chunks.length:1};return m&&n&&(f.indices=l),f}}const k=[];function C(e,t){for(let n=0,o=k.length;n{if(!c(e.indices)||!e.indices.length)return;const{indices:n,value:o}=e;let i={indices:n,value:o};e.key&&(i.key=e.key.src),e.idx>-1&&(i.refIndex=e.idx),t.matches.push(i)}))}function E(e,t){t.score=e.score}class B{constructor(e,t={},n){if(this.options={...b,...t},this.options.useExtendedSearch)throw new Error("Extended search is not available");this._keyStore=new m(this.options.keys),this.setCollection(e,n)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof g))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){c(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=(()=>!1)){const t=[];for(let n=0,o=this._docs.length;n{let n=1;e.matches.forEach((({key:e,norm:o,score:i})=>{const r=e?e.weight:null;n*=Math.pow(0===i&&r?Number.EPSILON:i,(r||1)*(t?1:o))})),e.score=n}))}(l,{ignoreFieldNorm:s}),a&&l.sort(c),r(t)&&t>-1&&(l=l.slice(0,t)),function(e,t,{includeMatches:n=b.includeMatches,includeScore:o=b.includeScore}={}){const i=[];return n&&i.push(A),o&&i.push(E),e.map((e=>{const{idx:n}=e,o={item:t[n],refIndex:n};return i.length&&i.forEach((t=>{t(e,o)})),o}))}(l,this._docs,{includeMatches:n,includeScore:o})}_searchStringList(e){const t=C(e,this.options),{records:n}=this._myIndex,o=[];return n.forEach((({v:e,i:n,n:i})=>{if(!c(e))return;const{isMatch:r,score:a,indices:s}=t.searchIn(e);r&&o.push({item:e,idx:n,matches:[{score:a,value:e,norm:i,indices:s}]})})),o}_searchLogical(e){throw new Error("Logical search is not available")}_searchObjectList(e){const t=C(e,this.options),{keys:n,records:o}=this._myIndex,i=[];return o.forEach((({$:e,i:o})=>{if(!c(e))return;let r=[];n.forEach(((n,o)=>{r.push(...this._findMatches({key:n,value:e[o],searcher:t}))})),r.length&&i.push({idx:o,item:e,matches:r})})),i}_findMatches({key:e,value:t,searcher:n}){if(!c(t))return[];let i=[];if(o(t))t.forEach((({v:t,i:o,n:r})=>{if(!c(t))return;const{isMatch:a,score:s,indices:l}=n.searchIn(t);a&&i.push({score:s,key:e,value:t,idx:o,norm:r,indices:l})}));else{const{v:o,n:r}=t,{isMatch:a,score:c,indices:s}=n.searchIn(o);a&&i.push({score:c,key:e,value:o,norm:r,indices:s})}return i}}B.version="6.6.1",B.createIndex=F,B.parseIndex=function(e,{getFn:t=b.getFn,fieldNormWeight:n=b.fieldNormWeight}={}){const{keys:o,records:i}=e,r=new g({getFn:t,fieldNormWeight:n});return r.setKeys(o),r.setIndexRecords(i),r},B.config=b},8254:e=>{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},9896:function(e){e.exports=function(){"use strict";function e(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(o=e[Symbol.iterator]()).next.bind(o)}function r(e){var t={exports:{}};return e(t,t.exports),t.exports}var a=r((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function n(t){e.exports.defaults=t}e.exports={defaults:t(),getDefaults:t,changeDefaults:n}})),c=/[&<>"']/,s=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,d=/[<>"']|&(?!#?\w+;)/g,m={"&":"&","<":"<",">":">",'"':""","'":"'"},f=function(e){return m[e]};function u(e,t){if(t){if(c.test(e))return e.replace(s,f)}else if(l.test(e))return e.replace(d,f);return e}var p=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function b(e){return e.replace(p,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var h=/(^|[^\[])\^/g;function g(e,t){e=e.source||e,t=t||"";var n={replace:function(t,o){return o=(o=o.source||o).replace(h,"$1"),e=e.replace(t,o),n},getRegex:function(){return new RegExp(e,t)}};return n}var F=/[^\w:]/g,v=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function w(e,t,n){if(e){var o;try{o=decodeURIComponent(b(n)).replace(F,"").toLowerCase()}catch(e){return null}if(0===o.indexOf("javascript:")||0===o.indexOf("vbscript:")||0===o.indexOf("data:"))return null}t&&!v.test(n)&&(n=A(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var y={},x=/^[^:]+:\/*[^/]*$/,k=/^([^:]+:)[\s\S]*$/,C=/^([^:]+:\/*[^/]*)[\s\S]*$/;function A(e,t){y[" "+e]||(x.test(e)?y[" "+e]=e+"/":y[" "+e]=D(e,"/",!0));var n=-1===(e=y[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(k,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(C,"$1")+t:e+t}function E(e){for(var t,n,o=1;o=0&&"\\"===n[i];)o=!o;return o?"|":" |"})).split(/ \|/),o=0;if(n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}var P={escape:u,unescape:b,edit:g,cleanUrl:w,resolveUrl:A,noopTest:{exec:function(){}},merge:E,splitCells:B,rtrim:D,findClosingBracket:I,checkSanitizeDeprecation:z,repeatString:S},M=a.defaults,O=P.rtrim,V=P.splitCells,T=P.escape,L=P.findClosingBracket;function j(e,t,n){var o=t.href,i=t.title?T(t.title):null,r=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:o,title:i,text:r}:{type:"image",raw:n,href:o,title:i,text:T(r)}}function R(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var o=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=o.length?e.slice(o.length):e})).join("\n")}var N=function(){function e(e){this.options=e||M}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var o=t[t.length-1];if(o&&"paragraph"===o.type)return{raw:n[0],text:n[0].trimRight()};var i=n[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?i:O(i,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],o=R(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:o}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var o=O(n,"#");this.options.pedantic?n=o.trim():o&&!/ $/.test(o)||(n=o.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var o,i=n.align.length;for(o=0;o ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,o,i,r,a,c,s,l,d=t[0],m=t[2],f=m.length>1,u={type:"list",raw:d,ordered:f,start:f?+m.slice(0,-1):"",loose:!1,items:[]},p=t[0].match(this.rules.block.item),b=!1,h=p.length;i=this.rules.block.listItemStart.exec(p[0]);for(var g=0;gi[1].length:r[1].length>i[0].length||r[1].length>3){p.splice(g,2,p[g]+"\n"+p[g+1]),g--,h--;continue}(!this.options.pedantic||this.options.smartLists?r[2][r[2].length-1]!==m[m.length-1]:f===(1===r[2].length))&&(a=p.slice(g+1).join("\n"),u.raw=u.raw.substring(0,u.raw.length-a.length),g=h-1),i=r}o=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) ?/,"")).indexOf("\n ")&&(o-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+o+"}","gm"),"")),c=b||/\n\n(?!\s*$)/.test(n),g!==h-1&&(b="\n"===n.charAt(n.length-1),c||(c=b)),c&&(u.loose=!0),this.options.gfm&&(l=void 0,(s=/^\[[ xX]\] /.test(n))&&(l=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,""))),u.items.push({type:"list_item",raw:d,task:s,checked:l,loose:c,text:n})}return u}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):T(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var o,i=n.align.length;for(o=0;o/i.test(o[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:o[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):T(o[0]):o[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var o=O(n.slice(0,-1),"\\");if((n.length-o.length)%2==0)return}else{var i=L(t[2],"()");if(i>-1){var r=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,r).trim(),t[3]=""}}var a=t[2],c="";if(this.options.pedantic){var s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);s&&(a=s[1],c=s[3])}else c=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),j(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:c?c.replace(this.rules.inline._escapes,"$1"):c},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var o=(n[2]||n[1]).replace(/\s+/g," ");if(!(o=t[o.toLowerCase()])||!o.href){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return j(n,o,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.strong.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="**"===o[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.strong.middle.exec(t.slice(0,o.index+3)))return{type:"strong",raw:e.slice(0,i[0].length),text:e.slice(2,i[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.em.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="*"===o[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.em.middle.exec(t.slice(0,o.index+2)))return{type:"em",raw:e.slice(0,i[0].length),text:e.slice(1,i[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),o=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return o&&i&&(n=n.substring(1,n.length-1)),n=T(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,o,i=this.rules.inline.autolink.exec(e);if(i)return o="@"===i[2]?"mailto:"+(n=T(this.options.mangle?t(i[1]):i[1])):n=T(i[1]),{type:"link",raw:i[0],text:n,href:o,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var o,i;if("@"===n[2])i="mailto:"+(o=T(this.options.mangle?t(n[0]):n[0]));else{var r;do{r=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(r!==n[0]);o=T(n[0]),i="www."===n[1]?"http://"+o:o}return{type:"link",raw:n[0],text:o,href:i,tokens:[{type:"text",raw:o,text:o}]}}},t.inlineText=function(e,t,n){var o,i=this.rules.inline.text.exec(e);if(i)return o=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):T(i[0]):i[0]:T(this.options.smartypants?n(i[0]):i[0]),{type:"text",raw:i[0],text:o}},e}(),q=P.noopTest,Z=P.edit,U=P.merge,H={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:q,table:q,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};H.def=Z(H.def).replace("label",H._label).replace("title",H._title).getRegex(),H.bullet=/(?:[*+-]|\d{1,9}[.)])/,H.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,H.item=Z(H.item,"gm").replace(/bull/g,H.bullet).getRegex(),H.listItemStart=Z(/^( *)(bull)/).replace("bull",H.bullet).getRegex(),H.list=Z(H.list).replace(/bull/g,H.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+H.def.source+")").getRegex(),H._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",H._comment=/|$)/,H.html=Z(H.html,"i").replace("comment",H._comment).replace("tag",H._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),H.paragraph=Z(H._paragraph).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.blockquote=Z(H.blockquote).replace("paragraph",H.paragraph).getRegex(),H.normal=U({},H),H.gfm=U({},H.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),H.gfm.nptable=Z(H.gfm.nptable).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.gfm.table=Z(H.gfm.table).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.pedantic=U({},H.normal,{html:Z("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",H._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:q,paragraph:Z(H.normal._paragraph).replace("hr",H.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",H.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var W={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:q,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation*\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation*\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:q,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};W.punctuation=Z(W.punctuation).replace(/punctuation/g,W._punctuation).getRegex(),W._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",W._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",W._comment=Z(H._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),W.em.start=Z(W.em.start).replace(/punctuation/g,W._punctuation).getRegex(),W.em.middle=Z(W.em.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.em.endAst=Z(W.em.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.em.endUnd=Z(W.em.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.start=Z(W.strong.start).replace(/punctuation/g,W._punctuation).getRegex(),W.strong.middle=Z(W.strong.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.strong.endAst=Z(W.strong.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.endUnd=Z(W.strong.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.blockSkip=Z(W._blockSkip,"g").getRegex(),W.overlapSkip=Z(W._overlapSkip,"g").getRegex(),W._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,W._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,W._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,W.autolink=Z(W.autolink).replace("scheme",W._scheme).replace("email",W._email).getRegex(),W._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,W.tag=Z(W.tag).replace("comment",W._comment).replace("attribute",W._attribute).getRegex(),W._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,W._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,W._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,W.link=Z(W.link).replace("label",W._label).replace("href",W._href).replace("title",W._title).getRegex(),W.reflink=Z(W.reflink).replace("label",W._label).getRegex(),W.reflinkSearch=Z(W.reflinkSearch,"g").replace("reflink",W.reflink).replace("nolink",W.nolink).getRegex(),W.normal=U({},W),W.pedantic=U({},W.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Z(/^!?\[(label)\]\((.*?)\)/).replace("label",W._label).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",W._label).getRegex()}),W.gfm=U({},W.normal,{escape:Z(W.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),o+="&#"+n+";";return o}var $=function(){function e(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Q,this.options.tokenizer=this.options.tokenizer||new N,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:Y.normal,inline:X.normal};this.options.pedantic?(t.block=Y.pedantic,t.inline=X.pedantic):this.options.gfm&&(t.block=Y.gfm,this.options.breaks?t.inline=X.breaks:t.inline=X.gfm),this.tokenizer.rules=t}e.lex=function(t,n){return new e(n).lex(t)},e.lexInline=function(t,n){return new e(n).inlineTokens(t)};var n=e.prototype;return n.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},n.blockTokens=function(e,t,n){var o,i,r,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(o=this.tokenizer.space(e))e=e.substring(o.raw.length),o.type&&t.push(o);else if(o=this.tokenizer.code(e,t))e=e.substring(o.raw.length),o.type?t.push(o):((a=t[t.length-1]).raw+="\n"+o.raw,a.text+="\n"+o.text);else if(o=this.tokenizer.fences(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.heading(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.nptable(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.hr(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.blockquote(e))e=e.substring(o.raw.length),o.tokens=this.blockTokens(o.text,[],n),t.push(o);else if(o=this.tokenizer.list(e)){for(e=e.substring(o.raw.length),r=o.items.length,i=0;i0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(s));)l.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(s));)s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(a||(c=""),a=!1,i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e,n,o))e=e.substring(i.raw.length),n=i.inLink,o=i.inRawBlock,t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.strong(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.em(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.autolink(e,_))e=e.substring(i.raw.length),t.push(i);else if(n||!(i=this.tokenizer.url(e,_))){if(i=this.tokenizer.inlineText(e,o,J))e=e.substring(i.raw.length),c=i.raw.slice(-1),a=!0,t.push(i);else if(e){var d="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}else e=e.substring(i.raw.length),t.push(i);return t},t(e,null,[{key:"rules",get:function(){return{block:Y,inline:X}}}]),e}(),ee=a.defaults,te=P.cleanUrl,ne=P.escape,oe=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,n){var o=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,o);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",o?'
    '+(n?e:ne(e,!0))+"
    \n":"
    "+(n?e:ne(e,!0))+"
    \n"},t.blockquote=function(e){return"
    \n"+e+"
    \n"},t.html=function(e){return e},t.heading=function(e,t,n,o){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},t.list=function(e,t,n){var o=t?"ol":"ul";return"<"+o+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o='
    "},t.image=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o=''+n+'":">"},t.text=function(e){return e},e}(),ie=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),re=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,o=0;if(this.seen.hasOwnProperty(n)){o=this.seen[e];do{n=e+"-"+ ++o}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=o,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),ae=a.defaults,ce=P.unescape,se=function(){function e(e){this.options=e||ae,this.options.renderer=this.options.renderer||new oe,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ie,this.slugger=new re}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w="",y=e.length;for(n=0;n0&&"text"===h.tokens[0].type?(h.tokens[0].text=v+" "+h.tokens[0].text,h.tokens[0].tokens&&h.tokens[0].tokens.length>0&&"text"===h.tokens[0].tokens[0].type&&(h.tokens[0].tokens[0].text=v+" "+h.tokens[0].tokens[0].text)):h.tokens.unshift({type:"text",text:v}):b+=v),b+=this.parse(h.tokens,p),d+=this.renderer.listitem(b,F,g);w+=this.renderer.list(d,f,u);continue;case"html":w+=this.renderer.html(m.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(m.tokens));continue;case"text":for(d=m.tokens?this.parseInline(m.tokens):m.text;n+1An error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}}return be.options=be.setOptions=function(e){return le(be.defaults,e),ue(be.defaults),be},be.getDefaults=fe,be.defaults=pe,be.use=function(e){var t=le({},e);if(e.renderer&&function(){var n=be.defaults.renderer||new oe,o=function(t){var o=n[t];n[t]=function(){for(var i=arguments.length,r=new Array(i),a=0;aAn error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}},be.Parser=se,be.parser=se.parse,be.Renderer=oe,be.TextRenderer=ie,be.Lexer=$,be.lexer=$.lex,be.Tokenizer=N,be.Slugger=re,be.parse=be,be}()},7933:(e,t,n)=>{"use strict";var o=n(8254),i=Array.prototype.concat,r=Array.prototype.slice,a=e.exports=function(e){for(var t=[],n=0,a=e.length;n{"use strict";n.r(t),n.d(t,{default:()=>s});var o=n(8332),i=n.n(o),r=n(2080),a=n.n(r),c={insert:"head",singleton:!1};i()(a(),c);const s=a().locals||{}},8332:(e,t,n)=>{"use strict";var o,i=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function c(e){for(var t=-1,n=0;n{var o=n(6292);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},813:(e,t,n)=>{var o=n(8815);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},3861:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"switch-options",class:{"small-size":e.smallSize,grid:!e.popupMode}},[e.popupMode?[t("VButton",{ref:"button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[t("VIcon",{staticClass:"switch-icon",attrs:{icon:"mdi-checkbox-marked-circle-outline",size:e.smallSize?16:22}}),e._v("\n "+e._s(e.options.optionDisplayName)+"\n ")],1),e._v(" "),t("VPopup",{staticClass:"switch-options-popup widgets-popup",attrs:{"trigger-element":e.$refs.button,"esc-close":"","auto-destroy":""},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]:[t("div",{staticClass:"switch-options-grid"},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]],2)};o._withStripped=!0;var i=n(2570),r=n(5067);const a=Vue.extend({name:"SwitchOptions",components:{VPopup:i.VPopup,VButton:i.VButton,VIcon:i.VIcon,CheckBox:i.CheckBox,RadioButton:i.RadioButton},props:{options:{type:Object,required:!0},smallSize:{type:Boolean,default:!1},popupMode:{type:Boolean,default:!0}},data(){const{componentName:e}=this.options;return{popupOpen:!1,componentOptions:(0,r.getComponentSettings)(e).options}},computed:{mergedSwitchProps(){return{checkedIcon:"mdi-eye-off-outline",notCheckedIcon:"mdi-eye-outline",...this.options.switchProps}}},watch:{options(){this.updateColumnsCount()}},mounted(){this.updateColumnsCount()},methods:{updateColumnsCount(){const e=this.$el,t=Math.ceil(Object.keys(this.options.switches).length/12);e.style.setProperty("--columns",t.toString())},isDim(e){return"checked"===this.options.dimAt||void 0===this.options.dimAt?this.componentOptions[`switch-${e}`]:"notChecked"===this.options.dimAt&&!this.componentOptions[`switch-${e}`]}}});var c=n(8332),s=n.n(c),l=n(2119),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},8712:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{staticClass:"check-all-updates",attrs:{disabled:e.disabled},on:{click:function(t){return e.checkUpdates()}}},[t("VIcon",{attrs:{size:16,icon:"mdi-cloud-sync-outline"}}),e._v("\n 立即检查所有更新\n")],1)};o._withStripped=!0;var i=n(3823),r=n(2570),a=n(3846);const c=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon},data:()=>({disabled:!1}),methods:{async checkUpdates(){try{this.disabled=!0;const e=i.Toast.info("正在检查更新...","检查所有更新");await(0,a.forceCheckUpdateAndReload)(),e.close()}finally{this.disabled=!1}}}});var s=n(8332),l=n.n(s),d=n(2701),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"76652ef2",null).exports},8030:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"bisector-dialog-content-container"},[t("div",{staticClass:"bisector-dialog-content-text"},[e._v("\n 组件二等分进行中,预计剩余\n "),t("b",{staticStyle:{color:"var(--theme-color)"}},[e._v(e._s(e.rouge)+" ")]),e._v("轮次,请确认当前情况:\n ")]),e._v(" "),t("div",{staticClass:"bisector-dialog-button-group"},[t("VButton",{on:{click:e.onGood}},[e._v("正常")]),e._v(" "),t("VButton",{on:{click:e.onBad}},[e._v("不正常")]),e._v(" "),t("VButton",{attrs:{type:"primary"},on:{click:e.onAbort}},[e._v("终止")])],1),e._v(" "),t("div",{staticClass:"bisector-dialog-content-text weak"},[e._v("\n *可以点击×号关闭对话框,刷新页面后,会再次询问\n ")])])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(2570);const c=r().extend({components:{VButton:a.VButton},props:{rouge:{type:Number,required:!0},onAbort:{type:Function,default:none},onGood:{type:Function,default:none},onBad:{type:Function,default:none}}});var s=n(8332),l=n.n(s),d=n(6538),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"31cf1990",null).exports},3346:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",[e._v("\n 组件二等分\n "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1)])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(2570);const c=r().extend({components:{VIcon:a.VIcon},data:()=>({peek:!1}),watch:{peek(e){this.$el.closest(".be-dialog").style.opacity=e?"0.1":"1"}}});var s=n(8332),l=n.n(s),d=n(8335),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"386ddf8e",null).exports},7147:(e,t,n)=>{"use strict";n.d(t,{Z:()=>z});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"launch-bar"},[t("div",{staticClass:"input-area"},[t("div",{staticClass:"launch-bar-form"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.keyword,expression:"keyword"}],ref:"input",staticClass:"input",attrs:{type:"text",autocomplete:"off",placeholder:e.recommended.word},domProps:{value:e.keyword},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.stopPropagation(),e.handleEnter.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.stopPropagation(),e.handleUp.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.stopPropagation(),e.handleDown.apply(null,arguments))}],input:function(t){t.target.composing||(e.keyword=t.target.value)}}}),e._v(" "),t("button",{staticClass:"submit",attrs:{title:"执行",tabindex:"-1"},on:{click:e.handleEnter}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1)])]),e._v(" "),t("div",{ref:"list",staticClass:"launch-bar-suggest-list"},[e.isHistory?t("div",{staticClass:"launch-bar-history-list"},[0===e.actions.length?t("div",{staticClass:"history-empty suggest-item disabled",attrs:{tabindex:"0"}},[e._v("\n 暂无搜索历史\n ")]):e._e(),e._v(" "),e._l(e.actions,(function(n,o){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem(t,o)},"next-item":function(t){return e.nextItem(t,o)},"delete-item":function(t){return e.onDeleteItem(t,o)},action:function(t){o===e.actions.length-1&&e.onClearHistory(),e.onAction(n)}}})}))],2):e._e(),e._v(" "),e.isHistory?e._e():t("div",{staticClass:"launch-bar-action-list"},[0===e.actions.length&&e.noActions?t("VEmpty",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}):e._e(),e._v(" "),0!==e.actions.length||e.noActions?e._e():t("VLoading",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}),e._v(" "),e._l(e.actions,(function(n,o){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem(t,o)},"next-item":function(t){return e.nextItem(t,o)},"delete-item":function(t){return e.onDeleteItem(t,o)},action:function(t){return e.onAction(n)}}})}))],2)])])};o._withStripped=!0;var i=n(7942),r=n(2570),a=n(4909),c=n(3311),s=n(8612),l=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-launch-bar-action-item suggest-item",attrs:{tabindex:"0",title:e.action.displayName||e.action.name,"data-indexer":e.action.indexer},on:{click:function(t){return t.target!==t.currentTarget?null:e.performAction(t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),e.performAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:t.shiftKey?(t.preventDefault(),t.stopPropagation(),e.performDelete(t)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("previous-item",t.currentTarget))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("next-item",t.currentTarget))}]}},[t("div",{staticClass:"suggest-item-content"},[e.action.icon?t("div",{staticClass:"suggest-item-icon",on:{click:function(t){return e.performAction(t)}}},[t("VIcon",{attrs:{icon:e.action.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"suggest-item-title",on:{click:function(t){return e.performAction(t)}}},[e.action.content?t(e.action.content,{tag:"component",staticClass:"suggest-item-name",attrs:{name:e.action.name}}):t("div",{staticClass:"suggest-item-name"},[e._v("\n "+e._s(e.action.displayName||e.action.name)+"\n ")]),e._v(" "),e.action.description?t("div",{staticClass:"suggest-item-description",attrs:{title:e.action.description}},[e._v("\n "+e._s(e.action.description)+"\n ")]):e._e()],1),e._v(" "),e.action.deleteAction?t("div",{staticClass:"suggest-item-delete",attrs:{title:"删除此项"},on:{click:function(t){return e.performDelete(t)}}},[t("VIcon",{attrs:{icon:"cancel",size:18}})],1):e._e()])])};l._withStripped=!0;const d=Vue.extend({components:{VIcon:r.VIcon},props:{action:{type:Object,required:!0}},methods:{async performAction(e){const{currentTarget:t}=e;await this.action.action(),this.$emit("action",t)},async performDelete(e){const{currentTarget:t}=e;this.action.deleteAction&&(await this.action.deleteAction(),this.$emit("delete-item",t))}}});var m=n(8332),f=n.n(m),u=n(1965),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;var h=n(4893);const g=(0,h.Z)(d,l,[],!1,null,null,null).exports;var F=n(7801),v=n(1244),w=n(7187),y=n(8014);const[x]=(0,a.registerAndGetData)(F.LaunchBarActionProviders,[v.searchProvider,w.dr]),k=e=>[...e].sort((0,y.ascendingSort)((e=>e.order??1/0))),C=(e,t)=>t.map((t=>{const n=`${e.name}.${t.name}`;return{...t,key:n,provider:e}}));const[A]=(0,a.registerAndGetData)("launchBar.recommended",{word:"搜索",href:"https://search.bilibili.com/"}),E=Vue.extend({components:{VIcon:r.VIcon,VLoading:r.VLoading,VEmpty:r.VEmpty,ActionItem:g},data:()=>({recommended:A,actions:[],keyword:"",noActions:!1}),computed:{isHistory(){return 0===this.keyword.length}},watch:{keyword(){this.getActions()}},async mounted(){this.getActions(),(0,s.matchUrlPattern)(/^https?:\/\/search\.bilibili\.com/)&&(0,c.select)("#search-keyword, .search-input-el").then((e=>{e&&(this.keyword=e.value,document.addEventListener("change",(e=>{e.target instanceof HTMLInputElement&&"search-keyword"===e.target.id&&(this.keyword=e.target.value)})))}))},methods:{getOnlineActions:lodash.debounce((async function(){const e=(await Promise.all(x.map((async e=>C(e,await e.getActions(this.keyword)))))).flat();if(this.isHistory)return;const t=new i.Z(e,{keys:["indexer","displayName","name","description","key"]}).search(this.keyword);console.log(t),this.actions=k(t.map((e=>e.item)).slice(0,12)),this.noActions=0===this.actions.length}),200),getActions:async function(){if(this.noActions=!1,this.isHistory)return void(this.actions=k(C(w.dr,await w.dr.getActions(this.keyword))));this.actions=[],this.getOnlineActions()},handleSelect(){this.$emit("close"),this.getActions()},async handleEnter(e){if(!e.isComposing){if(this.actions.length>0&&!this.isHistory){const[e]=this.actions;if(!0!==e.explicitSelect)return void e.action()}if(this.keyword)return(0,v.search)(this.keyword),void this.handleSelect();window.open(this.recommended.href,"_blank"),this.handleSelect()}},handleUp(e){e.isComposing||(this.$refs.list.querySelector(".suggest-item:last-child").focus(),e.preventDefault())},handleDown(e){e.isComposing||(this.$refs.list.querySelector(".suggest-item").focus(),e.preventDefault())},previousItem(e,t){0===t?this.focus():e.previousElementSibling.focus()},nextItem(e,t){t!==this.actions.length-1?e.nextElementSibling.focus():this.focus()},search:v.search,onDeleteItem(e,t){this.previousItem(e,t),this.getActions()},onClearHistory(){this.focus(),this.getActions()},onAction(){this.handleSelect()},focus(){this.$refs.input.focus()}}});var B=n(6379),D=n.n(B),I={insert:"head",singleton:!1};f()(D(),I);D().locals;const z=(0,h.Z)(E,o,[],!1,null,null,null).exports},6991:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"release-content"},[t("div",{staticClass:"release-content-markdown",domProps:{innerHTML:e._s(e.content)}}),e._v(" "),t("div",{staticClass:"release-content-actions"},[t("VButton",{on:{click:function(t){return e.$emit("dialog-close")}}},[e._v(" 取消 ")]),e._v(" "),e.detailsLink?t("a",{attrs:{href:e.detailsLink,target:"_blank"}},[t("VButton",[e._v(" 查看详情 ")])],1):e._e(),e._v(" "),e.updateUrl?t("a",{attrs:{href:e.updateUrl,target:"_blank"}},[t("VButton",{attrs:{type:"primary"}},[e._v(" 安装 ")])],1):e._e()],1)])};o._withStripped=!0;var i=n(7274),r=n(2570);const a=`https://github.com/${i.defaultOwner}/Bilibili-Evolved/releases`,c=Vue.extend({components:{VButton:r.VButton},props:{content:{type:String,default:""},updateUrl:{type:String,default:""}},data:()=>({detailsLink:a})});var s=n(8332),l=n.n(s),d=n(4396),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},6904:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-description",domProps:{innerHTML:e._s(e.html)}})};o._withStripped=!0;var i=n(5067),r=n(6080);const a=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,i.getComponentSettings)(this.componentData),html:""}},async created(){this.html=await(0,r.getDescriptionHTML)(this.componentData)}});var c=n(8332),s=n.n(c),l=n(1301),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},5974:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"be-settings"},[t("div",{staticClass:"sidebar"},[t("div",{ref:"widgetsIcon",class:{open:e.widgetsOpened},attrs:{title:"功能"},on:{click:[function(t){return t.shiftKey?e.theWorld.apply(null,arguments):null},function(t){if(t.ctrlKey||t.shiftKey||t.altKey||t.metaKey)return null;e.widgetsOpened=!e.widgetsOpened}],mouseover:function(t){return e.loadPanel("widgetsPanelPopup")}}},[t("VIcon",{attrs:{icon:"widgets",size:26}})],1),e._v(" "),t("div",{ref:"settingsIcon",class:{open:e.settingsOpened},attrs:{title:"设置"},on:{click:function(t){e.settingsOpened=!e.settingsOpened},mouseover:function(t){return e.loadPanel("settingsPanelPopup")}}},[t("VIcon",{attrs:{icon:"settings-outline",size:26}})],1)]),e._v(" "),t("VPopup",{ref:"widgetsPanelPopup",staticClass:"widgets-panel-popup",attrs:{"trigger-element":e.$refs.widgetsIcon,fixed:!0},model:{value:e.widgetsOpened,callback:function(t){e.widgetsOpened=t},expression:"widgetsOpened"}},[t("WidgetsPanel")],1),e._v(" "),t("VPopup",{ref:"settingsPanelPopup",staticClass:"settings-panel-popup",attrs:{"trigger-element":e.$refs.settingsIcon,"auto-close-predicate":e.settingsPanelClosePredicate,fixed:!0},model:{value:e.settingsOpened,callback:function(t){e.settingsOpened=t},expression:"settingsOpened"}},[t("SettingsPanel",{on:{close:function(t){e.settingsOpened=!1}}})],1)],1)};o._withStripped=!0;var i=n(2570),r=n(4435);const a={name:"SettingsContainer",components:{VPopup:i.VPopup,VIcon:i.VIcon,SettingsPanel:()=>Promise.resolve().then(n.bind(n,2467)).then((e=>e.default)),WidgetsPanel:()=>Promise.resolve().then(n.bind(n,545)).then((e=>e.default))},data:()=>({settingsOpened:!1,widgetsOpened:!1}),mounted(){GM_registerMenuCommand("功能",(()=>{this.loadPanel("widgetsPanelPopup"),this.widgetsOpened=!0,this.settingsOpened=!1})),GM_registerMenuCommand("设置",(()=>{this.loadPanel("settingsPanelPopup"),this.widgetsOpened=!1,this.settingsOpened=!0}))},methods:{theWorld(){r.externalApis.theWorld(0)},settingsPanelClosePredicate:e=>!dqa(".be-settings-extra-options").some((t=>t===e.target||t.contains(e.target))),loadPanel(e){const t=this.$refs[e];t&&((t?.loaded??1)||(t.loaded=!0))}}};var c=n(8332),s=n.n(c),l=n(2733),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},2467:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Ae});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"settings-panel",class:{collapsed:e.collapsed,peek:e.peek}},[t("div",{staticClass:"settings-panel-header"},[t("VIcon",{attrs:{icon:"settings-outline"}}),e._v(" "),t("div",{staticClass:"title"},[e._v("设置")]),e._v(" "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1),e._v(" "),t("div",{staticClass:"close",on:{click:function(t){return e.$emit("close")}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1),e._v(" "),t("div",{staticClass:"settings-panel-content"},[t("div",{ref:"sidebarContainer",staticClass:"sidebar"},[t("ComponentTags",{ref:"componentTags",on:{change:function(t){e.searchFilter=t}}})],1),e._v(" "),t("div",{ref:"mainContainer",staticClass:"main"},[t("div",{ref:"componentList",staticClass:"component-list"},[t("div",{staticClass:"settings-panel-search-bar"},[t("TextBox",{staticClass:"settings-panel-search",attrs:{placeholder:"搜索"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}}),e._v(" "),e._l(e.searchBarActions,(function(n){return t("VButton",{key:n.key,attrs:{type:"transparent",icon:"",title:"function"==typeof n.title?n.title(e.searchBarContext):n.title,disabled:!!n.disabled&&n.disabled(e.searchBarContext)}},[t("VIcon",{attrs:{icon:n.icon,size:18},on:{click:function(t){return n.run(e.searchBarContext)}}})],1)}))],2),e._v(" "),e._l(e.renderedComponents,(function(n){return t("div",{key:n.name,on:{"!click":[function(t){return t.ctrlKey?(t.stopPropagation(),e.selectMultipleComponent(n)):null},function(t){return t.shiftKey?(t.stopPropagation(),e.selectMultipleComponent(n,!0)):null}]}},[t("ComponentSettings",{class:{selected:e.isComponentSelected(n.name)},attrs:{"component-data":n,"data-name":n.name},nativeOn:{click:function(t){return e.selectComponent(n)}}})],1)})),e._v(" "),0===e.renderedComponents.length?t("VEmpty"):e._e()],2)]),e._v(" "),t("VPopup",{ref:"detailsPopup",staticClass:"component-detail-panel",attrs:{"trigger-element":e.$refs.componentList,open:e.componentDetailOpen},on:{"popup-change":function(t){!t&&e.closePopper()}}},[e.selectedComponent?t("ComponentDetail",{key:e.selectedComponent.name,attrs:{"component-data":e.selectedComponent},on:{close:function(t){return e.closePopper()}}}):e._e()],1)],1)])};o._withStripped=!0;var i=n(2570),r=n(68),a=n(8612),c=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-settings",class:{virtual:e.virtual}},[e.virtual?e._e():[t("div",{staticClass:"component-settings-row"},[t("TagRing",{attrs:{tags:e.componentData.tags}}),e._v(" "),t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),!1!==e.componentData.configurable?t("SwitchBox",{model:{value:e.settings.enabled,callback:function(t){e.$set(e.settings,"enabled",t)},expression:"settings.enabled"}}):t("VIcon",{staticClass:"details-arrow",attrs:{icon:"right-arrow",size:18}})],1)]],2)};c._withStripped=!0;var s=n(9896),l=n.n(s),d=n(5067),m=n(7136),f=n(714),u=n(2545),p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"tag-ring"},[t("svg",{attrs:{height:e.size,width:e.size}},e._l(e.tags,(function(n,o){return t("circle",{key:n.name,staticClass:"tag-stroke",style:e.getStyle(n,o),attrs:{fill:"transparent","stroke-dasharray":e.circumference+" "+e.circumference,"stroke-width":e.stroke,r:e.radius,cx:e.size/2,cy:e.size/2}})})),0)])};p._withStripped=!0;const b=Vue.extend({props:{tags:{type:Array,required:!0},size:{type:Number,default:18},stroke:{type:Number,default:3}},data(){const e=this.size/2-this.stroke;return{radius:e,circumference:2*e*Math.PI}},methods:{getStyle(e,t){return{strokeDashoffset:t/this.tags.length*this.circumference,stroke:e.color}}}});var h=n(8332),g=n.n(h),F=n(5392),v=n.n(F),w={insert:"head",singleton:!1};g()(v(),w);v().locals;var y=n(4893);const x=(0,y.Z)(b,p,[],!1,null,null,null).exports;var k=n(2504);const C=Vue.extend({components:{SwitchBox:m.Z,TagRing:x,VIcon:f.default},props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,d.getComponentSettings)(this.componentData),virtual:!1}},async mounted(){const e=this.$el,t=(0,a.dq)(".settings-panel-content .main");t?(0,u.visibleInside)(e,t,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.log("settings container not found, virtual scroll will be disabled!")},methods:{markdown:e=>l()(e),descriptionI18n(e){const{description:t,options:n}=e;if(!t){if(n&&Object.keys(n).length>0){return`${Object.keys(n).length}个选项`}return"暂无说明"}return"string"==typeof t?t:t[(0,k.getSelectedLanguage)()]||t["zh-CN"]}}}),A=C;var E=n(2071),B=n.n(E),D={insert:"head",singleton:!1};g()(B(),D);B().locals;const I=(0,y.Z)(A,c,[],!1,null,null,null).exports;var z=n(6316),S=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-detail"},[e.settings?e._e():t("div",{staticClass:"component-not-found"},[e._v("\n 未找到组件'"+e._s(e.componentData.displayName)+"' ("+e._s(e.componentData.name)+"), 可能已被卸载.\n ")]),e._v(" "),e.settings?[t("div",{staticClass:"component-detail-header"},[t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),t("VIcon",{staticClass:"close",attrs:{icon:"close",size:18},on:{click:function(t){return e.$emit("close")}}})],1),e._v(" "),t("div",{staticClass:"component-detail-tags"},e._l(e.componentData.tags,(function(n){return t("div",{key:n.name,staticClass:"tag"},[t("div",{staticClass:"tag-color",style:{backgroundColor:n.color}}),e._v("\n "+e._s(n.displayName)+"\n ")])})),0),e._v(" "),e.componentData.options&&e.generatedOptions.length>0||e.componentData.extraOptions?[t("div",{staticClass:"component-detail-options"},[t("div",{staticClass:"component-detail-options-title"},[e._v("选项")]),e._v(" "),e._l(e.generatedOptions,(function([n,o]){return t("div",{key:n,staticClass:"generated-option"},[t("ComponentOption",{attrs:{name:n,"display-name":o.displayName,option:o,component:e.componentData}})],1)})),e._v(" "),e.componentData.extraOptions?t("div",{staticClass:"extra-option"},[t(e.componentData.extraOptions,{tag:"component",attrs:{"component-data":e.componentData}})],1):e._e(),e._v(" "),e._t("default")],2)]:e._e(),e._v(" "),!e.componentData.options||e.componentData.description?[t("ComponentDescription",{staticClass:"component-detail-description",attrs:{"component-data":e.componentData}})]:e._e(),e._v(" "),t("div",{staticClass:"component-detail-grow"}),e._v(" "),t("div",{staticClass:"component-detail-internal-data"},[e.componentData.commitHash?t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("Commit: "+e._s(e.componentData.commitHash.substring(0,9)))])]):e._e(),e._v(" "),t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("内部名称: "+e._s(e.componentData.name))]),e._v(" "),!1!==e.componentData.configurable&&e.componentActions.length>0?t("MiniToast",{staticClass:"extra-actions-wrapper",attrs:{placement:"bottom",trigger:"click"},scopedSlots:e._u([{key:"toast",fn:function(){return[t("div",{staticClass:"extra-actions-list"},e._l(e.componentActions,(function(n){return t("div",{key:n.name},[n.component?t(n.component,{tag:"component",attrs:{item:n,component:e.componentData}}):t("ComponentAction",{directives:[{name:"show",rawName:"v-show",value:!1!==n.visible,expression:"a.visible !== false"}],staticClass:"extra-action-item",attrs:{item:n,component:e.componentData}})],1)})),0)]},proxy:!0}],null,!1,2977217718)},[t("div",{staticClass:"extra-actions"},[t("VIcon",{attrs:{icon:"mdi-dots-vertical",size:16}})],1)]):e._e()],1)])]:e._e()],2)};S._withStripped=!0;var M=n(6904),P=function(){var e=this,t=e._self._c;return t("div",{staticClass:"component-option",attrs:{"data-type":e.type}},[t("div",{staticClass:"option-name"},[e._v("\n "+e._s(e.displayName)+"\n ")]),e._v(" "),"text"===e.type||"number"===e.type?t("TextBox",{attrs:{"change-on-blur":"",validator:e.option.validator,text:e.value.toString(),placeholder:e.value.toString()},on:{change:function(t){"text"===e.type?e.valueChange(t):e.numberChange(t)}}}):e._e(),e._v(" "),"boolean"===e.type?t("SwitchBox",{attrs:{checked:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"color"===e.type?t("ColorPicker",{attrs:{compact:!0,"popup-offset":-95,color:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"range"===e.type?t("RangeInput",{attrs:{validator:e.option.validator,range:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"image"===e.type?t("ImagePicker",{attrs:{image:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"dropdown"===e.type?t("VDropdown",{attrs:{value:e.value,items:e.getDropdownItems(e.option.dropdownEnum),"key-mapper":e=>e},on:{change:function(t){return e.valueChange(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}],null,!1,3506243887)}):e._e(),e._v(" "),"switch"===e.type?t("SwitchOptions",{attrs:{"small-size":"","popup-mode":!1,options:e.option.defaultValue}}):e._e(),e._v(" "),"slider"===e.type?t("VSlider",e._b({attrs:{value:e.value},on:{change:function(t){return e.debounceValueChange(t)}}},"VSlider",e.option.slider,!1)):e._e(),e._v(" "),"unknown"===e.type?t("div",{staticClass:"unknown-option-type"},[e._v("未知的选项类型")]):e._e()],1)};P._withStripped=!0;function O(e){this.settings.options[this.name]=e,this.value=e}const V={name:"ComponentOption",components:{SwitchOptions:n(3861).default,TextBox:i.TextBox,SwitchBox:i.SwitchBox,ColorPicker:i.ColorPicker,RangeInput:i.RangeInput,VDropdown:i.VDropdown,ImagePicker:i.ImagePicker,VSlider:i.VSlider},props:{name:{type:String,required:!0},displayName:{type:String,default:""},option:{type:Object,required:!0},component:{type:Object,required:!0}},data(){const e=(0,d.getComponentSettings)(this.component);return{settings:e,value:e.options[this.name]}},computed:{type(){const e=this.option,{defaultValue:t}=e;switch(typeof t){case"boolean":return"boolean";case"number":return e.slider?"slider":"number";case"string":return e.color?"color":e.dropdownEnum?"dropdown":"text";case"object":return"start"in t&&"end"in t?"range":"name"in t&&"url"in t?"image":"name"in t&&"switches"in t?"switch":"unknown";default:return"unknown"}}},methods:{getDropdownItems:e=>{if(Array.isArray(e))return e;return Object.entries(e).filter((e=>{let[t]=e;const n=t.charCodeAt(0);return!(n>=48&&n<=57)})).map((e=>{let[,t]=e;return t}))},numberChange(e){const t=this.settings,n=parseFloat(e);Number.isNaN(n)||(t.options[this.name]=n,this.value=n)},debounceValueChange:lodash.debounce(O,200),valueChange:O}};var T=n(1130),L=n.n(T),j={insert:"head",singleton:!1};g()(L(),j);L().locals;const R=(0,y.Z)(V,P,[],!1,null,"730efac0",null).exports;var N=n(5158),q=n(4909),Z=n(4227);const U=[e=>({name:"uninstall",displayName:"卸载",icon:"mdi-trash-can-outline",visible:(0,d.isUserComponent)(e),action:async()=>{const{before:t,after:n}=(0,r.getHook)("userComponents.remove",e);await t(),await(0,Z.uninstallComponent)(e.name),await n()}})],[H]=(0,q.registerAndGetData)("settingsPanel.componentActions",U);var W=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-action",class:{disabled:e.disabled},attrs:{"aria-disabled":e.disabled,title:e.item.title},on:{click:e.handleClick}},[t("VIcon",{attrs:{icon:e.item.icon,size:16}}),e._v("\n "+e._s(e.item.displayName)+"\n")],1)};W._withStripped=!0;const G=Vue.extend({components:{VIcon:i.VIcon},props:{item:{type:Object,required:!0},component:{type:Object,required:!0}},data:()=>({disabled:!1}),methods:{async handleClick(){if(!this.disabled)try{this.disabled=!0,await this.item.action(this.component)}finally{this.disabled=!1}}}});var Q=n(5851),Y=n.n(Q),X={insert:"head",singleton:!1};g()(Y(),X);Y().locals;const K=(0,y.Z)(G,W,[],!1,null,null,null).exports,J=Vue.extend({components:{ComponentDescription:M.Z,ComponentOption:R,ComponentAction:K,VButton:i.VButton,VIcon:i.VIcon,SwitchBox:i.SwitchBox,MiniToast:i.MiniToast},mixins:[N.U],data(){return{virtual:!1,componentActions:H.map((e=>e(this.componentData))).filter((e=>void 0!==e&&!1!==e.visible))}},computed:{generatedOptions(){return Object.entries(this.componentData.options??{}).filter((e=>{let[,t]=e;return!t.hidden}))}},async mounted(){const e=this.$el;(0,u.visible)(e,(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})),await this.$nextTick(),this.$emit("mounted"),console.log(this.componentActions)}});var _=n(2270),$=n.n(_),ee={insert:"head",singleton:!1};g()($(),ee);$().locals;const te=(0,y.Z)(J,S,[],!1,null,null,null).exports;var ne=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-tags-preview"},[t("VPopup",{staticClass:"settings-panel-sub-page",attrs:{lazy:!1,"trigger-element":e.selectedSubPageTrigger},model:{value:e.selectedSubPageOpen,callback:function(t){e.selectedSubPageOpen=t},expression:"selectedSubPageOpen"}},[t("keep-alive",[e.selectedSubPage?t(e.selectedSubPage,{tag:"component"}):e._e()],1)],1),e._v(" "),t("div",{staticClass:"icon-list"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}})],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(e){return t("div",{key:e.name,staticClass:"component-tags-item"},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:e.icon}})],1)}))],2),e._v(" "),t("div",{staticClass:"component-tags"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"tag-count"},[e._v("("+e._s(n.count)+")")])],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",on:{click:function(t){return e.openSubPage(t,n.component)}}},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])],1)}))],2)],1)};ne._withStripped=!0;var oe=n(8014),ie=n(9397);const re=[{name:"userComponentsManage",displayName:"组件",component:()=>Promise.resolve().then(n.bind(n,9658)).then((e=>e.default)),icon:"mdi-cube-scan"},{name:"userPluginsManage",displayName:"插件",component:()=>Promise.resolve().then(n.bind(n,5808)).then((e=>e.default)),icon:"mdi-puzzle-outline"},{name:"customStylesManage",displayName:"样式",component:()=>Promise.resolve().then(n.bind(n,11)).then((e=>e.default)),icon:"mdi-tune"},{name:"about",displayName:"关于",component:()=>Promise.resolve().then(n.bind(n,3768)).then((e=>e.default)),icon:"mdi-information-outline"}],ae=[e=>{let{renderedComponents:t}=e;return{name:"all",displayName:"全部",color:"inherit",icon:"mdi-shape-outline",order:0,count:t.length,filter:e=>e}},e=>{let{renderedComponents:t}=e;const n=[];t.forEach((e=>e.tags.forEach((e=>{n.push({count:0,...e,filter:t=>t.filter((t=>"all"===e.name||t.tags.some((t=>t.name===e.name))))})}))));const o=lodash.countBy(n,(e=>e.name));return lodash.uniqBy(n,(e=>e.name)).map((e=>({...e,count:o[e.name]})))}],[ce]=(0,q.registerAndGetData)("settingsPanel.tagFilters",ae),se=Vue.extend({components:{VIcon:f.default,VPopup:ie.default},data:()=>({tags:[],selectedTagName:"",subPages:re,selectedSubPage:null,selectedSubPageOpen:!1,selectedSubPageTrigger:null}),created(){this.refreshTags(),this.reset()},mounted(){this.selectTag(this.tags[0])},methods:{refreshTags(){const e=z.components.filter((e=>!e.hidden)),t=ce.flatMap((t=>"function"==typeof t?t({components:z.components,renderedComponents:e}):t));this.tags=t.sort((0,oe.ascendingSort)((e=>e.order)))},reset(){this.selectedTagName=this.tags[0].name},selectTag(e){this.selectedTagName=e.name;const{filter:t}=this.tags.find((t=>t.name===e.name));this.$emit("change",t)},async openSubPage(e,t){this.selectedSubPage!==t?(this.selectedSubPage=t,this.selectedSubPageTrigger=e.currentTarget,await this.$nextTick(),this.selectedSubPageOpen=!0):this.selectedSubPageOpen=!this.selectedSubPageOpen}}}),le=se;var de=n(1360),me=n.n(de),fe={insert:"head",singleton:!1};g()(me(),fe);me().locals;const ue=(0,y.Z)(le,ne,[],!1,null,null,null).exports;var pe=n(6080),be=n(3823),he=n(5157);const ge=[{key:"uninstallSelectedComponent",title:"卸载所选组件",icon:"mdi-trash-can-outline",disabled:e=>{let{selectedComponents:t}=e;return 0===t.length},run:e=>{window.confirm(`确定要卸载所选的 ${e.selectedComponents.length} 个组件吗?`)&&(e.selectedComponents.forEach((e=>{let{name:t}=e;(0,he.isBuiltInComponent)(t)?be.Toast.info("内置组件不能卸载","检查更新",3e3):(0,Z.uninstallComponent)(t)})),e.selectedComponents=[])}}],[Fe]=(0,q.registerAndGetData)("settingsPanel.searchBarActions",[...ge]),ve=e=>e,we={name:"SettingsPanel",components:{VIcon:i.VIcon,TextBox:i.TextBox,VPopup:i.VPopup,VButton:i.VButton,VEmpty:i.VEmpty,ComponentSettings:I,ComponentDetail:te,ComponentTags:ue},data:()=>({components:z.components,renderedComponents:z.components.filter((e=>!e.hidden)),selectedComponent:null,selectedComponents:[],componentDetailOpen:!1,collapsed:!1,peek:!1,searchKeyword:"",searchFilter:ve,searchBarActions:Fe}),computed:{isComponentSelected(){return e=>this.selectedComponents.some((t=>t.name===e))},tags(){const e=this.renderedComponents;let t=[];e.forEach((e=>e.tags.forEach((e=>{t.push({count:0,...e})}))));const n=lodash.countBy(t,(e=>e.name));return t=lodash.uniqBy(t,(e=>e.name)),t.forEach((e=>e.count=n[e.name])),t},searchBarContext(){return lodash.pick(this,"components","selectedComponent","selectedComponents","searchKeyword","searchFilter")}},watch:{searchKeyword:lodash.debounce((function(){this.updateRenderedComponents()}),200),searchFilter(){this.searchKeyword="",this.selectedComponents=[],this.updateRenderedComponents()},components(){this.updateRenderedComponents(),this.$refs.componentTags.refreshTags(),this.components.some((e=>e.name===this.selectedComponent?.name))||(this.selectedComponent=null)}},methods:{closePopper(){this.selectedComponent=null,this.selectedComponents=[],this.componentDetailOpen=!1},selectMultipleComponent(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.selectedComponent&&t){const{name:t}=e,{name:n}=this.selectedComponent,o=this.renderedComponents;let i=o.findIndex((e=>e.name===n)),r=o.findIndex((e=>e.name===t));return i>r&&([i,r]=[r,i]),void(this.selectedComponents=o.slice(i,r+1))}const n=this.selectedComponents,o=n.find((t=>t.name===e.name));o?(0,a.deleteValue)(n,(e=>e.name===o.name)):n.push(e)},selectComponent(e){this.selectedComponents=[];const t=(0,r.getHook)("settingsPanel.componentDetail.close"),n=(0,r.getHook)("settingsPanel.componentDetail.open"),o=this.selectedComponent?.name,i=this.componentDetailOpen&&o===e.name;t.before(o),this.closePopper(),t.after(o),i||(n.before(e.name),this.selectedComponents.push(e),this.selectedComponent=e,this.componentDetailOpen=!0,n.after(e.name))},async updateRenderedComponents(){const e=await(async()=>this.searchKeyword?Object.fromEntries(await Promise.all(z.components.map((async e=>[e.name,[e.name,e.displayName,e.tags.map((e=>`${e.name}\n${e.displayName}`)).join("\n"),await(0,pe.getDescriptionText)(e)].join("\n").toLowerCase()])))):{})(),t=z.components.filter((t=>{if(t.hidden)return!1;if(this.searchKeyword){const n=e[t.name];return!!n&&n.includes(this.searchKeyword.toLowerCase())}return!0}));this.renderedComponents=this.searchFilter(t)}}},ye=we;var xe=n(6716),ke=n.n(xe),Ce={insert:"head",singleton:!1};g()(ke(),Ce);ke().locals;const Ae=(0,y.Z)(ye,o,[],!1,null,null,null).exports},545:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"widgets-panel"},[t("div",{staticClass:"widgets-panel-header"},[t("VIcon",{attrs:{icon:"widgets"}}),e._v("功能")],1),e._v(" "),e.loading||0!==e.widgets.length?e._e():t("VEmpty",{staticClass:"widgets-empty"},[t("div",{staticClass:"widgets-empty-content"},[e._v("\n 空空如也哦 = ̄ω ̄="),t("br"),e._v("\n 可点此参考\n "),t("a",{attrs:{href:"https://bilibili-evolved-doc.vercel.app/docs/user/settings",target:"_blank"}},[e._v("\n 用户手册\n ")]),e._v("\n 以安装所需功能\n ")])]),e._v(" "),t("div",{staticClass:"widget-items"},e._l(e.widgets,(function(e){return t(e.component,{key:e.name,tag:"component",staticClass:"widget-item",attrs:{options:e.options}})})),1)],1)};o._withStripped=!0;var i=n(8612),r=n(2570),a=n(4909),c=n(3937);const s=[],l=Vue.extend({components:{VIcon:r.VIcon,VEmpty:r.VEmpty},data:()=>(unsafeWindow.allWidgets=s,{allWidgets:s,widgets:[],loading:!0}),watch:{allWidgets(){this.allWidgets.forEach((async e=>{const t=await(async e=>{if(e.urlExclude&&e.urlExclude.some(i.matchUrlPattern))return!1;if(e.urlInclude&&e.urlInclude.every(lodash.negate(i.matchUrlPattern)))return!1;if(e.condition){const t=e.condition();return!0===t||t instanceof Promise&&!0===await t}return!0})(e);t?this.widgets.push(e):(0,i.deleteValue)(this.widgets,(t=>t.name===e.name))})),console.log("updated widgets",this.widgets)}},created(){(0,a.registerAndGetData)(c.WidgetsPlugin,s),this.$nextTick().then((()=>this.loading=!1))}});var d=n(8332),m=n.n(d),f=n(7056),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},3768:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-about-page"},[t("div",{staticClass:"be-about-page-header"},[t("VIcon",{attrs:{icon:"mdi-information-outline"}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("关于")])],1),e._v(" "),t("div",{staticClass:"be-about-page-content"},[t("div",{staticClass:"script-meta-info"},[t("div",{staticClass:"meta-info-name"},[e._v("\n "+e._s(e.meta.name)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-version"},[e._v("\n "+e._s(e.meta.compilationInfo.versionWithTag)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-description"},[e._v("\n "+e._s(e.meta.description)+"\n ")])]),e._v(" "),e.feedbackSupported?t("div",{staticClass:"script-links"},[t("a",{staticClass:"homepage script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-home-outline",size:20}}),e._v("\n 主页\n ")],1)],1),e._v(" "),t("a",{staticClass:"feedback script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/issues"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-message-text-outline",size:18}}),e._v("\n 反馈\n ")],1)],1),e._v(" "),t("a",{staticClass:"releases script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/releases"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-update",size:20}}),e._v("\n 更新日志\n ")],1)],1),e._v(" "),t("a",{staticClass:"donate script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/donate.md"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-heart-outline",size:18}}),e._v("\n 捐赠\n ")],1)],1)]):e._e(),e._v(" "),t("div",{staticClass:"about-page-actions"},e._l(e.aboutPageActions,(function(n){return t("VButton",{key:n.name,staticClass:"about-page-action",attrs:{disabled:n.disabled},on:{click:function(t){return e.runAction(n,t)}}},[t("VIcon",{attrs:{icon:n.icon,size:n.iconSize||20}}),e._v("\n "+e._s(n.displayName)+"\n ")],1)})),1)])])};o._withStripped=!0;var i=n(2046),r=n(9083),a=n(2570),c=n(5074);const s=(()=>{const e=GM_info.scriptMetaStr.match(/@namespace\s*(.+)/);return!e||!e[1]||!e[1].includes("greasyfork")})(),l=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon},data:()=>({meta:i.meta,aboutPageActions:c.a,feedbackSupported:s}),methods:{formatDateTime:r.formatDateTime,async runAction(e,t){e.disabled=!0;try{await e.run(t)}finally{e.disabled=!1}}}});var d=n(8332),m=n.n(d),f=n(6565),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},9658:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-components-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(6316),r=n(4227),a=n(5067),c=n(68),s=n(2861),l=n(2432);const d={key:"userComponents",icon:"mdi-cube-scan",title:"组件",description:"可以在此处添加或删除组件, 要查看组件详情, 请回到设置面板查看.",list:i.components,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,a.isUserComponent)(e)),async onItemAdd(e,t){const{before:n,after:o}=(0,c.getHook)("userComponents.add",e,t);await n();const{metadata:i,message:a}=await(0,r.installComponent)(e);return await o(i),a}},m=Vue.extend({components:{ManagePanel:s.Z,UserItem:l.Z},data:()=>({config:d}),methods:{getItemConfig:e=>({key:"userComponents",item:e,isUserItem:(0,a.isUserComponent)(e),getSettings:e=>(0,a.getComponentSettings)(e),onItemRemove:async e=>{const{before:t,after:n}=(0,c.getHook)("userComponents.remove",e);await t(),(0,r.uninstallComponent)(e.name),await n()}})}});const f=(0,n(4893).Z)(m,o,[],!1,null,null,null).exports},5808:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-plugins-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(5067),r=n(68),a=n(9094),c=n(2861),s=n(2432);const l={key:"userPlugins",icon:"mdi-puzzle-outline",title:"插件",description:"可以在此处管理插件, 插件能够增强现有组件的功能. 内置插件包括脚本本体包含的插件和组件自带的插件, 组件自带的插件会自动随组件卸载而卸载.",list:a.plugins,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,i.isUserPlugin)(e.name)),async onItemAdd(e,t){const{before:n,after:o}=(0,r.getHook)("userPlugins.add",e,t);await n();const{message:i,metadata:c}=await(0,a.installPlugin)(e);return await o(c),i}},d=Vue.extend({components:{ManagePanel:c.Z,UserItem:s.Z},data:()=>({config:l}),methods:{getItemConfig:e=>({key:"userPlugins",item:e,isUserItem:(0,i.isUserPlugin)(e.name),onItemRemove:async e=>{const{before:t,after:n}=(0,r.getHook)("userPlugins.remove",e);await t(),(0,a.uninstallPlugin)(e.name),await n()}})}});const m=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},11:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-styles-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(68),r=n(473),a=n(2861),c=n(2432);const s={key:"userStyles",icon:"mdi-tune",title:"样式",description:"可以在此处管理自定义样式, 自定义样式能简单修改界面元素以满足您的需求, 对于更复杂的样式, 推荐使用 Stylus 浏览器插件来管理.",list:r.styles,listFilter:(e,t)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase())),async onItemAdd(e,t){const{before:n,after:o}=(0,i.getHook)("userStyles.add",e,t);await n();const{message:a,metadata:c}=await(0,r.installStyle)(e);return await o(c),a}},l=Vue.extend({components:{ManagePanel:a.Z,UserItem:c.Z},data:()=>({config:s}),methods:{getItemConfig:e=>({key:"userStyles",item:e,isUserItem:!0,onItemRemove:async e=>{const{before:t,after:n}=(0,i.getHook)("userStyles.remove",e);await t(),(0,r.uninstallStyle)(e.name),await n()}})}});const d=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},2861:(e,t,n)=>{"use strict";n.d(t,{Z:()=>D});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-panel"},[t("div",{staticClass:"manage-panel-title sub-page-row"},[t("VIcon",{attrs:{icon:e.config.icon}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("\n "+e._s(e.config.title)+"\n ")])],1),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"description-text"},[e._v("\n "+e._s(e.config.description)+"\n ")])]):e._e(),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row separator"}):e._e(),e._v(" "),t("div",{staticClass:"sub-page-row add-item-row"},[t("div",{staticClass:"title-text"},[e._v("添加"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"item-actions"},[t("VButton",{ref:"batchAddButton",on:{click:function(t){return e.showBatchAddPopup()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-download-multiple"}}),e._v("\n 批量\n ")],1),e._v(" "),t("VButton",{on:{click:function(t){return e.browse()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-folder-open-outline"}}),e._v("\n 浏览\n ")],1),e._v(" "),t("OnlineRegistryButton",[t("VIcon",{attrs:{size:18,icon:"mdi-web"}}),e._v("\n 在线\n ")],1)],1),e._v(" "),t("VPopup",{staticClass:"batch-add-popup",attrs:{"trigger-element":e.$refs.batchAddButton},model:{value:e.batchAddShow,callback:function(t){e.batchAddShow=t},expression:"batchAddShow"}},[t("TextArea",{ref:"batchAddTextArea",staticClass:"batch-add-textarea",attrs:{placeholder:"批量粘贴功能链接, 可以混合其他类型的功能 (如合集包)"},model:{value:e.batchUrl,callback:function(t){e.batchUrl=t},expression:"batchUrl"}}),e._v(" "),t("div",{staticClass:"batch-add-actions"},[t("VButton",{on:{click:function(t){e.batchAddShow=!1}}},[t("VIcon",{attrs:{size:12,icon:"close"}}),e._v("\n 取消\n ")],1),e._v(" "),t("VButton",{attrs:{type:"primary",disabled:!e.batchUrl},on:{click:function(t){return e.batchAddItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1)],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("TextBox",{staticClass:"item-url",attrs:{placeholder:"粘贴"+e.config.title+"链接"},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.addItem()}},model:{value:e.url,callback:function(t){e.url=t},expression:"url"}}),e._v(" "),t("VButton",{attrs:{disabled:!e.url},on:{click:function(t){return e.addItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row separator"}),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"title-text"},[e._v("已安装的"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"exclude-built-in"},[e._v("\n 隐藏内置"+e._s(e.config.title)+"\n "),t("SwitchBox",{model:{value:e.excludeBuiltIn,callback:function(t){e.excludeBuiltIn=t},expression:"excludeBuiltIn"}})],1)]),e._v(" "),t("div",{staticClass:"sub-page-row search-item-row"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{staticClass:"list-search",attrs:{placeholder:`在 ${e.filteredList.length} 个${e.config.title}中搜索`},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),e.loaded?e._e():t("div",{staticClass:"sub-page-row"},[t("VLoading",{key:"loading"})],1),e._v(" "),e.loaded?t("div",{staticClass:"manage-item-list"},[0===e.debouncedList.length?t("VEmpty",{key:"empty"}):e._e(),e._v(" "),e._l(e.debouncedList,(function(n){return t("ManageItem",{key:n.name},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)}))],2):e._e()])};o._withStripped=!0;var i=n(9761),r=n(7120),a=n(3823),c=n(4732),s=n(1003),l=n(2570),d=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-item",class:{virtual:e.virtual}},[e.virtual?e._e():e._t("default")],2)};d._withStripped=!0;var m=n(5158);const f=Vue.extend({mixins:[(0,m.B)(".manage-panel .manage-item-list")]});var u=n(8332),p=n.n(u),b=n(2060),h=n.n(b),g={insert:"head",singleton:!1};p()(h(),g);h().locals;var F=n(4893);const v=(0,F.Z)(f,d,[],!1,null,null,null).exports;var w=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{on:{mouseover:function(t){return e.initPopup()},click:function(t){return e.togglePopup()}}},[e._t("default")],2)};w._withStripped=!0;var y=n(304);const x=Vue.extend({components:{VButton:l.VButton},methods:{initPopup:y.initPopup,togglePopup:y.togglePopup}});const k=(0,F.Z)(x,w,[],!1,null,null,null).exports,C=Vue.extend({components:{VIcon:l.VIcon,VButton:l.VButton,TextBox:l.TextBox,VEmpty:l.VEmpty,VLoading:l.VLoading,VPopup:l.VPopup,TextArea:l.TextArea,SwitchBox:l.SwitchBox,ManageItem:v,OnlineRegistryButton:k},props:{config:{type:Object,required:!0}},data:()=>({search:"",url:"",loaded:!1,batchAddShow:!1,batchUrl:"",excludeBuiltIn:!0,debouncedList:[]}),computed:{filteredList(){return this.config.list.filter((e=>this.config.listFilter(e,this.search,this.excludeBuiltIn)))}},watch:{filteredList(){this.loaded=!1,window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}),200)}},mounted(){window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}))},methods:{async browse(){const e=await(0,r.pickFile)({accept:"*.js;*.zip"});if(0===e.length)return;const[t]=e;let n;if(t.name.endsWith(".zip")){const e=await s.JSZipLibrary,o=await e.loadAsync(t),i=Object.values(o.files);if(0===i.length)return void a.Toast.info("不能打开空文件",`添加${this.config.title}`);n=await i[0].async("text")}else n=await t.text();try{a.Toast.info(await(this.config.onItemAdd?.(n,"")),`添加${this.config.title}`)}catch(e){(0,c.logError)(e)}},async showBatchAddPopup(){this.batchAddShow=!this.batchAddShow,this.batchAddShow&&(await this.$nextTick(),this.$refs.batchAddTextArea?.focus())},async addItem(){if(!this.url)return;const e=a.Toast.info("获取中...",`添加${this.config.title}`);try{const t=await(0,i.tryParseZip)(this.url);e.message=await(this.config.onItemAdd?.(t,this.url)),this.url=""}catch(t){console.error(t),e.type=a.ToastType.Error,e.message=t}},async batchAddItem(){if(!this.batchUrl)return;const e=this.batchUrl.split("\n").map((e=>e.trim())).filter((e=>""!==e)),t=a.Toast.info(`获取中... (0/${e.length})`,"批量添加");let n=0;const o=await Promise.allSettled(e.map((async o=>{const{message:r}=await(0,i.installFeature)(o);return n++,t.message=`获取中... (${n}/${e.length})`,r}))),r=o.filter((e=>"fulfilled"===e.status)).length,c=o.filter((e=>"rejected"===e.status)).length;t.message=`安装完成, 成功 ${r} 个, 失败 ${c} 个.`;const s=o.map(((t,n)=>{const o=e[n];return"fulfilled"===t.status?`${t.value} ${o}`:`${t.reason} ${o}`})).join("\n");console.log(s),this.batchUrl=""}}});var A=n(9356),E=n.n(A),B={insert:"head",singleton:!1};p()(E(),B);E().locals;const D=(0,F.Z)(C,o,[],!1,null,null,null).exports},2432:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-item"},[t("div",{staticClass:"user-item-display-name"},[e._v("\n "+e._s(e.config.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"user-item-name"},[e._v("\n "+e._s(e.config.item.name)+"\n ")]),e._v(" "),e.config.isUserItem?t("div",{staticClass:"user-item-line"}):e._e(),e._v(" "),e.config.isUserItem?t("div",{ref:"removeIcon",staticClass:"user-item-remove",on:{dblclick:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:18}}),e._v(" "),t("div",{ref:"removeConfirmTemplate",staticClass:"user-item-remove-confirm"},[e._v("\n 确定要卸载 "+e._s(e.config.item.displayName)+" 吗?\n "),t("VButton",{attrs:{type:"primary"},on:{click:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}}),e._v("\n 确定\n ")],1)],1)],1):e._e()])};o._withStripped=!0;var i=n(3823),r=n(2570),a=n(1589);const c=Vue.extend({components:{VIcon:r.VIcon,VButton:a.default},props:{config:{type:Object,required:!0}},data:()=>({removeConfirm:!1,settings:{}}),mounted(){this.config.getSettings&&(this.settings=this.config.getSettings(this.config.item)),this.config.isUserItem&&i.Toast.mini(this.$refs.removeConfirmTemplate,this.$refs.removeIcon,{trigger:"click",hideOnClick:!0})},methods:{async removeItem(){await this.config.onItemRemove(this.config.item),this.removeConfirm=!1}}});var s=n(8332),l=n.n(s),d=n(4436),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},8979:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-video-control-bar-extend squirtle-block-wrap"},e._l(e.items,(function(n){return t("div",{key:n.name,staticClass:"be-video-control-bar-extend-item bilibili-player-video-btn squirtle-block-wrap bpx-player-ctrl-btn",style:{order:n.order.toString()},attrs:{"data-name":n.name},on:{click:function(e){return n.action(e)}}},[t("button",[t("span",{staticClass:"bp-svgicon"},[t("VIcon",{attrs:{icon:n.icon}})],1)]),e._v(" "),t("div",{staticClass:"be-video-control-tooltip"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)};o._withStripped=!0;var i=n(2570);const r=Vue.extend({components:{VIcon:i.VIcon},props:{items:{type:Array,required:!0}}});var a=n(8332),c=n.n(a),s=n(3520),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},3792:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-mini-toast-wrapper"},[t("div",{ref:"content",staticClass:"be-mini-toast-content"},[e._t("default")],2),e._v(" "),t("div",{ref:"toast",staticClass:"be-mini-toast"},[e._t("toast")],2)])};o._withStripped=!0;var i=n(9945);const r={body:()=>document.body,local:void 0},a=Vue.extend({model:{prop:"show",event:"change"},props:{show:{type:Boolean,default:!1},container:{type:String,default:"local"},placement:{type:String,default:void 0}},data:()=>({toast:null}),watch:{placement(e){e&&this.toast&&(this.toast.placement=e)}},async mounted(){await this.$nextTick();const e=r[this.container];this.toast=(0,i.$)(this.$refs.toast,this.$refs.content,{placement:this.placement,showOnCreate:this.show,trigger:"mouseenter focusin",onHide:()=>{this.$emit("change",!1)},onShow:()=>{this.$emit("change",!0)},appendTo:"function"==typeof e?e():e,...this.$attrs})}});const c=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},5947:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"toast-card visible",class:"toast-"+e.card.type,on:{mouseover:e.stopTimer,mouseout:e.startTimer}},[t("div",{staticClass:"toast-card-border"}),e._v(" "),t("div",{staticClass:"toast-card-header"},[t("h1",{staticClass:"toast-card-title"},[e._v("\n "+e._s(e.card.title)+"\n ")]),e._v(" "),t("div",{staticClass:"toast-card-close",class:{"show-progress":Boolean(e.remainingTime)},attrs:{title:"关闭"},on:{click:function(t){return e.card.close()}}},[t("ProgressRing",{attrs:{size:28,stroke:2,progress:e.progressMax-e.remainingTime,max:e.progressMax}}),e._v(" "),t("VIcon",{attrs:{icon:"close",size:14}})],1)]),e._v(" "),t("div",{staticClass:"toast-card-message",domProps:{innerHTML:e._s(e.card.message)}})])};o._withStripped=!0;var i=n(2570);const r=Vue.extend({components:{VIcon:i.VIcon,ProgressRing:i.ProgressRing},props:{card:{type:Object,required:!0}},data:()=>({progressMax:0,remainingTime:0}),created(){this.readDuration()},methods:{durationTick(){const{closeTime:e}=this.card;e&&(this.remainingTime=e-Number(new Date),this.remainingTime>0&&requestAnimationFrame((()=>this.durationTick())))},readDuration(){const{duration:e,closeTime:t}=this.card;e&&(this.progressMax=t-Number(new Date),this.remainingTime=this.progressMax,requestAnimationFrame((()=>this.durationTick())))},stopTimer(){this.card.clearDuration(),this.progressMax=0,this.remainingTime=0},startTimer(){this.card.setDuration(),this.readDuration()}}});var a=n(8332),c=n.n(a),s=n(6128),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},7136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-switch-box",class:{checked:e.checked,disabled:e.disabled},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.disabled,tabindex:"0"},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])?null:(t.preventDefault(),e.toggle())},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.toggle())}]}},[t("label",[t("input",{ref:"input",attrs:{type:"checkbox",disabled:e.disabled},domProps:{checked:e.checked},on:{change:function(t){return t.stopPropagation(),e.$emit("change",t.target.checked)}}}),e._v(" "),e._m(0)])])};o._withStripped=!0;const i=Vue.extend({name:"SwitchBox",model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},methods:{toggle(){this.disabled||(this.$refs.input.checked=!this.$refs.input.checked,this.$emit("change",this.$refs.input.checked))}}});var r=n(8332),a=n.n(r),c=n(1278),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"bar"},[e("div",{staticClass:"thumb"})])}],!1,null,null,null).exports},2827:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-textbox",class:{linear:e.linear},attrs:{role:"textbox"}},[t("input",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"input",e.$attrs,!1),e.restListeners)),e._v(" "),e.linear?t("div",{staticClass:"linear-bar"}):e._e()])};o._withStripped=!0;var i=n(3448);const r=Vue.extend({name:"TextBox",mixins:[i.t],props:{linear:{type:Boolean,default:!1}}});var a=n(8332),c=n.n(a),s=n(7146),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"d1f779a8",null).exports},1589:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-button",class:{[e.type]:!0,disabled:e.disabled,round:e.round,icon:e.icon},attrs:{role:"button","aria-disabled":e.disabled,tabindex:e.disabled?-1:0},on:{keydown:[function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)},function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)}]}},e.disabled?null:e.$listeners),[t("div",{staticClass:"content-container"},[e._t("default",(function(){return[e._v("Button")]}))],2)])};o._withStripped=!0;const i=Vue.extend({name:"VButton",props:{type:{type:String,default:"light"},round:{type:Boolean,default:!1},icon:{type:Boolean,default:!1}},computed:{disabled(){return Boolean(this.$attrs.disabled)}}});var r=n(8332),a=n.n(r),c=n(3171),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,"18aa9448",null).exports},1803:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-loading"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};o._withStripped=!0;var i=n(4909);const[r]=(0,i.registerAndGetData)("vLoading",{content:"加载中..."}),a=Vue.extend({name:"VLoading",data:()=>({config:r})});var c=n(8332),s=n.n(c),l=n(8199),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},9397:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-popup",class:{open:e.open,fixed:e.fixed,close:!e.open,"closed-style":e.closedStyle}},e.$listeners),[e.loaded?e._t("default"):e._e()],2)};o._withStripped=!0;const i=Vue.extend({name:"VPopup",model:{prop:"open",event:"popup-change"},props:{open:{type:Boolean,required:!1,default:!1},closedStyle:{type:Boolean,required:!1,default:!0},fixed:{type:Boolean,required:!1,default:!1},triggerElement:{required:!1,default:null},lazy:{type:Boolean,required:!1,default:!0},autoClose:{type:Boolean,required:!1,default:!0},autoDestroy:{type:Boolean,required:!1,default:!1},escClose:{type:Boolean,required:!1,default:!1},autoClosePredicate:{type:Function,required:!1,default:null}},data(){return{loaded:!this.lazy}},computed:{trigger(){return null===this.triggerElement?null:"$el"in this.triggerElement?this.triggerElement.$el:this.triggerElement}},watch:{open(){this.lazy&&!this.loaded&&(this.loaded=!0),this.setAutoClose()}},mounted(){const e=this.$el;this.open&&this.setAutoClose(),this.escClose&&e.addEventListener("keydown",(e=>{"Escape"===e.key&&this.$emit("popup-change",!1)})),this.autoDestroy&&e.addEventListener("transitionend",(()=>{this.open||(this.loaded=!1)}))},methods:{openHandler(e){const t=e.target,n=document.querySelector(".toast-card-container");let o=t!==this.trigger&&!this.trigger?.contains(t)&&t!==this.$el&&!this.$el.contains(t)&&!n?.contains(t);this.autoClosePredicate&&(o=o&&this.autoClosePredicate({target:t,element:this.$el,trigger:this.trigger})),o&&this.$emit("popup-change",!1)},setAutoClose(){if(this.autoClose){["mousedown","touchstart"].forEach((e=>{this.open?document.documentElement.addEventListener(e,(e=>this.openHandler(e))):document.documentElement.removeEventListener(e,(e=>this.openHandler(e)))}))}},toggle(){this.$emit("popup-change",!this.open)}}});var r=n(8332),a=n.n(r),c=n(6708),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,null,null).exports},8308:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{ref:"slider",staticClass:"be-slider",attrs:{role:"slider",tabindex:e.focusable?0:-1},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(-1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(1))}]}},[t("div",{ref:"barContainer",staticClass:"bar-container",on:{click:function(t){return e.setByCoord(t.offsetX)}}},[e._t("bar",(function(){return[t("div",{staticClass:"default-bar"})]}))],2),e._v(" "),t("MiniToast",{ref:"thumbContainer",staticClass:"thumb-container",style:{left:e.thumbLeft},attrs:{placement:"top",arrow:!1},scopedSlots:e._u([{key:"toast",fn:function(){return[e._v("\n "+e._s(e.displayFun(e.realValue))+"\n ")]},proxy:!0}])},[e._t("thumb",(function(){return[t("div",{staticClass:"default-thumb"})]}))],2)],1)};o._withStripped=!0;var i=n(3792);const r=Vue.extend({name:"VSlider",components:{MiniToast:i.Z},model:{prop:"value",event:"change"},props:{focusable:{type:Boolean,default:!0},min:{type:Number,default:0},max:{type:Number,default:100},value:{type:Number,default:0},center:{type:Number,default:0},step:{type:Number,default:1},displayFun:{type:Function,default:e=>String(e)}},data:()=>({realValue:0}),computed:{realMax(){return this.valueToRounded(this.max,Math.floor)},realMin(){return this.valueToRounded(this.min,Math.ceil)},valueLength(){const e=this.realMax-this.realMin;return e<0?(console.error("[VSlider] No desirable value between min and max"),0):e},thumbLeft(){if(0===this.valueLength)return 0;return`${(this.realValue-this.realMin)/this.valueLength*100}%`},centerCoord(){return this.valueToLength(this.center-this.realMin)}},watch:{value(e){e!==this.realValue&&this.setByValue(e)},center(){this.setByValue(this.realValue)},min(){this.setByRounded(this.realValue)},max(){this.setByRounded(this.realValue)}},created(){this.setByValue(this.value)},mounted(){this.setupDrag()},methods:{valueToStep(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round)(e/this.step)},valueToStepped(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.valueToStep(e,t)*this.step},lengthToValue(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return this.valueLength*(e/t)},lengthToStep(e){return this.valueToStep(this.lengthToValue(e))},lengthToStepped(e){return this.lengthToStep(e)*this.step},valueToLength(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return 0===this.valueLength?0:t*(e/this.valueLength)},valueToRounded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.center+this.valueToStepped(e-this.center,t)},limitValue(e){return 0===this.valueLength?this.realMin:(ethis.realMax&&(e=this.realMax),e)},offsetByStep(e){this.setByRounded(this.realValue+e*this.step)},setByLimited(e){e!==this.realValue&&(this.realValue=e,this.$emit("change",this.realValue))},setByRounded(e){this.setByLimited(this.limitValue(e))},setByValue(e){this.setByRounded(this.valueToRounded(e))},setByCoord(e){this.setByRounded(this.center+this.lengthToStepped(e-this.centerCoord))},setupDrag(){function e(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const i=e=>{e.preventDefault(),e instanceof MouseEvent||e instanceof unsafeWindow.MouseEvent?n(e.pageX):1===e.touches.length&&n(e.touches[0].pageX)};return e.addEventListener(t,i,{once:o,passive:!1}),()=>e.removeEventListener(t,i)}const t=this.$refs.thumbContainer.$el,n=[{start:"mousedown",move:"mousemove",end:"mouseup"},{start:"touchstart",move:"touchmove",end:"touchend"}];for(const o of n){let n=0,i=0;e(t,o.start,(t=>{this.$emit("start",this.realValue),this.$refs.slider.focus(),n=t,i=this.realValue;const r=e(window,o.move,(e=>{this.setByValue(i+this.lengthToValue(e-n))}));e(window,o.end,(()=>{this.$emit("end",this.realValue),r()}),!0)}))}}}});var a=n(8332),c=n.n(a),s=n(2013),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"94f62aa6",null).exports},714:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("i",e._g(e._b({staticClass:"be-icon",class:e.classes,style:{"--size":e.size+"px"}},"i",e.$attrs,!1),e.$listeners),[e._t("default"),e._v(" "),e.icon in e.$options.static.customIcons?t("div",{staticClass:"custom-icon",domProps:{innerHTML:e._s(e.$options.static.customIcons[e.icon])}}):e._e()],2)};o._withStripped=!0;var i=n(4909);const r=n(5454),a=lodash.fromPairs(r.keys().map((e=>[e.replace(/.*\/([^/]+?)\.svg$/,"$1"),r(e)]))),[c]=(0,i.registerAndGetData)("ui.icons",a),s={customIcons:a},l=Vue.extend({name:"VIcon",props:{icon:{type:String,default:""},size:{type:Number,default:24},colored:{type:Boolean,default:!1}},computed:{classes(){const e=this.$options.static.customIcons,t=this.icon,n=[];return this.colored&&n.push("colored"),""===t||t in e?n:t.startsWith("mdi-")?[...n,"mdi",t]:[...n,`be-iconfont-${t}`]}},beforeCreate(){this.$options.static=s}}),d=l;var m=n(8332),f=n.n(m),u=n(5137),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},4893:(e,t,n)=>{"use strict";function o(e,t,n,o,i,r,a,c){var s,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),a?(s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=s):i&&(s=c?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),s)if(l.functional){l._injectStyles=s;var d=l.render;l.render=function(e,t){return s.call(t),d(e,t)}}else{var m=l.beforeCreate;l.beforeCreate=m?[].concat(m,s):[s]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},5026:(e,t,n)=>{"use strict";const o=Object.freeze({}),i=Array.isArray;function r(e){return null==e}function a(e){return null!=e}function c(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function l(e){return"function"==typeof e}function d(e){return null!==e&&"object"==typeof e}const m=Object.prototype.toString;function f(e){return"[object Object]"===m.call(e)}function u(e){const t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function b(e){return null==e?"":Array.isArray(e)||f(e)&&e.toString===m?JSON.stringify(e,null,2):String(e)}function h(e){const t=parseFloat(e);return isNaN(t)?e:t}function g(e,t){const n=Object.create(null),o=e.split(",");for(let e=0;en[e.toLowerCase()]:e=>n[e]}const F=g("key,ref,slot,slot-scope,is");function v(e,t){const n=e.length;if(n){if(t===e[n-1])return void(e.length=n-1);const o=e.indexOf(t);if(o>-1)return e.splice(o,1)}}const w=Object.prototype.hasOwnProperty;function y(e,t){return w.call(e,t)}function x(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const k=/-(\w)/g,C=x((e=>e.replace(k,((e,t)=>t?t.toUpperCase():"")))),A=x((e=>e.charAt(0).toUpperCase()+e.slice(1))),E=/\B([A-Z])/g,B=x((e=>e.replace(E,"-$1").toLowerCase())),D=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){const o=arguments.length;return o?o>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function I(e,t){t=t||0;let n=e.length-t;const o=new Array(n);for(;n--;)o[n]=e[n+t];return o}function z(e,t){for(const n in t)e[n]=t[n];return e}function S(e){const t={};for(let n=0;n!1,O=e=>e;function V(e,t){if(e===t)return!0;const n=d(e),o=d(t);if(!n||!o)return!n&&!o&&String(e)===String(t);try{const n=Array.isArray(e),o=Array.isArray(t);if(n&&o)return e.length===t.length&&e.every(((e,n)=>V(e,t[n])));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(n||o)return!1;{const n=Object.keys(e),o=Object.keys(t);return n.length===o.length&&n.every((n=>V(e[n],t[n])))}}catch(e){return!1}}function T(e,t){for(let n=0;n0,K=Q&&Q.indexOf("edge/")>0;Q&&Q.indexOf("android");const J=Q&&/iphone|ipad|ipod|ios/.test(Q);Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q);const _=Q&&Q.match(/firefox\/(\d+)/),$={}.watch;let ee,te=!1;if(G)try{const e={};Object.defineProperty(e,"passive",{get(){te=!0}}),window.addEventListener("test-passive",null,e)}catch(o){}const ne=()=>(void 0===ee&&(ee=!G&&void 0!==n.g&&n.g.process&&"server"===n.g.process.env.VUE_ENV),ee),oe=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ie(e){return"function"==typeof e&&/native code/.test(e.toString())}const re="undefined"!=typeof Symbol&&ie(Symbol)&&"undefined"!=typeof Reflect&&ie(Reflect.ownKeys);let ae;ae="undefined"!=typeof Set&&ie(Set)?Set:class{constructor(){this.set=Object.create(null)}has(e){return!0===this.set[e]}add(e){this.set[e]=!0}clear(){this.set=Object.create(null)}};let ce=null;function se(e=null){e||ce&&ce._scope.off(),ce=e,e&&e._scope.on()}class le{constructor(e,t,n,o,i,r,a,c){this.tag=e,this.data=t,this.children=n,this.text=o,this.elm=i,this.ns=void 0,this.context=r,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=c,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}get child(){return this.componentInstance}}const de=(e="")=>{const t=new le;return t.text=e,t.isComment=!0,t};function me(e){return new le(void 0,void 0,void 0,String(e))}function fe(e){const t=new le(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}let ue=0;const pe=[];class be{constructor(){this._pending=!1,this.id=ue++,this.subs=[]}addSub(e){this.subs.push(e)}removeSub(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,pe.push(this))}depend(e){be.target&&be.target.addDep(this)}notify(e){const t=this.subs.filter((e=>e));for(let e=0,n=t.length;e{const e=t[n];if(Le(e))return e.value;{const t=e&&e.__ob__;return t&&t.dep.depend(),e}},set:e=>{const o=t[n];Le(o)&&!Le(e)?o.value=e:t[n]=e}})}function Ne(e,t,n){const o=e[t];if(Le(o))return o;const i={get value(){const o=e[t];return void 0===o?n:o},set value(n){e[t]=n}};return U(i,"__v_isRef",!0),i}function qe(e){return Ze(e,!1)}function Ze(e,t){if(!f(e))return e;if(Te(e))return e;const n=t?"__v_rawToShallowReadonly":"__v_rawToReadonly",o=e[n];if(o)return o;const i=Object.create(Object.getPrototypeOf(e));U(e,n,i),U(i,"__v_isReadonly",!0),U(i,"__v_raw",e),Le(e)&&U(i,"__v_isRef",!0),(t||Ve(e))&&U(i,"__v_isShallow",!0);const r=Object.keys(e);for(let n=0;nTt(e,null,n,d,t);let f,u,p=!1,b=!1;if(Le(e)?(f=()=>e.value,p=Ve(e)):Oe(e)?(f=()=>(e.__ob__.dep.depend(),e),r=!0):i(e)?(b=!0,p=e.some((e=>Oe(e)||Ve(e))),f=()=>e.map((e=>Le(e)?e.value:Oe(e)?cn(e):l(e)?m(e,"watcher getter"):void 0))):f=l(e)?t?()=>m(e,"watcher getter"):()=>{if(!d||!d._isDestroyed)return u&&u(),m(e,"watcher",[h])}:M,t&&r){const e=f;f=()=>cn(e())}let h=e=>{u=g.onStop=()=>{m(e,"watcher cleanup")}};if(ne())return h=M,t?n&&m(t,"watcher callback",[f(),b?[]:void 0,h]):f(),M;const g=new mn(ce,f,M,{lazy:!0});g.noRecurse=!t;let F=b?[]:We;return g.run=()=>{if(g.active)if(t){const e=g.get();(r||p||(b?e.some(((e,t)=>j(e,F[t]))):j(e,F)))&&(u&&u(),m(t,"watcher callback",[e,F===We?void 0:F,h]),F=e)}else g.get()},"sync"===a?g.update=g.run:"post"===a?(g.post=!0,g.update=()=>Mn(g)):g.update=()=>{if(d&&d===ce&&!d._isMounted){const e=d._preWatchers||(d._preWatchers=[]);e.indexOf(g)<0&&e.push(g)}else Mn(g)},t?n?g.run():F=g.get():"post"===a&&d?d.$once("hook:mounted",(()=>g.get())):g.get(),()=>{g.teardown()}}let Qe;class Ye{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Qe,!e&&Qe&&(this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1)}run(e){if(this.active){const t=Qe;try{return Qe=this,e()}finally{Qe=t}}}on(){Qe=this}off(){Qe=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t{const t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),o="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=o?e.slice(1):e,once:n,capture:o,passive:t}}));function Je(e,t){function n(){const e=n.fns;if(!i(e))return Tt(e,null,arguments,t,"v-on handler");{const n=e.slice();for(let e=0;e0&&(l=ot(l,`${t||""}_${o}`),nt(l[0])&&nt(m)&&(n[d]=me(m.text+l[0].text),l.shift()),n.push.apply(n,l)):s(l)?nt(m)?n[d]=me(m.text+l):""!==l&&n.push(me(l)):nt(l)&&nt(m)?n[d]=me(m.text+l.text):(c(e._isVList)&&a(l.tag)&&r(l.key)&&a(t)&&(l.key=`__vlist${t}_${o}__`),n.push(l)));return n}function it(e,t){let n,o,r,c,s=null;if(i(e)||"string"==typeof e)for(s=new Array(e.length),n=0,o=e.length;n0,c=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(c&&i&&i!==o&&s===i.$key&&!a&&!i.$hasNormal)return i;r={};for(const o in t)t[o]&&"$"!==o[0]&&(r[o]=kt(e,n,o,t[o]))}else r={};for(const e in n)e in r||(r[e]=Ct(n,e));return t&&Object.isExtensible(t)&&(t._normalized=r),U(r,"$stable",c),U(r,"$key",s),U(r,"$hasNormal",a),r}function kt(e,t,n,o){const r=function(){const t=ce;se(e);let n=arguments.length?o.apply(null,arguments):o({});n=n&&"object"==typeof n&&!i(n)?[n]:tt(n);const r=n&&n[0];return se(t),n&&(!r||1===n.length&&r.isComment&&!yt(r))?void 0:n};return o.proxy&&Object.defineProperty(t,n,{get:r,enumerable:!0,configurable:!0}),r}function Ct(e,t){return()=>e[t]}function At(e){return{get attrs(){if(!e._attrsProxy){const t=e._attrsProxy={};U(t,"_v_attr_proxy",!0),Et(t,e.$attrs,o,e,"$attrs")}return e._attrsProxy},get listeners(){return e._listenersProxy||Et(e._listenersProxy={},e.$listeners,o,e,"$listeners"),e._listenersProxy},get slots(){return function(e){return e._slotsProxy||Dt(e._slotsProxy={},e.$scopedSlots),e._slotsProxy}(e)},emit:D(e.$emit,e),expose(t){t&&Object.keys(t).forEach((n=>Re(e,t,n)))}}}function Et(e,t,n,o,i){let r=!1;for(const a in t)a in e?t[a]!==n[a]&&(r=!0):(r=!0,Bt(e,a,o,i));for(const n in e)n in t||(r=!0,delete e[n]);return r}function Bt(e,t,n,o){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:()=>n[o][t]})}function Dt(e,t){for(const n in t)e[n]=t[n];for(const n in e)n in t||delete e[n]}function It(){const e=ce;return e._setupContext||(e._setupContext=At(e))}let zt=null;function St(e,t){return(e.__esModule||re&&"Module"===e[Symbol.toStringTag])&&(e=e.default),d(e)?t.extend(e):e}function Mt(e){if(i(e))for(let t=0;tVt(e,o,i+" (Promise/async)"))),r._handled=!0)}catch(e){Vt(e,o,i)}return r}function Lt(e,t,n){if(q.errorHandler)try{return q.errorHandler.call(null,e,t,n)}catch(t){t!==e&&jt(t)}jt(e)}function jt(e,t,n){if(!G||"undefined"==typeof console)throw e;console.error(e)}let Rt=!1;const Nt=[];let qt,Zt=!1;function Ut(){Zt=!1;const e=Nt.slice(0);Nt.length=0;for(let t=0;t{e.then(Ut),J&&setTimeout(M)},Rt=!0}else if(Y||"undefined"==typeof MutationObserver||!ie(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())qt="undefined"!=typeof setImmediate&&ie(setImmediate)?()=>{setImmediate(Ut)}:()=>{setTimeout(Ut,0)};else{let e=1;const t=new MutationObserver(Ut),n=document.createTextNode(String(e));t.observe(n,{characterData:!0}),qt=()=>{e=(e+1)%2,n.data=String(e)},Rt=!0}function Ht(e,t){let n;if(Nt.push((()=>{if(e)try{e.call(t)}catch(e){Vt(e,t,"nextTick")}else n&&n(t)})),Zt||(Zt=!0,qt()),!e&&"undefined"!=typeof Promise)return new Promise((e=>{n=e}))}function Wt(e){return(t,n=ce)=>{if(n)return function(e,t,n){const o=e.$options;o[t]=Gn(o[t],n)}(n,e,t)}}const Gt=Wt("beforeMount"),Qt=Wt("mounted"),Yt=Wt("beforeUpdate"),Xt=Wt("updated"),Kt=Wt("beforeDestroy"),Jt=Wt("destroyed"),_t=Wt("activated"),$t=Wt("deactivated"),en=Wt("serverPrefetch"),tn=Wt("renderTracked"),nn=Wt("renderTriggered"),on=Wt("errorCaptured");var rn=Object.freeze({__proto__:null,version:"2.7.14",defineComponent:function(e){return e},ref:function(e){return je(e,!1)},shallowRef:function(e){return je(e,!0)},isRef:Le,toRef:Ne,toRefs:function(e){const t=i(e)?new Array(e.length):{};for(const n in e)t[n]=Ne(e,n);return t},unref:function(e){return Le(e)?e.value:e},proxyRefs:function(e){if(Oe(e))return e;const t={},n=Object.keys(e);for(let o=0;o{t.depend()}),(()=>{t.notify()})),i={get value(){return n()},set value(e){o(e)}};return U(i,"__v_isRef",!0),i},triggerRef:function(e){e.dep&&e.dep.notify()},reactive:function(e){return Pe(e,!1),e},isReactive:Oe,isReadonly:Te,isShallow:Ve,isProxy:function(e){return Oe(e)||Te(e)},shallowReactive:Me,markRaw:function(e){return Object.isExtensible(e)&&U(e,"__v_skip",!0),e},toRaw:function e(t){const n=t&&t.__v_raw;return n?e(n):t},readonly:qe,shallowReadonly:function(e){return Ze(e,!0)},computed:function(e,t){let n,o;const i=l(e);i?(n=e,o=M):(n=e.get,o=e.set);const r=ne()?null:new mn(ce,n,M,{lazy:!0}),a={effect:r,get value(){return r?(r.dirty&&r.evaluate(),be.target&&r.depend(),r.value):n()},set value(e){o(e)}};return U(a,"__v_isRef",!0),U(a,"__v_isReadonly",i),a},watch:function(e,t,n){return Ge(e,t,n)},watchEffect:function(e,t){return Ge(e,null,t)},watchPostEffect:He,watchSyncEffect:function(e,t){return Ge(e,null,{flush:"sync"})},EffectScope:Ye,effectScope:function(e){return new Ye(e)},onScopeDispose:function(e){Qe&&Qe.cleanups.push(e)},getCurrentScope:function(){return Qe},provide:function(e,t){ce&&(Xe(ce)[e]=t)},inject:function(e,t,n=!1){const o=ce;if(o){const i=o.$parent&&o.$parent._provided;if(i&&e in i)return i[e];if(arguments.length>1)return n&&l(t)?t.call(o):t}},h:function(e,t,n){return Pt(ce,e,t,n,2,!0)},getCurrentInstance:function(){return ce&&{proxy:ce}},useSlots:function(){return It().slots},useAttrs:function(){return It().attrs},useListeners:function(){return It().listeners},mergeDefaults:function(e,t){const n=i(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const o=n[e];o?i(o)||l(o)?n[e]={type:o,default:t[e]}:o.default=t[e]:null===o&&(n[e]={default:t[e]})}return n},nextTick:Ht,set:Ie,del:ze,useCssModule:function(e="$style"){if(!ce)return o;return ce[e]||o},useCssVars:function(e){if(!G)return;const t=ce;t&&He((()=>{const n=t.$el,o=e(t,t._setupProxy);if(n&&1===n.nodeType){const e=n.style;for(const t in o)e.setProperty(`--${t}`,o[t])}}))},defineAsyncComponent:function(e){l(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:i=200,timeout:r,suspensible:a=!1,onError:c}=e;let s=null,d=0;const m=()=>{let e;return s||(e=s=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),c)return new Promise(((t,n)=>{c(e,(()=>t((d++,s=null,m()))),(()=>n(e)),d+1)}));throw e})).then((t=>e!==s&&s?s:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),t))))};return()=>({component:m(),delay:i,timeout:r,error:o,loading:n})},onBeforeMount:Gt,onMounted:Qt,onBeforeUpdate:Yt,onUpdated:Xt,onBeforeUnmount:Kt,onUnmounted:Jt,onActivated:_t,onDeactivated:$t,onServerPrefetch:en,onRenderTracked:tn,onRenderTriggered:nn,onErrorCaptured:function(e,t=ce){on(e,t)}});const an=new ae;function cn(e){return sn(e,an),an.clear(),e}function sn(e,t){let n,o;const r=i(e);if(!(!r&&!d(e)||e.__v_skip||Object.isFrozen(e)||e instanceof le)){if(e.__ob__){const n=e.__ob__.dep.id;if(t.has(n))return;t.add(n)}if(r)for(n=e.length;n--;)sn(e[n],t);else if(Le(e))sn(e.value,t);else for(o=Object.keys(e),n=o.length;n--;)sn(e[o[n]],t)}}let ln,dn=0;class mn{constructor(e,t,n,o,i){!function(e,t=Qe){t&&t.active&&t.effects.push(e)}(this,Qe&&!Qe._vm?Qe:e?e._scope:void 0),(this.vm=e)&&i&&(e._watcher=this),o?(this.deep=!!o.deep,this.user=!!o.user,this.lazy=!!o.lazy,this.sync=!!o.sync,this.before=o.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++dn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ae,this.newDepIds=new ae,this.expression="",l(t)?this.getter=t:(this.getter=function(e){if(H.test(e))return;const t=e.split(".");return function(e){for(let n=0;n{hn=t}}function Fn(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function vn(e,t){if(t){if(e._directInactive=!1,Fn(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(let t=0;tdocument.createEvent("Event").timeStamp&&(In=()=>e.now())}const zn=(e,t)=>{if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function Sn(){let e,t;for(Dn=In(),En=!0,xn.sort(zn),Bn=0;Bn{for(let e=0;ee)),t._pending=!1}pe.length=0})(),oe&&q.devtools&&oe.emit("flush")}function Mn(e){const t=e.id;if(null==Cn[t]&&(e!==be.target||!e.noRecurse)){if(Cn[t]=!0,En){let t=xn.length-1;for(;t>Bn&&xn[t].id>e.id;)t--;xn.splice(t+1,0,e)}else xn.push(e);An||(An=!0,Ht(Sn))}}function Pn(e,t){if(e){const n=Object.create(null),o=re?Reflect.ownKeys(e):Object.keys(e);for(let i=0;i(this.$slots||xt(r,e.scopedSlots,this.$slots=vt(n,r)),this.$slots),Object.defineProperty(this,"scopedSlots",{enumerable:!0,get(){return xt(r,e.scopedSlots,this.slots())}}),d&&(this.$options=s,this.$slots=this.slots(),this.$scopedSlots=xt(r,e.scopedSlots,this.$slots)),s._scopeId?this._c=(e,t,n,o)=>{const a=Pt(l,e,t,n,o,m);return a&&!i(a)&&(a.fnScopeId=s._scopeId,a.fnContext=r),a}:this._c=(e,t,n,o)=>Pt(l,e,t,n,o,m)}function Vn(e,t,n,o,i){const r=fe(e);return r.fnContext=n,r.fnOptions=o,t.slot&&((r.data||(r.data={})).slot=t.slot),r}function Tn(e,t){for(const n in t)e[C(n)]=t[n]}function Ln(e){return e.name||e.__name||e._componentTag}Ft(On.prototype);const jn={init(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){const t=e;jn.prepatch(t,t)}else(e.componentInstance=function(e,t){const n={_isComponent:!0,_parentVnode:e,parent:t},o=e.data.inlineTemplate;return a(o)&&(n.render=o.render,n.staticRenderFns=o.staticRenderFns),new e.componentOptions.Ctor(n)}(e,hn)).$mount(t?e.elm:void 0,t)},prepatch(e,t){const n=t.componentOptions;!function(e,t,n,i,r){const a=i.data.scopedSlots,c=e.$scopedSlots,s=!!(a&&!a.$stable||c!==o&&!c.$stable||a&&e.$scopedSlots.$key!==a.$key||!a&&e.$scopedSlots.$key);let l=!!(r||e.$options._renderChildren||s);const d=e.$vnode;e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=r;const m=i.data.attrs||o;e._attrsProxy&&Et(e._attrsProxy,m,d.data&&d.data.attrs||o,e,"$attrs")&&(l=!0),e.$attrs=m,n=n||o;const f=e.$options._parentListeners;if(e._listenersProxy&&Et(e._listenersProxy,n,f||o,e,"$listeners"),e.$listeners=e.$options._parentListeners=n,bn(e,n,f),t&&e.$options.props){Ce(!1);const n=e._props,o=e.$options._propKeys||[];for(let i=0;iv(o,n)));const l=e=>{for(let e=0,t=o.length;e{e.resolved=St(n,t),i?o.length=0:l(!0)})),f=L((t=>{a(e.errorComp)&&(e.error=!0,l(!0))})),u=e(m,f);return d(u)&&(p(u)?r(e.resolved)&&u.then(m,f):p(u.component)&&(u.component.then(m,f),a(u.error)&&(e.errorComp=St(u.error,t)),a(u.loading)&&(e.loadingComp=St(u.loading,t),0===u.delay?e.loading=!0:c=setTimeout((()=>{c=null,r(e.resolved)&&r(e.error)&&(e.loading=!0,l(!1))}),u.delay||200)),a(u.timeout)&&(s=setTimeout((()=>{s=null,r(e.resolved)&&f(null)}),u.timeout)))),i=!1,e.loading?e.loadingComp:e.resolved}}(f,m),void 0===e))return function(e,t,n,o,i){const r=de();return r.asyncFactory=e,r.asyncMeta={data:t,context:n,children:o,tag:i},r}(f,t,n,s,l);t=t||{},fo(e),a(t.model)&&function(e,t){const n=e.model&&e.model.prop||"value",o=e.model&&e.model.event||"input";(t.attrs||(t.attrs={}))[n]=t.model.value;const r=t.on||(t.on={}),c=r[o],s=t.model.callback;a(c)?(i(c)?-1===c.indexOf(s):c!==s)&&(r[o]=[s].concat(c)):r[o]=s}(e.options,t);const u=function(e,t,n){const o=t.options.props;if(r(o))return;const i={},{attrs:c,props:s}=e;if(a(c)||a(s))for(const e in o){const t=B(e);et(i,s,e,t,!0)||et(i,c,e,t,!1)}return i}(t,e);if(c(e.options.functional))return function(e,t,n,r,c){const s=e.options,l={},d=s.props;if(a(d))for(const e in d)l[e]=Jn(e,d,t||o);else a(n.attrs)&&Tn(l,n.attrs),a(n.props)&&Tn(l,n.props);const m=new On(n,l,c,r,e),f=s.render.call(null,m._c,m);if(f instanceof le)return Vn(f,n,m.parent,s);if(i(f)){const e=tt(f)||[],t=new Array(e.length);for(let o=0;o{e(n,o),t(n,o)};return n._merged=!0,n}let Zn=M;const Un=q.optionMergeStrategies;function Hn(e,t,n=!0){if(!t)return e;let o,i,r;const a=re?Reflect.ownKeys(t):Object.keys(t);for(let c=0;c{Un[e]=Gn})),R.forEach((function(e){Un[e+"s"]=Qn})),Un.watch=function(e,t,n,o){if(e===$&&(e=void 0),t===$&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;const r={};z(r,e);for(const e in t){let n=r[e];const o=t[e];n&&!i(n)&&(n=[n]),r[e]=n?n.concat(o):i(o)?o:[o]}return r},Un.props=Un.methods=Un.inject=Un.computed=function(e,t,n,o){if(!e)return t;const i=Object.create(null);return z(i,e),t&&z(i,t),i},Un.provide=function(e,t){return e?function(){const n=Object.create(null);return Hn(n,l(e)?e.call(this):e),t&&Hn(n,l(t)?t.call(this):t,!1),n}:t};const Yn=function(e,t){return void 0===t?e:t};function Xn(e,t,n){if(l(t)&&(t=t.options),function(e,t){const n=e.props;if(!n)return;const o={};let r,a,c;if(i(n))for(r=n.length;r--;)a=n[r],"string"==typeof a&&(c=C(a),o[c]={type:null});else if(f(n))for(const e in n)a=n[e],c=C(e),o[c]=f(a)?a:{type:a};e.props=o}(t),function(e,t){const n=e.inject;if(!n)return;const o=e.inject={};if(i(n))for(let e=0;e-1)if(r&&!y(i,"default"))a=!1;else if(""===a||a===B(e)){const e=to(String,i.type);(e<0||c-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===m.call(n)&&e.test(t));var n}function ho(e,t){const{cache:n,keys:o,_vnode:i}=e;for(const e in n){const r=n[e];if(r){const a=r.name;a&&!t(a)&&go(n,e,o,i)}}}function go(e,t,n,o){const i=e[t];!i||o&&i.tag===o.tag||i.componentInstance.$destroy(),e[t]=null,v(n,t)}!function(e){e.prototype._init=function(e){const t=this;t._uid=mo++,t._isVue=!0,t.__v_skip=!0,t._scope=new Ye(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){const n=e.$options=Object.create(e.constructor.options),o=t._parentVnode;n.parent=t.parent,n._parentVnode=o;const i=o.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Xn(fo(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){const t=e.$options;let n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;const t=e.$options._parentListeners;t&&bn(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;const t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=vt(t._renderChildren,i),e.$scopedSlots=n?xt(e.$parent,n.data.scopedSlots,e.$slots):o,e._c=(t,n,o,i)=>Pt(e,t,n,o,i,!1),e.$createElement=(t,n,o,i)=>Pt(e,t,n,o,i,!0);const r=n&&n.data;De(e,"$attrs",r&&r.attrs||o,null,!0),De(e,"$listeners",t._parentListeners||o,null,!0)}(t),yn(t,"beforeCreate",void 0,!1),function(e){const t=Pn(e.$options.inject,e);t&&(Ce(!1),Object.keys(t).forEach((n=>{De(e,n,t[n])})),Ce(!0))}(t),io(t),function(e){const t=e.$options.provide;if(t){const n=l(t)?t.call(e):t;if(!d(n))return;const o=Xe(e),i=re?Reflect.ownKeys(n):Object.keys(n);for(let e=0;e1?I(n):n;const o=I(arguments,1),i=`event handler for "${e}"`;for(let e=0,r=n.length;eparseInt(this.max)&&go(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created(){this.cache=Object.create(null),this.keys=[]},destroyed(){for(const e in this.cache)go(this.cache,e,this.keys)},mounted(){this.cacheVNode(),this.$watch("include",(e=>{ho(this,(t=>bo(e,t)))})),this.$watch("exclude",(e=>{ho(this,(t=>!bo(e,t)))}))},updated(){this.cacheVNode()},render(){const e=this.$slots.default,t=Mt(e),n=t&&t.componentOptions;if(n){const e=po(n),{include:o,exclude:i}=this;if(o&&(!e||!bo(o,e))||i&&e&&bo(i,e))return t;const{cache:r,keys:a}=this,c=null==t.key?n.Ctor.cid+(n.tag?`::${n.tag}`:""):t.key;r[c]?(t.componentInstance=r[c].componentInstance,v(a,c),a.push(c)):(this.vnodeToCache=t,this.keyToCache=c),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){const t={get:()=>q};Object.defineProperty(e,"config",t),e.util={warn:Zn,extend:z,mergeOptions:Xn,defineReactive:De},e.set=Ie,e.delete=ze,e.nextTick=Ht,e.observable=e=>(Be(e),e),e.options=Object.create(null),R.forEach((t=>{e.options[t+"s"]=Object.create(null)})),e.options._base=e,z(e.options.components,vo),function(e){e.use=function(e){const t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;const n=I(arguments,1);return n.unshift(this),l(e.install)?e.install.apply(e,n):l(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Xn(this.options,e),this}}(e),function(e){e.cid=0;let t=1;e.extend=function(e){e=e||{};const n=this,o=n.cid,i=e._Ctor||(e._Ctor={});if(i[o])return i[o];const r=Ln(e)||Ln(n.options),a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Xn(n.options,e),a.super=n,a.options.props&&function(e){const t=e.options.props;for(const n in t)oo(e.prototype,"_props",n)}(a),a.options.computed&&function(e){const t=e.options.computed;for(const n in t)ao(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach((function(e){a[e]=n[e]})),r&&(a.options.components[r]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=z({},a.options),i[o]=a,a}}(e),function(e){R.forEach((t=>{e[t]=function(e,n){return n?("component"===t&&f(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&l(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(uo),Object.defineProperty(uo.prototype,"$isServer",{get:ne}),Object.defineProperty(uo.prototype,"$ssrContext",{get(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(uo,"FunctionalRenderContext",{value:On}),uo.version="2.7.14";const wo=g("style,class"),yo=g("input,textarea,option,select,progress"),xo=g("contenteditable,draggable,spellcheck"),ko=g("events,caret,typing,plaintext-only"),Co=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Ao="http://www.w3.org/1999/xlink",Eo=e=>":"===e.charAt(5)&&"xlink"===e.slice(0,5),Bo=e=>Eo(e)?e.slice(6,e.length):"",Do=e=>null==e||!1===e;function Io(e,t){return{staticClass:zo(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function zo(e,t){return e?t?e+" "+t:e:t||""}function So(e){return Array.isArray(e)?function(e){let t,n="";for(let o=0,i=e.length;oPo(e)||Oo(e),To=Object.create(null),Lo=g("text,number,password,search,email,tel,url");var jo=Object.freeze({__proto__:null,createElement:function(e,t){const n=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(e,t){return document.createElementNS(Mo[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),Ro={create(e,t){No(t)},update(e,t){e.data.ref!==t.data.ref&&(No(e,!0),No(t))},destroy(e){No(e,!0)}};function No(e,t){const n=e.data.ref;if(!a(n))return;const o=e.context,r=e.componentInstance||e.elm,c=t?null:r,s=t?void 0:r;if(l(n))return void Tt(n,o,[c],o,"template ref function");const d=e.data.refInFor,m="string"==typeof n||"number"==typeof n,f=Le(n),u=o.$refs;if(m||f)if(d){const e=m?u[n]:n.value;t?i(e)&&v(e,r):i(e)?e.includes(r)||e.push(r):m?(u[n]=[r],qo(o,n,u[n])):n.value=[r]}else if(m){if(t&&u[n]!==r)return;u[n]=s,qo(o,n,c)}else if(f){if(t&&n.value!==r)return;n.value=c}}function qo({_setupState:e},t,n){e&&y(e,t)&&(Le(e[t])?e[t].value=n:e[t]=n)}const Zo=new le("",{},[]),Uo=["create","activate","update","remove","destroy"];function Ho(e,t){return e.key===t.key&&e.asyncFactory===t.asyncFactory&&(e.tag===t.tag&&e.isComment===t.isComment&&a(e.data)===a(t.data)&&function(e,t){if("input"!==e.tag)return!0;let n;const o=a(n=e.data)&&a(n=n.attrs)&&n.type,i=a(n=t.data)&&a(n=n.attrs)&&n.type;return o===i||Lo(o)&&Lo(i)}(e,t)||c(e.isAsyncPlaceholder)&&r(t.asyncFactory.error))}function Wo(e,t,n){let o,i;const r={};for(o=t;o<=n;++o)i=e[o].key,a(i)&&(r[i]=o);return r}var Go={create:Qo,update:Qo,destroy:function(e){Qo(e,Zo)}};function Qo(e,t){(e.data.directives||t.data.directives)&&function(e,t){const n=e===Zo,o=t===Zo,i=Xo(e.data.directives,e.context),r=Xo(t.data.directives,t.context),a=[],c=[];let s,l,d;for(s in r)l=i[s],d=r[s],l?(d.oldValue=l.value,d.oldArg=l.arg,Jo(d,"update",t,e),d.def&&d.def.componentUpdated&&c.push(d)):(Jo(d,"bind",t,e),d.def&&d.def.inserted&&a.push(d));if(a.length){const o=()=>{for(let n=0;n{for(let n=0;n-1?ti(e,t,n):Co(t)?Do(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):xo(t)?e.setAttribute(t,((e,t)=>Do(t)||"false"===t?"false":"contenteditable"===e&&ko(t)?t:"true")(t,n)):Eo(t)?Do(n)?e.removeAttributeNS(Ao,Bo(t)):e.setAttributeNS(Ao,t,n):ti(e,t,n)}function ti(e,t,n){if(Do(n))e.removeAttribute(t);else{if(Y&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){const t=n=>{n.stopImmediatePropagation(),e.removeEventListener("input",t)};e.addEventListener("input",t),e.__ieph=!0}e.setAttribute(t,n)}}var ni={create:$o,update:$o};function oi(e,t){const n=t.elm,o=t.data,i=e.data;if(r(o.staticClass)&&r(o.class)&&(r(i)||r(i.staticClass)&&r(i.class)))return;let c=function(e){let t=e.data,n=e,o=e;for(;a(o.componentInstance);)o=o.componentInstance._vnode,o&&o.data&&(t=Io(o.data,t));for(;a(n=n.parent);)n&&n.data&&(t=Io(t,n.data));return function(e,t){return a(e)||a(t)?zo(e,So(t)):""}(t.staticClass,t.class)}(t);const s=n._transitionClasses;a(s)&&(c=zo(c,So(s))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}var ii={create:oi,update:oi};let ri;function ai(e,t,n){const o=ri;return function i(){const r=t.apply(null,arguments);null!==r&&li(e,i,n,o)}}const ci=Rt&&!(_&&Number(_[1])<=53);function si(e,t,n,o){if(ci){const e=Dn,n=t;t=n._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=e||t.timeStamp<=0||t.target.ownerDocument!==document)return n.apply(this,arguments)}}ri.addEventListener(e,t,te?{capture:n,passive:o}:n)}function li(e,t,n,o){(o||ri).removeEventListener(e,t._wrapper||t,n)}function di(e,t){if(r(e.data.on)&&r(t.data.on))return;const n=t.data.on||{},o=e.data.on||{};ri=t.elm||e.elm,function(e){if(a(e.__r)){const t=Y?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),_e(n,o,si,li,ai,t.context),ri=void 0}var mi={create:di,update:di,destroy:e=>di(e,Zo)};let fi;function ui(e,t){if(r(e.data.domProps)&&r(t.data.domProps))return;let n,o;const i=t.elm,s=e.data.domProps||{};let l=t.data.domProps||{};for(n in(a(l.__ob__)||c(l._v_attr_proxy))&&(l=t.data.domProps=z({},l)),s)n in l||(i[n]="");for(n in l){if(o=l[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),o===s[n])continue;1===i.childNodes.length&&i.removeChild(i.childNodes[0])}if("value"===n&&"PROGRESS"!==i.tagName){i._value=o;const e=r(o)?"":String(o);pi(i,e)&&(i.value=e)}else if("innerHTML"===n&&Oo(i.tagName)&&r(i.innerHTML)){fi=fi||document.createElement("div"),fi.innerHTML=`${o}`;const e=fi.firstChild;for(;i.firstChild;)i.removeChild(i.firstChild);for(;e.firstChild;)i.appendChild(e.firstChild)}else if(o!==s[n])try{i[n]=o}catch(e){}}}function pi(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){let n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){const n=e.value,o=e._vModifiers;if(a(o)){if(o.number)return h(n)!==h(t);if(o.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var bi={create:ui,update:ui};const hi=x((function(e){const t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){const o=e.split(n);o.length>1&&(t[o[0].trim()]=o[1].trim())}})),t}));function gi(e){const t=Fi(e.style);return e.staticStyle?z(e.staticStyle,t):t}function Fi(e){return Array.isArray(e)?S(e):"string"==typeof e?hi(e):e}const vi=/^--/,wi=/\s*!important$/,yi=(e,t,n)=>{if(vi.test(t))e.style.setProperty(t,n);else if(wi.test(n))e.style.setProperty(B(t),n.replace(wi,""),"important");else{const o=Ci(t);if(Array.isArray(n))for(let t=0,i=n.length;t-1?t.split(Bi).forEach((t=>e.classList.add(t))):e.classList.add(t);else{const n=` ${e.getAttribute("class")||""} `;n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Ii(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Bi).forEach((t=>e.classList.remove(t))):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{let n=` ${e.getAttribute("class")||""} `;const o=" "+t+" ";for(;n.indexOf(o)>=0;)n=n.replace(o," ");n=n.trim(),n?e.setAttribute("class",n):e.removeAttribute("class")}}function zi(e){if(e){if("object"==typeof e){const t={};return!1!==e.css&&z(t,Si(e.name||"v")),z(t,e),t}return"string"==typeof e?Si(e):void 0}}const Si=x((e=>({enterClass:`${e}-enter`,enterToClass:`${e}-enter-to`,enterActiveClass:`${e}-enter-active`,leaveClass:`${e}-leave`,leaveToClass:`${e}-leave-to`,leaveActiveClass:`${e}-leave-active`}))),Mi=G&&!X;let Pi="transition",Oi="transitionend",Vi="animation",Ti="animationend";Mi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Pi="WebkitTransition",Oi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Vi="WebkitAnimation",Ti="webkitAnimationEnd"));const Li=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:e=>e();function ji(e){Li((()=>{Li(e)}))}function Ri(e,t){const n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),Di(e,t))}function Ni(e,t){e._transitionClasses&&v(e._transitionClasses,t),Ii(e,t)}function qi(e,t,n){const{type:o,timeout:i,propCount:r}=Ui(e,t);if(!o)return n();const a="transition"===o?Oi:Ti;let c=0;const s=()=>{e.removeEventListener(a,l),n()},l=t=>{t.target===e&&++c>=r&&s()};setTimeout((()=>{c0&&(l="transition",d=r,m=i.length):"animation"===t?s>0&&(l="animation",d=s,m=c.length):(d=Math.max(r,s),l=d>0?r>s?"transition":"animation":null,m=l?"transition"===l?i.length:c.length:0),{type:l,timeout:d,propCount:m,hasTransform:"transition"===l&&Zi.test(n[Pi+"Property"])}}function Hi(e,t){for(;e.lengthWi(t)+Wi(e[n]))))}function Wi(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function Gi(e,t){const n=e.elm;a(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());const o=zi(e.data.transition);if(r(o))return;if(a(n._enterCb)||1!==n.nodeType)return;const{css:i,type:c,enterClass:s,enterToClass:m,enterActiveClass:f,appearClass:u,appearToClass:p,appearActiveClass:b,beforeEnter:g,enter:F,afterEnter:v,enterCancelled:w,beforeAppear:y,appear:x,afterAppear:k,appearCancelled:C,duration:A}=o;let E=hn,B=hn.$vnode;for(;B&&B.parent;)E=B.context,B=B.parent;const D=!E._isMounted||!e.isRootInsert;if(D&&!x&&""!==x)return;const I=D&&u?u:s,z=D&&b?b:f,S=D&&p?p:m,M=D&&y||g,P=D&&l(x)?x:F,O=D&&k||v,V=D&&C||w,T=h(d(A)?A.enter:A),j=!1!==i&&!X,R=Xi(P),N=n._enterCb=L((()=>{j&&(Ni(n,S),Ni(n,z)),N.cancelled?(j&&Ni(n,I),V&&V(n)):O&&O(n),n._enterCb=null}));e.data.show||$e(e,"insert",(()=>{const t=n.parentNode,o=t&&t._pending&&t._pending[e.key];o&&o.tag===e.tag&&o.elm._leaveCb&&o.elm._leaveCb(),P&&P(n,N)})),M&&M(n),j&&(Ri(n,I),Ri(n,z),ji((()=>{Ni(n,I),N.cancelled||(Ri(n,S),R||(Yi(T)?setTimeout(N,T):qi(n,c,N)))}))),e.data.show&&(t&&t(),P&&P(n,N)),j||R||N()}function Qi(e,t){const n=e.elm;a(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());const o=zi(e.data.transition);if(r(o)||1!==n.nodeType)return t();if(a(n._leaveCb))return;const{css:i,type:c,leaveClass:s,leaveToClass:l,leaveActiveClass:m,beforeLeave:f,leave:u,afterLeave:p,leaveCancelled:b,delayLeave:g,duration:F}=o,v=!1!==i&&!X,w=Xi(u),y=h(d(F)?F.leave:F),x=n._leaveCb=L((()=>{n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),v&&(Ni(n,l),Ni(n,m)),x.cancelled?(v&&Ni(n,s),b&&b(n)):(t(),p&&p(n)),n._leaveCb=null}));function k(){x.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),f&&f(n),v&&(Ri(n,s),Ri(n,m),ji((()=>{Ni(n,s),x.cancelled||(Ri(n,l),w||(Yi(y)?setTimeout(x,y):qi(n,c,x)))}))),u&&u(n,x),v||w||x())}g?g(k):k()}function Yi(e){return"number"==typeof e&&!isNaN(e)}function Xi(e){if(r(e))return!1;const t=e.fns;return a(t)?Xi(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ki(e,t){!0!==t.data.show&&Gi(t)}const Ji=function(e){let t,n;const o={},{modules:l,nodeOps:d}=e;for(t=0;tb?(m=r(n[F+1])?null:n[F+1].elm,w(e,m,n,p,F,o)):p>F&&x(t,u,b)}(m,b,g,n,l):a(g)?(a(e.text)&&d.setTextContent(m,""),w(m,null,g,0,g.length-1,n)):a(b)?x(b,0,b.length-1):a(e.text)&&d.setTextContent(m,""):e.text!==t.text&&d.setTextContent(m,t.text),a(p)&&a(u=p.hook)&&a(u=u.postpatch)&&u(e,t)}function E(e,t,n){if(c(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(let e=0;e{const e=document.activeElement;e&&e.vmodel&&rr(e,"input")}));const _i={inserted(e,t,n,o){"select"===n.tag?(o.elm&&!o.elm._vOptions?$e(n,"postpatch",(()=>{_i.componentUpdated(e,t,n)})):$i(e,t,n.context),e._vOptions=[].map.call(e.options,nr)):("textarea"===n.tag||Lo(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",or),e.addEventListener("compositionend",ir),e.addEventListener("change",ir),X&&(e.vmodel=!0)))},componentUpdated(e,t,n){if("select"===n.tag){$i(e,t,n.context);const o=e._vOptions,i=e._vOptions=[].map.call(e.options,nr);i.some(((e,t)=>!V(e,o[t])))&&(e.multiple?t.value.some((e=>tr(e,i))):t.value!==t.oldValue&&tr(t.value,i))&&rr(e,"change")}}};function $i(e,t,n){er(e,t),(Y||K)&&setTimeout((()=>{er(e,t)}),0)}function er(e,t,n){const o=t.value,i=e.multiple;if(i&&!Array.isArray(o))return;let r,a;for(let t=0,n=e.options.length;t-1,a.selected!==r&&(a.selected=r);else if(V(nr(a),o))return void(e.selectedIndex!==t&&(e.selectedIndex=t));i||(e.selectedIndex=-1)}function tr(e,t){return t.every((t=>!V(t,e)))}function nr(e){return"_value"in e?e._value:e.value}function or(e){e.target.composing=!0}function ir(e){e.target.composing&&(e.target.composing=!1,rr(e.target,"input"))}function rr(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function ar(e){return!e.componentInstance||e.data&&e.data.transition?e:ar(e.componentInstance._vnode)}var cr={bind(e,{value:t},n){const o=(n=ar(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;t&&o?(n.data.show=!0,Gi(n,(()=>{e.style.display=i}))):e.style.display=t?i:"none"},update(e,{value:t,oldValue:n},o){!t!=!n&&((o=ar(o)).data&&o.data.transition?(o.data.show=!0,t?Gi(o,(()=>{e.style.display=e.__vOriginalDisplay})):Qi(o,(()=>{e.style.display="none"}))):e.style.display=t?e.__vOriginalDisplay:"none")},unbind(e,t,n,o,i){i||(e.style.display=e.__vOriginalDisplay)}},sr={model:_i,show:cr};const lr={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function dr(e){const t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?dr(Mt(t.children)):e}function mr(e){const t={},n=e.$options;for(const o in n.propsData)t[o]=e[o];const o=n._parentListeners;for(const e in o)t[C(e)]=o[e];return t}function fr(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}const ur=e=>e.tag||yt(e),pr=e=>"show"===e.name;var br={name:"transition",props:lr,abstract:!0,render(e){let t=this.$slots.default;if(!t)return;if(t=t.filter(ur),!t.length)return;const n=this.mode,o=t[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;const i=dr(o);if(!i)return o;if(this._leaving)return fr(e,o);const r=`__transition-${this._uid}-`;i.key=null==i.key?i.isComment?r+"comment":r+i.tag:s(i.key)?0===String(i.key).indexOf(r)?i.key:r+i.key:i.key;const a=(i.data||(i.data={})).transition=mr(this),c=this._vnode,l=dr(c);if(i.data.directives&&i.data.directives.some(pr)&&(i.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,l)&&!yt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){const t=l.data.transition=z({},a);if("out-in"===n)return this._leaving=!0,$e(t,"afterLeave",(()=>{this._leaving=!1,this.$forceUpdate()})),fr(e,o);if("in-out"===n){if(yt(i))return c;let e;const n=()=>{e()};$e(a,"afterEnter",n),$e(a,"enterCancelled",n),$e(t,"delayLeave",(t=>{e=t}))}}return o}};const hr=z({tag:String,moveClass:String},lr);delete hr.mode;var gr={props:hr,beforeMount(){const e=this._update;this._update=(t,n)=>{const o=gn(this);this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept,o(),e.call(this,t,n)}},render(e){const t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),o=this.prevChildren=this.children,i=this.$slots.default||[],r=this.children=[],a=mr(this);for(let e=0;e{if(e.data.moved){const n=e.elm,o=n.style;Ri(n,t),o.transform=o.WebkitTransform=o.transitionDuration="",n.addEventListener(Oi,n._moveCb=function e(o){o&&o.target!==n||o&&!/transform$/.test(o.propertyName)||(n.removeEventListener(Oi,e),n._moveCb=null,Ni(n,t))})}})))},methods:{hasMove(e,t){if(!Mi)return!1;if(this._hasMove)return this._hasMove;const n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach((e=>{Ii(n,e)})),Di(n,t),n.style.display="none",this.$el.appendChild(n);const o=Ui(n);return this.$el.removeChild(n),this._hasMove=o.hasTransform}}};function Fr(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function vr(e){e.data.newPos=e.elm.getBoundingClientRect()}function wr(e){const t=e.data.pos,n=e.data.newPos,o=t.left-n.left,i=t.top-n.top;if(o||i){e.data.moved=!0;const t=e.elm.style;t.transform=t.WebkitTransform=`translate(${o}px,${i}px)`,t.transitionDuration="0s"}}var yr={Transition:br,TransitionGroup:gr};uo.config.mustUseProp=(e,t,n)=>"value"===n&&yo(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e,uo.config.isReservedTag=Vo,uo.config.isReservedAttr=wo,uo.config.getTagNamespace=function(e){return Oo(e)?"svg":"math"===e?"math":void 0},uo.config.isUnknownElement=function(e){if(!G)return!0;if(Vo(e))return!1;if(e=e.toLowerCase(),null!=To[e])return To[e];const t=document.createElement(e);return e.indexOf("-")>-1?To[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:To[e]=/HTMLUnknownElement/.test(t.toString())},z(uo.options.directives,sr),z(uo.options.components,yr),uo.prototype.__patch__=G?Ji:M,uo.prototype.$mount=function(e,t){return function(e,t,n){let o;e.$el=t,e.$options.render||(e.$options.render=de),yn(e,"beforeMount"),o=()=>{e._update(e._render(),n)},new mn(e,o,M,{before(){e._isMounted&&!e._isDestroyed&&yn(e,"beforeUpdate")}},!0),n=!1;const i=e._preWatchers;if(i)for(let e=0;e{q.devtools&&oe&&oe.emit("init",uo)}),0),z(uo,rn),e.exports=uo},7761:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=7761,e.exports=t},4311:(e,t,n)=>{var o={"./index.en-US.md":5340};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4311},3552:(e,t,n)=>{var o={"./index.en-US.ts":8730};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=3552},4353:(e,t,n)=>{var o={"./id-search/index.ts":8692};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4353},5269:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pako:()=>o}); +o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function c(e){for(var t=-1,n=0;n{var o=n(6292);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},813:(e,t,n)=>{var o=n(8815);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},3861:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"switch-options",class:{"small-size":e.smallSize,grid:!e.popupMode}},[e.popupMode?[t("VButton",{ref:"button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[t("VIcon",{staticClass:"switch-icon",attrs:{icon:"mdi-checkbox-marked-circle-outline",size:e.smallSize?16:22}}),e._v("\n "+e._s(e.options.optionDisplayName)+"\n ")],1),e._v(" "),t("VPopup",{staticClass:"switch-options-popup widgets-popup",attrs:{"trigger-element":e.$refs.button,"esc-close":"","auto-destroy":""},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]:[t("div",{staticClass:"switch-options-grid"},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]],2)};o._withStripped=!0;var i=n(2570),r=n(5067);const a=Vue.extend({name:"SwitchOptions",components:{VPopup:i.VPopup,VButton:i.VButton,VIcon:i.VIcon,CheckBox:i.CheckBox,RadioButton:i.RadioButton},props:{options:{type:Object,required:!0},smallSize:{type:Boolean,default:!1},popupMode:{type:Boolean,default:!0}},data(){const{componentName:e}=this.options;return{popupOpen:!1,componentOptions:(0,r.getComponentSettings)(e).options}},computed:{mergedSwitchProps(){return{checkedIcon:"mdi-eye-off-outline",notCheckedIcon:"mdi-eye-outline",...this.options.switchProps}}},watch:{options(){this.updateColumnsCount()}},mounted(){this.updateColumnsCount()},methods:{updateColumnsCount(){const e=this.$el,t=Math.ceil(Object.keys(this.options.switches).length/12);e.style.setProperty("--columns",t.toString())},isDim(e){return"checked"===this.options.dimAt||void 0===this.options.dimAt?this.componentOptions[`switch-${e}`]:"notChecked"===this.options.dimAt&&!this.componentOptions[`switch-${e}`]}}});var c=n(8332),s=n.n(c),l=n(2119),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},8712:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{staticClass:"check-all-updates",attrs:{disabled:e.disabled},on:{click:function(t){return e.checkUpdates()}}},[t("VIcon",{attrs:{size:16,icon:"mdi-cloud-sync-outline"}}),e._v("\n 立即检查所有更新\n")],1)};o._withStripped=!0;var i=n(3823),r=n(2570),a=n(3846);const c=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon},data:()=>({disabled:!1}),methods:{async checkUpdates(){try{this.disabled=!0;const e=i.Toast.info("正在检查更新...","检查所有更新");await(0,a.forceCheckUpdateAndReload)(),e.close()}finally{this.disabled=!1}}}});var s=n(8332),l=n.n(s),d=n(2701),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"76652ef2",null).exports},8030:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"bisector-dialog-content-container"},[t("div",{staticClass:"bisector-dialog-content-text"},[e._v("\n 组件二等分进行中,预计剩余\n "),t("b",{staticStyle:{color:"var(--theme-color)"}},[e._v(e._s(e.rouge)+" ")]),e._v("轮次,请确认当前情况:\n ")]),e._v(" "),t("div",{staticClass:"bisector-dialog-button-group"},[t("VButton",{on:{click:e.onGood}},[e._v("正常")]),e._v(" "),t("VButton",{on:{click:e.onBad}},[e._v("不正常")]),e._v(" "),t("VButton",{attrs:{type:"primary"},on:{click:e.onAbort}},[e._v("终止")])],1),e._v(" "),t("div",{staticClass:"bisector-dialog-content-text weak"},[e._v("\n *可以点击×号关闭对话框,刷新页面后,会再次询问\n ")])])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(2570);const c=r().extend({components:{VButton:a.VButton},props:{rouge:{type:Number,required:!0},onAbort:{type:Function,default:none},onGood:{type:Function,default:none},onBad:{type:Function,default:none}}});var s=n(8332),l=n.n(s),d=n(6538),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"31cf1990",null).exports},3346:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",[e._v("\n 组件二等分\n "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1)])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(2570);const c=r().extend({components:{VIcon:a.VIcon},data:()=>({peek:!1}),watch:{peek(e){this.$el.closest(".be-dialog").style.opacity=e?"0.1":"1"}}});var s=n(8332),l=n.n(s),d=n(8335),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"386ddf8e",null).exports},9431:(e,t,n)=>{"use strict";n.d(t,{Z:()=>M});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"launch-bar"},[t("div",{staticClass:"input-area"},[t("div",{staticClass:"launch-bar-form"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.keyword,expression:"keyword"}],ref:"input",staticClass:"input",attrs:{type:"text",autocomplete:"off",placeholder:e.recommended.word},domProps:{value:e.keyword},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.stopPropagation(),e.handleEnter.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.stopPropagation(),e.handleUp.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.stopPropagation(),e.handleDown.apply(null,arguments))}],input:function(t){t.target.composing||(e.keyword=t.target.value)}}}),e._v(" "),t("button",{staticClass:"submit",attrs:{title:"执行",tabindex:"-1"},on:{click:e.handleEnter}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1)])]),e._v(" "),t("div",{ref:"list",staticClass:"launch-bar-suggest-list"},[e.isHistory?t("div",{staticClass:"launch-bar-history-list"},[0===e.actions.length?t("div",{staticClass:"history-empty suggest-item disabled",attrs:{tabindex:"0"}},[e._v("\n 暂无搜索历史\n ")]):e._e(),e._v(" "),e._l(e.actions,(function(n,o){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem()},"next-item":function(t){return e.nextItem()},"delete-item":function(t){return e.onDeleteItem()},action:function(t){o===e.actions.length-1&&e.onClearHistory(),e.onAction(n)}}})}))],2):e._e(),e._v(" "),e.isHistory?e._e():t("div",{staticClass:"launch-bar-action-list"},[0===e.actions.length&&e.noActions?t("VEmpty",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}):e._e(),e._v(" "),0!==e.actions.length||e.noActions?e._e():t("VLoading",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}),e._v(" "),e._l(e.actions,(function(n){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem()},"next-item":function(t){return e.nextItem()},"delete-item":function(t){return e.onDeleteItem()},action:function(t){return e.onAction(n)}}})}))],2)])])};o._withStripped=!0;var i=n(7942),r=n(2570),a=n(4909),c=n(3311),s=n(8014),l=n(8612),d=n(2545),m=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-launch-bar-action-item suggest-item",attrs:{tabindex:"0",title:e.action.displayName||e.action.name,"data-indexer":e.action.indexer},on:{click:function(t){return t.target!==t.currentTarget?null:e.performAction(t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),e.performAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:t.shiftKey?(t.preventDefault(),t.stopPropagation(),e.performDelete(t)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("previous-item",t.currentTarget))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("next-item",t.currentTarget))}]}},[t("div",{staticClass:"suggest-item-content"},[e.action.icon?t("div",{staticClass:"suggest-item-icon",on:{click:function(t){return e.performAction(t)}}},[t("VIcon",{attrs:{icon:e.action.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"suggest-item-title",on:{click:function(t){return e.performAction(t)}}},[e.action.content?t(e.action.content,{tag:"component",staticClass:"suggest-item-name",attrs:{name:e.action.name}}):t("div",{staticClass:"suggest-item-name"},[e._v("\n "+e._s(e.action.displayName||e.action.name)+"\n ")]),e._v(" "),e.action.description?t("div",{staticClass:"suggest-item-description",attrs:{title:e.action.description}},[e._v("\n "+e._s(e.action.description)+"\n ")]):e._e()],1),e._v(" "),e.action.deleteAction?t("div",{staticClass:"suggest-item-delete",attrs:{title:"删除此项"},on:{click:function(t){return e.performDelete(t)}}},[t("VIcon",{attrs:{icon:"cancel",size:18}})],1):e._e()])])};m._withStripped=!0;const f=Vue.extend({components:{VIcon:r.VIcon},props:{action:{type:Object,required:!0}},methods:{async performAction(e){const{currentTarget:t}=e;await this.action.action(),this.$emit("action",t)},async performDelete(e){const{currentTarget:t}=e;this.action.deleteAction&&(await this.action.deleteAction(),this.$emit("delete-item",t))}}});var u=n(8332),p=n.n(u),b=n(1965),h=n.n(b),g={insert:"head",singleton:!1};p()(h(),g);h().locals;var F=n(4893);const v=(0,F.Z)(f,m,[],!1,null,null,null).exports;var w=n(7801),y=n(1244),x=n(7187);function k(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class C extends EventTarget{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;super(),k(this,"itemIndex",-1),k(this,"itemLength",0),this.itemLength=e,this.index=t}get index(){return this.itemIndex}set index(e){this.itemIndex=lodash.clamp(e,-1,this.itemLength-1),this.dispatchEvent(new CustomEvent("index-change",{detail:this}))}get hasFocus(){return this.itemIndex>-1}reset(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.index;this.itemLength=e,this.index=t}next(){this.index+=1,console.log(this.index)}previous(){this.index-=1,console.log(this.index)}}const[A]=(0,a.registerAndGetData)(w.LaunchBarActionProviders,[y.searchProvider,x.dr]),E=e=>[...e].sort((0,s.ascendingSort)((e=>e.order??1/0))),B=(e,t)=>t.map((t=>{const n=`${e.name}.${t.name}`;return{...t,key:n,provider:e}}));const[D]=(0,a.registerAndGetData)("launchBar.recommended",{word:"搜索",href:"https://search.bilibili.com/"}),I=Vue.extend({components:{VIcon:r.VIcon,VLoading:r.VLoading,VEmpty:r.VEmpty,ActionItem:v},data(){const e=new C(0);return{recommended:D,actions:[],keyword:"",focusTarget:e,noActions:!1}},computed:{isHistory(){return 0===this.keyword.length}},watch:{keyword(){this.getActions()},actions(){this.focusTarget.reset(this.actions.length)}},async mounted(){await this.getActions(),(0,l.matchUrlPattern)(/^https?:\/\/search\.bilibili\.com/)&&await this.setupSearchPageSync(),this.focusTarget.addEventListener("index-change",(()=>{this.handleIndexUpdate()}))},methods:{getOnlineActions:lodash.debounce((async function(){const e=(await Promise.all(A.map((async e=>B(e,await e.getActions(this.keyword)))))).flat();if(this.isHistory)return;const t=new i.Z(e,{keys:["indexer","displayName","name","description","key"]}).search(this.keyword);console.log(t),this.actions=E(t.map((e=>e.item)).slice(0,12)),this.noActions=0===this.actions.length}),200),getActions:async function(){if(this.noActions=!1,this.isHistory)return void(this.actions=E(B(x.dr,await x.dr.getActions(this.keyword))));this.actions=[],this.getOnlineActions()},async setupSearchPageSync(){const e=await(0,c.select)("#search-keyword, .search-input-el");e&&(this.keyword=e.value,(0,d.urlChange)((e=>{const t=new URLSearchParams(e);this.keyword=t.get("keyword")})),await this.$nextTick())},handleSelect(){this.$emit("close"),this.getActions()},async handleEnter(e){if(!e.isComposing){if(this.actions.length>0&&!this.isHistory){const[e]=this.actions;if(!0!==e.explicitSelect)return void e.action()}if(this.keyword)return(0,y.search)(this.keyword),void this.handleSelect();window.open(this.recommended.href,"_blank"),this.handleSelect()}},handleUp(e){e.isComposing||(this.focusTarget.previous(),e.preventDefault())},handleDown(e){e.isComposing||(this.focusTarget.next(),e.preventDefault())},handleIndexUpdate(){this.focusTarget.hasFocus?this.focusSuggestItem(this.focusTarget.index+1):this.focusInput()},previousItem(){this.focusTarget.previous()},nextItem(){this.focusTarget.next()},search:y.search,onDeleteItem(){this.focusTarget.previous(),this.getActions()},onClearHistory(){this.focusInput(),this.getActions()},onAction(){this.handleSelect()},focusInput(){this.$refs.input.focus()},focusSuggestItem(e){this.$refs.list.querySelector(`.suggest-item:nth-child(${e})`)?.focus()}}});var z=n(2919),S=n.n(z),P={insert:"head",singleton:!1};p()(S(),P);S().locals;const M=(0,F.Z)(I,o,[],!1,null,null,null).exports},6991:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"release-content"},[t("div",{staticClass:"release-content-markdown",domProps:{innerHTML:e._s(e.content)}}),e._v(" "),t("div",{staticClass:"release-content-actions"},[t("VButton",{on:{click:function(t){return e.$emit("dialog-close")}}},[e._v(" 取消 ")]),e._v(" "),e.detailsLink?t("a",{attrs:{href:e.detailsLink,target:"_blank"}},[t("VButton",[e._v(" 查看详情 ")])],1):e._e(),e._v(" "),e.updateUrl?t("a",{attrs:{href:e.updateUrl,target:"_blank"}},[t("VButton",{attrs:{type:"primary"}},[e._v(" 安装 ")])],1):e._e()],1)])};o._withStripped=!0;var i=n(7274),r=n(2570);const a=`https://github.com/${i.defaultOwner}/Bilibili-Evolved/releases`,c=Vue.extend({components:{VButton:r.VButton},props:{content:{type:String,default:""},updateUrl:{type:String,default:""}},data:()=>({detailsLink:a})});var s=n(8332),l=n.n(s),d=n(4396),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},6904:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-description",domProps:{innerHTML:e._s(e.html)}})};o._withStripped=!0;var i=n(5067),r=n(6080);const a=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,i.getComponentSettings)(this.componentData),html:""}},async created(){this.html=await(0,r.getDescriptionHTML)(this.componentData)}});var c=n(8332),s=n.n(c),l=n(1301),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},5974:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"be-settings"},[t("div",{staticClass:"sidebar"},[t("div",{ref:"widgetsIcon",class:{open:e.widgetsOpened},attrs:{title:"功能"},on:{click:[function(t){return t.shiftKey?e.theWorld.apply(null,arguments):null},function(t){if(t.ctrlKey||t.shiftKey||t.altKey||t.metaKey)return null;e.widgetsOpened=!e.widgetsOpened}],mouseover:function(t){return e.loadPanel("widgetsPanelPopup")}}},[t("VIcon",{attrs:{icon:"widgets",size:26}})],1),e._v(" "),t("div",{ref:"settingsIcon",class:{open:e.settingsOpened},attrs:{title:"设置"},on:{click:function(t){e.settingsOpened=!e.settingsOpened},mouseover:function(t){return e.loadPanel("settingsPanelPopup")}}},[t("VIcon",{attrs:{icon:"settings-outline",size:26}})],1)]),e._v(" "),t("VPopup",{ref:"widgetsPanelPopup",staticClass:"widgets-panel-popup",attrs:{"trigger-element":e.$refs.widgetsIcon,fixed:!0},model:{value:e.widgetsOpened,callback:function(t){e.widgetsOpened=t},expression:"widgetsOpened"}},[t("WidgetsPanel")],1),e._v(" "),t("VPopup",{ref:"settingsPanelPopup",staticClass:"settings-panel-popup",attrs:{"trigger-element":e.$refs.settingsIcon,"auto-close-predicate":e.settingsPanelClosePredicate,fixed:!0},model:{value:e.settingsOpened,callback:function(t){e.settingsOpened=t},expression:"settingsOpened"}},[t("SettingsPanel",{on:{close:function(t){e.settingsOpened=!1}}})],1)],1)};o._withStripped=!0;var i=n(2570),r=n(4435);const a={name:"SettingsContainer",components:{VPopup:i.VPopup,VIcon:i.VIcon,SettingsPanel:()=>Promise.resolve().then(n.bind(n,2467)).then((e=>e.default)),WidgetsPanel:()=>Promise.resolve().then(n.bind(n,263)).then((e=>e.default))},data:()=>({settingsOpened:!1,widgetsOpened:!1}),mounted(){GM_registerMenuCommand("功能",(()=>{this.loadPanel("widgetsPanelPopup"),this.widgetsOpened=!0,this.settingsOpened=!1})),GM_registerMenuCommand("设置",(()=>{this.loadPanel("settingsPanelPopup"),this.widgetsOpened=!1,this.settingsOpened=!0}))},methods:{theWorld(){r.externalApis.theWorld(0)},settingsPanelClosePredicate:e=>!dqa(".be-settings-extra-options").some((t=>t===e.target||t.contains(e.target))),loadPanel(e){const t=this.$refs[e];t&&((t?.loaded??1)||(t.loaded=!0))}}};var c=n(8332),s=n.n(c),l=n(2733),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},2467:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Ae});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"settings-panel",class:{collapsed:e.collapsed,peek:e.peek}},[t("div",{staticClass:"settings-panel-header"},[t("VIcon",{attrs:{icon:"settings-outline"}}),e._v(" "),t("div",{staticClass:"title"},[e._v("设置")]),e._v(" "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1),e._v(" "),t("div",{staticClass:"close",on:{click:function(t){return e.$emit("close")}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1),e._v(" "),t("div",{staticClass:"settings-panel-content"},[t("div",{ref:"sidebarContainer",staticClass:"sidebar"},[t("ComponentTags",{ref:"componentTags",on:{change:function(t){e.searchFilter=t}}})],1),e._v(" "),t("div",{ref:"mainContainer",staticClass:"main"},[t("div",{ref:"componentList",staticClass:"component-list"},[t("div",{staticClass:"settings-panel-search-bar"},[t("TextBox",{staticClass:"settings-panel-search",attrs:{placeholder:"搜索"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}}),e._v(" "),e._l(e.searchBarActions,(function(n){return t("VButton",{key:n.key,attrs:{type:"transparent",icon:"",title:"function"==typeof n.title?n.title(e.searchBarContext):n.title,disabled:!!n.disabled&&n.disabled(e.searchBarContext)}},[t("VIcon",{attrs:{icon:n.icon,size:18},on:{click:function(t){return n.run(e.searchBarContext)}}})],1)}))],2),e._v(" "),e._l(e.renderedComponents,(function(n){return t("div",{key:n.name,on:{"!click":[function(t){return t.ctrlKey?(t.stopPropagation(),e.selectMultipleComponent(n)):null},function(t){return t.shiftKey?(t.stopPropagation(),e.selectMultipleComponent(n,!0)):null}]}},[t("ComponentSettings",{class:{selected:e.isComponentSelected(n.name)},attrs:{"component-data":n,"data-name":n.name},nativeOn:{click:function(t){return e.selectComponent(n)}}})],1)})),e._v(" "),0===e.renderedComponents.length?t("VEmpty"):e._e()],2)]),e._v(" "),t("VPopup",{ref:"detailsPopup",staticClass:"component-detail-panel",attrs:{"trigger-element":e.$refs.componentList,open:e.componentDetailOpen},on:{"popup-change":function(t){!t&&e.closePopper()}}},[e.selectedComponent?t("ComponentDetail",{key:e.selectedComponent.name,attrs:{"component-data":e.selectedComponent},on:{close:function(t){return e.closePopper()}}}):e._e()],1)],1)])};o._withStripped=!0;var i=n(2570),r=n(68),a=n(8612),c=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-settings",class:{virtual:e.virtual}},[e.virtual?e._e():[t("div",{staticClass:"component-settings-row"},[t("TagRing",{attrs:{tags:e.componentData.tags}}),e._v(" "),t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),!1!==e.componentData.configurable?t("SwitchBox",{model:{value:e.settings.enabled,callback:function(t){e.$set(e.settings,"enabled",t)},expression:"settings.enabled"}}):t("VIcon",{staticClass:"details-arrow",attrs:{icon:"right-arrow",size:18}})],1)]],2)};c._withStripped=!0;var s=n(9896),l=n.n(s),d=n(5067),m=n(7136),f=n(714),u=n(2545),p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"tag-ring"},[t("svg",{attrs:{height:e.size,width:e.size}},e._l(e.tags,(function(n,o){return t("circle",{key:n.name,staticClass:"tag-stroke",style:e.getStyle(n,o),attrs:{fill:"transparent","stroke-dasharray":e.circumference+" "+e.circumference,"stroke-width":e.stroke,r:e.radius,cx:e.size/2,cy:e.size/2}})})),0)])};p._withStripped=!0;const b=Vue.extend({props:{tags:{type:Array,required:!0},size:{type:Number,default:18},stroke:{type:Number,default:3}},data(){const e=this.size/2-this.stroke;return{radius:e,circumference:2*e*Math.PI}},methods:{getStyle(e,t){return{strokeDashoffset:t/this.tags.length*this.circumference,stroke:e.color}}}});var h=n(8332),g=n.n(h),F=n(5392),v=n.n(F),w={insert:"head",singleton:!1};g()(v(),w);v().locals;var y=n(4893);const x=(0,y.Z)(b,p,[],!1,null,null,null).exports;var k=n(2504);const C=Vue.extend({components:{SwitchBox:m.Z,TagRing:x,VIcon:f.default},props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,d.getComponentSettings)(this.componentData),virtual:!1}},async mounted(){const e=this.$el,t=(0,a.dq)(".settings-panel-content .main");t?(0,u.visibleInside)(e,t,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.log("settings container not found, virtual scroll will be disabled!")},methods:{markdown:e=>l()(e),descriptionI18n(e){const{description:t,options:n}=e;if(!t){if(n&&Object.keys(n).length>0){return`${Object.keys(n).length}个选项`}return"暂无说明"}return"string"==typeof t?t:t[(0,k.getSelectedLanguage)()]||t["zh-CN"]}}}),A=C;var E=n(2071),B=n.n(E),D={insert:"head",singleton:!1};g()(B(),D);B().locals;const I=(0,y.Z)(A,c,[],!1,null,null,null).exports;var z=n(6316),S=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-detail"},[e.settings?e._e():t("div",{staticClass:"component-not-found"},[e._v("\n 未找到组件'"+e._s(e.componentData.displayName)+"' ("+e._s(e.componentData.name)+"), 可能已被卸载.\n ")]),e._v(" "),e.settings?[t("div",{staticClass:"component-detail-header"},[t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),t("VIcon",{staticClass:"close",attrs:{icon:"close",size:18},on:{click:function(t){return e.$emit("close")}}})],1),e._v(" "),t("div",{staticClass:"component-detail-tags"},e._l(e.componentData.tags,(function(n){return t("div",{key:n.name,staticClass:"tag"},[t("div",{staticClass:"tag-color",style:{backgroundColor:n.color}}),e._v("\n "+e._s(n.displayName)+"\n ")])})),0),e._v(" "),e.componentData.options&&e.generatedOptions.length>0||e.componentData.extraOptions?[t("div",{staticClass:"component-detail-options"},[t("div",{staticClass:"component-detail-options-title"},[e._v("选项")]),e._v(" "),e._l(e.generatedOptions,(function([n,o]){return t("div",{key:n,staticClass:"generated-option"},[t("ComponentOption",{attrs:{name:n,"display-name":o.displayName,option:o,component:e.componentData}})],1)})),e._v(" "),e.componentData.extraOptions?t("div",{staticClass:"extra-option"},[t(e.componentData.extraOptions,{tag:"component",attrs:{"component-data":e.componentData}})],1):e._e(),e._v(" "),e._t("default")],2)]:e._e(),e._v(" "),!e.componentData.options||e.componentData.description?[t("ComponentDescription",{staticClass:"component-detail-description",attrs:{"component-data":e.componentData}})]:e._e(),e._v(" "),t("div",{staticClass:"component-detail-grow"}),e._v(" "),t("div",{staticClass:"component-detail-internal-data"},[e.componentData.commitHash?t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("Commit: "+e._s(e.componentData.commitHash.substring(0,9)))])]):e._e(),e._v(" "),t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("内部名称: "+e._s(e.componentData.name))]),e._v(" "),!1!==e.componentData.configurable&&e.componentActions.length>0?t("MiniToast",{staticClass:"extra-actions-wrapper",attrs:{placement:"bottom",trigger:"click"},scopedSlots:e._u([{key:"toast",fn:function(){return[t("div",{staticClass:"extra-actions-list"},e._l(e.componentActions,(function(n){return t("div",{key:n.name},[n.component?t(n.component,{tag:"component",attrs:{item:n,component:e.componentData}}):t("ComponentAction",{directives:[{name:"show",rawName:"v-show",value:!1!==n.visible,expression:"a.visible !== false"}],staticClass:"extra-action-item",attrs:{item:n,component:e.componentData}})],1)})),0)]},proxy:!0}],null,!1,2977217718)},[t("div",{staticClass:"extra-actions"},[t("VIcon",{attrs:{icon:"mdi-dots-vertical",size:16}})],1)]):e._e()],1)])]:e._e()],2)};S._withStripped=!0;var P=n(6904),M=function(){var e=this,t=e._self._c;return t("div",{staticClass:"component-option",attrs:{"data-type":e.type}},[t("div",{staticClass:"option-name"},[e._v("\n "+e._s(e.displayName)+"\n ")]),e._v(" "),"text"===e.type||"number"===e.type?t("TextBox",{attrs:{"change-on-blur":"",validator:e.option.validator,text:e.value.toString(),placeholder:e.value.toString()},on:{change:function(t){"text"===e.type?e.valueChange(t):e.numberChange(t)}}}):e._e(),e._v(" "),"boolean"===e.type?t("SwitchBox",{attrs:{checked:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"color"===e.type?t("ColorPicker",{attrs:{compact:!0,"popup-offset":-95,color:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"range"===e.type?t("RangeInput",{attrs:{validator:e.option.validator,range:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"image"===e.type?t("ImagePicker",{attrs:{image:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"dropdown"===e.type?t("VDropdown",{attrs:{value:e.value,items:e.getDropdownItems(e.option.dropdownEnum),"key-mapper":e=>e},on:{change:function(t){return e.valueChange(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}],null,!1,3506243887)}):e._e(),e._v(" "),"switch"===e.type?t("SwitchOptions",{attrs:{"small-size":"","popup-mode":!1,options:e.option.defaultValue}}):e._e(),e._v(" "),"slider"===e.type?t("VSlider",e._b({attrs:{value:e.value},on:{change:function(t){return e.debounceValueChange(t)}}},"VSlider",e.option.slider,!1)):e._e(),e._v(" "),"unknown"===e.type?t("div",{staticClass:"unknown-option-type"},[e._v("未知的选项类型")]):e._e()],1)};M._withStripped=!0;function O(e){this.settings.options[this.name]=e,this.value=e}const V={name:"ComponentOption",components:{SwitchOptions:n(3861).default,TextBox:i.TextBox,SwitchBox:i.SwitchBox,ColorPicker:i.ColorPicker,RangeInput:i.RangeInput,VDropdown:i.VDropdown,ImagePicker:i.ImagePicker,VSlider:i.VSlider},props:{name:{type:String,required:!0},displayName:{type:String,default:""},option:{type:Object,required:!0},component:{type:Object,required:!0}},data(){const e=(0,d.getComponentSettings)(this.component);return{settings:e,value:e.options[this.name]}},computed:{type(){const e=this.option,{defaultValue:t}=e;switch(typeof t){case"boolean":return"boolean";case"number":return e.slider?"slider":"number";case"string":return e.color?"color":e.dropdownEnum?"dropdown":"text";case"object":return"start"in t&&"end"in t?"range":"name"in t&&"url"in t?"image":"name"in t&&"switches"in t?"switch":"unknown";default:return"unknown"}}},methods:{getDropdownItems:e=>{if(Array.isArray(e))return e;return Object.entries(e).filter((e=>{let[t]=e;const n=t.charCodeAt(0);return!(n>=48&&n<=57)})).map((e=>{let[,t]=e;return t}))},numberChange(e){const t=this.settings,n=parseFloat(e);Number.isNaN(n)||(t.options[this.name]=n,this.value=n)},debounceValueChange:lodash.debounce(O,200),valueChange:O}};var T=n(1130),L=n.n(T),j={insert:"head",singleton:!1};g()(L(),j);L().locals;const R=(0,y.Z)(V,M,[],!1,null,"730efac0",null).exports;var N=n(5158),q=n(4909),Z=n(4227);const U=[e=>({name:"uninstall",displayName:"卸载",icon:"mdi-trash-can-outline",visible:(0,d.isUserComponent)(e),action:async()=>{const{before:t,after:n}=(0,r.getHook)("userComponents.remove",e);await t(),await(0,Z.uninstallComponent)(e.name),await n()}})],[H]=(0,q.registerAndGetData)("settingsPanel.componentActions",U);var W=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-action",class:{disabled:e.disabled},attrs:{"aria-disabled":e.disabled,title:e.item.title},on:{click:e.handleClick}},[t("VIcon",{attrs:{icon:e.item.icon,size:16}}),e._v("\n "+e._s(e.item.displayName)+"\n")],1)};W._withStripped=!0;const G=Vue.extend({components:{VIcon:i.VIcon},props:{item:{type:Object,required:!0},component:{type:Object,required:!0}},data:()=>({disabled:!1}),methods:{async handleClick(){if(!this.disabled)try{this.disabled=!0,await this.item.action(this.component)}finally{this.disabled=!1}}}});var Q=n(5851),Y=n.n(Q),X={insert:"head",singleton:!1};g()(Y(),X);Y().locals;const K=(0,y.Z)(G,W,[],!1,null,null,null).exports,J=Vue.extend({components:{ComponentDescription:P.Z,ComponentOption:R,ComponentAction:K,VButton:i.VButton,VIcon:i.VIcon,SwitchBox:i.SwitchBox,MiniToast:i.MiniToast},mixins:[N.U],data(){return{virtual:!1,componentActions:H.map((e=>e(this.componentData))).filter((e=>void 0!==e&&!1!==e.visible))}},computed:{generatedOptions(){return Object.entries(this.componentData.options??{}).filter((e=>{let[,t]=e;return!t.hidden}))}},async mounted(){const e=this.$el;(0,u.visible)(e,(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})),await this.$nextTick(),this.$emit("mounted"),console.log(this.componentActions)}});var _=n(2270),$=n.n(_),ee={insert:"head",singleton:!1};g()($(),ee);$().locals;const te=(0,y.Z)(J,S,[],!1,null,null,null).exports;var ne=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-tags-preview"},[t("VPopup",{staticClass:"settings-panel-sub-page",attrs:{lazy:!1,"trigger-element":e.selectedSubPageTrigger},model:{value:e.selectedSubPageOpen,callback:function(t){e.selectedSubPageOpen=t},expression:"selectedSubPageOpen"}},[t("keep-alive",[e.selectedSubPage?t(e.selectedSubPage,{tag:"component"}):e._e()],1)],1),e._v(" "),t("div",{staticClass:"icon-list"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}})],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(e){return t("div",{key:e.name,staticClass:"component-tags-item"},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:e.icon}})],1)}))],2),e._v(" "),t("div",{staticClass:"component-tags"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"tag-count"},[e._v("("+e._s(n.count)+")")])],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",on:{click:function(t){return e.openSubPage(t,n.component)}}},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])],1)}))],2)],1)};ne._withStripped=!0;var oe=n(8014),ie=n(9397);const re=[{name:"userComponentsManage",displayName:"组件",component:()=>Promise.resolve().then(n.bind(n,9658)).then((e=>e.default)),icon:"mdi-cube-scan"},{name:"userPluginsManage",displayName:"插件",component:()=>Promise.resolve().then(n.bind(n,5808)).then((e=>e.default)),icon:"mdi-puzzle-outline"},{name:"customStylesManage",displayName:"样式",component:()=>Promise.resolve().then(n.bind(n,11)).then((e=>e.default)),icon:"mdi-tune"},{name:"about",displayName:"关于",component:()=>Promise.resolve().then(n.bind(n,3768)).then((e=>e.default)),icon:"mdi-information-outline"}],ae=[e=>{let{renderedComponents:t}=e;return{name:"all",displayName:"全部",color:"inherit",icon:"mdi-shape-outline",order:0,count:t.length,filter:e=>e}},e=>{let{renderedComponents:t}=e;const n=[];t.forEach((e=>e.tags.forEach((e=>{n.push({count:0,...e,filter:t=>t.filter((t=>"all"===e.name||t.tags.some((t=>t.name===e.name))))})}))));const o=lodash.countBy(n,(e=>e.name));return lodash.uniqBy(n,(e=>e.name)).map((e=>({...e,count:o[e.name]})))}],[ce]=(0,q.registerAndGetData)("settingsPanel.tagFilters",ae),se=Vue.extend({components:{VIcon:f.default,VPopup:ie.default},data:()=>({tags:[],selectedTagName:"",subPages:re,selectedSubPage:null,selectedSubPageOpen:!1,selectedSubPageTrigger:null}),created(){this.refreshTags(),this.reset()},mounted(){this.selectTag(this.tags[0])},methods:{refreshTags(){const e=z.components.filter((e=>!e.hidden)),t=ce.flatMap((t=>"function"==typeof t?t({components:z.components,renderedComponents:e}):t));this.tags=t.sort((0,oe.ascendingSort)((e=>e.order)))},reset(){this.selectedTagName=this.tags[0].name},selectTag(e){this.selectedTagName=e.name;const{filter:t}=this.tags.find((t=>t.name===e.name));this.$emit("change",t)},async openSubPage(e,t){this.selectedSubPage!==t?(this.selectedSubPage=t,this.selectedSubPageTrigger=e.currentTarget,await this.$nextTick(),this.selectedSubPageOpen=!0):this.selectedSubPageOpen=!this.selectedSubPageOpen}}}),le=se;var de=n(1360),me=n.n(de),fe={insert:"head",singleton:!1};g()(me(),fe);me().locals;const ue=(0,y.Z)(le,ne,[],!1,null,null,null).exports;var pe=n(6080),be=n(3823),he=n(5157);const ge=[{key:"uninstallSelectedComponent",title:"卸载所选组件",icon:"mdi-trash-can-outline",disabled:e=>{let{selectedComponents:t}=e;return 0===t.length},run:e=>{window.confirm(`确定要卸载所选的 ${e.selectedComponents.length} 个组件吗?`)&&(e.selectedComponents.forEach((e=>{let{name:t}=e;(0,he.isBuiltInComponent)(t)?be.Toast.info("内置组件不能卸载","检查更新",3e3):(0,Z.uninstallComponent)(t)})),e.selectedComponents=[])}}],[Fe]=(0,q.registerAndGetData)("settingsPanel.searchBarActions",[...ge]),ve=e=>e,we={name:"SettingsPanel",components:{VIcon:i.VIcon,TextBox:i.TextBox,VPopup:i.VPopup,VButton:i.VButton,VEmpty:i.VEmpty,ComponentSettings:I,ComponentDetail:te,ComponentTags:ue},data:()=>({components:z.components,renderedComponents:z.components.filter((e=>!e.hidden)),selectedComponent:null,selectedComponents:[],componentDetailOpen:!1,collapsed:!1,peek:!1,searchKeyword:"",searchFilter:ve,searchBarActions:Fe}),computed:{isComponentSelected(){return e=>this.selectedComponents.some((t=>t.name===e))},tags(){const e=this.renderedComponents;let t=[];e.forEach((e=>e.tags.forEach((e=>{t.push({count:0,...e})}))));const n=lodash.countBy(t,(e=>e.name));return t=lodash.uniqBy(t,(e=>e.name)),t.forEach((e=>e.count=n[e.name])),t},searchBarContext(){return lodash.pick(this,"components","selectedComponent","selectedComponents","searchKeyword","searchFilter")}},watch:{searchKeyword:lodash.debounce((function(){this.updateRenderedComponents()}),200),searchFilter(){this.searchKeyword="",this.selectedComponents=[],this.updateRenderedComponents()},components(){this.updateRenderedComponents(),this.$refs.componentTags.refreshTags(),this.components.some((e=>e.name===this.selectedComponent?.name))||(this.selectedComponent=null)}},methods:{closePopper(){this.selectedComponent=null,this.selectedComponents=[],this.componentDetailOpen=!1},selectMultipleComponent(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.selectedComponent&&t){const{name:t}=e,{name:n}=this.selectedComponent,o=this.renderedComponents;let i=o.findIndex((e=>e.name===n)),r=o.findIndex((e=>e.name===t));return i>r&&([i,r]=[r,i]),void(this.selectedComponents=o.slice(i,r+1))}const n=this.selectedComponents,o=n.find((t=>t.name===e.name));o?(0,a.deleteValue)(n,(e=>e.name===o.name)):n.push(e)},selectComponent(e){this.selectedComponents=[];const t=(0,r.getHook)("settingsPanel.componentDetail.close"),n=(0,r.getHook)("settingsPanel.componentDetail.open"),o=this.selectedComponent?.name,i=this.componentDetailOpen&&o===e.name;t.before(o),this.closePopper(),t.after(o),i||(n.before(e.name),this.selectedComponents.push(e),this.selectedComponent=e,this.componentDetailOpen=!0,n.after(e.name))},async updateRenderedComponents(){const e=await(async()=>this.searchKeyword?Object.fromEntries(await Promise.all(z.components.map((async e=>[e.name,[e.name,e.displayName,e.tags.map((e=>`${e.name}\n${e.displayName}`)).join("\n"),await(0,pe.getDescriptionText)(e)].join("\n").toLowerCase()])))):{})(),t=z.components.filter((t=>{if(t.hidden)return!1;if(this.searchKeyword){const n=e[t.name];return!!n&&n.includes(this.searchKeyword.toLowerCase())}return!0}));this.renderedComponents=this.searchFilter(t)}}},ye=we;var xe=n(6716),ke=n.n(xe),Ce={insert:"head",singleton:!1};g()(ke(),Ce);ke().locals;const Ae=(0,y.Z)(ye,o,[],!1,null,null,null).exports},263:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"widgets-panel"},[t("div",{staticClass:"widgets-panel-header"},[t("VIcon",{attrs:{icon:"widgets"}}),e._v("功能")],1),e._v(" "),e.loading||0!==e.widgets.length?e._e():t("VEmpty",{staticClass:"widgets-empty"},[t("div",{staticClass:"widgets-empty-content"},[e._v("\n 空空如也哦 = ̄ω ̄="),t("br"),e._v("\n 可点此参考\n "),t("a",{attrs:{href:"https://bilibili-evolved-doc.vercel.app/docs/user/settings",target:"_blank"}},[e._v("\n 用户手册\n ")]),e._v("\n 以安装所需功能\n ")])]),e._v(" "),t("div",{staticClass:"widget-items"},e._l(e.widgets,(function(e){return t(e.component,{key:e.name,tag:"component",staticClass:"widget-item",attrs:{options:e.options}})})),1)],1)};o._withStripped=!0;var i=n(8612),r=n(2570),a=n(4909),c=n(3937);const s=[],l=Vue.extend({components:{VIcon:r.VIcon,VEmpty:r.VEmpty},data:()=>(unsafeWindow.allWidgets=s,{allWidgets:s,widgets:[],loading:!0}),watch:{allWidgets(){this.widgets=[],this.allWidgets.forEach((async e=>{const t=await(async e=>{if(e.urlExclude&&e.urlExclude.some(i.matchUrlPattern))return!1;if(e.urlInclude&&e.urlInclude.every(lodash.negate(i.matchUrlPattern)))return!1;if(e.condition){const t=e.condition();return!0===t||t instanceof Promise&&!0===await t}return!0})(e);t?this.widgets.push(e):(0,i.deleteValue)(this.widgets,(t=>t.name===e.name))})),console.log("updated widgets",this.widgets)}},created(){(0,a.registerAndGetData)(c.WidgetsPlugin,s),this.$nextTick().then((()=>this.loading=!1))}});var d=n(8332),m=n.n(d),f=n(2572),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},3768:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-about-page"},[t("div",{staticClass:"be-about-page-header"},[t("VIcon",{attrs:{icon:"mdi-information-outline"}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("关于")])],1),e._v(" "),t("div",{staticClass:"be-about-page-content"},[t("div",{staticClass:"script-meta-info"},[t("div",{staticClass:"meta-info-name"},[e._v("\n "+e._s(e.meta.name)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-version"},[e._v("\n "+e._s(e.meta.compilationInfo.versionWithTag)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-description"},[e._v("\n "+e._s(e.meta.description)+"\n ")])]),e._v(" "),e.feedbackSupported?t("div",{staticClass:"script-links"},[t("a",{staticClass:"homepage script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-home-outline",size:20}}),e._v("\n 主页\n ")],1)],1),e._v(" "),t("a",{staticClass:"feedback script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/issues"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-message-text-outline",size:18}}),e._v("\n 反馈\n ")],1)],1),e._v(" "),t("a",{staticClass:"releases script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/releases"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-update",size:20}}),e._v("\n 更新日志\n ")],1)],1),e._v(" "),t("a",{staticClass:"donate script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/donate.md"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-heart-outline",size:18}}),e._v("\n 捐赠\n ")],1)],1)]):e._e(),e._v(" "),t("div",{staticClass:"about-page-actions"},e._l(e.aboutPageActions,(function(n){return t("VButton",{key:n.name,staticClass:"about-page-action",attrs:{disabled:n.disabled},on:{click:function(t){return e.runAction(n,t)}}},[t("VIcon",{attrs:{icon:n.icon,size:n.iconSize||20}}),e._v("\n "+e._s(n.displayName)+"\n ")],1)})),1)])])};o._withStripped=!0;var i=n(2046),r=n(9083),a=n(2570),c=n(5074);const s=(()=>{const e=GM_info.scriptMetaStr.match(/@namespace\s*(.+)/);return!e||!e[1]||!e[1].includes("greasyfork")})(),l=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon},data:()=>({meta:i.meta,aboutPageActions:c.a,feedbackSupported:s}),methods:{formatDateTime:r.formatDateTime,async runAction(e,t){e.disabled=!0;try{await e.run(t)}finally{e.disabled=!1}}}});var d=n(8332),m=n.n(d),f=n(6565),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},9658:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-components-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(6316),r=n(4227),a=n(5067),c=n(68),s=n(2861),l=n(2432);const d={key:"userComponents",icon:"mdi-cube-scan",title:"组件",description:"可以在此处添加或删除组件, 要查看组件详情, 请回到设置面板查看.",list:i.components,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,a.isUserComponent)(e)),async onItemAdd(e,t){const{before:n,after:o}=(0,c.getHook)("userComponents.add",e,t);await n();const{metadata:i,message:a}=await(0,r.installComponent)(e);return await o(i),a}},m=Vue.extend({components:{ManagePanel:s.Z,UserItem:l.Z},data:()=>({config:d}),methods:{getItemConfig:e=>({key:"userComponents",item:e,isUserItem:(0,a.isUserComponent)(e),getSettings:e=>(0,a.getComponentSettings)(e),onItemRemove:async e=>{const{before:t,after:n}=(0,c.getHook)("userComponents.remove",e);await t(),(0,r.uninstallComponent)(e.name),await n()}})}});const f=(0,n(4893).Z)(m,o,[],!1,null,null,null).exports},5808:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-plugins-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(5067),r=n(68),a=n(9094),c=n(2861),s=n(2432);const l={key:"userPlugins",icon:"mdi-puzzle-outline",title:"插件",description:"可以在此处管理插件, 插件能够增强现有组件的功能. 内置插件包括脚本本体包含的插件和组件自带的插件, 组件自带的插件会自动随组件卸载而卸载.",list:a.plugins,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,i.isUserPlugin)(e.name)),async onItemAdd(e,t){const{before:n,after:o}=(0,r.getHook)("userPlugins.add",e,t);await n();const{message:i,metadata:c}=await(0,a.installPlugin)(e);return await o(c),i}},d=Vue.extend({components:{ManagePanel:c.Z,UserItem:s.Z},data:()=>({config:l}),methods:{getItemConfig:e=>({key:"userPlugins",item:e,isUserItem:(0,i.isUserPlugin)(e.name),onItemRemove:async e=>{const{before:t,after:n}=(0,r.getHook)("userPlugins.remove",e);await t(),(0,a.uninstallPlugin)(e.name),await n()}})}});const m=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},11:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-styles-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(68),r=n(473),a=n(2861),c=n(2432);const s={key:"userStyles",icon:"mdi-tune",title:"样式",description:"可以在此处管理自定义样式, 自定义样式能简单修改界面元素以满足您的需求, 对于更复杂的样式, 推荐使用 Stylus 浏览器插件来管理.",list:r.styles,listFilter:(e,t)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase())),async onItemAdd(e,t){const{before:n,after:o}=(0,i.getHook)("userStyles.add",e,t);await n();const{message:a,metadata:c}=await(0,r.installStyle)(e);return await o(c),a}},l=Vue.extend({components:{ManagePanel:a.Z,UserItem:c.Z},data:()=>({config:s}),methods:{getItemConfig:e=>({key:"userStyles",item:e,isUserItem:!0,onItemRemove:async e=>{const{before:t,after:n}=(0,i.getHook)("userStyles.remove",e);await t(),(0,r.uninstallStyle)(e.name),await n()}})}});const d=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},2861:(e,t,n)=>{"use strict";n.d(t,{Z:()=>D});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-panel"},[t("div",{staticClass:"manage-panel-title sub-page-row"},[t("VIcon",{attrs:{icon:e.config.icon}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("\n "+e._s(e.config.title)+"\n ")])],1),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"description-text"},[e._v("\n "+e._s(e.config.description)+"\n ")])]):e._e(),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row separator"}):e._e(),e._v(" "),t("div",{staticClass:"sub-page-row add-item-row"},[t("div",{staticClass:"title-text"},[e._v("添加"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"item-actions"},[t("VButton",{ref:"batchAddButton",on:{click:function(t){return e.showBatchAddPopup()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-download-multiple"}}),e._v("\n 批量\n ")],1),e._v(" "),t("VButton",{on:{click:function(t){return e.browse()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-folder-open-outline"}}),e._v("\n 浏览\n ")],1),e._v(" "),t("OnlineRegistryButton",[t("VIcon",{attrs:{size:18,icon:"mdi-web"}}),e._v("\n 在线\n ")],1)],1),e._v(" "),t("VPopup",{staticClass:"batch-add-popup",attrs:{"trigger-element":e.$refs.batchAddButton},model:{value:e.batchAddShow,callback:function(t){e.batchAddShow=t},expression:"batchAddShow"}},[t("TextArea",{ref:"batchAddTextArea",staticClass:"batch-add-textarea",attrs:{placeholder:"批量粘贴功能链接, 可以混合其他类型的功能 (如合集包)"},model:{value:e.batchUrl,callback:function(t){e.batchUrl=t},expression:"batchUrl"}}),e._v(" "),t("div",{staticClass:"batch-add-actions"},[t("VButton",{on:{click:function(t){e.batchAddShow=!1}}},[t("VIcon",{attrs:{size:12,icon:"close"}}),e._v("\n 取消\n ")],1),e._v(" "),t("VButton",{attrs:{type:"primary",disabled:!e.batchUrl},on:{click:function(t){return e.batchAddItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1)],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("TextBox",{staticClass:"item-url",attrs:{placeholder:"粘贴"+e.config.title+"链接"},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.addItem()}},model:{value:e.url,callback:function(t){e.url=t},expression:"url"}}),e._v(" "),t("VButton",{attrs:{disabled:!e.url},on:{click:function(t){return e.addItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row separator"}),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"title-text"},[e._v("已安装的"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"exclude-built-in"},[e._v("\n 隐藏内置"+e._s(e.config.title)+"\n "),t("SwitchBox",{model:{value:e.excludeBuiltIn,callback:function(t){e.excludeBuiltIn=t},expression:"excludeBuiltIn"}})],1)]),e._v(" "),t("div",{staticClass:"sub-page-row search-item-row"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{staticClass:"list-search",attrs:{placeholder:`在 ${e.filteredList.length} 个${e.config.title}中搜索`},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),e.loaded?e._e():t("div",{staticClass:"sub-page-row"},[t("VLoading",{key:"loading"})],1),e._v(" "),e.loaded?t("div",{staticClass:"manage-item-list"},[0===e.debouncedList.length?t("VEmpty",{key:"empty"}):e._e(),e._v(" "),e._l(e.debouncedList,(function(n){return t("ManageItem",{key:n.name},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)}))],2):e._e()])};o._withStripped=!0;var i=n(9761),r=n(7120),a=n(3823),c=n(4732),s=n(1003),l=n(2570),d=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-item",class:{virtual:e.virtual}},[e.virtual?e._e():e._t("default")],2)};d._withStripped=!0;var m=n(5158);const f=Vue.extend({mixins:[(0,m.B)(".manage-panel .manage-item-list")]});var u=n(8332),p=n.n(u),b=n(2060),h=n.n(b),g={insert:"head",singleton:!1};p()(h(),g);h().locals;var F=n(4893);const v=(0,F.Z)(f,d,[],!1,null,null,null).exports;var w=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{on:{mouseover:function(t){return e.initPopup()},click:function(t){return e.togglePopup()}}},[e._t("default")],2)};w._withStripped=!0;var y=n(304);const x=Vue.extend({components:{VButton:l.VButton},methods:{initPopup:y.initPopup,togglePopup:y.togglePopup}});const k=(0,F.Z)(x,w,[],!1,null,null,null).exports,C=Vue.extend({components:{VIcon:l.VIcon,VButton:l.VButton,TextBox:l.TextBox,VEmpty:l.VEmpty,VLoading:l.VLoading,VPopup:l.VPopup,TextArea:l.TextArea,SwitchBox:l.SwitchBox,ManageItem:v,OnlineRegistryButton:k},props:{config:{type:Object,required:!0}},data:()=>({search:"",url:"",loaded:!1,batchAddShow:!1,batchUrl:"",excludeBuiltIn:!0,debouncedList:[]}),computed:{filteredList(){return this.config.list.filter((e=>this.config.listFilter(e,this.search,this.excludeBuiltIn)))}},watch:{filteredList(){this.loaded=!1,window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}),200)}},mounted(){window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}))},methods:{async browse(){const e=await(0,r.pickFile)({accept:"*.js;*.zip"});if(0===e.length)return;const[t]=e;let n;if(t.name.endsWith(".zip")){const e=await s.JSZipLibrary,o=await e.loadAsync(t),i=Object.values(o.files);if(0===i.length)return void a.Toast.info("不能打开空文件",`添加${this.config.title}`);n=await i[0].async("text")}else n=await t.text();try{a.Toast.info(await(this.config.onItemAdd?.(n,"")),`添加${this.config.title}`)}catch(e){(0,c.logError)(e)}},async showBatchAddPopup(){this.batchAddShow=!this.batchAddShow,this.batchAddShow&&(await this.$nextTick(),this.$refs.batchAddTextArea?.focus())},async addItem(){if(!this.url)return;const e=a.Toast.info("获取中...",`添加${this.config.title}`);try{const t=await(0,i.tryParseZip)(this.url);e.message=await(this.config.onItemAdd?.(t,this.url)),this.url=""}catch(t){console.error(t),e.type=a.ToastType.Error,e.message=t}},async batchAddItem(){if(!this.batchUrl)return;const e=this.batchUrl.split("\n").map((e=>e.trim())).filter((e=>""!==e)),t=a.Toast.info(`获取中... (0/${e.length})`,"批量添加");let n=0;const o=await Promise.allSettled(e.map((async o=>{const{message:r}=await(0,i.installFeature)(o);return n++,t.message=`获取中... (${n}/${e.length})`,r}))),r=o.filter((e=>"fulfilled"===e.status)).length,c=o.filter((e=>"rejected"===e.status)).length;t.message=`安装完成, 成功 ${r} 个, 失败 ${c} 个.`;const s=o.map(((t,n)=>{const o=e[n];return"fulfilled"===t.status?`${t.value} ${o}`:`${t.reason} ${o}`})).join("\n");console.log(s),this.batchUrl=""}}});var A=n(9356),E=n.n(A),B={insert:"head",singleton:!1};p()(E(),B);E().locals;const D=(0,F.Z)(C,o,[],!1,null,null,null).exports},2432:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-item"},[t("div",{staticClass:"user-item-display-name"},[e._v("\n "+e._s(e.config.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"user-item-name"},[e._v("\n "+e._s(e.config.item.name)+"\n ")]),e._v(" "),e.config.isUserItem?t("div",{staticClass:"user-item-line"}):e._e(),e._v(" "),e.config.isUserItem?t("div",{ref:"removeIcon",staticClass:"user-item-remove",on:{dblclick:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:18}}),e._v(" "),t("div",{ref:"removeConfirmTemplate",staticClass:"user-item-remove-confirm"},[e._v("\n 确定要卸载 "+e._s(e.config.item.displayName)+" 吗?\n "),t("VButton",{attrs:{type:"primary"},on:{click:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}}),e._v("\n 确定\n ")],1)],1)],1):e._e()])};o._withStripped=!0;var i=n(3823),r=n(2570),a=n(1589);const c=Vue.extend({components:{VIcon:r.VIcon,VButton:a.default},props:{config:{type:Object,required:!0}},data:()=>({removeConfirm:!1,settings:{}}),mounted(){this.config.getSettings&&(this.settings=this.config.getSettings(this.config.item)),this.config.isUserItem&&i.Toast.mini(this.$refs.removeConfirmTemplate,this.$refs.removeIcon,{trigger:"click",hideOnClick:!0})},methods:{async removeItem(){await this.config.onItemRemove(this.config.item),this.removeConfirm=!1}}});var s=n(8332),l=n.n(s),d=n(4436),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},8979:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-video-control-bar-extend squirtle-block-wrap"},e._l(e.items,(function(n){return t("div",{key:n.name,staticClass:"be-video-control-bar-extend-item bilibili-player-video-btn squirtle-block-wrap bpx-player-ctrl-btn",style:{order:n.order.toString()},attrs:{"data-name":n.name},on:{click:function(e){return n.action(e)}}},[t("button",[t("span",{staticClass:"bp-svgicon"},[t("VIcon",{attrs:{icon:n.icon}})],1)]),e._v(" "),t("div",{staticClass:"be-video-control-tooltip"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)};o._withStripped=!0;var i=n(2570);const r=Vue.extend({components:{VIcon:i.VIcon},props:{items:{type:Array,required:!0}}});var a=n(8332),c=n.n(a),s=n(3520),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},3792:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-mini-toast-wrapper"},[t("div",{ref:"content",staticClass:"be-mini-toast-content"},[e._t("default")],2),e._v(" "),t("div",{ref:"toast",staticClass:"be-mini-toast"},[e._t("toast")],2)])};o._withStripped=!0;var i=n(9945);const r={body:()=>document.body,local:void 0},a=Vue.extend({model:{prop:"show",event:"change"},props:{show:{type:Boolean,default:!1},container:{type:String,default:"local"},placement:{type:String,default:void 0}},data:()=>({toast:null}),watch:{placement(e){e&&this.toast&&(this.toast.placement=e)}},async mounted(){await this.$nextTick();const e=r[this.container];this.toast=(0,i.$)(this.$refs.toast,this.$refs.content,{placement:this.placement,showOnCreate:this.show,trigger:"mouseenter focusin",onHide:()=>{this.$emit("change",!1)},onShow:()=>{this.$emit("change",!0)},appendTo:"function"==typeof e?e():e,...this.$attrs})}});const c=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},5947:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"toast-card visible",class:"toast-"+e.card.type,on:{mouseover:e.stopTimer,mouseout:e.startTimer}},[t("div",{staticClass:"toast-card-border"}),e._v(" "),t("div",{staticClass:"toast-card-header"},[t("h1",{staticClass:"toast-card-title"},[e._v("\n "+e._s(e.card.title)+"\n ")]),e._v(" "),t("div",{staticClass:"toast-card-close",class:{"show-progress":Boolean(e.remainingTime)},attrs:{title:"关闭"},on:{click:function(t){return e.card.close()}}},[t("ProgressRing",{attrs:{size:28,stroke:2,progress:e.progressMax-e.remainingTime,max:e.progressMax}}),e._v(" "),t("VIcon",{attrs:{icon:"close",size:14}})],1)]),e._v(" "),t("div",{staticClass:"toast-card-message",domProps:{innerHTML:e._s(e.card.message)}})])};o._withStripped=!0;var i=n(2570);const r=Vue.extend({components:{VIcon:i.VIcon,ProgressRing:i.ProgressRing},props:{card:{type:Object,required:!0}},data:()=>({progressMax:0,remainingTime:0}),created(){this.readDuration()},methods:{durationTick(){const{closeTime:e}=this.card;e&&(this.remainingTime=e-Number(new Date),this.remainingTime>0&&requestAnimationFrame((()=>this.durationTick())))},readDuration(){const{duration:e,closeTime:t}=this.card;e&&(this.progressMax=t-Number(new Date),this.remainingTime=this.progressMax,requestAnimationFrame((()=>this.durationTick())))},stopTimer(){this.card.clearDuration(),this.progressMax=0,this.remainingTime=0},startTimer(){this.card.setDuration(),this.readDuration()}}});var a=n(8332),c=n.n(a),s=n(6128),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},7136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-switch-box",class:{checked:e.checked,disabled:e.disabled},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.disabled,tabindex:"0"},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])?null:(t.preventDefault(),e.toggle())},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.toggle())}]}},[t("label",[t("input",{ref:"input",attrs:{type:"checkbox",disabled:e.disabled},domProps:{checked:e.checked},on:{change:function(t){return t.stopPropagation(),e.$emit("change",t.target.checked)}}}),e._v(" "),e._m(0)])])};o._withStripped=!0;const i=Vue.extend({name:"SwitchBox",model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},methods:{toggle(){this.disabled||(this.$refs.input.checked=!this.$refs.input.checked,this.$emit("change",this.$refs.input.checked))}}});var r=n(8332),a=n.n(r),c=n(1278),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"bar"},[e("div",{staticClass:"thumb"})])}],!1,null,null,null).exports},2827:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-textbox",class:{linear:e.linear},attrs:{role:"textbox"}},[t("input",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"input",e.$attrs,!1),e.restListeners)),e._v(" "),e.linear?t("div",{staticClass:"linear-bar"}):e._e()])};o._withStripped=!0;var i=n(3448);const r=Vue.extend({name:"TextBox",mixins:[i.t],props:{linear:{type:Boolean,default:!1}}});var a=n(8332),c=n.n(a),s=n(7146),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"d1f779a8",null).exports},1589:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-button",class:{[e.type]:!0,disabled:e.disabled,round:e.round,icon:e.icon},attrs:{role:"button","aria-disabled":e.disabled,tabindex:e.disabled?-1:0},on:{keydown:[function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)},function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)}]}},e.disabled?null:e.$listeners),[t("div",{staticClass:"content-container"},[e._t("default",(function(){return[e._v("Button")]}))],2)])};o._withStripped=!0;const i=Vue.extend({name:"VButton",props:{type:{type:String,default:"light"},round:{type:Boolean,default:!1},icon:{type:Boolean,default:!1}},computed:{disabled(){return Boolean(this.$attrs.disabled)}}});var r=n(8332),a=n.n(r),c=n(3171),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,"18aa9448",null).exports},1803:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-loading"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};o._withStripped=!0;var i=n(4909);const[r]=(0,i.registerAndGetData)("vLoading",{content:"加载中..."}),a=Vue.extend({name:"VLoading",data:()=>({config:r})});var c=n(8332),s=n.n(c),l=n(8199),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},9397:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-popup",class:{open:e.open,fixed:e.fixed,close:!e.open,"closed-style":e.closedStyle}},e.$listeners),[e.loaded?e._t("default"):e._e()],2)};o._withStripped=!0;const i=Vue.extend({name:"VPopup",model:{prop:"open",event:"popup-change"},props:{open:{type:Boolean,required:!1,default:!1},closedStyle:{type:Boolean,required:!1,default:!0},fixed:{type:Boolean,required:!1,default:!1},triggerElement:{required:!1,default:null},lazy:{type:Boolean,required:!1,default:!0},autoClose:{type:Boolean,required:!1,default:!0},autoDestroy:{type:Boolean,required:!1,default:!1},escClose:{type:Boolean,required:!1,default:!1},autoClosePredicate:{type:Function,required:!1,default:null}},data(){return{loaded:!this.lazy}},computed:{trigger(){return null===this.triggerElement?null:"$el"in this.triggerElement?this.triggerElement.$el:this.triggerElement}},watch:{open(){this.lazy&&!this.loaded&&(this.loaded=!0),this.setAutoClose()}},mounted(){const e=this.$el;this.open&&this.setAutoClose(),this.escClose&&e.addEventListener("keydown",(e=>{"Escape"===e.key&&this.$emit("popup-change",!1)})),this.autoDestroy&&e.addEventListener("transitionend",(()=>{this.open||(this.loaded=!1)}))},methods:{openHandler(e){const t=e.target,n=document.querySelector(".toast-card-container");let o=t!==this.trigger&&!this.trigger?.contains(t)&&t!==this.$el&&!this.$el.contains(t)&&!n?.contains(t);this.autoClosePredicate&&(o=o&&this.autoClosePredicate({target:t,element:this.$el,trigger:this.trigger})),o&&this.$emit("popup-change",!1)},setAutoClose(){if(this.autoClose){["mousedown","touchstart"].forEach((e=>{this.open?document.documentElement.addEventListener(e,(e=>this.openHandler(e))):document.documentElement.removeEventListener(e,(e=>this.openHandler(e)))}))}},toggle(){this.$emit("popup-change",!this.open)}}});var r=n(8332),a=n.n(r),c=n(6708),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,null,null).exports},8308:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{ref:"slider",staticClass:"be-slider",attrs:{role:"slider",tabindex:e.focusable?0:-1},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(-1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(1))}]}},[t("div",{ref:"barContainer",staticClass:"bar-container",on:{click:function(t){return e.setByCoord(t.offsetX)}}},[e._t("bar",(function(){return[t("div",{staticClass:"default-bar"})]}))],2),e._v(" "),t("MiniToast",{ref:"thumbContainer",staticClass:"thumb-container",style:{left:e.thumbLeft},attrs:{placement:"top",arrow:!1},scopedSlots:e._u([{key:"toast",fn:function(){return[e._v("\n "+e._s(e.displayFun(e.realValue))+"\n ")]},proxy:!0}])},[e._t("thumb",(function(){return[t("div",{staticClass:"default-thumb"})]}))],2)],1)};o._withStripped=!0;var i=n(3792);const r=Vue.extend({name:"VSlider",components:{MiniToast:i.Z},model:{prop:"value",event:"change"},props:{focusable:{type:Boolean,default:!0},min:{type:Number,default:0},max:{type:Number,default:100},value:{type:Number,default:0},center:{type:Number,default:0},step:{type:Number,default:1},displayFun:{type:Function,default:e=>String(e)}},data:()=>({realValue:0}),computed:{realMax(){return this.valueToRounded(this.max,Math.floor)},realMin(){return this.valueToRounded(this.min,Math.ceil)},valueLength(){const e=this.realMax-this.realMin;return e<0?(console.error("[VSlider] No desirable value between min and max"),0):e},thumbLeft(){if(0===this.valueLength)return 0;return`${(this.realValue-this.realMin)/this.valueLength*100}%`},centerCoord(){return this.valueToLength(this.center-this.realMin)}},watch:{value(e){e!==this.realValue&&this.setByValue(e)},center(){this.setByValue(this.realValue)},min(){this.setByRounded(this.realValue)},max(){this.setByRounded(this.realValue)}},created(){this.setByValue(this.value)},mounted(){this.setupDrag()},methods:{valueToStep(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round)(e/this.step)},valueToStepped(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.valueToStep(e,t)*this.step},lengthToValue(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return this.valueLength*(e/t)},lengthToStep(e){return this.valueToStep(this.lengthToValue(e))},lengthToStepped(e){return this.lengthToStep(e)*this.step},valueToLength(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return 0===this.valueLength?0:t*(e/this.valueLength)},valueToRounded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.center+this.valueToStepped(e-this.center,t)},limitValue(e){return 0===this.valueLength?this.realMin:(ethis.realMax&&(e=this.realMax),e)},offsetByStep(e){this.setByRounded(this.realValue+e*this.step)},setByLimited(e){e!==this.realValue&&(this.realValue=e,this.$emit("change",this.realValue))},setByRounded(e){this.setByLimited(this.limitValue(e))},setByValue(e){this.setByRounded(this.valueToRounded(e))},setByCoord(e){this.setByRounded(this.center+this.lengthToStepped(e-this.centerCoord))},setupDrag(){function e(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const i=e=>{e.preventDefault(),e instanceof MouseEvent||e instanceof unsafeWindow.MouseEvent?n(e.pageX):1===e.touches.length&&n(e.touches[0].pageX)};return e.addEventListener(t,i,{once:o,passive:!1}),()=>e.removeEventListener(t,i)}const t=this.$refs.thumbContainer.$el,n=[{start:"mousedown",move:"mousemove",end:"mouseup"},{start:"touchstart",move:"touchmove",end:"touchend"}];for(const o of n){let n=0,i=0;e(t,o.start,(t=>{this.$emit("start",this.realValue),this.$refs.slider.focus(),n=t,i=this.realValue;const r=e(window,o.move,(e=>{this.setByValue(i+this.lengthToValue(e-n))}));e(window,o.end,(()=>{this.$emit("end",this.realValue),r()}),!0)}))}}}});var a=n(8332),c=n.n(a),s=n(2013),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"94f62aa6",null).exports},714:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("i",e._g(e._b({staticClass:"be-icon",class:e.classes,style:{"--size":e.size+"px"}},"i",e.$attrs,!1),e.$listeners),[e._t("default"),e._v(" "),e.icon in e.$options.static.customIcons?t("div",{staticClass:"custom-icon",domProps:{innerHTML:e._s(e.$options.static.customIcons[e.icon])}}):e._e()],2)};o._withStripped=!0;var i=n(4909);const r=n(5454),a=lodash.fromPairs(r.keys().map((e=>[e.replace(/.*\/([^/]+?)\.svg$/,"$1"),r(e)]))),[c]=(0,i.registerAndGetData)("ui.icons",a),s={customIcons:a},l=Vue.extend({name:"VIcon",props:{icon:{type:String,default:""},size:{type:Number,default:24},colored:{type:Boolean,default:!1}},computed:{classes(){const e=this.$options.static.customIcons,t=this.icon,n=[];return this.colored&&n.push("colored"),""===t||t in e?n:t.startsWith("mdi-")?[...n,"mdi",t]:[...n,`be-iconfont-${t}`]}},beforeCreate(){this.$options.static=s}}),d=l;var m=n(8332),f=n.n(m),u=n(5137),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},4893:(e,t,n)=>{"use strict";function o(e,t,n,o,i,r,a,c){var s,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),a?(s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=s):i&&(s=c?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),s)if(l.functional){l._injectStyles=s;var d=l.render;l.render=function(e,t){return s.call(t),d(e,t)}}else{var m=l.beforeCreate;l.beforeCreate=m?[].concat(m,s):[s]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},5026:(e,t,n)=>{"use strict";const o=Object.freeze({}),i=Array.isArray;function r(e){return null==e}function a(e){return null!=e}function c(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function l(e){return"function"==typeof e}function d(e){return null!==e&&"object"==typeof e}const m=Object.prototype.toString;function f(e){return"[object Object]"===m.call(e)}function u(e){const t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function b(e){return null==e?"":Array.isArray(e)||f(e)&&e.toString===m?JSON.stringify(e,null,2):String(e)}function h(e){const t=parseFloat(e);return isNaN(t)?e:t}function g(e,t){const n=Object.create(null),o=e.split(",");for(let e=0;en[e.toLowerCase()]:e=>n[e]}const F=g("key,ref,slot,slot-scope,is");function v(e,t){const n=e.length;if(n){if(t===e[n-1])return void(e.length=n-1);const o=e.indexOf(t);if(o>-1)return e.splice(o,1)}}const w=Object.prototype.hasOwnProperty;function y(e,t){return w.call(e,t)}function x(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const k=/-(\w)/g,C=x((e=>e.replace(k,((e,t)=>t?t.toUpperCase():"")))),A=x((e=>e.charAt(0).toUpperCase()+e.slice(1))),E=/\B([A-Z])/g,B=x((e=>e.replace(E,"-$1").toLowerCase())),D=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){const o=arguments.length;return o?o>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function I(e,t){t=t||0;let n=e.length-t;const o=new Array(n);for(;n--;)o[n]=e[n+t];return o}function z(e,t){for(const n in t)e[n]=t[n];return e}function S(e){const t={};for(let n=0;n!1,O=e=>e;function V(e,t){if(e===t)return!0;const n=d(e),o=d(t);if(!n||!o)return!n&&!o&&String(e)===String(t);try{const n=Array.isArray(e),o=Array.isArray(t);if(n&&o)return e.length===t.length&&e.every(((e,n)=>V(e,t[n])));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(n||o)return!1;{const n=Object.keys(e),o=Object.keys(t);return n.length===o.length&&n.every((n=>V(e[n],t[n])))}}catch(e){return!1}}function T(e,t){for(let n=0;n0,K=Q&&Q.indexOf("edge/")>0;Q&&Q.indexOf("android");const J=Q&&/iphone|ipad|ipod|ios/.test(Q);Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q);const _=Q&&Q.match(/firefox\/(\d+)/),$={}.watch;let ee,te=!1;if(G)try{const e={};Object.defineProperty(e,"passive",{get(){te=!0}}),window.addEventListener("test-passive",null,e)}catch(o){}const ne=()=>(void 0===ee&&(ee=!G&&void 0!==n.g&&n.g.process&&"server"===n.g.process.env.VUE_ENV),ee),oe=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ie(e){return"function"==typeof e&&/native code/.test(e.toString())}const re="undefined"!=typeof Symbol&&ie(Symbol)&&"undefined"!=typeof Reflect&&ie(Reflect.ownKeys);let ae;ae="undefined"!=typeof Set&&ie(Set)?Set:class{constructor(){this.set=Object.create(null)}has(e){return!0===this.set[e]}add(e){this.set[e]=!0}clear(){this.set=Object.create(null)}};let ce=null;function se(e=null){e||ce&&ce._scope.off(),ce=e,e&&e._scope.on()}class le{constructor(e,t,n,o,i,r,a,c){this.tag=e,this.data=t,this.children=n,this.text=o,this.elm=i,this.ns=void 0,this.context=r,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=c,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}get child(){return this.componentInstance}}const de=(e="")=>{const t=new le;return t.text=e,t.isComment=!0,t};function me(e){return new le(void 0,void 0,void 0,String(e))}function fe(e){const t=new le(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}let ue=0;const pe=[];class be{constructor(){this._pending=!1,this.id=ue++,this.subs=[]}addSub(e){this.subs.push(e)}removeSub(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,pe.push(this))}depend(e){be.target&&be.target.addDep(this)}notify(e){const t=this.subs.filter((e=>e));for(let e=0,n=t.length;e{const e=t[n];if(Le(e))return e.value;{const t=e&&e.__ob__;return t&&t.dep.depend(),e}},set:e=>{const o=t[n];Le(o)&&!Le(e)?o.value=e:t[n]=e}})}function Ne(e,t,n){const o=e[t];if(Le(o))return o;const i={get value(){const o=e[t];return void 0===o?n:o},set value(n){e[t]=n}};return U(i,"__v_isRef",!0),i}function qe(e){return Ze(e,!1)}function Ze(e,t){if(!f(e))return e;if(Te(e))return e;const n=t?"__v_rawToShallowReadonly":"__v_rawToReadonly",o=e[n];if(o)return o;const i=Object.create(Object.getPrototypeOf(e));U(e,n,i),U(i,"__v_isReadonly",!0),U(i,"__v_raw",e),Le(e)&&U(i,"__v_isRef",!0),(t||Ve(e))&&U(i,"__v_isShallow",!0);const r=Object.keys(e);for(let n=0;nTt(e,null,n,d,t);let f,u,p=!1,b=!1;if(Le(e)?(f=()=>e.value,p=Ve(e)):Oe(e)?(f=()=>(e.__ob__.dep.depend(),e),r=!0):i(e)?(b=!0,p=e.some((e=>Oe(e)||Ve(e))),f=()=>e.map((e=>Le(e)?e.value:Oe(e)?cn(e):l(e)?m(e,"watcher getter"):void 0))):f=l(e)?t?()=>m(e,"watcher getter"):()=>{if(!d||!d._isDestroyed)return u&&u(),m(e,"watcher",[h])}:P,t&&r){const e=f;f=()=>cn(e())}let h=e=>{u=g.onStop=()=>{m(e,"watcher cleanup")}};if(ne())return h=P,t?n&&m(t,"watcher callback",[f(),b?[]:void 0,h]):f(),P;const g=new mn(ce,f,P,{lazy:!0});g.noRecurse=!t;let F=b?[]:We;return g.run=()=>{if(g.active)if(t){const e=g.get();(r||p||(b?e.some(((e,t)=>j(e,F[t]))):j(e,F)))&&(u&&u(),m(t,"watcher callback",[e,F===We?void 0:F,h]),F=e)}else g.get()},"sync"===a?g.update=g.run:"post"===a?(g.post=!0,g.update=()=>Pn(g)):g.update=()=>{if(d&&d===ce&&!d._isMounted){const e=d._preWatchers||(d._preWatchers=[]);e.indexOf(g)<0&&e.push(g)}else Pn(g)},t?n?g.run():F=g.get():"post"===a&&d?d.$once("hook:mounted",(()=>g.get())):g.get(),()=>{g.teardown()}}let Qe;class Ye{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Qe,!e&&Qe&&(this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1)}run(e){if(this.active){const t=Qe;try{return Qe=this,e()}finally{Qe=t}}}on(){Qe=this}off(){Qe=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t{const t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),o="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=o?e.slice(1):e,once:n,capture:o,passive:t}}));function Je(e,t){function n(){const e=n.fns;if(!i(e))return Tt(e,null,arguments,t,"v-on handler");{const n=e.slice();for(let e=0;e0&&(l=ot(l,`${t||""}_${o}`),nt(l[0])&&nt(m)&&(n[d]=me(m.text+l[0].text),l.shift()),n.push.apply(n,l)):s(l)?nt(m)?n[d]=me(m.text+l):""!==l&&n.push(me(l)):nt(l)&&nt(m)?n[d]=me(m.text+l.text):(c(e._isVList)&&a(l.tag)&&r(l.key)&&a(t)&&(l.key=`__vlist${t}_${o}__`),n.push(l)));return n}function it(e,t){let n,o,r,c,s=null;if(i(e)||"string"==typeof e)for(s=new Array(e.length),n=0,o=e.length;n0,c=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(c&&i&&i!==o&&s===i.$key&&!a&&!i.$hasNormal)return i;r={};for(const o in t)t[o]&&"$"!==o[0]&&(r[o]=kt(e,n,o,t[o]))}else r={};for(const e in n)e in r||(r[e]=Ct(n,e));return t&&Object.isExtensible(t)&&(t._normalized=r),U(r,"$stable",c),U(r,"$key",s),U(r,"$hasNormal",a),r}function kt(e,t,n,o){const r=function(){const t=ce;se(e);let n=arguments.length?o.apply(null,arguments):o({});n=n&&"object"==typeof n&&!i(n)?[n]:tt(n);const r=n&&n[0];return se(t),n&&(!r||1===n.length&&r.isComment&&!yt(r))?void 0:n};return o.proxy&&Object.defineProperty(t,n,{get:r,enumerable:!0,configurable:!0}),r}function Ct(e,t){return()=>e[t]}function At(e){return{get attrs(){if(!e._attrsProxy){const t=e._attrsProxy={};U(t,"_v_attr_proxy",!0),Et(t,e.$attrs,o,e,"$attrs")}return e._attrsProxy},get listeners(){return e._listenersProxy||Et(e._listenersProxy={},e.$listeners,o,e,"$listeners"),e._listenersProxy},get slots(){return function(e){return e._slotsProxy||Dt(e._slotsProxy={},e.$scopedSlots),e._slotsProxy}(e)},emit:D(e.$emit,e),expose(t){t&&Object.keys(t).forEach((n=>Re(e,t,n)))}}}function Et(e,t,n,o,i){let r=!1;for(const a in t)a in e?t[a]!==n[a]&&(r=!0):(r=!0,Bt(e,a,o,i));for(const n in e)n in t||(r=!0,delete e[n]);return r}function Bt(e,t,n,o){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:()=>n[o][t]})}function Dt(e,t){for(const n in t)e[n]=t[n];for(const n in e)n in t||delete e[n]}function It(){const e=ce;return e._setupContext||(e._setupContext=At(e))}let zt=null;function St(e,t){return(e.__esModule||re&&"Module"===e[Symbol.toStringTag])&&(e=e.default),d(e)?t.extend(e):e}function Pt(e){if(i(e))for(let t=0;tVt(e,o,i+" (Promise/async)"))),r._handled=!0)}catch(e){Vt(e,o,i)}return r}function Lt(e,t,n){if(q.errorHandler)try{return q.errorHandler.call(null,e,t,n)}catch(t){t!==e&&jt(t)}jt(e)}function jt(e,t,n){if(!G||"undefined"==typeof console)throw e;console.error(e)}let Rt=!1;const Nt=[];let qt,Zt=!1;function Ut(){Zt=!1;const e=Nt.slice(0);Nt.length=0;for(let t=0;t{e.then(Ut),J&&setTimeout(P)},Rt=!0}else if(Y||"undefined"==typeof MutationObserver||!ie(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())qt="undefined"!=typeof setImmediate&&ie(setImmediate)?()=>{setImmediate(Ut)}:()=>{setTimeout(Ut,0)};else{let e=1;const t=new MutationObserver(Ut),n=document.createTextNode(String(e));t.observe(n,{characterData:!0}),qt=()=>{e=(e+1)%2,n.data=String(e)},Rt=!0}function Ht(e,t){let n;if(Nt.push((()=>{if(e)try{e.call(t)}catch(e){Vt(e,t,"nextTick")}else n&&n(t)})),Zt||(Zt=!0,qt()),!e&&"undefined"!=typeof Promise)return new Promise((e=>{n=e}))}function Wt(e){return(t,n=ce)=>{if(n)return function(e,t,n){const o=e.$options;o[t]=Gn(o[t],n)}(n,e,t)}}const Gt=Wt("beforeMount"),Qt=Wt("mounted"),Yt=Wt("beforeUpdate"),Xt=Wt("updated"),Kt=Wt("beforeDestroy"),Jt=Wt("destroyed"),_t=Wt("activated"),$t=Wt("deactivated"),en=Wt("serverPrefetch"),tn=Wt("renderTracked"),nn=Wt("renderTriggered"),on=Wt("errorCaptured");var rn=Object.freeze({__proto__:null,version:"2.7.14",defineComponent:function(e){return e},ref:function(e){return je(e,!1)},shallowRef:function(e){return je(e,!0)},isRef:Le,toRef:Ne,toRefs:function(e){const t=i(e)?new Array(e.length):{};for(const n in e)t[n]=Ne(e,n);return t},unref:function(e){return Le(e)?e.value:e},proxyRefs:function(e){if(Oe(e))return e;const t={},n=Object.keys(e);for(let o=0;o{t.depend()}),(()=>{t.notify()})),i={get value(){return n()},set value(e){o(e)}};return U(i,"__v_isRef",!0),i},triggerRef:function(e){e.dep&&e.dep.notify()},reactive:function(e){return Me(e,!1),e},isReactive:Oe,isReadonly:Te,isShallow:Ve,isProxy:function(e){return Oe(e)||Te(e)},shallowReactive:Pe,markRaw:function(e){return Object.isExtensible(e)&&U(e,"__v_skip",!0),e},toRaw:function e(t){const n=t&&t.__v_raw;return n?e(n):t},readonly:qe,shallowReadonly:function(e){return Ze(e,!0)},computed:function(e,t){let n,o;const i=l(e);i?(n=e,o=P):(n=e.get,o=e.set);const r=ne()?null:new mn(ce,n,P,{lazy:!0}),a={effect:r,get value(){return r?(r.dirty&&r.evaluate(),be.target&&r.depend(),r.value):n()},set value(e){o(e)}};return U(a,"__v_isRef",!0),U(a,"__v_isReadonly",i),a},watch:function(e,t,n){return Ge(e,t,n)},watchEffect:function(e,t){return Ge(e,null,t)},watchPostEffect:He,watchSyncEffect:function(e,t){return Ge(e,null,{flush:"sync"})},EffectScope:Ye,effectScope:function(e){return new Ye(e)},onScopeDispose:function(e){Qe&&Qe.cleanups.push(e)},getCurrentScope:function(){return Qe},provide:function(e,t){ce&&(Xe(ce)[e]=t)},inject:function(e,t,n=!1){const o=ce;if(o){const i=o.$parent&&o.$parent._provided;if(i&&e in i)return i[e];if(arguments.length>1)return n&&l(t)?t.call(o):t}},h:function(e,t,n){return Mt(ce,e,t,n,2,!0)},getCurrentInstance:function(){return ce&&{proxy:ce}},useSlots:function(){return It().slots},useAttrs:function(){return It().attrs},useListeners:function(){return It().listeners},mergeDefaults:function(e,t){const n=i(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const o=n[e];o?i(o)||l(o)?n[e]={type:o,default:t[e]}:o.default=t[e]:null===o&&(n[e]={default:t[e]})}return n},nextTick:Ht,set:Ie,del:ze,useCssModule:function(e="$style"){if(!ce)return o;return ce[e]||o},useCssVars:function(e){if(!G)return;const t=ce;t&&He((()=>{const n=t.$el,o=e(t,t._setupProxy);if(n&&1===n.nodeType){const e=n.style;for(const t in o)e.setProperty(`--${t}`,o[t])}}))},defineAsyncComponent:function(e){l(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:i=200,timeout:r,suspensible:a=!1,onError:c}=e;let s=null,d=0;const m=()=>{let e;return s||(e=s=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),c)return new Promise(((t,n)=>{c(e,(()=>t((d++,s=null,m()))),(()=>n(e)),d+1)}));throw e})).then((t=>e!==s&&s?s:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),t))))};return()=>({component:m(),delay:i,timeout:r,error:o,loading:n})},onBeforeMount:Gt,onMounted:Qt,onBeforeUpdate:Yt,onUpdated:Xt,onBeforeUnmount:Kt,onUnmounted:Jt,onActivated:_t,onDeactivated:$t,onServerPrefetch:en,onRenderTracked:tn,onRenderTriggered:nn,onErrorCaptured:function(e,t=ce){on(e,t)}});const an=new ae;function cn(e){return sn(e,an),an.clear(),e}function sn(e,t){let n,o;const r=i(e);if(!(!r&&!d(e)||e.__v_skip||Object.isFrozen(e)||e instanceof le)){if(e.__ob__){const n=e.__ob__.dep.id;if(t.has(n))return;t.add(n)}if(r)for(n=e.length;n--;)sn(e[n],t);else if(Le(e))sn(e.value,t);else for(o=Object.keys(e),n=o.length;n--;)sn(e[o[n]],t)}}let ln,dn=0;class mn{constructor(e,t,n,o,i){!function(e,t=Qe){t&&t.active&&t.effects.push(e)}(this,Qe&&!Qe._vm?Qe:e?e._scope:void 0),(this.vm=e)&&i&&(e._watcher=this),o?(this.deep=!!o.deep,this.user=!!o.user,this.lazy=!!o.lazy,this.sync=!!o.sync,this.before=o.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++dn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ae,this.newDepIds=new ae,this.expression="",l(t)?this.getter=t:(this.getter=function(e){if(H.test(e))return;const t=e.split(".");return function(e){for(let n=0;n{hn=t}}function Fn(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function vn(e,t){if(t){if(e._directInactive=!1,Fn(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(let t=0;tdocument.createEvent("Event").timeStamp&&(In=()=>e.now())}const zn=(e,t)=>{if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function Sn(){let e,t;for(Dn=In(),En=!0,xn.sort(zn),Bn=0;Bn{for(let e=0;ee)),t._pending=!1}pe.length=0})(),oe&&q.devtools&&oe.emit("flush")}function Pn(e){const t=e.id;if(null==Cn[t]&&(e!==be.target||!e.noRecurse)){if(Cn[t]=!0,En){let t=xn.length-1;for(;t>Bn&&xn[t].id>e.id;)t--;xn.splice(t+1,0,e)}else xn.push(e);An||(An=!0,Ht(Sn))}}function Mn(e,t){if(e){const n=Object.create(null),o=re?Reflect.ownKeys(e):Object.keys(e);for(let i=0;i(this.$slots||xt(r,e.scopedSlots,this.$slots=vt(n,r)),this.$slots),Object.defineProperty(this,"scopedSlots",{enumerable:!0,get(){return xt(r,e.scopedSlots,this.slots())}}),d&&(this.$options=s,this.$slots=this.slots(),this.$scopedSlots=xt(r,e.scopedSlots,this.$slots)),s._scopeId?this._c=(e,t,n,o)=>{const a=Mt(l,e,t,n,o,m);return a&&!i(a)&&(a.fnScopeId=s._scopeId,a.fnContext=r),a}:this._c=(e,t,n,o)=>Mt(l,e,t,n,o,m)}function Vn(e,t,n,o,i){const r=fe(e);return r.fnContext=n,r.fnOptions=o,t.slot&&((r.data||(r.data={})).slot=t.slot),r}function Tn(e,t){for(const n in t)e[C(n)]=t[n]}function Ln(e){return e.name||e.__name||e._componentTag}Ft(On.prototype);const jn={init(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){const t=e;jn.prepatch(t,t)}else(e.componentInstance=function(e,t){const n={_isComponent:!0,_parentVnode:e,parent:t},o=e.data.inlineTemplate;return a(o)&&(n.render=o.render,n.staticRenderFns=o.staticRenderFns),new e.componentOptions.Ctor(n)}(e,hn)).$mount(t?e.elm:void 0,t)},prepatch(e,t){const n=t.componentOptions;!function(e,t,n,i,r){const a=i.data.scopedSlots,c=e.$scopedSlots,s=!!(a&&!a.$stable||c!==o&&!c.$stable||a&&e.$scopedSlots.$key!==a.$key||!a&&e.$scopedSlots.$key);let l=!!(r||e.$options._renderChildren||s);const d=e.$vnode;e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=r;const m=i.data.attrs||o;e._attrsProxy&&Et(e._attrsProxy,m,d.data&&d.data.attrs||o,e,"$attrs")&&(l=!0),e.$attrs=m,n=n||o;const f=e.$options._parentListeners;if(e._listenersProxy&&Et(e._listenersProxy,n,f||o,e,"$listeners"),e.$listeners=e.$options._parentListeners=n,bn(e,n,f),t&&e.$options.props){Ce(!1);const n=e._props,o=e.$options._propKeys||[];for(let i=0;iv(o,n)));const l=e=>{for(let e=0,t=o.length;e{e.resolved=St(n,t),i?o.length=0:l(!0)})),f=L((t=>{a(e.errorComp)&&(e.error=!0,l(!0))})),u=e(m,f);return d(u)&&(p(u)?r(e.resolved)&&u.then(m,f):p(u.component)&&(u.component.then(m,f),a(u.error)&&(e.errorComp=St(u.error,t)),a(u.loading)&&(e.loadingComp=St(u.loading,t),0===u.delay?e.loading=!0:c=setTimeout((()=>{c=null,r(e.resolved)&&r(e.error)&&(e.loading=!0,l(!1))}),u.delay||200)),a(u.timeout)&&(s=setTimeout((()=>{s=null,r(e.resolved)&&f(null)}),u.timeout)))),i=!1,e.loading?e.loadingComp:e.resolved}}(f,m),void 0===e))return function(e,t,n,o,i){const r=de();return r.asyncFactory=e,r.asyncMeta={data:t,context:n,children:o,tag:i},r}(f,t,n,s,l);t=t||{},fo(e),a(t.model)&&function(e,t){const n=e.model&&e.model.prop||"value",o=e.model&&e.model.event||"input";(t.attrs||(t.attrs={}))[n]=t.model.value;const r=t.on||(t.on={}),c=r[o],s=t.model.callback;a(c)?(i(c)?-1===c.indexOf(s):c!==s)&&(r[o]=[s].concat(c)):r[o]=s}(e.options,t);const u=function(e,t,n){const o=t.options.props;if(r(o))return;const i={},{attrs:c,props:s}=e;if(a(c)||a(s))for(const e in o){const t=B(e);et(i,s,e,t,!0)||et(i,c,e,t,!1)}return i}(t,e);if(c(e.options.functional))return function(e,t,n,r,c){const s=e.options,l={},d=s.props;if(a(d))for(const e in d)l[e]=Jn(e,d,t||o);else a(n.attrs)&&Tn(l,n.attrs),a(n.props)&&Tn(l,n.props);const m=new On(n,l,c,r,e),f=s.render.call(null,m._c,m);if(f instanceof le)return Vn(f,n,m.parent,s);if(i(f)){const e=tt(f)||[],t=new Array(e.length);for(let o=0;o{e(n,o),t(n,o)};return n._merged=!0,n}let Zn=P;const Un=q.optionMergeStrategies;function Hn(e,t,n=!0){if(!t)return e;let o,i,r;const a=re?Reflect.ownKeys(t):Object.keys(t);for(let c=0;c{Un[e]=Gn})),R.forEach((function(e){Un[e+"s"]=Qn})),Un.watch=function(e,t,n,o){if(e===$&&(e=void 0),t===$&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;const r={};z(r,e);for(const e in t){let n=r[e];const o=t[e];n&&!i(n)&&(n=[n]),r[e]=n?n.concat(o):i(o)?o:[o]}return r},Un.props=Un.methods=Un.inject=Un.computed=function(e,t,n,o){if(!e)return t;const i=Object.create(null);return z(i,e),t&&z(i,t),i},Un.provide=function(e,t){return e?function(){const n=Object.create(null);return Hn(n,l(e)?e.call(this):e),t&&Hn(n,l(t)?t.call(this):t,!1),n}:t};const Yn=function(e,t){return void 0===t?e:t};function Xn(e,t,n){if(l(t)&&(t=t.options),function(e,t){const n=e.props;if(!n)return;const o={};let r,a,c;if(i(n))for(r=n.length;r--;)a=n[r],"string"==typeof a&&(c=C(a),o[c]={type:null});else if(f(n))for(const e in n)a=n[e],c=C(e),o[c]=f(a)?a:{type:a};e.props=o}(t),function(e,t){const n=e.inject;if(!n)return;const o=e.inject={};if(i(n))for(let e=0;e-1)if(r&&!y(i,"default"))a=!1;else if(""===a||a===B(e)){const e=to(String,i.type);(e<0||c-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===m.call(n)&&e.test(t));var n}function ho(e,t){const{cache:n,keys:o,_vnode:i}=e;for(const e in n){const r=n[e];if(r){const a=r.name;a&&!t(a)&&go(n,e,o,i)}}}function go(e,t,n,o){const i=e[t];!i||o&&i.tag===o.tag||i.componentInstance.$destroy(),e[t]=null,v(n,t)}!function(e){e.prototype._init=function(e){const t=this;t._uid=mo++,t._isVue=!0,t.__v_skip=!0,t._scope=new Ye(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){const n=e.$options=Object.create(e.constructor.options),o=t._parentVnode;n.parent=t.parent,n._parentVnode=o;const i=o.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Xn(fo(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){const t=e.$options;let n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;const t=e.$options._parentListeners;t&&bn(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;const t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=vt(t._renderChildren,i),e.$scopedSlots=n?xt(e.$parent,n.data.scopedSlots,e.$slots):o,e._c=(t,n,o,i)=>Mt(e,t,n,o,i,!1),e.$createElement=(t,n,o,i)=>Mt(e,t,n,o,i,!0);const r=n&&n.data;De(e,"$attrs",r&&r.attrs||o,null,!0),De(e,"$listeners",t._parentListeners||o,null,!0)}(t),yn(t,"beforeCreate",void 0,!1),function(e){const t=Mn(e.$options.inject,e);t&&(Ce(!1),Object.keys(t).forEach((n=>{De(e,n,t[n])})),Ce(!0))}(t),io(t),function(e){const t=e.$options.provide;if(t){const n=l(t)?t.call(e):t;if(!d(n))return;const o=Xe(e),i=re?Reflect.ownKeys(n):Object.keys(n);for(let e=0;e1?I(n):n;const o=I(arguments,1),i=`event handler for "${e}"`;for(let e=0,r=n.length;eparseInt(this.max)&&go(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created(){this.cache=Object.create(null),this.keys=[]},destroyed(){for(const e in this.cache)go(this.cache,e,this.keys)},mounted(){this.cacheVNode(),this.$watch("include",(e=>{ho(this,(t=>bo(e,t)))})),this.$watch("exclude",(e=>{ho(this,(t=>!bo(e,t)))}))},updated(){this.cacheVNode()},render(){const e=this.$slots.default,t=Pt(e),n=t&&t.componentOptions;if(n){const e=po(n),{include:o,exclude:i}=this;if(o&&(!e||!bo(o,e))||i&&e&&bo(i,e))return t;const{cache:r,keys:a}=this,c=null==t.key?n.Ctor.cid+(n.tag?`::${n.tag}`:""):t.key;r[c]?(t.componentInstance=r[c].componentInstance,v(a,c),a.push(c)):(this.vnodeToCache=t,this.keyToCache=c),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){const t={get:()=>q};Object.defineProperty(e,"config",t),e.util={warn:Zn,extend:z,mergeOptions:Xn,defineReactive:De},e.set=Ie,e.delete=ze,e.nextTick=Ht,e.observable=e=>(Be(e),e),e.options=Object.create(null),R.forEach((t=>{e.options[t+"s"]=Object.create(null)})),e.options._base=e,z(e.options.components,vo),function(e){e.use=function(e){const t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;const n=I(arguments,1);return n.unshift(this),l(e.install)?e.install.apply(e,n):l(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Xn(this.options,e),this}}(e),function(e){e.cid=0;let t=1;e.extend=function(e){e=e||{};const n=this,o=n.cid,i=e._Ctor||(e._Ctor={});if(i[o])return i[o];const r=Ln(e)||Ln(n.options),a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Xn(n.options,e),a.super=n,a.options.props&&function(e){const t=e.options.props;for(const n in t)oo(e.prototype,"_props",n)}(a),a.options.computed&&function(e){const t=e.options.computed;for(const n in t)ao(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach((function(e){a[e]=n[e]})),r&&(a.options.components[r]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=z({},a.options),i[o]=a,a}}(e),function(e){R.forEach((t=>{e[t]=function(e,n){return n?("component"===t&&f(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&l(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(uo),Object.defineProperty(uo.prototype,"$isServer",{get:ne}),Object.defineProperty(uo.prototype,"$ssrContext",{get(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(uo,"FunctionalRenderContext",{value:On}),uo.version="2.7.14";const wo=g("style,class"),yo=g("input,textarea,option,select,progress"),xo=g("contenteditable,draggable,spellcheck"),ko=g("events,caret,typing,plaintext-only"),Co=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Ao="http://www.w3.org/1999/xlink",Eo=e=>":"===e.charAt(5)&&"xlink"===e.slice(0,5),Bo=e=>Eo(e)?e.slice(6,e.length):"",Do=e=>null==e||!1===e;function Io(e,t){return{staticClass:zo(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function zo(e,t){return e?t?e+" "+t:e:t||""}function So(e){return Array.isArray(e)?function(e){let t,n="";for(let o=0,i=e.length;oMo(e)||Oo(e),To=Object.create(null),Lo=g("text,number,password,search,email,tel,url");var jo=Object.freeze({__proto__:null,createElement:function(e,t){const n=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(e,t){return document.createElementNS(Po[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),Ro={create(e,t){No(t)},update(e,t){e.data.ref!==t.data.ref&&(No(e,!0),No(t))},destroy(e){No(e,!0)}};function No(e,t){const n=e.data.ref;if(!a(n))return;const o=e.context,r=e.componentInstance||e.elm,c=t?null:r,s=t?void 0:r;if(l(n))return void Tt(n,o,[c],o,"template ref function");const d=e.data.refInFor,m="string"==typeof n||"number"==typeof n,f=Le(n),u=o.$refs;if(m||f)if(d){const e=m?u[n]:n.value;t?i(e)&&v(e,r):i(e)?e.includes(r)||e.push(r):m?(u[n]=[r],qo(o,n,u[n])):n.value=[r]}else if(m){if(t&&u[n]!==r)return;u[n]=s,qo(o,n,c)}else if(f){if(t&&n.value!==r)return;n.value=c}}function qo({_setupState:e},t,n){e&&y(e,t)&&(Le(e[t])?e[t].value=n:e[t]=n)}const Zo=new le("",{},[]),Uo=["create","activate","update","remove","destroy"];function Ho(e,t){return e.key===t.key&&e.asyncFactory===t.asyncFactory&&(e.tag===t.tag&&e.isComment===t.isComment&&a(e.data)===a(t.data)&&function(e,t){if("input"!==e.tag)return!0;let n;const o=a(n=e.data)&&a(n=n.attrs)&&n.type,i=a(n=t.data)&&a(n=n.attrs)&&n.type;return o===i||Lo(o)&&Lo(i)}(e,t)||c(e.isAsyncPlaceholder)&&r(t.asyncFactory.error))}function Wo(e,t,n){let o,i;const r={};for(o=t;o<=n;++o)i=e[o].key,a(i)&&(r[i]=o);return r}var Go={create:Qo,update:Qo,destroy:function(e){Qo(e,Zo)}};function Qo(e,t){(e.data.directives||t.data.directives)&&function(e,t){const n=e===Zo,o=t===Zo,i=Xo(e.data.directives,e.context),r=Xo(t.data.directives,t.context),a=[],c=[];let s,l,d;for(s in r)l=i[s],d=r[s],l?(d.oldValue=l.value,d.oldArg=l.arg,Jo(d,"update",t,e),d.def&&d.def.componentUpdated&&c.push(d)):(Jo(d,"bind",t,e),d.def&&d.def.inserted&&a.push(d));if(a.length){const o=()=>{for(let n=0;n{for(let n=0;n-1?ti(e,t,n):Co(t)?Do(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):xo(t)?e.setAttribute(t,((e,t)=>Do(t)||"false"===t?"false":"contenteditable"===e&&ko(t)?t:"true")(t,n)):Eo(t)?Do(n)?e.removeAttributeNS(Ao,Bo(t)):e.setAttributeNS(Ao,t,n):ti(e,t,n)}function ti(e,t,n){if(Do(n))e.removeAttribute(t);else{if(Y&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){const t=n=>{n.stopImmediatePropagation(),e.removeEventListener("input",t)};e.addEventListener("input",t),e.__ieph=!0}e.setAttribute(t,n)}}var ni={create:$o,update:$o};function oi(e,t){const n=t.elm,o=t.data,i=e.data;if(r(o.staticClass)&&r(o.class)&&(r(i)||r(i.staticClass)&&r(i.class)))return;let c=function(e){let t=e.data,n=e,o=e;for(;a(o.componentInstance);)o=o.componentInstance._vnode,o&&o.data&&(t=Io(o.data,t));for(;a(n=n.parent);)n&&n.data&&(t=Io(t,n.data));return function(e,t){return a(e)||a(t)?zo(e,So(t)):""}(t.staticClass,t.class)}(t);const s=n._transitionClasses;a(s)&&(c=zo(c,So(s))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}var ii={create:oi,update:oi};let ri;function ai(e,t,n){const o=ri;return function i(){const r=t.apply(null,arguments);null!==r&&li(e,i,n,o)}}const ci=Rt&&!(_&&Number(_[1])<=53);function si(e,t,n,o){if(ci){const e=Dn,n=t;t=n._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=e||t.timeStamp<=0||t.target.ownerDocument!==document)return n.apply(this,arguments)}}ri.addEventListener(e,t,te?{capture:n,passive:o}:n)}function li(e,t,n,o){(o||ri).removeEventListener(e,t._wrapper||t,n)}function di(e,t){if(r(e.data.on)&&r(t.data.on))return;const n=t.data.on||{},o=e.data.on||{};ri=t.elm||e.elm,function(e){if(a(e.__r)){const t=Y?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),_e(n,o,si,li,ai,t.context),ri=void 0}var mi={create:di,update:di,destroy:e=>di(e,Zo)};let fi;function ui(e,t){if(r(e.data.domProps)&&r(t.data.domProps))return;let n,o;const i=t.elm,s=e.data.domProps||{};let l=t.data.domProps||{};for(n in(a(l.__ob__)||c(l._v_attr_proxy))&&(l=t.data.domProps=z({},l)),s)n in l||(i[n]="");for(n in l){if(o=l[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),o===s[n])continue;1===i.childNodes.length&&i.removeChild(i.childNodes[0])}if("value"===n&&"PROGRESS"!==i.tagName){i._value=o;const e=r(o)?"":String(o);pi(i,e)&&(i.value=e)}else if("innerHTML"===n&&Oo(i.tagName)&&r(i.innerHTML)){fi=fi||document.createElement("div"),fi.innerHTML=`${o}`;const e=fi.firstChild;for(;i.firstChild;)i.removeChild(i.firstChild);for(;e.firstChild;)i.appendChild(e.firstChild)}else if(o!==s[n])try{i[n]=o}catch(e){}}}function pi(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){let n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){const n=e.value,o=e._vModifiers;if(a(o)){if(o.number)return h(n)!==h(t);if(o.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var bi={create:ui,update:ui};const hi=x((function(e){const t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){const o=e.split(n);o.length>1&&(t[o[0].trim()]=o[1].trim())}})),t}));function gi(e){const t=Fi(e.style);return e.staticStyle?z(e.staticStyle,t):t}function Fi(e){return Array.isArray(e)?S(e):"string"==typeof e?hi(e):e}const vi=/^--/,wi=/\s*!important$/,yi=(e,t,n)=>{if(vi.test(t))e.style.setProperty(t,n);else if(wi.test(n))e.style.setProperty(B(t),n.replace(wi,""),"important");else{const o=Ci(t);if(Array.isArray(n))for(let t=0,i=n.length;t-1?t.split(Bi).forEach((t=>e.classList.add(t))):e.classList.add(t);else{const n=` ${e.getAttribute("class")||""} `;n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Ii(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Bi).forEach((t=>e.classList.remove(t))):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{let n=` ${e.getAttribute("class")||""} `;const o=" "+t+" ";for(;n.indexOf(o)>=0;)n=n.replace(o," ");n=n.trim(),n?e.setAttribute("class",n):e.removeAttribute("class")}}function zi(e){if(e){if("object"==typeof e){const t={};return!1!==e.css&&z(t,Si(e.name||"v")),z(t,e),t}return"string"==typeof e?Si(e):void 0}}const Si=x((e=>({enterClass:`${e}-enter`,enterToClass:`${e}-enter-to`,enterActiveClass:`${e}-enter-active`,leaveClass:`${e}-leave`,leaveToClass:`${e}-leave-to`,leaveActiveClass:`${e}-leave-active`}))),Pi=G&&!X;let Mi="transition",Oi="transitionend",Vi="animation",Ti="animationend";Pi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Mi="WebkitTransition",Oi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Vi="WebkitAnimation",Ti="webkitAnimationEnd"));const Li=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:e=>e();function ji(e){Li((()=>{Li(e)}))}function Ri(e,t){const n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),Di(e,t))}function Ni(e,t){e._transitionClasses&&v(e._transitionClasses,t),Ii(e,t)}function qi(e,t,n){const{type:o,timeout:i,propCount:r}=Ui(e,t);if(!o)return n();const a="transition"===o?Oi:Ti;let c=0;const s=()=>{e.removeEventListener(a,l),n()},l=t=>{t.target===e&&++c>=r&&s()};setTimeout((()=>{c0&&(l="transition",d=r,m=i.length):"animation"===t?s>0&&(l="animation",d=s,m=c.length):(d=Math.max(r,s),l=d>0?r>s?"transition":"animation":null,m=l?"transition"===l?i.length:c.length:0),{type:l,timeout:d,propCount:m,hasTransform:"transition"===l&&Zi.test(n[Mi+"Property"])}}function Hi(e,t){for(;e.lengthWi(t)+Wi(e[n]))))}function Wi(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function Gi(e,t){const n=e.elm;a(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());const o=zi(e.data.transition);if(r(o))return;if(a(n._enterCb)||1!==n.nodeType)return;const{css:i,type:c,enterClass:s,enterToClass:m,enterActiveClass:f,appearClass:u,appearToClass:p,appearActiveClass:b,beforeEnter:g,enter:F,afterEnter:v,enterCancelled:w,beforeAppear:y,appear:x,afterAppear:k,appearCancelled:C,duration:A}=o;let E=hn,B=hn.$vnode;for(;B&&B.parent;)E=B.context,B=B.parent;const D=!E._isMounted||!e.isRootInsert;if(D&&!x&&""!==x)return;const I=D&&u?u:s,z=D&&b?b:f,S=D&&p?p:m,P=D&&y||g,M=D&&l(x)?x:F,O=D&&k||v,V=D&&C||w,T=h(d(A)?A.enter:A),j=!1!==i&&!X,R=Xi(M),N=n._enterCb=L((()=>{j&&(Ni(n,S),Ni(n,z)),N.cancelled?(j&&Ni(n,I),V&&V(n)):O&&O(n),n._enterCb=null}));e.data.show||$e(e,"insert",(()=>{const t=n.parentNode,o=t&&t._pending&&t._pending[e.key];o&&o.tag===e.tag&&o.elm._leaveCb&&o.elm._leaveCb(),M&&M(n,N)})),P&&P(n),j&&(Ri(n,I),Ri(n,z),ji((()=>{Ni(n,I),N.cancelled||(Ri(n,S),R||(Yi(T)?setTimeout(N,T):qi(n,c,N)))}))),e.data.show&&(t&&t(),M&&M(n,N)),j||R||N()}function Qi(e,t){const n=e.elm;a(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());const o=zi(e.data.transition);if(r(o)||1!==n.nodeType)return t();if(a(n._leaveCb))return;const{css:i,type:c,leaveClass:s,leaveToClass:l,leaveActiveClass:m,beforeLeave:f,leave:u,afterLeave:p,leaveCancelled:b,delayLeave:g,duration:F}=o,v=!1!==i&&!X,w=Xi(u),y=h(d(F)?F.leave:F),x=n._leaveCb=L((()=>{n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),v&&(Ni(n,l),Ni(n,m)),x.cancelled?(v&&Ni(n,s),b&&b(n)):(t(),p&&p(n)),n._leaveCb=null}));function k(){x.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),f&&f(n),v&&(Ri(n,s),Ri(n,m),ji((()=>{Ni(n,s),x.cancelled||(Ri(n,l),w||(Yi(y)?setTimeout(x,y):qi(n,c,x)))}))),u&&u(n,x),v||w||x())}g?g(k):k()}function Yi(e){return"number"==typeof e&&!isNaN(e)}function Xi(e){if(r(e))return!1;const t=e.fns;return a(t)?Xi(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ki(e,t){!0!==t.data.show&&Gi(t)}const Ji=function(e){let t,n;const o={},{modules:l,nodeOps:d}=e;for(t=0;tb?(m=r(n[F+1])?null:n[F+1].elm,w(e,m,n,p,F,o)):p>F&&x(t,u,b)}(m,b,g,n,l):a(g)?(a(e.text)&&d.setTextContent(m,""),w(m,null,g,0,g.length-1,n)):a(b)?x(b,0,b.length-1):a(e.text)&&d.setTextContent(m,""):e.text!==t.text&&d.setTextContent(m,t.text),a(p)&&a(u=p.hook)&&a(u=u.postpatch)&&u(e,t)}function E(e,t,n){if(c(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(let e=0;e{const e=document.activeElement;e&&e.vmodel&&rr(e,"input")}));const _i={inserted(e,t,n,o){"select"===n.tag?(o.elm&&!o.elm._vOptions?$e(n,"postpatch",(()=>{_i.componentUpdated(e,t,n)})):$i(e,t,n.context),e._vOptions=[].map.call(e.options,nr)):("textarea"===n.tag||Lo(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",or),e.addEventListener("compositionend",ir),e.addEventListener("change",ir),X&&(e.vmodel=!0)))},componentUpdated(e,t,n){if("select"===n.tag){$i(e,t,n.context);const o=e._vOptions,i=e._vOptions=[].map.call(e.options,nr);i.some(((e,t)=>!V(e,o[t])))&&(e.multiple?t.value.some((e=>tr(e,i))):t.value!==t.oldValue&&tr(t.value,i))&&rr(e,"change")}}};function $i(e,t,n){er(e,t),(Y||K)&&setTimeout((()=>{er(e,t)}),0)}function er(e,t,n){const o=t.value,i=e.multiple;if(i&&!Array.isArray(o))return;let r,a;for(let t=0,n=e.options.length;t-1,a.selected!==r&&(a.selected=r);else if(V(nr(a),o))return void(e.selectedIndex!==t&&(e.selectedIndex=t));i||(e.selectedIndex=-1)}function tr(e,t){return t.every((t=>!V(t,e)))}function nr(e){return"_value"in e?e._value:e.value}function or(e){e.target.composing=!0}function ir(e){e.target.composing&&(e.target.composing=!1,rr(e.target,"input"))}function rr(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function ar(e){return!e.componentInstance||e.data&&e.data.transition?e:ar(e.componentInstance._vnode)}var cr={bind(e,{value:t},n){const o=(n=ar(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;t&&o?(n.data.show=!0,Gi(n,(()=>{e.style.display=i}))):e.style.display=t?i:"none"},update(e,{value:t,oldValue:n},o){!t!=!n&&((o=ar(o)).data&&o.data.transition?(o.data.show=!0,t?Gi(o,(()=>{e.style.display=e.__vOriginalDisplay})):Qi(o,(()=>{e.style.display="none"}))):e.style.display=t?e.__vOriginalDisplay:"none")},unbind(e,t,n,o,i){i||(e.style.display=e.__vOriginalDisplay)}},sr={model:_i,show:cr};const lr={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function dr(e){const t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?dr(Pt(t.children)):e}function mr(e){const t={},n=e.$options;for(const o in n.propsData)t[o]=e[o];const o=n._parentListeners;for(const e in o)t[C(e)]=o[e];return t}function fr(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}const ur=e=>e.tag||yt(e),pr=e=>"show"===e.name;var br={name:"transition",props:lr,abstract:!0,render(e){let t=this.$slots.default;if(!t)return;if(t=t.filter(ur),!t.length)return;const n=this.mode,o=t[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;const i=dr(o);if(!i)return o;if(this._leaving)return fr(e,o);const r=`__transition-${this._uid}-`;i.key=null==i.key?i.isComment?r+"comment":r+i.tag:s(i.key)?0===String(i.key).indexOf(r)?i.key:r+i.key:i.key;const a=(i.data||(i.data={})).transition=mr(this),c=this._vnode,l=dr(c);if(i.data.directives&&i.data.directives.some(pr)&&(i.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,l)&&!yt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){const t=l.data.transition=z({},a);if("out-in"===n)return this._leaving=!0,$e(t,"afterLeave",(()=>{this._leaving=!1,this.$forceUpdate()})),fr(e,o);if("in-out"===n){if(yt(i))return c;let e;const n=()=>{e()};$e(a,"afterEnter",n),$e(a,"enterCancelled",n),$e(t,"delayLeave",(t=>{e=t}))}}return o}};const hr=z({tag:String,moveClass:String},lr);delete hr.mode;var gr={props:hr,beforeMount(){const e=this._update;this._update=(t,n)=>{const o=gn(this);this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept,o(),e.call(this,t,n)}},render(e){const t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),o=this.prevChildren=this.children,i=this.$slots.default||[],r=this.children=[],a=mr(this);for(let e=0;e{if(e.data.moved){const n=e.elm,o=n.style;Ri(n,t),o.transform=o.WebkitTransform=o.transitionDuration="",n.addEventListener(Oi,n._moveCb=function e(o){o&&o.target!==n||o&&!/transform$/.test(o.propertyName)||(n.removeEventListener(Oi,e),n._moveCb=null,Ni(n,t))})}})))},methods:{hasMove(e,t){if(!Pi)return!1;if(this._hasMove)return this._hasMove;const n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach((e=>{Ii(n,e)})),Di(n,t),n.style.display="none",this.$el.appendChild(n);const o=Ui(n);return this.$el.removeChild(n),this._hasMove=o.hasTransform}}};function Fr(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function vr(e){e.data.newPos=e.elm.getBoundingClientRect()}function wr(e){const t=e.data.pos,n=e.data.newPos,o=t.left-n.left,i=t.top-n.top;if(o||i){e.data.moved=!0;const t=e.elm.style;t.transform=t.WebkitTransform=`translate(${o}px,${i}px)`,t.transitionDuration="0s"}}var yr={Transition:br,TransitionGroup:gr};uo.config.mustUseProp=(e,t,n)=>"value"===n&&yo(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e,uo.config.isReservedTag=Vo,uo.config.isReservedAttr=wo,uo.config.getTagNamespace=function(e){return Oo(e)?"svg":"math"===e?"math":void 0},uo.config.isUnknownElement=function(e){if(!G)return!0;if(Vo(e))return!1;if(e=e.toLowerCase(),null!=To[e])return To[e];const t=document.createElement(e);return e.indexOf("-")>-1?To[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:To[e]=/HTMLUnknownElement/.test(t.toString())},z(uo.options.directives,sr),z(uo.options.components,yr),uo.prototype.__patch__=G?Ji:P,uo.prototype.$mount=function(e,t){return function(e,t,n){let o;e.$el=t,e.$options.render||(e.$options.render=de),yn(e,"beforeMount"),o=()=>{e._update(e._render(),n)},new mn(e,o,P,{before(){e._isMounted&&!e._isDestroyed&&yn(e,"beforeUpdate")}},!0),n=!1;const i=e._preWatchers;if(i)for(let e=0;e{q.devtools&&oe&&oe.emit("init",uo)}),0),z(uo,rn),e.exports=uo},7761:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=7761,e.exports=t},4311:(e,t,n)=>{var o={"./index.en-US.md":5340};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4311},3552:(e,t,n)=>{var o={"./index.en-US.ts":8730};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=3552},4353:(e,t,n)=>{var o={"./id-search/index.ts":8692};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4353},5269:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pako:()=>o}); /* eslint-disable */ -const o=function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var l=n[a]={exports:{}};t[a][0].call(l.exports,(function(e){return i(t[a][1][e]||e)}),l,l.exports,e,t,n,o)}return n[a].exports}for(var r=void 0,a=0;a>>6:(n<65536?t[a++]=224|n>>>12:(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63),t[a++]=128|n>>>6&63),t[a++]=128|63&n);return t},n.buf2binstring=function(e){return s(e,e.length)},n.binstring2buf=function(e){for(var t=new o.Buf8(e.length),n=0,i=t.length;n>10&1023,l[o++]=56320|1023&i)}return s(l,o)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;0<=n&&128==(192&e[n]);)n--;return n<0||0===n?t:n+a[e[n]]>t?n:t}},{"./common":1}],3:[function(e,t,n){t.exports=function(e,t,n,o){for(var i=65535&e|0,r=e>>>16&65535|0,a=0;0!==n;){for(n-=a=2e3>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,i){var r=o,a=i+n;e^=-1;for(var c=i;c>>8^r[255&(e^t[c])];return-1^e}},{}],6:[function(e,t,n){t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(e,t,n){t.exports=function(e,t){var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w,y,x,k,C,A,E;n=e.state,o=e.next_in,A=e.input,i=o+(e.avail_in-5),r=e.next_out,E=e.output,a=r-(t-e.avail_out),c=r+(e.avail_out-257),s=n.dmax,l=n.wsize,d=n.whave,m=n.wnext,f=n.window,u=n.hold,p=n.bits,b=n.lencode,h=n.distcode,g=(1<>>=w=v>>>24,p-=w,0==(w=v>>>16&255))E[r++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=b[(65535&v)+(u&(1<>>=w,p-=w),p<15&&(u+=A[o++]<>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=h[(65535&v)+(u&(1<>>=w,p-=w,(w=r-a)>3,u&=(1<<(p-=y<<3))-1,e.next_in=o,e.next_out=r,e.avail_in=o>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new o.Buf16(320),this.work=new o.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function m(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new o.Buf32(852),t.distcode=t.distdyn=new o.Buf32(592),t.sane=1,t.back=-1,0):s}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,m(e)):s}function u(e,t){var n,o;return e&&e.state?(o=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=a.wsize?(o.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i<(r=a.wsize-a.wnext)&&(r=i),o.arraySet(a.window,t,n-i,r,a.wnext),(i-=r)?(o.arraySet(a.window,t,n-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=r(n.check,T,2,0),g=h=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",n.mode=30;break}if(g-=4,S=8+(15&(h>>>=4)),0===n.wbits)n.wbits=S;else if(S>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=3;case 3:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>8&255,T[2]=h>>>16&255,T[3]=h>>>24&255,n.check=r(n.check,T,4,0)),g=h=0,n.mode=4;case 4:for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>8),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=5;case 5:if(1024&n.flags){for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>>8&255,n.check=r(n.check,T,2,0)),g=h=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&(p<(x=n.length)&&(x=p),x&&(n.head&&(S=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),o.arraySet(n.head.extra,d,f,x,S)),512&n.flags&&(n.check=r(n.check,d,x,f)),p-=x,f+=x,n.length-=x),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===p)break e;for(x=0;S=d[f+x++],n.head&&S&&n.length<65536&&(n.head.name+=String.fromCharCode(S)),S&&x>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>=7&g,g-=7&g,n.mode=27;break}for(;g<3;){if(0===p)break e;p--,h+=d[f++]<>>=1)){case 0:n.mode=14;break;case 1:if(F(n),n.mode=20,6!==t)break;h>>>=2,g-=2;break e;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}h>>>=2,g-=2;break;case 14:for(h>>>=7&g,g-=7&g;g<32;){if(0===p)break e;p--,h+=d[f++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&h,g=h=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(x=n.length){if(p>>=5,g-=5,n.ndist=1+(31&h),h>>>=5,g-=5,n.ncode=4+(15&h),h>>>=4,g-=4,286>>=3,g-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,P={bits:n.lenbits},M=c(0,n.lens,0,19,n.lencode,0,n.work,P),n.lenbits=P.bits,M){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=A,g-=A,n.lens[n.have++]=B;else{if(16===B){for(O=A+2;g>>=A,g-=A,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}S=n.lens[n.have-1],x=3+(3&h),h>>>=2,g-=2}else if(17===B){for(O=A+3;g>>=A)),h>>>=3,g-=3}else{for(O=A+7;g>>=A)),h>>>=7,g-=7}if(n.have+x>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;x--;)n.lens[n.have++]=S}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,P={bits:n.lenbits},M=c(1,n.lens,0,n.nlen,n.lencode,0,n.work,P),n.lenbits=P.bits,M){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,P={bits:n.distbits},M=c(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,P),n.distbits=P.bits,M){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(6<=p&&258<=b){e.next_out=u,e.avail_out=b,e.next_in=f,e.avail_in=p,n.hold=h,n.bits=g,a(e,y),u=e.next_out,m=e.output,b=e.avail_out,f=e.next_in,d=e.input,p=e.avail_in,h=n.hold,g=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;E=(V=n.lencode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,n.length=B,0===E){n.mode=26;break}if(32&E){n.back=-1,n.mode=12;break}if(64&E){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&E,n.mode=22;case 22:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;E=(V=n.distcode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,64&E){e.msg="invalid distance code",n.mode=30;break}n.offset=B,n.extra=15&E,n.mode=24;case 24:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===b)break e;if(x=y-b,n.offset>x){if((x=n.offset-x)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}x>n.wnext?(x-=n.wnext,k=n.wsize-x):k=n.wnext-x,x>n.length&&(x=n.length),C=n.window}else C=m,k=u-n.offset,x=n.length;for(bF?(w=L[j+m[C]],y=P[O+m[C]]):(w=96,y=0),u=1<>I)+(p-=u)]=v<<24|w<<16|y|0,0!==p;);for(u=1<>=1;if(0!==u?(M&=u-1,M+=u):M=0,C++,0==--V[k]){if(k===E)break;k=t[n+m[C]]}if(B{var o={"./biliplus.svg":4050,"./lv6-plus.svg":732,"./settings-outline.svg":2613,"./widgets.svg":1522};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=5454},8195:e=>{"use strict";e.exports="data:font/woff2;base64,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"},8232:e=>{"use strict";e.exports='- `与 "解除 B 站区域限制" 互斥`: 若打开此选项, 在检测到 "解除 B 站区域限制" 脚本时, 将停止此脚本的加载以避免布局错乱.\n'},5340:e=>{"use strict";e.exports="TODO: en-US doc"},6284:e=>{"use strict";e.exports="- 文本颜色设为自动时, 背景色为主题色的元素, 会根据背景色的亮度自动决定使用黑色还是白色的文字.\n- 更新源决定在线仓库中功能的数据来源, 请注意更换更新源不会影响已安装的组件, 脚本本体的更新源与这个选项无关.\n- 文件下载模式决定多个文件下载时是打包为单个 zip 文件还是触发多个下载请求.\n- 开发者模式若开启:\n - 控制台中会统计各个功能的加载耗时.\n - 本地安装的功能将无视更新间隔期.\n - 允许输出 debug 级别的日志.\n - 报错的 Toast 将会显示整个堆栈信息.\n\n
    文件命名格式说明\n\n自定义文件命名格式, 各个功能在下载单个文件时, 会根据这个格式来命名\n可以使用的变量有:\n- `title`: 视频标题/直播间标题\n- `ep`: 选集标题\n- `aid`: AV 号\n- `bvid`: BV 号\n- `cid`: CID (每个视频的唯一编号, AV 号对应的视频可能有多集)\n- `lid`: 直播间号\n- `y`/`M`/`d`: 年/月/日\n- `h`/`m`/`s`/`ms`: 时/分/秒/毫秒\n\n默认的格式是 `[title][ - ep]`, 标题+选集标题, 当没有选集标题时则只有标题.\n\n变量要放在方括号里, 而方括号里的其他内容会在变量有效时出现. 比如格式如果写成 `[title] - [ep]`, 那么即使没有选集标题, 中间那个 ` - ` 也会出现在文件名里. 如果像默认那样放在方括号里, 没有选集标题时, ` - ` 也不会出现.\n\n例如, 想要标题 + AV 号 + 时间的格式, 可以设定为 `[title][ AVaid] [y]-[M]-[d] [h]-[m]-[s]`, 能够得到类似 `xxxx AV23333 2019-05-29 19-59-44` 的名字.\n
    \n\n
    批量命名格式说明\n\n自定义批量下载时的文件命名格式, 基本规则同 `文件命名格式`.\n新增的变量:\n- `n`: 数字, 表示第n个视频.\n\n
    \n"},3066:e=>{"use strict";e.exports=''},4050:e=>{"use strict";e.exports=''},732:e=>{"use strict";e.exports=''},2613:e=>{"use strict";e.exports=''},1522:e=>{"use strict";e.exports=''},113:e=>{"use strict";e.exports=JSON.parse('{"version":"2.8.10","author":"Grant Howard, Coulomb-G","copyright":"[year], Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)","license":"MIT","match":"*://*.bilibili.com/*","exclude":["*://api.bilibili.com/*","*://api.*.bilibili.com/*","*://*.bilibili.com/api/*","*://member.bilibili.com/studio/bs-editor/*","*://t.bilibili.com/h5/dynamic/specification","*://bbq.bilibili.com/*","*://message.bilibili.com/pages/nav/header_sync","*://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html","*://open-live.bilibili.com/*"],"run-at":"document-start","grant":["unsafeWindow","GM_getValue","GM_setValue","GM_deleteValue","GM_info","GM_xmlhttpRequest","GM_registerMenuCommand","GM_unregisterMenuCommand"],"connect":["raw.githubusercontent.com","github.com","[altCdn.host]","cn.bing.com","www.bing.com","translate.google.cn","translate.google.com","localhost","*"],"require":["[altCdn.library.lodash]"],"icon":"[altCdn.smallLogo]","icon64":"[altCdn.logo]"}')}},__webpack_module_cache__={},leafPrototypes,getProto;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},getProto=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var n=Object.create(null);__webpack_require__.r(n);var o={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var i=2&t&&e;"object"==typeof i&&!~leafPrototypes.indexOf(i);i=getProto(i))Object.getOwnPropertyNames(i).forEach((t=>o[t]=()=>e[t]));return o.default=()=>e,__webpack_require__.d(n,o),n},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{"use strict";(async()=>{window.lodash=_,Object.defineProperty(window,"_",{get:()=>(console.warn("window._ is deprecated, please use window.lodash instead."),window.lodash)});const{initVue:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,1734));e();const{headLoaded:t,raiseLifeCycleEvent:n,LifeCycleEventTypes:o}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,1197));n(o.Start);const{none:i}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8612)),{promiseLoadTrace:r}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,9941));await r("wait for ",(async()=>{await t(i)})),await r("compatibility patch",(async()=>{const{compatibilityPatch:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3787));e()}));const{coreApis:a,externalApis:c}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,4435));if(unsafeWindow.bangumi_area_limit_hack&&a.settings.getComponentSettings("compatibilities").options.disableOnBalh&&a.utils.matchUrlPattern("//www.bilibili.com/bangumi/play/"))return void console.log("BALH detected, Bilibili Evolved is disabled.");unsafeWindow.bilibiliEvolved=c,window.coreApis=a,window.dq=a.utils.dq,window.dqa=a.utils.dqa,window.de=a.utils.de,window.des=a.utils.des,window.dea=a.utils.dea,window.deai=a.utils.deai,window.none=a.utils.none,window.componentsTags=a.componentApis.component.componentsTags,window.console=a.utils.log.useScopedConsole({name:"Bilibili Evolved",color:"#00A0D8"}), +const o=function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var l=n[a]={exports:{}};t[a][0].call(l.exports,(function(e){return i(t[a][1][e]||e)}),l,l.exports,e,t,n,o)}return n[a].exports}for(var r=void 0,a=0;a>>6:(n<65536?t[a++]=224|n>>>12:(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63),t[a++]=128|n>>>6&63),t[a++]=128|63&n);return t},n.buf2binstring=function(e){return s(e,e.length)},n.binstring2buf=function(e){for(var t=new o.Buf8(e.length),n=0,i=t.length;n>10&1023,l[o++]=56320|1023&i)}return s(l,o)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;0<=n&&128==(192&e[n]);)n--;return n<0||0===n?t:n+a[e[n]]>t?n:t}},{"./common":1}],3:[function(e,t,n){t.exports=function(e,t,n,o){for(var i=65535&e|0,r=e>>>16&65535|0,a=0;0!==n;){for(n-=a=2e3>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,i){var r=o,a=i+n;e^=-1;for(var c=i;c>>8^r[255&(e^t[c])];return-1^e}},{}],6:[function(e,t,n){t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(e,t,n){t.exports=function(e,t){var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w,y,x,k,C,A,E;n=e.state,o=e.next_in,A=e.input,i=o+(e.avail_in-5),r=e.next_out,E=e.output,a=r-(t-e.avail_out),c=r+(e.avail_out-257),s=n.dmax,l=n.wsize,d=n.whave,m=n.wnext,f=n.window,u=n.hold,p=n.bits,b=n.lencode,h=n.distcode,g=(1<>>=w=v>>>24,p-=w,0==(w=v>>>16&255))E[r++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=b[(65535&v)+(u&(1<>>=w,p-=w),p<15&&(u+=A[o++]<>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=h[(65535&v)+(u&(1<>>=w,p-=w,(w=r-a)>3,u&=(1<<(p-=y<<3))-1,e.next_in=o,e.next_out=r,e.avail_in=o>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new o.Buf16(320),this.work=new o.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function m(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new o.Buf32(852),t.distcode=t.distdyn=new o.Buf32(592),t.sane=1,t.back=-1,0):s}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,m(e)):s}function u(e,t){var n,o;return e&&e.state?(o=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=a.wsize?(o.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i<(r=a.wsize-a.wnext)&&(r=i),o.arraySet(a.window,t,n-i,r,a.wnext),(i-=r)?(o.arraySet(a.window,t,n-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=r(n.check,T,2,0),g=h=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",n.mode=30;break}if(g-=4,S=8+(15&(h>>>=4)),0===n.wbits)n.wbits=S;else if(S>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=3;case 3:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>8&255,T[2]=h>>>16&255,T[3]=h>>>24&255,n.check=r(n.check,T,4,0)),g=h=0,n.mode=4;case 4:for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>8),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=5;case 5:if(1024&n.flags){for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>>8&255,n.check=r(n.check,T,2,0)),g=h=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&(p<(x=n.length)&&(x=p),x&&(n.head&&(S=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),o.arraySet(n.head.extra,d,f,x,S)),512&n.flags&&(n.check=r(n.check,d,x,f)),p-=x,f+=x,n.length-=x),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===p)break e;for(x=0;S=d[f+x++],n.head&&S&&n.length<65536&&(n.head.name+=String.fromCharCode(S)),S&&x>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>=7&g,g-=7&g,n.mode=27;break}for(;g<3;){if(0===p)break e;p--,h+=d[f++]<>>=1)){case 0:n.mode=14;break;case 1:if(F(n),n.mode=20,6!==t)break;h>>>=2,g-=2;break e;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}h>>>=2,g-=2;break;case 14:for(h>>>=7&g,g-=7&g;g<32;){if(0===p)break e;p--,h+=d[f++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&h,g=h=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(x=n.length){if(p>>=5,g-=5,n.ndist=1+(31&h),h>>>=5,g-=5,n.ncode=4+(15&h),h>>>=4,g-=4,286>>=3,g-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,M={bits:n.lenbits},P=c(0,n.lens,0,19,n.lencode,0,n.work,M),n.lenbits=M.bits,P){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=A,g-=A,n.lens[n.have++]=B;else{if(16===B){for(O=A+2;g>>=A,g-=A,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}S=n.lens[n.have-1],x=3+(3&h),h>>>=2,g-=2}else if(17===B){for(O=A+3;g>>=A)),h>>>=3,g-=3}else{for(O=A+7;g>>=A)),h>>>=7,g-=7}if(n.have+x>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;x--;)n.lens[n.have++]=S}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,M={bits:n.lenbits},P=c(1,n.lens,0,n.nlen,n.lencode,0,n.work,M),n.lenbits=M.bits,P){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,M={bits:n.distbits},P=c(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,M),n.distbits=M.bits,P){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(6<=p&&258<=b){e.next_out=u,e.avail_out=b,e.next_in=f,e.avail_in=p,n.hold=h,n.bits=g,a(e,y),u=e.next_out,m=e.output,b=e.avail_out,f=e.next_in,d=e.input,p=e.avail_in,h=n.hold,g=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;E=(V=n.lencode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,n.length=B,0===E){n.mode=26;break}if(32&E){n.back=-1,n.mode=12;break}if(64&E){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&E,n.mode=22;case 22:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;E=(V=n.distcode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,64&E){e.msg="invalid distance code",n.mode=30;break}n.offset=B,n.extra=15&E,n.mode=24;case 24:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===b)break e;if(x=y-b,n.offset>x){if((x=n.offset-x)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}x>n.wnext?(x-=n.wnext,k=n.wsize-x):k=n.wnext-x,x>n.length&&(x=n.length),C=n.window}else C=m,k=u-n.offset,x=n.length;for(bF?(w=L[j+m[C]],y=M[O+m[C]]):(w=96,y=0),u=1<>I)+(p-=u)]=v<<24|w<<16|y|0,0!==p;);for(u=1<>=1;if(0!==u?(P&=u-1,P+=u):P=0,C++,0==--V[k]){if(k===E)break;k=t[n+m[C]]}if(B{var o={"./biliplus.svg":4050,"./lv6-plus.svg":732,"./settings-outline.svg":2613,"./widgets.svg":1522};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=5454},8195:e=>{"use strict";e.exports="data:font/woff2;base64,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"},8232:e=>{"use strict";e.exports='- `与 "解除 B 站区域限制" 互斥`: 若打开此选项, 在检测到 "解除 B 站区域限制" 脚本时, 将停止此脚本的加载以避免布局错乱.\n'},5340:e=>{"use strict";e.exports="TODO: en-US doc"},6284:e=>{"use strict";e.exports="- 文本颜色设为自动时, 背景色为主题色的元素, 会根据背景色的亮度自动决定使用黑色还是白色的文字.\n- 更新源决定在线仓库中功能的数据来源, 请注意更换更新源不会影响已安装的组件, 脚本本体的更新源与这个选项无关.\n- 文件下载模式决定多个文件下载时是打包为单个 zip 文件还是触发多个下载请求.\n- 开发者模式若开启:\n - 控制台中会统计各个功能的加载耗时.\n - 本地安装的功能将无视更新间隔期.\n - 允许输出 debug 级别的日志.\n - 报错的 Toast 将会显示整个堆栈信息.\n\n
    文件命名格式说明\n\n自定义文件命名格式, 各个功能在下载单个文件时, 会根据这个格式来命名\n可以使用的变量有:\n- `title`: 视频标题/直播间标题\n- `ep`: 选集标题\n- `aid`: AV 号\n- `bvid`: BV 号\n- `cid`: CID (每个视频的唯一编号, AV 号对应的视频可能有多集)\n- `lid`: 直播间号\n- `y`/`M`/`d`: 年/月/日\n- `h`/`m`/`s`/`ms`: 时/分/秒/毫秒\n\n默认的格式是 `[title][ - ep]`, 标题+选集标题, 当没有选集标题时则只有标题.\n\n变量要放在方括号里, 而方括号里的其他内容会在变量有效时出现. 比如格式如果写成 `[title] - [ep]`, 那么即使没有选集标题, 中间那个 ` - ` 也会出现在文件名里. 如果像默认那样放在方括号里, 没有选集标题时, ` - ` 也不会出现.\n\n例如, 想要标题 + AV 号 + 时间的格式, 可以设定为 `[title][ AVaid] [y]-[M]-[d] [h]-[m]-[s]`, 能够得到类似 `xxxx AV23333 2019-05-29 19-59-44` 的名字.\n
    \n\n
    批量命名格式说明\n\n自定义批量下载时的文件命名格式, 基本规则同 `文件命名格式`.\n新增的变量:\n- `n`: 数字, 表示第n个视频.\n\n
    \n"},3066:e=>{"use strict";e.exports=''},4050:e=>{"use strict";e.exports=''},732:e=>{"use strict";e.exports=''},2613:e=>{"use strict";e.exports=''},1522:e=>{"use strict";e.exports=''},113:e=>{"use strict";e.exports=JSON.parse('{"version":"2.8.11","author":"Grant Howard, Coulomb-G","copyright":"[year], Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)","license":"MIT","match":"*://*.bilibili.com/*","exclude":["*://api.bilibili.com/*","*://api.*.bilibili.com/*","*://*.bilibili.com/api/*","*://member.bilibili.com/studio/bs-editor/*","*://t.bilibili.com/h5/dynamic/specification","*://bbq.bilibili.com/*","*://message.bilibili.com/pages/nav/header_sync","*://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html","*://open-live.bilibili.com/*"],"run-at":"document-start","grant":["unsafeWindow","GM_getValue","GM_setValue","GM_deleteValue","GM_info","GM_xmlhttpRequest","GM_registerMenuCommand","GM_unregisterMenuCommand"],"connect":["raw.githubusercontent.com","github.com","[altCdn.host]","cn.bing.com","www.bing.com","translate.google.cn","translate.google.com","localhost","*"],"require":["[altCdn.library.lodash]"],"icon":"[altCdn.smallLogo]","icon64":"[altCdn.logo]"}')}},__webpack_module_cache__={},leafPrototypes,getProto;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},getProto=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var n=Object.create(null);__webpack_require__.r(n);var o={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var i=2&t&&e;"object"==typeof i&&!~leafPrototypes.indexOf(i);i=getProto(i))Object.getOwnPropertyNames(i).forEach((t=>o[t]=()=>e[t]));return o.default=()=>e,__webpack_require__.d(n,o),n},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{"use strict";(async()=>{window.lodash=_,Object.defineProperty(window,"_",{get:()=>(console.warn("window._ is deprecated, please use window.lodash instead."),window.lodash)});const{initVue:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,1734));e();const{headLoaded:t,raiseLifeCycleEvent:n,LifeCycleEventTypes:o}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,1197));n(o.Start);const{none:i}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8612)),{promiseLoadTrace:r}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,9941));await r("wait for ",(async()=>{await t(i)})),await r("compatibility patch",(async()=>{const{compatibilityPatch:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3787));e()}));const{coreApis:a,externalApis:c}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,4435));if(unsafeWindow.bangumi_area_limit_hack&&a.settings.getComponentSettings("compatibilities").options.disableOnBalh&&a.utils.matchUrlPattern("//www.bilibili.com/bangumi/play/"))return void console.log("BALH detected, Bilibili Evolved is disabled.");unsafeWindow.bilibiliEvolved=c,window.coreApis=a,window.dq=a.utils.dq,window.dqa=a.utils.dqa,window.de=a.utils.de,window.des=a.utils.des,window.dea=a.utils.dea,window.deai=a.utils.deai,window.none=a.utils.none,window.componentsTags=a.componentApis.component.componentsTags,window.console=a.utils.log.useScopedConsole({name:"Bilibili Evolved",color:"#00A0D8"}), // eslint-disable-next-line no-global-assign console=window.console;const{loadAllUserComponents:s}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,6316));await r("parse user components",s);const{preloadStyles:l,loadAllCustomStyles:d}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,4460));await r("load styles",l),n(o.StyleLoaded),await r("load components",(async()=>{const{loadAllComponents:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,6316));return Promise.all([e(),d()]).catch((e=>{console.error(e)}))})),n(o.ComponentsLoaded),await r("wind up",(async()=>{const e=document.createElement("link");e.rel="dns-prefetch",e.href="https://api.bilibili.com",document.head.insertAdjacentElement("afterbegin",e),requestIdleCallback((async()=>{const{getGeneralSettings:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,7219)),{devMode:t}=e();if(t){const{promiseLoadTime:e,promiseResolveTime:t}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,9941)),{logStats:n}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,5043));n("init block",e),n("init resolve",t)}}))})),n(o.End)})()})()})(); \ No newline at end of file diff --git a/bb-evolved/dist/bilibili-evolved.user.js b/bb-evolved/dist/bilibili-evolved.user.js index e9be7cca46..a60a40c5b2 100644 --- a/bb-evolved/dist/bilibili-evolved.user.js +++ b/bb-evolved/dist/bilibili-evolved.user.js @@ -3,7 +3,7 @@ // @description 强大的哔哩哔哩增强脚本 // @updateURL https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/dist/bilibili-evolved.user.js // @downloadURL https://raw.githubusercontent.com/the1812/Bilibili-Evolved/master/dist/bilibili-evolved.user.js -// @version 2.8.10 +// @version 2.8.11 // @author Grant Howard, Coulomb-G // @copyright 2024, Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G) // @license MIT @@ -46,46 +46,46 @@ const r=()=>{(0,o.contentLoaded)((async()=>{document.body.classList.add("round-c /* eslint-disable no-bitwise */ function*(e,t){let n,o=t?.low??0,i=t?.high??e.length;for(;o+1>>1;(yield{low:o,high:i,mid:n,slice:e.slice(o,n),rouge:Math.trunc(Math.log2(i-o))})?i=n:o=n}return{low:o,high:i,mid:n,slice:e.slice(o,n),rouge:Math.trunc(Math.log2(i-o)),target:e[o]}};var c=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",[t("div",[e._v("可能出问题的组件是:"+e._s(e.displayName)+"("+e._s(e.name)+")")]),e._v(" "),t("div",[t("span",{staticClass:"link",on:{click:e.restore}},[e._v("恢复原状("+e._s(e.countdown)+" 秒)")])])])};c._withStripped=!0;var s=n(5026);const l=n.n(s)().extend({data:()=>({countdown:30,userComponent:void 0}),computed:{displayName(){return this.userComponent?.metadata?.displayName},name(){return this.userComponent?.metadata?.name}},watch:{countdown(e){0===e&&this.restore()}},created(){this.interval=setInterval((()=>{this.countdown>0?this.countdown--:clearInterval(this.interval)}),1e3)},destroyed(){clearInterval(this.interval)},methods:{restore(){clearInterval(this.interval),this.$emit("restore")}}});const d=(0,n(4893).Z)(l,c,[],!1,null,null,null).exports;let m,f,u,p,b;const h=e=>{m?Object.assign(m,e):m=e},g=e=>{f=e},F=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,7234)),{userComponents:t}=e,o=lodash.pickBy(t,(e=>e.metadata.configurable||!0)),{targetComponents:i,keepDisabledComponents:r,keepEnabledComponents:a}=lodash.transform(o,((e,t,n)=>{m.keepEnabledComponents?.includes(n)?e.keepEnabledComponents.push(t):m.keepDisabledComponents?.includes(n)?e.keepDisabledComponents.push(t):e.targetComponents.push(t)}),{targetComponents:[],keepDisabledComponents:[],keepEnabledComponents:[]});return{userComponents:t,configurableUserComponents:o,targetComponents:i,keepDisabledComponents:r,keepEnabledComponents:a}},v=(e,t)=>e.forEach((e=>e.settings.enabled=t)),w=e=>e.map((e=>`${e.metadata.displayName}(${e.metadata.name})`)).join(", ")||"无",y=()=>!lodash.isEmpty(m.bisectInitialState),x=async()=>{f?.log("stop - 准备停止组件二等分"),b?.close();const{configurableUserComponents:e}=await F(),t=[];for(const[n,o]of Object.entries(e)){const e=m.originalComponentEnableState?.[n];null!=e?o.settings.enabled=e:t.push(o)}if(t.length){const e=`部分组件未能还原状态:${w(t)}`;f?.warn(`stop - ${e}`),i.Toast.error(e,"组件二等分"),await(0,r.delay)(3e3)}f?.log("stop - 清理状态"),u=null,m.bisectInitialState={},m.originalComponentEnableState={},f?.log("stop - 重载页面"),location.reload()},k=async(e,t)=>{b?.close(),f?.log("next - 当前工作状态:"+( // eslint-disable-next-line no-nested-ternary -null==e?"未知":e?"异常":"正常"));const{done:n,value:o}=u.next(e);if(n){const{low:e,high:t}=o;m.bisectInitialState={low:e,high:t};const n=`bisector-result-toast-content-${(0,r.getRandomId)()}`;i.Toast.info(`
    `,"组件二等分结果"),await(0,r.delay)();const a=(0,r.mountVueComponent)(d,`#${n}`);a.userComponent=o.target,a.$on("restore",(()=>{x()}))}else{const{slice:e,low:n,high:i}=o,r=e,a=lodash.difference(p.targetComponents,e);m.bisectInitialState={low:n,high:i},f?.log(`next - 关闭组件:${w(a)}`),f?.log(`next - 开启组件:${w(r)}`),v(a,!1),v(r,!0),t&&(f?.log("next - 重载页面"),location.reload())}return{done:n,value:o}},C=async()=>{f?.log("recover - 准备恢复组件二等分"),p=await F();const{targetComponents:e,keepDisabledComponents:t,keepEnabledComponents:i}=p;v(i,!0),v(t,!1),f?.log(`recover - 保持关闭组件:${w(t)}`),f?.log(`recover - 保持开启组件:${w(i)}`),f?.log(`recover - 全部目标组件:${w(e)}`),u=a(e,m.bisectInitialState);const{done:r,value:c}=await k();if(!r){const{rouge:e}=c;b=(0,o.showDialog)({title:()=>Promise.resolve().then(n.bind(n,898)),content:()=>Promise.resolve().then(n.bind(n,3209)),contentProps:{rouge:e,onGood:()=>k(!1,!0),onBad:()=>k(!0,!0),onAbort:()=>x()}})}},A=async()=>{if(y())return void await C();f?.log("start - 准备开始组件二等分"),p=await F();const{configurableUserComponents:e,targetComponents:t,keepDisabledComponents:n,keepEnabledComponents:o}=p;f?.log("start - 保存组件初始启用状态"),m.originalComponentEnableState=lodash.mapValues(e,(e=>e.settings.enabled)),v(t,!0),v(o,!0),v(n,!1),f?.log(`start - 保持关闭组件:${w(n)}`),f?.log(`start - 保持开启组件:${w(o)}`),f?.log(`start - 启用全部目标组件:${w(t)}`),u=a(t,m.bisectInitialState),await k(void 0,!0)}},6955:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getBuiltInComponents:()=>O,isBuiltInComponent:()=>V});var o=n(1394),i=n(3085),r=n(4093),a=n(2522);const c={name:"launchBar.plugin",displayName:"搜索栏 - 快捷键支持",setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.showLaunchBar={displayName:"显示搜索栏",run:async()=>{const{toggleLaunchBar:e}=await Promise.resolve().then(n.bind(n,2900));return e(),!0}}})),t("keymap.presets",(e=>{e.showLaunchBar="/"}))}},s=(0,r.defineComponentMetadata)({name:"launchBar",displayName:"搜索栏",configurable:!1,entry:i.none,plugin:c,hidden:!0,tags:[a.t.general,a.t.utils],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});var l=n(816),d=n(1372),m=n(8737);function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u{constructor(){f(this,"accepts",(e=>e.nodeType===Node.ELEMENT_NODE)),f(this,"getValue",(e=>e.nodeValue)),f(this,"setValue",((e,t)=>{e.nodeValue=t})),f(this,"getElement",(e=>e))}translate(e){let t=this.getValue(e);if(!t||"string"!=typeof t||"*"===t)return;t=t.trim();const n=u.map.get(t);if(void 0===n){const n=u.regex.find((e=>{let[n]=e;return n.test(t)}));if(n){const[o,i]=n;this.setValue(e,t.replace(o,i))}}else if("string"==typeof n)this.setValue(e,n);else if(Array.isArray(n)){let t=null;for(const o of n)if("string"==typeof o)t=o;else{const{text:n,selector:i,not:r}=o;this.getElement(e)?.matches(i)!==Boolean(r)&&(t=n)}null!==t&&this.setValue(e,t)}else{const{text:t,selector:o,not:i}=n;this.getElement(e)?.matches(o)!==Boolean(i)&&this.setValue(e,t)}}static walk(e,t){const n=document.createNodeIterator(e, +null==e?"未知":e?"异常":"正常"));const{done:n,value:o}=u.next(e);if(n){const{low:e,high:t}=o;m.bisectInitialState={low:e,high:t};const n=`bisector-result-toast-content-${(0,r.getRandomId)()}`;i.Toast.info(`
    `,"组件二等分结果"),await(0,r.delay)();const a=(0,r.mountVueComponent)(d,`#${n}`);a.userComponent=o.target,a.$on("restore",(()=>{x()}))}else{const{slice:e,low:n,high:i}=o,r=e,a=lodash.difference(p.targetComponents,e);m.bisectInitialState={low:n,high:i},f?.log(`next - 关闭组件:${w(a)}`),f?.log(`next - 开启组件:${w(r)}`),v(a,!1),v(r,!0),t&&(f?.log("next - 重载页面"),location.reload())}return{done:n,value:o}},C=async()=>{f?.log("recover - 准备恢复组件二等分"),p=await F();const{targetComponents:e,keepDisabledComponents:t,keepEnabledComponents:i}=p;v(i,!0),v(t,!1),f?.log(`recover - 保持关闭组件:${w(t)}`),f?.log(`recover - 保持开启组件:${w(i)}`),f?.log(`recover - 全部目标组件:${w(e)}`),u=a(e,m.bisectInitialState);const{done:r,value:c}=await k();if(!r){const{rouge:e}=c;b=(0,o.showDialog)({title:()=>Promise.resolve().then(n.bind(n,898)),content:()=>Promise.resolve().then(n.bind(n,3209)),contentProps:{rouge:e,onGood:()=>k(!1,!0),onBad:()=>k(!0,!0),onAbort:()=>x()}})}},A=async()=>{if(y())return void await C();f?.log("start - 准备开始组件二等分"),p=await F();const{configurableUserComponents:e,targetComponents:t,keepDisabledComponents:n,keepEnabledComponents:o}=p;f?.log("start - 保存组件初始启用状态"),m.originalComponentEnableState=lodash.mapValues(e,(e=>e.settings.enabled)),v(t,!0),v(o,!0),v(n,!1),f?.log(`start - 保持关闭组件:${w(n)}`),f?.log(`start - 保持开启组件:${w(o)}`),f?.log(`start - 启用全部目标组件:${w(t)}`),u=a(t,m.bisectInitialState),await k(void 0,!0)}},6955:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getBuiltInComponents:()=>O,isBuiltInComponent:()=>V});var o=n(1394),i=n(3085),r=n(4093),a=n(2522);const c={name:"launchBar.plugin",displayName:"搜索栏 - 快捷键支持",setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.showLaunchBar={displayName:"显示搜索栏",run:async()=>{const{toggleLaunchBar:e}=await Promise.resolve().then(n.bind(n,2900));return e(),!0}}})),t("keymap.presets",(e=>{e.showLaunchBar="/"}))}},s=(0,r.defineComponentMetadata)({name:"launchBar",displayName:"搜索栏",configurable:!1,entry:i.none,plugin:c,hidden:!0,tags:[a.t.general,a.t.utils],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});var l=n(816),d=n(1372),m=n(8737);function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u{constructor(){f(this,"accepts",(e=>e.nodeType===Node.ELEMENT_NODE)),f(this,"getValue",(e=>e.nodeValue)),f(this,"setValue",((e,t)=>{e.nodeValue=t})),f(this,"getElement",(e=>e))}translate(e){let t=this.getValue(e);if(!t||"string"!=typeof t||"*"===t)return;t=t.trim();const n=u.map.get(t);if(void 0===n){const n=u.regex.find((e=>{let[n]=e;return n.test(t)}));if(n){const[o,i]=n;this.setValue(e,t.replace(o,i))}}else if("string"==typeof n)this.setValue(e,n);else if(Array.isArray(n)){let t=null;for(const o of n)if("string"==typeof o)t=o;else{const{text:n,selector:i,not:r}=o;this.getElement(e)?.matches(i)!==Boolean(r)&&(t=n)}null!==t&&this.setValue(e,t)}else{const{text:t,selector:o,not:i}=n;this.getElement(e)?.matches(o)!==Boolean(i)&&this.setValue(e,t)}}static walk(e,t){const n=document.createNodeIterator(e, // eslint-disable-next-line no-bitwise -NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT);let o=n.nextNode();for(;o;)t(o),o=n.nextNode()}static translate(e){if(e.nodeType===Node.TEXT_NODE)return void u.textNode.translate(e);const t=e=>{for(const t of u.sensitiveTranslators)t.accepts(e)&&t.translate(e)};t(e),u.walk(e,t)}static translateCssMatches(){const e=u.map.get("*");if(e)for(const{selector:t,text:n}of e){const e=document.querySelector(t);e&&[...e.childNodes].filter((e=>e.nodeType===Node.TEXT_NODE)).forEach((e=>e.nodeValue=n))}}}f(u,"textNode",void 0),f(u,"title",void 0),f(u,"placeholder",void 0),f(u,"sensitiveTranslators",void 0),f(u,"map",void 0),f(u,"regex",void 0);u.textNode=new class extends u{constructor(){super(...arguments),f(this,"accepts",(e=>e.nodeType===Node.TEXT_NODE)),f(this,"getElement",(e=>e.parentElement))}},u.title=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("title"))),f(this,"setValue",((e,t)=>{e.setAttribute("title",t)}))}},u.placeholder=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("placeholder"))),f(this,"setValue",((e,t)=>{e.setAttribute("placeholder",t)}))}},u.sensitiveTranslators=[u.textNode,u.title,u.placeholder];const p=(0,r.defineComponentMetadata)({name:"i18n",displayName:"多语言",configurable:!1,entry:async()=>{const{getSelectedLanguage:e}=await Promise.resolve().then(n.bind(n,1541)),t=e();if(t===l.defaultLanguageCode)return;const{registerAndGetData:o}=await Promise.resolve().then(n.bind(n,779)),[i,r]=o(`i18n.${t}`,new Map,[]);console.log(t,i.size,r.length),0===i.size&&0===r.length||(document.documentElement.setAttribute("lang",t),u.map=i,u.regex=r,u.translate(document.body),u.translateCssMatches(),(0,m.allMutations)((e=>{e.forEach((e=>{"childList"===e.type?(e.addedNodes.length>0&&u.translateCssMatches(),e.addedNodes.forEach((e=>{u.translate(e)}))):"characterData"===e.type?u.textNode.translate(e.target):"attributes"===e.type&&("title"===e.attributeName?u.title.translate(e.target):"placeholder"===e.attributeName&&u.placeholder.translate(e.target))}))})))},tags:[a.t.utils,a.t.experimental,a.t.general],description:{"zh-CN":"安装其他语言包可以更换界面语言, 机器翻译选择可以设定其他一些功能如`动态翻译`, `评论翻译`使用的翻译器. 机器翻译的选择不影响界面语言."},options:{language:{defaultValue:l.languageCodeToName[l.defaultLanguageCode],displayName:"界面语言选择",dropdownEnum:l.languageCodeToName},translator:{defaultValue:Object.keys(d.WK)[0],displayName:"机器翻译选择",dropdownEnum:d.U6}},hidden:!0,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});var b=n(5791),h=n(7234),g=n(2351),F=n(377),v=n(7548);const{checkComponentsUpdate:w,checkLastFeature:y,forceCheckUpdate:x,forceCheckUpdateAndReload:k,silentCheckUpdate:C}=v,A=(0,r.defineOptionsMetadata)({lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},lastInstalledVersion:{displayName:"最后安装版本",defaultValue:"2.0.0",hidden:!0},localPortOverride:{displayName:"本地组件链接端口",defaultValue:"",hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5},urls:{displayName:"更新链接",defaultValue:{components:{},plugins:{},styles:{}},hidden:!0},maxUpdateCount:{displayName:"单次最大更新量 (个)",defaultValue:4}}),E=(0,r.defineComponentMetadata)({name:F.u2,displayName:"自动更新器",description:{"zh-CN":"自动检查组件, 插件和样式的更新. (仅限从设置面板中安装的)"},tags:[a.t.utils],options:A,extraOptions:()=>Promise.resolve().then(n.bind(n,7078)).then((e=>e.default)),entry:async e=>{let{settings:{options:t}}=e;if((0,i.isIframe)())return v;const n=Number(new Date)-t.lastUpdateCheck>=t.minimumDuration,o=new g.Version(b.meta.version).greaterThan(new g.Version(t.lastInstalledVersion));return n?coreApis.lifeCycle.fullyLoaded((()=>C())):o&&coreApis.lifeCycle.fullyLoaded((()=>x())),v},plugin:{displayName:"自动更新器 - 功能扩展",description:{"zh-CN":"记录在设置面板中的功能安装/卸载数据供自动更新使用; 并在组件详情中支持手动检查该组件的更新."},setup:e=>{let{addData:t,addHook:o}=e;["components","plugins","styles"].forEach((e=>{o(`user${lodash.startCase(e)}.add`,{after:(t,n,o)=>{const{options:i}=(0,h.getComponentSettings)("autoUpdate"),r=i.urls[e][o.name];r?(r.url=n,r.lastUpdateCheck=Number(new Date),r.alwaysUpdate=(0,F.jN)(n)):i.urls[e][o.name]={url:n,lastUpdateCheck:Number(new Date),installTime:Number(new Date),alwaysUpdate:(0,F.jN)(n)}}}),o(`user${lodash.startCase(e)}.remove`,{after:t=>{const{options:n}=(0,h.getComponentSettings)("autoUpdate");n.urls[e][t.name]&&delete n.urls[e][t.name]}})})),t("settingsPanel.componentActions",(e=>{const{options:t}=(0,h.getComponentSettings)("autoUpdate");e.push((e=>{const o=t.urls.components[e.name];if(o)return{name:"checkUpdate",displayName:"检查更新",icon:(0,F.jN)(o.url)?"mdi-file-download-outline":"mdi-cloud-download-outline",visible:(0,h.isUserComponent)(e),title:o.url,action:async()=>{const{Toast:t}=await Promise.resolve().then(n.bind(n,9107)),o=t.info("检查更新中...","检查更新");o.message=await w({filterNames:[e.name],force:!0}),o.duration=3e3}}}))}));const i="mdi-cloud-sync-outline";t("launchBar.actions",(e=>{e.push({name:"updateAllFeaturesActions",getActions:async()=>[{name:"检查所有更新",description:"Check Updates",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,9107)),t=e.info("正在检查更新...","检查所有更新");await k(),t.close()},icon:i}]})})),t("settingsPanel.searchBarActions",(e=>{e.unshift({key:"updateFeatures",title:e=>{let{selectedComponents:t}=e;return t.length>0?"更新所选组件":"检查所有更新"},icon:"mdi-cloud-download-outline",run:async e=>{const t=e.selectedComponents.length>0?`确定要更新所选的 ${e.selectedComponents.length} 个组件吗?`:"确定要检查所有更新吗?";if(!window.confirm(t))return;const{Toast:o}=await Promise.resolve().then(n.bind(n,9107)),{isBuiltInComponent:i}=await Promise.resolve().then(n.bind(n,6955));if(0===e.selectedComponents.length){const e=o.info("正在检查更新...","检查所有更新");k(),await k(),e.close()}else e.selectedComponents.forEach((async e=>{let{name:t}=e;if(i(t))o.info("内置组件不能更新","检查更新",3e3);else{const e=o.info("检查更新中...","检查更新"),n=await w({filterNames:[t],force:!0});e.message=n,e.duration=3e3}}))}})})),(0,h.getGeneralSettings)().devMode&&t("launchBar.actions",(e=>{e.push({name:"updateLastFeatureActions",getActions:async()=>[{name:"检查最近更新的功能",description:"Check Last Update",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,9107)),t=e.info("正在检查更新...","检查最近更新的功能");await y(),t.close()},icon:i}]})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}),B=async()=>{const{cdnRoots:e}=await Promise.resolve().then(n.bind(n,2129)),{meta:t}=await Promise.resolve().then(n.bind(n,5791)),{getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,7234));return`${e[o().cdnRoot](t.compilationInfo.branch)}dist/${t.originalFilename}`},D=(0,r.defineComponentMetadata)({name:"notifyNewVersion",displayName:"新版本提示",description:"定期检查脚本本体的更新, 并弹出提示.",tags:[a.t.utils],options:{lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5}},entry:async e=>{let{settings:{options:t}}=e;try{const{Version:e}=await Promise.resolve().then(n.bind(n,2351)),{monkey:o}=await Promise.resolve().then(n.bind(n,9161)),{meta:i}=await Promise.resolve().then(n.bind(n,5791)),{Toast:r}=await Promise.resolve().then(n.bind(n,9107)),{isDataSaveMode:a}=await Promise.resolve().then(n.bind(n,3085));if(a())return;const c=Number(new Date);if(c-t.lastUpdateCheck${m.versionString} 已发布. 查看详情`,"检查更新");(await p.element).querySelector(".view-details").addEventListener("click",(()=>{(async e=>{const{showDialog:t}=await Promise.resolve().then(n.bind(n,5450));t({title:"更新说明",content:()=>Promise.resolve().then(n.bind(n,239)),contentProps:{content:e,updateUrl:await B()}})})(u)}))}catch(e){console.warn("[新版本提示] 检查更新时发生错误: ",e)}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}),I=(0,r.defineOptionsMetadata)({originalComponentEnableState:{defaultValue:{},hidden:!0},keepDisabledComponents:{defaultValue:[],hidden:!0},keepEnabledComponents:{defaultValue:[],hidden:!0},bisectInitialState:{defaultValue:{},hidden:!0}});var z=n(7792),S=n(5145);const M=(0,r.defineComponentMetadata)({name:"bisector",displayName:"组件二等分",tags:[a.t.general,a.t.utils],hidden:!0,configurable:!1,entry:async e=>{let{settings:{options:t}}=e;const o=await Promise.resolve().then(n.bind(n,1178));o.setOptions(t),o.setConsole((0,S.useScopedConsole)("组件二等分")),unsafeWindow.addEventListener(z.LifeCycleEventTypes.ComponentsLoaded,(()=>{o.isRecover()&&o.recover()}))},options:I,plugin:{displayName:"组件二等分 - 功能扩展",setup:e=>{let{addData:t}=e;t("launchBar.actions",(e=>{e.push({name:"bisector-start",getActions:async()=>[{name:"开始 / 继续组件二等分",description:"Start / Continue component bisection",icon:"mdi-view-split-horizontal",action:async()=>{const e=await Promise.resolve().then(n.bind(n,1178));await e.start()}}]})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}),P=(0,r.defineComponentMetadata)({name:"compatibilities",displayName:"兼容性选项",configurable:!1,tags:[a.t.general],options:{disableOnBalh:{defaultValue:!1,displayName:'与 "解除 B 站区域限制" 互斥'}},entry:i.none,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(7761);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,8232,17)).then((e=>e.default))}})()}),O=()=>[o.component,s,p,E,D,M,P],V=e=>O().some((t=>t.name===e))},2267:(e,t,n)=>{"use strict";n.r(t),n.d(t,{components:()=>d,componentsMap:()=>l,componentsTags:()=>c.t,defineComponentMetadata:()=>s.defineComponentMetadata,defineOptionMetadata:()=>s.defineOptionMetadata,defineOptionsMetadata:()=>s.defineOptionsMetadata,importComponent:()=>b,loadAllComponents:()=>F,loadAllUserComponents:()=>g,loadComponent:()=>h});var o=n(7234),i=n(7792),r=n(4074),a=n(6955),c=n(2522),s=n(4093);const l={},d=lodash.once((()=>{const e=(0,a.getBuiltInComponents)();return e.forEach((e=>l[e.name]=e)),e}))(),m=async e=>{if(!e.i18n)return;const{addI18nData:t}=await Promise.resolve().then(n.bind(n,1541));for(const[n,o]of Object.entries(e.i18n)){const{map:e=[],regex:i=[]}="function"==typeof o?await o():o;t(n,e,i)}},f=e=>`${e.name}.widget`,u=async e=>{if(e.widget){const t={...e.widget,name:f(e)},{addData:o}=await Promise.resolve().then(n.bind(n,779)),{WidgetsPlugin:i}=await Promise.resolve().then(n.bind(n,1394));o(i,(n=>{if(n.find((e=>e.name===t.name)))return;const{urlInclude:o,urlExclude:i}=t;e.urlInclude&&(o?o.push(...e.urlInclude):t.urlInclude=[...e.urlInclude]),e.urlExclude&&(i?i.push(...e.urlExclude):t.urlExclude=[...e.urlExclude]),n.push(t)}))}},p={},b=e=>{if(!(e in p))throw new Error(`组件'${e}'未加载, 请确认拼写无误且组件已开启.`);return p[e]},h=async e=>{const{componentLoadTrace:t}=await Promise.resolve().then(n.bind(n,303)),{matchUrlPattern:i}=await Promise.resolve().then(n.bind(n,3085)),{coreApis:r}=await Promise.resolve().then(n.bind(n,8677));await t(e);const a=async()=>{u(e);const t=await e.entry({settings:(0,o.getComponentSettings)(e),metadata:e,coreApis:r});p[e.name]=t||{}};e.reload&&e.unload&&(0,o.addComponentListener)(e.name,(async t=>{if(!1!==e.configurable&&!(e.urlExclude&&e.urlExclude.some(i)||e.urlInclude&&e.urlInclude.every(lodash.negate(i))))if(e.name in p){if(t&&e.reload&&(e.reload(),e.widget&&u(e)),!t&&e.unload&&(e.unload(),e.widget)){const{getData:t}=await Promise.resolve().then(n.bind(n,779)),{WidgetsPlugin:o}=await Promise.resolve().then(n.bind(n,1394)),[i]=t(o);if(i){const t=f(e),n=i.findIndex((e=>e.name===t));-1!==n&&i.splice(n,1)}}}else t&&await a()})),(0,o.isComponentEnabled)(e)&&await a()},g=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,7234)),{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,810));for(const[n,i]of Object.entries(e.userComponents)){const{code:e}=i;let r;try{r=t(e)}catch(e){console.error("从代码加载用户组件失败。代码可能有语法错误或代码执行时有抛出值。",{componentName:n,error:e});continue}o=r,d.push(o),l[o.name]=o}var o},F=async()=>{const e=(0,o.getGeneralSettings)(),{loadAllPlugins:t}=await Promise.resolve().then(n.bind(n,4602)),a=()=>t(d).then((()=>Promise.all(d.map(m)))).then((()=>Promise.all(d.map(h)))).then((async()=>{if(e.devMode){const{componentLoadTime:e,componentResolveTime:t}=await Promise.resolve().then(n.bind(n,303)),{logStats:o}=await Promise.resolve().then(n.bind(n,7035));o("components block",e),o("components resolve",t)}}));return new Promise(((t,n)=>{e.scriptLoadingMode===r.LoadingMode.Delay?(0,i.fullyLoaded)((()=>a().then(t).catch(n))):e.scriptLoadingMode===r.LoadingMode.Race&&(0,i.contentLoaded)((()=>a().then(t).catch(n)))}))}},4093:(e,t,n)=>{"use strict";n.r(t),n.d(t,{defineComponentMetadata:()=>r,defineOptionMetadata:()=>o,defineOptionsMetadata:()=>i});const o=e=>e,i=e=>e,r=e=>e},1557:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getDescriptionHTML:()=>c,getDescriptionMarkdown:()=>a,getDescriptionText:()=>s});var o=n(9896),i=n.n(o),r=n(1541);const a=async e=>{const{description:t,author:n}=e;return(n?Array.isArray(n)?`by ${n.map((e=>`[@${e.name}](${e.link})`)).join(",")}\n\n`:`by [@${n.name}](${n.link})\n\n`:"")+await(async()=>{if(!t)return"暂无描述.";const e=async e=>"string"==typeof e?e:e();if("object"==typeof t){const n=(0,r.getSelectedLanguage)();return e(t[n]??t["zh-CN"])}return e(t)})()},c=async e=>i()(await a(e)),s=async e=>{const t=await c(e),n=document.createElement("div");return n.innerHTML=t,n.innerText}},1541:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addI18nData:()=>a,getSelectedLanguage:()=>c});var o=n(779),i=n(7234),r=n(816);const a=(e,t,n)=>{(0,o.addData)(`i18n.${e}`,((e,o)=>{t?.forEach((t=>{let[n,o]=t;return e.set(n,o)})),n&&o.push(...n)}))},c=()=>{const e=(0,i.getComponentSettings)("i18n");return(0,r.languageNameToCode)(e.options.language)}},1372:(e,t,n)=>{"use strict";n.d(t,{Ty:()=>p,U6:()=>u,WK:()=>f});var o=n(9161),i=n(2866),r=n(7234),a=n(816),c=n(779),s=n(3085);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){l(this,"name",void 0),l(this,"link",void 0),l(this,"defaultLanguage",void 0)}getTargetLanguage(){const e=(0,r.getComponentSettings)("i18n");return e.enabled?(0,a.languageNameToCode)(e.options.language):this.defaultLanguage}toString(){return this.name}}class m extends d{constructor(){super(...arguments),l(this,"name","Google"),l(this,"link","https://translate.google.com/"),l(this,"defaultLanguage","zh"),l(this,"apiUrl","https://translate.google.com/translate_a/single")}async translate(e){let t=this.getTargetLanguage();t.includes("-")&&t!==this.defaultLanguage&&(t=t.substring(0,t.indexOf("-")));try{const n=await(0,o.monkey)({url:`${this.apiUrl}?${(0,s.formData)({client:"gtx",sl:"auto",tl:t,dt:"t",q:encodeURIComponent(e)})}`,method:"GET",headers:{"User-Agent":i.UserAgent},responseType:"json"});return n[0].map((e=>e[0])).join("")}catch(e){throw console.error("Translator: Google",e),new Error("调用Google翻译失败.")}}}const[f]=(0,c.registerAndGetData)("i18n.machineTranslators",{GoogleCN:new class extends m{constructor(){super(...arguments),l(this,"name","GoogleCN"),l(this,"link","https://translate.google.cn/"),l(this,"apiUrl","https://translate.google.cn/translate_a/single")}},Google:new m}),u=Object.keys(f),p=()=>{const{options:{translator:e}}=(0,r.getComponentSettings)("i18n");return f[e]||f.GoogleCN}},7087:(e,t,n)=>{"use strict";n.d(t,{WY:()=>a,dr:()=>c});var o=n(711);const i="search_history:search_history",r=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;const t=await o.crossOriginLocalStorage.getItem(e),n=t?JSON.parse(t):[];return n},a=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;console.log("add",e),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(lodash.sortBy(lodash.uniqBy([{value:e,timestamp:Number(new Date)},...await r()],(e=>e.value)),(e=>e.timestamp)).reverse().slice(0,20)))},c={name:"history",getActions:async()=>{const{search:e}=await Promise.resolve().then(n.bind(n,9517)),t={name:"清除搜索历史",icon:"mdi-trash-can-outline",description:"Clear History",explicitSelect:!0,action:async()=>{await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;return o.crossOriginLocalStorage.setItem(e,"[]")}()}},a=(await r()).map((t=>({name:t.value,icon:"mdi-history",explicitSelect:!0,action:()=>{e(t.value)},deleteAction:async()=>{await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;const n=await r(),a=n.findIndex((t=>t.value===e));console.log("delete",e,a),-1!==a&&(n.splice(a,1),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(n)))}(t.value)}})));return a.length>0&&a.push(t),a}}},5613:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LaunchBarActionProviders:()=>o});const o="launchBar.actions"},9517:(e,t,n)=>{"use strict";n.r(t),n.d(t,{search:()=>a,searchProvider:()=>c});var o=n(3085),i=n(9161),r=n(7087);const a=e=>{if(!e)return;(0,r.WY)(e);const t={keyword:e,from_source:"nav_suggest_new"};window.open(`https://search.bilibili.com/all?${(0,o.formData)(t)}`,"_blank")},c={name:"search",getActions:async e=>{const t=`https://s.search.bilibili.com/main/suggest?func=suggest&suggest_type=accurate&sub_type=tag&main_ver=v1&highlight=&userid=${(0,o.getUID)()}&bangumi_acc_num=1&special_acc_num=1&topic_acc_num=1&upuser_acc_num=3&tag_num=10&special_num=10&bangumi_num=10&upuser_num=3&term=${e}`,n=await(0,i.getJson)(t),r=[{name:e,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{domProps:{innerHTML:`${e}`}})}),action:()=>a(e)}];if(0!==n.code)return r;const c=lodash.get(n,"result.tag");return c?(r.push(...c.map((e=>({name:e.value,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{domProps:{innerHTML:e.name.replace(/suggest_high_light/g,"suggest-highlight")}})}),action:()=>a(e.value)})))),lodash.uniqBy(r,(e=>e.name))):r}}},2900:(e,t,n)=>{"use strict";n.r(t),n.d(t,{toggleLaunchBar:()=>b});var o=n(3085),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"global-launch-bar-container",attrs:{lazy:!1,fixed:""},on:{"!keydown":function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.close()}},model:{value:e.show,callback:function(t){e.show=t},expression:"show"}},[t("LaunchBar",{ref:"launchBar",on:{close:function(t){return e.close()}}})],1)};i._withStripped=!0;var r=n(1432),a=n(2098);const c=Vue.extend({components:{LaunchBar:a.Z,VPopup:r.default},data:()=>({show:!0}),watch:{show(e){e&&this.focus()}},async mounted(){await this.$nextTick(),this.focus()},methods:{focus(){const e=this.$refs.launchBar?.$refs.input;e?.focus(),e?.select()},close(){this.show=!1;const e=this.$refs.launchBar?.$refs.input;e?.blur()}}});var s=n(8332),l=n.n(s),d=n(6650),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,i,[],!1,null,null,null).exports;let p;const b=()=>{if(!p)return p=(0,o.mountVueComponent)(u),void document.body.append(p.$el);p.show=!p.show}},8025:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});let o=function(e){return e.Left="左侧",e.Right="右侧",e}({})},4792:(e,t,n)=>{"use strict";n.r(t),n.d(t,{map:()=>o});const o=new Map([["通用设置","General"],["实验性","Experimental"],["通用","General"],["开发者模式","Dev mode"],["辅助颜色","Accent color"],["功能加载模式","Script loading mode"],["样式加载模式","Style loading mode"]])},1394:(e,t,n)=>{"use strict";n.r(t),n.d(t,{WidgetsPlugin:()=>b,component:()=>g});var o=n(3085),i=n(4074),r=n(5040),a=n(2129),c=n(7234),s=n(7138),l=n(2522),d=n(4093),m=n(779),f=n(5613),u=n(5607);var p=n(8025);const b="widgets",h=(0,d.defineOptionsMetadata)({themeColor:{defaultValue:"#00A0D8",displayName:"主题颜色",color:!0},scriptLoadingMode:{defaultValue:i.LoadingMode.Delay,displayName:"功能加载模式",dropdownEnum:i.LoadingMode},styleLoadingMode:{defaultValue:i.LoadingMode.Race,displayName:"样式加载模式",dropdownEnum:i.LoadingMode},textColor:{defaultValue:r.TextColor.Auto,displayName:"文本颜色",dropdownEnum:r.TextColor},cdnRoot:{defaultValue:a.CdnTypes.AltCdn,displayName:"更新源",dropdownEnum:a.CdnTypes},dockSide:{defaultValue:p.l.Left,displayName:"设置面板停靠",dropdownEnum:p.l},filenameFormat:{defaultValue:"[title][ - ep]",displayName:"文件命名格式"},batchFilenameFormat:{defaultValue:"[n - ][ep]",displayName:"批量命名格式"},downloadPackageEmitMode:{defaultValue:s.h.Packed,displayName:"文件下载模式",dropdownEnum:s.h},devMode:{defaultValue:!1,displayName:"开发者模式"}}),g=(0,d.defineComponentMetadata)({name:"settingsPanel",displayName:"通用设置",configurable:!1,entry:async e=>{let{metadata:t}=e;const{isIframe:i}=await Promise.resolve().then(n.bind(n,3085));i()||((0,c.addComponentListener)(`${t.name}.dockSide`,(e=>{document.body.classList.toggle("settings-panel-dock-right",e===p.l.Right)}),!0),requestIdleCallback((async()=>{const e=await Promise.resolve().then(n.bind(n,2161)),t=(0,o.mountVueComponent)(e);document.body.insertAdjacentElement("beforeend",t.$el)})))},options:h,tags:[l.t.general],plugin:{displayName:"设置面板 - 功能扩展",setup:()=>{(0,m.addData)(f.LaunchBarActionProviders,(e=>{e.push({name:"onlineRegistry",getActions:async()=>[{name:"切换在线仓库",description:"Toggle Online Registry",icon:"mdi-web",action:async()=>{const{togglePopup:e}=await Promise.resolve().then(n.bind(n,9334));e()}}]},{name:"aboutPageActionsProvider",getActions:async()=>u.a.map((e=>e.actionName?{name:e.name,displayName:e.displayName,icon:e.icon,description:e.actionName,action:()=>e.run()}:null)).filter((e=>null!==e))})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(4311);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,6284,17)).then((e=>e.default))}})(),i18n:(()=>{const e=n(3552);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.ts$/)[1],e(t)])))}})()})},8588:(e,t,n)=>{"use strict";n.d(t,{B:()=>r,U:()=>i});var o=n(7234);const i=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,o.getComponentSettings)(this.componentData)}}}),r=e=>Vue.extend({data:()=>({virtual:!1}),async mounted(){const{dq:t}=await Promise.resolve().then(n.bind(n,3085)),{visibleInside:o}=await Promise.resolve().then(n.bind(n,8737)),i=this.$el,r=t(e);r?o(i,r,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.warn("virtual container not found, virtual scroll will be disabled!")}})},5607:(e,t,n)=>{"use strict";n.d(t,{a:()=>r});var o=n(779);const i=[{icon:"mdi-inbox-arrow-up-outline",name:"exportSettings",displayName:"导出设置",actionName:"Export Settings",run:async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,7234)),{DownloadPackage:t}=await Promise.resolve().then(n.bind(n,4905));t.single("settings.json",JSON.stringify(e,void 0,2))}},{icon:"mdi-inbox-arrow-down-outline",name:"importSettings",displayName:"导入设置",actionName:"Import Settings",run:async()=>{const{logError:e}=await Promise.resolve().then(n.bind(n,5145)),{pickFile:t}=await Promise.resolve().then(n.bind(n,5244)),{Toast:o}=await Promise.resolve().then(n.bind(n,9107)),i=await t({accept:"*.json"});if(0===i.length)return;const[r]=i;try{const e=JSON.parse(await r.text());Object.entries(e).forEach((e=>{let[t,n]=e;GM_setValue(t,n)})),o.success("导入成功, 正在刷新页面...","导入设置"),window.location.reload()}catch(t){e(t)}}}],[r]=(0,o.registerAndGetData)("settingsPanel.about.actions",i)},9334:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initPopup:()=>N,togglePopup:()=>q});var o=n(3085),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"online-registry be-settings-extra-options",attrs:{fixed:"","auto-close":!1},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("div",{staticClass:"online-registry-header"},[t("VIcon",{staticClass:"online-registry-header-title-icon",attrs:{icon:"mdi-web"}}),e._v(" "),t("div",{staticClass:"online-registry-header-title"},[e._v("在线仓库")]),e._v(" "),t("VIcon",{staticClass:"online-registry-header-refresh-icon",attrs:{icon:"mdi-refresh",size:22,title:"刷新"},on:{click:function(t){return e.fetchFeatures()}}}),e._v(" "),t("VIcon",{staticClass:"online-registry-header-close-icon",attrs:{icon:"mdi-close",size:24,title:"关闭"},on:{click:function(t){e.popupOpen=!1}}})],1),e._v(" "),t("div",{staticClass:"online-registry-header"},[t("div",{staticClass:"online-registry-header-search"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{attrs:{disabled:e.loading,placeholder:"搜索功能"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-branch"},[e._v("\n 分支:\n "),t("VDropdown",{attrs:{disabled:e.loading,items:e.registryBranches},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.selectedBranch,callback:function(t){e.selectedBranch=t},expression:"selectedBranch"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-filter"},[e._v("\n 查看:\n "),e._l(e.itemFilterOptions,(function(n){return t("RadioButton",{key:n.value,attrs:{group:"itemFilter",checked:e.itemFilter===n.value},on:{change:function(t){t&&(e.itemFilter=n.value)}}},[e._v("\n "+e._s(n.label)+"\n ")])}))],2)]),e._v(" "),t("div",{staticClass:"online-registry-separator"}),e._v(" "),t("div",{ref:"content",staticClass:"online-registry-content"},[e.loading?t("VLoading"):e._e(),e._v(" "),e.loading||e.list.length?e._e():t("VEmpty"),e._v(" "),e._l(e.filteredList,(function(n){return t("RegistryItem",{key:n.name,ref:"items",refInFor:!0,attrs:{item:n,branch:e.selectedBranch,"item-filter":e.itemFilter},on:{refresh:e.checkInstalled}})}))],2)])};i._withStripped=!0;var r=n(7942),a=n(9161),c=n(2129),s=n(5791),l=n(7234),d=n(5145),m=n(1445),f=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("MiniToast",{staticClass:"online-registry-item-wrapper",class:{virtual:e.virtual,hidden:e.hidden},attrs:{placement:e.placement,container:"body",delay:[200,0],offset:[0,12]},scopedSlots:e._u([{key:"toast",fn:function(){return[e.item.description?t("ComponentDescription",{attrs:{"component-data":e.item}}):e._e()]},proxy:!0}])},[e.virtual?e._e():t("div",{staticClass:"online-registry-item"},[t("VIcon",{staticClass:"item-icon",attrs:{size:18,icon:e.icon}}),e._v(" "),t("div",{staticClass:"item-badge"},[e._v("\n "+e._s(e.badge)+"\n ")]),e._v(" "),t("div",{staticClass:"item-display-name"},[e._v("\n "+e._s(e.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"item-action"},[e.installed?t("VButton",{staticClass:"reinstall-button",attrs:{title:"重新安装",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[e._v("\n "+e._s(e.installing?"正在安装":"已安装")+"\n ")]):t("VButton",{staticClass:"install-button",attrs:{title:"安装",type:"primary",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:15}}),e._v("\n "+e._s(e.installing?"正在安装":"安装")+"\n ")],1)],1)],1)])};f._withStripped=!0;var u=n(1233),p=n(8737),b=n(8741),h=n(8025);let g=function(e){return e.All="all",e.Installed="installed",e.NotInstalled="notInstalled",e}({});const F=(e,t)=>`${(0,c.cdnRoots[(0,l.getGeneralSettings)().cdnRoot])(t,e.owner)}${e.fullAbsolutePath}`,v=e=>{const t=`user${lodash.startCase(e.type)}s`;return e.name in l.settings[t]},w={component:{icon:"mdi-cube-scan",badge:"组件",getUrl:F,isInstalled:v},plugin:{icon:"mdi-puzzle-outline",badge:"插件",getUrl:F,isInstalled:v},style:{icon:"mdi-tune",badge:"样式",getUrl:F,isInstalled:v},pack:{icon:"mdi-package-variant-closed",badge:"合集包",getUrl:(e,t)=>e.items.map((e=>F(e,t))).join("\n"),isInstalled:e=>e.items.every(v)}},y=Vue.extend({components:{VIcon:m.VIcon,VButton:m.VButton,MiniToast:m.MiniToast,ComponentDescription:b.Z},props:{item:{type:Object,required:!0},branch:{type:String,required:!0},itemFilter:{type:String,default:g.All}},data(){const{icon:e,badge:t,getUrl:n,isInstalled:o}=w[this.item.type];return{icon:e,badge:t,getUrl:e=>n(e,this.branch),isInstalled:o,installing:!1,installed:!1,virtual:!1,placement:"right"}},computed:{hidden(){switch(this.itemFilter){case g.All:default:return!1;case g.Installed:return!this.installed;case g.NotInstalled:return this.installed}}},created(){this.checkInstalled(),(0,l.addComponentListener)("settingsPanel.dockSide",(e=>{this.placement=e===h.l.Left?"right":"left"}),!0)},mounted(){const e=this.$el;(0,p.visibleInside)(e,e.parentElement,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))}))},methods:{checkInstalled(){this.installed=this.isInstalled(this.item)},async install(e){const t=e.split("\n").map((e=>e.trim())).filter((e=>""!==e));try{this.installing=!0,await Promise.all(t.map((async e=>(0,u.installFeature)(e)))),this.checkInstalled(),"pack"===this.item.type&&this.$emit("refresh")}catch(e){(0,d.logError)(e)}finally{this.installing=!1}}}});var x=n(8332),k=n.n(x),C=n(7862),A=n.n(C),E={insert:"head",singleton:!1};k()(A(),E);A().locals;var B=n(4893);const D=(0,B.Z)(y,f,[],!1,null,null,null).exports;var I=n(779);const[z]=(0,I.registerAndGetData)("settingsPanel.registryBranches",["master","preview"]),S=(0,l.getGeneralSettings)();function M(e){if(!e)return void(this.filteredList=this.list);const t=this.fuse.search(e);this.filteredList=t.map((e=>e.item)),this.$nextTick().then((()=>this.$refs.content.scrollTo(0,0)))}const P=[{label:"全部",value:g.All},{label:"已安装",value:g.Installed},{label:"未安装",value:g.NotInstalled}],O=Vue.extend({components:{VIcon:m.VIcon,VDropdown:m.VDropdown,TextBox:m.TextBox,VPopup:m.VPopup,RegistryItem:D,VLoading:m.VLoading,VEmpty:m.VEmpty,RadioButton:m.RadioButton},props:{open:{default:!1,type:Boolean}},data(){const e=[S.registryBranch,s.meta.compilationInfo.branch,z[0]].filter((e=>z.includes(e)&&Boolean(e)));return{searchKeyword:"",popupOpen:!1,loading:!1,list:[],itemFilter:g.All,itemFilterOptions:P,filteredList:[],fuse:null,registryBranches:z,selectedBranch:e[0]}},watch:{searchKeyword:lodash.debounce(M,200),selectedBranch(e){S.registryBranch=e,this.fetchFeatures()}},mounted(){this.fetchFeatures()},methods:{async fetchFeatures(){if(this.loading)return;const e=c.cdnRoots[S.cdnRoot](this.selectedBranch);try{this.loading=!0,this.list=[],this.filteredList=[];const t=`${e}doc/features/features.json`,n=`${e}doc/features/pack/pack.json`,o=await(0,a.monkey)({url:t,responseType:"json"}),i=await(0,a.monkey)({url:n,responseType:"json"});if(!Array.isArray(o)||!Array.isArray(i))throw console.error("Fetch failed:",o,i,t,n),new Error("获取在线仓库数据失败, 请尝试在通用设置中设置其他更新源, 然后再试一次.");this.list=[...i,...o],this.fuse=new r.Z(this.list,{keys:["displayName","name","description"]}),M.call(this,this.searchKeyword)}catch(e){(0,d.logError)(e)}finally{this.loading=!1}},checkInstalled(){this.$refs.items?.forEach((e=>e.checkInstalled()))}}});var V=n(1065),T=n.n(V),L={insert:"head",singleton:!1};k()(T(),L);T().locals;const j=(0,B.Z)(O,i,[],!1,null,null,null).exports;let R;const N=()=>{R||(R=(0,o.mountVueComponent)(j),document.body.append(R.$el))},q=()=>{R||N(),R.popupOpen=!R.popupOpen}},2522:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o={video:{name:"video",displayName:"视频",color:"#2196F3",icon:"mdi-play-circle-outline",order:1},style:{name:"style",displayName:"样式",color:"#8BC34A",icon:"mdi-palette-outline",order:2},feeds:{name:"feeds",displayName:"动态",color:"#00ACC1",icon:"mdi-pinwheel-outline",order:3},live:{name:"live",displayName:"直播",color:"#26A69A",icon:"mdi-video-wireless-outline",order:4},utils:{name:"utils",displayName:"工具",color:"#A36FFD",icon:"mdi-rocket-launch-outline",order:5},touch:{name:"touch",displayName:"触摸",color:"#78909C",icon:"mdi-gesture-tap-button",order:6},experimental:{name:"experimental",displayName:"实验",color:"#FF5722",icon:"mdi-flask-outline",order:7},general:{name:"general",displayName:"通用",color:"#888",icon:"mdi-progress-wrench",order:8}}},6312:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bisectComponent:()=>d,installComponent:()=>c,toggleComponent:()=>l,uninstallComponent:()=>s});var o=n(7234),i=n(6955),r=n(2267),a=n(1178);const c=async e=>{const{components:t}=await Promise.resolve().then(n.bind(n,2267)),{loadFeatureCode:a}=await Promise.resolve().then(n.bind(n,2686));let c;try{c=a(e)}catch(e){throw new Error("无效的组件代码",{cause:e})}const{settings:s}=await Promise.resolve().then(n.bind(n,7234));if((0,i.isBuiltInComponent)(c.name))throw new Error(`不能覆盖内置组件'${c.name}', 请更换名称`);const l={...lodash.omit(c,"entry","widget","instantStyles","reload","unload","plugin","urlInclude","urlExclude")},d=s.userComponents[c.name];if(d){d.code=e,d.metadata=l;const t=(0,o.componentToSettings)(c);return lodash.defaultsDeep(d.settings.options,lodash.pickBy(t.options,(e=>!Array.isArray(e)))),{metadata:c,message:`已更新组件'${c.displayName}', 刷新后生效`}}return s.userComponents[c.name]={code:e,metadata:l,settings:(0,o.componentToSettings)(c)},t.push(c),r.componentsMap[c.name]=c,{metadata:c,message:`已安装组件'${c.displayName}', 刷新后生效`}},s=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,7234)),{components:o}=await Promise.resolve().then(n.bind(n,2267)),i=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[a,{metadata:c,settings:s}]=i,l=o.findIndex((e=>e.name===a));if(-1!==l){const{instantStyles:e}=o[l];if(e){const{removeStyle:t}=await Promise.resolve().then(n.bind(n,7511));e.forEach((e=>t(e.name)))}s.enabled=!1,o.splice(l,1),delete r.componentsMap[a]}return delete t.userComponents[a],{metadata:c,message:`已卸载组件'${c.displayName}, 刷新后生效'`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,7234)),o=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!o)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[,i]=o;i.settings.enabled=!i.settings.enabled;const{enabled:r}=i.settings,{displayName:a}=i.metadata;return`已${r?"开启":"关闭"}组件'${a}', 可能需要刷新后才能生效`},d=async e=>(e&&a.setOptions(e),a)},5647:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{updateCategories:()=>updateCategories,updateIcons:()=>updateIcons});var _core_ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(9161),_core_download__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(4905);const updateCategories=async()=>{const[script]=dqa("script").filter((e=>e.src.includes("stardust-video")));if(!script)throw new Error("no script found");const scriptText=await(0,_core_ajax__WEBPACK_IMPORTED_MODULE_0__.getText)(script.src),match=scriptText.match(/([\w]+?=\[\{name:"首页".+?\}.+?\]),[\w]+?=\[\{name:"首頁"/);if(!match)throw new Error("no match in script");const variables=match[1].match(/(\w+?)(?==\[)/g),data=eval(`var ${match[1]}; [${variables.join(",")}]`);_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("raw.json",data)},updateIcons=()=>{const e=dqa(".bili-header-channel-panel svg");if(0===e.length)throw new Error("svg icons not found");const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("aria-hidden","true"),t.setAttribute("style","position: absolute; width: 0px; height: 0px; overflow: hidden;"),t.id="be-category-icons",e.forEach((e=>{const n=document.createElementNS("http://www.w3.org/2000/svg","symbol");n.innerHTML=e.innerHTML,n.id=e.id.replace(/^channel-icon-/,"header-icon-")||`header-icon-${e.parentElement?.href.match(/\/v\/(.+)$/)?.[1]}`,"header-icon-teleplay"===n.id&&(n.id="header-icon-tv"),n.id||console.warn("cannot find id for",e),n.setAttribute("viewBox",e.getAttribute("viewBox")),t.appendChild(n)})),_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("icons.svg",t.outerHTML)}},9318:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerMode:()=>a,createPlayerModeChangeEvent:()=>c,playerPolyfill:()=>p});var o=n(8737),i=n(2533),r=n(3085);let a=function(e){return e.Normal="normal",e.WideScreen="wide",e.WebFullscreen="web",e.Fullscreen="full",e}({});const c=e=>new CustomEvent("playerModeChange",{detail:{mode:e,bubbles:!0,cancelable:!0}}),s=lodash.once((async()=>{(async()=>{await(0,r.playerReady)();const e=await(0,i.select)(".bpx-player-container");if(!e)return void console.warn("[bpx player polyfill] bpxContainer not found");let t=a.Normal;(0,o.attributes)(e,(()=>{const n=e.getAttribute("data-screen"),o="player-mode-",i=[a.Normal,a.WideScreen,a.WebFullscreen,a.Fullscreen].map((e=>`${o}${e}`));document.body.classList.remove(...i),n!==a.Normal&&document.body.classList.add(`${o}${n}`),n!==t&&(window.dispatchEvent(c(n)),t=n)}))})(),(async()=>{const e=await(0,i.select)(".bpx-player-video-perch");e&&(0,r.preventEvent)(e,"dblclick")})()}));var l=n(9316);const d=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getVideoMessage)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,5145)),r=t("v2 player polyfill");(0,o.allMutations)((()=>{const t=e.getVideoMessage();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),m=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getUserParams)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,5145)),r=t("v3 player polyfill");(0,o.allMutations)((()=>{const{input:t}=e.getUserParams();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),f=e=>{if(""===e)return!1;const t=parseInt(e);return!!Number.isNaN(t)||t>0},u=lodash.once((()=>{unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getManifest)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,5145)),a=t("v4 player polyfill");(0,o.allMutations)((()=>{const t=e.getManifest();if(!t)return void a.warn("invalid getManifest data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid??""};(l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))?f(n.aid)&&f(n.cid):Object.values(n).every((e=>f(e))))||a.warn("invalid manifest data",n),Object.assign(unsafeWindow,n)}))})()})),p=lodash.once((()=>Promise.allSettled([s(),d(),m(),u()])))},8997:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerAgentEventTypes:()=>a,playerAgent:()=>h});var o=n(9316),i=n(2533),r=n(3085);let a=function(e){return e.Play="play",e.Pause="pause",e}({});function c(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const s=e=>{const t=e=>"string"!=typeof e?lodash.mapValues(e,t):(e=>{const t=()=>(0,i.select)(e);return t.selector=e,t.sync=()=>dq(e),t})(e);return lodash.mapValues(e,t)},l=e=>{const t=e.sync();return t?.click(),t};class d extends EventTarget{constructor(){super(),c(this,"isBpxPlayer",!0),c(this,"type",void 0),c(this,"query",void 0),c(this,"eventHandlerMap",new Map)}provideCustomQuery(e){const t=s(e[this.type]??e.video);return{...this,custom:t}}widescreen(){return l(this.query.control.buttons.widescreen)}webFullscreen(){return l(this.query.control.buttons.webFullscreen)}fullscreen(){return l(this.query.control.buttons.fullscreen)}togglePlay(){return l(this.query.control.buttons.start)}togglePip(){return l(this.query.control.buttons.pip)}toggleMute(){return l(this.query.control.buttons.volume)}toggleDanmaku(){const e=this.query.danmakuSwitch.sync();return e?(e.checked=!e.checked,(0,r.raiseEvent)(e,"change"),e.checked):null}async toggleLight(e){if(!this.nativeApi)return null;const t=this.nativeApi.getLightOff();return void 0===e?(this.nativeApi.setLightOff(!t),!t):e&&t?(this.nativeApi.setLightOff(!1),!0):e||t?null:(this.nativeApi.setLightOff(!0),!1)}getPlayerConfig(e,t){const n=this.isBpxPlayer?"bpx_player_profile":"bilibili_player_settings";return lodash.get(JSON.parse(localStorage.getItem(n)),e,t)}isAutoPlay(){return this.getPlayerConfig("video_status.autoplay")}get nativeApi(){return unsafeWindow.player||unsafeWindow.playerRaw}get nanoApi(){return unsafeWindow.nano}get nanoTypeMap(){return{[a.Play]:this.nanoApi.EventType.Player_Play,[a.Pause]:this.nanoApi.EventType.Player_Pause}}addEventListener(e,t,n){super.addEventListener(e,t,n);const o=this.nanoTypeMap[e];o?(e=>{"object"==typeof n&&n.once?this.nativeApi.once(e,t):this.nativeApi.on(e,t),this.eventHandlerMap.set(t,{handler:t,options:n})})(o):console.warn("[PlayerAgent] unknown event type",e)}removeEventListener(e,t,n){super.removeEventListener(e,t,n);const o=this.nanoTypeMap[e];o&&(e=>{const o=this.eventHandlerMap.get(t);o&&!lodash.isEqual(n,o.options)&&this.nativeApi.off(e,o.handler)})(o)}isMute(){return this.nativeApi?this.nativeApi.isMuted?this.nativeApi.isMuted():this.nativeApi.isMute():null}changeVolume(e){if(!this.nativeApi)return null;if(this.nativeApi.getVolume){const t=this.nativeApi.getVolume();return this.nativeApi.setVolume(t+e/100),Math.round(100*this.nativeApi.getVolume())}const t=this.nativeApi.volume();return this.nativeApi.volume(t+e/100),Math.round(100*this.nativeApi.volume())}seek(e){return this.nativeApi?(this.nativeApi.seek(e),this.nativeApi.getCurrentTime()):null}changeTime(e){if(!this.nativeApi)return null;const t=this.query.video.element.sync();return t?(this.nativeApi.seek(t.currentTime+e,t.paused),this.nativeApi.getCurrentTime()):null}} +NodeFilter.SHOW_TEXT|NodeFilter.SHOW_ELEMENT);let o=n.nextNode();for(;o;)t(o),o=n.nextNode()}static translate(e){if(e.nodeType===Node.TEXT_NODE)return void u.textNode.translate(e);const t=e=>{for(const t of u.sensitiveTranslators)t.accepts(e)&&t.translate(e)};t(e),u.walk(e,t)}static translateCssMatches(){const e=u.map.get("*");if(e)for(const{selector:t,text:n}of e){const e=document.querySelector(t);e&&[...e.childNodes].filter((e=>e.nodeType===Node.TEXT_NODE)).forEach((e=>e.nodeValue=n))}}}f(u,"textNode",void 0),f(u,"title",void 0),f(u,"placeholder",void 0),f(u,"sensitiveTranslators",void 0),f(u,"map",void 0),f(u,"regex",void 0);u.textNode=new class extends u{constructor(){super(...arguments),f(this,"accepts",(e=>e.nodeType===Node.TEXT_NODE)),f(this,"getElement",(e=>e.parentElement))}},u.title=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("title"))),f(this,"setValue",((e,t)=>{e.setAttribute("title",t)}))}},u.placeholder=new class extends u{constructor(){super(...arguments),f(this,"getValue",(e=>e.getAttribute("placeholder"))),f(this,"setValue",((e,t)=>{e.setAttribute("placeholder",t)}))}},u.sensitiveTranslators=[u.textNode,u.title,u.placeholder];const p=(0,r.defineComponentMetadata)({name:"i18n",displayName:"多语言",configurable:!1,entry:async()=>{const{getSelectedLanguage:e}=await Promise.resolve().then(n.bind(n,1541)),t=e();if(t===l.defaultLanguageCode)return;const{registerAndGetData:o}=await Promise.resolve().then(n.bind(n,779)),[i,r]=o(`i18n.${t}`,new Map,[]);console.log(t,i.size,r.length),0===i.size&&0===r.length||(document.documentElement.setAttribute("lang",t),u.map=i,u.regex=r,u.translate(document.body),u.translateCssMatches(),(0,m.allMutations)((e=>{e.forEach((e=>{"childList"===e.type?(e.addedNodes.length>0&&u.translateCssMatches(),e.addedNodes.forEach((e=>{u.translate(e)}))):"characterData"===e.type?u.textNode.translate(e.target):"attributes"===e.type&&("title"===e.attributeName?u.title.translate(e.target):"placeholder"===e.attributeName&&u.placeholder.translate(e.target))}))})))},tags:[a.t.utils,a.t.experimental,a.t.general],description:{"zh-CN":"安装其他语言包可以更换界面语言, 机器翻译选择可以设定其他一些功能如`动态翻译`, `评论翻译`使用的翻译器. 机器翻译的选择不影响界面语言."},options:{language:{defaultValue:l.languageCodeToName[l.defaultLanguageCode],displayName:"界面语言选择",dropdownEnum:l.languageCodeToName},translator:{defaultValue:Object.keys(d.WK)[0],displayName:"机器翻译选择",dropdownEnum:d.U6}},hidden:!0,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});var b=n(5791),h=n(7234),g=n(2351),F=n(377),v=n(7548);const{checkComponentsUpdate:w,checkLastFeature:y,forceCheckUpdate:x,forceCheckUpdateAndReload:k,silentCheckUpdate:C}=v,A=(0,r.defineOptionsMetadata)({lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},lastInstalledVersion:{displayName:"最后安装版本",defaultValue:"2.0.0",hidden:!0},localPortOverride:{displayName:"本地组件链接端口",defaultValue:"",hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5},urls:{displayName:"更新链接",defaultValue:{components:{},plugins:{},styles:{}},hidden:!0},maxUpdateCount:{displayName:"单次最大更新量 (个)",defaultValue:4}}),E=(0,r.defineComponentMetadata)({name:F.u2,displayName:"自动更新器",description:{"zh-CN":"自动检查组件, 插件和样式的更新. (仅限从设置面板中安装的)"},tags:[a.t.utils],options:A,extraOptions:()=>Promise.resolve().then(n.bind(n,7078)).then((e=>e.default)),entry:async e=>{let{settings:{options:t}}=e;if((0,i.isIframe)())return v;const n=Number(new Date)-t.lastUpdateCheck>=t.minimumDuration,o=new g.Version(b.meta.version).greaterThan(new g.Version(t.lastInstalledVersion));return n?coreApis.lifeCycle.fullyLoaded((()=>C())):o&&coreApis.lifeCycle.fullyLoaded((()=>x())),v},plugin:{displayName:"自动更新器 - 功能扩展",description:{"zh-CN":"记录在设置面板中的功能安装/卸载数据供自动更新使用; 并在组件详情中支持手动检查该组件的更新."},setup:e=>{let{addData:t,addHook:o}=e;["components","plugins","styles"].forEach((e=>{o(`user${lodash.startCase(e)}.add`,{after:(t,n,o)=>{const{options:i}=(0,h.getComponentSettings)("autoUpdate"),r=i.urls[e][o.name];r?(r.url=n,r.lastUpdateCheck=Number(new Date),r.alwaysUpdate=(0,F.jN)(n)):i.urls[e][o.name]={url:n,lastUpdateCheck:Number(new Date),installTime:Number(new Date),alwaysUpdate:(0,F.jN)(n)}}}),o(`user${lodash.startCase(e)}.remove`,{after:t=>{const{options:n}=(0,h.getComponentSettings)("autoUpdate");n.urls[e][t.name]&&delete n.urls[e][t.name]}})})),t("settingsPanel.componentActions",(e=>{const{options:t}=(0,h.getComponentSettings)("autoUpdate");e.push((e=>{const o=t.urls.components[e.name];if(o)return{name:"checkUpdate",displayName:"检查更新",icon:(0,F.jN)(o.url)?"mdi-file-download-outline":"mdi-cloud-download-outline",visible:(0,h.isUserComponent)(e),title:o.url,action:async()=>{const{Toast:t}=await Promise.resolve().then(n.bind(n,9107)),o=t.info("检查更新中...","检查更新");o.message=await w({filterNames:[e.name],force:!0}),o.duration=3e3}}}))}));const i="mdi-cloud-sync-outline";t("launchBar.actions",(e=>{e.push({name:"updateAllFeaturesActions",getActions:async()=>[{name:"检查所有更新",description:"Check Updates",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,9107)),t=e.info("正在检查更新...","检查所有更新");await k(),t.close()},icon:i}]})})),t("settingsPanel.searchBarActions",(e=>{e.unshift({key:"updateFeatures",title:e=>{let{selectedComponents:t}=e;return t.length>0?"更新所选组件":"检查所有更新"},icon:"mdi-cloud-download-outline",run:async e=>{const t=e.selectedComponents.length>0?`确定要更新所选的 ${e.selectedComponents.length} 个组件吗?`:"确定要检查所有更新吗?";if(!window.confirm(t))return;const{Toast:o}=await Promise.resolve().then(n.bind(n,9107)),{isBuiltInComponent:i}=await Promise.resolve().then(n.bind(n,6955));if(0===e.selectedComponents.length){const e=o.info("正在检查更新...","检查所有更新");k(),await k(),e.close()}else e.selectedComponents.forEach((async e=>{let{name:t}=e;if(i(t))o.info("内置组件不能更新","检查更新",3e3);else{const e=o.info("检查更新中...","检查更新"),n=await w({filterNames:[t],force:!0});e.message=n,e.duration=3e3}}))}})})),(0,h.getGeneralSettings)().devMode&&t("launchBar.actions",(e=>{e.push({name:"updateLastFeatureActions",getActions:async()=>[{name:"检查最近更新的功能",description:"Check Last Update",action:async()=>{const{Toast:e}=await Promise.resolve().then(n.bind(n,9107)),t=e.info("正在检查更新...","检查最近更新的功能");await y(),t.close()},icon:i}]})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}),B=async()=>{const{cdnRoots:e}=await Promise.resolve().then(n.bind(n,2129)),{meta:t}=await Promise.resolve().then(n.bind(n,5791)),{getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,7234));return`${e[o().cdnRoot](t.compilationInfo.branch)}dist/${t.originalFilename}`},D=(0,r.defineComponentMetadata)({name:"notifyNewVersion",displayName:"新版本提示",description:"定期检查脚本本体的更新, 并弹出提示.",tags:[a.t.utils],options:{lastUpdateCheck:{displayName:"最后检查更新日期",defaultValue:0,hidden:!0},minimumDuration:{displayName:"更新间隔 (ms)",defaultValue:864e5}},entry:async e=>{let{settings:{options:t}}=e;try{const{Version:e}=await Promise.resolve().then(n.bind(n,2351)),{monkey:o}=await Promise.resolve().then(n.bind(n,9161)),{meta:i}=await Promise.resolve().then(n.bind(n,5791)),{Toast:r}=await Promise.resolve().then(n.bind(n,9107)),{isDataSaveMode:a}=await Promise.resolve().then(n.bind(n,3085));if(a())return;const c=Number(new Date);if(c-t.lastUpdateCheck${m.versionString} 已发布. 查看详情`,"检查更新");(await p.element).querySelector(".view-details").addEventListener("click",(()=>{(async e=>{const{showDialog:t}=await Promise.resolve().then(n.bind(n,5450));t({title:"更新说明",content:()=>Promise.resolve().then(n.bind(n,239)),contentProps:{content:e,updateUrl:await B()}})})(u)}))}catch(e){console.warn("[新版本提示] 检查更新时发生错误: ",e)}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}),I=(0,r.defineOptionsMetadata)({originalComponentEnableState:{defaultValue:{},hidden:!0},keepDisabledComponents:{defaultValue:[],hidden:!0},keepEnabledComponents:{defaultValue:[],hidden:!0},bisectInitialState:{defaultValue:{},hidden:!0}});var z=n(7792),S=n(5145);const P=(0,r.defineComponentMetadata)({name:"bisector",displayName:"组件二等分",tags:[a.t.general,a.t.utils],hidden:!0,configurable:!1,entry:async e=>{let{settings:{options:t}}=e;const o=await Promise.resolve().then(n.bind(n,1178));o.setOptions(t),o.setConsole((0,S.useScopedConsole)("组件二等分")),unsafeWindow.addEventListener(z.LifeCycleEventTypes.ComponentsLoaded,(()=>{o.isRecover()&&o.recover()}))},options:I,plugin:{displayName:"组件二等分 - 功能扩展",setup:e=>{let{addData:t}=e;t("launchBar.actions",(e=>{e.push({name:"bisector-start",getActions:async()=>[{name:"开始 / 继续组件二等分",description:"Start / Continue component bisection",icon:"mdi-view-split-horizontal",action:async()=>{const e=await Promise.resolve().then(n.bind(n,1178));await e.start()}}]})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}),M=(0,r.defineComponentMetadata)({name:"compatibilities",displayName:"兼容性选项",configurable:!1,tags:[a.t.general],options:{disableOnBalh:{defaultValue:!1,displayName:'与 "解除 B 站区域限制" 互斥'}},entry:i.none,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(7761);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,8232,17)).then((e=>e.default))}})()}),O=()=>[o.component,s,p,E,D,P,M],V=e=>O().some((t=>t.name===e))},2267:(e,t,n)=>{"use strict";n.r(t),n.d(t,{components:()=>d,componentsMap:()=>l,componentsTags:()=>c.t,defineComponentMetadata:()=>s.defineComponentMetadata,defineOptionMetadata:()=>s.defineOptionMetadata,defineOptionsMetadata:()=>s.defineOptionsMetadata,importComponent:()=>b,loadAllComponents:()=>F,loadAllUserComponents:()=>g,loadComponent:()=>h});var o=n(7234),i=n(7792),r=n(4074),a=n(6955),c=n(2522),s=n(4093);const l={},d=lodash.once((()=>{const e=(0,a.getBuiltInComponents)();return e.forEach((e=>l[e.name]=e)),e}))(),m=async e=>{if(!e.i18n)return;const{addI18nData:t}=await Promise.resolve().then(n.bind(n,1541));for(const[n,o]of Object.entries(e.i18n)){const{map:e=[],regex:i=[]}="function"==typeof o?await o():o;t(n,e,i)}},f=e=>`${e.name}.widget`,u=async e=>{if(e.widget){const t={...e.widget,name:f(e)},{addData:o}=await Promise.resolve().then(n.bind(n,779)),{WidgetsPlugin:i}=await Promise.resolve().then(n.bind(n,1394));o(i,(n=>{if(n.find((e=>e.name===t.name)))return;const{urlInclude:o,urlExclude:i}=t;e.urlInclude&&(o?o.push(...e.urlInclude):t.urlInclude=[...e.urlInclude]),e.urlExclude&&(i?i.push(...e.urlExclude):t.urlExclude=[...e.urlExclude]),n.push(t)}))}},p={},b=e=>{if(!(e in p))throw new Error(`组件'${e}'未加载, 请确认拼写无误且组件已开启.`);return p[e]},h=async e=>{const{componentLoadTrace:t}=await Promise.resolve().then(n.bind(n,303)),{matchUrlPattern:i}=await Promise.resolve().then(n.bind(n,3085)),{coreApis:r}=await Promise.resolve().then(n.bind(n,8677));await t(e);const a=async()=>{u(e);const t=await e.entry({settings:(0,o.getComponentSettings)(e),metadata:e,coreApis:r});p[e.name]=t||{}};e.reload&&e.unload&&(0,o.addComponentListener)(e.name,(async t=>{if(!1!==e.configurable&&!(e.urlExclude&&e.urlExclude.some(i)||e.urlInclude&&e.urlInclude.every(lodash.negate(i))))if(e.name in p){if(t&&e.reload&&(e.reload(),e.widget&&u(e)),!t&&e.unload&&(e.unload(),e.widget)){const{getData:t}=await Promise.resolve().then(n.bind(n,779)),{WidgetsPlugin:o}=await Promise.resolve().then(n.bind(n,1394)),[i]=t(o);if(i){const t=f(e),n=i.findIndex((e=>e.name===t));-1!==n&&i.splice(n,1)}}}else t&&await a()})),(0,o.isComponentEnabled)(e)&&await a()},g=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,7234)),{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,810));for(const[n,i]of Object.entries(e.userComponents)){const{code:e}=i;let r;try{r=t(e)}catch(e){console.error("从代码加载用户组件失败。代码可能有语法错误或代码执行时有抛出值。",{componentName:n,error:e});continue}o=r,d.push(o),l[o.name]=o}var o},F=async()=>{const e=(0,o.getGeneralSettings)(),{loadAllPlugins:t}=await Promise.resolve().then(n.bind(n,4602)),a=()=>t(d).then((()=>Promise.all(d.map(m)))).then((()=>Promise.all(d.map(h)))).then((async()=>{if(e.devMode){const{componentLoadTime:e,componentResolveTime:t}=await Promise.resolve().then(n.bind(n,303)),{logStats:o}=await Promise.resolve().then(n.bind(n,7035));o("components block",e),o("components resolve",t)}}));return new Promise(((t,n)=>{e.scriptLoadingMode===r.LoadingMode.Delay?(0,i.fullyLoaded)((()=>a().then(t).catch(n))):e.scriptLoadingMode===r.LoadingMode.Race&&(0,i.contentLoaded)((()=>a().then(t).catch(n)))}))}},4093:(e,t,n)=>{"use strict";n.r(t),n.d(t,{defineComponentMetadata:()=>r,defineOptionMetadata:()=>o,defineOptionsMetadata:()=>i});const o=e=>e,i=e=>e,r=e=>e},1557:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getDescriptionHTML:()=>c,getDescriptionMarkdown:()=>a,getDescriptionText:()=>s});var o=n(9896),i=n.n(o),r=n(1541);const a=async e=>{const{description:t,author:n}=e;return(n?Array.isArray(n)?`by ${n.map((e=>`[@${e.name}](${e.link})`)).join(",")}\n\n`:`by [@${n.name}](${n.link})\n\n`:"")+await(async()=>{if(!t)return"暂无描述.";const e=async e=>"string"==typeof e?e:e();if("object"==typeof t){const n=(0,r.getSelectedLanguage)();return e(t[n]??t["zh-CN"])}return e(t)})()},c=async e=>i()(await a(e)),s=async e=>{const t=await c(e),n=document.createElement("div");return n.innerHTML=t,n.innerText}},1541:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addI18nData:()=>a,getSelectedLanguage:()=>c});var o=n(779),i=n(7234),r=n(816);const a=(e,t,n)=>{(0,o.addData)(`i18n.${e}`,((e,o)=>{t?.forEach((t=>{let[n,o]=t;return e.set(n,o)})),n&&o.push(...n)}))},c=()=>{const e=(0,i.getComponentSettings)("i18n");return(0,r.languageNameToCode)(e.options.language)}},1372:(e,t,n)=>{"use strict";n.d(t,{Ty:()=>p,U6:()=>u,WK:()=>f});var o=n(9161),i=n(2866),r=n(7234),a=n(816),c=n(779),s=n(3085);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){l(this,"name",void 0),l(this,"link",void 0),l(this,"defaultLanguage",void 0)}getTargetLanguage(){const e=(0,r.getComponentSettings)("i18n");return e.enabled?(0,a.languageNameToCode)(e.options.language):this.defaultLanguage}toString(){return this.name}}class m extends d{constructor(){super(...arguments),l(this,"name","Google"),l(this,"link","https://translate.google.com/"),l(this,"defaultLanguage","zh"),l(this,"apiUrl","https://translate.google.com/translate_a/single")}async translate(e){let t=this.getTargetLanguage();t.includes("-")&&t!==this.defaultLanguage&&(t=t.substring(0,t.indexOf("-")));try{const n=await(0,o.monkey)({url:`${this.apiUrl}?${(0,s.formData)({client:"gtx",sl:"auto",tl:t,dt:"t",q:encodeURIComponent(e)})}`,method:"GET",headers:{"User-Agent":i.UserAgent},responseType:"json"});return n[0].map((e=>e[0])).join("")}catch(e){throw console.error("Translator: Google",e),new Error("调用Google翻译失败.")}}}const[f]=(0,c.registerAndGetData)("i18n.machineTranslators",{GoogleCN:new class extends m{constructor(){super(...arguments),l(this,"name","GoogleCN"),l(this,"link","https://translate.google.cn/"),l(this,"apiUrl","https://translate.google.cn/translate_a/single")}},Google:new m}),u=Object.keys(f),p=()=>{const{options:{translator:e}}=(0,r.getComponentSettings)("i18n");return f[e]||f.GoogleCN}},7087:(e,t,n)=>{"use strict";n.d(t,{WY:()=>a,dr:()=>c});var o=n(711);const i="search_history:search_history",r=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;const t=await o.crossOriginLocalStorage.getItem(e),n=t?JSON.parse(t):[];return n},a=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;console.log("add",e),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(lodash.sortBy(lodash.uniqBy([{value:e,timestamp:Number(new Date)},...await r()],(e=>e.value)),(e=>e.timestamp)).reverse().slice(0,20)))},c={name:"history",getActions:async()=>{const{search:e}=await Promise.resolve().then(n.bind(n,9517)),t={name:"清除搜索历史",icon:"mdi-trash-can-outline",description:"Clear History",explicitSelect:!0,action:async()=>{await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;return o.crossOriginLocalStorage.setItem(e,"[]")}()}},a=(await r()).map((t=>({name:t.value,icon:"mdi-history",explicitSelect:!0,action:()=>{e(t.value)},deleteAction:async()=>{await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i;const n=await r(),a=n.findIndex((t=>t.value===e));console.log("delete",e,a),-1!==a&&(n.splice(a,1),await o.crossOriginLocalStorage.setItem(t,JSON.stringify(n)))}(t.value)}})));return a.length>0&&a.push(t),a}}},5613:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LaunchBarActionProviders:()=>o});const o="launchBar.actions"},9517:(e,t,n)=>{"use strict";n.r(t),n.d(t,{search:()=>a,searchProvider:()=>c});var o=n(3085),i=n(9161),r=n(7087);const a=e=>{if(!e)return;(0,r.WY)(e);const t={keyword:e,from_source:"nav_suggest_new"};window.open(`https://search.bilibili.com/all?${(0,o.formData)(t)}`,"_blank")},c={name:"search",getActions:async e=>{const t=`https://s.search.bilibili.com/main/suggest?func=suggest&suggest_type=accurate&sub_type=tag&main_ver=v1&highlight=&userid=${(0,o.getUID)()}&bangumi_acc_num=1&special_acc_num=1&topic_acc_num=1&upuser_acc_num=3&tag_num=10&special_num=10&bangumi_num=10&upuser_num=3&term=${e}`,n=await(0,i.getJson)(t),r=[{name:e,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{class:"suggest-highlight"},[e])}),action:()=>a(e)}];if(0!==n.code)return r;const c=lodash.get(n,"result.tag");return c?(r.push(...c.map((e=>({name:e.value,icon:"search",content:async()=>Vue.extend({render:t=>t("div",{domProps:{innerHTML:e.name.replace(/suggest_high_light/g,"suggest-highlight")}})}),action:()=>a(e.value)})))),lodash.uniqBy(r,(e=>e.name))):r}}},2900:(e,t,n)=>{"use strict";n.r(t),n.d(t,{toggleLaunchBar:()=>b});var o=n(3085),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"global-launch-bar-container",attrs:{lazy:!1,fixed:""},on:{"!keydown":function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.close()}},model:{value:e.show,callback:function(t){e.show=t},expression:"show"}},[t("LaunchBar",{ref:"launchBar",on:{close:function(t){return e.close()}}})],1)};i._withStripped=!0;var r=n(1432),a=n(6423);const c=Vue.extend({components:{LaunchBar:a.Z,VPopup:r.default},data:()=>({show:!0}),watch:{show(e){e&&this.focus()}},async mounted(){await this.$nextTick(),this.focus()},methods:{focus(){const e=this.$refs.launchBar?.$refs.input;e?.focus(),e?.select()},close(){this.show=!1;const e=this.$refs.launchBar?.$refs.input;e?.blur()}}});var s=n(8332),l=n.n(s),d=n(6650),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,i,[],!1,null,null,null).exports;let p;const b=()=>{if(!p)return p=(0,o.mountVueComponent)(u),void document.body.append(p.$el);p.show=!p.show}},8025:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});let o=function(e){return e.Left="左侧",e.Right="右侧",e}({})},4792:(e,t,n)=>{"use strict";n.r(t),n.d(t,{map:()=>o});const o=new Map([["通用设置","General"],["实验性","Experimental"],["通用","General"],["开发者模式","Dev mode"],["辅助颜色","Accent color"],["功能加载模式","Script loading mode"],["样式加载模式","Style loading mode"]])},1394:(e,t,n)=>{"use strict";n.r(t),n.d(t,{WidgetsPlugin:()=>b,component:()=>g});var o=n(3085),i=n(4074),r=n(5040),a=n(2129),c=n(7234),s=n(7138),l=n(2522),d=n(4093),m=n(779),f=n(5613),u=n(5607);var p=n(8025);const b="widgets",h=(0,d.defineOptionsMetadata)({themeColor:{defaultValue:"#00A0D8",displayName:"主题颜色",color:!0},scriptLoadingMode:{defaultValue:i.LoadingMode.Delay,displayName:"功能加载模式",dropdownEnum:i.LoadingMode},styleLoadingMode:{defaultValue:i.LoadingMode.Race,displayName:"样式加载模式",dropdownEnum:i.LoadingMode},textColor:{defaultValue:r.TextColor.Auto,displayName:"文本颜色",dropdownEnum:r.TextColor},cdnRoot:{defaultValue:a.CdnTypes.AltCdn,displayName:"更新源",dropdownEnum:a.CdnTypes},dockSide:{defaultValue:p.l.Left,displayName:"设置面板停靠",dropdownEnum:p.l},filenameFormat:{defaultValue:"[title][ - ep]",displayName:"文件命名格式"},batchFilenameFormat:{defaultValue:"[n - ][ep]",displayName:"批量命名格式"},downloadPackageEmitMode:{defaultValue:s.h.Packed,displayName:"文件下载模式",dropdownEnum:s.h},devMode:{defaultValue:!1,displayName:"开发者模式"}}),g=(0,d.defineComponentMetadata)({name:"settingsPanel",displayName:"通用设置",configurable:!1,entry:async e=>{let{metadata:t}=e;const{isIframe:i}=await Promise.resolve().then(n.bind(n,3085));i()||((0,c.addComponentListener)(`${t.name}.dockSide`,(e=>{document.body.classList.toggle("settings-panel-dock-right",e===p.l.Right)}),!0),requestIdleCallback((async()=>{const e=await Promise.resolve().then(n.bind(n,2161)),t=(0,o.mountVueComponent)(e);document.body.insertAdjacentElement("beforeend",t.$el)})))},options:h,tags:[l.t.general],plugin:{displayName:"设置面板 - 功能扩展",setup:()=>{(0,m.addData)(f.LaunchBarActionProviders,(e=>{e.push({name:"onlineRegistry",getActions:async()=>[{name:"切换在线仓库",description:"Toggle Online Registry",icon:"mdi-web",action:async()=>{const{togglePopup:e}=await Promise.resolve().then(n.bind(n,9334));e()}}]},{name:"aboutPageActionsProvider",getActions:async()=>u.a.map((e=>e.actionName?{name:e.name,displayName:e.displayName,icon:e.icon,description:e.actionName,action:()=>e.run()}:null)).filter((e=>null!==e))})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(4311);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,6284,17)).then((e=>e.default))}})(),i18n:(()=>{const e=n(3552);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.ts$/)[1],e(t)])))}})()})},8588:(e,t,n)=>{"use strict";n.d(t,{B:()=>r,U:()=>i});var o=n(7234);const i=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,o.getComponentSettings)(this.componentData)}}}),r=e=>Vue.extend({data:()=>({virtual:!1}),async mounted(){const{dq:t}=await Promise.resolve().then(n.bind(n,3085)),{visibleInside:o}=await Promise.resolve().then(n.bind(n,8737)),i=this.$el,r=t(e);r?o(i,r,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.warn("virtual container not found, virtual scroll will be disabled!")}})},5607:(e,t,n)=>{"use strict";n.d(t,{a:()=>r});var o=n(779);const i=[{icon:"mdi-inbox-arrow-up-outline",name:"exportSettings",displayName:"导出设置",actionName:"Export Settings",run:async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,7234)),{DownloadPackage:t}=await Promise.resolve().then(n.bind(n,4905));t.single("settings.json",JSON.stringify(e,void 0,2))}},{icon:"mdi-inbox-arrow-down-outline",name:"importSettings",displayName:"导入设置",actionName:"Import Settings",run:async()=>{const{logError:e}=await Promise.resolve().then(n.bind(n,5145)),{pickFile:t}=await Promise.resolve().then(n.bind(n,5244)),{Toast:o}=await Promise.resolve().then(n.bind(n,9107)),i=await t({accept:"*.json"});if(0===i.length)return;const[r]=i;try{const e=JSON.parse(await r.text());Object.entries(e).forEach((e=>{let[t,n]=e;GM_setValue(t,n)})),o.success("导入成功, 正在刷新页面...","导入设置"),window.location.reload()}catch(t){e(t)}}}],[r]=(0,o.registerAndGetData)("settingsPanel.about.actions",i)},9334:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initPopup:()=>N,togglePopup:()=>q});var o=n(3085),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"online-registry be-settings-extra-options",attrs:{fixed:"","auto-close":!1},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("div",{staticClass:"online-registry-header"},[t("VIcon",{staticClass:"online-registry-header-title-icon",attrs:{icon:"mdi-web"}}),e._v(" "),t("div",{staticClass:"online-registry-header-title"},[e._v("在线仓库")]),e._v(" "),t("VIcon",{staticClass:"online-registry-header-refresh-icon",attrs:{icon:"mdi-refresh",size:22,title:"刷新"},on:{click:function(t){return e.fetchFeatures()}}}),e._v(" "),t("VIcon",{staticClass:"online-registry-header-close-icon",attrs:{icon:"mdi-close",size:24,title:"关闭"},on:{click:function(t){e.popupOpen=!1}}})],1),e._v(" "),t("div",{staticClass:"online-registry-header"},[t("div",{staticClass:"online-registry-header-search"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{attrs:{disabled:e.loading,placeholder:"搜索功能"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-branch"},[e._v("\n 分支:\n "),t("VDropdown",{attrs:{disabled:e.loading,items:e.registryBranches},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.selectedBranch,callback:function(t){e.selectedBranch=t},expression:"selectedBranch"}})],1),e._v(" "),t("div",{staticClass:"online-registry-header-filter"},[e._v("\n 查看:\n "),e._l(e.itemFilterOptions,(function(n){return t("RadioButton",{key:n.value,attrs:{group:"itemFilter",checked:e.itemFilter===n.value},on:{change:function(t){t&&(e.itemFilter=n.value)}}},[e._v("\n "+e._s(n.label)+"\n ")])}))],2)]),e._v(" "),t("div",{staticClass:"online-registry-separator"}),e._v(" "),t("div",{ref:"content",staticClass:"online-registry-content"},[e.loading?t("VLoading"):e._e(),e._v(" "),e.loading||e.list.length?e._e():t("VEmpty"),e._v(" "),e._l(e.filteredList,(function(n){return t("RegistryItem",{key:n.name,ref:"items",refInFor:!0,attrs:{item:n,branch:e.selectedBranch,"item-filter":e.itemFilter},on:{refresh:e.checkInstalled}})}))],2)])};i._withStripped=!0;var r=n(7942),a=n(9161),c=n(2129),s=n(5791),l=n(7234),d=n(5145),m=n(1445),f=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("MiniToast",{staticClass:"online-registry-item-wrapper",class:{virtual:e.virtual,hidden:e.hidden},attrs:{placement:e.placement,container:"body",delay:[200,0],offset:[0,12]},scopedSlots:e._u([{key:"toast",fn:function(){return[e.item.description?t("ComponentDescription",{attrs:{"component-data":e.item}}):e._e()]},proxy:!0}])},[e.virtual?e._e():t("div",{staticClass:"online-registry-item"},[t("VIcon",{staticClass:"item-icon",attrs:{size:18,icon:e.icon}}),e._v(" "),t("div",{staticClass:"item-badge"},[e._v("\n "+e._s(e.badge)+"\n ")]),e._v(" "),t("div",{staticClass:"item-display-name"},[e._v("\n "+e._s(e.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"item-action"},[e.installed?t("VButton",{staticClass:"reinstall-button",attrs:{title:"重新安装",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[e._v("\n "+e._s(e.installing?"正在安装":"已安装")+"\n ")]):t("VButton",{staticClass:"install-button",attrs:{title:"安装",type:"primary",disabled:e.installing},on:{click:function(t){e.install(e.getUrl(e.item))}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:15}}),e._v("\n "+e._s(e.installing?"正在安装":"安装")+"\n ")],1)],1)],1)])};f._withStripped=!0;var u=n(1233),p=n(8737),b=n(8741),h=n(8025);let g=function(e){return e.All="all",e.Installed="installed",e.NotInstalled="notInstalled",e}({});const F=(e,t)=>`${(0,c.cdnRoots[(0,l.getGeneralSettings)().cdnRoot])(t,e.owner)}${e.fullAbsolutePath}`,v=e=>{const t=`user${lodash.startCase(e.type)}s`;return e.name in l.settings[t]},w={component:{icon:"mdi-cube-scan",badge:"组件",getUrl:F,isInstalled:v},plugin:{icon:"mdi-puzzle-outline",badge:"插件",getUrl:F,isInstalled:v},style:{icon:"mdi-tune",badge:"样式",getUrl:F,isInstalled:v},pack:{icon:"mdi-package-variant-closed",badge:"合集包",getUrl:(e,t)=>e.items.map((e=>F(e,t))).join("\n"),isInstalled:e=>e.items.every(v)}},y=Vue.extend({components:{VIcon:m.VIcon,VButton:m.VButton,MiniToast:m.MiniToast,ComponentDescription:b.Z},props:{item:{type:Object,required:!0},branch:{type:String,required:!0},itemFilter:{type:String,default:g.All}},data(){const{icon:e,badge:t,getUrl:n,isInstalled:o}=w[this.item.type];return{icon:e,badge:t,getUrl:e=>n(e,this.branch),isInstalled:o,installing:!1,installed:!1,virtual:!1,placement:"right"}},computed:{hidden(){switch(this.itemFilter){case g.All:default:return!1;case g.Installed:return!this.installed;case g.NotInstalled:return this.installed}}},created(){this.checkInstalled(),(0,l.addComponentListener)("settingsPanel.dockSide",(e=>{this.placement=e===h.l.Left?"right":"left"}),!0)},mounted(){const e=this.$el;(0,p.visibleInside)(e,e.parentElement,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))}))},methods:{checkInstalled(){this.installed=this.isInstalled(this.item)},async install(e){const t=e.split("\n").map((e=>e.trim())).filter((e=>""!==e));try{this.installing=!0,await Promise.all(t.map((async e=>(0,u.installFeature)(e)))),this.checkInstalled(),"pack"===this.item.type&&this.$emit("refresh")}catch(e){(0,d.logError)(e)}finally{this.installing=!1}}}});var x=n(8332),k=n.n(x),C=n(7862),A=n.n(C),E={insert:"head",singleton:!1};k()(A(),E);A().locals;var B=n(4893);const D=(0,B.Z)(y,f,[],!1,null,null,null).exports;var I=n(779);const[z]=(0,I.registerAndGetData)("settingsPanel.registryBranches",["master","preview"]),S=(0,l.getGeneralSettings)();function P(e){if(!e)return void(this.filteredList=this.list);const t=this.fuse.search(e);this.filteredList=t.map((e=>e.item)),this.$nextTick().then((()=>this.$refs.content.scrollTo(0,0)))}const M=[{label:"全部",value:g.All},{label:"已安装",value:g.Installed},{label:"未安装",value:g.NotInstalled}],O=Vue.extend({components:{VIcon:m.VIcon,VDropdown:m.VDropdown,TextBox:m.TextBox,VPopup:m.VPopup,RegistryItem:D,VLoading:m.VLoading,VEmpty:m.VEmpty,RadioButton:m.RadioButton},props:{open:{default:!1,type:Boolean}},data(){const e=[S.registryBranch,s.meta.compilationInfo.branch,z[0]].filter((e=>z.includes(e)&&Boolean(e)));return{searchKeyword:"",popupOpen:!1,loading:!1,list:[],itemFilter:g.All,itemFilterOptions:M,filteredList:[],fuse:null,registryBranches:z,selectedBranch:e[0]}},watch:{searchKeyword:lodash.debounce(P,200),selectedBranch(e){S.registryBranch=e,this.fetchFeatures()}},mounted(){this.fetchFeatures()},methods:{async fetchFeatures(){if(this.loading)return;const e=c.cdnRoots[S.cdnRoot](this.selectedBranch);try{this.loading=!0,this.list=[],this.filteredList=[];const t=`${e}doc/features/features.json`,n=`${e}doc/features/pack/pack.json`,o=await(0,a.monkey)({url:t,responseType:"json"}),i=await(0,a.monkey)({url:n,responseType:"json"});if(!Array.isArray(o)||!Array.isArray(i))throw console.error("Fetch failed:",o,i,t,n),new Error("获取在线仓库数据失败, 请尝试在通用设置中设置其他更新源, 然后再试一次.");this.list=[...i,...o],this.fuse=new r.Z(this.list,{keys:["displayName","name","description"]}),P.call(this,this.searchKeyword)}catch(e){(0,d.logError)(e)}finally{this.loading=!1}},checkInstalled(){this.$refs.items?.forEach((e=>e.checkInstalled()))}}});var V=n(1065),T=n.n(V),L={insert:"head",singleton:!1};k()(T(),L);T().locals;const j=(0,B.Z)(O,i,[],!1,null,null,null).exports;let R;const N=()=>{R||(R=(0,o.mountVueComponent)(j),document.body.append(R.$el))},q=()=>{R||N(),R.popupOpen=!R.popupOpen}},2522:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o={video:{name:"video",displayName:"视频",color:"#2196F3",icon:"mdi-play-circle-outline",order:1},style:{name:"style",displayName:"样式",color:"#8BC34A",icon:"mdi-palette-outline",order:2},feeds:{name:"feeds",displayName:"动态",color:"#00ACC1",icon:"mdi-pinwheel-outline",order:3},live:{name:"live",displayName:"直播",color:"#26A69A",icon:"mdi-video-wireless-outline",order:4},utils:{name:"utils",displayName:"工具",color:"#A36FFD",icon:"mdi-rocket-launch-outline",order:5},touch:{name:"touch",displayName:"触摸",color:"#78909C",icon:"mdi-gesture-tap-button",order:6},experimental:{name:"experimental",displayName:"实验",color:"#FF5722",icon:"mdi-flask-outline",order:7},general:{name:"general",displayName:"通用",color:"#888",icon:"mdi-progress-wrench",order:8}}},6312:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bisectComponent:()=>d,installComponent:()=>c,toggleComponent:()=>l,uninstallComponent:()=>s});var o=n(7234),i=n(6955),r=n(2267),a=n(1178);const c=async e=>{const{components:t}=await Promise.resolve().then(n.bind(n,2267)),{loadFeatureCode:a}=await Promise.resolve().then(n.bind(n,2686));let c;try{c=a(e)}catch(e){throw new Error("无效的组件代码",{cause:e})}const{settings:s}=await Promise.resolve().then(n.bind(n,7234));if((0,i.isBuiltInComponent)(c.name))throw new Error(`不能覆盖内置组件'${c.name}', 请更换名称`);const l={...lodash.omit(c,"entry","widget","instantStyles","reload","unload","plugin","urlInclude","urlExclude")},d=s.userComponents[c.name];if(d){d.code=e,d.metadata=l;const t=(0,o.componentToSettings)(c);return lodash.defaultsDeep(d.settings.options,lodash.pickBy(t.options,(e=>!Array.isArray(e)))),{metadata:c,message:`已更新组件'${c.displayName}', 刷新后生效`}}return s.userComponents[c.name]={code:e,metadata:l,settings:(0,o.componentToSettings)(c)},t.push(c),r.componentsMap[c.name]=c,{metadata:c,message:`已安装组件'${c.displayName}', 刷新后生效`}},s=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,7234)),{components:o}=await Promise.resolve().then(n.bind(n,2267)),i=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[a,{metadata:c,settings:s}]=i,l=o.findIndex((e=>e.name===a));if(-1!==l){const{instantStyles:e}=o[l];if(e){const{removeStyle:t}=await Promise.resolve().then(n.bind(n,7511));e.forEach((e=>t(e.name)))}s.enabled=!1,o.splice(l,1),delete r.componentsMap[a]}return delete t.userComponents[a],{metadata:c,message:`已卸载组件'${c.displayName}, 刷新后生效'`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,7234)),o=Object.entries(t.userComponents).find((t=>{let[n,{metadata:{displayName:o}}]=t;return n===e||o===e}));if(!o)throw new Error(`没有找到与名称'${e}'相关联的组件`);const[,i]=o;i.settings.enabled=!i.settings.enabled;const{enabled:r}=i.settings,{displayName:a}=i.metadata;return`已${r?"开启":"关闭"}组件'${a}', 可能需要刷新后才能生效`},d=async e=>(e&&a.setOptions(e),a)},5647:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{updateCategories:()=>updateCategories,updateIcons:()=>updateIcons});var _core_ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(9161),_core_download__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(4905);const updateCategories=async()=>{const[script]=dqa("script").filter((e=>e.src.includes("stardust-video")));if(!script)throw new Error("no script found");const scriptText=await(0,_core_ajax__WEBPACK_IMPORTED_MODULE_0__.getText)(script.src),match=scriptText.match(/([\w]+?=\[\{name:"首页".+?\}.+?\]),[\w]+?=\[\{name:"首頁"/);if(!match)throw new Error("no match in script");const variables=match[1].match(/(\w+?)(?==\[)/g),data=eval(`var ${match[1]}; [${variables.join(",")}]`);_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("raw.json",data)},updateIcons=()=>{const e=dqa(".bili-header-channel-panel svg");if(0===e.length)throw new Error("svg icons not found");const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("aria-hidden","true"),t.setAttribute("style","position: absolute; width: 0px; height: 0px; overflow: hidden;"),t.id="be-category-icons",e.forEach((e=>{const n=document.createElementNS("http://www.w3.org/2000/svg","symbol");n.innerHTML=e.innerHTML,n.id=e.id.replace(/^channel-icon-/,"header-icon-")||`header-icon-${e.parentElement?.href.match(/\/v\/(.+)$/)?.[1]}`,"header-icon-teleplay"===n.id&&(n.id="header-icon-tv"),n.id||console.warn("cannot find id for",e),n.setAttribute("viewBox",e.getAttribute("viewBox")),t.appendChild(n)})),_core_download__WEBPACK_IMPORTED_MODULE_1__.DownloadPackage.single("icons.svg",t.outerHTML)}},9318:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerMode:()=>a,createPlayerModeChangeEvent:()=>c,playerPolyfill:()=>p});var o=n(8737),i=n(2533),r=n(3085);let a=function(e){return e.Normal="normal",e.WideScreen="wide",e.WebFullscreen="web",e.Fullscreen="full",e}({});const c=e=>new CustomEvent("playerModeChange",{detail:{mode:e,bubbles:!0,cancelable:!0}}),s=lodash.once((async()=>{(async()=>{await(0,r.playerReady)();const e=await(0,i.select)(".bpx-player-container");if(!e)return void console.warn("[bpx player polyfill] bpxContainer not found");let t=a.Normal;(0,o.attributes)(e,(()=>{const n=e.getAttribute("data-screen"),o="player-mode-",i=[a.Normal,a.WideScreen,a.WebFullscreen,a.Fullscreen].map((e=>`${o}${e}`));document.body.classList.remove(...i),n!==a.Normal&&document.body.classList.add(`${o}${n}`),n!==t&&(window.dispatchEvent(c(n)),t=n)}))})(),(async()=>{const e=await(0,i.select)(".bpx-player-video-perch");e&&(0,r.preventEvent)(e,"dblclick")})()}));var l=n(9316);const d=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getVideoMessage)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,5145)),r=t("v2 player polyfill");(0,o.allMutations)((()=>{const t=e.getVideoMessage();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),m=lodash.once((()=>{l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))||unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getUserParams)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,5145)),r=t("v3 player polyfill");(0,o.allMutations)((()=>{const{input:t}=e.getUserParams();if(!t)return void r.warn("invalid getUserParams data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid};Object.values(n).some((e=>""===e||parseInt(e)<=0))&&r.warn("invalid input data"),Object.assign(unsafeWindow,n)}))})()})),f=e=>{if(""===e)return!1;const t=parseInt(e);return!!Number.isNaN(t)||t>0},u=lodash.once((()=>{unsafeWindow.aid||unsafeWindow.cid||(async()=>{const e=await(0,i.select)((()=>unsafeWindow.player));if(!e?.getManifest)return;const{useScopedConsole:t}=await Promise.resolve().then(n.bind(n,5145)),a=t("v4 player polyfill");(0,o.allMutations)((()=>{const t=e.getManifest();if(!t)return void a.warn("invalid getManifest data");const n={aid:t.aid.toString(),cid:t.cid.toString(),bvid:t.bvid??""};(l.bangumiUrls.some((e=>(0,r.matchUrlPattern)(e)))?f(n.aid)&&f(n.cid):Object.values(n).every((e=>f(e))))||a.warn("invalid manifest data",n),Object.assign(unsafeWindow,n)}))})()})),p=lodash.once((()=>Promise.allSettled([s(),d(),m(),u()])))},8997:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayerAgentEventTypes:()=>a,playerAgent:()=>h});var o=n(9316),i=n(2533),r=n(3085);let a=function(e){return e.Play="play",e.Pause="pause",e}({});function c(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const s=e=>{const t=e=>"string"!=typeof e?lodash.mapValues(e,t):(e=>{const t=()=>(0,i.select)(e);return t.selector=e,t.sync=()=>dq(e),t})(e);return lodash.mapValues(e,t)},l=e=>{const t=e.sync();return t?.click(),t};class d extends EventTarget{constructor(){super(),c(this,"isBpxPlayer",!0),c(this,"type",void 0),c(this,"query",void 0),c(this,"eventHandlerMap",new Map)}provideCustomQuery(e){const t=s(e[this.type]??e.video);return{...this,custom:t}}widescreen(){return l(this.query.control.buttons.widescreen)}webFullscreen(){return l(this.query.control.buttons.webFullscreen)}fullscreen(){return l(this.query.control.buttons.fullscreen)}togglePlay(){return l(this.query.control.buttons.start)}togglePip(){return l(this.query.control.buttons.pip)}toggleMute(){return l(this.query.control.buttons.volume)}toggleDanmaku(){const e=this.query.danmakuSwitch.sync();return e?(e.checked=!e.checked,(0,r.raiseEvent)(e,"change"),e.checked):null}async toggleLight(e){if(!this.nativeApi)return null;const t=this.nativeApi.getLightOff();return void 0===e?(this.nativeApi.setLightOff(!t),!t):e&&t?(this.nativeApi.setLightOff(!1),!0):e||t?null:(this.nativeApi.setLightOff(!0),!1)}getPlayerConfig(e,t){const n=this.isBpxPlayer?"bpx_player_profile":"bilibili_player_settings";return lodash.get(JSON.parse(localStorage.getItem(n)),e,t)}isAutoPlay(){return this.getPlayerConfig("video_status.autoplay")}get nativeApi(){return unsafeWindow.player||unsafeWindow.playerRaw}get nanoApi(){return unsafeWindow.nano}get nanoTypeMap(){return{[a.Play]:this.nanoApi.EventType.Player_Play,[a.Pause]:this.nanoApi.EventType.Player_Pause}}addEventListener(e,t,n){super.addEventListener(e,t,n);const o=this.nanoTypeMap[e];o?(e=>{"object"==typeof n&&n.once?this.nativeApi.once(e,t):this.nativeApi.on(e,t),this.eventHandlerMap.set(t,{handler:t,options:n})})(o):console.warn("[PlayerAgent] unknown event type",e)}removeEventListener(e,t,n){super.removeEventListener(e,t,n);const o=this.nanoTypeMap[e];o&&(e=>{const o=this.eventHandlerMap.get(t);o&&!lodash.isEqual(n,o.options)&&this.nativeApi.off(e,o.handler)})(o)}isMute(){return this.nativeApi?this.nativeApi.isMuted?this.nativeApi.isMuted():this.nativeApi.isMute():null}changeVolume(e){if(!this.nativeApi)return null;if(this.nativeApi.getVolume){const t=this.nativeApi.getVolume();return this.nativeApi.setVolume(t+e/100),Math.round(100*this.nativeApi.getVolume())}const t=this.nativeApi.volume();return this.nativeApi.volume(t+e/100),Math.round(100*this.nativeApi.volume())}seek(e){return this.nativeApi?(this.nativeApi.seek(e),this.nativeApi.getCurrentTime()):null}changeTime(e){if(!this.nativeApi)return null;const t=this.query.video.element.sync();return t?(this.nativeApi.seek(t.currentTime+e,t.paused),this.nativeApi.getCurrentTime()):null}} // spell-checker: disable const m={playerArea:".bpx-player-primary-area",video:{element:".bpx-player-video-wrap video",wrap:".bpx-player-video-area",top:".bpx-player-top-wrap",state:".bpx-player-state-wrap",panel:".bpx-player-ending-panel",popup:".bpx-player-dialog-wrap",subtitle:".bpx-player-subtitle-wrap",basDanmaku:".bpx-player-bas-dm-wrap",advDanmaku:".bpx-player-adv-dm-wrap",danmaku:".bpx-player-row-dm-wrap",container:".bpx-player-video-perch"},control:{element:".bpx-player-control-entity",wrap:".bpx-player-control-wrap",mask:".bpx-player-control-mask",top:".bpx-player-control-top",progress:".bpx-player-progress",bottom:".bpx-player-control-bottom",bottomLeft:".bpx-player-control-bottom-left",bottomCenter:".bpx-player-control-bottom-center",bottomRight:".bpx-player-control-bottom-right",buttons:{start:".bpx-player-ctrl-play",next:".bpx-player-ctrl-btn-next",time:".bpx-player-ctrl-time",quality:".bpx-player-ctrl-quality",pageList:".bpx-player-ctrl-eplist",speed:".bpx-player-ctrl-playbackrate",subtitle:".bpx-player-ctrl-subtitle > div > span",volume:".bpx-player-ctrl-volume-icon",settings:".bpx-player-ctrl-setting",pip:".bpx-player-ctrl-pip",widescreen:".bpx-player-ctrl-wide",webFullscreen:".bpx-player-ctrl-web",fullscreen:".bpx-player-ctrl-full"},settings:{wrap:".bpx-player-ctrl-setting-box",lightOff:".bpx-player-ctrl-setting-lightoff .bui-checkbox-input"}},toastWrap:".bpx-player-dialog-wrap",danmakuTipLayer:".bpx-player-dm-tip",danmakuSwitch:".bpx-player-dm-switch input"}; // spell-checker: enable -function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u extends d{constructor(){super(),f(this,"type","bangumi"),f(this,"query",s({playerWrap:"#bilibili-player-wrap",bilibiliPlayer:"#bilibili-player",...m}))}seek(e){const t=super.seek(e);return null===t||setTimeout((()=>{const e=dq(".bpx-player-toast-row .bpx-player-toast-item .bpx-player-toast-text");e?.textContent?.startsWith("已为您定位至")&&(e.textContent="已为您定位至00:00")})),t}}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends d{constructor(){super(),p(this,"type","video"),p(this,"query",s({playerWrap:".player-wrap",bilibiliPlayer:"#bilibili-player",...m})),this.checkBwpVideo()}checkBwpVideo(){const e=this.query.video.element.selector,t=".bilibili-player-video bwp-video,.bpx-player-video-area bwp-video";this.query.video.element=(()=>{const n=async()=>await(0,r.isBwpVideo)()?(0,i.select)(t):(0,i.select)(e);return n.selector=e,n.sync=()=>dq(e),(0,r.isBwpVideo)().then((e=>{e&&(n.selector=t,n.sync=()=>dq(t))})),n})()}}const h=(0,o.matchCurrentPage)(o.bangumiUrls)?new u:new b},9161:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bilibiliApi:()=>k,getBlob:()=>c,getBlobWithCredentials:()=>s,getJson:()=>p,getJsonWithCredentials:()=>b,getPages:()=>x,getText:()=>d,getTextWithCredentials:()=>m,monkey:()=>w,postJson:()=>F,postJsonWithCredentials:()=>v,postText:()=>h,postTextWithCredentials:()=>g,responsiveGetPages:()=>y});var o=n(5145);const i=e=>{const t=new XMLHttpRequest,{isText:n=!0,body:o}=e(t);return new Promise(((e,i)=>{t.addEventListener("load",(()=>e(n?t.responseText:t.response))),t.addEventListener("error",(()=>i(t.status))),t.send(o)}))},r=e=>t=>(t.withCredentials=!0,e(t)),a=e=>t=>(t.responseType="blob",t.open("GET",e),{isText:!1}),c=e=>i(a(e)),s=e=>i(r(a(e))),l=e=>t=>(t.responseType="text",t.open("GET",e),{isText:!0}),d=e=>i(l(e)),m=e=>i(r(l(e))),f=e=>t=>(t.responseType="json",t.open("GET",e),{isText:!1}),u=e=>"string"==typeof e?JSON.parse(e):e,p=async e=>{const t=await i(f(e));return u(t)},b=async e=>{const t=await i(r(f(e)));return u(t)},h=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),g=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),F=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),v=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),w=e=>new Promise(((t,n)=>{const o={nocache:!0,...e,onload:e=>t(e.response),onerror:e=>{const t={...JSON.parse(JSON.stringify(e)),toString(){return JSON.stringify(this)}};n(t)}};"method"in o||(o.method="GET"),GM_xmlhttpRequest(o)})),y=e=>{let t;const n=new Promise((n=>{t=new Promise((t=>{(async()=>{const{api:o,getList:i,getTotal:r}=e;let a=1,c=1/0;const s=[];for(;s.length{const[,t]=y(e);return await t},k=async(e,t)=>{const n=await e;if(0!==n.code){const e=new Error(`${t}: code = ${n.code}, message = ${n.message||n.msg}`);throw(0,o.logError)(e),e}return n.data||n.result||{}}},2129:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CdnTypes:()=>i,cdnRoots:()=>a,defaultOwner:()=>r});var o=n(5791);let i=function(e){return e.jsDelivr="jsDelivr",e.AltCdn="AltCdn",e.GitHub="GitHub",e}({});const r="the1812",a={jsDelivr:(e,t)=>o.meta.compilationInfo.allCdns.jsDelivr.root(e,t),AltCdn:(e,t)=>o.meta.compilationInfo.altCdn.root(e,t),GitHub:(e,t)=>`https://raw.githubusercontent.com/${t||r}/Bilibili-Evolved/${e}/`}},8677:(e,t,n)=>{"use strict";n.r(t),n.d(t,{coreApis:()=>Do,externalApis:()=>Io});var o={};n.r(o),n.d(o,{enableHorizontalScroll:()=>O});var i={};n.r(i),n.d(i,{Reorder:()=>G,ReorderDecreaseClassName:()=>q,ReorderEnabledClassName:()=>U,ReorderIncreaseClassName:()=>Z,ReorderOrientations:()=>W,ReorderingClassName:()=>H});var r={};n.r(r),n.d(r,{getUserInfo:()=>$});var a={};n.r(a),n.d(a,{loadDanmakuSettingsPanel:()=>se,loadLazyPanel:()=>ae,loadLazyPlayerSettingsPanel:()=>ce,loadSubtitleSettingsPanel:()=>le});var c={};n.r(c),n.d(c,{styledComponentEntry:()=>ve,toggleStyle:()=>we});var s={};n.r(s),n.d(s,{getWatchlaterList:()=>Ce,toggleWatchlater:()=>Ae,watchlaterList:()=>ke});var l={};n.r(l),n.d(l,{FeedsCardsManager:()=>Te,FeedsCardsManagerEventType:()=>Ve,addMenuItem:()=>rt,applyContentFilter:()=>et,bangumiTypeList:()=>Ie,createNodeValidator:()=>Oe,feedsCardCallbacks:()=>Pe,feedsCardTypes:()=>Be,feedsCardsManager:()=>Xe,forEachFeedsCard:()=>Ke,getFeeds:()=>ot,getFeedsUrl:()=>nt,getVideoFeeds:()=>it,getVueData:()=>te.getVue2Data,groupVideoFeeds:()=>Je,isPreOrderedVideo:()=>_e,isRepostType:()=>De,isV2Feeds:()=>Ye,navbarFeedsTypeList:()=>ze,withContentFilter:()=>tt});var d={};n.r(d),n.d(d,{DisableProfilePopupClass:()=>Vt,disableProfilePopup:()=>Tt,enableProfilePopup:()=>Lt});var m={};n.r(m),n.d(m,{compareID:()=>Nt,getLatestID:()=>Rt,getNotifyCount:()=>Wt,getNotifyCountByType:()=>Ht,isNewID:()=>Zt,setLatestID:()=>qt,updateInterval:()=>jt,updateLatestID:()=>Ut});var f={};n.r(f),n.d(f,{convertHexColorForDialogue:()=>Qt,convertHexColorForStyle:()=>Yt,convertTimeByDuration:()=>Kt,convertTimeByEndTime:()=>Jt,normalizeContent:()=>_t});var u={};n.r(u),n.d(u,{escapeContent:()=>nn,normalizeContent:()=>on});var p={};n.r(p),n.d(p,{lightOff:()=>sn,lightOn:()=>cn,toggleLight:()=>ln});var b={};n.r(b),n.d(b,{addVideoActionButton:()=>dn});var h={};n.r(h),n.d(h,{forEachVideoDanmaku:()=>mn});var g={};n.r(g),n.d(g,{BangumiInfo:()=>pn,VideoInfo:()=>un});var F={};n.r(F),n.d(F,{allQualities:()=>gn,loginRequiredQualities:()=>bn,vipRequiredQualities:()=>hn});var v={};n.r(v),n.d(v,{addMenuItem:()=>vn,forEachContextMenu:()=>Fn});var w={};n.r(w),n.d(w,{addControlBarButton:()=>kn});var y={};n.r(y),n.d(y,{getBlobByAid:()=>An,getVideoCoverUrlByAid:()=>Cn});var x={};n.r(x),n.d(x,{waitForControlBar:()=>Bn,withControlBar:()=>En});var k={};n.r(k),n.d(k,{LiveSocket:()=>On});var C={};n.r(C),n.d(C,{CommentArea:()=>Nn,CommentAreaV1:()=>qn,CommentAreaV2:()=>Gn,CommentItem:()=>jn,CommentReplyItem:()=>Tn,addMenuItem:()=>$n,commentAreaManager:()=>Kn,forEachCommentArea:()=>Jn,forEachCommentItem:()=>_n,getCommentArea:()=>Qn});var A={};n.r(A),n.d(A,{addCategoryIcons:()=>lo,categories:()=>ao,categoryCodes:()=>co,categoryLinks:()=>so,rawData:()=>to});var E={};n.r(E),n.d(E,{createSwitchOptions:()=>Fo,defineSwitchItemsMetadata:()=>vo,defineSwitchMetadata:()=>wo,newSwitchComponentWrapper:()=>xo,wrapSwitchOptions:()=>yo});var B=n(9161),D=n(2129),I=n(4905),z=n(5450),S=n(2686),M=n(5244),P=n(1233);const O=e=>{const t=t=>{t.deltaY&&!t.deltaX&&(t.preventDefault(),requestAnimationFrame((()=>{e.scrollBy(t.deltaY,0)})))};return e.addEventListener("wheel",t),e.style.scrollSnapType="none",()=>{e.removeEventListener("wheel",t),e.style.scrollSnapType=""}};var V=n(7792),T=n(4074),L=n(711),j=n(5791),R=n(8737);function N(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const q="reorder-decrease",Z="reorder-increase",U="reorder-enabled",H="reordering",W={horizontal:{name:"horizontal",getMoveTransform:e=>`translateX(${e}px)`,setOtherTransform:lodash.throttle(((e,t,n)=>{if(!t.classList.contains(H))return;const o=e.find((e=>e.element===t));if(!o)return;const i=o.rect,r=e.filter((e=>e.rect.leftt.rect.left-e.rect.left)),a=e.filter((e=>e.rect.left>i.left)).sort(((e,t)=>e.rect.left-t.rect.left));if(n>=0){const[e]=a;r.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),a.forEach((t=>{i.left+n+i.width>=t.rect.left+t.rect.width/2?(t.element.classList.add(q),t.element.style.transform=`translateX(-${e.rect.left-i.left}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=r;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),r.forEach((t=>{i.left+n<=t.rect.left+t.rect.width/2?(t.element.classList.add(Z),t.element.style.transform=`translateX(${i.left+i.width-e.rect.left-e.rect.width}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)},vertical:{name:"vertical",getMoveTransform:(e,t)=>`translateY(${t}px)`,setOtherTransform:lodash.throttle(((e,t,n,o)=>{if(!t.classList.contains(H))return;const i=e.find((e=>e.element===t));if(!i)return;const r=i.rect,a=e.filter((e=>e.rect.topt.rect.top-e.rect.top)),c=e.filter((e=>e.rect.top>r.top)).sort(((e,t)=>e.rect.top-t.rect.top));if(o>=0){const[e]=c;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),c.forEach((t=>{r.top+o+r.height>=t.rect.top+t.rect.height/2?(t.element.classList.add(q),t.element.style.transform=`translateY(-${e.rect.top-r.top}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=a;c.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),a.forEach((t=>{r.top+o<=t.rect.top+t.rect.height/2?(t.element.classList.add(Z),t.element.style.transform=`translateY(${r.top+r.height-e.rect.top-e.rect.height}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)}};class G extends EventTarget{constructor(e){super(),this.container=e,N(this,"orientation",W.horizontal),N(this,"enabled",!1),N(this,"children",void 0),N(this,"snapshots",new Map),N(this,"attachedEvents",[]),this.children=[...this.container.children],this.children.every((e=>""===e.style.order))&&this.children.forEach(((e,t)=>{e.style.order=(t+1).toString()}))}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.addEventListener(e,t,n)}getOrderMap(){return new Map(this.children.map((e=>[e,parseInt(e.style.order)])))}toggle(){this.enabled?this.disable():this.enable()}generateSnapshots(){this.children.forEach((e=>{this.snapshots.set(e,{element:e,rect:e.getBoundingClientRect()})}))}enable(){this.children.forEach((e=>{let t=0,n=0,o=!1;e.classList.add(U);(()=>{const i=(i,r)=>{e.classList.add(H),e.style.transition="none",e.style.userSelect="none",this.generateSnapshots(),this.children.filter((t=>t!==e)).forEach((e=>{e.style.transition="transform .2s ease-out"})),t=i,n=r,o=!0},r=e=>{i(e.screenX,e.screenY)};e.addEventListener("mousedown",r),this.attachedEvents.push((()=>e.removeEventListener("mousedown",r)));const a=e=>{if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY)};e.addEventListener("touchstart",a),this.attachedEvents.push((()=>e.removeEventListener("touchstart",a)))})(),(()=>{const i=(o,i)=>{const r=o-t,a=i-n;e.style.transform=this.orientation.getMoveTransform(r,a),this.orientation.setOtherTransform([...this.snapshots.values()],e,r,a)},r=e=>{o&&(i(e.screenX,e.screenY),e.cancelable&&e.preventDefault())};document.addEventListener("mousemove",r),this.attachedEvents.push((()=>document.removeEventListener("mousemove",r)));const a=e=>{if(!o)return;if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY),e.cancelable&&e.preventDefault()};e.addEventListener("touchmove",a,{passive:!1}),this.attachedEvents.push((()=>e.removeEventListener("touchmove",a)))})(),(()=>{const t=()=>{if(!o)return;e.classList.remove(H),o=!1;let t=0;const n=this.children.filter((t=>t!==e)),i=[];n.forEach((e=>{e.style.transform="",e.style.transition="",e.classList.contains(Z)?(t--,e.style.order=(parseInt(e.style.order)+1).toString(),e.classList.remove(Z),i.push(this.snapshots.get(e))):e.classList.contains(q)&&(t++,e.style.order=(parseInt(e.style.order)-1).toString(),e.classList.remove(q),i.push(this.snapshots.get(e)))})),e.style.userSelect="",e.style.order=(parseInt(e.style.order)+t).toString(),e.style.transform="",e.style.transition="",this.dispatchEvent(new CustomEvent("reorder",{detail:this.children.map((e=>({element:e,order:parseInt(e.style.order)})))}))};document.addEventListener("mouseup",t),this.attachedEvents.push((()=>document.removeEventListener("mouseup",t))),e.addEventListener("touchend",t),this.attachedEvents.push((()=>e.removeEventListener("touchend",t)))})()})),this.enabled=!0}disable(){this.attachedEvents.forEach((e=>e())),this.children.forEach((e=>e.classList.remove(U))),this.enabled=!1}}var Q=n(7789),Y=n(2533),X=n(7511),K=n(5040),J=n(7234);const _={isLogin:!1},$=lodash.once((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,3085));if(!e())return _;const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,9161)),o=await t("https://api.bilibili.com/x/web-interface/nav");return 0!==o.code&&-101!==o.code?(console.warn("[store.fetchUserInfo] API Error",o.message),_):o.data}));var ee=n(2351),te=n(3085),ne=n(2866),oe=n(7079),ie=n(3659),re=n(816);const ae=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{style:n,enterDelay:o=750,leaveDelay:i=1e3}=t,r=await(0,Y.select)(e);if(!r)throw new Error(`lazy panel failed! selector = ${e}`);let a;return void 0!==n&&(a=document.createElement("style"),a.textContent=n,document.body.insertAdjacentElement("beforeend",a)),(0,te.raiseEvent)(r,"mouseover"),await(0,te.delay)(o),(0,te.raiseEvent)(r,"mouseout"),setTimeout((()=>a?.remove()),i),r},ce=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};await ae(e,{style:`${t} { display: none !important; }`,...n});const o=(0,te.dq)(t);if(!o)throw new Error(`lazy player settings panel failed! panelSelector = ${t}`);return o},se=()=>ce(".bilibili-player-video-danmaku-setting, .bpx-player-dm-setting",".bilibili-player-video-danmaku-setting-wrap, .bpx-player-dm-setting-wrap"),le=()=>ce(".bilibili-player-video-btn-subtitle, .bpx-player-ctrl-subtitle",".bilibili-player-video-subtitle-setting-wrap, .bpx-player-ctrl-subtitle-box",{style:"\n .bpx-player-ctrl-subtitle-box,\n .bilibili-player-video-subtitle-setting-wrap,\n .bilibili-player-video-subtitle {\n display: none\n }\n "});var de=n(5145),me=n(4055),fe=n(9316),ue=n(9107),pe=n(3150),be=n(1445),he=n(6955),ge=n(2267),Fe=n(6312);const ve=(e,t)=>async o=>{const{default:i}=await e(),{addStyle:r}=await Promise.resolve().then(n.bind(n,7511));return r(i,o.metadata.name),t(o)},we=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:te.none,i=null;const r=async()=>{if(i)return;const{default:o}=await t(),{addStyle:r}=await Promise.resolve().then(n.bind(n,7511));i=r(o,e)};return{name:e,entry:e=>r().then((()=>o(e))),reload:r,unload:()=>{i?.remove(),i=null}}};var ye=n(4093),xe=n(1557);const ke=[];async function Ce(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{getUID:t}=await Promise.resolve().then(n.bind(n,3085));if(!t())return console.warn("[稍后再看列表] 账号未登录"),[];const o="https://api.bilibili.com/x/v2/history/toview/web",{getJsonWithCredentials:i}=await Promise.resolve().then(n.bind(n,9161)),r=await i(o);if(0!==r.code)return(0,de.logError)(new Error(`获取稍后再看列表失败: ${r.message}`)),[];if(!r.data.list)return(0,te.deleteValues)(ke,(()=>!0)),[];const a=r.data.list;(0,te.deleteValues)(ke,(e=>!a.find((t=>t.aid===e))));const c=a.filter((e=>!ke.find((t=>t===e.aid))));return ke.push(...c.map((e=>e.aid))),e?a:a.map((e=>e.aid))}const Ae=async(e,t)=>{const o=parseInt(e.toString());if(Number.isNaN(o))return;void 0===t&&(t=!ke.includes(o));const i=t?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del",{getCsrf:r}=await Promise.resolve().then(n.bind(n,3085)),a=r(),{postTextWithCredentials:c}=await Promise.resolve().then(n.bind(n,9161)),s=await c(i,`aid=${e}&csrf=${a}`),l=JSON.parse(s);0===l.code?t?ke.push(o):(0,te.deleteValue)(ke,(e=>e===o)):(0,de.logError)(new Error(`稍后再看操作失败: ${l.message}`))};requestIdleCallback((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,3085));e()&&Ce()}));var Ee=n(779);const Be={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频",apiType:"video"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏",apiType:"article"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧",apiType:"pgc"},share:{id:2048,name:"分享"},manga:{id:2049,name:"漫画"},film:{id:4098,name:"电影"},tv:{id:4099,name:"TV剧"},chinese:{id:4100,name:"国创"},documentary:{id:4101,name:"纪录片"},mediaList:{id:4300,name:"收藏夹"},liveRecord:{id:2047,name:"开播记录"}},De=e=>e.type===Be.repost,Ie="512,4097,4098,4099,4100,4101",ze="8,64,512,4097,4098,4099,4100,4101",Se="feeds.manager.listAdaptors";function Me(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}(0,Ee.addData)(Se,(e=>{e.push({name:"live",match:[...fe.liveUrls],watchCardsList:async e=>{const t=await(0,Y.select)(".room-feed");if(!t)return!1;console.log("live watch");let n=null;return(0,R.childList)(t,(async()=>{if(dq(".room-feed-content")){const t=await(0,Y.select)(".room-feed-content .content");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"space",match:["https://space.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".s-space");if(!t)return!1;const n={},o=()=>{n.listElement&&n.observer&&(console.log("space feeds stop"),n.observer?.then((e=>e.disconnect())),delete n.observer,delete n.listElement,e.cleanUpCards())},i=()=>{if(n.observer)return n.observer;const t=(0,Y.select)(".bili-dyn-list__items");return n.observer=(async()=>{const r=await t;r!==await n.listElement&&(n.listElement&&o(),n.listElement=t,i()),console.log("space feeds start");const[a]=e.updateCards(r);return a})(),n.observer};return(0,R.childListSubtree)(t,(async()=>{dq(".bili-dyn-list__items")?i():o()})),!0}},{name:"topic",match:["https://t.bilibili.com/topic"],watchCardsList:async e=>{const t=await(0,Y.select)(".page-container");if(!t)return!1;let n=null;return(0,R.childList)(t,(async()=>{if(dq(".page-container .feed")){const t=await(0,Y.select)(".feed .feed-topic");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"opus-detail",match:["https://www.bilibili.com/opus/"],watchCardsList:async e=>{const t=await(0,Y.select)(".opus-detail");return!!t&&(e.updateCards(t),!0)}},{name:"default",match:["https://t.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".feed-card .content, .detail-content .detail-card, #app > .content > .card, .bili-dyn-list__items");if(!t)return!1;if(t.classList.contains("bili-dyn-list__items")){const n=t.parentElement.parentElement;let o;(0,R.childList)(n,(()=>{const t=dq(n,".bili-dyn-list__items");t&&(o?.disconnect(),e.cards=[],[o]=e.updateCards(t))}))}else e.updateCards(t);return!0}})}));const Pe=[],Oe=e=>t=>{const n=Boolean(t),o=t&&t.parentNode,i=t instanceof HTMLElement&&t.matches(e);return n&&o&&i};let Ve=function(e){return e.AddCard="addCard",e.RemoveCard="removeCard",e}({});class Te extends EventTarget{constructor(){super(...arguments),Me(this,"watching",!1),Me(this,"cards",[]),Me(this,"managerType",void 0)}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchCardEvent(e,t){const n=new CustomEvent(e,{detail:t});this.dispatchEvent(n),Pe.forEach((n=>n[e===Ve.AddCard?"added":"removed"](t)))}async startWatching(){if(this.watching)return!0;this.watching=!0;const[e]=(0,Ee.registerAndGetData)(Se,[]),t=e.find((e=>e.match.some((e=>(0,te.matchUrlPattern)(e)))));return t?t.watchCardsList(this):(console.warn("[FeedsCardsManager] No adaptor found",e),!1)}cleanUpCards(){this.cards=this.cards.filter((e=>e.presented))}}function Le(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const je=e=>e.querySelector(".repost")?Be.repost:e.querySelector(".imagesbox")?Be.textWithImages:e.querySelector(".video-container")?Be.video:e.querySelector(".bangumi-container")?Be.bangumi:e.querySelector(".article-container")?Be.column:e.querySelector(".music-container")?Be.audio:e.querySelector(".h5share-container")?Be.share:e.querySelector(".vc-ctnr")?Be.miniVideo:e.querySelector(".live-container")?Be.liveRecord:Be.text,Re=async e=>{const t=async t=>{const n=await(0,Y.sq)((()=>e.querySelector(t)),(t=>null!==t||null===e.parentNode),{queryInterval:100});if(null===e.parentNode)return"";if(null===n)return console.warn(e,t,e.parentNode),"";return n.innerText.trim()},n=e=>{if(void 0===e.card.origin)return{originalText:"",originalDescription:"",originalTitle:""};const t=JSON.parse(e.card.origin);return{originalText:e.originCardData.pureText,originalDescription:lodash.get(t,"item.description",lodash.get(t,"desc","")),originalTitle:t.title}},o=async e=>{const n=parseInt(await t(e));return isNaN(n)?0:n},i={id:e.getAttribute("data-did"),username:await t(".main-content .user-name"),text:"",reposts:await o(".button-bar .single-button:nth-child(1) .text-offset"),comments:await o(".button-bar .single-button:nth-child(2) .text-offset"),likes:await o(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:je(e),get presented(){return null!==e.parentNode},async getText(){return(async t=>{if(t===Be.bangumi)return"";const o=await(0,Y.sq)((()=>e),(t=>Boolean((0,te.getVue2Data)(t)||!e.parentNode)),{queryInterval:100});if(null===e.parentNode)return"";if(null===o)return console.warn(o,e,(0,te.getVue2Data)(o),e.parentNode),"";const i=(0,te.getVue2Data)(o);if(t===Be.repost){const e=i.card.item.content,t=n(i);return[e,...Object.values(t).filter((e=>""!==e))].filter((e=>Boolean(e))).join("\n")}return[i.originCardData.pureText,i.originCardData.title].filter((e=>Boolean(e))).join("\n")})(this.type)}};if(i.text=await i.getText(),e.setAttribute("data-type",i.type.id.toString()),De(i)){const t=i.username,o=(0,te.getVue2Data)(i.element),r=lodash.get(o,"card.origin_user.info.uname","");t===r&&e.setAttribute("data-self-repost","true"),i.repostUsername=r,i.repostText=n(o).originalText}return i};class Ne extends Te{constructor(){super(...arguments),Le(this,"managerType","v1")}async addCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card"))if(null!==e.querySelector(".skeleton")){const[t]=(0,R.childList)(e,(()=>{null===e.querySelector(".skeleton")&&(t.disconnect(),this.addCard(e))}))}else{if(null===e.parentNode)return;const t=await Re(e);if(!t.presented)return;if(this.cards.find((e=>e.id===t.id)))return;this.cards.push(t),this.cards.sort(((e,t)=>e.id===t.id?0:e.id>t.id?-1:1)),this.dispatchCardEvent(Ve.AddCard,t)}}async removeCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card")){const t=e.getAttribute("data-did"),n=this.cards.findIndex((e=>e.id===t));if(-1===n)return;const o=this.cards[n];this.cards.splice(n,1),this.dispatchCardEvent(Ve.RemoveCard,o)}}updateCards(e){const t=".card[data-did]",n=e=>{if(e instanceof HTMLElement){if(e.matches(t))return e;const n=e.querySelector(t);if(n)return n}};return[...e.querySelectorAll(t)].forEach((e=>this.addCard(e))),(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))}))}))}}function qe(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ze={DynamicTypeForward:Be.repost,DynamicTypeAv:Be.video,DynamicTypeDraw:Be.textWithImages,DynamicTypeWord:Be.text,DynamicTypePgc:Be.bangumi,DynamicTypeArticle:Be.column,DynamicTypeMusic:Be.audio,DynamicTypeLiveRcmd:Be.liveRecord},Ue=function(){for(var e=arguments.length,t=new Array(e),n=0;nBoolean(e))).join("\n").trim()},He=e=>Ze[(0,te.pascalCase)(e)]??Ze.DynamicTypeWord,We=(e,t)=>{if(Object.hasOwn(e,"paragraphs")){return e.paragraphs.find((e=>1===e.para_type)).text.nodes.map((e=>"TEXT_NODE_TYPE_WORD"===e.type?lodash.get(e,"word.words"):"TEXT_NODE_TYPE_RICH"===e.type?lodash.get(e,"rich.orig_text"):"")).join("")}const{desc:n,major:o}=e,i=o?.opus?lodash.get(o.opus,"summary.text"):n?.text??"",r=(()=>{switch(t){default:return"";case Be.bangumi:case Be.column:case Be.video:{const e=o.archive??o.pgc??o.article;if(e){const{title:t,desc:n}=e;return Ue(t,n)}if(o.opus){const{title:e,summary:t}=o.opus;return Ue(e,t.text)}return""}}})();return Ue(i,r)},Ge=Oe(".bili-dyn-list__item, .bili-dyn-item, .bili-opus-view");class Qe extends Te{constructor(){super(...arguments),qe(this,"managerType","v2")}async addCard(e){if(!Ge(e))return;const t=await(async e=>{const t=(0,te.getVue2Data)(e),n=e=>Array.isArray(e)?Object.fromEntries(e.map((e=>{const[t]=Object.keys(e).filter((e=>"module_type"!==e));return"module_content"===t?["module_dynamic",e[t]]:[t,e[t]]}))):e,{modules:o,id_str:i,type:r}=t.data,a=n(o),{name:c}=a.module_author,{like:s,forward:l,comment:d}=a.module_stat,m=He(r);e.dataset.type=m.id.toString();const f={id:i,username:c,likes:s.count,reposts:l.count,comments:d.count,text:"",type:m,element:e,get presented(){return document.body.contains(e)},getText:async()=>We(a.module_dynamic,m)};if(De(f)){const o=f.username,{module_author:{name:i},module_dynamic:r}=n(t.data.orig.modules),c=He(t.data.orig.type);f.repostUsername=i,f.repostText=We(r,c),i===o&&e.setAttribute("data-self-repost","true"),f.getText=async()=>Ue(We(a.module_dynamic,m),We(r,m))}return f.text=await f.getText(),f.element.setAttribute("data-did",f.id),await(0,Y.selectAll)((()=>e.querySelectorAll(".bili-dyn-item *")),{queryInterval:50}),f})(e);t.presented&&(this.cards.push(t),this.cards.sort((0,me.descendingStringSort)((e=>e.id))),this.dispatchCardEvent(Ve.AddCard,t))}async removeCard(e){if(!Ge(e))return;const t=(0,te.getVue2Data)(e);if(!t)return;const n=t.data?.id_str??"0",o=this.cards.findIndex((e=>e.id===n));if(-1===o)return;const[i]=this.cards.splice(o,1);this.dispatchCardEvent(Ve.RemoveCard,i)}updateCards(e){const t=".bili-dyn-list__item, :not(.bili-dyn-list__item) > .bili-dyn-item, .bili-opus-view";dqa(e,t).forEach((e=>this.addCard(e)));const n=e=>Ge(e)?e.matches(t)?e:e.querySelector(t):null;return(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))})),this.cleanUpCards()}))}}const Ye=()=>!!(parseInt((0,te.getCookieValue)("hit-dyn-v2"))>0)&&["t.bilibili.com","space.bilibili.com",/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/].some((e=>(0,te.matchUrlPattern)(e))),Xe=Ye()?new Qe:new Ne,Ke=async e=>{if(fe.feedsUrls.every((e=>!(0,te.matchUrlPattern)(e))))return null;if(!await Xe.startWatching())return console.error("feedsCardsManager.startWatching() failed"),null;const{added:t}=e;return t&&Xe.cards.forEach((e=>t(e))),Pe.push({added:none,removed:none,...e}),Xe},Je=e=>{const t=lodash.groupBy(e,(e=>e.aid)),n=e=>({id:e.upID,name:e.upName,faceUrl:e.upFaceUrl});return Object.values(t).map((e=>{if(1===e.length)return e[0];const[t,...o]=e;return t.cooperation=[n(t),...o.map(n)],console.log([...t.cooperation]),t})).sort((0,me.descendingStringSort)((e=>e.id)))},_e=e=>1===lodash.get(e,"extra.is_reserve_recall",0),$e="feeds.contentFilters";(0,Ee.registerData)($e,[]);const et=e=>{const[t]=(0,Ee.getData)($e);return t.reduce(((e,t)=>t.filter(e)),e)},tt=e=>function(){return e(...arguments).then((e=>et(e)))},nt=(e,t)=>{const n=new URLSearchParams;return"string"==typeof e?n.set("type",e):e.apiType?n.set("type",e.apiType):(console.warn(`unknown apiType for ${e.name}`),n.set("type","all")),t&&n.set("offset",t.toString()),`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?${n.toString()}`},ot=async(e,t)=>(0,B.getJsonWithCredentials)(nt(e,t)),it=tt((async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"video",t=arguments.length>1?arguments[1]:void 0;if(!(0,te.getUID)())return[];const n=await(0,B.getJsonWithCredentials)(nt("video"===e?Be.video:Be.bangumi,t));if(0!==n.code)throw new Error(n.message);const o=n.data.items;return"video"===e?Je(o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.archive"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_dynamic.desc.text",""),i=lodash.get(e,"modules.module_stat"),r=lodash.get(e,"modules.module_dynamic.desc.rich_text_nodes",[]).filter((e=>"RICH_TEXT_NODE_TYPE_TOPIC"===e.type)).map((e=>({id:e.text,name:e.text,url:e.jump_url})));return{id:e.id_str,aid:parseInt(t.aid),bvid:t.bvid,title:t.title,upFaceUrl:n.face,upName:n.name,upID:n.mid,coverUrl:t.cover,description:t.desc,timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),topics:r,dynamic:o,like:(0,oe.formatCount)(i.like.count),duration:(0,oe.parseDuration)(t.duration_text),durationText:(0,oe.formatDuration)((0,oe.parseDuration)(t.duration_text)),playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:ke.includes(t.aid)}}))):"bangumi"===e?o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.pgc"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_stat");return{id:e.id_str,epID:t.epid,title:t.title.replace(new RegExp(`^${n.name}:`),""),upName:n.name,upFaceUrl:n.face,coverUrl:t.cover,description:"",timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),like:(0,oe.formatCount)(o.like.count),durationText:"",playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:!1}})):[]})),rt=(e,t)=>{const n=dq(e.element,".more-panel, .bili-dyn-more__menu, .opus-more__menu"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return void console.warn("more panel not found",e.element);const a=!n.classList.contains("more-panel"),c=n.classList.contains("opus-more__menu"),s=document.createElement(a?"div":"p");if(c){s.classList.add("opus-more__menu__item",o);const e=n.children[0];e&&s.setAttribute("style",e.getAttribute("style")),s.dataset.type="more",s.dataset.stype=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else if(a){s.classList.add("bili-dyn-more__menu__item",o);const e=n.children[0];e?s.setAttribute("style",e.getAttribute("style")):(s.style.height="25px",s.style.padding="2px 0",s.style.textAlign="center"),s.dataset.module="more",s.dataset.type=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else s.classList.add("child-button","c-pointer",o);s.textContent=i;[...new Set([...n.children].map((e=>e.getAttributeNames().filter((e=>e.startsWith("data-v-"))))).flat())].forEach((e=>s.setAttribute(e,""))),s.addEventListener("click",(t=>{r(t),e.element.click()})),n.appendChild(s)};var at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"bangumi-card",class:{new:e.isNew},attrs:{target:"_blank",href:e.data.url}},[t("div",{staticClass:"ep-cover-container"},[t("DpiImage",{staticClass:"ep-cover",attrs:{size:{width:100},src:e.data.epCoverUrl}})],1),e._v(" "),t("h1",{staticClass:"ep-title",attrs:{title:e.data.epTitle}},[e._v(e._s(e.data.epTitle))]),e._v(" "),t("div",{staticClass:"up",attrs:{title:e.data.title}},[t("DpiImage",{staticClass:"cover",attrs:{size:24,src:e.data.coverUrl}}),e._v(" "),t("div",{staticClass:"title"},[e._v(e._s(e.data.title))])],1)])};at._withStripped=!0;const ct=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var st=n(8332),lt=n.n(st),dt=n(8106),mt=n.n(dt),ft={insert:"head",singleton:!1};lt()(mt(),ft);mt().locals;var ut=n(4893);const pt=(0,ut.Z)(ct,at,[],!1,null,"b2f4653c",null).exports;var bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"be-up-info",class:{fallback:!e.upFaceUrl},attrs:{href:e.actualHref,title:e.upName,target:"_blank"}},[e.upFaceUrl?t("DpiImage",{staticClass:"be-up-info-cover",attrs:{size:24,src:e.upFaceUrl}}):t("div",{staticClass:"be-up-info-cover-fallback"},[e._t("fallback-icon",(function(){return[t("VIcon",{attrs:{icon:"up-outline",size:18}})]}))],2),e._v(" "),t("div",{staticClass:"be-up-info-name"},[e._v("\n "+e._s(e.upName)+"\n ")])],1)};bt._withStripped=!0;const ht=Vue.extend({components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{href:{type:String,default:""},upId:{type:[String,Number],default:""},upFaceUrl:{type:String,default:""},upName:{type:String,required:!0}},computed:{actualHref(){return this.href?this.href:`https://space.bilibili.com/${this.upId}`}}});var gt=n(5019),Ft=n.n(gt),vt={insert:"head",singleton:!1};lt()(Ft(),vt);Ft().locals;const wt=(0,ut.Z)(ht,bt,[],!1,null,null,null).exports;var yt=function(){var e=this,t=e._self._c;return t("a",{staticClass:"video-card",class:{vertical:"vertical"===e.orientation,"no-stats":!e.showStats},attrs:{target:"_blank",href:e.epID?"https://www.bilibili.com/bangumi/play/ep"+e.epID:"https://www.bilibili.com/video/"+e.bvid}},[t("div",{staticClass:"cover-container"},[t("DpiImage",{staticClass:"cover",attrs:{src:e.coverUrl,size:{height:120,width:196}}}),e._v(" "),e.isNew?t("div",{staticClass:"new"},[e._v("NEW")]):e._e(),e._v(" "),e.pubTime&&e.pubTimeText?[t("div",{staticClass:"publish-time-summary"},[e._v("\n "+e._s(e.pubTimeText)+"\n ")]),e._v(" "),t("div",{staticClass:"publish-time-detail"},[e._v("\n "+e._s(e.pubTime)+"\n ")])]:e._e(),e._v(" "),e.durationText?t("div",{staticClass:"duration"},[e._v(e._s(e.durationText))]):e._e(),e._v(" "),e.durationText&&null!==e.watchlater&&void 0!==e.watchlater?t("div",{staticClass:"watchlater",on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.toggleWatchlater(e.aid)}}},[t("VIcon",{attrs:{size:15,icon:e.watchlater?"mdi-check-circle":"mdi-clock-outline"}}),e._v("\n "+e._s(e.watchlater?"已添加":"稍后再看")+"\n ")],1):e._e()],2),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.title}},[e._v(e._s(e.title))]),e._v(" "),e.topics&&e.topics.length?t("div",{staticClass:"topics"},e._l(e.topics.slice(0,3),(function(n){return t("a",{key:n.id,staticClass:"topic",attrs:{title:n.name,target:"_blank",href:n.url||"https://t.bilibili.com/topic/name/"+n.name+"/feed"}},[t("VIcon",{attrs:{icon:"mdi-tag-outline",size:14}}),e._v(" "),t("div",{staticClass:"topic-name"},[e._v("\n "+e._s(n.name)+"\n ")])],1)})),0):t("p",{staticClass:"description",attrs:{title:e.description}},[e._v(e._s(e.description))]),e._v(" "),0===e.cooperation.length?t("a",{staticClass:"up",class:{"no-face":!e.upFaceUrl},attrs:{target:"_blank",href:e.upID?"https://space.bilibili.com/"+e.upID:null}},[e.upFaceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.upFaceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}}),e._v(" "),t("div",{staticClass:"name",attrs:{title:e.upName}},[e._v(e._s(e.upName))])],1):e._e(),e._v(" "),0!==e.cooperation.length?t("div",{staticClass:"cooperation"},[t("div",{staticClass:"cooperation-ups"},e._l(e.reversedCooperation,(function(e){return t("a",{key:e.id,staticClass:"cooperation-up",class:{"no-face":!e.faceUrl},attrs:{target:"_blank",title:e.name,href:e.id?"https://space.bilibili.com/"+e.id:null}},[e.faceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.faceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}})],1)})),0),e._v(" "),t("div",{staticClass:"cooperation-note"},[e._v("联合投稿")])]):e._e(),e._v(" "),e.showStats?t("div",{staticClass:"stats"},[e.vertical?[e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e(),e._v(" "),e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e()]:[e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e(),e._v(" "),e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e()]],2):e._e()])};yt._withStripped=!0;const xt={components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{data:{type:Object,required:!0},orientation:{type:String,default:"horizontal"},showStats:{type:Boolean,default:!0},isNew:{type:Boolean,default:!1}},data(){return{watchlaterList:ke,upFaceUrl:"",danmakuCount:"",like:"",coins:"",favorites:"",dynamic:"",topics:[],upID:0,epID:0,cooperation:[],pubTime:0,pubTimeText:"",...lodash.omit(this.data,"watchlater"),watchlaterInit:this.data.watchlater,statsIconSize:14}},computed:{vertical(){return"vertical"===this.orientation},watchlater(){return(0,te.getUID)()&&null!==this.watchlaterInit?this.watchlaterList.includes(this.aid):null},reversedCooperation(){return[...this.cooperation].reverse().slice(0,3)}},methods:{toggleWatchlater:Ae}};var kt=n(117),Ct=n.n(kt),At={insert:"head",singleton:!1};lt()(Ct(),At);Ct().locals;const Et=(0,ut.Z)(xt,yt,[],!1,null,"57e48aec",null).exports;var Bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"column-card",attrs:{target:"_blank",href:`https://www.bilibili.com/read/cv${e.data.cvID}`}},[t("div",{staticClass:"covers"},e._l(e.data.covers,(function(e){return t("DpiImage",{key:e,staticClass:"cover",attrs:{size:{height:120},src:e}})})),1),e._v(" "),t("a",{staticClass:"up",attrs:{target:"_blank",href:`https://space.bilibili.com/${e.data.upID}`}},[t("DpiImage",{staticClass:"face",attrs:{size:24,src:e.data.upFaceUrl}}),e._v(" "),t("div",{staticClass:"name"},[e._v(e._s(e.data.upName))])],1),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.data.title}},[e._v(e._s(e.data.title))]),e._v(" "),t("div",{staticClass:"description",attrs:{title:e.data.description}},[e._v(e._s(e.data.description))])])};Bt._withStripped=!0;const Dt=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var It=n(6007),zt=n.n(It),St={insert:"head",singleton:!1};lt()(zt(),St);zt().locals;const Mt=(0,ut.Z)(Dt,Bt,[],!1,null,"335afa63",null).exports;let Pt=!1,Ot=0;const Vt="disable-profile-popup",Tt=async()=>{if("https://t.bilibili.com/"!==document.URL.replace(window.location.search,""))return;const e=await(0,Y.select)(".live-up-list, .bili-dyn-live-users__body");null!==e&&(Ot++,Pt||(e.addEventListener("mouseenter",(e=>{Ot>0&&e.stopImmediatePropagation()}),{capture:!0}),Pt=!0))},Lt=()=>{Ot--},jt=3e5,Rt=()=>(0,te.getCookieValue)(`bp_t_offset_${(0,te.getUID)()}`),Nt=(e,t)=>e===t?0:e.length>t.length?1:t.length>e.length?-1:e>t==!0?1:-1,qt=e=>{if(null==e)return;const t=Rt();Nt(e,t)<0||(document.cookie=`bp_t_offset_${(0,te.getUID)()}=${e};path=/;domain=.bilibili.com;max-age=2592000`)},Zt=e=>Nt(e,Rt())>0,Ut=e=>{const[t]=[...e.map((e=>e.id))].sort(Nt).reverse();qt(t)},Ht=async e=>{const t=`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all/update?type=${e}&update_baseline=${Rt()}`,n=await(0,B.getJsonWithCredentials)(t);return 0!==n.code?0:lodash.get(n,"data.update_num",0)},Wt=async()=>{const e=await(0,B.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/dynamic/entrance");return 0!==e.code?0:lodash.get(e,"data.update_info.item.count",0)},Gt=e=>{e.startsWith("#")&&(e=e.substring(1));return{red:e.substring(0,2),green:e.substring(2,4),blue:e.substring(4,6)}},Qt=e=>{const{red:t,green:n,blue:o}=Gt(e);return`\\c&H${`${o}${n}${t}`.toUpperCase()}&`},Yt=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const{red:n,green:o,blue:i}=Gt(e),r=Math.round(255*(1-t)).toString(16).padStart(2,"0");return`&H${r}${i}${o}${n}`.toUpperCase()},Xt=e=>{let t=0,n=0;for(;e>=60;)e-=60,n++;for(;n>=60;)n-=60,t++;return`${t}:${String(n).padStart(2,"0")}:${(e=>{const[t,n="00"]=String(e).split(".");return`${t.padStart(2,"0")}.${n.substring(0,2).padEnd(2,"0")}`})(e)}`},Kt=(e,t)=>[Xt(e),Xt(e+t)],Jt=(e,t)=>[Xt(e),Xt(t)],_t=e=>{const t={"{":"{","}":"}","&":"&","<":"<",">":">",""":'"',"'":"'","\n":"\\N"};for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},$t={"&":"&","<":"<",">":">",""":'"',"'":"'"},en=Object.fromEntries(Object.entries($t).map((e=>e.reverse()))),tn=(e,t)=>{if(!e)return"";for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},nn=e=>tn(e,en),on=e=>tn(e,$t);var rn=n(8997);const an=e=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?async()=>{const t=rn.playerAgent,{query:{control:{settings:n,buttons:o}}}=t;ce(o.settings.selector,n.wrap.selector),t.toggleLight(e)}:te.none,cn=an(!0),sn=an(!1),ln=an(),dn=async e=>{await(0,te.playerReady)();const t=dq(".video-toolbar .ops .collect, .video-toolbar-v1 .toolbar-left .collect, .video-toolbar-left-item.video-fav");if(!t)return null;const{hasVideo:o}=await Promise.resolve().then(n.bind(n,2533));await o();const i=await e();return t.classList.contains("video-fav")?t.parentElement.insertAdjacentElement("afterend",i):t.insertAdjacentElement("afterend",i),i},mn=async e=>{await(0,Y.hasVideo)()&&(0,R.videoChange)((async()=>{const t=await rn.playerAgent.query.video.danmaku();t&&((e,t)=>{const n=[];(0,R.childListSubtree)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{if(e.nodeType===Node.TEXT_NODE){const o=e.parentElement,i=n.find((e=>e.element===o));if(!i)return;return i.text=e.textContent||"",i.reuse=!0,void(t.added&&t.added(i))}if(!(e instanceof HTMLElement))return;const o={element:i=e,reuse:!1,text:i.textContent||""};var i;n.push(o),t.added&&t.added(o)})),e.removedNodes.forEach((e=>{if(!(e instanceof HTMLElement))return;const o=n.findIndex((t=>t.element===e));if(-1!==o){const[e]=n.splice(o,1);t.removed&&t.removed(e)}}))}))}))})(t,e)}))};function fn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class un{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];fn(this,"aid",void 0),fn(this,"bvid",void 0),fn(this,"cid",void 0),fn(this,"createTime",void 0),fn(this,"pageCount",void 0),fn(this,"coverUrl",void 0),fn(this,"tagId",void 0),fn(this,"tagName",void 0),fn(this,"title",void 0),fn(this,"description",void 0),fn(this,"up",void 0),fn(this,"pages",void 0),t?this.bvid=e:this.aid=e}async fetchInfo(){let e;this.aid?e=`https://api.bilibili.com/x/web-interface/view?aid=${this.aid}`:this.bvid&&(e=`https://api.bilibili.com/x/web-interface/view?bvid=${this.bvid}`),this.cid&&(e=`${e}&cid=${this.cid}`);const t=await(0,B.getJsonWithCredentials)(e);if(0!==t.code)throw new Error(t.message);const{data:n}=t;return this.aid=n.aid,this.bvid=n.bvid,this.cid=n.cid,this.createTime=new Date(1e3*n.ctime),this.pageCount=n.videos,this.coverUrl=n.pic.replace("http:","https:"),this.tagId=n.tid,this.tagName=n.tname,this.title=n.title,this.description=n.desc,this.up={uid:n.owner.mid,name:n.owner.name,faceUrl:n.owner.face.replace("http:","https:")},this.pages=n.pages.map((e=>({cid:e.cid,title:e.part,pageNumber:e.page}))),this}get subtitles(){return console.warn("VideoInfo.subtitles is deprecated"),[]}}class pn{constructor(e){fn(this,"ep",void 0),fn(this,"videos",void 0),fn(this,"title",void 0),fn(this,"cover",void 0),fn(this,"squareCover",void 0),fn(this,"aid",void 0),fn(this,"cid",void 0),this.ep=e,this.videos=[]}async fetchInfo(){const e=await(0,B.getText)(`https://www.bilibili.com/bangumi/play/ep${this.ep}/`),t=JSON.parse(e.match(/window\.__INITIAL_STATE__=(.*);\(function\(\){/)[1]);return this.title=t.mediaInfo.title,this.cover=t.mediaInfo.cover,this.squareCover=t.mediaInfo.square_cover,this.aid=t.epInfo.aid,this.cid=t.epInfo.cid,this.videos=t.epList.map((async e=>({title:e.index_title,aid:e.aid,cid:e.cid,info:await new un(e.aid).fetchInfo()}))),this}}const bn=[{name:"720P",displayName:"高清 720P",value:64},{name:"1080P",displayName:"高清 1080P",value:80}],hn=[{name:"8K",displayName:"超高清 8K",value:127},{name:"DolbyVision",displayName:"杜比视界",value:126},{name:"HDR",displayName:"真彩 HDR",value:125},{name:"4K",displayName:"超清 4K",value:120},{name:"1080P60",displayName:"高清 1080P60",value:116},{name:"1080P+",displayName:"高清 1080P+",value:112},{name:"720P60",displayName:"高清 720P60",value:74}],gn=[...hn,...bn,{name:"480P",displayName:"清晰 480P",value:32},{name:"360P",displayName:"流畅 360P",value:16}].sort((0,me.descendingSort)((e=>e.value))),Fn=async e=>{const{open:t,close:n}=e;if(!(0,Y.hasVideo)())return;const o=await(0,Y.select)(".bilibili-player");if(!o)return;const[i]=(0,R.childList)(o,(()=>{const e=dq(".bilibili-player-context-menu-origin");if(e){i.disconnect();const o=dq(e,"ul"),r={containerElement:e,listElement:o,get itemElements(){return dqa(e,".context-menu-function")},get isOpen(){return e.classList.contains("active")}};(0,R.childList)(o,(()=>{r.isOpen?t?.(r):n?.(r)}))}}))},vn=async(e,t)=>Fn({open:t=>{if(t.listElement.contains(e))return;const n=document.createElement("li");n.classList.add("context-line","context-menu-function"),n.setAttribute("data-append","1");const o=document.createElement("a");o.classList.add("context-menu-a","js-action"),o.href="javascript:void(0);",o.appendChild(e),n.addEventListener("mouseover",(()=>n.classList.add("hover"))),n.addEventListener("mouseout",(()=>n.classList.remove("hover"))),n.appendChild(o),t.listElement.appendChild(n)},close:e=>t?.(e)});let wn=null;const yn=[],xn=lodash.once((()=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?new Promise((e=>{(0,R.videoChange)((async()=>{const{playerAgent:t}=await Promise.resolve().then(n.bind(n,8997)),o=await t.query.control.buttons.time(),i=await Promise.resolve().then(n.bind(n,2208)).then((e=>e.default));if(null===o||null!==o.parentElement?.querySelector(".be-video-control-bar-extend"))return;const r=new i({propsData:{items:yn}}).$mount();o.insertAdjacentElement("afterend",r.$el),e(r)}))})):Promise.resolve(null))),kn=async e=>{wn||(wn=xn());await wn&&yn.push(e)},Cn=async e=>{const t=new un(e);try{await t.fetchInfo()}catch(e){throw(0,de.logError)(e),e}return t.coverUrl.replace("http:","https:")},An=async e=>{const t=await Cn(e),n=await fetch(t);return await n.blob()},En=async e=>{const t=await(0,Y.select)(".live-player-mounter"),n=(0,de.useScopedConsole)("withControlBar");if(!t)return void n.warn("livePlayer not found");(0,te.raiseEvent)(t,"mousemove");const o=dq(t,".web-player-controller-wrap .control-area");o?(await e(o),(0,te.raiseEvent)(t,"mouseleave")):n.warn("controlBar not found")},Bn=async e=>{if(!fe.liveUrls.some((e=>(0,te.matchUrlPattern)(e))))return;const t=await(0,Y.select)(".bilibili-live-player-video-controller, .web-player-controller-wrap:not(.web-player-controller-bg)");if(!t)return;const{init:n,callback:o}=e;n?.(t),(0,R.childList)(t,(async()=>{const e=dq(t,".control-area");e&&o?.(e)}))};function Dn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const In=0,zn=2,Sn={heartBeat:2,heartBeatResponse:3,message:5,enterRoom:7,enterRoomResponse:8};class Mn{constructor(){Dn(this,"textEncoder",new TextEncoder),Dn(this,"textDecoder",new TextDecoder)}static readInt(e,t,n){let o=0;for(let i=n-1;i>=0;i--)o+=256**(n-i-1)*e[t+i];return o}static writeInt(e,t,n,o){let i=0;for(;i{const o={packetLength:Mn.readInt(e,0,4),headerLength:Mn.readInt(e,4,2),protocolVersion:Mn.readInt(e,6,2),operation:Mn.readInt(e,8,4),sequenceID:Mn.readInt(e,12,4)},i=[o];if(o.packetLengthe.messages[0])))}else o.protocolVersion===In&&(o.messages=[JSON.parse(this.textDecoder.decode(i))])}else o.operation===Sn.heartBeatResponse&&(o.heartBeatResponse={count:Mn.readInt(e,16,4)});return i};return new Promise(((n,o)=>{const i=new FileReader;i.onload=async e=>{if(!e.target)return void o(e);const i=new Uint8Array(e.target.result);n(await t(i))},i.readAsArrayBuffer(e)}))}}class Pn{constructor(){Dn(this,"startTime",0)}getLiveTime(){return new Promise((e=>{if(this.startTime)return void e(this.startTime);const t=(0,te.dq)(".bilibili-live-player-video-controller-duration-btn span"),[n]=(0,R.childList)(t,(t=>{if(t.length>0&&t.some((e=>e.addedNodes.length>0&&[...e.addedNodes].every((e=>e.nodeType===Node.TEXT_NODE))))){n.disconnect();const o=t[0].addedNodes[0].textContent,[i,r,a=0]=o.split(":").reverse().map(lodash.unary(parseInt)),c=Number(new Date);this.startTime=c-1e3*a*3600-60*r*1e3-1e3*i,e(this.startTime)}}))}))}}class On extends EventTarget{constructor(e){super(),this.roomID=e,Dn(this,"heartBeatTimer",void 0),Dn(this,"webSocket",void 0),Dn(this,"retryInterval",200),Dn(this,"autoRetry",!0),Dn(this,"servers",["broadcastlv.chat.bilibili.com"]),Dn(this,"selectedServer",""),Dn(this,"liveTime",new Pn),Dn(this,"bufferHelper",new Mn),Dn(this,"stopRequested",!1),window.addEventListener("unload",(()=>this.stop()))}heartBeat(){this.webSocket.readyState===WebSocket.OPEN?this.webSocket.send(this.bufferHelper.encode("","heartBeat")):(this.stop(),this.restart())}restart(){if(this.dispatchEvent(new CustomEvent("restart")),!this.stopRequested&&this.autoRetry){console.log(`Live Socket: unexpected disconnect, retry in ${this.retryInterval}ms`);const e=this.servers.indexOf(this.selectedServer);ethis.start()),this.retryInterval)}}async start(){const e=await(0,B.getJson)(`https://api.live.bilibili.com/room/v1/Danmu/getConf?room_id=${this.roomID}&platform=pc&player=web`),t=lodash.get(e,"data.host_server_list",[]);this.servers=[...new Set([...this.servers,...t.map((e=>e.host))])],""===this.selectedServer&&([this.selectedServer]=this.servers,console.log("Initial server:",this.selectedServer)),this.webSocket&&[WebSocket.CONNECTING,WebSocket.OPEN].includes(this.webSocket.readyState)&&this.stop(),this.webSocket=new WebSocket(`wss://${this.selectedServer}/sub`),this.stopRequested=!1,this.dispatchEvent(new CustomEvent("start",{detail:this.webSocket})),this.webSocket.addEventListener("open",(()=>{const t={roomid:this.roomID,uid:parseInt((0,te.getUID)()),protover:2,platform:"web",clientVer:"1.10.1",type:"2",key:lodash.get(e,"data.token")};this.webSocket.send(this.bufferHelper.encode(JSON.stringify(t),"enterRoom")),this.dispatchEvent(new CustomEvent("open",{detail:t}))})),this.webSocket.addEventListener("message",(async e=>{const[t]=await this.bufferHelper.decode(e.data);switch(this.dispatchEvent(new CustomEvent("message",{detail:t})),t.operation){case Sn.enterRoomResponse:this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.heartBeatTimer=window.setInterval((()=>{this.heartBeat()}),3e4);break;case Sn.heartBeatResponse:if(!t.heartBeatResponse)break;this.dispatchEvent(new CustomEvent("heartBeatResponse",{detail:t.heartBeatResponse.count}));break;case Sn.message:{if(!t.messages)break;const e=await this.liveTime.getLiveTime();t.messages.forEach((t=>{if("DANMU_MSG"===t.cmd){const{info:n}=t,o={content:n[1],type:n[0][1],fontSize:n[0][2],color:n[0][3],sendTime:n[0][4],userHash:n[0][7],userID:n[2][0],userName:n[2][1],startTime:e,get time(){return this.sendTime-this.startTime}};this.dispatchEvent(new CustomEvent("danmaku",{detail:o}))}}));break}}})),this.webSocket.addEventListener("close",(e=>{this.stopRequested||(console.error("Live Socket: close",e),this.restart())})),this.webSocket.addEventListener("error",(e=>{console.error("Live Socket: error",e),this.restart()}))}stop(){this.stopRequested=!0,this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.webSocket&&this.webSocket.readyState===WebSocket.OPEN&&this.webSocket.close()}}function Vn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Tn extends EventTarget{constructor(e){super(),Vn(this,"element",void 0),Vn(this,"id",void 0),Vn(this,"userId",void 0),Vn(this,"userName",void 0),Vn(this,"content",void 0),Vn(this,"timeText",void 0),Vn(this,"time",void 0),Vn(this,"likes",void 0),this.element=e.element,this.id=e.id,this.userId=e.userId,this.userName=e.userName,this.content=e.content,this.timeText=e.timeText,this.time=e.time,this.likes=e.likes}}function Ln(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class jn extends Tn{constructor(e){super(e),Ln(this,"pictures",void 0),Ln(this,"replies",void 0),this.pictures=e.pictures??[],this.replies=e.replies}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchRepliesUpdate(e){return super.dispatchEvent((e=>new CustomEvent("repliesUpdate",{detail:e}))(e))}}function Rn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Nn{constructor(e){Rn(this,"element",void 0),Rn(this,"items",[]),Rn(this,"observer",void 0),Rn(this,"itemAddedCallbacks",[]),Rn(this,"itemRemovedCallbacks",[]),this.element=e}isCommentItem(e){return e instanceof HTMLElement&&e.matches(Nn.replyItemSelector)}beforeParse(e){return lodash.noop(e)}observeItems(){if(this.observer)return;performance.mark("observeItems start");const e=dqa(this.element,Nn.replyItemSelector);e.length>0&&(this.beforeParse(e),this.items=e.map((e=>this.parseCommentItem(e)))),this.items.forEach((e=>{this.itemAddedCallbacks.forEach((t=>t(e)))})),[this.observer]=(0,R.childListSubtree)(this.element,(e=>{const t=(0,te.getRandomId)();performance.mark(`observeItems subtree start ${t}`);const n=[],o=[];e.forEach((e=>{e.addedNodes.forEach((e=>{this.isCommentItem(e)&&n.push(e)})),e.removedNodes.forEach((e=>{this.isCommentItem(e)&&o.push(e)}))})),n.length>0&&this.beforeParse(n),n.forEach((e=>{const t=this.parseCommentItem(e);this.items.push(t),this.itemAddedCallbacks.forEach((e=>e(t)))})),o.forEach((e=>{const t=this.getCommentId(e),n=this.items.findIndex((e=>e.id===t));if(-1!==n){const[e]=this.items.splice(n,1);this.itemRemovedCallbacks.forEach((t=>t(e)))}})),performance.mark(`observeItems subtree end ${t}`),performance.measure(`observeItems subtree ${t}`,`observeItems subtree start ${t}`,`observeItems subtree end ${t}`)})),performance.mark("observeItems end"),performance.measure("observeItems","observeItems start","observeItems end")}forEachCommentItem(e){const{added:t,removed:n}=e;t&&(this.items.forEach((e=>t(e))),this.itemAddedCallbacks.push(t)),n&&this.itemRemovedCallbacks.push(n)}}Rn(Nn,"replyItemClasses",["list-item.reply-wrap","reply-item"]),Rn(Nn,"replyItemSelector",Nn.replyItemClasses.map((e=>`.${e}`)).join(","));class qn extends Nn{addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".opera-list ul");if(!n)throw new Error("Invalid operation list");const{className:o,text:i,action:r}=t;if(dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o),a.textContent=i,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=e.querySelector(".con .user .name");if(!t)throw new Error("Invalid comment item");const n=e=>{const t=e.querySelector(".reply-face"),n=e.querySelector(".reply-con .user .name");return new Tn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:n.textContent,content:e.querySelector(".text-con").textContent,timeText:e.querySelector(".info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".info .like span").textContent)})},o=new jn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:t.textContent,content:e.querySelector(".con .text").textContent,timeText:e.querySelector(".con .info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".con .like span").textContent),replies:[]});if(dq(e,".reply-box .view-more")){const t=dq(e,".reply-box");(0,R.childList)(t,(t=>{o.replies=dqa(e,".reply-box .reply-item").map(n),0!==t.length&&o.dispatchRepliesUpdate(o.replies)}))}else o.replies=dqa(e,".reply-box .reply-item").map(n);return o}getCommentId(e){const t=e.getAttribute("data-id");if(!t)throw new Error("Invalid comment item");return t}}function Zn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)} +function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u extends d{constructor(){super(),f(this,"type","bangumi"),f(this,"query",s({playerWrap:"#bilibili-player-wrap",bilibiliPlayer:"#bilibili-player",...m}))}seek(e){const t=super.seek(e);return null===t||setTimeout((()=>{const e=dq(".bpx-player-toast-row .bpx-player-toast-item .bpx-player-toast-text");e?.textContent?.startsWith("已为您定位至")&&(e.textContent="已为您定位至00:00")})),t}}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class b extends d{constructor(){super(),p(this,"type","video"),p(this,"query",s({playerWrap:".player-wrap",bilibiliPlayer:"#bilibili-player",...m})),this.checkBwpVideo()}checkBwpVideo(){const e=this.query.video.element.selector,t=".bilibili-player-video bwp-video,.bpx-player-video-area bwp-video";this.query.video.element=(()=>{const n=async()=>await(0,r.isBwpVideo)()?(0,i.select)(t):(0,i.select)(e);return n.selector=e,n.sync=()=>dq(e),(0,r.isBwpVideo)().then((e=>{e&&(n.selector=t,n.sync=()=>dq(t))})),n})()}}const h=(0,o.matchCurrentPage)(o.bangumiUrls)?new u:new b},9161:(e,t,n)=>{"use strict";n.r(t),n.d(t,{bilibiliApi:()=>k,getBlob:()=>c,getBlobWithCredentials:()=>s,getJson:()=>p,getJsonWithCredentials:()=>b,getPages:()=>x,getText:()=>d,getTextWithCredentials:()=>m,monkey:()=>w,postJson:()=>F,postJsonWithCredentials:()=>v,postText:()=>h,postTextWithCredentials:()=>g,responsiveGetPages:()=>y});var o=n(5145);const i=e=>{const t=new XMLHttpRequest,{isText:n=!0,body:o}=e(t);return new Promise(((e,i)=>{t.addEventListener("load",(()=>e(n?t.responseText:t.response))),t.addEventListener("error",(()=>i(t.status))),t.send(o)}))},r=e=>t=>(t.withCredentials=!0,e(t)),a=e=>t=>(t.responseType="blob",t.open("GET",e),{isText:!1}),c=e=>i(a(e)),s=e=>i(r(a(e))),l=e=>t=>(t.responseType="text",t.open("GET",e),{isText:!0}),d=e=>i(l(e)),m=e=>i(r(l(e))),f=e=>t=>(t.responseType="json",t.open("GET",e),{isText:!1}),u=e=>"string"==typeof e?JSON.parse(e):e,p=async e=>{const t=await i(f(e));return u(t)},b=async e=>{const t=await i(r(f(e)));return u(t)},h=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),g=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),{isText:!1,body:t}))),F=(e,t)=>i((n=>(n.open("POST",e),n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),v=(e,t)=>i((n=>(n.open("POST",e),n.withCredentials=!0,n.setRequestHeader("Content-Type","application/json"),{isText:!1,body:JSON.stringify(t)}))),w=e=>new Promise(((t,n)=>{const o={nocache:!0,...e,onload:e=>t(e.response),onerror:e=>{const t={...JSON.parse(JSON.stringify(e)),toString(){return JSON.stringify(this)}};n(t)}};"method"in o||(o.method="GET"),GM_xmlhttpRequest(o)})),y=e=>{let t;const n=new Promise((n=>{t=new Promise((t=>{(async()=>{const{api:o,getList:i,getTotal:r}=e;let a=1,c=1/0;const s=[];for(;s.length{const[,t]=y(e);return await t},k=async(e,t)=>{const n=await e;if(0!==n.code){const e=new Error(`${t}: code = ${n.code}, message = ${n.message||n.msg}`);throw(0,o.logError)(e),e}return n.data||n.result||{}}},2129:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CdnTypes:()=>i,cdnRoots:()=>a,defaultOwner:()=>r});var o=n(5791);let i=function(e){return e.jsDelivr="jsDelivr",e.AltCdn="AltCdn",e.GitHub="GitHub",e}({});const r="the1812",a={jsDelivr:(e,t)=>o.meta.compilationInfo.allCdns.jsDelivr.root(e,t),AltCdn:(e,t)=>o.meta.compilationInfo.altCdn.root(e,t),GitHub:(e,t)=>`https://raw.githubusercontent.com/${t||r}/Bilibili-Evolved/${e}/`}},8677:(e,t,n)=>{"use strict";n.r(t),n.d(t,{coreApis:()=>Do,externalApis:()=>Io});var o={};n.r(o),n.d(o,{enableHorizontalScroll:()=>O});var i={};n.r(i),n.d(i,{Reorder:()=>G,ReorderDecreaseClassName:()=>q,ReorderEnabledClassName:()=>U,ReorderIncreaseClassName:()=>Z,ReorderOrientations:()=>W,ReorderingClassName:()=>H});var r={};n.r(r),n.d(r,{getUserInfo:()=>$});var a={};n.r(a),n.d(a,{loadDanmakuSettingsPanel:()=>se,loadLazyPanel:()=>ae,loadLazyPlayerSettingsPanel:()=>ce,loadSubtitleSettingsPanel:()=>le});var c={};n.r(c),n.d(c,{styledComponentEntry:()=>ve,toggleStyle:()=>we});var s={};n.r(s),n.d(s,{getWatchlaterList:()=>Ce,toggleWatchlater:()=>Ae,watchlaterList:()=>ke});var l={};n.r(l),n.d(l,{FeedsCardsManager:()=>Te,FeedsCardsManagerEventType:()=>Ve,addMenuItem:()=>rt,applyContentFilter:()=>et,bangumiTypeList:()=>Ie,createNodeValidator:()=>Oe,feedsCardCallbacks:()=>Me,feedsCardTypes:()=>Be,feedsCardsManager:()=>Xe,forEachFeedsCard:()=>Ke,getFeeds:()=>ot,getFeedsUrl:()=>nt,getVideoFeeds:()=>it,getVueData:()=>te.getVue2Data,groupVideoFeeds:()=>Je,isPreOrderedVideo:()=>_e,isRepostType:()=>De,isV2Feeds:()=>Ye,navbarFeedsTypeList:()=>ze,withContentFilter:()=>tt});var d={};n.r(d),n.d(d,{DisableProfilePopupClass:()=>Vt,disableProfilePopup:()=>Tt,enableProfilePopup:()=>Lt});var m={};n.r(m),n.d(m,{compareID:()=>Nt,getLatestID:()=>Rt,getNotifyCount:()=>Wt,getNotifyCountByType:()=>Ht,isNewID:()=>Zt,setLatestID:()=>qt,updateInterval:()=>jt,updateLatestID:()=>Ut});var f={};n.r(f),n.d(f,{convertHexColorForDialogue:()=>Qt,convertHexColorForStyle:()=>Yt,convertTimeByDuration:()=>Kt,convertTimeByEndTime:()=>Jt,normalizeContent:()=>_t});var u={};n.r(u),n.d(u,{escapeContent:()=>nn,normalizeContent:()=>on});var p={};n.r(p),n.d(p,{lightOff:()=>sn,lightOn:()=>cn,toggleLight:()=>ln});var b={};n.r(b),n.d(b,{addVideoActionButton:()=>dn});var h={};n.r(h),n.d(h,{forEachVideoDanmaku:()=>mn});var g={};n.r(g),n.d(g,{BangumiInfo:()=>pn,VideoInfo:()=>un});var F={};n.r(F),n.d(F,{allQualities:()=>gn,loginRequiredQualities:()=>bn,vipRequiredQualities:()=>hn});var v={};n.r(v),n.d(v,{addMenuItem:()=>vn,forEachContextMenu:()=>Fn});var w={};n.r(w),n.d(w,{addControlBarButton:()=>kn});var y={};n.r(y),n.d(y,{getBlobByAid:()=>An,getVideoCoverUrlByAid:()=>Cn});var x={};n.r(x),n.d(x,{waitForControlBar:()=>Bn,withControlBar:()=>En});var k={};n.r(k),n.d(k,{LiveSocket:()=>On});var C={};n.r(C),n.d(C,{CommentArea:()=>Nn,CommentAreaV1:()=>qn,CommentAreaV2:()=>Gn,CommentItem:()=>jn,CommentReplyItem:()=>Tn,addMenuItem:()=>$n,commentAreaManager:()=>Kn,forEachCommentArea:()=>Jn,forEachCommentItem:()=>_n,getCommentArea:()=>Qn});var A={};n.r(A),n.d(A,{addCategoryIcons:()=>lo,categories:()=>ao,categoryCodes:()=>co,categoryLinks:()=>so,rawData:()=>to});var E={};n.r(E),n.d(E,{createSwitchOptions:()=>Fo,defineSwitchItemsMetadata:()=>vo,defineSwitchMetadata:()=>wo,newSwitchComponentWrapper:()=>xo,wrapSwitchOptions:()=>yo});var B=n(9161),D=n(2129),I=n(4905),z=n(5450),S=n(2686),P=n(5244),M=n(1233);const O=e=>{const t=t=>{t.deltaY&&!t.deltaX&&(t.preventDefault(),requestAnimationFrame((()=>{e.scrollBy(t.deltaY,0)})))};return e.addEventListener("wheel",t),e.style.scrollSnapType="none",()=>{e.removeEventListener("wheel",t),e.style.scrollSnapType=""}};var V=n(7792),T=n(4074),L=n(711),j=n(5791),R=n(8737);function N(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const q="reorder-decrease",Z="reorder-increase",U="reorder-enabled",H="reordering",W={horizontal:{name:"horizontal",getMoveTransform:e=>`translateX(${e}px)`,setOtherTransform:lodash.throttle(((e,t,n)=>{if(!t.classList.contains(H))return;const o=e.find((e=>e.element===t));if(!o)return;const i=o.rect,r=e.filter((e=>e.rect.leftt.rect.left-e.rect.left)),a=e.filter((e=>e.rect.left>i.left)).sort(((e,t)=>e.rect.left-t.rect.left));if(n>=0){const[e]=a;r.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),a.forEach((t=>{i.left+n+i.width>=t.rect.left+t.rect.width/2?(t.element.classList.add(q),t.element.style.transform=`translateX(-${e.rect.left-i.left}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=r;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),r.forEach((t=>{i.left+n<=t.rect.left+t.rect.width/2?(t.element.classList.add(Z),t.element.style.transform=`translateX(${i.left+i.width-e.rect.left-e.rect.width}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)},vertical:{name:"vertical",getMoveTransform:(e,t)=>`translateY(${t}px)`,setOtherTransform:lodash.throttle(((e,t,n,o)=>{if(!t.classList.contains(H))return;const i=e.find((e=>e.element===t));if(!i)return;const r=i.rect,a=e.filter((e=>e.rect.topt.rect.top-e.rect.top)),c=e.filter((e=>e.rect.top>r.top)).sort(((e,t)=>e.rect.top-t.rect.top));if(o>=0){const[e]=c;a.forEach((e=>{e.element.style.transform="",e.element.classList.remove(Z)})),c.forEach((t=>{r.top+o+r.height>=t.rect.top+t.rect.height/2?(t.element.classList.add(q),t.element.style.transform=`translateY(-${e.rect.top-r.top}px)`):(t.element.classList.remove(q),t.element.style.transform="")}))}else{const[e]=a;c.forEach((e=>{e.element.style.transform="",e.element.classList.remove(q)})),a.forEach((t=>{r.top+o<=t.rect.top+t.rect.height/2?(t.element.classList.add(Z),t.element.style.transform=`translateY(${r.top+r.height-e.rect.top-e.rect.height}px)`):(t.element.classList.remove(Z),t.element.style.transform="")}))}}),50)}};class G extends EventTarget{constructor(e){super(),this.container=e,N(this,"orientation",W.horizontal),N(this,"enabled",!1),N(this,"children",void 0),N(this,"snapshots",new Map),N(this,"attachedEvents",[]),this.children=[...this.container.children],this.children.every((e=>""===e.style.order))&&this.children.forEach(((e,t)=>{e.style.order=(t+1).toString()}))}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.addEventListener(e,t,n)}getOrderMap(){return new Map(this.children.map((e=>[e,parseInt(e.style.order)])))}toggle(){this.enabled?this.disable():this.enable()}generateSnapshots(){this.children.forEach((e=>{this.snapshots.set(e,{element:e,rect:e.getBoundingClientRect()})}))}enable(){this.children.forEach((e=>{let t=0,n=0,o=!1;e.classList.add(U);(()=>{const i=(i,r)=>{e.classList.add(H),e.style.transition="none",e.style.userSelect="none",this.generateSnapshots(),this.children.filter((t=>t!==e)).forEach((e=>{e.style.transition="transform .2s ease-out"})),t=i,n=r,o=!0},r=e=>{i(e.screenX,e.screenY)};e.addEventListener("mousedown",r),this.attachedEvents.push((()=>e.removeEventListener("mousedown",r)));const a=e=>{if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY)};e.addEventListener("touchstart",a),this.attachedEvents.push((()=>e.removeEventListener("touchstart",a)))})(),(()=>{const i=(o,i)=>{const r=o-t,a=i-n;e.style.transform=this.orientation.getMoveTransform(r,a),this.orientation.setOtherTransform([...this.snapshots.values()],e,r,a)},r=e=>{o&&(i(e.screenX,e.screenY),e.cancelable&&e.preventDefault())};document.addEventListener("mousemove",r),this.attachedEvents.push((()=>document.removeEventListener("mousemove",r)));const a=e=>{if(!o)return;if(1!==e.touches.length)return;const[t]=e.touches;i(t.screenX,t.screenY),e.cancelable&&e.preventDefault()};e.addEventListener("touchmove",a,{passive:!1}),this.attachedEvents.push((()=>e.removeEventListener("touchmove",a)))})(),(()=>{const t=()=>{if(!o)return;e.classList.remove(H),o=!1;let t=0;const n=this.children.filter((t=>t!==e)),i=[];n.forEach((e=>{e.style.transform="",e.style.transition="",e.classList.contains(Z)?(t--,e.style.order=(parseInt(e.style.order)+1).toString(),e.classList.remove(Z),i.push(this.snapshots.get(e))):e.classList.contains(q)&&(t++,e.style.order=(parseInt(e.style.order)-1).toString(),e.classList.remove(q),i.push(this.snapshots.get(e)))})),e.style.userSelect="",e.style.order=(parseInt(e.style.order)+t).toString(),e.style.transform="",e.style.transition="",this.dispatchEvent(new CustomEvent("reorder",{detail:this.children.map((e=>({element:e,order:parseInt(e.style.order)})))}))};document.addEventListener("mouseup",t),this.attachedEvents.push((()=>document.removeEventListener("mouseup",t))),e.addEventListener("touchend",t),this.attachedEvents.push((()=>e.removeEventListener("touchend",t)))})()})),this.enabled=!0}disable(){this.attachedEvents.forEach((e=>e())),this.children.forEach((e=>e.classList.remove(U))),this.enabled=!1}}var Q=n(7789),Y=n(2533),X=n(7511),K=n(5040),J=n(7234);const _={isLogin:!1},$=lodash.once((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,3085));if(!e())return _;const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,9161)),o=await t("https://api.bilibili.com/x/web-interface/nav");return 0!==o.code&&-101!==o.code?(console.warn("[store.fetchUserInfo] API Error",o.message),_):o.data}));var ee=n(2351),te=n(3085),ne=n(2866),oe=n(7079),ie=n(3659),re=n(816);const ae=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{style:n,enterDelay:o=750,leaveDelay:i=1e3}=t,r=await(0,Y.select)(e);if(!r)throw new Error(`lazy panel failed! selector = ${e}`);let a;return void 0!==n&&(a=document.createElement("style"),a.textContent=n,document.body.insertAdjacentElement("beforeend",a)),(0,te.raiseEvent)(r,"mouseover"),await(0,te.delay)(o),(0,te.raiseEvent)(r,"mouseout"),setTimeout((()=>a?.remove()),i),r},ce=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};await ae(e,{style:`${t} { display: none !important; }`,...n});const o=(0,te.dq)(t);if(!o)throw new Error(`lazy player settings panel failed! panelSelector = ${t}`);return o},se=()=>ce(".bilibili-player-video-danmaku-setting, .bpx-player-dm-setting",".bilibili-player-video-danmaku-setting-wrap, .bpx-player-dm-setting-wrap"),le=()=>ce(".bilibili-player-video-btn-subtitle, .bpx-player-ctrl-subtitle",".bilibili-player-video-subtitle-setting-wrap, .bpx-player-ctrl-subtitle-box",{style:"\n .bpx-player-ctrl-subtitle-box,\n .bilibili-player-video-subtitle-setting-wrap,\n .bilibili-player-video-subtitle {\n display: none\n }\n "});var de=n(5145),me=n(4055),fe=n(9316),ue=n(9107),pe=n(3150),be=n(1445),he=n(6955),ge=n(2267),Fe=n(6312);const ve=(e,t)=>async o=>{const{default:i}=await e(),{addStyle:r}=await Promise.resolve().then(n.bind(n,7511));return r(i,o.metadata.name),t(o)},we=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:te.none,i=null;const r=async()=>{if(i)return;const{default:o}=await t(),{addStyle:r}=await Promise.resolve().then(n.bind(n,7511));i=r(o,e)};return{name:e,entry:e=>r().then((()=>o(e))),reload:r,unload:()=>{i?.remove(),i=null}}};var ye=n(4093),xe=n(1557);const ke=[];async function Ce(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{getUID:t}=await Promise.resolve().then(n.bind(n,3085));if(!t())return console.warn("[稍后再看列表] 账号未登录"),[];const o="https://api.bilibili.com/x/v2/history/toview/web",{getJsonWithCredentials:i}=await Promise.resolve().then(n.bind(n,9161)),r=await i(o);if(0!==r.code)return(0,de.logError)(new Error(`获取稍后再看列表失败: ${r.message}`)),[];if(!r.data.list)return(0,te.deleteValues)(ke,(()=>!0)),[];const a=r.data.list;(0,te.deleteValues)(ke,(e=>!a.find((t=>t.aid===e))));const c=a.filter((e=>!ke.find((t=>t===e.aid))));return ke.push(...c.map((e=>e.aid))),e?a:a.map((e=>e.aid))}const Ae=async(e,t)=>{const o=parseInt(e.toString());if(Number.isNaN(o))return;void 0===t&&(t=!ke.includes(o));const i=t?"https://api.bilibili.com/x/v2/history/toview/add":"https://api.bilibili.com/x/v2/history/toview/del",{getCsrf:r}=await Promise.resolve().then(n.bind(n,3085)),a=r(),{postTextWithCredentials:c}=await Promise.resolve().then(n.bind(n,9161)),s=await c(i,`aid=${e}&csrf=${a}`),l=JSON.parse(s);0===l.code?t?ke.push(o):(0,te.deleteValue)(ke,(e=>e===o)):(0,de.logError)(new Error(`稍后再看操作失败: ${l.message}`))};requestIdleCallback((async()=>{const{getUID:e}=await Promise.resolve().then(n.bind(n,3085));e()&&Ce()}));var Ee=n(779);const Be={repost:{id:1,name:"转发"},textWithImages:{id:2,name:"图文"},text:{id:4,name:"文字"},video:{id:8,name:"视频",apiType:"video"},miniVideo:{id:16,name:"小视频"},column:{id:64,name:"专栏",apiType:"article"},audio:{id:256,name:"音频"},bangumi:{id:512,name:"番剧",apiType:"pgc"},share:{id:2048,name:"分享"},manga:{id:2049,name:"漫画"},film:{id:4098,name:"电影"},tv:{id:4099,name:"TV剧"},chinese:{id:4100,name:"国创"},documentary:{id:4101,name:"纪录片"},mediaList:{id:4300,name:"收藏夹"},liveRecord:{id:2047,name:"开播记录"}},De=e=>e.type===Be.repost,Ie="512,4097,4098,4099,4100,4101",ze="8,64,512,4097,4098,4099,4100,4101",Se="feeds.manager.listAdaptors";function Pe(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}(0,Ee.addData)(Se,(e=>{e.push({name:"live",match:[...fe.liveUrls],watchCardsList:async e=>{const t=await(0,Y.select)(".room-feed");if(!t)return!1;console.log("live watch");let n=null;return(0,R.childList)(t,(async()=>{if(dq(".room-feed-content")){const t=await(0,Y.select)(".room-feed-content .content");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"space",match:["https://space.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".s-space");if(!t)return!1;const n={},o=()=>{n.listElement&&n.observer&&(console.log("space feeds stop"),n.observer?.then((e=>e.disconnect())),delete n.observer,delete n.listElement,e.cleanUpCards())},i=()=>{if(n.observer)return n.observer;const t=(0,Y.select)(".bili-dyn-list__items");return n.observer=(async()=>{const r=await t;r!==await n.listElement&&(n.listElement&&o(),n.listElement=t,i()),console.log("space feeds start");const[a]=e.updateCards(r);return a})(),n.observer};return(0,R.childListSubtree)(t,(async()=>{dq(".bili-dyn-list__items")?i():o()})),!0}},{name:"topic",match:["https://t.bilibili.com/topic"],watchCardsList:async e=>{const t=await(0,Y.select)(".page-container");if(!t)return!1;let n=null;return(0,R.childList)(t,(async()=>{if(dq(".page-container .feed")){const t=await(0,Y.select)(".feed .feed-topic");n?.disconnect(),[n]=e.updateCards(t)}else n?.disconnect(),n=null,await Promise.all(e.cards.map((e=>e.element)).map((t=>e.removeCard(t))))})),!0}},{name:"opus-detail",match:["https://www.bilibili.com/opus/"],watchCardsList:async e=>{const t=await(0,Y.select)(".opus-detail");return!!t&&(e.updateCards(t),!0)}},{name:"default",match:["https://t.bilibili.com/"],watchCardsList:async e=>{const t=await(0,Y.select)(".feed-card .content, .detail-content .detail-card, #app > .content > .card, .bili-dyn-list__items");if(!t)return!1;if(t.classList.contains("bili-dyn-list__items")){const n=t.parentElement.parentElement;let o;(0,R.childList)(n,(()=>{const t=dq(n,".bili-dyn-list__items");t&&(o?.disconnect(),e.cards=[],[o]=e.updateCards(t))}))}else e.updateCards(t);return!0}})}));const Me=[],Oe=e=>t=>{const n=Boolean(t),o=t&&t.parentNode,i=t instanceof HTMLElement&&t.matches(e);return n&&o&&i};let Ve=function(e){return e.AddCard="addCard",e.RemoveCard="removeCard",e}({});class Te extends EventTarget{constructor(){super(...arguments),Pe(this,"watching",!1),Pe(this,"cards",[]),Pe(this,"managerType",void 0)}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchCardEvent(e,t){const n=new CustomEvent(e,{detail:t});this.dispatchEvent(n),Me.forEach((n=>n[e===Ve.AddCard?"added":"removed"](t)))}async startWatching(){if(this.watching)return!0;this.watching=!0;const[e]=(0,Ee.registerAndGetData)(Se,[]),t=e.find((e=>e.match.some((e=>(0,te.matchUrlPattern)(e)))));return t?t.watchCardsList(this):(console.warn("[FeedsCardsManager] No adaptor found",e),!1)}cleanUpCards(){this.cards=this.cards.filter((e=>e.presented))}}function Le(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const je=e=>e.querySelector(".repost")?Be.repost:e.querySelector(".imagesbox")?Be.textWithImages:e.querySelector(".video-container")?Be.video:e.querySelector(".bangumi-container")?Be.bangumi:e.querySelector(".article-container")?Be.column:e.querySelector(".music-container")?Be.audio:e.querySelector(".h5share-container")?Be.share:e.querySelector(".vc-ctnr")?Be.miniVideo:e.querySelector(".live-container")?Be.liveRecord:Be.text,Re=async e=>{const t=async t=>{const n=await(0,Y.sq)((()=>e.querySelector(t)),(t=>null!==t||null===e.parentNode),{queryInterval:100});if(null===e.parentNode)return"";if(null===n)return console.warn(e,t,e.parentNode),"";return n.innerText.trim()},n=e=>{if(void 0===e.card.origin)return{originalText:"",originalDescription:"",originalTitle:""};const t=JSON.parse(e.card.origin);return{originalText:e.originCardData.pureText,originalDescription:lodash.get(t,"item.description",lodash.get(t,"desc","")),originalTitle:t.title}},o=async e=>{const n=parseInt(await t(e));return isNaN(n)?0:n},i={id:e.getAttribute("data-did"),username:await t(".main-content .user-name"),text:"",reposts:await o(".button-bar .single-button:nth-child(1) .text-offset"),comments:await o(".button-bar .single-button:nth-child(2) .text-offset"),likes:await o(".button-bar .single-button:nth-child(3) .text-offset"),element:e,type:je(e),get presented(){return null!==e.parentNode},async getText(){return(async t=>{if(t===Be.bangumi)return"";const o=await(0,Y.sq)((()=>e),(t=>Boolean((0,te.getVue2Data)(t)||!e.parentNode)),{queryInterval:100});if(null===e.parentNode)return"";if(null===o)return console.warn(o,e,(0,te.getVue2Data)(o),e.parentNode),"";const i=(0,te.getVue2Data)(o);if(t===Be.repost){const e=i.card.item.content,t=n(i);return[e,...Object.values(t).filter((e=>""!==e))].filter((e=>Boolean(e))).join("\n")}return[i.originCardData.pureText,i.originCardData.title].filter((e=>Boolean(e))).join("\n")})(this.type)}};if(i.text=await i.getText(),e.setAttribute("data-type",i.type.id.toString()),De(i)){const t=i.username,o=(0,te.getVue2Data)(i.element),r=lodash.get(o,"card.origin_user.info.uname","");t===r&&e.setAttribute("data-self-repost","true"),i.repostUsername=r,i.repostText=n(o).originalText}return i};class Ne extends Te{constructor(){super(...arguments),Le(this,"managerType","v1")}async addCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card"))if(null!==e.querySelector(".skeleton")){const[t]=(0,R.childList)(e,(()=>{null===e.querySelector(".skeleton")&&(t.disconnect(),this.addCard(e))}))}else{if(null===e.parentNode)return;const t=await Re(e);if(!t.presented)return;if(this.cards.find((e=>e.id===t.id)))return;this.cards.push(t),this.cards.sort(((e,t)=>e.id===t.id?0:e.id>t.id?-1:1)),this.dispatchCardEvent(Ve.AddCard,t)}}async removeCard(e){if(e&&e instanceof HTMLElement&&e.classList.contains("card")){const t=e.getAttribute("data-did"),n=this.cards.findIndex((e=>e.id===t));if(-1===n)return;const o=this.cards[n];this.cards.splice(n,1),this.dispatchCardEvent(Ve.RemoveCard,o)}}updateCards(e){const t=".card[data-did]",n=e=>{if(e instanceof HTMLElement){if(e.matches(t))return e;const n=e.querySelector(t);if(n)return n}};return[...e.querySelectorAll(t)].forEach((e=>this.addCard(e))),(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))}))}))}}function qe(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Ze={DynamicTypeForward:Be.repost,DynamicTypeAv:Be.video,DynamicTypeDraw:Be.textWithImages,DynamicTypeWord:Be.text,DynamicTypePgc:Be.bangumi,DynamicTypeArticle:Be.column,DynamicTypeMusic:Be.audio,DynamicTypeLiveRcmd:Be.liveRecord},Ue=function(){for(var e=arguments.length,t=new Array(e),n=0;nBoolean(e))).join("\n").trim()},He=e=>Ze[(0,te.pascalCase)(e)]??Ze.DynamicTypeWord,We=(e,t)=>{if(Object.hasOwn(e,"paragraphs")){return e.paragraphs.find((e=>1===e.para_type)).text.nodes.map((e=>"TEXT_NODE_TYPE_WORD"===e.type?lodash.get(e,"word.words"):"TEXT_NODE_TYPE_RICH"===e.type?lodash.get(e,"rich.orig_text"):"")).join("")}const{desc:n,major:o}=e,i=o?.opus?lodash.get(o.opus,"summary.text"):n?.text??"",r=(()=>{switch(t){default:return"";case Be.bangumi:case Be.column:case Be.video:{const e=o.archive??o.pgc??o.article;if(e){const{title:t,desc:n}=e;return Ue(t,n)}if(o.opus){const{title:e,summary:t}=o.opus;return Ue(e,t.text)}return""}}})();return Ue(i,r)},Ge=Oe(".bili-dyn-list__item, .bili-dyn-item, .bili-opus-view");class Qe extends Te{constructor(){super(...arguments),qe(this,"managerType","v2")}async addCard(e){if(!Ge(e))return;const t=await(async e=>{const t=(0,te.getVue2Data)(e),n=e=>Array.isArray(e)?Object.fromEntries(e.map((e=>{const[t]=Object.keys(e).filter((e=>"module_type"!==e));return"module_content"===t?["module_dynamic",e[t]]:[t,e[t]]}))):e,{modules:o,id_str:i,type:r}=t.data,a=n(o),{name:c}=a.module_author,{like:s,forward:l,comment:d}=a.module_stat,m=He(r);e.dataset.type=m.id.toString();const f={id:i,username:c,likes:s.count,reposts:l.count,comments:d.count,text:"",type:m,element:e,get presented(){return document.body.contains(e)},getText:async()=>We(a.module_dynamic,m)};if(De(f)){const o=f.username,{module_author:{name:i},module_dynamic:r}=n(t.data.orig.modules),c=He(t.data.orig.type);f.repostUsername=i,f.repostText=We(r,c),i===o&&e.setAttribute("data-self-repost","true"),f.getText=async()=>Ue(We(a.module_dynamic,m),We(r,m))}return f.text=await f.getText(),f.element.setAttribute("data-did",f.id),await(0,Y.selectAll)((()=>e.querySelectorAll(".bili-dyn-item *")),{queryInterval:50}),f})(e);t.presented&&(this.cards.push(t),this.cards.sort((0,me.descendingStringSort)((e=>e.id))),this.dispatchCardEvent(Ve.AddCard,t))}async removeCard(e){if(!Ge(e))return;const t=(0,te.getVue2Data)(e);if(!t)return;const n=t.data?.id_str??"0",o=this.cards.findIndex((e=>e.id===n));if(-1===o)return;const[i]=this.cards.splice(o,1);this.dispatchCardEvent(Ve.RemoveCard,i)}updateCards(e){const t=".bili-dyn-list__item, :not(.bili-dyn-list__item) > .bili-dyn-item, .bili-opus-view";dqa(e,t).forEach((e=>this.addCard(e)));const n=e=>Ge(e)?e.matches(t)?e:e.querySelector(t):null;return(0,R.childList)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.addCard(n(e)))),e.removedNodes.forEach((e=>this.removeCard(n(e))))})),this.cleanUpCards()}))}}const Ye=()=>!!(parseInt((0,te.getCookieValue)("hit-dyn-v2"))>0)&&["t.bilibili.com","space.bilibili.com",/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/].some((e=>(0,te.matchUrlPattern)(e))),Xe=Ye()?new Qe:new Ne,Ke=async e=>{if(fe.feedsUrls.every((e=>!(0,te.matchUrlPattern)(e))))return null;if(!await Xe.startWatching())return console.error("feedsCardsManager.startWatching() failed"),null;const{added:t}=e;return t&&Xe.cards.forEach((e=>t(e))),Me.push({added:none,removed:none,...e}),Xe},Je=e=>{const t=lodash.groupBy(e,(e=>e.aid)),n=e=>({id:e.upID,name:e.upName,faceUrl:e.upFaceUrl});return Object.values(t).map((e=>{if(1===e.length)return e[0];const[t,...o]=e;return t.cooperation=[n(t),...o.map(n)],console.log([...t.cooperation]),t})).sort((0,me.descendingStringSort)((e=>e.id)))},_e=e=>1===lodash.get(e,"extra.is_reserve_recall",0),$e="feeds.contentFilters";(0,Ee.registerData)($e,[]);const et=e=>{const[t]=(0,Ee.getData)($e);return t.reduce(((e,t)=>t.filter(e)),e)},tt=e=>function(){return e(...arguments).then((e=>et(e)))},nt=(e,t)=>{const n=new URLSearchParams;return"string"==typeof e?n.set("type",e):e.apiType?n.set("type",e.apiType):(console.warn(`unknown apiType for ${e.name}`),n.set("type","all")),t&&n.set("offset",t.toString()),`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?${n.toString()}`},ot=async(e,t)=>(0,B.getJsonWithCredentials)(nt(e,t)),it=tt((async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"video",t=arguments.length>1?arguments[1]:void 0;if(!(0,te.getUID)())return[];const n=await(0,B.getJsonWithCredentials)(nt("video"===e?Be.video:Be.bangumi,t));if(0!==n.code)throw new Error(n.message);const o=n.data.items;return"video"===e?Je(o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.archive"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_dynamic.desc.text",""),i=lodash.get(e,"modules.module_stat"),r=lodash.get(e,"modules.module_dynamic.desc.rich_text_nodes",[]).filter((e=>"RICH_TEXT_NODE_TYPE_TOPIC"===e.type)).map((e=>({id:e.text,name:e.text,url:e.jump_url})));return{id:e.id_str,aid:parseInt(t.aid),bvid:t.bvid,title:t.title,upFaceUrl:n.face,upName:n.name,upID:n.mid,coverUrl:t.cover,description:t.desc,timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),topics:r,dynamic:o,like:(0,oe.formatCount)(i.like.count),duration:(0,oe.parseDuration)(t.duration_text),durationText:(0,oe.formatDuration)((0,oe.parseDuration)(t.duration_text)),playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:ke.includes(t.aid)}}))):"bangumi"===e?o.map((e=>{const t=lodash.get(e,"modules.module_dynamic.major.pgc"),n=lodash.get(e,"modules.module_author"),o=lodash.get(e,"modules.module_stat");return{id:e.id_str,epID:t.epid,title:t.title.replace(new RegExp(`^${n.name}:`),""),upName:n.name,upFaceUrl:n.face,coverUrl:t.cover,description:"",timestamp:1e3*n.pub_ts,time:new Date(1e3*n.pub_ts),like:(0,oe.formatCount)(o.like.count),durationText:"",playCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.play)),danmakuCount:(0,oe.formatCount)((0,oe.parseCount)(t.stat.danmaku)),watchlater:!1}})):[]})),rt=(e,t)=>{const n=dq(e.element,".more-panel, .bili-dyn-more__menu, .opus-more__menu"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return void console.warn("more panel not found",e.element);const a=!n.classList.contains("more-panel"),c=n.classList.contains("opus-more__menu"),s=document.createElement(a?"div":"p");if(c){s.classList.add("opus-more__menu__item",o);const e=n.children[0];e&&s.setAttribute("style",e.getAttribute("style")),s.dataset.type="more",s.dataset.stype=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else if(a){s.classList.add("bili-dyn-more__menu__item",o);const e=n.children[0];e?s.setAttribute("style",e.getAttribute("style")):(s.style.height="25px",s.style.padding="2px 0",s.style.textAlign="center"),s.dataset.module="more",s.dataset.type=lodash.snakeCase(`ThreePoint${(0,te.pascalCase)(o)}`).toUpperCase(),s.dataset.params="{}"}else s.classList.add("child-button","c-pointer",o);s.textContent=i;[...new Set([...n.children].map((e=>e.getAttributeNames().filter((e=>e.startsWith("data-v-"))))).flat())].forEach((e=>s.setAttribute(e,""))),s.addEventListener("click",(t=>{r(t),e.element.click()})),n.appendChild(s)};var at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"bangumi-card",class:{new:e.isNew},attrs:{target:"_blank",href:e.data.url}},[t("div",{staticClass:"ep-cover-container"},[t("DpiImage",{staticClass:"ep-cover",attrs:{size:{width:100},src:e.data.epCoverUrl}})],1),e._v(" "),t("h1",{staticClass:"ep-title",attrs:{title:e.data.epTitle}},[e._v(e._s(e.data.epTitle))]),e._v(" "),t("div",{staticClass:"up",attrs:{title:e.data.title}},[t("DpiImage",{staticClass:"cover",attrs:{size:24,src:e.data.coverUrl}}),e._v(" "),t("div",{staticClass:"title"},[e._v(e._s(e.data.title))])],1)])};at._withStripped=!0;const ct=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var st=n(8332),lt=n.n(st),dt=n(8106),mt=n.n(dt),ft={insert:"head",singleton:!1};lt()(mt(),ft);mt().locals;var ut=n(4893);const pt=(0,ut.Z)(ct,at,[],!1,null,"b2f4653c",null).exports;var bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"be-up-info",class:{fallback:!e.upFaceUrl},attrs:{href:e.actualHref,title:e.upName,target:"_blank"}},[e.upFaceUrl?t("DpiImage",{staticClass:"be-up-info-cover",attrs:{size:24,src:e.upFaceUrl}}):t("div",{staticClass:"be-up-info-cover-fallback"},[e._t("fallback-icon",(function(){return[t("VIcon",{attrs:{icon:"up-outline",size:18}})]}))],2),e._v(" "),t("div",{staticClass:"be-up-info-name"},[e._v("\n "+e._s(e.upName)+"\n ")])],1)};bt._withStripped=!0;const ht=Vue.extend({components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{href:{type:String,default:""},upId:{type:[String,Number],default:""},upFaceUrl:{type:String,default:""},upName:{type:String,required:!0}},computed:{actualHref(){return this.href?this.href:`https://space.bilibili.com/${this.upId}`}}});var gt=n(5019),Ft=n.n(gt),vt={insert:"head",singleton:!1};lt()(Ft(),vt);Ft().locals;const wt=(0,ut.Z)(ht,bt,[],!1,null,null,null).exports;var yt=function(){var e=this,t=e._self._c;return t("a",{staticClass:"video-card",class:{vertical:"vertical"===e.orientation,"no-stats":!e.showStats},attrs:{target:"_blank",href:e.epID?"https://www.bilibili.com/bangumi/play/ep"+e.epID:"https://www.bilibili.com/video/"+e.bvid}},[t("div",{staticClass:"cover-container"},[t("DpiImage",{staticClass:"cover",attrs:{src:e.coverUrl,size:{height:120,width:196}}}),e._v(" "),e.isNew?t("div",{staticClass:"new"},[e._v("NEW")]):e._e(),e._v(" "),e.pubTime&&e.pubTimeText?[t("div",{staticClass:"publish-time-summary"},[e._v("\n "+e._s(e.pubTimeText)+"\n ")]),e._v(" "),t("div",{staticClass:"publish-time-detail"},[e._v("\n "+e._s(e.pubTime)+"\n ")])]:e._e(),e._v(" "),e.durationText?t("div",{staticClass:"duration"},[e._v(e._s(e.durationText))]):e._e(),e._v(" "),e.durationText&&null!==e.watchlater&&void 0!==e.watchlater?t("div",{staticClass:"watchlater",on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.toggleWatchlater(e.aid)}}},[t("VIcon",{attrs:{size:15,icon:e.watchlater?"mdi-check-circle":"mdi-clock-outline"}}),e._v("\n "+e._s(e.watchlater?"已添加":"稍后再看")+"\n ")],1):e._e()],2),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.title}},[e._v(e._s(e.title))]),e._v(" "),e.topics&&e.topics.length?t("div",{staticClass:"topics"},e._l(e.topics.slice(0,3),(function(n){return t("a",{key:n.id,staticClass:"topic",attrs:{title:n.name,target:"_blank",href:n.url||"https://t.bilibili.com/topic/name/"+n.name+"/feed"}},[t("VIcon",{attrs:{icon:"mdi-tag-outline",size:14}}),e._v(" "),t("div",{staticClass:"topic-name"},[e._v("\n "+e._s(n.name)+"\n ")])],1)})),0):t("p",{staticClass:"description",attrs:{title:e.description}},[e._v(e._s(e.description))]),e._v(" "),0===e.cooperation.length?t("a",{staticClass:"up",class:{"no-face":!e.upFaceUrl},attrs:{target:"_blank",href:e.upID?"https://space.bilibili.com/"+e.upID:null}},[e.upFaceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.upFaceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}}),e._v(" "),t("div",{staticClass:"name",attrs:{title:e.upName}},[e._v(e._s(e.upName))])],1):e._e(),e._v(" "),0!==e.cooperation.length?t("div",{staticClass:"cooperation"},[t("div",{staticClass:"cooperation-ups"},e._l(e.reversedCooperation,(function(e){return t("a",{key:e.id,staticClass:"cooperation-up",class:{"no-face":!e.faceUrl},attrs:{target:"_blank",title:e.name,href:e.id?"https://space.bilibili.com/"+e.id:null}},[e.faceUrl?t("DpiImage",{staticClass:"face",attrs:{src:e.faceUrl,size:24}}):t("VIcon",{attrs:{icon:"up"}})],1)})),0),e._v(" "),t("div",{staticClass:"cooperation-note"},[e._v("联合投稿")])]):e._e(),e._v(" "),e.showStats?t("div",{staticClass:"stats"},[e.vertical?[e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e(),e._v(" "),e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e()]:[e.like?[t("VIcon",{attrs:{icon:"like-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.like)+"\n ")]:e._e(),e._v(" "),e.coins?[t("VIcon",{attrs:{icon:"coin-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.coins)+"\n ")]:e._e(),e._v(" "),e.favorites?[t("VIcon",{attrs:{icon:"favorites-outline",size:e.statsIconSize}}),e._v("\n "+e._s(e.favorites)+"\n ")]:e._e(),e._v(" "),e.playCount?[t("VIcon",{attrs:{icon:"play",size:e.statsIconSize}}),e._v("\n "+e._s(e.playCount)+"\n ")]:e._e(),e._v(" "),e.danmakuCount?[t("VIcon",{attrs:{icon:"danmaku",size:e.statsIconSize}}),e._v("\n "+e._s(e.danmakuCount)+"\n ")]:e._e()]],2):e._e()])};yt._withStripped=!0;const xt={components:{DpiImage:be.DpiImage,VIcon:be.VIcon},props:{data:{type:Object,required:!0},orientation:{type:String,default:"horizontal"},showStats:{type:Boolean,default:!0},isNew:{type:Boolean,default:!1}},data(){return{watchlaterList:ke,upFaceUrl:"",danmakuCount:"",like:"",coins:"",favorites:"",dynamic:"",topics:[],upID:0,epID:0,cooperation:[],pubTime:0,pubTimeText:"",...lodash.omit(this.data,"watchlater"),watchlaterInit:this.data.watchlater,statsIconSize:14}},computed:{vertical(){return"vertical"===this.orientation},watchlater(){return(0,te.getUID)()&&null!==this.watchlaterInit?this.watchlaterList.includes(this.aid):null},reversedCooperation(){return[...this.cooperation].reverse().slice(0,3)}},methods:{toggleWatchlater:Ae}};var kt=n(117),Ct=n.n(kt),At={insert:"head",singleton:!1};lt()(Ct(),At);Ct().locals;const Et=(0,ut.Z)(xt,yt,[],!1,null,"57e48aec",null).exports;var Bt=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{staticClass:"column-card",attrs:{target:"_blank",href:`https://www.bilibili.com/read/cv${e.data.cvID}`}},[t("div",{staticClass:"covers"},e._l(e.data.covers,(function(e){return t("DpiImage",{key:e,staticClass:"cover",attrs:{size:{height:120},src:e}})})),1),e._v(" "),t("a",{staticClass:"up",attrs:{target:"_blank",href:`https://space.bilibili.com/${e.data.upID}`}},[t("DpiImage",{staticClass:"face",attrs:{size:24,src:e.data.upFaceUrl}}),e._v(" "),t("div",{staticClass:"name"},[e._v(e._s(e.data.upName))])],1),e._v(" "),t("h1",{staticClass:"title",attrs:{title:e.data.title}},[e._v(e._s(e.data.title))]),e._v(" "),t("div",{staticClass:"description",attrs:{title:e.data.description}},[e._v(e._s(e.data.description))])])};Bt._withStripped=!0;const Dt=Vue.extend({components:{DpiImage:be.DpiImage},props:{data:{type:Object,required:!0},isNew:{type:Boolean,default:!1}}});var It=n(6007),zt=n.n(It),St={insert:"head",singleton:!1};lt()(zt(),St);zt().locals;const Pt=(0,ut.Z)(Dt,Bt,[],!1,null,"335afa63",null).exports;let Mt=!1,Ot=0;const Vt="disable-profile-popup",Tt=async()=>{if("https://t.bilibili.com/"!==document.URL.replace(window.location.search,""))return;const e=await(0,Y.select)(".live-up-list, .bili-dyn-live-users__body");null!==e&&(Ot++,Mt||(e.addEventListener("mouseenter",(e=>{Ot>0&&e.stopImmediatePropagation()}),{capture:!0}),Mt=!0))},Lt=()=>{Ot--},jt=3e5,Rt=()=>(0,te.getCookieValue)(`bp_t_offset_${(0,te.getUID)()}`),Nt=(e,t)=>e===t?0:e.length>t.length?1:t.length>e.length?-1:e>t==!0?1:-1,qt=e=>{if(null==e)return;const t=Rt();Nt(e,t)<0||(document.cookie=`bp_t_offset_${(0,te.getUID)()}=${e};path=/;domain=.bilibili.com;max-age=2592000`)},Zt=e=>Nt(e,Rt())>0,Ut=e=>{const[t]=[...e.map((e=>e.id))].sort(Nt).reverse();qt(t)},Ht=async e=>{const t=`https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all/update?type=${e}&update_baseline=${Rt()}`,n=await(0,B.getJsonWithCredentials)(t);return 0!==n.code?0:lodash.get(n,"data.update_num",0)},Wt=async()=>{const e=await(0,B.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/dynamic/entrance");return 0!==e.code?0:lodash.get(e,"data.update_info.item.count",0)},Gt=e=>{e.startsWith("#")&&(e=e.substring(1));return{red:e.substring(0,2),green:e.substring(2,4),blue:e.substring(4,6)}},Qt=e=>{const{red:t,green:n,blue:o}=Gt(e);return`\\c&H${`${o}${n}${t}`.toUpperCase()}&`},Yt=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const{red:n,green:o,blue:i}=Gt(e),r=Math.round(255*(1-t)).toString(16).padStart(2,"0");return`&H${r}${i}${o}${n}`.toUpperCase()},Xt=e=>{let t=0,n=0;for(;e>=60;)e-=60,n++;for(;n>=60;)n-=60,t++;return`${t}:${String(n).padStart(2,"0")}:${(e=>{const[t,n="00"]=String(e).split(".");return`${t.padStart(2,"0")}.${n.substring(0,2).padEnd(2,"0")}`})(e)}`},Kt=(e,t)=>[Xt(e),Xt(e+t)],Jt=(e,t)=>[Xt(e),Xt(t)],_t=e=>{const t={"{":"{","}":"}","&":"&","<":"<",">":">",""":'"',"'":"'","\n":"\\N"};for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},$t={"&":"&","<":"<",">":">",""":'"',"'":"'"},en=Object.fromEntries(Object.entries($t).map((e=>e.reverse()))),tn=(e,t)=>{if(!e)return"";for(const[n,o]of Object.entries(t))e=e.replace(new RegExp(n,"g"),o);return e},nn=e=>tn(e,en),on=e=>tn(e,$t);var rn=n(8997);const an=e=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?async()=>{const t=rn.playerAgent,{query:{control:{settings:n,buttons:o}}}=t;ce(o.settings.selector,n.wrap.selector),t.toggleLight(e)}:te.none,cn=an(!0),sn=an(!1),ln=an(),dn=async e=>{await(0,te.playerReady)();const t=dq(".video-toolbar .ops .collect, .video-toolbar-v1 .toolbar-left .collect, .video-toolbar-left-item.video-fav");if(!t)return null;const{hasVideo:o}=await Promise.resolve().then(n.bind(n,2533));await o();const i=await e();return t.classList.contains("video-fav")?t.parentElement.insertAdjacentElement("afterend",i):t.insertAdjacentElement("afterend",i),i},mn=async e=>{await(0,Y.hasVideo)()&&(0,R.videoChange)((async()=>{const t=await rn.playerAgent.query.video.danmaku();t&&((e,t)=>{const n=[];(0,R.childListSubtree)(e,(e=>{e.forEach((e=>{e.addedNodes.forEach((e=>{if(e.nodeType===Node.TEXT_NODE){const o=e.parentElement,i=n.find((e=>e.element===o));if(!i)return;return i.text=e.textContent||"",i.reuse=!0,void(t.added&&t.added(i))}if(!(e instanceof HTMLElement))return;const o={element:i=e,reuse:!1,text:i.textContent||""};var i;n.push(o),t.added&&t.added(o)})),e.removedNodes.forEach((e=>{if(!(e instanceof HTMLElement))return;const o=n.findIndex((t=>t.element===e));if(-1!==o){const[e]=n.splice(o,1);t.removed&&t.removed(e)}}))}))}))})(t,e)}))};function fn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class un{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];fn(this,"aid",void 0),fn(this,"bvid",void 0),fn(this,"cid",void 0),fn(this,"createTime",void 0),fn(this,"pageCount",void 0),fn(this,"coverUrl",void 0),fn(this,"tagId",void 0),fn(this,"tagName",void 0),fn(this,"title",void 0),fn(this,"description",void 0),fn(this,"up",void 0),fn(this,"pages",void 0),t?this.bvid=e:this.aid=e}async fetchInfo(){let e;this.aid?e=`https://api.bilibili.com/x/web-interface/view?aid=${this.aid}`:this.bvid&&(e=`https://api.bilibili.com/x/web-interface/view?bvid=${this.bvid}`),this.cid&&(e=`${e}&cid=${this.cid}`);const t=await(0,B.getJsonWithCredentials)(e);if(0!==t.code)throw new Error(t.message);const{data:n}=t;return this.aid=n.aid,this.bvid=n.bvid,this.cid=n.cid,this.createTime=new Date(1e3*n.ctime),this.pageCount=n.videos,this.coverUrl=n.pic.replace("http:","https:"),this.tagId=n.tid,this.tagName=n.tname,this.title=n.title,this.description=n.desc,this.up={uid:n.owner.mid,name:n.owner.name,faceUrl:n.owner.face.replace("http:","https:")},this.pages=n.pages.map((e=>({cid:e.cid,title:e.part,pageNumber:e.page}))),this}get subtitles(){return console.warn("VideoInfo.subtitles is deprecated"),[]}}class pn{constructor(e){fn(this,"ep",void 0),fn(this,"videos",void 0),fn(this,"title",void 0),fn(this,"cover",void 0),fn(this,"squareCover",void 0),fn(this,"aid",void 0),fn(this,"cid",void 0),this.ep=e,this.videos=[]}async fetchInfo(){const e=await(0,B.getText)(`https://www.bilibili.com/bangumi/play/ep${this.ep}/`),t=JSON.parse(e.match(/window\.__INITIAL_STATE__=(.*);\(function\(\){/)[1]);return this.title=t.mediaInfo.title,this.cover=t.mediaInfo.cover,this.squareCover=t.mediaInfo.square_cover,this.aid=t.epInfo.aid,this.cid=t.epInfo.cid,this.videos=t.epList.map((async e=>({title:e.index_title,aid:e.aid,cid:e.cid,info:await new un(e.aid).fetchInfo()}))),this}}const bn=[{name:"720P",displayName:"高清 720P",value:64},{name:"1080P",displayName:"高清 1080P",value:80}],hn=[{name:"8K",displayName:"超高清 8K",value:127},{name:"DolbyVision",displayName:"杜比视界",value:126},{name:"HDR",displayName:"真彩 HDR",value:125},{name:"4K",displayName:"超清 4K",value:120},{name:"1080P60",displayName:"高清 1080P60",value:116},{name:"1080P+",displayName:"高清 1080P+",value:112},{name:"720P60",displayName:"高清 720P60",value:74}],gn=[...hn,...bn,{name:"480P",displayName:"清晰 480P",value:32},{name:"360P",displayName:"流畅 360P",value:16}].sort((0,me.descendingSort)((e=>e.value))),Fn=async e=>{const{open:t,close:n}=e;if(!(0,Y.hasVideo)())return;const o=await(0,Y.select)(".bilibili-player");if(!o)return;const[i]=(0,R.childList)(o,(()=>{const e=dq(".bilibili-player-context-menu-origin");if(e){i.disconnect();const o=dq(e,"ul"),r={containerElement:e,listElement:o,get itemElements(){return dqa(e,".context-menu-function")},get isOpen(){return e.classList.contains("active")}};(0,R.childList)(o,(()=>{r.isOpen?t?.(r):n?.(r)}))}}))},vn=async(e,t)=>Fn({open:t=>{if(t.listElement.contains(e))return;const n=document.createElement("li");n.classList.add("context-line","context-menu-function"),n.setAttribute("data-append","1");const o=document.createElement("a");o.classList.add("context-menu-a","js-action"),o.href="javascript:void(0);",o.appendChild(e),n.addEventListener("mouseover",(()=>n.classList.add("hover"))),n.addEventListener("mouseout",(()=>n.classList.remove("hover"))),n.appendChild(o),t.listElement.appendChild(n)},close:e=>t?.(e)});let wn=null;const yn=[],xn=lodash.once((()=>fe.playerUrls.some((e=>(0,te.matchUrlPattern)(e)))?new Promise((e=>{(0,R.videoChange)((async()=>{const{playerAgent:t}=await Promise.resolve().then(n.bind(n,8997)),o=await t.query.control.buttons.time(),i=await Promise.resolve().then(n.bind(n,2208)).then((e=>e.default));if(null===o||null!==o.parentElement?.querySelector(".be-video-control-bar-extend"))return;const r=new i({propsData:{items:yn}}).$mount();o.insertAdjacentElement("afterend",r.$el),e(r)}))})):Promise.resolve(null))),kn=async e=>{wn||(wn=xn());await wn&&yn.push(e)},Cn=async e=>{const t=new un(e);try{await t.fetchInfo()}catch(e){throw(0,de.logError)(e),e}return t.coverUrl.replace("http:","https:")},An=async e=>{const t=await Cn(e),n=await fetch(t);return await n.blob()},En=async e=>{const t=await(0,Y.select)(".live-player-mounter"),n=(0,de.useScopedConsole)("withControlBar");if(!t)return void n.warn("livePlayer not found");(0,te.raiseEvent)(t,"mousemove");const o=dq(t,".web-player-controller-wrap .control-area");o?(await e(o),(0,te.raiseEvent)(t,"mouseleave")):n.warn("controlBar not found")},Bn=async e=>{if(!fe.liveUrls.some((e=>(0,te.matchUrlPattern)(e))))return;const t=await(0,Y.select)(".bilibili-live-player-video-controller, .web-player-controller-wrap:not(.web-player-controller-bg)");if(!t)return;const{init:n,callback:o}=e;n?.(t),(0,R.childList)(t,(async()=>{const e=dq(t,".control-area");e&&o?.(e)}))};function Dn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const In=0,zn=2,Sn={heartBeat:2,heartBeatResponse:3,message:5,enterRoom:7,enterRoomResponse:8};class Pn{constructor(){Dn(this,"textEncoder",new TextEncoder),Dn(this,"textDecoder",new TextDecoder)}static readInt(e,t,n){let o=0;for(let i=n-1;i>=0;i--)o+=256**(n-i-1)*e[t+i];return o}static writeInt(e,t,n,o){let i=0;for(;i{const o={packetLength:Pn.readInt(e,0,4),headerLength:Pn.readInt(e,4,2),protocolVersion:Pn.readInt(e,6,2),operation:Pn.readInt(e,8,4),sequenceID:Pn.readInt(e,12,4)},i=[o];if(o.packetLengthe.messages[0])))}else o.protocolVersion===In&&(o.messages=[JSON.parse(this.textDecoder.decode(i))])}else o.operation===Sn.heartBeatResponse&&(o.heartBeatResponse={count:Pn.readInt(e,16,4)});return i};return new Promise(((n,o)=>{const i=new FileReader;i.onload=async e=>{if(!e.target)return void o(e);const i=new Uint8Array(e.target.result);n(await t(i))},i.readAsArrayBuffer(e)}))}}class Mn{constructor(){Dn(this,"startTime",0)}getLiveTime(){return new Promise((e=>{if(this.startTime)return void e(this.startTime);const t=(0,te.dq)(".bilibili-live-player-video-controller-duration-btn span"),[n]=(0,R.childList)(t,(t=>{if(t.length>0&&t.some((e=>e.addedNodes.length>0&&[...e.addedNodes].every((e=>e.nodeType===Node.TEXT_NODE))))){n.disconnect();const o=t[0].addedNodes[0].textContent,[i,r,a=0]=o.split(":").reverse().map(lodash.unary(parseInt)),c=Number(new Date);this.startTime=c-1e3*a*3600-60*r*1e3-1e3*i,e(this.startTime)}}))}))}}class On extends EventTarget{constructor(e){super(),this.roomID=e,Dn(this,"heartBeatTimer",void 0),Dn(this,"webSocket",void 0),Dn(this,"retryInterval",200),Dn(this,"autoRetry",!0),Dn(this,"servers",["broadcastlv.chat.bilibili.com"]),Dn(this,"selectedServer",""),Dn(this,"liveTime",new Mn),Dn(this,"bufferHelper",new Pn),Dn(this,"stopRequested",!1),window.addEventListener("unload",(()=>this.stop()))}heartBeat(){this.webSocket.readyState===WebSocket.OPEN?this.webSocket.send(this.bufferHelper.encode("","heartBeat")):(this.stop(),this.restart())}restart(){if(this.dispatchEvent(new CustomEvent("restart")),!this.stopRequested&&this.autoRetry){console.log(`Live Socket: unexpected disconnect, retry in ${this.retryInterval}ms`);const e=this.servers.indexOf(this.selectedServer);ethis.start()),this.retryInterval)}}async start(){const e=await(0,B.getJson)(`https://api.live.bilibili.com/room/v1/Danmu/getConf?room_id=${this.roomID}&platform=pc&player=web`),t=lodash.get(e,"data.host_server_list",[]);this.servers=[...new Set([...this.servers,...t.map((e=>e.host))])],""===this.selectedServer&&([this.selectedServer]=this.servers,console.log("Initial server:",this.selectedServer)),this.webSocket&&[WebSocket.CONNECTING,WebSocket.OPEN].includes(this.webSocket.readyState)&&this.stop(),this.webSocket=new WebSocket(`wss://${this.selectedServer}/sub`),this.stopRequested=!1,this.dispatchEvent(new CustomEvent("start",{detail:this.webSocket})),this.webSocket.addEventListener("open",(()=>{const t={roomid:this.roomID,uid:parseInt((0,te.getUID)()),protover:2,platform:"web",clientVer:"1.10.1",type:"2",key:lodash.get(e,"data.token")};this.webSocket.send(this.bufferHelper.encode(JSON.stringify(t),"enterRoom")),this.dispatchEvent(new CustomEvent("open",{detail:t}))})),this.webSocket.addEventListener("message",(async e=>{const[t]=await this.bufferHelper.decode(e.data);switch(this.dispatchEvent(new CustomEvent("message",{detail:t})),t.operation){case Sn.enterRoomResponse:this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.heartBeatTimer=window.setInterval((()=>{this.heartBeat()}),3e4);break;case Sn.heartBeatResponse:if(!t.heartBeatResponse)break;this.dispatchEvent(new CustomEvent("heartBeatResponse",{detail:t.heartBeatResponse.count}));break;case Sn.message:{if(!t.messages)break;const e=await this.liveTime.getLiveTime();t.messages.forEach((t=>{if("DANMU_MSG"===t.cmd){const{info:n}=t,o={content:n[1],type:n[0][1],fontSize:n[0][2],color:n[0][3],sendTime:n[0][4],userHash:n[0][7],userID:n[2][0],userName:n[2][1],startTime:e,get time(){return this.sendTime-this.startTime}};this.dispatchEvent(new CustomEvent("danmaku",{detail:o}))}}));break}}})),this.webSocket.addEventListener("close",(e=>{this.stopRequested||(console.error("Live Socket: close",e),this.restart())})),this.webSocket.addEventListener("error",(e=>{console.error("Live Socket: error",e),this.restart()}))}stop(){this.stopRequested=!0,this.heartBeatTimer&&clearInterval(this.heartBeatTimer),this.webSocket&&this.webSocket.readyState===WebSocket.OPEN&&this.webSocket.close()}}function Vn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Tn extends EventTarget{constructor(e){super(),Vn(this,"element",void 0),Vn(this,"id",void 0),Vn(this,"userId",void 0),Vn(this,"userName",void 0),Vn(this,"content",void 0),Vn(this,"timeText",void 0),Vn(this,"time",void 0),Vn(this,"likes",void 0),Vn(this,"vueProps",void 0),this.element=e.element,this.id=e.id,this.userId=e.userId,this.userName=e.userName,this.content=e.content,this.timeText=e.timeText,this.time=e.time,this.likes=e.likes,this.vueProps=e.vueProps}}function Ln(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class jn extends Tn{constructor(e){super(e),Ln(this,"pictures",void 0),Ln(this,"replies",void 0),this.pictures=e.pictures??[],this.replies=e.replies}addEventListener(e,t,n){super.addEventListener(e,t,n)}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}dispatchRepliesUpdate(e){return super.dispatchEvent((e=>new CustomEvent("repliesUpdate",{detail:e}))(e))}}function Rn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Nn{constructor(e){Rn(this,"element",void 0),Rn(this,"items",[]),Rn(this,"observer",void 0),Rn(this,"itemCallbacks",[]),this.element=e}isCommentItem(e){return e instanceof HTMLElement&&e.matches(Nn.replyItemSelector)}beforeParse(e){return lodash.noop(e)}observeItems(){if(this.observer)return;performance.mark("observeItems start");const e=dqa(this.element,Nn.replyItemSelector);e.length>0&&(this.beforeParse(e),this.items=e.map((e=>this.parseCommentItem(e)))),this.items.forEach((e=>{this.itemCallbacks.forEach((t=>t.added?.(e)))})),[this.observer]=(0,R.childListSubtree)(this.element,(e=>{const t=(0,te.getRandomId)();performance.mark(`observeItems subtree start ${t}`);const n=[],o=[];e.forEach((e=>{e.addedNodes.forEach((e=>{this.isCommentItem(e)&&n.push(e)})),e.removedNodes.forEach((e=>{this.isCommentItem(e)&&o.push(e)}))})),n.length>0&&this.beforeParse(n),n.forEach((e=>{const t=this.parseCommentItem(e);this.items.push(t),this.itemCallbacks.forEach((e=>e.added?.(t)))})),o.forEach((e=>{const t=this.getCommentId(e),n=this.items.findIndex((e=>e.id===t));if(-1!==n){const[e]=this.items.splice(n,1);this.itemCallbacks.forEach((t=>t.removed?.(e)))}})),performance.mark(`observeItems subtree end ${t}`),performance.measure(`observeItems subtree ${t}`,`observeItems subtree start ${t}`,`observeItems subtree end ${t}`)})),performance.mark("observeItems end"),performance.measure("observeItems","observeItems start","observeItems end")}destroy(){this.observer?.disconnect(),this.items.forEach((e=>{this.itemCallbacks.forEach((t=>t.removed?.(e)))}))}static resolveCallbackPair(e){return"function"==typeof e?{added:e}:e}forEachCommentItem(e){const t=Nn.resolveCallbackPair(e);this.items.forEach((e=>t.added?.(e))),this.itemCallbacks.push(t)}}Rn(Nn,"replyItemClasses",["list-item.reply-wrap","reply-item"]),Rn(Nn,"replyItemSelector",Nn.replyItemClasses.map((e=>`.${e}`)).join(","));class qn extends Nn{addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".opera-list ul");if(!n)throw new Error("Invalid operation list");const{className:o,text:i,action:r}=t;if(dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o),a.textContent=i,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=e.querySelector(".con .user .name");if(!t)throw new Error("Invalid comment item");const n=e=>{const t=e.querySelector(".reply-face"),n=e.querySelector(".reply-con .user .name");return new Tn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:n.textContent,content:e.querySelector(".text-con").textContent,timeText:e.querySelector(".info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".info .like span").textContent),vueProps:void 0})},o=new jn({id:e.getAttribute("data-id"),element:e,userId:t.getAttribute("data-usercard-mid"),userName:t.textContent,content:e.querySelector(".con .text").textContent,timeText:e.querySelector(".con .info .time, .info .time-location").textContent,likes:parseInt(e.querySelector(".con .like span").textContent),replies:[],vueProps:void 0});if(dq(e,".reply-box .view-more")){const t=dq(e,".reply-box");(0,R.childList)(t,(t=>{o.replies=dqa(e,".reply-box .reply-item").map(n),0!==t.length&&o.dispatchRepliesUpdate(o.replies)}))}else o.replies=dqa(e,".reply-box .reply-item").map(n);return o}getCommentId(e){const t=e.getAttribute("data-id");if(!t)throw new Error("Invalid comment item");return t}}function Zn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)} /* eslint-disable no-underscore-dangle */(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Un=Symbol.for("VNodeTargets");class Hn{constructor(e){this.rootElement=e,Zn(this,"isEnd",(()=>!0))}traverseToRoot(e){if(performance.mark("traverseToRoot"),e._vnode)return e;let t=e;for(;null!==t.parentElement&&t!==this.rootElement;){if(t.parentElement[Un]){if(t.parentElement[Un].includes(t)||t.parentElement[Un].push(t),t.parentElement._vnode)return t.parentElement;break}if(t.parentElement[Un]=[t],t.parentElement._vnode)return t.parentElement;t=t.parentElement}return this.rootElement}unwrapSubtree(e){return e.component?.subTree?(performance.mark("unwrapSubtree"),this.unwrapSubtree(e.component?.subTree)):e}exposeVNode(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.rootElement._vnode;if(performance.mark("exposeVNode"),e.el&&!e.el._vnode&&(e.el._vnode=e),this.isEnd(e))return;const t=this.unwrapSubtree(e);if(!Array.isArray(t.children))return;t.children.filter((e=>e.type===Symbol.for("v-fgt")?(e.el[Un]=t.el?.[Un],!0):e.el?t.el?t.el?.[Un]?.includes(e.el):t[Un]?.includes(e.el):(e[Un]=t.el?.[Un]?.flatMap((e=>e?.[Un])),!0))).forEach((e=>{this.exposeVNode(e)}))}}function Wn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)} -/* eslint-disable no-underscore-dangle */(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Gn extends Nn{constructor(e){super(e),Wn(this,"vnodeManager",void 0),this.vnodeManager=new Hn(this.getVNodeRoot(e)),this.vnodeManager.isEnd=e=>e.props?.reply?0===e.props?.reply.replies.length:Boolean(e.props?.subReply)}beforeParse(e){const t=new Set;e.forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e)),dqa(e,".sub-reply-item").forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e))}))})),t.forEach((e=>this.vnodeManager.exposeVNode(e._vnode)))}getReplyFromVueData(e){const t=e._vnode?.props;return t?.reply??t?.subReply}getReplyItemElement(e,t){const[n]=dqa(e,".sub-reply-item").filter((e=>this.getReplyFromVueData(e).rpid_str===t));return n}getVNodeRoot(e){return e.__vue_app__?e:e.parentElement.__vue_app__?e.parentElement:null}addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".operation-list"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o,"operation-option"),a.innerHTML=`${i}`,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=this.getReplyFromVueData(e);if(!t)throw new Error("Invalid comment item");const n=()=>t.replies?t.replies.map((t=>new Tn({id:t.rpid_str,element:this.getReplyItemElement(e,t.rpid_str),userId:t.member.mid,userName:t.member.uname,content:t.content.message,time:1e3*t.ctime,likes:t.like}))):[],o=new jn({id:t.rpid_str,element:e,userId:t.member.mid,userName:t.member.uname,content:t.content.message,time:1e3*t.ctime,likes:t.like,pictures:t.content?.pictures?.map((e=>e.img_src)),replies:n()});if(o.replies.length{performance.mark(`parseReplies start ${o.id}`);const t=[];e.forEach((e=>{e.addedNodes.forEach((e=>{e instanceof HTMLElement&&e.matches(".sub-reply-item")&&t.push(e)}))})),0!==t.length&&(this.beforeParse(t),o.replies=n(),0!==e.length&&o.dispatchRepliesUpdate(o.replies),performance.mark(`parseReplies end ${o.id}`),performance.measure(`parseReplies ${o.id}`,`parseReplies start ${o.id}`,`parseReplies end ${o.id}`))}))}return o}getCommentId(e){const t=this.getReplyFromVueData(e);if(!t?.rpid_str)throw new Error("Invalid comment item");return t.rpid_str}static isV2Area(e){return e.__vue_app__||e.parentElement?.__vue_app__}}const Qn=e=>Gn.isV2Area(e)?new Gn(e):new qn(e);function Yn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Xn{constructor(){Yn(this,"commentAreas",[]),Yn(this,"commentAreaCallbacks",[])}init(){(0,R.allMutations)((e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.observeAreas(e)))}))})),dqa(Xn.commentAreaClasses.map((e=>`.${e}`)).join(",")).forEach((e=>this.observeAreas(e)))}observeAreas(e){if(e instanceof HTMLElement&&Xn.commentAreaClasses.some((t=>e.classList.contains(t)))){const t=Qn(e);this.commentAreas.push(t),t.observeItems(),this.commentAreaCallbacks.forEach((e=>e(t)))}}forEachCommentArea(e){this.commentAreas.forEach((t=>e(t))),this.commentAreaCallbacks.push(e)}forEachCommentItem(e){this.forEachCommentArea((t=>t.forEachCommentItem(e)))}}Yn(Xn,"commentAreaClasses",["bili-comment","bb-comment"]);const Kn=new Xn;(0,V.contentLoaded)((()=>{Kn.init()}));const Jn=e=>{Kn.forEachCommentArea(e)},_n=e=>{Kn.forEachCommentItem(e)},$n=(e,t)=>{Kn.forEachCommentArea((n=>n.addMenuItem(e,t)))};var eo=n(5647);const to=JSON.parse('[[{"name":"首页","route":"/","tid":"","locid":23,"sub":[]},{"name":"动画","route":"douga","tid":1,"locid":52,"count":"","subMenuSize":162,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2507,"leftId":2452,"rightId":2453},"sub":[{"name":"MAD·AMV","route":"mad","tid":24,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":151},"desc":"具有一定制作程度的动画或静画的二次创作视频","url":"//www.bilibili.com/video/douga-mad-1.html"},{"name":"MMD·3D","route":"mmd","tid":25,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":152},"desc":"使用MMD(MikuMikuDance)和其他3D建模类软件制作的视频","url":"//www.bilibili.com/video/douga-mmd-1.html"},{"name":"短片·手书·配音","route":"voice","tid":47,"ps":15,"rps":10,"desc":"追求创新并具有强烈特色的短片、手书(绘)及ACG相关配音","url":"//www.bilibili.com/video/douga-voice-1.html"},{"name":"手办·模玩","route":"garage_kit","tid":210,"ps":15,"rps":10,"desc":"手办模玩的测评、改造或其他衍生内容","url":""},{"name":"特摄","route":"tokusatsu","tid":86,"ps":15,"rps":10,"desc":"特摄相关衍生视频","url":"//www.bilibili.com/video/cinephile-tokusatsu.html"},{"name":"综合","route":"other","tid":27,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":153},"desc":"以动画及动画相关内容为素材,包括但不仅限于音频替换、杂谈、排行榜等内容","url":"//www.bilibili.com/video/douga-else-1.html"}]},{"name":"番剧","route":"anime","tid":13,"url":"//www.bilibili.com/anime/","takeOvered":true,"count":"","subMenuSize":172,"combination":true,"sub":[{"name":"连载动画","tid":33,"route":"serial","desc":"当季连载的动画番剧","url":"//www.bilibili.com/video/bangumi-two-1.html"},{"name":"完结动画","tid":32,"route":"finish","desc":"已完结的动画番剧合集","url":"//www.bilibili.com/video/part-twoelement-1.html"},{"name":"资讯","tid":51,"route":"information","desc":"动画番剧相关资讯视频","url":"//www.bilibili.com/video/douga-else-information-1.html"},{"name":"官方延伸","tid":152,"route":"offical","desc":"动画番剧为主题的宣传节目、采访视频,及声优相关视频","url":"//www.bilibili.com/video/bagumi_offical_1.html"},{"name":"新番时间表","url":"//www.bilibili.com/anime/timeline/","desc":""},{"name":"番剧索引","url":"//www.bilibili.com/anime/index/","desc":""}]},{"name":"国创","tid":167,"route":"guochuang","url":"//www.bilibili.com/guochuang/","takeOvered":true,"count":"","subMenuSize":214,"combination":true,"sub":[{"name":"国产动画","tid":153,"route":"chinese","desc":"我国出品的PGC动画","url":"//www.bilibili.com/video/bangumi_chinese_1.html"},{"name":"国产原创相关","tid":168,"route":"original","desc":"","url":"//www.bilibili.com/video/guochuang-fanvid-1.html"},{"name":"布袋戏","tid":169,"route":"puppetry","desc":"","url":"//www.bilibili.com/video/glove-puppetry-1.html"},{"name":"动态漫·广播剧","tid":195,"route":"motioncomic","desc":"","url":""},{"name":"资讯","tid":170,"route":"information","desc":"","url":"//www.bilibili.com/video/guochuang-offical-1.html"},{"name":"新番时间表","url":"//www.bilibili.com/guochuang/timeline/","desc":""},{"name":"国产动画索引","url":"//www.bilibili.com/guochuang/index/","desc":""}]},{"name":"音乐","route":"music","tid":3,"locid":58,"count":"","subMenuSize":268,"slider":{"width":620,"height":220},"viewTag":true,"customComponent":{"name":"Energy","titleId":2511,"leftId":2462,"rightId":3131,"rightType":"slide"},"sub":[{"name":"原创音乐","route":"original","tid":28,"ps":15,"rps":10,"viewHotTag":true,"ad":{"active":true,"dataLocId":243},"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"个人或团队制作以音乐为主要原创因素的歌曲或纯音乐","url":"//www.bilibili.com/video/music-original-1.html"},{"name":"翻唱","route":"cover","tid":31,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":245},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"一切非官方的人声再演绎歌曲作品","url":"//www.bilibili.com/video/music-Cover-1.html"},{"name":"VOCALOID·UTAU","route":"vocaloid","tid":30,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以雅马哈Vocaloid和UTAU引擎为基础,包含其他调教引擎,运用各类音源进行的歌曲创作内容","url":"//www.bilibili.com/video/music-vocaloid-1.html"},{"name":"电音","route":"electronic","tid":194,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以电子合成器、音乐软体等产生的电子声响制作的音乐","url":"#"},{"name":"演奏","route":"perform","tid":59,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":247},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"传统或非传统乐器及器材的演奏作品","url":"//www.bilibili.com/video/music-perform-1.html"},{"name":"MV","route":"mv","tid":193,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐录影带,为搭配音乐而拍摄或制作的视频","url":"//www.bilibili.com/video/music-coordinate-1.html"},{"name":"音乐现场","route":"live","tid":29,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐实况表演视频","url":"//www.bilibili.com/video/music-oped-1.html"},{"name":"音乐综合","route":"other","tid":130,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"收录无法定义到其他音乐子分区的音乐视频","url":"//www.bilibili.com/video/music-collection-1.html"},{"name":"音频","customZone":"Audio","route":"audio","url":"//www.bilibili.com/audio/home?musicType=music"},{"name":"说唱","url":"//www.bilibili.com/v/rap"}]},{"name":"舞蹈","route":"dance","tid":129,"locid":64,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2513,"leftId":2472,"rightId":2473},"sub":[{"name":"宅舞","route":"otaku","tid":20,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":249},"desc":"与ACG相关的翻跳、原创舞蹈","url":"//www.bilibili.com/video/dance-1.html"},{"name":"街舞","route":"hiphop","tid":198,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":251},"desc":"收录街舞相关内容,包括赛事现场、舞室作品、个人翻跳、FREESTYLE等","url":""},{"name":"明星舞蹈","route":"star","tid":199,"ps":15,"rps":10,"desc":"国内外明星发布的官方舞蹈及其翻跳内容","url":""},{"name":"中国舞","route":"china","tid":200,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":253},"desc":"传承中国艺术文化的舞蹈内容,包括古典舞、民族民间舞、汉唐舞、古风舞等","url":""},{"name":"舞蹈综合","route":"three_d","tid":154,"ps":15,"rps":10,"desc":"收录无法定义到其他舞蹈子分区的舞蹈视频","url":""},{"name":"舞蹈教程","route":"demo","tid":156,"ps":10,"rps":6,"desc":"镜面慢速,动作分解,基础教程等具有教学意义的舞蹈视频","url":"//www.bilibili.com/video/dance-demo-1.html"}]},{"name":"游戏","route":"game","tid":4,"locid":70,"count":"","subMenuSize":240,"slider":{"width":470,"height":216},"viewTag":true,"customComponent":{"name":"Energy","titleId":3761,"leftId":3765,"rightId":3775,"rightType":"slide"},"recommendCardType":"GameGroomBox","sub":[{"name":"单机游戏","route":"stand_alone","tid":17,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":255},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以所有平台(PC、主机、移动端)的单机或联机游戏为主的视频内容,包括游戏预告、CG、实况解说及相关的评测、杂谈与视频剪辑等","url":"//www.bilibili.com/video/videogame-1.html"},{"name":"电子竞技","route":"esports","tid":171,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":257},"desc":"具有高对抗性的电子竞技游戏项目,其相关的赛事、实况、攻略、解说、短剧等视频。","url":"//www.bilibili.com/video/esports-1.html"},{"name":"手机游戏","route":"mobile","tid":172,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"desc":"以手机及平板设备为主要平台的游戏,其相关的实况、攻略、解说、短剧、演示等视频。","url":"//www.bilibili.com/video/mobilegame-1.html"},{"name":"网络游戏","route":"online","tid":65,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":259},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由网络运营商运营的多人在线游戏,以及电子竞技的相关游戏内容。包括赛事、攻略、实况、解说等相关视频","url":"//www.bilibili.com/video/onlinegame-1.html"},{"name":"桌游棋牌","route":"board","tid":173,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"desc":"桌游、棋牌、卡牌对战等及其相关电子版游戏的实况、攻略、解说、演示等视频。","url":"//www.bilibili.com/video/boardgame-1.html"},{"name":"GMV","route":"gmv","tid":121,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由游戏素材制作的MV视频。以游戏内容或CG为主制作的,具有一定创作程度的MV类型的视频","url":"//www.bilibili.com/video/gmv-1.html"},{"name":"音游","route":"music","tid":136,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"各个平台上,通过配合音乐与节奏而进行的音乐类游戏视频","url":"//www.bilibili.com/video/music-game-1.html"},{"name":"Mugen","route":"mugen","tid":19,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以Mugen引擎为平台制作、或与Mugen相关的游戏视频","url":"//www.bilibili.com/video/game-mugen-1.html"},{"name":"游戏赛事","url":"//www.bilibili.com/v/game/match/","newIcon":true}]},{"name":"知识","route":"knowledge","tid":36,"locid":76,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2058,"leftId":2047,"rightId":2048},"sub":[{"name":"科学科普","route":"science","tid":201,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":261},"desc":"回答你的十万个为什么"},{"name":"社科·法律·心理","route":"social_science","tid":124,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":263},"desc":"基于社会科学、法学、心理学展开或个人观点输出的知识视频"},{"name":"人文历史","route":"humanity_history","tid":228,"ps":15,"rps":10,"desc":"看看古今人物,聊聊历史过往,品品文学典籍"},{"name":"财经商业","route":"business","tid":207,"ps":15,"rps":10,"desc":"说金融市场,谈宏观经济,一起畅聊商业故事"},{"name":"校园学习","route":"campus","tid":208,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":265},"desc":"老师很有趣,学生也有才,我们一起搞学习"},{"name":"职业职场","route":"career","tid":209,"ps":15,"rps":10,"desc":"职业分享、升级指南,一起成为最有料的职场人"},{"name":"设计·创意","route":"design","tid":229,"ps":15,"rps":10,"desc":"天马行空,创意设计,都在这里"},{"name":"野生技能协会","route":"skill","tid":122,"ps":15,"rps":10,"desc":"技能党集合,是时候展示真正的技术了"}]},{"name":"科技","route":"tech","tid":188,"locid":2977,"count":"","subMenuSize":80,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2980,"leftId":2978,"rightId":2979},"sub":[{"name":"数码","route":"digital","tid":95,"ps":15,"rps":10,"viewHotTag":true,"desc":"科技数码产品大全,一起来做发烧友","url":"#"},{"name":"软件应用","route":"application","tid":230,"ps":15,"rps":10,"viewHotTag":true,"desc":"超全软件应用指南","url":"#"},{"name":"计算机技术","route":"computer_tech","tid":231,"ps":15,"rps":10,"viewHotTag":true,"desc":"研究分析、教学演示、经验分享......有关计算机技术的都在这里","url":"#"},{"name":"工业·工程·机械","route":"industry","tid":232,"ps":15,"rps":10,"viewHotTag":true,"desc":"前方高能,机甲重工即将出没","url":"#"},{"name":"极客DIY","route":"diy","tid":233,"ps":15,"rps":10,"viewHotTag":true,"desc":"炫酷技能,极客文化,硬核技巧,准备好你的惊讶","url":"#"}]},{"name":"运动","route":"sports","tid":234,"locid":4639,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4646,"rightId":4652,"rightType":"slide"},"sub":[{"name":"篮球·足球","route":"basketballfootball","tid":235,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4656},"desc":"与篮球、足球相关的视频,包括但不限于篮足球赛事、教学、评述、剪辑、剧情等相关内容","url":"#"},{"name":"健身","route":"aerobics","tid":164,"ps":15,"rps":10,"desc":"与健身相关的视频,包括但不限于瑜伽、CrossFit、健美、力量举、普拉提、街健等相关内容","url":"//www.bilibili.com/video/fashion-body-1.html"},{"name":"竞技体育","route":"athletic","tid":236,"ps":15,"rps":10,"desc":"与竞技体育相关的视频,包括但不限于乒乓、羽毛球、排球、赛车等竞技项目的赛事、评述、剪辑、剧情等相关内容","url":"#"},{"name":"运动文化","route":"culture","tid":237,"ps":15,"rps":10,"desc":"与运动文化相关的视频,包络但不限于球鞋、球衣、球星卡等运动衍生品的分享、解读,体育产业的分析、科普等相关内容","url":"#"},{"name":"运动综合","route":"comprehensive","tid":238,"ps":15,"rps":10,"desc":"与运动综合相关的视频,包括但不限于钓鱼、骑行、滑板等日常运动分享、教学、Vlog等相关内容","url":"#"}]},{"name":"汽车","route":"car","tid":223,"locid":4428,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4435,"rightId":4441,"rightType":"slide"},"sub":[{"name":"汽车生活","route":"life","tid":176,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4445},"desc":"分享汽车及出行相关的生活体验类视频","url":"#"},{"name":"汽车文化","route":"culture","tid":224,"ps":15,"rps":10,"desc":"车迷的精神圣地,包括汽车赛事、品牌历史、汽车改装、经典车型和汽车模型等","url":"#"},{"name":"汽车极客","route":"geek","tid":225,"ps":15,"rps":10,"desc":"汽车硬核达人聚集地,包括DIY造车、专业评测和技术知识分享","url":"#"},{"name":"摩托车","route":"motorcycle","tid":240,"ps":15,"rps":10,"desc":"骑士们集合啦","url":"#"},{"name":"智能出行","route":"smart","tid":226,"ps":15,"rps":10,"desc":"探索新能源汽车和未来智能出行的前沿阵地","url":"#"},{"name":"购车攻略","route":"strategy","tid":227,"ps":15,"rps":10,"desc":"丰富详实的购车建议和新车体验","url":"#"}]},{"name":"生活","route":"life","tid":160,"locid":88,"count":"","subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2062,"leftId":1674,"rightId":1670},"sub":[{"name":"搞笑","route":"funny","tid":138,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":273},"desc":"各种沙雕有趣的搞笑剪辑,挑战,表演,配音等视频","url":"//www.bilibili.com/video/ent_funny_1.html","locid":4204,"recommendId":4210,"slider":{"width":620,"height":220},"customComponent":{"name":"Energy","leftId":4212,"rightId":4218,"rightType":"slide"}},{"name":"家居房产","route":"home","tid":239,"ps":15,"rps":10,"desc":"与买房、装修、居家生活相关的分享","url":"#"},{"name":"手工","route":"handmake","tid":161,"ps":15,"rps":10,"desc":"手工制品的制作过程或成品展示、教程、测评类视频","url":"//www.bilibili.com/video/ent-handmake-1.html"},{"name":"绘画","route":"painting","tid":162,"ps":15,"rps":10,"desc":"绘画过程或绘画教程,以及绘画相关的所有视频","url":"//www.bilibili.com/video/ent-painting-1.html"},{"name":"日常","route":"daily","tid":21,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":275},"desc":"记录日常生活,分享生活故事","url":"//www.bilibili.com/video/ent-life-1.html"}]},{"name":"美食","route":"food","tid":211,"locid":4243,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4258,"rightId":4264},"sub":[{"name":"美食制作","route":"make","tid":76,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4268},"desc":"学做人间美味,展示精湛厨艺","url":"#"},{"name":"美食侦探","route":"detective","tid":212,"ps":15,"rps":10,"desc":"寻找美味餐厅,发现街头美食","url":"#"},{"name":"美食测评","route":"measurement","tid":213,"ps":15,"rps":10,"desc":"吃货世界,品尝世间美味","url":"#"},{"name":"田园美食","route":"rural","tid":214,"ps":15,"rps":10,"desc":"品味乡野美食,寻找山与海的味道","url":"#"},{"name":"美食记录","route":"record","tid":215,"ps":15,"rps":10,"desc":"记录一日三餐,给生活添一点幸福感","url":"#"}]},{"name":"动物圈","route":"animal","tid":217,"locid":4365,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4376,"rightId":4381,"rightType":"slide"},"sub":[{"name":"喵星人","route":"cat","tid":218,"ps":15,"rps":10,"desc":"喵喵喵喵喵","url":"#","ad":{"active":true,"dataLocId":4385}},{"name":"汪星人","route":"dog","tid":219,"ps":15,"rps":10,"desc":"汪汪汪汪汪","url":"#"},{"name":"大熊猫","route":"panda","tid":220,"ps":15,"rps":10,"desc":"芝麻汤圆营业中","url":"#"},{"name":"野生动物","route":"wild_animal","tid":221,"ps":15,"rps":10,"desc":"内有“猛兽”出没","url":"#"},{"name":"爬宠","route":"reptiles","tid":222,"ps":15,"rps":10,"desc":"鳞甲有灵","url":"#"},{"name":"动物综合","route":"animal_composite","tid":75,"ps":15,"rps":10,"desc":"收录除上述子分区外,其余动物相关视频以及非动物主体或多个动物主体的动物相关延伸内容","url":"#"}]},{"name":"鬼畜","route":"kichiku","tid":119,"locid":100,"count":"","subMenuSize":182,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2509,"leftId":2482,"rightId":2483},"sub":[{"name":"鬼畜调教","route":"guide","tid":22,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":285},"desc":"使用素材在音频、画面上做一定处理,达到与BGM一定的同步感","url":"//www.bilibili.com/video/ent-Kichiku-1.html"},{"name":"音MAD","route":"mad","tid":26,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":287},"desc":"使用素材音频进行一定的二次创作来达到还原原曲的非商业性质稿件","url":"//www.bilibili.com/video/douga-kichiku-1.html"},{"name":"人力VOCALOID","route":"manual_vocaloid","tid":126,"ps":15,"rps":10,"desc":"将人物或者角色的无伴奏素材进行人工调音,使其就像VOCALOID一样歌唱的技术","url":"//www.bilibili.com/video/kichiku-manual_vocaloid-1.html"},{"name":"鬼畜剧场","route":"theatre","tid":216,"ps":15,"rps":10,"desc":"使用素材进行人工剪辑编排的有剧情的作品"},{"name":"教程演示","route":"course","tid":127,"ps":10,"rps":6,"rightComponent":{"name":"CmImgList","id":148},"ad":{"active":true,"dataLocId":289},"hideDropdown":false,"desc":"鬼畜相关的教程演示","url":"//www.bilibili.com/video/kichiku-course-1.html"}]},{"name":"时尚","route":"fashion","tid":155,"locid":94,"count":"","subMenuSize":124,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2515,"leftId":2492,"rightId":2493},"sub":[{"name":"美妆护肤","route":"makeup","tid":157,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":279},"desc":"彩妆护肤、美甲美发、仿妆、医美相关内容分享或产品测评","url":"//www.bilibili.com/video/fashion-makeup-fitness-1.html"},{"name":"穿搭","route":"clothing","tid":158,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":281},"desc":"穿搭风格、穿搭技巧的展示分享,涵盖衣服、鞋靴、箱包配件、配饰(帽子、钟表、珠宝首饰)等","url":"//www.bilibili.com/video/fashion-clothing-1.html"},{"name":"时尚潮流","route":"trend","tid":159,"ps":15,"rps":10,"desc":"时尚街拍、时装周、时尚大片,时尚品牌、潮流等行业相关记录及知识科普","url":"#"}]},{"name":"资讯","route":"information","tid":202,"locid":4076,"count":"","subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"sub":[{"name":"热点","route":"hotspot","tid":203,"ps":18,"rps":10,"desc":"全民关注的时政热门资讯"},{"name":"环球","route":"global","tid":204,"ps":18,"rps":10,"desc":"全球范围内发生的具有重大影响力的事件动态"},{"name":"社会","route":"social","tid":205,"ps":18,"rps":10,"desc":"日常生活的社会事件、社会问题、社会风貌的报道"},{"name":"综合","route":"multiple","tid":206,"ps":18,"rps":10,"desc":"除上述领域外其它垂直领域的综合资讯"}]},{"name":"娱乐","route":"ent","tid":5,"locid":82,"count":"","subMenuSize":62,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2067,"leftId":2065,"rightId":2066},"sub":[{"name":"综艺","route":"variety","tid":71,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":267},"desc":"所有综艺相关,全部一手掌握!","url":"//www.bilibili.com/video/ent-variety-1.html"},{"name":"娱乐杂谈","route":"talker","tid":241,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":269},"desc":"娱乐人物解读、娱乐热点点评、娱乐行业分析"},{"name":"粉丝创作","route":"fans","tid":242,"ps":15,"rps":10,"desc":"粉丝向创作视频"},{"name":"明星综合","route":"celebrity","tid":137,"ps":15,"rps":10,"desc":"娱乐圈动态、明星资讯相关"}]},{"name":"影视","route":"cinephile","tid":181,"locid":2211,"count":"","subMenuSize":84,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2309,"leftId":2307,"rightId":2308},"sub":[{"name":"影视杂谈","route":"cinecism","tid":182,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2212},"desc":"影视评论、解说、吐槽、科普等","url":"//www.bilibili.com/video/cinephile-cinecism.html"},{"name":"影视剪辑","route":"montage","tid":183,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2213},"desc":"对影视素材进行剪辑再创作的视频","url":"//www.bilibili.com/video/cinephile-montage.html"},{"name":"短片","route":"shortfilm","tid":85,"ps":15,"rps":10,"desc":"追求自我表达且具有特色的短片","url":"//www.bilibili.com/video/cinephile-shortfilm.html"},{"name":"预告·资讯","route":"trailer_info","tid":184,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2214},"desc":"影视类相关资讯,预告,花絮等视频","url":"//www.bilibili.com/video/cinephile-trailer-info.html"}]},{"name":"纪录片","route":"documentary","tid":177,"url":"//www.bilibili.com/documentary/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"人文·历史","tid":37,"route":"history","dise":"","url":"//www.bilibili.com/video/doco-history.html"},{"name":"科学·探索·自然","tid":178,"route":"science","dise":"","url":"//www.bilibili.com/video/doco-science.html"},{"name":"军事","tid":179,"route":"military","dise":"","url":"//www.bilibili.com/video/doco-military.html"},{"name":"社会·美食·旅行","tid":180,"route":"travel","dise":"","url":"//www.bilibili.com/video/doco-travel.html"},{"name":"纪录片索引","url":"//www.bilibili.com/documentary/index/"}]},{"name":"电影","route":"movie","tid":23,"url":"//www.bilibili.com/movie/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"华语电影","tid":147,"route":"chinese","desc":"","url":"//www.bilibili.com/video/movie_chinese_1.html"},{"name":"欧美电影","tid":145,"route":"west","desc":"","url":"//www.bilibili.com/video/movie_west_1.html"},{"name":"日本电影","tid":146,"route":"japan","desc":"","url":"//www.bilibili.com/video/movie_japan_1.html"},{"name":"其他国家","tid":83,"route":"movie","desc":"","url":"//www.bilibili.com/video/movie-movie-1.html"},{"name":"电影索引","url":"//www.bilibili.com/movie/index/"}]},{"name":"电视剧","route":"tv","tid":11,"url":"//www.bilibili.com/tv/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"国产剧","tid":185,"route":"mainland","desc":"","url":"//www.bilibili.com/video/tv-mainland.html"},{"name":"海外剧","tid":187,"route":"overseas","desc":"","url":"//www.bilibili.com/video/tv-overseas.html"},{"name":"电视剧索引","url":"//www.bilibili.com/tv/index/"}]},{"name":"虚拟UP主","route":"virtual","locid":4735,"count":"","isHide":true,"subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":4754,"leftId":4756},"sub":[{"name":"游戏","route":"game","tid":4,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/game"},{"name":"音乐","route":"music","tid":3,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/music"},{"name":"动画","route":"douga","tid":1,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/douga"},{"name":"其他","route":"other","tid":0,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/other"}]}],[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}],[{"name":"会员购","url":"//show.bilibili.com/platform/home.html","icon":"icon-vip-buy"},{"name":"游戏中心","url":"//game.bilibili.com","icon":"icon-game"},{"name":"画友","url":"http://h.bilibili.com","icon":"icon-hy"},{"name":"芒果TV","url":"//www.bilibili.com/mango","icon":"icon-mango"}],[{"name":"专栏","report":"article","url":"//www.bilibili.com/read/home","icon":"read"},{"name":"直播","report":"live","url":"//live.bilibili.com","icon":"live","sub":[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}]},{"name":"活动","report":"activity","url":"//www.bilibili.com/blackboard/activity-list.html","icon":"activit"},{"name":"课堂","report":"cheese","url":"//www.bilibili.com/cheese/","icon":"zhishi"},{"name":"小黑屋","report":"blackroom","url":"//www.bilibili.com/blackroom/","icon":"blackroom"},{"name":"新歌热榜","report":"musicplus","url":"//www.bilibili.com/v/musicplus/","icon":"musicplus"}]]'),no=e=>e.startsWith("//")?`https:${e}`:e.replace("http:","https:"),oo=to[0].filter((e=>"string"!=typeof e.tid)),io=to[3],ro={};oo.forEach((e=>{const t=no(e.url||`https://www.bilibili.com/v/${e.route}/`);ro[e.name]={icon:e.route,route:e.route,code:e.tid,link:t,subCategories:e.sub?Object.fromEntries(e.sub.map((t=>{const n=no(t.route?`https://www.bilibili.com/v/${e.route}/${t.route}/`:t.url);return[t.name,n]}))):null}})),io.forEach((e=>{ro[e.name]={icon:e.icon,code:null,route:e.route,link:no(e.url),subCategories:e.sub?Object.fromEntries(e.sub.map((e=>[e.name,no(e.url)]))):null}}));const ao=ro,co=Object.fromEntries(oo.map((e=>[e.route,e.tid]))),so=Object.fromEntries(Object.values(ro).map((e=>[e.icon,e.link]))),lo=async()=>{if(document.getElementById("be-category-icons"))return;const{default:e}=await Promise.resolve().then(n.t.bind(n,3066,17));document.body.insertAdjacentHTML("beforeend",e)};var mo=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"translate-container"},[e.working||e.translated?e._e():t("div",{staticClass:"translate",on:{click:function(t){return e.translate()}}},[t("VIcon",{attrs:{size:14,icon:"mdi-earth"}}),e._v("翻译\n ")],1),e._v(" "),e.translated?t("div",{staticClass:"translated"},[t("a",{attrs:{href:e.activeTranslator&&e.activeTranslator.link,target:"_blank"}},[e._v(" 翻译自 ")]),e._v(" "),t("VDropdown",{attrs:{items:Object.values(e.translateProviders),value:e.activeTranslator,"key-mapper":e=>e.name},on:{change:function(t){return e.changeTranslator(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t.name)+"\n ")]}}],null,!1,1956376614)})],1):e._e(),e._v(" "),e.working?t("VIcon",{staticClass:"translating mdi-spin",attrs:{size:18,icon:"mdi-loading"}}):e._e(),e._v(" "),!e.working&&e.translated?t("div",{staticClass:"translate-result",domProps:{textContent:e._s(e.result)}}):e._e()],1)};mo._withStripped=!0;var fo=n(1372);const uo=Vue.extend({components:{VDropdown:be.VDropdown,VIcon:be.VIcon},props:{text:{type:String,required:!0}},data:()=>({result:"",working:!1,translateProviders:fo.WK,activeTranslator:{}}),computed:{translated(){return""!==this.result}},mounted(){document.body.classList.add("machine-translator-enabled")},methods:{changeTranslator(e){(0,J.getComponentSettings)("i18n").options.translator=e.name,this.translate()},async translate(){try{this.working=!0;const e=this.text.replace(/#(.+?)#/g,"");this.activeTranslator=(0,fo.Ty)();const t=this.activeTranslator;this.result=await t.translate(e)}catch(e){(0,de.logError)(e)}finally{this.working=!1}}}});var po=n(5286),bo=n.n(po),ho={insert:"head",singleton:!1};lt()(bo(),ho);bo().locals;const go=(0,ut.Z)(uo,mo,[],!1,null,null,null).exports,Fo=e=>{void 0===e.radio&&(e.radio=!1);const{name:t,switches:o}=e,i={};return Object.entries(o).forEach((e=>{let[t,{displayName:n,defaultValue:o}]=e;i[`switch-${t}`]={defaultValue:o,displayName:n,hidden:!0}})),o=>{const r=`${o.displayName}选项`,a={componentName:o.name,optionDisplayName:r};Object.assign(e,a),i[t]={defaultValue:e,displayName:r},o.options={...o.options,...i},o.widget||(o.widget={component:()=>Promise.resolve().then(n.bind(n,3932)).then((e=>e.default)),options:e});const c=o.entry;return o.entry=async function(){for(var e=arguments.length,t=new Array(e),n=0;n{e.startsWith("switch-")&&(0,J.addComponentListener)(`${i}.${e}`,(t=>{document.body.classList.toggle(`${i}-${e}`,t)}),!0)}))},o}},vo=e=>e,wo=e=>e,yo=e=>{const t=(e=>{const t={},n=Object.entries(e);for(const[e,{displayName:o,defaultValue:i}]of n)t[`switch-${e}`]={defaultValue:i,displayName:o,hidden:!0};return(e,n)=>(t[n.name]={defaultValue:n,displayName:n.optionDisplayName},{...e,...t})})(e.switches);return o=>{const i=((e,t,n)=>({...e,radio:void 0!==e.radio&&e.radio,dimAt:e.dimAt,componentName:t,optionDisplayName:n}))(e,o.name,`${o.displayName}选项`);return o.widget||(o.widget=(e=>({component:()=>Promise.resolve().then(n.bind(n,3932)).then((e=>e.default)),options:e}))(i)),o.options=t(o.options,i),o.entry=(e=>{const t=e.entry;return function(){const n=t(...arguments),o=(0,J.getComponentSettings)(e.name).options;return Object.keys(o).forEach((t=>{t.startsWith("switch-")&&(0,J.addComponentListener)(`${e.name}.${t}`,(n=>{document.body.classList.toggle(`${e.name}-${t}`,n)}),!0)})),n}})(o),o}},xo=yo;const ko={builtInComponents:he,component:ge,userComponent:Fe,styledComponent:c,define:ye,description:xe,switchOptions:E,launchBar:{LaunchBar:n(2098).Z},feeds:{api:l,BangumiCard:pt,UpInfo:wt,VideoCard:Et,ColumnCard:Mt,disableProfilePopup:d,notify:m},video:{assUtils:f,playerLight:p,playerAgent:rn,videoActions:b,videoDanmaku:h,videoInfo:g,videoQuality:F,videoContextMenu:v,videoControlBar:w,videoCover:y,watchlater:s,xmlUtils:u},live:{liveControlBar:x,liveSocket:k},utils:{commentApis:C,categories:{updater:eo,data:A}},i18N:{machineTranslator:{MachineTranslator:go}}};var Co=n(6118),Ao=n(4602),Eo=n(6695);const Bo={style:Co,plugin:Ao,data:Ee,hook:Eo},Do={ajax:B,cdnTypes:D,download:I,dialog:z,externalInput:S,filePicker:M,installFeature:P,horizontalScroll:o,lifeCycle:V,loadingMode:T,localStorage:L,meta:j,observer:R,reorder:i,runtimeLibrary:Q,spinQuery:Y,style:X,textColor:K,userInfo:r,version:ee,settings:J,toast:ue,themeColor:pe,utils:{...te,constants:ne,formatters:oe,title:ie,i18n:re,lazyPanel:a,log:de,sort:me,urls:fe},ui:be,componentApis:ko,pluginApis:Bo},Io={ajax:B,...D,...I,...z,...S,...M,...P,...o,lifeCycle:V,...T,...L,...j,observer:R,...i,runtimeLibrary:Q,spinQuery:Y,...X,...K,...r,...ee,settingsApis:J,get settings(){return J.settings},...ue,utils:{...te,...ne,...oe,...ie,...re,...a,...de,...me,...fe},ui:be,componentApis:{...ko.component,...ko.userComponent,...ko.styledComponent,...ko.launchBar,...lodash.omit(ko,"component","userComponent","styledComponent","launchBar")},pluginApis:{...Bo.style,...Bo.plugin,...Bo.data,...Bo.hook},monkeyApis:{GM_setValue,GM_getValue,GM_deleteValue,GM_xmlhttpRequest,GM_info},lodash,Vue,sandboxWindow:window,theWorld:e=>{setTimeout((()=>{}),e)}}},5450:(e,t,n)=>{"use strict";n.r(t),n.d(t,{showDialog:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-dialog",class:{open:e.open},style:{zIndex:e.zIndex}},[t("div",{staticClass:"be-dialog-header"},[e.icon?t("div",{staticClass:"be-dialog-header-icon"},[t("VIcon",{attrs:{icon:e.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"be-dialog-header-title"},["string"==typeof e.title?[e._v(e._s(e.title))]:t(e.title,{tag:"component"})],2),e._v(" "),t("div",{staticClass:"be-dialog-header-close"},[t("VButton",{attrs:{type:"transparent"},on:{click:function(t){return e.close()}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1)]),e._v(" "),t("div",{staticClass:"be-dialog-content"},["string"==typeof e.content?[e._v(e._s(e.content))]:e.content?t(e.content,e._b({tag:"component",on:{"dialog-close":function(t){return e.close()}}},"component",e.contentProps,!1)):e._e()],2)])};o._withStripped=!0;var i=n(1445);const r=Vue.extend({components:{VIcon:i.VIcon,VButton:i.VButton},props:{icon:{type:String,default:""},title:{default:null},zIndex:{type:Number,default:100002},content:{default:null},contentProps:{default:()=>({})}},data:()=>({open:!1,closeListeners:[]}),methods:{close(){return new Promise((e=>{const t=this.$el,n=this.closeListeners;n.push((()=>{this.$emit("close"),e()}));const o=e=>{e.target===this.$el&&(t.removeEventListener("transitionend",o),n.forEach((e=>e())))};t.addEventListener("transitionend",o),this.open=!1}))}}});var a=n(8332),c=n.n(a),s=n(2149),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports,f=e=>{const{icon:t,title:n,zIndex:o,content:i,contentProps:r}=e,a=new m({propsData:{icon:t,title:n,zIndex:o,content:i,contentProps:r},data:{open:!1,closeListeners:[()=>{a.$destroy(),a.$el.remove()}]}}).$mount();return document.body.appendChild(a.$el),setTimeout((()=>{a.open=!0})),a}},7138:(e,t,n)=>{"use strict";n.d(t,{h:()=>o});let o=function(e){return e.Packed="打包下载",e.Individual="单独下载",e}({})},4905:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DownloadPackage:()=>d});var o=n(7138),i=n(7789),r=n(7234),a=n(7079),c=n(5145),s=n(3085);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.entries=e,l(this,"noEscape",!1)}add(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};null!=t&&this.entries.push({name:this.noEscape?e:(0,a.formatFilename)(e),data:t,options:n})}async blob(){const e=(0,c.useScopedConsole)("文件打包");if(0===this.entries.length)return null;if(1===this.entries.length){const{data:e}=this.entries[0];return"string"==typeof e?new Blob([e]):e}const t=new(await i.JSZipLibrary),n=e=>t.filter(((t,n)=>n.name===e)).length>0;return this.entries.forEach((o=>{let{name:i,data:r,options:a}=o;if(n(i)){let o=i;for(;n(o);){const e=i.lastIndexOf(".");o=`${i.substring(0,e)}.${(0,s.getRandomId)(8)}${i.substring(e)}`}return e.warn(`文件名 "${i}" 和已有文件冲突, 已临时更换为 "${o}"`),void t.file(o,r,a)}t.file(i,r,a)})),t.generateAsync({type:"blob"})}async emit(e){if(0===this.entries.length)return;e&&1!==this.entries.length||(e=this.entries[0].name);if((0,r.getGeneralSettings)().downloadPackageEmitMode===o.h.Individual&&this.entries.length>1)return void await Promise.all(this.entries.map((e=>d.single(e.name,e.data,e.options))));const t=await this.blob();t&&d.download(e,t)}static download(e,t){const n=(0,c.useScopedConsole)("文件下载"),o=document.createElement("a"),i=URL.createObjectURL(t);d.lastPackageUrl&&URL.revokeObjectURL(d.lastPackageUrl),d.lastPackageUrl=i;const r=(0,a.formatFilename)(e);o.setAttribute("href",i),o.setAttribute("download",r),n.log(r),document.body.appendChild(o),o.addEventListener("click",(e=>{e.stopPropagation()}),{capture:!0}),o.click(),o.remove()}static async single(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=new d;return o.add(e,t,n),o.emit()}}l(d,"lastPackageUrl","")},2686:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LoadFeatureCodeError:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.LoadFeatureCodeError,loadFeatureCode:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.loadFeatureCode,parseExternalInput:()=>parseExternalInput});var _core_file_picker__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5244),_load_feature_code__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(810);const parseExternalInput=async input=>{if(void 0===input){const files=await(0,_core_file_picker__WEBPACK_IMPORTED_MODULE_0__.pickFile)({accept:"application/json"});if(!(files.length>0))return console.error("[parseExternalInput] No file selected"),null;{const[file]=files,text=await file.text();try{return eval(`(${text})`)}catch(e){return console.error(e),null}}}else{if("string"!=typeof input)return input;try{const exports={},result=eval(input);if(Object.values(exports).length>0){const e=Object.values(exports)[0];return e}return result}catch(e){return console.error(e),null}}}},810:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadFeatureCodeError:()=>o,loadFeatureCode:()=>r});class o extends Error{}let i;const r=e=>{i||(i=(()=>{const e=new Map([[Symbol.unscopables,void 0],["unsafeWindow",unsafeWindow]]),t=new Proxy(Object.create(null),{has:()=>!0,get:(t,n)=>e.has(n)?e.get(n):window[n],set:(t,n,o)=>!e.has(n)&&(window[n]=o)}),n="BILIBILI_EVOLVED_LOAD_FEATURE_CODE_CODE_KEY_3B63D912__",i=Function("window",`with (window) {\n return eval(${n}) \n }`).bind(void 0,t);return{run(t){let r;e.set("exports",{}),e.set(n,t);try{r=i()}catch(e){throw new o(void 0,{cause:e})}const a=Object.values(e.get("exports"));return[a.length>0?a[0]:void 0,r]}}})());const[t,n]=i.run(e);return t||n}},5244:(e,t,n)=>{"use strict";let o,i;n.r(t),n.d(t,{pickFile:()=>a});const r={accept:"*",multiple:!1},a=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;const{accept:t,multiple:n}={...r,...e};o||(o=document.createElement("input"),o.type="file",o.style.display="none",document.body.appendChild(o),o.addEventListener("change",(()=>{i?.([...o.files]),i=null}))),o.accept=t,o.multiple=n,o.value="",i&&i([]);const a=await new Promise((e=>{i=e,o.click()}));return a}},1233:(e,t,n)=>{"use strict";n.r(t),n.d(t,{installFeature:()=>l,installFeatureFromCode:()=>s,tryParseZip:()=>c});var o=n(6312),i=n(6695),r=n(4602),a=n(6118);const c=async e=>{const{JSZipLibrary:t}=await Promise.resolve().then(n.bind(n,7789)),{monkey:o}=await Promise.resolve().then(n.bind(n,9161)),i=e.endsWith(".zip"),r=i?"blob":"text",a=await o({url:e,method:"GET",responseType:r});if(!i||"string"==typeof a)return a;const c=await t,s=await c.loadAsync(a),l=Object.values(s.files);if(0===l.length)throw new Error("Empty zip file");return l[0].async("text")},s=async(e,t)=>{const{loadFeatureCode:c}=await Promise.resolve().then(n.bind(n,2686)),s=c(e),{type:l,installer:d}=(()=>{if((e=>Boolean(e?.entry))(s))return{type:"component",installer:()=>(0,o.installComponent)(e)};if((e=>Boolean(e?.setup))(s))return{type:"plugin",installer:()=>(0,r.installPlugin)(e)};if((e=>Boolean(e?.style))(s))return{type:"style",installer:()=>(0,a.installStyle)(e)};throw new Error("无效的功能代码")})(),{before:m,after:f}=(0,i.getHook)(`user${lodash.startCase(l)}s.add`,e,t);await m();const u=await d();return await f(u.metadata),u},l=async e=>{const t=await c(e);return s(t,e)}},7792:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LifeCycleEventTypes:()=>c,contentLoaded:()=>r,fullyLoaded:()=>a,headLoaded:()=>i,raiseLifeCycleEvent:()=>s});var o=n(8737);const i=e=>new Promise((t=>{if(null!==document.head)t(e());else{const[n]=(0,o.childList)(document.documentElement,(()=>{null!==document.head&&(n.disconnect(),t(e()))}))}})),r=e=>new Promise((t=>{"loading"!==document.readyState?t(e()):document.addEventListener("DOMContentLoaded",(()=>t(e())))})),a=e=>new Promise((t=>{"complete"===document.readyState?t(e()):unsafeWindow.addEventListener("load",(()=>t(e())))}));let c=function(e){return e.Start="be:start",e.StyleLoaded="be:style-loaded",e.ComponentsLoaded="be:components-loaded",e.End="be:end",e}({});const s=e=>{unsafeWindow.dispatchEvent(new CustomEvent(e))}},4074:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadingMode:()=>o});let o=function(e){return e.Delay="延后",e.Race="同时",e}({})},711:(e,t,n)=>{"use strict";n.r(t),n.d(t,{crossOriginLocalStorage:()=>l,watchLocalStorage:()=>f});var o=n(2533),i=n(3085);const r=async e=>{const t=await(0,o.select)('iframe[src^="https://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html"][data-loaded="true"]');if(!t)throw new Error("COLS iframe not found");t.contentWindow.postMessage(e,"https://s1.hdslb.com")},a=[],c=[];window.addEventListener("message",(e=>{if("COLS_RES"===e.data.type){const t=e.data,{id:n}=t,o=()=>{const e=c.findIndex((e=>e.id===n));e<0||c[e].callback(t.value)};(()=>{const e=a.findIndex((e=>e.id===n));if(e<0)return;const[o]=a.splice(e,1);o.resolve(t.value)})(),o()}}));const s=e=>()=>new Promise((t=>{const n=(0,i.getRandomId)(32);a.push({id:n,resolve:t}),e(n)})),l={setItem:(e,t)=>s((n=>{r({id:n,type:"COLS_SET",key:e,value:t})}))(),getItem:e=>s((t=>{r({id:t,type:"COLS_GET",key:e})}))(),removeItem:e=>s((t=>{r({id:t,type:"COLS_RM",key:e})}))(),keys:e=>s((t=>{r({id:t,type:"COLS_KEYS",key:e})}))(),clear:e=>s((t=>{r({id:t,type:"COLS_CLR",key:e})}))(),addStorageListener:async(e,t)=>{const n=(0,i.getRandomId)(32);return c.push({id:n,callback:t}),r({type:"COLS_LIS",key:e,id:n}),n},removeStorageListener:async(e,t)=>{(0,i.deleteValue)(c,(e=>e.id===t)),r({type:"COLS_LIS_UN",key:e,id:t})}},d=[];let m=!1;const f=e=>{m||((0,i.createPostHook)(unsafeWindow.localStorage,"setItem",((e,t)=>{d.forEach((n=>n(e,t)))})),m=!0),d.push(e);const t=t=>{e(t.key,t.newValue)};return window.addEventListener("storage",t),()=>{const n=d.indexOf(e);n>-1&&d.splice(n,1),window.removeEventListener("storage",t)}}},5791:(e,t,n)=>{"use strict";n.r(t),n.d(t,{branches:()=>a,meta:()=>s});var o=n(113),i=n(2129),r=n(6411).compilationInfo;o.copyright=o.copyright.replace(/\[year\]/g,(new Date).getFullYear().toString());const a={stable:"master",stableCdn:"master-cdn",preview:"preview"},c=r,s={compilationInfo:c,name:GM_info.script.name,description:GM_info.script.description,get originalFilename(){const{branch:e}=c;return e===a.preview?`bilibili-evolved.${a.preview}.user.js`:"bilibili-evolved.user.js"},get updateURL(){return`${i.cdnRoots.AltCdn(c.branch)}dist/${this.originalFilename}`},get downloadURL(){return this.updateURL},...o}},8737:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allMutations:()=>h,allMutationsOn:()=>p,attributes:()=>d,attributesSubtree:()=>m,characterData:()=>f,characterDataSubtree:()=>u,childList:()=>s,childListSubtree:()=>l,intersectionObserve:()=>g,mutationObserve:()=>c,resizeObserve:()=>w,resolveTargets:()=>a,sizeChange:()=>y,urlChange:()=>k,videoChange:()=>E,visible:()=>F,visibleInside:()=>v});var o=n(3085),i=n(2533),r=n(9316);const a=e=>"string"==typeof e?(0,o.dqa)(e):Array.isArray(e)?e:[e],c=(e,t,n)=>{const o=new MutationObserver(n);return e.forEach((e=>o.observe(e,t))),n([],o),[o,t]},s=(e,t)=>c(a(e),{childList:!0,subtree:!1,attributes:!1},t),l=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!1},t),d=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!0},t),m=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!0},t),f=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!1,characterData:!0},t),u=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!1,characterData:!0},t),p=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!0,characterData:!0},t),b={observer:null,config:null,callbacks:[]},h=e=>{if(b.observer)b.callbacks.push(e);else{b.callbacks.push(e);const[t,n]=p(document.body,(e=>b.callbacks.forEach((t=>t(e,b.observer)))));b.observer=t,b.config=n}return b},g=(e,t,n)=>{const o=new IntersectionObserver(n,t);return e.forEach((e=>o.observe(e))),[o,t]},F=(e,t)=>g(a(e),{},t),v=(e,t,n,o)=>g(a(e),{root:t,rootMargin:n},o),w=(e,t,n)=>{const o=new ResizeObserver(n);return e.forEach((e=>o.observe(e,t))),[o,t]},y=(e,t)=>w(a(e),{box:"border-box"},t),x=lodash.once((()=>{let e=document.URL;h((()=>{e!==document.URL&&((()=>{const e=new CustomEvent("urlChange",{detail:document.URL});window.dispatchEvent(e)})(),e=document.URL)}))})),k=(e,t)=>{x(),e(document.URL),window.addEventListener("urlChange",(()=>e(document.URL)),t)},C=lodash.once((()=>(0,i.select)((()=>unsafeWindow.cid?unsafeWindow.cid:null))));let A=!1;const E=async(e,t)=>{if(!(0,r.matchCurrentPage)(r.playerUrls))return!1;const n=await C();if(null===n)return!1;const o=()=>({aid:unsafeWindow.aid,cid:unsafeWindow.cid});if(!A){let e=n;h((()=>{const{cid:t}=o();Array.isArray(t)||e===t||lodash.isNil(t)||((()=>{const e=o(),t=new CustomEvent("videoChange",{detail:e});window.dispatchEvent(t)})(),e=t)})),A=!0}return e(o()),window.addEventListener("videoChange",(t=>e(t.detail)),t),!0}},303:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentLoadTime:()=>o,componentLoadTrace:()=>r,componentResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,7234));if(!t().devMode)return;const r=e.entry;e.entry=async e=>{const{metadata:t}=e,n=performance.now();let a=r(e);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(t,c-n),i.set(t,s-n),a}}},4427:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pluginLoadTime:()=>o,pluginLoadTrace:()=>r,pluginResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,7234));if(!t().devMode)return;const r=e.setup;e.setup=async t=>{const n=performance.now();let a=r(t);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(e,c-n),i.set(e,s-n),a}}},6165:(e,t,n)=>{"use strict";n.r(t),n.d(t,{promiseLoadTime:()=>o,promiseLoadTrace:()=>r,promiseResolveTime:()=>i});const o=new Map,i=new Map,r=async(e,t)=>{const{getGeneralSettings:r}=await Promise.resolve().then(n.bind(n,7234));if(!r().devMode)return t();const a=performance.now(),c=t(),s=performance.now(),l=await c,d=performance.now();return o.set({name:e},s-a),i.set({name:e},d-a),l}},7035:(e,t,n)=>{"use strict";n.r(t),n.d(t,{logStats:()=>o});const o=(e,t)=>{const n=[...t.entries()],o=n.reduce(((e,t)=>e+t[1]),0);console.groupCollapsed(`${e} time:`,Math.round(100*o)/100+"ms",`for ${n.length} items`),n.forEach((e=>{let[t,n]=e;console.log(`%c${t.name} %c${Math.round(100*n)/100}ms ${Math.round(n/o*1e4)/100}% %c`,"color: #00A0D8","color: #888","color: unset")})),console.groupEnd()}},7789:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{JSZipLibrary:()=>JSZipLibrary,RuntimeLibrary:()=>RuntimeLibrary,SortableJSLibrary:()=>SortableJSLibrary,StreamSaverLibrary:()=>StreamSaverLibrary,protobufLibrary:()=>protobufLibrary});var _ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(9161),_meta__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(5791);function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"==typeof t?t:String(t)}function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class RuntimeLibrary{constructor(e){this.config=e,_defineProperty(this,"modulePromise",void 0)}async then(resolve,reject){try{const{url,getModule}=this.config;this.modulePromise||(this.modulePromise=(async()=>{console.log(`[Runtime Library] Start download from ${url}`);const code=await(0,_ajax__WEBPACK_IMPORTED_MODULE_0__.monkey)({url});return console.log(`[Runtime Library] Downloaded from ${url} , length = ${code.length}`),function runEval(){return eval(code); +/* eslint-disable no-underscore-dangle */(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Gn extends Nn{constructor(e){super(e),Wn(this,"vnodeManager",void 0),this.vnodeManager=new Hn(this.getVNodeRoot(e)),this.vnodeManager.isEnd=e=>e.props?.reply?0===e.props?.reply.replies.length:Boolean(e.props?.subReply)}beforeParse(e){const t=new Set;e.forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e)),dqa(e,".sub-reply-item").forEach((e=>{t.add(this.vnodeManager.traverseToRoot(e))}))})),t.forEach((e=>this.vnodeManager.exposeVNode(e._vnode)))}getReplyFromVueProps(e){const t=e._vnode?.props;return t?.reply??t?.subReply}getReplyItemElement(e,t){const[n]=dqa(e,".sub-reply-item").filter((e=>this.getReplyFromVueProps(e).rpid_str===t));return n}getVNodeRoot(e){return e.__vue_app__?e:e.parentElement.__vue_app__?e.parentElement:null}addMenuItem(e,t){if(!this.element.contains(e.element))return;const n=dq(e.element,".operation-list"),{className:o,text:i,action:r}=t;if(!n||dq(n,`.${o}`))return;const a=document.createElement("li");a.classList.add(o,"operation-option"),a.innerHTML=`${i}`,a.addEventListener("click",(e=>{r(e),n.style.display="none"})),n.appendChild(a)}parseCommentItem(e){const t=this.getReplyFromVueProps(e);if(!t)throw new Error("Invalid comment item");const n=()=>t.replies?t.replies.map((n=>new Tn({id:n.rpid_str,element:this.getReplyItemElement(e,n.rpid_str),userId:n.member.mid,userName:n.member.uname,content:n.content.message,time:1e3*n.ctime,likes:n.like,vueProps:t}))):[],o=new jn({id:t.rpid_str,element:e,userId:t.member.mid,userName:t.member.uname,content:t.content.message,time:1e3*t.ctime,likes:t.like,pictures:t.content?.pictures?.map((e=>e.img_src)),replies:n(),vueProps:t});if(o.replies.length{performance.mark(`parseReplies start ${o.id}`);const t=[];e.forEach((e=>{e.addedNodes.forEach((e=>{e instanceof HTMLElement&&e.matches(".sub-reply-item")&&t.push(e)}))})),0!==t.length&&(this.beforeParse(t),o.replies=n(),0!==e.length&&o.dispatchRepliesUpdate(o.replies),performance.mark(`parseReplies end ${o.id}`),performance.measure(`parseReplies ${o.id}`,`parseReplies start ${o.id}`,`parseReplies end ${o.id}`))}))}return o}getCommentId(e){const t=this.getReplyFromVueProps(e);if(!t?.rpid_str)throw new Error("Invalid comment item");return t.rpid_str}static isV2Area(e){return e.__vue_app__||e.parentElement?.__vue_app__}}const Qn=e=>Gn.isV2Area(e)?new Gn(e):new qn(e);function Yn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Xn{constructor(){Yn(this,"commentAreas",[]),Yn(this,"commentAreaCallbacks",[])}init(){(0,R.allMutations)((e=>{e.forEach((e=>{e.addedNodes.forEach((e=>this.observeAreas(e)))}))})),dqa(Xn.commentAreaClasses.map((e=>`.${e}`)).join(",")).forEach((e=>this.observeAreas(e)))}observeAreas(e){if(e instanceof HTMLElement&&Xn.commentAreaClasses.some((t=>e.classList.contains(t)))){const t=Qn(e);this.commentAreas.push(t),t.observeItems(),this.commentAreaCallbacks.forEach((e=>e.added?.(t)));const[n]=(0,R.childList)(t.element.parentElement,(e=>{e.forEach((e=>{e.removedNodes.forEach((e=>{e===t.element&&((0,te.deleteValue)(this.commentAreas,(e=>e===t)),this.commentAreaCallbacks.forEach((e=>e.removed?.(t))),t.destroy(),n.disconnect())}))}))}))}}forEachCommentArea(e){const t=Nn.resolveCallbackPair(e);this.commentAreas.forEach((e=>t.added?.(e))),this.commentAreaCallbacks.push(t)}forEachCommentItem(e){this.forEachCommentArea((t=>t.forEachCommentItem(e)))}}Yn(Xn,"commentAreaClasses",["bili-comment","bb-comment"]);const Kn=new Xn;(0,V.contentLoaded)((()=>{Kn.init()}));const Jn=e=>{Kn.forEachCommentArea(e)},_n=e=>{Kn.forEachCommentItem(e)},$n=(e,t)=>{Kn.forEachCommentArea((n=>n.addMenuItem(e,t)))};var eo=n(5647);const to=JSON.parse('[[{"name":"首页","route":"/","tid":"","locid":23,"sub":[]},{"name":"动画","route":"douga","tid":1,"locid":52,"count":"","subMenuSize":162,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2507,"leftId":2452,"rightId":2453},"sub":[{"name":"MAD·AMV","route":"mad","tid":24,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":151},"desc":"具有一定制作程度的动画或静画的二次创作视频","url":"//www.bilibili.com/video/douga-mad-1.html"},{"name":"MMD·3D","route":"mmd","tid":25,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":152},"desc":"使用MMD(MikuMikuDance)和其他3D建模类软件制作的视频","url":"//www.bilibili.com/video/douga-mmd-1.html"},{"name":"短片·手书·配音","route":"voice","tid":47,"ps":15,"rps":10,"desc":"追求创新并具有强烈特色的短片、手书(绘)及ACG相关配音","url":"//www.bilibili.com/video/douga-voice-1.html"},{"name":"手办·模玩","route":"garage_kit","tid":210,"ps":15,"rps":10,"desc":"手办模玩的测评、改造或其他衍生内容","url":""},{"name":"特摄","route":"tokusatsu","tid":86,"ps":15,"rps":10,"desc":"特摄相关衍生视频","url":"//www.bilibili.com/video/cinephile-tokusatsu.html"},{"name":"综合","route":"other","tid":27,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":153},"desc":"以动画及动画相关内容为素材,包括但不仅限于音频替换、杂谈、排行榜等内容","url":"//www.bilibili.com/video/douga-else-1.html"}]},{"name":"番剧","route":"anime","tid":13,"url":"//www.bilibili.com/anime/","takeOvered":true,"count":"","subMenuSize":172,"combination":true,"sub":[{"name":"连载动画","tid":33,"route":"serial","desc":"当季连载的动画番剧","url":"//www.bilibili.com/video/bangumi-two-1.html"},{"name":"完结动画","tid":32,"route":"finish","desc":"已完结的动画番剧合集","url":"//www.bilibili.com/video/part-twoelement-1.html"},{"name":"资讯","tid":51,"route":"information","desc":"动画番剧相关资讯视频","url":"//www.bilibili.com/video/douga-else-information-1.html"},{"name":"官方延伸","tid":152,"route":"offical","desc":"动画番剧为主题的宣传节目、采访视频,及声优相关视频","url":"//www.bilibili.com/video/bagumi_offical_1.html"},{"name":"新番时间表","url":"//www.bilibili.com/anime/timeline/","desc":""},{"name":"番剧索引","url":"//www.bilibili.com/anime/index/","desc":""}]},{"name":"国创","tid":167,"route":"guochuang","url":"//www.bilibili.com/guochuang/","takeOvered":true,"count":"","subMenuSize":214,"combination":true,"sub":[{"name":"国产动画","tid":153,"route":"chinese","desc":"我国出品的PGC动画","url":"//www.bilibili.com/video/bangumi_chinese_1.html"},{"name":"国产原创相关","tid":168,"route":"original","desc":"","url":"//www.bilibili.com/video/guochuang-fanvid-1.html"},{"name":"布袋戏","tid":169,"route":"puppetry","desc":"","url":"//www.bilibili.com/video/glove-puppetry-1.html"},{"name":"动态漫·广播剧","tid":195,"route":"motioncomic","desc":"","url":""},{"name":"资讯","tid":170,"route":"information","desc":"","url":"//www.bilibili.com/video/guochuang-offical-1.html"},{"name":"新番时间表","url":"//www.bilibili.com/guochuang/timeline/","desc":""},{"name":"国产动画索引","url":"//www.bilibili.com/guochuang/index/","desc":""}]},{"name":"音乐","route":"music","tid":3,"locid":58,"count":"","subMenuSize":268,"slider":{"width":620,"height":220},"viewTag":true,"customComponent":{"name":"Energy","titleId":2511,"leftId":2462,"rightId":3131,"rightType":"slide"},"sub":[{"name":"原创音乐","route":"original","tid":28,"ps":15,"rps":10,"viewHotTag":true,"ad":{"active":true,"dataLocId":243},"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"个人或团队制作以音乐为主要原创因素的歌曲或纯音乐","url":"//www.bilibili.com/video/music-original-1.html"},{"name":"翻唱","route":"cover","tid":31,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":245},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"一切非官方的人声再演绎歌曲作品","url":"//www.bilibili.com/video/music-Cover-1.html"},{"name":"VOCALOID·UTAU","route":"vocaloid","tid":30,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以雅马哈Vocaloid和UTAU引擎为基础,包含其他调教引擎,运用各类音源进行的歌曲创作内容","url":"//www.bilibili.com/video/music-vocaloid-1.html"},{"name":"电音","route":"electronic","tid":194,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"以电子合成器、音乐软体等产生的电子声响制作的音乐","url":"#"},{"name":"演奏","route":"perform","tid":59,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":247},"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"传统或非传统乐器及器材的演奏作品","url":"//www.bilibili.com/video/music-perform-1.html"},{"name":"MV","route":"mv","tid":193,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐录影带,为搭配音乐而拍摄或制作的视频","url":"//www.bilibili.com/video/music-coordinate-1.html"},{"name":"音乐现场","route":"live","tid":29,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"音乐实况表演视频","url":"//www.bilibili.com/video/music-oped-1.html"},{"name":"音乐综合","route":"other","tid":130,"ps":15,"rps":10,"viewHotTag":true,"dpConfig":[{"name":"一日","value":1},{"name":"三日","value":3}],"desc":"收录无法定义到其他音乐子分区的音乐视频","url":"//www.bilibili.com/video/music-collection-1.html"},{"name":"音频","customZone":"Audio","route":"audio","url":"//www.bilibili.com/audio/home?musicType=music"},{"name":"说唱","url":"//www.bilibili.com/v/rap"}]},{"name":"舞蹈","route":"dance","tid":129,"locid":64,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2513,"leftId":2472,"rightId":2473},"sub":[{"name":"宅舞","route":"otaku","tid":20,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":249},"desc":"与ACG相关的翻跳、原创舞蹈","url":"//www.bilibili.com/video/dance-1.html"},{"name":"街舞","route":"hiphop","tid":198,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":251},"desc":"收录街舞相关内容,包括赛事现场、舞室作品、个人翻跳、FREESTYLE等","url":""},{"name":"明星舞蹈","route":"star","tid":199,"ps":15,"rps":10,"desc":"国内外明星发布的官方舞蹈及其翻跳内容","url":""},{"name":"中国舞","route":"china","tid":200,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":253},"desc":"传承中国艺术文化的舞蹈内容,包括古典舞、民族民间舞、汉唐舞、古风舞等","url":""},{"name":"舞蹈综合","route":"three_d","tid":154,"ps":15,"rps":10,"desc":"收录无法定义到其他舞蹈子分区的舞蹈视频","url":""},{"name":"舞蹈教程","route":"demo","tid":156,"ps":10,"rps":6,"desc":"镜面慢速,动作分解,基础教程等具有教学意义的舞蹈视频","url":"//www.bilibili.com/video/dance-demo-1.html"}]},{"name":"游戏","route":"game","tid":4,"locid":70,"count":"","subMenuSize":240,"slider":{"width":470,"height":216},"viewTag":true,"customComponent":{"name":"Energy","titleId":3761,"leftId":3765,"rightId":3775,"rightType":"slide"},"recommendCardType":"GameGroomBox","sub":[{"name":"单机游戏","route":"stand_alone","tid":17,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":255},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以所有平台(PC、主机、移动端)的单机或联机游戏为主的视频内容,包括游戏预告、CG、实况解说及相关的评测、杂谈与视频剪辑等","url":"//www.bilibili.com/video/videogame-1.html"},{"name":"电子竞技","route":"esports","tid":171,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":257},"desc":"具有高对抗性的电子竞技游戏项目,其相关的赛事、实况、攻略、解说、短剧等视频。","url":"//www.bilibili.com/video/esports-1.html"},{"name":"手机游戏","route":"mobile","tid":172,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"desc":"以手机及平板设备为主要平台的游戏,其相关的实况、攻略、解说、短剧、演示等视频。","url":"//www.bilibili.com/video/mobilegame-1.html"},{"name":"网络游戏","route":"online","tid":65,"ps":10,"rps":7,"rankshow":1,"viewHotTag":true,"ad":{"active":true,"dataLocId":259},"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由网络运营商运营的多人在线游戏,以及电子竞技的相关游戏内容。包括赛事、攻略、实况、解说等相关视频","url":"//www.bilibili.com/video/onlinegame-1.html"},{"name":"桌游棋牌","route":"board","tid":173,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"desc":"桌游、棋牌、卡牌对战等及其相关电子版游戏的实况、攻略、解说、演示等视频。","url":"//www.bilibili.com/video/boardgame-1.html"},{"name":"GMV","route":"gmv","tid":121,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"由游戏素材制作的MV视频。以游戏内容或CG为主制作的,具有一定创作程度的MV类型的视频","url":"//www.bilibili.com/video/gmv-1.html"},{"name":"音游","route":"music","tid":136,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"各个平台上,通过配合音乐与节奏而进行的音乐类游戏视频","url":"//www.bilibili.com/video/music-game-1.html"},{"name":"Mugen","route":"mugen","tid":19,"ps":5,"rps":3,"rankshow":1,"viewHotTag":true,"dpConfig":[{"name":"三日","value":3},{"name":"一日","value":1},{"name":"一周","value":7}],"desc":"以Mugen引擎为平台制作、或与Mugen相关的游戏视频","url":"//www.bilibili.com/video/game-mugen-1.html"},{"name":"游戏赛事","url":"//www.bilibili.com/v/game/match/","newIcon":true}]},{"name":"知识","route":"knowledge","tid":36,"locid":76,"count":"","subMenuSize":172,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2058,"leftId":2047,"rightId":2048},"sub":[{"name":"科学科普","route":"science","tid":201,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":261},"desc":"回答你的十万个为什么"},{"name":"社科·法律·心理","route":"social_science","tid":124,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":263},"desc":"基于社会科学、法学、心理学展开或个人观点输出的知识视频"},{"name":"人文历史","route":"humanity_history","tid":228,"ps":15,"rps":10,"desc":"看看古今人物,聊聊历史过往,品品文学典籍"},{"name":"财经商业","route":"business","tid":207,"ps":15,"rps":10,"desc":"说金融市场,谈宏观经济,一起畅聊商业故事"},{"name":"校园学习","route":"campus","tid":208,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":265},"desc":"老师很有趣,学生也有才,我们一起搞学习"},{"name":"职业职场","route":"career","tid":209,"ps":15,"rps":10,"desc":"职业分享、升级指南,一起成为最有料的职场人"},{"name":"设计·创意","route":"design","tid":229,"ps":15,"rps":10,"desc":"天马行空,创意设计,都在这里"},{"name":"野生技能协会","route":"skill","tid":122,"ps":15,"rps":10,"desc":"技能党集合,是时候展示真正的技术了"}]},{"name":"科技","route":"tech","tid":188,"locid":2977,"count":"","subMenuSize":80,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2980,"leftId":2978,"rightId":2979},"sub":[{"name":"数码","route":"digital","tid":95,"ps":15,"rps":10,"viewHotTag":true,"desc":"科技数码产品大全,一起来做发烧友","url":"#"},{"name":"软件应用","route":"application","tid":230,"ps":15,"rps":10,"viewHotTag":true,"desc":"超全软件应用指南","url":"#"},{"name":"计算机技术","route":"computer_tech","tid":231,"ps":15,"rps":10,"viewHotTag":true,"desc":"研究分析、教学演示、经验分享......有关计算机技术的都在这里","url":"#"},{"name":"工业·工程·机械","route":"industry","tid":232,"ps":15,"rps":10,"viewHotTag":true,"desc":"前方高能,机甲重工即将出没","url":"#"},{"name":"极客DIY","route":"diy","tid":233,"ps":15,"rps":10,"viewHotTag":true,"desc":"炫酷技能,极客文化,硬核技巧,准备好你的惊讶","url":"#"}]},{"name":"运动","route":"sports","tid":234,"locid":4639,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4646,"rightId":4652,"rightType":"slide"},"sub":[{"name":"篮球·足球","route":"basketballfootball","tid":235,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4656},"desc":"与篮球、足球相关的视频,包括但不限于篮足球赛事、教学、评述、剪辑、剧情等相关内容","url":"#"},{"name":"健身","route":"aerobics","tid":164,"ps":15,"rps":10,"desc":"与健身相关的视频,包括但不限于瑜伽、CrossFit、健美、力量举、普拉提、街健等相关内容","url":"//www.bilibili.com/video/fashion-body-1.html"},{"name":"竞技体育","route":"athletic","tid":236,"ps":15,"rps":10,"desc":"与竞技体育相关的视频,包括但不限于乒乓、羽毛球、排球、赛车等竞技项目的赛事、评述、剪辑、剧情等相关内容","url":"#"},{"name":"运动文化","route":"culture","tid":237,"ps":15,"rps":10,"desc":"与运动文化相关的视频,包络但不限于球鞋、球衣、球星卡等运动衍生品的分享、解读,体育产业的分析、科普等相关内容","url":"#"},{"name":"运动综合","route":"comprehensive","tid":238,"ps":15,"rps":10,"desc":"与运动综合相关的视频,包括但不限于钓鱼、骑行、滑板等日常运动分享、教学、Vlog等相关内容","url":"#"}]},{"name":"汽车","route":"car","tid":223,"locid":4428,"isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4435,"rightId":4441,"rightType":"slide"},"sub":[{"name":"汽车生活","route":"life","tid":176,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4445},"desc":"分享汽车及出行相关的生活体验类视频","url":"#"},{"name":"汽车文化","route":"culture","tid":224,"ps":15,"rps":10,"desc":"车迷的精神圣地,包括汽车赛事、品牌历史、汽车改装、经典车型和汽车模型等","url":"#"},{"name":"汽车极客","route":"geek","tid":225,"ps":15,"rps":10,"desc":"汽车硬核达人聚集地,包括DIY造车、专业评测和技术知识分享","url":"#"},{"name":"摩托车","route":"motorcycle","tid":240,"ps":15,"rps":10,"desc":"骑士们集合啦","url":"#"},{"name":"智能出行","route":"smart","tid":226,"ps":15,"rps":10,"desc":"探索新能源汽车和未来智能出行的前沿阵地","url":"#"},{"name":"购车攻略","route":"strategy","tid":227,"ps":15,"rps":10,"desc":"丰富详实的购车建议和新车体验","url":"#"}]},{"name":"生活","route":"life","tid":160,"locid":88,"count":"","subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2062,"leftId":1674,"rightId":1670},"sub":[{"name":"搞笑","route":"funny","tid":138,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":273},"desc":"各种沙雕有趣的搞笑剪辑,挑战,表演,配音等视频","url":"//www.bilibili.com/video/ent_funny_1.html","locid":4204,"recommendId":4210,"slider":{"width":620,"height":220},"customComponent":{"name":"Energy","leftId":4212,"rightId":4218,"rightType":"slide"}},{"name":"家居房产","route":"home","tid":239,"ps":15,"rps":10,"desc":"与买房、装修、居家生活相关的分享","url":"#"},{"name":"手工","route":"handmake","tid":161,"ps":15,"rps":10,"desc":"手工制品的制作过程或成品展示、教程、测评类视频","url":"//www.bilibili.com/video/ent-handmake-1.html"},{"name":"绘画","route":"painting","tid":162,"ps":15,"rps":10,"desc":"绘画过程或绘画教程,以及绘画相关的所有视频","url":"//www.bilibili.com/video/ent-painting-1.html"},{"name":"日常","route":"daily","tid":21,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":275},"desc":"记录日常生活,分享生活故事","url":"//www.bilibili.com/video/ent-life-1.html"}]},{"name":"美食","route":"food","tid":211,"locid":4243,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4258,"rightId":4264},"sub":[{"name":"美食制作","route":"make","tid":76,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":4268},"desc":"学做人间美味,展示精湛厨艺","url":"#"},{"name":"美食侦探","route":"detective","tid":212,"ps":15,"rps":10,"desc":"寻找美味餐厅,发现街头美食","url":"#"},{"name":"美食测评","route":"measurement","tid":213,"ps":15,"rps":10,"desc":"吃货世界,品尝世间美味","url":"#"},{"name":"田园美食","route":"rural","tid":214,"ps":15,"rps":10,"desc":"品味乡野美食,寻找山与海的味道","url":"#"},{"name":"美食记录","route":"record","tid":215,"ps":15,"rps":10,"desc":"记录一日三餐,给生活添一点幸福感","url":"#"}]},{"name":"动物圈","route":"animal","tid":217,"locid":4365,"count":"","isHide":true,"subMenuSize":164,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","leftId":4376,"rightId":4381,"rightType":"slide"},"sub":[{"name":"喵星人","route":"cat","tid":218,"ps":15,"rps":10,"desc":"喵喵喵喵喵","url":"#","ad":{"active":true,"dataLocId":4385}},{"name":"汪星人","route":"dog","tid":219,"ps":15,"rps":10,"desc":"汪汪汪汪汪","url":"#"},{"name":"大熊猫","route":"panda","tid":220,"ps":15,"rps":10,"desc":"芝麻汤圆营业中","url":"#"},{"name":"野生动物","route":"wild_animal","tid":221,"ps":15,"rps":10,"desc":"内有“猛兽”出没","url":"#"},{"name":"爬宠","route":"reptiles","tid":222,"ps":15,"rps":10,"desc":"鳞甲有灵","url":"#"},{"name":"动物综合","route":"animal_composite","tid":75,"ps":15,"rps":10,"desc":"收录除上述子分区外,其余动物相关视频以及非动物主体或多个动物主体的动物相关延伸内容","url":"#"}]},{"name":"鬼畜","route":"kichiku","tid":119,"locid":100,"count":"","subMenuSize":182,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2509,"leftId":2482,"rightId":2483},"sub":[{"name":"鬼畜调教","route":"guide","tid":22,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":285},"desc":"使用素材在音频、画面上做一定处理,达到与BGM一定的同步感","url":"//www.bilibili.com/video/ent-Kichiku-1.html"},{"name":"音MAD","route":"mad","tid":26,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":287},"desc":"使用素材音频进行一定的二次创作来达到还原原曲的非商业性质稿件","url":"//www.bilibili.com/video/douga-kichiku-1.html"},{"name":"人力VOCALOID","route":"manual_vocaloid","tid":126,"ps":15,"rps":10,"desc":"将人物或者角色的无伴奏素材进行人工调音,使其就像VOCALOID一样歌唱的技术","url":"//www.bilibili.com/video/kichiku-manual_vocaloid-1.html"},{"name":"鬼畜剧场","route":"theatre","tid":216,"ps":15,"rps":10,"desc":"使用素材进行人工剪辑编排的有剧情的作品"},{"name":"教程演示","route":"course","tid":127,"ps":10,"rps":6,"rightComponent":{"name":"CmImgList","id":148},"ad":{"active":true,"dataLocId":289},"hideDropdown":false,"desc":"鬼畜相关的教程演示","url":"//www.bilibili.com/video/kichiku-course-1.html"}]},{"name":"时尚","route":"fashion","tid":155,"locid":94,"count":"","subMenuSize":124,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2515,"leftId":2492,"rightId":2493},"sub":[{"name":"美妆护肤","route":"makeup","tid":157,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":279},"desc":"彩妆护肤、美甲美发、仿妆、医美相关内容分享或产品测评","url":"//www.bilibili.com/video/fashion-makeup-fitness-1.html"},{"name":"穿搭","route":"clothing","tid":158,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":281},"desc":"穿搭风格、穿搭技巧的展示分享,涵盖衣服、鞋靴、箱包配件、配饰(帽子、钟表、珠宝首饰)等","url":"//www.bilibili.com/video/fashion-clothing-1.html"},{"name":"时尚潮流","route":"trend","tid":159,"ps":15,"rps":10,"desc":"时尚街拍、时装周、时尚大片,时尚品牌、潮流等行业相关记录及知识科普","url":"#"}]},{"name":"资讯","route":"information","tid":202,"locid":4076,"count":"","subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"sub":[{"name":"热点","route":"hotspot","tid":203,"ps":18,"rps":10,"desc":"全民关注的时政热门资讯"},{"name":"环球","route":"global","tid":204,"ps":18,"rps":10,"desc":"全球范围内发生的具有重大影响力的事件动态"},{"name":"社会","route":"social","tid":205,"ps":18,"rps":10,"desc":"日常生活的社会事件、社会问题、社会风貌的报道"},{"name":"综合","route":"multiple","tid":206,"ps":18,"rps":10,"desc":"除上述领域外其它垂直领域的综合资讯"}]},{"name":"娱乐","route":"ent","tid":5,"locid":82,"count":"","subMenuSize":62,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2067,"leftId":2065,"rightId":2066},"sub":[{"name":"综艺","route":"variety","tid":71,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":267},"desc":"所有综艺相关,全部一手掌握!","url":"//www.bilibili.com/video/ent-variety-1.html"},{"name":"娱乐杂谈","route":"talker","tid":241,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":269},"desc":"娱乐人物解读、娱乐热点点评、娱乐行业分析"},{"name":"粉丝创作","route":"fans","tid":242,"ps":15,"rps":10,"desc":"粉丝向创作视频"},{"name":"明星综合","route":"celebrity","tid":137,"ps":15,"rps":10,"desc":"娱乐圈动态、明星资讯相关"}]},{"name":"影视","route":"cinephile","tid":181,"locid":2211,"count":"","subMenuSize":84,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":2309,"leftId":2307,"rightId":2308},"sub":[{"name":"影视杂谈","route":"cinecism","tid":182,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2212},"desc":"影视评论、解说、吐槽、科普等","url":"//www.bilibili.com/video/cinephile-cinecism.html"},{"name":"影视剪辑","route":"montage","tid":183,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2213},"desc":"对影视素材进行剪辑再创作的视频","url":"//www.bilibili.com/video/cinephile-montage.html"},{"name":"短片","route":"shortfilm","tid":85,"ps":15,"rps":10,"desc":"追求自我表达且具有特色的短片","url":"//www.bilibili.com/video/cinephile-shortfilm.html"},{"name":"预告·资讯","route":"trailer_info","tid":184,"ps":15,"rps":10,"ad":{"active":true,"dataLocId":2214},"desc":"影视类相关资讯,预告,花絮等视频","url":"//www.bilibili.com/video/cinephile-trailer-info.html"}]},{"name":"纪录片","route":"documentary","tid":177,"url":"//www.bilibili.com/documentary/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"人文·历史","tid":37,"route":"history","dise":"","url":"//www.bilibili.com/video/doco-history.html"},{"name":"科学·探索·自然","tid":178,"route":"science","dise":"","url":"//www.bilibili.com/video/doco-science.html"},{"name":"军事","tid":179,"route":"military","dise":"","url":"//www.bilibili.com/video/doco-military.html"},{"name":"社会·美食·旅行","tid":180,"route":"travel","dise":"","url":"//www.bilibili.com/video/doco-travel.html"},{"name":"纪录片索引","url":"//www.bilibili.com/documentary/index/"}]},{"name":"电影","route":"movie","tid":23,"url":"//www.bilibili.com/movie/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"华语电影","tid":147,"route":"chinese","desc":"","url":"//www.bilibili.com/video/movie_chinese_1.html"},{"name":"欧美电影","tid":145,"route":"west","desc":"","url":"//www.bilibili.com/video/movie_west_1.html"},{"name":"日本电影","tid":146,"route":"japan","desc":"","url":"//www.bilibili.com/video/movie_japan_1.html"},{"name":"其他国家","tid":83,"route":"movie","desc":"","url":"//www.bilibili.com/video/movie-movie-1.html"},{"name":"电影索引","url":"//www.bilibili.com/movie/index/"}]},{"name":"电视剧","route":"tv","tid":11,"url":"//www.bilibili.com/tv/","count":"","takeOvered":true,"hasParent":true,"combination":true,"sub":[{"name":"国产剧","tid":185,"route":"mainland","desc":"","url":"//www.bilibili.com/video/tv-mainland.html"},{"name":"海外剧","tid":187,"route":"overseas","desc":"","url":"//www.bilibili.com/video/tv-overseas.html"},{"name":"电视剧索引","url":"//www.bilibili.com/tv/index/"}]},{"name":"虚拟UP主","route":"virtual","locid":4735,"count":"","isHide":true,"subMenuSize":60,"slider":{"width":620,"height":220},"viewTag":false,"customComponent":{"name":"Energy","titleId":4754,"leftId":4756},"sub":[{"name":"游戏","route":"game","tid":4,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/game"},{"name":"音乐","route":"music","tid":3,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/music"},{"name":"动画","route":"douga","tid":1,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/douga"},{"name":"其他","route":"other","tid":0,"ps":18,"rps":10,"url":"//www.bilibili.com/v/virtual/other"}]}],[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}],[{"name":"会员购","url":"//show.bilibili.com/platform/home.html","icon":"icon-vip-buy"},{"name":"游戏中心","url":"//game.bilibili.com","icon":"icon-game"},{"name":"画友","url":"http://h.bilibili.com","icon":"icon-hy"},{"name":"芒果TV","url":"//www.bilibili.com/mango","icon":"icon-mango"}],[{"name":"专栏","report":"article","url":"//www.bilibili.com/read/home","icon":"read"},{"name":"直播","report":"live","url":"//live.bilibili.com","icon":"live","sub":[{"url":"//live.bilibili.com/all","name":"全部直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=2&areaId=0","name":"网游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=3&areaId=0","name":"手游直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=6&areaId=0","name":"单机直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=1&areaId=0","name":"娱乐直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=5&areaId=0","name":"电台直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=9&areaId=0","name":"虚拟直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=10&areaId=0","name":"生活直播"},{"url":"//live.bilibili.com/p/eden/area-tags?parentAreaId=11&areaId=0","name":"学习直播"}]},{"name":"活动","report":"activity","url":"//www.bilibili.com/blackboard/activity-list.html","icon":"activit"},{"name":"课堂","report":"cheese","url":"//www.bilibili.com/cheese/","icon":"zhishi"},{"name":"小黑屋","report":"blackroom","url":"//www.bilibili.com/blackroom/","icon":"blackroom"},{"name":"新歌热榜","report":"musicplus","url":"//www.bilibili.com/v/musicplus/","icon":"musicplus"}]]'),no=e=>e.startsWith("//")?`https:${e}`:e.replace("http:","https:"),oo=to[0].filter((e=>"string"!=typeof e.tid)),io=to[3],ro={};oo.forEach((e=>{const t=no(e.url||`https://www.bilibili.com/v/${e.route}/`);ro[e.name]={icon:e.route,route:e.route,code:e.tid,link:t,subCategories:e.sub?Object.fromEntries(e.sub.map((t=>{const n=no(t.route?`https://www.bilibili.com/v/${e.route}/${t.route}/`:t.url);return[t.name,n]}))):null}})),io.forEach((e=>{ro[e.name]={icon:e.icon,code:null,route:e.route,link:no(e.url),subCategories:e.sub?Object.fromEntries(e.sub.map((e=>[e.name,no(e.url)]))):null}}));const ao=ro,co=Object.fromEntries(oo.map((e=>[e.route,e.tid]))),so=Object.fromEntries(Object.values(ro).map((e=>[e.icon,e.link]))),lo=async()=>{if(document.getElementById("be-category-icons"))return;const{default:e}=await Promise.resolve().then(n.t.bind(n,3066,17));document.body.insertAdjacentHTML("beforeend",e)};var mo=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"translate-container"},[e.working||e.translated?e._e():t("div",{staticClass:"translate",on:{click:function(t){return e.translate()}}},[t("VIcon",{attrs:{size:14,icon:"mdi-earth"}}),e._v("翻译\n ")],1),e._v(" "),e.translated?t("div",{staticClass:"translated"},[t("a",{attrs:{href:e.activeTranslator&&e.activeTranslator.link,target:"_blank"}},[e._v(" 翻译自 ")]),e._v(" "),t("VDropdown",{attrs:{items:Object.values(e.translateProviders),value:e.activeTranslator,"key-mapper":e=>e.name},on:{change:function(t){return e.changeTranslator(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t.name)+"\n ")]}}],null,!1,1956376614)})],1):e._e(),e._v(" "),e.working?t("VIcon",{staticClass:"translating mdi-spin",attrs:{size:18,icon:"mdi-loading"}}):e._e(),e._v(" "),!e.working&&e.translated?t("div",{staticClass:"translate-result",domProps:{textContent:e._s(e.result)}}):e._e()],1)};mo._withStripped=!0;var fo=n(1372);const uo=Vue.extend({components:{VDropdown:be.VDropdown,VIcon:be.VIcon},props:{text:{type:String,required:!0}},data:()=>({result:"",working:!1,translateProviders:fo.WK,activeTranslator:{}}),computed:{translated(){return""!==this.result}},mounted(){document.body.classList.add("machine-translator-enabled")},methods:{changeTranslator(e){(0,J.getComponentSettings)("i18n").options.translator=e.name,this.translate()},async translate(){try{this.working=!0;const e=this.text.replace(/#(.+?)#/g,"");this.activeTranslator=(0,fo.Ty)();const t=this.activeTranslator;this.result=await t.translate(e)}catch(e){(0,de.logError)(e)}finally{this.working=!1}}}});var po=n(5286),bo=n.n(po),ho={insert:"head",singleton:!1};lt()(bo(),ho);bo().locals;const go=(0,ut.Z)(uo,mo,[],!1,null,null,null).exports,Fo=e=>{void 0===e.radio&&(e.radio=!1);const{name:t,switches:o}=e,i={};return Object.entries(o).forEach((e=>{let[t,{displayName:n,defaultValue:o}]=e;i[`switch-${t}`]={defaultValue:o,displayName:n,hidden:!0}})),o=>{const r=`${o.displayName}选项`,a={componentName:o.name,optionDisplayName:r};Object.assign(e,a),i[t]={defaultValue:e,displayName:r},o.options={...o.options,...i},o.widget||(o.widget={component:()=>Promise.resolve().then(n.bind(n,3932)).then((e=>e.default)),options:e});const c=o.entry;return o.entry=async function(){for(var e=arguments.length,t=new Array(e),n=0;n{e.startsWith("switch-")&&(0,J.addComponentListener)(`${i}.${e}`,(t=>{document.body.classList.toggle(`${i}-${e}`,t)}),!0)}))},o}},vo=e=>e,wo=e=>e,yo=e=>{const t=(e=>{const t={},n=Object.entries(e);for(const[e,{displayName:o,defaultValue:i}]of n)t[`switch-${e}`]={defaultValue:i,displayName:o,hidden:!0};return(e,n)=>(t[n.name]={defaultValue:n,displayName:n.optionDisplayName},{...e,...t})})(e.switches);return o=>{const i=((e,t,n)=>({...e,radio:void 0!==e.radio&&e.radio,dimAt:e.dimAt,componentName:t,optionDisplayName:n}))(e,o.name,`${o.displayName}选项`);return o.widget||(o.widget=(e=>({component:()=>Promise.resolve().then(n.bind(n,3932)).then((e=>e.default)),options:e}))(i)),o.options=t(o.options,i),o.entry=(e=>{const t=e.entry;return function(){const n=t(...arguments),o=(0,J.getComponentSettings)(e.name).options;return Object.keys(o).forEach((t=>{t.startsWith("switch-")&&(0,J.addComponentListener)(`${e.name}.${t}`,(n=>{document.body.classList.toggle(`${e.name}-${t}`,n)}),!0)})),n}})(o),o}},xo=yo;const ko={builtInComponents:he,component:ge,userComponent:Fe,styledComponent:c,define:ye,description:xe,switchOptions:E,launchBar:{LaunchBar:n(6423).Z},feeds:{api:l,BangumiCard:pt,UpInfo:wt,VideoCard:Et,ColumnCard:Pt,disableProfilePopup:d,notify:m},video:{assUtils:f,playerLight:p,playerAgent:rn,videoActions:b,videoDanmaku:h,videoInfo:g,videoQuality:F,videoContextMenu:v,videoControlBar:w,videoCover:y,watchlater:s,xmlUtils:u},live:{liveControlBar:x,liveSocket:k},utils:{commentApis:C,categories:{updater:eo,data:A}},i18N:{machineTranslator:{MachineTranslator:go}}};var Co=n(6118),Ao=n(4602),Eo=n(6695);const Bo={style:Co,plugin:Ao,data:Ee,hook:Eo},Do={ajax:B,cdnTypes:D,download:I,dialog:z,externalInput:S,filePicker:P,installFeature:M,horizontalScroll:o,lifeCycle:V,loadingMode:T,localStorage:L,meta:j,observer:R,reorder:i,runtimeLibrary:Q,spinQuery:Y,style:X,textColor:K,userInfo:r,version:ee,settings:J,toast:ue,themeColor:pe,utils:{...te,constants:ne,formatters:oe,title:ie,i18n:re,lazyPanel:a,log:de,sort:me,urls:fe},ui:be,componentApis:ko,pluginApis:Bo},Io={ajax:B,...D,...I,...z,...S,...P,...M,...o,lifeCycle:V,...T,...L,...j,observer:R,...i,runtimeLibrary:Q,spinQuery:Y,...X,...K,...r,...ee,settingsApis:J,get settings(){return J.settings},...ue,utils:{...te,...ne,...oe,...ie,...re,...a,...de,...me,...fe},ui:be,componentApis:{...ko.component,...ko.userComponent,...ko.styledComponent,...ko.launchBar,...lodash.omit(ko,"component","userComponent","styledComponent","launchBar")},pluginApis:{...Bo.style,...Bo.plugin,...Bo.data,...Bo.hook},monkeyApis:{GM_setValue,GM_getValue,GM_deleteValue,GM_xmlhttpRequest,GM_info},lodash,Vue,sandboxWindow:window,theWorld:e=>{setTimeout((()=>{}),e)}}},5450:(e,t,n)=>{"use strict";n.r(t),n.d(t,{showDialog:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-dialog",class:{open:e.open},style:{zIndex:e.zIndex}},[t("div",{staticClass:"be-dialog-header"},[e.icon?t("div",{staticClass:"be-dialog-header-icon"},[t("VIcon",{attrs:{icon:e.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"be-dialog-header-title"},["string"==typeof e.title?[e._v(e._s(e.title))]:t(e.title,{tag:"component"})],2),e._v(" "),t("div",{staticClass:"be-dialog-header-close"},[t("VButton",{attrs:{type:"transparent"},on:{click:function(t){return e.close()}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1)]),e._v(" "),t("div",{staticClass:"be-dialog-content"},["string"==typeof e.content?[e._v(e._s(e.content))]:e.content?t(e.content,e._b({tag:"component",on:{"dialog-close":function(t){return e.close()}}},"component",e.contentProps,!1)):e._e()],2)])};o._withStripped=!0;var i=n(1445);const r=Vue.extend({components:{VIcon:i.VIcon,VButton:i.VButton},props:{icon:{type:String,default:""},title:{default:null},zIndex:{type:Number,default:100002},content:{default:null},contentProps:{default:()=>({})}},data:()=>({open:!1,closeListeners:[]}),methods:{close(){return new Promise((e=>{const t=this.$el,n=this.closeListeners;n.push((()=>{this.$emit("close"),e()}));const o=e=>{e.target===this.$el&&(t.removeEventListener("transitionend",o),n.forEach((e=>e())))};t.addEventListener("transitionend",o),this.open=!1}))}}});var a=n(8332),c=n.n(a),s=n(2149),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports,f=e=>{const{icon:t,title:n,zIndex:o,content:i,contentProps:r}=e,a=new m({propsData:{icon:t,title:n,zIndex:o,content:i,contentProps:r},data:{open:!1,closeListeners:[()=>{a.$destroy(),a.$el.remove()}]}}).$mount();return document.body.appendChild(a.$el),setTimeout((()=>{a.open=!0})),a}},7138:(e,t,n)=>{"use strict";n.d(t,{h:()=>o});let o=function(e){return e.Packed="打包下载",e.Individual="单独下载",e}({})},4905:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DownloadPackage:()=>d});var o=n(7138),i=n(7789),r=n(7234),a=n(7079),c=n(5145),s=n(3085);function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.entries=e,l(this,"noEscape",!1)}add(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};null!=t&&this.entries.push({name:this.noEscape?e:(0,a.formatFilename)(e),data:t,options:n})}async blob(){const e=(0,c.useScopedConsole)("文件打包");if(0===this.entries.length)return null;if(1===this.entries.length){const{data:e}=this.entries[0];return"string"==typeof e?new Blob([e]):e}const t=new(await i.JSZipLibrary),n=e=>t.filter(((t,n)=>n.name===e)).length>0;return this.entries.forEach((o=>{let{name:i,data:r,options:a}=o;if(n(i)){let o=i;for(;n(o);){const e=i.lastIndexOf(".");o=`${i.substring(0,e)}.${(0,s.getRandomId)(8)}${i.substring(e)}`}return e.warn(`文件名 "${i}" 和已有文件冲突, 已临时更换为 "${o}"`),void t.file(o,r,a)}t.file(i,r,a)})),t.generateAsync({type:"blob"})}async emit(e){if(0===this.entries.length)return;e&&1!==this.entries.length||(e=this.entries[0].name);if((0,r.getGeneralSettings)().downloadPackageEmitMode===o.h.Individual&&this.entries.length>1)return void await Promise.all(this.entries.map((e=>d.single(e.name,e.data,e.options))));const t=await this.blob();t&&d.download(e,t)}static download(e,t){const n=(0,c.useScopedConsole)("文件下载"),o=document.createElement("a"),i=URL.createObjectURL(t);d.lastPackageUrl&&URL.revokeObjectURL(d.lastPackageUrl),d.lastPackageUrl=i;const r=(0,a.formatFilename)(e);o.setAttribute("href",i),o.setAttribute("download",r),n.log(r),document.body.appendChild(o),o.addEventListener("click",(e=>{e.stopPropagation()}),{capture:!0}),o.click(),o.remove()}static async single(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=new d;return o.add(e,t,n),o.emit()}}l(d,"lastPackageUrl","")},2686:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{LoadFeatureCodeError:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.LoadFeatureCodeError,loadFeatureCode:()=>_load_feature_code__WEBPACK_IMPORTED_MODULE_1__.loadFeatureCode,parseExternalInput:()=>parseExternalInput});var _core_file_picker__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5244),_load_feature_code__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(810);const parseExternalInput=async input=>{if(void 0===input){const files=await(0,_core_file_picker__WEBPACK_IMPORTED_MODULE_0__.pickFile)({accept:"application/json"});if(!(files.length>0))return console.error("[parseExternalInput] No file selected"),null;{const[file]=files,text=await file.text();try{return eval(`(${text})`)}catch(e){return console.error(e),null}}}else{if("string"!=typeof input)return input;try{const exports={},result=eval(input);if(Object.values(exports).length>0){const e=Object.values(exports)[0];return e}return result}catch(e){return console.error(e),null}}}},810:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadFeatureCodeError:()=>o,loadFeatureCode:()=>r});class o extends Error{}let i;const r=e=>{i||(i=(()=>{const e=new Map([[Symbol.unscopables,void 0],["unsafeWindow",unsafeWindow]]),t=new Proxy(Object.create(null),{has:()=>!0,get:(t,n)=>e.has(n)?e.get(n):window[n],set:(t,n,o)=>!e.has(n)&&(window[n]=o)}),n="BILIBILI_EVOLVED_LOAD_FEATURE_CODE_CODE_KEY_3B63D912__",i=Function("window",`with (window) {\n return eval(${n}) \n }`).bind(void 0,t);return{run(t){let r;e.set("exports",{}),e.set(n,t);try{r=i()}catch(e){throw new o(void 0,{cause:e})}const a=Object.values(e.get("exports"));return[a.length>0?a[0]:void 0,r]}}})());const[t,n]=i.run(e);return t||n}},5244:(e,t,n)=>{"use strict";let o,i;n.r(t),n.d(t,{pickFile:()=>a});const r={accept:"*",multiple:!1},a=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;const{accept:t,multiple:n}={...r,...e};o||(o=document.createElement("input"),o.type="file",o.style.display="none",document.body.appendChild(o),o.addEventListener("change",(()=>{i?.([...o.files]),i=null}))),o.accept=t,o.multiple=n,o.value="",i&&i([]);const a=await new Promise((e=>{i=e,o.click()}));return a}},1233:(e,t,n)=>{"use strict";n.r(t),n.d(t,{installFeature:()=>l,installFeatureFromCode:()=>s,tryParseZip:()=>c});var o=n(6312),i=n(6695),r=n(4602),a=n(6118);const c=async e=>{const{JSZipLibrary:t}=await Promise.resolve().then(n.bind(n,7789)),{monkey:o}=await Promise.resolve().then(n.bind(n,9161)),i=e.endsWith(".zip"),r=i?"blob":"text",a=await o({url:e,method:"GET",responseType:r});if(!i||"string"==typeof a)return a;const c=await t,s=await c.loadAsync(a),l=Object.values(s.files);if(0===l.length)throw new Error("Empty zip file");return l[0].async("text")},s=async(e,t)=>{const{loadFeatureCode:c}=await Promise.resolve().then(n.bind(n,2686)),s=c(e),{type:l,installer:d}=(()=>{if((e=>Boolean(e?.entry))(s))return{type:"component",installer:()=>(0,o.installComponent)(e)};if((e=>Boolean(e?.setup))(s))return{type:"plugin",installer:()=>(0,r.installPlugin)(e)};if((e=>Boolean(e?.style))(s))return{type:"style",installer:()=>(0,a.installStyle)(e)};throw new Error("无效的功能代码")})(),{before:m,after:f}=(0,i.getHook)(`user${lodash.startCase(l)}s.add`,e,t);await m();const u=await d();return await f(u.metadata),u},l=async e=>{const t=await c(e);return s(t,e)}},7792:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LifeCycleEventTypes:()=>c,contentLoaded:()=>r,fullyLoaded:()=>a,headLoaded:()=>i,raiseLifeCycleEvent:()=>s});var o=n(8737);const i=e=>new Promise((t=>{if(null!==document.head)t(e());else{const[n]=(0,o.childList)(document.documentElement,(()=>{null!==document.head&&(n.disconnect(),t(e()))}))}})),r=e=>new Promise((t=>{"loading"!==document.readyState?t(e()):document.addEventListener("DOMContentLoaded",(()=>t(e())))})),a=e=>new Promise((t=>{"complete"===document.readyState?t(e()):unsafeWindow.addEventListener("load",(()=>t(e())))}));let c=function(e){return e.Start="be:start",e.StyleLoaded="be:style-loaded",e.ComponentsLoaded="be:components-loaded",e.End="be:end",e}({});const s=e=>{unsafeWindow.dispatchEvent(new CustomEvent(e))}},4074:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LoadingMode:()=>o});let o=function(e){return e.Delay="延后",e.Race="同时",e}({})},711:(e,t,n)=>{"use strict";n.r(t),n.d(t,{crossOriginLocalStorage:()=>l,watchLocalStorage:()=>f});var o=n(2533),i=n(3085);const r=async e=>{const t=await(0,o.select)('iframe[src^="https://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html"][data-loaded="true"]');if(!t)throw new Error("COLS iframe not found");t.contentWindow.postMessage(e,"https://s1.hdslb.com")},a=[],c=[];window.addEventListener("message",(e=>{if("COLS_RES"===e.data.type){const t=e.data,{id:n}=t,o=()=>{const e=c.findIndex((e=>e.id===n));e<0||c[e].callback(t.value)};(()=>{const e=a.findIndex((e=>e.id===n));if(e<0)return;const[o]=a.splice(e,1);o.resolve(t.value)})(),o()}}));const s=e=>()=>new Promise((t=>{const n=(0,i.getRandomId)(32);a.push({id:n,resolve:t}),e(n)})),l={setItem:(e,t)=>s((n=>{r({id:n,type:"COLS_SET",key:e,value:t})}))(),getItem:e=>s((t=>{r({id:t,type:"COLS_GET",key:e})}))(),removeItem:e=>s((t=>{r({id:t,type:"COLS_RM",key:e})}))(),keys:e=>s((t=>{r({id:t,type:"COLS_KEYS",key:e})}))(),clear:e=>s((t=>{r({id:t,type:"COLS_CLR",key:e})}))(),addStorageListener:async(e,t)=>{const n=(0,i.getRandomId)(32);return c.push({id:n,callback:t}),r({type:"COLS_LIS",key:e,id:n}),n},removeStorageListener:async(e,t)=>{(0,i.deleteValue)(c,(e=>e.id===t)),r({type:"COLS_LIS_UN",key:e,id:t})}},d=[];let m=!1;const f=e=>{m||((0,i.createPostHook)(unsafeWindow.localStorage,"setItem",((e,t)=>{d.forEach((n=>n(e,t)))})),m=!0),d.push(e);const t=t=>{e(t.key,t.newValue)};return window.addEventListener("storage",t),()=>{const n=d.indexOf(e);n>-1&&d.splice(n,1),window.removeEventListener("storage",t)}}},5791:(e,t,n)=>{"use strict";n.r(t),n.d(t,{branches:()=>a,meta:()=>s});var o=n(113),i=n(2129),r=n(6411).compilationInfo;o.copyright=o.copyright.replace(/\[year\]/g,(new Date).getFullYear().toString());const a={stable:"master",stableCdn:"master-cdn",preview:"preview"},c=r,s={compilationInfo:c,name:GM_info.script.name,description:GM_info.script.description,get originalFilename(){const{branch:e}=c;return e===a.preview?`bilibili-evolved.${a.preview}.user.js`:"bilibili-evolved.user.js"},get updateURL(){return`${i.cdnRoots.AltCdn(c.branch)}dist/${this.originalFilename}`},get downloadURL(){return this.updateURL},...o}},8737:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allMutations:()=>h,allMutationsOn:()=>p,attributes:()=>d,attributesSubtree:()=>m,characterData:()=>f,characterDataSubtree:()=>u,childList:()=>s,childListSubtree:()=>l,intersectionObserve:()=>g,mutationObserve:()=>c,resizeObserve:()=>w,resolveTargets:()=>a,sizeChange:()=>y,urlChange:()=>k,videoChange:()=>E,visible:()=>F,visibleInside:()=>v});var o=n(3085),i=n(2533),r=n(9316);const a=e=>"string"==typeof e?(0,o.dqa)(e):Array.isArray(e)?e:[e],c=(e,t,n)=>{const o=new MutationObserver(n);return e.forEach((e=>o.observe(e,t))),n([],o),[o,t]},s=(e,t)=>c(a(e),{childList:!0,subtree:!1,attributes:!1},t),l=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!1},t),d=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!0},t),m=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!0},t),f=(e,t)=>c(a(e),{childList:!1,subtree:!1,attributes:!1,characterData:!0},t),u=(e,t)=>c(a(e),{childList:!1,subtree:!0,attributes:!1,characterData:!0},t),p=(e,t)=>c(a(e),{childList:!0,subtree:!0,attributes:!0,characterData:!0},t),b={observer:null,config:null,callbacks:[]},h=e=>{if(b.observer)b.callbacks.push(e);else{b.callbacks.push(e);const[t,n]=p(document.body,(e=>b.callbacks.forEach((t=>t(e,b.observer)))));b.observer=t,b.config=n}return b},g=(e,t,n)=>{const o=new IntersectionObserver(n,t);return e.forEach((e=>o.observe(e))),[o,t]},F=(e,t)=>g(a(e),{},t),v=(e,t,n,o)=>g(a(e),{root:t,rootMargin:n},o),w=(e,t,n)=>{const o=new ResizeObserver(n);return e.forEach((e=>o.observe(e,t))),[o,t]},y=(e,t)=>w(a(e),{box:"border-box"},t),x=lodash.once((()=>{let e=document.URL;h((()=>{e!==document.URL&&((()=>{const e=new CustomEvent("urlChange",{detail:document.URL});window.dispatchEvent(e)})(),e=document.URL)}))})),k=(e,t)=>{x(),e(document.URL),window.addEventListener("urlChange",(()=>e(document.URL)),t)},C=lodash.once((()=>(0,i.select)((()=>unsafeWindow.cid?unsafeWindow.cid:null))));let A=!1;const E=async(e,t)=>{if(!(0,r.matchCurrentPage)(r.playerUrls))return!1;const n=await C();if(null===n)return!1;const o=()=>({aid:unsafeWindow.aid,cid:unsafeWindow.cid});if(!A){let e=n;h((()=>{const{cid:t}=o();Array.isArray(t)||e===t||lodash.isNil(t)||((()=>{const e=o(),t=new CustomEvent("videoChange",{detail:e});window.dispatchEvent(t)})(),e=t)})),A=!0}return e(o()),window.addEventListener("videoChange",(t=>e(t.detail)),t),!0}},303:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentLoadTime:()=>o,componentLoadTrace:()=>r,componentResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,7234));if(!t().devMode)return;const r=e.entry;e.entry=async e=>{const{metadata:t}=e,n=performance.now();let a=r(e);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(t,c-n),i.set(t,s-n),a}}},4427:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pluginLoadTime:()=>o,pluginLoadTrace:()=>r,pluginResolveTime:()=>i});const o=new Map,i=new Map,r=async e=>{const{getGeneralSettings:t}=await Promise.resolve().then(n.bind(n,7234));if(!t().devMode)return;const r=e.setup;e.setup=async t=>{const n=performance.now();let a=r(t);const c=performance.now();a instanceof Promise&&(a=await a);const s=performance.now();return o.set(e,c-n),i.set(e,s-n),a}}},6165:(e,t,n)=>{"use strict";n.r(t),n.d(t,{promiseLoadTime:()=>o,promiseLoadTrace:()=>r,promiseResolveTime:()=>i});const o=new Map,i=new Map,r=async(e,t)=>{const{getGeneralSettings:r}=await Promise.resolve().then(n.bind(n,7234));if(!r().devMode)return t();const a=performance.now(),c=t(),s=performance.now(),l=await c,d=performance.now();return o.set({name:e},s-a),i.set({name:e},d-a),l}},7035:(e,t,n)=>{"use strict";n.r(t),n.d(t,{logStats:()=>o});const o=(e,t)=>{const n=[...t.entries()],o=n.reduce(((e,t)=>e+t[1]),0);console.groupCollapsed(`${e} time:`,Math.round(100*o)/100+"ms",`for ${n.length} items`),n.forEach((e=>{let[t,n]=e;console.log(`%c${t.name} %c${Math.round(100*n)/100}ms ${Math.round(n/o*1e4)/100}% %c`,"color: #00A0D8","color: #888","color: unset")})),console.groupEnd()}},7789:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{JSZipLibrary:()=>JSZipLibrary,RuntimeLibrary:()=>RuntimeLibrary,SortableJSLibrary:()=>SortableJSLibrary,StreamSaverLibrary:()=>StreamSaverLibrary,protobufLibrary:()=>protobufLibrary});var _ajax__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(9161),_meta__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(5791);function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"==typeof t?t:String(t)}function _toPrimitive(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class RuntimeLibrary{constructor(e){this.config=e,_defineProperty(this,"modulePromise",void 0)}async then(resolve,reject){try{const{url,getModule}=this.config;this.modulePromise||(this.modulePromise=(async()=>{console.log(`[Runtime Library] Start download from ${url}`);const code=await(0,_ajax__WEBPACK_IMPORTED_MODULE_0__.monkey)({url});return console.log(`[Runtime Library] Downloaded from ${url} , length = ${code.length}`),function runEval(){return eval(code); // eslint-disable-next-line no-extra-bind -}.bind(window)(),getModule(window)})());const library=await this.modulePromise;return resolve(library)}catch(e){throw reject(e),e}}}const protobufLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.protobuf,getModule:e=>e.protobuf}),JSZipLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.jszip,getModule:e=>e.JSZip}),SortableJSLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.sortable,getModule:e=>e.Sortable}),StreamSaverLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.streamsaver,getModule:e=>e.streamSaver})},5402:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentToSettings:()=>c,getComponentSettings:()=>m,getGeneralSettings:()=>f,isComponentEnabled:()=>u,isUserComponent:()=>s,isUserPlugin:()=>l,metadataToOptions:()=>a});var o=n(2267),i=n(7234),r=n(3085);const a=e=>lodash.mapValues(e,(e=>e.defaultValue)),c=e=>{const{options:t}=e;return{enabled:e.enabledByDefault??!0,options:t?a(t):{}}},s=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userComponents[t])},l=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userPlugins[t])},d={enabled:!1,options:new Proxy({},{get:()=>!1})},m=e=>{let t;if("string"==typeof e){if(void 0===o.componentsMap[e])return i.settings.components.settingsPanel.options.devMode&&console.warn("No settings found for component:",e),d;t=o.componentsMap[e]}else t=e;if(s(t)){const{name:e}=t;return i.settings.userComponents[e]?.settings??d}return i.settings.components[t.name]},f=()=>m("settingsPanel").options,u=e=>("string"==typeof e&&(e=o.componentsMap[e]),!!e&&((!e.urlExclude||!e.urlExclude.some(r.matchUrlPattern))&&((!e.urlInclude||!e.urlInclude.every(lodash.negate(r.matchUrlPattern)))&&(!1===e.configurable?e.enabledByDefault??!0:m(e).enabled))))},7234:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addComponentListener:()=>b,addSettingsChangeListener:()=>f,componentToSettings:()=>o.componentToSettings,defaultSettings:()=>l,getComponentSettings:()=>o.getComponentSettings,getGeneralSettings:()=>o.getGeneralSettings,isComponentEnabled:()=>o.isComponentEnabled,isUserComponent:()=>o.isUserComponent,isUserPlugin:()=>o.isUserPlugin,metadataToOptions:()=>o.metadataToOptions,removeComponentListener:()=>h,removeSettingsChangeListener:()=>u,settings:()=>g});var o=n(5402);const i=Symbol("isProxy");var r=n(2267),a=n(4602);const c={userStyles:{},userPlugins:{},userComponents:{},components:{},plugins:{}},s={internalSettings:c,settingsLoaded:!1},l=lodash.cloneDeep(c),d=new Map,m=(e,t)=>"object"==typeof e?lodash.defaultsDeep(e,t):e;a.plugins.forEach((e=>{s.internalSettings.plugins[e.name]=!0})),r.components.forEach((e=>{s.internalSettings.components[e.name]=(0,o.componentToSettings)(e)})),s.internalSettings=((e,t)=>{const n=function(e,o){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];for(const[t,i]of Object.entries(e)){"object"==typeof i&&!(i instanceof RegExp)&&(e[t]=n(i,o||t,[...r,t]))}const a=new Proxy(e,{get:(e,t)=>t===i||e[t],set(e,a,c){const s=e[a],l=!Object.prototype.hasOwnProperty.call(e,a)&&void 0!==s;unsafeWindow.proxyDebug&&console.log({isImplicitProp:l,prop:a,rootProp:o,propPath:r,value:c,oldValue:s});return!("object"!=typeof c||c instanceof RegExp||!0===c[i]||l)&&(c=n(c,o||a,[...r,a])),e[a]=c,l||t?.(c,s,o||a,[...r,a]),!0},deleteProperty(e,n){const i=e[n];return delete e[n],t?.(void 0,i,o||n,[...r,n]),!0}});return a};return n(e)})((e=>{for(const[t,n]of Object.entries(e)){const o=GM_getValue(t,n);e[t]=m(o,n)}return e})(s.internalSettings),(function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(s.settingsLoaded){GM_setValue(n.toString(),s.internalSettings[n.toString()]);const i=o.join(".");if(o.length>1){const e=o.slice(0,o.length-1).join("."),t=lodash.get(s.internalSettings,e);if(Array.isArray(t)||lodash.isPlainObject(t)){d.get(e)?.forEach((e=>e(t,null,n,o)))}}d.get(i)?.forEach((i=>i(e,t,n,o)))}}));for(const[e,t]of Object.entries(s.internalSettings))GM_setValue(e,t);const f=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=d.get(e);if(o?o.push(t):d.set(e,[t]),n){const n=lodash.get(s.internalSettings,e);t(n,n,"",[])}},u=(e,t)=>{const n=d.get(e);if(!n)return;const o=n.indexOf(t);-1!==o&&n.splice(o,1)},p=e=>{const[t,...n]=e.split("."),i=n.join(".");return(0,o.isUserComponent)(t)?i?`userComponents.${t}.settings.options.${i}`:`userComponents.${t}.settings.enabled`:i?`components.${t}.options.${i}`:`components.${t}.enabled`},b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];f(p(e),t,n)},h=(e,t)=>{u(p(e),t)};s.settingsLoaded=!0;const g=s.internalSettings},2533:(e,t,n)=>{"use strict";n.r(t),n.d(t,{count:()=>b,hasVideo:()=>g,select:()=>l,selectAll:()=>u,selectAllLazy:()=>p,selectLazy:()=>d,sq:()=>a});var o=n(8737),i=n(3085);const r={maxRetry:15,queryInterval:1e3},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>Boolean(e),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r;const o={...r,...n};return new Promise((n=>{let r=null,a=0;const c=()=>{n(r)},s=()=>{a>o.maxRetry?n(null):(r=e(),!0===t(r,c)?n(r):setTimeout((()=>{"undefined"!=typeof document?(0,i.waitForForeground)((()=>{a++,s()})):s()}),o.queryInterval))};s()}))},c=new Map,s=(e,t)=>{let n;if("string"==typeof e){if(c.has(e))return c.get(e);n=()=>document.querySelector((0,i.bwpVideoFilter)(e))}else n=e;const o=t(n);if("string"==typeof e){const t=o.then((t=>(c.delete(e),t)));return c.set(e,t),t}return o},l=(e,t)=>s(e,(e=>a(e,(e=>null!=e),t))),d=e=>s(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),m=new Map,f=(e,t)=>{let n;if("string"==typeof e){if(m.has(e))return m.get(e);n=()=>Array.from(document.querySelectorAll((0,i.bwpVideoFilter)(e)))}else n=e;const o=e=>null===e?[]:e,r=t(n);if("string"==typeof e){const t=r.then((t=>(m.delete(e),o(t))));return m.set(e,t),t}return r.then((e=>o(e)))},u=(e,t)=>f(e,(e=>a(e,(e=>e.length>0),t))),p=e=>f(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),b=(e,t,n)=>a(e,(e=>e.length===t),n);let h;const g=async()=>{h||(h=new Promise((e=>(0,o.videoChange)((()=>e(unsafeWindow.cid))))));const e=await h;return Boolean(e)}},7511:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addImportantStyle:()=>a,addStyle:()=>r,getDefaultStyleID:()=>i,loadAllCustomStyles:()=>d,loadInstantStyle:()=>s,preloadStyles:()=>l,removeStyle:()=>c});var o=n(7792);const i=e=>e.replace(/([a-z][A-Z])/g,(e=>`${e[0]}-${e[1].toLowerCase()}`)),r=(e,t,n)=>{const o=t?i(t):null,r=dq(`#${o}`);if(!r||!t){const t=document.createElement("style");return t.id=o,t.textContent=e,(n||document.head).insertAdjacentElement("beforeend",t),t}return r},a=(e,t)=>r(e,t,document.body),c=function(){for(var e=arguments.length,t=new Array(e),n=0;n{const t=i(e);document.getElementById(t)?.remove()}))},s=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{head:document.head,body:document.body};e.instantStyles?.forEach((async e=>{const n=document.createElement("style");if(n.id=i(e.name),"string"==typeof e.style)n.textContent=e.style;else{const{default:t}=await e.style();n.textContent=t}e.important?t.body.appendChild(n):t.head.appendChild(n)}))},l=lodash.once((async()=>{const{LoadingMode:e}=await Promise.resolve().then(n.bind(n,4074)),{addHook:t}=await Promise.resolve().then(n.bind(n,6695)),{getGeneralSettings:r,settings:a,isComponentEnabled:l,isUserComponent:d,addComponentListener:m,removeComponentListener:f}=await Promise.resolve().then(n.bind(n,7234)),u=async()=>{const{components:e}=await Promise.resolve().then(n.bind(n,2267)),r=document.createDocumentFragment(),u=document.createDocumentFragment();await Promise.all(e.map((e=>{const n=t=>t?s(e):e.instantStyles?.forEach((e=>c(e.name)));if(m(e.name,n),d(e)&&t("userComponents.remove",{after:t=>{t.name===e.name&&f(e.name,n)}}),l(e))return s(e,{head:r,body:u})})));const{UserStyleMode:p}=await Promise.resolve().then(n.bind(n,6118));Object.values(a.userStyles).filter((e=>e.mode===p.Instant)).forEach((e=>{const t=document.createElement("style");t.id=i(e.name),t.textContent=e.style,r.appendChild(t)})),document.head.appendChild(r),(0,o.contentLoaded)((()=>document.body.appendChild(u)))};r().styleLoadingMode===e.Delay?await(0,o.contentLoaded)(u):await u(),(0,o.contentLoaded)((async()=>{const{initColors:e}=await Promise.resolve().then(n.bind(n,3150)),{initMdiStyle:t}=await Promise.resolve().then(n.bind(n,3012));document.head.appendChild(e());const o=t();document.head.appendChild(o)}))})),d=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,7234)),{UserStyleMode:t}=await Promise.resolve().then(n.bind(n,6118));(0,o.contentLoaded)((()=>{Object.values(e.userStyles).filter((e=>e.mode===t.Important)).forEach((e=>{r(e.style,e.name,document.body)}))})),Object.values(e.userStyles).filter((e=>e.mode===t.Default)).forEach((e=>{r(e.style,e.name,document.head)}))}},5040:(e,t,n)=>{"use strict";n.r(t),n.d(t,{TextColor:()=>o});let o=function(e){return e.Auto="自动",e.White="白色",e.Black="黑色",e}({})},3150:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initColors:()=>s});var o=n(4654),i=n.n(o),r=n(7234);const a=(e,t)=>{const n=t.hue()-e.hue(),o=100*((t.saturationv()-e.saturationv())/100+1),i=e=>Math.round(10*e)/10;return`hue-rotate(${i(n)}deg) saturate(${i(o)}%)`};var c=n(5040);const s=()=>{const e=document.createElement("style"),t=new Map,n=(e,n)=>{t.set(e,n)},o=lodash.debounce((()=>{e.textContent=`\n html {\n ${[...t.entries()].map((e=>{let[t,n]=e;return`${t}: ${n};`})).join("\n")}\n }\n `.trim()}),100),s=e=>{let t;t=e===c.TextColor.Auto?i()((0,r.getGeneralSettings)().themeColor).isLight()?"black":"white":e===c.TextColor.Black?"black":"white",n("--text-color",t),n("--foreground-color",t),n("--foreground-color-d",i()(t,"keyword").alpha(.875).rgb().string()),n("--foreground-color-b",i()(t,"keyword").alpha(.75).rgb().string()),n("--brightness",("black"===t?"100":"0")+"%"),n("--invert-filter","black"===t?"invert(0)":"invert(1)"),o()};return(0,r.addComponentListener)("settingsPanel.themeColor",(e=>{n("--theme-color",e);for(let t=10;t<=90;t+=10){const o=i()(e,"hex");n(`--theme-color-${t}`,o.alpha(t/100).rgb().string()),n(`--theme-color-lightness-${t}`,o.lightness(t).rgb().toString())}n("--pink-image-filter",a(i()({r:251,g:113,b:152},"rgb"),i()(e,"hex"))),n("--blue-image-filter",a(i()({r:0,g:160,b:213},"rgb"),i()(e,"hex"))),s((0,r.getGeneralSettings)().textColor),o()}),!0),(0,r.addComponentListener)("settingsPanel.textColor",s,!0),e}},9107:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Toast:()=>g,ToastType:()=>h});var o=n(2533),i=n(3085),r=n(2603),a=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition-group",{staticClass:"toast-card-container",attrs:{name:"toast-card-container",tag:"div"}},e._l(e.cards,(function(e){return t("ToastCard",{key:e.key,attrs:{"data-key":e.key,card:e}})})),1)};a._withStripped=!0;const c=Vue.extend({components:{ToastCard:()=>Promise.resolve().then(n.bind(n,6706)).then((e=>e.default))},data:()=>({cards:[]})});var s=n(8332),l=n.n(s),d=n(2210),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports;function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let b,h=function(e){return e.Default="default",e.Info="info",e.Success="success",e.Error="error",e}({});class g{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.Default;this.message=e,this.title=t,this.type=n,p(this,"durationNumber",3e3),p(this,"durationTimeout",0),p(this,"closeTime",0),p(this,"creationTime",Number(new Date)),p(this,"randomKey",Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER+1)))}static get containerVM(){return b||g.createToastContainer(),b}static createToastContainer(){dq(".toast-card-container")||(b=(0,i.mountVueComponent)(u),document.body.insertAdjacentElement("beforeend",b.$el))}get element(){return(0,o.select)(`.toast-card[data-key='${this.key}']`)}get key(){return`${this.creationTime}[${this.randomKey}]`}get duration(){return this.durationNumber}set duration(e){this.durationNumber=e,this.durationTimeout&&this.clearDuration(),this.setDuration()}show(){this.setDuration(),g.containerVM.cards.unshift(this)}close(){const{cards:e}=g.containerVM;e.includes(this)&&e.splice(e.indexOf(this),1),this.clearDuration()}dismiss(){this.close()}setDuration(){void 0!==this.durationNumber?(this.durationTimeout&&this.clearDuration(),this.closeTime=Number(new Date)+this.durationNumber,this.durationTimeout=window.setTimeout((()=>this.close()),this.durationNumber)):this.closeTime=0}clearDuration(){this.durationTimeout&&(window.clearTimeout(this.durationTimeout),this.closeTime=0,this.durationTimeout=0)}static internalShow(e,t,n,o){const i=new g(e,t,o);return i.duration=n,i.show(),i}static show(e,t,n){return this.internalShow(e,t,n,h.Default)}static info(e,t,n){return this.internalShow(e,t,n,h.Info)}static success(e,t,n){return this.internalShow(e,t,n,h.Success)}static error(e,t,n){return this.internalShow(e,t,n,h.Error)}static mini(){return(0,r.$)(...arguments)}}},2603:(e,t,n)=>{"use strict";function o(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function i(e){return e instanceof o(e).Element||e instanceof Element}function r(e){return e instanceof o(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof o(e).ShadowRoot||e instanceof ShadowRoot)}n.d(t,{$:()=>dt});var c=Math.max,s=Math.min,l=Math.round;function d(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,c=e.offsetWidth;c>0&&(o=l(n.width)/c||1),a>0&&(i=l(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function m(e){var t=o(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function f(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((i(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return d(u(e)).left+m(e).scrollLeft}function b(e){return o(e).getComputedStyle(e)}function h(e){var t=b(e),n=t.overflow,o=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+o)}function g(e,t,n){void 0===n&&(n=!1);var i,a,c=r(t),s=r(t)&&function(e){var t=e.getBoundingClientRect(),n=l(t.width)/e.offsetWidth||1,o=l(t.height)/e.offsetHeight||1;return 1!==n||1!==o}(t),b=u(t),g=d(e,s),F={scrollLeft:0,scrollTop:0},v={x:0,y:0};return(c||!c&&!n)&&(("body"!==f(t)||h(b))&&(F=(i=t)!==o(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:m(i)),r(t)?((v=d(t,!0)).x+=t.clientLeft,v.y+=t.clientTop):b&&(v.x=p(b))),{x:g.left+F.scrollLeft-v.x,y:g.top+F.scrollTop-v.y,width:g.width,height:g.height}}function F(e){var t=d(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function v(e){return"html"===f(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||u(e)}function w(e){return["html","body","#document"].indexOf(f(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:w(v(e))}function y(e,t){var n;void 0===t&&(t=[]);var i=w(e),r=i===(null==(n=e.ownerDocument)?void 0:n.body),a=o(i),c=r?[a].concat(a.visualViewport||[],h(i)?i:[]):i,s=t.concat(c);return r?s:s.concat(y(v(c)))}function x(e){return["table","td","th"].indexOf(f(e))>=0}function k(e){return r(e)&&"fixed"!==b(e).position?e.offsetParent:null}function C(e){for(var t=o(e),n=k(e);n&&x(n)&&"static"===b(n).position;)n=k(n);return n&&("html"===f(n)||"body"===f(n)&&"static"===b(n).position)?t:n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===b(e).position)return null;var n=v(e);for(a(n)&&(n=n.host);r(n)&&["html","body"].indexOf(f(n))<0;){var o=b(n);if("none"!==o.transform||"none"!==o.perspective||"paint"===o.contain||-1!==["transform","perspective"].indexOf(o.willChange)||t&&"filter"===o.willChange||t&&o.filter&&"none"!==o.filter)return n;n=n.parentNode}return null}(e)||t}var A="top",E="bottom",B="right",D="left",I="auto",z=[A,E,B,D],S="start",M="end",P="viewport",O="popper",V=z.reduce((function(e,t){return e.concat([t+"-"+S,t+"-"+M])}),[]),T=[].concat(z,[I]).reduce((function(e,t){return e.concat([t,t+"-"+S,t+"-"+M])}),[]),L=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function j(e){var t=new Map,n=new Set,o=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var o=t.get(e);o&&i(o)}})),o.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||i(e)})),o}var R={placement:"bottom",modifiers:[],strategy:"absolute"};function N(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function G(e){var t,n=e.reference,o=e.element,i=e.placement,r=i?U(i):null,a=i?H(i):null,c=n.x+n.width/2-o.width/2,s=n.y+n.height/2-o.height/2;switch(r){case A:t={x:c,y:n.y-o.height};break;case E:t={x:c,y:n.y+n.height};break;case B:t={x:n.x+n.width,y:s};break;case D:t={x:n.x-o.width,y:s};break;default:t={x:n.x,y:n.y}}var l=r?W(r):null;if(null!=l){var d="y"===l?"height":"width";switch(a){case S:t[l]=t[l]-(n[d]/2-o[d]/2);break;case M:t[l]=t[l]+(n[d]/2-o[d]/2)}}return t} +}.bind(window)(),getModule(window)})());const library=await this.modulePromise;return resolve(library)}catch(e){throw reject(e),e}}}const protobufLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.protobuf,getModule:e=>e.protobuf}),JSZipLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.jszip,getModule:e=>e.JSZip}),SortableJSLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.sortable,getModule:e=>e.Sortable}),StreamSaverLibrary=new RuntimeLibrary({url:_meta__WEBPACK_IMPORTED_MODULE_1__.meta.compilationInfo.altCdn.library.streamsaver,getModule:e=>e.streamSaver})},5402:(e,t,n)=>{"use strict";n.r(t),n.d(t,{componentToSettings:()=>c,getComponentSettings:()=>m,getGeneralSettings:()=>f,isComponentEnabled:()=>u,isUserComponent:()=>s,isUserPlugin:()=>l,metadataToOptions:()=>a});var o=n(2267),i=n(7234),r=n(3085);const a=e=>lodash.mapValues(e,(e=>e.defaultValue)),c=e=>{const{options:t}=e;return{enabled:e.enabledByDefault??!0,options:t?a(t):{}}},s=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userComponents[t])},l=e=>{const t="string"==typeof e?e:e.name;return Boolean(i.settings.userPlugins[t])},d={enabled:!1,options:new Proxy({},{get:()=>!1})},m=e=>{let t;if("string"==typeof e){if(void 0===o.componentsMap[e])return i.settings.components.settingsPanel.options.devMode&&console.warn("No settings found for component:",e),d;t=o.componentsMap[e]}else t=e;if(s(t)){const{name:e}=t;return i.settings.userComponents[e]?.settings??d}return i.settings.components[t.name]},f=()=>m("settingsPanel").options,u=e=>("string"==typeof e&&(e=o.componentsMap[e]),!!e&&((!e.urlExclude||!e.urlExclude.some(r.matchUrlPattern))&&((!e.urlInclude||!e.urlInclude.every(lodash.negate(r.matchUrlPattern)))&&(!1===e.configurable?e.enabledByDefault??!0:m(e).enabled))))},7234:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addComponentListener:()=>b,addSettingsChangeListener:()=>f,componentToSettings:()=>o.componentToSettings,defaultSettings:()=>l,getComponentSettings:()=>o.getComponentSettings,getGeneralSettings:()=>o.getGeneralSettings,isComponentEnabled:()=>o.isComponentEnabled,isUserComponent:()=>o.isUserComponent,isUserPlugin:()=>o.isUserPlugin,metadataToOptions:()=>o.metadataToOptions,removeComponentListener:()=>h,removeSettingsChangeListener:()=>u,settings:()=>g});var o=n(5402);const i=Symbol("isProxy");var r=n(2267),a=n(4602);const c={userStyles:{},userPlugins:{},userComponents:{},components:{},plugins:{}},s={internalSettings:c,settingsLoaded:!1},l=lodash.cloneDeep(c),d=new Map,m=(e,t)=>"object"==typeof e?lodash.defaultsDeep(e,t):e;a.plugins.forEach((e=>{s.internalSettings.plugins[e.name]=!0})),r.components.forEach((e=>{s.internalSettings.components[e.name]=(0,o.componentToSettings)(e)})),s.internalSettings=((e,t)=>{const n=function(e,o){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];for(const[t,i]of Object.entries(e)){"object"==typeof i&&!(i instanceof RegExp)&&(e[t]=n(i,o||t,[...r,t]))}const a=new Proxy(e,{get:(e,t)=>t===i||e[t],set(e,a,c){const s=e[a],l=!Object.prototype.hasOwnProperty.call(e,a)&&void 0!==s;unsafeWindow.proxyDebug&&console.log({isImplicitProp:l,prop:a,rootProp:o,propPath:r,value:c,oldValue:s});return!("object"!=typeof c||c instanceof RegExp||!0===c[i]||l)&&(c=n(c,o||a,[...r,a])),e[a]=c,l||t?.(c,s,o||a,[...r,a]),!0},deleteProperty(e,n){const i=e[n];return delete e[n],t?.(void 0,i,o||n,[...r,n]),!0}});return a};return n(e)})((e=>{for(const[t,n]of Object.entries(e)){const o=GM_getValue(t,n);e[t]=m(o,n)}return e})(s.internalSettings),(function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(s.settingsLoaded){GM_setValue(n.toString(),s.internalSettings[n.toString()]);const i=o.join(".");if(o.length>1){const e=o.slice(0,o.length-1).join("."),t=lodash.get(s.internalSettings,e);if(Array.isArray(t)||lodash.isPlainObject(t)){d.get(e)?.forEach((e=>e(t,null,n,o)))}}d.get(i)?.forEach((i=>i(e,t,n,o)))}}));for(const[e,t]of Object.entries(s.internalSettings))GM_setValue(e,t);const f=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const o=d.get(e);if(o?o.push(t):d.set(e,[t]),n){const n=lodash.get(s.internalSettings,e);t(n,n,"",[])}},u=(e,t)=>{const n=d.get(e);if(!n)return;const o=n.indexOf(t);-1!==o&&n.splice(o,1)},p=e=>{const[t,...n]=e.split("."),i=n.join(".");return(0,o.isUserComponent)(t)?i?`userComponents.${t}.settings.options.${i}`:`userComponents.${t}.settings.enabled`:i?`components.${t}.options.${i}`:`components.${t}.enabled`},b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];f(p(e),t,n)},h=(e,t)=>{u(p(e),t)};s.settingsLoaded=!0;const g=s.internalSettings},2533:(e,t,n)=>{"use strict";n.r(t),n.d(t,{count:()=>b,hasVideo:()=>g,select:()=>l,selectAll:()=>u,selectAllLazy:()=>p,selectLazy:()=>d,sq:()=>a});var o=n(8737),i=n(3085);const r={maxRetry:15,queryInterval:1e3},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e=>Boolean(e),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r;const o={...r,...n};return new Promise((n=>{let r=null,a=0;const c=()=>{n(r)},s=()=>{a>o.maxRetry?n(null):(r=e(),!0===t(r,c)?n(r):setTimeout((()=>{"undefined"!=typeof document?(0,i.waitForForeground)((()=>{a++,s()})):s()}),o.queryInterval))};s()}))},c=new Map,s=(e,t)=>{let n;if("string"==typeof e){if(c.has(e))return c.get(e);n=()=>document.querySelector((0,i.bwpVideoFilter)(e))}else n=e;const o=t(n);if("string"==typeof e){const t=o.then((t=>(c.delete(e),t)));return c.set(e,t),t}return o},l=(e,t)=>s(e,(e=>a(e,(e=>null!=e),t))),d=e=>s(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),m=new Map,f=(e,t)=>{let n;if("string"==typeof e){if(m.has(e))return m.get(e);n=()=>Array.from(document.querySelectorAll((0,i.bwpVideoFilter)(e)))}else n=e;const o=e=>null===e?[]:e,r=t(n);if("string"==typeof e){const t=r.then((t=>(m.delete(e),o(t))));return m.set(e,t),t}return r.then((e=>o(e)))},u=(e,t)=>f(e,(e=>a(e,(e=>e.length>0),t))),p=e=>f(e,(e=>new Promise((t=>{(0,o.allMutations)((()=>{const n=e();null!=n&&t(n)}))})))),b=(e,t,n)=>a(e,(e=>e.length===t),n);let h;const g=async()=>{h||(h=new Promise((e=>(0,o.videoChange)((()=>e(unsafeWindow.cid))))));const e=await h;return Boolean(e)}},7511:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addImportantStyle:()=>a,addStyle:()=>r,getDefaultStyleID:()=>i,loadAllCustomStyles:()=>d,loadInstantStyle:()=>s,preloadStyles:()=>l,removeStyle:()=>c});var o=n(7792);const i=e=>e.replace(/([a-z][A-Z])/g,(e=>`${e[0]}-${e[1].toLowerCase()}`)),r=(e,t,n)=>{const o=t?i(t):null,r=dq(`#${o}`);if(!r||!t){const t=document.createElement("style");return t.id=o,t.textContent=e,(n||document.head).insertAdjacentElement("beforeend",t),t}return r},a=(e,t)=>r(e,t,document.body),c=function(){for(var e=arguments.length,t=new Array(e),n=0;n{const t=i(e);document.getElementById(t)?.remove()}))},s=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{head:document.head,body:document.body};e.instantStyles?.forEach((async e=>{const n=document.createElement("style");if(n.id=i(e.name),"string"==typeof e.style)n.textContent=e.style;else{const{default:t}=await e.style();n.textContent=t}e.important?t.body.appendChild(n):t.head.appendChild(n)}))},l=lodash.once((async()=>{const{LoadingMode:e}=await Promise.resolve().then(n.bind(n,4074)),{addHook:t}=await Promise.resolve().then(n.bind(n,6695)),{getGeneralSettings:r,settings:a,isComponentEnabled:l,isUserComponent:d,addComponentListener:m,removeComponentListener:f}=await Promise.resolve().then(n.bind(n,7234)),u=async()=>{const{components:e}=await Promise.resolve().then(n.bind(n,2267)),r=document.createDocumentFragment(),u=document.createDocumentFragment();await Promise.all(e.map((e=>{const n=t=>t?s(e):e.instantStyles?.forEach((e=>c(e.name)));if(m(e.name,n),d(e)&&t("userComponents.remove",{after:t=>{t.name===e.name&&f(e.name,n)}}),l(e))return s(e,{head:r,body:u})})));const{UserStyleMode:p}=await Promise.resolve().then(n.bind(n,6118));Object.values(a.userStyles).filter((e=>e.mode===p.Instant)).forEach((e=>{const t=document.createElement("style");t.id=i(e.name),t.textContent=e.style,r.appendChild(t)})),document.head.appendChild(r),(0,o.contentLoaded)((()=>document.body.appendChild(u)))};r().styleLoadingMode===e.Delay?await(0,o.contentLoaded)(u):await u(),(0,o.contentLoaded)((async()=>{const{initColors:e}=await Promise.resolve().then(n.bind(n,3150)),{initMdiStyle:t}=await Promise.resolve().then(n.bind(n,3012));document.head.appendChild(e());const o=t();document.head.appendChild(o)}))})),d=async()=>{const{settings:e}=await Promise.resolve().then(n.bind(n,7234)),{UserStyleMode:t}=await Promise.resolve().then(n.bind(n,6118));(0,o.contentLoaded)((()=>{Object.values(e.userStyles).filter((e=>e.mode===t.Important)).forEach((e=>{r(e.style,e.name,document.body)}))})),Object.values(e.userStyles).filter((e=>e.mode===t.Default)).forEach((e=>{r(e.style,e.name,document.head)}))}},5040:(e,t,n)=>{"use strict";n.r(t),n.d(t,{TextColor:()=>o});let o=function(e){return e.Auto="自动",e.White="白色",e.Black="黑色",e}({})},3150:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initColors:()=>s});var o=n(4654),i=n.n(o),r=n(7234);const a=(e,t)=>{const n=t.hue()-e.hue(),o=100*((t.saturationv()-e.saturationv())/100+1),i=e=>Math.round(10*e)/10;return`hue-rotate(${i(n)}deg) saturate(${i(o)}%)`};var c=n(5040);const s=()=>{const e=document.createElement("style"),t=new Map,n=(e,n)=>{t.set(e,n)},o=lodash.debounce((()=>{e.textContent=`\n html {\n ${[...t.entries()].map((e=>{let[t,n]=e;return`${t}: ${n};`})).join("\n")}\n }\n `.trim()}),100),s=e=>{let t;t=e===c.TextColor.Auto?i()((0,r.getGeneralSettings)().themeColor).isLight()?"black":"white":e===c.TextColor.Black?"black":"white",n("--text-color",t),n("--foreground-color",t),n("--foreground-color-d",i()(t,"keyword").alpha(.875).rgb().string()),n("--foreground-color-b",i()(t,"keyword").alpha(.75).rgb().string()),n("--brightness",("black"===t?"100":"0")+"%"),n("--invert-filter","black"===t?"invert(0)":"invert(1)"),o()};return(0,r.addComponentListener)("settingsPanel.themeColor",(e=>{n("--theme-color",e);for(let t=10;t<=90;t+=10){const o=i()(e,"hex");n(`--theme-color-${t}`,o.alpha(t/100).rgb().string()),n(`--theme-color-lightness-${t}`,o.lightness(t).rgb().toString())}n("--pink-image-filter",a(i()({r:251,g:113,b:152},"rgb"),i()(e,"hex"))),n("--blue-image-filter",a(i()({r:0,g:160,b:213},"rgb"),i()(e,"hex"))),s((0,r.getGeneralSettings)().textColor),o()}),!0),(0,r.addComponentListener)("settingsPanel.textColor",s,!0),e}},9107:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Toast:()=>g,ToastType:()=>h});var o=n(2533),i=n(3085),r=n(2603),a=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("transition-group",{staticClass:"toast-card-container",attrs:{name:"toast-card-container",tag:"div"}},e._l(e.cards,(function(e){return t("ToastCard",{key:e.key,attrs:{"data-key":e.key,card:e}})})),1)};a._withStripped=!0;const c=Vue.extend({components:{ToastCard:()=>Promise.resolve().then(n.bind(n,6706)).then((e=>e.default))},data:()=>({cards:[]})});var s=n(8332),l=n.n(s),d=n(2210),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports;function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let b,h=function(e){return e.Default="default",e.Info="info",e.Success="success",e.Error="error",e}({});class g{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.Default;this.message=e,this.title=t,this.type=n,p(this,"durationNumber",3e3),p(this,"durationTimeout",0),p(this,"closeTime",0),p(this,"creationTime",Number(new Date)),p(this,"randomKey",Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER+1)))}static get containerVM(){return b||g.createToastContainer(),b}static createToastContainer(){dq(".toast-card-container")||(b=(0,i.mountVueComponent)(u),document.body.insertAdjacentElement("beforeend",b.$el))}get element(){return(0,o.select)(`.toast-card[data-key='${this.key}']`)}get key(){return`${this.creationTime}[${this.randomKey}]`}get duration(){return this.durationNumber}set duration(e){this.durationNumber=e,this.durationTimeout&&this.clearDuration(),this.setDuration()}show(){this.setDuration(),g.containerVM.cards.unshift(this)}close(){const{cards:e}=g.containerVM;e.includes(this)&&e.splice(e.indexOf(this),1),this.clearDuration()}dismiss(){this.close()}setDuration(){void 0!==this.durationNumber?(this.durationTimeout&&this.clearDuration(),this.closeTime=Number(new Date)+this.durationNumber,this.durationTimeout=window.setTimeout((()=>this.close()),this.durationNumber)):this.closeTime=0}clearDuration(){this.durationTimeout&&(window.clearTimeout(this.durationTimeout),this.closeTime=0,this.durationTimeout=0)}static internalShow(e,t,n,o){const i=new g(e,t,o);return i.duration=n,i.show(),i}static show(e,t,n){return this.internalShow(e,t,n,h.Default)}static info(e,t,n){return this.internalShow(e,t,n,h.Info)}static success(e,t,n){return this.internalShow(e,t,n,h.Success)}static error(e,t,n){return this.internalShow(e,t,n,h.Error)}static mini(){return(0,r.$)(...arguments)}}},2603:(e,t,n)=>{"use strict";function o(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function i(e){return e instanceof o(e).Element||e instanceof Element}function r(e){return e instanceof o(e).HTMLElement||e instanceof HTMLElement}function a(e){return"undefined"!=typeof ShadowRoot&&(e instanceof o(e).ShadowRoot||e instanceof ShadowRoot)}n.d(t,{$:()=>dt});var c=Math.max,s=Math.min,l=Math.round;function d(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,c=e.offsetWidth;c>0&&(o=l(n.width)/c||1),a>0&&(i=l(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function m(e){var t=o(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function f(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((i(e)?e.ownerDocument:e.document)||window.document).documentElement}function p(e){return d(u(e)).left+m(e).scrollLeft}function b(e){return o(e).getComputedStyle(e)}function h(e){var t=b(e),n=t.overflow,o=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+o)}function g(e,t,n){void 0===n&&(n=!1);var i,a,c=r(t),s=r(t)&&function(e){var t=e.getBoundingClientRect(),n=l(t.width)/e.offsetWidth||1,o=l(t.height)/e.offsetHeight||1;return 1!==n||1!==o}(t),b=u(t),g=d(e,s),F={scrollLeft:0,scrollTop:0},v={x:0,y:0};return(c||!c&&!n)&&(("body"!==f(t)||h(b))&&(F=(i=t)!==o(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:m(i)),r(t)?((v=d(t,!0)).x+=t.clientLeft,v.y+=t.clientTop):b&&(v.x=p(b))),{x:g.left+F.scrollLeft-v.x,y:g.top+F.scrollTop-v.y,width:g.width,height:g.height}}function F(e){var t=d(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function v(e){return"html"===f(e)?e:e.assignedSlot||e.parentNode||(a(e)?e.host:null)||u(e)}function w(e){return["html","body","#document"].indexOf(f(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:w(v(e))}function y(e,t){var n;void 0===t&&(t=[]);var i=w(e),r=i===(null==(n=e.ownerDocument)?void 0:n.body),a=o(i),c=r?[a].concat(a.visualViewport||[],h(i)?i:[]):i,s=t.concat(c);return r?s:s.concat(y(v(c)))}function x(e){return["table","td","th"].indexOf(f(e))>=0}function k(e){return r(e)&&"fixed"!==b(e).position?e.offsetParent:null}function C(e){for(var t=o(e),n=k(e);n&&x(n)&&"static"===b(n).position;)n=k(n);return n&&("html"===f(n)||"body"===f(n)&&"static"===b(n).position)?t:n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===b(e).position)return null;var n=v(e);for(a(n)&&(n=n.host);r(n)&&["html","body"].indexOf(f(n))<0;){var o=b(n);if("none"!==o.transform||"none"!==o.perspective||"paint"===o.contain||-1!==["transform","perspective"].indexOf(o.willChange)||t&&"filter"===o.willChange||t&&o.filter&&"none"!==o.filter)return n;n=n.parentNode}return null}(e)||t}var A="top",E="bottom",B="right",D="left",I="auto",z=[A,E,B,D],S="start",P="end",M="viewport",O="popper",V=z.reduce((function(e,t){return e.concat([t+"-"+S,t+"-"+P])}),[]),T=[].concat(z,[I]).reduce((function(e,t){return e.concat([t,t+"-"+S,t+"-"+P])}),[]),L=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function j(e){var t=new Map,n=new Set,o=[];function i(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var o=t.get(e);o&&i(o)}})),o.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||i(e)})),o}var R={placement:"bottom",modifiers:[],strategy:"absolute"};function N(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function G(e){var t,n=e.reference,o=e.element,i=e.placement,r=i?U(i):null,a=i?H(i):null,c=n.x+n.width/2-o.width/2,s=n.y+n.height/2-o.height/2;switch(r){case A:t={x:c,y:n.y-o.height};break;case E:t={x:c,y:n.y+n.height};break;case B:t={x:n.x+n.width,y:s};break;case D:t={x:n.x-o.width,y:s};break;default:t={x:n.x,y:n.y}}var l=r?W(r):null;if(null!=l){var d="y"===l?"height":"width";switch(a){case S:t[l]=t[l]-(n[d]/2-o[d]/2);break;case P:t[l]=t[l]+(n[d]/2-o[d]/2)}}return t} // eslint-disable-next-line import/no-unused-modules -var Q={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Y(e){var t,n=e.popper,i=e.popperRect,r=e.placement,a=e.variation,c=e.offsets,s=e.position,d=e.gpuAcceleration,m=e.adaptive,f=e.roundOffsets,p=e.isFixed,h=c.x,g=void 0===h?0:h,F=c.y,v=void 0===F?0:F,w="function"==typeof f?f({x:g,y:v}):{x:g,y:v};g=w.x,v=w.y;var y=c.hasOwnProperty("x"),x=c.hasOwnProperty("y"),k=D,I=A,z=window;if(m){var S=C(n),P="clientHeight",O="clientWidth";if(S===o(n)&&"static"!==b(S=u(n)).position&&"absolute"===s&&(P="scrollHeight",O="scrollWidth"),r===A||(r===D||r===B)&&a===M)I=E,v-=(p&&S===z&&z.visualViewport?z.visualViewport.height:S[P])-i.height,v*=d?1:-1;if(r===D||(r===A||r===E)&&a===M)k=B,g-=(p&&S===z&&z.visualViewport?z.visualViewport.width:S[O])-i.width,g*=d?1:-1}var V,T=Object.assign({position:s},m&&Q),L=!0===f?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:l(t*o)/o||0,y:l(n*o)/o||0}}({x:g,y:v}):{x:g,y:v};return g=L.x,v=L.y,d?Object.assign({},T,((V={})[I]=x?"0":"",V[k]=y?"0":"",V.transform=(z.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",V)):Object.assign({},T,((t={})[I]=x?v+"px":"",t[k]=y?g+"px":"",t.transform="",t))}// eslint-disable-next-line import/no-unused-modules +var Q={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Y(e){var t,n=e.popper,i=e.popperRect,r=e.placement,a=e.variation,c=e.offsets,s=e.position,d=e.gpuAcceleration,m=e.adaptive,f=e.roundOffsets,p=e.isFixed,h=c.x,g=void 0===h?0:h,F=c.y,v=void 0===F?0:F,w="function"==typeof f?f({x:g,y:v}):{x:g,y:v};g=w.x,v=w.y;var y=c.hasOwnProperty("x"),x=c.hasOwnProperty("y"),k=D,I=A,z=window;if(m){var S=C(n),M="clientHeight",O="clientWidth";if(S===o(n)&&"static"!==b(S=u(n)).position&&"absolute"===s&&(M="scrollHeight",O="scrollWidth"),r===A||(r===D||r===B)&&a===P)I=E,v-=(p&&S===z&&z.visualViewport?z.visualViewport.height:S[M])-i.height,v*=d?1:-1;if(r===D||(r===A||r===E)&&a===P)k=B,g-=(p&&S===z&&z.visualViewport?z.visualViewport.width:S[O])-i.width,g*=d?1:-1}var V,T=Object.assign({position:s},m&&Q),L=!0===f?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:l(t*o)/o||0,y:l(n*o)/o||0}}({x:g,y:v}):{x:g,y:v};return g=L.x,v=L.y,d?Object.assign({},T,((V={})[I]=x?"0":"",V[k]=y?"0":"",V.transform=(z.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",V)):Object.assign({},T,((t={})[I]=x?v+"px":"",t[k]=y?g+"px":"",t.transform="",t))}// eslint-disable-next-line import/no-unused-modules const X={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&f(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});r(o)&&f(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};// eslint-disable-next-line import/no-unused-modules const K={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,o=e.name,i=n.offset,r=void 0===i?[0,0]:i,a=T.reduce((function(e,n){return e[n]= // eslint-disable-next-line import/no-unused-modules -function(e,t,n){var o=U(e),i=[D,A].indexOf(o)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=r[0],c=r[1];return a=a||0,c=(c||0)*i,[D,B].indexOf(o)>=0?{x:c,y:a}:{x:a,y:c}}(n,t.rects,r),e}),{}),c=a[t.placement],s=c.x,l=c.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=l),t.modifiersData[o]=a}};var J={left:"right",right:"left",bottom:"top",top:"bottom"};function _(e){return e.replace(/left|right|bottom|top/g,(function(e){return J[e]}))}var $={start:"end",end:"start"};function ee(e){return e.replace(/start|end/g,(function(e){return $[e]}))}function te(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function ne(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function oe(e,t){return t===P?ne(function(e){var t=o(e),n=u(e),i=t.visualViewport,r=n.clientWidth,a=n.clientHeight,c=0,s=0;return i&&(r=i.width,a=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(c=i.offsetLeft,s=i.offsetTop)),{width:r,height:a,x:c+p(e),y:s}}(e)):i(t)?function(e){var t=d(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):ne(function(e){var t,n=u(e),o=m(e),i=null==(t=e.ownerDocument)?void 0:t.body,r=c(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=c(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-o.scrollLeft+p(e),l=-o.scrollTop;return"rtl"===b(i||n).direction&&(s+=c(n.clientWidth,i?i.clientWidth:0)-r),{width:r,height:a,x:s,y:l}}(u(e)))}function ie(e,t,n){var o="clippingParents"===t?function(e){var t=y(v(e)),n=["absolute","fixed"].indexOf(b(e).position)>=0&&r(e)?C(e):e;return i(n)?t.filter((function(e){return i(e)&&te(e,n)&&"body"!==f(e)})):[]}(e):[].concat(t),a=[].concat(o,[n]),l=a[0],d=a.reduce((function(t,n){var o=oe(e,n);return t.top=c(o.top,t.top),t.right=s(o.right,t.right),t.bottom=s(o.bottom,t.bottom),t.left=c(o.left,t.left),t}),oe(e,l));return d.width=d.right-d.left,d.height=d.bottom-d.top,d.x=d.left,d.y=d.top,d}function re(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function ae(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})} +function(e,t,n){var o=U(e),i=[D,A].indexOf(o)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=r[0],c=r[1];return a=a||0,c=(c||0)*i,[D,B].indexOf(o)>=0?{x:c,y:a}:{x:a,y:c}}(n,t.rects,r),e}),{}),c=a[t.placement],s=c.x,l=c.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=l),t.modifiersData[o]=a}};var J={left:"right",right:"left",bottom:"top",top:"bottom"};function _(e){return e.replace(/left|right|bottom|top/g,(function(e){return J[e]}))}var $={start:"end",end:"start"};function ee(e){return e.replace(/start|end/g,(function(e){return $[e]}))}function te(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&a(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function ne(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function oe(e,t){return t===M?ne(function(e){var t=o(e),n=u(e),i=t.visualViewport,r=n.clientWidth,a=n.clientHeight,c=0,s=0;return i&&(r=i.width,a=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(c=i.offsetLeft,s=i.offsetTop)),{width:r,height:a,x:c+p(e),y:s}}(e)):i(t)?function(e){var t=d(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):ne(function(e){var t,n=u(e),o=m(e),i=null==(t=e.ownerDocument)?void 0:t.body,r=c(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=c(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-o.scrollLeft+p(e),l=-o.scrollTop;return"rtl"===b(i||n).direction&&(s+=c(n.clientWidth,i?i.clientWidth:0)-r),{width:r,height:a,x:s,y:l}}(u(e)))}function ie(e,t,n){var o="clippingParents"===t?function(e){var t=y(v(e)),n=["absolute","fixed"].indexOf(b(e).position)>=0&&r(e)?C(e):e;return i(n)?t.filter((function(e){return i(e)&&te(e,n)&&"body"!==f(e)})):[]}(e):[].concat(t),a=[].concat(o,[n]),l=a[0],d=a.reduce((function(t,n){var o=oe(e,n);return t.top=c(o.top,t.top),t.right=s(o.right,t.right),t.bottom=s(o.bottom,t.bottom),t.left=c(o.left,t.left),t}),oe(e,l));return d.width=d.right-d.left,d.height=d.bottom-d.top,d.x=d.left,d.y=d.top,d}function re(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function ae(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})} // eslint-disable-next-line import/no-unused-modules -function ce(e,t){void 0===t&&(t={});var n=t,o=n.placement,r=void 0===o?e.placement:o,a=n.boundary,c=void 0===a?"clippingParents":a,s=n.rootBoundary,l=void 0===s?P:s,m=n.elementContext,f=void 0===m?O:m,p=n.altBoundary,b=void 0!==p&&p,h=n.padding,g=void 0===h?0:h,F=re("number"!=typeof g?g:ae(g,z)),v=f===O?"reference":O,w=e.rects.popper,y=e.elements[b?v:f],x=ie(i(y)?y:y.contextElement||u(e.elements.popper),c,l),k=d(e.elements.reference),C=G({reference:k,element:w,strategy:"absolute",placement:r}),D=ne(Object.assign({},w,C)),I=f===O?D:k,S={top:x.top-I.top+F.top,bottom:I.bottom-x.bottom+F.bottom,left:x.left-I.left+F.left,right:I.right-x.right+F.right},M=e.modifiersData.offset;if(f===O&&M){var V=M[r];Object.keys(S).forEach((function(e){var t=[B,E].indexOf(e)>=0?1:-1,n=[A,E].indexOf(e)>=0?"y":"x";S[e]+=V[n]*t}))}return S}function se(e,t,n){return c(e,s(t,n))}// eslint-disable-next-line import/no-unused-modules -const le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,o=e.name,i=n.mainAxis,r=void 0===i||i,a=n.altAxis,l=void 0!==a&&a,d=n.boundary,m=n.rootBoundary,f=n.altBoundary,u=n.padding,p=n.tether,b=void 0===p||p,h=n.tetherOffset,g=void 0===h?0:h,v=ce(t,{boundary:d,rootBoundary:m,padding:u,altBoundary:f}),w=U(t.placement),y=H(t.placement),x=!y,k=W(w),I="x"===k?"y":"x",z=t.modifiersData.popperOffsets,M=t.rects.reference,P=t.rects.popper,O="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,V="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(z){if(r){var j,R="y"===k?A:D,N="y"===k?E:B,q="y"===k?"height":"width",Z=z[k],G=Z+v[R],Q=Z-v[N],Y=b?-P[q]/2:0,X=y===S?M[q]:P[q],K=y===S?-P[q]:-M[q],J=t.elements.arrow,_=b&&J?F(J):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},ee=$[R],te=$[N],ne=se(0,M[q],_[q]),oe=x?M[q]/2-Y-ne-ee-V.mainAxis:X-ne-ee-V.mainAxis,ie=x?-M[q]/2+Y+ne+te+V.mainAxis:K+ne+te+V.mainAxis,re=t.elements.arrow&&C(t.elements.arrow),ae=re?"y"===k?re.clientTop||0:re.clientLeft||0:0,le=null!=(j=null==T?void 0:T[k])?j:0,de=Z+ie-le,me=se(b?s(G,Z+oe-le-ae):G,Z,b?c(Q,de):Q);z[k]=me,L[k]=me-Z}if(l){var fe,ue="x"===k?A:D,pe="x"===k?E:B,be=z[I],he="y"===I?"height":"width",ge=be+v[ue],Fe=be-v[pe],ve=-1!==[A,D].indexOf(w),we=null!=(fe=null==T?void 0:T[I])?fe:0,ye=ve?ge:be-M[he]-P[he]-we+V.altAxis,xe=ve?be+M[he]+P[he]-we-V.altAxis:Fe,ke=b&&ve?function(e,t,n){var o=se(e,t,n);return o>n?n:o}(ye,be,xe):se(b?ye:ge,be,b?xe:Fe);z[I]=ke,L[I]=ke-be}t.modifiersData[o]=L}},requiresIfExists:["offset"]};// eslint-disable-next-line import/no-unused-modules +function ce(e,t){void 0===t&&(t={});var n=t,o=n.placement,r=void 0===o?e.placement:o,a=n.boundary,c=void 0===a?"clippingParents":a,s=n.rootBoundary,l=void 0===s?M:s,m=n.elementContext,f=void 0===m?O:m,p=n.altBoundary,b=void 0!==p&&p,h=n.padding,g=void 0===h?0:h,F=re("number"!=typeof g?g:ae(g,z)),v=f===O?"reference":O,w=e.rects.popper,y=e.elements[b?v:f],x=ie(i(y)?y:y.contextElement||u(e.elements.popper),c,l),k=d(e.elements.reference),C=G({reference:k,element:w,strategy:"absolute",placement:r}),D=ne(Object.assign({},w,C)),I=f===O?D:k,S={top:x.top-I.top+F.top,bottom:I.bottom-x.bottom+F.bottom,left:x.left-I.left+F.left,right:I.right-x.right+F.right},P=e.modifiersData.offset;if(f===O&&P){var V=P[r];Object.keys(S).forEach((function(e){var t=[B,E].indexOf(e)>=0?1:-1,n=[A,E].indexOf(e)>=0?"y":"x";S[e]+=V[n]*t}))}return S}function se(e,t,n){return c(e,s(t,n))}// eslint-disable-next-line import/no-unused-modules +const le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,o=e.name,i=n.mainAxis,r=void 0===i||i,a=n.altAxis,l=void 0!==a&&a,d=n.boundary,m=n.rootBoundary,f=n.altBoundary,u=n.padding,p=n.tether,b=void 0===p||p,h=n.tetherOffset,g=void 0===h?0:h,v=ce(t,{boundary:d,rootBoundary:m,padding:u,altBoundary:f}),w=U(t.placement),y=H(t.placement),x=!y,k=W(w),I="x"===k?"y":"x",z=t.modifiersData.popperOffsets,P=t.rects.reference,M=t.rects.popper,O="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,V="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(z){if(r){var j,R="y"===k?A:D,N="y"===k?E:B,q="y"===k?"height":"width",Z=z[k],G=Z+v[R],Q=Z-v[N],Y=b?-M[q]/2:0,X=y===S?P[q]:M[q],K=y===S?-M[q]:-P[q],J=t.elements.arrow,_=b&&J?F(J):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},ee=$[R],te=$[N],ne=se(0,P[q],_[q]),oe=x?P[q]/2-Y-ne-ee-V.mainAxis:X-ne-ee-V.mainAxis,ie=x?-P[q]/2+Y+ne+te+V.mainAxis:K+ne+te+V.mainAxis,re=t.elements.arrow&&C(t.elements.arrow),ae=re?"y"===k?re.clientTop||0:re.clientLeft||0:0,le=null!=(j=null==T?void 0:T[k])?j:0,de=Z+ie-le,me=se(b?s(G,Z+oe-le-ae):G,Z,b?c(Q,de):Q);z[k]=me,L[k]=me-Z}if(l){var fe,ue="x"===k?A:D,pe="x"===k?E:B,be=z[I],he="y"===I?"height":"width",ge=be+v[ue],Fe=be-v[pe],ve=-1!==[A,D].indexOf(w),we=null!=(fe=null==T?void 0:T[I])?fe:0,ye=ve?ge:be-P[he]-M[he]-we+V.altAxis,xe=ve?be+P[he]+M[he]-we-V.altAxis:Fe,ke=b&&ve?function(e,t,n){var o=se(e,t,n);return o>n?n:o}(ye,be,xe):se(b?ye:ge,be,b?xe:Fe);z[I]=ke,L[I]=ke-be}t.modifiersData[o]=L}},requiresIfExists:["offset"]};// eslint-disable-next-line import/no-unused-modules const de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,o=e.name,i=e.options,r=n.elements.arrow,a=n.modifiersData.popperOffsets,c=U(n.placement),s=W(c),l=[D,B].indexOf(c)>=0?"height":"width";if(r&&a){var d=function(e,t){return re("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:ae(e,z))}(i.padding,n),m=F(r),f="y"===s?A:D,u="y"===s?E:B,p=n.rects.reference[l]+n.rects.reference[s]-a[s]-n.rects.popper[l],b=a[s]-n.rects.reference[s],h=C(r),g=h?"y"===s?h.clientHeight||0:h.clientWidth||0:0,v=p/2-b/2,w=d[f],y=g-m[l]-d[u],x=g/2-m[l]/2+v,k=se(w,x,y),I=s;n.modifiersData[o]=((t={})[I]=k,t.centerOffset=k-x,t)}},effect:function(e){var t=e.state,n=e.options.element,o=void 0===n?"[data-popper-arrow]":n;null!=o&&("string"!=typeof o||(o=t.elements.popper.querySelector(o)))&&te(t.elements.popper,o)&&(t.elements.arrow=o)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function me(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function fe(e){return[A,B,E,D].some((function(t){return e[t]>=0}))}var ue=q({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,r=i.scroll,a=void 0===r||r,c=i.resize,s=void 0===c||c,l=o(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach((function(e){e.addEventListener("scroll",n.update,Z)})),s&&l.addEventListener("resize",n.update,Z),function(){a&&d.forEach((function(e){e.removeEventListener("scroll",n.update,Z)})),s&&l.removeEventListener("resize",n.update,Z)}}// eslint-disable-next-line import/no-unused-modules ,data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=G({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}// eslint-disable-next-line import/no-unused-modules ,data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,o=n.gpuAcceleration,i=void 0===o||o,r=n.adaptive,a=void 0===r||r,c=n.roundOffsets,s=void 0===c||c,l={placement:U(t.placement),variation:H(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Y(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Y(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}// eslint-disable-next-line import/no-unused-modules ,data:{}},X,K,{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var i=n.mainAxis,r=void 0===i||i,a=n.altAxis,c=void 0===a||a,s=n.fallbackPlacements,l=n.padding,d=n.boundary,m=n.rootBoundary,f=n.altBoundary,u=n.flipVariations,p=void 0===u||u,b=n.allowedAutoPlacements,h=t.options.placement,g=U(h),F=s||(g===h||!p?[_(h)]: // eslint-disable-next-line import/no-unused-modules -function(e){if(U(e)===I)return[];var t=_(e);return[ee(e),t,ee(t)]}(h)),v=[h].concat(F).reduce((function(e,n){return e.concat(U(n)===I?function(e,t){void 0===t&&(t={});var n=t,o=n.placement,i=n.boundary,r=n.rootBoundary,a=n.padding,c=n.flipVariations,s=n.allowedAutoPlacements,l=void 0===s?T:s,d=H(o),m=d?c?V:V.filter((function(e){return H(e)===d})):z,f=m.filter((function(e){return l.indexOf(e)>=0}));0===f.length&&(f=m);var u=f.reduce((function(t,n){return t[n]=ce(e,{placement:n,boundary:i,rootBoundary:r,padding:a})[U(n)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}(t,{placement:n,boundary:d,rootBoundary:m,padding:l,flipVariations:p,allowedAutoPlacements:b}):n)}),[]),w=t.rects.reference,y=t.rects.popper,x=new Map,k=!0,C=v[0],M=0;M=0,R=j?"width":"height",N=ce(t,{placement:P,boundary:d,rootBoundary:m,altBoundary:f,padding:l}),q=j?L?B:D:L?E:A;w[R]>y[R]&&(q=_(q));var Z=_(q),W=[];if(r&&W.push(N[O]<=0),c&&W.push(N[q]<=0,N[Z]<=0),W.every((function(e){return e}))){C=P,k=!1;break}x.set(P,W)}if(k)for(var G=function(e){var t=v.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},Q=p?3:1;Q>0;Q--){if("break"===G(Q))break}t.placement!==C&&(t.modifiersData[o]._skip=!0,t.placement=C,t.reset=!0)}}// eslint-disable-next-line import/no-unused-modules +function(e){if(U(e)===I)return[];var t=_(e);return[ee(e),t,ee(t)]}(h)),v=[h].concat(F).reduce((function(e,n){return e.concat(U(n)===I?function(e,t){void 0===t&&(t={});var n=t,o=n.placement,i=n.boundary,r=n.rootBoundary,a=n.padding,c=n.flipVariations,s=n.allowedAutoPlacements,l=void 0===s?T:s,d=H(o),m=d?c?V:V.filter((function(e){return H(e)===d})):z,f=m.filter((function(e){return l.indexOf(e)>=0}));0===f.length&&(f=m);var u=f.reduce((function(t,n){return t[n]=ce(e,{placement:n,boundary:i,rootBoundary:r,padding:a})[U(n)],t}),{});return Object.keys(u).sort((function(e,t){return u[e]-u[t]}))}(t,{placement:n,boundary:d,rootBoundary:m,padding:l,flipVariations:p,allowedAutoPlacements:b}):n)}),[]),w=t.rects.reference,y=t.rects.popper,x=new Map,k=!0,C=v[0],P=0;P=0,R=j?"width":"height",N=ce(t,{placement:M,boundary:d,rootBoundary:m,altBoundary:f,padding:l}),q=j?L?B:D:L?E:A;w[R]>y[R]&&(q=_(q));var Z=_(q),W=[];if(r&&W.push(N[O]<=0),c&&W.push(N[q]<=0,N[Z]<=0),W.every((function(e){return e}))){C=M,k=!1;break}x.set(M,W)}if(k)for(var G=function(e){var t=v.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return C=t,"break"},Q=p?3:1;Q>0;Q--){if("break"===G(Q))break}t.placement!==C&&(t.modifiersData[o]._skip=!0,t.placement=C,t.reset=!0)}}// eslint-disable-next-line import/no-unused-modules ,requiresIfExists:["offset"],data:{_skip:!1}},le,de,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,o=t.rects.reference,i=t.rects.popper,r=t.modifiersData.preventOverflow,a=ce(t,{elementContext:"reference"}),c=ce(t,{altBoundary:!0}),s=me(a,o),l=me(c,i,r),d=fe(s),m=fe(l);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:l,isReferenceHidden:d,hasPopperEscaped:m},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":m})}// eslint-disable-next-line import/no-unused-modules -}]}),pe="tippy-content",be="tippy-backdrop",he="tippy-arrow",ge="tippy-svg-arrow",Fe={passive:!0,capture:!0},ve=function(){return document.body};function we(e,t,n){if(Array.isArray(e)){var o=e[t];return null==o?Array.isArray(n)?n[t]:n:o}return e}function ye(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function xe(e,t){return"function"==typeof e?e.apply(void 0,t):e}function ke(e,t){return 0===t?e:function(o){clearTimeout(n),n=setTimeout((function(){e(o)}),t)};var n}function Ce(e){return[].concat(e)}function Ae(e,t){-1===e.indexOf(t)&&e.push(t)}function Ee(e){return e.split("-")[0]}function Be(e){return[].slice.call(e)}function De(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function Ie(){return document.createElement("div")}function ze(e){return["Element","Fragment"].some((function(t){return ye(e,t)}))}function Se(e){return ye(e,"MouseEvent")}function Me(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function Pe(e){return ze(e)?[e]:function(e){return ye(e,"NodeList")}(e)?Be(e):Array.isArray(e)?e:Be(document.querySelectorAll(e))}function Oe(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function Ve(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function Te(e){var t,n=Ce(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function Le(e,t,n){var o=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[o](t,n)}))}function je(e,t){for(var n=t;n;){var o;if(e.contains(n))return!0;n=null==n.getRootNode||null==(o=n.getRootNode())?void 0:o.host}return!1}var Re={isTouch:!1},Ne=0;function qe(){Re.isTouch||(Re.isTouch=!0,window.performance&&document.addEventListener("mousemove",Ze))}function Ze(){var e=performance.now();e-Ne<20&&(Re.isTouch=!1,document.removeEventListener("mousemove",Ze)),Ne=e}function Ue(){var e=document.activeElement;if(Me(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var He=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&// @ts-ignore -!!window.msCrypto;var We={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Ge=Object.assign({appendTo:ve,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},We,{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),Qe=Object.keys(Ge);function Ye(e){var t=(e.plugins||[]).reduce((function(t,n){var o,i=n.name,r=n.defaultValue;i&&(t[i]=void 0!==e[i]?e[i]:null!=(o=Ge[i])?o:r);return t}),{});return Object.assign({},e,t)}function Xe(e,t){var n=Object.assign({},t,{content:xe(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(Ye(Object.assign({},Ge,{plugins:t}))):Qe).reduce((function(t,n){var o=(e.getAttribute("data-tippy-"+n)||"").trim();if(!o)return t;if("content"===n)t[n]=o;else try{t[n]=JSON.parse(o)}catch(e){t[n]=o}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},Ge.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function Ke(e,t){e.innerHTML=t}function Je(e){var t=Ie();return!0===e?t.className=he:(t.className=ge,ze(e)?t.appendChild(e):Ke(t,e)),t}function _e(e,t){ze(t.content)?(Ke(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?Ke(e,t.content):e.textContent=t.content)}function $e(e){var t=e.firstElementChild,n=Be(t.children);return{box:t,content:n.find((function(e){return e.classList.contains(pe)})),arrow:n.find((function(e){return e.classList.contains(he)||e.classList.contains(ge)})),backdrop:n.find((function(e){return e.classList.contains(be)}))}}function et(e){var t=Ie(),n=Ie();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var o=Ie();function i(n,o){var i=$e(t),r=i.box,a=i.content,c=i.arrow;o.theme?r.setAttribute("data-theme",o.theme):r.removeAttribute("data-theme"),"string"==typeof o.animation?r.setAttribute("data-animation",o.animation):r.removeAttribute("data-animation"),o.inertia?r.setAttribute("data-inertia",""):r.removeAttribute("data-inertia"),r.style.maxWidth="number"==typeof o.maxWidth?o.maxWidth+"px":o.maxWidth,o.role?r.setAttribute("role",o.role):r.removeAttribute("role"),n.content===o.content&&n.allowHTML===o.allowHTML||_e(a,e.props),o.arrow?c?n.arrow!==o.arrow&&(r.removeChild(c),r.appendChild(Je(o.arrow))):r.appendChild(Je(o.arrow)):c&&r.removeChild(c)}return o.className=pe,o.setAttribute("data-state","hidden"),_e(o,e.props),t.appendChild(n),n.appendChild(o),i(e.props,e.props),{popper:t,onUpdate:i}}et.$$tippy=!0;var tt=1,nt=[],ot=[];function it(e,t){var n,o,i,r,a,c,s,l,d=Xe(e,Object.assign({},Ge,Ye(De(t)))),m=!1,f=!1,u=!1,p=!1,b=[],h=ke(Q,d.interactiveDebounce),g=tt++,F=(l=d.plugins).filter((function(e,t){return l.indexOf(e)===t})),v={id:g,reference:e,popper:Ie(),popperInstance:null,props:d,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:F,clearDelayTimeouts:function(){clearTimeout(n),clearTimeout(o),cancelAnimationFrame(i)},setProps:function(t){0;if(v.state.isDestroyed)return;P("onBeforeUpdate",[v,t]),W();var n=v.props,o=Xe(e,Object.assign({},n,De(t),{ignoreAttributes:!0}));v.props=o,H(),n.interactiveDebounce!==o.interactiveDebounce&&(T(),h=ke(Q,o.interactiveDebounce));n.triggerTarget&&!o.triggerTarget?Ce(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):o.triggerTarget&&e.removeAttribute("aria-expanded");V(),M(),x&&x(n,o);v.popperInstance&&(J(),$().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));P("onAfterUpdate",[v,t])},setContent:function(e){v.setProps({content:e})},show:function(){0;var e=v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=Re.isTouch&&!v.props.touch,i=we(v.props.duration,0,Ge.duration);if(e||t||n||o)return;if(D().hasAttribute("disabled"))return;if(P("onShow",[v],!1),!1===v.props.onShow(v))return;v.state.isVisible=!0,B()&&(y.style.visibility="visible");M(),N(),v.state.isMounted||(y.style.transition="none");if(B()){var r=z(),a=r.box,s=r.content;Oe([a,s],0)}c=function(){var e;if(v.state.isVisible&&!p){if(p=!0,y.offsetHeight,y.style.transition=v.props.moveTransition,B()&&v.props.animation){var t=z(),n=t.box,o=t.content;Oe([n,o],i),Ve([n,o],"visible")}O(),V(),Ae(ot,v),null==(e=v.popperInstance)||e.forceUpdate(),P("onMount",[v]),v.props.animation&&B()&&function(e,t){Z(e,t)}(i,(function(){v.state.isShown=!0,P("onShown",[v])}))}},function(){var e,t=v.props.appendTo,n=D();e=v.props.interactive&&t===ve||"parent"===t?n.parentNode:xe(t,[n]);e.contains(y)||e.appendChild(y);v.state.isMounted=!0,J(),!1}()},hide:function(){0;var e=!v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=we(v.props.duration,1,Ge.duration);if(e||t||n)return;if(P("onHide",[v],!1),!1===v.props.onHide(v))return;v.state.isVisible=!1,v.state.isShown=!1,p=!1,m=!1,B()&&(y.style.visibility="hidden");if(T(),q(),M(!0),B()){var i=z(),r=i.box,a=i.content;v.props.animation&&(Oe([r,a],o),Ve([r,a],"hidden"))}O(),V(),v.props.animation?B()&&function(e,t){Z(e,(function(){!v.state.isVisible&&y.parentNode&&y.parentNode.contains(y)&&t()}))}(o,v.unmount):v.unmount()},hideWithInteractivity:function(e){0;I().addEventListener("mousemove",h),Ae(nt,h),h(e)},enable:function(){v.state.isEnabled=!0},disable:function(){v.hide(),v.state.isEnabled=!1},unmount:function(){0;v.state.isVisible&&v.hide();if(!v.state.isMounted)return;_(),$().forEach((function(e){e._tippy.unmount()})),y.parentNode&&y.parentNode.removeChild(y);ot=ot.filter((function(e){return e!==v})),v.state.isMounted=!1,P("onHidden",[v])},destroy:function(){0;if(v.state.isDestroyed)return;v.clearDelayTimeouts(),v.unmount(),W(),delete e._tippy,v.state.isDestroyed=!0,P("onDestroy",[v])}};if(!d.render)return v;var w=d.render(v),y=w.popper,x=w.onUpdate;y.setAttribute("data-tippy-root",""),y.id="tippy-"+v.id,v.popper=y,e._tippy=v,y._tippy=v;var k=F.map((function(e){return e.fn(v)})),C=e.hasAttribute("aria-expanded");return H(),V(),M(),P("onCreate",[v]),d.showOnCreate&&ee(),y.addEventListener("mouseenter",(function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()})),y.addEventListener("mouseleave",(function(){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&I().addEventListener("mousemove",h)})),v;function A(){var e=v.props.touch;return Array.isArray(e)?e:[e,0]}function E(){return"hold"===A()[0]}function B(){var e; +}]}),pe="tippy-content",be="tippy-backdrop",he="tippy-arrow",ge="tippy-svg-arrow",Fe={passive:!0,capture:!0},ve=function(){return document.body};function we(e,t,n){if(Array.isArray(e)){var o=e[t];return null==o?Array.isArray(n)?n[t]:n:o}return e}function ye(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function xe(e,t){return"function"==typeof e?e.apply(void 0,t):e}function ke(e,t){return 0===t?e:function(o){clearTimeout(n),n=setTimeout((function(){e(o)}),t)};var n}function Ce(e){return[].concat(e)}function Ae(e,t){-1===e.indexOf(t)&&e.push(t)}function Ee(e){return e.split("-")[0]}function Be(e){return[].slice.call(e)}function De(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function Ie(){return document.createElement("div")}function ze(e){return["Element","Fragment"].some((function(t){return ye(e,t)}))}function Se(e){return ye(e,"MouseEvent")}function Pe(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function Me(e){return ze(e)?[e]:function(e){return ye(e,"NodeList")}(e)?Be(e):Array.isArray(e)?e:Be(document.querySelectorAll(e))}function Oe(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function Ve(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function Te(e){var t,n=Ce(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function Le(e,t,n){var o=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[o](t,n)}))}function je(e,t){for(var n=t;n;){var o;if(e.contains(n))return!0;n=null==n.getRootNode||null==(o=n.getRootNode())?void 0:o.host}return!1}var Re={isTouch:!1},Ne=0;function qe(){Re.isTouch||(Re.isTouch=!0,window.performance&&document.addEventListener("mousemove",Ze))}function Ze(){var e=performance.now();e-Ne<20&&(Re.isTouch=!1,document.removeEventListener("mousemove",Ze)),Ne=e}function Ue(){var e=document.activeElement;if(Pe(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var He=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&// @ts-ignore +!!window.msCrypto;var We={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Ge=Object.assign({appendTo:ve,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},We,{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),Qe=Object.keys(Ge);function Ye(e){var t=(e.plugins||[]).reduce((function(t,n){var o,i=n.name,r=n.defaultValue;i&&(t[i]=void 0!==e[i]?e[i]:null!=(o=Ge[i])?o:r);return t}),{});return Object.assign({},e,t)}function Xe(e,t){var n=Object.assign({},t,{content:xe(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(Ye(Object.assign({},Ge,{plugins:t}))):Qe).reduce((function(t,n){var o=(e.getAttribute("data-tippy-"+n)||"").trim();if(!o)return t;if("content"===n)t[n]=o;else try{t[n]=JSON.parse(o)}catch(e){t[n]=o}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},Ge.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function Ke(e,t){e.innerHTML=t}function Je(e){var t=Ie();return!0===e?t.className=he:(t.className=ge,ze(e)?t.appendChild(e):Ke(t,e)),t}function _e(e,t){ze(t.content)?(Ke(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?Ke(e,t.content):e.textContent=t.content)}function $e(e){var t=e.firstElementChild,n=Be(t.children);return{box:t,content:n.find((function(e){return e.classList.contains(pe)})),arrow:n.find((function(e){return e.classList.contains(he)||e.classList.contains(ge)})),backdrop:n.find((function(e){return e.classList.contains(be)}))}}function et(e){var t=Ie(),n=Ie();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var o=Ie();function i(n,o){var i=$e(t),r=i.box,a=i.content,c=i.arrow;o.theme?r.setAttribute("data-theme",o.theme):r.removeAttribute("data-theme"),"string"==typeof o.animation?r.setAttribute("data-animation",o.animation):r.removeAttribute("data-animation"),o.inertia?r.setAttribute("data-inertia",""):r.removeAttribute("data-inertia"),r.style.maxWidth="number"==typeof o.maxWidth?o.maxWidth+"px":o.maxWidth,o.role?r.setAttribute("role",o.role):r.removeAttribute("role"),n.content===o.content&&n.allowHTML===o.allowHTML||_e(a,e.props),o.arrow?c?n.arrow!==o.arrow&&(r.removeChild(c),r.appendChild(Je(o.arrow))):r.appendChild(Je(o.arrow)):c&&r.removeChild(c)}return o.className=pe,o.setAttribute("data-state","hidden"),_e(o,e.props),t.appendChild(n),n.appendChild(o),i(e.props,e.props),{popper:t,onUpdate:i}}et.$$tippy=!0;var tt=1,nt=[],ot=[];function it(e,t){var n,o,i,r,a,c,s,l,d=Xe(e,Object.assign({},Ge,Ye(De(t)))),m=!1,f=!1,u=!1,p=!1,b=[],h=ke(Q,d.interactiveDebounce),g=tt++,F=(l=d.plugins).filter((function(e,t){return l.indexOf(e)===t})),v={id:g,reference:e,popper:Ie(),popperInstance:null,props:d,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:F,clearDelayTimeouts:function(){clearTimeout(n),clearTimeout(o),cancelAnimationFrame(i)},setProps:function(t){0;if(v.state.isDestroyed)return;M("onBeforeUpdate",[v,t]),W();var n=v.props,o=Xe(e,Object.assign({},n,De(t),{ignoreAttributes:!0}));v.props=o,H(),n.interactiveDebounce!==o.interactiveDebounce&&(T(),h=ke(Q,o.interactiveDebounce));n.triggerTarget&&!o.triggerTarget?Ce(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):o.triggerTarget&&e.removeAttribute("aria-expanded");V(),P(),x&&x(n,o);v.popperInstance&&(J(),$().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));M("onAfterUpdate",[v,t])},setContent:function(e){v.setProps({content:e})},show:function(){0;var e=v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=Re.isTouch&&!v.props.touch,i=we(v.props.duration,0,Ge.duration);if(e||t||n||o)return;if(D().hasAttribute("disabled"))return;if(M("onShow",[v],!1),!1===v.props.onShow(v))return;v.state.isVisible=!0,B()&&(y.style.visibility="visible");P(),N(),v.state.isMounted||(y.style.transition="none");if(B()){var r=z(),a=r.box,s=r.content;Oe([a,s],0)}c=function(){var e;if(v.state.isVisible&&!p){if(p=!0,y.offsetHeight,y.style.transition=v.props.moveTransition,B()&&v.props.animation){var t=z(),n=t.box,o=t.content;Oe([n,o],i),Ve([n,o],"visible")}O(),V(),Ae(ot,v),null==(e=v.popperInstance)||e.forceUpdate(),M("onMount",[v]),v.props.animation&&B()&&function(e,t){Z(e,t)}(i,(function(){v.state.isShown=!0,M("onShown",[v])}))}},function(){var e,t=v.props.appendTo,n=D();e=v.props.interactive&&t===ve||"parent"===t?n.parentNode:xe(t,[n]);e.contains(y)||e.appendChild(y);v.state.isMounted=!0,J(),!1}()},hide:function(){0;var e=!v.state.isVisible,t=v.state.isDestroyed,n=!v.state.isEnabled,o=we(v.props.duration,1,Ge.duration);if(e||t||n)return;if(M("onHide",[v],!1),!1===v.props.onHide(v))return;v.state.isVisible=!1,v.state.isShown=!1,p=!1,m=!1,B()&&(y.style.visibility="hidden");if(T(),q(),P(!0),B()){var i=z(),r=i.box,a=i.content;v.props.animation&&(Oe([r,a],o),Ve([r,a],"hidden"))}O(),V(),v.props.animation?B()&&function(e,t){Z(e,(function(){!v.state.isVisible&&y.parentNode&&y.parentNode.contains(y)&&t()}))}(o,v.unmount):v.unmount()},hideWithInteractivity:function(e){0;I().addEventListener("mousemove",h),Ae(nt,h),h(e)},enable:function(){v.state.isEnabled=!0},disable:function(){v.hide(),v.state.isEnabled=!1},unmount:function(){0;v.state.isVisible&&v.hide();if(!v.state.isMounted)return;_(),$().forEach((function(e){e._tippy.unmount()})),y.parentNode&&y.parentNode.removeChild(y);ot=ot.filter((function(e){return e!==v})),v.state.isMounted=!1,M("onHidden",[v])},destroy:function(){0;if(v.state.isDestroyed)return;v.clearDelayTimeouts(),v.unmount(),W(),delete e._tippy,v.state.isDestroyed=!0,M("onDestroy",[v])}};if(!d.render)return v;var w=d.render(v),y=w.popper,x=w.onUpdate;y.setAttribute("data-tippy-root",""),y.id="tippy-"+v.id,v.popper=y,e._tippy=v,y._tippy=v;var k=F.map((function(e){return e.fn(v)})),C=e.hasAttribute("aria-expanded");return H(),V(),P(),M("onCreate",[v]),d.showOnCreate&&ee(),y.addEventListener("mouseenter",(function(){v.props.interactive&&v.state.isVisible&&v.clearDelayTimeouts()})),y.addEventListener("mouseleave",(function(){v.props.interactive&&v.props.trigger.indexOf("mouseenter")>=0&&I().addEventListener("mousemove",h)})),v;function A(){var e=v.props.touch;return Array.isArray(e)?e:[e,0]}function E(){return"hold"===A()[0]}function B(){var e; // @ts-ignore -return!(null==(e=v.props.render)||!e.$$tippy)}function D(){return s||e}function I(){var e=D().parentNode;return e?Te(e):document}function z(){return $e(y)}function S(e){return v.state.isMounted&&!v.state.isVisible||Re.isTouch||r&&"focus"===r.type?0:we(v.props.delay,e?0:1,Ge.delay)}function M(e){void 0===e&&(e=!1),y.style.pointerEvents=v.props.interactive&&!e?"":"none",y.style.zIndex=""+v.props.zIndex}function P(e,t,n){var o;(void 0===n&&(n=!0),k.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(o=v.props)[e].apply(o,t)}function O(){var t=v.props.aria;if(t.content){var n="aria-"+t.content,o=y.id;Ce(v.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(v.state.isVisible)e.setAttribute(n,t?t+" "+o:o);else{var i=t&&t.replace(o,"").trim();i?e.setAttribute(n,i):e.removeAttribute(n)}}))}}function V(){!C&&v.props.aria.expanded&&Ce(v.props.triggerTarget||e).forEach((function(e){v.props.interactive?e.setAttribute("aria-expanded",v.state.isVisible&&e===D()?"true":"false"):e.removeAttribute("aria-expanded")}))}function T(){I().removeEventListener("mousemove",h),nt=nt.filter((function(e){return e!==h}))}function L(t){if(!Re.isTouch||!u&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!v.props.interactive||!je(y,n)){if(Ce(v.props.triggerTarget||e).some((function(e){return je(e,n)}))){if(Re.isTouch)return;if(v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else P("onClickOutside",[v,t]);!0===v.props.hideOnClick&&(v.clearDelayTimeouts(),v.hide(),f=!0,setTimeout((function(){f=!1})),v.state.isMounted||q())}}}function j(){u=!0}function R(){u=!1}function N(){var e=I();e.addEventListener("mousedown",L,!0),e.addEventListener("touchend",L,Fe),e.addEventListener("touchstart",R,Fe),e.addEventListener("touchmove",j,Fe)}function q(){var e=I();e.removeEventListener("mousedown",L,!0),e.removeEventListener("touchend",L,Fe),e.removeEventListener("touchstart",R,Fe),e.removeEventListener("touchmove",j,Fe)}function Z(e,t){var n=z().box;function o(e){e.target===n&&(Le(n,"remove",o),t())}if(0===e)return t();Le(n,"remove",a),Le(n,"add",o),a=o}function U(t,n,o){void 0===o&&(o=!1),Ce(v.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,o),b.push({node:e,eventType:t,handler:n,options:o})}))}function H(){var e;E()&&(U("touchstart",G,{passive:!0}),U("touchend",Y,{passive:!0})),(e=v.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(U(e,G),e){case"mouseenter":U("mouseleave",Y);break;case"focus":U(He?"focusout":"blur",X);break;case"focusin":U("focusout",X)}}))}function W(){b.forEach((function(e){var t=e.node,n=e.eventType,o=e.handler,i=e.options;t.removeEventListener(n,o,i)})),b=[]}function G(e){var t,n=!1;if(v.state.isEnabled&&!K(e)&&!f){var o="focus"===(null==(t=r)?void 0:t.type);r=e,s=e.currentTarget,V(),!v.state.isVisible&&Se(e)&&nt.forEach((function(t){return t(e)})),"click"===e.type&&(v.props.trigger.indexOf("mouseenter")<0||m)&&!1!==v.props.hideOnClick&&v.state.isVisible?n=!0:ee(e),"click"===e.type&&(m=!n),n&&!o&&te(e)}}function Q(e){var t=e.target,n=D().contains(t)||y.contains(t);if("mousemove"!==e.type||!n){var o=$().concat(y).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:d}:null})).filter(Boolean);(function(e,t){var n=t.clientX,o=t.clientY;return e.every((function(e){var t=e.popperRect,i=e.popperState,r=e.props.interactiveBorder,a=Ee(i.placement),c=i.modifiersData.offset;if(!c)return!0;var s="bottom"===a?c.top.y:0,l="top"===a?c.bottom.y:0,d="right"===a?c.left.x:0,m="left"===a?c.right.x:0,f=t.top-o+s>r,u=o-t.bottom-l>r,p=t.left-n+d>r,b=n-t.right-m>r;return f||u||p||b}))})(o,e)&&(T(),te(e))}}function Y(e){K(e)||v.props.trigger.indexOf("click")>=0&&m||(v.props.interactive?v.hideWithInteractivity(e):te(e))}function X(e){v.props.trigger.indexOf("focusin")<0&&e.target!==D()||v.props.interactive&&e.relatedTarget&&y.contains(e.relatedTarget)||te(e)}function K(e){return!!Re.isTouch&&E()!==e.type.indexOf("touch")>=0}function J(){_();var t=v.props,n=t.popperOptions,o=t.placement,i=t.offset,r=t.getReferenceClientRect,a=t.moveTransition,s=B()?$e(y).arrow:null,l=r?{getBoundingClientRect:r,contextElement:r.contextElement||D()}:e,d={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(B()){var n=z().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}},m=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!a}},d];B()&&s&&m.push({name:"arrow",options:{element:s,padding:3}}),m.push.apply(m,(null==n?void 0:n.modifiers)||[]),v.popperInstance=ue(l,y,Object.assign({},n,{placement:o,onFirstUpdate:c,modifiers:m}))}function _(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function $(){return Be(y.querySelectorAll("[data-tippy-root]"))}function ee(e){v.clearDelayTimeouts(),e&&P("onTrigger",[v,e]),N();var t=S(!0),o=A(),i=o[0],r=o[1];Re.isTouch&&"hold"===i&&r&&(t=r),t?n=setTimeout((function(){v.show()}),t):v.show()}function te(e){if(v.clearDelayTimeouts(),P("onUntrigger",[v,e]),v.state.isVisible){if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&m)){var t=S(!1);t?o=setTimeout((function(){v.state.isVisible&&v.hide()}),t):i=requestAnimationFrame((function(){v.hide()}))}}else q()}}function rt(e,t){void 0===t&&(t={});var n=Ge.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",qe,Fe),window.addEventListener("blur",Ue);var o=Object.assign({},t,{plugins:n}),i=Pe(e).reduce((function(e,t){var n=t&&it(t,o);return n&&e.push(n),e}),[]);return ze(e)?i[0]:i}rt.defaultProps=Ge,rt.setDefaultProps=function(e){Object.keys(e).forEach((function(t){Ge[t]=e[t]}))},rt.currentInput=Re;Object.assign({},X,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}});rt.setDefaultProps({render:et});const at=rt;var ct=n(7511),st=n(3975),lt=n.n(st);const dt=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,ct.addStyle)(lt(),"mini-toast-style"),Promise.resolve().then(n.bind(n,3904));const i=at(t,{content:e,allowHTML:!0,interactive:!0,delay:[0,200],arrow:!0,zIndex:11e4,...o});return{get message(){return i.props.content},set message(e){i.setContent(e)},get triggerElement(){return i.reference},get placement(){return i.props.placement},set placement(e){i.setProps({placement:e})},get tippy(){return i}}}},2866:(e,t,n)=>{"use strict";n.r(t),n.d(t,{EmptyImageUrl:()=>i,UserAgent:()=>o});const o="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0",i='data:image/svg+xml;utf-8,'},7079:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatCount:()=>l,formatDate:()=>m,formatDateTime:()=>u,formatDuration:()=>a,formatFileSize:()=>o,formatFilename:()=>p,formatNumber:()=>d,formatPercent:()=>i,formatTime:()=>f,parseCount:()=>c,parseDuration:()=>r});const o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];let o=e,i=0;for(;o>=1024;)o/=1024,i++;return`${Math.round(o*10**t)/10**t}${n[i]}`},i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.round(100*e*10**t)/10**t+"%"},r=e=>{const t=e.split(":");let n=0;return t.forEach(((e,o)=>{const i=o===t.length-1?parseFloat(e):parseInt(e);Number.isNaN(i)||(n+=i*60**(t.length-1-o))})),n},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=(e%60).toFixed(t),o=(Math.trunc(e/60)%60).toString(),i=Math.trunc(e/3600).toString(),r=0===t?2:3+t;return"0"===i?`${o.padStart(2,"0")}:${n.padStart(r,"0")}`:`${i}:${o.padStart(2,"0")}:${n.padStart(r,"0")}`},c=e=>{if("number"==typeof e)return e;const t=e.match(/亿$/)?1e8:e.match(/万$/)?1e4:1;return parseFloat(e)*t},s=e=>("string"==typeof e&&(e=parseInt(e)),e>=1e8?{number:(Math.round(e/1e7)/10).toString(),unit:"亿"}:e>=1e7?{number:Math.round(e/1e4).toString(),unit:"万"}:e>=1e4?{number:(Math.round(e/1e3)/10).toString(),unit:"万"}:{number:e.toString(),unit:""}),l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(null==e)return"0";const{number:n,unit:o}=s(e);return`${n.padStart(t,"0")}${o}`},d=(e,t)=>{if(Number.isNaN(e))return null;const n=Math.log10(t)+1,o=e.toString(),i=o.length-Math.trunc(e).toString().length;return o.padStart(n+i,"0")},m=e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")}`,f=e=>`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}`,u=e=>`${m(e)} ${f(e)}`,p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e.replace(/[\/\\:\*\?"<>\|]/g,t)}},816:(e,t,n)=>{"use strict";n.r(t),n.d(t,{browserLanguageCode:()=>r,defaultLanguageCode:()=>i,languageCodeToName:()=>a,languageNameToCode:()=>c});var o=n(779);const i="zh-CN",r=navigator.language,a={"zh-CN":"简体中文"};(0,o.registerAndGetData)("i18n",a);const c=e=>{const t=Object.entries(a).find((t=>{let[,n]=t;return n===e}));return t?t[0]:i}},3085:(e,t,n)=>{"use strict";function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t),n.d(t,{DoubleClickEvent:()=>M,bwpVideoFilter:()=>i,createHook:()=>E,createPostHook:()=>B,de:()=>c,dea:()=>s,deai:()=>l,delay:()=>u,deleteValue:()=>z,deleteValues:()=>S,des:()=>d,disableWindowScroll:()=>L,dq:()=>r,dqa:()=>a,fixed:()=>A,formData:()=>I,getCookieValue:()=>x,getCsrf:()=>C,getDpiSourceSet:()=>y,getNumberValidator:()=>j,getRandomId:()=>N,getUID:()=>k,getVue2Data:()=>W,isBwpVideo:()=>f,isDataSaveMode:()=>U,isEmbeddedPlayer:()=>g,isIframe:()=>F,isNotHtml:()=>v,isTyping:()=>O,matchPattern:()=>p,matchUrlPattern:()=>b,mountVueComponent:()=>h,none:()=>m,pascalCase:()=>R,playerReady:()=>P,preventEvent:()=>D,raiseEvent:()=>w,retrieveImageUrl:()=>V,simulateClick:()=>H,todo:()=>q,unreachable:()=>Z,waitForForeground:()=>T});const i=e=>{const t={video:", bwp-video",".bilibili-player-video video":", .bilibili-player-video bwp-video,.bpx-player-video-area bwp-video"}[e];return t?e+t:e},r=(e,t)=>t?e.querySelector(i(t)):document.querySelector(i(e)),a=(e,t)=>t?Array.from(e.querySelectorAll(i(t))):Array.from(document.querySelectorAll(i(e))),c=(e,t,n,o)=>document.evaluate(e,t,null,n,o),s=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,o);return Array.from({length:i.snapshotLength},((e,t)=>i.snapshotItem(t)))},l=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_ITERATOR_TYPE:XPathResult.UNORDERED_NODE_ITERATOR_TYPE,o);return{[Symbol.iterator]:()=>({next:()=>{let e=null;do{return e=i.iterateNext(),e?{done:!1,value:e}:{done:!0}}while(e)}})}},d=(e,t,n)=>c(e,t,XPathResult.FIRST_ORDERED_NODE_TYPE,n).singleNodeValue,m=()=>{},f=async()=>{const{hasVideo:e}=await Promise.resolve().then(n.bind(n,2533));return!!await e()&&( +return!(null==(e=v.props.render)||!e.$$tippy)}function D(){return s||e}function I(){var e=D().parentNode;return e?Te(e):document}function z(){return $e(y)}function S(e){return v.state.isMounted&&!v.state.isVisible||Re.isTouch||r&&"focus"===r.type?0:we(v.props.delay,e?0:1,Ge.delay)}function P(e){void 0===e&&(e=!1),y.style.pointerEvents=v.props.interactive&&!e?"":"none",y.style.zIndex=""+v.props.zIndex}function M(e,t,n){var o;(void 0===n&&(n=!0),k.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(o=v.props)[e].apply(o,t)}function O(){var t=v.props.aria;if(t.content){var n="aria-"+t.content,o=y.id;Ce(v.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(v.state.isVisible)e.setAttribute(n,t?t+" "+o:o);else{var i=t&&t.replace(o,"").trim();i?e.setAttribute(n,i):e.removeAttribute(n)}}))}}function V(){!C&&v.props.aria.expanded&&Ce(v.props.triggerTarget||e).forEach((function(e){v.props.interactive?e.setAttribute("aria-expanded",v.state.isVisible&&e===D()?"true":"false"):e.removeAttribute("aria-expanded")}))}function T(){I().removeEventListener("mousemove",h),nt=nt.filter((function(e){return e!==h}))}function L(t){if(!Re.isTouch||!u&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!v.props.interactive||!je(y,n)){if(Ce(v.props.triggerTarget||e).some((function(e){return je(e,n)}))){if(Re.isTouch)return;if(v.state.isVisible&&v.props.trigger.indexOf("click")>=0)return}else M("onClickOutside",[v,t]);!0===v.props.hideOnClick&&(v.clearDelayTimeouts(),v.hide(),f=!0,setTimeout((function(){f=!1})),v.state.isMounted||q())}}}function j(){u=!0}function R(){u=!1}function N(){var e=I();e.addEventListener("mousedown",L,!0),e.addEventListener("touchend",L,Fe),e.addEventListener("touchstart",R,Fe),e.addEventListener("touchmove",j,Fe)}function q(){var e=I();e.removeEventListener("mousedown",L,!0),e.removeEventListener("touchend",L,Fe),e.removeEventListener("touchstart",R,Fe),e.removeEventListener("touchmove",j,Fe)}function Z(e,t){var n=z().box;function o(e){e.target===n&&(Le(n,"remove",o),t())}if(0===e)return t();Le(n,"remove",a),Le(n,"add",o),a=o}function U(t,n,o){void 0===o&&(o=!1),Ce(v.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,o),b.push({node:e,eventType:t,handler:n,options:o})}))}function H(){var e;E()&&(U("touchstart",G,{passive:!0}),U("touchend",Y,{passive:!0})),(e=v.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(U(e,G),e){case"mouseenter":U("mouseleave",Y);break;case"focus":U(He?"focusout":"blur",X);break;case"focusin":U("focusout",X)}}))}function W(){b.forEach((function(e){var t=e.node,n=e.eventType,o=e.handler,i=e.options;t.removeEventListener(n,o,i)})),b=[]}function G(e){var t,n=!1;if(v.state.isEnabled&&!K(e)&&!f){var o="focus"===(null==(t=r)?void 0:t.type);r=e,s=e.currentTarget,V(),!v.state.isVisible&&Se(e)&&nt.forEach((function(t){return t(e)})),"click"===e.type&&(v.props.trigger.indexOf("mouseenter")<0||m)&&!1!==v.props.hideOnClick&&v.state.isVisible?n=!0:ee(e),"click"===e.type&&(m=!n),n&&!o&&te(e)}}function Q(e){var t=e.target,n=D().contains(t)||y.contains(t);if("mousemove"!==e.type||!n){var o=$().concat(y).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:d}:null})).filter(Boolean);(function(e,t){var n=t.clientX,o=t.clientY;return e.every((function(e){var t=e.popperRect,i=e.popperState,r=e.props.interactiveBorder,a=Ee(i.placement),c=i.modifiersData.offset;if(!c)return!0;var s="bottom"===a?c.top.y:0,l="top"===a?c.bottom.y:0,d="right"===a?c.left.x:0,m="left"===a?c.right.x:0,f=t.top-o+s>r,u=o-t.bottom-l>r,p=t.left-n+d>r,b=n-t.right-m>r;return f||u||p||b}))})(o,e)&&(T(),te(e))}}function Y(e){K(e)||v.props.trigger.indexOf("click")>=0&&m||(v.props.interactive?v.hideWithInteractivity(e):te(e))}function X(e){v.props.trigger.indexOf("focusin")<0&&e.target!==D()||v.props.interactive&&e.relatedTarget&&y.contains(e.relatedTarget)||te(e)}function K(e){return!!Re.isTouch&&E()!==e.type.indexOf("touch")>=0}function J(){_();var t=v.props,n=t.popperOptions,o=t.placement,i=t.offset,r=t.getReferenceClientRect,a=t.moveTransition,s=B()?$e(y).arrow:null,l=r?{getBoundingClientRect:r,contextElement:r.contextElement||D()}:e,d={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(B()){var n=z().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}},m=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!a}},d];B()&&s&&m.push({name:"arrow",options:{element:s,padding:3}}),m.push.apply(m,(null==n?void 0:n.modifiers)||[]),v.popperInstance=ue(l,y,Object.assign({},n,{placement:o,onFirstUpdate:c,modifiers:m}))}function _(){v.popperInstance&&(v.popperInstance.destroy(),v.popperInstance=null)}function $(){return Be(y.querySelectorAll("[data-tippy-root]"))}function ee(e){v.clearDelayTimeouts(),e&&M("onTrigger",[v,e]),N();var t=S(!0),o=A(),i=o[0],r=o[1];Re.isTouch&&"hold"===i&&r&&(t=r),t?n=setTimeout((function(){v.show()}),t):v.show()}function te(e){if(v.clearDelayTimeouts(),M("onUntrigger",[v,e]),v.state.isVisible){if(!(v.props.trigger.indexOf("mouseenter")>=0&&v.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&m)){var t=S(!1);t?o=setTimeout((function(){v.state.isVisible&&v.hide()}),t):i=requestAnimationFrame((function(){v.hide()}))}}else q()}}function rt(e,t){void 0===t&&(t={});var n=Ge.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",qe,Fe),window.addEventListener("blur",Ue);var o=Object.assign({},t,{plugins:n}),i=Me(e).reduce((function(e,t){var n=t&&it(t,o);return n&&e.push(n),e}),[]);return ze(e)?i[0]:i}rt.defaultProps=Ge,rt.setDefaultProps=function(e){Object.keys(e).forEach((function(t){Ge[t]=e[t]}))},rt.currentInput=Re;Object.assign({},X,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}});rt.setDefaultProps({render:et});const at=rt;var ct=n(7511),st=n(3975),lt=n.n(st);const dt=function(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,ct.addStyle)(lt(),"mini-toast-style"),Promise.resolve().then(n.bind(n,3904));const i=at(t,{content:e,allowHTML:!0,interactive:!0,delay:[0,200],arrow:!0,zIndex:11e4,...o});return{get message(){return i.props.content},set message(e){i.setContent(e)},get triggerElement(){return i.reference},get placement(){return i.props.placement},set placement(e){i.setProps({placement:e})},get tippy(){return i}}}},2866:(e,t,n)=>{"use strict";n.r(t),n.d(t,{EmptyImageUrl:()=>i,UserAgent:()=>o});const o="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0",i='data:image/svg+xml;utf-8,'},7079:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatCount:()=>l,formatDate:()=>m,formatDateTime:()=>u,formatDuration:()=>a,formatFileSize:()=>o,formatFilename:()=>p,formatNumber:()=>d,formatPercent:()=>i,formatTime:()=>f,parseCount:()=>c,parseDuration:()=>r});const o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];let o=e,i=0;for(;o>=1024;)o/=1024,i++;return`${Math.round(o*10**t)/10**t}${n[i]}`},i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Math.round(100*e*10**t)/10**t+"%"},r=e=>{const t=e.split(":");let n=0;return t.forEach(((e,o)=>{const i=o===t.length-1?parseFloat(e):parseInt(e);Number.isNaN(i)||(n+=i*60**(t.length-1-o))})),n},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=(e%60).toFixed(t),o=(Math.trunc(e/60)%60).toString(),i=Math.trunc(e/3600).toString(),r=0===t?2:3+t;return"0"===i?`${o.padStart(2,"0")}:${n.padStart(r,"0")}`:`${i}:${o.padStart(2,"0")}:${n.padStart(r,"0")}`},c=e=>{if("number"==typeof e)return e;const t=e.match(/亿$/)?1e8:e.match(/万$/)?1e4:1;return parseFloat(e)*t},s=e=>("string"==typeof e&&(e=parseInt(e)),e>=1e8?{number:(Math.round(e/1e7)/10).toString(),unit:"亿"}:e>=1e7?{number:Math.round(e/1e4).toString(),unit:"万"}:e>=1e4?{number:(Math.round(e/1e3)/10).toString(),unit:"万"}:{number:e.toString(),unit:""}),l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(null==e)return"0";const{number:n,unit:o}=s(e);return`${n.padStart(t,"0")}${o}`},d=(e,t)=>{if(Number.isNaN(e))return null;const n=Math.log10(t)+1,o=e.toString(),i=o.length-Math.trunc(e).toString().length;return o.padStart(n+i,"0")},m=e=>`${e.getFullYear()}-${(e.getMonth()+1).toString().padStart(2,"0")}-${e.getDate().toString().padStart(2,"0")}`,f=e=>`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}`,u=e=>`${m(e)} ${f(e)}`,p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e.replace(/[\/\\:\*\?"<>\|]/g,t)}},816:(e,t,n)=>{"use strict";n.r(t),n.d(t,{browserLanguageCode:()=>r,defaultLanguageCode:()=>i,languageCodeToName:()=>a,languageNameToCode:()=>c});var o=n(779);const i="zh-CN",r=navigator.language,a={"zh-CN":"简体中文"};(0,o.registerAndGetData)("i18n",a);const c=e=>{const t=Object.entries(a).find((t=>{let[,n]=t;return n===e}));return t?t[0]:i}},3085:(e,t,n)=>{"use strict";function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t),n.d(t,{DoubleClickEvent:()=>P,bwpVideoFilter:()=>i,createHook:()=>E,createPostHook:()=>B,de:()=>c,dea:()=>s,deai:()=>l,delay:()=>u,deleteValue:()=>z,deleteValues:()=>S,des:()=>d,disableWindowScroll:()=>L,dq:()=>r,dqa:()=>a,fixed:()=>A,formData:()=>I,getCookieValue:()=>x,getCsrf:()=>C,getDpiSourceSet:()=>y,getNumberValidator:()=>j,getRandomId:()=>N,getUID:()=>k,getVue2Data:()=>W,isBwpVideo:()=>f,isDataSaveMode:()=>U,isEmbeddedPlayer:()=>g,isIframe:()=>F,isNotHtml:()=>v,isTyping:()=>O,matchPattern:()=>p,matchUrlPattern:()=>b,mountVueComponent:()=>h,none:()=>m,pascalCase:()=>R,playerReady:()=>M,preventEvent:()=>D,raiseEvent:()=>w,retrieveImageUrl:()=>V,simulateClick:()=>H,todo:()=>q,unreachable:()=>Z,waitForForeground:()=>T});const i=e=>{const t={video:", bwp-video",".bilibili-player-video video":", .bilibili-player-video bwp-video,.bpx-player-video-area bwp-video"}[e];return t?e+t:e},r=(e,t)=>t?e.querySelector(i(t)):document.querySelector(i(e)),a=(e,t)=>t?Array.from(e.querySelectorAll(i(t))):Array.from(document.querySelectorAll(i(e))),c=(e,t,n,o)=>document.evaluate(e,t,null,n,o),s=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,o);return Array.from({length:i.snapshotLength},((e,t)=>i.snapshotItem(t)))},l=(e,t,n,o)=>{const i=c(e,t,n?XPathResult.ORDERED_NODE_ITERATOR_TYPE:XPathResult.UNORDERED_NODE_ITERATOR_TYPE,o);return{[Symbol.iterator]:()=>({next:()=>{let e=null;do{return e=i.iterateNext(),e?{done:!1,value:e}:{done:!0}}while(e)}})}},d=(e,t,n)=>c(e,t,XPathResult.FIRST_ORDERED_NODE_TYPE,n).singleNodeValue,m=()=>{},f=async()=>{const{hasVideo:e}=await Promise.resolve().then(n.bind(n,2533));return!!await e()&&( // eslint-disable-next-line no-underscore-dangle -unsafeWindow.__ENABLE_WASM_PLAYER__||Boolean(r("#bilibili-player bwp-video")))},u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((t=>setTimeout((()=>t()),e)))},p=(e,t)=>"string"==typeof t?e.includes(t):t.test(e),b=e=>p(document.URL.replace(window.location.search,""),e),h=(e,t)=>{const n="default"in e?e.default:e;return(o=n,o instanceof Function?new o:o.functional?new(Vue.extend(o)):new Vue(o)).$mount(t);var o},g=()=>"player.bilibili.com"===window.location.host||document.URL.startsWith("https://www.bilibili.com/html/player.html"),F=()=>document.body&&unsafeWindow.parent.window!==unsafeWindow,v=()=>"text/html"!==document.contentType,w=(e,t)=>{const n=new Event(t);e.dispatchEvent(n)},y=(e,t,n)=>{if(!n){const t=e.match(/.+\.(.+)$/);n=t?t[1]:"jpg"}return n.startsWith(".")&&(n=n.substring(1)),[1,1.25,1.5,1.75,2,2.25,2.5,2.75,3,3.25,3.5,3.75,4].map((o=>{if("object"==typeof t){if("width"in t&&"height"in t)return`${e}@${Math.trunc(t.width*o)}w_${Math.trunc(t.height*o)}h.${n} ${o}x`;if("width"in t)return`${e}@${Math.trunc(t.width*o)}w.${n} ${o}x`;if("height"in t)return`${e}@${Math.trunc(t.height*o)}h.${n} ${o}x`;throw new Error(`Invalid argument 'baseSize': ${JSON.stringify(t)}`)}return`${e}@${Math.trunc(t*o)}w_${Math.trunc(t*o)}h.${n} ${o}x`})).join(",")},x=e=>document.cookie.replace(new RegExp(`(?:(?:^|.*;\\s*)${e}\\s*\\=\\s*([^;]*).*$)|^.*$`),"$1"),k=()=>x("DedeUserID"),C=()=>x("bili_jct"),A=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=10**t;let o=(Math.trunc(e*n)/n).toString();const i=o.indexOf(".");if(i>-1){const e=o.length-i-1;e{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},B=(e,t,n)=>{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},D=(e,t,n)=>{const o=e=>{(n?.(e)??1)&&e.stopImmediatePropagation()};return e.addEventListener(t,o,{capture:!0}),()=>{e.removeEventListener(t,o,{capture:!0})}},I=(e,t)=>{const{encode:n}={encode:!0,...t};return Object.entries(e).map((e=>{let[t,o]=e;return n?`${t}=${encodeURIComponent(o)}`:`${t}=${o}`})).join("&")},z=(e,t)=>{const n=e.findIndex(t);return-1!==n&&(e.splice(n,1),!0)},S=(e,t)=>{let n=!1;do{n=z(e,t)}while(n);return n};class M{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.handler=e,this.preventSingle=t,o(this,"elements",[]),o(this,"singleClickHandler",m),o(this,"clickedOnce",!1),o(this,"stopPropagationHandler",(e=>{e.stopImmediatePropagation()})),o(this,"doubleClickHandler",(e=>{this.clickedOnce?(this.clickedOnce=!1,Promise.resolve().then((()=>{this.handler?.(e)}))):(this.clickedOnce=!0,setTimeout((()=>{this.clickedOnce&&(this.clickedOnce=!1,this.preventSingle&&this.singleClickHandler?.(e))}),200)),this.preventSingle&&e.stopImmediatePropagation()}))}bind(e){-1===this.elements.indexOf(e)&&(this.elements.push(e),e.addEventListener("click",this.doubleClickHandler,{capture:!0}),e.addEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}unbind(e){const t=this.elements.indexOf(e);-1!==t&&(this.elements.splice(t,1),e.removeEventListener("click",this.doubleClickHandler,{capture:!0}),e.removeEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}}const P=async()=>{const{sq:e}=await Promise.resolve().then(n.bind(n,2533)),{logError:t}=await Promise.resolve().then(n.bind(n,5145));return await e((()=>unsafeWindow),(()=>void 0!==unsafeWindow.UserStatus)),new Promise(((e,n)=>{"https://www.bilibili.com/blackboard/newplayer.html"===document.URL.replace(window.location.search,"")&&document.URL.includes("fjw=true")||g()||(unsafeWindow.onLoginInfoLoaded?unsafeWindow.onLoginInfoLoaded(e):(t(new Error("utils.playerReady 失败")),console.error("typeof onLoginInfoLoaded === "+typeof unsafeWindow.onLoginInfoLoaded),n()))}))},O=()=>{const{activeElement:e}=document;return!!e&&(!!e.hasAttribute("contenteditable")||["input","textarea"].includes(e.nodeName.toLowerCase()))},V=e=>{if(!(e instanceof HTMLElement))return null;const t=(()=>{if(e.hasAttribute("data-src"))return e.getAttribute("data-src");if(e instanceof HTMLImageElement)return e.src;if(e instanceof HTMLPictureElement&&r(e,"img")){return r(e,"img").src}if(r(e,"picture img")){return r(e,"picture img").src}const{backgroundImage:t}=e.style;if(!t)return null;const n=t.match(/url\("(.+)"\)/);return n?n[1]:null})(),n=t.match(/^(.+)(\..+?)(@.+)$/);if(n)return{url:n[1]+n[2],extension:n[2]};const o=t.match(/^(.+)(\..+?)$/);return o?{url:o[1]+o[2],extension:o[2]}:null},T=e=>{const t=()=>"visible"===document.visibilityState&&(e(),document.removeEventListener("visibilitychange",t),!0);t()||document.addEventListener("visibilitychange",t)},L=async e=>{ +unsafeWindow.__ENABLE_WASM_PLAYER__||Boolean(r("#bilibili-player bwp-video")))},u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((t=>setTimeout((()=>t()),e)))},p=(e,t)=>"string"==typeof t?e.includes(t):t.test(e),b=e=>p(document.URL.replace(window.location.search,""),e),h=(e,t)=>{const n="default"in e?e.default:e;return(o=n,o instanceof Function?new o:o.functional?new(Vue.extend(o)):new Vue(o)).$mount(t);var o},g=()=>"player.bilibili.com"===window.location.host||document.URL.startsWith("https://www.bilibili.com/html/player.html"),F=()=>document.body&&unsafeWindow.parent.window!==unsafeWindow,v=()=>"text/html"!==document.contentType,w=(e,t)=>{const n=new Event(t);e.dispatchEvent(n)},y=(e,t,n)=>{if(!n){const t=e.match(/.+\.(.+)$/);n=t?t[1]:"jpg"}return n.startsWith(".")&&(n=n.substring(1)),[1,1.25,1.5,1.75,2,2.25,2.5,2.75,3,3.25,3.5,3.75,4].map((o=>{if("object"==typeof t){if("width"in t&&"height"in t)return`${e}@${Math.trunc(t.width*o)}w_${Math.trunc(t.height*o)}h.${n} ${o}x`;if("width"in t)return`${e}@${Math.trunc(t.width*o)}w.${n} ${o}x`;if("height"in t)return`${e}@${Math.trunc(t.height*o)}h.${n} ${o}x`;throw new Error(`Invalid argument 'baseSize': ${JSON.stringify(t)}`)}return`${e}@${Math.trunc(t*o)}w_${Math.trunc(t*o)}h.${n} ${o}x`})).join(",")},x=e=>document.cookie.replace(new RegExp(`(?:(?:^|.*;\\s*)${e}\\s*\\=\\s*([^;]*).*$)|^.*$`),"$1"),k=()=>x("DedeUserID"),C=()=>x("bili_jct"),A=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=10**t;let o=(Math.trunc(e*n)/n).toString();const i=o.indexOf(".");if(i>-1){const e=o.length-i-1;e{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},B=(e,t,n)=>{const o=e[t];return e[t]=function(){for(var e=arguments.length,t=new Array(e),i=0;ie[t]=o},D=(e,t,n)=>{const o=e=>{(n?.(e)??1)&&e.stopImmediatePropagation()};return e.addEventListener(t,o,{capture:!0}),()=>{e.removeEventListener(t,o,{capture:!0})}},I=(e,t)=>{const{encode:n}={encode:!0,...t};return Object.entries(e).map((e=>{let[t,o]=e;return n?`${t}=${encodeURIComponent(o)}`:`${t}=${o}`})).join("&")},z=(e,t)=>{const n=e.findIndex(t);return-1!==n&&(e.splice(n,1),!0)},S=(e,t)=>{let n=!1;do{n=z(e,t)}while(n);return n};class P{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.handler=e,this.preventSingle=t,o(this,"elements",[]),o(this,"singleClickHandler",m),o(this,"clickedOnce",!1),o(this,"stopPropagationHandler",(e=>{e.stopImmediatePropagation()})),o(this,"doubleClickHandler",(e=>{this.clickedOnce?(this.clickedOnce=!1,Promise.resolve().then((()=>{this.handler?.(e)}))):(this.clickedOnce=!0,setTimeout((()=>{this.clickedOnce&&(this.clickedOnce=!1,this.preventSingle&&this.singleClickHandler?.(e))}),200)),this.preventSingle&&e.stopImmediatePropagation()}))}bind(e){-1===this.elements.indexOf(e)&&(this.elements.push(e),e.addEventListener("click",this.doubleClickHandler,{capture:!0}),e.addEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}unbind(e){const t=this.elements.indexOf(e);-1!==t&&(this.elements.splice(t,1),e.removeEventListener("click",this.doubleClickHandler,{capture:!0}),e.removeEventListener("dblclick",this.stopPropagationHandler,{capture:!0}))}}const M=async()=>{const{sq:e}=await Promise.resolve().then(n.bind(n,2533)),{logError:t}=await Promise.resolve().then(n.bind(n,5145));return await e((()=>unsafeWindow),(()=>void 0!==unsafeWindow.UserStatus)),new Promise(((e,n)=>{"https://www.bilibili.com/blackboard/newplayer.html"===document.URL.replace(window.location.search,"")&&document.URL.includes("fjw=true")||g()||(unsafeWindow.onLoginInfoLoaded?unsafeWindow.onLoginInfoLoaded(e):(t(new Error("utils.playerReady 失败")),console.error("typeof onLoginInfoLoaded === "+typeof unsafeWindow.onLoginInfoLoaded),n()))}))},O=()=>{const{activeElement:e}=document;return!!e&&(!!e.hasAttribute("contenteditable")||["input","textarea"].includes(e.nodeName.toLowerCase()))},V=e=>{if(!(e instanceof HTMLElement))return null;const t=(()=>{if(e.hasAttribute("data-src"))return e.getAttribute("data-src");if(e instanceof HTMLImageElement)return e.src;if(e instanceof HTMLPictureElement&&r(e,"img")){return r(e,"img").src}if(r(e,"picture img")){return r(e,"picture img").src}const{backgroundImage:t}=e.style;if(!t)return null;const n=t.match(/url\("(.+)"\)/);return n?n[1]:null})(),n=t.match(/^(.+)(\..+?)(@.+)$/);if(n)return{url:n[1]+n[2],extension:n[2]};const o=t.match(/^(.+)(\..+?)$/);return o?{url:o[1]+o[2],extension:o[2]}:null},T=e=>{const t=()=>"visible"===document.visibilityState&&(e(),document.removeEventListener("visibilitychange",t),!0);t()||document.addEventListener("visibilitychange",t)},L=async e=>{ // eslint-disable-next-line prefer-arrow-callback const t=E(unsafeWindow,"scrollTo",(function(){return!1}));return e?(await e(),t(),m):t},j=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1/0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0;return(n,o)=>lodash.isNumber(Number(n))?lodash.clamp(n,e,t):o},R=e=>lodash.upperFirst(lodash.camelCase(e)),N=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;const t=new Uint8Array(Math.ceil(e/2));return crypto.getRandomValues(t),[...t].map((e=>e.toString(16).padStart(2,"0"))).join("").substring(0,e)},q=function(){for(var e=arguments.length,t=new Array(e),n=0;n{throw new Error("unreachable")},U=()=>navigator.connection?.saveData??!1,H=(e,t)=>{const n=new MouseEvent("mousedown",t),o=new MouseEvent("mouseup",t),i=new PointerEvent("pointerdown",t),r=new PointerEvent("pointerup",t),a=new MouseEvent("click",t);e.dispatchEvent(i),e.dispatchEvent(n),e.dispatchEvent(r),e.dispatchEvent(o),e.dispatchEvent(a)},W=e=> // eslint-disable-next-line no-underscore-dangle -e.__vue__??e.parentElement.__vue__??e.children[0].__vue__??e.__vueParentComponent},5145:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ScopedConsoleCallHook:()=>m,ScopedConsoleCreateHook:()=>d,logError:()=>a,randomScopedConsole:()=>u,useScopedConsole:()=>f});var o=n(6695),i=n(3085),r=n(7234);const a=async(e,t)=>{let o;"string"==typeof e?(o=e,console.error(o)):(o=(0,r.getGeneralSettings)().devMode?e.stack:e.message,console.error(e));const{Toast:i}=await Promise.resolve().then(n.bind(n,9107));i.error(o,"错误",t)},c=Symbol("ScopedConsole"),s=Symbol("NamePatch"),l={default:"#78909C",warn:"#CC7A00",error:"#BF6060",group:"#9575CD"},d="scopedConsole.create",m="scopedConsole.call",f=e=>{const{before:t,after:n}=(0,o.getHook)(d),{name:i,color:a=l.default,console:f=window.console}="string"==typeof e?{name:e}:e,u={name:i,color:a,console:f};t(e,f);let p=0;const b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.color;const i=e[c],r=(i?t.color:n)??l.default,a="#fff",d=i?["%c "]:["%c"],f={badgeNames:[...i?.badgeNames??[],...d,`%c${t.name}`],badgeValues:[...i?.badgeValues??[],"",`background-color: ${r}; color: ${a}; padding: 2px 4px; border-radius: 4px;`],original:i?.original??e},u=f.original,b=function(){for(var e=arguments.length,t=new Array(e),n=0;n2&&void 0!==arguments[2]?arguments[2]:t.color,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e=>e;const i=b(e,t,n),r=function(){for(var e=arguments.length,t=new Array(e),n=0;n{g[e][s]||(g[e][s]=e)}));const F={...unsafeWindow.console,...f};return F.log=b(f.log,u),F.info=b(f.info,u),F.warn=b(f.warn,u,l.warn),F.error=b(f.error,u,l.error),F.group=h(f.group,u,l.group,(e=>e+1)),F.groupCollapsed=h(f.groupCollapsed,u,l.group,(e=>e+1)),F.groupEnd=h(f.groupEnd,u,l.group,(e=>e-1)),F.debug=(()=>{const e=b(f.debug,u);return function(){if((0,r.getGeneralSettings)().devMode){for(var t=arguments.length,n=new Array(t),o=0;of({...e,name:(0,i.getRandomId)()})},4055:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ascendingBigIntSort:()=>a,ascendingSort:()=>i,ascendingStringSort:()=>r,descendingBigIntSort:()=>l,descendingSort:()=>c,descendingStringSort:()=>s});const o=e=>e,i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t)-e(n)},r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t).localeCompare(e(n))},a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>{const o=BigInt(e(t)),i=BigInt(e(n));return o===i?0:o>i?1:-1}},c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n)-e(t)},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n).localeCompare(e(t))},l=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>-a(e)(t,n)}},3659:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatTitle:()=>s,getFriendlyTitle:()=>l});var o=n(3085),i=n(7234),r=n(7079),a=n(4055);const c=e=>{let t=0,n=0;const o=[];return e.split("").forEach(((i,r)=>{"["===i&&(0===n?(o.push(e.substring(t,r)),t=r):n++),"]"===i&&(0===n?(o.push(e.substring(t,r+1)),t=r+1):n--)})),t""!==e))},s=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=new Date,s=()=>document.title.replace(/第[0-9]*[零一二三四五六七八九十百千]*[集话]-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/:([^:]+?)_.+?_bilibili_哔哩哔哩$/,"").replace(/_哔哩哔哩_bilibili$/,"").replace(/ - 哔哩哔哩$/,"").replace(/_哔哩哔哩 \(゜-゜\)つロ 干杯~-bilibili$/,"").replace(/(.*?) - (.*?) - 哔哩哔哩直播,二次元弹幕直播平台$/,"$1").trim(),l={title:(()=>{const e=(0,o.dq)(".video-info-container .video-title");if(null!==e)return e.getAttribute("title");const t=(0,o.dq)('[class*="mediainfo_mediaTitle"]');if(null!==t)return t.getAttribute("title");const n=(0,o.dq)(".header-info-ctnr .live-title .text");return null!==n?n.getAttribute("title"):s()})(),ep:(()=>{if(!t)return;const e=(0,o.dq)("#eplist_module li.cursor .ep-title");if(null!==e)return e.innerText;const n=(0,o.dq)("#multi_page .cur-list>ul li.on a, .video-episode-card__info-playing .video-episode-card__info-title");if(null!==n)return n.getAttribute("title");const i=(0,o.dq)(".multip-list-item.multip-list-item-active");return null!==i?i.getAttribute("title"):void 0})(),aid:unsafeWindow.aid,bvid:unsafeWindow.bvid,cid:unsafeWindow.cid,lid:document.URL.replace(/https:\/\/live\.bilibili\.com\/(blanc\/)?([\d]+)/,"$2"),y:i.getFullYear().toString(),M:(i.getMonth()+1).toString().padStart(2,"0"),d:i.getDate().toString().padStart(2,"0"),h:i.getHours().toString().padStart(2,"0"),m:i.getMinutes().toString().padStart(2,"0"),s:i.getSeconds().toString().padStart(2,"0"),ms:i.getMilliseconds().toString().substring(0,3)},d={...l,...n},m=c(e),f=Object.entries(d).sort((0,a.descendingSort)((e=>{let[t]=e;return t.length}))),u=m.map((e=>{if(!e.startsWith("[")||!e.endsWith("]"))return e;for(const[t,n]of f){const o=new RegExp(`^\\[([^\\[\\]]*?)${t}([^\\[\\]]*?)\\]$`),i=e.match(o);if(i&&Boolean(n))return`${i[1]??""}${n}${i[2]??""}`}return""})),p=u.join("");return(0,r.formatFilename)(p," ")},l=function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s((0,i.getGeneralSettings)().filenameFormat,e,t)}},9316:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allVideoUrls:()=>u,bangumiUrls:()=>d,cheeseUrls:()=>m,columnUrls:()=>F,favoriteListUrls:()=>r,feedsUrls:()=>g,feedsUrlsWithoutDetail:()=>h,festivalUrls:()=>s,liveUrls:()=>b,mainSiteUrls:()=>p,matchCurrentPage:()=>w,mediaListUrls:()=>c,playerUrls:()=>v,upListUrls:()=>a,videoAndBangumiUrls:()=>f,videoUrls:()=>l,watchlaterUrls:()=>i});var o=n(3085);const i=["//www.bilibili.com/medialist/play/watchlater","//www.bilibili.com/list/watchlater"],r=["//www.bilibili.com/medialist/play/ml","//www.bilibili.com/list/ml"],a=[/\/\/www\.bilibili\.com\/medialist\/play\/\d+/,/\/\/www\.bilibili\.com\/list\/\d+/],c=[...i,...r,...a,/\/\/www\.bilibili\.com\/list\//],s=[/\/\/www\.bilibili\.com\/festival\//],l=["//www.bilibili.com/video/",...s,...c],d=["//www.bilibili.com/bangumi/play/"],m=["//www.bilibili.com/cheese/"],f=[...l,...d],u=[...f,...m],p=["https://www.bilibili.com/v/",/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/([^\/]+)\.html$/,/^https:\/\/www\.bilibili\.com\/watchlater\/#\/list$/,"https://www.bilibili.com/account/"],b=[/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],h=[/^https:\/\/t\.bilibili\.com\/$/,/^https:\/\/space\.bilibili\.com\//,/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],g=[...h,/^https:\/\/t\.bilibili\.com\//,/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/],F=[/^https:\/\/www\.bilibili\.com\/read\/cv/],v=["//player.bilibili.com","//www.bilibili.com/html/player.html",...l,...d,...m],w=function(){for(var e=arguments.length,t=new Array(e),n=0;nArray.isArray(e)?e.some((e=>(0,o.matchUrlPattern)(e))):(0,o.matchUrlPattern)(e)))}},2351:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CompareResult:()=>a,Version:()=>c,isFeatureAcceptable:()=>s});var o=n(2686),i=n(5791);function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let a=function(e){return e[e.Less=-1]="Less",e[e.Equal=0]="Equal",e[e.Greater=1]="Greater",e[e.Incomparable=NaN]="Incomparable",e}({});class c{constructor(e){if(this.versionString=e,r(this,"parts",void 0),!/^[\d\.]+$/.test(e))throw new Error("Invalid version string");this.parts=e.split(".").map((e=>parseInt(e)))}compareTo(e){for(let t=0;te.parts[t]?a.Greater:a.Less}return this.parts.length!==e.parts.length?a.Less:a.Equal}greaterThan(e){return this.compareTo(e)===a.Greater}lessThan(e){return this.compareTo(e)===a.Less}equals(e){return this.compareTo(e)===a.Equal}}const s=async e=>{try{if("string"==typeof e&&(e=(0,o.loadFeatureCode)(e)),null==e)return!1;const{version:t}=i.meta.compilationInfo,{coreVersion:n}=e;if(!n||!t)return!0;const r=new c(t),a=new c(n);return r.equals(a)||r.greaterThan(a)}catch(t){return console.warn("[isFeatureAcceptable] check failed, feature =",e),!0}}},779:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addData:()=>r,getData:()=>a,registerAndGetData:()=>c,registerData:()=>i});const o=new Map,i=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i{if(o.has(e)){const{providers:n,loaded:i,data:r}=o.get(e);i?t(...r):n.push(t)}else o.set(e,{registered:!1,data:[],loaded:!1,providers:[t]})},a=e=>{if(o.has(e)){const t=o.get(e),{data:n,registered:i,loaded:r,providers:a}=t;if(i)return r||(a.forEach((e=>e(...n))),t.providers=[],t.loaded=!0),n}return[]},c=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o{"use strict";n.r(t),n.d(t,{addHook:()=>i,getHook:()=>r});const o=new Map,i=(e,t)=>{if(o.has(e)){const{providers:n}=o.get(e);n.push(t)}else o.set(e,{providers:[t]})},r=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;ie.before?.(...n.concat(t)))))},after:async function(){for(var e=arguments.length,t=new Array(e),o=0;oe.after?.(...n.concat(t)))))}}}return{before:async()=>Promise.all([]),after:async()=>Promise.all([])}}},9234:(e,t,n)=>{"use strict";n.r(t),n.d(t,{plugin:()=>r});const o=async(e,t,o)=>{const i={name:t,icon:"mdi-content-copy",description:`复制${e}`,indexer:o,action:async()=>{if(i.name===t){await navigator.clipboard.writeText(t);const{Toast:o}=await Promise.resolve().then(n.bind(n,9107));o.success("复制成功",`复制${e}`,1500)}}};return[i]},i=[{pattern:/^av([\d]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,9161)),i=await t(`https://api.bilibili.com/x/web-interface/view?aid=${e[1]}`),r=lodash.get(i,"data",{}),{bvid:a,title:c}=r,s=`av${e[1]}`;return{name:c||s,description:"av号跳转",indexer:s,link:`https://www.bilibili.com/av${e[1]}`,extraActions:a?await o("BV号",a,s):[]}}},{pattern:/^bv([\da-zA-Z]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,9161)),i=await t(`https://api.bilibili.com/x/web-interface/view?bvid=${e[1]}`),r=lodash.get(i,"data",{}),{aid:a,title:c}=r,s=`BV${e[1]}`;return{name:c||s,description:"BV号跳转",indexer:s,link:`https://www.bilibili.com/BV${e[1]}`,extraActions:a?await o("av号",`av${a}`,s):[]}}}],r={name:"launchBar.actions.IDSearch",displayName:"搜索栏 - 视频跳转",async setup(){const{addData:e}=await Promise.resolve().then(n.bind(n,779)),{LaunchBarActionProviders:t}=await Promise.resolve().then(n.bind(n,5613));e(t,(e=>{e.push({name:"IDSearchProvider",getActions:async e=>{const t=[];for(const n of i){const o=e.match(n.pattern);if(o){const{name:e,description:i="",indexer:r,link:a,extraActions:c=[]}=await n.getActions(o);t.push({name:e,icon:"mdi-open-in-new",indexer:r,description:i,action:()=>{window.open(a,"_blank")},order:0},...c)}}return t}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}},4602:(e,t,n)=>{"use strict";n.r(t),n.d(t,{extractPluginFromComponent:()=>d,installPlugin:()=>s,loadAllPlugins:()=>f,loadPlugin:()=>m,plugins:()=>c,pluginsMap:()=>a,uninstallPlugin:()=>l});var o=n(3085),i=n(779),r=n(6695);const a={},c=lodash.once((()=>{const e=n(4353);return e.keys().map((t=>{const n=e(t);if("plugin"in n){const e=n.plugin;return a[e.name]=e,e}})).filter((e=>void 0!==e))}))(),s=async e=>{const{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,2686));let o;try{o=t(e)}catch(e){throw new Error("无效的插件代码",e)}const{settings:i}=await Promise.resolve().then(n.bind(n,7234)),r=i.userPlugins[o.name];if(r)return r.code=e,r.name=o.name,r.displayName=o.displayName||o.name,{metadata:o,message:`已更新插件'${o.displayName}', 刷新后生效`};const a={code:e,displayName:o.name,...o};return i.userPlugins[o.name]=a,c.push(a),{metadata:o,message:`已安装插件'${o.displayName||o.name}', 刷新后生效`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,7234)),i=Object.entries(t.userPlugins).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的插件`);const[r,a]=i;return delete t.userPlugins[r],(0,o.deleteValue)(c,(e=>e.name===r)),{metadata:a,message:`已卸载插件'${a.displayName}', 刷新后生效`}},d=e=>e.plugin?{name:`${e.name}.plugin`,displayName:`${e.displayName} - 附带插件`,...e.plugin}:null,m=async e=>{if(e.setup){const{pluginLoadTrace:t}=await Promise.resolve().then(n.bind(n,4427));await t(e);const{coreApis:o}=await Promise.resolve().then(n.bind(n,8677));return e.setup({coreApis:o,addData:i.addData,addHook:r.addHook,registerData:i.registerData,registerAndGetData:i.registerAndGetData,getHook:r.getHook})}return null},f=async e=>{const{settings:t,getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,7234)),{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,810));for(const t of e){const e=d(t);e&&c.push(e)}for(const[e,n]of Object.entries(t.userPlugins)){const{code:t}=n;let o;try{o=i(t)}catch(t){console.error("从代码加载用户插件失败。代码可能包含语法错误或执行时产生了异常",{pluginName:e,error:t});continue}c.push(o)}return Promise.allSettled(c.map(m)).then((async()=>{if(o().devMode){const{pluginLoadTime:e,pluginResolveTime:t}=await Promise.resolve().then(n.bind(n,4427)),{logStats:o}=await Promise.resolve().then(n.bind(n,7035));o("plugins block",e),o("plugins resolve",t)}}))}},6118:(e,t,n)=>{"use strict";n.r(t),n.d(t,{UserStyleMode:()=>r,installStyle:()=>c,styles:()=>a,uninstallStyle:()=>s});var o=n(7234),i=n(3085);let r=function(e){return e.Default="default",e.Instant="instant",e.Important="important",e}({});const a=Object.values(o.settings.userStyles),c=async e=>{try{let t;const{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,2686));t="string"==typeof e?i(e):e;const{name:c,style:s,displayName:l,mode:d}=t,{removeStyle:m,addImportantStyle:f,addStyle:u}=await Promise.resolve().then(n.bind(n,7511)),p=o.settings.userStyles[c];if(p)Object.assign(p,t),m(c);else{const e={displayName:c,mode:r.Default,...t};o.settings.userStyles[c]=e,a.push(e)}return d===r.Important?f(s,c):u(s,c),{metadata:t,message:`已安装样式'${l||c}'`}}catch(e){throw new Error("无效的样式代码",{cause:e})}},s=async e=>{const t=Object.entries(o.settings.userStyles).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!t)throw new Error(`没有找到与名称'${e}'相关联的样式`);const{removeStyle:r}=await Promise.resolve().then(n.bind(n,7511)),[c,{displayName:s}]=t;return r(c),delete o.settings.userStyles[c],(0,i.deleteValue)(a,(e=>e.name===c)),{metadata:t,message:`已卸载样式'${s}'`}}},1445:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AsyncButton:()=>s,CheckBox:()=>h,ColorPicker:()=>E,DefaultWidget:()=>mt,DpiImage:()=>M,ImagePicker:()=>R,ImageViewer:()=>Y,MiniToast:()=>ft.Z,ProgressBar:()=>ne,ProgressRing:()=>se,RadioButton:()=>ue,RangeInput:()=>we,ScrollTrigger:()=>Be,SwitchBox:()=>De.Z,TabControl:()=>Oe,TextArea:()=>qe,TextBox:()=>Ze.default,VButton:()=>r.default,VDropdown:()=>Xe,VEmpty:()=>ot,VIcon:()=>o.default,VLoading:()=>it.default,VPopup:()=>He.default,VSlider:()=>rt.default,showImage:()=>K});var o=n(2593),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({attrs:{disabled:e.disabled||e.internalDisabled},on:{click:e.onClick}},"VButton",e.$attrs,!1),e.listeners),[e._t("default",(function(){return[e._v("Button")]}))],2)};i._withStripped=!0;var r=n(7784);const a=Vue.extend({components:{VButton:r.default},props:{disabled:{type:Boolean,default:!1}},data:()=>({internalDisabled:!1}),computed:{listeners(){return lodash.omit(this.$listeners,"click")},onClick(){var e=this;return async function(){try{e.internalDisabled=!0;for(var t=arguments.length,n=new Array(t),o=0;oPromise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,2593)).then((e=>e.default))},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},iconPosition:{type:String,default:"left"},checkedIcon:{type:String,default:"mdi-checkbox-marked-circle"},notCheckedIcon:{type:String,default:"mdi-checkbox-blank-circle-outline"}}});var m=n(8332),f=n.n(m),u=n(455),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,c.Z)(d,l,[],!1,null,"07bbf374",null).exports;var g=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-color-picker"},[t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.popupOpened=!e.popupOpened,expression:"() => (popupOpened = !popupOpened)"}],ref:"button",staticClass:"selected-color",style:{backgroundColor:e.color,width:e.size+"px",height:e.size+"px"},attrs:{role:"button",tabindex:"0"}}),e._v(" "),t("VPopup",{staticClass:"picker",class:{compact:e.compact},style:{"--offset":e.popupOffset+"px"},attrs:{"esc-close":"","auto-close":!1,"trigger-element":e.$refs.button},model:{value:e.popupOpened,callback:function(t){e.popupOpened=t},expression:"popupOpened"}},[t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("预设颜色")]),e._v(" "),t("div",{staticClass:"colors"},e._l(e.colors,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectHexColor(n),expression:"() => selectHexColor(c)"}],key:n,staticClass:"color",style:{backgroundColor:n},attrs:{role:"radio",tabindex:e.popupOpened?0:-1}})})),0)]),e._v(" "),t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("调色")]),e._v(" "),t("div",{staticClass:"bars"},[e.isRGB?[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("R")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.red},on:{change:function(t){return e.wrapper.change("red",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.redGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2466330035)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.red)},on:{change:function(t){return e.wrapper.change("red",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("G")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.green},on:{change:function(t){return e.wrapper.change("green",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.greenGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2962781435)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.green)},on:{change:function(t){return e.wrapper.change("green",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.blue},on:{change:function(t){return e.wrapper.change("blue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.blueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,660815582)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.blue)},on:{change:function(t){return e.wrapper.change("blue",t)}}})],1)]:[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("H")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:359.9,value:e.wrapper.hue},on:{change:function(t){return e.wrapper.change("hue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.hueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"4","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.hue)},on:{change:function(t){return e.wrapper.change("hue",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("S")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.saturation},on:{change:function(t){return e.wrapper.change("saturationv",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.saturationGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.saturation)},on:{change:function(t){return e.wrapper.change("saturationv",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.brightness},on:{change:function(t){return e.wrapper.change("value",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.brightnessGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.brightness)},on:{change:function(t){return e.wrapper.change("value",t)}}})],1)]],2)]),e._v(" "),t("div",{staticClass:"info item-group"},[t("VButton",{staticClass:"toggle-mode",attrs:{disabled:!e.popupOpened,type:"transparent",title:e.isRGB?"切换至HSB":"切换至RGB"},on:{click:function(t){e.isRGB=!e.isRGB}}},[e._v("\n "+e._s(e.isRGB?"切换至HSB":"切换至RGB")+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"color-preview",style:{backgroundColor:e.wrapper.hex}}),e._v(" "),t("TextBox",{staticClass:"hex",attrs:{disabled:!e.popupOpened,text:e.wrapper.hex,"change-on-blur":""},on:{change:function(t){return e.selectHexColor(t)}}})],1),e._v(" "),t("div",{staticClass:"operations item-group",on:{click:function(t){e.popupOpened=!e.popupOpened}}},[t("VButton",{staticClass:"cancel",attrs:{disabled:!e.popupOpened},on:{click:function(t){return e.reset()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{staticClass:"ok",attrs:{disabled:!e.popupOpened,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1)])],1)};g._withStripped=!0;var F=n(4654),v=n.n(F);const w=JSON.parse('["#E57373","#F06292","#BA68C8","#9575CD","#7986CB","#2196F3","#00A0D8","#00ACC1","#26A69A","#81C784","#9CCC65","#FF9800","#FF7043","#A1887F","#757575","#78909C"]'),y=e=>{let t=new(v())(e);const n={get color(){return t},set color(e){t=e,this.updateProps()},change(e,n){"string"==typeof n&&(n=parseFloat(n),Number.isNaN(n))||(this.color=t[e](n))},updateProps(){this.red=t.red(),this.green=t.green(),this.blue=t.blue(),this.hue=t.hue(),this.saturation=t.saturationv(),this.brightness=t.value(),this.hex=t.hex(),this.hueGradient=`linear-gradient(to right, ${t.hue(0).hex()}, ${t.hue(60).hex()}, ${t.hue(120).hex()}, ${t.hue(180).hex()}, ${t.hue(240).hex()}, ${t.hue(300).hex()}, ${t.hue(0).hex()})`,this.saturationGradient=`linear-gradient(to right, ${t.saturationv(0).hex()}, ${t.saturationv(100).hex()})`,this.brightnessGradient=`linear-gradient(to right, ${t.value(0).hex()}, ${t.value(100).hex()})`,this.redGradient=`linear-gradient(to right, ${t.red(0).hex()}, ${t.red(255).hex()})`,this.greenGradient=`linear-gradient(to right, ${t.green(0).hex()}, ${t.green(255).hex()})`,this.blueGradient=`linear-gradient(to right, ${t.blue(0).hex()}, ${t.blue(255).hex()})`}};return n.updateProps(),n},x=Vue.extend({name:"ColorPicker",components:{TextBox:()=>Promise.resolve().then(n.bind(n,9856)).then((e=>e.default)),VSlider:()=>Promise.resolve().then(n.bind(n,91)).then((e=>e.default)),VButton:()=>Promise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,1432)).then((e=>e.default))},model:{prop:"color",event:"change"},props:{color:{type:String,default:"#000000",required:!0},size:{type:Number,default:24,required:!1},compact:{type:Boolean,default:!1},popupOffset:{type:Number,default:0}},data(){return{popupOpened:!1,wrapper:y(this.color),colors:w,isRGB:!1}},watch:{popupOpened(e){e&&(document.body.addEventListener("mousedown",(e=>{this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("mouseup",(()=>{this.popupOpened=!1}),{once:!0})})),document.body.addEventListener("touchstart",(e=>{1!==e.touches.length||this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("touchend",(()=>{this.popupOpened=!1}),{once:!0})})))}},methods:{ok(){this.$emit("change",this.wrapper.hex)},reset(){this.wrapper.color=new(v())(this.color)},selectHexColor(e){try{const t=new(v())(e,"hex");this.wrapper.color=t}catch(e){}},fixed:e=>(Math.round(10*e)/10).toString(),int:e=>Math.round(e).toString()}});var k=n(8325),C=n.n(k),A={insert:"head",singleton:!1};f()(C(),A);C().locals;const E=(0,c.Z)(x,g,[],!1,null,"5b939efc",null).exports;var B=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("img",e._b({class:{placeholder:e.isPlaceholderActive},attrs:{width:e.width,height:e.height,srcset:e.srcset,src:e.actualSrc}},"img",e.$attrs,!1))};B._withStripped=!0;var D=n(3085),I=n(2866);const z=Vue.extend({name:"DpiImage",props:{size:{type:[Object,Number],required:!0},src:{type:String,required:!0},intersection:{type:Object,default:()=>({})},placeholderImage:{type:Boolean,default:!1}},data:()=>({srcset:null,actualSrc:I.EmptyImageUrl,isPlaceholderActive:!1}),computed:{width(){return"object"==typeof this.size&&"width"in this.size?this.size.width:"number"==typeof this.size?this.size:null},height(){return"object"==typeof this.size&&"height"in this.size?this.size.height:"number"==typeof this.size?this.size:null}},watch:{size(){this.sourceChange()},src(){this.sourceChange()}},mounted(){const e={rootMargin:"200px",...this.intersection},t=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(this.calcSrc(),t.disconnect())}))}),e);t.observe(this.$el)},methods:{sourceChange(){this.actualSrc!==I.EmptyImageUrl&&null!==this.srcset&&this.calcSrc()},calcSrc(){const e=!this.src||!this.size;if(this.isPlaceholderActive=e&&this.placeholderImage,e)return this.srcset=null,void(this.placeholderImage?this.actualSrc="https://s1.hdslb.com/bfs/static/blive/live-web-center/static/img/no-cover.1ebe4d5.jpg":this.actualSrc=I.EmptyImageUrl);let{src:t}=this;if(t.startsWith("http:")&&(t=t.replace("http:","https:")),t.includes("//static.hdslb.com/images/member/noface.gif"))return this.srcset=t,void(this.actualSrc=t);this.srcset=(0,D.getDpiSourceSet)(t,this.size),this.actualSrc=t}}}),S=z;const M=(0,c.Z)(S,B,[],!1,null,null,null).exports;var P=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-image-picker"},[t("VButton",{ref:"pickButton",staticClass:"pick-button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[e._t("text",(function(){return[e._v(" 选择图片 ")]}))],2),e._v(" "),t("VPopup",{staticClass:"popup",attrs:{"trigger-element":e.$refs.pickButton},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.cancel()}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("transition-group",{staticClass:"images",attrs:{name:"image-list",tag:"div",tabindex:"-1"}},e._l(e.images,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectImage(n),expression:"() => selectImage(i)"}],key:n.name,staticClass:"image",class:{selected:n.name===e.selectedImage.name},attrs:{title:n.name,tabindex:e.popupOpen?0:-1}},[t("img",{attrs:{width:"64",height:"64",src:n.url}})])})),0),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:0===e.images.length,expression:"images.length === 0"}],staticClass:"empty-tip"},[e._v("空空如也哦 = ̄ω ̄=")]),e._v(" "),t("div",{staticClass:"operations"},[t("VPopup",{staticClass:"add-image-popup",attrs:{tabindex:"-1",lazy:!1,"trigger-element":e.$refs.addButton},model:{value:e.addImagePopupOpen,callback:function(t){e.addImagePopupOpen=t},expression:"addImagePopupOpen"}},[t("div",{staticClass:"add-image-row"},[e._v("\n 名称:\n "),t("TextBox",{ref:"addImageInput",attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.name,callback:function(t){e.$set(e.newImage,"name",t)},expression:"newImage.name"}})],1),e._v(" "),t("div",{staticClass:"add-image-row"},[e._v("\n 链接:\n "),t("TextBox",{attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.url,callback:function(t){e.$set(e.newImage,"url",t)},expression:"newImage.url"}})],1),e._v(" "),t("div",{staticClass:"add-image-row buttons"},[t("VButton",{attrs:{disabled:!e.addImagePopupOpen},on:{click:function(t){e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 取消\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.newImage.url||!e.newImage.name,type:"primary"},on:{click:function(t){e.addImage(e.newImage),e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 确定\n ")])],1)]),e._v(" "),t("VButton",{staticClass:"clear-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.clearImage()}}},[e._v("\n 清除选择\n ")]),e._v(" "),t("VButton",{ref:"addButton",staticClass:"add-image",attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.openAddImagePopup()}}},[e._v("\n 添加\n ")]),e._v(" "),t("VButton",{staticClass:"edit-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.editImage()}}},[e._v("\n 编辑\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.selectedImage.name},on:{click:function(t){e.removeImage(e.selectedImage),e.clearImage()}}},[e._v("\n 删除\n ")])],1),e._v(" "),t("div",{staticClass:"operations"},[t("VButton",{attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.cancel()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.popupOpen,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1),e._v(" "),e.addImagePopupOpen?t("div",{staticClass:"mask"}):e._e()],1)],1)};P._withStripped=!0;const O=[],V=Vue.extend({name:"ImagePicker",components:{VButton:()=>Promise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,1432)).then((e=>e.default)),TextBox:()=>Promise.resolve().then(n.bind(n,9856)).then((e=>e.default))},model:{prop:"image",event:"change"},props:{image:{type:Object,required:!0}},data:()=>({images:O,popupOpen:!1,addImagePopupOpen:!1,selectedImage:{name:"",url:""},newImage:{name:"",url:""}}),methods:{addImage:e=>{if(!e.name||!e.url)return;const t=O.find((t=>t.name===e.name));t?t.url=e.url:O.unshift(e)},removeImage:e=>{const t="string"==typeof e?e:e.name,n=O.findIndex((e=>e.name===t));-1!==n&&O.splice(n,1)},ok(){this.$emit("change",this.selectedImage),this.popupOpen=!1},cancel(){this.selectedImage=this.image,this.popupOpen=!1},selectImage(e){this.selectedImage.name===e.name?this.selectedImage={name:"",url:""}:this.selectedImage=e},clearImage(){this.selectedImage={name:"",url:""}},clearNewImage(){this.newImage={name:"",url:""}},editImage(){this.newImage=this.selectedImage,this.openAddImagePopup()},async openAddImagePopup(){this.addImagePopupOpen=!this.addImagePopupOpen,await this.$nextTick(),this.$refs.addImageInput.$refs.input.focus()}}});var T=n(7354),L=n.n(T),j={insert:"head",singleton:!1};f()(L(),j);L().locals;const R=(0,c.Z)(V,P,[],!1,null,"7b32c90b",null).exports;var N=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"image-viewer-container",class:{open:e.open},on:{click:e.detectOutside}},[t("div",{ref:"viewer",staticClass:"image-viewer"},[t("div",{staticClass:"image-container"},[e.image?t("img",{staticClass:"image",attrs:{src:e.image}}):e._e()]),e._v(" "),t("div",{staticClass:"close image-viewer-icon",attrs:{title:"关闭"},on:{click:function(t){e.open=!1}}},[t("VIcon",{attrs:{size:48,icon:"mdi-close"}})],1),e._v(" "),t("a",{staticClass:"copy-link image-viewer-icon",attrs:{target:"_blank",title:"复制原链接"},on:{click:function(t){return e.copyLink()}}},[e.copiedTimer?t("VIcon",{attrs:{size:48,icon:"mdi-check"}}):t("VIcon",{attrs:{size:48,icon:"mdi-link"}})],1),e._v(" "),t("a",{staticClass:"new-tab image-viewer-icon",attrs:{target:"_blank",title:"在新标签页打开"},on:{click:function(t){return e.newTab()}}},[t("VIcon",{attrs:{size:48,icon:"mdi-open-in-new"}})],1),e._v(" "),e.blobUrl?t("a",{staticClass:"download image-viewer-icon",attrs:{target:"_blank",title:"下载",href:e.blobUrl,download:e.filename}},[t("VIcon",{attrs:{size:48,icon:"mdi-download"}})],1):e._e()])])};N._withStripped=!0;var q=n(7234),Z=n(3659),U=n(9161);const H=Vue.extend({components:{VIcon:o.default},props:{image:{type:String,required:!0}},data:()=>({filename:"",open:!1,blobUrl:"",keyHandler:null,copiedTimer:0}),watch:{async image(e){this.blobUrl&&URL.revokeObjectURL(this.blobUrl),e||(this.blobUrl="");const t=await(0,U.getBlob)(e);this.blobUrl=URL.createObjectURL(t),this.updateFilename()}},mounted(){this.keyHandler=e=>{"Escape"===e.key&&(this.open=!1)},document.addEventListener("keydown",this.keyHandler),(0,q.addComponentListener)("settingsPanel.filenameFormat",(()=>{this.updateFilename()}),!0)},beforeDestroy(){document.removeEventListener("keydown",this.keyHandler)},methods:{async copyLink(){await navigator.clipboard.writeText(this.image),this.copiedTimer&&window.clearTimeout(this.copiedTimer),this.copiedTimer=window.setTimeout((()=>{this.copiedTimer=0}),2e3)},newTab(){window.open(this.image,"_blank")},detectOutside(e){const t=this.$el,{viewer:n}=this.$refs;e.target!==t&&e.target!==n||(this.open=!1)},updateFilename(){const e=this.image;this.filename=e?(0,Z.getFriendlyTitle)(document.URL.includes("/www.bilibili.com/bangumi/"))+e.substring(e.lastIndexOf(".")):""}}});var W=n(1618),G=n.n(W),Q={insert:"head",singleton:!1};f()(G(),Q);G().locals;const Y=(0,c.Z)(H,N,[],!1,null,"8829ba14",null).exports;let X;const K=async e=>(X||await(async()=>(X=new Y({propsData:{image:"",open:!1}}).$mount(),document.body.insertAdjacentElement("beforeend",X.$el),X))(),setTimeout((()=>{X.image=e,X.open=!0})),X);var J=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-progress-bar"},[t("div",{staticClass:"progress",class:{transition:e.transition},style:{width:e.width}})])};J._withStripped=!0;const _=Vue.extend({name:"ProgressBar",props:{progress:{type:Number,default:50},min:{type:Number,default:0},max:{type:Number,default:100},transition:{type:Boolean,default:!1}},computed:{width(){let e=this.progress;e>this.max?e=this.max:ethis.max?e=this.max:e{de.has(e)?de.get(e).push({instance:t,uncheck:n}):de.set(e,[{instance:t,uncheck:n}])})),fe=Vue.extend({name:"RadioButton",components:{CheckBox:h},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},allowUncheck:{type:Boolean,default:!1},group:{type:String,default:""},checkedIcon:{type:String,default:"mdi-radiobox-marked"},notCheckedIcon:{type:String,default:"mdi-radiobox-blank"}},watch:{checked(e){if(e){const e=this.group,t=this.$el;let n;n=""===e?t.parentElement:e,de.get(n).forEach((e=>{let{instance:t,uncheck:n}=e;t!==this&&n()}))}}},mounted(){const e=this.group,t=this.$el;let n;n=me(""===e?t.parentElement:e),n(this,(()=>this.$emit("change",!1)))},methods:{emitChange(e){(this.checked&&this.allowUncheck||!this.checked)&&this.$emit("change",e)}}});const ue=(0,c.Z)(fe,le,[],!1,null,null,null).exports;var pe=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-range-input"},[t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.start.toString()},on:{change:function(t){e.wrapper.start=t}}}),e._v(" "),e._t("separator",(function(){return[t("div",{staticClass:"default-separator"},[e._v("~")])]})),e._v(" "),t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.end.toString()},on:{change:function(t){e.wrapper.end=t}}})],2)};pe._withStripped=!0;const be=e=>({range:e.range,get start(){return this.range.start.toString()},set start(e){this.createNewRange(e,this.end)},get end(){return this.range.end.toString()},set end(e){this.createNewRange(this.start,e)},createNewRange(t,n){let o={start:t,end:n};e.validator&&(o=e.validator(o)),null!=o?(this.range=o,e.$emit("change",o)):this.range={start:this.range.start,end:this.range.end}}}),he=Vue.extend({name:"RangeInput",components:{TextBox:()=>Promise.resolve().then(n.bind(n,9856))},model:{prop:"range",event:"change"},props:{range:{type:Object,required:!0},validator:{type:Function,default:void 0}},data(){return{wrapper:be(this)}}});var ge=n(4773),Fe=n.n(ge),ve={insert:"head",singleton:!1};f()(Fe(),ve);Fe().locals;const we=(0,c.Z)(he,pe,[],!1,null,"b459c060",null).exports;var ye=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-scroll-trigger",on:{click:function(t){return e.trigger()}}},[e._t("default",(function(){return[t("VLoading")]}))],2)};ye._withStripped=!0;var xe=n(5145);const ke=Vue.extend({components:{VLoading:()=>Promise.resolve().then(n.bind(n,1570)).then((e=>e.default))},props:{detectViewport:{type:Boolean,required:!1,default:!1}},data:()=>({isFirstLoad:!0,isViewportTriggerRunning:!1,parentLoadState:"none"}),async mounted(){const e=(0,xe.useScopedConsole)("ScrollTrigger"),t=this.$el,{visible:o}=await Promise.resolve().then(n.bind(n,8737));o(t,(async n=>{if(n.some((e=>e.intersectionRatio>0))){if(e.log("Intersection Observer trigger"),this.trigger(),!this.detectViewport&&!this.isFirstLoad&&this.isViewportTriggerRunning)return;for(this.isViewportTriggerRunning=!0;this.getVisibleStateByViewport(t);)if(await(0,D.delay)(500),"loaded"===this.parentLoadState){if(!this.getVisibleStateByViewport(t))break;e.log("is first load & viewport trigger"),this.trigger()}this.isFirstLoad=!1}}))},methods:{getElementToViewportBottomDistance:e=>document.documentElement.clientHeight-e.getBoundingClientRect().top,getVisibleStateByViewport(e){return Boolean(this.getElementToViewportBottomDistance(e)>-20)},setLoadState(e){this.parentLoadState=e},resetIsFirstLoad(){this.isFirstLoad=!0},trigger(){this.$emit("trigger")}}});var Ce=n(9972),Ae=n.n(Ce),Ee={insert:"head",singleton:!1};f()(Ae(),Ee);Ae().locals;const Be=(0,c.Z)(ke,ye,[],!1,null,null,null).exports;var De=n(7481),Ie=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-tab-control"},[t("div",{staticClass:"default-header"},[e._t("tabs",(function(){return[t("div",{staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},attrs:{"data-count":n.count>0?n.count:null},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)]})),e._v(" "),t("div",{staticClass:"header-item"},[e._t("header-item")],2),e._v(" "),null!==e.moreLink&&void 0!==e.moreLink?t("a",{staticClass:"be-more-link",attrs:{href:"function"==typeof e.moreLink?e.moreLink(e.selectedTab):e.moreLink,target:"_blank"}},[t("VButton",{attrs:{disabled:!e.moreLink,round:""}},[e._t("more-link",(function(){return[e._v("\n 查看更多\n "),t("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})]}))],2)],1):e._e()],2),e._v(" "),e._t("content",(function(){return[t("div",{staticClass:"default-content"},[t("transition",{attrs:{name:"content-transition"}},[t(e.selectedTab.component,e._b({tag:"component"},"component",e.selectedTab.propsData,!1))],1)],1)]}))],2)};Ie._withStripped=!0;const ze=Vue.extend({name:"TabControl",components:{VButton:()=>Promise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,2593)).then((e=>e.default))},model:{prop:"link",event:"change"},props:{tabs:{type:Array,required:!0,validator:e=>0!==e.length},defaultTab:{type:String,required:!1,default:""},link:{type:String,required:!1,default:null},moreLink:{type:[String,Function],default:null}},data(){const e=this.tabs;return{selectedTabName:e.find((e=>e.name===this.defaultTab))?.name??e[0].name}},computed:{selectedTab(){return this.tabs.find((e=>e.name===this.selectedTabName))}},mounted(){this.$emit("change",this.selectedTab.activeLink)},methods:{selectTab(e){this.selectedTabName!==e.name?(this.selectedTabName=e.name,e.count=0,this.$emit("change",this.selectedTab.activeLink)):e.activeLink&&window.open(e.activeLink,"_blank")}}});var Se=n(2069),Me=n.n(Se),Pe={insert:"head",singleton:!1};f()(Me(),Pe);Me().locals;const Oe=(0,c.Z)(ze,Ie,[],!1,null,null,null).exports;var Ve=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-text-area",attrs:{role:"text"}},[t("textarea",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"textarea",e.$attrs,!1),e.restListeners))])};Ve._withStripped=!0;var Te=n(3225);const Le=Vue.extend({name:"TextArea",mixins:[Te.t]});var je=n(2187),Re=n.n(je),Ne={insert:"head",singleton:!1};f()(Re(),Ne);Re().locals;const qe=(0,c.Z)(Le,Ve,[],!1,null,null,null).exports;var Ze=n(9856),Ue=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{directives:[{name:"hit",rawName:"v-hit",value:e.hit,expression:"hit"}],staticClass:"be-dropdown",class:{disabled:e.disabled,round:e.round},attrs:{role:"combobox",tabindex:e.disabled?-1:0,"aria-disabled":e.disabled}},[t("div",{ref:"selected",staticClass:"selected"},[t("div",{staticClass:"selected-item"},[null!==e.value&&void 0!==e.value?e._t("item",(function(){return[e._v("\n "+e._s(e.value.displayName)+"\n ")]}),{item:e.value}):e._e()],2),e._v(" "),t("div",{staticClass:"arrow",class:{open:e.popupOpen}},[e._t("arrow",(function(){return[t("div",{staticClass:"default-arrow"},[t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"}},[t("defs",[t("clipPath",{attrs:{id:"clip-arrow-down"}},[t("rect",{attrs:{width:"24",height:"24"}})])]),e._v(" "),t("g",{attrs:{id:"arrow-down","clip-path":"url(#clip-arrow-down)"}},[t("path",{attrs:{id:"Path_1","data-name":"Path 1",d:"M2,17,12,7,22,17",transform:"translate(24 25) rotate(180)","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"}})])])])]}))],2)]),e._v(" "),t("VPopup",{ref:"popup",staticClass:"dropdown-popup",attrs:{lazy:!1,"trigger-element":e.$refs.selected},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.selectItem(e.value)}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(e.items,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectItem(n),expression:"() => selectItem(item)"}],key:e.keyMapper(n),staticClass:"bex-dropdown-item",attrs:{tabindex:e.popupOpen?0:-1}},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)})),0)],1)};Ue._withStripped=!0;var He=n(1432);const We=Vue.extend({name:"VDropdown",components:{VPopup:He.default},model:{prop:"value",event:"change"},props:{value:{required:!0},items:{type:Array,required:!0},keyMapper:{type:Function,default:e=>e.name},round:{type:Boolean,default:!1}},data:()=>({popupOpen:!1}),computed:{disabled(){return Boolean(this.$attrs.disabled)}},watch:{disabled(e){e&&(this.popupOpen=!1)}},created(){null!==this.value&&void 0!==this.value||this.$emit("change",this.items[0]||"")},methods:{selectItem(e){e!==this.value&&this.$emit("change",e),this.popupOpen=!1,this.$el.focus()},hit(e){if(this.disabled)return;const t=this.$refs.popup.$el,n=e.target;t===n||t.contains(n)||(this.popupOpen=!this.popupOpen)}}});var Ge=n(8752),Qe=n.n(Ge),Ye={insert:"head",singleton:!1};f()(Qe(),Ye);Qe().locals;const Xe=(0,c.Z)(We,Ue,[],!1,null,"6b51ccd4",null).exports;var Ke=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-empty"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};Ke._withStripped=!0;var Je=n(779);const[_e]=(0,Je.registerAndGetData)("vEmpty",{content:"空空如也哦 = ̄ω ̄="}),$e=Vue.extend({name:"VEmpty",data:()=>({config:_e})});var et=n(8963),tt=n.n(et),nt={insert:"head",singleton:!1};f()(tt(),nt);tt().locals;const ot=(0,c.Z)($e,Ke,[],!1,null,null,null).exports;var it=n(1570),rt=n(91),at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({staticClass:"default-widget"},"VButton",e.$attrs,!1),e.$listeners),[t("div",{staticClass:"widget-icon"},[e._t("icon",(function(){return[t("VIcon",{attrs:{type:e.iconType,icon:e.icon}})]}))],2),e._v(" "),t("div",{staticClass:"widget-name"},[e._t("default",(function(){return[e._v(e._s(e.name))]}))],2)])};at._withStripped=!0;const ct=Vue.extend({components:{VIcon:o.default,VButton:r.default},props:{name:{type:String,default:""},icon:{type:String,default:""},iconType:{type:String,default:""}}});var st=n(6261),lt=n.n(st),dt={insert:"head",singleton:!1};f()(lt(),dt);lt().locals;const mt=(0,c.Z)(ct,at,[],!1,null,"20e1bedd",null).exports;var ft=n(5468)},3012:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initMdiStyle:()=>r});var o=n(1898),i=n.n(o);const r=()=>{const e=document.createElement("style");return e.id="be-mdi",e.innerHTML=i(),e}},3225:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o=Vue.extend({model:{prop:"text",event:"change"},props:{text:{type:String,required:!1,default:""},changeOnBlur:{type:Boolean,required:!1,default:!1},validator:{type:Function,default:void 0}},data(){return{composing:!1,restListeners:lodash.omit(this.$listeners,"change","input","compositionstart","compositionend")}},methods:{emitChange(){let{value:e}=this.$refs.input;this.validator&&(e=this.validator(e,this.text),this.changeOnBlur&&(this.$refs.input.value=e)),e!==this.text&&this.$emit("change",e)},input(){this.changeOnBlur||this.composing||this.emitChange()},change(){this.changeOnBlur&&!this.composing&&this.emitChange()},compositionStart(){this.composing=!0},compositionEnd(){this.composing=!1,this.input()},focus(){this.$refs.input.focus()}}})},6411:(e,t,n)=>{"use strict";n.r(t),n.d(t,{compilationInfo:()=>f});var o=n(113);const i="the1812",r="cdn.jsdelivr.net",a={name:"jsDelivr",owner:i,host:r,stableClient:`https://${r}/gh/the1812/Bilibili-Evolved@master/dist/bilibili-evolved.user.js`,previewClient:`https://${r}/gh/the1812/Bilibili-Evolved@preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${r}/npm/lodash@4.17.21/lodash.min.js`,protobuf:`https://${r}/npm/protobufjs@6.10.1/dist/light/protobuf.min.js`,jszip:`https://${r}/npm/jszip@3.7.1/dist/jszip.min.js`,sortable:`https://${r}/npm/sortablejs@1.14.0/Sortable.min.js`,mdi:`https://${r}/gh/the1812/Bilibili-Evolved@master/docs/static/mdi/mdi.css`,streamsaver:`https://${r}/npm/streamsaver@2.0.6/StreamSaver.min.js`,ffmpeg:{worker:`https://${r}/npm/@ffmpeg/ffmpeg@0.12.4/dist/umd/814.ffmpeg.js`,core:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.js`,wasm:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.wasm`}},smallLogo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo-small.png`,logo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo.png`,root:(e,t)=>`https://${r}/gh/${t||i}/Bilibili-Evolved@${e}/`},c="the1812",s="raw.githubusercontent.com",l={name:"GitHub",owner:c,host:s,stableClient:`https://${s}/the1812/Bilibili-Evolved/master/dist/bilibili-evolved.user.js`,previewClient:`https://${s}/the1812/Bilibili-Evolved/preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${s}/lodash/lodash/4.17.21/dist/lodash.min.js`,protobuf:`https://${s}/protobufjs/protobuf.js/v6.10.1/dist/light/protobuf.min.js`,jszip:`https://${s}/Stuk/jszip/v3.7.1/dist/jszip.min.js`,sortable:`https://${s}/SortableJS/Sortable/1.14.0/Sortable.min.js`,mdi:"https://the1812.github.io/Bilibili-Evolved/static/mdi/mdi.css",streamsaver:`https://${s}/jimmywarting/StreamSaver.js/2.0.6/StreamSaver.js`,ffmpeg:a.library.ffmpeg},smallLogo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo-small.png`,logo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo.png`,root:(e,t)=>`https://${s}/${t||c}/Bilibili-Evolved/${e}/`},d=l,m={github:l,jsDelivr:a},f={...{year:(new Date).getFullYear(),version:o.version,altCdn:d,allCdns:m},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",branch:"master",nearestTag:"v2.8.10",versionWithTag:"v2.8.10-36-ge998998fc"}},4589:(e,t,n)=>{var o=n(3337),i={};for(var r in o)o.hasOwnProperty(r)&&(i[o[r]]=r);var a=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var c in a)if(a.hasOwnProperty(c)){if(!("channels"in a[c]))throw new Error("missing channels property: "+c);if(!("labels"in a[c]))throw new Error("missing channel labels property: "+c);if(a[c].labels.length!==a[c].channels)throw new Error("channel and label counts mismatch: "+c);var s=a[c].channels,l=a[c].labels;delete a[c].channels,delete a[c].labels,Object.defineProperty(a[c],"channels",{value:s}),Object.defineProperty(a[c],"labels",{value:l})}a.rgb.hsl=function(e){var t,n,o=e[0]/255,i=e[1]/255,r=e[2]/255,a=Math.min(o,i,r),c=Math.max(o,i,r),s=c-a;return c===a?t=0:o===c?t=(i-r)/s:i===c?t=2+(r-o)/s:r===c&&(t=4+(o-i)/s),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+c)/2,[t,100*(c===a?0:n<=.5?s/(c+a):s/(2-c-a)),100*n]},a.rgb.hsv=function(e){var t,n,o,i,r,a=e[0]/255,c=e[1]/255,s=e[2]/255,l=Math.max(a,c,s),d=l-Math.min(a,c,s),m=function(e){return(l-e)/6/d+.5};return 0===d?i=r=0:(r=d/l,t=m(a),n=m(c),o=m(s),a===l?i=o-n:c===l?i=1/3+t-o:s===l&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*r,100*l]},a.rgb.hwb=function(e){var t=e[0],n=e[1],o=e[2];return[a.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(n,o))),100*(o=1-1/255*Math.max(t,Math.max(n,o)))]},a.rgb.cmyk=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-o,1-i)))/(1-t)||0),100*((1-o-t)/(1-t)||0),100*((1-i-t)/(1-t)||0),100*t]},a.rgb.keyword=function(e){var t=i[e];if(t)return t;var n,r,a,c=1/0;for(var s in o)if(o.hasOwnProperty(s)){var l=o[s],d=(r=e,a=l,Math.pow(r[0]-a[0],2)+Math.pow(r[1]-a[1],2)+Math.pow(r[2]-a[2],2));d.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(o=o>.04045?Math.pow((o+.055)/1.055,2.4):o/12.92)),100*(.2126*t+.7152*n+.0722*o),100*(.0193*t+.1192*n+.9505*o)]},a.rgb.lab=function(e){var t=a.rgb.xyz(e),n=t[0],o=t[1],i=t[2];return o/=100,i/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116)-16,500*(n-o),200*(o-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.hsl.rgb=function(e){var t,n,o,i,r,a=e[0]/360,c=e[1]/100,s=e[2]/100;if(0===c)return[r=255*s,r,r];t=2*s-(n=s<.5?s*(1+c):s+c-s*c),i=[0,0,0];for(var l=0;l<3;l++)(o=a+1/3*-(l-1))<0&&o++,o>1&&o--,r=6*o<1?t+6*(n-t)*o:2*o<1?n:3*o<2?t+(n-t)*(2/3-o)*6:t,i[l]=255*r;return i},a.hsl.hsv=function(e){var t=e[0],n=e[1]/100,o=e[2]/100,i=n,r=Math.max(o,.01);return n*=(o*=2)<=1?o:2-o,i*=r<=1?r:2-r,[t,100*(0===o?2*i/(r+i):2*n/(o+n)),100*((o+n)/2)]},a.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,o=e[2]/100,i=Math.floor(t)%6,r=t-Math.floor(t),a=255*o*(1-n),c=255*o*(1-n*r),s=255*o*(1-n*(1-r));switch(o*=255,i){case 0:return[o,s,a];case 1:return[c,o,a];case 2:return[a,o,s];case 3:return[a,c,o];case 4:return[s,a,o];case 5:return[o,a,c]}},a.hsv.hsl=function(e){var t,n,o,i=e[0],r=e[1]/100,a=e[2]/100,c=Math.max(a,.01);return o=(2-r)*a,n=r*c,[i,100*(n=(n/=(t=(2-r)*c)<=1?t:2-t)||0),100*(o/=2)]},a.hwb.rgb=function(e){var t,n,o,i,r,a,c,s=e[0]/360,l=e[1]/100,d=e[2]/100,m=l+d;switch(m>1&&(l/=m,d/=m),o=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(o=1-o),i=l+o*((n=1-d)-l),t){default:case 6:case 0:r=n,a=i,c=l;break;case 1:r=i,a=n,c=l;break;case 2:r=l,a=n,c=i;break;case 3:r=l,a=i,c=n;break;case 4:r=i,a=l,c=n;break;case 5:r=n,a=l,c=i}return[255*r,255*a,255*c]},a.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,o=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,o*(1-i)+i))]},a.xyz.rgb=function(e){var t,n,o,i=e[0]/100,r=e[1]/100,a=e[2]/100;return n=-.9689*i+1.8758*r+.0415*a,o=.0557*i+-.204*r+1.057*a,t=(t=3.2406*i+-1.5372*r+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(o=Math.min(Math.max(0,o),1))]},a.xyz.lab=function(e){var t=e[0],n=e[1],o=e[2];return n/=100,o/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},a.lab.xyz=function(e){var t,n,o,i=e[0];t=e[1]/500+(n=(i+16)/116),o=n-e[2]/200;var r=Math.pow(n,3),a=Math.pow(t,3),c=Math.pow(o,3);return n=r>.008856?r:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,[t*=95.047,n*=100,o*=108.883]},a.lab.lch=function(e){var t,n=e[0],o=e[1],i=e[2];return(t=360*Math.atan2(i,o)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(o*o+i*i),t]},a.lch.lab=function(e){var t,n=e[0],o=e[1];return t=e[2]/360*2*Math.PI,[n,o*Math.cos(t),o*Math.sin(t)]},a.rgb.ansi16=function(e){var t=e[0],n=e[1],o=e[2],i=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];if(0===(i=Math.round(i/50)))return 30;var r=30+(Math.round(o/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===i&&(r+=60),r},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){var t=e[0],n=e[1],o=e[2];return t===n&&n===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},a.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},a.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var o=parseInt(n,16);return[o>>16&255,o>>8&255,255&o]},a.rgb.hcg=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255,r=Math.max(Math.max(n,o),i),a=Math.min(Math.min(n,o),i),c=r-a;return t=c<=0?0:r===n?(o-i)/c%6:r===o?2+(i-n)/c:4+(n-o)/c+4,t/=6,[360*(t%=1),100*c,100*(c<1?a/(1-c):0)]},a.hsl.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=1,i=0;return(o=n<.5?2*t*n:2*t*(1-n))<1&&(i=(n-.5*o)/(1-o)),[e[0],100*o,100*i]},a.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=t*n,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,o=e[2]/100;if(0===n)return[255*o,255*o,255*o];var i,r=[0,0,0],a=t%1*6,c=a%1,s=1-c;switch(Math.floor(a)){case 0:r[0]=1,r[1]=c,r[2]=0;break;case 1:r[0]=s,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=c;break;case 3:r[0]=0,r[1]=s,r[2]=1;break;case 4:r[0]=c,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=s}return i=(1-n)*o,[255*(n*r[0]+i),255*(n*r[1]+i),255*(n*r[2]+i)]},a.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),o=0;return n>0&&(o=t/n),[e[0],100*o,100*n]},a.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,o=0;return n>0&&n<.5?o=t/(2*n):n>=.5&&n<1&&(o=t/(2*(1-n))),[e[0],100*o,100*n]},a.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,o=n-t,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]},a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},8358:(e,t,n)=>{var o=n(4589),i=n(3314),r={};Object.keys(o).forEach((function(e){r[e]={},Object.defineProperty(r[e],"channels",{value:o[e].channels}),Object.defineProperty(r[e],"labels",{value:o[e].labels});var t=i(e);Object.keys(t).forEach((function(n){var o=t[n];r[e][n]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var o=n.length,i=0;i1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(o)}))})),e.exports=r},3314:(e,t,n)=>{var o=n(4589);function i(e){var t=function(){for(var e={},t=Object.keys(o),n=t.length,i=0;i{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9419:e=>{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},2489:(e,t,n)=>{var o=n(9419),i=n(7933),r=Object.hasOwnProperty,a=Object.create(null);for(var c in o)r.call(o,c)&&(a[o[c]]=c);var s=e.exports={to:{},get:{}};function l(e,t,n){return Math.min(Math.max(t,e),n)}function d(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}s.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=s.get.hsl(e),n="hsl";break;case"hwb":t=s.get.hwb(e),n="hwb";break;default:t=s.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},s.get.rgb=function(e){if(!e)return null;var t,n,i,a=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=t[2],t=t[1],n=0;n<3;n++){var c=2*n;a[n]=parseInt(t.slice(c,c+2),16)}i&&(a[3]=parseInt(i,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=(t=t[1])[3],n=0;n<3;n++)a[n]=parseInt(t[n]+t[n],16);i&&(a[3]=parseInt(i+i,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)a[n]=parseInt(t[n+1],0);t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:r.call(o,t[1])?((a=o[t[1]])[3]=1,a):null:null;for(n=0;n<3;n++)a[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}for(n=0;n<3;n++)a[n]=l(a[n],0,255);return a[3]=l(a[3],0,1),a},s.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.to.hex=function(){var e=i(arguments);return"#"+d(e[0])+d(e[1])+d(e[2])+(e[3]<1?d(Math.round(255*e[3])):"")},s.to.rgb=function(){var e=i(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},s.to.rgb.percent=function(){var e=i(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),o=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+o+"%)":"rgba("+t+"%, "+n+"%, "+o+"%, "+e[3]+")"},s.to.hsl=function(){var e=i(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},s.to.hwb=function(){var e=i(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},s.to.keyword=function(e){return a[e.slice(0,3)]}},4654:(e,t,n)=>{"use strict";var o=n(2489),i=n(8358),r=[].slice,a=["keyword","gray","hex"],c={};Object.keys(i).forEach((function(e){c[r.call(i[e].labels).sort().join("")]=e}));var s={};function l(e,t){if(!(this instanceof l))return new l(e,t);if(t&&t in a&&(t=null),t&&!(t in i))throw new Error("Unknown model: "+t);var n,d;if(null==e)// eslint-disable-line no-eq-null,eqeqeq +e.__vue__??e.parentElement.__vue__??e.children[0].__vue__??e.__vueParentComponent},5145:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ScopedConsoleCallHook:()=>m,ScopedConsoleCreateHook:()=>d,logError:()=>a,randomScopedConsole:()=>u,useScopedConsole:()=>f});var o=n(6695),i=n(3085),r=n(7234);const a=async(e,t)=>{let o;"string"==typeof e?(o=e,console.error(o)):(o=(0,r.getGeneralSettings)().devMode?e.stack:e.message,console.error(e));const{Toast:i}=await Promise.resolve().then(n.bind(n,9107));i.error(o,"错误",t)},c=Symbol("ScopedConsole"),s=Symbol("NamePatch"),l={default:"#78909C",warn:"#CC7A00",error:"#BF6060",group:"#9575CD"},d="scopedConsole.create",m="scopedConsole.call",f=e=>{const{before:t,after:n}=(0,o.getHook)(d),{name:i,color:a=l.default,console:f=window.console}="string"==typeof e?{name:e}:e,u={name:i,color:a,console:f};t(e,f);let p=0;const b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.color;const i=e[c],r=(i?t.color:n)??l.default,a="#fff",d=i?["%c "]:["%c"],f={badgeNames:[...i?.badgeNames??[],...d,`%c${t.name}`],badgeValues:[...i?.badgeValues??[],"",`background-color: ${r}; color: ${a}; padding: 2px 4px; border-radius: 4px;`],original:i?.original??e},u=f.original,b=function(){for(var e=arguments.length,t=new Array(e),n=0;n2&&void 0!==arguments[2]?arguments[2]:t.color,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e=>e;const i=b(e,t,n),r=function(){for(var e=arguments.length,t=new Array(e),n=0;n{g[e][s]||(g[e][s]=e)}));const F={...unsafeWindow.console,...f};return F.log=b(f.log,u),F.info=b(f.info,u),F.warn=b(f.warn,u,l.warn),F.error=b(f.error,u,l.error),F.group=h(f.group,u,l.group,(e=>e+1)),F.groupCollapsed=h(f.groupCollapsed,u,l.group,(e=>e+1)),F.groupEnd=h(f.groupEnd,u,l.group,(e=>e-1)),F.debug=(()=>{const e=b(f.debug,u);return function(){if((0,r.getGeneralSettings)().devMode){for(var t=arguments.length,n=new Array(t),o=0;of({...e,name:(0,i.getRandomId)()})},4055:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ascendingBigIntSort:()=>a,ascendingSort:()=>i,ascendingStringSort:()=>r,descendingBigIntSort:()=>l,descendingSort:()=>c,descendingStringSort:()=>s});const o=e=>e,i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t)-e(n)},r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(t).localeCompare(e(n))},a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>{const o=BigInt(e(t)),i=BigInt(e(n));return o===i?0:o>i?1:-1}},c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n)-e(t)},s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>e(n).localeCompare(e(t))},l=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o;return(t,n)=>-a(e)(t,n)}},3659:(e,t,n)=>{"use strict";n.r(t),n.d(t,{formatTitle:()=>s,getFriendlyTitle:()=>l});var o=n(3085),i=n(7234),r=n(7079),a=n(4055);const c=e=>{let t=0,n=0;const o=[];return e.split("").forEach(((i,r)=>{"["===i&&(0===n?(o.push(e.substring(t,r)),t=r):n++),"]"===i&&(0===n?(o.push(e.substring(t,r+1)),t=r+1):n--)})),t""!==e))},s=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=new Date,s=()=>document.title.replace(/第[0-9]*[零一二三四五六七八九十百千]*[集话]-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/-[^-]+-[^-]+在线观看-bilibili-哔哩哔哩$/,"").replace(/:([^:]+?)_.+?_bilibili_哔哩哔哩$/,"").replace(/_哔哩哔哩_bilibili$/,"").replace(/ - 哔哩哔哩$/,"").replace(/_哔哩哔哩 \(゜-゜\)つロ 干杯~-bilibili$/,"").replace(/(.*?) - (.*?) - 哔哩哔哩直播,二次元弹幕直播平台$/,"$1").trim(),l={title:(()=>{const e=(0,o.dq)(".video-info-container .video-title");if(null!==e)return e.getAttribute("title");const t=(0,o.dq)('[class*="mediainfo_mediaTitle"]');if(null!==t)return t.getAttribute("title");const n=(0,o.dq)(".header-info-ctnr .live-title .text");return null!==n?n.getAttribute("title"):s()})(),ep:(()=>{if(!t)return;const e=(0,o.dq)("#eplist_module li.cursor .ep-title");if(null!==e)return e.innerText;const n=(0,o.dq)("#multi_page .cur-list>ul li.on a, .video-episode-card__info-playing .video-episode-card__info-title");if(null!==n)return n.getAttribute("title");const i=(0,o.dq)(".multip-list-item.multip-list-item-active");return null!==i?i.getAttribute("title"):void 0})(),aid:unsafeWindow.aid,bvid:unsafeWindow.bvid,cid:unsafeWindow.cid,lid:document.URL.replace(/https:\/\/live\.bilibili\.com\/(blanc\/)?([\d]+)/,"$2"),y:i.getFullYear().toString(),M:(i.getMonth()+1).toString().padStart(2,"0"),d:i.getDate().toString().padStart(2,"0"),h:i.getHours().toString().padStart(2,"0"),m:i.getMinutes().toString().padStart(2,"0"),s:i.getSeconds().toString().padStart(2,"0"),ms:i.getMilliseconds().toString().substring(0,3)},d={...l,...n},m=c(e),f=Object.entries(d).sort((0,a.descendingSort)((e=>{let[t]=e;return t.length}))),u=m.map((e=>{if(!e.startsWith("[")||!e.endsWith("]"))return e;for(const[t,n]of f){const o=new RegExp(`^\\[([^\\[\\]]*?)${t}([^\\[\\]]*?)\\]$`),i=e.match(o);if(i&&Boolean(n))return`${i[1]??""}${n}${i[2]??""}`}return""})),p=u.join("");return(0,r.formatFilename)(p," ")},l=function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s((0,i.getGeneralSettings)().filenameFormat,e,t)}},9316:(e,t,n)=>{"use strict";n.r(t),n.d(t,{allVideoUrls:()=>u,bangumiUrls:()=>d,cheeseUrls:()=>m,columnUrls:()=>F,favoriteListUrls:()=>r,feedsUrls:()=>g,feedsUrlsWithoutDetail:()=>h,festivalUrls:()=>s,liveUrls:()=>b,mainSiteUrls:()=>p,matchCurrentPage:()=>w,mediaListUrls:()=>c,playerUrls:()=>v,upListUrls:()=>a,videoAndBangumiUrls:()=>f,videoUrls:()=>l,watchlaterUrls:()=>i});var o=n(3085);const i=["//www.bilibili.com/medialist/play/watchlater","//www.bilibili.com/list/watchlater"],r=["//www.bilibili.com/medialist/play/ml","//www.bilibili.com/list/ml"],a=[/\/\/www\.bilibili\.com\/medialist\/play\/\d+/,/\/\/www\.bilibili\.com\/list\/\d+/],c=[...i,...r,...a,/\/\/www\.bilibili\.com\/list\//],s=[/\/\/www\.bilibili\.com\/festival\//],l=["//www.bilibili.com/video/",...s,...c],d=["//www.bilibili.com/bangumi/play/"],m=["//www.bilibili.com/cheese/"],f=[...l,...d],u=[...f,...m],p=["https://www.bilibili.com/v/",/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/([^\/]+)\.html$/,/^https:\/\/www\.bilibili\.com\/watchlater\/#\/list$/,"https://www.bilibili.com/account/"],b=[/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],h=[/^https:\/\/t\.bilibili\.com\/$/,/^https:\/\/space\.bilibili\.com\//,/^https:\/\/live\.bilibili\.com\/(blanc\/)?[\d]+/],g=[...h,/^https:\/\/t\.bilibili\.com\//,/^https:\/\/www\.bilibili\.com\/opus\/[\d]+$/],F=[/^https:\/\/www\.bilibili\.com\/read\/cv/],v=["//player.bilibili.com","//www.bilibili.com/html/player.html",...l,...d,...m],w=function(){for(var e=arguments.length,t=new Array(e),n=0;nArray.isArray(e)?e.some((e=>(0,o.matchUrlPattern)(e))):(0,o.matchUrlPattern)(e)))}},2351:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CompareResult:()=>a,Version:()=>c,isFeatureAcceptable:()=>s});var o=n(2686),i=n(5791);function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let a=function(e){return e[e.Less=-1]="Less",e[e.Equal=0]="Equal",e[e.Greater=1]="Greater",e[e.Incomparable=NaN]="Incomparable",e}({});class c{constructor(e){if(this.versionString=e,r(this,"parts",void 0),!/^[\d\.]+$/.test(e))throw new Error("Invalid version string");this.parts=e.split(".").map((e=>parseInt(e)))}compareTo(e){for(let t=0;te.parts[t]?a.Greater:a.Less}return this.parts.length!==e.parts.length?a.Less:a.Equal}greaterThan(e){return this.compareTo(e)===a.Greater}lessThan(e){return this.compareTo(e)===a.Less}equals(e){return this.compareTo(e)===a.Equal}}const s=async e=>{try{if("string"==typeof e&&(e=(0,o.loadFeatureCode)(e)),null==e)return!1;const{version:t}=i.meta.compilationInfo,{coreVersion:n}=e;if(!n||!t)return!0;const r=new c(t),a=new c(n);return r.equals(a)||r.greaterThan(a)}catch(t){return console.warn("[isFeatureAcceptable] check failed, feature =",e),!0}}},779:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addData:()=>r,getData:()=>a,registerAndGetData:()=>c,registerData:()=>i});const o=new Map,i=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i{if(o.has(e)){const{providers:n,loaded:i,data:r}=o.get(e);i?t(...r):n.push(t)}else o.set(e,{registered:!1,data:[],loaded:!1,providers:[t]})},a=e=>{if(o.has(e)){const t=o.get(e),{data:n,registered:i,loaded:r,providers:a}=t;if(i)return r||(a.forEach((e=>e(...n))),t.providers=[],t.loaded=!0),n}return[]},c=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o{"use strict";n.r(t),n.d(t,{addHook:()=>i,getHook:()=>r});const o=new Map,i=(e,t)=>{if(o.has(e)){const{providers:n}=o.get(e);n.push(t)}else o.set(e,{providers:[t]})},r=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;ie.before?.(...n.concat(t)))))},after:async function(){for(var e=arguments.length,t=new Array(e),o=0;oe.after?.(...n.concat(t)))))}}}return{before:async()=>Promise.all([]),after:async()=>Promise.all([])}}},9234:(e,t,n)=>{"use strict";n.r(t),n.d(t,{plugin:()=>r});const o=async(e,t,o)=>{const i={name:t,icon:"mdi-content-copy",description:`复制${e}`,indexer:o,action:async()=>{if(i.name===t){await navigator.clipboard.writeText(t);const{Toast:o}=await Promise.resolve().then(n.bind(n,9107));o.success("复制成功",`复制${e}`,1500)}}};return[i]},i=[{pattern:/^av([\d]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,9161)),i=await t(`https://api.bilibili.com/x/web-interface/view?aid=${e[1]}`),r=lodash.get(i,"data",{}),{bvid:a,title:c}=r,s=`av${e[1]}`;return{name:c||s,description:"av号跳转",indexer:s,link:`https://www.bilibili.com/av${e[1]}`,extraActions:a?await o("BV号",a,s):[]}}},{pattern:/^bv([\da-zA-Z]+)$/i,getActions:async e=>{const{getJsonWithCredentials:t}=await Promise.resolve().then(n.bind(n,9161)),i=await t(`https://api.bilibili.com/x/web-interface/view?bvid=${e[1]}`),r=lodash.get(i,"data",{}),{aid:a,title:c}=r,s=`BV${e[1]}`;return{name:c||s,description:"BV号跳转",indexer:s,link:`https://www.bilibili.com/BV${e[1]}`,extraActions:a?await o("av号",`av${a}`,s):[]}}}],r={name:"launchBar.actions.IDSearch",displayName:"搜索栏 - 视频跳转",async setup(){const{addData:e}=await Promise.resolve().then(n.bind(n,779)),{LaunchBarActionProviders:t}=await Promise.resolve().then(n.bind(n,5613));e(t,(e=>{e.push({name:"IDSearchProvider",getActions:async e=>{const t=[];for(const n of i){const o=e.match(n.pattern);if(o){const{name:e,description:i="",indexer:r,link:a,extraActions:c=[]}=await n.getActions(o);t.push({name:e,icon:"mdi-open-in-new",indexer:r,description:i,action:()=>{window.open(a,"_blank")},order:0},...c)}}return t}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}},4602:(e,t,n)=>{"use strict";n.r(t),n.d(t,{extractPluginFromComponent:()=>d,installPlugin:()=>s,loadAllPlugins:()=>f,loadPlugin:()=>m,plugins:()=>c,pluginsMap:()=>a,uninstallPlugin:()=>l});var o=n(3085),i=n(779),r=n(6695);const a={},c=lodash.once((()=>{const e=n(4353);return e.keys().map((t=>{const n=e(t);if("plugin"in n){const e=n.plugin;return a[e.name]=e,e}})).filter((e=>void 0!==e))}))(),s=async e=>{const{loadFeatureCode:t}=await Promise.resolve().then(n.bind(n,2686));let o;try{o=t(e)}catch(e){throw new Error("无效的插件代码",e)}const{settings:i}=await Promise.resolve().then(n.bind(n,7234)),r=i.userPlugins[o.name];if(r)return r.code=e,r.name=o.name,r.displayName=o.displayName||o.name,{metadata:o,message:`已更新插件'${o.displayName}', 刷新后生效`};const a={code:e,displayName:o.name,...o};return i.userPlugins[o.name]=a,c.push(a),{metadata:o,message:`已安装插件'${o.displayName||o.name}', 刷新后生效`}},l=async e=>{const{settings:t}=await Promise.resolve().then(n.bind(n,7234)),i=Object.entries(t.userPlugins).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!i)throw new Error(`没有找到与名称'${e}'相关联的插件`);const[r,a]=i;return delete t.userPlugins[r],(0,o.deleteValue)(c,(e=>e.name===r)),{metadata:a,message:`已卸载插件'${a.displayName}', 刷新后生效`}},d=e=>e.plugin?{name:`${e.name}.plugin`,displayName:`${e.displayName} - 附带插件`,...e.plugin}:null,m=async e=>{if(e.setup){const{pluginLoadTrace:t}=await Promise.resolve().then(n.bind(n,4427));await t(e);const{coreApis:o}=await Promise.resolve().then(n.bind(n,8677));return e.setup({coreApis:o,addData:i.addData,addHook:r.addHook,registerData:i.registerData,registerAndGetData:i.registerAndGetData,getHook:r.getHook})}return null},f=async e=>{const{settings:t,getGeneralSettings:o}=await Promise.resolve().then(n.bind(n,7234)),{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,810));for(const t of e){const e=d(t);e&&c.push(e)}for(const[e,n]of Object.entries(t.userPlugins)){const{code:t}=n;let o;try{o=i(t)}catch(t){console.error("从代码加载用户插件失败。代码可能包含语法错误或执行时产生了异常",{pluginName:e,error:t});continue}c.push(o)}return Promise.allSettled(c.map(m)).then((async()=>{if(o().devMode){const{pluginLoadTime:e,pluginResolveTime:t}=await Promise.resolve().then(n.bind(n,4427)),{logStats:o}=await Promise.resolve().then(n.bind(n,7035));o("plugins block",e),o("plugins resolve",t)}}))}},6118:(e,t,n)=>{"use strict";n.r(t),n.d(t,{UserStyleMode:()=>r,installStyle:()=>c,styles:()=>a,uninstallStyle:()=>s});var o=n(7234),i=n(3085);let r=function(e){return e.Default="default",e.Instant="instant",e.Important="important",e}({});const a=Object.values(o.settings.userStyles),c=async e=>{try{let t;const{loadFeatureCode:i}=await Promise.resolve().then(n.bind(n,2686));t="string"==typeof e?i(e):e;const{name:c,style:s,displayName:l,mode:d}=t,{removeStyle:m,addImportantStyle:f,addStyle:u}=await Promise.resolve().then(n.bind(n,7511)),p=o.settings.userStyles[c];if(p)Object.assign(p,t),m(c);else{const e={displayName:c,mode:r.Default,...t};o.settings.userStyles[c]=e,a.push(e)}return d===r.Important?f(s,c):u(s,c),{metadata:t,message:`已安装样式'${l||c}'`}}catch(e){throw new Error("无效的样式代码",{cause:e})}},s=async e=>{const t=Object.entries(o.settings.userStyles).find((t=>{let[n,{displayName:o}]=t;return n===e||o===e}));if(!t)throw new Error(`没有找到与名称'${e}'相关联的样式`);const{removeStyle:r}=await Promise.resolve().then(n.bind(n,7511)),[c,{displayName:s}]=t;return r(c),delete o.settings.userStyles[c],(0,i.deleteValue)(a,(e=>e.name===c)),{metadata:t,message:`已卸载样式'${s}'`}}},1445:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AsyncButton:()=>s,CheckBox:()=>h,ColorPicker:()=>E,DefaultWidget:()=>mt,DpiImage:()=>P,ImagePicker:()=>R,ImageViewer:()=>Y,MiniToast:()=>ft.Z,ProgressBar:()=>ne,ProgressRing:()=>se,RadioButton:()=>ue,RangeInput:()=>we,ScrollTrigger:()=>Be,SwitchBox:()=>De.Z,TabControl:()=>Oe,TextArea:()=>qe,TextBox:()=>Ze.default,VButton:()=>r.default,VDropdown:()=>Xe,VEmpty:()=>ot,VIcon:()=>o.default,VLoading:()=>it.default,VPopup:()=>He.default,VSlider:()=>rt.default,showImage:()=>K});var o=n(2593),i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({attrs:{disabled:e.disabled||e.internalDisabled},on:{click:e.onClick}},"VButton",e.$attrs,!1),e.listeners),[e._t("default",(function(){return[e._v("Button")]}))],2)};i._withStripped=!0;var r=n(7784);const a=Vue.extend({components:{VButton:r.default},props:{disabled:{type:Boolean,default:!1}},data:()=>({internalDisabled:!1}),computed:{listeners(){return lodash.omit(this.$listeners,"click")},onClick(){var e=this;return async function(){try{e.internalDisabled=!0;for(var t=arguments.length,n=new Array(t),o=0;oPromise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,2593)).then((e=>e.default))},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},iconPosition:{type:String,default:"left"},checkedIcon:{type:String,default:"mdi-checkbox-marked-circle"},notCheckedIcon:{type:String,default:"mdi-checkbox-blank-circle-outline"}}});var m=n(8332),f=n.n(m),u=n(455),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,c.Z)(d,l,[],!1,null,"07bbf374",null).exports;var g=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-color-picker"},[t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.popupOpened=!e.popupOpened,expression:"() => (popupOpened = !popupOpened)"}],ref:"button",staticClass:"selected-color",style:{backgroundColor:e.color,width:e.size+"px",height:e.size+"px"},attrs:{role:"button",tabindex:"0"}}),e._v(" "),t("VPopup",{staticClass:"picker",class:{compact:e.compact},style:{"--offset":e.popupOffset+"px"},attrs:{"esc-close":"","auto-close":!1,"trigger-element":e.$refs.button},model:{value:e.popupOpened,callback:function(t){e.popupOpened=t},expression:"popupOpened"}},[t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("预设颜色")]),e._v(" "),t("div",{staticClass:"colors"},e._l(e.colors,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectHexColor(n),expression:"() => selectHexColor(c)"}],key:n,staticClass:"color",style:{backgroundColor:n},attrs:{role:"radio",tabindex:e.popupOpened?0:-1}})})),0)]),e._v(" "),t("div",{staticClass:"item-group"},[t("div",{staticClass:"item-title"},[e._v("调色")]),e._v(" "),t("div",{staticClass:"bars"},[e.isRGB?[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("R")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.red},on:{change:function(t){return e.wrapper.change("red",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.redGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2466330035)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.red)},on:{change:function(t){return e.wrapper.change("red",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("G")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.green},on:{change:function(t){return e.wrapper.change("green",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.greenGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,2962781435)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.green)},on:{change:function(t){return e.wrapper.change("green",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:255,value:e.wrapper.blue},on:{change:function(t){return e.wrapper.change("blue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.blueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}],null,!1,660815582)}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"3","change-on-blur":"",disabled:!e.popupOpened,text:e.int(e.wrapper.blue)},on:{change:function(t){return e.wrapper.change("blue",t)}}})],1)]:[t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("H")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,max:359.9,value:e.wrapper.hue},on:{change:function(t){return e.wrapper.change("hue",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.hueGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"4","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.hue)},on:{change:function(t){return e.wrapper.change("hue",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("S")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.saturation},on:{change:function(t){return e.wrapper.change("saturationv",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.saturationGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.saturation)},on:{change:function(t){return e.wrapper.change("saturationv",t)}}})],1),e._v(" "),t("div",{staticClass:"bar"},[t("div",{staticClass:"bar-name"},[e._v("B")]),e._v(" "),t("VSlider",{attrs:{focusable:!1,value:e.wrapper.brightness},on:{change:function(t){return e.wrapper.change("value",t)}},scopedSlots:e._u([{key:"bar",fn:function(){return[t("div",{staticClass:"color-bar",style:{background:e.wrapper.brightnessGradient}})]},proxy:!0},{key:"thumb",fn:function(){return[t("div",{staticClass:"color-thumb"})]},proxy:!0}])}),e._v(" "),t("TextBox",{staticClass:"bar-value",attrs:{"max-length":"5","change-on-blur":"",disabled:!e.popupOpened,text:e.fixed(e.wrapper.brightness)},on:{change:function(t){return e.wrapper.change("value",t)}}})],1)]],2)]),e._v(" "),t("div",{staticClass:"info item-group"},[t("VButton",{staticClass:"toggle-mode",attrs:{disabled:!e.popupOpened,type:"transparent",title:e.isRGB?"切换至HSB":"切换至RGB"},on:{click:function(t){e.isRGB=!e.isRGB}}},[e._v("\n "+e._s(e.isRGB?"切换至HSB":"切换至RGB")+"\n ")]),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),t("div",{staticClass:"color-preview",style:{backgroundColor:e.wrapper.hex}}),e._v(" "),t("TextBox",{staticClass:"hex",attrs:{disabled:!e.popupOpened,text:e.wrapper.hex,"change-on-blur":""},on:{change:function(t){return e.selectHexColor(t)}}})],1),e._v(" "),t("div",{staticClass:"operations item-group",on:{click:function(t){e.popupOpened=!e.popupOpened}}},[t("VButton",{staticClass:"cancel",attrs:{disabled:!e.popupOpened},on:{click:function(t){return e.reset()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{staticClass:"ok",attrs:{disabled:!e.popupOpened,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1)])],1)};g._withStripped=!0;var F=n(4654),v=n.n(F);const w=JSON.parse('["#E57373","#F06292","#BA68C8","#9575CD","#7986CB","#2196F3","#00A0D8","#00ACC1","#26A69A","#81C784","#9CCC65","#FF9800","#FF7043","#A1887F","#757575","#78909C"]'),y=e=>{let t=new(v())(e);const n={get color(){return t},set color(e){t=e,this.updateProps()},change(e,n){"string"==typeof n&&(n=parseFloat(n),Number.isNaN(n))||(this.color=t[e](n))},updateProps(){this.red=t.red(),this.green=t.green(),this.blue=t.blue(),this.hue=t.hue(),this.saturation=t.saturationv(),this.brightness=t.value(),this.hex=t.hex(),this.hueGradient=`linear-gradient(to right, ${t.hue(0).hex()}, ${t.hue(60).hex()}, ${t.hue(120).hex()}, ${t.hue(180).hex()}, ${t.hue(240).hex()}, ${t.hue(300).hex()}, ${t.hue(0).hex()})`,this.saturationGradient=`linear-gradient(to right, ${t.saturationv(0).hex()}, ${t.saturationv(100).hex()})`,this.brightnessGradient=`linear-gradient(to right, ${t.value(0).hex()}, ${t.value(100).hex()})`,this.redGradient=`linear-gradient(to right, ${t.red(0).hex()}, ${t.red(255).hex()})`,this.greenGradient=`linear-gradient(to right, ${t.green(0).hex()}, ${t.green(255).hex()})`,this.blueGradient=`linear-gradient(to right, ${t.blue(0).hex()}, ${t.blue(255).hex()})`}};return n.updateProps(),n},x=Vue.extend({name:"ColorPicker",components:{TextBox:()=>Promise.resolve().then(n.bind(n,9856)).then((e=>e.default)),VSlider:()=>Promise.resolve().then(n.bind(n,91)).then((e=>e.default)),VButton:()=>Promise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,1432)).then((e=>e.default))},model:{prop:"color",event:"change"},props:{color:{type:String,default:"#000000",required:!0},size:{type:Number,default:24,required:!1},compact:{type:Boolean,default:!1},popupOffset:{type:Number,default:0}},data(){return{popupOpened:!1,wrapper:y(this.color),colors:w,isRGB:!1}},watch:{popupOpened(e){e&&(document.body.addEventListener("mousedown",(e=>{this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("mouseup",(()=>{this.popupOpened=!1}),{once:!0})})),document.body.addEventListener("touchstart",(e=>{1!==e.touches.length||this.$el.contains(e.target)||this.$el===e.target||document.body.addEventListener("touchend",(()=>{this.popupOpened=!1}),{once:!0})})))}},methods:{ok(){this.$emit("change",this.wrapper.hex)},reset(){this.wrapper.color=new(v())(this.color)},selectHexColor(e){try{const t=new(v())(e,"hex");this.wrapper.color=t}catch(e){}},fixed:e=>(Math.round(10*e)/10).toString(),int:e=>Math.round(e).toString()}});var k=n(8325),C=n.n(k),A={insert:"head",singleton:!1};f()(C(),A);C().locals;const E=(0,c.Z)(x,g,[],!1,null,"5b939efc",null).exports;var B=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("img",e._b({class:{placeholder:e.isPlaceholderActive},attrs:{width:e.width,height:e.height,srcset:e.srcset,src:e.actualSrc}},"img",e.$attrs,!1))};B._withStripped=!0;var D=n(3085),I=n(2866);const z=Vue.extend({name:"DpiImage",props:{size:{type:[Object,Number],required:!0},src:{type:String,required:!0},intersection:{type:Object,default:()=>({})},placeholderImage:{type:Boolean,default:!1}},data:()=>({srcset:null,actualSrc:I.EmptyImageUrl,isPlaceholderActive:!1}),computed:{width(){return"object"==typeof this.size&&"width"in this.size?this.size.width:"number"==typeof this.size?this.size:null},height(){return"object"==typeof this.size&&"height"in this.size?this.size.height:"number"==typeof this.size?this.size:null}},watch:{size(){this.sourceChange()},src(){this.sourceChange()}},mounted(){const e={rootMargin:"200px",...this.intersection},t=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(this.calcSrc(),t.disconnect())}))}),e);t.observe(this.$el)},methods:{sourceChange(){this.actualSrc!==I.EmptyImageUrl&&null!==this.srcset&&this.calcSrc()},calcSrc(){const e=!this.src||!this.size;if(this.isPlaceholderActive=e&&this.placeholderImage,e)return this.srcset=null,void(this.placeholderImage?this.actualSrc="https://s1.hdslb.com/bfs/static/blive/live-web-center/static/img/no-cover.1ebe4d5.jpg":this.actualSrc=I.EmptyImageUrl);let{src:t}=this;if(t.startsWith("http:")&&(t=t.replace("http:","https:")),t.includes("//static.hdslb.com/images/member/noface.gif"))return this.srcset=t,void(this.actualSrc=t);this.srcset=(0,D.getDpiSourceSet)(t,this.size),this.actualSrc=t}}}),S=z;const P=(0,c.Z)(S,B,[],!1,null,null,null).exports;var M=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-image-picker"},[t("VButton",{ref:"pickButton",staticClass:"pick-button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[e._t("text",(function(){return[e._v(" 选择图片 ")]}))],2),e._v(" "),t("VPopup",{staticClass:"popup",attrs:{"trigger-element":e.$refs.pickButton},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.cancel()}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("transition-group",{staticClass:"images",attrs:{name:"image-list",tag:"div",tabindex:"-1"}},e._l(e.images,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectImage(n),expression:"() => selectImage(i)"}],key:n.name,staticClass:"image",class:{selected:n.name===e.selectedImage.name},attrs:{title:n.name,tabindex:e.popupOpen?0:-1}},[t("img",{attrs:{width:"64",height:"64",src:n.url}})])})),0),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:0===e.images.length,expression:"images.length === 0"}],staticClass:"empty-tip"},[e._v("空空如也哦 = ̄ω ̄=")]),e._v(" "),t("div",{staticClass:"operations"},[t("VPopup",{staticClass:"add-image-popup",attrs:{tabindex:"-1",lazy:!1,"trigger-element":e.$refs.addButton},model:{value:e.addImagePopupOpen,callback:function(t){e.addImagePopupOpen=t},expression:"addImagePopupOpen"}},[t("div",{staticClass:"add-image-row"},[e._v("\n 名称:\n "),t("TextBox",{ref:"addImageInput",attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.name,callback:function(t){e.$set(e.newImage,"name",t)},expression:"newImage.name"}})],1),e._v(" "),t("div",{staticClass:"add-image-row"},[e._v("\n 链接:\n "),t("TextBox",{attrs:{disabled:!e.addImagePopupOpen},model:{value:e.newImage.url,callback:function(t){e.$set(e.newImage,"url",t)},expression:"newImage.url"}})],1),e._v(" "),t("div",{staticClass:"add-image-row buttons"},[t("VButton",{attrs:{disabled:!e.addImagePopupOpen},on:{click:function(t){e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 取消\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.newImage.url||!e.newImage.name,type:"primary"},on:{click:function(t){e.addImage(e.newImage),e.addImagePopupOpen=!1,e.clearNewImage()}}},[e._v("\n 确定\n ")])],1)]),e._v(" "),t("VButton",{staticClass:"clear-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.clearImage()}}},[e._v("\n 清除选择\n ")]),e._v(" "),t("VButton",{ref:"addButton",staticClass:"add-image",attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.openAddImagePopup()}}},[e._v("\n 添加\n ")]),e._v(" "),t("VButton",{staticClass:"edit-image",attrs:{disabled:!e.selectedImage.name},on:{click:function(t){return e.editImage()}}},[e._v("\n 编辑\n ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.selectedImage.name},on:{click:function(t){e.removeImage(e.selectedImage),e.clearImage()}}},[e._v("\n 删除\n ")])],1),e._v(" "),t("div",{staticClass:"operations"},[t("VButton",{attrs:{disabled:!e.popupOpen},on:{click:function(t){return e.cancel()}}},[e._v(" 取消 ")]),e._v(" "),t("VButton",{attrs:{disabled:!e.popupOpen,type:"primary"},on:{click:function(t){return e.ok()}}},[e._v(" 确定 ")])],1),e._v(" "),e.addImagePopupOpen?t("div",{staticClass:"mask"}):e._e()],1)],1)};M._withStripped=!0;const O=[],V=Vue.extend({name:"ImagePicker",components:{VButton:()=>Promise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VPopup:()=>Promise.resolve().then(n.bind(n,1432)).then((e=>e.default)),TextBox:()=>Promise.resolve().then(n.bind(n,9856)).then((e=>e.default))},model:{prop:"image",event:"change"},props:{image:{type:Object,required:!0}},data:()=>({images:O,popupOpen:!1,addImagePopupOpen:!1,selectedImage:{name:"",url:""},newImage:{name:"",url:""}}),methods:{addImage:e=>{if(!e.name||!e.url)return;const t=O.find((t=>t.name===e.name));t?t.url=e.url:O.unshift(e)},removeImage:e=>{const t="string"==typeof e?e:e.name,n=O.findIndex((e=>e.name===t));-1!==n&&O.splice(n,1)},ok(){this.$emit("change",this.selectedImage),this.popupOpen=!1},cancel(){this.selectedImage=this.image,this.popupOpen=!1},selectImage(e){this.selectedImage.name===e.name?this.selectedImage={name:"",url:""}:this.selectedImage=e},clearImage(){this.selectedImage={name:"",url:""}},clearNewImage(){this.newImage={name:"",url:""}},editImage(){this.newImage=this.selectedImage,this.openAddImagePopup()},async openAddImagePopup(){this.addImagePopupOpen=!this.addImagePopupOpen,await this.$nextTick(),this.$refs.addImageInput.$refs.input.focus()}}});var T=n(7354),L=n.n(T),j={insert:"head",singleton:!1};f()(L(),j);L().locals;const R=(0,c.Z)(V,M,[],!1,null,"7b32c90b",null).exports;var N=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"image-viewer-container",class:{open:e.open},on:{click:e.detectOutside}},[t("div",{ref:"viewer",staticClass:"image-viewer"},[t("div",{staticClass:"image-container"},[e.image?t("img",{staticClass:"image",attrs:{src:e.image}}):e._e()]),e._v(" "),t("div",{staticClass:"close image-viewer-icon",attrs:{title:"关闭"},on:{click:function(t){e.open=!1}}},[t("VIcon",{attrs:{size:48,icon:"mdi-close"}})],1),e._v(" "),t("a",{staticClass:"copy-link image-viewer-icon",attrs:{target:"_blank",title:"复制原链接"},on:{click:function(t){return e.copyLink()}}},[e.copiedTimer?t("VIcon",{attrs:{size:48,icon:"mdi-check"}}):t("VIcon",{attrs:{size:48,icon:"mdi-link"}})],1),e._v(" "),t("a",{staticClass:"new-tab image-viewer-icon",attrs:{target:"_blank",title:"在新标签页打开"},on:{click:function(t){return e.newTab()}}},[t("VIcon",{attrs:{size:48,icon:"mdi-open-in-new"}})],1),e._v(" "),e.blobUrl?t("a",{staticClass:"download image-viewer-icon",attrs:{target:"_blank",title:"下载",href:e.blobUrl,download:e.filename}},[t("VIcon",{attrs:{size:48,icon:"mdi-download"}})],1):e._e()])])};N._withStripped=!0;var q=n(7234),Z=n(3659),U=n(9161);const H=Vue.extend({components:{VIcon:o.default},props:{image:{type:String,required:!0}},data:()=>({filename:"",open:!1,blobUrl:"",keyHandler:null,copiedTimer:0}),watch:{async image(e){this.blobUrl&&URL.revokeObjectURL(this.blobUrl),e||(this.blobUrl="");const t=await(0,U.getBlob)(e);this.blobUrl=URL.createObjectURL(t),this.updateFilename()}},mounted(){this.keyHandler=e=>{"Escape"===e.key&&(this.open=!1)},document.addEventListener("keydown",this.keyHandler),(0,q.addComponentListener)("settingsPanel.filenameFormat",(()=>{this.updateFilename()}),!0)},beforeDestroy(){document.removeEventListener("keydown",this.keyHandler)},methods:{async copyLink(){await navigator.clipboard.writeText(this.image),this.copiedTimer&&window.clearTimeout(this.copiedTimer),this.copiedTimer=window.setTimeout((()=>{this.copiedTimer=0}),2e3)},newTab(){window.open(this.image,"_blank")},detectOutside(e){const t=this.$el,{viewer:n}=this.$refs;e.target!==t&&e.target!==n||(this.open=!1)},updateFilename(){const e=this.image;this.filename=e?(0,Z.getFriendlyTitle)(document.URL.includes("/www.bilibili.com/bangumi/"))+e.substring(e.lastIndexOf(".")):""}}});var W=n(1618),G=n.n(W),Q={insert:"head",singleton:!1};f()(G(),Q);G().locals;const Y=(0,c.Z)(H,N,[],!1,null,"8829ba14",null).exports;let X;const K=async e=>(X||await(async()=>(X=new Y({propsData:{image:"",open:!1}}).$mount(),document.body.insertAdjacentElement("beforeend",X.$el),X))(),setTimeout((()=>{X.image=e,X.open=!0})),X);var J=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-progress-bar"},[t("div",{staticClass:"progress",class:{transition:e.transition},style:{width:e.width}})])};J._withStripped=!0;const _=Vue.extend({name:"ProgressBar",props:{progress:{type:Number,default:50},min:{type:Number,default:0},max:{type:Number,default:100},transition:{type:Boolean,default:!1}},computed:{width(){let e=this.progress;e>this.max?e=this.max:ethis.max?e=this.max:e{de.has(e)?de.get(e).push({instance:t,uncheck:n}):de.set(e,[{instance:t,uncheck:n}])})),fe=Vue.extend({name:"RadioButton",components:{CheckBox:h},model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,required:!0},allowUncheck:{type:Boolean,default:!1},group:{type:String,default:""},checkedIcon:{type:String,default:"mdi-radiobox-marked"},notCheckedIcon:{type:String,default:"mdi-radiobox-blank"}},watch:{checked(e){if(e){const e=this.group,t=this.$el;let n;n=""===e?t.parentElement:e,de.get(n).forEach((e=>{let{instance:t,uncheck:n}=e;t!==this&&n()}))}}},mounted(){const e=this.group,t=this.$el;let n;n=me(""===e?t.parentElement:e),n(this,(()=>this.$emit("change",!1)))},methods:{emitChange(e){(this.checked&&this.allowUncheck||!this.checked)&&this.$emit("change",e)}}});const ue=(0,c.Z)(fe,le,[],!1,null,null,null).exports;var pe=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-range-input"},[t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.start.toString()},on:{change:function(t){e.wrapper.start=t}}}),e._v(" "),e._t("separator",(function(){return[t("div",{staticClass:"default-separator"},[e._v("~")])]})),e._v(" "),t("TextBox",{attrs:{"change-on-blur":"",text:e.wrapper.range.end.toString()},on:{change:function(t){e.wrapper.end=t}}})],2)};pe._withStripped=!0;const be=e=>({range:e.range,get start(){return this.range.start.toString()},set start(e){this.createNewRange(e,this.end)},get end(){return this.range.end.toString()},set end(e){this.createNewRange(this.start,e)},createNewRange(t,n){let o={start:t,end:n};e.validator&&(o=e.validator(o)),null!=o?(this.range=o,e.$emit("change",o)):this.range={start:this.range.start,end:this.range.end}}}),he=Vue.extend({name:"RangeInput",components:{TextBox:()=>Promise.resolve().then(n.bind(n,9856))},model:{prop:"range",event:"change"},props:{range:{type:Object,required:!0},validator:{type:Function,default:void 0}},data(){return{wrapper:be(this)}}});var ge=n(4773),Fe=n.n(ge),ve={insert:"head",singleton:!1};f()(Fe(),ve);Fe().locals;const we=(0,c.Z)(he,pe,[],!1,null,"b459c060",null).exports;var ye=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-scroll-trigger",on:{click:function(t){return e.trigger()}}},[e._t("default",(function(){return[t("VLoading")]}))],2)};ye._withStripped=!0;var xe=n(5145);const ke=Vue.extend({components:{VLoading:()=>Promise.resolve().then(n.bind(n,1570)).then((e=>e.default))},props:{detectViewport:{type:Boolean,required:!1,default:!1}},data:()=>({isFirstLoad:!0,isViewportTriggerRunning:!1,parentLoadState:"none"}),async mounted(){const e=(0,xe.useScopedConsole)("ScrollTrigger"),t=this.$el,{visible:o}=await Promise.resolve().then(n.bind(n,8737));o(t,(async n=>{if(n.some((e=>e.intersectionRatio>0))){if(e.log("Intersection Observer trigger"),this.trigger(),!this.detectViewport&&!this.isFirstLoad&&this.isViewportTriggerRunning)return;for(this.isViewportTriggerRunning=!0;this.getVisibleStateByViewport(t);)if(await(0,D.delay)(500),"loaded"===this.parentLoadState){if(!this.getVisibleStateByViewport(t))break;e.log("is first load & viewport trigger"),this.trigger()}this.isFirstLoad=!1}}))},methods:{getElementToViewportBottomDistance:e=>document.documentElement.clientHeight-e.getBoundingClientRect().top,getVisibleStateByViewport(e){return Boolean(this.getElementToViewportBottomDistance(e)>-20)},setLoadState(e){this.parentLoadState=e},resetIsFirstLoad(){this.isFirstLoad=!0},trigger(){this.$emit("trigger")}}});var Ce=n(9972),Ae=n.n(Ce),Ee={insert:"head",singleton:!1};f()(Ae(),Ee);Ae().locals;const Be=(0,c.Z)(ke,ye,[],!1,null,null,null).exports;var De=n(7481),Ie=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-tab-control"},[t("div",{staticClass:"default-header"},[e._t("tabs",(function(){return[t("div",{staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},attrs:{"data-count":n.count>0?n.count:null},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)]})),e._v(" "),t("div",{staticClass:"header-item"},[e._t("header-item")],2),e._v(" "),null!==e.moreLink&&void 0!==e.moreLink?t("a",{staticClass:"be-more-link",attrs:{href:"function"==typeof e.moreLink?e.moreLink(e.selectedTab):e.moreLink,target:"_blank"}},[t("VButton",{attrs:{disabled:!e.moreLink,round:""}},[e._t("more-link",(function(){return[e._v("\n 查看更多\n "),t("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})]}))],2)],1):e._e()],2),e._v(" "),e._t("content",(function(){return[t("div",{staticClass:"default-content"},[t("transition",{attrs:{name:"content-transition"}},[t(e.selectedTab.component,e._b({tag:"component"},"component",e.selectedTab.propsData,!1))],1)],1)]}))],2)};Ie._withStripped=!0;const ze=Vue.extend({name:"TabControl",components:{VButton:()=>Promise.resolve().then(n.bind(n,7784)).then((e=>e.default)),VIcon:()=>Promise.resolve().then(n.bind(n,2593)).then((e=>e.default))},model:{prop:"link",event:"change"},props:{tabs:{type:Array,required:!0,validator:e=>0!==e.length},defaultTab:{type:String,required:!1,default:""},link:{type:String,required:!1,default:null},moreLink:{type:[String,Function],default:null}},data(){const e=this.tabs;return{selectedTabName:e.find((e=>e.name===this.defaultTab))?.name??e[0].name}},computed:{selectedTab(){return this.tabs.find((e=>e.name===this.selectedTabName))}},mounted(){this.$emit("change",this.selectedTab.activeLink)},methods:{selectTab(e){this.selectedTabName!==e.name?(this.selectedTabName=e.name,e.count=0,this.$emit("change",this.selectedTab.activeLink)):e.activeLink&&window.open(e.activeLink,"_blank")}}});var Se=n(2069),Pe=n.n(Se),Me={insert:"head",singleton:!1};f()(Pe(),Me);Pe().locals;const Oe=(0,c.Z)(ze,Ie,[],!1,null,null,null).exports;var Ve=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-text-area",attrs:{role:"text"}},[t("textarea",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"textarea",e.$attrs,!1),e.restListeners))])};Ve._withStripped=!0;var Te=n(3225);const Le=Vue.extend({name:"TextArea",mixins:[Te.t]});var je=n(2187),Re=n.n(je),Ne={insert:"head",singleton:!1};f()(Re(),Ne);Re().locals;const qe=(0,c.Z)(Le,Ve,[],!1,null,null,null).exports;var Ze=n(9856),Ue=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{directives:[{name:"hit",rawName:"v-hit",value:e.hit,expression:"hit"}],staticClass:"be-dropdown",class:{disabled:e.disabled,round:e.round},attrs:{role:"combobox",tabindex:e.disabled?-1:0,"aria-disabled":e.disabled}},[t("div",{ref:"selected",staticClass:"selected"},[t("div",{staticClass:"selected-item"},[null!==e.value&&void 0!==e.value?e._t("item",(function(){return[e._v("\n "+e._s(e.value.displayName)+"\n ")]}),{item:e.value}):e._e()],2),e._v(" "),t("div",{staticClass:"arrow",class:{open:e.popupOpen}},[e._t("arrow",(function(){return[t("div",{staticClass:"default-arrow"},[t("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"}},[t("defs",[t("clipPath",{attrs:{id:"clip-arrow-down"}},[t("rect",{attrs:{width:"24",height:"24"}})])]),e._v(" "),t("g",{attrs:{id:"arrow-down","clip-path":"url(#clip-arrow-down)"}},[t("path",{attrs:{id:"Path_1","data-name":"Path 1",d:"M2,17,12,7,22,17",transform:"translate(24 25) rotate(180)","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"}})])])])]}))],2)]),e._v(" "),t("VPopup",{ref:"popup",staticClass:"dropdown-popup",attrs:{lazy:!1,"trigger-element":e.$refs.selected},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:e.selectItem(e.value)}},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(e.items,(function(n){return t("div",{directives:[{name:"hit",rawName:"v-hit",value:()=>e.selectItem(n),expression:"() => selectItem(item)"}],key:e.keyMapper(n),staticClass:"bex-dropdown-item",attrs:{tabindex:e.popupOpen?0:-1}},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)})),0)],1)};Ue._withStripped=!0;var He=n(1432);const We=Vue.extend({name:"VDropdown",components:{VPopup:He.default},model:{prop:"value",event:"change"},props:{value:{required:!0},items:{type:Array,required:!0},keyMapper:{type:Function,default:e=>e.name},round:{type:Boolean,default:!1}},data:()=>({popupOpen:!1}),computed:{disabled(){return Boolean(this.$attrs.disabled)}},watch:{disabled(e){e&&(this.popupOpen=!1)}},created(){null!==this.value&&void 0!==this.value||this.$emit("change",this.items[0]||"")},methods:{selectItem(e){e!==this.value&&this.$emit("change",e),this.popupOpen=!1,this.$el.focus()},hit(e){if(this.disabled)return;const t=this.$refs.popup.$el,n=e.target;t===n||t.contains(n)||(this.popupOpen=!this.popupOpen)}}});var Ge=n(8752),Qe=n.n(Ge),Ye={insert:"head",singleton:!1};f()(Qe(),Ye);Qe().locals;const Xe=(0,c.Z)(We,Ue,[],!1,null,"6b51ccd4",null).exports;var Ke=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-empty"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};Ke._withStripped=!0;var Je=n(779);const[_e]=(0,Je.registerAndGetData)("vEmpty",{content:"空空如也哦 = ̄ω ̄="}),$e=Vue.extend({name:"VEmpty",data:()=>({config:_e})});var et=n(8963),tt=n.n(et),nt={insert:"head",singleton:!1};f()(tt(),nt);tt().locals;const ot=(0,c.Z)($e,Ke,[],!1,null,null,null).exports;var it=n(1570),rt=n(91),at=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",e._g(e._b({staticClass:"default-widget"},"VButton",e.$attrs,!1),e.$listeners),[t("div",{staticClass:"widget-icon"},[e._t("icon",(function(){return[t("VIcon",{attrs:{type:e.iconType,icon:e.icon}})]}))],2),e._v(" "),t("div",{staticClass:"widget-name"},[e._t("default",(function(){return[e._v(e._s(e.name))]}))],2)])};at._withStripped=!0;const ct=Vue.extend({components:{VIcon:o.default,VButton:r.default},props:{name:{type:String,default:""},icon:{type:String,default:""},iconType:{type:String,default:""}}});var st=n(6261),lt=n.n(st),dt={insert:"head",singleton:!1};f()(lt(),dt);lt().locals;const mt=(0,c.Z)(ct,at,[],!1,null,"20e1bedd",null).exports;var ft=n(5468)},3012:(e,t,n)=>{"use strict";n.r(t),n.d(t,{initMdiStyle:()=>r});var o=n(1898),i=n.n(o);const r=()=>{const e=document.createElement("style");return e.id="be-mdi",e.innerHTML=i(),e}},3225:(e,t,n)=>{"use strict";n.d(t,{t:()=>o});const o=Vue.extend({model:{prop:"text",event:"change"},props:{text:{type:String,required:!1,default:""},changeOnBlur:{type:Boolean,required:!1,default:!1},validator:{type:Function,default:void 0}},data(){return{composing:!1,restListeners:lodash.omit(this.$listeners,"change","input","compositionstart","compositionend")}},methods:{emitChange(){let{value:e}=this.$refs.input;this.validator&&(e=this.validator(e,this.text),this.changeOnBlur&&(this.$refs.input.value=e)),e!==this.text&&this.$emit("change",e)},input(){this.changeOnBlur||this.composing||this.emitChange()},change(){this.changeOnBlur&&!this.composing&&this.emitChange()},compositionStart(){this.composing=!0},compositionEnd(){this.composing=!1,this.input()},focus(){this.$refs.input.focus()}}})},6411:(e,t,n)=>{"use strict";n.r(t),n.d(t,{compilationInfo:()=>f});var o=n(113);const i="the1812",r="cdn.jsdelivr.net",a={name:"jsDelivr",owner:i,host:r,stableClient:`https://${r}/gh/the1812/Bilibili-Evolved@master/dist/bilibili-evolved.user.js`,previewClient:`https://${r}/gh/the1812/Bilibili-Evolved@preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${r}/npm/lodash@4.17.21/lodash.min.js`,protobuf:`https://${r}/npm/protobufjs@6.10.1/dist/light/protobuf.min.js`,jszip:`https://${r}/npm/jszip@3.7.1/dist/jszip.min.js`,sortable:`https://${r}/npm/sortablejs@1.14.0/Sortable.min.js`,mdi:`https://${r}/gh/the1812/Bilibili-Evolved@master/docs/static/mdi/mdi.css`,streamsaver:`https://${r}/npm/streamsaver@2.0.6/StreamSaver.min.js`,ffmpeg:{worker:`https://${r}/npm/@ffmpeg/ffmpeg@0.12.4/dist/umd/814.ffmpeg.js`,core:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.js`,wasm:`https://${r}/npm/@ffmpeg/core@0.12.4/dist/umd/ffmpeg-core.wasm`}},smallLogo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo-small.png`,logo:`https://${r}/gh/the1812/Bilibili-Evolved@preview/images/logo.png`,root:(e,t)=>`https://${r}/gh/${t||i}/Bilibili-Evolved@${e}/`},c="the1812",s="raw.githubusercontent.com",l={name:"GitHub",owner:c,host:s,stableClient:`https://${s}/the1812/Bilibili-Evolved/master/dist/bilibili-evolved.user.js`,previewClient:`https://${s}/the1812/Bilibili-Evolved/preview/dist/bilibili-evolved.preview.user.js`,library:{lodash:`https://${s}/lodash/lodash/4.17.21/dist/lodash.min.js`,protobuf:`https://${s}/protobufjs/protobuf.js/v6.10.1/dist/light/protobuf.min.js`,jszip:`https://${s}/Stuk/jszip/v3.7.1/dist/jszip.min.js`,sortable:`https://${s}/SortableJS/Sortable/1.14.0/Sortable.min.js`,mdi:"https://the1812.github.io/Bilibili-Evolved/static/mdi/mdi.css",streamsaver:`https://${s}/jimmywarting/StreamSaver.js/2.0.6/StreamSaver.js`,ffmpeg:a.library.ffmpeg},smallLogo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo-small.png`,logo:`https://${s}/the1812/Bilibili-Evolved/preview/images/logo.png`,root:(e,t)=>`https://${s}/${t||c}/Bilibili-Evolved/${e}/`},d=l,m={github:l,jsDelivr:a},f={...{year:(new Date).getFullYear(),version:o.version,altCdn:d,allCdns:m},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",branch:"master",nearestTag:"v2.8.11",versionWithTag:"v2.8.11-36-g66ede2a74"}},4589:(e,t,n)=>{var o=n(3337),i={};for(var r in o)o.hasOwnProperty(r)&&(i[o[r]]=r);var a=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var c in a)if(a.hasOwnProperty(c)){if(!("channels"in a[c]))throw new Error("missing channels property: "+c);if(!("labels"in a[c]))throw new Error("missing channel labels property: "+c);if(a[c].labels.length!==a[c].channels)throw new Error("channel and label counts mismatch: "+c);var s=a[c].channels,l=a[c].labels;delete a[c].channels,delete a[c].labels,Object.defineProperty(a[c],"channels",{value:s}),Object.defineProperty(a[c],"labels",{value:l})}a.rgb.hsl=function(e){var t,n,o=e[0]/255,i=e[1]/255,r=e[2]/255,a=Math.min(o,i,r),c=Math.max(o,i,r),s=c-a;return c===a?t=0:o===c?t=(i-r)/s:i===c?t=2+(r-o)/s:r===c&&(t=4+(o-i)/s),(t=Math.min(60*t,360))<0&&(t+=360),n=(a+c)/2,[t,100*(c===a?0:n<=.5?s/(c+a):s/(2-c-a)),100*n]},a.rgb.hsv=function(e){var t,n,o,i,r,a=e[0]/255,c=e[1]/255,s=e[2]/255,l=Math.max(a,c,s),d=l-Math.min(a,c,s),m=function(e){return(l-e)/6/d+.5};return 0===d?i=r=0:(r=d/l,t=m(a),n=m(c),o=m(s),a===l?i=o-n:c===l?i=1/3+t-o:s===l&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*r,100*l]},a.rgb.hwb=function(e){var t=e[0],n=e[1],o=e[2];return[a.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(n,o))),100*(o=1-1/255*Math.max(t,Math.max(n,o)))]},a.rgb.cmyk=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-o,1-i)))/(1-t)||0),100*((1-o-t)/(1-t)||0),100*((1-i-t)/(1-t)||0),100*t]},a.rgb.keyword=function(e){var t=i[e];if(t)return t;var n,r,a,c=1/0;for(var s in o)if(o.hasOwnProperty(s)){var l=o[s],d=(r=e,a=l,Math.pow(r[0]-a[0],2)+Math.pow(r[1]-a[1],2)+Math.pow(r[2]-a[2],2));d.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(o=o>.04045?Math.pow((o+.055)/1.055,2.4):o/12.92)),100*(.2126*t+.7152*n+.0722*o),100*(.0193*t+.1192*n+.9505*o)]},a.rgb.lab=function(e){var t=a.rgb.xyz(e),n=t[0],o=t[1],i=t[2];return o/=100,i/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116)-16,500*(n-o),200*(o-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.hsl.rgb=function(e){var t,n,o,i,r,a=e[0]/360,c=e[1]/100,s=e[2]/100;if(0===c)return[r=255*s,r,r];t=2*s-(n=s<.5?s*(1+c):s+c-s*c),i=[0,0,0];for(var l=0;l<3;l++)(o=a+1/3*-(l-1))<0&&o++,o>1&&o--,r=6*o<1?t+6*(n-t)*o:2*o<1?n:3*o<2?t+(n-t)*(2/3-o)*6:t,i[l]=255*r;return i},a.hsl.hsv=function(e){var t=e[0],n=e[1]/100,o=e[2]/100,i=n,r=Math.max(o,.01);return n*=(o*=2)<=1?o:2-o,i*=r<=1?r:2-r,[t,100*(0===o?2*i/(r+i):2*n/(o+n)),100*((o+n)/2)]},a.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,o=e[2]/100,i=Math.floor(t)%6,r=t-Math.floor(t),a=255*o*(1-n),c=255*o*(1-n*r),s=255*o*(1-n*(1-r));switch(o*=255,i){case 0:return[o,s,a];case 1:return[c,o,a];case 2:return[a,o,s];case 3:return[a,c,o];case 4:return[s,a,o];case 5:return[o,a,c]}},a.hsv.hsl=function(e){var t,n,o,i=e[0],r=e[1]/100,a=e[2]/100,c=Math.max(a,.01);return o=(2-r)*a,n=r*c,[i,100*(n=(n/=(t=(2-r)*c)<=1?t:2-t)||0),100*(o/=2)]},a.hwb.rgb=function(e){var t,n,o,i,r,a,c,s=e[0]/360,l=e[1]/100,d=e[2]/100,m=l+d;switch(m>1&&(l/=m,d/=m),o=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(o=1-o),i=l+o*((n=1-d)-l),t){default:case 6:case 0:r=n,a=i,c=l;break;case 1:r=i,a=n,c=l;break;case 2:r=l,a=n,c=i;break;case 3:r=l,a=i,c=n;break;case 4:r=i,a=l,c=n;break;case 5:r=n,a=l,c=i}return[255*r,255*a,255*c]},a.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,o=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,o*(1-i)+i))]},a.xyz.rgb=function(e){var t,n,o,i=e[0]/100,r=e[1]/100,a=e[2]/100;return n=-.9689*i+1.8758*r+.0415*a,o=.0557*i+-.204*r+1.057*a,t=(t=3.2406*i+-1.5372*r+-.4986*a)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(o=Math.min(Math.max(0,o),1))]},a.xyz.lab=function(e){var t=e[0],n=e[1],o=e[2];return n/=100,o/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},a.lab.xyz=function(e){var t,n,o,i=e[0];t=e[1]/500+(n=(i+16)/116),o=n-e[2]/200;var r=Math.pow(n,3),a=Math.pow(t,3),c=Math.pow(o,3);return n=r>.008856?r:(n-16/116)/7.787,t=a>.008856?a:(t-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,[t*=95.047,n*=100,o*=108.883]},a.lab.lch=function(e){var t,n=e[0],o=e[1],i=e[2];return(t=360*Math.atan2(i,o)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(o*o+i*i),t]},a.lch.lab=function(e){var t,n=e[0],o=e[1];return t=e[2]/360*2*Math.PI,[n,o*Math.cos(t),o*Math.sin(t)]},a.rgb.ansi16=function(e){var t=e[0],n=e[1],o=e[2],i=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];if(0===(i=Math.round(i/50)))return 30;var r=30+(Math.round(o/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===i&&(r+=60),r},a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])},a.rgb.ansi256=function(e){var t=e[0],n=e[1],o=e[2];return t===n&&n===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},a.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},a.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},a.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var o=parseInt(n,16);return[o>>16&255,o>>8&255,255&o]},a.rgb.hcg=function(e){var t,n=e[0]/255,o=e[1]/255,i=e[2]/255,r=Math.max(Math.max(n,o),i),a=Math.min(Math.min(n,o),i),c=r-a;return t=c<=0?0:r===n?(o-i)/c%6:r===o?2+(i-n)/c:4+(n-o)/c+4,t/=6,[360*(t%=1),100*c,100*(c<1?a/(1-c):0)]},a.hsl.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=1,i=0;return(o=n<.5?2*t*n:2*t*(1-n))<1&&(i=(n-.5*o)/(1-o)),[e[0],100*o,100*i]},a.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,o=t*n,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,o=e[2]/100;if(0===n)return[255*o,255*o,255*o];var i,r=[0,0,0],a=t%1*6,c=a%1,s=1-c;switch(Math.floor(a)){case 0:r[0]=1,r[1]=c,r[2]=0;break;case 1:r[0]=s,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=c;break;case 3:r[0]=0,r[1]=s,r[2]=1;break;case 4:r[0]=c,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=s}return i=(1-n)*o,[255*(n*r[0]+i),255*(n*r[1]+i),255*(n*r[2]+i)]},a.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),o=0;return n>0&&(o=t/n),[e[0],100*o,100*n]},a.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,o=0;return n>0&&n<.5?o=t/(2*n):n>=.5&&n<1&&(o=t/(2*(1-n))),[e[0],100*o,100*n]},a.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},a.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,o=n-t,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],100*o,100*i]},a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]},a.gray.hwb=function(e){return[0,100,e[0]]},a.gray.cmyk=function(e){return[0,0,0,e[0]]},a.gray.lab=function(e){return[e[0],0,0]},a.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},8358:(e,t,n)=>{var o=n(4589),i=n(3314),r={};Object.keys(o).forEach((function(e){r[e]={},Object.defineProperty(r[e],"channels",{value:o[e].channels}),Object.defineProperty(r[e],"labels",{value:o[e].labels});var t=i(e);Object.keys(t).forEach((function(n){var o=t[n];r[e][n]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var o=n.length,i=0;i1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(o)}))})),e.exports=r},3314:(e,t,n)=>{var o=n(4589);function i(e){var t=function(){for(var e={},t=Object.keys(o),n=t.length,i=0;i{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},9419:e=>{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},2489:(e,t,n)=>{var o=n(9419),i=n(7933),r=Object.hasOwnProperty,a=Object.create(null);for(var c in o)r.call(o,c)&&(a[o[c]]=c);var s=e.exports={to:{},get:{}};function l(e,t,n){return Math.min(Math.max(t,e),n)}function d(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}s.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=s.get.hsl(e),n="hsl";break;case"hwb":t=s.get.hwb(e),n="hwb";break;default:t=s.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},s.get.rgb=function(e){if(!e)return null;var t,n,i,a=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(i=t[2],t=t[1],n=0;n<3;n++){var c=2*n;a[n]=parseInt(t.slice(c,c+2),16)}i&&(a[3]=parseInt(i,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(i=(t=t[1])[3],n=0;n<3;n++)a[n]=parseInt(t[n]+t[n],16);i&&(a[3]=parseInt(i+i,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)a[n]=parseInt(t[n+1],0);t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:r.call(o,t[1])?((a=o[t[1]])[3]=1,a):null:null;for(n=0;n<3;n++)a[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?a[3]=.01*parseFloat(t[4]):a[3]=parseFloat(t[4]))}for(n=0;n<3;n++)a[n]=l(a[n],0,255);return a[3]=l(a[3],0,1),a},s.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},s.to.hex=function(){var e=i(arguments);return"#"+d(e[0])+d(e[1])+d(e[2])+(e[3]<1?d(Math.round(255*e[3])):"")},s.to.rgb=function(){var e=i(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},s.to.rgb.percent=function(){var e=i(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),o=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+n+"%, "+o+"%)":"rgba("+t+"%, "+n+"%, "+o+"%, "+e[3]+")"},s.to.hsl=function(){var e=i(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},s.to.hwb=function(){var e=i(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},s.to.keyword=function(e){return a[e.slice(0,3)]}},4654:(e,t,n)=>{"use strict";var o=n(2489),i=n(8358),r=[].slice,a=["keyword","gray","hex"],c={};Object.keys(i).forEach((function(e){c[r.call(i[e].labels).sort().join("")]=e}));var s={};function l(e,t){if(!(this instanceof l))return new l(e,t);if(t&&t in a&&(t=null),t&&!(t in i))throw new Error("Unknown model: "+t);var n,d;if(null==e)// eslint-disable-line no-eq-null,eqeqeq this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof l)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var m=o.get(e);if(null===m)throw new Error("Unable to parse color from string: "+e);this.model=m.model,d=i[this.model].channels,this.color=m.value.slice(0,d),this.valpha="number"==typeof m.value[d]?m.value[d]:1}else if(e.length){this.model=t||"rgb",d=i[this.model].channels;var f=r.call(e,0,d);this.color=u(f,d),this.valpha="number"==typeof e[d]?e[d]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var p=Object.keys(e);"alpha"in e&&(p.splice(p.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var b=p.sort().join("");if(!(b in c))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=c[b];var h=i[this.model].labels,g=[];for(n=0;nn?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return l.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var n=e.rgb(),o=this.rgb(),i=void 0===t?.5:t,r=2*i-1,a=n.alpha()-o.alpha(),c=((r*a==-1?r:(r+a)/(1+r*a))+1)/2,s=1-c;return l.rgb(c*n.red()+s*o.red(),c*n.green()+s*o.green(),c*n.blue()+s*o.blue(),n.alpha()*i+o.alpha()*(1-i))}},Object.keys(i).forEach((function(e){if(-1===a.indexOf(e)){var t=i[e].channels;l.prototype[e]=function(){if(this.model===e)return new l(this);if(arguments.length)return new l(arguments,e);var n="number"==typeof arguments[t]?t:this.valpha;return new l(f(i[this.model][e].raw(this.color)).concat(n),e)},l[e]=function(n){return"number"==typeof n&&(n=u(r.call(arguments),t)),new l(n,e)}}})),e.exports=l},1489:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}',""]),e.exports=o},9145:(e,t,n)=>{var o=n(8218),i=n(3014),r=n(8195),a=o((function(e){return e[1]})),c=i(r);a.push([e.id,'@font-face{font-family:"Material Design Icons";src:url('+c+');font-weight:normal;font-style:normal}.mdi:before,.mdi-set{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-ab-testing::before{content:"\\F01C9"}.mdi-abjad-arabic::before{content:"\\F1328"}.mdi-abjad-hebrew::before{content:"\\F1329"}.mdi-abugida-devanagari::before{content:"\\F132A"}.mdi-abugida-thai::before{content:"\\F132B"}.mdi-access-point::before{content:"\\F0003"}.mdi-access-point-network::before{content:"\\F0002"}.mdi-access-point-network-off::before{content:"\\F0BE1"}.mdi-account::before{content:"\\F0004"}.mdi-account-alert::before{content:"\\F0005"}.mdi-account-alert-outline::before{content:"\\F0B50"}.mdi-account-arrow-left::before{content:"\\F0B51"}.mdi-account-arrow-left-outline::before{content:"\\F0B52"}.mdi-account-arrow-right::before{content:"\\F0B53"}.mdi-account-arrow-right-outline::before{content:"\\F0B54"}.mdi-account-box::before{content:"\\F0006"}.mdi-account-box-multiple::before{content:"\\F0934"}.mdi-account-box-multiple-outline::before{content:"\\F100A"}.mdi-account-box-outline::before{content:"\\F0007"}.mdi-account-cancel::before{content:"\\F12DF"}.mdi-account-cancel-outline::before{content:"\\F12E0"}.mdi-account-cash::before{content:"\\F1097"}.mdi-account-cash-outline::before{content:"\\F1098"}.mdi-account-check::before{content:"\\F0008"}.mdi-account-check-outline::before{content:"\\F0BE2"}.mdi-account-child::before{content:"\\F0A89"}.mdi-account-child-circle::before{content:"\\F0A8A"}.mdi-account-child-outline::before{content:"\\F10C8"}.mdi-account-circle::before{content:"\\F0009"}.mdi-account-circle-outline::before{content:"\\F0B55"}.mdi-account-clock::before{content:"\\F0B56"}.mdi-account-clock-outline::before{content:"\\F0B57"}.mdi-account-cog::before{content:"\\F1370"}.mdi-account-cog-outline::before{content:"\\F1371"}.mdi-account-convert::before{content:"\\F000A"}.mdi-account-convert-outline::before{content:"\\F1301"}.mdi-account-cowboy-hat::before{content:"\\F0E9B"}.mdi-account-details::before{content:"\\F0631"}.mdi-account-details-outline::before{content:"\\F1372"}.mdi-account-edit::before{content:"\\F06BC"}.mdi-account-edit-outline::before{content:"\\F0FFB"}.mdi-account-group::before{content:"\\F0849"}.mdi-account-group-outline::before{content:"\\F0B58"}.mdi-account-hard-hat::before{content:"\\F05B5"}.mdi-account-heart::before{content:"\\F0899"}.mdi-account-heart-outline::before{content:"\\F0BE3"}.mdi-account-key::before{content:"\\F000B"}.mdi-account-key-outline::before{content:"\\F0BE4"}.mdi-account-lock::before{content:"\\F115E"}.mdi-account-lock-outline::before{content:"\\F115F"}.mdi-account-minus::before{content:"\\F000D"}.mdi-account-minus-outline::before{content:"\\F0AEC"}.mdi-account-multiple::before{content:"\\F000E"}.mdi-account-multiple-check::before{content:"\\F08C5"}.mdi-account-multiple-check-outline::before{content:"\\F11FE"}.mdi-account-multiple-minus::before{content:"\\F05D3"}.mdi-account-multiple-minus-outline::before{content:"\\F0BE5"}.mdi-account-multiple-outline::before{content:"\\F000F"}.mdi-account-multiple-plus::before{content:"\\F0010"}.mdi-account-multiple-plus-outline::before{content:"\\F0800"}.mdi-account-multiple-remove::before{content:"\\F120A"}.mdi-account-multiple-remove-outline::before{content:"\\F120B"}.mdi-account-music::before{content:"\\F0803"}.mdi-account-music-outline::before{content:"\\F0CE9"}.mdi-account-network::before{content:"\\F0011"}.mdi-account-network-outline::before{content:"\\F0BE6"}.mdi-account-off::before{content:"\\F0012"}.mdi-account-off-outline::before{content:"\\F0BE7"}.mdi-account-outline::before{content:"\\F0013"}.mdi-account-plus::before{content:"\\F0014"}.mdi-account-plus-outline::before{content:"\\F0801"}.mdi-account-question::before{content:"\\F0B59"}.mdi-account-question-outline::before{content:"\\F0B5A"}.mdi-account-remove::before{content:"\\F0015"}.mdi-account-remove-outline::before{content:"\\F0AED"}.mdi-account-search::before{content:"\\F0016"}.mdi-account-search-outline::before{content:"\\F0935"}.mdi-account-settings::before{content:"\\F0630"}.mdi-account-settings-outline::before{content:"\\F10C9"}.mdi-account-star::before{content:"\\F0017"}.mdi-account-star-outline::before{content:"\\F0BE8"}.mdi-account-supervisor::before{content:"\\F0A8B"}.mdi-account-supervisor-circle::before{content:"\\F0A8C"}.mdi-account-supervisor-outline::before{content:"\\F112D"}.mdi-account-switch::before{content:"\\F0019"}.mdi-account-switch-outline::before{content:"\\F04CB"}.mdi-account-tie::before{content:"\\F0CE3"}.mdi-account-tie-outline::before{content:"\\F10CA"}.mdi-account-tie-voice::before{content:"\\F1308"}.mdi-account-tie-voice-off::before{content:"\\F130A"}.mdi-account-tie-voice-off-outline::before{content:"\\F130B"}.mdi-account-tie-voice-outline::before{content:"\\F1309"}.mdi-account-voice::before{content:"\\F05CB"}.mdi-adjust::before{content:"\\F001A"}.mdi-adobe::before{content:"\\F0936"}.mdi-adobe-acrobat::before{content:"\\F0F9D"}.mdi-air-conditioner::before{content:"\\F001B"}.mdi-air-filter::before{content:"\\F0D43"}.mdi-air-horn::before{content:"\\F0DAC"}.mdi-air-humidifier::before{content:"\\F1099"}.mdi-air-humidifier-off::before{content:"\\F1466"}.mdi-air-purifier::before{content:"\\F0D44"}.mdi-airbag::before{content:"\\F0BE9"}.mdi-airballoon::before{content:"\\F001C"}.mdi-airballoon-outline::before{content:"\\F100B"}.mdi-airplane::before{content:"\\F001D"}.mdi-airplane-landing::before{content:"\\F05D4"}.mdi-airplane-off::before{content:"\\F001E"}.mdi-airplane-takeoff::before{content:"\\F05D5"}.mdi-airport::before{content:"\\F084B"}.mdi-alarm::before{content:"\\F0020"}.mdi-alarm-bell::before{content:"\\F078E"}.mdi-alarm-check::before{content:"\\F0021"}.mdi-alarm-light::before{content:"\\F078F"}.mdi-alarm-light-outline::before{content:"\\F0BEA"}.mdi-alarm-multiple::before{content:"\\F0022"}.mdi-alarm-note::before{content:"\\F0E71"}.mdi-alarm-note-off::before{content:"\\F0E72"}.mdi-alarm-off::before{content:"\\F0023"}.mdi-alarm-plus::before{content:"\\F0024"}.mdi-alarm-snooze::before{content:"\\F068E"}.mdi-album::before{content:"\\F0025"}.mdi-alert::before{content:"\\F0026"}.mdi-alert-box::before{content:"\\F0027"}.mdi-alert-box-outline::before{content:"\\F0CE4"}.mdi-alert-circle::before{content:"\\F0028"}.mdi-alert-circle-check::before{content:"\\F11ED"}.mdi-alert-circle-check-outline::before{content:"\\F11EE"}.mdi-alert-circle-outline::before{content:"\\F05D6"}.mdi-alert-decagram::before{content:"\\F06BD"}.mdi-alert-decagram-outline::before{content:"\\F0CE5"}.mdi-alert-minus::before{content:"\\F14BB"}.mdi-alert-minus-outline::before{content:"\\F14BE"}.mdi-alert-octagon::before{content:"\\F0029"}.mdi-alert-octagon-outline::before{content:"\\F0CE6"}.mdi-alert-octagram::before{content:"\\F0767"}.mdi-alert-octagram-outline::before{content:"\\F0CE7"}.mdi-alert-outline::before{content:"\\F002A"}.mdi-alert-plus::before{content:"\\F14BA"}.mdi-alert-plus-outline::before{content:"\\F14BD"}.mdi-alert-remove::before{content:"\\F14BC"}.mdi-alert-remove-outline::before{content:"\\F14BF"}.mdi-alert-rhombus::before{content:"\\F11CE"}.mdi-alert-rhombus-outline::before{content:"\\F11CF"}.mdi-alien::before{content:"\\F089A"}.mdi-alien-outline::before{content:"\\F10CB"}.mdi-align-horizontal-center::before{content:"\\F11C3"}.mdi-align-horizontal-left::before{content:"\\F11C2"}.mdi-align-horizontal-right::before{content:"\\F11C4"}.mdi-align-vertical-bottom::before{content:"\\F11C5"}.mdi-align-vertical-center::before{content:"\\F11C6"}.mdi-align-vertical-top::before{content:"\\F11C7"}.mdi-all-inclusive::before{content:"\\F06BE"}.mdi-allergy::before{content:"\\F1258"}.mdi-alpha::before{content:"\\F002B"}.mdi-alpha-a::before{content:"\\F0AEE"}.mdi-alpha-a-box::before{content:"\\F0B08"}.mdi-alpha-a-box-outline::before{content:"\\F0BEB"}.mdi-alpha-a-circle::before{content:"\\F0BEC"}.mdi-alpha-a-circle-outline::before{content:"\\F0BED"}.mdi-alpha-b::before{content:"\\F0AEF"}.mdi-alpha-b-box::before{content:"\\F0B09"}.mdi-alpha-b-box-outline::before{content:"\\F0BEE"}.mdi-alpha-b-circle::before{content:"\\F0BEF"}.mdi-alpha-b-circle-outline::before{content:"\\F0BF0"}.mdi-alpha-c::before{content:"\\F0AF0"}.mdi-alpha-c-box::before{content:"\\F0B0A"}.mdi-alpha-c-box-outline::before{content:"\\F0BF1"}.mdi-alpha-c-circle::before{content:"\\F0BF2"}.mdi-alpha-c-circle-outline::before{content:"\\F0BF3"}.mdi-alpha-d::before{content:"\\F0AF1"}.mdi-alpha-d-box::before{content:"\\F0B0B"}.mdi-alpha-d-box-outline::before{content:"\\F0BF4"}.mdi-alpha-d-circle::before{content:"\\F0BF5"}.mdi-alpha-d-circle-outline::before{content:"\\F0BF6"}.mdi-alpha-e::before{content:"\\F0AF2"}.mdi-alpha-e-box::before{content:"\\F0B0C"}.mdi-alpha-e-box-outline::before{content:"\\F0BF7"}.mdi-alpha-e-circle::before{content:"\\F0BF8"}.mdi-alpha-e-circle-outline::before{content:"\\F0BF9"}.mdi-alpha-f::before{content:"\\F0AF3"}.mdi-alpha-f-box::before{content:"\\F0B0D"}.mdi-alpha-f-box-outline::before{content:"\\F0BFA"}.mdi-alpha-f-circle::before{content:"\\F0BFB"}.mdi-alpha-f-circle-outline::before{content:"\\F0BFC"}.mdi-alpha-g::before{content:"\\F0AF4"}.mdi-alpha-g-box::before{content:"\\F0B0E"}.mdi-alpha-g-box-outline::before{content:"\\F0BFD"}.mdi-alpha-g-circle::before{content:"\\F0BFE"}.mdi-alpha-g-circle-outline::before{content:"\\F0BFF"}.mdi-alpha-h::before{content:"\\F0AF5"}.mdi-alpha-h-box::before{content:"\\F0B0F"}.mdi-alpha-h-box-outline::before{content:"\\F0C00"}.mdi-alpha-h-circle::before{content:"\\F0C01"}.mdi-alpha-h-circle-outline::before{content:"\\F0C02"}.mdi-alpha-i::before{content:"\\F0AF6"}.mdi-alpha-i-box::before{content:"\\F0B10"}.mdi-alpha-i-box-outline::before{content:"\\F0C03"}.mdi-alpha-i-circle::before{content:"\\F0C04"}.mdi-alpha-i-circle-outline::before{content:"\\F0C05"}.mdi-alpha-j::before{content:"\\F0AF7"}.mdi-alpha-j-box::before{content:"\\F0B11"}.mdi-alpha-j-box-outline::before{content:"\\F0C06"}.mdi-alpha-j-circle::before{content:"\\F0C07"}.mdi-alpha-j-circle-outline::before{content:"\\F0C08"}.mdi-alpha-k::before{content:"\\F0AF8"}.mdi-alpha-k-box::before{content:"\\F0B12"}.mdi-alpha-k-box-outline::before{content:"\\F0C09"}.mdi-alpha-k-circle::before{content:"\\F0C0A"}.mdi-alpha-k-circle-outline::before{content:"\\F0C0B"}.mdi-alpha-l::before{content:"\\F0AF9"}.mdi-alpha-l-box::before{content:"\\F0B13"}.mdi-alpha-l-box-outline::before{content:"\\F0C0C"}.mdi-alpha-l-circle::before{content:"\\F0C0D"}.mdi-alpha-l-circle-outline::before{content:"\\F0C0E"}.mdi-alpha-m::before{content:"\\F0AFA"}.mdi-alpha-m-box::before{content:"\\F0B14"}.mdi-alpha-m-box-outline::before{content:"\\F0C0F"}.mdi-alpha-m-circle::before{content:"\\F0C10"}.mdi-alpha-m-circle-outline::before{content:"\\F0C11"}.mdi-alpha-n::before{content:"\\F0AFB"}.mdi-alpha-n-box::before{content:"\\F0B15"}.mdi-alpha-n-box-outline::before{content:"\\F0C12"}.mdi-alpha-n-circle::before{content:"\\F0C13"}.mdi-alpha-n-circle-outline::before{content:"\\F0C14"}.mdi-alpha-o::before{content:"\\F0AFC"}.mdi-alpha-o-box::before{content:"\\F0B16"}.mdi-alpha-o-box-outline::before{content:"\\F0C15"}.mdi-alpha-o-circle::before{content:"\\F0C16"}.mdi-alpha-o-circle-outline::before{content:"\\F0C17"}.mdi-alpha-p::before{content:"\\F0AFD"}.mdi-alpha-p-box::before{content:"\\F0B17"}.mdi-alpha-p-box-outline::before{content:"\\F0C18"}.mdi-alpha-p-circle::before{content:"\\F0C19"}.mdi-alpha-p-circle-outline::before{content:"\\F0C1A"}.mdi-alpha-q::before{content:"\\F0AFE"}.mdi-alpha-q-box::before{content:"\\F0B18"}.mdi-alpha-q-box-outline::before{content:"\\F0C1B"}.mdi-alpha-q-circle::before{content:"\\F0C1C"}.mdi-alpha-q-circle-outline::before{content:"\\F0C1D"}.mdi-alpha-r::before{content:"\\F0AFF"}.mdi-alpha-r-box::before{content:"\\F0B19"}.mdi-alpha-r-box-outline::before{content:"\\F0C1E"}.mdi-alpha-r-circle::before{content:"\\F0C1F"}.mdi-alpha-r-circle-outline::before{content:"\\F0C20"}.mdi-alpha-s::before{content:"\\F0B00"}.mdi-alpha-s-box::before{content:"\\F0B1A"}.mdi-alpha-s-box-outline::before{content:"\\F0C21"}.mdi-alpha-s-circle::before{content:"\\F0C22"}.mdi-alpha-s-circle-outline::before{content:"\\F0C23"}.mdi-alpha-t::before{content:"\\F0B01"}.mdi-alpha-t-box::before{content:"\\F0B1B"}.mdi-alpha-t-box-outline::before{content:"\\F0C24"}.mdi-alpha-t-circle::before{content:"\\F0C25"}.mdi-alpha-t-circle-outline::before{content:"\\F0C26"}.mdi-alpha-u::before{content:"\\F0B02"}.mdi-alpha-u-box::before{content:"\\F0B1C"}.mdi-alpha-u-box-outline::before{content:"\\F0C27"}.mdi-alpha-u-circle::before{content:"\\F0C28"}.mdi-alpha-u-circle-outline::before{content:"\\F0C29"}.mdi-alpha-v::before{content:"\\F0B03"}.mdi-alpha-v-box::before{content:"\\F0B1D"}.mdi-alpha-v-box-outline::before{content:"\\F0C2A"}.mdi-alpha-v-circle::before{content:"\\F0C2B"}.mdi-alpha-v-circle-outline::before{content:"\\F0C2C"}.mdi-alpha-w::before{content:"\\F0B04"}.mdi-alpha-w-box::before{content:"\\F0B1E"}.mdi-alpha-w-box-outline::before{content:"\\F0C2D"}.mdi-alpha-w-circle::before{content:"\\F0C2E"}.mdi-alpha-w-circle-outline::before{content:"\\F0C2F"}.mdi-alpha-x::before{content:"\\F0B05"}.mdi-alpha-x-box::before{content:"\\F0B1F"}.mdi-alpha-x-box-outline::before{content:"\\F0C30"}.mdi-alpha-x-circle::before{content:"\\F0C31"}.mdi-alpha-x-circle-outline::before{content:"\\F0C32"}.mdi-alpha-y::before{content:"\\F0B06"}.mdi-alpha-y-box::before{content:"\\F0B20"}.mdi-alpha-y-box-outline::before{content:"\\F0C33"}.mdi-alpha-y-circle::before{content:"\\F0C34"}.mdi-alpha-y-circle-outline::before{content:"\\F0C35"}.mdi-alpha-z::before{content:"\\F0B07"}.mdi-alpha-z-box::before{content:"\\F0B21"}.mdi-alpha-z-box-outline::before{content:"\\F0C36"}.mdi-alpha-z-circle::before{content:"\\F0C37"}.mdi-alpha-z-circle-outline::before{content:"\\F0C38"}.mdi-alphabet-aurebesh::before{content:"\\F132C"}.mdi-alphabet-cyrillic::before{content:"\\F132D"}.mdi-alphabet-greek::before{content:"\\F132E"}.mdi-alphabet-latin::before{content:"\\F132F"}.mdi-alphabet-piqad::before{content:"\\F1330"}.mdi-alphabet-tengwar::before{content:"\\F1337"}.mdi-alphabetical::before{content:"\\F002C"}.mdi-alphabetical-off::before{content:"\\F100C"}.mdi-alphabetical-variant::before{content:"\\F100D"}.mdi-alphabetical-variant-off::before{content:"\\F100E"}.mdi-altimeter::before{content:"\\F05D7"}.mdi-amazon::before{content:"\\F002D"}.mdi-amazon-alexa::before{content:"\\F08C6"}.mdi-ambulance::before{content:"\\F002F"}.mdi-ammunition::before{content:"\\F0CE8"}.mdi-ampersand::before{content:"\\F0A8D"}.mdi-amplifier::before{content:"\\F0030"}.mdi-amplifier-off::before{content:"\\F11B5"}.mdi-anchor::before{content:"\\F0031"}.mdi-android::before{content:"\\F0032"}.mdi-android-auto::before{content:"\\F0A8E"}.mdi-android-debug-bridge::before{content:"\\F0033"}.mdi-android-messages::before{content:"\\F0D45"}.mdi-android-studio::before{content:"\\F0034"}.mdi-angle-acute::before{content:"\\F0937"}.mdi-angle-obtuse::before{content:"\\F0938"}.mdi-angle-right::before{content:"\\F0939"}.mdi-angular::before{content:"\\F06B2"}.mdi-angularjs::before{content:"\\F06BF"}.mdi-animation::before{content:"\\F05D8"}.mdi-animation-outline::before{content:"\\F0A8F"}.mdi-animation-play::before{content:"\\F093A"}.mdi-animation-play-outline::before{content:"\\F0A90"}.mdi-ansible::before{content:"\\F109A"}.mdi-antenna::before{content:"\\F1119"}.mdi-anvil::before{content:"\\F089B"}.mdi-apache-kafka::before{content:"\\F100F"}.mdi-api::before{content:"\\F109B"}.mdi-api-off::before{content:"\\F1257"}.mdi-apple::before{content:"\\F0035"}.mdi-apple-airplay::before{content:"\\F001F"}.mdi-apple-finder::before{content:"\\F0036"}.mdi-apple-icloud::before{content:"\\F0038"}.mdi-apple-ios::before{content:"\\F0037"}.mdi-apple-keyboard-caps::before{content:"\\F0632"}.mdi-apple-keyboard-command::before{content:"\\F0633"}.mdi-apple-keyboard-control::before{content:"\\F0634"}.mdi-apple-keyboard-option::before{content:"\\F0635"}.mdi-apple-keyboard-shift::before{content:"\\F0636"}.mdi-apple-safari::before{content:"\\F0039"}.mdi-application::before{content:"\\F0614"}.mdi-application-export::before{content:"\\F0DAD"}.mdi-application-import::before{content:"\\F0DAE"}.mdi-approximately-equal::before{content:"\\F0F9E"}.mdi-approximately-equal-box::before{content:"\\F0F9F"}.mdi-apps::before{content:"\\F003B"}.mdi-apps-box::before{content:"\\F0D46"}.mdi-arch::before{content:"\\F08C7"}.mdi-archive::before{content:"\\F003C"}.mdi-archive-arrow-down::before{content:"\\F1259"}.mdi-archive-arrow-down-outline::before{content:"\\F125A"}.mdi-archive-arrow-up::before{content:"\\F125B"}.mdi-archive-arrow-up-outline::before{content:"\\F125C"}.mdi-archive-outline::before{content:"\\F120E"}.mdi-arm-flex::before{content:"\\F0FD7"}.mdi-arm-flex-outline::before{content:"\\F0FD6"}.mdi-arrange-bring-forward::before{content:"\\F003D"}.mdi-arrange-bring-to-front::before{content:"\\F003E"}.mdi-arrange-send-backward::before{content:"\\F003F"}.mdi-arrange-send-to-back::before{content:"\\F0040"}.mdi-arrow-all::before{content:"\\F0041"}.mdi-arrow-bottom-left::before{content:"\\F0042"}.mdi-arrow-bottom-left-bold-outline::before{content:"\\F09B7"}.mdi-arrow-bottom-left-thick::before{content:"\\F09B8"}.mdi-arrow-bottom-right::before{content:"\\F0043"}.mdi-arrow-bottom-right-bold-outline::before{content:"\\F09B9"}.mdi-arrow-bottom-right-thick::before{content:"\\F09BA"}.mdi-arrow-collapse::before{content:"\\F0615"}.mdi-arrow-collapse-all::before{content:"\\F0044"}.mdi-arrow-collapse-down::before{content:"\\F0792"}.mdi-arrow-collapse-horizontal::before{content:"\\F084C"}.mdi-arrow-collapse-left::before{content:"\\F0793"}.mdi-arrow-collapse-right::before{content:"\\F0794"}.mdi-arrow-collapse-up::before{content:"\\F0795"}.mdi-arrow-collapse-vertical::before{content:"\\F084D"}.mdi-arrow-decision::before{content:"\\F09BB"}.mdi-arrow-decision-auto::before{content:"\\F09BC"}.mdi-arrow-decision-auto-outline::before{content:"\\F09BD"}.mdi-arrow-decision-outline::before{content:"\\F09BE"}.mdi-arrow-down::before{content:"\\F0045"}.mdi-arrow-down-bold::before{content:"\\F072E"}.mdi-arrow-down-bold-box::before{content:"\\F072F"}.mdi-arrow-down-bold-box-outline::before{content:"\\F0730"}.mdi-arrow-down-bold-circle::before{content:"\\F0047"}.mdi-arrow-down-bold-circle-outline::before{content:"\\F0048"}.mdi-arrow-down-bold-hexagon-outline::before{content:"\\F0049"}.mdi-arrow-down-bold-outline::before{content:"\\F09BF"}.mdi-arrow-down-box::before{content:"\\F06C0"}.mdi-arrow-down-circle::before{content:"\\F0CDB"}.mdi-arrow-down-circle-outline::before{content:"\\F0CDC"}.mdi-arrow-down-drop-circle::before{content:"\\F004A"}.mdi-arrow-down-drop-circle-outline::before{content:"\\F004B"}.mdi-arrow-down-thick::before{content:"\\F0046"}.mdi-arrow-expand::before{content:"\\F0616"}.mdi-arrow-expand-all::before{content:"\\F004C"}.mdi-arrow-expand-down::before{content:"\\F0796"}.mdi-arrow-expand-horizontal::before{content:"\\F084E"}.mdi-arrow-expand-left::before{content:"\\F0797"}.mdi-arrow-expand-right::before{content:"\\F0798"}.mdi-arrow-expand-up::before{content:"\\F0799"}.mdi-arrow-expand-vertical::before{content:"\\F084F"}.mdi-arrow-horizontal-lock::before{content:"\\F115B"}.mdi-arrow-left::before{content:"\\F004D"}.mdi-arrow-left-bold::before{content:"\\F0731"}.mdi-arrow-left-bold-box::before{content:"\\F0732"}.mdi-arrow-left-bold-box-outline::before{content:"\\F0733"}.mdi-arrow-left-bold-circle::before{content:"\\F004F"}.mdi-arrow-left-bold-circle-outline::before{content:"\\F0050"}.mdi-arrow-left-bold-hexagon-outline::before{content:"\\F0051"}.mdi-arrow-left-bold-outline::before{content:"\\F09C0"}.mdi-arrow-left-box::before{content:"\\F06C1"}.mdi-arrow-left-circle::before{content:"\\F0CDD"}.mdi-arrow-left-circle-outline::before{content:"\\F0CDE"}.mdi-arrow-left-drop-circle::before{content:"\\F0052"}.mdi-arrow-left-drop-circle-outline::before{content:"\\F0053"}.mdi-arrow-left-right::before{content:"\\F0E73"}.mdi-arrow-left-right-bold::before{content:"\\F0E74"}.mdi-arrow-left-right-bold-outline::before{content:"\\F09C1"}.mdi-arrow-left-thick::before{content:"\\F004E"}.mdi-arrow-right::before{content:"\\F0054"}.mdi-arrow-right-bold::before{content:"\\F0734"}.mdi-arrow-right-bold-box::before{content:"\\F0735"}.mdi-arrow-right-bold-box-outline::before{content:"\\F0736"}.mdi-arrow-right-bold-circle::before{content:"\\F0056"}.mdi-arrow-right-bold-circle-outline::before{content:"\\F0057"}.mdi-arrow-right-bold-hexagon-outline::before{content:"\\F0058"}.mdi-arrow-right-bold-outline::before{content:"\\F09C2"}.mdi-arrow-right-box::before{content:"\\F06C2"}.mdi-arrow-right-circle::before{content:"\\F0CDF"}.mdi-arrow-right-circle-outline::before{content:"\\F0CE0"}.mdi-arrow-right-drop-circle::before{content:"\\F0059"}.mdi-arrow-right-drop-circle-outline::before{content:"\\F005A"}.mdi-arrow-right-thick::before{content:"\\F0055"}.mdi-arrow-split-horizontal::before{content:"\\F093B"}.mdi-arrow-split-vertical::before{content:"\\F093C"}.mdi-arrow-top-left::before{content:"\\F005B"}.mdi-arrow-top-left-bold-outline::before{content:"\\F09C3"}.mdi-arrow-top-left-bottom-right::before{content:"\\F0E75"}.mdi-arrow-top-left-bottom-right-bold::before{content:"\\F0E76"}.mdi-arrow-top-left-thick::before{content:"\\F09C4"}.mdi-arrow-top-right::before{content:"\\F005C"}.mdi-arrow-top-right-bold-outline::before{content:"\\F09C5"}.mdi-arrow-top-right-bottom-left::before{content:"\\F0E77"}.mdi-arrow-top-right-bottom-left-bold::before{content:"\\F0E78"}.mdi-arrow-top-right-thick::before{content:"\\F09C6"}.mdi-arrow-up::before{content:"\\F005D"}.mdi-arrow-up-bold::before{content:"\\F0737"}.mdi-arrow-up-bold-box::before{content:"\\F0738"}.mdi-arrow-up-bold-box-outline::before{content:"\\F0739"}.mdi-arrow-up-bold-circle::before{content:"\\F005F"}.mdi-arrow-up-bold-circle-outline::before{content:"\\F0060"}.mdi-arrow-up-bold-hexagon-outline::before{content:"\\F0061"}.mdi-arrow-up-bold-outline::before{content:"\\F09C7"}.mdi-arrow-up-box::before{content:"\\F06C3"}.mdi-arrow-up-circle::before{content:"\\F0CE1"}.mdi-arrow-up-circle-outline::before{content:"\\F0CE2"}.mdi-arrow-up-down::before{content:"\\F0E79"}.mdi-arrow-up-down-bold::before{content:"\\F0E7A"}.mdi-arrow-up-down-bold-outline::before{content:"\\F09C8"}.mdi-arrow-up-drop-circle::before{content:"\\F0062"}.mdi-arrow-up-drop-circle-outline::before{content:"\\F0063"}.mdi-arrow-up-thick::before{content:"\\F005E"}.mdi-arrow-vertical-lock::before{content:"\\F115C"}.mdi-artstation::before{content:"\\F0B5B"}.mdi-aspect-ratio::before{content:"\\F0A24"}.mdi-assistant::before{content:"\\F0064"}.mdi-asterisk::before{content:"\\F06C4"}.mdi-at::before{content:"\\F0065"}.mdi-atlassian::before{content:"\\F0804"}.mdi-atm::before{content:"\\F0D47"}.mdi-atom::before{content:"\\F0768"}.mdi-atom-variant::before{content:"\\F0E7B"}.mdi-attachment::before{content:"\\F0066"}.mdi-audio-video::before{content:"\\F093D"}.mdi-audio-video-off::before{content:"\\F11B6"}.mdi-augmented-reality::before{content:"\\F0850"}.mdi-auto-download::before{content:"\\F137E"}.mdi-auto-fix::before{content:"\\F0068"}.mdi-auto-upload::before{content:"\\F0069"}.mdi-autorenew::before{content:"\\F006A"}.mdi-av-timer::before{content:"\\F006B"}.mdi-aws::before{content:"\\F0E0F"}.mdi-axe::before{content:"\\F08C8"}.mdi-axis::before{content:"\\F0D48"}.mdi-axis-arrow::before{content:"\\F0D49"}.mdi-axis-arrow-info::before{content:"\\F140E"}.mdi-axis-arrow-lock::before{content:"\\F0D4A"}.mdi-axis-lock::before{content:"\\F0D4B"}.mdi-axis-x-arrow::before{content:"\\F0D4C"}.mdi-axis-x-arrow-lock::before{content:"\\F0D4D"}.mdi-axis-x-rotate-clockwise::before{content:"\\F0D4E"}.mdi-axis-x-rotate-counterclockwise::before{content:"\\F0D4F"}.mdi-axis-x-y-arrow-lock::before{content:"\\F0D50"}.mdi-axis-y-arrow::before{content:"\\F0D51"}.mdi-axis-y-arrow-lock::before{content:"\\F0D52"}.mdi-axis-y-rotate-clockwise::before{content:"\\F0D53"}.mdi-axis-y-rotate-counterclockwise::before{content:"\\F0D54"}.mdi-axis-z-arrow::before{content:"\\F0D55"}.mdi-axis-z-arrow-lock::before{content:"\\F0D56"}.mdi-axis-z-rotate-clockwise::before{content:"\\F0D57"}.mdi-axis-z-rotate-counterclockwise::before{content:"\\F0D58"}.mdi-babel::before{content:"\\F0A25"}.mdi-baby::before{content:"\\F006C"}.mdi-baby-bottle::before{content:"\\F0F39"}.mdi-baby-bottle-outline::before{content:"\\F0F3A"}.mdi-baby-buggy::before{content:"\\F13E0"}.mdi-baby-carriage::before{content:"\\F068F"}.mdi-baby-carriage-off::before{content:"\\F0FA0"}.mdi-baby-face::before{content:"\\F0E7C"}.mdi-baby-face-outline::before{content:"\\F0E7D"}.mdi-backburger::before{content:"\\F006D"}.mdi-backspace::before{content:"\\F006E"}.mdi-backspace-outline::before{content:"\\F0B5C"}.mdi-backspace-reverse::before{content:"\\F0E7E"}.mdi-backspace-reverse-outline::before{content:"\\F0E7F"}.mdi-backup-restore::before{content:"\\F006F"}.mdi-bacteria::before{content:"\\F0ED5"}.mdi-bacteria-outline::before{content:"\\F0ED6"}.mdi-badge-account::before{content:"\\F0DA7"}.mdi-badge-account-alert::before{content:"\\F0DA8"}.mdi-badge-account-alert-outline::before{content:"\\F0DA9"}.mdi-badge-account-horizontal::before{content:"\\F0E0D"}.mdi-badge-account-horizontal-outline::before{content:"\\F0E0E"}.mdi-badge-account-outline::before{content:"\\F0DAA"}.mdi-badminton::before{content:"\\F0851"}.mdi-bag-carry-on::before{content:"\\F0F3B"}.mdi-bag-carry-on-check::before{content:"\\F0D65"}.mdi-bag-carry-on-off::before{content:"\\F0F3C"}.mdi-bag-checked::before{content:"\\F0F3D"}.mdi-bag-personal::before{content:"\\F0E10"}.mdi-bag-personal-off::before{content:"\\F0E11"}.mdi-bag-personal-off-outline::before{content:"\\F0E12"}.mdi-bag-personal-outline::before{content:"\\F0E13"}.mdi-baguette::before{content:"\\F0F3E"}.mdi-balloon::before{content:"\\F0A26"}.mdi-ballot::before{content:"\\F09C9"}.mdi-ballot-outline::before{content:"\\F09CA"}.mdi-ballot-recount::before{content:"\\F0C39"}.mdi-ballot-recount-outline::before{content:"\\F0C3A"}.mdi-bandage::before{content:"\\F0DAF"}.mdi-bandcamp::before{content:"\\F0675"}.mdi-bank::before{content:"\\F0070"}.mdi-bank-minus::before{content:"\\F0DB0"}.mdi-bank-outline::before{content:"\\F0E80"}.mdi-bank-plus::before{content:"\\F0DB1"}.mdi-bank-remove::before{content:"\\F0DB2"}.mdi-bank-transfer::before{content:"\\F0A27"}.mdi-bank-transfer-in::before{content:"\\F0A28"}.mdi-bank-transfer-out::before{content:"\\F0A29"}.mdi-barcode::before{content:"\\F0071"}.mdi-barcode-off::before{content:"\\F1236"}.mdi-barcode-scan::before{content:"\\F0072"}.mdi-barley::before{content:"\\F0073"}.mdi-barley-off::before{content:"\\F0B5D"}.mdi-barn::before{content:"\\F0B5E"}.mdi-barrel::before{content:"\\F0074"}.mdi-baseball::before{content:"\\F0852"}.mdi-baseball-bat::before{content:"\\F0853"}.mdi-bash::before{content:"\\F1183"}.mdi-basket::before{content:"\\F0076"}.mdi-basket-fill::before{content:"\\F0077"}.mdi-basket-outline::before{content:"\\F1181"}.mdi-basket-unfill::before{content:"\\F0078"}.mdi-basketball::before{content:"\\F0806"}.mdi-basketball-hoop::before{content:"\\F0C3B"}.mdi-basketball-hoop-outline::before{content:"\\F0C3C"}.mdi-bat::before{content:"\\F0B5F"}.mdi-battery::before{content:"\\F0079"}.mdi-battery-10::before{content:"\\F007A"}.mdi-battery-10-bluetooth::before{content:"\\F093E"}.mdi-battery-20::before{content:"\\F007B"}.mdi-battery-20-bluetooth::before{content:"\\F093F"}.mdi-battery-30::before{content:"\\F007C"}.mdi-battery-30-bluetooth::before{content:"\\F0940"}.mdi-battery-40::before{content:"\\F007D"}.mdi-battery-40-bluetooth::before{content:"\\F0941"}.mdi-battery-50::before{content:"\\F007E"}.mdi-battery-50-bluetooth::before{content:"\\F0942"}.mdi-battery-60::before{content:"\\F007F"}.mdi-battery-60-bluetooth::before{content:"\\F0943"}.mdi-battery-70::before{content:"\\F0080"}.mdi-battery-70-bluetooth::before{content:"\\F0944"}.mdi-battery-80::before{content:"\\F0081"}.mdi-battery-80-bluetooth::before{content:"\\F0945"}.mdi-battery-90::before{content:"\\F0082"}.mdi-battery-90-bluetooth::before{content:"\\F0946"}.mdi-battery-alert::before{content:"\\F0083"}.mdi-battery-alert-bluetooth::before{content:"\\F0947"}.mdi-battery-alert-variant::before{content:"\\F10CC"}.mdi-battery-alert-variant-outline::before{content:"\\F10CD"}.mdi-battery-bluetooth::before{content:"\\F0948"}.mdi-battery-bluetooth-variant::before{content:"\\F0949"}.mdi-battery-charging::before{content:"\\F0084"}.mdi-battery-charging-10::before{content:"\\F089C"}.mdi-battery-charging-100::before{content:"\\F0085"}.mdi-battery-charging-20::before{content:"\\F0086"}.mdi-battery-charging-30::before{content:"\\F0087"}.mdi-battery-charging-40::before{content:"\\F0088"}.mdi-battery-charging-50::before{content:"\\F089D"}.mdi-battery-charging-60::before{content:"\\F0089"}.mdi-battery-charging-70::before{content:"\\F089E"}.mdi-battery-charging-80::before{content:"\\F008A"}.mdi-battery-charging-90::before{content:"\\F008B"}.mdi-battery-charging-high::before{content:"\\F12A6"}.mdi-battery-charging-low::before{content:"\\F12A4"}.mdi-battery-charging-medium::before{content:"\\F12A5"}.mdi-battery-charging-outline::before{content:"\\F089F"}.mdi-battery-charging-wireless::before{content:"\\F0807"}.mdi-battery-charging-wireless-10::before{content:"\\F0808"}.mdi-battery-charging-wireless-20::before{content:"\\F0809"}.mdi-battery-charging-wireless-30::before{content:"\\F080A"}.mdi-battery-charging-wireless-40::before{content:"\\F080B"}.mdi-battery-charging-wireless-50::before{content:"\\F080C"}.mdi-battery-charging-wireless-60::before{content:"\\F080D"}.mdi-battery-charging-wireless-70::before{content:"\\F080E"}.mdi-battery-charging-wireless-80::before{content:"\\F080F"}.mdi-battery-charging-wireless-90::before{content:"\\F0810"}.mdi-battery-charging-wireless-alert::before{content:"\\F0811"}.mdi-battery-charging-wireless-outline::before{content:"\\F0812"}.mdi-battery-heart::before{content:"\\F120F"}.mdi-battery-heart-outline::before{content:"\\F1210"}.mdi-battery-heart-variant::before{content:"\\F1211"}.mdi-battery-high::before{content:"\\F12A3"}.mdi-battery-low::before{content:"\\F12A1"}.mdi-battery-medium::before{content:"\\F12A2"}.mdi-battery-minus::before{content:"\\F008C"}.mdi-battery-negative::before{content:"\\F008D"}.mdi-battery-off::before{content:"\\F125D"}.mdi-battery-off-outline::before{content:"\\F125E"}.mdi-battery-outline::before{content:"\\F008E"}.mdi-battery-plus::before{content:"\\F008F"}.mdi-battery-positive::before{content:"\\F0090"}.mdi-battery-unknown::before{content:"\\F0091"}.mdi-battery-unknown-bluetooth::before{content:"\\F094A"}.mdi-battlenet::before{content:"\\F0B60"}.mdi-beach::before{content:"\\F0092"}.mdi-beaker::before{content:"\\F0CEA"}.mdi-beaker-alert::before{content:"\\F1229"}.mdi-beaker-alert-outline::before{content:"\\F122A"}.mdi-beaker-check::before{content:"\\F122B"}.mdi-beaker-check-outline::before{content:"\\F122C"}.mdi-beaker-minus::before{content:"\\F122D"}.mdi-beaker-minus-outline::before{content:"\\F122E"}.mdi-beaker-outline::before{content:"\\F0690"}.mdi-beaker-plus::before{content:"\\F122F"}.mdi-beaker-plus-outline::before{content:"\\F1230"}.mdi-beaker-question::before{content:"\\F1231"}.mdi-beaker-question-outline::before{content:"\\F1232"}.mdi-beaker-remove::before{content:"\\F1233"}.mdi-beaker-remove-outline::before{content:"\\F1234"}.mdi-bed::before{content:"\\F02E3"}.mdi-bed-double::before{content:"\\F0FD4"}.mdi-bed-double-outline::before{content:"\\F0FD3"}.mdi-bed-empty::before{content:"\\F08A0"}.mdi-bed-king::before{content:"\\F0FD2"}.mdi-bed-king-outline::before{content:"\\F0FD1"}.mdi-bed-outline::before{content:"\\F0099"}.mdi-bed-queen::before{content:"\\F0FD0"}.mdi-bed-queen-outline::before{content:"\\F0FDB"}.mdi-bed-single::before{content:"\\F106D"}.mdi-bed-single-outline::before{content:"\\F106E"}.mdi-bee::before{content:"\\F0FA1"}.mdi-bee-flower::before{content:"\\F0FA2"}.mdi-beehive-off-outline::before{content:"\\F13ED"}.mdi-beehive-outline::before{content:"\\F10CE"}.mdi-beer::before{content:"\\F0098"}.mdi-beer-outline::before{content:"\\F130C"}.mdi-bell::before{content:"\\F009A"}.mdi-bell-alert::before{content:"\\F0D59"}.mdi-bell-alert-outline::before{content:"\\F0E81"}.mdi-bell-cancel::before{content:"\\F13E7"}.mdi-bell-cancel-outline::before{content:"\\F13E8"}.mdi-bell-check::before{content:"\\F11E5"}.mdi-bell-check-outline::before{content:"\\F11E6"}.mdi-bell-circle::before{content:"\\F0D5A"}.mdi-bell-circle-outline::before{content:"\\F0D5B"}.mdi-bell-minus::before{content:"\\F13E9"}.mdi-bell-minus-outline::before{content:"\\F13EA"}.mdi-bell-off::before{content:"\\F009B"}.mdi-bell-off-outline::before{content:"\\F0A91"}.mdi-bell-outline::before{content:"\\F009C"}.mdi-bell-plus::before{content:"\\F009D"}.mdi-bell-plus-outline::before{content:"\\F0A92"}.mdi-bell-remove::before{content:"\\F13EB"}.mdi-bell-remove-outline::before{content:"\\F13EC"}.mdi-bell-ring::before{content:"\\F009E"}.mdi-bell-ring-outline::before{content:"\\F009F"}.mdi-bell-sleep::before{content:"\\F00A0"}.mdi-bell-sleep-outline::before{content:"\\F0A93"}.mdi-beta::before{content:"\\F00A1"}.mdi-betamax::before{content:"\\F09CB"}.mdi-biathlon::before{content:"\\F0E14"}.mdi-bicycle::before{content:"\\F109C"}.mdi-bicycle-basket::before{content:"\\F1235"}.mdi-bike::before{content:"\\F00A3"}.mdi-bike-fast::before{content:"\\F111F"}.mdi-billboard::before{content:"\\F1010"}.mdi-billiards::before{content:"\\F0B61"}.mdi-billiards-rack::before{content:"\\F0B62"}.mdi-binoculars::before{content:"\\F00A5"}.mdi-bio::before{content:"\\F00A6"}.mdi-biohazard::before{content:"\\F00A7"}.mdi-bitbucket::before{content:"\\F00A8"}.mdi-bitcoin::before{content:"\\F0813"}.mdi-black-mesa::before{content:"\\F00A9"}.mdi-blender::before{content:"\\F0CEB"}.mdi-blender-software::before{content:"\\F00AB"}.mdi-blinds::before{content:"\\F00AC"}.mdi-blinds-open::before{content:"\\F1011"}.mdi-block-helper::before{content:"\\F00AD"}.mdi-blogger::before{content:"\\F00AE"}.mdi-blood-bag::before{content:"\\F0CEC"}.mdi-bluetooth::before{content:"\\F00AF"}.mdi-bluetooth-audio::before{content:"\\F00B0"}.mdi-bluetooth-connect::before{content:"\\F00B1"}.mdi-bluetooth-off::before{content:"\\F00B2"}.mdi-bluetooth-settings::before{content:"\\F00B3"}.mdi-bluetooth-transfer::before{content:"\\F00B4"}.mdi-blur::before{content:"\\F00B5"}.mdi-blur-linear::before{content:"\\F00B6"}.mdi-blur-off::before{content:"\\F00B7"}.mdi-blur-radial::before{content:"\\F00B8"}.mdi-bolnisi-cross::before{content:"\\F0CED"}.mdi-bolt::before{content:"\\F0DB3"}.mdi-bomb::before{content:"\\F0691"}.mdi-bomb-off::before{content:"\\F06C5"}.mdi-bone::before{content:"\\F00B9"}.mdi-book::before{content:"\\F00BA"}.mdi-book-account::before{content:"\\F13AD"}.mdi-book-account-outline::before{content:"\\F13AE"}.mdi-book-alphabet::before{content:"\\F061D"}.mdi-book-cross::before{content:"\\F00A2"}.mdi-book-information-variant::before{content:"\\F106F"}.mdi-book-lock::before{content:"\\F079A"}.mdi-book-lock-open::before{content:"\\F079B"}.mdi-book-minus::before{content:"\\F05D9"}.mdi-book-minus-multiple::before{content:"\\F0A94"}.mdi-book-minus-multiple-outline::before{content:"\\F090B"}.mdi-book-multiple::before{content:"\\F00BB"}.mdi-book-multiple-outline::before{content:"\\F0436"}.mdi-book-music::before{content:"\\F0067"}.mdi-book-open::before{content:"\\F00BD"}.mdi-book-open-outline::before{content:"\\F0B63"}.mdi-book-open-page-variant::before{content:"\\F05DA"}.mdi-book-open-variant::before{content:"\\F00BE"}.mdi-book-outline::before{content:"\\F0B64"}.mdi-book-play::before{content:"\\F0E82"}.mdi-book-play-outline::before{content:"\\F0E83"}.mdi-book-plus::before{content:"\\F05DB"}.mdi-book-plus-multiple::before{content:"\\F0A95"}.mdi-book-plus-multiple-outline::before{content:"\\F0ADE"}.mdi-book-remove::before{content:"\\F0A97"}.mdi-book-remove-multiple::before{content:"\\F0A96"}.mdi-book-remove-multiple-outline::before{content:"\\F04CA"}.mdi-book-search::before{content:"\\F0E84"}.mdi-book-search-outline::before{content:"\\F0E85"}.mdi-book-variant::before{content:"\\F00BF"}.mdi-book-variant-multiple::before{content:"\\F00BC"}.mdi-bookmark::before{content:"\\F00C0"}.mdi-bookmark-check::before{content:"\\F00C1"}.mdi-bookmark-check-outline::before{content:"\\F137B"}.mdi-bookmark-minus::before{content:"\\F09CC"}.mdi-bookmark-minus-outline::before{content:"\\F09CD"}.mdi-bookmark-multiple::before{content:"\\F0E15"}.mdi-bookmark-multiple-outline::before{content:"\\F0E16"}.mdi-bookmark-music::before{content:"\\F00C2"}.mdi-bookmark-music-outline::before{content:"\\F1379"}.mdi-bookmark-off::before{content:"\\F09CE"}.mdi-bookmark-off-outline::before{content:"\\F09CF"}.mdi-bookmark-outline::before{content:"\\F00C3"}.mdi-bookmark-plus::before{content:"\\F00C5"}.mdi-bookmark-plus-outline::before{content:"\\F00C4"}.mdi-bookmark-remove::before{content:"\\F00C6"}.mdi-bookmark-remove-outline::before{content:"\\F137A"}.mdi-bookshelf::before{content:"\\F125F"}.mdi-boom-gate::before{content:"\\F0E86"}.mdi-boom-gate-alert::before{content:"\\F0E87"}.mdi-boom-gate-alert-outline::before{content:"\\F0E88"}.mdi-boom-gate-down::before{content:"\\F0E89"}.mdi-boom-gate-down-outline::before{content:"\\F0E8A"}.mdi-boom-gate-outline::before{content:"\\F0E8B"}.mdi-boom-gate-up::before{content:"\\F0E8C"}.mdi-boom-gate-up-outline::before{content:"\\F0E8D"}.mdi-boombox::before{content:"\\F05DC"}.mdi-boomerang::before{content:"\\F10CF"}.mdi-bootstrap::before{content:"\\F06C6"}.mdi-border-all::before{content:"\\F00C7"}.mdi-border-all-variant::before{content:"\\F08A1"}.mdi-border-bottom::before{content:"\\F00C8"}.mdi-border-bottom-variant::before{content:"\\F08A2"}.mdi-border-color::before{content:"\\F00C9"}.mdi-border-horizontal::before{content:"\\F00CA"}.mdi-border-inside::before{content:"\\F00CB"}.mdi-border-left::before{content:"\\F00CC"}.mdi-border-left-variant::before{content:"\\F08A3"}.mdi-border-none::before{content:"\\F00CD"}.mdi-border-none-variant::before{content:"\\F08A4"}.mdi-border-outside::before{content:"\\F00CE"}.mdi-border-right::before{content:"\\F00CF"}.mdi-border-right-variant::before{content:"\\F08A5"}.mdi-border-style::before{content:"\\F00D0"}.mdi-border-top::before{content:"\\F00D1"}.mdi-border-top-variant::before{content:"\\F08A6"}.mdi-border-vertical::before{content:"\\F00D2"}.mdi-bottle-soda::before{content:"\\F1070"}.mdi-bottle-soda-classic::before{content:"\\F1071"}.mdi-bottle-soda-classic-outline::before{content:"\\F1363"}.mdi-bottle-soda-outline::before{content:"\\F1072"}.mdi-bottle-tonic::before{content:"\\F112E"}.mdi-bottle-tonic-outline::before{content:"\\F112F"}.mdi-bottle-tonic-plus::before{content:"\\F1130"}.mdi-bottle-tonic-plus-outline::before{content:"\\F1131"}.mdi-bottle-tonic-skull::before{content:"\\F1132"}.mdi-bottle-tonic-skull-outline::before{content:"\\F1133"}.mdi-bottle-wine::before{content:"\\F0854"}.mdi-bottle-wine-outline::before{content:"\\F1310"}.mdi-bow-tie::before{content:"\\F0678"}.mdi-bowl::before{content:"\\F028E"}.mdi-bowl-mix::before{content:"\\F0617"}.mdi-bowl-mix-outline::before{content:"\\F02E4"}.mdi-bowl-outline::before{content:"\\F02A9"}.mdi-bowling::before{content:"\\F00D3"}.mdi-box::before{content:"\\F00D4"}.mdi-box-cutter::before{content:"\\F00D5"}.mdi-box-cutter-off::before{content:"\\F0B4A"}.mdi-box-shadow::before{content:"\\F0637"}.mdi-boxing-glove::before{content:"\\F0B65"}.mdi-braille::before{content:"\\F09D0"}.mdi-brain::before{content:"\\F09D1"}.mdi-bread-slice::before{content:"\\F0CEE"}.mdi-bread-slice-outline::before{content:"\\F0CEF"}.mdi-bridge::before{content:"\\F0618"}.mdi-briefcase::before{content:"\\F00D6"}.mdi-briefcase-account::before{content:"\\F0CF0"}.mdi-briefcase-account-outline::before{content:"\\F0CF1"}.mdi-briefcase-check::before{content:"\\F00D7"}.mdi-briefcase-check-outline::before{content:"\\F131E"}.mdi-briefcase-clock::before{content:"\\F10D0"}.mdi-briefcase-clock-outline::before{content:"\\F10D1"}.mdi-briefcase-download::before{content:"\\F00D8"}.mdi-briefcase-download-outline::before{content:"\\F0C3D"}.mdi-briefcase-edit::before{content:"\\F0A98"}.mdi-briefcase-edit-outline::before{content:"\\F0C3E"}.mdi-briefcase-minus::before{content:"\\F0A2A"}.mdi-briefcase-minus-outline::before{content:"\\F0C3F"}.mdi-briefcase-outline::before{content:"\\F0814"}.mdi-briefcase-plus::before{content:"\\F0A2B"}.mdi-briefcase-plus-outline::before{content:"\\F0C40"}.mdi-briefcase-remove::before{content:"\\F0A2C"}.mdi-briefcase-remove-outline::before{content:"\\F0C41"}.mdi-briefcase-search::before{content:"\\F0A2D"}.mdi-briefcase-search-outline::before{content:"\\F0C42"}.mdi-briefcase-upload::before{content:"\\F00D9"}.mdi-briefcase-upload-outline::before{content:"\\F0C43"}.mdi-briefcase-variant::before{content:"\\F1494"}.mdi-briefcase-variant-outline::before{content:"\\F1495"}.mdi-brightness-1::before{content:"\\F00DA"}.mdi-brightness-2::before{content:"\\F00DB"}.mdi-brightness-3::before{content:"\\F00DC"}.mdi-brightness-4::before{content:"\\F00DD"}.mdi-brightness-5::before{content:"\\F00DE"}.mdi-brightness-6::before{content:"\\F00DF"}.mdi-brightness-7::before{content:"\\F00E0"}.mdi-brightness-auto::before{content:"\\F00E1"}.mdi-brightness-percent::before{content:"\\F0CF2"}.mdi-broom::before{content:"\\F00E2"}.mdi-brush::before{content:"\\F00E3"}.mdi-bucket::before{content:"\\F1415"}.mdi-bucket-outline::before{content:"\\F1416"}.mdi-buddhism::before{content:"\\F094B"}.mdi-buffer::before{content:"\\F0619"}.mdi-buffet::before{content:"\\F0578"}.mdi-bug::before{content:"\\F00E4"}.mdi-bug-check::before{content:"\\F0A2E"}.mdi-bug-check-outline::before{content:"\\F0A2F"}.mdi-bug-outline::before{content:"\\F0A30"}.mdi-bugle::before{content:"\\F0DB4"}.mdi-bulldozer::before{content:"\\F0B22"}.mdi-bullet::before{content:"\\F0CF3"}.mdi-bulletin-board::before{content:"\\F00E5"}.mdi-bullhorn::before{content:"\\F00E6"}.mdi-bullhorn-outline::before{content:"\\F0B23"}.mdi-bullseye::before{content:"\\F05DD"}.mdi-bullseye-arrow::before{content:"\\F08C9"}.mdi-bulma::before{content:"\\F12E7"}.mdi-bunk-bed::before{content:"\\F1302"}.mdi-bunk-bed-outline::before{content:"\\F0097"}.mdi-bus::before{content:"\\F00E7"}.mdi-bus-alert::before{content:"\\F0A99"}.mdi-bus-articulated-end::before{content:"\\F079C"}.mdi-bus-articulated-front::before{content:"\\F079D"}.mdi-bus-clock::before{content:"\\F08CA"}.mdi-bus-double-decker::before{content:"\\F079E"}.mdi-bus-marker::before{content:"\\F1212"}.mdi-bus-multiple::before{content:"\\F0F3F"}.mdi-bus-school::before{content:"\\F079F"}.mdi-bus-side::before{content:"\\F07A0"}.mdi-bus-stop::before{content:"\\F1012"}.mdi-bus-stop-covered::before{content:"\\F1013"}.mdi-bus-stop-uncovered::before{content:"\\F1014"}.mdi-cable-data::before{content:"\\F1394"}.mdi-cached::before{content:"\\F00E8"}.mdi-cactus::before{content:"\\F0DB5"}.mdi-cake::before{content:"\\F00E9"}.mdi-cake-layered::before{content:"\\F00EA"}.mdi-cake-variant::before{content:"\\F00EB"}.mdi-calculator::before{content:"\\F00EC"}.mdi-calculator-variant::before{content:"\\F0A9A"}.mdi-calendar::before{content:"\\F00ED"}.mdi-calendar-account::before{content:"\\F0ED7"}.mdi-calendar-account-outline::before{content:"\\F0ED8"}.mdi-calendar-alert::before{content:"\\F0A31"}.mdi-calendar-arrow-left::before{content:"\\F1134"}.mdi-calendar-arrow-right::before{content:"\\F1135"}.mdi-calendar-blank::before{content:"\\F00EE"}.mdi-calendar-blank-multiple::before{content:"\\F1073"}.mdi-calendar-blank-outline::before{content:"\\F0B66"}.mdi-calendar-check::before{content:"\\F00EF"}.mdi-calendar-check-outline::before{content:"\\F0C44"}.mdi-calendar-clock::before{content:"\\F00F0"}.mdi-calendar-edit::before{content:"\\F08A7"}.mdi-calendar-export::before{content:"\\F0B24"}.mdi-calendar-heart::before{content:"\\F09D2"}.mdi-calendar-import::before{content:"\\F0B25"}.mdi-calendar-minus::before{content:"\\F0D5C"}.mdi-calendar-month::before{content:"\\F0E17"}.mdi-calendar-month-outline::before{content:"\\F0E18"}.mdi-calendar-multiple::before{content:"\\F00F1"}.mdi-calendar-multiple-check::before{content:"\\F00F2"}.mdi-calendar-multiselect::before{content:"\\F0A32"}.mdi-calendar-outline::before{content:"\\F0B67"}.mdi-calendar-plus::before{content:"\\F00F3"}.mdi-calendar-question::before{content:"\\F0692"}.mdi-calendar-range::before{content:"\\F0679"}.mdi-calendar-range-outline::before{content:"\\F0B68"}.mdi-calendar-refresh::before{content:"\\F01E1"}.mdi-calendar-refresh-outline::before{content:"\\F0203"}.mdi-calendar-remove::before{content:"\\F00F4"}.mdi-calendar-remove-outline::before{content:"\\F0C45"}.mdi-calendar-search::before{content:"\\F094C"}.mdi-calendar-star::before{content:"\\F09D3"}.mdi-calendar-sync::before{content:"\\F0E8E"}.mdi-calendar-sync-outline::before{content:"\\F0E8F"}.mdi-calendar-text::before{content:"\\F00F5"}.mdi-calendar-text-outline::before{content:"\\F0C46"}.mdi-calendar-today::before{content:"\\F00F6"}.mdi-calendar-week::before{content:"\\F0A33"}.mdi-calendar-week-begin::before{content:"\\F0A34"}.mdi-calendar-weekend::before{content:"\\F0ED9"}.mdi-calendar-weekend-outline::before{content:"\\F0EDA"}.mdi-call-made::before{content:"\\F00F7"}.mdi-call-merge::before{content:"\\F00F8"}.mdi-call-missed::before{content:"\\F00F9"}.mdi-call-received::before{content:"\\F00FA"}.mdi-call-split::before{content:"\\F00FB"}.mdi-camcorder::before{content:"\\F00FC"}.mdi-camcorder-off::before{content:"\\F00FF"}.mdi-camera::before{content:"\\F0100"}.mdi-camera-account::before{content:"\\F08CB"}.mdi-camera-burst::before{content:"\\F0693"}.mdi-camera-control::before{content:"\\F0B69"}.mdi-camera-enhance::before{content:"\\F0101"}.mdi-camera-enhance-outline::before{content:"\\F0B6A"}.mdi-camera-front::before{content:"\\F0102"}.mdi-camera-front-variant::before{content:"\\F0103"}.mdi-camera-gopro::before{content:"\\F07A1"}.mdi-camera-image::before{content:"\\F08CC"}.mdi-camera-iris::before{content:"\\F0104"}.mdi-camera-metering-center::before{content:"\\F07A2"}.mdi-camera-metering-matrix::before{content:"\\F07A3"}.mdi-camera-metering-partial::before{content:"\\F07A4"}.mdi-camera-metering-spot::before{content:"\\F07A5"}.mdi-camera-off::before{content:"\\F05DF"}.mdi-camera-outline::before{content:"\\F0D5D"}.mdi-camera-party-mode::before{content:"\\F0105"}.mdi-camera-plus::before{content:"\\F0EDB"}.mdi-camera-plus-outline::before{content:"\\F0EDC"}.mdi-camera-rear::before{content:"\\F0106"}.mdi-camera-rear-variant::before{content:"\\F0107"}.mdi-camera-retake::before{content:"\\F0E19"}.mdi-camera-retake-outline::before{content:"\\F0E1A"}.mdi-camera-switch::before{content:"\\F0108"}.mdi-camera-switch-outline::before{content:"\\F084A"}.mdi-camera-timer::before{content:"\\F0109"}.mdi-camera-wireless::before{content:"\\F0DB6"}.mdi-camera-wireless-outline::before{content:"\\F0DB7"}.mdi-campfire::before{content:"\\F0EDD"}.mdi-cancel::before{content:"\\F073A"}.mdi-candle::before{content:"\\F05E2"}.mdi-candycane::before{content:"\\F010A"}.mdi-cannabis::before{content:"\\F07A6"}.mdi-caps-lock::before{content:"\\F0A9B"}.mdi-car::before{content:"\\F010B"}.mdi-car-2-plus::before{content:"\\F1015"}.mdi-car-3-plus::before{content:"\\F1016"}.mdi-car-arrow-left::before{content:"\\F13B2"}.mdi-car-arrow-right::before{content:"\\F13B3"}.mdi-car-back::before{content:"\\F0E1B"}.mdi-car-battery::before{content:"\\F010C"}.mdi-car-brake-abs::before{content:"\\F0C47"}.mdi-car-brake-alert::before{content:"\\F0C48"}.mdi-car-brake-hold::before{content:"\\F0D5E"}.mdi-car-brake-parking::before{content:"\\F0D5F"}.mdi-car-brake-retarder::before{content:"\\F1017"}.mdi-car-child-seat::before{content:"\\F0FA3"}.mdi-car-clutch::before{content:"\\F1018"}.mdi-car-cog::before{content:"\\F13CC"}.mdi-car-connected::before{content:"\\F010D"}.mdi-car-convertible::before{content:"\\F07A7"}.mdi-car-coolant-level::before{content:"\\F1019"}.mdi-car-cruise-control::before{content:"\\F0D60"}.mdi-car-defrost-front::before{content:"\\F0D61"}.mdi-car-defrost-rear::before{content:"\\F0D62"}.mdi-car-door::before{content:"\\F0B6B"}.mdi-car-door-lock::before{content:"\\F109D"}.mdi-car-electric::before{content:"\\F0B6C"}.mdi-car-esp::before{content:"\\F0C49"}.mdi-car-estate::before{content:"\\F07A8"}.mdi-car-hatchback::before{content:"\\F07A9"}.mdi-car-info::before{content:"\\F11BE"}.mdi-car-key::before{content:"\\F0B6D"}.mdi-car-light-dimmed::before{content:"\\F0C4A"}.mdi-car-light-fog::before{content:"\\F0C4B"}.mdi-car-light-high::before{content:"\\F0C4C"}.mdi-car-limousine::before{content:"\\F08CD"}.mdi-car-multiple::before{content:"\\F0B6E"}.mdi-car-off::before{content:"\\F0E1C"}.mdi-car-parking-lights::before{content:"\\F0D63"}.mdi-car-pickup::before{content:"\\F07AA"}.mdi-car-seat::before{content:"\\F0FA4"}.mdi-car-seat-cooler::before{content:"\\F0FA5"}.mdi-car-seat-heater::before{content:"\\F0FA6"}.mdi-car-settings::before{content:"\\F13CD"}.mdi-car-shift-pattern::before{content:"\\F0F40"}.mdi-car-side::before{content:"\\F07AB"}.mdi-car-sports::before{content:"\\F07AC"}.mdi-car-tire-alert::before{content:"\\F0C4D"}.mdi-car-traction-control::before{content:"\\F0D64"}.mdi-car-turbocharger::before{content:"\\F101A"}.mdi-car-wash::before{content:"\\F010E"}.mdi-car-windshield::before{content:"\\F101B"}.mdi-car-windshield-outline::before{content:"\\F101C"}.mdi-carabiner::before{content:"\\F14C0"}.mdi-caravan::before{content:"\\F07AD"}.mdi-card::before{content:"\\F0B6F"}.mdi-card-account-details::before{content:"\\F05D2"}.mdi-card-account-details-outline::before{content:"\\F0DAB"}.mdi-card-account-details-star::before{content:"\\F02A3"}.mdi-card-account-details-star-outline::before{content:"\\F06DB"}.mdi-card-account-mail::before{content:"\\F018E"}.mdi-card-account-mail-outline::before{content:"\\F0E98"}.mdi-card-account-phone::before{content:"\\F0E99"}.mdi-card-account-phone-outline::before{content:"\\F0E9A"}.mdi-card-bulleted::before{content:"\\F0B70"}.mdi-card-bulleted-off::before{content:"\\F0B71"}.mdi-card-bulleted-off-outline::before{content:"\\F0B72"}.mdi-card-bulleted-outline::before{content:"\\F0B73"}.mdi-card-bulleted-settings::before{content:"\\F0B74"}.mdi-card-bulleted-settings-outline::before{content:"\\F0B75"}.mdi-card-outline::before{content:"\\F0B76"}.mdi-card-plus::before{content:"\\F11FF"}.mdi-card-plus-outline::before{content:"\\F1200"}.mdi-card-search::before{content:"\\F1074"}.mdi-card-search-outline::before{content:"\\F1075"}.mdi-card-text::before{content:"\\F0B77"}.mdi-card-text-outline::before{content:"\\F0B78"}.mdi-cards::before{content:"\\F0638"}.mdi-cards-club::before{content:"\\F08CE"}.mdi-cards-diamond::before{content:"\\F08CF"}.mdi-cards-diamond-outline::before{content:"\\F101D"}.mdi-cards-heart::before{content:"\\F08D0"}.mdi-cards-outline::before{content:"\\F0639"}.mdi-cards-playing-outline::before{content:"\\F063A"}.mdi-cards-spade::before{content:"\\F08D1"}.mdi-cards-variant::before{content:"\\F06C7"}.mdi-carrot::before{content:"\\F010F"}.mdi-cart::before{content:"\\F0110"}.mdi-cart-arrow-down::before{content:"\\F0D66"}.mdi-cart-arrow-right::before{content:"\\F0C4E"}.mdi-cart-arrow-up::before{content:"\\F0D67"}.mdi-cart-minus::before{content:"\\F0D68"}.mdi-cart-off::before{content:"\\F066B"}.mdi-cart-outline::before{content:"\\F0111"}.mdi-cart-plus::before{content:"\\F0112"}.mdi-cart-remove::before{content:"\\F0D69"}.mdi-case-sensitive-alt::before{content:"\\F0113"}.mdi-cash::before{content:"\\F0114"}.mdi-cash-100::before{content:"\\F0115"}.mdi-cash-marker::before{content:"\\F0DB8"}.mdi-cash-minus::before{content:"\\F1260"}.mdi-cash-multiple::before{content:"\\F0116"}.mdi-cash-plus::before{content:"\\F1261"}.mdi-cash-refund::before{content:"\\F0A9C"}.mdi-cash-register::before{content:"\\F0CF4"}.mdi-cash-remove::before{content:"\\F1262"}.mdi-cash-usd::before{content:"\\F1176"}.mdi-cash-usd-outline::before{content:"\\F0117"}.mdi-cassette::before{content:"\\F09D4"}.mdi-cast::before{content:"\\F0118"}.mdi-cast-audio::before{content:"\\F101E"}.mdi-cast-connected::before{content:"\\F0119"}.mdi-cast-education::before{content:"\\F0E1D"}.mdi-cast-off::before{content:"\\F078A"}.mdi-castle::before{content:"\\F011A"}.mdi-cat::before{content:"\\F011B"}.mdi-cctv::before{content:"\\F07AE"}.mdi-ceiling-light::before{content:"\\F0769"}.mdi-cellphone::before{content:"\\F011C"}.mdi-cellphone-android::before{content:"\\F011D"}.mdi-cellphone-arrow-down::before{content:"\\F09D5"}.mdi-cellphone-basic::before{content:"\\F011E"}.mdi-cellphone-charging::before{content:"\\F1397"}.mdi-cellphone-cog::before{content:"\\F0951"}.mdi-cellphone-dock::before{content:"\\F011F"}.mdi-cellphone-erase::before{content:"\\F094D"}.mdi-cellphone-information::before{content:"\\F0F41"}.mdi-cellphone-iphone::before{content:"\\F0120"}.mdi-cellphone-key::before{content:"\\F094E"}.mdi-cellphone-link::before{content:"\\F0121"}.mdi-cellphone-link-off::before{content:"\\F0122"}.mdi-cellphone-lock::before{content:"\\F094F"}.mdi-cellphone-message::before{content:"\\F08D3"}.mdi-cellphone-message-off::before{content:"\\F10D2"}.mdi-cellphone-nfc::before{content:"\\F0E90"}.mdi-cellphone-nfc-off::before{content:"\\F12D8"}.mdi-cellphone-off::before{content:"\\F0950"}.mdi-cellphone-play::before{content:"\\F101F"}.mdi-cellphone-screenshot::before{content:"\\F0A35"}.mdi-cellphone-settings::before{content:"\\F0123"}.mdi-cellphone-sound::before{content:"\\F0952"}.mdi-cellphone-text::before{content:"\\F08D2"}.mdi-cellphone-wireless::before{content:"\\F0815"}.mdi-celtic-cross::before{content:"\\F0CF5"}.mdi-centos::before{content:"\\F111A"}.mdi-certificate::before{content:"\\F0124"}.mdi-certificate-outline::before{content:"\\F1188"}.mdi-chair-rolling::before{content:"\\F0F48"}.mdi-chair-school::before{content:"\\F0125"}.mdi-charity::before{content:"\\F0C4F"}.mdi-chart-arc::before{content:"\\F0126"}.mdi-chart-areaspline::before{content:"\\F0127"}.mdi-chart-areaspline-variant::before{content:"\\F0E91"}.mdi-chart-bar::before{content:"\\F0128"}.mdi-chart-bar-stacked::before{content:"\\F076A"}.mdi-chart-bell-curve::before{content:"\\F0C50"}.mdi-chart-bell-curve-cumulative::before{content:"\\F0FA7"}.mdi-chart-bubble::before{content:"\\F05E3"}.mdi-chart-donut::before{content:"\\F07AF"}.mdi-chart-donut-variant::before{content:"\\F07B0"}.mdi-chart-gantt::before{content:"\\F066C"}.mdi-chart-histogram::before{content:"\\F0129"}.mdi-chart-line::before{content:"\\F012A"}.mdi-chart-line-stacked::before{content:"\\F076B"}.mdi-chart-line-variant::before{content:"\\F07B1"}.mdi-chart-multiline::before{content:"\\F08D4"}.mdi-chart-multiple::before{content:"\\F1213"}.mdi-chart-pie::before{content:"\\F012B"}.mdi-chart-ppf::before{content:"\\F1380"}.mdi-chart-sankey::before{content:"\\F11DF"}.mdi-chart-sankey-variant::before{content:"\\F11E0"}.mdi-chart-scatter-plot::before{content:"\\F0E92"}.mdi-chart-scatter-plot-hexbin::before{content:"\\F066D"}.mdi-chart-timeline::before{content:"\\F066E"}.mdi-chart-timeline-variant::before{content:"\\F0E93"}.mdi-chart-tree::before{content:"\\F0E94"}.mdi-chat::before{content:"\\F0B79"}.mdi-chat-alert::before{content:"\\F0B7A"}.mdi-chat-alert-outline::before{content:"\\F12C9"}.mdi-chat-minus::before{content:"\\F1410"}.mdi-chat-minus-outline::before{content:"\\F1413"}.mdi-chat-outline::before{content:"\\F0EDE"}.mdi-chat-plus::before{content:"\\F140F"}.mdi-chat-plus-outline::before{content:"\\F1412"}.mdi-chat-processing::before{content:"\\F0B7B"}.mdi-chat-processing-outline::before{content:"\\F12CA"}.mdi-chat-remove::before{content:"\\F1411"}.mdi-chat-remove-outline::before{content:"\\F1414"}.mdi-chat-sleep::before{content:"\\F12D1"}.mdi-chat-sleep-outline::before{content:"\\F12D2"}.mdi-check::before{content:"\\F012C"}.mdi-check-all::before{content:"\\F012D"}.mdi-check-bold::before{content:"\\F0E1E"}.mdi-check-box-multiple-outline::before{content:"\\F0C51"}.mdi-check-box-outline::before{content:"\\F0C52"}.mdi-check-circle::before{content:"\\F05E0"}.mdi-check-circle-outline::before{content:"\\F05E1"}.mdi-check-decagram::before{content:"\\F0791"}.mdi-check-network::before{content:"\\F0C53"}.mdi-check-network-outline::before{content:"\\F0C54"}.mdi-check-outline::before{content:"\\F0855"}.mdi-check-underline::before{content:"\\F0E1F"}.mdi-check-underline-circle::before{content:"\\F0E20"}.mdi-check-underline-circle-outline::before{content:"\\F0E21"}.mdi-checkbook::before{content:"\\F0A9D"}.mdi-checkbox-blank::before{content:"\\F012E"}.mdi-checkbox-blank-circle::before{content:"\\F012F"}.mdi-checkbox-blank-circle-outline::before{content:"\\F0130"}.mdi-checkbox-blank-off::before{content:"\\F12EC"}.mdi-checkbox-blank-off-outline::before{content:"\\F12ED"}.mdi-checkbox-blank-outline::before{content:"\\F0131"}.mdi-checkbox-intermediate::before{content:"\\F0856"}.mdi-checkbox-marked::before{content:"\\F0132"}.mdi-checkbox-marked-circle::before{content:"\\F0133"}.mdi-checkbox-marked-circle-outline::before{content:"\\F0134"}.mdi-checkbox-marked-outline::before{content:"\\F0135"}.mdi-checkbox-multiple-blank::before{content:"\\F0136"}.mdi-checkbox-multiple-blank-circle::before{content:"\\F063B"}.mdi-checkbox-multiple-blank-circle-outline::before{content:"\\F063C"}.mdi-checkbox-multiple-blank-outline::before{content:"\\F0137"}.mdi-checkbox-multiple-marked::before{content:"\\F0138"}.mdi-checkbox-multiple-marked-circle::before{content:"\\F063D"}.mdi-checkbox-multiple-marked-circle-outline::before{content:"\\F063E"}.mdi-checkbox-multiple-marked-outline::before{content:"\\F0139"}.mdi-checkerboard::before{content:"\\F013A"}.mdi-checkerboard-minus::before{content:"\\F1202"}.mdi-checkerboard-plus::before{content:"\\F1201"}.mdi-checkerboard-remove::before{content:"\\F1203"}.mdi-cheese::before{content:"\\F12B9"}.mdi-cheese-off::before{content:"\\F13EE"}.mdi-chef-hat::before{content:"\\F0B7C"}.mdi-chemical-weapon::before{content:"\\F013B"}.mdi-chess-bishop::before{content:"\\F085C"}.mdi-chess-king::before{content:"\\F0857"}.mdi-chess-knight::before{content:"\\F0858"}.mdi-chess-pawn::before{content:"\\F0859"}.mdi-chess-queen::before{content:"\\F085A"}.mdi-chess-rook::before{content:"\\F085B"}.mdi-chevron-double-down::before{content:"\\F013C"}.mdi-chevron-double-left::before{content:"\\F013D"}.mdi-chevron-double-right::before{content:"\\F013E"}.mdi-chevron-double-up::before{content:"\\F013F"}.mdi-chevron-down::before{content:"\\F0140"}.mdi-chevron-down-box::before{content:"\\F09D6"}.mdi-chevron-down-box-outline::before{content:"\\F09D7"}.mdi-chevron-down-circle::before{content:"\\F0B26"}.mdi-chevron-down-circle-outline::before{content:"\\F0B27"}.mdi-chevron-left::before{content:"\\F0141"}.mdi-chevron-left-box::before{content:"\\F09D8"}.mdi-chevron-left-box-outline::before{content:"\\F09D9"}.mdi-chevron-left-circle::before{content:"\\F0B28"}.mdi-chevron-left-circle-outline::before{content:"\\F0B29"}.mdi-chevron-right::before{content:"\\F0142"}.mdi-chevron-right-box::before{content:"\\F09DA"}.mdi-chevron-right-box-outline::before{content:"\\F09DB"}.mdi-chevron-right-circle::before{content:"\\F0B2A"}.mdi-chevron-right-circle-outline::before{content:"\\F0B2B"}.mdi-chevron-triple-down::before{content:"\\F0DB9"}.mdi-chevron-triple-left::before{content:"\\F0DBA"}.mdi-chevron-triple-right::before{content:"\\F0DBB"}.mdi-chevron-triple-up::before{content:"\\F0DBC"}.mdi-chevron-up::before{content:"\\F0143"}.mdi-chevron-up-box::before{content:"\\F09DC"}.mdi-chevron-up-box-outline::before{content:"\\F09DD"}.mdi-chevron-up-circle::before{content:"\\F0B2C"}.mdi-chevron-up-circle-outline::before{content:"\\F0B2D"}.mdi-chili-hot::before{content:"\\F07B2"}.mdi-chili-medium::before{content:"\\F07B3"}.mdi-chili-mild::before{content:"\\F07B4"}.mdi-chili-off::before{content:"\\F1467"}.mdi-chip::before{content:"\\F061A"}.mdi-christianity::before{content:"\\F0953"}.mdi-christianity-outline::before{content:"\\F0CF6"}.mdi-church::before{content:"\\F0144"}.mdi-cigar::before{content:"\\F1189"}.mdi-cigar-off::before{content:"\\F141B"}.mdi-circle::before{content:"\\F0765"}.mdi-circle-double::before{content:"\\F0E95"}.mdi-circle-edit-outline::before{content:"\\F08D5"}.mdi-circle-expand::before{content:"\\F0E96"}.mdi-circle-half::before{content:"\\F1395"}.mdi-circle-half-full::before{content:"\\F1396"}.mdi-circle-medium::before{content:"\\F09DE"}.mdi-circle-multiple::before{content:"\\F0B38"}.mdi-circle-multiple-outline::before{content:"\\F0695"}.mdi-circle-off-outline::before{content:"\\F10D3"}.mdi-circle-outline::before{content:"\\F0766"}.mdi-circle-slice-1::before{content:"\\F0A9E"}.mdi-circle-slice-2::before{content:"\\F0A9F"}.mdi-circle-slice-3::before{content:"\\F0AA0"}.mdi-circle-slice-4::before{content:"\\F0AA1"}.mdi-circle-slice-5::before{content:"\\F0AA2"}.mdi-circle-slice-6::before{content:"\\F0AA3"}.mdi-circle-slice-7::before{content:"\\F0AA4"}.mdi-circle-slice-8::before{content:"\\F0AA5"}.mdi-circle-small::before{content:"\\F09DF"}.mdi-circular-saw::before{content:"\\F0E22"}.mdi-city::before{content:"\\F0146"}.mdi-city-variant::before{content:"\\F0A36"}.mdi-city-variant-outline::before{content:"\\F0A37"}.mdi-clipboard::before{content:"\\F0147"}.mdi-clipboard-account::before{content:"\\F0148"}.mdi-clipboard-account-outline::before{content:"\\F0C55"}.mdi-clipboard-alert::before{content:"\\F0149"}.mdi-clipboard-alert-outline::before{content:"\\F0CF7"}.mdi-clipboard-arrow-down::before{content:"\\F014A"}.mdi-clipboard-arrow-down-outline::before{content:"\\F0C56"}.mdi-clipboard-arrow-left::before{content:"\\F014B"}.mdi-clipboard-arrow-left-outline::before{content:"\\F0CF8"}.mdi-clipboard-arrow-right::before{content:"\\F0CF9"}.mdi-clipboard-arrow-right-outline::before{content:"\\F0CFA"}.mdi-clipboard-arrow-up::before{content:"\\F0C57"}.mdi-clipboard-arrow-up-outline::before{content:"\\F0C58"}.mdi-clipboard-check::before{content:"\\F014E"}.mdi-clipboard-check-multiple::before{content:"\\F1263"}.mdi-clipboard-check-multiple-outline::before{content:"\\F1264"}.mdi-clipboard-check-outline::before{content:"\\F08A8"}.mdi-clipboard-file::before{content:"\\F1265"}.mdi-clipboard-file-outline::before{content:"\\F1266"}.mdi-clipboard-flow::before{content:"\\F06C8"}.mdi-clipboard-flow-outline::before{content:"\\F1117"}.mdi-clipboard-list::before{content:"\\F10D4"}.mdi-clipboard-list-outline::before{content:"\\F10D5"}.mdi-clipboard-multiple::before{content:"\\F1267"}.mdi-clipboard-multiple-outline::before{content:"\\F1268"}.mdi-clipboard-outline::before{content:"\\F014C"}.mdi-clipboard-play::before{content:"\\F0C59"}.mdi-clipboard-play-multiple::before{content:"\\F1269"}.mdi-clipboard-play-multiple-outline::before{content:"\\F126A"}.mdi-clipboard-play-outline::before{content:"\\F0C5A"}.mdi-clipboard-plus::before{content:"\\F0751"}.mdi-clipboard-plus-outline::before{content:"\\F131F"}.mdi-clipboard-pulse::before{content:"\\F085D"}.mdi-clipboard-pulse-outline::before{content:"\\F085E"}.mdi-clipboard-text::before{content:"\\F014D"}.mdi-clipboard-text-multiple::before{content:"\\F126B"}.mdi-clipboard-text-multiple-outline::before{content:"\\F126C"}.mdi-clipboard-text-outline::before{content:"\\F0A38"}.mdi-clipboard-text-play::before{content:"\\F0C5B"}.mdi-clipboard-text-play-outline::before{content:"\\F0C5C"}.mdi-clippy::before{content:"\\F014F"}.mdi-clock::before{content:"\\F0954"}.mdi-clock-alert::before{content:"\\F0955"}.mdi-clock-alert-outline::before{content:"\\F05CE"}.mdi-clock-check::before{content:"\\F0FA8"}.mdi-clock-check-outline::before{content:"\\F0FA9"}.mdi-clock-digital::before{content:"\\F0E97"}.mdi-clock-end::before{content:"\\F0151"}.mdi-clock-fast::before{content:"\\F0152"}.mdi-clock-in::before{content:"\\F0153"}.mdi-clock-out::before{content:"\\F0154"}.mdi-clock-outline::before{content:"\\F0150"}.mdi-clock-start::before{content:"\\F0155"}.mdi-clock-time-eight::before{content:"\\F1446"}.mdi-clock-time-eight-outline::before{content:"\\F1452"}.mdi-clock-time-eleven::before{content:"\\F1449"}.mdi-clock-time-eleven-outline::before{content:"\\F1455"}.mdi-clock-time-five::before{content:"\\F1443"}.mdi-clock-time-five-outline::before{content:"\\F144F"}.mdi-clock-time-four::before{content:"\\F1442"}.mdi-clock-time-four-outline::before{content:"\\F144E"}.mdi-clock-time-nine::before{content:"\\F1447"}.mdi-clock-time-nine-outline::before{content:"\\F1453"}.mdi-clock-time-one::before{content:"\\F143F"}.mdi-clock-time-one-outline::before{content:"\\F144B"}.mdi-clock-time-seven::before{content:"\\F1445"}.mdi-clock-time-seven-outline::before{content:"\\F1451"}.mdi-clock-time-six::before{content:"\\F1444"}.mdi-clock-time-six-outline::before{content:"\\F1450"}.mdi-clock-time-ten::before{content:"\\F1448"}.mdi-clock-time-ten-outline::before{content:"\\F1454"}.mdi-clock-time-three::before{content:"\\F1441"}.mdi-clock-time-three-outline::before{content:"\\F144D"}.mdi-clock-time-twelve::before{content:"\\F144A"}.mdi-clock-time-twelve-outline::before{content:"\\F1456"}.mdi-clock-time-two::before{content:"\\F1440"}.mdi-clock-time-two-outline::before{content:"\\F144C"}.mdi-close::before{content:"\\F0156"}.mdi-close-box::before{content:"\\F0157"}.mdi-close-box-multiple::before{content:"\\F0C5D"}.mdi-close-box-multiple-outline::before{content:"\\F0C5E"}.mdi-close-box-outline::before{content:"\\F0158"}.mdi-close-circle::before{content:"\\F0159"}.mdi-close-circle-multiple::before{content:"\\F062A"}.mdi-close-circle-multiple-outline::before{content:"\\F0883"}.mdi-close-circle-outline::before{content:"\\F015A"}.mdi-close-network::before{content:"\\F015B"}.mdi-close-network-outline::before{content:"\\F0C5F"}.mdi-close-octagon::before{content:"\\F015C"}.mdi-close-octagon-outline::before{content:"\\F015D"}.mdi-close-outline::before{content:"\\F06C9"}.mdi-close-thick::before{content:"\\F1398"}.mdi-closed-caption::before{content:"\\F015E"}.mdi-closed-caption-outline::before{content:"\\F0DBD"}.mdi-cloud::before{content:"\\F015F"}.mdi-cloud-alert::before{content:"\\F09E0"}.mdi-cloud-braces::before{content:"\\F07B5"}.mdi-cloud-check::before{content:"\\F0160"}.mdi-cloud-check-outline::before{content:"\\F12CC"}.mdi-cloud-circle::before{content:"\\F0161"}.mdi-cloud-download::before{content:"\\F0162"}.mdi-cloud-download-outline::before{content:"\\F0B7D"}.mdi-cloud-lock::before{content:"\\F11F1"}.mdi-cloud-lock-outline::before{content:"\\F11F2"}.mdi-cloud-off-outline::before{content:"\\F0164"}.mdi-cloud-outline::before{content:"\\F0163"}.mdi-cloud-print::before{content:"\\F0165"}.mdi-cloud-print-outline::before{content:"\\F0166"}.mdi-cloud-question::before{content:"\\F0A39"}.mdi-cloud-refresh::before{content:"\\F052A"}.mdi-cloud-search::before{content:"\\F0956"}.mdi-cloud-search-outline::before{content:"\\F0957"}.mdi-cloud-sync::before{content:"\\F063F"}.mdi-cloud-sync-outline::before{content:"\\F12D6"}.mdi-cloud-tags::before{content:"\\F07B6"}.mdi-cloud-upload::before{content:"\\F0167"}.mdi-cloud-upload-outline::before{content:"\\F0B7E"}.mdi-clover::before{content:"\\F0816"}.mdi-coach-lamp::before{content:"\\F1020"}.mdi-coat-rack::before{content:"\\F109E"}.mdi-code-array::before{content:"\\F0168"}.mdi-code-braces::before{content:"\\F0169"}.mdi-code-braces-box::before{content:"\\F10D6"}.mdi-code-brackets::before{content:"\\F016A"}.mdi-code-equal::before{content:"\\F016B"}.mdi-code-greater-than::before{content:"\\F016C"}.mdi-code-greater-than-or-equal::before{content:"\\F016D"}.mdi-code-json::before{content:"\\F0626"}.mdi-code-less-than::before{content:"\\F016E"}.mdi-code-less-than-or-equal::before{content:"\\F016F"}.mdi-code-not-equal::before{content:"\\F0170"}.mdi-code-not-equal-variant::before{content:"\\F0171"}.mdi-code-parentheses::before{content:"\\F0172"}.mdi-code-parentheses-box::before{content:"\\F10D7"}.mdi-code-string::before{content:"\\F0173"}.mdi-code-tags::before{content:"\\F0174"}.mdi-code-tags-check::before{content:"\\F0694"}.mdi-codepen::before{content:"\\F0175"}.mdi-coffee::before{content:"\\F0176"}.mdi-coffee-maker::before{content:"\\F109F"}.mdi-coffee-off::before{content:"\\F0FAA"}.mdi-coffee-off-outline::before{content:"\\F0FAB"}.mdi-coffee-outline::before{content:"\\F06CA"}.mdi-coffee-to-go::before{content:"\\F0177"}.mdi-coffee-to-go-outline::before{content:"\\F130E"}.mdi-coffin::before{content:"\\F0B7F"}.mdi-cog::before{content:"\\F0493"}.mdi-cog-box::before{content:"\\F0494"}.mdi-cog-clockwise::before{content:"\\F11DD"}.mdi-cog-counterclockwise::before{content:"\\F11DE"}.mdi-cog-off::before{content:"\\F13CE"}.mdi-cog-off-outline::before{content:"\\F13CF"}.mdi-cog-outline::before{content:"\\F08BB"}.mdi-cog-refresh::before{content:"\\F145E"}.mdi-cog-refresh-outline::before{content:"\\F145F"}.mdi-cog-sync::before{content:"\\F1460"}.mdi-cog-sync-outline::before{content:"\\F1461"}.mdi-cog-transfer::before{content:"\\F105B"}.mdi-cog-transfer-outline::before{content:"\\F105C"}.mdi-cogs::before{content:"\\F08D6"}.mdi-collage::before{content:"\\F0640"}.mdi-collapse-all::before{content:"\\F0AA6"}.mdi-collapse-all-outline::before{content:"\\F0AA7"}.mdi-color-helper::before{content:"\\F0179"}.mdi-comma::before{content:"\\F0E23"}.mdi-comma-box::before{content:"\\F0E2B"}.mdi-comma-box-outline::before{content:"\\F0E24"}.mdi-comma-circle::before{content:"\\F0E25"}.mdi-comma-circle-outline::before{content:"\\F0E26"}.mdi-comment::before{content:"\\F017A"}.mdi-comment-account::before{content:"\\F017B"}.mdi-comment-account-outline::before{content:"\\F017C"}.mdi-comment-alert::before{content:"\\F017D"}.mdi-comment-alert-outline::before{content:"\\F017E"}.mdi-comment-arrow-left::before{content:"\\F09E1"}.mdi-comment-arrow-left-outline::before{content:"\\F09E2"}.mdi-comment-arrow-right::before{content:"\\F09E3"}.mdi-comment-arrow-right-outline::before{content:"\\F09E4"}.mdi-comment-check::before{content:"\\F017F"}.mdi-comment-check-outline::before{content:"\\F0180"}.mdi-comment-edit::before{content:"\\F11BF"}.mdi-comment-edit-outline::before{content:"\\F12C4"}.mdi-comment-eye::before{content:"\\F0A3A"}.mdi-comment-eye-outline::before{content:"\\F0A3B"}.mdi-comment-multiple::before{content:"\\F085F"}.mdi-comment-multiple-outline::before{content:"\\F0181"}.mdi-comment-outline::before{content:"\\F0182"}.mdi-comment-plus::before{content:"\\F09E5"}.mdi-comment-plus-outline::before{content:"\\F0183"}.mdi-comment-processing::before{content:"\\F0184"}.mdi-comment-processing-outline::before{content:"\\F0185"}.mdi-comment-question::before{content:"\\F0817"}.mdi-comment-question-outline::before{content:"\\F0186"}.mdi-comment-quote::before{content:"\\F1021"}.mdi-comment-quote-outline::before{content:"\\F1022"}.mdi-comment-remove::before{content:"\\F05DE"}.mdi-comment-remove-outline::before{content:"\\F0187"}.mdi-comment-search::before{content:"\\F0A3C"}.mdi-comment-search-outline::before{content:"\\F0A3D"}.mdi-comment-text::before{content:"\\F0188"}.mdi-comment-text-multiple::before{content:"\\F0860"}.mdi-comment-text-multiple-outline::before{content:"\\F0861"}.mdi-comment-text-outline::before{content:"\\F0189"}.mdi-compare::before{content:"\\F018A"}.mdi-compare-horizontal::before{content:"\\F1492"}.mdi-compare-vertical::before{content:"\\F1493"}.mdi-compass::before{content:"\\F018B"}.mdi-compass-off::before{content:"\\F0B80"}.mdi-compass-off-outline::before{content:"\\F0B81"}.mdi-compass-outline::before{content:"\\F018C"}.mdi-compass-rose::before{content:"\\F1382"}.mdi-concourse-ci::before{content:"\\F10A0"}.mdi-console::before{content:"\\F018D"}.mdi-console-line::before{content:"\\F07B7"}.mdi-console-network::before{content:"\\F08A9"}.mdi-console-network-outline::before{content:"\\F0C60"}.mdi-consolidate::before{content:"\\F10D8"}.mdi-contactless-payment::before{content:"\\F0D6A"}.mdi-contactless-payment-circle::before{content:"\\F0321"}.mdi-contactless-payment-circle-outline::before{content:"\\F0408"}.mdi-contacts::before{content:"\\F06CB"}.mdi-contacts-outline::before{content:"\\F05B8"}.mdi-contain::before{content:"\\F0A3E"}.mdi-contain-end::before{content:"\\F0A3F"}.mdi-contain-start::before{content:"\\F0A40"}.mdi-content-copy::before{content:"\\F018F"}.mdi-content-cut::before{content:"\\F0190"}.mdi-content-duplicate::before{content:"\\F0191"}.mdi-content-paste::before{content:"\\F0192"}.mdi-content-save::before{content:"\\F0193"}.mdi-content-save-alert::before{content:"\\F0F42"}.mdi-content-save-alert-outline::before{content:"\\F0F43"}.mdi-content-save-all::before{content:"\\F0194"}.mdi-content-save-all-outline::before{content:"\\F0F44"}.mdi-content-save-cog::before{content:"\\F145B"}.mdi-content-save-cog-outline::before{content:"\\F145C"}.mdi-content-save-edit::before{content:"\\F0CFB"}.mdi-content-save-edit-outline::before{content:"\\F0CFC"}.mdi-content-save-move::before{content:"\\F0E27"}.mdi-content-save-move-outline::before{content:"\\F0E28"}.mdi-content-save-outline::before{content:"\\F0818"}.mdi-content-save-settings::before{content:"\\F061B"}.mdi-content-save-settings-outline::before{content:"\\F0B2E"}.mdi-contrast::before{content:"\\F0195"}.mdi-contrast-box::before{content:"\\F0196"}.mdi-contrast-circle::before{content:"\\F0197"}.mdi-controller-classic::before{content:"\\F0B82"}.mdi-controller-classic-outline::before{content:"\\F0B83"}.mdi-cookie::before{content:"\\F0198"}.mdi-coolant-temperature::before{content:"\\F03C8"}.mdi-copyright::before{content:"\\F05E6"}.mdi-cordova::before{content:"\\F0958"}.mdi-corn::before{content:"\\F07B8"}.mdi-corn-off::before{content:"\\F13EF"}.mdi-cosine-wave::before{content:"\\F1479"}.mdi-counter::before{content:"\\F0199"}.mdi-cow::before{content:"\\F019A"}.mdi-cpu-32-bit::before{content:"\\F0EDF"}.mdi-cpu-64-bit::before{content:"\\F0EE0"}.mdi-crane::before{content:"\\F0862"}.mdi-creation::before{content:"\\F0674"}.mdi-creative-commons::before{content:"\\F0D6B"}.mdi-credit-card::before{content:"\\F0FEF"}.mdi-credit-card-check::before{content:"\\F13D0"}.mdi-credit-card-check-outline::before{content:"\\F13D1"}.mdi-credit-card-clock::before{content:"\\F0EE1"}.mdi-credit-card-clock-outline::before{content:"\\F0EE2"}.mdi-credit-card-marker::before{content:"\\F06A8"}.mdi-credit-card-marker-outline::before{content:"\\F0DBE"}.mdi-credit-card-minus::before{content:"\\F0FAC"}.mdi-credit-card-minus-outline::before{content:"\\F0FAD"}.mdi-credit-card-multiple::before{content:"\\F0FF0"}.mdi-credit-card-multiple-outline::before{content:"\\F019C"}.mdi-credit-card-off::before{content:"\\F0FF1"}.mdi-credit-card-off-outline::before{content:"\\F05E4"}.mdi-credit-card-outline::before{content:"\\F019B"}.mdi-credit-card-plus::before{content:"\\F0FF2"}.mdi-credit-card-plus-outline::before{content:"\\F0676"}.mdi-credit-card-refund::before{content:"\\F0FF3"}.mdi-credit-card-refund-outline::before{content:"\\F0AA8"}.mdi-credit-card-remove::before{content:"\\F0FAE"}.mdi-credit-card-remove-outline::before{content:"\\F0FAF"}.mdi-credit-card-scan::before{content:"\\F0FF4"}.mdi-credit-card-scan-outline::before{content:"\\F019D"}.mdi-credit-card-settings::before{content:"\\F0FF5"}.mdi-credit-card-settings-outline::before{content:"\\F08D7"}.mdi-credit-card-wireless::before{content:"\\F0802"}.mdi-credit-card-wireless-off::before{content:"\\F057A"}.mdi-credit-card-wireless-off-outline::before{content:"\\F057B"}.mdi-credit-card-wireless-outline::before{content:"\\F0D6C"}.mdi-cricket::before{content:"\\F0D6D"}.mdi-crop::before{content:"\\F019E"}.mdi-crop-free::before{content:"\\F019F"}.mdi-crop-landscape::before{content:"\\F01A0"}.mdi-crop-portrait::before{content:"\\F01A1"}.mdi-crop-rotate::before{content:"\\F0696"}.mdi-crop-square::before{content:"\\F01A2"}.mdi-crosshairs::before{content:"\\F01A3"}.mdi-crosshairs-gps::before{content:"\\F01A4"}.mdi-crosshairs-off::before{content:"\\F0F45"}.mdi-crosshairs-question::before{content:"\\F1136"}.mdi-crown::before{content:"\\F01A5"}.mdi-crown-outline::before{content:"\\F11D0"}.mdi-cryengine::before{content:"\\F0959"}.mdi-crystal-ball::before{content:"\\F0B2F"}.mdi-cube::before{content:"\\F01A6"}.mdi-cube-off::before{content:"\\F141C"}.mdi-cube-off-outline::before{content:"\\F141D"}.mdi-cube-outline::before{content:"\\F01A7"}.mdi-cube-scan::before{content:"\\F0B84"}.mdi-cube-send::before{content:"\\F01A8"}.mdi-cube-unfolded::before{content:"\\F01A9"}.mdi-cup::before{content:"\\F01AA"}.mdi-cup-off::before{content:"\\F05E5"}.mdi-cup-off-outline::before{content:"\\F137D"}.mdi-cup-outline::before{content:"\\F130F"}.mdi-cup-water::before{content:"\\F01AB"}.mdi-cupboard::before{content:"\\F0F46"}.mdi-cupboard-outline::before{content:"\\F0F47"}.mdi-cupcake::before{content:"\\F095A"}.mdi-curling::before{content:"\\F0863"}.mdi-currency-bdt::before{content:"\\F0864"}.mdi-currency-brl::before{content:"\\F0B85"}.mdi-currency-btc::before{content:"\\F01AC"}.mdi-currency-cny::before{content:"\\F07BA"}.mdi-currency-eth::before{content:"\\F07BB"}.mdi-currency-eur::before{content:"\\F01AD"}.mdi-currency-eur-off::before{content:"\\F1315"}.mdi-currency-gbp::before{content:"\\F01AE"}.mdi-currency-ils::before{content:"\\F0C61"}.mdi-currency-inr::before{content:"\\F01AF"}.mdi-currency-jpy::before{content:"\\F07BC"}.mdi-currency-krw::before{content:"\\F07BD"}.mdi-currency-kzt::before{content:"\\F0865"}.mdi-currency-ngn::before{content:"\\F01B0"}.mdi-currency-php::before{content:"\\F09E6"}.mdi-currency-rial::before{content:"\\F0E9C"}.mdi-currency-rub::before{content:"\\F01B1"}.mdi-currency-sign::before{content:"\\F07BE"}.mdi-currency-try::before{content:"\\F01B2"}.mdi-currency-twd::before{content:"\\F07BF"}.mdi-currency-usd::before{content:"\\F01C1"}.mdi-currency-usd-circle::before{content:"\\F116B"}.mdi-currency-usd-circle-outline::before{content:"\\F0178"}.mdi-currency-usd-off::before{content:"\\F067A"}.mdi-current-ac::before{content:"\\F1480"}.mdi-current-dc::before{content:"\\F095C"}.mdi-cursor-default::before{content:"\\F01C0"}.mdi-cursor-default-click::before{content:"\\F0CFD"}.mdi-cursor-default-click-outline::before{content:"\\F0CFE"}.mdi-cursor-default-gesture::before{content:"\\F1127"}.mdi-cursor-default-gesture-outline::before{content:"\\F1128"}.mdi-cursor-default-outline::before{content:"\\F01BF"}.mdi-cursor-move::before{content:"\\F01BE"}.mdi-cursor-pointer::before{content:"\\F01BD"}.mdi-cursor-text::before{content:"\\F05E7"}.mdi-database::before{content:"\\F01BC"}.mdi-database-check::before{content:"\\F0AA9"}.mdi-database-edit::before{content:"\\F0B86"}.mdi-database-export::before{content:"\\F095E"}.mdi-database-import::before{content:"\\F095D"}.mdi-database-lock::before{content:"\\F0AAA"}.mdi-database-marker::before{content:"\\F12F6"}.mdi-database-minus::before{content:"\\F01BB"}.mdi-database-plus::before{content:"\\F01BA"}.mdi-database-refresh::before{content:"\\F05C2"}.mdi-database-remove::before{content:"\\F0D00"}.mdi-database-search::before{content:"\\F0866"}.mdi-database-settings::before{content:"\\F0D01"}.mdi-database-sync::before{content:"\\F0CFF"}.mdi-death-star::before{content:"\\F08D8"}.mdi-death-star-variant::before{content:"\\F08D9"}.mdi-deathly-hallows::before{content:"\\F0B87"}.mdi-debian::before{content:"\\F08DA"}.mdi-debug-step-into::before{content:"\\F01B9"}.mdi-debug-step-out::before{content:"\\F01B8"}.mdi-debug-step-over::before{content:"\\F01B7"}.mdi-decagram::before{content:"\\F076C"}.mdi-decagram-outline::before{content:"\\F076D"}.mdi-decimal::before{content:"\\F10A1"}.mdi-decimal-comma::before{content:"\\F10A2"}.mdi-decimal-comma-decrease::before{content:"\\F10A3"}.mdi-decimal-comma-increase::before{content:"\\F10A4"}.mdi-decimal-decrease::before{content:"\\F01B6"}.mdi-decimal-increase::before{content:"\\F01B5"}.mdi-delete::before{content:"\\F01B4"}.mdi-delete-alert::before{content:"\\F10A5"}.mdi-delete-alert-outline::before{content:"\\F10A6"}.mdi-delete-circle::before{content:"\\F0683"}.mdi-delete-circle-outline::before{content:"\\F0B88"}.mdi-delete-empty::before{content:"\\F06CC"}.mdi-delete-empty-outline::before{content:"\\F0E9D"}.mdi-delete-forever::before{content:"\\F05E8"}.mdi-delete-forever-outline::before{content:"\\F0B89"}.mdi-delete-off::before{content:"\\F10A7"}.mdi-delete-off-outline::before{content:"\\F10A8"}.mdi-delete-outline::before{content:"\\F09E7"}.mdi-delete-restore::before{content:"\\F0819"}.mdi-delete-sweep::before{content:"\\F05E9"}.mdi-delete-sweep-outline::before{content:"\\F0C62"}.mdi-delete-variant::before{content:"\\F01B3"}.mdi-delta::before{content:"\\F01C2"}.mdi-desk::before{content:"\\F1239"}.mdi-desk-lamp::before{content:"\\F095F"}.mdi-deskphone::before{content:"\\F01C3"}.mdi-desktop-classic::before{content:"\\F07C0"}.mdi-desktop-mac::before{content:"\\F01C4"}.mdi-desktop-mac-dashboard::before{content:"\\F09E8"}.mdi-desktop-tower::before{content:"\\F01C5"}.mdi-desktop-tower-monitor::before{content:"\\F0AAB"}.mdi-details::before{content:"\\F01C6"}.mdi-dev-to::before{content:"\\F0D6E"}.mdi-developer-board::before{content:"\\F0697"}.mdi-deviantart::before{content:"\\F01C7"}.mdi-devices::before{content:"\\F0FB0"}.mdi-diabetes::before{content:"\\F1126"}.mdi-dialpad::before{content:"\\F061C"}.mdi-diameter::before{content:"\\F0C63"}.mdi-diameter-outline::before{content:"\\F0C64"}.mdi-diameter-variant::before{content:"\\F0C65"}.mdi-diamond::before{content:"\\F0B8A"}.mdi-diamond-outline::before{content:"\\F0B8B"}.mdi-diamond-stone::before{content:"\\F01C8"}.mdi-dice-1::before{content:"\\F01CA"}.mdi-dice-1-outline::before{content:"\\F114A"}.mdi-dice-2::before{content:"\\F01CB"}.mdi-dice-2-outline::before{content:"\\F114B"}.mdi-dice-3::before{content:"\\F01CC"}.mdi-dice-3-outline::before{content:"\\F114C"}.mdi-dice-4::before{content:"\\F01CD"}.mdi-dice-4-outline::before{content:"\\F114D"}.mdi-dice-5::before{content:"\\F01CE"}.mdi-dice-5-outline::before{content:"\\F114E"}.mdi-dice-6::before{content:"\\F01CF"}.mdi-dice-6-outline::before{content:"\\F114F"}.mdi-dice-d10::before{content:"\\F1153"}.mdi-dice-d10-outline::before{content:"\\F076F"}.mdi-dice-d12::before{content:"\\F1154"}.mdi-dice-d12-outline::before{content:"\\F0867"}.mdi-dice-d20::before{content:"\\F1155"}.mdi-dice-d20-outline::before{content:"\\F05EA"}.mdi-dice-d4::before{content:"\\F1150"}.mdi-dice-d4-outline::before{content:"\\F05EB"}.mdi-dice-d6::before{content:"\\F1151"}.mdi-dice-d6-outline::before{content:"\\F05ED"}.mdi-dice-d8::before{content:"\\F1152"}.mdi-dice-d8-outline::before{content:"\\F05EC"}.mdi-dice-multiple::before{content:"\\F076E"}.mdi-dice-multiple-outline::before{content:"\\F1156"}.mdi-digital-ocean::before{content:"\\F1237"}.mdi-dip-switch::before{content:"\\F07C1"}.mdi-directions::before{content:"\\F01D0"}.mdi-directions-fork::before{content:"\\F0641"}.mdi-disc::before{content:"\\F05EE"}.mdi-disc-alert::before{content:"\\F01D1"}.mdi-disc-player::before{content:"\\F0960"}.mdi-discord::before{content:"\\F066F"}.mdi-dishwasher::before{content:"\\F0AAC"}.mdi-dishwasher-alert::before{content:"\\F11B8"}.mdi-dishwasher-off::before{content:"\\F11B9"}.mdi-disqus::before{content:"\\F01D2"}.mdi-distribute-horizontal-center::before{content:"\\F11C9"}.mdi-distribute-horizontal-left::before{content:"\\F11C8"}.mdi-distribute-horizontal-right::before{content:"\\F11CA"}.mdi-distribute-vertical-bottom::before{content:"\\F11CB"}.mdi-distribute-vertical-center::before{content:"\\F11CC"}.mdi-distribute-vertical-top::before{content:"\\F11CD"}.mdi-diving-flippers::before{content:"\\F0DBF"}.mdi-diving-helmet::before{content:"\\F0DC0"}.mdi-diving-scuba::before{content:"\\F0DC1"}.mdi-diving-scuba-flag::before{content:"\\F0DC2"}.mdi-diving-scuba-tank::before{content:"\\F0DC3"}.mdi-diving-scuba-tank-multiple::before{content:"\\F0DC4"}.mdi-diving-snorkel::before{content:"\\F0DC5"}.mdi-division::before{content:"\\F01D4"}.mdi-division-box::before{content:"\\F01D5"}.mdi-dlna::before{content:"\\F0A41"}.mdi-dna::before{content:"\\F0684"}.mdi-dns::before{content:"\\F01D6"}.mdi-dns-outline::before{content:"\\F0B8C"}.mdi-do-not-disturb::before{content:"\\F0698"}.mdi-do-not-disturb-off::before{content:"\\F0699"}.mdi-dock-bottom::before{content:"\\F10A9"}.mdi-dock-left::before{content:"\\F10AA"}.mdi-dock-right::before{content:"\\F10AB"}.mdi-dock-window::before{content:"\\F10AC"}.mdi-docker::before{content:"\\F0868"}.mdi-doctor::before{content:"\\F0A42"}.mdi-dog::before{content:"\\F0A43"}.mdi-dog-service::before{content:"\\F0AAD"}.mdi-dog-side::before{content:"\\F0A44"}.mdi-dolby::before{content:"\\F06B3"}.mdi-dolly::before{content:"\\F0E9E"}.mdi-domain::before{content:"\\F01D7"}.mdi-domain-off::before{content:"\\F0D6F"}.mdi-domain-plus::before{content:"\\F10AD"}.mdi-domain-remove::before{content:"\\F10AE"}.mdi-dome-light::before{content:"\\F141E"}.mdi-domino-mask::before{content:"\\F1023"}.mdi-donkey::before{content:"\\F07C2"}.mdi-door::before{content:"\\F081A"}.mdi-door-closed::before{content:"\\F081B"}.mdi-door-closed-lock::before{content:"\\F10AF"}.mdi-door-open::before{content:"\\F081C"}.mdi-doorbell::before{content:"\\F12E6"}.mdi-doorbell-video::before{content:"\\F0869"}.mdi-dot-net::before{content:"\\F0AAE"}.mdi-dots-horizontal::before{content:"\\F01D8"}.mdi-dots-horizontal-circle::before{content:"\\F07C3"}.mdi-dots-horizontal-circle-outline::before{content:"\\F0B8D"}.mdi-dots-vertical::before{content:"\\F01D9"}.mdi-dots-vertical-circle::before{content:"\\F07C4"}.mdi-dots-vertical-circle-outline::before{content:"\\F0B8E"}.mdi-douban::before{content:"\\F069A"}.mdi-download::before{content:"\\F01DA"}.mdi-download-box::before{content:"\\F1462"}.mdi-download-box-outline::before{content:"\\F1463"}.mdi-download-circle::before{content:"\\F1464"}.mdi-download-circle-outline::before{content:"\\F1465"}.mdi-download-lock::before{content:"\\F1320"}.mdi-download-lock-outline::before{content:"\\F1321"}.mdi-download-multiple::before{content:"\\F09E9"}.mdi-download-network::before{content:"\\F06F4"}.mdi-download-network-outline::before{content:"\\F0C66"}.mdi-download-off::before{content:"\\F10B0"}.mdi-download-off-outline::before{content:"\\F10B1"}.mdi-download-outline::before{content:"\\F0B8F"}.mdi-drag::before{content:"\\F01DB"}.mdi-drag-horizontal::before{content:"\\F01DC"}.mdi-drag-horizontal-variant::before{content:"\\F12F0"}.mdi-drag-variant::before{content:"\\F0B90"}.mdi-drag-vertical::before{content:"\\F01DD"}.mdi-drag-vertical-variant::before{content:"\\F12F1"}.mdi-drama-masks::before{content:"\\F0D02"}.mdi-draw::before{content:"\\F0F49"}.mdi-drawing::before{content:"\\F01DE"}.mdi-drawing-box::before{content:"\\F01DF"}.mdi-dresser::before{content:"\\F0F4A"}.mdi-dresser-outline::before{content:"\\F0F4B"}.mdi-drone::before{content:"\\F01E2"}.mdi-dropbox::before{content:"\\F01E3"}.mdi-drupal::before{content:"\\F01E4"}.mdi-duck::before{content:"\\F01E5"}.mdi-dumbbell::before{content:"\\F01E6"}.mdi-dump-truck::before{content:"\\F0C67"}.mdi-ear-hearing::before{content:"\\F07C5"}.mdi-ear-hearing-off::before{content:"\\F0A45"}.mdi-earth::before{content:"\\F01E7"}.mdi-earth-arrow-right::before{content:"\\F1311"}.mdi-earth-box::before{content:"\\F06CD"}.mdi-earth-box-minus::before{content:"\\F1407"}.mdi-earth-box-off::before{content:"\\F06CE"}.mdi-earth-box-plus::before{content:"\\F1406"}.mdi-earth-box-remove::before{content:"\\F1408"}.mdi-earth-minus::before{content:"\\F1404"}.mdi-earth-off::before{content:"\\F01E8"}.mdi-earth-plus::before{content:"\\F1403"}.mdi-earth-remove::before{content:"\\F1405"}.mdi-egg::before{content:"\\F0AAF"}.mdi-egg-easter::before{content:"\\F0AB0"}.mdi-egg-off::before{content:"\\F13F0"}.mdi-egg-off-outline::before{content:"\\F13F1"}.mdi-egg-outline::before{content:"\\F13F2"}.mdi-eight-track::before{content:"\\F09EA"}.mdi-eject::before{content:"\\F01EA"}.mdi-eject-outline::before{content:"\\F0B91"}.mdi-electric-switch::before{content:"\\F0E9F"}.mdi-electric-switch-closed::before{content:"\\F10D9"}.mdi-electron-framework::before{content:"\\F1024"}.mdi-elephant::before{content:"\\F07C6"}.mdi-elevation-decline::before{content:"\\F01EB"}.mdi-elevation-rise::before{content:"\\F01EC"}.mdi-elevator::before{content:"\\F01ED"}.mdi-elevator-down::before{content:"\\F12C2"}.mdi-elevator-passenger::before{content:"\\F1381"}.mdi-elevator-up::before{content:"\\F12C1"}.mdi-ellipse::before{content:"\\F0EA0"}.mdi-ellipse-outline::before{content:"\\F0EA1"}.mdi-email::before{content:"\\F01EE"}.mdi-email-alert::before{content:"\\F06CF"}.mdi-email-alert-outline::before{content:"\\F0D42"}.mdi-email-box::before{content:"\\F0D03"}.mdi-email-check::before{content:"\\F0AB1"}.mdi-email-check-outline::before{content:"\\F0AB2"}.mdi-email-edit::before{content:"\\F0EE3"}.mdi-email-edit-outline::before{content:"\\F0EE4"}.mdi-email-lock::before{content:"\\F01F1"}.mdi-email-mark-as-unread::before{content:"\\F0B92"}.mdi-email-minus::before{content:"\\F0EE5"}.mdi-email-minus-outline::before{content:"\\F0EE6"}.mdi-email-multiple::before{content:"\\F0EE7"}.mdi-email-multiple-outline::before{content:"\\F0EE8"}.mdi-email-newsletter::before{content:"\\F0FB1"}.mdi-email-off::before{content:"\\F13E3"}.mdi-email-off-outline::before{content:"\\F13E4"}.mdi-email-open::before{content:"\\F01EF"}.mdi-email-open-multiple::before{content:"\\F0EE9"}.mdi-email-open-multiple-outline::before{content:"\\F0EEA"}.mdi-email-open-outline::before{content:"\\F05EF"}.mdi-email-outline::before{content:"\\F01F0"}.mdi-email-plus::before{content:"\\F09EB"}.mdi-email-plus-outline::before{content:"\\F09EC"}.mdi-email-receive::before{content:"\\F10DA"}.mdi-email-receive-outline::before{content:"\\F10DB"}.mdi-email-search::before{content:"\\F0961"}.mdi-email-search-outline::before{content:"\\F0962"}.mdi-email-send::before{content:"\\F10DC"}.mdi-email-send-outline::before{content:"\\F10DD"}.mdi-email-sync::before{content:"\\F12C7"}.mdi-email-sync-outline::before{content:"\\F12C8"}.mdi-email-variant::before{content:"\\F05F0"}.mdi-ember::before{content:"\\F0B30"}.mdi-emby::before{content:"\\F06B4"}.mdi-emoticon::before{content:"\\F0C68"}.mdi-emoticon-angry::before{content:"\\F0C69"}.mdi-emoticon-angry-outline::before{content:"\\F0C6A"}.mdi-emoticon-confused::before{content:"\\F10DE"}.mdi-emoticon-confused-outline::before{content:"\\F10DF"}.mdi-emoticon-cool::before{content:"\\F0C6B"}.mdi-emoticon-cool-outline::before{content:"\\F01F3"}.mdi-emoticon-cry::before{content:"\\F0C6C"}.mdi-emoticon-cry-outline::before{content:"\\F0C6D"}.mdi-emoticon-dead::before{content:"\\F0C6E"}.mdi-emoticon-dead-outline::before{content:"\\F069B"}.mdi-emoticon-devil::before{content:"\\F0C6F"}.mdi-emoticon-devil-outline::before{content:"\\F01F4"}.mdi-emoticon-excited::before{content:"\\F0C70"}.mdi-emoticon-excited-outline::before{content:"\\F069C"}.mdi-emoticon-frown::before{content:"\\F0F4C"}.mdi-emoticon-frown-outline::before{content:"\\F0F4D"}.mdi-emoticon-happy::before{content:"\\F0C71"}.mdi-emoticon-happy-outline::before{content:"\\F01F5"}.mdi-emoticon-kiss::before{content:"\\F0C72"}.mdi-emoticon-kiss-outline::before{content:"\\F0C73"}.mdi-emoticon-lol::before{content:"\\F1214"}.mdi-emoticon-lol-outline::before{content:"\\F1215"}.mdi-emoticon-neutral::before{content:"\\F0C74"}.mdi-emoticon-neutral-outline::before{content:"\\F01F6"}.mdi-emoticon-outline::before{content:"\\F01F2"}.mdi-emoticon-poop::before{content:"\\F01F7"}.mdi-emoticon-poop-outline::before{content:"\\F0C75"}.mdi-emoticon-sad::before{content:"\\F0C76"}.mdi-emoticon-sad-outline::before{content:"\\F01F8"}.mdi-emoticon-tongue::before{content:"\\F01F9"}.mdi-emoticon-tongue-outline::before{content:"\\F0C77"}.mdi-emoticon-wink::before{content:"\\F0C78"}.mdi-emoticon-wink-outline::before{content:"\\F0C79"}.mdi-engine::before{content:"\\F01FA"}.mdi-engine-off::before{content:"\\F0A46"}.mdi-engine-off-outline::before{content:"\\F0A47"}.mdi-engine-outline::before{content:"\\F01FB"}.mdi-epsilon::before{content:"\\F10E0"}.mdi-equal::before{content:"\\F01FC"}.mdi-equal-box::before{content:"\\F01FD"}.mdi-equalizer::before{content:"\\F0EA2"}.mdi-equalizer-outline::before{content:"\\F0EA3"}.mdi-eraser::before{content:"\\F01FE"}.mdi-eraser-variant::before{content:"\\F0642"}.mdi-escalator::before{content:"\\F01FF"}.mdi-escalator-box::before{content:"\\F1399"}.mdi-escalator-down::before{content:"\\F12C0"}.mdi-escalator-up::before{content:"\\F12BF"}.mdi-eslint::before{content:"\\F0C7A"}.mdi-et::before{content:"\\F0AB3"}.mdi-ethereum::before{content:"\\F086A"}.mdi-ethernet::before{content:"\\F0200"}.mdi-ethernet-cable::before{content:"\\F0201"}.mdi-ethernet-cable-off::before{content:"\\F0202"}.mdi-ev-station::before{content:"\\F05F1"}.mdi-evernote::before{content:"\\F0204"}.mdi-excavator::before{content:"\\F1025"}.mdi-exclamation::before{content:"\\F0205"}.mdi-exclamation-thick::before{content:"\\F1238"}.mdi-exit-run::before{content:"\\F0A48"}.mdi-exit-to-app::before{content:"\\F0206"}.mdi-expand-all::before{content:"\\F0AB4"}.mdi-expand-all-outline::before{content:"\\F0AB5"}.mdi-expansion-card::before{content:"\\F08AE"}.mdi-expansion-card-variant::before{content:"\\F0FB2"}.mdi-exponent::before{content:"\\F0963"}.mdi-exponent-box::before{content:"\\F0964"}.mdi-export::before{content:"\\F0207"}.mdi-export-variant::before{content:"\\F0B93"}.mdi-eye::before{content:"\\F0208"}.mdi-eye-check::before{content:"\\F0D04"}.mdi-eye-check-outline::before{content:"\\F0D05"}.mdi-eye-circle::before{content:"\\F0B94"}.mdi-eye-circle-outline::before{content:"\\F0B95"}.mdi-eye-minus::before{content:"\\F1026"}.mdi-eye-minus-outline::before{content:"\\F1027"}.mdi-eye-off::before{content:"\\F0209"}.mdi-eye-off-outline::before{content:"\\F06D1"}.mdi-eye-outline::before{content:"\\F06D0"}.mdi-eye-plus::before{content:"\\F086B"}.mdi-eye-plus-outline::before{content:"\\F086C"}.mdi-eye-settings::before{content:"\\F086D"}.mdi-eye-settings-outline::before{content:"\\F086E"}.mdi-eyedropper::before{content:"\\F020A"}.mdi-eyedropper-minus::before{content:"\\F13DD"}.mdi-eyedropper-off::before{content:"\\F13DF"}.mdi-eyedropper-plus::before{content:"\\F13DC"}.mdi-eyedropper-remove::before{content:"\\F13DE"}.mdi-eyedropper-variant::before{content:"\\F020B"}.mdi-face::before{content:"\\F0643"}.mdi-face-agent::before{content:"\\F0D70"}.mdi-face-outline::before{content:"\\F0B96"}.mdi-face-profile::before{content:"\\F0644"}.mdi-face-profile-woman::before{content:"\\F1076"}.mdi-face-recognition::before{content:"\\F0C7B"}.mdi-face-woman::before{content:"\\F1077"}.mdi-face-woman-outline::before{content:"\\F1078"}.mdi-facebook::before{content:"\\F020C"}.mdi-facebook-messenger::before{content:"\\F020E"}.mdi-facebook-workplace::before{content:"\\F0B31"}.mdi-factory::before{content:"\\F020F"}.mdi-fan::before{content:"\\F0210"}.mdi-fan-alert::before{content:"\\F146C"}.mdi-fan-chevron-down::before{content:"\\F146D"}.mdi-fan-chevron-up::before{content:"\\F146E"}.mdi-fan-minus::before{content:"\\F1470"}.mdi-fan-off::before{content:"\\F081D"}.mdi-fan-plus::before{content:"\\F146F"}.mdi-fan-remove::before{content:"\\F1471"}.mdi-fan-speed-1::before{content:"\\F1472"}.mdi-fan-speed-2::before{content:"\\F1473"}.mdi-fan-speed-3::before{content:"\\F1474"}.mdi-fast-forward::before{content:"\\F0211"}.mdi-fast-forward-10::before{content:"\\F0D71"}.mdi-fast-forward-30::before{content:"\\F0D06"}.mdi-fast-forward-5::before{content:"\\F11F8"}.mdi-fast-forward-outline::before{content:"\\F06D2"}.mdi-fax::before{content:"\\F0212"}.mdi-feather::before{content:"\\F06D3"}.mdi-feature-search::before{content:"\\F0A49"}.mdi-feature-search-outline::before{content:"\\F0A4A"}.mdi-fedora::before{content:"\\F08DB"}.mdi-fencing::before{content:"\\F14C1"}.mdi-ferris-wheel::before{content:"\\F0EA4"}.mdi-ferry::before{content:"\\F0213"}.mdi-file::before{content:"\\F0214"}.mdi-file-account::before{content:"\\F073B"}.mdi-file-account-outline::before{content:"\\F1028"}.mdi-file-alert::before{content:"\\F0A4B"}.mdi-file-alert-outline::before{content:"\\F0A4C"}.mdi-file-cabinet::before{content:"\\F0AB6"}.mdi-file-cad::before{content:"\\F0EEB"}.mdi-file-cad-box::before{content:"\\F0EEC"}.mdi-file-cancel::before{content:"\\F0DC6"}.mdi-file-cancel-outline::before{content:"\\F0DC7"}.mdi-file-certificate::before{content:"\\F1186"}.mdi-file-certificate-outline::before{content:"\\F1187"}.mdi-file-chart::before{content:"\\F0215"}.mdi-file-chart-outline::before{content:"\\F1029"}.mdi-file-check::before{content:"\\F0216"}.mdi-file-check-outline::before{content:"\\F0E29"}.mdi-file-clock::before{content:"\\F12E1"}.mdi-file-clock-outline::before{content:"\\F12E2"}.mdi-file-cloud::before{content:"\\F0217"}.mdi-file-cloud-outline::before{content:"\\F102A"}.mdi-file-code::before{content:"\\F022E"}.mdi-file-code-outline::before{content:"\\F102B"}.mdi-file-cog::before{content:"\\F107B"}.mdi-file-cog-outline::before{content:"\\F107C"}.mdi-file-compare::before{content:"\\F08AA"}.mdi-file-delimited::before{content:"\\F0218"}.mdi-file-delimited-outline::before{content:"\\F0EA5"}.mdi-file-document::before{content:"\\F0219"}.mdi-file-document-edit::before{content:"\\F0DC8"}.mdi-file-document-edit-outline::before{content:"\\F0DC9"}.mdi-file-document-outline::before{content:"\\F09EE"}.mdi-file-download::before{content:"\\F0965"}.mdi-file-download-outline::before{content:"\\F0966"}.mdi-file-edit::before{content:"\\F11E7"}.mdi-file-edit-outline::before{content:"\\F11E8"}.mdi-file-excel::before{content:"\\F021B"}.mdi-file-excel-box::before{content:"\\F021C"}.mdi-file-excel-box-outline::before{content:"\\F102C"}.mdi-file-excel-outline::before{content:"\\F102D"}.mdi-file-export::before{content:"\\F021D"}.mdi-file-export-outline::before{content:"\\F102E"}.mdi-file-eye::before{content:"\\F0DCA"}.mdi-file-eye-outline::before{content:"\\F0DCB"}.mdi-file-find::before{content:"\\F021E"}.mdi-file-find-outline::before{content:"\\F0B97"}.mdi-file-hidden::before{content:"\\F0613"}.mdi-file-image::before{content:"\\F021F"}.mdi-file-image-outline::before{content:"\\F0EB0"}.mdi-file-import::before{content:"\\F0220"}.mdi-file-import-outline::before{content:"\\F102F"}.mdi-file-key::before{content:"\\F1184"}.mdi-file-key-outline::before{content:"\\F1185"}.mdi-file-link::before{content:"\\F1177"}.mdi-file-link-outline::before{content:"\\F1178"}.mdi-file-lock::before{content:"\\F0221"}.mdi-file-lock-outline::before{content:"\\F1030"}.mdi-file-move::before{content:"\\F0AB9"}.mdi-file-move-outline::before{content:"\\F1031"}.mdi-file-multiple::before{content:"\\F0222"}.mdi-file-multiple-outline::before{content:"\\F1032"}.mdi-file-music::before{content:"\\F0223"}.mdi-file-music-outline::before{content:"\\F0E2A"}.mdi-file-outline::before{content:"\\F0224"}.mdi-file-pdf::before{content:"\\F0225"}.mdi-file-pdf-box::before{content:"\\F0226"}.mdi-file-pdf-box-outline::before{content:"\\F0FB3"}.mdi-file-pdf-outline::before{content:"\\F0E2D"}.mdi-file-percent::before{content:"\\F081E"}.mdi-file-percent-outline::before{content:"\\F1033"}.mdi-file-phone::before{content:"\\F1179"}.mdi-file-phone-outline::before{content:"\\F117A"}.mdi-file-plus::before{content:"\\F0752"}.mdi-file-plus-outline::before{content:"\\F0EED"}.mdi-file-powerpoint::before{content:"\\F0227"}.mdi-file-powerpoint-box::before{content:"\\F0228"}.mdi-file-powerpoint-box-outline::before{content:"\\F1034"}.mdi-file-powerpoint-outline::before{content:"\\F1035"}.mdi-file-presentation-box::before{content:"\\F0229"}.mdi-file-question::before{content:"\\F086F"}.mdi-file-question-outline::before{content:"\\F1036"}.mdi-file-refresh::before{content:"\\F0918"}.mdi-file-refresh-outline::before{content:"\\F0541"}.mdi-file-remove::before{content:"\\F0B98"}.mdi-file-remove-outline::before{content:"\\F1037"}.mdi-file-replace::before{content:"\\F0B32"}.mdi-file-replace-outline::before{content:"\\F0B33"}.mdi-file-restore::before{content:"\\F0670"}.mdi-file-restore-outline::before{content:"\\F1038"}.mdi-file-search::before{content:"\\F0C7C"}.mdi-file-search-outline::before{content:"\\F0C7D"}.mdi-file-send::before{content:"\\F022A"}.mdi-file-send-outline::before{content:"\\F1039"}.mdi-file-settings::before{content:"\\F1079"}.mdi-file-settings-outline::before{content:"\\F107A"}.mdi-file-star::before{content:"\\F103A"}.mdi-file-star-outline::before{content:"\\F103B"}.mdi-file-swap::before{content:"\\F0FB4"}.mdi-file-swap-outline::before{content:"\\F0FB5"}.mdi-file-sync::before{content:"\\F1216"}.mdi-file-sync-outline::before{content:"\\F1217"}.mdi-file-table::before{content:"\\F0C7E"}.mdi-file-table-box::before{content:"\\F10E1"}.mdi-file-table-box-multiple::before{content:"\\F10E2"}.mdi-file-table-box-multiple-outline::before{content:"\\F10E3"}.mdi-file-table-box-outline::before{content:"\\F10E4"}.mdi-file-table-outline::before{content:"\\F0C7F"}.mdi-file-tree::before{content:"\\F0645"}.mdi-file-tree-outline::before{content:"\\F13D2"}.mdi-file-undo::before{content:"\\F08DC"}.mdi-file-undo-outline::before{content:"\\F103C"}.mdi-file-upload::before{content:"\\F0A4D"}.mdi-file-upload-outline::before{content:"\\F0A4E"}.mdi-file-video::before{content:"\\F022B"}.mdi-file-video-outline::before{content:"\\F0E2C"}.mdi-file-word::before{content:"\\F022C"}.mdi-file-word-box::before{content:"\\F022D"}.mdi-file-word-box-outline::before{content:"\\F103D"}.mdi-file-word-outline::before{content:"\\F103E"}.mdi-film::before{content:"\\F022F"}.mdi-filmstrip::before{content:"\\F0230"}.mdi-filmstrip-box::before{content:"\\F0332"}.mdi-filmstrip-box-multiple::before{content:"\\F0D18"}.mdi-filmstrip-off::before{content:"\\F0231"}.mdi-filter::before{content:"\\F0232"}.mdi-filter-menu::before{content:"\\F10E5"}.mdi-filter-menu-outline::before{content:"\\F10E6"}.mdi-filter-minus::before{content:"\\F0EEE"}.mdi-filter-minus-outline::before{content:"\\F0EEF"}.mdi-filter-outline::before{content:"\\F0233"}.mdi-filter-plus::before{content:"\\F0EF0"}.mdi-filter-plus-outline::before{content:"\\F0EF1"}.mdi-filter-remove::before{content:"\\F0234"}.mdi-filter-remove-outline::before{content:"\\F0235"}.mdi-filter-variant::before{content:"\\F0236"}.mdi-filter-variant-minus::before{content:"\\F1112"}.mdi-filter-variant-plus::before{content:"\\F1113"}.mdi-filter-variant-remove::before{content:"\\F103F"}.mdi-finance::before{content:"\\F081F"}.mdi-find-replace::before{content:"\\F06D4"}.mdi-fingerprint::before{content:"\\F0237"}.mdi-fingerprint-off::before{content:"\\F0EB1"}.mdi-fire::before{content:"\\F0238"}.mdi-fire-extinguisher::before{content:"\\F0EF2"}.mdi-fire-hydrant::before{content:"\\F1137"}.mdi-fire-hydrant-alert::before{content:"\\F1138"}.mdi-fire-hydrant-off::before{content:"\\F1139"}.mdi-fire-truck::before{content:"\\F08AB"}.mdi-firebase::before{content:"\\F0967"}.mdi-firefox::before{content:"\\F0239"}.mdi-fireplace::before{content:"\\F0E2E"}.mdi-fireplace-off::before{content:"\\F0E2F"}.mdi-firework::before{content:"\\F0E30"}.mdi-fish::before{content:"\\F023A"}.mdi-fish-off::before{content:"\\F13F3"}.mdi-fishbowl::before{content:"\\F0EF3"}.mdi-fishbowl-outline::before{content:"\\F0EF4"}.mdi-fit-to-page::before{content:"\\F0EF5"}.mdi-fit-to-page-outline::before{content:"\\F0EF6"}.mdi-flag::before{content:"\\F023B"}.mdi-flag-checkered::before{content:"\\F023C"}.mdi-flag-minus::before{content:"\\F0B99"}.mdi-flag-minus-outline::before{content:"\\F10B2"}.mdi-flag-outline::before{content:"\\F023D"}.mdi-flag-plus::before{content:"\\F0B9A"}.mdi-flag-plus-outline::before{content:"\\F10B3"}.mdi-flag-remove::before{content:"\\F0B9B"}.mdi-flag-remove-outline::before{content:"\\F10B4"}.mdi-flag-triangle::before{content:"\\F023F"}.mdi-flag-variant::before{content:"\\F0240"}.mdi-flag-variant-outline::before{content:"\\F023E"}.mdi-flare::before{content:"\\F0D72"}.mdi-flash::before{content:"\\F0241"}.mdi-flash-alert::before{content:"\\F0EF7"}.mdi-flash-alert-outline::before{content:"\\F0EF8"}.mdi-flash-auto::before{content:"\\F0242"}.mdi-flash-circle::before{content:"\\F0820"}.mdi-flash-off::before{content:"\\F0243"}.mdi-flash-outline::before{content:"\\F06D5"}.mdi-flash-red-eye::before{content:"\\F067B"}.mdi-flashlight::before{content:"\\F0244"}.mdi-flashlight-off::before{content:"\\F0245"}.mdi-flask::before{content:"\\F0093"}.mdi-flask-empty::before{content:"\\F0094"}.mdi-flask-empty-minus::before{content:"\\F123A"}.mdi-flask-empty-minus-outline::before{content:"\\F123B"}.mdi-flask-empty-off::before{content:"\\F13F4"}.mdi-flask-empty-off-outline::before{content:"\\F13F5"}.mdi-flask-empty-outline::before{content:"\\F0095"}.mdi-flask-empty-plus::before{content:"\\F123C"}.mdi-flask-empty-plus-outline::before{content:"\\F123D"}.mdi-flask-empty-remove::before{content:"\\F123E"}.mdi-flask-empty-remove-outline::before{content:"\\F123F"}.mdi-flask-minus::before{content:"\\F1240"}.mdi-flask-minus-outline::before{content:"\\F1241"}.mdi-flask-off::before{content:"\\F13F6"}.mdi-flask-off-outline::before{content:"\\F13F7"}.mdi-flask-outline::before{content:"\\F0096"}.mdi-flask-plus::before{content:"\\F1242"}.mdi-flask-plus-outline::before{content:"\\F1243"}.mdi-flask-remove::before{content:"\\F1244"}.mdi-flask-remove-outline::before{content:"\\F1245"}.mdi-flask-round-bottom::before{content:"\\F124B"}.mdi-flask-round-bottom-empty::before{content:"\\F124C"}.mdi-flask-round-bottom-empty-outline::before{content:"\\F124D"}.mdi-flask-round-bottom-outline::before{content:"\\F124E"}.mdi-fleur-de-lis::before{content:"\\F1303"}.mdi-flip-horizontal::before{content:"\\F10E7"}.mdi-flip-to-back::before{content:"\\F0247"}.mdi-flip-to-front::before{content:"\\F0248"}.mdi-flip-vertical::before{content:"\\F10E8"}.mdi-floor-lamp::before{content:"\\F08DD"}.mdi-floor-lamp-dual::before{content:"\\F1040"}.mdi-floor-lamp-variant::before{content:"\\F1041"}.mdi-floor-plan::before{content:"\\F0821"}.mdi-floppy::before{content:"\\F0249"}.mdi-floppy-variant::before{content:"\\F09EF"}.mdi-flower::before{content:"\\F024A"}.mdi-flower-outline::before{content:"\\F09F0"}.mdi-flower-poppy::before{content:"\\F0D08"}.mdi-flower-tulip::before{content:"\\F09F1"}.mdi-flower-tulip-outline::before{content:"\\F09F2"}.mdi-focus-auto::before{content:"\\F0F4E"}.mdi-focus-field::before{content:"\\F0F4F"}.mdi-focus-field-horizontal::before{content:"\\F0F50"}.mdi-focus-field-vertical::before{content:"\\F0F51"}.mdi-folder::before{content:"\\F024B"}.mdi-folder-account::before{content:"\\F024C"}.mdi-folder-account-outline::before{content:"\\F0B9C"}.mdi-folder-alert::before{content:"\\F0DCC"}.mdi-folder-alert-outline::before{content:"\\F0DCD"}.mdi-folder-clock::before{content:"\\F0ABA"}.mdi-folder-clock-outline::before{content:"\\F0ABB"}.mdi-folder-cog::before{content:"\\F107F"}.mdi-folder-cog-outline::before{content:"\\F1080"}.mdi-folder-download::before{content:"\\F024D"}.mdi-folder-download-outline::before{content:"\\F10E9"}.mdi-folder-edit::before{content:"\\F08DE"}.mdi-folder-edit-outline::before{content:"\\F0DCE"}.mdi-folder-google-drive::before{content:"\\F024E"}.mdi-folder-heart::before{content:"\\F10EA"}.mdi-folder-heart-outline::before{content:"\\F10EB"}.mdi-folder-home::before{content:"\\F10B5"}.mdi-folder-home-outline::before{content:"\\F10B6"}.mdi-folder-image::before{content:"\\F024F"}.mdi-folder-information::before{content:"\\F10B7"}.mdi-folder-information-outline::before{content:"\\F10B8"}.mdi-folder-key::before{content:"\\F08AC"}.mdi-folder-key-network::before{content:"\\F08AD"}.mdi-folder-key-network-outline::before{content:"\\F0C80"}.mdi-folder-key-outline::before{content:"\\F10EC"}.mdi-folder-lock::before{content:"\\F0250"}.mdi-folder-lock-open::before{content:"\\F0251"}.mdi-folder-marker::before{content:"\\F126D"}.mdi-folder-marker-outline::before{content:"\\F126E"}.mdi-folder-move::before{content:"\\F0252"}.mdi-folder-move-outline::before{content:"\\F1246"}.mdi-folder-multiple::before{content:"\\F0253"}.mdi-folder-multiple-image::before{content:"\\F0254"}.mdi-folder-multiple-outline::before{content:"\\F0255"}.mdi-folder-multiple-plus::before{content:"\\F147E"}.mdi-folder-multiple-plus-outline::before{content:"\\F147F"}.mdi-folder-music::before{content:"\\F1359"}.mdi-folder-music-outline::before{content:"\\F135A"}.mdi-folder-network::before{content:"\\F0870"}.mdi-folder-network-outline::before{content:"\\F0C81"}.mdi-folder-open::before{content:"\\F0770"}.mdi-folder-open-outline::before{content:"\\F0DCF"}.mdi-folder-outline::before{content:"\\F0256"}.mdi-folder-plus::before{content:"\\F0257"}.mdi-folder-plus-outline::before{content:"\\F0B9D"}.mdi-folder-pound::before{content:"\\F0D09"}.mdi-folder-pound-outline::before{content:"\\F0D0A"}.mdi-folder-refresh::before{content:"\\F0749"}.mdi-folder-refresh-outline::before{content:"\\F0542"}.mdi-folder-remove::before{content:"\\F0258"}.mdi-folder-remove-outline::before{content:"\\F0B9E"}.mdi-folder-search::before{content:"\\F0968"}.mdi-folder-search-outline::before{content:"\\F0969"}.mdi-folder-settings::before{content:"\\F107D"}.mdi-folder-settings-outline::before{content:"\\F107E"}.mdi-folder-star::before{content:"\\F069D"}.mdi-folder-star-multiple::before{content:"\\F13D3"}.mdi-folder-star-multiple-outline::before{content:"\\F13D4"}.mdi-folder-star-outline::before{content:"\\F0B9F"}.mdi-folder-swap::before{content:"\\F0FB6"}.mdi-folder-swap-outline::before{content:"\\F0FB7"}.mdi-folder-sync::before{content:"\\F0D0B"}.mdi-folder-sync-outline::before{content:"\\F0D0C"}.mdi-folder-table::before{content:"\\F12E3"}.mdi-folder-table-outline::before{content:"\\F12E4"}.mdi-folder-text::before{content:"\\F0C82"}.mdi-folder-text-outline::before{content:"\\F0C83"}.mdi-folder-upload::before{content:"\\F0259"}.mdi-folder-upload-outline::before{content:"\\F10ED"}.mdi-folder-zip::before{content:"\\F06EB"}.mdi-folder-zip-outline::before{content:"\\F07B9"}.mdi-font-awesome::before{content:"\\F003A"}.mdi-food::before{content:"\\F025A"}.mdi-food-apple::before{content:"\\F025B"}.mdi-food-apple-outline::before{content:"\\F0C84"}.mdi-food-croissant::before{content:"\\F07C8"}.mdi-food-drumstick::before{content:"\\F141F"}.mdi-food-drumstick-off::before{content:"\\F1468"}.mdi-food-drumstick-off-outline::before{content:"\\F1469"}.mdi-food-drumstick-outline::before{content:"\\F1420"}.mdi-food-fork-drink::before{content:"\\F05F2"}.mdi-food-off::before{content:"\\F05F3"}.mdi-food-steak::before{content:"\\F146A"}.mdi-food-steak-off::before{content:"\\F146B"}.mdi-food-variant::before{content:"\\F025C"}.mdi-food-variant-off::before{content:"\\F13E5"}.mdi-foot-print::before{content:"\\F0F52"}.mdi-football::before{content:"\\F025D"}.mdi-football-australian::before{content:"\\F025E"}.mdi-football-helmet::before{content:"\\F025F"}.mdi-forklift::before{content:"\\F07C9"}.mdi-form-dropdown::before{content:"\\F1400"}.mdi-form-select::before{content:"\\F1401"}.mdi-form-textarea::before{content:"\\F1095"}.mdi-form-textbox::before{content:"\\F060E"}.mdi-form-textbox-lock::before{content:"\\F135D"}.mdi-form-textbox-password::before{content:"\\F07F5"}.mdi-format-align-bottom::before{content:"\\F0753"}.mdi-format-align-center::before{content:"\\F0260"}.mdi-format-align-justify::before{content:"\\F0261"}.mdi-format-align-left::before{content:"\\F0262"}.mdi-format-align-middle::before{content:"\\F0754"}.mdi-format-align-right::before{content:"\\F0263"}.mdi-format-align-top::before{content:"\\F0755"}.mdi-format-annotation-minus::before{content:"\\F0ABC"}.mdi-format-annotation-plus::before{content:"\\F0646"}.mdi-format-bold::before{content:"\\F0264"}.mdi-format-clear::before{content:"\\F0265"}.mdi-format-color-fill::before{content:"\\F0266"}.mdi-format-color-highlight::before{content:"\\F0E31"}.mdi-format-color-marker-cancel::before{content:"\\F1313"}.mdi-format-color-text::before{content:"\\F069E"}.mdi-format-columns::before{content:"\\F08DF"}.mdi-format-float-center::before{content:"\\F0267"}.mdi-format-float-left::before{content:"\\F0268"}.mdi-format-float-none::before{content:"\\F0269"}.mdi-format-float-right::before{content:"\\F026A"}.mdi-format-font::before{content:"\\F06D6"}.mdi-format-font-size-decrease::before{content:"\\F09F3"}.mdi-format-font-size-increase::before{content:"\\F09F4"}.mdi-format-header-1::before{content:"\\F026B"}.mdi-format-header-2::before{content:"\\F026C"}.mdi-format-header-3::before{content:"\\F026D"}.mdi-format-header-4::before{content:"\\F026E"}.mdi-format-header-5::before{content:"\\F026F"}.mdi-format-header-6::before{content:"\\F0270"}.mdi-format-header-decrease::before{content:"\\F0271"}.mdi-format-header-equal::before{content:"\\F0272"}.mdi-format-header-increase::before{content:"\\F0273"}.mdi-format-header-pound::before{content:"\\F0274"}.mdi-format-horizontal-align-center::before{content:"\\F061E"}.mdi-format-horizontal-align-left::before{content:"\\F061F"}.mdi-format-horizontal-align-right::before{content:"\\F0620"}.mdi-format-indent-decrease::before{content:"\\F0275"}.mdi-format-indent-increase::before{content:"\\F0276"}.mdi-format-italic::before{content:"\\F0277"}.mdi-format-letter-case::before{content:"\\F0B34"}.mdi-format-letter-case-lower::before{content:"\\F0B35"}.mdi-format-letter-case-upper::before{content:"\\F0B36"}.mdi-format-letter-ends-with::before{content:"\\F0FB8"}.mdi-format-letter-matches::before{content:"\\F0FB9"}.mdi-format-letter-starts-with::before{content:"\\F0FBA"}.mdi-format-line-spacing::before{content:"\\F0278"}.mdi-format-line-style::before{content:"\\F05C8"}.mdi-format-line-weight::before{content:"\\F05C9"}.mdi-format-list-bulleted::before{content:"\\F0279"}.mdi-format-list-bulleted-square::before{content:"\\F0DD0"}.mdi-format-list-bulleted-triangle::before{content:"\\F0EB2"}.mdi-format-list-bulleted-type::before{content:"\\F027A"}.mdi-format-list-checkbox::before{content:"\\F096A"}.mdi-format-list-checks::before{content:"\\F0756"}.mdi-format-list-numbered::before{content:"\\F027B"}.mdi-format-list-numbered-rtl::before{content:"\\F0D0D"}.mdi-format-list-text::before{content:"\\F126F"}.mdi-format-overline::before{content:"\\F0EB3"}.mdi-format-page-break::before{content:"\\F06D7"}.mdi-format-paint::before{content:"\\F027C"}.mdi-format-paragraph::before{content:"\\F027D"}.mdi-format-pilcrow::before{content:"\\F06D8"}.mdi-format-quote-close::before{content:"\\F027E"}.mdi-format-quote-close-outline::before{content:"\\F11A8"}.mdi-format-quote-open::before{content:"\\F0757"}.mdi-format-quote-open-outline::before{content:"\\F11A7"}.mdi-format-rotate-90::before{content:"\\F06AA"}.mdi-format-section::before{content:"\\F069F"}.mdi-format-size::before{content:"\\F027F"}.mdi-format-strikethrough::before{content:"\\F0280"}.mdi-format-strikethrough-variant::before{content:"\\F0281"}.mdi-format-subscript::before{content:"\\F0282"}.mdi-format-superscript::before{content:"\\F0283"}.mdi-format-text::before{content:"\\F0284"}.mdi-format-text-rotation-angle-down::before{content:"\\F0FBB"}.mdi-format-text-rotation-angle-up::before{content:"\\F0FBC"}.mdi-format-text-rotation-down::before{content:"\\F0D73"}.mdi-format-text-rotation-down-vertical::before{content:"\\F0FBD"}.mdi-format-text-rotation-none::before{content:"\\F0D74"}.mdi-format-text-rotation-up::before{content:"\\F0FBE"}.mdi-format-text-rotation-vertical::before{content:"\\F0FBF"}.mdi-format-text-variant::before{content:"\\F0E32"}.mdi-format-text-wrapping-clip::before{content:"\\F0D0E"}.mdi-format-text-wrapping-overflow::before{content:"\\F0D0F"}.mdi-format-text-wrapping-wrap::before{content:"\\F0D10"}.mdi-format-textbox::before{content:"\\F0D11"}.mdi-format-textdirection-l-to-r::before{content:"\\F0285"}.mdi-format-textdirection-r-to-l::before{content:"\\F0286"}.mdi-format-title::before{content:"\\F05F4"}.mdi-format-underline::before{content:"\\F0287"}.mdi-format-vertical-align-bottom::before{content:"\\F0621"}.mdi-format-vertical-align-center::before{content:"\\F0622"}.mdi-format-vertical-align-top::before{content:"\\F0623"}.mdi-format-wrap-inline::before{content:"\\F0288"}.mdi-format-wrap-square::before{content:"\\F0289"}.mdi-format-wrap-tight::before{content:"\\F028A"}.mdi-format-wrap-top-bottom::before{content:"\\F028B"}.mdi-forum::before{content:"\\F028C"}.mdi-forum-outline::before{content:"\\F0822"}.mdi-forward::before{content:"\\F028D"}.mdi-forwardburger::before{content:"\\F0D75"}.mdi-fountain::before{content:"\\F096B"}.mdi-fountain-pen::before{content:"\\F0D12"}.mdi-fountain-pen-tip::before{content:"\\F0D13"}.mdi-freebsd::before{content:"\\F08E0"}.mdi-frequently-asked-questions::before{content:"\\F0EB4"}.mdi-fridge::before{content:"\\F0290"}.mdi-fridge-alert::before{content:"\\F11B1"}.mdi-fridge-alert-outline::before{content:"\\F11B2"}.mdi-fridge-bottom::before{content:"\\F0292"}.mdi-fridge-off::before{content:"\\F11AF"}.mdi-fridge-off-outline::before{content:"\\F11B0"}.mdi-fridge-outline::before{content:"\\F028F"}.mdi-fridge-top::before{content:"\\F0291"}.mdi-fruit-cherries::before{content:"\\F1042"}.mdi-fruit-cherries-off::before{content:"\\F13F8"}.mdi-fruit-citrus::before{content:"\\F1043"}.mdi-fruit-citrus-off::before{content:"\\F13F9"}.mdi-fruit-grapes::before{content:"\\F1044"}.mdi-fruit-grapes-outline::before{content:"\\F1045"}.mdi-fruit-pineapple::before{content:"\\F1046"}.mdi-fruit-watermelon::before{content:"\\F1047"}.mdi-fuel::before{content:"\\F07CA"}.mdi-fullscreen::before{content:"\\F0293"}.mdi-fullscreen-exit::before{content:"\\F0294"}.mdi-function::before{content:"\\F0295"}.mdi-function-variant::before{content:"\\F0871"}.mdi-furigana-horizontal::before{content:"\\F1081"}.mdi-furigana-vertical::before{content:"\\F1082"}.mdi-fuse::before{content:"\\F0C85"}.mdi-fuse-alert::before{content:"\\F142D"}.mdi-fuse-blade::before{content:"\\F0C86"}.mdi-fuse-off::before{content:"\\F142C"}.mdi-gamepad::before{content:"\\F0296"}.mdi-gamepad-circle::before{content:"\\F0E33"}.mdi-gamepad-circle-down::before{content:"\\F0E34"}.mdi-gamepad-circle-left::before{content:"\\F0E35"}.mdi-gamepad-circle-outline::before{content:"\\F0E36"}.mdi-gamepad-circle-right::before{content:"\\F0E37"}.mdi-gamepad-circle-up::before{content:"\\F0E38"}.mdi-gamepad-down::before{content:"\\F0E39"}.mdi-gamepad-left::before{content:"\\F0E3A"}.mdi-gamepad-right::before{content:"\\F0E3B"}.mdi-gamepad-round::before{content:"\\F0E3C"}.mdi-gamepad-round-down::before{content:"\\F0E3D"}.mdi-gamepad-round-left::before{content:"\\F0E3E"}.mdi-gamepad-round-outline::before{content:"\\F0E3F"}.mdi-gamepad-round-right::before{content:"\\F0E40"}.mdi-gamepad-round-up::before{content:"\\F0E41"}.mdi-gamepad-square::before{content:"\\F0EB5"}.mdi-gamepad-square-outline::before{content:"\\F0EB6"}.mdi-gamepad-up::before{content:"\\F0E42"}.mdi-gamepad-variant::before{content:"\\F0297"}.mdi-gamepad-variant-outline::before{content:"\\F0EB7"}.mdi-gamma::before{content:"\\F10EE"}.mdi-gantry-crane::before{content:"\\F0DD1"}.mdi-garage::before{content:"\\F06D9"}.mdi-garage-alert::before{content:"\\F0872"}.mdi-garage-alert-variant::before{content:"\\F12D5"}.mdi-garage-open::before{content:"\\F06DA"}.mdi-garage-open-variant::before{content:"\\F12D4"}.mdi-garage-variant::before{content:"\\F12D3"}.mdi-gas-cylinder::before{content:"\\F0647"}.mdi-gas-station::before{content:"\\F0298"}.mdi-gas-station-off::before{content:"\\F1409"}.mdi-gas-station-off-outline::before{content:"\\F140A"}.mdi-gas-station-outline::before{content:"\\F0EB8"}.mdi-gate::before{content:"\\F0299"}.mdi-gate-and::before{content:"\\F08E1"}.mdi-gate-arrow-right::before{content:"\\F1169"}.mdi-gate-nand::before{content:"\\F08E2"}.mdi-gate-nor::before{content:"\\F08E3"}.mdi-gate-not::before{content:"\\F08E4"}.mdi-gate-open::before{content:"\\F116A"}.mdi-gate-or::before{content:"\\F08E5"}.mdi-gate-xnor::before{content:"\\F08E6"}.mdi-gate-xor::before{content:"\\F08E7"}.mdi-gatsby::before{content:"\\F0E43"}.mdi-gauge::before{content:"\\F029A"}.mdi-gauge-empty::before{content:"\\F0873"}.mdi-gauge-full::before{content:"\\F0874"}.mdi-gauge-low::before{content:"\\F0875"}.mdi-gavel::before{content:"\\F029B"}.mdi-gender-female::before{content:"\\F029C"}.mdi-gender-male::before{content:"\\F029D"}.mdi-gender-male-female::before{content:"\\F029E"}.mdi-gender-male-female-variant::before{content:"\\F113F"}.mdi-gender-non-binary::before{content:"\\F1140"}.mdi-gender-transgender::before{content:"\\F029F"}.mdi-gentoo::before{content:"\\F08E8"}.mdi-gesture::before{content:"\\F07CB"}.mdi-gesture-double-tap::before{content:"\\F073C"}.mdi-gesture-pinch::before{content:"\\F0ABD"}.mdi-gesture-spread::before{content:"\\F0ABE"}.mdi-gesture-swipe::before{content:"\\F0D76"}.mdi-gesture-swipe-down::before{content:"\\F073D"}.mdi-gesture-swipe-horizontal::before{content:"\\F0ABF"}.mdi-gesture-swipe-left::before{content:"\\F073E"}.mdi-gesture-swipe-right::before{content:"\\F073F"}.mdi-gesture-swipe-up::before{content:"\\F0740"}.mdi-gesture-swipe-vertical::before{content:"\\F0AC0"}.mdi-gesture-tap::before{content:"\\F0741"}.mdi-gesture-tap-box::before{content:"\\F12A9"}.mdi-gesture-tap-button::before{content:"\\F12A8"}.mdi-gesture-tap-hold::before{content:"\\F0D77"}.mdi-gesture-two-double-tap::before{content:"\\F0742"}.mdi-gesture-two-tap::before{content:"\\F0743"}.mdi-ghost::before{content:"\\F02A0"}.mdi-ghost-off::before{content:"\\F09F5"}.mdi-gif::before{content:"\\F0D78"}.mdi-gift::before{content:"\\F0E44"}.mdi-gift-outline::before{content:"\\F02A1"}.mdi-git::before{content:"\\F02A2"}.mdi-github::before{content:"\\F02A4"}.mdi-gitlab::before{content:"\\F0BA0"}.mdi-glass-cocktail::before{content:"\\F0356"}.mdi-glass-flute::before{content:"\\F02A5"}.mdi-glass-mug::before{content:"\\F02A6"}.mdi-glass-mug-variant::before{content:"\\F1116"}.mdi-glass-pint-outline::before{content:"\\F130D"}.mdi-glass-stange::before{content:"\\F02A7"}.mdi-glass-tulip::before{content:"\\F02A8"}.mdi-glass-wine::before{content:"\\F0876"}.mdi-glasses::before{content:"\\F02AA"}.mdi-globe-light::before{content:"\\F12D7"}.mdi-globe-model::before{content:"\\F08E9"}.mdi-gmail::before{content:"\\F02AB"}.mdi-gnome::before{content:"\\F02AC"}.mdi-go-kart::before{content:"\\F0D79"}.mdi-go-kart-track::before{content:"\\F0D7A"}.mdi-gog::before{content:"\\F0BA1"}.mdi-gold::before{content:"\\F124F"}.mdi-golf::before{content:"\\F0823"}.mdi-golf-cart::before{content:"\\F11A4"}.mdi-golf-tee::before{content:"\\F1083"}.mdi-gondola::before{content:"\\F0686"}.mdi-goodreads::before{content:"\\F0D7B"}.mdi-google::before{content:"\\F02AD"}.mdi-google-ads::before{content:"\\F0C87"}.mdi-google-analytics::before{content:"\\F07CC"}.mdi-google-assistant::before{content:"\\F07CD"}.mdi-google-cardboard::before{content:"\\F02AE"}.mdi-google-chrome::before{content:"\\F02AF"}.mdi-google-circles::before{content:"\\F02B0"}.mdi-google-circles-communities::before{content:"\\F02B1"}.mdi-google-circles-extended::before{content:"\\F02B2"}.mdi-google-circles-group::before{content:"\\F02B3"}.mdi-google-classroom::before{content:"\\F02C0"}.mdi-google-cloud::before{content:"\\F11F6"}.mdi-google-controller::before{content:"\\F02B4"}.mdi-google-controller-off::before{content:"\\F02B5"}.mdi-google-downasaur::before{content:"\\F1362"}.mdi-google-drive::before{content:"\\F02B6"}.mdi-google-earth::before{content:"\\F02B7"}.mdi-google-fit::before{content:"\\F096C"}.mdi-google-glass::before{content:"\\F02B8"}.mdi-google-hangouts::before{content:"\\F02C9"}.mdi-google-home::before{content:"\\F0824"}.mdi-google-keep::before{content:"\\F06DC"}.mdi-google-lens::before{content:"\\F09F6"}.mdi-google-maps::before{content:"\\F05F5"}.mdi-google-my-business::before{content:"\\F1048"}.mdi-google-nearby::before{content:"\\F02B9"}.mdi-google-photos::before{content:"\\F06DD"}.mdi-google-play::before{content:"\\F02BC"}.mdi-google-plus::before{content:"\\F02BD"}.mdi-google-podcast::before{content:"\\F0EB9"}.mdi-google-spreadsheet::before{content:"\\F09F7"}.mdi-google-street-view::before{content:"\\F0C88"}.mdi-google-translate::before{content:"\\F02BF"}.mdi-gradient::before{content:"\\F06A0"}.mdi-grain::before{content:"\\F0D7C"}.mdi-graph::before{content:"\\F1049"}.mdi-graph-outline::before{content:"\\F104A"}.mdi-graphql::before{content:"\\F0877"}.mdi-grave-stone::before{content:"\\F0BA2"}.mdi-grease-pencil::before{content:"\\F0648"}.mdi-greater-than::before{content:"\\F096D"}.mdi-greater-than-or-equal::before{content:"\\F096E"}.mdi-grid::before{content:"\\F02C1"}.mdi-grid-large::before{content:"\\F0758"}.mdi-grid-off::before{content:"\\F02C2"}.mdi-grill::before{content:"\\F0E45"}.mdi-grill-outline::before{content:"\\F118A"}.mdi-group::before{content:"\\F02C3"}.mdi-guitar-acoustic::before{content:"\\F0771"}.mdi-guitar-electric::before{content:"\\F02C4"}.mdi-guitar-pick::before{content:"\\F02C5"}.mdi-guitar-pick-outline::before{content:"\\F02C6"}.mdi-guy-fawkes-mask::before{content:"\\F0825"}.mdi-hail::before{content:"\\F0AC1"}.mdi-hair-dryer::before{content:"\\F10EF"}.mdi-hair-dryer-outline::before{content:"\\F10F0"}.mdi-halloween::before{content:"\\F0BA3"}.mdi-hamburger::before{content:"\\F0685"}.mdi-hammer::before{content:"\\F08EA"}.mdi-hammer-screwdriver::before{content:"\\F1322"}.mdi-hammer-wrench::before{content:"\\F1323"}.mdi-hand::before{content:"\\F0A4F"}.mdi-hand-heart::before{content:"\\F10F1"}.mdi-hand-left::before{content:"\\F0E46"}.mdi-hand-okay::before{content:"\\F0A50"}.mdi-hand-peace::before{content:"\\F0A51"}.mdi-hand-peace-variant::before{content:"\\F0A52"}.mdi-hand-pointing-down::before{content:"\\F0A53"}.mdi-hand-pointing-left::before{content:"\\F0A54"}.mdi-hand-pointing-right::before{content:"\\F02C7"}.mdi-hand-pointing-up::before{content:"\\F0A55"}.mdi-hand-right::before{content:"\\F0E47"}.mdi-hand-saw::before{content:"\\F0E48"}.mdi-hand-water::before{content:"\\F139F"}.mdi-handball::before{content:"\\F0F53"}.mdi-handcuffs::before{content:"\\F113E"}.mdi-handshake::before{content:"\\F1218"}.mdi-hanger::before{content:"\\F02C8"}.mdi-hard-hat::before{content:"\\F096F"}.mdi-harddisk::before{content:"\\F02CA"}.mdi-harddisk-plus::before{content:"\\F104B"}.mdi-harddisk-remove::before{content:"\\F104C"}.mdi-hat-fedora::before{content:"\\F0BA4"}.mdi-hazard-lights::before{content:"\\F0C89"}.mdi-hdr::before{content:"\\F0D7D"}.mdi-hdr-off::before{content:"\\F0D7E"}.mdi-head::before{content:"\\F135E"}.mdi-head-alert::before{content:"\\F1338"}.mdi-head-alert-outline::before{content:"\\F1339"}.mdi-head-check::before{content:"\\F133A"}.mdi-head-check-outline::before{content:"\\F133B"}.mdi-head-cog::before{content:"\\F133C"}.mdi-head-cog-outline::before{content:"\\F133D"}.mdi-head-dots-horizontal::before{content:"\\F133E"}.mdi-head-dots-horizontal-outline::before{content:"\\F133F"}.mdi-head-flash::before{content:"\\F1340"}.mdi-head-flash-outline::before{content:"\\F1341"}.mdi-head-heart::before{content:"\\F1342"}.mdi-head-heart-outline::before{content:"\\F1343"}.mdi-head-lightbulb::before{content:"\\F1344"}.mdi-head-lightbulb-outline::before{content:"\\F1345"}.mdi-head-minus::before{content:"\\F1346"}.mdi-head-minus-outline::before{content:"\\F1347"}.mdi-head-outline::before{content:"\\F135F"}.mdi-head-plus::before{content:"\\F1348"}.mdi-head-plus-outline::before{content:"\\F1349"}.mdi-head-question::before{content:"\\F134A"}.mdi-head-question-outline::before{content:"\\F134B"}.mdi-head-remove::before{content:"\\F134C"}.mdi-head-remove-outline::before{content:"\\F134D"}.mdi-head-snowflake::before{content:"\\F134E"}.mdi-head-snowflake-outline::before{content:"\\F134F"}.mdi-head-sync::before{content:"\\F1350"}.mdi-head-sync-outline::before{content:"\\F1351"}.mdi-headphones::before{content:"\\F02CB"}.mdi-headphones-bluetooth::before{content:"\\F0970"}.mdi-headphones-box::before{content:"\\F02CC"}.mdi-headphones-off::before{content:"\\F07CE"}.mdi-headphones-settings::before{content:"\\F02CD"}.mdi-headset::before{content:"\\F02CE"}.mdi-headset-dock::before{content:"\\F02CF"}.mdi-headset-off::before{content:"\\F02D0"}.mdi-heart::before{content:"\\F02D1"}.mdi-heart-box::before{content:"\\F02D2"}.mdi-heart-box-outline::before{content:"\\F02D3"}.mdi-heart-broken::before{content:"\\F02D4"}.mdi-heart-broken-outline::before{content:"\\F0D14"}.mdi-heart-circle::before{content:"\\F0971"}.mdi-heart-circle-outline::before{content:"\\F0972"}.mdi-heart-flash::before{content:"\\F0EF9"}.mdi-heart-half::before{content:"\\F06DF"}.mdi-heart-half-full::before{content:"\\F06DE"}.mdi-heart-half-outline::before{content:"\\F06E0"}.mdi-heart-minus::before{content:"\\F142F"}.mdi-heart-minus-outline::before{content:"\\F1432"}.mdi-heart-multiple::before{content:"\\F0A56"}.mdi-heart-multiple-outline::before{content:"\\F0A57"}.mdi-heart-off::before{content:"\\F0759"}.mdi-heart-off-outline::before{content:"\\F1434"}.mdi-heart-outline::before{content:"\\F02D5"}.mdi-heart-plus::before{content:"\\F142E"}.mdi-heart-plus-outline::before{content:"\\F1431"}.mdi-heart-pulse::before{content:"\\F05F6"}.mdi-heart-remove::before{content:"\\F1430"}.mdi-heart-remove-outline::before{content:"\\F1433"}.mdi-helicopter::before{content:"\\F0AC2"}.mdi-help::before{content:"\\F02D6"}.mdi-help-box::before{content:"\\F078B"}.mdi-help-circle::before{content:"\\F02D7"}.mdi-help-circle-outline::before{content:"\\F0625"}.mdi-help-network::before{content:"\\F06F5"}.mdi-help-network-outline::before{content:"\\F0C8A"}.mdi-help-rhombus::before{content:"\\F0BA5"}.mdi-help-rhombus-outline::before{content:"\\F0BA6"}.mdi-hexadecimal::before{content:"\\F12A7"}.mdi-hexagon::before{content:"\\F02D8"}.mdi-hexagon-multiple::before{content:"\\F06E1"}.mdi-hexagon-multiple-outline::before{content:"\\F10F2"}.mdi-hexagon-outline::before{content:"\\F02D9"}.mdi-hexagon-slice-1::before{content:"\\F0AC3"}.mdi-hexagon-slice-2::before{content:"\\F0AC4"}.mdi-hexagon-slice-3::before{content:"\\F0AC5"}.mdi-hexagon-slice-4::before{content:"\\F0AC6"}.mdi-hexagon-slice-5::before{content:"\\F0AC7"}.mdi-hexagon-slice-6::before{content:"\\F0AC8"}.mdi-hexagram::before{content:"\\F0AC9"}.mdi-hexagram-outline::before{content:"\\F0ACA"}.mdi-high-definition::before{content:"\\F07CF"}.mdi-high-definition-box::before{content:"\\F0878"}.mdi-highway::before{content:"\\F05F7"}.mdi-hiking::before{content:"\\F0D7F"}.mdi-hinduism::before{content:"\\F0973"}.mdi-history::before{content:"\\F02DA"}.mdi-hockey-puck::before{content:"\\F0879"}.mdi-hockey-sticks::before{content:"\\F087A"}.mdi-hololens::before{content:"\\F02DB"}.mdi-home::before{content:"\\F02DC"}.mdi-home-account::before{content:"\\F0826"}.mdi-home-alert::before{content:"\\F087B"}.mdi-home-analytics::before{content:"\\F0EBA"}.mdi-home-assistant::before{content:"\\F07D0"}.mdi-home-automation::before{content:"\\F07D1"}.mdi-home-circle::before{content:"\\F07D2"}.mdi-home-circle-outline::before{content:"\\F104D"}.mdi-home-city::before{content:"\\F0D15"}.mdi-home-city-outline::before{content:"\\F0D16"}.mdi-home-currency-usd::before{content:"\\F08AF"}.mdi-home-edit::before{content:"\\F1159"}.mdi-home-edit-outline::before{content:"\\F115A"}.mdi-home-export-outline::before{content:"\\F0F9B"}.mdi-home-flood::before{content:"\\F0EFA"}.mdi-home-floor-0::before{content:"\\F0DD2"}.mdi-home-floor-1::before{content:"\\F0D80"}.mdi-home-floor-2::before{content:"\\F0D81"}.mdi-home-floor-3::before{content:"\\F0D82"}.mdi-home-floor-a::before{content:"\\F0D83"}.mdi-home-floor-b::before{content:"\\F0D84"}.mdi-home-floor-g::before{content:"\\F0D85"}.mdi-home-floor-l::before{content:"\\F0D86"}.mdi-home-floor-negative-1::before{content:"\\F0DD3"}.mdi-home-group::before{content:"\\F0DD4"}.mdi-home-heart::before{content:"\\F0827"}.mdi-home-import-outline::before{content:"\\F0F9C"}.mdi-home-lightbulb::before{content:"\\F1251"}.mdi-home-lightbulb-outline::before{content:"\\F1252"}.mdi-home-lock::before{content:"\\F08EB"}.mdi-home-lock-open::before{content:"\\F08EC"}.mdi-home-map-marker::before{content:"\\F05F8"}.mdi-home-minus::before{content:"\\F0974"}.mdi-home-minus-outline::before{content:"\\F13D5"}.mdi-home-modern::before{content:"\\F02DD"}.mdi-home-outline::before{content:"\\F06A1"}.mdi-home-plus::before{content:"\\F0975"}.mdi-home-plus-outline::before{content:"\\F13D6"}.mdi-home-remove::before{content:"\\F1247"}.mdi-home-remove-outline::before{content:"\\F13D7"}.mdi-home-roof::before{content:"\\F112B"}.mdi-home-search::before{content:"\\F13B0"}.mdi-home-search-outline::before{content:"\\F13B1"}.mdi-home-thermometer::before{content:"\\F0F54"}.mdi-home-thermometer-outline::before{content:"\\F0F55"}.mdi-home-variant::before{content:"\\F02DE"}.mdi-home-variant-outline::before{content:"\\F0BA7"}.mdi-hook::before{content:"\\F06E2"}.mdi-hook-off::before{content:"\\F06E3"}.mdi-hops::before{content:"\\F02DF"}.mdi-horizontal-rotate-clockwise::before{content:"\\F10F3"}.mdi-horizontal-rotate-counterclockwise::before{content:"\\F10F4"}.mdi-horseshoe::before{content:"\\F0A58"}.mdi-hospital::before{content:"\\F0FF6"}.mdi-hospital-box::before{content:"\\F02E0"}.mdi-hospital-box-outline::before{content:"\\F0FF7"}.mdi-hospital-building::before{content:"\\F02E1"}.mdi-hospital-marker::before{content:"\\F02E2"}.mdi-hot-tub::before{content:"\\F0828"}.mdi-hours-24::before{content:"\\F1478"}.mdi-hubspot::before{content:"\\F0D17"}.mdi-hulu::before{content:"\\F0829"}.mdi-human::before{content:"\\F02E6"}.mdi-human-baby-changing-table::before{content:"\\F138B"}.mdi-human-child::before{content:"\\F02E7"}.mdi-human-female::before{content:"\\F0649"}.mdi-human-female-boy::before{content:"\\F0A59"}.mdi-human-female-female::before{content:"\\F0A5A"}.mdi-human-female-girl::before{content:"\\F0A5B"}.mdi-human-greeting::before{content:"\\F064A"}.mdi-human-handsdown::before{content:"\\F064B"}.mdi-human-handsup::before{content:"\\F064C"}.mdi-human-male::before{content:"\\F064D"}.mdi-human-male-boy::before{content:"\\F0A5C"}.mdi-human-male-child::before{content:"\\F138C"}.mdi-human-male-female::before{content:"\\F02E8"}.mdi-human-male-girl::before{content:"\\F0A5D"}.mdi-human-male-height::before{content:"\\F0EFB"}.mdi-human-male-height-variant::before{content:"\\F0EFC"}.mdi-human-male-male::before{content:"\\F0A5E"}.mdi-human-pregnant::before{content:"\\F05CF"}.mdi-human-wheelchair::before{content:"\\F138D"}.mdi-humble-bundle::before{content:"\\F0744"}.mdi-hvac::before{content:"\\F1352"}.mdi-hydraulic-oil-level::before{content:"\\F1324"}.mdi-hydraulic-oil-temperature::before{content:"\\F1325"}.mdi-hydro-power::before{content:"\\F12E5"}.mdi-ice-cream::before{content:"\\F082A"}.mdi-ice-cream-off::before{content:"\\F0E52"}.mdi-ice-pop::before{content:"\\F0EFD"}.mdi-id-card::before{content:"\\F0FC0"}.mdi-identifier::before{content:"\\F0EFE"}.mdi-ideogram-cjk::before{content:"\\F1331"}.mdi-ideogram-cjk-variant::before{content:"\\F1332"}.mdi-iframe::before{content:"\\F0C8B"}.mdi-iframe-array::before{content:"\\F10F5"}.mdi-iframe-array-outline::before{content:"\\F10F6"}.mdi-iframe-braces::before{content:"\\F10F7"}.mdi-iframe-braces-outline::before{content:"\\F10F8"}.mdi-iframe-outline::before{content:"\\F0C8C"}.mdi-iframe-parentheses::before{content:"\\F10F9"}.mdi-iframe-parentheses-outline::before{content:"\\F10FA"}.mdi-iframe-variable::before{content:"\\F10FB"}.mdi-iframe-variable-outline::before{content:"\\F10FC"}.mdi-image::before{content:"\\F02E9"}.mdi-image-album::before{content:"\\F02EA"}.mdi-image-area::before{content:"\\F02EB"}.mdi-image-area-close::before{content:"\\F02EC"}.mdi-image-auto-adjust::before{content:"\\F0FC1"}.mdi-image-broken::before{content:"\\F02ED"}.mdi-image-broken-variant::before{content:"\\F02EE"}.mdi-image-edit::before{content:"\\F11E3"}.mdi-image-edit-outline::before{content:"\\F11E4"}.mdi-image-filter-black-white::before{content:"\\F02F0"}.mdi-image-filter-center-focus::before{content:"\\F02F1"}.mdi-image-filter-center-focus-strong::before{content:"\\F0EFF"}.mdi-image-filter-center-focus-strong-outline::before{content:"\\F0F00"}.mdi-image-filter-center-focus-weak::before{content:"\\F02F2"}.mdi-image-filter-drama::before{content:"\\F02F3"}.mdi-image-filter-frames::before{content:"\\F02F4"}.mdi-image-filter-hdr::before{content:"\\F02F5"}.mdi-image-filter-none::before{content:"\\F02F6"}.mdi-image-filter-tilt-shift::before{content:"\\F02F7"}.mdi-image-filter-vintage::before{content:"\\F02F8"}.mdi-image-frame::before{content:"\\F0E49"}.mdi-image-minus::before{content:"\\F1419"}.mdi-image-move::before{content:"\\F09F8"}.mdi-image-multiple::before{content:"\\F02F9"}.mdi-image-multiple-outline::before{content:"\\F02EF"}.mdi-image-off::before{content:"\\F082B"}.mdi-image-off-outline::before{content:"\\F11D1"}.mdi-image-outline::before{content:"\\F0976"}.mdi-image-plus::before{content:"\\F087C"}.mdi-image-remove::before{content:"\\F1418"}.mdi-image-search::before{content:"\\F0977"}.mdi-image-search-outline::before{content:"\\F0978"}.mdi-image-size-select-actual::before{content:"\\F0C8D"}.mdi-image-size-select-large::before{content:"\\F0C8E"}.mdi-image-size-select-small::before{content:"\\F0C8F"}.mdi-import::before{content:"\\F02FA"}.mdi-inbox::before{content:"\\F0687"}.mdi-inbox-arrow-down::before{content:"\\F02FB"}.mdi-inbox-arrow-down-outline::before{content:"\\F1270"}.mdi-inbox-arrow-up::before{content:"\\F03D1"}.mdi-inbox-arrow-up-outline::before{content:"\\F1271"}.mdi-inbox-full::before{content:"\\F1272"}.mdi-inbox-full-outline::before{content:"\\F1273"}.mdi-inbox-multiple::before{content:"\\F08B0"}.mdi-inbox-multiple-outline::before{content:"\\F0BA8"}.mdi-inbox-outline::before{content:"\\F1274"}.mdi-incognito::before{content:"\\F05F9"}.mdi-incognito-circle::before{content:"\\F1421"}.mdi-incognito-circle-off::before{content:"\\F1422"}.mdi-incognito-off::before{content:"\\F0075"}.mdi-infinity::before{content:"\\F06E4"}.mdi-information::before{content:"\\F02FC"}.mdi-information-outline::before{content:"\\F02FD"}.mdi-information-variant::before{content:"\\F064E"}.mdi-instagram::before{content:"\\F02FE"}.mdi-instrument-triangle::before{content:"\\F104E"}.mdi-invert-colors::before{content:"\\F0301"}.mdi-invert-colors-off::before{content:"\\F0E4A"}.mdi-iobroker::before{content:"\\F12E8"}.mdi-ip::before{content:"\\F0A5F"}.mdi-ip-network::before{content:"\\F0A60"}.mdi-ip-network-outline::before{content:"\\F0C90"}.mdi-ipod::before{content:"\\F0C91"}.mdi-islam::before{content:"\\F0979"}.mdi-island::before{content:"\\F104F"}.mdi-iv-bag::before{content:"\\F10B9"}.mdi-jabber::before{content:"\\F0DD5"}.mdi-jeepney::before{content:"\\F0302"}.mdi-jellyfish::before{content:"\\F0F01"}.mdi-jellyfish-outline::before{content:"\\F0F02"}.mdi-jira::before{content:"\\F0303"}.mdi-jquery::before{content:"\\F087D"}.mdi-jsfiddle::before{content:"\\F0304"}.mdi-judaism::before{content:"\\F097A"}.mdi-jump-rope::before{content:"\\F12FF"}.mdi-kabaddi::before{content:"\\F0D87"}.mdi-karate::before{content:"\\F082C"}.mdi-keg::before{content:"\\F0305"}.mdi-kettle::before{content:"\\F05FA"}.mdi-kettle-alert::before{content:"\\F1317"}.mdi-kettle-alert-outline::before{content:"\\F1318"}.mdi-kettle-off::before{content:"\\F131B"}.mdi-kettle-off-outline::before{content:"\\F131C"}.mdi-kettle-outline::before{content:"\\F0F56"}.mdi-kettle-steam::before{content:"\\F1319"}.mdi-kettle-steam-outline::before{content:"\\F131A"}.mdi-kettlebell::before{content:"\\F1300"}.mdi-key::before{content:"\\F0306"}.mdi-key-arrow-right::before{content:"\\F1312"}.mdi-key-change::before{content:"\\F0307"}.mdi-key-link::before{content:"\\F119F"}.mdi-key-minus::before{content:"\\F0308"}.mdi-key-outline::before{content:"\\F0DD6"}.mdi-key-plus::before{content:"\\F0309"}.mdi-key-remove::before{content:"\\F030A"}.mdi-key-star::before{content:"\\F119E"}.mdi-key-variant::before{content:"\\F030B"}.mdi-key-wireless::before{content:"\\F0FC2"}.mdi-keyboard::before{content:"\\F030C"}.mdi-keyboard-backspace::before{content:"\\F030D"}.mdi-keyboard-caps::before{content:"\\F030E"}.mdi-keyboard-close::before{content:"\\F030F"}.mdi-keyboard-esc::before{content:"\\F12B7"}.mdi-keyboard-f1::before{content:"\\F12AB"}.mdi-keyboard-f10::before{content:"\\F12B4"}.mdi-keyboard-f11::before{content:"\\F12B5"}.mdi-keyboard-f12::before{content:"\\F12B6"}.mdi-keyboard-f2::before{content:"\\F12AC"}.mdi-keyboard-f3::before{content:"\\F12AD"}.mdi-keyboard-f4::before{content:"\\F12AE"}.mdi-keyboard-f5::before{content:"\\F12AF"}.mdi-keyboard-f6::before{content:"\\F12B0"}.mdi-keyboard-f7::before{content:"\\F12B1"}.mdi-keyboard-f8::before{content:"\\F12B2"}.mdi-keyboard-f9::before{content:"\\F12B3"}.mdi-keyboard-off::before{content:"\\F0310"}.mdi-keyboard-off-outline::before{content:"\\F0E4B"}.mdi-keyboard-outline::before{content:"\\F097B"}.mdi-keyboard-return::before{content:"\\F0311"}.mdi-keyboard-settings::before{content:"\\F09F9"}.mdi-keyboard-settings-outline::before{content:"\\F09FA"}.mdi-keyboard-space::before{content:"\\F1050"}.mdi-keyboard-tab::before{content:"\\F0312"}.mdi-keyboard-variant::before{content:"\\F0313"}.mdi-khanda::before{content:"\\F10FD"}.mdi-kickstarter::before{content:"\\F0745"}.mdi-klingon::before{content:"\\F135B"}.mdi-knife::before{content:"\\F09FB"}.mdi-knife-military::before{content:"\\F09FC"}.mdi-kodi::before{content:"\\F0314"}.mdi-kubernetes::before{content:"\\F10FE"}.mdi-label::before{content:"\\F0315"}.mdi-label-multiple::before{content:"\\F1375"}.mdi-label-multiple-outline::before{content:"\\F1376"}.mdi-label-off::before{content:"\\F0ACB"}.mdi-label-off-outline::before{content:"\\F0ACC"}.mdi-label-outline::before{content:"\\F0316"}.mdi-label-percent::before{content:"\\F12EA"}.mdi-label-percent-outline::before{content:"\\F12EB"}.mdi-label-variant::before{content:"\\F0ACD"}.mdi-label-variant-outline::before{content:"\\F0ACE"}.mdi-ladybug::before{content:"\\F082D"}.mdi-lambda::before{content:"\\F0627"}.mdi-lamp::before{content:"\\F06B5"}.mdi-lan::before{content:"\\F0317"}.mdi-lan-check::before{content:"\\F12AA"}.mdi-lan-connect::before{content:"\\F0318"}.mdi-lan-disconnect::before{content:"\\F0319"}.mdi-lan-pending::before{content:"\\F031A"}.mdi-language-c::before{content:"\\F0671"}.mdi-language-cpp::before{content:"\\F0672"}.mdi-language-csharp::before{content:"\\F031B"}.mdi-language-css3::before{content:"\\F031C"}.mdi-language-fortran::before{content:"\\F121A"}.mdi-language-go::before{content:"\\F07D3"}.mdi-language-haskell::before{content:"\\F0C92"}.mdi-language-html5::before{content:"\\F031D"}.mdi-language-java::before{content:"\\F0B37"}.mdi-language-javascript::before{content:"\\F031E"}.mdi-language-kotlin::before{content:"\\F1219"}.mdi-language-lua::before{content:"\\F08B1"}.mdi-language-markdown::before{content:"\\F0354"}.mdi-language-markdown-outline::before{content:"\\F0F5B"}.mdi-language-php::before{content:"\\F031F"}.mdi-language-python::before{content:"\\F0320"}.mdi-language-r::before{content:"\\F07D4"}.mdi-language-ruby::before{content:"\\F0D2D"}.mdi-language-ruby-on-rails::before{content:"\\F0ACF"}.mdi-language-swift::before{content:"\\F06E5"}.mdi-language-typescript::before{content:"\\F06E6"}.mdi-language-xaml::before{content:"\\F0673"}.mdi-laptop::before{content:"\\F0322"}.mdi-laptop-chromebook::before{content:"\\F0323"}.mdi-laptop-mac::before{content:"\\F0324"}.mdi-laptop-off::before{content:"\\F06E7"}.mdi-laptop-windows::before{content:"\\F0325"}.mdi-laravel::before{content:"\\F0AD0"}.mdi-laser-pointer::before{content:"\\F1484"}.mdi-lasso::before{content:"\\F0F03"}.mdi-lastpass::before{content:"\\F0446"}.mdi-latitude::before{content:"\\F0F57"}.mdi-launch::before{content:"\\F0327"}.mdi-lava-lamp::before{content:"\\F07D5"}.mdi-layers::before{content:"\\F0328"}.mdi-layers-minus::before{content:"\\F0E4C"}.mdi-layers-off::before{content:"\\F0329"}.mdi-layers-off-outline::before{content:"\\F09FD"}.mdi-layers-outline::before{content:"\\F09FE"}.mdi-layers-plus::before{content:"\\F0E4D"}.mdi-layers-remove::before{content:"\\F0E4E"}.mdi-layers-search::before{content:"\\F1206"}.mdi-layers-search-outline::before{content:"\\F1207"}.mdi-layers-triple::before{content:"\\F0F58"}.mdi-layers-triple-outline::before{content:"\\F0F59"}.mdi-lead-pencil::before{content:"\\F064F"}.mdi-leaf::before{content:"\\F032A"}.mdi-leaf-maple::before{content:"\\F0C93"}.mdi-leaf-maple-off::before{content:"\\F12DA"}.mdi-leaf-off::before{content:"\\F12D9"}.mdi-leak::before{content:"\\F0DD7"}.mdi-leak-off::before{content:"\\F0DD8"}.mdi-led-off::before{content:"\\F032B"}.mdi-led-on::before{content:"\\F032C"}.mdi-led-outline::before{content:"\\F032D"}.mdi-led-strip::before{content:"\\F07D6"}.mdi-led-strip-variant::before{content:"\\F1051"}.mdi-led-variant-off::before{content:"\\F032E"}.mdi-led-variant-on::before{content:"\\F032F"}.mdi-led-variant-outline::before{content:"\\F0330"}.mdi-leek::before{content:"\\F117D"}.mdi-less-than::before{content:"\\F097C"}.mdi-less-than-or-equal::before{content:"\\F097D"}.mdi-library::before{content:"\\F0331"}.mdi-library-shelves::before{content:"\\F0BA9"}.mdi-license::before{content:"\\F0FC3"}.mdi-lifebuoy::before{content:"\\F087E"}.mdi-light-switch::before{content:"\\F097E"}.mdi-lightbulb::before{content:"\\F0335"}.mdi-lightbulb-cfl::before{content:"\\F1208"}.mdi-lightbulb-cfl-off::before{content:"\\F1209"}.mdi-lightbulb-cfl-spiral::before{content:"\\F1275"}.mdi-lightbulb-cfl-spiral-off::before{content:"\\F12C3"}.mdi-lightbulb-group::before{content:"\\F1253"}.mdi-lightbulb-group-off::before{content:"\\F12CD"}.mdi-lightbulb-group-off-outline::before{content:"\\F12CE"}.mdi-lightbulb-group-outline::before{content:"\\F1254"}.mdi-lightbulb-multiple::before{content:"\\F1255"}.mdi-lightbulb-multiple-off::before{content:"\\F12CF"}.mdi-lightbulb-multiple-off-outline::before{content:"\\F12D0"}.mdi-lightbulb-multiple-outline::before{content:"\\F1256"}.mdi-lightbulb-off::before{content:"\\F0E4F"}.mdi-lightbulb-off-outline::before{content:"\\F0E50"}.mdi-lightbulb-on::before{content:"\\F06E8"}.mdi-lightbulb-on-outline::before{content:"\\F06E9"}.mdi-lightbulb-outline::before{content:"\\F0336"}.mdi-lighthouse::before{content:"\\F09FF"}.mdi-lighthouse-on::before{content:"\\F0A00"}.mdi-lightning-bolt::before{content:"\\F140B"}.mdi-lightning-bolt-outline::before{content:"\\F140C"}.mdi-lingerie::before{content:"\\F1476"}.mdi-link::before{content:"\\F0337"}.mdi-link-box::before{content:"\\F0D1A"}.mdi-link-box-outline::before{content:"\\F0D1B"}.mdi-link-box-variant::before{content:"\\F0D1C"}.mdi-link-box-variant-outline::before{content:"\\F0D1D"}.mdi-link-lock::before{content:"\\F10BA"}.mdi-link-off::before{content:"\\F0338"}.mdi-link-plus::before{content:"\\F0C94"}.mdi-link-variant::before{content:"\\F0339"}.mdi-link-variant-minus::before{content:"\\F10FF"}.mdi-link-variant-off::before{content:"\\F033A"}.mdi-link-variant-plus::before{content:"\\F1100"}.mdi-link-variant-remove::before{content:"\\F1101"}.mdi-linkedin::before{content:"\\F033B"}.mdi-linux::before{content:"\\F033D"}.mdi-linux-mint::before{content:"\\F08ED"}.mdi-lipstick::before{content:"\\F13B5"}.mdi-litecoin::before{content:"\\F0A61"}.mdi-loading::before{content:"\\F0772"}.mdi-location-enter::before{content:"\\F0FC4"}.mdi-location-exit::before{content:"\\F0FC5"}.mdi-lock::before{content:"\\F033E"}.mdi-lock-alert::before{content:"\\F08EE"}.mdi-lock-check::before{content:"\\F139A"}.mdi-lock-clock::before{content:"\\F097F"}.mdi-lock-open::before{content:"\\F033F"}.mdi-lock-open-alert::before{content:"\\F139B"}.mdi-lock-open-check::before{content:"\\F139C"}.mdi-lock-open-outline::before{content:"\\F0340"}.mdi-lock-open-variant::before{content:"\\F0FC6"}.mdi-lock-open-variant-outline::before{content:"\\F0FC7"}.mdi-lock-outline::before{content:"\\F0341"}.mdi-lock-pattern::before{content:"\\F06EA"}.mdi-lock-plus::before{content:"\\F05FB"}.mdi-lock-question::before{content:"\\F08EF"}.mdi-lock-reset::before{content:"\\F0773"}.mdi-lock-smart::before{content:"\\F08B2"}.mdi-locker::before{content:"\\F07D7"}.mdi-locker-multiple::before{content:"\\F07D8"}.mdi-login::before{content:"\\F0342"}.mdi-login-variant::before{content:"\\F05FC"}.mdi-logout::before{content:"\\F0343"}.mdi-logout-variant::before{content:"\\F05FD"}.mdi-longitude::before{content:"\\F0F5A"}.mdi-looks::before{content:"\\F0344"}.mdi-loupe::before{content:"\\F0345"}.mdi-lumx::before{content:"\\F0346"}.mdi-lungs::before{content:"\\F1084"}.mdi-magnet::before{content:"\\F0347"}.mdi-magnet-on::before{content:"\\F0348"}.mdi-magnify::before{content:"\\F0349"}.mdi-magnify-close::before{content:"\\F0980"}.mdi-magnify-minus::before{content:"\\F034A"}.mdi-magnify-minus-cursor::before{content:"\\F0A62"}.mdi-magnify-minus-outline::before{content:"\\F06EC"}.mdi-magnify-plus::before{content:"\\F034B"}.mdi-magnify-plus-cursor::before{content:"\\F0A63"}.mdi-magnify-plus-outline::before{content:"\\F06ED"}.mdi-magnify-remove-cursor::before{content:"\\F120C"}.mdi-magnify-remove-outline::before{content:"\\F120D"}.mdi-magnify-scan::before{content:"\\F1276"}.mdi-mail::before{content:"\\F0EBB"}.mdi-mailbox::before{content:"\\F06EE"}.mdi-mailbox-open::before{content:"\\F0D88"}.mdi-mailbox-open-outline::before{content:"\\F0D89"}.mdi-mailbox-open-up::before{content:"\\F0D8A"}.mdi-mailbox-open-up-outline::before{content:"\\F0D8B"}.mdi-mailbox-outline::before{content:"\\F0D8C"}.mdi-mailbox-up::before{content:"\\F0D8D"}.mdi-mailbox-up-outline::before{content:"\\F0D8E"}.mdi-map::before{content:"\\F034D"}.mdi-map-check::before{content:"\\F0EBC"}.mdi-map-check-outline::before{content:"\\F0EBD"}.mdi-map-clock::before{content:"\\F0D1E"}.mdi-map-clock-outline::before{content:"\\F0D1F"}.mdi-map-legend::before{content:"\\F0A01"}.mdi-map-marker::before{content:"\\F034E"}.mdi-map-marker-alert::before{content:"\\F0F05"}.mdi-map-marker-alert-outline::before{content:"\\F0F06"}.mdi-map-marker-check::before{content:"\\F0C95"}.mdi-map-marker-check-outline::before{content:"\\F12FB"}.mdi-map-marker-circle::before{content:"\\F034F"}.mdi-map-marker-distance::before{content:"\\F08F0"}.mdi-map-marker-down::before{content:"\\F1102"}.mdi-map-marker-left::before{content:"\\F12DB"}.mdi-map-marker-left-outline::before{content:"\\F12DD"}.mdi-map-marker-minus::before{content:"\\F0650"}.mdi-map-marker-minus-outline::before{content:"\\F12F9"}.mdi-map-marker-multiple::before{content:"\\F0350"}.mdi-map-marker-multiple-outline::before{content:"\\F1277"}.mdi-map-marker-off::before{content:"\\F0351"}.mdi-map-marker-off-outline::before{content:"\\F12FD"}.mdi-map-marker-outline::before{content:"\\F07D9"}.mdi-map-marker-path::before{content:"\\F0D20"}.mdi-map-marker-plus::before{content:"\\F0651"}.mdi-map-marker-plus-outline::before{content:"\\F12F8"}.mdi-map-marker-question::before{content:"\\F0F07"}.mdi-map-marker-question-outline::before{content:"\\F0F08"}.mdi-map-marker-radius::before{content:"\\F0352"}.mdi-map-marker-radius-outline::before{content:"\\F12FC"}.mdi-map-marker-remove::before{content:"\\F0F09"}.mdi-map-marker-remove-outline::before{content:"\\F12FA"}.mdi-map-marker-remove-variant::before{content:"\\F0F0A"}.mdi-map-marker-right::before{content:"\\F12DC"}.mdi-map-marker-right-outline::before{content:"\\F12DE"}.mdi-map-marker-up::before{content:"\\F1103"}.mdi-map-minus::before{content:"\\F0981"}.mdi-map-outline::before{content:"\\F0982"}.mdi-map-plus::before{content:"\\F0983"}.mdi-map-search::before{content:"\\F0984"}.mdi-map-search-outline::before{content:"\\F0985"}.mdi-mapbox::before{content:"\\F0BAA"}.mdi-margin::before{content:"\\F0353"}.mdi-marker::before{content:"\\F0652"}.mdi-marker-cancel::before{content:"\\F0DD9"}.mdi-marker-check::before{content:"\\F0355"}.mdi-mastodon::before{content:"\\F0AD1"}.mdi-material-design::before{content:"\\F0986"}.mdi-material-ui::before{content:"\\F0357"}.mdi-math-compass::before{content:"\\F0358"}.mdi-math-cos::before{content:"\\F0C96"}.mdi-math-integral::before{content:"\\F0FC8"}.mdi-math-integral-box::before{content:"\\F0FC9"}.mdi-math-log::before{content:"\\F1085"}.mdi-math-norm::before{content:"\\F0FCA"}.mdi-math-norm-box::before{content:"\\F0FCB"}.mdi-math-sin::before{content:"\\F0C97"}.mdi-math-tan::before{content:"\\F0C98"}.mdi-matrix::before{content:"\\F0628"}.mdi-medal::before{content:"\\F0987"}.mdi-medal-outline::before{content:"\\F1326"}.mdi-medical-bag::before{content:"\\F06EF"}.mdi-meditation::before{content:"\\F117B"}.mdi-memory::before{content:"\\F035B"}.mdi-menu::before{content:"\\F035C"}.mdi-menu-down::before{content:"\\F035D"}.mdi-menu-down-outline::before{content:"\\F06B6"}.mdi-menu-left::before{content:"\\F035E"}.mdi-menu-left-outline::before{content:"\\F0A02"}.mdi-menu-open::before{content:"\\F0BAB"}.mdi-menu-right::before{content:"\\F035F"}.mdi-menu-right-outline::before{content:"\\F0A03"}.mdi-menu-swap::before{content:"\\F0A64"}.mdi-menu-swap-outline::before{content:"\\F0A65"}.mdi-menu-up::before{content:"\\F0360"}.mdi-menu-up-outline::before{content:"\\F06B7"}.mdi-merge::before{content:"\\F0F5C"}.mdi-message::before{content:"\\F0361"}.mdi-message-alert::before{content:"\\F0362"}.mdi-message-alert-outline::before{content:"\\F0A04"}.mdi-message-arrow-left::before{content:"\\F12F2"}.mdi-message-arrow-left-outline::before{content:"\\F12F3"}.mdi-message-arrow-right::before{content:"\\F12F4"}.mdi-message-arrow-right-outline::before{content:"\\F12F5"}.mdi-message-bulleted::before{content:"\\F06A2"}.mdi-message-bulleted-off::before{content:"\\F06A3"}.mdi-message-cog::before{content:"\\F06F1"}.mdi-message-cog-outline::before{content:"\\F1172"}.mdi-message-draw::before{content:"\\F0363"}.mdi-message-image::before{content:"\\F0364"}.mdi-message-image-outline::before{content:"\\F116C"}.mdi-message-lock::before{content:"\\F0FCC"}.mdi-message-lock-outline::before{content:"\\F116D"}.mdi-message-minus::before{content:"\\F116E"}.mdi-message-minus-outline::before{content:"\\F116F"}.mdi-message-outline::before{content:"\\F0365"}.mdi-message-plus::before{content:"\\F0653"}.mdi-message-plus-outline::before{content:"\\F10BB"}.mdi-message-processing::before{content:"\\F0366"}.mdi-message-processing-outline::before{content:"\\F1170"}.mdi-message-reply::before{content:"\\F0367"}.mdi-message-reply-text::before{content:"\\F0368"}.mdi-message-settings::before{content:"\\F06F0"}.mdi-message-settings-outline::before{content:"\\F1171"}.mdi-message-text::before{content:"\\F0369"}.mdi-message-text-clock::before{content:"\\F1173"}.mdi-message-text-clock-outline::before{content:"\\F1174"}.mdi-message-text-lock::before{content:"\\F0FCD"}.mdi-message-text-lock-outline::before{content:"\\F1175"}.mdi-message-text-outline::before{content:"\\F036A"}.mdi-message-video::before{content:"\\F036B"}.mdi-meteor::before{content:"\\F0629"}.mdi-metronome::before{content:"\\F07DA"}.mdi-metronome-tick::before{content:"\\F07DB"}.mdi-micro-sd::before{content:"\\F07DC"}.mdi-microphone::before{content:"\\F036C"}.mdi-microphone-minus::before{content:"\\F08B3"}.mdi-microphone-off::before{content:"\\F036D"}.mdi-microphone-outline::before{content:"\\F036E"}.mdi-microphone-plus::before{content:"\\F08B4"}.mdi-microphone-settings::before{content:"\\F036F"}.mdi-microphone-variant::before{content:"\\F0370"}.mdi-microphone-variant-off::before{content:"\\F0371"}.mdi-microscope::before{content:"\\F0654"}.mdi-microsoft::before{content:"\\F0372"}.mdi-microsoft-access::before{content:"\\F138E"}.mdi-microsoft-azure::before{content:"\\F0805"}.mdi-microsoft-azure-devops::before{content:"\\F0FD5"}.mdi-microsoft-bing::before{content:"\\F00A4"}.mdi-microsoft-dynamics-365::before{content:"\\F0988"}.mdi-microsoft-edge::before{content:"\\F01E9"}.mdi-microsoft-edge-legacy::before{content:"\\F1250"}.mdi-microsoft-excel::before{content:"\\F138F"}.mdi-microsoft-internet-explorer::before{content:"\\F0300"}.mdi-microsoft-office::before{content:"\\F03C6"}.mdi-microsoft-onedrive::before{content:"\\F03CA"}.mdi-microsoft-onenote::before{content:"\\F0747"}.mdi-microsoft-outlook::before{content:"\\F0D22"}.mdi-microsoft-powerpoint::before{content:"\\F1390"}.mdi-microsoft-sharepoint::before{content:"\\F1391"}.mdi-microsoft-teams::before{content:"\\F02BB"}.mdi-microsoft-visual-studio::before{content:"\\F0610"}.mdi-microsoft-visual-studio-code::before{content:"\\F0A1E"}.mdi-microsoft-windows::before{content:"\\F05B3"}.mdi-microsoft-windows-classic::before{content:"\\F0A21"}.mdi-microsoft-word::before{content:"\\F1392"}.mdi-microsoft-xbox::before{content:"\\F05B9"}.mdi-microsoft-xbox-controller::before{content:"\\F05BA"}.mdi-microsoft-xbox-controller-battery-alert::before{content:"\\F074B"}.mdi-microsoft-xbox-controller-battery-charging::before{content:"\\F0A22"}.mdi-microsoft-xbox-controller-battery-empty::before{content:"\\F074C"}.mdi-microsoft-xbox-controller-battery-full::before{content:"\\F074D"}.mdi-microsoft-xbox-controller-battery-low::before{content:"\\F074E"}.mdi-microsoft-xbox-controller-battery-medium::before{content:"\\F074F"}.mdi-microsoft-xbox-controller-battery-unknown::before{content:"\\F0750"}.mdi-microsoft-xbox-controller-menu::before{content:"\\F0E6F"}.mdi-microsoft-xbox-controller-off::before{content:"\\F05BB"}.mdi-microsoft-xbox-controller-view::before{content:"\\F0E70"}.mdi-microsoft-yammer::before{content:"\\F0789"}.mdi-microwave::before{content:"\\F0C99"}.mdi-microwave-off::before{content:"\\F1423"}.mdi-middleware::before{content:"\\F0F5D"}.mdi-middleware-outline::before{content:"\\F0F5E"}.mdi-midi::before{content:"\\F08F1"}.mdi-midi-port::before{content:"\\F08F2"}.mdi-mine::before{content:"\\F0DDA"}.mdi-minecraft::before{content:"\\F0373"}.mdi-mini-sd::before{content:"\\F0A05"}.mdi-minidisc::before{content:"\\F0A06"}.mdi-minus::before{content:"\\F0374"}.mdi-minus-box::before{content:"\\F0375"}.mdi-minus-box-multiple::before{content:"\\F1141"}.mdi-minus-box-multiple-outline::before{content:"\\F1142"}.mdi-minus-box-outline::before{content:"\\F06F2"}.mdi-minus-circle::before{content:"\\F0376"}.mdi-minus-circle-multiple::before{content:"\\F035A"}.mdi-minus-circle-multiple-outline::before{content:"\\F0AD3"}.mdi-minus-circle-off::before{content:"\\F1459"}.mdi-minus-circle-off-outline::before{content:"\\F145A"}.mdi-minus-circle-outline::before{content:"\\F0377"}.mdi-minus-network::before{content:"\\F0378"}.mdi-minus-network-outline::before{content:"\\F0C9A"}.mdi-mirror::before{content:"\\F11FD"}.mdi-mixed-martial-arts::before{content:"\\F0D8F"}.mdi-mixed-reality::before{content:"\\F087F"}.mdi-mixer::before{content:"\\F07DD"}.mdi-molecule::before{content:"\\F0BAC"}.mdi-molecule-co::before{content:"\\F12FE"}.mdi-molecule-co2::before{content:"\\F07E4"}.mdi-monitor::before{content:"\\F0379"}.mdi-monitor-cellphone::before{content:"\\F0989"}.mdi-monitor-cellphone-star::before{content:"\\F098A"}.mdi-monitor-clean::before{content:"\\F1104"}.mdi-monitor-dashboard::before{content:"\\F0A07"}.mdi-monitor-edit::before{content:"\\F12C6"}.mdi-monitor-eye::before{content:"\\F13B4"}.mdi-monitor-lock::before{content:"\\F0DDB"}.mdi-monitor-multiple::before{content:"\\F037A"}.mdi-monitor-off::before{content:"\\F0D90"}.mdi-monitor-screenshot::before{content:"\\F0E51"}.mdi-monitor-share::before{content:"\\F1483"}.mdi-monitor-speaker::before{content:"\\F0F5F"}.mdi-monitor-speaker-off::before{content:"\\F0F60"}.mdi-monitor-star::before{content:"\\F0DDC"}.mdi-moon-first-quarter::before{content:"\\F0F61"}.mdi-moon-full::before{content:"\\F0F62"}.mdi-moon-last-quarter::before{content:"\\F0F63"}.mdi-moon-new::before{content:"\\F0F64"}.mdi-moon-waning-crescent::before{content:"\\F0F65"}.mdi-moon-waning-gibbous::before{content:"\\F0F66"}.mdi-moon-waxing-crescent::before{content:"\\F0F67"}.mdi-moon-waxing-gibbous::before{content:"\\F0F68"}.mdi-moped::before{content:"\\F1086"}.mdi-more::before{content:"\\F037B"}.mdi-mother-heart::before{content:"\\F1314"}.mdi-mother-nurse::before{content:"\\F0D21"}.mdi-motion-sensor::before{content:"\\F0D91"}.mdi-motion-sensor-off::before{content:"\\F1435"}.mdi-motorbike::before{content:"\\F037C"}.mdi-mouse::before{content:"\\F037D"}.mdi-mouse-bluetooth::before{content:"\\F098B"}.mdi-mouse-off::before{content:"\\F037E"}.mdi-mouse-variant::before{content:"\\F037F"}.mdi-mouse-variant-off::before{content:"\\F0380"}.mdi-move-resize::before{content:"\\F0655"}.mdi-move-resize-variant::before{content:"\\F0656"}.mdi-movie::before{content:"\\F0381"}.mdi-movie-edit::before{content:"\\F1122"}.mdi-movie-edit-outline::before{content:"\\F1123"}.mdi-movie-filter::before{content:"\\F1124"}.mdi-movie-filter-outline::before{content:"\\F1125"}.mdi-movie-open::before{content:"\\F0FCE"}.mdi-movie-open-outline::before{content:"\\F0FCF"}.mdi-movie-outline::before{content:"\\F0DDD"}.mdi-movie-roll::before{content:"\\F07DE"}.mdi-movie-search::before{content:"\\F11D2"}.mdi-movie-search-outline::before{content:"\\F11D3"}.mdi-muffin::before{content:"\\F098C"}.mdi-multiplication::before{content:"\\F0382"}.mdi-multiplication-box::before{content:"\\F0383"}.mdi-mushroom::before{content:"\\F07DF"}.mdi-mushroom-off::before{content:"\\F13FA"}.mdi-mushroom-off-outline::before{content:"\\F13FB"}.mdi-mushroom-outline::before{content:"\\F07E0"}.mdi-music::before{content:"\\F075A"}.mdi-music-accidental-double-flat::before{content:"\\F0F69"}.mdi-music-accidental-double-sharp::before{content:"\\F0F6A"}.mdi-music-accidental-flat::before{content:"\\F0F6B"}.mdi-music-accidental-natural::before{content:"\\F0F6C"}.mdi-music-accidental-sharp::before{content:"\\F0F6D"}.mdi-music-box::before{content:"\\F0384"}.mdi-music-box-multiple::before{content:"\\F0333"}.mdi-music-box-multiple-outline::before{content:"\\F0F04"}.mdi-music-box-outline::before{content:"\\F0385"}.mdi-music-circle::before{content:"\\F0386"}.mdi-music-circle-outline::before{content:"\\F0AD4"}.mdi-music-clef-alto::before{content:"\\F0F6E"}.mdi-music-clef-bass::before{content:"\\F0F6F"}.mdi-music-clef-treble::before{content:"\\F0F70"}.mdi-music-note::before{content:"\\F0387"}.mdi-music-note-bluetooth::before{content:"\\F05FE"}.mdi-music-note-bluetooth-off::before{content:"\\F05FF"}.mdi-music-note-eighth::before{content:"\\F0388"}.mdi-music-note-eighth-dotted::before{content:"\\F0F71"}.mdi-music-note-half::before{content:"\\F0389"}.mdi-music-note-half-dotted::before{content:"\\F0F72"}.mdi-music-note-off::before{content:"\\F038A"}.mdi-music-note-off-outline::before{content:"\\F0F73"}.mdi-music-note-outline::before{content:"\\F0F74"}.mdi-music-note-plus::before{content:"\\F0DDE"}.mdi-music-note-quarter::before{content:"\\F038B"}.mdi-music-note-quarter-dotted::before{content:"\\F0F75"}.mdi-music-note-sixteenth::before{content:"\\F038C"}.mdi-music-note-sixteenth-dotted::before{content:"\\F0F76"}.mdi-music-note-whole::before{content:"\\F038D"}.mdi-music-note-whole-dotted::before{content:"\\F0F77"}.mdi-music-off::before{content:"\\F075B"}.mdi-music-rest-eighth::before{content:"\\F0F78"}.mdi-music-rest-half::before{content:"\\F0F79"}.mdi-music-rest-quarter::before{content:"\\F0F7A"}.mdi-music-rest-sixteenth::before{content:"\\F0F7B"}.mdi-music-rest-whole::before{content:"\\F0F7C"}.mdi-nail::before{content:"\\F0DDF"}.mdi-nas::before{content:"\\F08F3"}.mdi-nativescript::before{content:"\\F0880"}.mdi-nature::before{content:"\\F038E"}.mdi-nature-people::before{content:"\\F038F"}.mdi-navigation::before{content:"\\F0390"}.mdi-near-me::before{content:"\\F05CD"}.mdi-necklace::before{content:"\\F0F0B"}.mdi-needle::before{content:"\\F0391"}.mdi-netflix::before{content:"\\F0746"}.mdi-network::before{content:"\\F06F3"}.mdi-network-off::before{content:"\\F0C9B"}.mdi-network-off-outline::before{content:"\\F0C9C"}.mdi-network-outline::before{content:"\\F0C9D"}.mdi-network-strength-1::before{content:"\\F08F4"}.mdi-network-strength-1-alert::before{content:"\\F08F5"}.mdi-network-strength-2::before{content:"\\F08F6"}.mdi-network-strength-2-alert::before{content:"\\F08F7"}.mdi-network-strength-3::before{content:"\\F08F8"}.mdi-network-strength-3-alert::before{content:"\\F08F9"}.mdi-network-strength-4::before{content:"\\F08FA"}.mdi-network-strength-4-alert::before{content:"\\F08FB"}.mdi-network-strength-off::before{content:"\\F08FC"}.mdi-network-strength-off-outline::before{content:"\\F08FD"}.mdi-network-strength-outline::before{content:"\\F08FE"}.mdi-new-box::before{content:"\\F0394"}.mdi-newspaper::before{content:"\\F0395"}.mdi-newspaper-minus::before{content:"\\F0F0C"}.mdi-newspaper-plus::before{content:"\\F0F0D"}.mdi-newspaper-variant::before{content:"\\F1001"}.mdi-newspaper-variant-multiple::before{content:"\\F1002"}.mdi-newspaper-variant-multiple-outline::before{content:"\\F1003"}.mdi-newspaper-variant-outline::before{content:"\\F1004"}.mdi-nfc::before{content:"\\F0396"}.mdi-nfc-search-variant::before{content:"\\F0E53"}.mdi-nfc-tap::before{content:"\\F0397"}.mdi-nfc-variant::before{content:"\\F0398"}.mdi-nfc-variant-off::before{content:"\\F0E54"}.mdi-ninja::before{content:"\\F0774"}.mdi-nintendo-game-boy::before{content:"\\F1393"}.mdi-nintendo-switch::before{content:"\\F07E1"}.mdi-nintendo-wii::before{content:"\\F05AB"}.mdi-nintendo-wiiu::before{content:"\\F072D"}.mdi-nix::before{content:"\\F1105"}.mdi-nodejs::before{content:"\\F0399"}.mdi-noodles::before{content:"\\F117E"}.mdi-not-equal::before{content:"\\F098D"}.mdi-not-equal-variant::before{content:"\\F098E"}.mdi-note::before{content:"\\F039A"}.mdi-note-multiple::before{content:"\\F06B8"}.mdi-note-multiple-outline::before{content:"\\F06B9"}.mdi-note-outline::before{content:"\\F039B"}.mdi-note-plus::before{content:"\\F039C"}.mdi-note-plus-outline::before{content:"\\F039D"}.mdi-note-text::before{content:"\\F039E"}.mdi-note-text-outline::before{content:"\\F11D7"}.mdi-notebook::before{content:"\\F082E"}.mdi-notebook-multiple::before{content:"\\F0E55"}.mdi-notebook-outline::before{content:"\\F0EBF"}.mdi-notification-clear-all::before{content:"\\F039F"}.mdi-npm::before{content:"\\F06F7"}.mdi-nuke::before{content:"\\F06A4"}.mdi-null::before{content:"\\F07E2"}.mdi-numeric::before{content:"\\F03A0"}.mdi-numeric-0::before{content:"\\F0B39"}.mdi-numeric-0-box::before{content:"\\F03A1"}.mdi-numeric-0-box-multiple::before{content:"\\F0F0E"}.mdi-numeric-0-box-multiple-outline::before{content:"\\F03A2"}.mdi-numeric-0-box-outline::before{content:"\\F03A3"}.mdi-numeric-0-circle::before{content:"\\F0C9E"}.mdi-numeric-0-circle-outline::before{content:"\\F0C9F"}.mdi-numeric-1::before{content:"\\F0B3A"}.mdi-numeric-1-box::before{content:"\\F03A4"}.mdi-numeric-1-box-multiple::before{content:"\\F0F0F"}.mdi-numeric-1-box-multiple-outline::before{content:"\\F03A5"}.mdi-numeric-1-box-outline::before{content:"\\F03A6"}.mdi-numeric-1-circle::before{content:"\\F0CA0"}.mdi-numeric-1-circle-outline::before{content:"\\F0CA1"}.mdi-numeric-10::before{content:"\\F0FE9"}.mdi-numeric-10-box::before{content:"\\F0F7D"}.mdi-numeric-10-box-multiple::before{content:"\\F0FEA"}.mdi-numeric-10-box-multiple-outline::before{content:"\\F0FEB"}.mdi-numeric-10-box-outline::before{content:"\\F0F7E"}.mdi-numeric-10-circle::before{content:"\\F0FEC"}.mdi-numeric-10-circle-outline::before{content:"\\F0FED"}.mdi-numeric-2::before{content:"\\F0B3B"}.mdi-numeric-2-box::before{content:"\\F03A7"}.mdi-numeric-2-box-multiple::before{content:"\\F0F10"}.mdi-numeric-2-box-multiple-outline::before{content:"\\F03A8"}.mdi-numeric-2-box-outline::before{content:"\\F03A9"}.mdi-numeric-2-circle::before{content:"\\F0CA2"}.mdi-numeric-2-circle-outline::before{content:"\\F0CA3"}.mdi-numeric-3::before{content:"\\F0B3C"}.mdi-numeric-3-box::before{content:"\\F03AA"}.mdi-numeric-3-box-multiple::before{content:"\\F0F11"}.mdi-numeric-3-box-multiple-outline::before{content:"\\F03AB"}.mdi-numeric-3-box-outline::before{content:"\\F03AC"}.mdi-numeric-3-circle::before{content:"\\F0CA4"}.mdi-numeric-3-circle-outline::before{content:"\\F0CA5"}.mdi-numeric-4::before{content:"\\F0B3D"}.mdi-numeric-4-box::before{content:"\\F03AD"}.mdi-numeric-4-box-multiple::before{content:"\\F0F12"}.mdi-numeric-4-box-multiple-outline::before{content:"\\F03B2"}.mdi-numeric-4-box-outline::before{content:"\\F03AE"}.mdi-numeric-4-circle::before{content:"\\F0CA6"}.mdi-numeric-4-circle-outline::before{content:"\\F0CA7"}.mdi-numeric-5::before{content:"\\F0B3E"}.mdi-numeric-5-box::before{content:"\\F03B1"}.mdi-numeric-5-box-multiple::before{content:"\\F0F13"}.mdi-numeric-5-box-multiple-outline::before{content:"\\F03AF"}.mdi-numeric-5-box-outline::before{content:"\\F03B0"}.mdi-numeric-5-circle::before{content:"\\F0CA8"}.mdi-numeric-5-circle-outline::before{content:"\\F0CA9"}.mdi-numeric-6::before{content:"\\F0B3F"}.mdi-numeric-6-box::before{content:"\\F03B3"}.mdi-numeric-6-box-multiple::before{content:"\\F0F14"}.mdi-numeric-6-box-multiple-outline::before{content:"\\F03B4"}.mdi-numeric-6-box-outline::before{content:"\\F03B5"}.mdi-numeric-6-circle::before{content:"\\F0CAA"}.mdi-numeric-6-circle-outline::before{content:"\\F0CAB"}.mdi-numeric-7::before{content:"\\F0B40"}.mdi-numeric-7-box::before{content:"\\F03B6"}.mdi-numeric-7-box-multiple::before{content:"\\F0F15"}.mdi-numeric-7-box-multiple-outline::before{content:"\\F03B7"}.mdi-numeric-7-box-outline::before{content:"\\F03B8"}.mdi-numeric-7-circle::before{content:"\\F0CAC"}.mdi-numeric-7-circle-outline::before{content:"\\F0CAD"}.mdi-numeric-8::before{content:"\\F0B41"}.mdi-numeric-8-box::before{content:"\\F03B9"}.mdi-numeric-8-box-multiple::before{content:"\\F0F16"}.mdi-numeric-8-box-multiple-outline::before{content:"\\F03BA"}.mdi-numeric-8-box-outline::before{content:"\\F03BB"}.mdi-numeric-8-circle::before{content:"\\F0CAE"}.mdi-numeric-8-circle-outline::before{content:"\\F0CAF"}.mdi-numeric-9::before{content:"\\F0B42"}.mdi-numeric-9-box::before{content:"\\F03BC"}.mdi-numeric-9-box-multiple::before{content:"\\F0F17"}.mdi-numeric-9-box-multiple-outline::before{content:"\\F03BD"}.mdi-numeric-9-box-outline::before{content:"\\F03BE"}.mdi-numeric-9-circle::before{content:"\\F0CB0"}.mdi-numeric-9-circle-outline::before{content:"\\F0CB1"}.mdi-numeric-9-plus::before{content:"\\F0FEE"}.mdi-numeric-9-plus-box::before{content:"\\F03BF"}.mdi-numeric-9-plus-box-multiple::before{content:"\\F0F18"}.mdi-numeric-9-plus-box-multiple-outline::before{content:"\\F03C0"}.mdi-numeric-9-plus-box-outline::before{content:"\\F03C1"}.mdi-numeric-9-plus-circle::before{content:"\\F0CB2"}.mdi-numeric-9-plus-circle-outline::before{content:"\\F0CB3"}.mdi-numeric-negative-1::before{content:"\\F1052"}.mdi-nut::before{content:"\\F06F8"}.mdi-nutrition::before{content:"\\F03C2"}.mdi-nuxt::before{content:"\\F1106"}.mdi-oar::before{content:"\\F067C"}.mdi-ocarina::before{content:"\\F0DE0"}.mdi-oci::before{content:"\\F12E9"}.mdi-ocr::before{content:"\\F113A"}.mdi-octagon::before{content:"\\F03C3"}.mdi-octagon-outline::before{content:"\\F03C4"}.mdi-octagram::before{content:"\\F06F9"}.mdi-octagram-outline::before{content:"\\F0775"}.mdi-odnoklassniki::before{content:"\\F03C5"}.mdi-offer::before{content:"\\F121B"}.mdi-office-building::before{content:"\\F0991"}.mdi-oil::before{content:"\\F03C7"}.mdi-oil-lamp::before{content:"\\F0F19"}.mdi-oil-level::before{content:"\\F1053"}.mdi-oil-temperature::before{content:"\\F0FF8"}.mdi-omega::before{content:"\\F03C9"}.mdi-one-up::before{content:"\\F0BAD"}.mdi-onepassword::before{content:"\\F0881"}.mdi-opacity::before{content:"\\F05CC"}.mdi-open-in-app::before{content:"\\F03CB"}.mdi-open-in-new::before{content:"\\F03CC"}.mdi-open-source-initiative::before{content:"\\F0BAE"}.mdi-openid::before{content:"\\F03CD"}.mdi-opera::before{content:"\\F03CE"}.mdi-orbit::before{content:"\\F0018"}.mdi-order-alphabetical-ascending::before{content:"\\F020D"}.mdi-order-alphabetical-descending::before{content:"\\F0D07"}.mdi-order-bool-ascending::before{content:"\\F02BE"}.mdi-order-bool-ascending-variant::before{content:"\\F098F"}.mdi-order-bool-descending::before{content:"\\F1384"}.mdi-order-bool-descending-variant::before{content:"\\F0990"}.mdi-order-numeric-ascending::before{content:"\\F0545"}.mdi-order-numeric-descending::before{content:"\\F0546"}.mdi-origin::before{content:"\\F0B43"}.mdi-ornament::before{content:"\\F03CF"}.mdi-ornament-variant::before{content:"\\F03D0"}.mdi-outdoor-lamp::before{content:"\\F1054"}.mdi-overscan::before{content:"\\F1005"}.mdi-owl::before{content:"\\F03D2"}.mdi-pac-man::before{content:"\\F0BAF"}.mdi-package::before{content:"\\F03D3"}.mdi-package-down::before{content:"\\F03D4"}.mdi-package-up::before{content:"\\F03D5"}.mdi-package-variant::before{content:"\\F03D6"}.mdi-package-variant-closed::before{content:"\\F03D7"}.mdi-page-first::before{content:"\\F0600"}.mdi-page-last::before{content:"\\F0601"}.mdi-page-layout-body::before{content:"\\F06FA"}.mdi-page-layout-footer::before{content:"\\F06FB"}.mdi-page-layout-header::before{content:"\\F06FC"}.mdi-page-layout-header-footer::before{content:"\\F0F7F"}.mdi-page-layout-sidebar-left::before{content:"\\F06FD"}.mdi-page-layout-sidebar-right::before{content:"\\F06FE"}.mdi-page-next::before{content:"\\F0BB0"}.mdi-page-next-outline::before{content:"\\F0BB1"}.mdi-page-previous::before{content:"\\F0BB2"}.mdi-page-previous-outline::before{content:"\\F0BB3"}.mdi-pail::before{content:"\\F1417"}.mdi-pail-minus::before{content:"\\F1437"}.mdi-pail-minus-outline::before{content:"\\F143C"}.mdi-pail-off::before{content:"\\F1439"}.mdi-pail-off-outline::before{content:"\\F143E"}.mdi-pail-outline::before{content:"\\F143A"}.mdi-pail-plus::before{content:"\\F1436"}.mdi-pail-plus-outline::before{content:"\\F143B"}.mdi-pail-remove::before{content:"\\F1438"}.mdi-pail-remove-outline::before{content:"\\F143D"}.mdi-palette::before{content:"\\F03D8"}.mdi-palette-advanced::before{content:"\\F03D9"}.mdi-palette-outline::before{content:"\\F0E0C"}.mdi-palette-swatch::before{content:"\\F08B5"}.mdi-palette-swatch-outline::before{content:"\\F135C"}.mdi-palm-tree::before{content:"\\F1055"}.mdi-pan::before{content:"\\F0BB4"}.mdi-pan-bottom-left::before{content:"\\F0BB5"}.mdi-pan-bottom-right::before{content:"\\F0BB6"}.mdi-pan-down::before{content:"\\F0BB7"}.mdi-pan-horizontal::before{content:"\\F0BB8"}.mdi-pan-left::before{content:"\\F0BB9"}.mdi-pan-right::before{content:"\\F0BBA"}.mdi-pan-top-left::before{content:"\\F0BBB"}.mdi-pan-top-right::before{content:"\\F0BBC"}.mdi-pan-up::before{content:"\\F0BBD"}.mdi-pan-vertical::before{content:"\\F0BBE"}.mdi-panda::before{content:"\\F03DA"}.mdi-pandora::before{content:"\\F03DB"}.mdi-panorama::before{content:"\\F03DC"}.mdi-panorama-fisheye::before{content:"\\F03DD"}.mdi-panorama-horizontal::before{content:"\\F03DE"}.mdi-panorama-vertical::before{content:"\\F03DF"}.mdi-panorama-wide-angle::before{content:"\\F03E0"}.mdi-paper-cut-vertical::before{content:"\\F03E1"}.mdi-paper-roll::before{content:"\\F1157"}.mdi-paper-roll-outline::before{content:"\\F1158"}.mdi-paperclip::before{content:"\\F03E2"}.mdi-parachute::before{content:"\\F0CB4"}.mdi-parachute-outline::before{content:"\\F0CB5"}.mdi-parking::before{content:"\\F03E3"}.mdi-party-popper::before{content:"\\F1056"}.mdi-passport::before{content:"\\F07E3"}.mdi-passport-biometric::before{content:"\\F0DE1"}.mdi-pasta::before{content:"\\F1160"}.mdi-patio-heater::before{content:"\\F0F80"}.mdi-patreon::before{content:"\\F0882"}.mdi-pause::before{content:"\\F03E4"}.mdi-pause-circle::before{content:"\\F03E5"}.mdi-pause-circle-outline::before{content:"\\F03E6"}.mdi-pause-octagon::before{content:"\\F03E7"}.mdi-pause-octagon-outline::before{content:"\\F03E8"}.mdi-paw::before{content:"\\F03E9"}.mdi-paw-off::before{content:"\\F0657"}.mdi-pdf-box::before{content:"\\F0E56"}.mdi-peace::before{content:"\\F0884"}.mdi-peanut::before{content:"\\F0FFC"}.mdi-peanut-off::before{content:"\\F0FFD"}.mdi-peanut-off-outline::before{content:"\\F0FFF"}.mdi-peanut-outline::before{content:"\\F0FFE"}.mdi-pen::before{content:"\\F03EA"}.mdi-pen-lock::before{content:"\\F0DE2"}.mdi-pen-minus::before{content:"\\F0DE3"}.mdi-pen-off::before{content:"\\F0DE4"}.mdi-pen-plus::before{content:"\\F0DE5"}.mdi-pen-remove::before{content:"\\F0DE6"}.mdi-pencil::before{content:"\\F03EB"}.mdi-pencil-box::before{content:"\\F03EC"}.mdi-pencil-box-multiple::before{content:"\\F1144"}.mdi-pencil-box-multiple-outline::before{content:"\\F1145"}.mdi-pencil-box-outline::before{content:"\\F03ED"}.mdi-pencil-circle::before{content:"\\F06FF"}.mdi-pencil-circle-outline::before{content:"\\F0776"}.mdi-pencil-lock::before{content:"\\F03EE"}.mdi-pencil-lock-outline::before{content:"\\F0DE7"}.mdi-pencil-minus::before{content:"\\F0DE8"}.mdi-pencil-minus-outline::before{content:"\\F0DE9"}.mdi-pencil-off::before{content:"\\F03EF"}.mdi-pencil-off-outline::before{content:"\\F0DEA"}.mdi-pencil-outline::before{content:"\\F0CB6"}.mdi-pencil-plus::before{content:"\\F0DEB"}.mdi-pencil-plus-outline::before{content:"\\F0DEC"}.mdi-pencil-remove::before{content:"\\F0DED"}.mdi-pencil-remove-outline::before{content:"\\F0DEE"}.mdi-pencil-ruler::before{content:"\\F1353"}.mdi-penguin::before{content:"\\F0EC0"}.mdi-pentagon::before{content:"\\F0701"}.mdi-pentagon-outline::before{content:"\\F0700"}.mdi-percent::before{content:"\\F03F0"}.mdi-percent-outline::before{content:"\\F1278"}.mdi-periodic-table::before{content:"\\F08B6"}.mdi-perspective-less::before{content:"\\F0D23"}.mdi-perspective-more::before{content:"\\F0D24"}.mdi-pharmacy::before{content:"\\F03F1"}.mdi-phone::before{content:"\\F03F2"}.mdi-phone-alert::before{content:"\\F0F1A"}.mdi-phone-alert-outline::before{content:"\\F118E"}.mdi-phone-bluetooth::before{content:"\\F03F3"}.mdi-phone-bluetooth-outline::before{content:"\\F118F"}.mdi-phone-cancel::before{content:"\\F10BC"}.mdi-phone-cancel-outline::before{content:"\\F1190"}.mdi-phone-check::before{content:"\\F11A9"}.mdi-phone-check-outline::before{content:"\\F11AA"}.mdi-phone-classic::before{content:"\\F0602"}.mdi-phone-classic-off::before{content:"\\F1279"}.mdi-phone-forward::before{content:"\\F03F4"}.mdi-phone-forward-outline::before{content:"\\F1191"}.mdi-phone-hangup::before{content:"\\F03F5"}.mdi-phone-hangup-outline::before{content:"\\F1192"}.mdi-phone-in-talk::before{content:"\\F03F6"}.mdi-phone-in-talk-outline::before{content:"\\F1182"}.mdi-phone-incoming::before{content:"\\F03F7"}.mdi-phone-incoming-outline::before{content:"\\F1193"}.mdi-phone-lock::before{content:"\\F03F8"}.mdi-phone-lock-outline::before{content:"\\F1194"}.mdi-phone-log::before{content:"\\F03F9"}.mdi-phone-log-outline::before{content:"\\F1195"}.mdi-phone-message::before{content:"\\F1196"}.mdi-phone-message-outline::before{content:"\\F1197"}.mdi-phone-minus::before{content:"\\F0658"}.mdi-phone-minus-outline::before{content:"\\F1198"}.mdi-phone-missed::before{content:"\\F03FA"}.mdi-phone-missed-outline::before{content:"\\F11A5"}.mdi-phone-off::before{content:"\\F0DEF"}.mdi-phone-off-outline::before{content:"\\F11A6"}.mdi-phone-outgoing::before{content:"\\F03FB"}.mdi-phone-outgoing-outline::before{content:"\\F1199"}.mdi-phone-outline::before{content:"\\F0DF0"}.mdi-phone-paused::before{content:"\\F03FC"}.mdi-phone-paused-outline::before{content:"\\F119A"}.mdi-phone-plus::before{content:"\\F0659"}.mdi-phone-plus-outline::before{content:"\\F119B"}.mdi-phone-return::before{content:"\\F082F"}.mdi-phone-return-outline::before{content:"\\F119C"}.mdi-phone-ring::before{content:"\\F11AB"}.mdi-phone-ring-outline::before{content:"\\F11AC"}.mdi-phone-rotate-landscape::before{content:"\\F0885"}.mdi-phone-rotate-portrait::before{content:"\\F0886"}.mdi-phone-settings::before{content:"\\F03FD"}.mdi-phone-settings-outline::before{content:"\\F119D"}.mdi-phone-voip::before{content:"\\F03FE"}.mdi-pi::before{content:"\\F03FF"}.mdi-pi-box::before{content:"\\F0400"}.mdi-pi-hole::before{content:"\\F0DF1"}.mdi-piano::before{content:"\\F067D"}.mdi-pickaxe::before{content:"\\F08B7"}.mdi-picture-in-picture-bottom-right::before{content:"\\F0E57"}.mdi-picture-in-picture-bottom-right-outline::before{content:"\\F0E58"}.mdi-picture-in-picture-top-right::before{content:"\\F0E59"}.mdi-picture-in-picture-top-right-outline::before{content:"\\F0E5A"}.mdi-pier::before{content:"\\F0887"}.mdi-pier-crane::before{content:"\\F0888"}.mdi-pig::before{content:"\\F0401"}.mdi-pig-variant::before{content:"\\F1006"}.mdi-piggy-bank::before{content:"\\F1007"}.mdi-pill::before{content:"\\F0402"}.mdi-pillar::before{content:"\\F0702"}.mdi-pin::before{content:"\\F0403"}.mdi-pin-off::before{content:"\\F0404"}.mdi-pin-off-outline::before{content:"\\F0930"}.mdi-pin-outline::before{content:"\\F0931"}.mdi-pine-tree::before{content:"\\F0405"}.mdi-pine-tree-box::before{content:"\\F0406"}.mdi-pine-tree-fire::before{content:"\\F141A"}.mdi-pinterest::before{content:"\\F0407"}.mdi-pinwheel::before{content:"\\F0AD5"}.mdi-pinwheel-outline::before{content:"\\F0AD6"}.mdi-pipe::before{content:"\\F07E5"}.mdi-pipe-disconnected::before{content:"\\F07E6"}.mdi-pipe-leak::before{content:"\\F0889"}.mdi-pipe-wrench::before{content:"\\F1354"}.mdi-pirate::before{content:"\\F0A08"}.mdi-pistol::before{content:"\\F0703"}.mdi-piston::before{content:"\\F088A"}.mdi-pizza::before{content:"\\F0409"}.mdi-play::before{content:"\\F040A"}.mdi-play-box::before{content:"\\F127A"}.mdi-play-box-multiple::before{content:"\\F0D19"}.mdi-play-box-multiple-outline::before{content:"\\F13E6"}.mdi-play-box-outline::before{content:"\\F040B"}.mdi-play-circle::before{content:"\\F040C"}.mdi-play-circle-outline::before{content:"\\F040D"}.mdi-play-network::before{content:"\\F088B"}.mdi-play-network-outline::before{content:"\\F0CB7"}.mdi-play-outline::before{content:"\\F0F1B"}.mdi-play-pause::before{content:"\\F040E"}.mdi-play-protected-content::before{content:"\\F040F"}.mdi-play-speed::before{content:"\\F08FF"}.mdi-playlist-check::before{content:"\\F05C7"}.mdi-playlist-edit::before{content:"\\F0900"}.mdi-playlist-minus::before{content:"\\F0410"}.mdi-playlist-music::before{content:"\\F0CB8"}.mdi-playlist-music-outline::before{content:"\\F0CB9"}.mdi-playlist-play::before{content:"\\F0411"}.mdi-playlist-plus::before{content:"\\F0412"}.mdi-playlist-remove::before{content:"\\F0413"}.mdi-playlist-star::before{content:"\\F0DF2"}.mdi-plex::before{content:"\\F06BA"}.mdi-plus::before{content:"\\F0415"}.mdi-plus-box::before{content:"\\F0416"}.mdi-plus-box-multiple::before{content:"\\F0334"}.mdi-plus-box-multiple-outline::before{content:"\\F1143"}.mdi-plus-box-outline::before{content:"\\F0704"}.mdi-plus-circle::before{content:"\\F0417"}.mdi-plus-circle-multiple::before{content:"\\F034C"}.mdi-plus-circle-multiple-outline::before{content:"\\F0418"}.mdi-plus-circle-outline::before{content:"\\F0419"}.mdi-plus-minus::before{content:"\\F0992"}.mdi-plus-minus-box::before{content:"\\F0993"}.mdi-plus-minus-variant::before{content:"\\F14C9"}.mdi-plus-network::before{content:"\\F041A"}.mdi-plus-network-outline::before{content:"\\F0CBA"}.mdi-plus-one::before{content:"\\F041B"}.mdi-plus-outline::before{content:"\\F0705"}.mdi-plus-thick::before{content:"\\F11EC"}.mdi-podcast::before{content:"\\F0994"}.mdi-podium::before{content:"\\F0D25"}.mdi-podium-bronze::before{content:"\\F0D26"}.mdi-podium-gold::before{content:"\\F0D27"}.mdi-podium-silver::before{content:"\\F0D28"}.mdi-point-of-sale::before{content:"\\F0D92"}.mdi-pokeball::before{content:"\\F041D"}.mdi-pokemon-go::before{content:"\\F0A09"}.mdi-poker-chip::before{content:"\\F0830"}.mdi-polaroid::before{content:"\\F041E"}.mdi-police-badge::before{content:"\\F1167"}.mdi-police-badge-outline::before{content:"\\F1168"}.mdi-poll::before{content:"\\F041F"}.mdi-poll-box::before{content:"\\F0420"}.mdi-poll-box-outline::before{content:"\\F127B"}.mdi-polo::before{content:"\\F14C3"}.mdi-polymer::before{content:"\\F0421"}.mdi-pool::before{content:"\\F0606"}.mdi-popcorn::before{content:"\\F0422"}.mdi-post::before{content:"\\F1008"}.mdi-post-outline::before{content:"\\F1009"}.mdi-postage-stamp::before{content:"\\F0CBB"}.mdi-pot::before{content:"\\F02E5"}.mdi-pot-mix::before{content:"\\F065B"}.mdi-pot-mix-outline::before{content:"\\F0677"}.mdi-pot-outline::before{content:"\\F02FF"}.mdi-pot-steam::before{content:"\\F065A"}.mdi-pot-steam-outline::before{content:"\\F0326"}.mdi-pound::before{content:"\\F0423"}.mdi-pound-box::before{content:"\\F0424"}.mdi-pound-box-outline::before{content:"\\F117F"}.mdi-power::before{content:"\\F0425"}.mdi-power-cycle::before{content:"\\F0901"}.mdi-power-off::before{content:"\\F0902"}.mdi-power-on::before{content:"\\F0903"}.mdi-power-plug::before{content:"\\F06A5"}.mdi-power-plug-off::before{content:"\\F06A6"}.mdi-power-plug-off-outline::before{content:"\\F1424"}.mdi-power-plug-outline::before{content:"\\F1425"}.mdi-power-settings::before{content:"\\F0426"}.mdi-power-sleep::before{content:"\\F0904"}.mdi-power-socket::before{content:"\\F0427"}.mdi-power-socket-au::before{content:"\\F0905"}.mdi-power-socket-de::before{content:"\\F1107"}.mdi-power-socket-eu::before{content:"\\F07E7"}.mdi-power-socket-fr::before{content:"\\F1108"}.mdi-power-socket-jp::before{content:"\\F1109"}.mdi-power-socket-uk::before{content:"\\F07E8"}.mdi-power-socket-us::before{content:"\\F07E9"}.mdi-power-standby::before{content:"\\F0906"}.mdi-powershell::before{content:"\\F0A0A"}.mdi-prescription::before{content:"\\F0706"}.mdi-presentation::before{content:"\\F0428"}.mdi-presentation-play::before{content:"\\F0429"}.mdi-printer::before{content:"\\F042A"}.mdi-printer-3d::before{content:"\\F042B"}.mdi-printer-3d-nozzle::before{content:"\\F0E5B"}.mdi-printer-3d-nozzle-alert::before{content:"\\F11C0"}.mdi-printer-3d-nozzle-alert-outline::before{content:"\\F11C1"}.mdi-printer-3d-nozzle-outline::before{content:"\\F0E5C"}.mdi-printer-alert::before{content:"\\F042C"}.mdi-printer-check::before{content:"\\F1146"}.mdi-printer-eye::before{content:"\\F1458"}.mdi-printer-off::before{content:"\\F0E5D"}.mdi-printer-pos::before{content:"\\F1057"}.mdi-printer-search::before{content:"\\F1457"}.mdi-printer-settings::before{content:"\\F0707"}.mdi-printer-wireless::before{content:"\\F0A0B"}.mdi-priority-high::before{content:"\\F0603"}.mdi-priority-low::before{content:"\\F0604"}.mdi-professional-hexagon::before{content:"\\F042D"}.mdi-progress-alert::before{content:"\\F0CBC"}.mdi-progress-check::before{content:"\\F0995"}.mdi-progress-clock::before{content:"\\F0996"}.mdi-progress-close::before{content:"\\F110A"}.mdi-progress-download::before{content:"\\F0997"}.mdi-progress-upload::before{content:"\\F0998"}.mdi-progress-wrench::before{content:"\\F0CBD"}.mdi-projector::before{content:"\\F042E"}.mdi-projector-screen::before{content:"\\F042F"}.mdi-propane-tank::before{content:"\\F1357"}.mdi-propane-tank-outline::before{content:"\\F1358"}.mdi-protocol::before{content:"\\F0FD8"}.mdi-publish::before{content:"\\F06A7"}.mdi-pulse::before{content:"\\F0430"}.mdi-pump::before{content:"\\F1402"}.mdi-pumpkin::before{content:"\\F0BBF"}.mdi-purse::before{content:"\\F0F1C"}.mdi-purse-outline::before{content:"\\F0F1D"}.mdi-puzzle::before{content:"\\F0431"}.mdi-puzzle-check::before{content:"\\F1426"}.mdi-puzzle-check-outline::before{content:"\\F1427"}.mdi-puzzle-edit::before{content:"\\F14D3"}.mdi-puzzle-edit-outline::before{content:"\\F14D9"}.mdi-puzzle-heart::before{content:"\\F14D4"}.mdi-puzzle-heart-outline::before{content:"\\F14DA"}.mdi-puzzle-minus::before{content:"\\F14D1"}.mdi-puzzle-minus-outline::before{content:"\\F14D7"}.mdi-puzzle-outline::before{content:"\\F0A66"}.mdi-puzzle-plus::before{content:"\\F14D0"}.mdi-puzzle-plus-outline::before{content:"\\F14D6"}.mdi-puzzle-remove::before{content:"\\F14D2"}.mdi-puzzle-remove-outline::before{content:"\\F14D8"}.mdi-puzzle-star::before{content:"\\F14D5"}.mdi-puzzle-star-outline::before{content:"\\F14DB"}.mdi-qi::before{content:"\\F0999"}.mdi-qqchat::before{content:"\\F0605"}.mdi-qrcode::before{content:"\\F0432"}.mdi-qrcode-edit::before{content:"\\F08B8"}.mdi-qrcode-minus::before{content:"\\F118C"}.mdi-qrcode-plus::before{content:"\\F118B"}.mdi-qrcode-remove::before{content:"\\F118D"}.mdi-qrcode-scan::before{content:"\\F0433"}.mdi-quadcopter::before{content:"\\F0434"}.mdi-quality-high::before{content:"\\F0435"}.mdi-quality-low::before{content:"\\F0A0C"}.mdi-quality-medium::before{content:"\\F0A0D"}.mdi-quora::before{content:"\\F0D29"}.mdi-rabbit::before{content:"\\F0907"}.mdi-racing-helmet::before{content:"\\F0D93"}.mdi-racquetball::before{content:"\\F0D94"}.mdi-radar::before{content:"\\F0437"}.mdi-radiator::before{content:"\\F0438"}.mdi-radiator-disabled::before{content:"\\F0AD7"}.mdi-radiator-off::before{content:"\\F0AD8"}.mdi-radio::before{content:"\\F0439"}.mdi-radio-am::before{content:"\\F0CBE"}.mdi-radio-fm::before{content:"\\F0CBF"}.mdi-radio-handheld::before{content:"\\F043A"}.mdi-radio-off::before{content:"\\F121C"}.mdi-radio-tower::before{content:"\\F043B"}.mdi-radioactive::before{content:"\\F043C"}.mdi-radioactive-off::before{content:"\\F0EC1"}.mdi-radiobox-blank::before{content:"\\F043D"}.mdi-radiobox-marked::before{content:"\\F043E"}.mdi-radiology-box::before{content:"\\F14C5"}.mdi-radiology-box-outline::before{content:"\\F14C6"}.mdi-radius::before{content:"\\F0CC0"}.mdi-radius-outline::before{content:"\\F0CC1"}.mdi-railroad-light::before{content:"\\F0F1E"}.mdi-raspberry-pi::before{content:"\\F043F"}.mdi-ray-end::before{content:"\\F0440"}.mdi-ray-end-arrow::before{content:"\\F0441"}.mdi-ray-start::before{content:"\\F0442"}.mdi-ray-start-arrow::before{content:"\\F0443"}.mdi-ray-start-end::before{content:"\\F0444"}.mdi-ray-vertex::before{content:"\\F0445"}.mdi-react::before{content:"\\F0708"}.mdi-read::before{content:"\\F0447"}.mdi-receipt::before{content:"\\F0449"}.mdi-record::before{content:"\\F044A"}.mdi-record-circle::before{content:"\\F0EC2"}.mdi-record-circle-outline::before{content:"\\F0EC3"}.mdi-record-player::before{content:"\\F099A"}.mdi-record-rec::before{content:"\\F044B"}.mdi-rectangle::before{content:"\\F0E5E"}.mdi-rectangle-outline::before{content:"\\F0E5F"}.mdi-recycle::before{content:"\\F044C"}.mdi-recycle-variant::before{content:"\\F139D"}.mdi-reddit::before{content:"\\F044D"}.mdi-redhat::before{content:"\\F111B"}.mdi-redo::before{content:"\\F044E"}.mdi-redo-variant::before{content:"\\F044F"}.mdi-reflect-horizontal::before{content:"\\F0A0E"}.mdi-reflect-vertical::before{content:"\\F0A0F"}.mdi-refresh::before{content:"\\F0450"}.mdi-refresh-circle::before{content:"\\F1377"}.mdi-regex::before{content:"\\F0451"}.mdi-registered-trademark::before{content:"\\F0A67"}.mdi-relation-many-to-many::before{content:"\\F1496"}.mdi-relation-many-to-one::before{content:"\\F1497"}.mdi-relation-many-to-one-or-many::before{content:"\\F1498"}.mdi-relation-many-to-only-one::before{content:"\\F1499"}.mdi-relation-many-to-zero-or-many::before{content:"\\F149A"}.mdi-relation-many-to-zero-or-one::before{content:"\\F149B"}.mdi-relation-one-or-many-to-many::before{content:"\\F149C"}.mdi-relation-one-or-many-to-one::before{content:"\\F149D"}.mdi-relation-one-or-many-to-one-or-many::before{content:"\\F149E"}.mdi-relation-one-or-many-to-only-one::before{content:"\\F149F"}.mdi-relation-one-or-many-to-zero-or-many::before{content:"\\F14A0"}.mdi-relation-one-or-many-to-zero-or-one::before{content:"\\F14A1"}.mdi-relation-one-to-many::before{content:"\\F14A2"}.mdi-relation-one-to-one::before{content:"\\F14A3"}.mdi-relation-one-to-one-or-many::before{content:"\\F14A4"}.mdi-relation-one-to-only-one::before{content:"\\F14A5"}.mdi-relation-one-to-zero-or-many::before{content:"\\F14A6"}.mdi-relation-one-to-zero-or-one::before{content:"\\F14A7"}.mdi-relation-only-one-to-many::before{content:"\\F14A8"}.mdi-relation-only-one-to-one::before{content:"\\F14A9"}.mdi-relation-only-one-to-one-or-many::before{content:"\\F14AA"}.mdi-relation-only-one-to-only-one::before{content:"\\F14AB"}.mdi-relation-only-one-to-zero-or-many::before{content:"\\F14AC"}.mdi-relation-only-one-to-zero-or-one::before{content:"\\F14AD"}.mdi-relation-zero-or-many-to-many::before{content:"\\F14AE"}.mdi-relation-zero-or-many-to-one::before{content:"\\F14AF"}.mdi-relation-zero-or-many-to-one-or-many::before{content:"\\F14B0"}.mdi-relation-zero-or-many-to-only-one::before{content:"\\F14B1"}.mdi-relation-zero-or-many-to-zero-or-many::before{content:"\\F14B2"}.mdi-relation-zero-or-many-to-zero-or-one::before{content:"\\F14B3"}.mdi-relation-zero-or-one-to-many::before{content:"\\F14B4"}.mdi-relation-zero-or-one-to-one::before{content:"\\F14B5"}.mdi-relation-zero-or-one-to-one-or-many::before{content:"\\F14B6"}.mdi-relation-zero-or-one-to-only-one::before{content:"\\F14B7"}.mdi-relation-zero-or-one-to-zero-or-many::before{content:"\\F14B8"}.mdi-relation-zero-or-one-to-zero-or-one::before{content:"\\F14B9"}.mdi-relative-scale::before{content:"\\F0452"}.mdi-reload::before{content:"\\F0453"}.mdi-reload-alert::before{content:"\\F110B"}.mdi-reminder::before{content:"\\F088C"}.mdi-remote::before{content:"\\F0454"}.mdi-remote-desktop::before{content:"\\F08B9"}.mdi-remote-off::before{content:"\\F0EC4"}.mdi-remote-tv::before{content:"\\F0EC5"}.mdi-remote-tv-off::before{content:"\\F0EC6"}.mdi-rename-box::before{content:"\\F0455"}.mdi-reorder-horizontal::before{content:"\\F0688"}.mdi-reorder-vertical::before{content:"\\F0689"}.mdi-repeat::before{content:"\\F0456"}.mdi-repeat-off::before{content:"\\F0457"}.mdi-repeat-once::before{content:"\\F0458"}.mdi-replay::before{content:"\\F0459"}.mdi-reply::before{content:"\\F045A"}.mdi-reply-all::before{content:"\\F045B"}.mdi-reply-all-outline::before{content:"\\F0F1F"}.mdi-reply-circle::before{content:"\\F11AE"}.mdi-reply-outline::before{content:"\\F0F20"}.mdi-reproduction::before{content:"\\F045C"}.mdi-resistor::before{content:"\\F0B44"}.mdi-resistor-nodes::before{content:"\\F0B45"}.mdi-resize::before{content:"\\F0A68"}.mdi-resize-bottom-right::before{content:"\\F045D"}.mdi-responsive::before{content:"\\F045E"}.mdi-restart::before{content:"\\F0709"}.mdi-restart-alert::before{content:"\\F110C"}.mdi-restart-off::before{content:"\\F0D95"}.mdi-restore::before{content:"\\F099B"}.mdi-restore-alert::before{content:"\\F110D"}.mdi-rewind::before{content:"\\F045F"}.mdi-rewind-10::before{content:"\\F0D2A"}.mdi-rewind-30::before{content:"\\F0D96"}.mdi-rewind-5::before{content:"\\F11F9"}.mdi-rewind-outline::before{content:"\\F070A"}.mdi-rhombus::before{content:"\\F070B"}.mdi-rhombus-medium::before{content:"\\F0A10"}.mdi-rhombus-medium-outline::before{content:"\\F14DC"}.mdi-rhombus-outline::before{content:"\\F070C"}.mdi-rhombus-split::before{content:"\\F0A11"}.mdi-rhombus-split-outline::before{content:"\\F14DD"}.mdi-ribbon::before{content:"\\F0460"}.mdi-rice::before{content:"\\F07EA"}.mdi-ring::before{content:"\\F07EB"}.mdi-rivet::before{content:"\\F0E60"}.mdi-road::before{content:"\\F0461"}.mdi-road-variant::before{content:"\\F0462"}.mdi-robber::before{content:"\\F1058"}.mdi-robot::before{content:"\\F06A9"}.mdi-robot-industrial::before{content:"\\F0B46"}.mdi-robot-mower::before{content:"\\F11F7"}.mdi-robot-mower-outline::before{content:"\\F11F3"}.mdi-robot-vacuum::before{content:"\\F070D"}.mdi-robot-vacuum-variant::before{content:"\\F0908"}.mdi-rocket::before{content:"\\F0463"}.mdi-rocket-launch::before{content:"\\F14DE"}.mdi-rocket-launch-outline::before{content:"\\F14DF"}.mdi-rocket-outline::before{content:"\\F13AF"}.mdi-rodent::before{content:"\\F1327"}.mdi-roller-skate::before{content:"\\F0D2B"}.mdi-roller-skate-off::before{content:"\\F0145"}.mdi-rollerblade::before{content:"\\F0D2C"}.mdi-rollerblade-off::before{content:"\\F002E"}.mdi-rollupjs::before{content:"\\F0BC0"}.mdi-roman-numeral-1::before{content:"\\F1088"}.mdi-roman-numeral-10::before{content:"\\F1091"}.mdi-roman-numeral-2::before{content:"\\F1089"}.mdi-roman-numeral-3::before{content:"\\F108A"}.mdi-roman-numeral-4::before{content:"\\F108B"}.mdi-roman-numeral-5::before{content:"\\F108C"}.mdi-roman-numeral-6::before{content:"\\F108D"}.mdi-roman-numeral-7::before{content:"\\F108E"}.mdi-roman-numeral-8::before{content:"\\F108F"}.mdi-roman-numeral-9::before{content:"\\F1090"}.mdi-room-service::before{content:"\\F088D"}.mdi-room-service-outline::before{content:"\\F0D97"}.mdi-rotate-3d::before{content:"\\F0EC7"}.mdi-rotate-3d-variant::before{content:"\\F0464"}.mdi-rotate-left::before{content:"\\F0465"}.mdi-rotate-left-variant::before{content:"\\F0466"}.mdi-rotate-orbit::before{content:"\\F0D98"}.mdi-rotate-right::before{content:"\\F0467"}.mdi-rotate-right-variant::before{content:"\\F0468"}.mdi-rounded-corner::before{content:"\\F0607"}.mdi-router::before{content:"\\F11E2"}.mdi-router-network::before{content:"\\F1087"}.mdi-router-wireless::before{content:"\\F0469"}.mdi-router-wireless-settings::before{content:"\\F0A69"}.mdi-routes::before{content:"\\F046A"}.mdi-routes-clock::before{content:"\\F1059"}.mdi-rowing::before{content:"\\F0608"}.mdi-rss::before{content:"\\F046B"}.mdi-rss-box::before{content:"\\F046C"}.mdi-rss-off::before{content:"\\F0F21"}.mdi-rug::before{content:"\\F1475"}.mdi-rugby::before{content:"\\F0D99"}.mdi-ruler::before{content:"\\F046D"}.mdi-ruler-square::before{content:"\\F0CC2"}.mdi-ruler-square-compass::before{content:"\\F0EBE"}.mdi-run::before{content:"\\F070E"}.mdi-run-fast::before{content:"\\F046E"}.mdi-rv-truck::before{content:"\\F11D4"}.mdi-sack::before{content:"\\F0D2E"}.mdi-sack-percent::before{content:"\\F0D2F"}.mdi-safe::before{content:"\\F0A6A"}.mdi-safe-square::before{content:"\\F127C"}.mdi-safe-square-outline::before{content:"\\F127D"}.mdi-safety-goggles::before{content:"\\F0D30"}.mdi-sail-boat::before{content:"\\F0EC8"}.mdi-sale::before{content:"\\F046F"}.mdi-salesforce::before{content:"\\F088E"}.mdi-sass::before{content:"\\F07EC"}.mdi-satellite::before{content:"\\F0470"}.mdi-satellite-uplink::before{content:"\\F0909"}.mdi-satellite-variant::before{content:"\\F0471"}.mdi-sausage::before{content:"\\F08BA"}.mdi-saw-blade::before{content:"\\F0E61"}.mdi-sawtooth-wave::before{content:"\\F147A"}.mdi-saxophone::before{content:"\\F0609"}.mdi-scale::before{content:"\\F0472"}.mdi-scale-balance::before{content:"\\F05D1"}.mdi-scale-bathroom::before{content:"\\F0473"}.mdi-scale-off::before{content:"\\F105A"}.mdi-scan-helper::before{content:"\\F13D8"}.mdi-scanner::before{content:"\\F06AB"}.mdi-scanner-off::before{content:"\\F090A"}.mdi-scatter-plot::before{content:"\\F0EC9"}.mdi-scatter-plot-outline::before{content:"\\F0ECA"}.mdi-school::before{content:"\\F0474"}.mdi-school-outline::before{content:"\\F1180"}.mdi-scissors-cutting::before{content:"\\F0A6B"}.mdi-scooter::before{content:"\\F11E9"}.mdi-scoreboard::before{content:"\\F127E"}.mdi-scoreboard-outline::before{content:"\\F127F"}.mdi-screen-rotation::before{content:"\\F0475"}.mdi-screen-rotation-lock::before{content:"\\F0478"}.mdi-screw-flat-top::before{content:"\\F0DF3"}.mdi-screw-lag::before{content:"\\F0DF4"}.mdi-screw-machine-flat-top::before{content:"\\F0DF5"}.mdi-screw-machine-round-top::before{content:"\\F0DF6"}.mdi-screw-round-top::before{content:"\\F0DF7"}.mdi-screwdriver::before{content:"\\F0476"}.mdi-script::before{content:"\\F0BC1"}.mdi-script-outline::before{content:"\\F0477"}.mdi-script-text::before{content:"\\F0BC2"}.mdi-script-text-outline::before{content:"\\F0BC3"}.mdi-sd::before{content:"\\F0479"}.mdi-seal::before{content:"\\F047A"}.mdi-seal-variant::before{content:"\\F0FD9"}.mdi-search-web::before{content:"\\F070F"}.mdi-seat::before{content:"\\F0CC3"}.mdi-seat-flat::before{content:"\\F047B"}.mdi-seat-flat-angled::before{content:"\\F047C"}.mdi-seat-individual-suite::before{content:"\\F047D"}.mdi-seat-legroom-extra::before{content:"\\F047E"}.mdi-seat-legroom-normal::before{content:"\\F047F"}.mdi-seat-legroom-reduced::before{content:"\\F0480"}.mdi-seat-outline::before{content:"\\F0CC4"}.mdi-seat-passenger::before{content:"\\F1249"}.mdi-seat-recline-extra::before{content:"\\F0481"}.mdi-seat-recline-normal::before{content:"\\F0482"}.mdi-seatbelt::before{content:"\\F0CC5"}.mdi-security::before{content:"\\F0483"}.mdi-security-network::before{content:"\\F0484"}.mdi-seed::before{content:"\\F0E62"}.mdi-seed-off::before{content:"\\F13FD"}.mdi-seed-off-outline::before{content:"\\F13FE"}.mdi-seed-outline::before{content:"\\F0E63"}.mdi-segment::before{content:"\\F0ECB"}.mdi-select::before{content:"\\F0485"}.mdi-select-all::before{content:"\\F0486"}.mdi-select-color::before{content:"\\F0D31"}.mdi-select-compare::before{content:"\\F0AD9"}.mdi-select-drag::before{content:"\\F0A6C"}.mdi-select-group::before{content:"\\F0F82"}.mdi-select-inverse::before{content:"\\F0487"}.mdi-select-marker::before{content:"\\F1280"}.mdi-select-multiple::before{content:"\\F1281"}.mdi-select-multiple-marker::before{content:"\\F1282"}.mdi-select-off::before{content:"\\F0488"}.mdi-select-place::before{content:"\\F0FDA"}.mdi-select-search::before{content:"\\F1204"}.mdi-selection::before{content:"\\F0489"}.mdi-selection-drag::before{content:"\\F0A6D"}.mdi-selection-ellipse::before{content:"\\F0D32"}.mdi-selection-ellipse-arrow-inside::before{content:"\\F0F22"}.mdi-selection-marker::before{content:"\\F1283"}.mdi-selection-multiple::before{content:"\\F1285"}.mdi-selection-multiple-marker::before{content:"\\F1284"}.mdi-selection-off::before{content:"\\F0777"}.mdi-selection-search::before{content:"\\F1205"}.mdi-semantic-web::before{content:"\\F1316"}.mdi-send::before{content:"\\F048A"}.mdi-send-check::before{content:"\\F1161"}.mdi-send-check-outline::before{content:"\\F1162"}.mdi-send-circle::before{content:"\\F0DF8"}.mdi-send-circle-outline::before{content:"\\F0DF9"}.mdi-send-clock::before{content:"\\F1163"}.mdi-send-clock-outline::before{content:"\\F1164"}.mdi-send-lock::before{content:"\\F07ED"}.mdi-send-lock-outline::before{content:"\\F1166"}.mdi-send-outline::before{content:"\\F1165"}.mdi-serial-port::before{content:"\\F065C"}.mdi-server::before{content:"\\F048B"}.mdi-server-minus::before{content:"\\F048C"}.mdi-server-network::before{content:"\\F048D"}.mdi-server-network-off::before{content:"\\F048E"}.mdi-server-off::before{content:"\\F048F"}.mdi-server-plus::before{content:"\\F0490"}.mdi-server-remove::before{content:"\\F0491"}.mdi-server-security::before{content:"\\F0492"}.mdi-set-all::before{content:"\\F0778"}.mdi-set-center::before{content:"\\F0779"}.mdi-set-center-right::before{content:"\\F077A"}.mdi-set-left::before{content:"\\F077B"}.mdi-set-left-center::before{content:"\\F077C"}.mdi-set-left-right::before{content:"\\F077D"}.mdi-set-merge::before{content:"\\F14E0"}.mdi-set-none::before{content:"\\F077E"}.mdi-set-right::before{content:"\\F077F"}.mdi-set-split::before{content:"\\F14E1"}.mdi-set-square::before{content:"\\F145D"}.mdi-set-top-box::before{content:"\\F099F"}.mdi-settings-helper::before{content:"\\F0A6E"}.mdi-shaker::before{content:"\\F110E"}.mdi-shaker-outline::before{content:"\\F110F"}.mdi-shape::before{content:"\\F0831"}.mdi-shape-circle-plus::before{content:"\\F065D"}.mdi-shape-outline::before{content:"\\F0832"}.mdi-shape-oval-plus::before{content:"\\F11FA"}.mdi-shape-plus::before{content:"\\F0495"}.mdi-shape-polygon-plus::before{content:"\\F065E"}.mdi-shape-rectangle-plus::before{content:"\\F065F"}.mdi-shape-square-plus::before{content:"\\F0660"}.mdi-share::before{content:"\\F0496"}.mdi-share-all::before{content:"\\F11F4"}.mdi-share-all-outline::before{content:"\\F11F5"}.mdi-share-circle::before{content:"\\F11AD"}.mdi-share-off::before{content:"\\F0F23"}.mdi-share-off-outline::before{content:"\\F0F24"}.mdi-share-outline::before{content:"\\F0932"}.mdi-share-variant::before{content:"\\F0497"}.mdi-sheep::before{content:"\\F0CC6"}.mdi-shield::before{content:"\\F0498"}.mdi-shield-account::before{content:"\\F088F"}.mdi-shield-account-outline::before{content:"\\F0A12"}.mdi-shield-airplane::before{content:"\\F06BB"}.mdi-shield-airplane-outline::before{content:"\\F0CC7"}.mdi-shield-alert::before{content:"\\F0ECC"}.mdi-shield-alert-outline::before{content:"\\F0ECD"}.mdi-shield-bug::before{content:"\\F13DA"}.mdi-shield-bug-outline::before{content:"\\F13DB"}.mdi-shield-car::before{content:"\\F0F83"}.mdi-shield-check::before{content:"\\F0565"}.mdi-shield-check-outline::before{content:"\\F0CC8"}.mdi-shield-cross::before{content:"\\F0CC9"}.mdi-shield-cross-outline::before{content:"\\F0CCA"}.mdi-shield-edit::before{content:"\\F11A0"}.mdi-shield-edit-outline::before{content:"\\F11A1"}.mdi-shield-half::before{content:"\\F1360"}.mdi-shield-half-full::before{content:"\\F0780"}.mdi-shield-home::before{content:"\\F068A"}.mdi-shield-home-outline::before{content:"\\F0CCB"}.mdi-shield-key::before{content:"\\F0BC4"}.mdi-shield-key-outline::before{content:"\\F0BC5"}.mdi-shield-link-variant::before{content:"\\F0D33"}.mdi-shield-link-variant-outline::before{content:"\\F0D34"}.mdi-shield-lock::before{content:"\\F099D"}.mdi-shield-lock-outline::before{content:"\\F0CCC"}.mdi-shield-off::before{content:"\\F099E"}.mdi-shield-off-outline::before{content:"\\F099C"}.mdi-shield-outline::before{content:"\\F0499"}.mdi-shield-plus::before{content:"\\F0ADA"}.mdi-shield-plus-outline::before{content:"\\F0ADB"}.mdi-shield-refresh::before{content:"\\F00AA"}.mdi-shield-refresh-outline::before{content:"\\F01E0"}.mdi-shield-remove::before{content:"\\F0ADC"}.mdi-shield-remove-outline::before{content:"\\F0ADD"}.mdi-shield-search::before{content:"\\F0D9A"}.mdi-shield-star::before{content:"\\F113B"}.mdi-shield-star-outline::before{content:"\\F113C"}.mdi-shield-sun::before{content:"\\F105D"}.mdi-shield-sun-outline::before{content:"\\F105E"}.mdi-shield-sync::before{content:"\\F11A2"}.mdi-shield-sync-outline::before{content:"\\F11A3"}.mdi-ship-wheel::before{content:"\\F0833"}.mdi-shoe-formal::before{content:"\\F0B47"}.mdi-shoe-heel::before{content:"\\F0B48"}.mdi-shoe-print::before{content:"\\F0DFA"}.mdi-shopping::before{content:"\\F049A"}.mdi-shopping-music::before{content:"\\F049B"}.mdi-shopping-outline::before{content:"\\F11D5"}.mdi-shopping-search::before{content:"\\F0F84"}.mdi-shovel::before{content:"\\F0710"}.mdi-shovel-off::before{content:"\\F0711"}.mdi-shower::before{content:"\\F09A0"}.mdi-shower-head::before{content:"\\F09A1"}.mdi-shredder::before{content:"\\F049C"}.mdi-shuffle::before{content:"\\F049D"}.mdi-shuffle-disabled::before{content:"\\F049E"}.mdi-shuffle-variant::before{content:"\\F049F"}.mdi-shuriken::before{content:"\\F137F"}.mdi-sigma::before{content:"\\F04A0"}.mdi-sigma-lower::before{content:"\\F062B"}.mdi-sign-caution::before{content:"\\F04A1"}.mdi-sign-direction::before{content:"\\F0781"}.mdi-sign-direction-minus::before{content:"\\F1000"}.mdi-sign-direction-plus::before{content:"\\F0FDC"}.mdi-sign-direction-remove::before{content:"\\F0FDD"}.mdi-sign-real-estate::before{content:"\\F1118"}.mdi-sign-text::before{content:"\\F0782"}.mdi-signal::before{content:"\\F04A2"}.mdi-signal-2g::before{content:"\\F0712"}.mdi-signal-3g::before{content:"\\F0713"}.mdi-signal-4g::before{content:"\\F0714"}.mdi-signal-5g::before{content:"\\F0A6F"}.mdi-signal-cellular-1::before{content:"\\F08BC"}.mdi-signal-cellular-2::before{content:"\\F08BD"}.mdi-signal-cellular-3::before{content:"\\F08BE"}.mdi-signal-cellular-outline::before{content:"\\F08BF"}.mdi-signal-distance-variant::before{content:"\\F0E64"}.mdi-signal-hspa::before{content:"\\F0715"}.mdi-signal-hspa-plus::before{content:"\\F0716"}.mdi-signal-off::before{content:"\\F0783"}.mdi-signal-variant::before{content:"\\F060A"}.mdi-signature::before{content:"\\F0DFB"}.mdi-signature-freehand::before{content:"\\F0DFC"}.mdi-signature-image::before{content:"\\F0DFD"}.mdi-signature-text::before{content:"\\F0DFE"}.mdi-silo::before{content:"\\F0B49"}.mdi-silverware::before{content:"\\F04A3"}.mdi-silverware-clean::before{content:"\\F0FDE"}.mdi-silverware-fork::before{content:"\\F04A4"}.mdi-silverware-fork-knife::before{content:"\\F0A70"}.mdi-silverware-spoon::before{content:"\\F04A5"}.mdi-silverware-variant::before{content:"\\F04A6"}.mdi-sim::before{content:"\\F04A7"}.mdi-sim-alert::before{content:"\\F04A8"}.mdi-sim-off::before{content:"\\F04A9"}.mdi-simple-icons::before{content:"\\F131D"}.mdi-sina-weibo::before{content:"\\F0ADF"}.mdi-sine-wave::before{content:"\\F095B"}.mdi-sitemap::before{content:"\\F04AA"}.mdi-size-l::before{content:"\\F13A6"}.mdi-size-m::before{content:"\\F13A5"}.mdi-size-s::before{content:"\\F13A4"}.mdi-size-xl::before{content:"\\F13A7"}.mdi-size-xs::before{content:"\\F13A3"}.mdi-size-xxl::before{content:"\\F13A8"}.mdi-size-xxs::before{content:"\\F13A2"}.mdi-size-xxxl::before{content:"\\F13A9"}.mdi-skate::before{content:"\\F0D35"}.mdi-skateboard::before{content:"\\F14C2"}.mdi-skew-less::before{content:"\\F0D36"}.mdi-skew-more::before{content:"\\F0D37"}.mdi-ski::before{content:"\\F1304"}.mdi-ski-cross-country::before{content:"\\F1305"}.mdi-ski-water::before{content:"\\F1306"}.mdi-skip-backward::before{content:"\\F04AB"}.mdi-skip-backward-outline::before{content:"\\F0F25"}.mdi-skip-forward::before{content:"\\F04AC"}.mdi-skip-forward-outline::before{content:"\\F0F26"}.mdi-skip-next::before{content:"\\F04AD"}.mdi-skip-next-circle::before{content:"\\F0661"}.mdi-skip-next-circle-outline::before{content:"\\F0662"}.mdi-skip-next-outline::before{content:"\\F0F27"}.mdi-skip-previous::before{content:"\\F04AE"}.mdi-skip-previous-circle::before{content:"\\F0663"}.mdi-skip-previous-circle-outline::before{content:"\\F0664"}.mdi-skip-previous-outline::before{content:"\\F0F28"}.mdi-skull::before{content:"\\F068C"}.mdi-skull-crossbones::before{content:"\\F0BC6"}.mdi-skull-crossbones-outline::before{content:"\\F0BC7"}.mdi-skull-outline::before{content:"\\F0BC8"}.mdi-skull-scan::before{content:"\\F14C7"}.mdi-skull-scan-outline::before{content:"\\F14C8"}.mdi-skype::before{content:"\\F04AF"}.mdi-skype-business::before{content:"\\F04B0"}.mdi-slack::before{content:"\\F04B1"}.mdi-slash-forward::before{content:"\\F0FDF"}.mdi-slash-forward-box::before{content:"\\F0FE0"}.mdi-sleep::before{content:"\\F04B2"}.mdi-sleep-off::before{content:"\\F04B3"}.mdi-slope-downhill::before{content:"\\F0DFF"}.mdi-slope-uphill::before{content:"\\F0E00"}.mdi-slot-machine::before{content:"\\F1114"}.mdi-slot-machine-outline::before{content:"\\F1115"}.mdi-smart-card::before{content:"\\F10BD"}.mdi-smart-card-outline::before{content:"\\F10BE"}.mdi-smart-card-reader::before{content:"\\F10BF"}.mdi-smart-card-reader-outline::before{content:"\\F10C0"}.mdi-smog::before{content:"\\F0A71"}.mdi-smoke-detector::before{content:"\\F0392"}.mdi-smoking::before{content:"\\F04B4"}.mdi-smoking-off::before{content:"\\F04B5"}.mdi-smoking-pipe::before{content:"\\F140D"}.mdi-smoking-pipe-off::before{content:"\\F1428"}.mdi-snapchat::before{content:"\\F04B6"}.mdi-snowboard::before{content:"\\F1307"}.mdi-snowflake::before{content:"\\F0717"}.mdi-snowflake-alert::before{content:"\\F0F29"}.mdi-snowflake-melt::before{content:"\\F12CB"}.mdi-snowflake-variant::before{content:"\\F0F2A"}.mdi-snowman::before{content:"\\F04B7"}.mdi-soccer::before{content:"\\F04B8"}.mdi-soccer-field::before{content:"\\F0834"}.mdi-sofa::before{content:"\\F04B9"}.mdi-solar-panel::before{content:"\\F0D9B"}.mdi-solar-panel-large::before{content:"\\F0D9C"}.mdi-solar-power::before{content:"\\F0A72"}.mdi-soldering-iron::before{content:"\\F1092"}.mdi-solid::before{content:"\\F068D"}.mdi-sony-playstation::before{content:"\\F0414"}.mdi-sort::before{content:"\\F04BA"}.mdi-sort-alphabetical-ascending::before{content:"\\F05BD"}.mdi-sort-alphabetical-ascending-variant::before{content:"\\F1148"}.mdi-sort-alphabetical-descending::before{content:"\\F05BF"}.mdi-sort-alphabetical-descending-variant::before{content:"\\F1149"}.mdi-sort-alphabetical-variant::before{content:"\\F04BB"}.mdi-sort-ascending::before{content:"\\F04BC"}.mdi-sort-bool-ascending::before{content:"\\F1385"}.mdi-sort-bool-ascending-variant::before{content:"\\F1386"}.mdi-sort-bool-descending::before{content:"\\F1387"}.mdi-sort-bool-descending-variant::before{content:"\\F1388"}.mdi-sort-descending::before{content:"\\F04BD"}.mdi-sort-numeric-ascending::before{content:"\\F1389"}.mdi-sort-numeric-ascending-variant::before{content:"\\F090D"}.mdi-sort-numeric-descending::before{content:"\\F138A"}.mdi-sort-numeric-descending-variant::before{content:"\\F0AD2"}.mdi-sort-numeric-variant::before{content:"\\F04BE"}.mdi-sort-reverse-variant::before{content:"\\F033C"}.mdi-sort-variant::before{content:"\\F04BF"}.mdi-sort-variant-lock::before{content:"\\F0CCD"}.mdi-sort-variant-lock-open::before{content:"\\F0CCE"}.mdi-sort-variant-remove::before{content:"\\F1147"}.mdi-soundcloud::before{content:"\\F04C0"}.mdi-source-branch::before{content:"\\F062C"}.mdi-source-branch-check::before{content:"\\F14CF"}.mdi-source-branch-minus::before{content:"\\F14CB"}.mdi-source-branch-plus::before{content:"\\F14CA"}.mdi-source-branch-refresh::before{content:"\\F14CD"}.mdi-source-branch-remove::before{content:"\\F14CC"}.mdi-source-branch-sync::before{content:"\\F14CE"}.mdi-source-commit::before{content:"\\F0718"}.mdi-source-commit-end::before{content:"\\F0719"}.mdi-source-commit-end-local::before{content:"\\F071A"}.mdi-source-commit-local::before{content:"\\F071B"}.mdi-source-commit-next-local::before{content:"\\F071C"}.mdi-source-commit-start::before{content:"\\F071D"}.mdi-source-commit-start-next-local::before{content:"\\F071E"}.mdi-source-fork::before{content:"\\F04C1"}.mdi-source-merge::before{content:"\\F062D"}.mdi-source-pull::before{content:"\\F04C2"}.mdi-source-repository::before{content:"\\F0CCF"}.mdi-source-repository-multiple::before{content:"\\F0CD0"}.mdi-soy-sauce::before{content:"\\F07EE"}.mdi-soy-sauce-off::before{content:"\\F13FC"}.mdi-spa::before{content:"\\F0CD1"}.mdi-spa-outline::before{content:"\\F0CD2"}.mdi-space-invaders::before{content:"\\F0BC9"}.mdi-space-station::before{content:"\\F1383"}.mdi-spade::before{content:"\\F0E65"}.mdi-speaker::before{content:"\\F04C3"}.mdi-speaker-bluetooth::before{content:"\\F09A2"}.mdi-speaker-multiple::before{content:"\\F0D38"}.mdi-speaker-off::before{content:"\\F04C4"}.mdi-speaker-wireless::before{content:"\\F071F"}.mdi-speedometer::before{content:"\\F04C5"}.mdi-speedometer-medium::before{content:"\\F0F85"}.mdi-speedometer-slow::before{content:"\\F0F86"}.mdi-spellcheck::before{content:"\\F04C6"}.mdi-spider::before{content:"\\F11EA"}.mdi-spider-thread::before{content:"\\F11EB"}.mdi-spider-web::before{content:"\\F0BCA"}.mdi-spoon-sugar::before{content:"\\F1429"}.mdi-spotify::before{content:"\\F04C7"}.mdi-spotlight::before{content:"\\F04C8"}.mdi-spotlight-beam::before{content:"\\F04C9"}.mdi-spray::before{content:"\\F0665"}.mdi-spray-bottle::before{content:"\\F0AE0"}.mdi-sprinkler::before{content:"\\F105F"}.mdi-sprinkler-variant::before{content:"\\F1060"}.mdi-sprout::before{content:"\\F0E66"}.mdi-sprout-outline::before{content:"\\F0E67"}.mdi-square::before{content:"\\F0764"}.mdi-square-edit-outline::before{content:"\\F090C"}.mdi-square-medium::before{content:"\\F0A13"}.mdi-square-medium-outline::before{content:"\\F0A14"}.mdi-square-off::before{content:"\\F12EE"}.mdi-square-off-outline::before{content:"\\F12EF"}.mdi-square-outline::before{content:"\\F0763"}.mdi-square-root::before{content:"\\F0784"}.mdi-square-root-box::before{content:"\\F09A3"}.mdi-square-small::before{content:"\\F0A15"}.mdi-square-wave::before{content:"\\F147B"}.mdi-squeegee::before{content:"\\F0AE1"}.mdi-ssh::before{content:"\\F08C0"}.mdi-stack-exchange::before{content:"\\F060B"}.mdi-stack-overflow::before{content:"\\F04CC"}.mdi-stackpath::before{content:"\\F0359"}.mdi-stadium::before{content:"\\F0FF9"}.mdi-stadium-variant::before{content:"\\F0720"}.mdi-stairs::before{content:"\\F04CD"}.mdi-stairs-box::before{content:"\\F139E"}.mdi-stairs-down::before{content:"\\F12BE"}.mdi-stairs-up::before{content:"\\F12BD"}.mdi-stamper::before{content:"\\F0D39"}.mdi-standard-definition::before{content:"\\F07EF"}.mdi-star::before{content:"\\F04CE"}.mdi-star-box::before{content:"\\F0A73"}.mdi-star-box-multiple::before{content:"\\F1286"}.mdi-star-box-multiple-outline::before{content:"\\F1287"}.mdi-star-box-outline::before{content:"\\F0A74"}.mdi-star-circle::before{content:"\\F04CF"}.mdi-star-circle-outline::before{content:"\\F09A4"}.mdi-star-face::before{content:"\\F09A5"}.mdi-star-four-points::before{content:"\\F0AE2"}.mdi-star-four-points-outline::before{content:"\\F0AE3"}.mdi-star-half::before{content:"\\F0246"}.mdi-star-half-full::before{content:"\\F04D0"}.mdi-star-off::before{content:"\\F04D1"}.mdi-star-outline::before{content:"\\F04D2"}.mdi-star-three-points::before{content:"\\F0AE4"}.mdi-star-three-points-outline::before{content:"\\F0AE5"}.mdi-state-machine::before{content:"\\F11EF"}.mdi-steam::before{content:"\\F04D3"}.mdi-steering::before{content:"\\F04D4"}.mdi-steering-off::before{content:"\\F090E"}.mdi-step-backward::before{content:"\\F04D5"}.mdi-step-backward-2::before{content:"\\F04D6"}.mdi-step-forward::before{content:"\\F04D7"}.mdi-step-forward-2::before{content:"\\F04D8"}.mdi-stethoscope::before{content:"\\F04D9"}.mdi-sticker::before{content:"\\F1364"}.mdi-sticker-alert::before{content:"\\F1365"}.mdi-sticker-alert-outline::before{content:"\\F1366"}.mdi-sticker-check::before{content:"\\F1367"}.mdi-sticker-check-outline::before{content:"\\F1368"}.mdi-sticker-circle-outline::before{content:"\\F05D0"}.mdi-sticker-emoji::before{content:"\\F0785"}.mdi-sticker-minus::before{content:"\\F1369"}.mdi-sticker-minus-outline::before{content:"\\F136A"}.mdi-sticker-outline::before{content:"\\F136B"}.mdi-sticker-plus::before{content:"\\F136C"}.mdi-sticker-plus-outline::before{content:"\\F136D"}.mdi-sticker-remove::before{content:"\\F136E"}.mdi-sticker-remove-outline::before{content:"\\F136F"}.mdi-stocking::before{content:"\\F04DA"}.mdi-stomach::before{content:"\\F1093"}.mdi-stop::before{content:"\\F04DB"}.mdi-stop-circle::before{content:"\\F0666"}.mdi-stop-circle-outline::before{content:"\\F0667"}.mdi-store::before{content:"\\F04DC"}.mdi-store-24-hour::before{content:"\\F04DD"}.mdi-store-outline::before{content:"\\F1361"}.mdi-storefront::before{content:"\\F07C7"}.mdi-storefront-outline::before{content:"\\F10C1"}.mdi-stove::before{content:"\\F04DE"}.mdi-strategy::before{content:"\\F11D6"}.mdi-stretch-to-page::before{content:"\\F0F2B"}.mdi-stretch-to-page-outline::before{content:"\\F0F2C"}.mdi-string-lights::before{content:"\\F12BA"}.mdi-string-lights-off::before{content:"\\F12BB"}.mdi-subdirectory-arrow-left::before{content:"\\F060C"}.mdi-subdirectory-arrow-right::before{content:"\\F060D"}.mdi-subtitles::before{content:"\\F0A16"}.mdi-subtitles-outline::before{content:"\\F0A17"}.mdi-subway::before{content:"\\F06AC"}.mdi-subway-alert-variant::before{content:"\\F0D9D"}.mdi-subway-variant::before{content:"\\F04DF"}.mdi-summit::before{content:"\\F0786"}.mdi-sunglasses::before{content:"\\F04E0"}.mdi-surround-sound::before{content:"\\F05C5"}.mdi-surround-sound-2-0::before{content:"\\F07F0"}.mdi-surround-sound-3-1::before{content:"\\F07F1"}.mdi-surround-sound-5-1::before{content:"\\F07F2"}.mdi-surround-sound-7-1::before{content:"\\F07F3"}.mdi-svg::before{content:"\\F0721"}.mdi-swap-horizontal::before{content:"\\F04E1"}.mdi-swap-horizontal-bold::before{content:"\\F0BCD"}.mdi-swap-horizontal-circle::before{content:"\\F0FE1"}.mdi-swap-horizontal-circle-outline::before{content:"\\F0FE2"}.mdi-swap-horizontal-variant::before{content:"\\F08C1"}.mdi-swap-vertical::before{content:"\\F04E2"}.mdi-swap-vertical-bold::before{content:"\\F0BCE"}.mdi-swap-vertical-circle::before{content:"\\F0FE3"}.mdi-swap-vertical-circle-outline::before{content:"\\F0FE4"}.mdi-swap-vertical-variant::before{content:"\\F08C2"}.mdi-swim::before{content:"\\F04E3"}.mdi-switch::before{content:"\\F04E4"}.mdi-sword::before{content:"\\F04E5"}.mdi-sword-cross::before{content:"\\F0787"}.mdi-syllabary-hangul::before{content:"\\F1333"}.mdi-syllabary-hiragana::before{content:"\\F1334"}.mdi-syllabary-katakana::before{content:"\\F1335"}.mdi-syllabary-katakana-halfwidth::before{content:"\\F1336"}.mdi-symfony::before{content:"\\F0AE6"}.mdi-sync::before{content:"\\F04E6"}.mdi-sync-alert::before{content:"\\F04E7"}.mdi-sync-circle::before{content:"\\F1378"}.mdi-sync-off::before{content:"\\F04E8"}.mdi-tab::before{content:"\\F04E9"}.mdi-tab-minus::before{content:"\\F0B4B"}.mdi-tab-plus::before{content:"\\F075C"}.mdi-tab-remove::before{content:"\\F0B4C"}.mdi-tab-unselected::before{content:"\\F04EA"}.mdi-table::before{content:"\\F04EB"}.mdi-table-account::before{content:"\\F13B9"}.mdi-table-alert::before{content:"\\F13BA"}.mdi-table-arrow-down::before{content:"\\F13BB"}.mdi-table-arrow-left::before{content:"\\F13BC"}.mdi-table-arrow-right::before{content:"\\F13BD"}.mdi-table-arrow-up::before{content:"\\F13BE"}.mdi-table-border::before{content:"\\F0A18"}.mdi-table-cancel::before{content:"\\F13BF"}.mdi-table-chair::before{content:"\\F1061"}.mdi-table-check::before{content:"\\F13C0"}.mdi-table-clock::before{content:"\\F13C1"}.mdi-table-cog::before{content:"\\F13C2"}.mdi-table-column::before{content:"\\F0835"}.mdi-table-column-plus-after::before{content:"\\F04EC"}.mdi-table-column-plus-before::before{content:"\\F04ED"}.mdi-table-column-remove::before{content:"\\F04EE"}.mdi-table-column-width::before{content:"\\F04EF"}.mdi-table-edit::before{content:"\\F04F0"}.mdi-table-eye::before{content:"\\F1094"}.mdi-table-eye-off::before{content:"\\F13C3"}.mdi-table-furniture::before{content:"\\F05BC"}.mdi-table-headers-eye::before{content:"\\F121D"}.mdi-table-headers-eye-off::before{content:"\\F121E"}.mdi-table-heart::before{content:"\\F13C4"}.mdi-table-key::before{content:"\\F13C5"}.mdi-table-large::before{content:"\\F04F1"}.mdi-table-large-plus::before{content:"\\F0F87"}.mdi-table-large-remove::before{content:"\\F0F88"}.mdi-table-lock::before{content:"\\F13C6"}.mdi-table-merge-cells::before{content:"\\F09A6"}.mdi-table-minus::before{content:"\\F13C7"}.mdi-table-multiple::before{content:"\\F13C8"}.mdi-table-network::before{content:"\\F13C9"}.mdi-table-of-contents::before{content:"\\F0836"}.mdi-table-off::before{content:"\\F13CA"}.mdi-table-plus::before{content:"\\F0A75"}.mdi-table-refresh::before{content:"\\F13A0"}.mdi-table-remove::before{content:"\\F0A76"}.mdi-table-row::before{content:"\\F0837"}.mdi-table-row-height::before{content:"\\F04F2"}.mdi-table-row-plus-after::before{content:"\\F04F3"}.mdi-table-row-plus-before::before{content:"\\F04F4"}.mdi-table-row-remove::before{content:"\\F04F5"}.mdi-table-search::before{content:"\\F090F"}.mdi-table-settings::before{content:"\\F0838"}.mdi-table-split-cell::before{content:"\\F142A"}.mdi-table-star::before{content:"\\F13CB"}.mdi-table-sync::before{content:"\\F13A1"}.mdi-table-tennis::before{content:"\\F0E68"}.mdi-tablet::before{content:"\\F04F6"}.mdi-tablet-android::before{content:"\\F04F7"}.mdi-tablet-cellphone::before{content:"\\F09A7"}.mdi-tablet-dashboard::before{content:"\\F0ECE"}.mdi-tablet-ipad::before{content:"\\F04F8"}.mdi-taco::before{content:"\\F0762"}.mdi-tag::before{content:"\\F04F9"}.mdi-tag-faces::before{content:"\\F04FA"}.mdi-tag-heart::before{content:"\\F068B"}.mdi-tag-heart-outline::before{content:"\\F0BCF"}.mdi-tag-minus::before{content:"\\F0910"}.mdi-tag-minus-outline::before{content:"\\F121F"}.mdi-tag-multiple::before{content:"\\F04FB"}.mdi-tag-multiple-outline::before{content:"\\F12F7"}.mdi-tag-off::before{content:"\\F1220"}.mdi-tag-off-outline::before{content:"\\F1221"}.mdi-tag-outline::before{content:"\\F04FC"}.mdi-tag-plus::before{content:"\\F0722"}.mdi-tag-plus-outline::before{content:"\\F1222"}.mdi-tag-remove::before{content:"\\F0723"}.mdi-tag-remove-outline::before{content:"\\F1223"}.mdi-tag-text::before{content:"\\F1224"}.mdi-tag-text-outline::before{content:"\\F04FD"}.mdi-tailwind::before{content:"\\F13FF"}.mdi-tank::before{content:"\\F0D3A"}.mdi-tanker-truck::before{content:"\\F0FE5"}.mdi-tape-measure::before{content:"\\F0B4D"}.mdi-target::before{content:"\\F04FE"}.mdi-target-account::before{content:"\\F0BD0"}.mdi-target-variant::before{content:"\\F0A77"}.mdi-taxi::before{content:"\\F04FF"}.mdi-tea::before{content:"\\F0D9E"}.mdi-tea-outline::before{content:"\\F0D9F"}.mdi-teach::before{content:"\\F0890"}.mdi-teamviewer::before{content:"\\F0500"}.mdi-telegram::before{content:"\\F0501"}.mdi-telescope::before{content:"\\F0B4E"}.mdi-television::before{content:"\\F0502"}.mdi-television-ambient-light::before{content:"\\F1356"}.mdi-television-box::before{content:"\\F0839"}.mdi-television-classic::before{content:"\\F07F4"}.mdi-television-classic-off::before{content:"\\F083A"}.mdi-television-clean::before{content:"\\F1110"}.mdi-television-guide::before{content:"\\F0503"}.mdi-television-off::before{content:"\\F083B"}.mdi-television-pause::before{content:"\\F0F89"}.mdi-television-play::before{content:"\\F0ECF"}.mdi-television-stop::before{content:"\\F0F8A"}.mdi-temperature-celsius::before{content:"\\F0504"}.mdi-temperature-fahrenheit::before{content:"\\F0505"}.mdi-temperature-kelvin::before{content:"\\F0506"}.mdi-tennis::before{content:"\\F0DA0"}.mdi-tennis-ball::before{content:"\\F0507"}.mdi-tent::before{content:"\\F0508"}.mdi-terraform::before{content:"\\F1062"}.mdi-terrain::before{content:"\\F0509"}.mdi-test-tube::before{content:"\\F0668"}.mdi-test-tube-empty::before{content:"\\F0911"}.mdi-test-tube-off::before{content:"\\F0912"}.mdi-text::before{content:"\\F09A8"}.mdi-text-box::before{content:"\\F021A"}.mdi-text-box-check::before{content:"\\F0EA6"}.mdi-text-box-check-outline::before{content:"\\F0EA7"}.mdi-text-box-minus::before{content:"\\F0EA8"}.mdi-text-box-minus-outline::before{content:"\\F0EA9"}.mdi-text-box-multiple::before{content:"\\F0AB7"}.mdi-text-box-multiple-outline::before{content:"\\F0AB8"}.mdi-text-box-outline::before{content:"\\F09ED"}.mdi-text-box-plus::before{content:"\\F0EAA"}.mdi-text-box-plus-outline::before{content:"\\F0EAB"}.mdi-text-box-remove::before{content:"\\F0EAC"}.mdi-text-box-remove-outline::before{content:"\\F0EAD"}.mdi-text-box-search::before{content:"\\F0EAE"}.mdi-text-box-search-outline::before{content:"\\F0EAF"}.mdi-text-recognition::before{content:"\\F113D"}.mdi-text-search::before{content:"\\F13B8"}.mdi-text-shadow::before{content:"\\F0669"}.mdi-text-short::before{content:"\\F09A9"}.mdi-text-subject::before{content:"\\F09AA"}.mdi-text-to-speech::before{content:"\\F050A"}.mdi-text-to-speech-off::before{content:"\\F050B"}.mdi-texture::before{content:"\\F050C"}.mdi-texture-box::before{content:"\\F0FE6"}.mdi-theater::before{content:"\\F050D"}.mdi-theme-light-dark::before{content:"\\F050E"}.mdi-thermometer::before{content:"\\F050F"}.mdi-thermometer-alert::before{content:"\\F0E01"}.mdi-thermometer-chevron-down::before{content:"\\F0E02"}.mdi-thermometer-chevron-up::before{content:"\\F0E03"}.mdi-thermometer-high::before{content:"\\F10C2"}.mdi-thermometer-lines::before{content:"\\F0510"}.mdi-thermometer-low::before{content:"\\F10C3"}.mdi-thermometer-minus::before{content:"\\F0E04"}.mdi-thermometer-plus::before{content:"\\F0E05"}.mdi-thermostat::before{content:"\\F0393"}.mdi-thermostat-box::before{content:"\\F0891"}.mdi-thought-bubble::before{content:"\\F07F6"}.mdi-thought-bubble-outline::before{content:"\\F07F7"}.mdi-thumb-down::before{content:"\\F0511"}.mdi-thumb-down-outline::before{content:"\\F0512"}.mdi-thumb-up::before{content:"\\F0513"}.mdi-thumb-up-outline::before{content:"\\F0514"}.mdi-thumbs-up-down::before{content:"\\F0515"}.mdi-ticket::before{content:"\\F0516"}.mdi-ticket-account::before{content:"\\F0517"}.mdi-ticket-confirmation::before{content:"\\F0518"}.mdi-ticket-confirmation-outline::before{content:"\\F13AA"}.mdi-ticket-outline::before{content:"\\F0913"}.mdi-ticket-percent::before{content:"\\F0724"}.mdi-ticket-percent-outline::before{content:"\\F142B"}.mdi-tie::before{content:"\\F0519"}.mdi-tilde::before{content:"\\F0725"}.mdi-timelapse::before{content:"\\F051A"}.mdi-timeline::before{content:"\\F0BD1"}.mdi-timeline-alert::before{content:"\\F0F95"}.mdi-timeline-alert-outline::before{content:"\\F0F98"}.mdi-timeline-clock::before{content:"\\F11FB"}.mdi-timeline-clock-outline::before{content:"\\F11FC"}.mdi-timeline-help::before{content:"\\F0F99"}.mdi-timeline-help-outline::before{content:"\\F0F9A"}.mdi-timeline-outline::before{content:"\\F0BD2"}.mdi-timeline-plus::before{content:"\\F0F96"}.mdi-timeline-plus-outline::before{content:"\\F0F97"}.mdi-timeline-text::before{content:"\\F0BD3"}.mdi-timeline-text-outline::before{content:"\\F0BD4"}.mdi-timer::before{content:"\\F13AB"}.mdi-timer-10::before{content:"\\F051C"}.mdi-timer-3::before{content:"\\F051D"}.mdi-timer-off::before{content:"\\F13AC"}.mdi-timer-off-outline::before{content:"\\F051E"}.mdi-timer-outline::before{content:"\\F051B"}.mdi-timer-sand::before{content:"\\F051F"}.mdi-timer-sand-empty::before{content:"\\F06AD"}.mdi-timer-sand-full::before{content:"\\F078C"}.mdi-timetable::before{content:"\\F0520"}.mdi-toaster::before{content:"\\F1063"}.mdi-toaster-off::before{content:"\\F11B7"}.mdi-toaster-oven::before{content:"\\F0CD3"}.mdi-toggle-switch::before{content:"\\F0521"}.mdi-toggle-switch-off::before{content:"\\F0522"}.mdi-toggle-switch-off-outline::before{content:"\\F0A19"}.mdi-toggle-switch-outline::before{content:"\\F0A1A"}.mdi-toilet::before{content:"\\F09AB"}.mdi-toolbox::before{content:"\\F09AC"}.mdi-toolbox-outline::before{content:"\\F09AD"}.mdi-tools::before{content:"\\F1064"}.mdi-tooltip::before{content:"\\F0523"}.mdi-tooltip-account::before{content:"\\F000C"}.mdi-tooltip-edit::before{content:"\\F0524"}.mdi-tooltip-edit-outline::before{content:"\\F12C5"}.mdi-tooltip-image::before{content:"\\F0525"}.mdi-tooltip-image-outline::before{content:"\\F0BD5"}.mdi-tooltip-outline::before{content:"\\F0526"}.mdi-tooltip-plus::before{content:"\\F0BD6"}.mdi-tooltip-plus-outline::before{content:"\\F0527"}.mdi-tooltip-text::before{content:"\\F0528"}.mdi-tooltip-text-outline::before{content:"\\F0BD7"}.mdi-tooth::before{content:"\\F08C3"}.mdi-tooth-outline::before{content:"\\F0529"}.mdi-toothbrush::before{content:"\\F1129"}.mdi-toothbrush-electric::before{content:"\\F112C"}.mdi-toothbrush-paste::before{content:"\\F112A"}.mdi-tortoise::before{content:"\\F0D3B"}.mdi-toslink::before{content:"\\F12B8"}.mdi-tournament::before{content:"\\F09AE"}.mdi-tow-truck::before{content:"\\F083C"}.mdi-tower-beach::before{content:"\\F0681"}.mdi-tower-fire::before{content:"\\F0682"}.mdi-toy-brick::before{content:"\\F1288"}.mdi-toy-brick-marker::before{content:"\\F1289"}.mdi-toy-brick-marker-outline::before{content:"\\F128A"}.mdi-toy-brick-minus::before{content:"\\F128B"}.mdi-toy-brick-minus-outline::before{content:"\\F128C"}.mdi-toy-brick-outline::before{content:"\\F128D"}.mdi-toy-brick-plus::before{content:"\\F128E"}.mdi-toy-brick-plus-outline::before{content:"\\F128F"}.mdi-toy-brick-remove::before{content:"\\F1290"}.mdi-toy-brick-remove-outline::before{content:"\\F1291"}.mdi-toy-brick-search::before{content:"\\F1292"}.mdi-toy-brick-search-outline::before{content:"\\F1293"}.mdi-track-light::before{content:"\\F0914"}.mdi-trackpad::before{content:"\\F07F8"}.mdi-trackpad-lock::before{content:"\\F0933"}.mdi-tractor::before{content:"\\F0892"}.mdi-tractor-variant::before{content:"\\F14C4"}.mdi-trademark::before{content:"\\F0A78"}.mdi-traffic-cone::before{content:"\\F137C"}.mdi-traffic-light::before{content:"\\F052B"}.mdi-train::before{content:"\\F052C"}.mdi-train-car::before{content:"\\F0BD8"}.mdi-train-variant::before{content:"\\F08C4"}.mdi-tram::before{content:"\\F052D"}.mdi-tram-side::before{content:"\\F0FE7"}.mdi-transcribe::before{content:"\\F052E"}.mdi-transcribe-close::before{content:"\\F052F"}.mdi-transfer::before{content:"\\F1065"}.mdi-transfer-down::before{content:"\\F0DA1"}.mdi-transfer-left::before{content:"\\F0DA2"}.mdi-transfer-right::before{content:"\\F0530"}.mdi-transfer-up::before{content:"\\F0DA3"}.mdi-transit-connection::before{content:"\\F0D3C"}.mdi-transit-connection-variant::before{content:"\\F0D3D"}.mdi-transit-detour::before{content:"\\F0F8B"}.mdi-transit-transfer::before{content:"\\F06AE"}.mdi-transition::before{content:"\\F0915"}.mdi-transition-masked::before{content:"\\F0916"}.mdi-translate::before{content:"\\F05CA"}.mdi-translate-off::before{content:"\\F0E06"}.mdi-transmission-tower::before{content:"\\F0D3E"}.mdi-trash-can::before{content:"\\F0A79"}.mdi-trash-can-outline::before{content:"\\F0A7A"}.mdi-tray::before{content:"\\F1294"}.mdi-tray-alert::before{content:"\\F1295"}.mdi-tray-full::before{content:"\\F1296"}.mdi-tray-minus::before{content:"\\F1297"}.mdi-tray-plus::before{content:"\\F1298"}.mdi-tray-remove::before{content:"\\F1299"}.mdi-treasure-chest::before{content:"\\F0726"}.mdi-tree::before{content:"\\F0531"}.mdi-tree-outline::before{content:"\\F0E69"}.mdi-trello::before{content:"\\F0532"}.mdi-trending-down::before{content:"\\F0533"}.mdi-trending-neutral::before{content:"\\F0534"}.mdi-trending-up::before{content:"\\F0535"}.mdi-triangle::before{content:"\\F0536"}.mdi-triangle-outline::before{content:"\\F0537"}.mdi-triangle-wave::before{content:"\\F147C"}.mdi-triforce::before{content:"\\F0BD9"}.mdi-trophy::before{content:"\\F0538"}.mdi-trophy-award::before{content:"\\F0539"}.mdi-trophy-broken::before{content:"\\F0DA4"}.mdi-trophy-outline::before{content:"\\F053A"}.mdi-trophy-variant::before{content:"\\F053B"}.mdi-trophy-variant-outline::before{content:"\\F053C"}.mdi-truck::before{content:"\\F053D"}.mdi-truck-check::before{content:"\\F0CD4"}.mdi-truck-check-outline::before{content:"\\F129A"}.mdi-truck-delivery::before{content:"\\F053E"}.mdi-truck-delivery-outline::before{content:"\\F129B"}.mdi-truck-fast::before{content:"\\F0788"}.mdi-truck-fast-outline::before{content:"\\F129C"}.mdi-truck-outline::before{content:"\\F129D"}.mdi-truck-trailer::before{content:"\\F0727"}.mdi-trumpet::before{content:"\\F1096"}.mdi-tshirt-crew::before{content:"\\F0A7B"}.mdi-tshirt-crew-outline::before{content:"\\F053F"}.mdi-tshirt-v::before{content:"\\F0A7C"}.mdi-tshirt-v-outline::before{content:"\\F0540"}.mdi-tumble-dryer::before{content:"\\F0917"}.mdi-tumble-dryer-alert::before{content:"\\F11BA"}.mdi-tumble-dryer-off::before{content:"\\F11BB"}.mdi-tune::before{content:"\\F062E"}.mdi-tune-vertical::before{content:"\\F066A"}.mdi-turnstile::before{content:"\\F0CD5"}.mdi-turnstile-outline::before{content:"\\F0CD6"}.mdi-turtle::before{content:"\\F0CD7"}.mdi-twitch::before{content:"\\F0543"}.mdi-twitter::before{content:"\\F0544"}.mdi-twitter-retweet::before{content:"\\F0547"}.mdi-two-factor-authentication::before{content:"\\F09AF"}.mdi-typewriter::before{content:"\\F0F2D"}.mdi-ubisoft::before{content:"\\F0BDA"}.mdi-ubuntu::before{content:"\\F0548"}.mdi-ufo::before{content:"\\F10C4"}.mdi-ufo-outline::before{content:"\\F10C5"}.mdi-ultra-high-definition::before{content:"\\F07F9"}.mdi-umbraco::before{content:"\\F0549"}.mdi-umbrella::before{content:"\\F054A"}.mdi-umbrella-closed::before{content:"\\F09B0"}.mdi-umbrella-closed-outline::before{content:"\\F13E2"}.mdi-umbrella-closed-variant::before{content:"\\F13E1"}.mdi-umbrella-outline::before{content:"\\F054B"}.mdi-undo::before{content:"\\F054C"}.mdi-undo-variant::before{content:"\\F054D"}.mdi-unfold-less-horizontal::before{content:"\\F054E"}.mdi-unfold-less-vertical::before{content:"\\F0760"}.mdi-unfold-more-horizontal::before{content:"\\F054F"}.mdi-unfold-more-vertical::before{content:"\\F0761"}.mdi-ungroup::before{content:"\\F0550"}.mdi-unicode::before{content:"\\F0ED0"}.mdi-unity::before{content:"\\F06AF"}.mdi-unreal::before{content:"\\F09B1"}.mdi-untappd::before{content:"\\F0551"}.mdi-update::before{content:"\\F06B0"}.mdi-upload::before{content:"\\F0552"}.mdi-upload-lock::before{content:"\\F1373"}.mdi-upload-lock-outline::before{content:"\\F1374"}.mdi-upload-multiple::before{content:"\\F083D"}.mdi-upload-network::before{content:"\\F06F6"}.mdi-upload-network-outline::before{content:"\\F0CD8"}.mdi-upload-off::before{content:"\\F10C6"}.mdi-upload-off-outline::before{content:"\\F10C7"}.mdi-upload-outline::before{content:"\\F0E07"}.mdi-usb::before{content:"\\F0553"}.mdi-usb-flash-drive::before{content:"\\F129E"}.mdi-usb-flash-drive-outline::before{content:"\\F129F"}.mdi-usb-port::before{content:"\\F11F0"}.mdi-valve::before{content:"\\F1066"}.mdi-valve-closed::before{content:"\\F1067"}.mdi-valve-open::before{content:"\\F1068"}.mdi-van-passenger::before{content:"\\F07FA"}.mdi-van-utility::before{content:"\\F07FB"}.mdi-vanish::before{content:"\\F07FC"}.mdi-vanity-light::before{content:"\\F11E1"}.mdi-variable::before{content:"\\F0AE7"}.mdi-variable-box::before{content:"\\F1111"}.mdi-vector-arrange-above::before{content:"\\F0554"}.mdi-vector-arrange-below::before{content:"\\F0555"}.mdi-vector-bezier::before{content:"\\F0AE8"}.mdi-vector-circle::before{content:"\\F0556"}.mdi-vector-circle-variant::before{content:"\\F0557"}.mdi-vector-combine::before{content:"\\F0558"}.mdi-vector-curve::before{content:"\\F0559"}.mdi-vector-difference::before{content:"\\F055A"}.mdi-vector-difference-ab::before{content:"\\F055B"}.mdi-vector-difference-ba::before{content:"\\F055C"}.mdi-vector-ellipse::before{content:"\\F0893"}.mdi-vector-intersection::before{content:"\\F055D"}.mdi-vector-line::before{content:"\\F055E"}.mdi-vector-link::before{content:"\\F0FE8"}.mdi-vector-point::before{content:"\\F055F"}.mdi-vector-polygon::before{content:"\\F0560"}.mdi-vector-polyline::before{content:"\\F0561"}.mdi-vector-polyline-edit::before{content:"\\F1225"}.mdi-vector-polyline-minus::before{content:"\\F1226"}.mdi-vector-polyline-plus::before{content:"\\F1227"}.mdi-vector-polyline-remove::before{content:"\\F1228"}.mdi-vector-radius::before{content:"\\F074A"}.mdi-vector-rectangle::before{content:"\\F05C6"}.mdi-vector-selection::before{content:"\\F0562"}.mdi-vector-square::before{content:"\\F0001"}.mdi-vector-triangle::before{content:"\\F0563"}.mdi-vector-union::before{content:"\\F0564"}.mdi-vhs::before{content:"\\F0A1B"}.mdi-vibrate::before{content:"\\F0566"}.mdi-vibrate-off::before{content:"\\F0CD9"}.mdi-video::before{content:"\\F0567"}.mdi-video-3d::before{content:"\\F07FD"}.mdi-video-3d-off::before{content:"\\F13D9"}.mdi-video-3d-variant::before{content:"\\F0ED1"}.mdi-video-4k-box::before{content:"\\F083E"}.mdi-video-account::before{content:"\\F0919"}.mdi-video-box::before{content:"\\F00FD"}.mdi-video-box-off::before{content:"\\F00FE"}.mdi-video-check::before{content:"\\F1069"}.mdi-video-check-outline::before{content:"\\F106A"}.mdi-video-image::before{content:"\\F091A"}.mdi-video-input-antenna::before{content:"\\F083F"}.mdi-video-input-component::before{content:"\\F0840"}.mdi-video-input-hdmi::before{content:"\\F0841"}.mdi-video-input-scart::before{content:"\\F0F8C"}.mdi-video-input-svideo::before{content:"\\F0842"}.mdi-video-minus::before{content:"\\F09B2"}.mdi-video-minus-outline::before{content:"\\F02BA"}.mdi-video-off::before{content:"\\F0568"}.mdi-video-off-outline::before{content:"\\F0BDB"}.mdi-video-outline::before{content:"\\F0BDC"}.mdi-video-plus::before{content:"\\F09B3"}.mdi-video-plus-outline::before{content:"\\F01D3"}.mdi-video-stabilization::before{content:"\\F091B"}.mdi-video-switch::before{content:"\\F0569"}.mdi-video-switch-outline::before{content:"\\F0790"}.mdi-video-vintage::before{content:"\\F0A1C"}.mdi-video-wireless::before{content:"\\F0ED2"}.mdi-video-wireless-outline::before{content:"\\F0ED3"}.mdi-view-agenda::before{content:"\\F056A"}.mdi-view-agenda-outline::before{content:"\\F11D8"}.mdi-view-array::before{content:"\\F056B"}.mdi-view-array-outline::before{content:"\\F1485"}.mdi-view-carousel::before{content:"\\F056C"}.mdi-view-carousel-outline::before{content:"\\F1486"}.mdi-view-column::before{content:"\\F056D"}.mdi-view-column-outline::before{content:"\\F1487"}.mdi-view-comfy::before{content:"\\F0E6A"}.mdi-view-comfy-outline::before{content:"\\F1488"}.mdi-view-compact::before{content:"\\F0E6B"}.mdi-view-compact-outline::before{content:"\\F0E6C"}.mdi-view-dashboard::before{content:"\\F056E"}.mdi-view-dashboard-outline::before{content:"\\F0A1D"}.mdi-view-dashboard-variant::before{content:"\\F0843"}.mdi-view-dashboard-variant-outline::before{content:"\\F1489"}.mdi-view-day::before{content:"\\F056F"}.mdi-view-day-outline::before{content:"\\F148A"}.mdi-view-grid::before{content:"\\F0570"}.mdi-view-grid-outline::before{content:"\\F11D9"}.mdi-view-grid-plus::before{content:"\\F0F8D"}.mdi-view-grid-plus-outline::before{content:"\\F11DA"}.mdi-view-headline::before{content:"\\F0571"}.mdi-view-list::before{content:"\\F0572"}.mdi-view-list-outline::before{content:"\\F148B"}.mdi-view-module::before{content:"\\F0573"}.mdi-view-module-outline::before{content:"\\F148C"}.mdi-view-parallel::before{content:"\\F0728"}.mdi-view-parallel-outline::before{content:"\\F148D"}.mdi-view-quilt::before{content:"\\F0574"}.mdi-view-quilt-outline::before{content:"\\F148E"}.mdi-view-sequential::before{content:"\\F0729"}.mdi-view-sequential-outline::before{content:"\\F148F"}.mdi-view-split-horizontal::before{content:"\\F0BCB"}.mdi-view-split-vertical::before{content:"\\F0BCC"}.mdi-view-stream::before{content:"\\F0575"}.mdi-view-stream-outline::before{content:"\\F1490"}.mdi-view-week::before{content:"\\F0576"}.mdi-view-week-outline::before{content:"\\F1491"}.mdi-vimeo::before{content:"\\F0577"}.mdi-violin::before{content:"\\F060F"}.mdi-virtual-reality::before{content:"\\F0894"}.mdi-virus::before{content:"\\F13B6"}.mdi-virus-outline::before{content:"\\F13B7"}.mdi-vk::before{content:"\\F0579"}.mdi-vlc::before{content:"\\F057C"}.mdi-voice-off::before{content:"\\F0ED4"}.mdi-voicemail::before{content:"\\F057D"}.mdi-volleyball::before{content:"\\F09B4"}.mdi-volume-high::before{content:"\\F057E"}.mdi-volume-low::before{content:"\\F057F"}.mdi-volume-medium::before{content:"\\F0580"}.mdi-volume-minus::before{content:"\\F075E"}.mdi-volume-mute::before{content:"\\F075F"}.mdi-volume-off::before{content:"\\F0581"}.mdi-volume-plus::before{content:"\\F075D"}.mdi-volume-source::before{content:"\\F1120"}.mdi-volume-variant-off::before{content:"\\F0E08"}.mdi-volume-vibrate::before{content:"\\F1121"}.mdi-vote::before{content:"\\F0A1F"}.mdi-vote-outline::before{content:"\\F0A20"}.mdi-vpn::before{content:"\\F0582"}.mdi-vuejs::before{content:"\\F0844"}.mdi-vuetify::before{content:"\\F0E6D"}.mdi-walk::before{content:"\\F0583"}.mdi-wall::before{content:"\\F07FE"}.mdi-wall-sconce::before{content:"\\F091C"}.mdi-wall-sconce-flat::before{content:"\\F091D"}.mdi-wall-sconce-flat-variant::before{content:"\\F041C"}.mdi-wall-sconce-round::before{content:"\\F0748"}.mdi-wall-sconce-round-variant::before{content:"\\F091E"}.mdi-wallet::before{content:"\\F0584"}.mdi-wallet-giftcard::before{content:"\\F0585"}.mdi-wallet-membership::before{content:"\\F0586"}.mdi-wallet-outline::before{content:"\\F0BDD"}.mdi-wallet-plus::before{content:"\\F0F8E"}.mdi-wallet-plus-outline::before{content:"\\F0F8F"}.mdi-wallet-travel::before{content:"\\F0587"}.mdi-wallpaper::before{content:"\\F0E09"}.mdi-wan::before{content:"\\F0588"}.mdi-wardrobe::before{content:"\\F0F90"}.mdi-wardrobe-outline::before{content:"\\F0F91"}.mdi-warehouse::before{content:"\\F0F81"}.mdi-washing-machine::before{content:"\\F072A"}.mdi-washing-machine-alert::before{content:"\\F11BC"}.mdi-washing-machine-off::before{content:"\\F11BD"}.mdi-watch::before{content:"\\F0589"}.mdi-watch-export::before{content:"\\F058A"}.mdi-watch-export-variant::before{content:"\\F0895"}.mdi-watch-import::before{content:"\\F058B"}.mdi-watch-import-variant::before{content:"\\F0896"}.mdi-watch-variant::before{content:"\\F0897"}.mdi-watch-vibrate::before{content:"\\F06B1"}.mdi-watch-vibrate-off::before{content:"\\F0CDA"}.mdi-water::before{content:"\\F058C"}.mdi-water-boiler::before{content:"\\F0F92"}.mdi-water-boiler-alert::before{content:"\\F11B3"}.mdi-water-boiler-off::before{content:"\\F11B4"}.mdi-water-off::before{content:"\\F058D"}.mdi-water-outline::before{content:"\\F0E0A"}.mdi-water-percent::before{content:"\\F058E"}.mdi-water-polo::before{content:"\\F12A0"}.mdi-water-pump::before{content:"\\F058F"}.mdi-water-pump-off::before{content:"\\F0F93"}.mdi-water-well::before{content:"\\F106B"}.mdi-water-well-outline::before{content:"\\F106C"}.mdi-watering-can::before{content:"\\F1481"}.mdi-watering-can-outline::before{content:"\\F1482"}.mdi-watermark::before{content:"\\F0612"}.mdi-wave::before{content:"\\F0F2E"}.mdi-waveform::before{content:"\\F147D"}.mdi-waves::before{content:"\\F078D"}.mdi-waze::before{content:"\\F0BDE"}.mdi-weather-cloudy::before{content:"\\F0590"}.mdi-weather-cloudy-alert::before{content:"\\F0F2F"}.mdi-weather-cloudy-arrow-right::before{content:"\\F0E6E"}.mdi-weather-fog::before{content:"\\F0591"}.mdi-weather-hail::before{content:"\\F0592"}.mdi-weather-hazy::before{content:"\\F0F30"}.mdi-weather-hurricane::before{content:"\\F0898"}.mdi-weather-lightning::before{content:"\\F0593"}.mdi-weather-lightning-rainy::before{content:"\\F067E"}.mdi-weather-night::before{content:"\\F0594"}.mdi-weather-night-partly-cloudy::before{content:"\\F0F31"}.mdi-weather-partly-cloudy::before{content:"\\F0595"}.mdi-weather-partly-lightning::before{content:"\\F0F32"}.mdi-weather-partly-rainy::before{content:"\\F0F33"}.mdi-weather-partly-snowy::before{content:"\\F0F34"}.mdi-weather-partly-snowy-rainy::before{content:"\\F0F35"}.mdi-weather-pouring::before{content:"\\F0596"}.mdi-weather-rainy::before{content:"\\F0597"}.mdi-weather-snowy::before{content:"\\F0598"}.mdi-weather-snowy-heavy::before{content:"\\F0F36"}.mdi-weather-snowy-rainy::before{content:"\\F067F"}.mdi-weather-sunny::before{content:"\\F0599"}.mdi-weather-sunny-alert::before{content:"\\F0F37"}.mdi-weather-sunset::before{content:"\\F059A"}.mdi-weather-sunset-down::before{content:"\\F059B"}.mdi-weather-sunset-up::before{content:"\\F059C"}.mdi-weather-tornado::before{content:"\\F0F38"}.mdi-weather-windy::before{content:"\\F059D"}.mdi-weather-windy-variant::before{content:"\\F059E"}.mdi-web::before{content:"\\F059F"}.mdi-web-box::before{content:"\\F0F94"}.mdi-web-clock::before{content:"\\F124A"}.mdi-webcam::before{content:"\\F05A0"}.mdi-webhook::before{content:"\\F062F"}.mdi-webpack::before{content:"\\F072B"}.mdi-webrtc::before{content:"\\F1248"}.mdi-wechat::before{content:"\\F0611"}.mdi-weight::before{content:"\\F05A1"}.mdi-weight-gram::before{content:"\\F0D3F"}.mdi-weight-kilogram::before{content:"\\F05A2"}.mdi-weight-lifter::before{content:"\\F115D"}.mdi-weight-pound::before{content:"\\F09B5"}.mdi-whatsapp::before{content:"\\F05A3"}.mdi-wheelchair-accessibility::before{content:"\\F05A4"}.mdi-whistle::before{content:"\\F09B6"}.mdi-whistle-outline::before{content:"\\F12BC"}.mdi-white-balance-auto::before{content:"\\F05A5"}.mdi-white-balance-incandescent::before{content:"\\F05A6"}.mdi-white-balance-iridescent::before{content:"\\F05A7"}.mdi-white-balance-sunny::before{content:"\\F05A8"}.mdi-widgets::before{content:"\\F072C"}.mdi-widgets-outline::before{content:"\\F1355"}.mdi-wifi::before{content:"\\F05A9"}.mdi-wifi-off::before{content:"\\F05AA"}.mdi-wifi-star::before{content:"\\F0E0B"}.mdi-wifi-strength-1::before{content:"\\F091F"}.mdi-wifi-strength-1-alert::before{content:"\\F0920"}.mdi-wifi-strength-1-lock::before{content:"\\F0921"}.mdi-wifi-strength-2::before{content:"\\F0922"}.mdi-wifi-strength-2-alert::before{content:"\\F0923"}.mdi-wifi-strength-2-lock::before{content:"\\F0924"}.mdi-wifi-strength-3::before{content:"\\F0925"}.mdi-wifi-strength-3-alert::before{content:"\\F0926"}.mdi-wifi-strength-3-lock::before{content:"\\F0927"}.mdi-wifi-strength-4::before{content:"\\F0928"}.mdi-wifi-strength-4-alert::before{content:"\\F0929"}.mdi-wifi-strength-4-lock::before{content:"\\F092A"}.mdi-wifi-strength-alert-outline::before{content:"\\F092B"}.mdi-wifi-strength-lock-outline::before{content:"\\F092C"}.mdi-wifi-strength-off::before{content:"\\F092D"}.mdi-wifi-strength-off-outline::before{content:"\\F092E"}.mdi-wifi-strength-outline::before{content:"\\F092F"}.mdi-wikipedia::before{content:"\\F05AC"}.mdi-wind-turbine::before{content:"\\F0DA5"}.mdi-window-close::before{content:"\\F05AD"}.mdi-window-closed::before{content:"\\F05AE"}.mdi-window-closed-variant::before{content:"\\F11DB"}.mdi-window-maximize::before{content:"\\F05AF"}.mdi-window-minimize::before{content:"\\F05B0"}.mdi-window-open::before{content:"\\F05B1"}.mdi-window-open-variant::before{content:"\\F11DC"}.mdi-window-restore::before{content:"\\F05B2"}.mdi-window-shutter::before{content:"\\F111C"}.mdi-window-shutter-alert::before{content:"\\F111D"}.mdi-window-shutter-open::before{content:"\\F111E"}.mdi-wiper::before{content:"\\F0AE9"}.mdi-wiper-wash::before{content:"\\F0DA6"}.mdi-wizard-hat::before{content:"\\F1477"}.mdi-wordpress::before{content:"\\F05B4"}.mdi-wrap::before{content:"\\F05B6"}.mdi-wrap-disabled::before{content:"\\F0BDF"}.mdi-wrench::before{content:"\\F05B7"}.mdi-wrench-outline::before{content:"\\F0BE0"}.mdi-xamarin::before{content:"\\F0845"}.mdi-xamarin-outline::before{content:"\\F0846"}.mdi-xing::before{content:"\\F05BE"}.mdi-xml::before{content:"\\F05C0"}.mdi-xmpp::before{content:"\\F07FF"}.mdi-y-combinator::before{content:"\\F0624"}.mdi-yahoo::before{content:"\\F0B4F"}.mdi-yeast::before{content:"\\F05C1"}.mdi-yin-yang::before{content:"\\F0680"}.mdi-yoga::before{content:"\\F117C"}.mdi-youtube::before{content:"\\F05C3"}.mdi-youtube-gaming::before{content:"\\F0848"}.mdi-youtube-studio::before{content:"\\F0847"}.mdi-youtube-subscription::before{content:"\\F0D40"}.mdi-youtube-tv::before{content:"\\F0448"}.mdi-z-wave::before{content:"\\F0AEA"}.mdi-zend::before{content:"\\F0AEB"}.mdi-zigbee::before{content:"\\F0D41"}.mdi-zip-box::before{content:"\\F05C4"}.mdi-zip-box-outline::before{content:"\\F0FFA"}.mdi-zip-disk::before{content:"\\F0A23"}.mdi-zodiac-aquarius::before{content:"\\F0A7D"}.mdi-zodiac-aries::before{content:"\\F0A7E"}.mdi-zodiac-cancer::before{content:"\\F0A7F"}.mdi-zodiac-capricorn::before{content:"\\F0A80"}.mdi-zodiac-gemini::before{content:"\\F0A81"}.mdi-zodiac-leo::before{content:"\\F0A82"}.mdi-zodiac-libra::before{content:"\\F0A83"}.mdi-zodiac-pisces::before{content:"\\F0A84"}.mdi-zodiac-sagittarius::before{content:"\\F0A85"}.mdi-zodiac-scorpio::before{content:"\\F0A86"}.mdi-zodiac-taurus::before{content:"\\F0A87"}.mdi-zodiac-virgo::before{content:"\\F0A88"}.mdi-blank::before{content:"\\F68C";visibility:hidden}.mdi-18px.mdi-set,.mdi-18px.mdi:before{font-size:18px}.mdi-24px.mdi-set,.mdi-24px.mdi:before{font-size:24px}.mdi-36px.mdi-set,.mdi-36px.mdi:before{font-size:36px}.mdi-48px.mdi-set,.mdi-48px.mdi:before{font-size:48px}.mdi-dark:before{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive:before{color:rgba(0,0,0,0.26)}.mdi-light:before{color:#fff}.mdi-light.mdi-inactive:before{color:rgba(255,255,255,0.3)}.mdi-rotate-45:before{transform:rotate(45deg)}.mdi-rotate-90:before{transform:rotate(90deg)}.mdi-rotate-135:before{transform:rotate(135deg)}.mdi-rotate-180:before{transform:rotate(180deg)}.mdi-rotate-225:before{transform:rotate(225deg)}.mdi-rotate-270:before{transform:rotate(270deg)}.mdi-rotate-315:before{transform:rotate(315deg)}.mdi-flip-h:before{transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.mdi-flip-v:before{transform:scaleY(-1);filter:FlipV;-ms-filter:"FlipV"}.mdi-spin:before{animation:mdi-spin 2s infinite linear}@keyframes mdi-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}',""]),e.exports=a},5895:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".switch-options {\n position: relative;\n --columns: 1;\n}\n.switch-options.grid {\n width: 100%;\n}\n.switch-options .switch-icon {\n margin-right: 8px;\n transform: scale(0.9);\n}\n.switch-options .dim {\n opacity: 0.5;\n}\n.switch-options-grid {\n font-size: 12px;\n display: grid;\n grid-template-columns: repeat(auto-fill, 50%);\n}\n.switch-options-popup {\n font-size: 12px;\n transition: 0.2s ease-out;\n transform-origin: left;\n transform: translateY(-50%) scale(0.9);\n top: 50%;\n left: calc(100% + 8px);\n background-color: #fff;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n white-space: nowrap;\n padding: 4px;\n display: grid;\n width: max-content;\n grid-template-columns: repeat(var(--columns), auto);\n border-radius: 5px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n max-height: calc(100vh - 100px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\nbody.dark .switch-options-popup {\n background-color: #333;\n}\nbody.dark .switch-options-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.switch-options-popup::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.switch-options-popup.open {\n transform: translateY(-50%) scale(1);\n}\nbody.settings-panel-dock-right .switch-options-popup {\n right: calc(100% + 8px);\n left: unset;\n transform-origin: right;\n}\n.switch-options.small-size .switch-options-popup {\n transform-origin: top;\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%) scale(0.9);\n}\n.switch-options.small-size .switch-options-popup.open {\n transform: translateX(-50%) scale(1);\n}",""]),e.exports=o},8173:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".check-all-updates[data-v-76652ef2] {\n margin: 1px 0;\n}\n.check-all-updates .be-icon[data-v-76652ef2] {\n margin-right: 6px;\n}",""]),e.exports=o},771:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bisector-dialog-content-container[data-v-31cf1990] {\n padding: 0 16px;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text.weak[data-v-31cf1990] {\n opacity: 0.6;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text[data-v-31cf1990],\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n margin-bottom: 8px;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n display: grid;\n gap: 8px;\n grid-template-columns: 1fr 1fr;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group .be-button[data-v-31cf1990]:last-child {\n grid-column: span 2;\n}",""]),e.exports=o},318:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,"div[data-v-386ddf8e] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.peek[data-v-386ddf8e] {\n cursor: pointer;\n}",""]),e.exports=o},8106:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.bangumi-card[data-v-b2f4653c] {\n --cover-width: 94px;\n background-color: #fff;\n margin: 0 8px 8px 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 8px;\n display: grid;\n grid-template-areas: "cover epTitle" "cover title";\n grid-template-columns: var(--cover-width) 1fr;\n grid-template-rows: 6fr 5fr;\n position: relative;\n flex-shrink: 0;\n}\n.bangumi-card .up[data-v-b2f4653c] {\n grid-area: title;\n display: flex;\n align-items: center;\n padding: 0 12px;\n align-self: center;\n overflow: hidden;\n margin-bottom: 4px;\n}\n.bangumi-card .up .cover[data-v-b2f4653c] {\n height: 18px;\n width: 18px;\n border-radius: 50%;\n}\n.bangumi-card .up .title[data-v-b2f4653c] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0 6px;\n line-height: normal;\n}\n.bangumi-card .ep-title[data-v-b2f4653c] {\n grid-area: epTitle;\n font-size: 11pt;\n font-weight: 600;\n padding: 0 12px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n align-self: center;\n color: inherit;\n line-height: normal;\n margin: 4px 0 0 0;\n}\n.bangumi-card .ep-cover-container[data-v-b2f4653c] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n overflow: hidden;\n display: flex;\n}\n.bangumi-card .ep-cover-container .ep-cover[data-v-b2f4653c] {\n background-color: rgba(136, 136, 136, 0.2666666667);\n width: var(--cover-width);\n min-height: 62.5px;\n}\n.bangumi-card:hover .ep-title[data-v-b2f4653c] {\n color: var(--theme-color);\n}\n.bangumi-card:hover .ep-cover[data-v-b2f4653c] {\n transform: scale(1.05);\n}\nbody.dark .bangumi-card[data-v-b2f4653c] {\n box-shadow: rgba(0, 0, 0, 0.0666666667) 0 4px 12px 0px;\n background-color: #2d2d2d;\n color: #eee;\n}\n.bangumi-card.new[data-v-b2f4653c]::before {\n content: "NEW";\n position: absolute;\n top: 4px;\n left: 4px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n padding: 0 6px;\n height: 18px;\n border-radius: 9px;\n font-weight: 700;\n font-size: 11px;\n line-height: 18px;\n z-index: 1;\n}',""]),e.exports=o},6007:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".column-card[data-v-335afa63] {\n width: 356px;\n display: flex;\n flex-direction: column;\n margin-bottom: 12px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n background-color: #fff;\n box-sizing: border-box;\n position: relative;\n flex-shrink: 0;\n font-size: 12px;\n cursor: pointer;\n border-radius: 8px;\n}\nbody.dark .column-card[data-v-335afa63] {\n background-color: #282828;\n color: #eee;\n}\n.column-card .covers[data-v-335afa63] {\n position: relative;\n display: flex;\n overflow: hidden;\n border-radius: 8px 8px 0 0;\n}\n.column-card .covers .cover[data-v-335afa63] {\n flex: 1 0 0;\n height: 120px;\n width: 0;\n object-fit: cover;\n}\n.column-card .up[data-v-335afa63] {\n position: absolute;\n left: 8px;\n top: 86px;\n padding: 2px;\n display: flex;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.6666666667);\n border-radius: 14px;\n height: 28px;\n box-sizing: border-box;\n}\n.column-card .up .face[data-v-335afa63] {\n border-radius: 50%;\n height: 24px;\n width: 24px;\n}\n.column-card .up .name[data-v-335afa63] {\n margin: 0 6px;\n color: #fff;\n}\n.column-card .title[data-v-335afa63] {\n padding: 10px 10px 0;\n margin: 0;\n font-size: 11pt;\n font-weight: 600;\n color: inherit;\n line-height: normal;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.column-card .description[data-v-335afa63] {\n margin: 8px 10px;\n display: -webkit-box;\n white-space: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 1.5;\n max-height: 3em;\n}\n.column-card:hover .title[data-v-335afa63] {\n color: var(--theme-color);\n}\n.column-card:hover .cover[data-v-335afa63] {\n transform: scale(1.05);\n}",""]),e.exports=o},5019:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-up-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n line-height: normal;\n}\n.be-up-info:not(.fallback) {\n background-color: #fff;\n color: black;\n border-radius: 14px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 28px;\n border-radius: 14px;\n padding: 2px;\n box-shadow: none;\n padding-right: 8px;\n}\nbody.dark .be-up-info:not(.fallback) {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-up-info:not(.fallback) {\n background-color: #282828;\n color: #eee;\n}\n.be-up-info-cover {\n border-radius: 50%;\n}\n.be-up-info-cover-fallback {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 18px;\n margin-right: -3px;\n}\n.be-up-info-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: 0.2s ease-out;\n}\n.be-up-info:hover .be-up-info-name {\n color: var(--theme-color) !important;\n}",""]),e.exports=o},117:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.video-card[data-v-57e48aec] {\n display: grid;\n grid-template-columns: 196px 1fr;\n grid-template-rows: 1fr 1fr 1fr;\n grid-template-areas: "cover title" "cover description" "cover up";\n height: var(--card-height);\n width: var(--card-width);\n color: black;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n margin-right: var(--card-margin);\n margin-bottom: var(--card-margin);\n position: relative;\n}\nbody.dark .video-card[data-v-57e48aec], body.dark .video-card[data-v-57e48aec]:hover {\n background-color: #282828;\n color: #eee;\n}\n.video-card[data-v-57e48aec]:hover {\n color: black;\n}\n.video-card.vertical[data-v-57e48aec] {\n grid-template-columns: auto auto;\n grid-template-rows: auto 1fr auto auto;\n grid-template-areas: "cover cover" "title title" "up up" "stats stats";\n gap: 4px;\n}\n.video-card.vertical .description[data-v-57e48aec],\n.video-card.vertical .topics[data-v-57e48aec] {\n display: none;\n}\n.video-card.vertical .cover-container[data-v-57e48aec] {\n border-radius: 8px 8px 0 0;\n width: calc(var(--card-width) - 2px);\n height: calc(var(--card-width) / 20 * 12.5);\n}\n.video-card.vertical .title[data-v-57e48aec] {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n max-height: 3em;\n word-break: break-all;\n white-space: normal;\n line-height: 1.5;\n margin: 4px 0;\n padding: 0 10px;\n font-size: 14px;\n}\n.video-card.vertical .up[data-v-57e48aec] {\n align-self: start;\n white-space: nowrap;\n}\n.video-card.vertical .up .name[data-v-57e48aec] {\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.video-card.vertical .up[data-v-57e48aec]:not(.no-face) {\n margin-left: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .up.no-face[data-v-57e48aec] {\n margin-top: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .cooperation[data-v-57e48aec] {\n margin: 0 12px 6px 8px;\n}\n.video-card.vertical .cooperation-note[data-v-57e48aec] {\n display: flex;\n opacity: 0.5;\n}\n.video-card.vertical .stats[data-v-57e48aec] {\n grid-area: stats;\n align-self: end;\n justify-self: start;\n margin-bottom: 8px;\n margin-right: 0;\n}\n.video-card > *[data-v-57e48aec] {\n justify-self: self-start;\n align-self: center;\n}\n.video-card .publish-time-summary[data-v-57e48aec],\n.video-card .publish-time-detail[data-v-57e48aec],\n.video-card .duration[data-v-57e48aec],\n.video-card .watchlater[data-v-57e48aec] {\n opacity: 0;\n}\n.video-card:hover .cover[data-v-57e48aec] {\n transform: scale(1.05);\n}\n.video-card:hover .publish-time-summary[data-v-57e48aec],\n.video-card:hover .duration[data-v-57e48aec],\n.video-card:hover .watchlater[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .publish-time-summary[data-v-57e48aec]:hover {\n opacity: 0;\n}\n.video-card .publish-time-summary:hover ~ .publish-time-detail[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .cover-container[data-v-57e48aec] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n position: relative;\n width: calc(var(--card-height) / 12.5 * 20);\n height: calc(var(--card-height) - 2px);\n overflow: hidden;\n}\n.video-card .cover-container .cover[data-v-57e48aec] {\n transition: 0.1s cubic-bezier(0.39, 0.58, 0.57, 1);\n -webkit-transform: rotate(0deg);\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n.video-card .cover-container[data-v-57e48aec] > :not(.cover) {\n position: absolute;\n display: flex;\n align-items: center;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec],\n.video-card .cover-container .duration[data-v-57e48aec],\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n bottom: 6px;\n padding: 2px 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n color: white;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail .mdi[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary .mdi[data-v-57e48aec],\n.video-card .cover-container .duration .mdi[data-v-57e48aec],\n.video-card .cover-container .watchlater .mdi[data-v-57e48aec] {\n margin-right: 4px;\n}\n.video-card .cover-container .new[data-v-57e48aec] {\n top: 6px;\n left: 6px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec] {\n z-index: 0;\n}\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n z-index: 1;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n top: 6px;\n right: 6px;\n}\n.video-card .cover-container .duration[data-v-57e48aec] {\n left: 6px;\n}\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n right: 6px;\n padding-left: 4px;\n}\n.video-card .title[data-v-57e48aec] {\n grid-area: title;\n font-size: 15px;\n font-weight: 600;\n color: inherit;\n padding: 4px 12px 0 12px;\n white-space: nowrap;\n overflow: hidden;\n justify-self: stretch;\n text-overflow: ellipsis;\n}\n.video-card .title[data-v-57e48aec]:hover {\n color: var(--theme-color);\n}\n.video-card .topics[data-v-57e48aec] {\n display: flex;\n align-items: center;\n grid-area: description;\n margin-left: 12px;\n}\n.video-card .topics .topic[data-v-57e48aec] {\n display: flex;\n align-items: center;\n gap: 4px;\n color: inherit;\n padding: 4px 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n margin-right: 8px;\n border-radius: 14px;\n opacity: 0.75;\n}\n.video-card .topics .topic .topic-name[data-v-57e48aec] {\n max-width: 84px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.video-card .topics .topic[data-v-57e48aec]:hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: var(--theme-color);\n opacity: 1;\n}\n.video-card .description[data-v-57e48aec] {\n grid-area: description;\n color: inherit;\n overflow: hidden;\n align-self: stretch;\n justify-self: stretch;\n margin: 0 12px;\n line-height: 1.5;\n height: 3em;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n scrollbar-width: none !important;\n}\n.video-card .description[data-v-57e48aec]::-webkit-scrollbar {\n width: 0px !important;\n}\n.video-card .description.single-line[data-v-57e48aec] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.video-card .cooperation[data-v-57e48aec],\n.video-card .up[data-v-57e48aec],\n.video-card .stats[data-v-57e48aec] {\n grid-area: up;\n}\n.video-card .up[data-v-57e48aec] {\n margin-left: 12px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n padding: 2px;\n background-color: transparent;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n border-radius: 15px;\n color: inherit;\n}\n.video-card .up .name[data-v-57e48aec] {\n margin: 0 8px;\n}\n.video-card .up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .up[data-v-57e48aec]:not(.no-face):hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.video-card .up:hover .name[data-v-57e48aec],\n.video-card .up:hover .be-icon[data-v-57e48aec] {\n color: var(--theme-color);\n}\n.video-card.no-stats .up[data-v-57e48aec],\n.video-card.no-stats .cooperation[data-v-57e48aec] {\n margin-bottom: 4px;\n}\n.video-card .cooperation[data-v-57e48aec] {\n margin-left: 12px;\n display: flex;\n align-items: center;\n justify-self: stretch;\n justify-content: space-between;\n}\n.video-card .cooperation-ups[data-v-57e48aec] {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: flex-start;\n}\n.video-card .cooperation-ups .cooperation-up[data-v-57e48aec] {\n flex: 0 0 15px;\n width: 15px;\n display: flex;\n}\n.video-card .cooperation-ups .cooperation-up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .cooperation-ups .cooperation-up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 2px;\n background-color: #fff;\n}\nbody.dark .video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n background-color: #282828;\n}\n.video-card .cooperation-ups:hover .cooperation-up[data-v-57e48aec] {\n flex-basis: auto;\n width: 30px;\n margin-right: 4px;\n}\n.video-card .cooperation-note[data-v-57e48aec] {\n display: none;\n}\n.video-card .stats[data-v-57e48aec] {\n font-size: 11px;\n justify-self: self-end;\n margin-right: 12px;\n display: flex;\n align-items: center;\n opacity: 0.5;\n}\n.video-card .stats[data-v-57e48aec] > :nth-child(n+4) {\n display: none;\n}\n.video-card .stats .be-icon[data-v-57e48aec] {\n margin: 0 4px 0 12px;\n}',""]),e.exports=o},5286:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bb-comment .translate-container,\n.card-content .translate-container {\n margin: 4px 0 2px 0;\n display: inline-block;\n font-weight: normal;\n font-size: 14px;\n}\n.bb-comment .translate-container .translated,\n.card-content .translate-container .translated {\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.bb-comment .translate-container .translated a,\n.card-content .translate-container .translated a {\n color: #aaa !important;\n}\n.bb-comment .translate-container .translated a:hover,\n.card-content .translate-container .translated a:hover {\n color: var(--theme-color) !important;\n}\n.bb-comment .translate-container .translate,\n.card-content .translate-container .translate {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 12px;\n height: 18px;\n color: #aaa;\n cursor: pointer;\n}\n.bb-comment .translate-container .translate:hover,\n.card-content .translate-container .translate:hover {\n color: var(--theme-color);\n}\n.bb-comment .translate-container .translate-result,\n.card-content .translate-container .translate-result {\n padding-top: 6px;\n white-space: pre-wrap;\n line-height: 20px;\n word-break: break-all;\n overflow-wrap: break-word;\n}\nbody.dark .bb-comment .translate-container .translate-result,\nbody.dark .card-content .translate-container .translate-result {\n color: #eee;\n}\nbody.machine-translator-enabled .bb-comment .reply-con .text-con {\n display: block;\n margin: 0 !important;\n}\nbody.machine-translator-enabled .card-content .translate-container {\n margin: 13px 0 2px 0;\n}",""]),e.exports=o},7463:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".suggest-item {\n outline: none !important;\n padding: 6px 6px 6px 10px;\n cursor: pointer;\n}\n.suggest-item.disabled {\n cursor: default;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.suggest-item:not(.disabled):hover, .suggest-item:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.suggest-item:first-child {\n padding-top: 8px;\n border-radius: 7px 7px 0 0;\n}\n.suggest-item:last-child {\n padding-bottom: 8px;\n border-radius: 0 0 7px 7px;\n}\n.suggest-item-content {\n display: flex;\n align-items: center;\n}\n.suggest-item-icon {\n margin-right: 6px;\n}\n.suggest-item-title {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n flex: 1 0 0;\n width: 0;\n}\n.suggest-item-name {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-description {\n opacity: 0.5;\n font-size: smaller;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-delete {\n opacity: 0.5;\n margin-right: 4px;\n}\n.suggest-item-delete:hover {\n opacity: 1;\n}",""]),e.exports=o},6650:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".global-launch-bar-container {\n display: flex;\n top: 20vh;\n left: 50%;\n width: 40vw;\n max-width: 650px;\n height: 50px;\n padding: 0 8px;\n z-index: 5000;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n font-size: 16px;\n transform: translateX(-50%);\n transition: opacity 0.2s ease-out;\n}\nbody.dark .global-launch-bar-container {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .global-launch-bar-container {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .global-launch-bar-container {\n background-color: #222;\n}\n.global-launch-bar-container .launch-bar {\n flex: 1;\n}\nbody.dark .global-launch-bar-container .launch-bar {\n --color: #eee;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list {\n transition: 0.2s ease-out;\n top: calc(100% + 8px);\n max-height: calc(80vh - 16px - 50px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n font-size: 14px;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}",""]),e.exports=o},8797:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".launch-bar {\n --color: black;\n color: var(--color);\n position: relative;\n display: flex;\n align-items: center;\n}\n.launch-bar .input-area {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n.launch-bar .input-area .recommended-target {\n display: none;\n}\n.launch-bar .input-area .launch-bar-form {\n flex: 1;\n display: flex;\n}\n.launch-bar .input-area .launch-bar-form .input {\n flex: 1;\n padding: 8px;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: inherit;\n box-sizing: border-box;\n width: 15vw;\n font-size: inherit;\n}\n.launch-bar .input-area .launch-bar-form .input::placeholder {\n color: inherit !important;\n opacity: 0.8;\n}\n.launch-bar .input-area .launch-bar-form .submit {\n color: inherit;\n padding: 4px;\n background: transparent;\n border: none;\n outline: none !important;\n cursor: pointer;\n}\n.launch-bar .input-area .input-active-bar {\n flex: 0 0 auto;\n align-self: flex-start;\n height: 2px;\n width: 0;\n border-radius: 1px;\n background-color: var(--theme-color);\n transition: 0.3s ease-in-out;\n}\n.launch-bar .launch-bar-suggest-list {\n position: absolute;\n top: 100%;\n left: 50%;\n opacity: 0;\n width: 100%;\n transform: translateX(-50%) translateY(-4px);\n pointer-events: none;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n white-space: nowrap;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n background-color: #fff;\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n color: #eee;\n background-color: #222;\n}\n.launch-bar .launch-bar-suggest-list .suggest-highlight {\n color: var(--theme-color);\n font-style: normal;\n}\n.launch-bar:focus-within .input-active-bar {\n width: 100%;\n}\n.launch-bar:focus-within .launch-bar-suggest-list,\n.launch-bar .launch-bar-suggest-list:focus-within {\n opacity: 1;\n transform: translateX(-50%);\n pointer-events: initial;\n}",""]),e.exports=o},7373:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.release-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 12px;\n padding: 0 16px 16px 16px;\n}\n.release-content-markdown {\n font-size: 14px;\n flex-grow: 1;\n max-height: calc(100vh - 220px);\n overflow: auto;\n line-height: normal;\n}\n.release-content-markdown ul,\n.release-content-markdown ul li {\n list-style: disc;\n}\n.release-content-markdown ol,\n.release-content-markdown ol li {\n list-style: decimal;\n}\n.release-content-markdown ul,\n.release-content-markdown ol {\n padding-left: 16px;\n margin: 0;\n}\n.release-content-markdown ul li,\n.release-content-markdown ol li {\n line-height: 1.75;\n}\n.release-content-markdown p {\n margin: 0;\n}\n.release-content-markdown details {\n line-height: 1.75;\n}\n.release-content-markdown details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.release-content-markdown > p {\n line-height: 1.75;\n}\n.release-content-markdown p + p {\n margin-top: 8px;\n}\n.release-content-markdown pre {\n white-space: pre-wrap;\n}\n.release-content-markdown code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.release-content-markdown kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .release-content-markdown kbd {\n border-color: #666;\n}\n.release-content-markdown blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .release-content-markdown blockquote * {\n color: inherit !important;\n}\n.release-content-markdown blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.release-content-markdown a,\n.release-content-markdown a:focus-within,\n.release-content-markdown a:hover {\n color: var(--theme-color);\n}\n.release-content-markdown > :last-child {\n margin-bottom: 0;\n}\n.release-content-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n font-size: 15px;\n justify-content: flex-end;\n}\n.release-content-actions .be-button {\n padding: 6px 12px;\n}',""]),e.exports=o},3854:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-description {\n word-break: break-all;\n line-height: normal;\n}\n.component-description ul,\n.component-description ul li {\n list-style: disc;\n}\n.component-description ol,\n.component-description ol li {\n list-style: decimal;\n}\n.component-description ul,\n.component-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.component-description ul li,\n.component-description ol li {\n line-height: 1.75;\n}\n.component-description p {\n margin: 0;\n}\n.component-description details {\n line-height: 1.75;\n}\n.component-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.component-description > p {\n line-height: 1.75;\n}\n.component-description p + p {\n margin-top: 8px;\n}\n.component-description pre {\n white-space: pre-wrap;\n}\n.component-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.component-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .component-description kbd {\n border-color: #666;\n}\n.component-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .component-description blockquote * {\n color: inherit !important;\n}\n.component-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.component-description a,\n.component-description a:focus-within,\n.component-description a:hover {\n color: var(--theme-color);\n}\n.component-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},5248:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-detail {\n min-width: 264px;\n width: 264px;\n flex: 1;\n background-color: inherit;\n border-radius: 7px;\n overflow: auto;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n.component-detail .extra-option {\n display: flow-root;\n}\n.component-detail-separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n margin-bottom: 12px;\n flex-shrink: 0;\n align-self: stretch;\n}\n.component-detail-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: inherit;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n.component-detail-header .display-name {\n font-weight: 600;\n font-size: 16px;\n}\n.component-detail-header .close {\n cursor: pointer;\n}\n.component-detail-header .close:hover {\n color: var(--theme-color);\n}\n.component-detail-description:not(:last-child) {\n padding: 12px 12px 0;\n}\n.component-detail-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n padding: 0 8px 8px;\n}\n.component-detail-tags .tag {\n display: flex;\n align-items: center;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 24px;\n border-radius: 12px;\n padding: 2px 6px;\n margin-right: 4px;\n margin-bottom: 4px;\n font-size: 12px;\n box-shadow: none;\n}\nbody.dark .component-detail-tags .tag {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .component-detail-tags .tag {\n background-color: #282828;\n color: #eee;\n}\n.component-detail-tags .tag .tag-color {\n border-radius: 50%;\n width: 12px;\n height: 12px;\n margin-right: 4px;\n}\n.component-detail-internal-data {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n justify-content: center;\n flex-shrink: 0;\n position: sticky;\n bottom: 0;\n min-height: 24px;\n box-sizing: content-box;\n background-color: inherit;\n padding: 8px 12px;\n}\n.component-detail-internal-data-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n line-height: 24px;\n}\n.component-detail-internal-data .internal-name {\n opacity: 0.5;\n}\n.component-detail-internal-data .tippy-content {\n padding: 4px;\n}\n.component-detail-internal-data .extra-actions-wrapper {\n position: relative;\n transform: translateX(2px);\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions {\n padding: 4px;\n cursor: pointer;\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions-list {\n width: max-content;\n}\n.component-detail-operations {\n display: flex;\n align-items: center;\n}\n.component-detail-operations > * {\n flex: 1 0 0;\n}\n.component-detail-operations > *:not(:last-child) {\n margin-right: 8px;\n}\n.component-detail-options {\n padding: 8px 12px;\n}\n.component-detail-options .component-detail-options-title {\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 8px;\n}\n.component-detail-options .generated-option:not(:last-child) {\n margin-bottom: 4px;\n}\n.component-detail-grow {\n flex: 1;\n}",""]),e.exports=o},7338:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-option[data-v-730efac0] {\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n.component-option .unknown-option-type[data-v-730efac0],\n.component-option .be-slider[data-v-730efac0],\n.component-option .be-range-input[data-v-730efac0],\n.component-option .be-text-box[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=boolean] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=dropdown] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=color] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=switch][data-v-730efac0] {\n justify-content: center;\n}\n.component-option[data-type=switch] .option-name[data-v-730efac0] {\n display: none;\n}\n.component-option .option-name[data-v-730efac0] {\n margin-right: 8px;\n}\n.component-option .be-slider[data-v-730efac0] {\n margin: 0 8px;\n}",""]),e.exports=o},7467:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-settings {\n display: flex;\n flex-direction: column;\n justify-content: center;\n box-sizing: border-box;\n overflow: hidden;\n padding: 7px 12px 7px 7px;\n width: 100%;\n min-height: 36px;\n position: relative;\n cursor: pointer;\n transition: 0.2s ease-out;\n -webkit-user-select: none;\n user-select: none;\n}\n.component-settings::after {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n top: 0;\n left: 10px;\n height: 100%;\n width: calc(100% - 20px);\n pointer-events: none;\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 10px, rgba(136, 136, 136, 0.1333333333) 10px, rgba(136, 136, 136, 0.1333333333) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 38px, rgba(136, 136, 136, 0.1333333333) 38px, rgba(136, 136, 136, 0.1333333333) 50px, rgba(0, 0, 0, 0) 50px);\n}\n.component-settings.virtual::after {\n opacity: 1;\n}\n.component-settings.virtual .component-settings-row {\n display: none;\n}\n.component-settings .component-settings-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.component-settings .component-settings-row:not(:last-child) {\n margin-bottom: 8px;\n}\n.component-settings .display-name {\n font-size: 14px;\n height: 20px;\n flex: 1 0 auto;\n margin-left: 6px;\n width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n}\n.component-settings .details-arrow {\n opacity: 0.75;\n width: 32px;\n justify-content: flex-end;\n}\n.component-settings .be-switch-box {\n margin: 0;\n}\n.component-settings:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.component-settings:hover .options-count {\n opacity: 1;\n}\n.component-settings.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}',""]),e.exports=o},5120:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-content .sidebar > * {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page {\n font-size: 13px;\n top: 12px;\n transition: 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n transform: translateX(calc(-12.5% * var(--direction)));\n min-width: 372px;\n padding: 12px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n background-color: #282828;\n color: #eee;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page.open {\n transform: translateX(0);\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row:not(:last-child) {\n margin-bottom: 12px;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n width: 100%;\n}\n.settings-panel-content .sidebar > * .component-tags-item {\n background-color: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n white-space: nowrap;\n padding: 8px;\n padding-right: 10px;\n font-size: 13px;\n}\n.settings-panel-content .sidebar > * .component-tags-item .tag-name {\n margin-right: 4px;\n margin-left: 8px;\n}\n.settings-panel-content .sidebar > * .component-tags-item:hover, .settings-panel-content .sidebar > * .component-tags-item.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.settings-panel-content .sidebar > * .icon-list,\n.settings-panel-content .sidebar > * .component-tags {\n flex-grow: 1;\n max-height: calc(var(--panel-height) - var(--header-height));\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n background-color: transparent;\n width: 40px;\n display: flex;\n flex-direction: column;\n}\n.settings-panel-content .sidebar > * .icon-list::-webkit-scrollbar,\n.settings-panel-content .sidebar > * .component-tags::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-content .sidebar > * .icon-list .grow,\n.settings-panel-content .sidebar > * .component-tags .grow {\n flex-grow: 1;\n}\n.settings-panel-content .sidebar > * .icon-list .be-icon,\n.settings-panel-content .sidebar > * .component-tags .be-icon {\n margin-left: 2px;\n}\n.settings-panel-content .sidebar > * .component-tags {\n height: 100%;\n width: auto;\n position: absolute;\n top: 0;\n opacity: 0;\n transition: 0.2s ease-out;\n pointer-events: none;\n background-color: #fff;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.dark .settings-panel-content .sidebar > * .component-tags {\n background-color: #222;\n}\n.settings-panel-content .sidebar > * .icon-list:hover ~ .component-tags,\n.settings-panel-content .sidebar > * .component-tags:hover {\n opacity: 1;\n pointer-events: initial;\n}",""]),e.exports=o},2194:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-settings {\n line-height: normal;\n font-size: 12px;\n --panel-height: calc(100vh - 120px);\n}\nbody.player-mode-blackmask .be-settings {\n visibility: hidden;\n}\n.be-settings > .sidebar {\n position: fixed;\n top: 50%;\n z-index: 1002;\n transform: translateX(calc(-50% * var(--direction))) translateY(-50%);\n}\nbody.player-mode-full .be-settings > .sidebar, body.player-fullscreen-fix .be-settings > .sidebar, body.player-mode-web .be-settings > .sidebar, body.player-full-win .be-settings > .sidebar {\n z-index: 1;\n}\n.be-settings > .sidebar > * {\n transition: transform 0.3s ease-out, opacity 0.3s ease-out;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 26px;\n height: 26px;\n padding: 8px;\n box-sizing: content-box;\n background-color: rgba(255, 255, 255, 0.6666666667);\n border-radius: 50%;\n position: relative;\n}\nbody.dark .be-settings > .sidebar > * {\n background-color: rgba(51, 51, 51, 0.6666666667);\n}\n.be-settings > .sidebar > *:not(:last-child) {\n margin-bottom: 26px;\n}\n.be-settings > .sidebar > *::after {\n content: "";\n width: 140%;\n height: 140%;\n position: absolute;\n top: -20%;\n left: -20%;\n background: transparent;\n}\n.be-settings > .sidebar > * .be-icon {\n font-size: 26px;\n color: #888;\n fill: #888;\n transition: fill 0.3s ease-out;\n}\n.be-settings > .sidebar > *:hover {\n transform: translateX(calc(60% * var(--direction))) scale(1.1);\n background-color: #fff;\n}\nbody.dark .be-settings > .sidebar > *:hover {\n background-color: #333;\n}\n.be-settings > .sidebar > *:hover .be-icon {\n color: #222;\n fill: #222;\n}\nbody.dark .be-settings > .sidebar > *:hover .be-icon {\n color: #eee;\n fill: #eee;\n}\n.be-settings > .sidebar > *.open {\n transform: translateX(calc(100% * var(--direction))) scale(1.5);\n opacity: 0;\n}\n.be-settings .settings-panel-popup {\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n top: 50%;\n z-index: 100001;\n}\n.be-settings .settings-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .settings-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.be-settings .widgets-panel-popup {\n top: 50%;\n z-index: 100001;\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.be-settings .widgets-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .widgets-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.bilibili-player-dm-tip-wrap {\n pointer-events: none !important;\n}\nbody:not(.settings-panel-dock-right) .contact-help {\n display: none !important;\n}\nbody:not(.settings-panel-dock-right) .be-settings {\n --direction: 1;\n}\nbody:not(.settings-panel-dock-right) .be-settings > .sidebar {\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .widgets-panel-popup,\nbody:not(.settings-panel-dock-right) .settings-panel-popup {\n left: 12px;\n transform-origin: left;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .sidebar {\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .main {\n border-bottom-right-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags {\n border-bottom-left-radius: 8px;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-left-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-sub-page {\n left: 53px;\n}\nbody.settings-panel-dock-right {\n --direction: -1;\n}\nbody.settings-panel-dock-right .be-settings > .sidebar {\n right: 0;\n}\nbody.settings-panel-dock-right .widgets-panel-popup,\nbody.settings-panel-dock-right .settings-panel-popup {\n right: 12px;\n transform-origin: right;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .sidebar {\n order: 1;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .main {\n border-bottom-left-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags {\n border-bottom-right-radius: 8px;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n right: 0;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-right-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings {\n padding: 7px 7px 7px 12px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row {\n flex-direction: row-reverse;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .details-arrow {\n transform: rotate(180deg);\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .display-name {\n margin-left: 12px;\n width: 180px;\n}\nbody.settings-panel-dock-right .settings-panel-sub-page {\n right: 53px;\n}',""]),e.exports=o},6207:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-popup {\n z-index: 1000;\n}\n.settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n --header-height: 50px;\n --settings-panel-background: #fff;\n background-color: var(--settings-panel-background);\n position: relative;\n overscroll-behavior: contain;\n border-radius: 8px;\n color: black;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: content-box;\n width: auto;\n min-width: 320px;\n height: var(--panel-height);\n transition: opacity 0.2s 0.2s ease-out;\n}\nbody.dark .settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel {\n --settings-panel-background: #222;\n color: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header {\n box-sizing: border-box;\n height: var(--header-height);\n padding: 12px;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n display: flex;\n align-items: center;\n gap: 8px;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .settings-panel-popup .settings-panel .settings-panel-header {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .title {\n font-size: 18px;\n font-weight: 600;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon {\n font-size: 28px;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .peek {\n cursor: pointer;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon {\n cursor: pointer;\n transition: 0.2s ease-out;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon:hover,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon:hover {\n color: var(--theme-color);\n}\n.settings-panel-popup .settings-panel .settings-panel-content {\n flex: 1;\n display: flex;\n max-height: calc(var(--panel-height) - var(--header-height));\n}\n.settings-panel-popup .settings-panel .settings-panel-content .sidebar {\n display: flex;\n flex-direction: column;\n z-index: 2;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main {\n flex: 1;\n padding: 0;\n position: relative;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .be-empty {\n min-height: 36px;\n padding: 7px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list {\n display: grid;\n grid-template-columns: auto;\n gap: 0;\n width: auto;\n margin: 0;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-move, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-active, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n transition: all 0.5s ease;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-from, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-to {\n opacity: 0;\n transform: translateY(-30px);\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n position: absolute;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar {\n display: flex;\n align-items: center;\n background-color: var(--settings-panel-background);\n padding-right: 8px;\n height: 36px;\n box-sizing: border-box;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n position: sticky;\n top: 0;\n z-index: 1;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search {\n align-self: stretch;\n font-size: 13px;\n box-shadow: none;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search input {\n padding: 4px 10px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main > * {\n flex: 1;\n}\n.settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n top: 50%;\n left: calc(100% - 12px);\n height: calc(100% - 22px);\n z-index: -1;\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n padding-left: 12px;\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel .component-detail-panel {\n left: unset;\n right: calc(100% - 12px);\n padding: 0 12px 0 0;\n}\n.settings-panel-popup .settings-panel .component-detail-panel.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.settings-panel-popup .settings-panel.collapsed {\n height: auto;\n transform: translateY(calc(50% - 45vh));\n opacity: 0.3;\n}\n.settings-panel-popup .settings-panel.collapsed .header, body.dark .settings-panel-popup .settings-panel.collapsed .header {\n border-color: transparent;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar,\n.settings-panel-popup .settings-panel.collapsed .main {\n opacity: 0;\n padding: 0;\n pointer-events: none;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar {\n display: none;\n}\n.settings-panel-popup .settings-panel.collapsed:hover {\n opacity: 1;\n}\n.settings-panel-popup .settings-panel.peek {\n opacity: 0.1;\n}",""]),e.exports=o},7533:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tag-ring {\n display: flex;\n transform: scaleX(-1) rotate(-90deg);\n}\n.tag-ring svg {\n height: 18px;\n width: 18px;\n}",""]),e.exports=o},4010:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.widgets-panel {\n max-height: var(--panel-height);\n min-height: 80px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n flex-wrap: wrap;\n padding: 16px;\n padding-right: 20px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .widgets-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .widgets-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .widgets-panel {\n background-color: #222;\n}\nbody.dark .widgets-panel {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.widgets-panel-header {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-weight: 600;\n font-size: 18px;\n margin-bottom: 18px;\n}\n.widgets-panel-header .be-icon {\n margin-right: 6px;\n}\n.widgets-panel .widgets-loading,\n.widgets-panel .widgets-empty {\n padding: 12px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content,\n.widgets-panel .widgets-empty .widgets-empty-content {\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ul li {\n list-style: disc;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n list-style: decimal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ol {\n padding-left: 16px;\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p,\n.widgets-panel .widgets-empty .widgets-empty-content p {\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details,\n.widgets-panel .widgets-empty .widgets-empty-content details {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details summary,\n.widgets-panel .widgets-empty .widgets-empty-content details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content > p,\n.widgets-panel .widgets-empty .widgets-empty-content > p {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p + p,\n.widgets-panel .widgets-empty .widgets-empty-content p + p {\n margin-top: 8px;\n}\n.widgets-panel .widgets-loading .widgets-empty-content pre,\n.widgets-panel .widgets-empty .widgets-empty-content pre {\n white-space: pre-wrap;\n}\n.widgets-panel .widgets-loading .widgets-empty-content code,\n.widgets-panel .widgets-empty .widgets-empty-content code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content kbd,\n.widgets-panel .widgets-empty .widgets-empty-content kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content kbd,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content kbd {\n border-color: #666;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content blockquote *,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content blockquote * {\n color: inherit !important;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote::before,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content a,\n.widgets-panel .widgets-loading .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-loading .widgets-empty-content a:hover,\n.widgets-panel .widgets-empty .widgets-empty-content a,\n.widgets-panel .widgets-empty .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-empty .widgets-empty-content a:hover {\n color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content > :last-child,\n.widgets-panel .widgets-empty .widgets-empty-content > :last-child {\n margin-bottom: 0;\n}\n.widgets-panel .widget-items {\n position: relative;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n}\n.widgets-panel .widget-items .widget-item {\n font-size: 14px;\n transition: 0.2s ease-out;\n display: flex;\n}\n.widgets-panel .widget-items .widget-item-enter, .widgets-panel .widget-items .widget-item-leave-to {\n opacity: 0;\n transform: scale(0.9);\n}\n.widgets-panel .widget-items .widget-item-leave-active {\n transition: 0.24s cubic-bezier(0.22, 0.61, 0.36, 1);\n position: absolute;\n white-space: nowrap;\n}\n.widgets-panel .widget-items .multiple-widgets {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n position: relative;\n}',""]),e.exports=o},2763:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-action {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n border-radius: 4px;\n padding: 4px 8px 4px 6px;\n font-size: 13px;\n}\n.component-action:hover {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.component-action.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},8911:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-about-page {\n flex: 1;\n}\n.be-about-page-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 12px;\n}\n.be-about-page-header .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.be-about-page-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 24px;\n}\n.be-about-page-content .script-meta-info {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 8px;\n text-align: center;\n padding: 0 24px;\n}\n.be-about-page-content .script-meta-info .meta-info-name {\n font-weight: 500;\n font-size: 22px;\n}\n.be-about-page-content .script-meta-info .meta-info-version {\n font-size: 14px;\n color: var(--theme-color);\n}\n.be-about-page-content .script-meta-info .meta-info-description {\n opacity: 0.5;\n}\n.be-about-page-content .script-links .script-link {\n display: flex;\n align-items: stretch;\n}\n.be-about-page-content .script-links .script-link .be-button {\n flex: 1;\n}\n.be-about-page-content .script-links,\n.be-about-page-content .about-page-actions {\n display: flex;\n align-items: stretch;\n gap: 8px;\n flex-wrap: wrap;\n}\n.be-about-page-content .script-links .script-link,\n.be-about-page-content .script-links .about-page-action,\n.be-about-page-content .about-page-actions .script-link,\n.be-about-page-content .about-page-actions .about-page-action {\n flex: 1 0 auto;\n}\n.be-about-page-content .script-links .script-link .be-icon,\n.be-about-page-content .script-links .about-page-action .be-icon,\n.be-about-page-content .about-page-actions .script-link .be-icon,\n.be-about-page-content .about-page-actions .about-page-action .be-icon {\n margin-right: 6px;\n}",""]),e.exports=o},686:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel .manage-item {\n flex: 0 0 auto;\n min-height: 30px;\n width: 100%;\n box-sizing: border-box;\n}",""]),e.exports=o},336:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel {\n height: calc(var(--panel-height) - 52px - 48px);\n display: flex;\n flex-direction: column;\n}\n.manage-panel > :not(:last-child) {\n margin-bottom: 12px;\n}\n.manage-panel .be-button .be-icon {\n margin-right: 6px;\n}\n.manage-panel .exclude-built-in .be-switch-box {\n margin-left: 6px;\n}\n.manage-panel .title-text {\n font-size: 14px;\n font-weight: 600;\n}\n.manage-panel .item-url-result {\n color: var(--theme-color);\n}\n.manage-panel .item-url {\n margin-right: 12px;\n}\n.manage-panel .manage-item-list {\n display: flex;\n align-items: center;\n flex-direction: column;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n flex-shrink: 1;\n}\n.manage-panel .manage-item-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.manage-panel .item-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.manage-panel .exclude-built-in {\n display: flex;\n align-items: center;\n}\n.manage-panel .be-loading {\n width: 100%;\n text-align: center;\n}\n.manage-panel .description-text {\n opacity: 0.75;\n}\n.manage-panel .add-item-row {\n position: relative;\n}\n.manage-panel .batch-add-popup {\n top: calc(100% + 8px);\n left: 50%;\n transition: 0.2s ease-out;\n transform: translateX(-50%) translateY(-8px);\n padding: 8px;\n width: 100%;\n min-height: calc(var(--panel-height) / 2);\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n}\nbody.dark .manage-panel .batch-add-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #222;\n}\n.manage-panel .batch-add-popup.open {\n transform: translateX(-50%) translateY(0px);\n}\n.manage-panel .batch-add-popup .be-text-area {\n flex: 1 0 auto;\n}\n.manage-panel .batch-add-popup .batch-add-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-button {\n flex: 1 0 0;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-icon {\n margin-right: 6px;\n}\n.manage-panel-title {\n gap: 6px;\n}\n.manage-panel-title .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.manage-panel .search-item-row {\n gap: 6px;\n}",""]),e.exports=o},1350:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.manage-panel .user-item {\n display: grid;\n column-gap: 6px;\n grid-template: "displayName line remove" auto "name line remove" auto/auto 1fr auto;\n align-items: center;\n padding: 6px 0;\n}\n.manage-panel .user-item .user-item-display-name {\n grid-area: displayName;\n}\n.manage-panel .user-item .user-item-name {\n grid-area: name;\n opacity: 0.5;\n font-size: 11px;\n}\n.manage-panel .user-item .user-item-line {\n grid-area: line;\n justify-self: stretch;\n transition: 0.2s ease-out;\n opacity: 0;\n height: 0;\n width: 100%;\n border-bottom: 1px dashed;\n box-sizing: border-box;\n}\n.manage-panel .user-item .user-item-toggle {\n grid-area: toggle;\n justify-self: end;\n}\n.manage-panel .user-item .user-item-remove-confirm {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: white;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button {\n color: inherit;\n font-size: 12px;\n padding: 4px;\n padding-right: 6px;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button .be-icon {\n margin-right: 4px;\n}\n.manage-panel .user-item .tippy-box {\n border-radius: 8px;\n}\n.manage-panel .user-item .tippy-box .tippy-content {\n padding-right: 5px;\n}\n.manage-panel .user-item .user-item-remove {\n grid-area: remove;\n justify-self: end;\n display: flex;\n align-items: center;\n opacity: 0.1;\n transition: 0.2s ease-out;\n cursor: pointer;\n padding: 4px;\n}\n.manage-panel .user-item .user-item-remove:hover {\n opacity: 1;\n color: #e54e4e;\n}\n.manage-panel .user-item:hover .user-item-remove:not(:hover) {\n opacity: 0.75;\n}\n.manage-panel .user-item:hover .user-item-line {\n opacity: 0.5;\n}',""]),e.exports=o},1065:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".online-registry {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n width: 400px;\n height: 85vh;\n z-index: 100000;\n transition: 0.2s ease-out;\n font-size: 14px;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .online-registry {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .online-registry {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .online-registry {\n background-color: #222;\n}\n.online-registry.open {\n transform: translate(-50%, -50%) scale(1);\n}\n.online-registry-header {\n padding: 12px 12px 6px 12px;\n display: flex;\n align-items: center;\n gap: 12px;\n row-gap: 6px;\n flex-wrap: wrap;\n}\n.online-registry-header + .online-registry-header {\n padding-top: 6px;\n}\n.online-registry-header-title {\n flex: 1;\n font-size: 18px;\n font-weight: 600;\n}\n.online-registry-header-search {\n flex: 1;\n justify-content: center;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.online-registry-header-search .be-textbox {\n max-width: 320px;\n flex: 1;\n font-size: 12px;\n}\n.online-registry-header-filter {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-branch {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-refresh-icon, .online-registry-header-close-icon {\n padding: 2px;\n cursor: pointer;\n transition: 0.3s ease-out;\n}\n.online-registry-header-refresh-icon:hover, .online-registry-header-close-icon:hover {\n color: var(--theme-color);\n}\n.online-registry-header-refresh-icon {\n padding: 3px;\n}\n.online-registry-header-refresh-icon:hover {\n transform: rotate(360deg);\n}\n.online-registry-separator {\n height: 1px;\n width: calc(100% - 24px);\n margin: 0 12px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-content {\n flex: 1;\n padding: 4px 0;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.online-registry-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.online-registry-content .be-loading,\n.online-registry-content .be-empty {\n margin: 12px 0;\n}",""]),e.exports=o},7862:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.online-registry-item-wrapper {\n min-height: 39px;\n position: relative;\n}\n.online-registry-item-wrapper.hidden {\n display: none;\n}\n.online-registry-item-wrapper::before {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n pointer-events: none;\n top: 50%;\n left: 12px;\n transform: translateY(-50%);\n width: calc(100% - 24px);\n height: 20px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n display: flex;\n}\n.online-registry-item-wrapper.virtual::before {\n opacity: 1;\n}\n.online-registry-item {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n padding: 8px 12px;\n}\n.online-registry-item:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.online-registry-item:not(:last-child) {\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-item .item-badge {\n padding: 2px 4px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 4px;\n font-size: 12px;\n}\n.online-registry-item .item-display-name {\n font-weight: 600;\n}\n.online-registry-item .grow {\n flex: 1 0 0;\n}\n.online-registry-item .item-action {\n font-size: 12px;\n}\n.online-registry-item .item-action .be-icon {\n margin-right: 6px;\n}\n.online-registry-item .item-action .reinstall-button:not(:hover):not(:focus-within) {\n opacity: 0.5;\n}\n.online-registry-item:hover .item-description {\n opacity: 1;\n}\n.online-registry-description {\n font-size: 13px;\n line-height: normal;\n word-break: break-all;\n}\n.online-registry-description ul,\n.online-registry-description ul li {\n list-style: disc;\n}\n.online-registry-description ol,\n.online-registry-description ol li {\n list-style: decimal;\n}\n.online-registry-description ul,\n.online-registry-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.online-registry-description ul li,\n.online-registry-description ol li {\n line-height: 1.75;\n}\n.online-registry-description p {\n margin: 0;\n}\n.online-registry-description details {\n line-height: 1.75;\n}\n.online-registry-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.online-registry-description > p {\n line-height: 1.75;\n}\n.online-registry-description p + p {\n margin-top: 8px;\n}\n.online-registry-description pre {\n white-space: pre-wrap;\n}\n.online-registry-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.online-registry-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .online-registry-description kbd {\n border-color: #666;\n}\n.online-registry-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .online-registry-description blockquote * {\n color: inherit !important;\n}\n.online-registry-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.online-registry-description a,\n.online-registry-description a:focus-within,\n.online-registry-description a:hover {\n color: var(--theme-color);\n}\n.online-registry-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},6872:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-video-control-bar-extend {\n display: flex;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend {\n margin-top: 1px;\n}\n.be-video-control-bar-extend, .squirtle-controller.squirtle-wide-screen .be-video-control-bar-extend.squirtle-block-wrap {\n width: auto !important;\n margin-top: 0px;\n}\n.be-video-control-bar-extend .bp-svgicon {\n width: auto;\n padding-top: 1px;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n transition: transform 0.2s ease-out;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon svg,\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 22px;\n width: 22px;\n height: 22px;\n color: #fff;\n fill: #fff;\n}\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon svg,\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 28px;\n width: 28px;\n height: 28px;\n}\n.be-video-control-bar-extend .be-video-control-tooltip {\n pointer-events: none;\n font-size: 12px;\n padding: 6px 8px;\n line-height: normal;\n white-space: nowrap;\n color: #fff;\n background-color: rgba(0, 0, 0, 0.7019607843);\n border-radius: 4px;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%) translateY(calc(-100% - 11px));\n opacity: 0;\n}\n.be-video-control-bar-extend-item {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n position: relative;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend-item {\n align-items: center;\n}\n.be-video-control-bar-extend-item:hover .be-video-control-tooltip {\n transition: all 0.3s ease-in-out 0.3s;\n opacity: 1;\n transform: translateX(-50%) translateY(calc(-100% - 19px));\n}\n.be-video-control-bar-extend-item:active .bp-svgicon .be-icon {\n transform: scale(0.95);\n}\n.be-video-control-bar-extend-item button {\n background-color: transparent;\n margin: 0;\n padding: 0;\n border: none;\n cursor: pointer;\n}\n.be-video-control-bar-extend-item button:hover, .be-video-control-bar-extend-item button:active {\n outline: none !important;\n}\nbody.player-mode-full .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-fullscreen-fix .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-mode-web .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-full-win .bpx-player-control-wrap .be-video-control-bar-extend-item button {\n padding-top: 2px;\n}",""]),e.exports=o},2149:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dialog {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n min-width: 200px;\n min-height: 150px;\n max-width: calc(100vw - 100px);\n max-height: calc(100vh - 100px);\n position: fixed;\n transition: 0.2s ease-out;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scale(0.95);\n opacity: 0;\n pointer-events: none;\n}\nbody.dark .be-dialog {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-dialog {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-dialog {\n background-color: #222;\n}\n.be-dialog.open {\n transform: translateX(-50%) translateY(-50%) scale(1);\n opacity: 1;\n pointer-events: initial;\n}\n.be-dialog-header {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: space-between;\n padding: 12px 12px 12px 16px;\n}\n.be-dialog-header-title {\n font-weight: 600;\n font-size: 18px;\n}\n.be-dialog-header-close .be-button {\n padding: 6px;\n}\n.be-dialog-content {\n flex: 1 0 auto;\n overflow: auto;\n}",""]),e.exports=o},1579:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card {\n background: #fff;\n min-width: var(--card-min-width);\n max-width: 60vw;\n min-height: 87px;\n margin: 8px 0;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.2666666667);\n transform-origin: left;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n position: relative;\n padding-left: 8px;\n border-radius: 8px;\n}\nbody.dark .toast-card {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.toast-card.toast-card-container-enter, .toast-card.toast-card-container-leave-to {\n opacity: 0;\n transform: translateX(var(--card-min-width-negative));\n}\n.toast-card.toast-card-container-leave-active {\n position: absolute;\n transition: 0.3s cubic-bezier(0.6, -0.28, 0.74, 0.05);\n}\n.toast-card-header {\n display: flex;\n align-items: center;\n}\n.toast-card-title {\n font-size: 18px;\n color: #444;\n opacity: 0.5;\n margin: 12px;\n font-weight: 600;\n flex: 1 1 auto;\n}\nbody.dark .toast-card-title {\n color: #999;\n}\n.toast-card-close {\n height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n position: relative;\n justify-content: center;\n flex: 0 0 auto;\n padding: 14px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n box-sizing: content-box;\n opacity: 0.75;\n}\n.toast-card-close:hover {\n opacity: 0.85;\n}\n.toast-card-close:hover .be-icon {\n transform: scale(1.2);\n}\n.toast-card-close:active {\n opacity: 0.9;\n}\n.toast-card-close:active .be-icon {\n transform: scale(1.3);\n}\n.toast-card-close .be-icon {\n transition: 0.2s ease-out;\n}\n.toast-card-close .be-progress-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n --ring-color: currentColor;\n opacity: 0;\n}\n.toast-card-close.show-progress .be-progress-ring {\n opacity: 1;\n}\n.toast-card-message {\n color: #000;\n font-size: 14px;\n margin: 0 16px 12px 12px;\n white-space: pre-wrap;\n display: flex;\n align-items: center;\n line-height: 1.5;\n flex-wrap: wrap;\n word-break: break-all;\n max-height: 200px;\n overflow: auto;\n}\n.toast-card-border {\n position: absolute;\n border-radius: 2px;\n height: calc(100% - 10px);\n width: 4px;\n top: 5px;\n left: 0;\n}\n.toast-card.toast-default .toast-card-border {\n background-color: #444;\n}\n.toast-card.toast-error .toast-card-border {\n background-color: #f44336;\n}\n.toast-card.toast-info .toast-card-border {\n background-color: #2196f3;\n}\n.toast-card.toast-success .toast-card-border {\n background-color: #8bc34a;\n}\n.toast-card span,\n.toast-card .link {\n display: inline-block;\n padding: 2px 4px;\n margin: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n text-decoration: none;\n color: #000;\n transition: all 0.2s ease-out;\n border-radius: 6px;\n}\n.toast-card .link {\n cursor: pointer;\n}\n.toast-card .link:hover {\n background-color: rgba(136, 136, 136, 0.2);\n}\n.toast-card .link:active {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.toast-card .download-link,\n.toast-card .download-link:hover {\n color: inherit !important;\n text-decoration: underline;\n word-break: break-all;\n}",""]),e.exports=o},2210:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card-container {\n --card-min-width: 240px;\n --card-min-width-negative: -240px;\n position: fixed;\n left: 0;\n bottom: 0;\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n padding-left: 16px;\n z-index: 100001;\n pointer-events: none;\n overflow: hidden;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n}\n.toast-card-container * {\n pointer-events: initial;\n transition: 0.2s ease-out;\n}",""]),e.exports=o},455:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-check-box .text-container[data-v-07bbf374] {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n}\n.be-check-box .icon-container[data-v-07bbf374] {\n flex-shrink: 0;\n position: relative;\n margin: 2px 0 2px 8px;\n}\n.be-check-box .icon-container > *[data-v-07bbf374] {\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n}\n.be-check-box .icon-container .not-checked[data-v-07bbf374] {\n opacity: 0.75;\n}\n.be-check-box .icon-container .checked[data-v-07bbf374] {\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n transform: scale(0);\n}\n.be-check-box.checked .icon-container[data-v-07bbf374] {\n color: var(--theme-color);\n}\n.be-check-box.checked .icon-container .not-checked[data-v-07bbf374] {\n transform: scale(0);\n opacity: 0;\n}\n.be-check-box.checked .icon-container .checked[data-v-07bbf374] {\n transform: scale(1);\n opacity: 1;\n}\n.be-check-box.left-icon .icon-container[data-v-07bbf374] {\n order: -1;\n margin: 2px 6px 2px 0;\n}",""]),e.exports=o},8325:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-color-picker[data-v-5b939efc] {\n font-size: 14px;\n display: flex;\n position: relative;\n color: #000;\n}\n.be-color-picker[data-v-5b939efc], .be-color-picker *[data-v-5b939efc] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-color-picker[data-v-5b939efc] {\n color: #eee;\n}\n.be-color-picker .selected-color[data-v-5b939efc] {\n cursor: pointer;\n border-radius: 50%;\n outline: none !important;\n transition: box-shadow 0.2s ease-out;\n}\n.be-color-picker .selected-color[data-v-5b939efc]:focus-within {\n box-shadow: 0 0 0 3px var(--theme-color-20);\n}\n.be-color-picker .picker[data-v-5b939efc] {\n left: calc(50% + var(--offset));\n top: 100%;\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n padding: 14px;\n width: 240px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: content-box;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #222;\n}\n.be-color-picker .picker.open[data-v-5b939efc] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-color-picker .picker .item-group[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .item-title[data-v-5b939efc] {\n font-weight: 600;\n margin-bottom: 8px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc], .be-color-picker .picker .item-group.operations[data-v-5b939efc] {\n flex-direction: row;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc],\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n padding: 6px 8px;\n flex: 1 0 0;\n text-align: center;\n font-size: 14px;\n}\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n margin-right: 4px;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc] {\n margin-left: 4px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.be-color-picker .picker .item-group.info .color-preview[data-v-5b939efc] {\n transition: none;\n width: 24px;\n height: 24px;\n margin-right: 8px;\n border-radius: 50%;\n}\n.be-color-picker .picker .item-group.info .grow[data-v-5b939efc] {\n flex: 1 0 0;\n}\n.be-color-picker .picker .item-group.info .toggle-mode[data-v-5b939efc] {\n font-size: 14px;\n padding: 4px 8px;\n}\n.be-color-picker .picker .item-group.info .hex[data-v-5b939efc] {\n flex: 1 1 64px;\n}\n.be-color-picker .picker .item-group .colors[data-v-5b939efc] {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc] {\n outline: none !important;\n margin-right: 6px;\n margin-bottom: 6px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n border-radius: 50%;\n transition: transform 0.2s ease-out;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:hover, .be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:focus-within {\n transform: scale(1.1);\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:active {\n transform: scale(1.05);\n}\n.be-color-picker .picker .item-group .bars[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .bars .bar[data-v-5b939efc] {\n display: flex;\n align-items: center;\n font-size: 14px;\n margin-bottom: 4px;\n}\n.be-color-picker .picker .item-group .bars .bar .color-bar[data-v-5b939efc] {\n height: 4px;\n border-radius: 2px;\n box-shadow: 0 0 0 2px rgba(136, 136, 136, 0.1333333333);\n}\n.be-color-picker .picker .item-group .bars .bar .color-thumb[data-v-5b939efc] {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid var(--theme-color-20);\n transition: border 0.2s ease-out;\n background-color: #fff;\n}\n.be-color-picker .picker .item-group .bars .bar .be-slider:focus-within .color-thumb[data-v-5b939efc] {\n border-color: var(--theme-color);\n}\n.be-color-picker .picker .item-group .bars .bar-name[data-v-5b939efc] {\n flex-shrink: 0;\n width: 24px;\n}\n.be-color-picker .picker .item-group .bars .bar-value[data-v-5b939efc] {\n flex: 0 0 48px;\n margin-left: 6px;\n text-align: right;\n}\n.be-color-picker .picker .item-group .bars .be-slider[data-v-5b939efc] {\n flex: 1 0 0;\n margin: 4px 6px;\n}\n.be-color-picker .picker .item-group[data-v-5b939efc]:not(:last-child) {\n margin-bottom: 16px;\n}\n.be-color-picker .picker.compact[data-v-5b939efc] {\n width: 200px;\n}\n.be-color-picker .picker.compact .item-group .colors .color[data-v-5b939efc] {\n width: 19px;\n height: 19px;\n}",""]),e.exports=o},6261:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".default-widget[data-v-20e1bedd] {\n position: relative;\n}\n.default-widget .widget-icon[data-v-20e1bedd] {\n margin-right: 8px;\n opacity: 0.75;\n}\n.default-widget .widget-name[data-v-20e1bedd] {\n display: flex;\n}",""]),e.exports=o},7354:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-image-picker[data-v-7b32c90b] {\n position: relative;\n font-size: 14px;\n}\n.be-image-picker .popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n top: 100%;\n left: 50%;\n padding: 8px;\n width: 302px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: black;\n fill: black;\n stroke: black;\n text-align: center;\n margin-bottom: 16px;\n}\nbody.dark .be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .images[data-v-7b32c90b] {\n max-height: 240px;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n outline: none !important;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n padding-left: 6px;\n padding-top: 6px;\n}\n.be-image-picker .popup .images[data-v-7b32c90b]::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b] {\n border-radius: 4px;\n transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;\n outline: none !important;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n margin-right: 6px;\n margin-bottom: 6px;\n}\n.be-image-picker .popup .images .image.image-list-enter[data-v-7b32c90b], .be-image-picker .popup .images .image.image-list-leave-to[data-v-7b32c90b] {\n opacity: 0;\n}\n.be-image-picker .popup .images .image.image-list-leave-active[data-v-7b32c90b] {\n position: absolute;\n}\n.be-image-picker .popup .images .image img[data-v-7b32c90b] {\n object-fit: cover;\n transition: 0.2s ease-out;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b]:hover, .be-image-picker .popup .images .image[data-v-7b32c90b]:focus-within {\n box-shadow: 0 0 0 2px var(--theme-color), 0 0 0 4px var(--theme-color-20);\n}\n.be-image-picker .popup .images .image:hover img[data-v-7b32c90b], .be-image-picker .popup .images .image:focus-within img[data-v-7b32c90b] {\n transform: scale(1.1);\n}\n.be-image-picker .popup .images .image.selected[data-v-7b32c90b] {\n box-shadow: 0 0 0 3px var(--theme-color);\n}\n.be-image-picker .popup .mask[data-v-7b32c90b] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] {\n display: flex;\n margin: 8px 4px 4px 4px;\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}\n.be-image-picker .popup .operations > .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations > .be-button.clear-image[data-v-7b32c90b] {\n flex-grow: 2;\n}\n.be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(-50%) scale(0.75);\n top: 50%;\n left: 50%;\n padding: 14px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n width: 80%;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup .operations .add-image-popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(-50%) scale(1);\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b]:not(:last-child) {\n margin-bottom: 12px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-textbox[data-v-7b32c90b] {\n margin-left: 8px;\n flex: 1 0 0;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .title[data-v-7b32c90b] {\n font-weight: 600;\n font-size: 16px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row.buttons[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}",""]),e.exports=o},1618:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.image-viewer-container[data-v-8829ba14] {\n background: rgba(0, 0, 0, 0.85);\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100002;\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n color: #eee;\n}\n.image-viewer-container[data-v-8829ba14], .image-viewer-container *[data-v-8829ba14] {\n transition: 0.2s ease-out;\n}\n.image-viewer-container.open[data-v-8829ba14] {\n opacity: 1;\n pointer-events: initial;\n}\n.image-viewer-container .image-viewer[data-v-8829ba14] {\n width: 90%;\n height: 90%;\n display: grid;\n grid-template: "image close" 48px "image ." auto "image copy-link" 48px "image ." 12px "image new-tab" 48px "image ." 18px "image download" 48px/auto 48px;\n column-gap: 12px;\n justify-items: center;\n justify-content: stretch;\n align-items: center;\n align-content: stretch;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .image-container[data-v-8829ba14] {\n grid-area: image;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.image-viewer-container .image-viewer .image-container .image[data-v-8829ba14] {\n flex: 1 0 0;\n height: 0;\n object-fit: contain;\n}\n.image-viewer-container .image-viewer .close[data-v-8829ba14] {\n grid-area: close;\n}\n.image-viewer-container .image-viewer .download[data-v-8829ba14] {\n grid-area: download;\n}\n.image-viewer-container .image-viewer .copy-link[data-v-8829ba14] {\n grid-area: copy-link;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .new-tab[data-v-8829ba14] {\n grid-area: new-tab;\n transform: scale(0.85);\n}\n.image-viewer-container .image-viewer .image-viewer-icon[data-v-8829ba14] {\n cursor: pointer;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n color: #eee;\n}\n.image-viewer-container .image-viewer .image-viewer-icon:hover .be-icon[data-v-8829ba14] {\n color: var(--theme-color);\n}\n.image-viewer-container.open .image-viewer[data-v-8829ba14] {\n transform: scale(1);\n}',""]),e.exports=o},1058:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-bar[data-v-56b62124] {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n height: 4px;\n background-color: rgba(136, 136, 136, 0.2666666667);\n border-radius: 2px;\n min-width: 24px;\n overflow: hidden;\n}\n.be-progress-bar .progress[data-v-56b62124] {\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.be-progress-bar .progress.transition[data-v-56b62124] {\n transition: width 0.3s ease-out;\n}",""]),e.exports=o},514:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-ring[data-v-360d0319] {\n --ring-color: var(--theme-color);\n --ring-background: #8884;\n display: flex;\n}\n.be-progress-ring svg[data-v-360d0319] {\n transform: rotate(-90deg);\n}\n.be-progress-ring svg .progress[data-v-360d0319] {\n stroke: var(--ring-color);\n}\n.be-progress-ring svg .progress.transition[data-v-360d0319] {\n transition: stroke-dashoffset 0.3s ease-out;\n}\n.be-progress-ring svg .progress-background[data-v-360d0319] {\n stroke: var(--ring-background);\n}",""]),e.exports=o},4773:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-range-input[data-v-b459c060] {\n display: flex;\n align-items: center;\n}\n.be-range-input > .be-textbox[data-v-b459c060] {\n flex: 1;\n}\n.be-range-input .default-separator[data-v-b459c060] {\n margin: 0 8px;\n flex: 0 0 auto;\n}",""]),e.exports=o},9972:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-scroll-trigger {\n cursor: pointer;\n}",""]),e.exports=o},4085:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-switch-box {\n outline: none !important;\n width: 32px;\n margin: 4px 0;\n}\n.be-switch-box, .be-switch-box *, .be-switch-box *::before, .be-switch-box *::after {\n transition: 0.2s all ease-out;\n}\n.be-switch-box input[type=checkbox] {\n display: none;\n}\n.be-switch-box label {\n display: block;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.be-switch-box .bar {\n position: relative;\n background-color: rgba(136, 136, 136, 0.2666666667);\n box-sizing: border-box;\n height: 12px;\n border-radius: 6px;\n}\n.be-switch-box .bar .thumb {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: #fff;\n border: 1px solid #ddd;\n}\nbody.dark .be-switch-box .bar .thumb {\n border-color: #555;\n background-color: #666;\n}\n.be-switch-box.checked .bar {\n background-color: var(--theme-color-50);\n}\n.be-switch-box.checked .bar .thumb {\n background-color: var(--theme-color);\n border-color: transparent;\n left: calc(100% - 18px);\n}\nbody.dark .be-switch-box.checked .bar .thumb {\n border-color: transparent;\n background-color: var(--theme-color);\n}\n.be-switch-box:focus-within.checked .thumb {\n box-shadow: 0 0 0 1px var(--theme-color-20);\n}\n.be-switch-box.disabled {\n opacity: 0.5;\n}\n.be-switch-box.disabled, .be-switch-box.disabled * {\n cursor: not-allowed;\n}",""]),e.exports=o},2069:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-tab-control {\n display: flex;\n flex-direction: column;\n}\n.be-tab-control .default-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 8px 8px 0;\n}\n.be-tab-control .default-header .default-tabs {\n display: flex;\n padding: 6px 8px;\n}\n.be-tab-control .default-header .default-tabs .default-tab {\n font-size: 14px;\n position: relative;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(:last-child) {\n margin-right: 16px;\n}\n.be-tab-control .default-header .default-tabs .default-tab::after {\n content: "";\n position: absolute;\n top: calc(100% + 4px);\n left: 50%;\n display: block;\n height: 3px;\n border-radius: 2px;\n width: 80%;\n background-color: var(--theme-color);\n transition: transform 0.2s ease-out;\n transform: translateX(-50%) scaleX(0);\n}\n.be-tab-control .default-header .default-tabs .default-tab-name {\n transition: transform 0.2s ease-out;\n opacity: 0.5;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected .default-tab-name {\n font-weight: 600;\n transform: scale(1.1);\n opacity: 1;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected::after {\n transform: translateX(-50%) scaleX(1);\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n content: attr(data-count);\n position: absolute;\n bottom: calc(100% + 2px);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n font-size: 11px;\n border-radius: 10px;\n background-color: #fff;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n height: 10px;\n min-width: 10px;\n box-sizing: content-box;\n line-height: 1;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n background-color: #333;\n}\n.be-tab-control .default-header .header-item {\n flex: 1;\n margin: 0 8px;\n}\n.be-tab-control .default-header .header-item:empty {\n display: none;\n}\n.be-tab-control .default-header .be-more-link .be-button {\n padding: 4px 6px 4px 10px;\n}\n.be-tab-control .default-header .be-more-link .be-button .be-icon {\n margin-left: 4px;\n}\n.be-tab-control .default-content {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 6px 0;\n position: relative;\n max-height: 100%;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.be-tab-control .default-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-tab-control .default-content .content-transition-enter, .be-tab-control .default-content .content-transition-leave-to {\n opacity: 0;\n transform: translateY(-12px);\n}\n.be-tab-control .default-content .content-transition-leave-active {\n position: absolute;\n}\n.be-tab-control .default-content .content-transition-enter-active, .be-tab-control .default-content .content-transition-leave-active {\n transition: 0.2s ease-out;\n}',""]),e.exports=o},2187:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-text-area {\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-text-area:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-text-area textarea {\n resize: none;\n width: 0;\n flex: 1 0 0;\n padding: 4px 6px;\n border-radius: 4px;\n background-color: transparent;\n overflow: auto;\n border: none;\n outline: none !important;\n color: black;\n font-size: inherit;\n}\nbody.dark .be-text-area textarea {\n color: #eee;\n}\n.be-text-area textarea:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-text-area textarea::-webkit-input-placeholder {\n color: #888;\n}",""]),e.exports=o},4098:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-textbox[data-v-d1f779a8] {\n position: relative;\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-textbox[data-v-d1f779a8]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-textbox input[type=text][data-v-d1f779a8] {\n line-height: normal;\n padding: 4px 6px;\n border-radius: 4px;\n flex: 1 0 0;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: black;\n width: 0;\n font-size: inherit;\n}\nbody.dark .be-textbox input[type=text][data-v-d1f779a8] {\n color: #eee;\n}\n.be-textbox input[type=text][data-v-d1f779a8]:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-textbox input[type=text][data-v-d1f779a8]::-webkit-input-placeholder {\n color: #888;\n}\n.be-textbox.linear[data-v-d1f779a8] {\n box-shadow: none;\n}\n.be-textbox.linear input[type=text][data-v-d1f779a8] {\n padding: 4px;\n}\n.be-textbox.linear .linear-bar[data-v-d1f779a8] {\n position: absolute;\n top: calc(100% - 1px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 1px;\n height: 1px;\n width: 100%;\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-textbox.linear[data-v-d1f779a8]:focus-within {\n box-shadow: none;\n}\n.be-textbox.linear:focus-within .linear-bar[data-v-d1f779a8] {\n background-color: var(--theme-color);\n}",""]),e.exports=o},5564:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-button[data-v-18aa9448] {\n outline: none !important;\n line-height: normal;\n transition: background-color 0.2s ease-out, box-shadow 0.2s ease-out;\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: black;\n border: none;\n border-radius: 4px;\n padding: 4px 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.be-button[data-v-18aa9448], .be-button *[data-v-18aa9448] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-button[data-v-18aa9448] {\n color: #eee;\n}\n.be-button.round[data-v-18aa9448] {\n border-radius: calc(1em + 8px);\n padding: 4px 10px;\n}\n.be-button.icon[data-v-18aa9448] {\n border-radius: 50%;\n padding: 4px;\n background-image: none !important;\n}\n.be-button .content-container[data-v-18aa9448] {\n -webkit-user-select: none;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.be-button.transparent[data-v-18aa9448] {\n background-color: transparent;\n}\n.be-button.primary[data-v-18aa9448] {\n box-shadow: 0 0 0 1px var(--theme-color-80);\n background-color: var(--theme-color-80);\n color: var(--foreground-color);\n}\n.be-button.light[data-v-18aa9448] {\n background-color: #fff;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n transition: box-shadow 0.2s ease-out;\n}\nbody.dark .be-button.light[data-v-18aa9448] {\n background-color: #333;\n}\n.be-button[data-v-18aa9448]:not(.disabled):hover, .be-button[data-v-18aa9448]:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-button[data-v-18aa9448]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).transparent[data-v-18aa9448]:hover, .be-button:not(.disabled).transparent[data-v-18aa9448]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover, .be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n background-color: var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:active, .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:active, body.dark .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button.disabled[data-v-18aa9448] {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},8752:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dropdown[data-v-6b51ccd4] {\n display: flex;\n border-radius: 4px;\n color: black;\n fill: black;\n stroke: black;\n background-color: #fff;\n transition: box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n position: relative;\n cursor: pointer;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-dropdown[data-v-6b51ccd4], .be-dropdown *[data-v-6b51ccd4] {\n -webkit-tap-highlight-color: transparent;\n outline: none !important;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n background-color: #333;\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):active, .be-dropdown[data-v-6b51ccd4]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n background-color: inherit;\n top: calc(100% + 4px);\n left: 50%;\n transform: translateX(-50%) translateY(-4px) scale(0.8);\n transform-origin: top;\n transition: 0.2s ease-out;\n min-width: 100%;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n}\nbody.dark .be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.be-dropdown .dropdown-popup.open[data-v-6b51ccd4] {\n transform: translateX(-50%) scale(1);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4] {\n padding: 4px 6px;\n margin: 2px 4px;\n border-radius: 4px;\n white-space: nowrap;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease-out;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:hover, .be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:first-child {\n margin-top: 4px;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:last-child {\n margin-bottom: 4px;\n}\n.be-dropdown .selected[data-v-6b51ccd4] {\n display: flex;\n align-items: center;\n flex-grow: 1;\n line-height: normal;\n}\n.be-dropdown .selected-item[data-v-6b51ccd4] {\n flex: 1;\n padding: 4px 8px;\n}\n.be-dropdown .selected .arrow[data-v-6b51ccd4] {\n flex-shrink: 0;\n transition: transform 0.2s ease-out;\n}\n.be-dropdown .selected .arrow.open[data-v-6b51ccd4] {\n transform: rotate(180deg);\n}\n.be-dropdown .selected .arrow .default-arrow[data-v-6b51ccd4] {\n padding: 0 6px;\n display: flex;\n align-items: center;\n}\n.be-dropdown .selected .arrow .default-arrow path[data-v-6b51ccd4] {\n fill: transparent;\n}\n.be-dropdown .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n transition: 0.2s ease-out;\n stroke: rgba(136, 136, 136, 0.6666666667);\n fill: transparent;\n width: 12px;\n height: 12px;\n}\n.be-dropdown:not(.disabled):hover .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):active .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):focus-within .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n stroke: var(--theme-color);\n}\n.be-dropdown.disabled[data-v-6b51ccd4] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.be-dropdown.round[data-v-6b51ccd4] {\n border-radius: calc(1em + 8px);\n}\n.be-dropdown.round .selected-item[data-v-6b51ccd4] {\n padding: 4px 10px;\n}",""]),e.exports=o},8963:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-empty {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},8203:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-loading {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},4621:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-popup {\n position: absolute;\n z-index: 1;\n border-radius: 8px;\n}\n.be-popup.fixed {\n position: fixed;\n}\n.be-popup.close.closed-style {\n pointer-events: none;\n opacity: 0;\n}\n.be-popup.open {\n pointer-events: initial;\n opacity: 1;\n}",""]),e.exports=o},1473:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-slider[data-v-94f62aa6] {\n min-width: 50px;\n position: relative;\n outline: none !important;\n}\n.be-slider .bar-container[data-v-94f62aa6] {\n padding: 6px 0;\n}\n.be-slider .default-bar[data-v-94f62aa6] {\n height: 4px;\n cursor: pointer;\n border-radius: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-slider .thumb-container[data-v-94f62aa6] {\n cursor: pointer;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n transition: none;\n}\n.be-slider .default-thumb[data-v-94f62aa6] {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: var(--theme-color);\n box-shadow: 0 0 0 2px var(--theme-color-20);\n transition: box-shadow 0.2s ease-out;\n}",""]),e.exports=o},6893:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'@charset "UTF-8";\n/** 由于允许自定义SVG插入, 样式不能是scoped的, 否则匹配不上 */\n@font-face {\n font-family: "be-iconfont-bilifont";\n src: url("//s1.hdslb.com/bfs/seed/jinkela/header-v2/asserts/iconfont.ttf") format("truetype");\n}\n@font-face {\n font-family: "be-iconfont-vanfont";\n src: url("//s1.hdslb.com/bfs/static/jinkela/video/asserts/iconfont.6401a86.ttf") format("truetype");\n}\n.be-icon {\n color: inherit;\n fill: inherit;\n stroke: inherit;\n font-size: var(--size);\n font-style: normal;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--size);\n height: var(--size);\n}\n.be-icon.be-iconfont-logo::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e725";\n}\n.be-icon.be-iconfont-profile::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e722";\n}\n.be-icon.be-iconfont-posts::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-wallet::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71f";\n}\n.be-icon.be-iconfont-live-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e720";\n}\n.be-icon.be-iconfont-order-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71e";\n}\n.be-icon.be-iconfont-course::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e60e";\n}\n.be-icon.be-iconfont-logout::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e721";\n}\n.be-icon.be-iconfont-ok::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e749";\n}\n.be-icon.be-iconfont-cancel::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e74a";\n}\n.be-icon.be-iconfont-bind-phone::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e733";\n}\n.be-icon.be-iconfont-bind-email::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e735";\n}\n.be-icon.be-iconfont-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e734";\n}\n.be-icon.be-iconfont-b-coin::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-b-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-activity::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-feeds::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-message::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e731";\n}\n.be-icon.be-iconfont-favorites-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e730";\n}\n.be-icon.be-iconfont-history::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72f";\n}\n.be-icon.be-iconfont-vip::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72e";\n}\n.be-icon.be-iconfont-up-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e741";\n}\n.be-icon.be-iconfont-play-triangle::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e737";\n}\n.be-icon.be-iconfont-refresh::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e73c";\n}\n.be-icon.be-iconfont-eye::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e742";\n}\n.be-icon.be-iconfont-coin::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e4";\n}\n.be-icon.be-iconfont-favorites::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e1";\n}\n.be-icon.be-iconfont-play::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e6";\n}\n.be-icon.be-iconfont-danmaku::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e7";\n}\n.be-icon.be-iconfont-like::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e0";\n}\n.be-icon.be-iconfont-like-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63a";\n}\n.be-icon.be-iconfont-dislike-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e638";\n}\n.be-icon.be-iconfont-comment-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e639";\n}\n.be-icon.be-iconfont-up::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-left-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f1";\n}\n.be-icon.be-iconfont-right-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f0";\n}\n.be-icon.be-iconfont-up-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ec";\n}\n.be-icon.be-iconfont-down-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6eb";\n}\n.be-icon.be-iconfont-close::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63c";\n}\n.be-icon.be-iconfont-search::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e635";\n}\n.be-icon.be-iconfont-upload::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e634";\n}\n.be-icon.be-iconfont-lv0::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cb";\n color: #9a9a9a;\n}\nbody.dark .be-icon.be-iconfont-lv0::before {\n color: #777;\n}\n.be-icon.be-iconfont-lv1::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cc";\n color: #646464;\n}\nbody.dark .be-icon.be-iconfont-lv1::before {\n color: #ddd;\n}\n.be-icon.be-iconfont-lv2::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cd";\n color: #1bc861;\n}\n.be-icon.be-iconfont-lv3::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ce";\n color: #22baea;\n}\n.be-icon.be-iconfont-lv4::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cf";\n color: #eaa722;\n}\n.be-icon.be-iconfont-lv5::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d0";\n color: #ff7631;\n}\n.be-icon.be-iconfont-lv6::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d1";\n color: #ff3131;\n}\n.be-icon:not(.colored) svg, .be-icon:not(.colored) svg path {\n fill: inherit;\n stroke: inherit;\n stroke-width: 0;\n}\n.be-icon .custom-icon {\n display: flex;\n}\n.be-icon .custom-icon > svg {\n width: var(--size);\n height: var(--size);\n}',""]),e.exports=o},3617:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tippy-box {\n font-size: inherit;\n filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.2));\n}",""]),e.exports=o},8218:e=>{"use strict"; +saturationl:d("hsl",1,m(100)),lightness:d("hsl",2,m(100)),saturationv:d("hsv",1,m(100)),value:d("hsv",2,m(100)),chroma:d("hcg",1,m(100)),gray:d("hcg",2,m(100)),white:d("hwb",1,m(100)),wblack:d("hwb",2,m(100)),cyan:d("cmyk",0,m(100)),magenta:d("cmyk",1,m(100)),yellow:d("cmyk",2,m(100)),black:d("cmyk",3,m(100)),x:d("xyz",0,m(100)),y:d("xyz",1,m(100)),z:d("xyz",2,m(100)),l:d("lab",0,m(100)),a:d("lab",1),b:d("lab",2),keyword:function(e){return arguments.length?new l(e):i[this.model].keyword(this.color)},hex:function(e){return arguments.length?new l(e):o.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],n=0;nn?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return l.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var n=e.rgb(),o=this.rgb(),i=void 0===t?.5:t,r=2*i-1,a=n.alpha()-o.alpha(),c=((r*a==-1?r:(r+a)/(1+r*a))+1)/2,s=1-c;return l.rgb(c*n.red()+s*o.red(),c*n.green()+s*o.green(),c*n.blue()+s*o.blue(),n.alpha()*i+o.alpha()*(1-i))}},Object.keys(i).forEach((function(e){if(-1===a.indexOf(e)){var t=i[e].channels;l.prototype[e]=function(){if(this.model===e)return new l(this);if(arguments.length)return new l(arguments,e);var n="number"==typeof arguments[t]?t:this.valpha;return new l(f(i[this.model][e].raw(this.color)).concat(n),e)},l[e]=function(n){return"number"==typeof n&&(n=u(r.call(arguments),t)),new l(n,e)}}})),e.exports=l},1489:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}',""]),e.exports=o},9145:(e,t,n)=>{var o=n(8218),i=n(3014),r=n(8195),a=o((function(e){return e[1]})),c=i(r);a.push([e.id,'@font-face{font-family:"Material Design Icons";src:url('+c+');font-weight:normal;font-style:normal}.mdi:before,.mdi-set{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-ab-testing::before{content:"\\F01C9"}.mdi-abjad-arabic::before{content:"\\F1328"}.mdi-abjad-hebrew::before{content:"\\F1329"}.mdi-abugida-devanagari::before{content:"\\F132A"}.mdi-abugida-thai::before{content:"\\F132B"}.mdi-access-point::before{content:"\\F0003"}.mdi-access-point-network::before{content:"\\F0002"}.mdi-access-point-network-off::before{content:"\\F0BE1"}.mdi-account::before{content:"\\F0004"}.mdi-account-alert::before{content:"\\F0005"}.mdi-account-alert-outline::before{content:"\\F0B50"}.mdi-account-arrow-left::before{content:"\\F0B51"}.mdi-account-arrow-left-outline::before{content:"\\F0B52"}.mdi-account-arrow-right::before{content:"\\F0B53"}.mdi-account-arrow-right-outline::before{content:"\\F0B54"}.mdi-account-box::before{content:"\\F0006"}.mdi-account-box-multiple::before{content:"\\F0934"}.mdi-account-box-multiple-outline::before{content:"\\F100A"}.mdi-account-box-outline::before{content:"\\F0007"}.mdi-account-cancel::before{content:"\\F12DF"}.mdi-account-cancel-outline::before{content:"\\F12E0"}.mdi-account-cash::before{content:"\\F1097"}.mdi-account-cash-outline::before{content:"\\F1098"}.mdi-account-check::before{content:"\\F0008"}.mdi-account-check-outline::before{content:"\\F0BE2"}.mdi-account-child::before{content:"\\F0A89"}.mdi-account-child-circle::before{content:"\\F0A8A"}.mdi-account-child-outline::before{content:"\\F10C8"}.mdi-account-circle::before{content:"\\F0009"}.mdi-account-circle-outline::before{content:"\\F0B55"}.mdi-account-clock::before{content:"\\F0B56"}.mdi-account-clock-outline::before{content:"\\F0B57"}.mdi-account-cog::before{content:"\\F1370"}.mdi-account-cog-outline::before{content:"\\F1371"}.mdi-account-convert::before{content:"\\F000A"}.mdi-account-convert-outline::before{content:"\\F1301"}.mdi-account-cowboy-hat::before{content:"\\F0E9B"}.mdi-account-details::before{content:"\\F0631"}.mdi-account-details-outline::before{content:"\\F1372"}.mdi-account-edit::before{content:"\\F06BC"}.mdi-account-edit-outline::before{content:"\\F0FFB"}.mdi-account-group::before{content:"\\F0849"}.mdi-account-group-outline::before{content:"\\F0B58"}.mdi-account-hard-hat::before{content:"\\F05B5"}.mdi-account-heart::before{content:"\\F0899"}.mdi-account-heart-outline::before{content:"\\F0BE3"}.mdi-account-key::before{content:"\\F000B"}.mdi-account-key-outline::before{content:"\\F0BE4"}.mdi-account-lock::before{content:"\\F115E"}.mdi-account-lock-outline::before{content:"\\F115F"}.mdi-account-minus::before{content:"\\F000D"}.mdi-account-minus-outline::before{content:"\\F0AEC"}.mdi-account-multiple::before{content:"\\F000E"}.mdi-account-multiple-check::before{content:"\\F08C5"}.mdi-account-multiple-check-outline::before{content:"\\F11FE"}.mdi-account-multiple-minus::before{content:"\\F05D3"}.mdi-account-multiple-minus-outline::before{content:"\\F0BE5"}.mdi-account-multiple-outline::before{content:"\\F000F"}.mdi-account-multiple-plus::before{content:"\\F0010"}.mdi-account-multiple-plus-outline::before{content:"\\F0800"}.mdi-account-multiple-remove::before{content:"\\F120A"}.mdi-account-multiple-remove-outline::before{content:"\\F120B"}.mdi-account-music::before{content:"\\F0803"}.mdi-account-music-outline::before{content:"\\F0CE9"}.mdi-account-network::before{content:"\\F0011"}.mdi-account-network-outline::before{content:"\\F0BE6"}.mdi-account-off::before{content:"\\F0012"}.mdi-account-off-outline::before{content:"\\F0BE7"}.mdi-account-outline::before{content:"\\F0013"}.mdi-account-plus::before{content:"\\F0014"}.mdi-account-plus-outline::before{content:"\\F0801"}.mdi-account-question::before{content:"\\F0B59"}.mdi-account-question-outline::before{content:"\\F0B5A"}.mdi-account-remove::before{content:"\\F0015"}.mdi-account-remove-outline::before{content:"\\F0AED"}.mdi-account-search::before{content:"\\F0016"}.mdi-account-search-outline::before{content:"\\F0935"}.mdi-account-settings::before{content:"\\F0630"}.mdi-account-settings-outline::before{content:"\\F10C9"}.mdi-account-star::before{content:"\\F0017"}.mdi-account-star-outline::before{content:"\\F0BE8"}.mdi-account-supervisor::before{content:"\\F0A8B"}.mdi-account-supervisor-circle::before{content:"\\F0A8C"}.mdi-account-supervisor-outline::before{content:"\\F112D"}.mdi-account-switch::before{content:"\\F0019"}.mdi-account-switch-outline::before{content:"\\F04CB"}.mdi-account-tie::before{content:"\\F0CE3"}.mdi-account-tie-outline::before{content:"\\F10CA"}.mdi-account-tie-voice::before{content:"\\F1308"}.mdi-account-tie-voice-off::before{content:"\\F130A"}.mdi-account-tie-voice-off-outline::before{content:"\\F130B"}.mdi-account-tie-voice-outline::before{content:"\\F1309"}.mdi-account-voice::before{content:"\\F05CB"}.mdi-adjust::before{content:"\\F001A"}.mdi-adobe::before{content:"\\F0936"}.mdi-adobe-acrobat::before{content:"\\F0F9D"}.mdi-air-conditioner::before{content:"\\F001B"}.mdi-air-filter::before{content:"\\F0D43"}.mdi-air-horn::before{content:"\\F0DAC"}.mdi-air-humidifier::before{content:"\\F1099"}.mdi-air-humidifier-off::before{content:"\\F1466"}.mdi-air-purifier::before{content:"\\F0D44"}.mdi-airbag::before{content:"\\F0BE9"}.mdi-airballoon::before{content:"\\F001C"}.mdi-airballoon-outline::before{content:"\\F100B"}.mdi-airplane::before{content:"\\F001D"}.mdi-airplane-landing::before{content:"\\F05D4"}.mdi-airplane-off::before{content:"\\F001E"}.mdi-airplane-takeoff::before{content:"\\F05D5"}.mdi-airport::before{content:"\\F084B"}.mdi-alarm::before{content:"\\F0020"}.mdi-alarm-bell::before{content:"\\F078E"}.mdi-alarm-check::before{content:"\\F0021"}.mdi-alarm-light::before{content:"\\F078F"}.mdi-alarm-light-outline::before{content:"\\F0BEA"}.mdi-alarm-multiple::before{content:"\\F0022"}.mdi-alarm-note::before{content:"\\F0E71"}.mdi-alarm-note-off::before{content:"\\F0E72"}.mdi-alarm-off::before{content:"\\F0023"}.mdi-alarm-plus::before{content:"\\F0024"}.mdi-alarm-snooze::before{content:"\\F068E"}.mdi-album::before{content:"\\F0025"}.mdi-alert::before{content:"\\F0026"}.mdi-alert-box::before{content:"\\F0027"}.mdi-alert-box-outline::before{content:"\\F0CE4"}.mdi-alert-circle::before{content:"\\F0028"}.mdi-alert-circle-check::before{content:"\\F11ED"}.mdi-alert-circle-check-outline::before{content:"\\F11EE"}.mdi-alert-circle-outline::before{content:"\\F05D6"}.mdi-alert-decagram::before{content:"\\F06BD"}.mdi-alert-decagram-outline::before{content:"\\F0CE5"}.mdi-alert-minus::before{content:"\\F14BB"}.mdi-alert-minus-outline::before{content:"\\F14BE"}.mdi-alert-octagon::before{content:"\\F0029"}.mdi-alert-octagon-outline::before{content:"\\F0CE6"}.mdi-alert-octagram::before{content:"\\F0767"}.mdi-alert-octagram-outline::before{content:"\\F0CE7"}.mdi-alert-outline::before{content:"\\F002A"}.mdi-alert-plus::before{content:"\\F14BA"}.mdi-alert-plus-outline::before{content:"\\F14BD"}.mdi-alert-remove::before{content:"\\F14BC"}.mdi-alert-remove-outline::before{content:"\\F14BF"}.mdi-alert-rhombus::before{content:"\\F11CE"}.mdi-alert-rhombus-outline::before{content:"\\F11CF"}.mdi-alien::before{content:"\\F089A"}.mdi-alien-outline::before{content:"\\F10CB"}.mdi-align-horizontal-center::before{content:"\\F11C3"}.mdi-align-horizontal-left::before{content:"\\F11C2"}.mdi-align-horizontal-right::before{content:"\\F11C4"}.mdi-align-vertical-bottom::before{content:"\\F11C5"}.mdi-align-vertical-center::before{content:"\\F11C6"}.mdi-align-vertical-top::before{content:"\\F11C7"}.mdi-all-inclusive::before{content:"\\F06BE"}.mdi-allergy::before{content:"\\F1258"}.mdi-alpha::before{content:"\\F002B"}.mdi-alpha-a::before{content:"\\F0AEE"}.mdi-alpha-a-box::before{content:"\\F0B08"}.mdi-alpha-a-box-outline::before{content:"\\F0BEB"}.mdi-alpha-a-circle::before{content:"\\F0BEC"}.mdi-alpha-a-circle-outline::before{content:"\\F0BED"}.mdi-alpha-b::before{content:"\\F0AEF"}.mdi-alpha-b-box::before{content:"\\F0B09"}.mdi-alpha-b-box-outline::before{content:"\\F0BEE"}.mdi-alpha-b-circle::before{content:"\\F0BEF"}.mdi-alpha-b-circle-outline::before{content:"\\F0BF0"}.mdi-alpha-c::before{content:"\\F0AF0"}.mdi-alpha-c-box::before{content:"\\F0B0A"}.mdi-alpha-c-box-outline::before{content:"\\F0BF1"}.mdi-alpha-c-circle::before{content:"\\F0BF2"}.mdi-alpha-c-circle-outline::before{content:"\\F0BF3"}.mdi-alpha-d::before{content:"\\F0AF1"}.mdi-alpha-d-box::before{content:"\\F0B0B"}.mdi-alpha-d-box-outline::before{content:"\\F0BF4"}.mdi-alpha-d-circle::before{content:"\\F0BF5"}.mdi-alpha-d-circle-outline::before{content:"\\F0BF6"}.mdi-alpha-e::before{content:"\\F0AF2"}.mdi-alpha-e-box::before{content:"\\F0B0C"}.mdi-alpha-e-box-outline::before{content:"\\F0BF7"}.mdi-alpha-e-circle::before{content:"\\F0BF8"}.mdi-alpha-e-circle-outline::before{content:"\\F0BF9"}.mdi-alpha-f::before{content:"\\F0AF3"}.mdi-alpha-f-box::before{content:"\\F0B0D"}.mdi-alpha-f-box-outline::before{content:"\\F0BFA"}.mdi-alpha-f-circle::before{content:"\\F0BFB"}.mdi-alpha-f-circle-outline::before{content:"\\F0BFC"}.mdi-alpha-g::before{content:"\\F0AF4"}.mdi-alpha-g-box::before{content:"\\F0B0E"}.mdi-alpha-g-box-outline::before{content:"\\F0BFD"}.mdi-alpha-g-circle::before{content:"\\F0BFE"}.mdi-alpha-g-circle-outline::before{content:"\\F0BFF"}.mdi-alpha-h::before{content:"\\F0AF5"}.mdi-alpha-h-box::before{content:"\\F0B0F"}.mdi-alpha-h-box-outline::before{content:"\\F0C00"}.mdi-alpha-h-circle::before{content:"\\F0C01"}.mdi-alpha-h-circle-outline::before{content:"\\F0C02"}.mdi-alpha-i::before{content:"\\F0AF6"}.mdi-alpha-i-box::before{content:"\\F0B10"}.mdi-alpha-i-box-outline::before{content:"\\F0C03"}.mdi-alpha-i-circle::before{content:"\\F0C04"}.mdi-alpha-i-circle-outline::before{content:"\\F0C05"}.mdi-alpha-j::before{content:"\\F0AF7"}.mdi-alpha-j-box::before{content:"\\F0B11"}.mdi-alpha-j-box-outline::before{content:"\\F0C06"}.mdi-alpha-j-circle::before{content:"\\F0C07"}.mdi-alpha-j-circle-outline::before{content:"\\F0C08"}.mdi-alpha-k::before{content:"\\F0AF8"}.mdi-alpha-k-box::before{content:"\\F0B12"}.mdi-alpha-k-box-outline::before{content:"\\F0C09"}.mdi-alpha-k-circle::before{content:"\\F0C0A"}.mdi-alpha-k-circle-outline::before{content:"\\F0C0B"}.mdi-alpha-l::before{content:"\\F0AF9"}.mdi-alpha-l-box::before{content:"\\F0B13"}.mdi-alpha-l-box-outline::before{content:"\\F0C0C"}.mdi-alpha-l-circle::before{content:"\\F0C0D"}.mdi-alpha-l-circle-outline::before{content:"\\F0C0E"}.mdi-alpha-m::before{content:"\\F0AFA"}.mdi-alpha-m-box::before{content:"\\F0B14"}.mdi-alpha-m-box-outline::before{content:"\\F0C0F"}.mdi-alpha-m-circle::before{content:"\\F0C10"}.mdi-alpha-m-circle-outline::before{content:"\\F0C11"}.mdi-alpha-n::before{content:"\\F0AFB"}.mdi-alpha-n-box::before{content:"\\F0B15"}.mdi-alpha-n-box-outline::before{content:"\\F0C12"}.mdi-alpha-n-circle::before{content:"\\F0C13"}.mdi-alpha-n-circle-outline::before{content:"\\F0C14"}.mdi-alpha-o::before{content:"\\F0AFC"}.mdi-alpha-o-box::before{content:"\\F0B16"}.mdi-alpha-o-box-outline::before{content:"\\F0C15"}.mdi-alpha-o-circle::before{content:"\\F0C16"}.mdi-alpha-o-circle-outline::before{content:"\\F0C17"}.mdi-alpha-p::before{content:"\\F0AFD"}.mdi-alpha-p-box::before{content:"\\F0B17"}.mdi-alpha-p-box-outline::before{content:"\\F0C18"}.mdi-alpha-p-circle::before{content:"\\F0C19"}.mdi-alpha-p-circle-outline::before{content:"\\F0C1A"}.mdi-alpha-q::before{content:"\\F0AFE"}.mdi-alpha-q-box::before{content:"\\F0B18"}.mdi-alpha-q-box-outline::before{content:"\\F0C1B"}.mdi-alpha-q-circle::before{content:"\\F0C1C"}.mdi-alpha-q-circle-outline::before{content:"\\F0C1D"}.mdi-alpha-r::before{content:"\\F0AFF"}.mdi-alpha-r-box::before{content:"\\F0B19"}.mdi-alpha-r-box-outline::before{content:"\\F0C1E"}.mdi-alpha-r-circle::before{content:"\\F0C1F"}.mdi-alpha-r-circle-outline::before{content:"\\F0C20"}.mdi-alpha-s::before{content:"\\F0B00"}.mdi-alpha-s-box::before{content:"\\F0B1A"}.mdi-alpha-s-box-outline::before{content:"\\F0C21"}.mdi-alpha-s-circle::before{content:"\\F0C22"}.mdi-alpha-s-circle-outline::before{content:"\\F0C23"}.mdi-alpha-t::before{content:"\\F0B01"}.mdi-alpha-t-box::before{content:"\\F0B1B"}.mdi-alpha-t-box-outline::before{content:"\\F0C24"}.mdi-alpha-t-circle::before{content:"\\F0C25"}.mdi-alpha-t-circle-outline::before{content:"\\F0C26"}.mdi-alpha-u::before{content:"\\F0B02"}.mdi-alpha-u-box::before{content:"\\F0B1C"}.mdi-alpha-u-box-outline::before{content:"\\F0C27"}.mdi-alpha-u-circle::before{content:"\\F0C28"}.mdi-alpha-u-circle-outline::before{content:"\\F0C29"}.mdi-alpha-v::before{content:"\\F0B03"}.mdi-alpha-v-box::before{content:"\\F0B1D"}.mdi-alpha-v-box-outline::before{content:"\\F0C2A"}.mdi-alpha-v-circle::before{content:"\\F0C2B"}.mdi-alpha-v-circle-outline::before{content:"\\F0C2C"}.mdi-alpha-w::before{content:"\\F0B04"}.mdi-alpha-w-box::before{content:"\\F0B1E"}.mdi-alpha-w-box-outline::before{content:"\\F0C2D"}.mdi-alpha-w-circle::before{content:"\\F0C2E"}.mdi-alpha-w-circle-outline::before{content:"\\F0C2F"}.mdi-alpha-x::before{content:"\\F0B05"}.mdi-alpha-x-box::before{content:"\\F0B1F"}.mdi-alpha-x-box-outline::before{content:"\\F0C30"}.mdi-alpha-x-circle::before{content:"\\F0C31"}.mdi-alpha-x-circle-outline::before{content:"\\F0C32"}.mdi-alpha-y::before{content:"\\F0B06"}.mdi-alpha-y-box::before{content:"\\F0B20"}.mdi-alpha-y-box-outline::before{content:"\\F0C33"}.mdi-alpha-y-circle::before{content:"\\F0C34"}.mdi-alpha-y-circle-outline::before{content:"\\F0C35"}.mdi-alpha-z::before{content:"\\F0B07"}.mdi-alpha-z-box::before{content:"\\F0B21"}.mdi-alpha-z-box-outline::before{content:"\\F0C36"}.mdi-alpha-z-circle::before{content:"\\F0C37"}.mdi-alpha-z-circle-outline::before{content:"\\F0C38"}.mdi-alphabet-aurebesh::before{content:"\\F132C"}.mdi-alphabet-cyrillic::before{content:"\\F132D"}.mdi-alphabet-greek::before{content:"\\F132E"}.mdi-alphabet-latin::before{content:"\\F132F"}.mdi-alphabet-piqad::before{content:"\\F1330"}.mdi-alphabet-tengwar::before{content:"\\F1337"}.mdi-alphabetical::before{content:"\\F002C"}.mdi-alphabetical-off::before{content:"\\F100C"}.mdi-alphabetical-variant::before{content:"\\F100D"}.mdi-alphabetical-variant-off::before{content:"\\F100E"}.mdi-altimeter::before{content:"\\F05D7"}.mdi-amazon::before{content:"\\F002D"}.mdi-amazon-alexa::before{content:"\\F08C6"}.mdi-ambulance::before{content:"\\F002F"}.mdi-ammunition::before{content:"\\F0CE8"}.mdi-ampersand::before{content:"\\F0A8D"}.mdi-amplifier::before{content:"\\F0030"}.mdi-amplifier-off::before{content:"\\F11B5"}.mdi-anchor::before{content:"\\F0031"}.mdi-android::before{content:"\\F0032"}.mdi-android-auto::before{content:"\\F0A8E"}.mdi-android-debug-bridge::before{content:"\\F0033"}.mdi-android-messages::before{content:"\\F0D45"}.mdi-android-studio::before{content:"\\F0034"}.mdi-angle-acute::before{content:"\\F0937"}.mdi-angle-obtuse::before{content:"\\F0938"}.mdi-angle-right::before{content:"\\F0939"}.mdi-angular::before{content:"\\F06B2"}.mdi-angularjs::before{content:"\\F06BF"}.mdi-animation::before{content:"\\F05D8"}.mdi-animation-outline::before{content:"\\F0A8F"}.mdi-animation-play::before{content:"\\F093A"}.mdi-animation-play-outline::before{content:"\\F0A90"}.mdi-ansible::before{content:"\\F109A"}.mdi-antenna::before{content:"\\F1119"}.mdi-anvil::before{content:"\\F089B"}.mdi-apache-kafka::before{content:"\\F100F"}.mdi-api::before{content:"\\F109B"}.mdi-api-off::before{content:"\\F1257"}.mdi-apple::before{content:"\\F0035"}.mdi-apple-airplay::before{content:"\\F001F"}.mdi-apple-finder::before{content:"\\F0036"}.mdi-apple-icloud::before{content:"\\F0038"}.mdi-apple-ios::before{content:"\\F0037"}.mdi-apple-keyboard-caps::before{content:"\\F0632"}.mdi-apple-keyboard-command::before{content:"\\F0633"}.mdi-apple-keyboard-control::before{content:"\\F0634"}.mdi-apple-keyboard-option::before{content:"\\F0635"}.mdi-apple-keyboard-shift::before{content:"\\F0636"}.mdi-apple-safari::before{content:"\\F0039"}.mdi-application::before{content:"\\F0614"}.mdi-application-export::before{content:"\\F0DAD"}.mdi-application-import::before{content:"\\F0DAE"}.mdi-approximately-equal::before{content:"\\F0F9E"}.mdi-approximately-equal-box::before{content:"\\F0F9F"}.mdi-apps::before{content:"\\F003B"}.mdi-apps-box::before{content:"\\F0D46"}.mdi-arch::before{content:"\\F08C7"}.mdi-archive::before{content:"\\F003C"}.mdi-archive-arrow-down::before{content:"\\F1259"}.mdi-archive-arrow-down-outline::before{content:"\\F125A"}.mdi-archive-arrow-up::before{content:"\\F125B"}.mdi-archive-arrow-up-outline::before{content:"\\F125C"}.mdi-archive-outline::before{content:"\\F120E"}.mdi-arm-flex::before{content:"\\F0FD7"}.mdi-arm-flex-outline::before{content:"\\F0FD6"}.mdi-arrange-bring-forward::before{content:"\\F003D"}.mdi-arrange-bring-to-front::before{content:"\\F003E"}.mdi-arrange-send-backward::before{content:"\\F003F"}.mdi-arrange-send-to-back::before{content:"\\F0040"}.mdi-arrow-all::before{content:"\\F0041"}.mdi-arrow-bottom-left::before{content:"\\F0042"}.mdi-arrow-bottom-left-bold-outline::before{content:"\\F09B7"}.mdi-arrow-bottom-left-thick::before{content:"\\F09B8"}.mdi-arrow-bottom-right::before{content:"\\F0043"}.mdi-arrow-bottom-right-bold-outline::before{content:"\\F09B9"}.mdi-arrow-bottom-right-thick::before{content:"\\F09BA"}.mdi-arrow-collapse::before{content:"\\F0615"}.mdi-arrow-collapse-all::before{content:"\\F0044"}.mdi-arrow-collapse-down::before{content:"\\F0792"}.mdi-arrow-collapse-horizontal::before{content:"\\F084C"}.mdi-arrow-collapse-left::before{content:"\\F0793"}.mdi-arrow-collapse-right::before{content:"\\F0794"}.mdi-arrow-collapse-up::before{content:"\\F0795"}.mdi-arrow-collapse-vertical::before{content:"\\F084D"}.mdi-arrow-decision::before{content:"\\F09BB"}.mdi-arrow-decision-auto::before{content:"\\F09BC"}.mdi-arrow-decision-auto-outline::before{content:"\\F09BD"}.mdi-arrow-decision-outline::before{content:"\\F09BE"}.mdi-arrow-down::before{content:"\\F0045"}.mdi-arrow-down-bold::before{content:"\\F072E"}.mdi-arrow-down-bold-box::before{content:"\\F072F"}.mdi-arrow-down-bold-box-outline::before{content:"\\F0730"}.mdi-arrow-down-bold-circle::before{content:"\\F0047"}.mdi-arrow-down-bold-circle-outline::before{content:"\\F0048"}.mdi-arrow-down-bold-hexagon-outline::before{content:"\\F0049"}.mdi-arrow-down-bold-outline::before{content:"\\F09BF"}.mdi-arrow-down-box::before{content:"\\F06C0"}.mdi-arrow-down-circle::before{content:"\\F0CDB"}.mdi-arrow-down-circle-outline::before{content:"\\F0CDC"}.mdi-arrow-down-drop-circle::before{content:"\\F004A"}.mdi-arrow-down-drop-circle-outline::before{content:"\\F004B"}.mdi-arrow-down-thick::before{content:"\\F0046"}.mdi-arrow-expand::before{content:"\\F0616"}.mdi-arrow-expand-all::before{content:"\\F004C"}.mdi-arrow-expand-down::before{content:"\\F0796"}.mdi-arrow-expand-horizontal::before{content:"\\F084E"}.mdi-arrow-expand-left::before{content:"\\F0797"}.mdi-arrow-expand-right::before{content:"\\F0798"}.mdi-arrow-expand-up::before{content:"\\F0799"}.mdi-arrow-expand-vertical::before{content:"\\F084F"}.mdi-arrow-horizontal-lock::before{content:"\\F115B"}.mdi-arrow-left::before{content:"\\F004D"}.mdi-arrow-left-bold::before{content:"\\F0731"}.mdi-arrow-left-bold-box::before{content:"\\F0732"}.mdi-arrow-left-bold-box-outline::before{content:"\\F0733"}.mdi-arrow-left-bold-circle::before{content:"\\F004F"}.mdi-arrow-left-bold-circle-outline::before{content:"\\F0050"}.mdi-arrow-left-bold-hexagon-outline::before{content:"\\F0051"}.mdi-arrow-left-bold-outline::before{content:"\\F09C0"}.mdi-arrow-left-box::before{content:"\\F06C1"}.mdi-arrow-left-circle::before{content:"\\F0CDD"}.mdi-arrow-left-circle-outline::before{content:"\\F0CDE"}.mdi-arrow-left-drop-circle::before{content:"\\F0052"}.mdi-arrow-left-drop-circle-outline::before{content:"\\F0053"}.mdi-arrow-left-right::before{content:"\\F0E73"}.mdi-arrow-left-right-bold::before{content:"\\F0E74"}.mdi-arrow-left-right-bold-outline::before{content:"\\F09C1"}.mdi-arrow-left-thick::before{content:"\\F004E"}.mdi-arrow-right::before{content:"\\F0054"}.mdi-arrow-right-bold::before{content:"\\F0734"}.mdi-arrow-right-bold-box::before{content:"\\F0735"}.mdi-arrow-right-bold-box-outline::before{content:"\\F0736"}.mdi-arrow-right-bold-circle::before{content:"\\F0056"}.mdi-arrow-right-bold-circle-outline::before{content:"\\F0057"}.mdi-arrow-right-bold-hexagon-outline::before{content:"\\F0058"}.mdi-arrow-right-bold-outline::before{content:"\\F09C2"}.mdi-arrow-right-box::before{content:"\\F06C2"}.mdi-arrow-right-circle::before{content:"\\F0CDF"}.mdi-arrow-right-circle-outline::before{content:"\\F0CE0"}.mdi-arrow-right-drop-circle::before{content:"\\F0059"}.mdi-arrow-right-drop-circle-outline::before{content:"\\F005A"}.mdi-arrow-right-thick::before{content:"\\F0055"}.mdi-arrow-split-horizontal::before{content:"\\F093B"}.mdi-arrow-split-vertical::before{content:"\\F093C"}.mdi-arrow-top-left::before{content:"\\F005B"}.mdi-arrow-top-left-bold-outline::before{content:"\\F09C3"}.mdi-arrow-top-left-bottom-right::before{content:"\\F0E75"}.mdi-arrow-top-left-bottom-right-bold::before{content:"\\F0E76"}.mdi-arrow-top-left-thick::before{content:"\\F09C4"}.mdi-arrow-top-right::before{content:"\\F005C"}.mdi-arrow-top-right-bold-outline::before{content:"\\F09C5"}.mdi-arrow-top-right-bottom-left::before{content:"\\F0E77"}.mdi-arrow-top-right-bottom-left-bold::before{content:"\\F0E78"}.mdi-arrow-top-right-thick::before{content:"\\F09C6"}.mdi-arrow-up::before{content:"\\F005D"}.mdi-arrow-up-bold::before{content:"\\F0737"}.mdi-arrow-up-bold-box::before{content:"\\F0738"}.mdi-arrow-up-bold-box-outline::before{content:"\\F0739"}.mdi-arrow-up-bold-circle::before{content:"\\F005F"}.mdi-arrow-up-bold-circle-outline::before{content:"\\F0060"}.mdi-arrow-up-bold-hexagon-outline::before{content:"\\F0061"}.mdi-arrow-up-bold-outline::before{content:"\\F09C7"}.mdi-arrow-up-box::before{content:"\\F06C3"}.mdi-arrow-up-circle::before{content:"\\F0CE1"}.mdi-arrow-up-circle-outline::before{content:"\\F0CE2"}.mdi-arrow-up-down::before{content:"\\F0E79"}.mdi-arrow-up-down-bold::before{content:"\\F0E7A"}.mdi-arrow-up-down-bold-outline::before{content:"\\F09C8"}.mdi-arrow-up-drop-circle::before{content:"\\F0062"}.mdi-arrow-up-drop-circle-outline::before{content:"\\F0063"}.mdi-arrow-up-thick::before{content:"\\F005E"}.mdi-arrow-vertical-lock::before{content:"\\F115C"}.mdi-artstation::before{content:"\\F0B5B"}.mdi-aspect-ratio::before{content:"\\F0A24"}.mdi-assistant::before{content:"\\F0064"}.mdi-asterisk::before{content:"\\F06C4"}.mdi-at::before{content:"\\F0065"}.mdi-atlassian::before{content:"\\F0804"}.mdi-atm::before{content:"\\F0D47"}.mdi-atom::before{content:"\\F0768"}.mdi-atom-variant::before{content:"\\F0E7B"}.mdi-attachment::before{content:"\\F0066"}.mdi-audio-video::before{content:"\\F093D"}.mdi-audio-video-off::before{content:"\\F11B6"}.mdi-augmented-reality::before{content:"\\F0850"}.mdi-auto-download::before{content:"\\F137E"}.mdi-auto-fix::before{content:"\\F0068"}.mdi-auto-upload::before{content:"\\F0069"}.mdi-autorenew::before{content:"\\F006A"}.mdi-av-timer::before{content:"\\F006B"}.mdi-aws::before{content:"\\F0E0F"}.mdi-axe::before{content:"\\F08C8"}.mdi-axis::before{content:"\\F0D48"}.mdi-axis-arrow::before{content:"\\F0D49"}.mdi-axis-arrow-info::before{content:"\\F140E"}.mdi-axis-arrow-lock::before{content:"\\F0D4A"}.mdi-axis-lock::before{content:"\\F0D4B"}.mdi-axis-x-arrow::before{content:"\\F0D4C"}.mdi-axis-x-arrow-lock::before{content:"\\F0D4D"}.mdi-axis-x-rotate-clockwise::before{content:"\\F0D4E"}.mdi-axis-x-rotate-counterclockwise::before{content:"\\F0D4F"}.mdi-axis-x-y-arrow-lock::before{content:"\\F0D50"}.mdi-axis-y-arrow::before{content:"\\F0D51"}.mdi-axis-y-arrow-lock::before{content:"\\F0D52"}.mdi-axis-y-rotate-clockwise::before{content:"\\F0D53"}.mdi-axis-y-rotate-counterclockwise::before{content:"\\F0D54"}.mdi-axis-z-arrow::before{content:"\\F0D55"}.mdi-axis-z-arrow-lock::before{content:"\\F0D56"}.mdi-axis-z-rotate-clockwise::before{content:"\\F0D57"}.mdi-axis-z-rotate-counterclockwise::before{content:"\\F0D58"}.mdi-babel::before{content:"\\F0A25"}.mdi-baby::before{content:"\\F006C"}.mdi-baby-bottle::before{content:"\\F0F39"}.mdi-baby-bottle-outline::before{content:"\\F0F3A"}.mdi-baby-buggy::before{content:"\\F13E0"}.mdi-baby-carriage::before{content:"\\F068F"}.mdi-baby-carriage-off::before{content:"\\F0FA0"}.mdi-baby-face::before{content:"\\F0E7C"}.mdi-baby-face-outline::before{content:"\\F0E7D"}.mdi-backburger::before{content:"\\F006D"}.mdi-backspace::before{content:"\\F006E"}.mdi-backspace-outline::before{content:"\\F0B5C"}.mdi-backspace-reverse::before{content:"\\F0E7E"}.mdi-backspace-reverse-outline::before{content:"\\F0E7F"}.mdi-backup-restore::before{content:"\\F006F"}.mdi-bacteria::before{content:"\\F0ED5"}.mdi-bacteria-outline::before{content:"\\F0ED6"}.mdi-badge-account::before{content:"\\F0DA7"}.mdi-badge-account-alert::before{content:"\\F0DA8"}.mdi-badge-account-alert-outline::before{content:"\\F0DA9"}.mdi-badge-account-horizontal::before{content:"\\F0E0D"}.mdi-badge-account-horizontal-outline::before{content:"\\F0E0E"}.mdi-badge-account-outline::before{content:"\\F0DAA"}.mdi-badminton::before{content:"\\F0851"}.mdi-bag-carry-on::before{content:"\\F0F3B"}.mdi-bag-carry-on-check::before{content:"\\F0D65"}.mdi-bag-carry-on-off::before{content:"\\F0F3C"}.mdi-bag-checked::before{content:"\\F0F3D"}.mdi-bag-personal::before{content:"\\F0E10"}.mdi-bag-personal-off::before{content:"\\F0E11"}.mdi-bag-personal-off-outline::before{content:"\\F0E12"}.mdi-bag-personal-outline::before{content:"\\F0E13"}.mdi-baguette::before{content:"\\F0F3E"}.mdi-balloon::before{content:"\\F0A26"}.mdi-ballot::before{content:"\\F09C9"}.mdi-ballot-outline::before{content:"\\F09CA"}.mdi-ballot-recount::before{content:"\\F0C39"}.mdi-ballot-recount-outline::before{content:"\\F0C3A"}.mdi-bandage::before{content:"\\F0DAF"}.mdi-bandcamp::before{content:"\\F0675"}.mdi-bank::before{content:"\\F0070"}.mdi-bank-minus::before{content:"\\F0DB0"}.mdi-bank-outline::before{content:"\\F0E80"}.mdi-bank-plus::before{content:"\\F0DB1"}.mdi-bank-remove::before{content:"\\F0DB2"}.mdi-bank-transfer::before{content:"\\F0A27"}.mdi-bank-transfer-in::before{content:"\\F0A28"}.mdi-bank-transfer-out::before{content:"\\F0A29"}.mdi-barcode::before{content:"\\F0071"}.mdi-barcode-off::before{content:"\\F1236"}.mdi-barcode-scan::before{content:"\\F0072"}.mdi-barley::before{content:"\\F0073"}.mdi-barley-off::before{content:"\\F0B5D"}.mdi-barn::before{content:"\\F0B5E"}.mdi-barrel::before{content:"\\F0074"}.mdi-baseball::before{content:"\\F0852"}.mdi-baseball-bat::before{content:"\\F0853"}.mdi-bash::before{content:"\\F1183"}.mdi-basket::before{content:"\\F0076"}.mdi-basket-fill::before{content:"\\F0077"}.mdi-basket-outline::before{content:"\\F1181"}.mdi-basket-unfill::before{content:"\\F0078"}.mdi-basketball::before{content:"\\F0806"}.mdi-basketball-hoop::before{content:"\\F0C3B"}.mdi-basketball-hoop-outline::before{content:"\\F0C3C"}.mdi-bat::before{content:"\\F0B5F"}.mdi-battery::before{content:"\\F0079"}.mdi-battery-10::before{content:"\\F007A"}.mdi-battery-10-bluetooth::before{content:"\\F093E"}.mdi-battery-20::before{content:"\\F007B"}.mdi-battery-20-bluetooth::before{content:"\\F093F"}.mdi-battery-30::before{content:"\\F007C"}.mdi-battery-30-bluetooth::before{content:"\\F0940"}.mdi-battery-40::before{content:"\\F007D"}.mdi-battery-40-bluetooth::before{content:"\\F0941"}.mdi-battery-50::before{content:"\\F007E"}.mdi-battery-50-bluetooth::before{content:"\\F0942"}.mdi-battery-60::before{content:"\\F007F"}.mdi-battery-60-bluetooth::before{content:"\\F0943"}.mdi-battery-70::before{content:"\\F0080"}.mdi-battery-70-bluetooth::before{content:"\\F0944"}.mdi-battery-80::before{content:"\\F0081"}.mdi-battery-80-bluetooth::before{content:"\\F0945"}.mdi-battery-90::before{content:"\\F0082"}.mdi-battery-90-bluetooth::before{content:"\\F0946"}.mdi-battery-alert::before{content:"\\F0083"}.mdi-battery-alert-bluetooth::before{content:"\\F0947"}.mdi-battery-alert-variant::before{content:"\\F10CC"}.mdi-battery-alert-variant-outline::before{content:"\\F10CD"}.mdi-battery-bluetooth::before{content:"\\F0948"}.mdi-battery-bluetooth-variant::before{content:"\\F0949"}.mdi-battery-charging::before{content:"\\F0084"}.mdi-battery-charging-10::before{content:"\\F089C"}.mdi-battery-charging-100::before{content:"\\F0085"}.mdi-battery-charging-20::before{content:"\\F0086"}.mdi-battery-charging-30::before{content:"\\F0087"}.mdi-battery-charging-40::before{content:"\\F0088"}.mdi-battery-charging-50::before{content:"\\F089D"}.mdi-battery-charging-60::before{content:"\\F0089"}.mdi-battery-charging-70::before{content:"\\F089E"}.mdi-battery-charging-80::before{content:"\\F008A"}.mdi-battery-charging-90::before{content:"\\F008B"}.mdi-battery-charging-high::before{content:"\\F12A6"}.mdi-battery-charging-low::before{content:"\\F12A4"}.mdi-battery-charging-medium::before{content:"\\F12A5"}.mdi-battery-charging-outline::before{content:"\\F089F"}.mdi-battery-charging-wireless::before{content:"\\F0807"}.mdi-battery-charging-wireless-10::before{content:"\\F0808"}.mdi-battery-charging-wireless-20::before{content:"\\F0809"}.mdi-battery-charging-wireless-30::before{content:"\\F080A"}.mdi-battery-charging-wireless-40::before{content:"\\F080B"}.mdi-battery-charging-wireless-50::before{content:"\\F080C"}.mdi-battery-charging-wireless-60::before{content:"\\F080D"}.mdi-battery-charging-wireless-70::before{content:"\\F080E"}.mdi-battery-charging-wireless-80::before{content:"\\F080F"}.mdi-battery-charging-wireless-90::before{content:"\\F0810"}.mdi-battery-charging-wireless-alert::before{content:"\\F0811"}.mdi-battery-charging-wireless-outline::before{content:"\\F0812"}.mdi-battery-heart::before{content:"\\F120F"}.mdi-battery-heart-outline::before{content:"\\F1210"}.mdi-battery-heart-variant::before{content:"\\F1211"}.mdi-battery-high::before{content:"\\F12A3"}.mdi-battery-low::before{content:"\\F12A1"}.mdi-battery-medium::before{content:"\\F12A2"}.mdi-battery-minus::before{content:"\\F008C"}.mdi-battery-negative::before{content:"\\F008D"}.mdi-battery-off::before{content:"\\F125D"}.mdi-battery-off-outline::before{content:"\\F125E"}.mdi-battery-outline::before{content:"\\F008E"}.mdi-battery-plus::before{content:"\\F008F"}.mdi-battery-positive::before{content:"\\F0090"}.mdi-battery-unknown::before{content:"\\F0091"}.mdi-battery-unknown-bluetooth::before{content:"\\F094A"}.mdi-battlenet::before{content:"\\F0B60"}.mdi-beach::before{content:"\\F0092"}.mdi-beaker::before{content:"\\F0CEA"}.mdi-beaker-alert::before{content:"\\F1229"}.mdi-beaker-alert-outline::before{content:"\\F122A"}.mdi-beaker-check::before{content:"\\F122B"}.mdi-beaker-check-outline::before{content:"\\F122C"}.mdi-beaker-minus::before{content:"\\F122D"}.mdi-beaker-minus-outline::before{content:"\\F122E"}.mdi-beaker-outline::before{content:"\\F0690"}.mdi-beaker-plus::before{content:"\\F122F"}.mdi-beaker-plus-outline::before{content:"\\F1230"}.mdi-beaker-question::before{content:"\\F1231"}.mdi-beaker-question-outline::before{content:"\\F1232"}.mdi-beaker-remove::before{content:"\\F1233"}.mdi-beaker-remove-outline::before{content:"\\F1234"}.mdi-bed::before{content:"\\F02E3"}.mdi-bed-double::before{content:"\\F0FD4"}.mdi-bed-double-outline::before{content:"\\F0FD3"}.mdi-bed-empty::before{content:"\\F08A0"}.mdi-bed-king::before{content:"\\F0FD2"}.mdi-bed-king-outline::before{content:"\\F0FD1"}.mdi-bed-outline::before{content:"\\F0099"}.mdi-bed-queen::before{content:"\\F0FD0"}.mdi-bed-queen-outline::before{content:"\\F0FDB"}.mdi-bed-single::before{content:"\\F106D"}.mdi-bed-single-outline::before{content:"\\F106E"}.mdi-bee::before{content:"\\F0FA1"}.mdi-bee-flower::before{content:"\\F0FA2"}.mdi-beehive-off-outline::before{content:"\\F13ED"}.mdi-beehive-outline::before{content:"\\F10CE"}.mdi-beer::before{content:"\\F0098"}.mdi-beer-outline::before{content:"\\F130C"}.mdi-bell::before{content:"\\F009A"}.mdi-bell-alert::before{content:"\\F0D59"}.mdi-bell-alert-outline::before{content:"\\F0E81"}.mdi-bell-cancel::before{content:"\\F13E7"}.mdi-bell-cancel-outline::before{content:"\\F13E8"}.mdi-bell-check::before{content:"\\F11E5"}.mdi-bell-check-outline::before{content:"\\F11E6"}.mdi-bell-circle::before{content:"\\F0D5A"}.mdi-bell-circle-outline::before{content:"\\F0D5B"}.mdi-bell-minus::before{content:"\\F13E9"}.mdi-bell-minus-outline::before{content:"\\F13EA"}.mdi-bell-off::before{content:"\\F009B"}.mdi-bell-off-outline::before{content:"\\F0A91"}.mdi-bell-outline::before{content:"\\F009C"}.mdi-bell-plus::before{content:"\\F009D"}.mdi-bell-plus-outline::before{content:"\\F0A92"}.mdi-bell-remove::before{content:"\\F13EB"}.mdi-bell-remove-outline::before{content:"\\F13EC"}.mdi-bell-ring::before{content:"\\F009E"}.mdi-bell-ring-outline::before{content:"\\F009F"}.mdi-bell-sleep::before{content:"\\F00A0"}.mdi-bell-sleep-outline::before{content:"\\F0A93"}.mdi-beta::before{content:"\\F00A1"}.mdi-betamax::before{content:"\\F09CB"}.mdi-biathlon::before{content:"\\F0E14"}.mdi-bicycle::before{content:"\\F109C"}.mdi-bicycle-basket::before{content:"\\F1235"}.mdi-bike::before{content:"\\F00A3"}.mdi-bike-fast::before{content:"\\F111F"}.mdi-billboard::before{content:"\\F1010"}.mdi-billiards::before{content:"\\F0B61"}.mdi-billiards-rack::before{content:"\\F0B62"}.mdi-binoculars::before{content:"\\F00A5"}.mdi-bio::before{content:"\\F00A6"}.mdi-biohazard::before{content:"\\F00A7"}.mdi-bitbucket::before{content:"\\F00A8"}.mdi-bitcoin::before{content:"\\F0813"}.mdi-black-mesa::before{content:"\\F00A9"}.mdi-blender::before{content:"\\F0CEB"}.mdi-blender-software::before{content:"\\F00AB"}.mdi-blinds::before{content:"\\F00AC"}.mdi-blinds-open::before{content:"\\F1011"}.mdi-block-helper::before{content:"\\F00AD"}.mdi-blogger::before{content:"\\F00AE"}.mdi-blood-bag::before{content:"\\F0CEC"}.mdi-bluetooth::before{content:"\\F00AF"}.mdi-bluetooth-audio::before{content:"\\F00B0"}.mdi-bluetooth-connect::before{content:"\\F00B1"}.mdi-bluetooth-off::before{content:"\\F00B2"}.mdi-bluetooth-settings::before{content:"\\F00B3"}.mdi-bluetooth-transfer::before{content:"\\F00B4"}.mdi-blur::before{content:"\\F00B5"}.mdi-blur-linear::before{content:"\\F00B6"}.mdi-blur-off::before{content:"\\F00B7"}.mdi-blur-radial::before{content:"\\F00B8"}.mdi-bolnisi-cross::before{content:"\\F0CED"}.mdi-bolt::before{content:"\\F0DB3"}.mdi-bomb::before{content:"\\F0691"}.mdi-bomb-off::before{content:"\\F06C5"}.mdi-bone::before{content:"\\F00B9"}.mdi-book::before{content:"\\F00BA"}.mdi-book-account::before{content:"\\F13AD"}.mdi-book-account-outline::before{content:"\\F13AE"}.mdi-book-alphabet::before{content:"\\F061D"}.mdi-book-cross::before{content:"\\F00A2"}.mdi-book-information-variant::before{content:"\\F106F"}.mdi-book-lock::before{content:"\\F079A"}.mdi-book-lock-open::before{content:"\\F079B"}.mdi-book-minus::before{content:"\\F05D9"}.mdi-book-minus-multiple::before{content:"\\F0A94"}.mdi-book-minus-multiple-outline::before{content:"\\F090B"}.mdi-book-multiple::before{content:"\\F00BB"}.mdi-book-multiple-outline::before{content:"\\F0436"}.mdi-book-music::before{content:"\\F0067"}.mdi-book-open::before{content:"\\F00BD"}.mdi-book-open-outline::before{content:"\\F0B63"}.mdi-book-open-page-variant::before{content:"\\F05DA"}.mdi-book-open-variant::before{content:"\\F00BE"}.mdi-book-outline::before{content:"\\F0B64"}.mdi-book-play::before{content:"\\F0E82"}.mdi-book-play-outline::before{content:"\\F0E83"}.mdi-book-plus::before{content:"\\F05DB"}.mdi-book-plus-multiple::before{content:"\\F0A95"}.mdi-book-plus-multiple-outline::before{content:"\\F0ADE"}.mdi-book-remove::before{content:"\\F0A97"}.mdi-book-remove-multiple::before{content:"\\F0A96"}.mdi-book-remove-multiple-outline::before{content:"\\F04CA"}.mdi-book-search::before{content:"\\F0E84"}.mdi-book-search-outline::before{content:"\\F0E85"}.mdi-book-variant::before{content:"\\F00BF"}.mdi-book-variant-multiple::before{content:"\\F00BC"}.mdi-bookmark::before{content:"\\F00C0"}.mdi-bookmark-check::before{content:"\\F00C1"}.mdi-bookmark-check-outline::before{content:"\\F137B"}.mdi-bookmark-minus::before{content:"\\F09CC"}.mdi-bookmark-minus-outline::before{content:"\\F09CD"}.mdi-bookmark-multiple::before{content:"\\F0E15"}.mdi-bookmark-multiple-outline::before{content:"\\F0E16"}.mdi-bookmark-music::before{content:"\\F00C2"}.mdi-bookmark-music-outline::before{content:"\\F1379"}.mdi-bookmark-off::before{content:"\\F09CE"}.mdi-bookmark-off-outline::before{content:"\\F09CF"}.mdi-bookmark-outline::before{content:"\\F00C3"}.mdi-bookmark-plus::before{content:"\\F00C5"}.mdi-bookmark-plus-outline::before{content:"\\F00C4"}.mdi-bookmark-remove::before{content:"\\F00C6"}.mdi-bookmark-remove-outline::before{content:"\\F137A"}.mdi-bookshelf::before{content:"\\F125F"}.mdi-boom-gate::before{content:"\\F0E86"}.mdi-boom-gate-alert::before{content:"\\F0E87"}.mdi-boom-gate-alert-outline::before{content:"\\F0E88"}.mdi-boom-gate-down::before{content:"\\F0E89"}.mdi-boom-gate-down-outline::before{content:"\\F0E8A"}.mdi-boom-gate-outline::before{content:"\\F0E8B"}.mdi-boom-gate-up::before{content:"\\F0E8C"}.mdi-boom-gate-up-outline::before{content:"\\F0E8D"}.mdi-boombox::before{content:"\\F05DC"}.mdi-boomerang::before{content:"\\F10CF"}.mdi-bootstrap::before{content:"\\F06C6"}.mdi-border-all::before{content:"\\F00C7"}.mdi-border-all-variant::before{content:"\\F08A1"}.mdi-border-bottom::before{content:"\\F00C8"}.mdi-border-bottom-variant::before{content:"\\F08A2"}.mdi-border-color::before{content:"\\F00C9"}.mdi-border-horizontal::before{content:"\\F00CA"}.mdi-border-inside::before{content:"\\F00CB"}.mdi-border-left::before{content:"\\F00CC"}.mdi-border-left-variant::before{content:"\\F08A3"}.mdi-border-none::before{content:"\\F00CD"}.mdi-border-none-variant::before{content:"\\F08A4"}.mdi-border-outside::before{content:"\\F00CE"}.mdi-border-right::before{content:"\\F00CF"}.mdi-border-right-variant::before{content:"\\F08A5"}.mdi-border-style::before{content:"\\F00D0"}.mdi-border-top::before{content:"\\F00D1"}.mdi-border-top-variant::before{content:"\\F08A6"}.mdi-border-vertical::before{content:"\\F00D2"}.mdi-bottle-soda::before{content:"\\F1070"}.mdi-bottle-soda-classic::before{content:"\\F1071"}.mdi-bottle-soda-classic-outline::before{content:"\\F1363"}.mdi-bottle-soda-outline::before{content:"\\F1072"}.mdi-bottle-tonic::before{content:"\\F112E"}.mdi-bottle-tonic-outline::before{content:"\\F112F"}.mdi-bottle-tonic-plus::before{content:"\\F1130"}.mdi-bottle-tonic-plus-outline::before{content:"\\F1131"}.mdi-bottle-tonic-skull::before{content:"\\F1132"}.mdi-bottle-tonic-skull-outline::before{content:"\\F1133"}.mdi-bottle-wine::before{content:"\\F0854"}.mdi-bottle-wine-outline::before{content:"\\F1310"}.mdi-bow-tie::before{content:"\\F0678"}.mdi-bowl::before{content:"\\F028E"}.mdi-bowl-mix::before{content:"\\F0617"}.mdi-bowl-mix-outline::before{content:"\\F02E4"}.mdi-bowl-outline::before{content:"\\F02A9"}.mdi-bowling::before{content:"\\F00D3"}.mdi-box::before{content:"\\F00D4"}.mdi-box-cutter::before{content:"\\F00D5"}.mdi-box-cutter-off::before{content:"\\F0B4A"}.mdi-box-shadow::before{content:"\\F0637"}.mdi-boxing-glove::before{content:"\\F0B65"}.mdi-braille::before{content:"\\F09D0"}.mdi-brain::before{content:"\\F09D1"}.mdi-bread-slice::before{content:"\\F0CEE"}.mdi-bread-slice-outline::before{content:"\\F0CEF"}.mdi-bridge::before{content:"\\F0618"}.mdi-briefcase::before{content:"\\F00D6"}.mdi-briefcase-account::before{content:"\\F0CF0"}.mdi-briefcase-account-outline::before{content:"\\F0CF1"}.mdi-briefcase-check::before{content:"\\F00D7"}.mdi-briefcase-check-outline::before{content:"\\F131E"}.mdi-briefcase-clock::before{content:"\\F10D0"}.mdi-briefcase-clock-outline::before{content:"\\F10D1"}.mdi-briefcase-download::before{content:"\\F00D8"}.mdi-briefcase-download-outline::before{content:"\\F0C3D"}.mdi-briefcase-edit::before{content:"\\F0A98"}.mdi-briefcase-edit-outline::before{content:"\\F0C3E"}.mdi-briefcase-minus::before{content:"\\F0A2A"}.mdi-briefcase-minus-outline::before{content:"\\F0C3F"}.mdi-briefcase-outline::before{content:"\\F0814"}.mdi-briefcase-plus::before{content:"\\F0A2B"}.mdi-briefcase-plus-outline::before{content:"\\F0C40"}.mdi-briefcase-remove::before{content:"\\F0A2C"}.mdi-briefcase-remove-outline::before{content:"\\F0C41"}.mdi-briefcase-search::before{content:"\\F0A2D"}.mdi-briefcase-search-outline::before{content:"\\F0C42"}.mdi-briefcase-upload::before{content:"\\F00D9"}.mdi-briefcase-upload-outline::before{content:"\\F0C43"}.mdi-briefcase-variant::before{content:"\\F1494"}.mdi-briefcase-variant-outline::before{content:"\\F1495"}.mdi-brightness-1::before{content:"\\F00DA"}.mdi-brightness-2::before{content:"\\F00DB"}.mdi-brightness-3::before{content:"\\F00DC"}.mdi-brightness-4::before{content:"\\F00DD"}.mdi-brightness-5::before{content:"\\F00DE"}.mdi-brightness-6::before{content:"\\F00DF"}.mdi-brightness-7::before{content:"\\F00E0"}.mdi-brightness-auto::before{content:"\\F00E1"}.mdi-brightness-percent::before{content:"\\F0CF2"}.mdi-broom::before{content:"\\F00E2"}.mdi-brush::before{content:"\\F00E3"}.mdi-bucket::before{content:"\\F1415"}.mdi-bucket-outline::before{content:"\\F1416"}.mdi-buddhism::before{content:"\\F094B"}.mdi-buffer::before{content:"\\F0619"}.mdi-buffet::before{content:"\\F0578"}.mdi-bug::before{content:"\\F00E4"}.mdi-bug-check::before{content:"\\F0A2E"}.mdi-bug-check-outline::before{content:"\\F0A2F"}.mdi-bug-outline::before{content:"\\F0A30"}.mdi-bugle::before{content:"\\F0DB4"}.mdi-bulldozer::before{content:"\\F0B22"}.mdi-bullet::before{content:"\\F0CF3"}.mdi-bulletin-board::before{content:"\\F00E5"}.mdi-bullhorn::before{content:"\\F00E6"}.mdi-bullhorn-outline::before{content:"\\F0B23"}.mdi-bullseye::before{content:"\\F05DD"}.mdi-bullseye-arrow::before{content:"\\F08C9"}.mdi-bulma::before{content:"\\F12E7"}.mdi-bunk-bed::before{content:"\\F1302"}.mdi-bunk-bed-outline::before{content:"\\F0097"}.mdi-bus::before{content:"\\F00E7"}.mdi-bus-alert::before{content:"\\F0A99"}.mdi-bus-articulated-end::before{content:"\\F079C"}.mdi-bus-articulated-front::before{content:"\\F079D"}.mdi-bus-clock::before{content:"\\F08CA"}.mdi-bus-double-decker::before{content:"\\F079E"}.mdi-bus-marker::before{content:"\\F1212"}.mdi-bus-multiple::before{content:"\\F0F3F"}.mdi-bus-school::before{content:"\\F079F"}.mdi-bus-side::before{content:"\\F07A0"}.mdi-bus-stop::before{content:"\\F1012"}.mdi-bus-stop-covered::before{content:"\\F1013"}.mdi-bus-stop-uncovered::before{content:"\\F1014"}.mdi-cable-data::before{content:"\\F1394"}.mdi-cached::before{content:"\\F00E8"}.mdi-cactus::before{content:"\\F0DB5"}.mdi-cake::before{content:"\\F00E9"}.mdi-cake-layered::before{content:"\\F00EA"}.mdi-cake-variant::before{content:"\\F00EB"}.mdi-calculator::before{content:"\\F00EC"}.mdi-calculator-variant::before{content:"\\F0A9A"}.mdi-calendar::before{content:"\\F00ED"}.mdi-calendar-account::before{content:"\\F0ED7"}.mdi-calendar-account-outline::before{content:"\\F0ED8"}.mdi-calendar-alert::before{content:"\\F0A31"}.mdi-calendar-arrow-left::before{content:"\\F1134"}.mdi-calendar-arrow-right::before{content:"\\F1135"}.mdi-calendar-blank::before{content:"\\F00EE"}.mdi-calendar-blank-multiple::before{content:"\\F1073"}.mdi-calendar-blank-outline::before{content:"\\F0B66"}.mdi-calendar-check::before{content:"\\F00EF"}.mdi-calendar-check-outline::before{content:"\\F0C44"}.mdi-calendar-clock::before{content:"\\F00F0"}.mdi-calendar-edit::before{content:"\\F08A7"}.mdi-calendar-export::before{content:"\\F0B24"}.mdi-calendar-heart::before{content:"\\F09D2"}.mdi-calendar-import::before{content:"\\F0B25"}.mdi-calendar-minus::before{content:"\\F0D5C"}.mdi-calendar-month::before{content:"\\F0E17"}.mdi-calendar-month-outline::before{content:"\\F0E18"}.mdi-calendar-multiple::before{content:"\\F00F1"}.mdi-calendar-multiple-check::before{content:"\\F00F2"}.mdi-calendar-multiselect::before{content:"\\F0A32"}.mdi-calendar-outline::before{content:"\\F0B67"}.mdi-calendar-plus::before{content:"\\F00F3"}.mdi-calendar-question::before{content:"\\F0692"}.mdi-calendar-range::before{content:"\\F0679"}.mdi-calendar-range-outline::before{content:"\\F0B68"}.mdi-calendar-refresh::before{content:"\\F01E1"}.mdi-calendar-refresh-outline::before{content:"\\F0203"}.mdi-calendar-remove::before{content:"\\F00F4"}.mdi-calendar-remove-outline::before{content:"\\F0C45"}.mdi-calendar-search::before{content:"\\F094C"}.mdi-calendar-star::before{content:"\\F09D3"}.mdi-calendar-sync::before{content:"\\F0E8E"}.mdi-calendar-sync-outline::before{content:"\\F0E8F"}.mdi-calendar-text::before{content:"\\F00F5"}.mdi-calendar-text-outline::before{content:"\\F0C46"}.mdi-calendar-today::before{content:"\\F00F6"}.mdi-calendar-week::before{content:"\\F0A33"}.mdi-calendar-week-begin::before{content:"\\F0A34"}.mdi-calendar-weekend::before{content:"\\F0ED9"}.mdi-calendar-weekend-outline::before{content:"\\F0EDA"}.mdi-call-made::before{content:"\\F00F7"}.mdi-call-merge::before{content:"\\F00F8"}.mdi-call-missed::before{content:"\\F00F9"}.mdi-call-received::before{content:"\\F00FA"}.mdi-call-split::before{content:"\\F00FB"}.mdi-camcorder::before{content:"\\F00FC"}.mdi-camcorder-off::before{content:"\\F00FF"}.mdi-camera::before{content:"\\F0100"}.mdi-camera-account::before{content:"\\F08CB"}.mdi-camera-burst::before{content:"\\F0693"}.mdi-camera-control::before{content:"\\F0B69"}.mdi-camera-enhance::before{content:"\\F0101"}.mdi-camera-enhance-outline::before{content:"\\F0B6A"}.mdi-camera-front::before{content:"\\F0102"}.mdi-camera-front-variant::before{content:"\\F0103"}.mdi-camera-gopro::before{content:"\\F07A1"}.mdi-camera-image::before{content:"\\F08CC"}.mdi-camera-iris::before{content:"\\F0104"}.mdi-camera-metering-center::before{content:"\\F07A2"}.mdi-camera-metering-matrix::before{content:"\\F07A3"}.mdi-camera-metering-partial::before{content:"\\F07A4"}.mdi-camera-metering-spot::before{content:"\\F07A5"}.mdi-camera-off::before{content:"\\F05DF"}.mdi-camera-outline::before{content:"\\F0D5D"}.mdi-camera-party-mode::before{content:"\\F0105"}.mdi-camera-plus::before{content:"\\F0EDB"}.mdi-camera-plus-outline::before{content:"\\F0EDC"}.mdi-camera-rear::before{content:"\\F0106"}.mdi-camera-rear-variant::before{content:"\\F0107"}.mdi-camera-retake::before{content:"\\F0E19"}.mdi-camera-retake-outline::before{content:"\\F0E1A"}.mdi-camera-switch::before{content:"\\F0108"}.mdi-camera-switch-outline::before{content:"\\F084A"}.mdi-camera-timer::before{content:"\\F0109"}.mdi-camera-wireless::before{content:"\\F0DB6"}.mdi-camera-wireless-outline::before{content:"\\F0DB7"}.mdi-campfire::before{content:"\\F0EDD"}.mdi-cancel::before{content:"\\F073A"}.mdi-candle::before{content:"\\F05E2"}.mdi-candycane::before{content:"\\F010A"}.mdi-cannabis::before{content:"\\F07A6"}.mdi-caps-lock::before{content:"\\F0A9B"}.mdi-car::before{content:"\\F010B"}.mdi-car-2-plus::before{content:"\\F1015"}.mdi-car-3-plus::before{content:"\\F1016"}.mdi-car-arrow-left::before{content:"\\F13B2"}.mdi-car-arrow-right::before{content:"\\F13B3"}.mdi-car-back::before{content:"\\F0E1B"}.mdi-car-battery::before{content:"\\F010C"}.mdi-car-brake-abs::before{content:"\\F0C47"}.mdi-car-brake-alert::before{content:"\\F0C48"}.mdi-car-brake-hold::before{content:"\\F0D5E"}.mdi-car-brake-parking::before{content:"\\F0D5F"}.mdi-car-brake-retarder::before{content:"\\F1017"}.mdi-car-child-seat::before{content:"\\F0FA3"}.mdi-car-clutch::before{content:"\\F1018"}.mdi-car-cog::before{content:"\\F13CC"}.mdi-car-connected::before{content:"\\F010D"}.mdi-car-convertible::before{content:"\\F07A7"}.mdi-car-coolant-level::before{content:"\\F1019"}.mdi-car-cruise-control::before{content:"\\F0D60"}.mdi-car-defrost-front::before{content:"\\F0D61"}.mdi-car-defrost-rear::before{content:"\\F0D62"}.mdi-car-door::before{content:"\\F0B6B"}.mdi-car-door-lock::before{content:"\\F109D"}.mdi-car-electric::before{content:"\\F0B6C"}.mdi-car-esp::before{content:"\\F0C49"}.mdi-car-estate::before{content:"\\F07A8"}.mdi-car-hatchback::before{content:"\\F07A9"}.mdi-car-info::before{content:"\\F11BE"}.mdi-car-key::before{content:"\\F0B6D"}.mdi-car-light-dimmed::before{content:"\\F0C4A"}.mdi-car-light-fog::before{content:"\\F0C4B"}.mdi-car-light-high::before{content:"\\F0C4C"}.mdi-car-limousine::before{content:"\\F08CD"}.mdi-car-multiple::before{content:"\\F0B6E"}.mdi-car-off::before{content:"\\F0E1C"}.mdi-car-parking-lights::before{content:"\\F0D63"}.mdi-car-pickup::before{content:"\\F07AA"}.mdi-car-seat::before{content:"\\F0FA4"}.mdi-car-seat-cooler::before{content:"\\F0FA5"}.mdi-car-seat-heater::before{content:"\\F0FA6"}.mdi-car-settings::before{content:"\\F13CD"}.mdi-car-shift-pattern::before{content:"\\F0F40"}.mdi-car-side::before{content:"\\F07AB"}.mdi-car-sports::before{content:"\\F07AC"}.mdi-car-tire-alert::before{content:"\\F0C4D"}.mdi-car-traction-control::before{content:"\\F0D64"}.mdi-car-turbocharger::before{content:"\\F101A"}.mdi-car-wash::before{content:"\\F010E"}.mdi-car-windshield::before{content:"\\F101B"}.mdi-car-windshield-outline::before{content:"\\F101C"}.mdi-carabiner::before{content:"\\F14C0"}.mdi-caravan::before{content:"\\F07AD"}.mdi-card::before{content:"\\F0B6F"}.mdi-card-account-details::before{content:"\\F05D2"}.mdi-card-account-details-outline::before{content:"\\F0DAB"}.mdi-card-account-details-star::before{content:"\\F02A3"}.mdi-card-account-details-star-outline::before{content:"\\F06DB"}.mdi-card-account-mail::before{content:"\\F018E"}.mdi-card-account-mail-outline::before{content:"\\F0E98"}.mdi-card-account-phone::before{content:"\\F0E99"}.mdi-card-account-phone-outline::before{content:"\\F0E9A"}.mdi-card-bulleted::before{content:"\\F0B70"}.mdi-card-bulleted-off::before{content:"\\F0B71"}.mdi-card-bulleted-off-outline::before{content:"\\F0B72"}.mdi-card-bulleted-outline::before{content:"\\F0B73"}.mdi-card-bulleted-settings::before{content:"\\F0B74"}.mdi-card-bulleted-settings-outline::before{content:"\\F0B75"}.mdi-card-outline::before{content:"\\F0B76"}.mdi-card-plus::before{content:"\\F11FF"}.mdi-card-plus-outline::before{content:"\\F1200"}.mdi-card-search::before{content:"\\F1074"}.mdi-card-search-outline::before{content:"\\F1075"}.mdi-card-text::before{content:"\\F0B77"}.mdi-card-text-outline::before{content:"\\F0B78"}.mdi-cards::before{content:"\\F0638"}.mdi-cards-club::before{content:"\\F08CE"}.mdi-cards-diamond::before{content:"\\F08CF"}.mdi-cards-diamond-outline::before{content:"\\F101D"}.mdi-cards-heart::before{content:"\\F08D0"}.mdi-cards-outline::before{content:"\\F0639"}.mdi-cards-playing-outline::before{content:"\\F063A"}.mdi-cards-spade::before{content:"\\F08D1"}.mdi-cards-variant::before{content:"\\F06C7"}.mdi-carrot::before{content:"\\F010F"}.mdi-cart::before{content:"\\F0110"}.mdi-cart-arrow-down::before{content:"\\F0D66"}.mdi-cart-arrow-right::before{content:"\\F0C4E"}.mdi-cart-arrow-up::before{content:"\\F0D67"}.mdi-cart-minus::before{content:"\\F0D68"}.mdi-cart-off::before{content:"\\F066B"}.mdi-cart-outline::before{content:"\\F0111"}.mdi-cart-plus::before{content:"\\F0112"}.mdi-cart-remove::before{content:"\\F0D69"}.mdi-case-sensitive-alt::before{content:"\\F0113"}.mdi-cash::before{content:"\\F0114"}.mdi-cash-100::before{content:"\\F0115"}.mdi-cash-marker::before{content:"\\F0DB8"}.mdi-cash-minus::before{content:"\\F1260"}.mdi-cash-multiple::before{content:"\\F0116"}.mdi-cash-plus::before{content:"\\F1261"}.mdi-cash-refund::before{content:"\\F0A9C"}.mdi-cash-register::before{content:"\\F0CF4"}.mdi-cash-remove::before{content:"\\F1262"}.mdi-cash-usd::before{content:"\\F1176"}.mdi-cash-usd-outline::before{content:"\\F0117"}.mdi-cassette::before{content:"\\F09D4"}.mdi-cast::before{content:"\\F0118"}.mdi-cast-audio::before{content:"\\F101E"}.mdi-cast-connected::before{content:"\\F0119"}.mdi-cast-education::before{content:"\\F0E1D"}.mdi-cast-off::before{content:"\\F078A"}.mdi-castle::before{content:"\\F011A"}.mdi-cat::before{content:"\\F011B"}.mdi-cctv::before{content:"\\F07AE"}.mdi-ceiling-light::before{content:"\\F0769"}.mdi-cellphone::before{content:"\\F011C"}.mdi-cellphone-android::before{content:"\\F011D"}.mdi-cellphone-arrow-down::before{content:"\\F09D5"}.mdi-cellphone-basic::before{content:"\\F011E"}.mdi-cellphone-charging::before{content:"\\F1397"}.mdi-cellphone-cog::before{content:"\\F0951"}.mdi-cellphone-dock::before{content:"\\F011F"}.mdi-cellphone-erase::before{content:"\\F094D"}.mdi-cellphone-information::before{content:"\\F0F41"}.mdi-cellphone-iphone::before{content:"\\F0120"}.mdi-cellphone-key::before{content:"\\F094E"}.mdi-cellphone-link::before{content:"\\F0121"}.mdi-cellphone-link-off::before{content:"\\F0122"}.mdi-cellphone-lock::before{content:"\\F094F"}.mdi-cellphone-message::before{content:"\\F08D3"}.mdi-cellphone-message-off::before{content:"\\F10D2"}.mdi-cellphone-nfc::before{content:"\\F0E90"}.mdi-cellphone-nfc-off::before{content:"\\F12D8"}.mdi-cellphone-off::before{content:"\\F0950"}.mdi-cellphone-play::before{content:"\\F101F"}.mdi-cellphone-screenshot::before{content:"\\F0A35"}.mdi-cellphone-settings::before{content:"\\F0123"}.mdi-cellphone-sound::before{content:"\\F0952"}.mdi-cellphone-text::before{content:"\\F08D2"}.mdi-cellphone-wireless::before{content:"\\F0815"}.mdi-celtic-cross::before{content:"\\F0CF5"}.mdi-centos::before{content:"\\F111A"}.mdi-certificate::before{content:"\\F0124"}.mdi-certificate-outline::before{content:"\\F1188"}.mdi-chair-rolling::before{content:"\\F0F48"}.mdi-chair-school::before{content:"\\F0125"}.mdi-charity::before{content:"\\F0C4F"}.mdi-chart-arc::before{content:"\\F0126"}.mdi-chart-areaspline::before{content:"\\F0127"}.mdi-chart-areaspline-variant::before{content:"\\F0E91"}.mdi-chart-bar::before{content:"\\F0128"}.mdi-chart-bar-stacked::before{content:"\\F076A"}.mdi-chart-bell-curve::before{content:"\\F0C50"}.mdi-chart-bell-curve-cumulative::before{content:"\\F0FA7"}.mdi-chart-bubble::before{content:"\\F05E3"}.mdi-chart-donut::before{content:"\\F07AF"}.mdi-chart-donut-variant::before{content:"\\F07B0"}.mdi-chart-gantt::before{content:"\\F066C"}.mdi-chart-histogram::before{content:"\\F0129"}.mdi-chart-line::before{content:"\\F012A"}.mdi-chart-line-stacked::before{content:"\\F076B"}.mdi-chart-line-variant::before{content:"\\F07B1"}.mdi-chart-multiline::before{content:"\\F08D4"}.mdi-chart-multiple::before{content:"\\F1213"}.mdi-chart-pie::before{content:"\\F012B"}.mdi-chart-ppf::before{content:"\\F1380"}.mdi-chart-sankey::before{content:"\\F11DF"}.mdi-chart-sankey-variant::before{content:"\\F11E0"}.mdi-chart-scatter-plot::before{content:"\\F0E92"}.mdi-chart-scatter-plot-hexbin::before{content:"\\F066D"}.mdi-chart-timeline::before{content:"\\F066E"}.mdi-chart-timeline-variant::before{content:"\\F0E93"}.mdi-chart-tree::before{content:"\\F0E94"}.mdi-chat::before{content:"\\F0B79"}.mdi-chat-alert::before{content:"\\F0B7A"}.mdi-chat-alert-outline::before{content:"\\F12C9"}.mdi-chat-minus::before{content:"\\F1410"}.mdi-chat-minus-outline::before{content:"\\F1413"}.mdi-chat-outline::before{content:"\\F0EDE"}.mdi-chat-plus::before{content:"\\F140F"}.mdi-chat-plus-outline::before{content:"\\F1412"}.mdi-chat-processing::before{content:"\\F0B7B"}.mdi-chat-processing-outline::before{content:"\\F12CA"}.mdi-chat-remove::before{content:"\\F1411"}.mdi-chat-remove-outline::before{content:"\\F1414"}.mdi-chat-sleep::before{content:"\\F12D1"}.mdi-chat-sleep-outline::before{content:"\\F12D2"}.mdi-check::before{content:"\\F012C"}.mdi-check-all::before{content:"\\F012D"}.mdi-check-bold::before{content:"\\F0E1E"}.mdi-check-box-multiple-outline::before{content:"\\F0C51"}.mdi-check-box-outline::before{content:"\\F0C52"}.mdi-check-circle::before{content:"\\F05E0"}.mdi-check-circle-outline::before{content:"\\F05E1"}.mdi-check-decagram::before{content:"\\F0791"}.mdi-check-network::before{content:"\\F0C53"}.mdi-check-network-outline::before{content:"\\F0C54"}.mdi-check-outline::before{content:"\\F0855"}.mdi-check-underline::before{content:"\\F0E1F"}.mdi-check-underline-circle::before{content:"\\F0E20"}.mdi-check-underline-circle-outline::before{content:"\\F0E21"}.mdi-checkbook::before{content:"\\F0A9D"}.mdi-checkbox-blank::before{content:"\\F012E"}.mdi-checkbox-blank-circle::before{content:"\\F012F"}.mdi-checkbox-blank-circle-outline::before{content:"\\F0130"}.mdi-checkbox-blank-off::before{content:"\\F12EC"}.mdi-checkbox-blank-off-outline::before{content:"\\F12ED"}.mdi-checkbox-blank-outline::before{content:"\\F0131"}.mdi-checkbox-intermediate::before{content:"\\F0856"}.mdi-checkbox-marked::before{content:"\\F0132"}.mdi-checkbox-marked-circle::before{content:"\\F0133"}.mdi-checkbox-marked-circle-outline::before{content:"\\F0134"}.mdi-checkbox-marked-outline::before{content:"\\F0135"}.mdi-checkbox-multiple-blank::before{content:"\\F0136"}.mdi-checkbox-multiple-blank-circle::before{content:"\\F063B"}.mdi-checkbox-multiple-blank-circle-outline::before{content:"\\F063C"}.mdi-checkbox-multiple-blank-outline::before{content:"\\F0137"}.mdi-checkbox-multiple-marked::before{content:"\\F0138"}.mdi-checkbox-multiple-marked-circle::before{content:"\\F063D"}.mdi-checkbox-multiple-marked-circle-outline::before{content:"\\F063E"}.mdi-checkbox-multiple-marked-outline::before{content:"\\F0139"}.mdi-checkerboard::before{content:"\\F013A"}.mdi-checkerboard-minus::before{content:"\\F1202"}.mdi-checkerboard-plus::before{content:"\\F1201"}.mdi-checkerboard-remove::before{content:"\\F1203"}.mdi-cheese::before{content:"\\F12B9"}.mdi-cheese-off::before{content:"\\F13EE"}.mdi-chef-hat::before{content:"\\F0B7C"}.mdi-chemical-weapon::before{content:"\\F013B"}.mdi-chess-bishop::before{content:"\\F085C"}.mdi-chess-king::before{content:"\\F0857"}.mdi-chess-knight::before{content:"\\F0858"}.mdi-chess-pawn::before{content:"\\F0859"}.mdi-chess-queen::before{content:"\\F085A"}.mdi-chess-rook::before{content:"\\F085B"}.mdi-chevron-double-down::before{content:"\\F013C"}.mdi-chevron-double-left::before{content:"\\F013D"}.mdi-chevron-double-right::before{content:"\\F013E"}.mdi-chevron-double-up::before{content:"\\F013F"}.mdi-chevron-down::before{content:"\\F0140"}.mdi-chevron-down-box::before{content:"\\F09D6"}.mdi-chevron-down-box-outline::before{content:"\\F09D7"}.mdi-chevron-down-circle::before{content:"\\F0B26"}.mdi-chevron-down-circle-outline::before{content:"\\F0B27"}.mdi-chevron-left::before{content:"\\F0141"}.mdi-chevron-left-box::before{content:"\\F09D8"}.mdi-chevron-left-box-outline::before{content:"\\F09D9"}.mdi-chevron-left-circle::before{content:"\\F0B28"}.mdi-chevron-left-circle-outline::before{content:"\\F0B29"}.mdi-chevron-right::before{content:"\\F0142"}.mdi-chevron-right-box::before{content:"\\F09DA"}.mdi-chevron-right-box-outline::before{content:"\\F09DB"}.mdi-chevron-right-circle::before{content:"\\F0B2A"}.mdi-chevron-right-circle-outline::before{content:"\\F0B2B"}.mdi-chevron-triple-down::before{content:"\\F0DB9"}.mdi-chevron-triple-left::before{content:"\\F0DBA"}.mdi-chevron-triple-right::before{content:"\\F0DBB"}.mdi-chevron-triple-up::before{content:"\\F0DBC"}.mdi-chevron-up::before{content:"\\F0143"}.mdi-chevron-up-box::before{content:"\\F09DC"}.mdi-chevron-up-box-outline::before{content:"\\F09DD"}.mdi-chevron-up-circle::before{content:"\\F0B2C"}.mdi-chevron-up-circle-outline::before{content:"\\F0B2D"}.mdi-chili-hot::before{content:"\\F07B2"}.mdi-chili-medium::before{content:"\\F07B3"}.mdi-chili-mild::before{content:"\\F07B4"}.mdi-chili-off::before{content:"\\F1467"}.mdi-chip::before{content:"\\F061A"}.mdi-christianity::before{content:"\\F0953"}.mdi-christianity-outline::before{content:"\\F0CF6"}.mdi-church::before{content:"\\F0144"}.mdi-cigar::before{content:"\\F1189"}.mdi-cigar-off::before{content:"\\F141B"}.mdi-circle::before{content:"\\F0765"}.mdi-circle-double::before{content:"\\F0E95"}.mdi-circle-edit-outline::before{content:"\\F08D5"}.mdi-circle-expand::before{content:"\\F0E96"}.mdi-circle-half::before{content:"\\F1395"}.mdi-circle-half-full::before{content:"\\F1396"}.mdi-circle-medium::before{content:"\\F09DE"}.mdi-circle-multiple::before{content:"\\F0B38"}.mdi-circle-multiple-outline::before{content:"\\F0695"}.mdi-circle-off-outline::before{content:"\\F10D3"}.mdi-circle-outline::before{content:"\\F0766"}.mdi-circle-slice-1::before{content:"\\F0A9E"}.mdi-circle-slice-2::before{content:"\\F0A9F"}.mdi-circle-slice-3::before{content:"\\F0AA0"}.mdi-circle-slice-4::before{content:"\\F0AA1"}.mdi-circle-slice-5::before{content:"\\F0AA2"}.mdi-circle-slice-6::before{content:"\\F0AA3"}.mdi-circle-slice-7::before{content:"\\F0AA4"}.mdi-circle-slice-8::before{content:"\\F0AA5"}.mdi-circle-small::before{content:"\\F09DF"}.mdi-circular-saw::before{content:"\\F0E22"}.mdi-city::before{content:"\\F0146"}.mdi-city-variant::before{content:"\\F0A36"}.mdi-city-variant-outline::before{content:"\\F0A37"}.mdi-clipboard::before{content:"\\F0147"}.mdi-clipboard-account::before{content:"\\F0148"}.mdi-clipboard-account-outline::before{content:"\\F0C55"}.mdi-clipboard-alert::before{content:"\\F0149"}.mdi-clipboard-alert-outline::before{content:"\\F0CF7"}.mdi-clipboard-arrow-down::before{content:"\\F014A"}.mdi-clipboard-arrow-down-outline::before{content:"\\F0C56"}.mdi-clipboard-arrow-left::before{content:"\\F014B"}.mdi-clipboard-arrow-left-outline::before{content:"\\F0CF8"}.mdi-clipboard-arrow-right::before{content:"\\F0CF9"}.mdi-clipboard-arrow-right-outline::before{content:"\\F0CFA"}.mdi-clipboard-arrow-up::before{content:"\\F0C57"}.mdi-clipboard-arrow-up-outline::before{content:"\\F0C58"}.mdi-clipboard-check::before{content:"\\F014E"}.mdi-clipboard-check-multiple::before{content:"\\F1263"}.mdi-clipboard-check-multiple-outline::before{content:"\\F1264"}.mdi-clipboard-check-outline::before{content:"\\F08A8"}.mdi-clipboard-file::before{content:"\\F1265"}.mdi-clipboard-file-outline::before{content:"\\F1266"}.mdi-clipboard-flow::before{content:"\\F06C8"}.mdi-clipboard-flow-outline::before{content:"\\F1117"}.mdi-clipboard-list::before{content:"\\F10D4"}.mdi-clipboard-list-outline::before{content:"\\F10D5"}.mdi-clipboard-multiple::before{content:"\\F1267"}.mdi-clipboard-multiple-outline::before{content:"\\F1268"}.mdi-clipboard-outline::before{content:"\\F014C"}.mdi-clipboard-play::before{content:"\\F0C59"}.mdi-clipboard-play-multiple::before{content:"\\F1269"}.mdi-clipboard-play-multiple-outline::before{content:"\\F126A"}.mdi-clipboard-play-outline::before{content:"\\F0C5A"}.mdi-clipboard-plus::before{content:"\\F0751"}.mdi-clipboard-plus-outline::before{content:"\\F131F"}.mdi-clipboard-pulse::before{content:"\\F085D"}.mdi-clipboard-pulse-outline::before{content:"\\F085E"}.mdi-clipboard-text::before{content:"\\F014D"}.mdi-clipboard-text-multiple::before{content:"\\F126B"}.mdi-clipboard-text-multiple-outline::before{content:"\\F126C"}.mdi-clipboard-text-outline::before{content:"\\F0A38"}.mdi-clipboard-text-play::before{content:"\\F0C5B"}.mdi-clipboard-text-play-outline::before{content:"\\F0C5C"}.mdi-clippy::before{content:"\\F014F"}.mdi-clock::before{content:"\\F0954"}.mdi-clock-alert::before{content:"\\F0955"}.mdi-clock-alert-outline::before{content:"\\F05CE"}.mdi-clock-check::before{content:"\\F0FA8"}.mdi-clock-check-outline::before{content:"\\F0FA9"}.mdi-clock-digital::before{content:"\\F0E97"}.mdi-clock-end::before{content:"\\F0151"}.mdi-clock-fast::before{content:"\\F0152"}.mdi-clock-in::before{content:"\\F0153"}.mdi-clock-out::before{content:"\\F0154"}.mdi-clock-outline::before{content:"\\F0150"}.mdi-clock-start::before{content:"\\F0155"}.mdi-clock-time-eight::before{content:"\\F1446"}.mdi-clock-time-eight-outline::before{content:"\\F1452"}.mdi-clock-time-eleven::before{content:"\\F1449"}.mdi-clock-time-eleven-outline::before{content:"\\F1455"}.mdi-clock-time-five::before{content:"\\F1443"}.mdi-clock-time-five-outline::before{content:"\\F144F"}.mdi-clock-time-four::before{content:"\\F1442"}.mdi-clock-time-four-outline::before{content:"\\F144E"}.mdi-clock-time-nine::before{content:"\\F1447"}.mdi-clock-time-nine-outline::before{content:"\\F1453"}.mdi-clock-time-one::before{content:"\\F143F"}.mdi-clock-time-one-outline::before{content:"\\F144B"}.mdi-clock-time-seven::before{content:"\\F1445"}.mdi-clock-time-seven-outline::before{content:"\\F1451"}.mdi-clock-time-six::before{content:"\\F1444"}.mdi-clock-time-six-outline::before{content:"\\F1450"}.mdi-clock-time-ten::before{content:"\\F1448"}.mdi-clock-time-ten-outline::before{content:"\\F1454"}.mdi-clock-time-three::before{content:"\\F1441"}.mdi-clock-time-three-outline::before{content:"\\F144D"}.mdi-clock-time-twelve::before{content:"\\F144A"}.mdi-clock-time-twelve-outline::before{content:"\\F1456"}.mdi-clock-time-two::before{content:"\\F1440"}.mdi-clock-time-two-outline::before{content:"\\F144C"}.mdi-close::before{content:"\\F0156"}.mdi-close-box::before{content:"\\F0157"}.mdi-close-box-multiple::before{content:"\\F0C5D"}.mdi-close-box-multiple-outline::before{content:"\\F0C5E"}.mdi-close-box-outline::before{content:"\\F0158"}.mdi-close-circle::before{content:"\\F0159"}.mdi-close-circle-multiple::before{content:"\\F062A"}.mdi-close-circle-multiple-outline::before{content:"\\F0883"}.mdi-close-circle-outline::before{content:"\\F015A"}.mdi-close-network::before{content:"\\F015B"}.mdi-close-network-outline::before{content:"\\F0C5F"}.mdi-close-octagon::before{content:"\\F015C"}.mdi-close-octagon-outline::before{content:"\\F015D"}.mdi-close-outline::before{content:"\\F06C9"}.mdi-close-thick::before{content:"\\F1398"}.mdi-closed-caption::before{content:"\\F015E"}.mdi-closed-caption-outline::before{content:"\\F0DBD"}.mdi-cloud::before{content:"\\F015F"}.mdi-cloud-alert::before{content:"\\F09E0"}.mdi-cloud-braces::before{content:"\\F07B5"}.mdi-cloud-check::before{content:"\\F0160"}.mdi-cloud-check-outline::before{content:"\\F12CC"}.mdi-cloud-circle::before{content:"\\F0161"}.mdi-cloud-download::before{content:"\\F0162"}.mdi-cloud-download-outline::before{content:"\\F0B7D"}.mdi-cloud-lock::before{content:"\\F11F1"}.mdi-cloud-lock-outline::before{content:"\\F11F2"}.mdi-cloud-off-outline::before{content:"\\F0164"}.mdi-cloud-outline::before{content:"\\F0163"}.mdi-cloud-print::before{content:"\\F0165"}.mdi-cloud-print-outline::before{content:"\\F0166"}.mdi-cloud-question::before{content:"\\F0A39"}.mdi-cloud-refresh::before{content:"\\F052A"}.mdi-cloud-search::before{content:"\\F0956"}.mdi-cloud-search-outline::before{content:"\\F0957"}.mdi-cloud-sync::before{content:"\\F063F"}.mdi-cloud-sync-outline::before{content:"\\F12D6"}.mdi-cloud-tags::before{content:"\\F07B6"}.mdi-cloud-upload::before{content:"\\F0167"}.mdi-cloud-upload-outline::before{content:"\\F0B7E"}.mdi-clover::before{content:"\\F0816"}.mdi-coach-lamp::before{content:"\\F1020"}.mdi-coat-rack::before{content:"\\F109E"}.mdi-code-array::before{content:"\\F0168"}.mdi-code-braces::before{content:"\\F0169"}.mdi-code-braces-box::before{content:"\\F10D6"}.mdi-code-brackets::before{content:"\\F016A"}.mdi-code-equal::before{content:"\\F016B"}.mdi-code-greater-than::before{content:"\\F016C"}.mdi-code-greater-than-or-equal::before{content:"\\F016D"}.mdi-code-json::before{content:"\\F0626"}.mdi-code-less-than::before{content:"\\F016E"}.mdi-code-less-than-or-equal::before{content:"\\F016F"}.mdi-code-not-equal::before{content:"\\F0170"}.mdi-code-not-equal-variant::before{content:"\\F0171"}.mdi-code-parentheses::before{content:"\\F0172"}.mdi-code-parentheses-box::before{content:"\\F10D7"}.mdi-code-string::before{content:"\\F0173"}.mdi-code-tags::before{content:"\\F0174"}.mdi-code-tags-check::before{content:"\\F0694"}.mdi-codepen::before{content:"\\F0175"}.mdi-coffee::before{content:"\\F0176"}.mdi-coffee-maker::before{content:"\\F109F"}.mdi-coffee-off::before{content:"\\F0FAA"}.mdi-coffee-off-outline::before{content:"\\F0FAB"}.mdi-coffee-outline::before{content:"\\F06CA"}.mdi-coffee-to-go::before{content:"\\F0177"}.mdi-coffee-to-go-outline::before{content:"\\F130E"}.mdi-coffin::before{content:"\\F0B7F"}.mdi-cog::before{content:"\\F0493"}.mdi-cog-box::before{content:"\\F0494"}.mdi-cog-clockwise::before{content:"\\F11DD"}.mdi-cog-counterclockwise::before{content:"\\F11DE"}.mdi-cog-off::before{content:"\\F13CE"}.mdi-cog-off-outline::before{content:"\\F13CF"}.mdi-cog-outline::before{content:"\\F08BB"}.mdi-cog-refresh::before{content:"\\F145E"}.mdi-cog-refresh-outline::before{content:"\\F145F"}.mdi-cog-sync::before{content:"\\F1460"}.mdi-cog-sync-outline::before{content:"\\F1461"}.mdi-cog-transfer::before{content:"\\F105B"}.mdi-cog-transfer-outline::before{content:"\\F105C"}.mdi-cogs::before{content:"\\F08D6"}.mdi-collage::before{content:"\\F0640"}.mdi-collapse-all::before{content:"\\F0AA6"}.mdi-collapse-all-outline::before{content:"\\F0AA7"}.mdi-color-helper::before{content:"\\F0179"}.mdi-comma::before{content:"\\F0E23"}.mdi-comma-box::before{content:"\\F0E2B"}.mdi-comma-box-outline::before{content:"\\F0E24"}.mdi-comma-circle::before{content:"\\F0E25"}.mdi-comma-circle-outline::before{content:"\\F0E26"}.mdi-comment::before{content:"\\F017A"}.mdi-comment-account::before{content:"\\F017B"}.mdi-comment-account-outline::before{content:"\\F017C"}.mdi-comment-alert::before{content:"\\F017D"}.mdi-comment-alert-outline::before{content:"\\F017E"}.mdi-comment-arrow-left::before{content:"\\F09E1"}.mdi-comment-arrow-left-outline::before{content:"\\F09E2"}.mdi-comment-arrow-right::before{content:"\\F09E3"}.mdi-comment-arrow-right-outline::before{content:"\\F09E4"}.mdi-comment-check::before{content:"\\F017F"}.mdi-comment-check-outline::before{content:"\\F0180"}.mdi-comment-edit::before{content:"\\F11BF"}.mdi-comment-edit-outline::before{content:"\\F12C4"}.mdi-comment-eye::before{content:"\\F0A3A"}.mdi-comment-eye-outline::before{content:"\\F0A3B"}.mdi-comment-multiple::before{content:"\\F085F"}.mdi-comment-multiple-outline::before{content:"\\F0181"}.mdi-comment-outline::before{content:"\\F0182"}.mdi-comment-plus::before{content:"\\F09E5"}.mdi-comment-plus-outline::before{content:"\\F0183"}.mdi-comment-processing::before{content:"\\F0184"}.mdi-comment-processing-outline::before{content:"\\F0185"}.mdi-comment-question::before{content:"\\F0817"}.mdi-comment-question-outline::before{content:"\\F0186"}.mdi-comment-quote::before{content:"\\F1021"}.mdi-comment-quote-outline::before{content:"\\F1022"}.mdi-comment-remove::before{content:"\\F05DE"}.mdi-comment-remove-outline::before{content:"\\F0187"}.mdi-comment-search::before{content:"\\F0A3C"}.mdi-comment-search-outline::before{content:"\\F0A3D"}.mdi-comment-text::before{content:"\\F0188"}.mdi-comment-text-multiple::before{content:"\\F0860"}.mdi-comment-text-multiple-outline::before{content:"\\F0861"}.mdi-comment-text-outline::before{content:"\\F0189"}.mdi-compare::before{content:"\\F018A"}.mdi-compare-horizontal::before{content:"\\F1492"}.mdi-compare-vertical::before{content:"\\F1493"}.mdi-compass::before{content:"\\F018B"}.mdi-compass-off::before{content:"\\F0B80"}.mdi-compass-off-outline::before{content:"\\F0B81"}.mdi-compass-outline::before{content:"\\F018C"}.mdi-compass-rose::before{content:"\\F1382"}.mdi-concourse-ci::before{content:"\\F10A0"}.mdi-console::before{content:"\\F018D"}.mdi-console-line::before{content:"\\F07B7"}.mdi-console-network::before{content:"\\F08A9"}.mdi-console-network-outline::before{content:"\\F0C60"}.mdi-consolidate::before{content:"\\F10D8"}.mdi-contactless-payment::before{content:"\\F0D6A"}.mdi-contactless-payment-circle::before{content:"\\F0321"}.mdi-contactless-payment-circle-outline::before{content:"\\F0408"}.mdi-contacts::before{content:"\\F06CB"}.mdi-contacts-outline::before{content:"\\F05B8"}.mdi-contain::before{content:"\\F0A3E"}.mdi-contain-end::before{content:"\\F0A3F"}.mdi-contain-start::before{content:"\\F0A40"}.mdi-content-copy::before{content:"\\F018F"}.mdi-content-cut::before{content:"\\F0190"}.mdi-content-duplicate::before{content:"\\F0191"}.mdi-content-paste::before{content:"\\F0192"}.mdi-content-save::before{content:"\\F0193"}.mdi-content-save-alert::before{content:"\\F0F42"}.mdi-content-save-alert-outline::before{content:"\\F0F43"}.mdi-content-save-all::before{content:"\\F0194"}.mdi-content-save-all-outline::before{content:"\\F0F44"}.mdi-content-save-cog::before{content:"\\F145B"}.mdi-content-save-cog-outline::before{content:"\\F145C"}.mdi-content-save-edit::before{content:"\\F0CFB"}.mdi-content-save-edit-outline::before{content:"\\F0CFC"}.mdi-content-save-move::before{content:"\\F0E27"}.mdi-content-save-move-outline::before{content:"\\F0E28"}.mdi-content-save-outline::before{content:"\\F0818"}.mdi-content-save-settings::before{content:"\\F061B"}.mdi-content-save-settings-outline::before{content:"\\F0B2E"}.mdi-contrast::before{content:"\\F0195"}.mdi-contrast-box::before{content:"\\F0196"}.mdi-contrast-circle::before{content:"\\F0197"}.mdi-controller-classic::before{content:"\\F0B82"}.mdi-controller-classic-outline::before{content:"\\F0B83"}.mdi-cookie::before{content:"\\F0198"}.mdi-coolant-temperature::before{content:"\\F03C8"}.mdi-copyright::before{content:"\\F05E6"}.mdi-cordova::before{content:"\\F0958"}.mdi-corn::before{content:"\\F07B8"}.mdi-corn-off::before{content:"\\F13EF"}.mdi-cosine-wave::before{content:"\\F1479"}.mdi-counter::before{content:"\\F0199"}.mdi-cow::before{content:"\\F019A"}.mdi-cpu-32-bit::before{content:"\\F0EDF"}.mdi-cpu-64-bit::before{content:"\\F0EE0"}.mdi-crane::before{content:"\\F0862"}.mdi-creation::before{content:"\\F0674"}.mdi-creative-commons::before{content:"\\F0D6B"}.mdi-credit-card::before{content:"\\F0FEF"}.mdi-credit-card-check::before{content:"\\F13D0"}.mdi-credit-card-check-outline::before{content:"\\F13D1"}.mdi-credit-card-clock::before{content:"\\F0EE1"}.mdi-credit-card-clock-outline::before{content:"\\F0EE2"}.mdi-credit-card-marker::before{content:"\\F06A8"}.mdi-credit-card-marker-outline::before{content:"\\F0DBE"}.mdi-credit-card-minus::before{content:"\\F0FAC"}.mdi-credit-card-minus-outline::before{content:"\\F0FAD"}.mdi-credit-card-multiple::before{content:"\\F0FF0"}.mdi-credit-card-multiple-outline::before{content:"\\F019C"}.mdi-credit-card-off::before{content:"\\F0FF1"}.mdi-credit-card-off-outline::before{content:"\\F05E4"}.mdi-credit-card-outline::before{content:"\\F019B"}.mdi-credit-card-plus::before{content:"\\F0FF2"}.mdi-credit-card-plus-outline::before{content:"\\F0676"}.mdi-credit-card-refund::before{content:"\\F0FF3"}.mdi-credit-card-refund-outline::before{content:"\\F0AA8"}.mdi-credit-card-remove::before{content:"\\F0FAE"}.mdi-credit-card-remove-outline::before{content:"\\F0FAF"}.mdi-credit-card-scan::before{content:"\\F0FF4"}.mdi-credit-card-scan-outline::before{content:"\\F019D"}.mdi-credit-card-settings::before{content:"\\F0FF5"}.mdi-credit-card-settings-outline::before{content:"\\F08D7"}.mdi-credit-card-wireless::before{content:"\\F0802"}.mdi-credit-card-wireless-off::before{content:"\\F057A"}.mdi-credit-card-wireless-off-outline::before{content:"\\F057B"}.mdi-credit-card-wireless-outline::before{content:"\\F0D6C"}.mdi-cricket::before{content:"\\F0D6D"}.mdi-crop::before{content:"\\F019E"}.mdi-crop-free::before{content:"\\F019F"}.mdi-crop-landscape::before{content:"\\F01A0"}.mdi-crop-portrait::before{content:"\\F01A1"}.mdi-crop-rotate::before{content:"\\F0696"}.mdi-crop-square::before{content:"\\F01A2"}.mdi-crosshairs::before{content:"\\F01A3"}.mdi-crosshairs-gps::before{content:"\\F01A4"}.mdi-crosshairs-off::before{content:"\\F0F45"}.mdi-crosshairs-question::before{content:"\\F1136"}.mdi-crown::before{content:"\\F01A5"}.mdi-crown-outline::before{content:"\\F11D0"}.mdi-cryengine::before{content:"\\F0959"}.mdi-crystal-ball::before{content:"\\F0B2F"}.mdi-cube::before{content:"\\F01A6"}.mdi-cube-off::before{content:"\\F141C"}.mdi-cube-off-outline::before{content:"\\F141D"}.mdi-cube-outline::before{content:"\\F01A7"}.mdi-cube-scan::before{content:"\\F0B84"}.mdi-cube-send::before{content:"\\F01A8"}.mdi-cube-unfolded::before{content:"\\F01A9"}.mdi-cup::before{content:"\\F01AA"}.mdi-cup-off::before{content:"\\F05E5"}.mdi-cup-off-outline::before{content:"\\F137D"}.mdi-cup-outline::before{content:"\\F130F"}.mdi-cup-water::before{content:"\\F01AB"}.mdi-cupboard::before{content:"\\F0F46"}.mdi-cupboard-outline::before{content:"\\F0F47"}.mdi-cupcake::before{content:"\\F095A"}.mdi-curling::before{content:"\\F0863"}.mdi-currency-bdt::before{content:"\\F0864"}.mdi-currency-brl::before{content:"\\F0B85"}.mdi-currency-btc::before{content:"\\F01AC"}.mdi-currency-cny::before{content:"\\F07BA"}.mdi-currency-eth::before{content:"\\F07BB"}.mdi-currency-eur::before{content:"\\F01AD"}.mdi-currency-eur-off::before{content:"\\F1315"}.mdi-currency-gbp::before{content:"\\F01AE"}.mdi-currency-ils::before{content:"\\F0C61"}.mdi-currency-inr::before{content:"\\F01AF"}.mdi-currency-jpy::before{content:"\\F07BC"}.mdi-currency-krw::before{content:"\\F07BD"}.mdi-currency-kzt::before{content:"\\F0865"}.mdi-currency-ngn::before{content:"\\F01B0"}.mdi-currency-php::before{content:"\\F09E6"}.mdi-currency-rial::before{content:"\\F0E9C"}.mdi-currency-rub::before{content:"\\F01B1"}.mdi-currency-sign::before{content:"\\F07BE"}.mdi-currency-try::before{content:"\\F01B2"}.mdi-currency-twd::before{content:"\\F07BF"}.mdi-currency-usd::before{content:"\\F01C1"}.mdi-currency-usd-circle::before{content:"\\F116B"}.mdi-currency-usd-circle-outline::before{content:"\\F0178"}.mdi-currency-usd-off::before{content:"\\F067A"}.mdi-current-ac::before{content:"\\F1480"}.mdi-current-dc::before{content:"\\F095C"}.mdi-cursor-default::before{content:"\\F01C0"}.mdi-cursor-default-click::before{content:"\\F0CFD"}.mdi-cursor-default-click-outline::before{content:"\\F0CFE"}.mdi-cursor-default-gesture::before{content:"\\F1127"}.mdi-cursor-default-gesture-outline::before{content:"\\F1128"}.mdi-cursor-default-outline::before{content:"\\F01BF"}.mdi-cursor-move::before{content:"\\F01BE"}.mdi-cursor-pointer::before{content:"\\F01BD"}.mdi-cursor-text::before{content:"\\F05E7"}.mdi-database::before{content:"\\F01BC"}.mdi-database-check::before{content:"\\F0AA9"}.mdi-database-edit::before{content:"\\F0B86"}.mdi-database-export::before{content:"\\F095E"}.mdi-database-import::before{content:"\\F095D"}.mdi-database-lock::before{content:"\\F0AAA"}.mdi-database-marker::before{content:"\\F12F6"}.mdi-database-minus::before{content:"\\F01BB"}.mdi-database-plus::before{content:"\\F01BA"}.mdi-database-refresh::before{content:"\\F05C2"}.mdi-database-remove::before{content:"\\F0D00"}.mdi-database-search::before{content:"\\F0866"}.mdi-database-settings::before{content:"\\F0D01"}.mdi-database-sync::before{content:"\\F0CFF"}.mdi-death-star::before{content:"\\F08D8"}.mdi-death-star-variant::before{content:"\\F08D9"}.mdi-deathly-hallows::before{content:"\\F0B87"}.mdi-debian::before{content:"\\F08DA"}.mdi-debug-step-into::before{content:"\\F01B9"}.mdi-debug-step-out::before{content:"\\F01B8"}.mdi-debug-step-over::before{content:"\\F01B7"}.mdi-decagram::before{content:"\\F076C"}.mdi-decagram-outline::before{content:"\\F076D"}.mdi-decimal::before{content:"\\F10A1"}.mdi-decimal-comma::before{content:"\\F10A2"}.mdi-decimal-comma-decrease::before{content:"\\F10A3"}.mdi-decimal-comma-increase::before{content:"\\F10A4"}.mdi-decimal-decrease::before{content:"\\F01B6"}.mdi-decimal-increase::before{content:"\\F01B5"}.mdi-delete::before{content:"\\F01B4"}.mdi-delete-alert::before{content:"\\F10A5"}.mdi-delete-alert-outline::before{content:"\\F10A6"}.mdi-delete-circle::before{content:"\\F0683"}.mdi-delete-circle-outline::before{content:"\\F0B88"}.mdi-delete-empty::before{content:"\\F06CC"}.mdi-delete-empty-outline::before{content:"\\F0E9D"}.mdi-delete-forever::before{content:"\\F05E8"}.mdi-delete-forever-outline::before{content:"\\F0B89"}.mdi-delete-off::before{content:"\\F10A7"}.mdi-delete-off-outline::before{content:"\\F10A8"}.mdi-delete-outline::before{content:"\\F09E7"}.mdi-delete-restore::before{content:"\\F0819"}.mdi-delete-sweep::before{content:"\\F05E9"}.mdi-delete-sweep-outline::before{content:"\\F0C62"}.mdi-delete-variant::before{content:"\\F01B3"}.mdi-delta::before{content:"\\F01C2"}.mdi-desk::before{content:"\\F1239"}.mdi-desk-lamp::before{content:"\\F095F"}.mdi-deskphone::before{content:"\\F01C3"}.mdi-desktop-classic::before{content:"\\F07C0"}.mdi-desktop-mac::before{content:"\\F01C4"}.mdi-desktop-mac-dashboard::before{content:"\\F09E8"}.mdi-desktop-tower::before{content:"\\F01C5"}.mdi-desktop-tower-monitor::before{content:"\\F0AAB"}.mdi-details::before{content:"\\F01C6"}.mdi-dev-to::before{content:"\\F0D6E"}.mdi-developer-board::before{content:"\\F0697"}.mdi-deviantart::before{content:"\\F01C7"}.mdi-devices::before{content:"\\F0FB0"}.mdi-diabetes::before{content:"\\F1126"}.mdi-dialpad::before{content:"\\F061C"}.mdi-diameter::before{content:"\\F0C63"}.mdi-diameter-outline::before{content:"\\F0C64"}.mdi-diameter-variant::before{content:"\\F0C65"}.mdi-diamond::before{content:"\\F0B8A"}.mdi-diamond-outline::before{content:"\\F0B8B"}.mdi-diamond-stone::before{content:"\\F01C8"}.mdi-dice-1::before{content:"\\F01CA"}.mdi-dice-1-outline::before{content:"\\F114A"}.mdi-dice-2::before{content:"\\F01CB"}.mdi-dice-2-outline::before{content:"\\F114B"}.mdi-dice-3::before{content:"\\F01CC"}.mdi-dice-3-outline::before{content:"\\F114C"}.mdi-dice-4::before{content:"\\F01CD"}.mdi-dice-4-outline::before{content:"\\F114D"}.mdi-dice-5::before{content:"\\F01CE"}.mdi-dice-5-outline::before{content:"\\F114E"}.mdi-dice-6::before{content:"\\F01CF"}.mdi-dice-6-outline::before{content:"\\F114F"}.mdi-dice-d10::before{content:"\\F1153"}.mdi-dice-d10-outline::before{content:"\\F076F"}.mdi-dice-d12::before{content:"\\F1154"}.mdi-dice-d12-outline::before{content:"\\F0867"}.mdi-dice-d20::before{content:"\\F1155"}.mdi-dice-d20-outline::before{content:"\\F05EA"}.mdi-dice-d4::before{content:"\\F1150"}.mdi-dice-d4-outline::before{content:"\\F05EB"}.mdi-dice-d6::before{content:"\\F1151"}.mdi-dice-d6-outline::before{content:"\\F05ED"}.mdi-dice-d8::before{content:"\\F1152"}.mdi-dice-d8-outline::before{content:"\\F05EC"}.mdi-dice-multiple::before{content:"\\F076E"}.mdi-dice-multiple-outline::before{content:"\\F1156"}.mdi-digital-ocean::before{content:"\\F1237"}.mdi-dip-switch::before{content:"\\F07C1"}.mdi-directions::before{content:"\\F01D0"}.mdi-directions-fork::before{content:"\\F0641"}.mdi-disc::before{content:"\\F05EE"}.mdi-disc-alert::before{content:"\\F01D1"}.mdi-disc-player::before{content:"\\F0960"}.mdi-discord::before{content:"\\F066F"}.mdi-dishwasher::before{content:"\\F0AAC"}.mdi-dishwasher-alert::before{content:"\\F11B8"}.mdi-dishwasher-off::before{content:"\\F11B9"}.mdi-disqus::before{content:"\\F01D2"}.mdi-distribute-horizontal-center::before{content:"\\F11C9"}.mdi-distribute-horizontal-left::before{content:"\\F11C8"}.mdi-distribute-horizontal-right::before{content:"\\F11CA"}.mdi-distribute-vertical-bottom::before{content:"\\F11CB"}.mdi-distribute-vertical-center::before{content:"\\F11CC"}.mdi-distribute-vertical-top::before{content:"\\F11CD"}.mdi-diving-flippers::before{content:"\\F0DBF"}.mdi-diving-helmet::before{content:"\\F0DC0"}.mdi-diving-scuba::before{content:"\\F0DC1"}.mdi-diving-scuba-flag::before{content:"\\F0DC2"}.mdi-diving-scuba-tank::before{content:"\\F0DC3"}.mdi-diving-scuba-tank-multiple::before{content:"\\F0DC4"}.mdi-diving-snorkel::before{content:"\\F0DC5"}.mdi-division::before{content:"\\F01D4"}.mdi-division-box::before{content:"\\F01D5"}.mdi-dlna::before{content:"\\F0A41"}.mdi-dna::before{content:"\\F0684"}.mdi-dns::before{content:"\\F01D6"}.mdi-dns-outline::before{content:"\\F0B8C"}.mdi-do-not-disturb::before{content:"\\F0698"}.mdi-do-not-disturb-off::before{content:"\\F0699"}.mdi-dock-bottom::before{content:"\\F10A9"}.mdi-dock-left::before{content:"\\F10AA"}.mdi-dock-right::before{content:"\\F10AB"}.mdi-dock-window::before{content:"\\F10AC"}.mdi-docker::before{content:"\\F0868"}.mdi-doctor::before{content:"\\F0A42"}.mdi-dog::before{content:"\\F0A43"}.mdi-dog-service::before{content:"\\F0AAD"}.mdi-dog-side::before{content:"\\F0A44"}.mdi-dolby::before{content:"\\F06B3"}.mdi-dolly::before{content:"\\F0E9E"}.mdi-domain::before{content:"\\F01D7"}.mdi-domain-off::before{content:"\\F0D6F"}.mdi-domain-plus::before{content:"\\F10AD"}.mdi-domain-remove::before{content:"\\F10AE"}.mdi-dome-light::before{content:"\\F141E"}.mdi-domino-mask::before{content:"\\F1023"}.mdi-donkey::before{content:"\\F07C2"}.mdi-door::before{content:"\\F081A"}.mdi-door-closed::before{content:"\\F081B"}.mdi-door-closed-lock::before{content:"\\F10AF"}.mdi-door-open::before{content:"\\F081C"}.mdi-doorbell::before{content:"\\F12E6"}.mdi-doorbell-video::before{content:"\\F0869"}.mdi-dot-net::before{content:"\\F0AAE"}.mdi-dots-horizontal::before{content:"\\F01D8"}.mdi-dots-horizontal-circle::before{content:"\\F07C3"}.mdi-dots-horizontal-circle-outline::before{content:"\\F0B8D"}.mdi-dots-vertical::before{content:"\\F01D9"}.mdi-dots-vertical-circle::before{content:"\\F07C4"}.mdi-dots-vertical-circle-outline::before{content:"\\F0B8E"}.mdi-douban::before{content:"\\F069A"}.mdi-download::before{content:"\\F01DA"}.mdi-download-box::before{content:"\\F1462"}.mdi-download-box-outline::before{content:"\\F1463"}.mdi-download-circle::before{content:"\\F1464"}.mdi-download-circle-outline::before{content:"\\F1465"}.mdi-download-lock::before{content:"\\F1320"}.mdi-download-lock-outline::before{content:"\\F1321"}.mdi-download-multiple::before{content:"\\F09E9"}.mdi-download-network::before{content:"\\F06F4"}.mdi-download-network-outline::before{content:"\\F0C66"}.mdi-download-off::before{content:"\\F10B0"}.mdi-download-off-outline::before{content:"\\F10B1"}.mdi-download-outline::before{content:"\\F0B8F"}.mdi-drag::before{content:"\\F01DB"}.mdi-drag-horizontal::before{content:"\\F01DC"}.mdi-drag-horizontal-variant::before{content:"\\F12F0"}.mdi-drag-variant::before{content:"\\F0B90"}.mdi-drag-vertical::before{content:"\\F01DD"}.mdi-drag-vertical-variant::before{content:"\\F12F1"}.mdi-drama-masks::before{content:"\\F0D02"}.mdi-draw::before{content:"\\F0F49"}.mdi-drawing::before{content:"\\F01DE"}.mdi-drawing-box::before{content:"\\F01DF"}.mdi-dresser::before{content:"\\F0F4A"}.mdi-dresser-outline::before{content:"\\F0F4B"}.mdi-drone::before{content:"\\F01E2"}.mdi-dropbox::before{content:"\\F01E3"}.mdi-drupal::before{content:"\\F01E4"}.mdi-duck::before{content:"\\F01E5"}.mdi-dumbbell::before{content:"\\F01E6"}.mdi-dump-truck::before{content:"\\F0C67"}.mdi-ear-hearing::before{content:"\\F07C5"}.mdi-ear-hearing-off::before{content:"\\F0A45"}.mdi-earth::before{content:"\\F01E7"}.mdi-earth-arrow-right::before{content:"\\F1311"}.mdi-earth-box::before{content:"\\F06CD"}.mdi-earth-box-minus::before{content:"\\F1407"}.mdi-earth-box-off::before{content:"\\F06CE"}.mdi-earth-box-plus::before{content:"\\F1406"}.mdi-earth-box-remove::before{content:"\\F1408"}.mdi-earth-minus::before{content:"\\F1404"}.mdi-earth-off::before{content:"\\F01E8"}.mdi-earth-plus::before{content:"\\F1403"}.mdi-earth-remove::before{content:"\\F1405"}.mdi-egg::before{content:"\\F0AAF"}.mdi-egg-easter::before{content:"\\F0AB0"}.mdi-egg-off::before{content:"\\F13F0"}.mdi-egg-off-outline::before{content:"\\F13F1"}.mdi-egg-outline::before{content:"\\F13F2"}.mdi-eight-track::before{content:"\\F09EA"}.mdi-eject::before{content:"\\F01EA"}.mdi-eject-outline::before{content:"\\F0B91"}.mdi-electric-switch::before{content:"\\F0E9F"}.mdi-electric-switch-closed::before{content:"\\F10D9"}.mdi-electron-framework::before{content:"\\F1024"}.mdi-elephant::before{content:"\\F07C6"}.mdi-elevation-decline::before{content:"\\F01EB"}.mdi-elevation-rise::before{content:"\\F01EC"}.mdi-elevator::before{content:"\\F01ED"}.mdi-elevator-down::before{content:"\\F12C2"}.mdi-elevator-passenger::before{content:"\\F1381"}.mdi-elevator-up::before{content:"\\F12C1"}.mdi-ellipse::before{content:"\\F0EA0"}.mdi-ellipse-outline::before{content:"\\F0EA1"}.mdi-email::before{content:"\\F01EE"}.mdi-email-alert::before{content:"\\F06CF"}.mdi-email-alert-outline::before{content:"\\F0D42"}.mdi-email-box::before{content:"\\F0D03"}.mdi-email-check::before{content:"\\F0AB1"}.mdi-email-check-outline::before{content:"\\F0AB2"}.mdi-email-edit::before{content:"\\F0EE3"}.mdi-email-edit-outline::before{content:"\\F0EE4"}.mdi-email-lock::before{content:"\\F01F1"}.mdi-email-mark-as-unread::before{content:"\\F0B92"}.mdi-email-minus::before{content:"\\F0EE5"}.mdi-email-minus-outline::before{content:"\\F0EE6"}.mdi-email-multiple::before{content:"\\F0EE7"}.mdi-email-multiple-outline::before{content:"\\F0EE8"}.mdi-email-newsletter::before{content:"\\F0FB1"}.mdi-email-off::before{content:"\\F13E3"}.mdi-email-off-outline::before{content:"\\F13E4"}.mdi-email-open::before{content:"\\F01EF"}.mdi-email-open-multiple::before{content:"\\F0EE9"}.mdi-email-open-multiple-outline::before{content:"\\F0EEA"}.mdi-email-open-outline::before{content:"\\F05EF"}.mdi-email-outline::before{content:"\\F01F0"}.mdi-email-plus::before{content:"\\F09EB"}.mdi-email-plus-outline::before{content:"\\F09EC"}.mdi-email-receive::before{content:"\\F10DA"}.mdi-email-receive-outline::before{content:"\\F10DB"}.mdi-email-search::before{content:"\\F0961"}.mdi-email-search-outline::before{content:"\\F0962"}.mdi-email-send::before{content:"\\F10DC"}.mdi-email-send-outline::before{content:"\\F10DD"}.mdi-email-sync::before{content:"\\F12C7"}.mdi-email-sync-outline::before{content:"\\F12C8"}.mdi-email-variant::before{content:"\\F05F0"}.mdi-ember::before{content:"\\F0B30"}.mdi-emby::before{content:"\\F06B4"}.mdi-emoticon::before{content:"\\F0C68"}.mdi-emoticon-angry::before{content:"\\F0C69"}.mdi-emoticon-angry-outline::before{content:"\\F0C6A"}.mdi-emoticon-confused::before{content:"\\F10DE"}.mdi-emoticon-confused-outline::before{content:"\\F10DF"}.mdi-emoticon-cool::before{content:"\\F0C6B"}.mdi-emoticon-cool-outline::before{content:"\\F01F3"}.mdi-emoticon-cry::before{content:"\\F0C6C"}.mdi-emoticon-cry-outline::before{content:"\\F0C6D"}.mdi-emoticon-dead::before{content:"\\F0C6E"}.mdi-emoticon-dead-outline::before{content:"\\F069B"}.mdi-emoticon-devil::before{content:"\\F0C6F"}.mdi-emoticon-devil-outline::before{content:"\\F01F4"}.mdi-emoticon-excited::before{content:"\\F0C70"}.mdi-emoticon-excited-outline::before{content:"\\F069C"}.mdi-emoticon-frown::before{content:"\\F0F4C"}.mdi-emoticon-frown-outline::before{content:"\\F0F4D"}.mdi-emoticon-happy::before{content:"\\F0C71"}.mdi-emoticon-happy-outline::before{content:"\\F01F5"}.mdi-emoticon-kiss::before{content:"\\F0C72"}.mdi-emoticon-kiss-outline::before{content:"\\F0C73"}.mdi-emoticon-lol::before{content:"\\F1214"}.mdi-emoticon-lol-outline::before{content:"\\F1215"}.mdi-emoticon-neutral::before{content:"\\F0C74"}.mdi-emoticon-neutral-outline::before{content:"\\F01F6"}.mdi-emoticon-outline::before{content:"\\F01F2"}.mdi-emoticon-poop::before{content:"\\F01F7"}.mdi-emoticon-poop-outline::before{content:"\\F0C75"}.mdi-emoticon-sad::before{content:"\\F0C76"}.mdi-emoticon-sad-outline::before{content:"\\F01F8"}.mdi-emoticon-tongue::before{content:"\\F01F9"}.mdi-emoticon-tongue-outline::before{content:"\\F0C77"}.mdi-emoticon-wink::before{content:"\\F0C78"}.mdi-emoticon-wink-outline::before{content:"\\F0C79"}.mdi-engine::before{content:"\\F01FA"}.mdi-engine-off::before{content:"\\F0A46"}.mdi-engine-off-outline::before{content:"\\F0A47"}.mdi-engine-outline::before{content:"\\F01FB"}.mdi-epsilon::before{content:"\\F10E0"}.mdi-equal::before{content:"\\F01FC"}.mdi-equal-box::before{content:"\\F01FD"}.mdi-equalizer::before{content:"\\F0EA2"}.mdi-equalizer-outline::before{content:"\\F0EA3"}.mdi-eraser::before{content:"\\F01FE"}.mdi-eraser-variant::before{content:"\\F0642"}.mdi-escalator::before{content:"\\F01FF"}.mdi-escalator-box::before{content:"\\F1399"}.mdi-escalator-down::before{content:"\\F12C0"}.mdi-escalator-up::before{content:"\\F12BF"}.mdi-eslint::before{content:"\\F0C7A"}.mdi-et::before{content:"\\F0AB3"}.mdi-ethereum::before{content:"\\F086A"}.mdi-ethernet::before{content:"\\F0200"}.mdi-ethernet-cable::before{content:"\\F0201"}.mdi-ethernet-cable-off::before{content:"\\F0202"}.mdi-ev-station::before{content:"\\F05F1"}.mdi-evernote::before{content:"\\F0204"}.mdi-excavator::before{content:"\\F1025"}.mdi-exclamation::before{content:"\\F0205"}.mdi-exclamation-thick::before{content:"\\F1238"}.mdi-exit-run::before{content:"\\F0A48"}.mdi-exit-to-app::before{content:"\\F0206"}.mdi-expand-all::before{content:"\\F0AB4"}.mdi-expand-all-outline::before{content:"\\F0AB5"}.mdi-expansion-card::before{content:"\\F08AE"}.mdi-expansion-card-variant::before{content:"\\F0FB2"}.mdi-exponent::before{content:"\\F0963"}.mdi-exponent-box::before{content:"\\F0964"}.mdi-export::before{content:"\\F0207"}.mdi-export-variant::before{content:"\\F0B93"}.mdi-eye::before{content:"\\F0208"}.mdi-eye-check::before{content:"\\F0D04"}.mdi-eye-check-outline::before{content:"\\F0D05"}.mdi-eye-circle::before{content:"\\F0B94"}.mdi-eye-circle-outline::before{content:"\\F0B95"}.mdi-eye-minus::before{content:"\\F1026"}.mdi-eye-minus-outline::before{content:"\\F1027"}.mdi-eye-off::before{content:"\\F0209"}.mdi-eye-off-outline::before{content:"\\F06D1"}.mdi-eye-outline::before{content:"\\F06D0"}.mdi-eye-plus::before{content:"\\F086B"}.mdi-eye-plus-outline::before{content:"\\F086C"}.mdi-eye-settings::before{content:"\\F086D"}.mdi-eye-settings-outline::before{content:"\\F086E"}.mdi-eyedropper::before{content:"\\F020A"}.mdi-eyedropper-minus::before{content:"\\F13DD"}.mdi-eyedropper-off::before{content:"\\F13DF"}.mdi-eyedropper-plus::before{content:"\\F13DC"}.mdi-eyedropper-remove::before{content:"\\F13DE"}.mdi-eyedropper-variant::before{content:"\\F020B"}.mdi-face::before{content:"\\F0643"}.mdi-face-agent::before{content:"\\F0D70"}.mdi-face-outline::before{content:"\\F0B96"}.mdi-face-profile::before{content:"\\F0644"}.mdi-face-profile-woman::before{content:"\\F1076"}.mdi-face-recognition::before{content:"\\F0C7B"}.mdi-face-woman::before{content:"\\F1077"}.mdi-face-woman-outline::before{content:"\\F1078"}.mdi-facebook::before{content:"\\F020C"}.mdi-facebook-messenger::before{content:"\\F020E"}.mdi-facebook-workplace::before{content:"\\F0B31"}.mdi-factory::before{content:"\\F020F"}.mdi-fan::before{content:"\\F0210"}.mdi-fan-alert::before{content:"\\F146C"}.mdi-fan-chevron-down::before{content:"\\F146D"}.mdi-fan-chevron-up::before{content:"\\F146E"}.mdi-fan-minus::before{content:"\\F1470"}.mdi-fan-off::before{content:"\\F081D"}.mdi-fan-plus::before{content:"\\F146F"}.mdi-fan-remove::before{content:"\\F1471"}.mdi-fan-speed-1::before{content:"\\F1472"}.mdi-fan-speed-2::before{content:"\\F1473"}.mdi-fan-speed-3::before{content:"\\F1474"}.mdi-fast-forward::before{content:"\\F0211"}.mdi-fast-forward-10::before{content:"\\F0D71"}.mdi-fast-forward-30::before{content:"\\F0D06"}.mdi-fast-forward-5::before{content:"\\F11F8"}.mdi-fast-forward-outline::before{content:"\\F06D2"}.mdi-fax::before{content:"\\F0212"}.mdi-feather::before{content:"\\F06D3"}.mdi-feature-search::before{content:"\\F0A49"}.mdi-feature-search-outline::before{content:"\\F0A4A"}.mdi-fedora::before{content:"\\F08DB"}.mdi-fencing::before{content:"\\F14C1"}.mdi-ferris-wheel::before{content:"\\F0EA4"}.mdi-ferry::before{content:"\\F0213"}.mdi-file::before{content:"\\F0214"}.mdi-file-account::before{content:"\\F073B"}.mdi-file-account-outline::before{content:"\\F1028"}.mdi-file-alert::before{content:"\\F0A4B"}.mdi-file-alert-outline::before{content:"\\F0A4C"}.mdi-file-cabinet::before{content:"\\F0AB6"}.mdi-file-cad::before{content:"\\F0EEB"}.mdi-file-cad-box::before{content:"\\F0EEC"}.mdi-file-cancel::before{content:"\\F0DC6"}.mdi-file-cancel-outline::before{content:"\\F0DC7"}.mdi-file-certificate::before{content:"\\F1186"}.mdi-file-certificate-outline::before{content:"\\F1187"}.mdi-file-chart::before{content:"\\F0215"}.mdi-file-chart-outline::before{content:"\\F1029"}.mdi-file-check::before{content:"\\F0216"}.mdi-file-check-outline::before{content:"\\F0E29"}.mdi-file-clock::before{content:"\\F12E1"}.mdi-file-clock-outline::before{content:"\\F12E2"}.mdi-file-cloud::before{content:"\\F0217"}.mdi-file-cloud-outline::before{content:"\\F102A"}.mdi-file-code::before{content:"\\F022E"}.mdi-file-code-outline::before{content:"\\F102B"}.mdi-file-cog::before{content:"\\F107B"}.mdi-file-cog-outline::before{content:"\\F107C"}.mdi-file-compare::before{content:"\\F08AA"}.mdi-file-delimited::before{content:"\\F0218"}.mdi-file-delimited-outline::before{content:"\\F0EA5"}.mdi-file-document::before{content:"\\F0219"}.mdi-file-document-edit::before{content:"\\F0DC8"}.mdi-file-document-edit-outline::before{content:"\\F0DC9"}.mdi-file-document-outline::before{content:"\\F09EE"}.mdi-file-download::before{content:"\\F0965"}.mdi-file-download-outline::before{content:"\\F0966"}.mdi-file-edit::before{content:"\\F11E7"}.mdi-file-edit-outline::before{content:"\\F11E8"}.mdi-file-excel::before{content:"\\F021B"}.mdi-file-excel-box::before{content:"\\F021C"}.mdi-file-excel-box-outline::before{content:"\\F102C"}.mdi-file-excel-outline::before{content:"\\F102D"}.mdi-file-export::before{content:"\\F021D"}.mdi-file-export-outline::before{content:"\\F102E"}.mdi-file-eye::before{content:"\\F0DCA"}.mdi-file-eye-outline::before{content:"\\F0DCB"}.mdi-file-find::before{content:"\\F021E"}.mdi-file-find-outline::before{content:"\\F0B97"}.mdi-file-hidden::before{content:"\\F0613"}.mdi-file-image::before{content:"\\F021F"}.mdi-file-image-outline::before{content:"\\F0EB0"}.mdi-file-import::before{content:"\\F0220"}.mdi-file-import-outline::before{content:"\\F102F"}.mdi-file-key::before{content:"\\F1184"}.mdi-file-key-outline::before{content:"\\F1185"}.mdi-file-link::before{content:"\\F1177"}.mdi-file-link-outline::before{content:"\\F1178"}.mdi-file-lock::before{content:"\\F0221"}.mdi-file-lock-outline::before{content:"\\F1030"}.mdi-file-move::before{content:"\\F0AB9"}.mdi-file-move-outline::before{content:"\\F1031"}.mdi-file-multiple::before{content:"\\F0222"}.mdi-file-multiple-outline::before{content:"\\F1032"}.mdi-file-music::before{content:"\\F0223"}.mdi-file-music-outline::before{content:"\\F0E2A"}.mdi-file-outline::before{content:"\\F0224"}.mdi-file-pdf::before{content:"\\F0225"}.mdi-file-pdf-box::before{content:"\\F0226"}.mdi-file-pdf-box-outline::before{content:"\\F0FB3"}.mdi-file-pdf-outline::before{content:"\\F0E2D"}.mdi-file-percent::before{content:"\\F081E"}.mdi-file-percent-outline::before{content:"\\F1033"}.mdi-file-phone::before{content:"\\F1179"}.mdi-file-phone-outline::before{content:"\\F117A"}.mdi-file-plus::before{content:"\\F0752"}.mdi-file-plus-outline::before{content:"\\F0EED"}.mdi-file-powerpoint::before{content:"\\F0227"}.mdi-file-powerpoint-box::before{content:"\\F0228"}.mdi-file-powerpoint-box-outline::before{content:"\\F1034"}.mdi-file-powerpoint-outline::before{content:"\\F1035"}.mdi-file-presentation-box::before{content:"\\F0229"}.mdi-file-question::before{content:"\\F086F"}.mdi-file-question-outline::before{content:"\\F1036"}.mdi-file-refresh::before{content:"\\F0918"}.mdi-file-refresh-outline::before{content:"\\F0541"}.mdi-file-remove::before{content:"\\F0B98"}.mdi-file-remove-outline::before{content:"\\F1037"}.mdi-file-replace::before{content:"\\F0B32"}.mdi-file-replace-outline::before{content:"\\F0B33"}.mdi-file-restore::before{content:"\\F0670"}.mdi-file-restore-outline::before{content:"\\F1038"}.mdi-file-search::before{content:"\\F0C7C"}.mdi-file-search-outline::before{content:"\\F0C7D"}.mdi-file-send::before{content:"\\F022A"}.mdi-file-send-outline::before{content:"\\F1039"}.mdi-file-settings::before{content:"\\F1079"}.mdi-file-settings-outline::before{content:"\\F107A"}.mdi-file-star::before{content:"\\F103A"}.mdi-file-star-outline::before{content:"\\F103B"}.mdi-file-swap::before{content:"\\F0FB4"}.mdi-file-swap-outline::before{content:"\\F0FB5"}.mdi-file-sync::before{content:"\\F1216"}.mdi-file-sync-outline::before{content:"\\F1217"}.mdi-file-table::before{content:"\\F0C7E"}.mdi-file-table-box::before{content:"\\F10E1"}.mdi-file-table-box-multiple::before{content:"\\F10E2"}.mdi-file-table-box-multiple-outline::before{content:"\\F10E3"}.mdi-file-table-box-outline::before{content:"\\F10E4"}.mdi-file-table-outline::before{content:"\\F0C7F"}.mdi-file-tree::before{content:"\\F0645"}.mdi-file-tree-outline::before{content:"\\F13D2"}.mdi-file-undo::before{content:"\\F08DC"}.mdi-file-undo-outline::before{content:"\\F103C"}.mdi-file-upload::before{content:"\\F0A4D"}.mdi-file-upload-outline::before{content:"\\F0A4E"}.mdi-file-video::before{content:"\\F022B"}.mdi-file-video-outline::before{content:"\\F0E2C"}.mdi-file-word::before{content:"\\F022C"}.mdi-file-word-box::before{content:"\\F022D"}.mdi-file-word-box-outline::before{content:"\\F103D"}.mdi-file-word-outline::before{content:"\\F103E"}.mdi-film::before{content:"\\F022F"}.mdi-filmstrip::before{content:"\\F0230"}.mdi-filmstrip-box::before{content:"\\F0332"}.mdi-filmstrip-box-multiple::before{content:"\\F0D18"}.mdi-filmstrip-off::before{content:"\\F0231"}.mdi-filter::before{content:"\\F0232"}.mdi-filter-menu::before{content:"\\F10E5"}.mdi-filter-menu-outline::before{content:"\\F10E6"}.mdi-filter-minus::before{content:"\\F0EEE"}.mdi-filter-minus-outline::before{content:"\\F0EEF"}.mdi-filter-outline::before{content:"\\F0233"}.mdi-filter-plus::before{content:"\\F0EF0"}.mdi-filter-plus-outline::before{content:"\\F0EF1"}.mdi-filter-remove::before{content:"\\F0234"}.mdi-filter-remove-outline::before{content:"\\F0235"}.mdi-filter-variant::before{content:"\\F0236"}.mdi-filter-variant-minus::before{content:"\\F1112"}.mdi-filter-variant-plus::before{content:"\\F1113"}.mdi-filter-variant-remove::before{content:"\\F103F"}.mdi-finance::before{content:"\\F081F"}.mdi-find-replace::before{content:"\\F06D4"}.mdi-fingerprint::before{content:"\\F0237"}.mdi-fingerprint-off::before{content:"\\F0EB1"}.mdi-fire::before{content:"\\F0238"}.mdi-fire-extinguisher::before{content:"\\F0EF2"}.mdi-fire-hydrant::before{content:"\\F1137"}.mdi-fire-hydrant-alert::before{content:"\\F1138"}.mdi-fire-hydrant-off::before{content:"\\F1139"}.mdi-fire-truck::before{content:"\\F08AB"}.mdi-firebase::before{content:"\\F0967"}.mdi-firefox::before{content:"\\F0239"}.mdi-fireplace::before{content:"\\F0E2E"}.mdi-fireplace-off::before{content:"\\F0E2F"}.mdi-firework::before{content:"\\F0E30"}.mdi-fish::before{content:"\\F023A"}.mdi-fish-off::before{content:"\\F13F3"}.mdi-fishbowl::before{content:"\\F0EF3"}.mdi-fishbowl-outline::before{content:"\\F0EF4"}.mdi-fit-to-page::before{content:"\\F0EF5"}.mdi-fit-to-page-outline::before{content:"\\F0EF6"}.mdi-flag::before{content:"\\F023B"}.mdi-flag-checkered::before{content:"\\F023C"}.mdi-flag-minus::before{content:"\\F0B99"}.mdi-flag-minus-outline::before{content:"\\F10B2"}.mdi-flag-outline::before{content:"\\F023D"}.mdi-flag-plus::before{content:"\\F0B9A"}.mdi-flag-plus-outline::before{content:"\\F10B3"}.mdi-flag-remove::before{content:"\\F0B9B"}.mdi-flag-remove-outline::before{content:"\\F10B4"}.mdi-flag-triangle::before{content:"\\F023F"}.mdi-flag-variant::before{content:"\\F0240"}.mdi-flag-variant-outline::before{content:"\\F023E"}.mdi-flare::before{content:"\\F0D72"}.mdi-flash::before{content:"\\F0241"}.mdi-flash-alert::before{content:"\\F0EF7"}.mdi-flash-alert-outline::before{content:"\\F0EF8"}.mdi-flash-auto::before{content:"\\F0242"}.mdi-flash-circle::before{content:"\\F0820"}.mdi-flash-off::before{content:"\\F0243"}.mdi-flash-outline::before{content:"\\F06D5"}.mdi-flash-red-eye::before{content:"\\F067B"}.mdi-flashlight::before{content:"\\F0244"}.mdi-flashlight-off::before{content:"\\F0245"}.mdi-flask::before{content:"\\F0093"}.mdi-flask-empty::before{content:"\\F0094"}.mdi-flask-empty-minus::before{content:"\\F123A"}.mdi-flask-empty-minus-outline::before{content:"\\F123B"}.mdi-flask-empty-off::before{content:"\\F13F4"}.mdi-flask-empty-off-outline::before{content:"\\F13F5"}.mdi-flask-empty-outline::before{content:"\\F0095"}.mdi-flask-empty-plus::before{content:"\\F123C"}.mdi-flask-empty-plus-outline::before{content:"\\F123D"}.mdi-flask-empty-remove::before{content:"\\F123E"}.mdi-flask-empty-remove-outline::before{content:"\\F123F"}.mdi-flask-minus::before{content:"\\F1240"}.mdi-flask-minus-outline::before{content:"\\F1241"}.mdi-flask-off::before{content:"\\F13F6"}.mdi-flask-off-outline::before{content:"\\F13F7"}.mdi-flask-outline::before{content:"\\F0096"}.mdi-flask-plus::before{content:"\\F1242"}.mdi-flask-plus-outline::before{content:"\\F1243"}.mdi-flask-remove::before{content:"\\F1244"}.mdi-flask-remove-outline::before{content:"\\F1245"}.mdi-flask-round-bottom::before{content:"\\F124B"}.mdi-flask-round-bottom-empty::before{content:"\\F124C"}.mdi-flask-round-bottom-empty-outline::before{content:"\\F124D"}.mdi-flask-round-bottom-outline::before{content:"\\F124E"}.mdi-fleur-de-lis::before{content:"\\F1303"}.mdi-flip-horizontal::before{content:"\\F10E7"}.mdi-flip-to-back::before{content:"\\F0247"}.mdi-flip-to-front::before{content:"\\F0248"}.mdi-flip-vertical::before{content:"\\F10E8"}.mdi-floor-lamp::before{content:"\\F08DD"}.mdi-floor-lamp-dual::before{content:"\\F1040"}.mdi-floor-lamp-variant::before{content:"\\F1041"}.mdi-floor-plan::before{content:"\\F0821"}.mdi-floppy::before{content:"\\F0249"}.mdi-floppy-variant::before{content:"\\F09EF"}.mdi-flower::before{content:"\\F024A"}.mdi-flower-outline::before{content:"\\F09F0"}.mdi-flower-poppy::before{content:"\\F0D08"}.mdi-flower-tulip::before{content:"\\F09F1"}.mdi-flower-tulip-outline::before{content:"\\F09F2"}.mdi-focus-auto::before{content:"\\F0F4E"}.mdi-focus-field::before{content:"\\F0F4F"}.mdi-focus-field-horizontal::before{content:"\\F0F50"}.mdi-focus-field-vertical::before{content:"\\F0F51"}.mdi-folder::before{content:"\\F024B"}.mdi-folder-account::before{content:"\\F024C"}.mdi-folder-account-outline::before{content:"\\F0B9C"}.mdi-folder-alert::before{content:"\\F0DCC"}.mdi-folder-alert-outline::before{content:"\\F0DCD"}.mdi-folder-clock::before{content:"\\F0ABA"}.mdi-folder-clock-outline::before{content:"\\F0ABB"}.mdi-folder-cog::before{content:"\\F107F"}.mdi-folder-cog-outline::before{content:"\\F1080"}.mdi-folder-download::before{content:"\\F024D"}.mdi-folder-download-outline::before{content:"\\F10E9"}.mdi-folder-edit::before{content:"\\F08DE"}.mdi-folder-edit-outline::before{content:"\\F0DCE"}.mdi-folder-google-drive::before{content:"\\F024E"}.mdi-folder-heart::before{content:"\\F10EA"}.mdi-folder-heart-outline::before{content:"\\F10EB"}.mdi-folder-home::before{content:"\\F10B5"}.mdi-folder-home-outline::before{content:"\\F10B6"}.mdi-folder-image::before{content:"\\F024F"}.mdi-folder-information::before{content:"\\F10B7"}.mdi-folder-information-outline::before{content:"\\F10B8"}.mdi-folder-key::before{content:"\\F08AC"}.mdi-folder-key-network::before{content:"\\F08AD"}.mdi-folder-key-network-outline::before{content:"\\F0C80"}.mdi-folder-key-outline::before{content:"\\F10EC"}.mdi-folder-lock::before{content:"\\F0250"}.mdi-folder-lock-open::before{content:"\\F0251"}.mdi-folder-marker::before{content:"\\F126D"}.mdi-folder-marker-outline::before{content:"\\F126E"}.mdi-folder-move::before{content:"\\F0252"}.mdi-folder-move-outline::before{content:"\\F1246"}.mdi-folder-multiple::before{content:"\\F0253"}.mdi-folder-multiple-image::before{content:"\\F0254"}.mdi-folder-multiple-outline::before{content:"\\F0255"}.mdi-folder-multiple-plus::before{content:"\\F147E"}.mdi-folder-multiple-plus-outline::before{content:"\\F147F"}.mdi-folder-music::before{content:"\\F1359"}.mdi-folder-music-outline::before{content:"\\F135A"}.mdi-folder-network::before{content:"\\F0870"}.mdi-folder-network-outline::before{content:"\\F0C81"}.mdi-folder-open::before{content:"\\F0770"}.mdi-folder-open-outline::before{content:"\\F0DCF"}.mdi-folder-outline::before{content:"\\F0256"}.mdi-folder-plus::before{content:"\\F0257"}.mdi-folder-plus-outline::before{content:"\\F0B9D"}.mdi-folder-pound::before{content:"\\F0D09"}.mdi-folder-pound-outline::before{content:"\\F0D0A"}.mdi-folder-refresh::before{content:"\\F0749"}.mdi-folder-refresh-outline::before{content:"\\F0542"}.mdi-folder-remove::before{content:"\\F0258"}.mdi-folder-remove-outline::before{content:"\\F0B9E"}.mdi-folder-search::before{content:"\\F0968"}.mdi-folder-search-outline::before{content:"\\F0969"}.mdi-folder-settings::before{content:"\\F107D"}.mdi-folder-settings-outline::before{content:"\\F107E"}.mdi-folder-star::before{content:"\\F069D"}.mdi-folder-star-multiple::before{content:"\\F13D3"}.mdi-folder-star-multiple-outline::before{content:"\\F13D4"}.mdi-folder-star-outline::before{content:"\\F0B9F"}.mdi-folder-swap::before{content:"\\F0FB6"}.mdi-folder-swap-outline::before{content:"\\F0FB7"}.mdi-folder-sync::before{content:"\\F0D0B"}.mdi-folder-sync-outline::before{content:"\\F0D0C"}.mdi-folder-table::before{content:"\\F12E3"}.mdi-folder-table-outline::before{content:"\\F12E4"}.mdi-folder-text::before{content:"\\F0C82"}.mdi-folder-text-outline::before{content:"\\F0C83"}.mdi-folder-upload::before{content:"\\F0259"}.mdi-folder-upload-outline::before{content:"\\F10ED"}.mdi-folder-zip::before{content:"\\F06EB"}.mdi-folder-zip-outline::before{content:"\\F07B9"}.mdi-font-awesome::before{content:"\\F003A"}.mdi-food::before{content:"\\F025A"}.mdi-food-apple::before{content:"\\F025B"}.mdi-food-apple-outline::before{content:"\\F0C84"}.mdi-food-croissant::before{content:"\\F07C8"}.mdi-food-drumstick::before{content:"\\F141F"}.mdi-food-drumstick-off::before{content:"\\F1468"}.mdi-food-drumstick-off-outline::before{content:"\\F1469"}.mdi-food-drumstick-outline::before{content:"\\F1420"}.mdi-food-fork-drink::before{content:"\\F05F2"}.mdi-food-off::before{content:"\\F05F3"}.mdi-food-steak::before{content:"\\F146A"}.mdi-food-steak-off::before{content:"\\F146B"}.mdi-food-variant::before{content:"\\F025C"}.mdi-food-variant-off::before{content:"\\F13E5"}.mdi-foot-print::before{content:"\\F0F52"}.mdi-football::before{content:"\\F025D"}.mdi-football-australian::before{content:"\\F025E"}.mdi-football-helmet::before{content:"\\F025F"}.mdi-forklift::before{content:"\\F07C9"}.mdi-form-dropdown::before{content:"\\F1400"}.mdi-form-select::before{content:"\\F1401"}.mdi-form-textarea::before{content:"\\F1095"}.mdi-form-textbox::before{content:"\\F060E"}.mdi-form-textbox-lock::before{content:"\\F135D"}.mdi-form-textbox-password::before{content:"\\F07F5"}.mdi-format-align-bottom::before{content:"\\F0753"}.mdi-format-align-center::before{content:"\\F0260"}.mdi-format-align-justify::before{content:"\\F0261"}.mdi-format-align-left::before{content:"\\F0262"}.mdi-format-align-middle::before{content:"\\F0754"}.mdi-format-align-right::before{content:"\\F0263"}.mdi-format-align-top::before{content:"\\F0755"}.mdi-format-annotation-minus::before{content:"\\F0ABC"}.mdi-format-annotation-plus::before{content:"\\F0646"}.mdi-format-bold::before{content:"\\F0264"}.mdi-format-clear::before{content:"\\F0265"}.mdi-format-color-fill::before{content:"\\F0266"}.mdi-format-color-highlight::before{content:"\\F0E31"}.mdi-format-color-marker-cancel::before{content:"\\F1313"}.mdi-format-color-text::before{content:"\\F069E"}.mdi-format-columns::before{content:"\\F08DF"}.mdi-format-float-center::before{content:"\\F0267"}.mdi-format-float-left::before{content:"\\F0268"}.mdi-format-float-none::before{content:"\\F0269"}.mdi-format-float-right::before{content:"\\F026A"}.mdi-format-font::before{content:"\\F06D6"}.mdi-format-font-size-decrease::before{content:"\\F09F3"}.mdi-format-font-size-increase::before{content:"\\F09F4"}.mdi-format-header-1::before{content:"\\F026B"}.mdi-format-header-2::before{content:"\\F026C"}.mdi-format-header-3::before{content:"\\F026D"}.mdi-format-header-4::before{content:"\\F026E"}.mdi-format-header-5::before{content:"\\F026F"}.mdi-format-header-6::before{content:"\\F0270"}.mdi-format-header-decrease::before{content:"\\F0271"}.mdi-format-header-equal::before{content:"\\F0272"}.mdi-format-header-increase::before{content:"\\F0273"}.mdi-format-header-pound::before{content:"\\F0274"}.mdi-format-horizontal-align-center::before{content:"\\F061E"}.mdi-format-horizontal-align-left::before{content:"\\F061F"}.mdi-format-horizontal-align-right::before{content:"\\F0620"}.mdi-format-indent-decrease::before{content:"\\F0275"}.mdi-format-indent-increase::before{content:"\\F0276"}.mdi-format-italic::before{content:"\\F0277"}.mdi-format-letter-case::before{content:"\\F0B34"}.mdi-format-letter-case-lower::before{content:"\\F0B35"}.mdi-format-letter-case-upper::before{content:"\\F0B36"}.mdi-format-letter-ends-with::before{content:"\\F0FB8"}.mdi-format-letter-matches::before{content:"\\F0FB9"}.mdi-format-letter-starts-with::before{content:"\\F0FBA"}.mdi-format-line-spacing::before{content:"\\F0278"}.mdi-format-line-style::before{content:"\\F05C8"}.mdi-format-line-weight::before{content:"\\F05C9"}.mdi-format-list-bulleted::before{content:"\\F0279"}.mdi-format-list-bulleted-square::before{content:"\\F0DD0"}.mdi-format-list-bulleted-triangle::before{content:"\\F0EB2"}.mdi-format-list-bulleted-type::before{content:"\\F027A"}.mdi-format-list-checkbox::before{content:"\\F096A"}.mdi-format-list-checks::before{content:"\\F0756"}.mdi-format-list-numbered::before{content:"\\F027B"}.mdi-format-list-numbered-rtl::before{content:"\\F0D0D"}.mdi-format-list-text::before{content:"\\F126F"}.mdi-format-overline::before{content:"\\F0EB3"}.mdi-format-page-break::before{content:"\\F06D7"}.mdi-format-paint::before{content:"\\F027C"}.mdi-format-paragraph::before{content:"\\F027D"}.mdi-format-pilcrow::before{content:"\\F06D8"}.mdi-format-quote-close::before{content:"\\F027E"}.mdi-format-quote-close-outline::before{content:"\\F11A8"}.mdi-format-quote-open::before{content:"\\F0757"}.mdi-format-quote-open-outline::before{content:"\\F11A7"}.mdi-format-rotate-90::before{content:"\\F06AA"}.mdi-format-section::before{content:"\\F069F"}.mdi-format-size::before{content:"\\F027F"}.mdi-format-strikethrough::before{content:"\\F0280"}.mdi-format-strikethrough-variant::before{content:"\\F0281"}.mdi-format-subscript::before{content:"\\F0282"}.mdi-format-superscript::before{content:"\\F0283"}.mdi-format-text::before{content:"\\F0284"}.mdi-format-text-rotation-angle-down::before{content:"\\F0FBB"}.mdi-format-text-rotation-angle-up::before{content:"\\F0FBC"}.mdi-format-text-rotation-down::before{content:"\\F0D73"}.mdi-format-text-rotation-down-vertical::before{content:"\\F0FBD"}.mdi-format-text-rotation-none::before{content:"\\F0D74"}.mdi-format-text-rotation-up::before{content:"\\F0FBE"}.mdi-format-text-rotation-vertical::before{content:"\\F0FBF"}.mdi-format-text-variant::before{content:"\\F0E32"}.mdi-format-text-wrapping-clip::before{content:"\\F0D0E"}.mdi-format-text-wrapping-overflow::before{content:"\\F0D0F"}.mdi-format-text-wrapping-wrap::before{content:"\\F0D10"}.mdi-format-textbox::before{content:"\\F0D11"}.mdi-format-textdirection-l-to-r::before{content:"\\F0285"}.mdi-format-textdirection-r-to-l::before{content:"\\F0286"}.mdi-format-title::before{content:"\\F05F4"}.mdi-format-underline::before{content:"\\F0287"}.mdi-format-vertical-align-bottom::before{content:"\\F0621"}.mdi-format-vertical-align-center::before{content:"\\F0622"}.mdi-format-vertical-align-top::before{content:"\\F0623"}.mdi-format-wrap-inline::before{content:"\\F0288"}.mdi-format-wrap-square::before{content:"\\F0289"}.mdi-format-wrap-tight::before{content:"\\F028A"}.mdi-format-wrap-top-bottom::before{content:"\\F028B"}.mdi-forum::before{content:"\\F028C"}.mdi-forum-outline::before{content:"\\F0822"}.mdi-forward::before{content:"\\F028D"}.mdi-forwardburger::before{content:"\\F0D75"}.mdi-fountain::before{content:"\\F096B"}.mdi-fountain-pen::before{content:"\\F0D12"}.mdi-fountain-pen-tip::before{content:"\\F0D13"}.mdi-freebsd::before{content:"\\F08E0"}.mdi-frequently-asked-questions::before{content:"\\F0EB4"}.mdi-fridge::before{content:"\\F0290"}.mdi-fridge-alert::before{content:"\\F11B1"}.mdi-fridge-alert-outline::before{content:"\\F11B2"}.mdi-fridge-bottom::before{content:"\\F0292"}.mdi-fridge-off::before{content:"\\F11AF"}.mdi-fridge-off-outline::before{content:"\\F11B0"}.mdi-fridge-outline::before{content:"\\F028F"}.mdi-fridge-top::before{content:"\\F0291"}.mdi-fruit-cherries::before{content:"\\F1042"}.mdi-fruit-cherries-off::before{content:"\\F13F8"}.mdi-fruit-citrus::before{content:"\\F1043"}.mdi-fruit-citrus-off::before{content:"\\F13F9"}.mdi-fruit-grapes::before{content:"\\F1044"}.mdi-fruit-grapes-outline::before{content:"\\F1045"}.mdi-fruit-pineapple::before{content:"\\F1046"}.mdi-fruit-watermelon::before{content:"\\F1047"}.mdi-fuel::before{content:"\\F07CA"}.mdi-fullscreen::before{content:"\\F0293"}.mdi-fullscreen-exit::before{content:"\\F0294"}.mdi-function::before{content:"\\F0295"}.mdi-function-variant::before{content:"\\F0871"}.mdi-furigana-horizontal::before{content:"\\F1081"}.mdi-furigana-vertical::before{content:"\\F1082"}.mdi-fuse::before{content:"\\F0C85"}.mdi-fuse-alert::before{content:"\\F142D"}.mdi-fuse-blade::before{content:"\\F0C86"}.mdi-fuse-off::before{content:"\\F142C"}.mdi-gamepad::before{content:"\\F0296"}.mdi-gamepad-circle::before{content:"\\F0E33"}.mdi-gamepad-circle-down::before{content:"\\F0E34"}.mdi-gamepad-circle-left::before{content:"\\F0E35"}.mdi-gamepad-circle-outline::before{content:"\\F0E36"}.mdi-gamepad-circle-right::before{content:"\\F0E37"}.mdi-gamepad-circle-up::before{content:"\\F0E38"}.mdi-gamepad-down::before{content:"\\F0E39"}.mdi-gamepad-left::before{content:"\\F0E3A"}.mdi-gamepad-right::before{content:"\\F0E3B"}.mdi-gamepad-round::before{content:"\\F0E3C"}.mdi-gamepad-round-down::before{content:"\\F0E3D"}.mdi-gamepad-round-left::before{content:"\\F0E3E"}.mdi-gamepad-round-outline::before{content:"\\F0E3F"}.mdi-gamepad-round-right::before{content:"\\F0E40"}.mdi-gamepad-round-up::before{content:"\\F0E41"}.mdi-gamepad-square::before{content:"\\F0EB5"}.mdi-gamepad-square-outline::before{content:"\\F0EB6"}.mdi-gamepad-up::before{content:"\\F0E42"}.mdi-gamepad-variant::before{content:"\\F0297"}.mdi-gamepad-variant-outline::before{content:"\\F0EB7"}.mdi-gamma::before{content:"\\F10EE"}.mdi-gantry-crane::before{content:"\\F0DD1"}.mdi-garage::before{content:"\\F06D9"}.mdi-garage-alert::before{content:"\\F0872"}.mdi-garage-alert-variant::before{content:"\\F12D5"}.mdi-garage-open::before{content:"\\F06DA"}.mdi-garage-open-variant::before{content:"\\F12D4"}.mdi-garage-variant::before{content:"\\F12D3"}.mdi-gas-cylinder::before{content:"\\F0647"}.mdi-gas-station::before{content:"\\F0298"}.mdi-gas-station-off::before{content:"\\F1409"}.mdi-gas-station-off-outline::before{content:"\\F140A"}.mdi-gas-station-outline::before{content:"\\F0EB8"}.mdi-gate::before{content:"\\F0299"}.mdi-gate-and::before{content:"\\F08E1"}.mdi-gate-arrow-right::before{content:"\\F1169"}.mdi-gate-nand::before{content:"\\F08E2"}.mdi-gate-nor::before{content:"\\F08E3"}.mdi-gate-not::before{content:"\\F08E4"}.mdi-gate-open::before{content:"\\F116A"}.mdi-gate-or::before{content:"\\F08E5"}.mdi-gate-xnor::before{content:"\\F08E6"}.mdi-gate-xor::before{content:"\\F08E7"}.mdi-gatsby::before{content:"\\F0E43"}.mdi-gauge::before{content:"\\F029A"}.mdi-gauge-empty::before{content:"\\F0873"}.mdi-gauge-full::before{content:"\\F0874"}.mdi-gauge-low::before{content:"\\F0875"}.mdi-gavel::before{content:"\\F029B"}.mdi-gender-female::before{content:"\\F029C"}.mdi-gender-male::before{content:"\\F029D"}.mdi-gender-male-female::before{content:"\\F029E"}.mdi-gender-male-female-variant::before{content:"\\F113F"}.mdi-gender-non-binary::before{content:"\\F1140"}.mdi-gender-transgender::before{content:"\\F029F"}.mdi-gentoo::before{content:"\\F08E8"}.mdi-gesture::before{content:"\\F07CB"}.mdi-gesture-double-tap::before{content:"\\F073C"}.mdi-gesture-pinch::before{content:"\\F0ABD"}.mdi-gesture-spread::before{content:"\\F0ABE"}.mdi-gesture-swipe::before{content:"\\F0D76"}.mdi-gesture-swipe-down::before{content:"\\F073D"}.mdi-gesture-swipe-horizontal::before{content:"\\F0ABF"}.mdi-gesture-swipe-left::before{content:"\\F073E"}.mdi-gesture-swipe-right::before{content:"\\F073F"}.mdi-gesture-swipe-up::before{content:"\\F0740"}.mdi-gesture-swipe-vertical::before{content:"\\F0AC0"}.mdi-gesture-tap::before{content:"\\F0741"}.mdi-gesture-tap-box::before{content:"\\F12A9"}.mdi-gesture-tap-button::before{content:"\\F12A8"}.mdi-gesture-tap-hold::before{content:"\\F0D77"}.mdi-gesture-two-double-tap::before{content:"\\F0742"}.mdi-gesture-two-tap::before{content:"\\F0743"}.mdi-ghost::before{content:"\\F02A0"}.mdi-ghost-off::before{content:"\\F09F5"}.mdi-gif::before{content:"\\F0D78"}.mdi-gift::before{content:"\\F0E44"}.mdi-gift-outline::before{content:"\\F02A1"}.mdi-git::before{content:"\\F02A2"}.mdi-github::before{content:"\\F02A4"}.mdi-gitlab::before{content:"\\F0BA0"}.mdi-glass-cocktail::before{content:"\\F0356"}.mdi-glass-flute::before{content:"\\F02A5"}.mdi-glass-mug::before{content:"\\F02A6"}.mdi-glass-mug-variant::before{content:"\\F1116"}.mdi-glass-pint-outline::before{content:"\\F130D"}.mdi-glass-stange::before{content:"\\F02A7"}.mdi-glass-tulip::before{content:"\\F02A8"}.mdi-glass-wine::before{content:"\\F0876"}.mdi-glasses::before{content:"\\F02AA"}.mdi-globe-light::before{content:"\\F12D7"}.mdi-globe-model::before{content:"\\F08E9"}.mdi-gmail::before{content:"\\F02AB"}.mdi-gnome::before{content:"\\F02AC"}.mdi-go-kart::before{content:"\\F0D79"}.mdi-go-kart-track::before{content:"\\F0D7A"}.mdi-gog::before{content:"\\F0BA1"}.mdi-gold::before{content:"\\F124F"}.mdi-golf::before{content:"\\F0823"}.mdi-golf-cart::before{content:"\\F11A4"}.mdi-golf-tee::before{content:"\\F1083"}.mdi-gondola::before{content:"\\F0686"}.mdi-goodreads::before{content:"\\F0D7B"}.mdi-google::before{content:"\\F02AD"}.mdi-google-ads::before{content:"\\F0C87"}.mdi-google-analytics::before{content:"\\F07CC"}.mdi-google-assistant::before{content:"\\F07CD"}.mdi-google-cardboard::before{content:"\\F02AE"}.mdi-google-chrome::before{content:"\\F02AF"}.mdi-google-circles::before{content:"\\F02B0"}.mdi-google-circles-communities::before{content:"\\F02B1"}.mdi-google-circles-extended::before{content:"\\F02B2"}.mdi-google-circles-group::before{content:"\\F02B3"}.mdi-google-classroom::before{content:"\\F02C0"}.mdi-google-cloud::before{content:"\\F11F6"}.mdi-google-controller::before{content:"\\F02B4"}.mdi-google-controller-off::before{content:"\\F02B5"}.mdi-google-downasaur::before{content:"\\F1362"}.mdi-google-drive::before{content:"\\F02B6"}.mdi-google-earth::before{content:"\\F02B7"}.mdi-google-fit::before{content:"\\F096C"}.mdi-google-glass::before{content:"\\F02B8"}.mdi-google-hangouts::before{content:"\\F02C9"}.mdi-google-home::before{content:"\\F0824"}.mdi-google-keep::before{content:"\\F06DC"}.mdi-google-lens::before{content:"\\F09F6"}.mdi-google-maps::before{content:"\\F05F5"}.mdi-google-my-business::before{content:"\\F1048"}.mdi-google-nearby::before{content:"\\F02B9"}.mdi-google-photos::before{content:"\\F06DD"}.mdi-google-play::before{content:"\\F02BC"}.mdi-google-plus::before{content:"\\F02BD"}.mdi-google-podcast::before{content:"\\F0EB9"}.mdi-google-spreadsheet::before{content:"\\F09F7"}.mdi-google-street-view::before{content:"\\F0C88"}.mdi-google-translate::before{content:"\\F02BF"}.mdi-gradient::before{content:"\\F06A0"}.mdi-grain::before{content:"\\F0D7C"}.mdi-graph::before{content:"\\F1049"}.mdi-graph-outline::before{content:"\\F104A"}.mdi-graphql::before{content:"\\F0877"}.mdi-grave-stone::before{content:"\\F0BA2"}.mdi-grease-pencil::before{content:"\\F0648"}.mdi-greater-than::before{content:"\\F096D"}.mdi-greater-than-or-equal::before{content:"\\F096E"}.mdi-grid::before{content:"\\F02C1"}.mdi-grid-large::before{content:"\\F0758"}.mdi-grid-off::before{content:"\\F02C2"}.mdi-grill::before{content:"\\F0E45"}.mdi-grill-outline::before{content:"\\F118A"}.mdi-group::before{content:"\\F02C3"}.mdi-guitar-acoustic::before{content:"\\F0771"}.mdi-guitar-electric::before{content:"\\F02C4"}.mdi-guitar-pick::before{content:"\\F02C5"}.mdi-guitar-pick-outline::before{content:"\\F02C6"}.mdi-guy-fawkes-mask::before{content:"\\F0825"}.mdi-hail::before{content:"\\F0AC1"}.mdi-hair-dryer::before{content:"\\F10EF"}.mdi-hair-dryer-outline::before{content:"\\F10F0"}.mdi-halloween::before{content:"\\F0BA3"}.mdi-hamburger::before{content:"\\F0685"}.mdi-hammer::before{content:"\\F08EA"}.mdi-hammer-screwdriver::before{content:"\\F1322"}.mdi-hammer-wrench::before{content:"\\F1323"}.mdi-hand::before{content:"\\F0A4F"}.mdi-hand-heart::before{content:"\\F10F1"}.mdi-hand-left::before{content:"\\F0E46"}.mdi-hand-okay::before{content:"\\F0A50"}.mdi-hand-peace::before{content:"\\F0A51"}.mdi-hand-peace-variant::before{content:"\\F0A52"}.mdi-hand-pointing-down::before{content:"\\F0A53"}.mdi-hand-pointing-left::before{content:"\\F0A54"}.mdi-hand-pointing-right::before{content:"\\F02C7"}.mdi-hand-pointing-up::before{content:"\\F0A55"}.mdi-hand-right::before{content:"\\F0E47"}.mdi-hand-saw::before{content:"\\F0E48"}.mdi-hand-water::before{content:"\\F139F"}.mdi-handball::before{content:"\\F0F53"}.mdi-handcuffs::before{content:"\\F113E"}.mdi-handshake::before{content:"\\F1218"}.mdi-hanger::before{content:"\\F02C8"}.mdi-hard-hat::before{content:"\\F096F"}.mdi-harddisk::before{content:"\\F02CA"}.mdi-harddisk-plus::before{content:"\\F104B"}.mdi-harddisk-remove::before{content:"\\F104C"}.mdi-hat-fedora::before{content:"\\F0BA4"}.mdi-hazard-lights::before{content:"\\F0C89"}.mdi-hdr::before{content:"\\F0D7D"}.mdi-hdr-off::before{content:"\\F0D7E"}.mdi-head::before{content:"\\F135E"}.mdi-head-alert::before{content:"\\F1338"}.mdi-head-alert-outline::before{content:"\\F1339"}.mdi-head-check::before{content:"\\F133A"}.mdi-head-check-outline::before{content:"\\F133B"}.mdi-head-cog::before{content:"\\F133C"}.mdi-head-cog-outline::before{content:"\\F133D"}.mdi-head-dots-horizontal::before{content:"\\F133E"}.mdi-head-dots-horizontal-outline::before{content:"\\F133F"}.mdi-head-flash::before{content:"\\F1340"}.mdi-head-flash-outline::before{content:"\\F1341"}.mdi-head-heart::before{content:"\\F1342"}.mdi-head-heart-outline::before{content:"\\F1343"}.mdi-head-lightbulb::before{content:"\\F1344"}.mdi-head-lightbulb-outline::before{content:"\\F1345"}.mdi-head-minus::before{content:"\\F1346"}.mdi-head-minus-outline::before{content:"\\F1347"}.mdi-head-outline::before{content:"\\F135F"}.mdi-head-plus::before{content:"\\F1348"}.mdi-head-plus-outline::before{content:"\\F1349"}.mdi-head-question::before{content:"\\F134A"}.mdi-head-question-outline::before{content:"\\F134B"}.mdi-head-remove::before{content:"\\F134C"}.mdi-head-remove-outline::before{content:"\\F134D"}.mdi-head-snowflake::before{content:"\\F134E"}.mdi-head-snowflake-outline::before{content:"\\F134F"}.mdi-head-sync::before{content:"\\F1350"}.mdi-head-sync-outline::before{content:"\\F1351"}.mdi-headphones::before{content:"\\F02CB"}.mdi-headphones-bluetooth::before{content:"\\F0970"}.mdi-headphones-box::before{content:"\\F02CC"}.mdi-headphones-off::before{content:"\\F07CE"}.mdi-headphones-settings::before{content:"\\F02CD"}.mdi-headset::before{content:"\\F02CE"}.mdi-headset-dock::before{content:"\\F02CF"}.mdi-headset-off::before{content:"\\F02D0"}.mdi-heart::before{content:"\\F02D1"}.mdi-heart-box::before{content:"\\F02D2"}.mdi-heart-box-outline::before{content:"\\F02D3"}.mdi-heart-broken::before{content:"\\F02D4"}.mdi-heart-broken-outline::before{content:"\\F0D14"}.mdi-heart-circle::before{content:"\\F0971"}.mdi-heart-circle-outline::before{content:"\\F0972"}.mdi-heart-flash::before{content:"\\F0EF9"}.mdi-heart-half::before{content:"\\F06DF"}.mdi-heart-half-full::before{content:"\\F06DE"}.mdi-heart-half-outline::before{content:"\\F06E0"}.mdi-heart-minus::before{content:"\\F142F"}.mdi-heart-minus-outline::before{content:"\\F1432"}.mdi-heart-multiple::before{content:"\\F0A56"}.mdi-heart-multiple-outline::before{content:"\\F0A57"}.mdi-heart-off::before{content:"\\F0759"}.mdi-heart-off-outline::before{content:"\\F1434"}.mdi-heart-outline::before{content:"\\F02D5"}.mdi-heart-plus::before{content:"\\F142E"}.mdi-heart-plus-outline::before{content:"\\F1431"}.mdi-heart-pulse::before{content:"\\F05F6"}.mdi-heart-remove::before{content:"\\F1430"}.mdi-heart-remove-outline::before{content:"\\F1433"}.mdi-helicopter::before{content:"\\F0AC2"}.mdi-help::before{content:"\\F02D6"}.mdi-help-box::before{content:"\\F078B"}.mdi-help-circle::before{content:"\\F02D7"}.mdi-help-circle-outline::before{content:"\\F0625"}.mdi-help-network::before{content:"\\F06F5"}.mdi-help-network-outline::before{content:"\\F0C8A"}.mdi-help-rhombus::before{content:"\\F0BA5"}.mdi-help-rhombus-outline::before{content:"\\F0BA6"}.mdi-hexadecimal::before{content:"\\F12A7"}.mdi-hexagon::before{content:"\\F02D8"}.mdi-hexagon-multiple::before{content:"\\F06E1"}.mdi-hexagon-multiple-outline::before{content:"\\F10F2"}.mdi-hexagon-outline::before{content:"\\F02D9"}.mdi-hexagon-slice-1::before{content:"\\F0AC3"}.mdi-hexagon-slice-2::before{content:"\\F0AC4"}.mdi-hexagon-slice-3::before{content:"\\F0AC5"}.mdi-hexagon-slice-4::before{content:"\\F0AC6"}.mdi-hexagon-slice-5::before{content:"\\F0AC7"}.mdi-hexagon-slice-6::before{content:"\\F0AC8"}.mdi-hexagram::before{content:"\\F0AC9"}.mdi-hexagram-outline::before{content:"\\F0ACA"}.mdi-high-definition::before{content:"\\F07CF"}.mdi-high-definition-box::before{content:"\\F0878"}.mdi-highway::before{content:"\\F05F7"}.mdi-hiking::before{content:"\\F0D7F"}.mdi-hinduism::before{content:"\\F0973"}.mdi-history::before{content:"\\F02DA"}.mdi-hockey-puck::before{content:"\\F0879"}.mdi-hockey-sticks::before{content:"\\F087A"}.mdi-hololens::before{content:"\\F02DB"}.mdi-home::before{content:"\\F02DC"}.mdi-home-account::before{content:"\\F0826"}.mdi-home-alert::before{content:"\\F087B"}.mdi-home-analytics::before{content:"\\F0EBA"}.mdi-home-assistant::before{content:"\\F07D0"}.mdi-home-automation::before{content:"\\F07D1"}.mdi-home-circle::before{content:"\\F07D2"}.mdi-home-circle-outline::before{content:"\\F104D"}.mdi-home-city::before{content:"\\F0D15"}.mdi-home-city-outline::before{content:"\\F0D16"}.mdi-home-currency-usd::before{content:"\\F08AF"}.mdi-home-edit::before{content:"\\F1159"}.mdi-home-edit-outline::before{content:"\\F115A"}.mdi-home-export-outline::before{content:"\\F0F9B"}.mdi-home-flood::before{content:"\\F0EFA"}.mdi-home-floor-0::before{content:"\\F0DD2"}.mdi-home-floor-1::before{content:"\\F0D80"}.mdi-home-floor-2::before{content:"\\F0D81"}.mdi-home-floor-3::before{content:"\\F0D82"}.mdi-home-floor-a::before{content:"\\F0D83"}.mdi-home-floor-b::before{content:"\\F0D84"}.mdi-home-floor-g::before{content:"\\F0D85"}.mdi-home-floor-l::before{content:"\\F0D86"}.mdi-home-floor-negative-1::before{content:"\\F0DD3"}.mdi-home-group::before{content:"\\F0DD4"}.mdi-home-heart::before{content:"\\F0827"}.mdi-home-import-outline::before{content:"\\F0F9C"}.mdi-home-lightbulb::before{content:"\\F1251"}.mdi-home-lightbulb-outline::before{content:"\\F1252"}.mdi-home-lock::before{content:"\\F08EB"}.mdi-home-lock-open::before{content:"\\F08EC"}.mdi-home-map-marker::before{content:"\\F05F8"}.mdi-home-minus::before{content:"\\F0974"}.mdi-home-minus-outline::before{content:"\\F13D5"}.mdi-home-modern::before{content:"\\F02DD"}.mdi-home-outline::before{content:"\\F06A1"}.mdi-home-plus::before{content:"\\F0975"}.mdi-home-plus-outline::before{content:"\\F13D6"}.mdi-home-remove::before{content:"\\F1247"}.mdi-home-remove-outline::before{content:"\\F13D7"}.mdi-home-roof::before{content:"\\F112B"}.mdi-home-search::before{content:"\\F13B0"}.mdi-home-search-outline::before{content:"\\F13B1"}.mdi-home-thermometer::before{content:"\\F0F54"}.mdi-home-thermometer-outline::before{content:"\\F0F55"}.mdi-home-variant::before{content:"\\F02DE"}.mdi-home-variant-outline::before{content:"\\F0BA7"}.mdi-hook::before{content:"\\F06E2"}.mdi-hook-off::before{content:"\\F06E3"}.mdi-hops::before{content:"\\F02DF"}.mdi-horizontal-rotate-clockwise::before{content:"\\F10F3"}.mdi-horizontal-rotate-counterclockwise::before{content:"\\F10F4"}.mdi-horseshoe::before{content:"\\F0A58"}.mdi-hospital::before{content:"\\F0FF6"}.mdi-hospital-box::before{content:"\\F02E0"}.mdi-hospital-box-outline::before{content:"\\F0FF7"}.mdi-hospital-building::before{content:"\\F02E1"}.mdi-hospital-marker::before{content:"\\F02E2"}.mdi-hot-tub::before{content:"\\F0828"}.mdi-hours-24::before{content:"\\F1478"}.mdi-hubspot::before{content:"\\F0D17"}.mdi-hulu::before{content:"\\F0829"}.mdi-human::before{content:"\\F02E6"}.mdi-human-baby-changing-table::before{content:"\\F138B"}.mdi-human-child::before{content:"\\F02E7"}.mdi-human-female::before{content:"\\F0649"}.mdi-human-female-boy::before{content:"\\F0A59"}.mdi-human-female-female::before{content:"\\F0A5A"}.mdi-human-female-girl::before{content:"\\F0A5B"}.mdi-human-greeting::before{content:"\\F064A"}.mdi-human-handsdown::before{content:"\\F064B"}.mdi-human-handsup::before{content:"\\F064C"}.mdi-human-male::before{content:"\\F064D"}.mdi-human-male-boy::before{content:"\\F0A5C"}.mdi-human-male-child::before{content:"\\F138C"}.mdi-human-male-female::before{content:"\\F02E8"}.mdi-human-male-girl::before{content:"\\F0A5D"}.mdi-human-male-height::before{content:"\\F0EFB"}.mdi-human-male-height-variant::before{content:"\\F0EFC"}.mdi-human-male-male::before{content:"\\F0A5E"}.mdi-human-pregnant::before{content:"\\F05CF"}.mdi-human-wheelchair::before{content:"\\F138D"}.mdi-humble-bundle::before{content:"\\F0744"}.mdi-hvac::before{content:"\\F1352"}.mdi-hydraulic-oil-level::before{content:"\\F1324"}.mdi-hydraulic-oil-temperature::before{content:"\\F1325"}.mdi-hydro-power::before{content:"\\F12E5"}.mdi-ice-cream::before{content:"\\F082A"}.mdi-ice-cream-off::before{content:"\\F0E52"}.mdi-ice-pop::before{content:"\\F0EFD"}.mdi-id-card::before{content:"\\F0FC0"}.mdi-identifier::before{content:"\\F0EFE"}.mdi-ideogram-cjk::before{content:"\\F1331"}.mdi-ideogram-cjk-variant::before{content:"\\F1332"}.mdi-iframe::before{content:"\\F0C8B"}.mdi-iframe-array::before{content:"\\F10F5"}.mdi-iframe-array-outline::before{content:"\\F10F6"}.mdi-iframe-braces::before{content:"\\F10F7"}.mdi-iframe-braces-outline::before{content:"\\F10F8"}.mdi-iframe-outline::before{content:"\\F0C8C"}.mdi-iframe-parentheses::before{content:"\\F10F9"}.mdi-iframe-parentheses-outline::before{content:"\\F10FA"}.mdi-iframe-variable::before{content:"\\F10FB"}.mdi-iframe-variable-outline::before{content:"\\F10FC"}.mdi-image::before{content:"\\F02E9"}.mdi-image-album::before{content:"\\F02EA"}.mdi-image-area::before{content:"\\F02EB"}.mdi-image-area-close::before{content:"\\F02EC"}.mdi-image-auto-adjust::before{content:"\\F0FC1"}.mdi-image-broken::before{content:"\\F02ED"}.mdi-image-broken-variant::before{content:"\\F02EE"}.mdi-image-edit::before{content:"\\F11E3"}.mdi-image-edit-outline::before{content:"\\F11E4"}.mdi-image-filter-black-white::before{content:"\\F02F0"}.mdi-image-filter-center-focus::before{content:"\\F02F1"}.mdi-image-filter-center-focus-strong::before{content:"\\F0EFF"}.mdi-image-filter-center-focus-strong-outline::before{content:"\\F0F00"}.mdi-image-filter-center-focus-weak::before{content:"\\F02F2"}.mdi-image-filter-drama::before{content:"\\F02F3"}.mdi-image-filter-frames::before{content:"\\F02F4"}.mdi-image-filter-hdr::before{content:"\\F02F5"}.mdi-image-filter-none::before{content:"\\F02F6"}.mdi-image-filter-tilt-shift::before{content:"\\F02F7"}.mdi-image-filter-vintage::before{content:"\\F02F8"}.mdi-image-frame::before{content:"\\F0E49"}.mdi-image-minus::before{content:"\\F1419"}.mdi-image-move::before{content:"\\F09F8"}.mdi-image-multiple::before{content:"\\F02F9"}.mdi-image-multiple-outline::before{content:"\\F02EF"}.mdi-image-off::before{content:"\\F082B"}.mdi-image-off-outline::before{content:"\\F11D1"}.mdi-image-outline::before{content:"\\F0976"}.mdi-image-plus::before{content:"\\F087C"}.mdi-image-remove::before{content:"\\F1418"}.mdi-image-search::before{content:"\\F0977"}.mdi-image-search-outline::before{content:"\\F0978"}.mdi-image-size-select-actual::before{content:"\\F0C8D"}.mdi-image-size-select-large::before{content:"\\F0C8E"}.mdi-image-size-select-small::before{content:"\\F0C8F"}.mdi-import::before{content:"\\F02FA"}.mdi-inbox::before{content:"\\F0687"}.mdi-inbox-arrow-down::before{content:"\\F02FB"}.mdi-inbox-arrow-down-outline::before{content:"\\F1270"}.mdi-inbox-arrow-up::before{content:"\\F03D1"}.mdi-inbox-arrow-up-outline::before{content:"\\F1271"}.mdi-inbox-full::before{content:"\\F1272"}.mdi-inbox-full-outline::before{content:"\\F1273"}.mdi-inbox-multiple::before{content:"\\F08B0"}.mdi-inbox-multiple-outline::before{content:"\\F0BA8"}.mdi-inbox-outline::before{content:"\\F1274"}.mdi-incognito::before{content:"\\F05F9"}.mdi-incognito-circle::before{content:"\\F1421"}.mdi-incognito-circle-off::before{content:"\\F1422"}.mdi-incognito-off::before{content:"\\F0075"}.mdi-infinity::before{content:"\\F06E4"}.mdi-information::before{content:"\\F02FC"}.mdi-information-outline::before{content:"\\F02FD"}.mdi-information-variant::before{content:"\\F064E"}.mdi-instagram::before{content:"\\F02FE"}.mdi-instrument-triangle::before{content:"\\F104E"}.mdi-invert-colors::before{content:"\\F0301"}.mdi-invert-colors-off::before{content:"\\F0E4A"}.mdi-iobroker::before{content:"\\F12E8"}.mdi-ip::before{content:"\\F0A5F"}.mdi-ip-network::before{content:"\\F0A60"}.mdi-ip-network-outline::before{content:"\\F0C90"}.mdi-ipod::before{content:"\\F0C91"}.mdi-islam::before{content:"\\F0979"}.mdi-island::before{content:"\\F104F"}.mdi-iv-bag::before{content:"\\F10B9"}.mdi-jabber::before{content:"\\F0DD5"}.mdi-jeepney::before{content:"\\F0302"}.mdi-jellyfish::before{content:"\\F0F01"}.mdi-jellyfish-outline::before{content:"\\F0F02"}.mdi-jira::before{content:"\\F0303"}.mdi-jquery::before{content:"\\F087D"}.mdi-jsfiddle::before{content:"\\F0304"}.mdi-judaism::before{content:"\\F097A"}.mdi-jump-rope::before{content:"\\F12FF"}.mdi-kabaddi::before{content:"\\F0D87"}.mdi-karate::before{content:"\\F082C"}.mdi-keg::before{content:"\\F0305"}.mdi-kettle::before{content:"\\F05FA"}.mdi-kettle-alert::before{content:"\\F1317"}.mdi-kettle-alert-outline::before{content:"\\F1318"}.mdi-kettle-off::before{content:"\\F131B"}.mdi-kettle-off-outline::before{content:"\\F131C"}.mdi-kettle-outline::before{content:"\\F0F56"}.mdi-kettle-steam::before{content:"\\F1319"}.mdi-kettle-steam-outline::before{content:"\\F131A"}.mdi-kettlebell::before{content:"\\F1300"}.mdi-key::before{content:"\\F0306"}.mdi-key-arrow-right::before{content:"\\F1312"}.mdi-key-change::before{content:"\\F0307"}.mdi-key-link::before{content:"\\F119F"}.mdi-key-minus::before{content:"\\F0308"}.mdi-key-outline::before{content:"\\F0DD6"}.mdi-key-plus::before{content:"\\F0309"}.mdi-key-remove::before{content:"\\F030A"}.mdi-key-star::before{content:"\\F119E"}.mdi-key-variant::before{content:"\\F030B"}.mdi-key-wireless::before{content:"\\F0FC2"}.mdi-keyboard::before{content:"\\F030C"}.mdi-keyboard-backspace::before{content:"\\F030D"}.mdi-keyboard-caps::before{content:"\\F030E"}.mdi-keyboard-close::before{content:"\\F030F"}.mdi-keyboard-esc::before{content:"\\F12B7"}.mdi-keyboard-f1::before{content:"\\F12AB"}.mdi-keyboard-f10::before{content:"\\F12B4"}.mdi-keyboard-f11::before{content:"\\F12B5"}.mdi-keyboard-f12::before{content:"\\F12B6"}.mdi-keyboard-f2::before{content:"\\F12AC"}.mdi-keyboard-f3::before{content:"\\F12AD"}.mdi-keyboard-f4::before{content:"\\F12AE"}.mdi-keyboard-f5::before{content:"\\F12AF"}.mdi-keyboard-f6::before{content:"\\F12B0"}.mdi-keyboard-f7::before{content:"\\F12B1"}.mdi-keyboard-f8::before{content:"\\F12B2"}.mdi-keyboard-f9::before{content:"\\F12B3"}.mdi-keyboard-off::before{content:"\\F0310"}.mdi-keyboard-off-outline::before{content:"\\F0E4B"}.mdi-keyboard-outline::before{content:"\\F097B"}.mdi-keyboard-return::before{content:"\\F0311"}.mdi-keyboard-settings::before{content:"\\F09F9"}.mdi-keyboard-settings-outline::before{content:"\\F09FA"}.mdi-keyboard-space::before{content:"\\F1050"}.mdi-keyboard-tab::before{content:"\\F0312"}.mdi-keyboard-variant::before{content:"\\F0313"}.mdi-khanda::before{content:"\\F10FD"}.mdi-kickstarter::before{content:"\\F0745"}.mdi-klingon::before{content:"\\F135B"}.mdi-knife::before{content:"\\F09FB"}.mdi-knife-military::before{content:"\\F09FC"}.mdi-kodi::before{content:"\\F0314"}.mdi-kubernetes::before{content:"\\F10FE"}.mdi-label::before{content:"\\F0315"}.mdi-label-multiple::before{content:"\\F1375"}.mdi-label-multiple-outline::before{content:"\\F1376"}.mdi-label-off::before{content:"\\F0ACB"}.mdi-label-off-outline::before{content:"\\F0ACC"}.mdi-label-outline::before{content:"\\F0316"}.mdi-label-percent::before{content:"\\F12EA"}.mdi-label-percent-outline::before{content:"\\F12EB"}.mdi-label-variant::before{content:"\\F0ACD"}.mdi-label-variant-outline::before{content:"\\F0ACE"}.mdi-ladybug::before{content:"\\F082D"}.mdi-lambda::before{content:"\\F0627"}.mdi-lamp::before{content:"\\F06B5"}.mdi-lan::before{content:"\\F0317"}.mdi-lan-check::before{content:"\\F12AA"}.mdi-lan-connect::before{content:"\\F0318"}.mdi-lan-disconnect::before{content:"\\F0319"}.mdi-lan-pending::before{content:"\\F031A"}.mdi-language-c::before{content:"\\F0671"}.mdi-language-cpp::before{content:"\\F0672"}.mdi-language-csharp::before{content:"\\F031B"}.mdi-language-css3::before{content:"\\F031C"}.mdi-language-fortran::before{content:"\\F121A"}.mdi-language-go::before{content:"\\F07D3"}.mdi-language-haskell::before{content:"\\F0C92"}.mdi-language-html5::before{content:"\\F031D"}.mdi-language-java::before{content:"\\F0B37"}.mdi-language-javascript::before{content:"\\F031E"}.mdi-language-kotlin::before{content:"\\F1219"}.mdi-language-lua::before{content:"\\F08B1"}.mdi-language-markdown::before{content:"\\F0354"}.mdi-language-markdown-outline::before{content:"\\F0F5B"}.mdi-language-php::before{content:"\\F031F"}.mdi-language-python::before{content:"\\F0320"}.mdi-language-r::before{content:"\\F07D4"}.mdi-language-ruby::before{content:"\\F0D2D"}.mdi-language-ruby-on-rails::before{content:"\\F0ACF"}.mdi-language-swift::before{content:"\\F06E5"}.mdi-language-typescript::before{content:"\\F06E6"}.mdi-language-xaml::before{content:"\\F0673"}.mdi-laptop::before{content:"\\F0322"}.mdi-laptop-chromebook::before{content:"\\F0323"}.mdi-laptop-mac::before{content:"\\F0324"}.mdi-laptop-off::before{content:"\\F06E7"}.mdi-laptop-windows::before{content:"\\F0325"}.mdi-laravel::before{content:"\\F0AD0"}.mdi-laser-pointer::before{content:"\\F1484"}.mdi-lasso::before{content:"\\F0F03"}.mdi-lastpass::before{content:"\\F0446"}.mdi-latitude::before{content:"\\F0F57"}.mdi-launch::before{content:"\\F0327"}.mdi-lava-lamp::before{content:"\\F07D5"}.mdi-layers::before{content:"\\F0328"}.mdi-layers-minus::before{content:"\\F0E4C"}.mdi-layers-off::before{content:"\\F0329"}.mdi-layers-off-outline::before{content:"\\F09FD"}.mdi-layers-outline::before{content:"\\F09FE"}.mdi-layers-plus::before{content:"\\F0E4D"}.mdi-layers-remove::before{content:"\\F0E4E"}.mdi-layers-search::before{content:"\\F1206"}.mdi-layers-search-outline::before{content:"\\F1207"}.mdi-layers-triple::before{content:"\\F0F58"}.mdi-layers-triple-outline::before{content:"\\F0F59"}.mdi-lead-pencil::before{content:"\\F064F"}.mdi-leaf::before{content:"\\F032A"}.mdi-leaf-maple::before{content:"\\F0C93"}.mdi-leaf-maple-off::before{content:"\\F12DA"}.mdi-leaf-off::before{content:"\\F12D9"}.mdi-leak::before{content:"\\F0DD7"}.mdi-leak-off::before{content:"\\F0DD8"}.mdi-led-off::before{content:"\\F032B"}.mdi-led-on::before{content:"\\F032C"}.mdi-led-outline::before{content:"\\F032D"}.mdi-led-strip::before{content:"\\F07D6"}.mdi-led-strip-variant::before{content:"\\F1051"}.mdi-led-variant-off::before{content:"\\F032E"}.mdi-led-variant-on::before{content:"\\F032F"}.mdi-led-variant-outline::before{content:"\\F0330"}.mdi-leek::before{content:"\\F117D"}.mdi-less-than::before{content:"\\F097C"}.mdi-less-than-or-equal::before{content:"\\F097D"}.mdi-library::before{content:"\\F0331"}.mdi-library-shelves::before{content:"\\F0BA9"}.mdi-license::before{content:"\\F0FC3"}.mdi-lifebuoy::before{content:"\\F087E"}.mdi-light-switch::before{content:"\\F097E"}.mdi-lightbulb::before{content:"\\F0335"}.mdi-lightbulb-cfl::before{content:"\\F1208"}.mdi-lightbulb-cfl-off::before{content:"\\F1209"}.mdi-lightbulb-cfl-spiral::before{content:"\\F1275"}.mdi-lightbulb-cfl-spiral-off::before{content:"\\F12C3"}.mdi-lightbulb-group::before{content:"\\F1253"}.mdi-lightbulb-group-off::before{content:"\\F12CD"}.mdi-lightbulb-group-off-outline::before{content:"\\F12CE"}.mdi-lightbulb-group-outline::before{content:"\\F1254"}.mdi-lightbulb-multiple::before{content:"\\F1255"}.mdi-lightbulb-multiple-off::before{content:"\\F12CF"}.mdi-lightbulb-multiple-off-outline::before{content:"\\F12D0"}.mdi-lightbulb-multiple-outline::before{content:"\\F1256"}.mdi-lightbulb-off::before{content:"\\F0E4F"}.mdi-lightbulb-off-outline::before{content:"\\F0E50"}.mdi-lightbulb-on::before{content:"\\F06E8"}.mdi-lightbulb-on-outline::before{content:"\\F06E9"}.mdi-lightbulb-outline::before{content:"\\F0336"}.mdi-lighthouse::before{content:"\\F09FF"}.mdi-lighthouse-on::before{content:"\\F0A00"}.mdi-lightning-bolt::before{content:"\\F140B"}.mdi-lightning-bolt-outline::before{content:"\\F140C"}.mdi-lingerie::before{content:"\\F1476"}.mdi-link::before{content:"\\F0337"}.mdi-link-box::before{content:"\\F0D1A"}.mdi-link-box-outline::before{content:"\\F0D1B"}.mdi-link-box-variant::before{content:"\\F0D1C"}.mdi-link-box-variant-outline::before{content:"\\F0D1D"}.mdi-link-lock::before{content:"\\F10BA"}.mdi-link-off::before{content:"\\F0338"}.mdi-link-plus::before{content:"\\F0C94"}.mdi-link-variant::before{content:"\\F0339"}.mdi-link-variant-minus::before{content:"\\F10FF"}.mdi-link-variant-off::before{content:"\\F033A"}.mdi-link-variant-plus::before{content:"\\F1100"}.mdi-link-variant-remove::before{content:"\\F1101"}.mdi-linkedin::before{content:"\\F033B"}.mdi-linux::before{content:"\\F033D"}.mdi-linux-mint::before{content:"\\F08ED"}.mdi-lipstick::before{content:"\\F13B5"}.mdi-litecoin::before{content:"\\F0A61"}.mdi-loading::before{content:"\\F0772"}.mdi-location-enter::before{content:"\\F0FC4"}.mdi-location-exit::before{content:"\\F0FC5"}.mdi-lock::before{content:"\\F033E"}.mdi-lock-alert::before{content:"\\F08EE"}.mdi-lock-check::before{content:"\\F139A"}.mdi-lock-clock::before{content:"\\F097F"}.mdi-lock-open::before{content:"\\F033F"}.mdi-lock-open-alert::before{content:"\\F139B"}.mdi-lock-open-check::before{content:"\\F139C"}.mdi-lock-open-outline::before{content:"\\F0340"}.mdi-lock-open-variant::before{content:"\\F0FC6"}.mdi-lock-open-variant-outline::before{content:"\\F0FC7"}.mdi-lock-outline::before{content:"\\F0341"}.mdi-lock-pattern::before{content:"\\F06EA"}.mdi-lock-plus::before{content:"\\F05FB"}.mdi-lock-question::before{content:"\\F08EF"}.mdi-lock-reset::before{content:"\\F0773"}.mdi-lock-smart::before{content:"\\F08B2"}.mdi-locker::before{content:"\\F07D7"}.mdi-locker-multiple::before{content:"\\F07D8"}.mdi-login::before{content:"\\F0342"}.mdi-login-variant::before{content:"\\F05FC"}.mdi-logout::before{content:"\\F0343"}.mdi-logout-variant::before{content:"\\F05FD"}.mdi-longitude::before{content:"\\F0F5A"}.mdi-looks::before{content:"\\F0344"}.mdi-loupe::before{content:"\\F0345"}.mdi-lumx::before{content:"\\F0346"}.mdi-lungs::before{content:"\\F1084"}.mdi-magnet::before{content:"\\F0347"}.mdi-magnet-on::before{content:"\\F0348"}.mdi-magnify::before{content:"\\F0349"}.mdi-magnify-close::before{content:"\\F0980"}.mdi-magnify-minus::before{content:"\\F034A"}.mdi-magnify-minus-cursor::before{content:"\\F0A62"}.mdi-magnify-minus-outline::before{content:"\\F06EC"}.mdi-magnify-plus::before{content:"\\F034B"}.mdi-magnify-plus-cursor::before{content:"\\F0A63"}.mdi-magnify-plus-outline::before{content:"\\F06ED"}.mdi-magnify-remove-cursor::before{content:"\\F120C"}.mdi-magnify-remove-outline::before{content:"\\F120D"}.mdi-magnify-scan::before{content:"\\F1276"}.mdi-mail::before{content:"\\F0EBB"}.mdi-mailbox::before{content:"\\F06EE"}.mdi-mailbox-open::before{content:"\\F0D88"}.mdi-mailbox-open-outline::before{content:"\\F0D89"}.mdi-mailbox-open-up::before{content:"\\F0D8A"}.mdi-mailbox-open-up-outline::before{content:"\\F0D8B"}.mdi-mailbox-outline::before{content:"\\F0D8C"}.mdi-mailbox-up::before{content:"\\F0D8D"}.mdi-mailbox-up-outline::before{content:"\\F0D8E"}.mdi-map::before{content:"\\F034D"}.mdi-map-check::before{content:"\\F0EBC"}.mdi-map-check-outline::before{content:"\\F0EBD"}.mdi-map-clock::before{content:"\\F0D1E"}.mdi-map-clock-outline::before{content:"\\F0D1F"}.mdi-map-legend::before{content:"\\F0A01"}.mdi-map-marker::before{content:"\\F034E"}.mdi-map-marker-alert::before{content:"\\F0F05"}.mdi-map-marker-alert-outline::before{content:"\\F0F06"}.mdi-map-marker-check::before{content:"\\F0C95"}.mdi-map-marker-check-outline::before{content:"\\F12FB"}.mdi-map-marker-circle::before{content:"\\F034F"}.mdi-map-marker-distance::before{content:"\\F08F0"}.mdi-map-marker-down::before{content:"\\F1102"}.mdi-map-marker-left::before{content:"\\F12DB"}.mdi-map-marker-left-outline::before{content:"\\F12DD"}.mdi-map-marker-minus::before{content:"\\F0650"}.mdi-map-marker-minus-outline::before{content:"\\F12F9"}.mdi-map-marker-multiple::before{content:"\\F0350"}.mdi-map-marker-multiple-outline::before{content:"\\F1277"}.mdi-map-marker-off::before{content:"\\F0351"}.mdi-map-marker-off-outline::before{content:"\\F12FD"}.mdi-map-marker-outline::before{content:"\\F07D9"}.mdi-map-marker-path::before{content:"\\F0D20"}.mdi-map-marker-plus::before{content:"\\F0651"}.mdi-map-marker-plus-outline::before{content:"\\F12F8"}.mdi-map-marker-question::before{content:"\\F0F07"}.mdi-map-marker-question-outline::before{content:"\\F0F08"}.mdi-map-marker-radius::before{content:"\\F0352"}.mdi-map-marker-radius-outline::before{content:"\\F12FC"}.mdi-map-marker-remove::before{content:"\\F0F09"}.mdi-map-marker-remove-outline::before{content:"\\F12FA"}.mdi-map-marker-remove-variant::before{content:"\\F0F0A"}.mdi-map-marker-right::before{content:"\\F12DC"}.mdi-map-marker-right-outline::before{content:"\\F12DE"}.mdi-map-marker-up::before{content:"\\F1103"}.mdi-map-minus::before{content:"\\F0981"}.mdi-map-outline::before{content:"\\F0982"}.mdi-map-plus::before{content:"\\F0983"}.mdi-map-search::before{content:"\\F0984"}.mdi-map-search-outline::before{content:"\\F0985"}.mdi-mapbox::before{content:"\\F0BAA"}.mdi-margin::before{content:"\\F0353"}.mdi-marker::before{content:"\\F0652"}.mdi-marker-cancel::before{content:"\\F0DD9"}.mdi-marker-check::before{content:"\\F0355"}.mdi-mastodon::before{content:"\\F0AD1"}.mdi-material-design::before{content:"\\F0986"}.mdi-material-ui::before{content:"\\F0357"}.mdi-math-compass::before{content:"\\F0358"}.mdi-math-cos::before{content:"\\F0C96"}.mdi-math-integral::before{content:"\\F0FC8"}.mdi-math-integral-box::before{content:"\\F0FC9"}.mdi-math-log::before{content:"\\F1085"}.mdi-math-norm::before{content:"\\F0FCA"}.mdi-math-norm-box::before{content:"\\F0FCB"}.mdi-math-sin::before{content:"\\F0C97"}.mdi-math-tan::before{content:"\\F0C98"}.mdi-matrix::before{content:"\\F0628"}.mdi-medal::before{content:"\\F0987"}.mdi-medal-outline::before{content:"\\F1326"}.mdi-medical-bag::before{content:"\\F06EF"}.mdi-meditation::before{content:"\\F117B"}.mdi-memory::before{content:"\\F035B"}.mdi-menu::before{content:"\\F035C"}.mdi-menu-down::before{content:"\\F035D"}.mdi-menu-down-outline::before{content:"\\F06B6"}.mdi-menu-left::before{content:"\\F035E"}.mdi-menu-left-outline::before{content:"\\F0A02"}.mdi-menu-open::before{content:"\\F0BAB"}.mdi-menu-right::before{content:"\\F035F"}.mdi-menu-right-outline::before{content:"\\F0A03"}.mdi-menu-swap::before{content:"\\F0A64"}.mdi-menu-swap-outline::before{content:"\\F0A65"}.mdi-menu-up::before{content:"\\F0360"}.mdi-menu-up-outline::before{content:"\\F06B7"}.mdi-merge::before{content:"\\F0F5C"}.mdi-message::before{content:"\\F0361"}.mdi-message-alert::before{content:"\\F0362"}.mdi-message-alert-outline::before{content:"\\F0A04"}.mdi-message-arrow-left::before{content:"\\F12F2"}.mdi-message-arrow-left-outline::before{content:"\\F12F3"}.mdi-message-arrow-right::before{content:"\\F12F4"}.mdi-message-arrow-right-outline::before{content:"\\F12F5"}.mdi-message-bulleted::before{content:"\\F06A2"}.mdi-message-bulleted-off::before{content:"\\F06A3"}.mdi-message-cog::before{content:"\\F06F1"}.mdi-message-cog-outline::before{content:"\\F1172"}.mdi-message-draw::before{content:"\\F0363"}.mdi-message-image::before{content:"\\F0364"}.mdi-message-image-outline::before{content:"\\F116C"}.mdi-message-lock::before{content:"\\F0FCC"}.mdi-message-lock-outline::before{content:"\\F116D"}.mdi-message-minus::before{content:"\\F116E"}.mdi-message-minus-outline::before{content:"\\F116F"}.mdi-message-outline::before{content:"\\F0365"}.mdi-message-plus::before{content:"\\F0653"}.mdi-message-plus-outline::before{content:"\\F10BB"}.mdi-message-processing::before{content:"\\F0366"}.mdi-message-processing-outline::before{content:"\\F1170"}.mdi-message-reply::before{content:"\\F0367"}.mdi-message-reply-text::before{content:"\\F0368"}.mdi-message-settings::before{content:"\\F06F0"}.mdi-message-settings-outline::before{content:"\\F1171"}.mdi-message-text::before{content:"\\F0369"}.mdi-message-text-clock::before{content:"\\F1173"}.mdi-message-text-clock-outline::before{content:"\\F1174"}.mdi-message-text-lock::before{content:"\\F0FCD"}.mdi-message-text-lock-outline::before{content:"\\F1175"}.mdi-message-text-outline::before{content:"\\F036A"}.mdi-message-video::before{content:"\\F036B"}.mdi-meteor::before{content:"\\F0629"}.mdi-metronome::before{content:"\\F07DA"}.mdi-metronome-tick::before{content:"\\F07DB"}.mdi-micro-sd::before{content:"\\F07DC"}.mdi-microphone::before{content:"\\F036C"}.mdi-microphone-minus::before{content:"\\F08B3"}.mdi-microphone-off::before{content:"\\F036D"}.mdi-microphone-outline::before{content:"\\F036E"}.mdi-microphone-plus::before{content:"\\F08B4"}.mdi-microphone-settings::before{content:"\\F036F"}.mdi-microphone-variant::before{content:"\\F0370"}.mdi-microphone-variant-off::before{content:"\\F0371"}.mdi-microscope::before{content:"\\F0654"}.mdi-microsoft::before{content:"\\F0372"}.mdi-microsoft-access::before{content:"\\F138E"}.mdi-microsoft-azure::before{content:"\\F0805"}.mdi-microsoft-azure-devops::before{content:"\\F0FD5"}.mdi-microsoft-bing::before{content:"\\F00A4"}.mdi-microsoft-dynamics-365::before{content:"\\F0988"}.mdi-microsoft-edge::before{content:"\\F01E9"}.mdi-microsoft-edge-legacy::before{content:"\\F1250"}.mdi-microsoft-excel::before{content:"\\F138F"}.mdi-microsoft-internet-explorer::before{content:"\\F0300"}.mdi-microsoft-office::before{content:"\\F03C6"}.mdi-microsoft-onedrive::before{content:"\\F03CA"}.mdi-microsoft-onenote::before{content:"\\F0747"}.mdi-microsoft-outlook::before{content:"\\F0D22"}.mdi-microsoft-powerpoint::before{content:"\\F1390"}.mdi-microsoft-sharepoint::before{content:"\\F1391"}.mdi-microsoft-teams::before{content:"\\F02BB"}.mdi-microsoft-visual-studio::before{content:"\\F0610"}.mdi-microsoft-visual-studio-code::before{content:"\\F0A1E"}.mdi-microsoft-windows::before{content:"\\F05B3"}.mdi-microsoft-windows-classic::before{content:"\\F0A21"}.mdi-microsoft-word::before{content:"\\F1392"}.mdi-microsoft-xbox::before{content:"\\F05B9"}.mdi-microsoft-xbox-controller::before{content:"\\F05BA"}.mdi-microsoft-xbox-controller-battery-alert::before{content:"\\F074B"}.mdi-microsoft-xbox-controller-battery-charging::before{content:"\\F0A22"}.mdi-microsoft-xbox-controller-battery-empty::before{content:"\\F074C"}.mdi-microsoft-xbox-controller-battery-full::before{content:"\\F074D"}.mdi-microsoft-xbox-controller-battery-low::before{content:"\\F074E"}.mdi-microsoft-xbox-controller-battery-medium::before{content:"\\F074F"}.mdi-microsoft-xbox-controller-battery-unknown::before{content:"\\F0750"}.mdi-microsoft-xbox-controller-menu::before{content:"\\F0E6F"}.mdi-microsoft-xbox-controller-off::before{content:"\\F05BB"}.mdi-microsoft-xbox-controller-view::before{content:"\\F0E70"}.mdi-microsoft-yammer::before{content:"\\F0789"}.mdi-microwave::before{content:"\\F0C99"}.mdi-microwave-off::before{content:"\\F1423"}.mdi-middleware::before{content:"\\F0F5D"}.mdi-middleware-outline::before{content:"\\F0F5E"}.mdi-midi::before{content:"\\F08F1"}.mdi-midi-port::before{content:"\\F08F2"}.mdi-mine::before{content:"\\F0DDA"}.mdi-minecraft::before{content:"\\F0373"}.mdi-mini-sd::before{content:"\\F0A05"}.mdi-minidisc::before{content:"\\F0A06"}.mdi-minus::before{content:"\\F0374"}.mdi-minus-box::before{content:"\\F0375"}.mdi-minus-box-multiple::before{content:"\\F1141"}.mdi-minus-box-multiple-outline::before{content:"\\F1142"}.mdi-minus-box-outline::before{content:"\\F06F2"}.mdi-minus-circle::before{content:"\\F0376"}.mdi-minus-circle-multiple::before{content:"\\F035A"}.mdi-minus-circle-multiple-outline::before{content:"\\F0AD3"}.mdi-minus-circle-off::before{content:"\\F1459"}.mdi-minus-circle-off-outline::before{content:"\\F145A"}.mdi-minus-circle-outline::before{content:"\\F0377"}.mdi-minus-network::before{content:"\\F0378"}.mdi-minus-network-outline::before{content:"\\F0C9A"}.mdi-mirror::before{content:"\\F11FD"}.mdi-mixed-martial-arts::before{content:"\\F0D8F"}.mdi-mixed-reality::before{content:"\\F087F"}.mdi-mixer::before{content:"\\F07DD"}.mdi-molecule::before{content:"\\F0BAC"}.mdi-molecule-co::before{content:"\\F12FE"}.mdi-molecule-co2::before{content:"\\F07E4"}.mdi-monitor::before{content:"\\F0379"}.mdi-monitor-cellphone::before{content:"\\F0989"}.mdi-monitor-cellphone-star::before{content:"\\F098A"}.mdi-monitor-clean::before{content:"\\F1104"}.mdi-monitor-dashboard::before{content:"\\F0A07"}.mdi-monitor-edit::before{content:"\\F12C6"}.mdi-monitor-eye::before{content:"\\F13B4"}.mdi-monitor-lock::before{content:"\\F0DDB"}.mdi-monitor-multiple::before{content:"\\F037A"}.mdi-monitor-off::before{content:"\\F0D90"}.mdi-monitor-screenshot::before{content:"\\F0E51"}.mdi-monitor-share::before{content:"\\F1483"}.mdi-monitor-speaker::before{content:"\\F0F5F"}.mdi-monitor-speaker-off::before{content:"\\F0F60"}.mdi-monitor-star::before{content:"\\F0DDC"}.mdi-moon-first-quarter::before{content:"\\F0F61"}.mdi-moon-full::before{content:"\\F0F62"}.mdi-moon-last-quarter::before{content:"\\F0F63"}.mdi-moon-new::before{content:"\\F0F64"}.mdi-moon-waning-crescent::before{content:"\\F0F65"}.mdi-moon-waning-gibbous::before{content:"\\F0F66"}.mdi-moon-waxing-crescent::before{content:"\\F0F67"}.mdi-moon-waxing-gibbous::before{content:"\\F0F68"}.mdi-moped::before{content:"\\F1086"}.mdi-more::before{content:"\\F037B"}.mdi-mother-heart::before{content:"\\F1314"}.mdi-mother-nurse::before{content:"\\F0D21"}.mdi-motion-sensor::before{content:"\\F0D91"}.mdi-motion-sensor-off::before{content:"\\F1435"}.mdi-motorbike::before{content:"\\F037C"}.mdi-mouse::before{content:"\\F037D"}.mdi-mouse-bluetooth::before{content:"\\F098B"}.mdi-mouse-off::before{content:"\\F037E"}.mdi-mouse-variant::before{content:"\\F037F"}.mdi-mouse-variant-off::before{content:"\\F0380"}.mdi-move-resize::before{content:"\\F0655"}.mdi-move-resize-variant::before{content:"\\F0656"}.mdi-movie::before{content:"\\F0381"}.mdi-movie-edit::before{content:"\\F1122"}.mdi-movie-edit-outline::before{content:"\\F1123"}.mdi-movie-filter::before{content:"\\F1124"}.mdi-movie-filter-outline::before{content:"\\F1125"}.mdi-movie-open::before{content:"\\F0FCE"}.mdi-movie-open-outline::before{content:"\\F0FCF"}.mdi-movie-outline::before{content:"\\F0DDD"}.mdi-movie-roll::before{content:"\\F07DE"}.mdi-movie-search::before{content:"\\F11D2"}.mdi-movie-search-outline::before{content:"\\F11D3"}.mdi-muffin::before{content:"\\F098C"}.mdi-multiplication::before{content:"\\F0382"}.mdi-multiplication-box::before{content:"\\F0383"}.mdi-mushroom::before{content:"\\F07DF"}.mdi-mushroom-off::before{content:"\\F13FA"}.mdi-mushroom-off-outline::before{content:"\\F13FB"}.mdi-mushroom-outline::before{content:"\\F07E0"}.mdi-music::before{content:"\\F075A"}.mdi-music-accidental-double-flat::before{content:"\\F0F69"}.mdi-music-accidental-double-sharp::before{content:"\\F0F6A"}.mdi-music-accidental-flat::before{content:"\\F0F6B"}.mdi-music-accidental-natural::before{content:"\\F0F6C"}.mdi-music-accidental-sharp::before{content:"\\F0F6D"}.mdi-music-box::before{content:"\\F0384"}.mdi-music-box-multiple::before{content:"\\F0333"}.mdi-music-box-multiple-outline::before{content:"\\F0F04"}.mdi-music-box-outline::before{content:"\\F0385"}.mdi-music-circle::before{content:"\\F0386"}.mdi-music-circle-outline::before{content:"\\F0AD4"}.mdi-music-clef-alto::before{content:"\\F0F6E"}.mdi-music-clef-bass::before{content:"\\F0F6F"}.mdi-music-clef-treble::before{content:"\\F0F70"}.mdi-music-note::before{content:"\\F0387"}.mdi-music-note-bluetooth::before{content:"\\F05FE"}.mdi-music-note-bluetooth-off::before{content:"\\F05FF"}.mdi-music-note-eighth::before{content:"\\F0388"}.mdi-music-note-eighth-dotted::before{content:"\\F0F71"}.mdi-music-note-half::before{content:"\\F0389"}.mdi-music-note-half-dotted::before{content:"\\F0F72"}.mdi-music-note-off::before{content:"\\F038A"}.mdi-music-note-off-outline::before{content:"\\F0F73"}.mdi-music-note-outline::before{content:"\\F0F74"}.mdi-music-note-plus::before{content:"\\F0DDE"}.mdi-music-note-quarter::before{content:"\\F038B"}.mdi-music-note-quarter-dotted::before{content:"\\F0F75"}.mdi-music-note-sixteenth::before{content:"\\F038C"}.mdi-music-note-sixteenth-dotted::before{content:"\\F0F76"}.mdi-music-note-whole::before{content:"\\F038D"}.mdi-music-note-whole-dotted::before{content:"\\F0F77"}.mdi-music-off::before{content:"\\F075B"}.mdi-music-rest-eighth::before{content:"\\F0F78"}.mdi-music-rest-half::before{content:"\\F0F79"}.mdi-music-rest-quarter::before{content:"\\F0F7A"}.mdi-music-rest-sixteenth::before{content:"\\F0F7B"}.mdi-music-rest-whole::before{content:"\\F0F7C"}.mdi-nail::before{content:"\\F0DDF"}.mdi-nas::before{content:"\\F08F3"}.mdi-nativescript::before{content:"\\F0880"}.mdi-nature::before{content:"\\F038E"}.mdi-nature-people::before{content:"\\F038F"}.mdi-navigation::before{content:"\\F0390"}.mdi-near-me::before{content:"\\F05CD"}.mdi-necklace::before{content:"\\F0F0B"}.mdi-needle::before{content:"\\F0391"}.mdi-netflix::before{content:"\\F0746"}.mdi-network::before{content:"\\F06F3"}.mdi-network-off::before{content:"\\F0C9B"}.mdi-network-off-outline::before{content:"\\F0C9C"}.mdi-network-outline::before{content:"\\F0C9D"}.mdi-network-strength-1::before{content:"\\F08F4"}.mdi-network-strength-1-alert::before{content:"\\F08F5"}.mdi-network-strength-2::before{content:"\\F08F6"}.mdi-network-strength-2-alert::before{content:"\\F08F7"}.mdi-network-strength-3::before{content:"\\F08F8"}.mdi-network-strength-3-alert::before{content:"\\F08F9"}.mdi-network-strength-4::before{content:"\\F08FA"}.mdi-network-strength-4-alert::before{content:"\\F08FB"}.mdi-network-strength-off::before{content:"\\F08FC"}.mdi-network-strength-off-outline::before{content:"\\F08FD"}.mdi-network-strength-outline::before{content:"\\F08FE"}.mdi-new-box::before{content:"\\F0394"}.mdi-newspaper::before{content:"\\F0395"}.mdi-newspaper-minus::before{content:"\\F0F0C"}.mdi-newspaper-plus::before{content:"\\F0F0D"}.mdi-newspaper-variant::before{content:"\\F1001"}.mdi-newspaper-variant-multiple::before{content:"\\F1002"}.mdi-newspaper-variant-multiple-outline::before{content:"\\F1003"}.mdi-newspaper-variant-outline::before{content:"\\F1004"}.mdi-nfc::before{content:"\\F0396"}.mdi-nfc-search-variant::before{content:"\\F0E53"}.mdi-nfc-tap::before{content:"\\F0397"}.mdi-nfc-variant::before{content:"\\F0398"}.mdi-nfc-variant-off::before{content:"\\F0E54"}.mdi-ninja::before{content:"\\F0774"}.mdi-nintendo-game-boy::before{content:"\\F1393"}.mdi-nintendo-switch::before{content:"\\F07E1"}.mdi-nintendo-wii::before{content:"\\F05AB"}.mdi-nintendo-wiiu::before{content:"\\F072D"}.mdi-nix::before{content:"\\F1105"}.mdi-nodejs::before{content:"\\F0399"}.mdi-noodles::before{content:"\\F117E"}.mdi-not-equal::before{content:"\\F098D"}.mdi-not-equal-variant::before{content:"\\F098E"}.mdi-note::before{content:"\\F039A"}.mdi-note-multiple::before{content:"\\F06B8"}.mdi-note-multiple-outline::before{content:"\\F06B9"}.mdi-note-outline::before{content:"\\F039B"}.mdi-note-plus::before{content:"\\F039C"}.mdi-note-plus-outline::before{content:"\\F039D"}.mdi-note-text::before{content:"\\F039E"}.mdi-note-text-outline::before{content:"\\F11D7"}.mdi-notebook::before{content:"\\F082E"}.mdi-notebook-multiple::before{content:"\\F0E55"}.mdi-notebook-outline::before{content:"\\F0EBF"}.mdi-notification-clear-all::before{content:"\\F039F"}.mdi-npm::before{content:"\\F06F7"}.mdi-nuke::before{content:"\\F06A4"}.mdi-null::before{content:"\\F07E2"}.mdi-numeric::before{content:"\\F03A0"}.mdi-numeric-0::before{content:"\\F0B39"}.mdi-numeric-0-box::before{content:"\\F03A1"}.mdi-numeric-0-box-multiple::before{content:"\\F0F0E"}.mdi-numeric-0-box-multiple-outline::before{content:"\\F03A2"}.mdi-numeric-0-box-outline::before{content:"\\F03A3"}.mdi-numeric-0-circle::before{content:"\\F0C9E"}.mdi-numeric-0-circle-outline::before{content:"\\F0C9F"}.mdi-numeric-1::before{content:"\\F0B3A"}.mdi-numeric-1-box::before{content:"\\F03A4"}.mdi-numeric-1-box-multiple::before{content:"\\F0F0F"}.mdi-numeric-1-box-multiple-outline::before{content:"\\F03A5"}.mdi-numeric-1-box-outline::before{content:"\\F03A6"}.mdi-numeric-1-circle::before{content:"\\F0CA0"}.mdi-numeric-1-circle-outline::before{content:"\\F0CA1"}.mdi-numeric-10::before{content:"\\F0FE9"}.mdi-numeric-10-box::before{content:"\\F0F7D"}.mdi-numeric-10-box-multiple::before{content:"\\F0FEA"}.mdi-numeric-10-box-multiple-outline::before{content:"\\F0FEB"}.mdi-numeric-10-box-outline::before{content:"\\F0F7E"}.mdi-numeric-10-circle::before{content:"\\F0FEC"}.mdi-numeric-10-circle-outline::before{content:"\\F0FED"}.mdi-numeric-2::before{content:"\\F0B3B"}.mdi-numeric-2-box::before{content:"\\F03A7"}.mdi-numeric-2-box-multiple::before{content:"\\F0F10"}.mdi-numeric-2-box-multiple-outline::before{content:"\\F03A8"}.mdi-numeric-2-box-outline::before{content:"\\F03A9"}.mdi-numeric-2-circle::before{content:"\\F0CA2"}.mdi-numeric-2-circle-outline::before{content:"\\F0CA3"}.mdi-numeric-3::before{content:"\\F0B3C"}.mdi-numeric-3-box::before{content:"\\F03AA"}.mdi-numeric-3-box-multiple::before{content:"\\F0F11"}.mdi-numeric-3-box-multiple-outline::before{content:"\\F03AB"}.mdi-numeric-3-box-outline::before{content:"\\F03AC"}.mdi-numeric-3-circle::before{content:"\\F0CA4"}.mdi-numeric-3-circle-outline::before{content:"\\F0CA5"}.mdi-numeric-4::before{content:"\\F0B3D"}.mdi-numeric-4-box::before{content:"\\F03AD"}.mdi-numeric-4-box-multiple::before{content:"\\F0F12"}.mdi-numeric-4-box-multiple-outline::before{content:"\\F03B2"}.mdi-numeric-4-box-outline::before{content:"\\F03AE"}.mdi-numeric-4-circle::before{content:"\\F0CA6"}.mdi-numeric-4-circle-outline::before{content:"\\F0CA7"}.mdi-numeric-5::before{content:"\\F0B3E"}.mdi-numeric-5-box::before{content:"\\F03B1"}.mdi-numeric-5-box-multiple::before{content:"\\F0F13"}.mdi-numeric-5-box-multiple-outline::before{content:"\\F03AF"}.mdi-numeric-5-box-outline::before{content:"\\F03B0"}.mdi-numeric-5-circle::before{content:"\\F0CA8"}.mdi-numeric-5-circle-outline::before{content:"\\F0CA9"}.mdi-numeric-6::before{content:"\\F0B3F"}.mdi-numeric-6-box::before{content:"\\F03B3"}.mdi-numeric-6-box-multiple::before{content:"\\F0F14"}.mdi-numeric-6-box-multiple-outline::before{content:"\\F03B4"}.mdi-numeric-6-box-outline::before{content:"\\F03B5"}.mdi-numeric-6-circle::before{content:"\\F0CAA"}.mdi-numeric-6-circle-outline::before{content:"\\F0CAB"}.mdi-numeric-7::before{content:"\\F0B40"}.mdi-numeric-7-box::before{content:"\\F03B6"}.mdi-numeric-7-box-multiple::before{content:"\\F0F15"}.mdi-numeric-7-box-multiple-outline::before{content:"\\F03B7"}.mdi-numeric-7-box-outline::before{content:"\\F03B8"}.mdi-numeric-7-circle::before{content:"\\F0CAC"}.mdi-numeric-7-circle-outline::before{content:"\\F0CAD"}.mdi-numeric-8::before{content:"\\F0B41"}.mdi-numeric-8-box::before{content:"\\F03B9"}.mdi-numeric-8-box-multiple::before{content:"\\F0F16"}.mdi-numeric-8-box-multiple-outline::before{content:"\\F03BA"}.mdi-numeric-8-box-outline::before{content:"\\F03BB"}.mdi-numeric-8-circle::before{content:"\\F0CAE"}.mdi-numeric-8-circle-outline::before{content:"\\F0CAF"}.mdi-numeric-9::before{content:"\\F0B42"}.mdi-numeric-9-box::before{content:"\\F03BC"}.mdi-numeric-9-box-multiple::before{content:"\\F0F17"}.mdi-numeric-9-box-multiple-outline::before{content:"\\F03BD"}.mdi-numeric-9-box-outline::before{content:"\\F03BE"}.mdi-numeric-9-circle::before{content:"\\F0CB0"}.mdi-numeric-9-circle-outline::before{content:"\\F0CB1"}.mdi-numeric-9-plus::before{content:"\\F0FEE"}.mdi-numeric-9-plus-box::before{content:"\\F03BF"}.mdi-numeric-9-plus-box-multiple::before{content:"\\F0F18"}.mdi-numeric-9-plus-box-multiple-outline::before{content:"\\F03C0"}.mdi-numeric-9-plus-box-outline::before{content:"\\F03C1"}.mdi-numeric-9-plus-circle::before{content:"\\F0CB2"}.mdi-numeric-9-plus-circle-outline::before{content:"\\F0CB3"}.mdi-numeric-negative-1::before{content:"\\F1052"}.mdi-nut::before{content:"\\F06F8"}.mdi-nutrition::before{content:"\\F03C2"}.mdi-nuxt::before{content:"\\F1106"}.mdi-oar::before{content:"\\F067C"}.mdi-ocarina::before{content:"\\F0DE0"}.mdi-oci::before{content:"\\F12E9"}.mdi-ocr::before{content:"\\F113A"}.mdi-octagon::before{content:"\\F03C3"}.mdi-octagon-outline::before{content:"\\F03C4"}.mdi-octagram::before{content:"\\F06F9"}.mdi-octagram-outline::before{content:"\\F0775"}.mdi-odnoklassniki::before{content:"\\F03C5"}.mdi-offer::before{content:"\\F121B"}.mdi-office-building::before{content:"\\F0991"}.mdi-oil::before{content:"\\F03C7"}.mdi-oil-lamp::before{content:"\\F0F19"}.mdi-oil-level::before{content:"\\F1053"}.mdi-oil-temperature::before{content:"\\F0FF8"}.mdi-omega::before{content:"\\F03C9"}.mdi-one-up::before{content:"\\F0BAD"}.mdi-onepassword::before{content:"\\F0881"}.mdi-opacity::before{content:"\\F05CC"}.mdi-open-in-app::before{content:"\\F03CB"}.mdi-open-in-new::before{content:"\\F03CC"}.mdi-open-source-initiative::before{content:"\\F0BAE"}.mdi-openid::before{content:"\\F03CD"}.mdi-opera::before{content:"\\F03CE"}.mdi-orbit::before{content:"\\F0018"}.mdi-order-alphabetical-ascending::before{content:"\\F020D"}.mdi-order-alphabetical-descending::before{content:"\\F0D07"}.mdi-order-bool-ascending::before{content:"\\F02BE"}.mdi-order-bool-ascending-variant::before{content:"\\F098F"}.mdi-order-bool-descending::before{content:"\\F1384"}.mdi-order-bool-descending-variant::before{content:"\\F0990"}.mdi-order-numeric-ascending::before{content:"\\F0545"}.mdi-order-numeric-descending::before{content:"\\F0546"}.mdi-origin::before{content:"\\F0B43"}.mdi-ornament::before{content:"\\F03CF"}.mdi-ornament-variant::before{content:"\\F03D0"}.mdi-outdoor-lamp::before{content:"\\F1054"}.mdi-overscan::before{content:"\\F1005"}.mdi-owl::before{content:"\\F03D2"}.mdi-pac-man::before{content:"\\F0BAF"}.mdi-package::before{content:"\\F03D3"}.mdi-package-down::before{content:"\\F03D4"}.mdi-package-up::before{content:"\\F03D5"}.mdi-package-variant::before{content:"\\F03D6"}.mdi-package-variant-closed::before{content:"\\F03D7"}.mdi-page-first::before{content:"\\F0600"}.mdi-page-last::before{content:"\\F0601"}.mdi-page-layout-body::before{content:"\\F06FA"}.mdi-page-layout-footer::before{content:"\\F06FB"}.mdi-page-layout-header::before{content:"\\F06FC"}.mdi-page-layout-header-footer::before{content:"\\F0F7F"}.mdi-page-layout-sidebar-left::before{content:"\\F06FD"}.mdi-page-layout-sidebar-right::before{content:"\\F06FE"}.mdi-page-next::before{content:"\\F0BB0"}.mdi-page-next-outline::before{content:"\\F0BB1"}.mdi-page-previous::before{content:"\\F0BB2"}.mdi-page-previous-outline::before{content:"\\F0BB3"}.mdi-pail::before{content:"\\F1417"}.mdi-pail-minus::before{content:"\\F1437"}.mdi-pail-minus-outline::before{content:"\\F143C"}.mdi-pail-off::before{content:"\\F1439"}.mdi-pail-off-outline::before{content:"\\F143E"}.mdi-pail-outline::before{content:"\\F143A"}.mdi-pail-plus::before{content:"\\F1436"}.mdi-pail-plus-outline::before{content:"\\F143B"}.mdi-pail-remove::before{content:"\\F1438"}.mdi-pail-remove-outline::before{content:"\\F143D"}.mdi-palette::before{content:"\\F03D8"}.mdi-palette-advanced::before{content:"\\F03D9"}.mdi-palette-outline::before{content:"\\F0E0C"}.mdi-palette-swatch::before{content:"\\F08B5"}.mdi-palette-swatch-outline::before{content:"\\F135C"}.mdi-palm-tree::before{content:"\\F1055"}.mdi-pan::before{content:"\\F0BB4"}.mdi-pan-bottom-left::before{content:"\\F0BB5"}.mdi-pan-bottom-right::before{content:"\\F0BB6"}.mdi-pan-down::before{content:"\\F0BB7"}.mdi-pan-horizontal::before{content:"\\F0BB8"}.mdi-pan-left::before{content:"\\F0BB9"}.mdi-pan-right::before{content:"\\F0BBA"}.mdi-pan-top-left::before{content:"\\F0BBB"}.mdi-pan-top-right::before{content:"\\F0BBC"}.mdi-pan-up::before{content:"\\F0BBD"}.mdi-pan-vertical::before{content:"\\F0BBE"}.mdi-panda::before{content:"\\F03DA"}.mdi-pandora::before{content:"\\F03DB"}.mdi-panorama::before{content:"\\F03DC"}.mdi-panorama-fisheye::before{content:"\\F03DD"}.mdi-panorama-horizontal::before{content:"\\F03DE"}.mdi-panorama-vertical::before{content:"\\F03DF"}.mdi-panorama-wide-angle::before{content:"\\F03E0"}.mdi-paper-cut-vertical::before{content:"\\F03E1"}.mdi-paper-roll::before{content:"\\F1157"}.mdi-paper-roll-outline::before{content:"\\F1158"}.mdi-paperclip::before{content:"\\F03E2"}.mdi-parachute::before{content:"\\F0CB4"}.mdi-parachute-outline::before{content:"\\F0CB5"}.mdi-parking::before{content:"\\F03E3"}.mdi-party-popper::before{content:"\\F1056"}.mdi-passport::before{content:"\\F07E3"}.mdi-passport-biometric::before{content:"\\F0DE1"}.mdi-pasta::before{content:"\\F1160"}.mdi-patio-heater::before{content:"\\F0F80"}.mdi-patreon::before{content:"\\F0882"}.mdi-pause::before{content:"\\F03E4"}.mdi-pause-circle::before{content:"\\F03E5"}.mdi-pause-circle-outline::before{content:"\\F03E6"}.mdi-pause-octagon::before{content:"\\F03E7"}.mdi-pause-octagon-outline::before{content:"\\F03E8"}.mdi-paw::before{content:"\\F03E9"}.mdi-paw-off::before{content:"\\F0657"}.mdi-pdf-box::before{content:"\\F0E56"}.mdi-peace::before{content:"\\F0884"}.mdi-peanut::before{content:"\\F0FFC"}.mdi-peanut-off::before{content:"\\F0FFD"}.mdi-peanut-off-outline::before{content:"\\F0FFF"}.mdi-peanut-outline::before{content:"\\F0FFE"}.mdi-pen::before{content:"\\F03EA"}.mdi-pen-lock::before{content:"\\F0DE2"}.mdi-pen-minus::before{content:"\\F0DE3"}.mdi-pen-off::before{content:"\\F0DE4"}.mdi-pen-plus::before{content:"\\F0DE5"}.mdi-pen-remove::before{content:"\\F0DE6"}.mdi-pencil::before{content:"\\F03EB"}.mdi-pencil-box::before{content:"\\F03EC"}.mdi-pencil-box-multiple::before{content:"\\F1144"}.mdi-pencil-box-multiple-outline::before{content:"\\F1145"}.mdi-pencil-box-outline::before{content:"\\F03ED"}.mdi-pencil-circle::before{content:"\\F06FF"}.mdi-pencil-circle-outline::before{content:"\\F0776"}.mdi-pencil-lock::before{content:"\\F03EE"}.mdi-pencil-lock-outline::before{content:"\\F0DE7"}.mdi-pencil-minus::before{content:"\\F0DE8"}.mdi-pencil-minus-outline::before{content:"\\F0DE9"}.mdi-pencil-off::before{content:"\\F03EF"}.mdi-pencil-off-outline::before{content:"\\F0DEA"}.mdi-pencil-outline::before{content:"\\F0CB6"}.mdi-pencil-plus::before{content:"\\F0DEB"}.mdi-pencil-plus-outline::before{content:"\\F0DEC"}.mdi-pencil-remove::before{content:"\\F0DED"}.mdi-pencil-remove-outline::before{content:"\\F0DEE"}.mdi-pencil-ruler::before{content:"\\F1353"}.mdi-penguin::before{content:"\\F0EC0"}.mdi-pentagon::before{content:"\\F0701"}.mdi-pentagon-outline::before{content:"\\F0700"}.mdi-percent::before{content:"\\F03F0"}.mdi-percent-outline::before{content:"\\F1278"}.mdi-periodic-table::before{content:"\\F08B6"}.mdi-perspective-less::before{content:"\\F0D23"}.mdi-perspective-more::before{content:"\\F0D24"}.mdi-pharmacy::before{content:"\\F03F1"}.mdi-phone::before{content:"\\F03F2"}.mdi-phone-alert::before{content:"\\F0F1A"}.mdi-phone-alert-outline::before{content:"\\F118E"}.mdi-phone-bluetooth::before{content:"\\F03F3"}.mdi-phone-bluetooth-outline::before{content:"\\F118F"}.mdi-phone-cancel::before{content:"\\F10BC"}.mdi-phone-cancel-outline::before{content:"\\F1190"}.mdi-phone-check::before{content:"\\F11A9"}.mdi-phone-check-outline::before{content:"\\F11AA"}.mdi-phone-classic::before{content:"\\F0602"}.mdi-phone-classic-off::before{content:"\\F1279"}.mdi-phone-forward::before{content:"\\F03F4"}.mdi-phone-forward-outline::before{content:"\\F1191"}.mdi-phone-hangup::before{content:"\\F03F5"}.mdi-phone-hangup-outline::before{content:"\\F1192"}.mdi-phone-in-talk::before{content:"\\F03F6"}.mdi-phone-in-talk-outline::before{content:"\\F1182"}.mdi-phone-incoming::before{content:"\\F03F7"}.mdi-phone-incoming-outline::before{content:"\\F1193"}.mdi-phone-lock::before{content:"\\F03F8"}.mdi-phone-lock-outline::before{content:"\\F1194"}.mdi-phone-log::before{content:"\\F03F9"}.mdi-phone-log-outline::before{content:"\\F1195"}.mdi-phone-message::before{content:"\\F1196"}.mdi-phone-message-outline::before{content:"\\F1197"}.mdi-phone-minus::before{content:"\\F0658"}.mdi-phone-minus-outline::before{content:"\\F1198"}.mdi-phone-missed::before{content:"\\F03FA"}.mdi-phone-missed-outline::before{content:"\\F11A5"}.mdi-phone-off::before{content:"\\F0DEF"}.mdi-phone-off-outline::before{content:"\\F11A6"}.mdi-phone-outgoing::before{content:"\\F03FB"}.mdi-phone-outgoing-outline::before{content:"\\F1199"}.mdi-phone-outline::before{content:"\\F0DF0"}.mdi-phone-paused::before{content:"\\F03FC"}.mdi-phone-paused-outline::before{content:"\\F119A"}.mdi-phone-plus::before{content:"\\F0659"}.mdi-phone-plus-outline::before{content:"\\F119B"}.mdi-phone-return::before{content:"\\F082F"}.mdi-phone-return-outline::before{content:"\\F119C"}.mdi-phone-ring::before{content:"\\F11AB"}.mdi-phone-ring-outline::before{content:"\\F11AC"}.mdi-phone-rotate-landscape::before{content:"\\F0885"}.mdi-phone-rotate-portrait::before{content:"\\F0886"}.mdi-phone-settings::before{content:"\\F03FD"}.mdi-phone-settings-outline::before{content:"\\F119D"}.mdi-phone-voip::before{content:"\\F03FE"}.mdi-pi::before{content:"\\F03FF"}.mdi-pi-box::before{content:"\\F0400"}.mdi-pi-hole::before{content:"\\F0DF1"}.mdi-piano::before{content:"\\F067D"}.mdi-pickaxe::before{content:"\\F08B7"}.mdi-picture-in-picture-bottom-right::before{content:"\\F0E57"}.mdi-picture-in-picture-bottom-right-outline::before{content:"\\F0E58"}.mdi-picture-in-picture-top-right::before{content:"\\F0E59"}.mdi-picture-in-picture-top-right-outline::before{content:"\\F0E5A"}.mdi-pier::before{content:"\\F0887"}.mdi-pier-crane::before{content:"\\F0888"}.mdi-pig::before{content:"\\F0401"}.mdi-pig-variant::before{content:"\\F1006"}.mdi-piggy-bank::before{content:"\\F1007"}.mdi-pill::before{content:"\\F0402"}.mdi-pillar::before{content:"\\F0702"}.mdi-pin::before{content:"\\F0403"}.mdi-pin-off::before{content:"\\F0404"}.mdi-pin-off-outline::before{content:"\\F0930"}.mdi-pin-outline::before{content:"\\F0931"}.mdi-pine-tree::before{content:"\\F0405"}.mdi-pine-tree-box::before{content:"\\F0406"}.mdi-pine-tree-fire::before{content:"\\F141A"}.mdi-pinterest::before{content:"\\F0407"}.mdi-pinwheel::before{content:"\\F0AD5"}.mdi-pinwheel-outline::before{content:"\\F0AD6"}.mdi-pipe::before{content:"\\F07E5"}.mdi-pipe-disconnected::before{content:"\\F07E6"}.mdi-pipe-leak::before{content:"\\F0889"}.mdi-pipe-wrench::before{content:"\\F1354"}.mdi-pirate::before{content:"\\F0A08"}.mdi-pistol::before{content:"\\F0703"}.mdi-piston::before{content:"\\F088A"}.mdi-pizza::before{content:"\\F0409"}.mdi-play::before{content:"\\F040A"}.mdi-play-box::before{content:"\\F127A"}.mdi-play-box-multiple::before{content:"\\F0D19"}.mdi-play-box-multiple-outline::before{content:"\\F13E6"}.mdi-play-box-outline::before{content:"\\F040B"}.mdi-play-circle::before{content:"\\F040C"}.mdi-play-circle-outline::before{content:"\\F040D"}.mdi-play-network::before{content:"\\F088B"}.mdi-play-network-outline::before{content:"\\F0CB7"}.mdi-play-outline::before{content:"\\F0F1B"}.mdi-play-pause::before{content:"\\F040E"}.mdi-play-protected-content::before{content:"\\F040F"}.mdi-play-speed::before{content:"\\F08FF"}.mdi-playlist-check::before{content:"\\F05C7"}.mdi-playlist-edit::before{content:"\\F0900"}.mdi-playlist-minus::before{content:"\\F0410"}.mdi-playlist-music::before{content:"\\F0CB8"}.mdi-playlist-music-outline::before{content:"\\F0CB9"}.mdi-playlist-play::before{content:"\\F0411"}.mdi-playlist-plus::before{content:"\\F0412"}.mdi-playlist-remove::before{content:"\\F0413"}.mdi-playlist-star::before{content:"\\F0DF2"}.mdi-plex::before{content:"\\F06BA"}.mdi-plus::before{content:"\\F0415"}.mdi-plus-box::before{content:"\\F0416"}.mdi-plus-box-multiple::before{content:"\\F0334"}.mdi-plus-box-multiple-outline::before{content:"\\F1143"}.mdi-plus-box-outline::before{content:"\\F0704"}.mdi-plus-circle::before{content:"\\F0417"}.mdi-plus-circle-multiple::before{content:"\\F034C"}.mdi-plus-circle-multiple-outline::before{content:"\\F0418"}.mdi-plus-circle-outline::before{content:"\\F0419"}.mdi-plus-minus::before{content:"\\F0992"}.mdi-plus-minus-box::before{content:"\\F0993"}.mdi-plus-minus-variant::before{content:"\\F14C9"}.mdi-plus-network::before{content:"\\F041A"}.mdi-plus-network-outline::before{content:"\\F0CBA"}.mdi-plus-one::before{content:"\\F041B"}.mdi-plus-outline::before{content:"\\F0705"}.mdi-plus-thick::before{content:"\\F11EC"}.mdi-podcast::before{content:"\\F0994"}.mdi-podium::before{content:"\\F0D25"}.mdi-podium-bronze::before{content:"\\F0D26"}.mdi-podium-gold::before{content:"\\F0D27"}.mdi-podium-silver::before{content:"\\F0D28"}.mdi-point-of-sale::before{content:"\\F0D92"}.mdi-pokeball::before{content:"\\F041D"}.mdi-pokemon-go::before{content:"\\F0A09"}.mdi-poker-chip::before{content:"\\F0830"}.mdi-polaroid::before{content:"\\F041E"}.mdi-police-badge::before{content:"\\F1167"}.mdi-police-badge-outline::before{content:"\\F1168"}.mdi-poll::before{content:"\\F041F"}.mdi-poll-box::before{content:"\\F0420"}.mdi-poll-box-outline::before{content:"\\F127B"}.mdi-polo::before{content:"\\F14C3"}.mdi-polymer::before{content:"\\F0421"}.mdi-pool::before{content:"\\F0606"}.mdi-popcorn::before{content:"\\F0422"}.mdi-post::before{content:"\\F1008"}.mdi-post-outline::before{content:"\\F1009"}.mdi-postage-stamp::before{content:"\\F0CBB"}.mdi-pot::before{content:"\\F02E5"}.mdi-pot-mix::before{content:"\\F065B"}.mdi-pot-mix-outline::before{content:"\\F0677"}.mdi-pot-outline::before{content:"\\F02FF"}.mdi-pot-steam::before{content:"\\F065A"}.mdi-pot-steam-outline::before{content:"\\F0326"}.mdi-pound::before{content:"\\F0423"}.mdi-pound-box::before{content:"\\F0424"}.mdi-pound-box-outline::before{content:"\\F117F"}.mdi-power::before{content:"\\F0425"}.mdi-power-cycle::before{content:"\\F0901"}.mdi-power-off::before{content:"\\F0902"}.mdi-power-on::before{content:"\\F0903"}.mdi-power-plug::before{content:"\\F06A5"}.mdi-power-plug-off::before{content:"\\F06A6"}.mdi-power-plug-off-outline::before{content:"\\F1424"}.mdi-power-plug-outline::before{content:"\\F1425"}.mdi-power-settings::before{content:"\\F0426"}.mdi-power-sleep::before{content:"\\F0904"}.mdi-power-socket::before{content:"\\F0427"}.mdi-power-socket-au::before{content:"\\F0905"}.mdi-power-socket-de::before{content:"\\F1107"}.mdi-power-socket-eu::before{content:"\\F07E7"}.mdi-power-socket-fr::before{content:"\\F1108"}.mdi-power-socket-jp::before{content:"\\F1109"}.mdi-power-socket-uk::before{content:"\\F07E8"}.mdi-power-socket-us::before{content:"\\F07E9"}.mdi-power-standby::before{content:"\\F0906"}.mdi-powershell::before{content:"\\F0A0A"}.mdi-prescription::before{content:"\\F0706"}.mdi-presentation::before{content:"\\F0428"}.mdi-presentation-play::before{content:"\\F0429"}.mdi-printer::before{content:"\\F042A"}.mdi-printer-3d::before{content:"\\F042B"}.mdi-printer-3d-nozzle::before{content:"\\F0E5B"}.mdi-printer-3d-nozzle-alert::before{content:"\\F11C0"}.mdi-printer-3d-nozzle-alert-outline::before{content:"\\F11C1"}.mdi-printer-3d-nozzle-outline::before{content:"\\F0E5C"}.mdi-printer-alert::before{content:"\\F042C"}.mdi-printer-check::before{content:"\\F1146"}.mdi-printer-eye::before{content:"\\F1458"}.mdi-printer-off::before{content:"\\F0E5D"}.mdi-printer-pos::before{content:"\\F1057"}.mdi-printer-search::before{content:"\\F1457"}.mdi-printer-settings::before{content:"\\F0707"}.mdi-printer-wireless::before{content:"\\F0A0B"}.mdi-priority-high::before{content:"\\F0603"}.mdi-priority-low::before{content:"\\F0604"}.mdi-professional-hexagon::before{content:"\\F042D"}.mdi-progress-alert::before{content:"\\F0CBC"}.mdi-progress-check::before{content:"\\F0995"}.mdi-progress-clock::before{content:"\\F0996"}.mdi-progress-close::before{content:"\\F110A"}.mdi-progress-download::before{content:"\\F0997"}.mdi-progress-upload::before{content:"\\F0998"}.mdi-progress-wrench::before{content:"\\F0CBD"}.mdi-projector::before{content:"\\F042E"}.mdi-projector-screen::before{content:"\\F042F"}.mdi-propane-tank::before{content:"\\F1357"}.mdi-propane-tank-outline::before{content:"\\F1358"}.mdi-protocol::before{content:"\\F0FD8"}.mdi-publish::before{content:"\\F06A7"}.mdi-pulse::before{content:"\\F0430"}.mdi-pump::before{content:"\\F1402"}.mdi-pumpkin::before{content:"\\F0BBF"}.mdi-purse::before{content:"\\F0F1C"}.mdi-purse-outline::before{content:"\\F0F1D"}.mdi-puzzle::before{content:"\\F0431"}.mdi-puzzle-check::before{content:"\\F1426"}.mdi-puzzle-check-outline::before{content:"\\F1427"}.mdi-puzzle-edit::before{content:"\\F14D3"}.mdi-puzzle-edit-outline::before{content:"\\F14D9"}.mdi-puzzle-heart::before{content:"\\F14D4"}.mdi-puzzle-heart-outline::before{content:"\\F14DA"}.mdi-puzzle-minus::before{content:"\\F14D1"}.mdi-puzzle-minus-outline::before{content:"\\F14D7"}.mdi-puzzle-outline::before{content:"\\F0A66"}.mdi-puzzle-plus::before{content:"\\F14D0"}.mdi-puzzle-plus-outline::before{content:"\\F14D6"}.mdi-puzzle-remove::before{content:"\\F14D2"}.mdi-puzzle-remove-outline::before{content:"\\F14D8"}.mdi-puzzle-star::before{content:"\\F14D5"}.mdi-puzzle-star-outline::before{content:"\\F14DB"}.mdi-qi::before{content:"\\F0999"}.mdi-qqchat::before{content:"\\F0605"}.mdi-qrcode::before{content:"\\F0432"}.mdi-qrcode-edit::before{content:"\\F08B8"}.mdi-qrcode-minus::before{content:"\\F118C"}.mdi-qrcode-plus::before{content:"\\F118B"}.mdi-qrcode-remove::before{content:"\\F118D"}.mdi-qrcode-scan::before{content:"\\F0433"}.mdi-quadcopter::before{content:"\\F0434"}.mdi-quality-high::before{content:"\\F0435"}.mdi-quality-low::before{content:"\\F0A0C"}.mdi-quality-medium::before{content:"\\F0A0D"}.mdi-quora::before{content:"\\F0D29"}.mdi-rabbit::before{content:"\\F0907"}.mdi-racing-helmet::before{content:"\\F0D93"}.mdi-racquetball::before{content:"\\F0D94"}.mdi-radar::before{content:"\\F0437"}.mdi-radiator::before{content:"\\F0438"}.mdi-radiator-disabled::before{content:"\\F0AD7"}.mdi-radiator-off::before{content:"\\F0AD8"}.mdi-radio::before{content:"\\F0439"}.mdi-radio-am::before{content:"\\F0CBE"}.mdi-radio-fm::before{content:"\\F0CBF"}.mdi-radio-handheld::before{content:"\\F043A"}.mdi-radio-off::before{content:"\\F121C"}.mdi-radio-tower::before{content:"\\F043B"}.mdi-radioactive::before{content:"\\F043C"}.mdi-radioactive-off::before{content:"\\F0EC1"}.mdi-radiobox-blank::before{content:"\\F043D"}.mdi-radiobox-marked::before{content:"\\F043E"}.mdi-radiology-box::before{content:"\\F14C5"}.mdi-radiology-box-outline::before{content:"\\F14C6"}.mdi-radius::before{content:"\\F0CC0"}.mdi-radius-outline::before{content:"\\F0CC1"}.mdi-railroad-light::before{content:"\\F0F1E"}.mdi-raspberry-pi::before{content:"\\F043F"}.mdi-ray-end::before{content:"\\F0440"}.mdi-ray-end-arrow::before{content:"\\F0441"}.mdi-ray-start::before{content:"\\F0442"}.mdi-ray-start-arrow::before{content:"\\F0443"}.mdi-ray-start-end::before{content:"\\F0444"}.mdi-ray-vertex::before{content:"\\F0445"}.mdi-react::before{content:"\\F0708"}.mdi-read::before{content:"\\F0447"}.mdi-receipt::before{content:"\\F0449"}.mdi-record::before{content:"\\F044A"}.mdi-record-circle::before{content:"\\F0EC2"}.mdi-record-circle-outline::before{content:"\\F0EC3"}.mdi-record-player::before{content:"\\F099A"}.mdi-record-rec::before{content:"\\F044B"}.mdi-rectangle::before{content:"\\F0E5E"}.mdi-rectangle-outline::before{content:"\\F0E5F"}.mdi-recycle::before{content:"\\F044C"}.mdi-recycle-variant::before{content:"\\F139D"}.mdi-reddit::before{content:"\\F044D"}.mdi-redhat::before{content:"\\F111B"}.mdi-redo::before{content:"\\F044E"}.mdi-redo-variant::before{content:"\\F044F"}.mdi-reflect-horizontal::before{content:"\\F0A0E"}.mdi-reflect-vertical::before{content:"\\F0A0F"}.mdi-refresh::before{content:"\\F0450"}.mdi-refresh-circle::before{content:"\\F1377"}.mdi-regex::before{content:"\\F0451"}.mdi-registered-trademark::before{content:"\\F0A67"}.mdi-relation-many-to-many::before{content:"\\F1496"}.mdi-relation-many-to-one::before{content:"\\F1497"}.mdi-relation-many-to-one-or-many::before{content:"\\F1498"}.mdi-relation-many-to-only-one::before{content:"\\F1499"}.mdi-relation-many-to-zero-or-many::before{content:"\\F149A"}.mdi-relation-many-to-zero-or-one::before{content:"\\F149B"}.mdi-relation-one-or-many-to-many::before{content:"\\F149C"}.mdi-relation-one-or-many-to-one::before{content:"\\F149D"}.mdi-relation-one-or-many-to-one-or-many::before{content:"\\F149E"}.mdi-relation-one-or-many-to-only-one::before{content:"\\F149F"}.mdi-relation-one-or-many-to-zero-or-many::before{content:"\\F14A0"}.mdi-relation-one-or-many-to-zero-or-one::before{content:"\\F14A1"}.mdi-relation-one-to-many::before{content:"\\F14A2"}.mdi-relation-one-to-one::before{content:"\\F14A3"}.mdi-relation-one-to-one-or-many::before{content:"\\F14A4"}.mdi-relation-one-to-only-one::before{content:"\\F14A5"}.mdi-relation-one-to-zero-or-many::before{content:"\\F14A6"}.mdi-relation-one-to-zero-or-one::before{content:"\\F14A7"}.mdi-relation-only-one-to-many::before{content:"\\F14A8"}.mdi-relation-only-one-to-one::before{content:"\\F14A9"}.mdi-relation-only-one-to-one-or-many::before{content:"\\F14AA"}.mdi-relation-only-one-to-only-one::before{content:"\\F14AB"}.mdi-relation-only-one-to-zero-or-many::before{content:"\\F14AC"}.mdi-relation-only-one-to-zero-or-one::before{content:"\\F14AD"}.mdi-relation-zero-or-many-to-many::before{content:"\\F14AE"}.mdi-relation-zero-or-many-to-one::before{content:"\\F14AF"}.mdi-relation-zero-or-many-to-one-or-many::before{content:"\\F14B0"}.mdi-relation-zero-or-many-to-only-one::before{content:"\\F14B1"}.mdi-relation-zero-or-many-to-zero-or-many::before{content:"\\F14B2"}.mdi-relation-zero-or-many-to-zero-or-one::before{content:"\\F14B3"}.mdi-relation-zero-or-one-to-many::before{content:"\\F14B4"}.mdi-relation-zero-or-one-to-one::before{content:"\\F14B5"}.mdi-relation-zero-or-one-to-one-or-many::before{content:"\\F14B6"}.mdi-relation-zero-or-one-to-only-one::before{content:"\\F14B7"}.mdi-relation-zero-or-one-to-zero-or-many::before{content:"\\F14B8"}.mdi-relation-zero-or-one-to-zero-or-one::before{content:"\\F14B9"}.mdi-relative-scale::before{content:"\\F0452"}.mdi-reload::before{content:"\\F0453"}.mdi-reload-alert::before{content:"\\F110B"}.mdi-reminder::before{content:"\\F088C"}.mdi-remote::before{content:"\\F0454"}.mdi-remote-desktop::before{content:"\\F08B9"}.mdi-remote-off::before{content:"\\F0EC4"}.mdi-remote-tv::before{content:"\\F0EC5"}.mdi-remote-tv-off::before{content:"\\F0EC6"}.mdi-rename-box::before{content:"\\F0455"}.mdi-reorder-horizontal::before{content:"\\F0688"}.mdi-reorder-vertical::before{content:"\\F0689"}.mdi-repeat::before{content:"\\F0456"}.mdi-repeat-off::before{content:"\\F0457"}.mdi-repeat-once::before{content:"\\F0458"}.mdi-replay::before{content:"\\F0459"}.mdi-reply::before{content:"\\F045A"}.mdi-reply-all::before{content:"\\F045B"}.mdi-reply-all-outline::before{content:"\\F0F1F"}.mdi-reply-circle::before{content:"\\F11AE"}.mdi-reply-outline::before{content:"\\F0F20"}.mdi-reproduction::before{content:"\\F045C"}.mdi-resistor::before{content:"\\F0B44"}.mdi-resistor-nodes::before{content:"\\F0B45"}.mdi-resize::before{content:"\\F0A68"}.mdi-resize-bottom-right::before{content:"\\F045D"}.mdi-responsive::before{content:"\\F045E"}.mdi-restart::before{content:"\\F0709"}.mdi-restart-alert::before{content:"\\F110C"}.mdi-restart-off::before{content:"\\F0D95"}.mdi-restore::before{content:"\\F099B"}.mdi-restore-alert::before{content:"\\F110D"}.mdi-rewind::before{content:"\\F045F"}.mdi-rewind-10::before{content:"\\F0D2A"}.mdi-rewind-30::before{content:"\\F0D96"}.mdi-rewind-5::before{content:"\\F11F9"}.mdi-rewind-outline::before{content:"\\F070A"}.mdi-rhombus::before{content:"\\F070B"}.mdi-rhombus-medium::before{content:"\\F0A10"}.mdi-rhombus-medium-outline::before{content:"\\F14DC"}.mdi-rhombus-outline::before{content:"\\F070C"}.mdi-rhombus-split::before{content:"\\F0A11"}.mdi-rhombus-split-outline::before{content:"\\F14DD"}.mdi-ribbon::before{content:"\\F0460"}.mdi-rice::before{content:"\\F07EA"}.mdi-ring::before{content:"\\F07EB"}.mdi-rivet::before{content:"\\F0E60"}.mdi-road::before{content:"\\F0461"}.mdi-road-variant::before{content:"\\F0462"}.mdi-robber::before{content:"\\F1058"}.mdi-robot::before{content:"\\F06A9"}.mdi-robot-industrial::before{content:"\\F0B46"}.mdi-robot-mower::before{content:"\\F11F7"}.mdi-robot-mower-outline::before{content:"\\F11F3"}.mdi-robot-vacuum::before{content:"\\F070D"}.mdi-robot-vacuum-variant::before{content:"\\F0908"}.mdi-rocket::before{content:"\\F0463"}.mdi-rocket-launch::before{content:"\\F14DE"}.mdi-rocket-launch-outline::before{content:"\\F14DF"}.mdi-rocket-outline::before{content:"\\F13AF"}.mdi-rodent::before{content:"\\F1327"}.mdi-roller-skate::before{content:"\\F0D2B"}.mdi-roller-skate-off::before{content:"\\F0145"}.mdi-rollerblade::before{content:"\\F0D2C"}.mdi-rollerblade-off::before{content:"\\F002E"}.mdi-rollupjs::before{content:"\\F0BC0"}.mdi-roman-numeral-1::before{content:"\\F1088"}.mdi-roman-numeral-10::before{content:"\\F1091"}.mdi-roman-numeral-2::before{content:"\\F1089"}.mdi-roman-numeral-3::before{content:"\\F108A"}.mdi-roman-numeral-4::before{content:"\\F108B"}.mdi-roman-numeral-5::before{content:"\\F108C"}.mdi-roman-numeral-6::before{content:"\\F108D"}.mdi-roman-numeral-7::before{content:"\\F108E"}.mdi-roman-numeral-8::before{content:"\\F108F"}.mdi-roman-numeral-9::before{content:"\\F1090"}.mdi-room-service::before{content:"\\F088D"}.mdi-room-service-outline::before{content:"\\F0D97"}.mdi-rotate-3d::before{content:"\\F0EC7"}.mdi-rotate-3d-variant::before{content:"\\F0464"}.mdi-rotate-left::before{content:"\\F0465"}.mdi-rotate-left-variant::before{content:"\\F0466"}.mdi-rotate-orbit::before{content:"\\F0D98"}.mdi-rotate-right::before{content:"\\F0467"}.mdi-rotate-right-variant::before{content:"\\F0468"}.mdi-rounded-corner::before{content:"\\F0607"}.mdi-router::before{content:"\\F11E2"}.mdi-router-network::before{content:"\\F1087"}.mdi-router-wireless::before{content:"\\F0469"}.mdi-router-wireless-settings::before{content:"\\F0A69"}.mdi-routes::before{content:"\\F046A"}.mdi-routes-clock::before{content:"\\F1059"}.mdi-rowing::before{content:"\\F0608"}.mdi-rss::before{content:"\\F046B"}.mdi-rss-box::before{content:"\\F046C"}.mdi-rss-off::before{content:"\\F0F21"}.mdi-rug::before{content:"\\F1475"}.mdi-rugby::before{content:"\\F0D99"}.mdi-ruler::before{content:"\\F046D"}.mdi-ruler-square::before{content:"\\F0CC2"}.mdi-ruler-square-compass::before{content:"\\F0EBE"}.mdi-run::before{content:"\\F070E"}.mdi-run-fast::before{content:"\\F046E"}.mdi-rv-truck::before{content:"\\F11D4"}.mdi-sack::before{content:"\\F0D2E"}.mdi-sack-percent::before{content:"\\F0D2F"}.mdi-safe::before{content:"\\F0A6A"}.mdi-safe-square::before{content:"\\F127C"}.mdi-safe-square-outline::before{content:"\\F127D"}.mdi-safety-goggles::before{content:"\\F0D30"}.mdi-sail-boat::before{content:"\\F0EC8"}.mdi-sale::before{content:"\\F046F"}.mdi-salesforce::before{content:"\\F088E"}.mdi-sass::before{content:"\\F07EC"}.mdi-satellite::before{content:"\\F0470"}.mdi-satellite-uplink::before{content:"\\F0909"}.mdi-satellite-variant::before{content:"\\F0471"}.mdi-sausage::before{content:"\\F08BA"}.mdi-saw-blade::before{content:"\\F0E61"}.mdi-sawtooth-wave::before{content:"\\F147A"}.mdi-saxophone::before{content:"\\F0609"}.mdi-scale::before{content:"\\F0472"}.mdi-scale-balance::before{content:"\\F05D1"}.mdi-scale-bathroom::before{content:"\\F0473"}.mdi-scale-off::before{content:"\\F105A"}.mdi-scan-helper::before{content:"\\F13D8"}.mdi-scanner::before{content:"\\F06AB"}.mdi-scanner-off::before{content:"\\F090A"}.mdi-scatter-plot::before{content:"\\F0EC9"}.mdi-scatter-plot-outline::before{content:"\\F0ECA"}.mdi-school::before{content:"\\F0474"}.mdi-school-outline::before{content:"\\F1180"}.mdi-scissors-cutting::before{content:"\\F0A6B"}.mdi-scooter::before{content:"\\F11E9"}.mdi-scoreboard::before{content:"\\F127E"}.mdi-scoreboard-outline::before{content:"\\F127F"}.mdi-screen-rotation::before{content:"\\F0475"}.mdi-screen-rotation-lock::before{content:"\\F0478"}.mdi-screw-flat-top::before{content:"\\F0DF3"}.mdi-screw-lag::before{content:"\\F0DF4"}.mdi-screw-machine-flat-top::before{content:"\\F0DF5"}.mdi-screw-machine-round-top::before{content:"\\F0DF6"}.mdi-screw-round-top::before{content:"\\F0DF7"}.mdi-screwdriver::before{content:"\\F0476"}.mdi-script::before{content:"\\F0BC1"}.mdi-script-outline::before{content:"\\F0477"}.mdi-script-text::before{content:"\\F0BC2"}.mdi-script-text-outline::before{content:"\\F0BC3"}.mdi-sd::before{content:"\\F0479"}.mdi-seal::before{content:"\\F047A"}.mdi-seal-variant::before{content:"\\F0FD9"}.mdi-search-web::before{content:"\\F070F"}.mdi-seat::before{content:"\\F0CC3"}.mdi-seat-flat::before{content:"\\F047B"}.mdi-seat-flat-angled::before{content:"\\F047C"}.mdi-seat-individual-suite::before{content:"\\F047D"}.mdi-seat-legroom-extra::before{content:"\\F047E"}.mdi-seat-legroom-normal::before{content:"\\F047F"}.mdi-seat-legroom-reduced::before{content:"\\F0480"}.mdi-seat-outline::before{content:"\\F0CC4"}.mdi-seat-passenger::before{content:"\\F1249"}.mdi-seat-recline-extra::before{content:"\\F0481"}.mdi-seat-recline-normal::before{content:"\\F0482"}.mdi-seatbelt::before{content:"\\F0CC5"}.mdi-security::before{content:"\\F0483"}.mdi-security-network::before{content:"\\F0484"}.mdi-seed::before{content:"\\F0E62"}.mdi-seed-off::before{content:"\\F13FD"}.mdi-seed-off-outline::before{content:"\\F13FE"}.mdi-seed-outline::before{content:"\\F0E63"}.mdi-segment::before{content:"\\F0ECB"}.mdi-select::before{content:"\\F0485"}.mdi-select-all::before{content:"\\F0486"}.mdi-select-color::before{content:"\\F0D31"}.mdi-select-compare::before{content:"\\F0AD9"}.mdi-select-drag::before{content:"\\F0A6C"}.mdi-select-group::before{content:"\\F0F82"}.mdi-select-inverse::before{content:"\\F0487"}.mdi-select-marker::before{content:"\\F1280"}.mdi-select-multiple::before{content:"\\F1281"}.mdi-select-multiple-marker::before{content:"\\F1282"}.mdi-select-off::before{content:"\\F0488"}.mdi-select-place::before{content:"\\F0FDA"}.mdi-select-search::before{content:"\\F1204"}.mdi-selection::before{content:"\\F0489"}.mdi-selection-drag::before{content:"\\F0A6D"}.mdi-selection-ellipse::before{content:"\\F0D32"}.mdi-selection-ellipse-arrow-inside::before{content:"\\F0F22"}.mdi-selection-marker::before{content:"\\F1283"}.mdi-selection-multiple::before{content:"\\F1285"}.mdi-selection-multiple-marker::before{content:"\\F1284"}.mdi-selection-off::before{content:"\\F0777"}.mdi-selection-search::before{content:"\\F1205"}.mdi-semantic-web::before{content:"\\F1316"}.mdi-send::before{content:"\\F048A"}.mdi-send-check::before{content:"\\F1161"}.mdi-send-check-outline::before{content:"\\F1162"}.mdi-send-circle::before{content:"\\F0DF8"}.mdi-send-circle-outline::before{content:"\\F0DF9"}.mdi-send-clock::before{content:"\\F1163"}.mdi-send-clock-outline::before{content:"\\F1164"}.mdi-send-lock::before{content:"\\F07ED"}.mdi-send-lock-outline::before{content:"\\F1166"}.mdi-send-outline::before{content:"\\F1165"}.mdi-serial-port::before{content:"\\F065C"}.mdi-server::before{content:"\\F048B"}.mdi-server-minus::before{content:"\\F048C"}.mdi-server-network::before{content:"\\F048D"}.mdi-server-network-off::before{content:"\\F048E"}.mdi-server-off::before{content:"\\F048F"}.mdi-server-plus::before{content:"\\F0490"}.mdi-server-remove::before{content:"\\F0491"}.mdi-server-security::before{content:"\\F0492"}.mdi-set-all::before{content:"\\F0778"}.mdi-set-center::before{content:"\\F0779"}.mdi-set-center-right::before{content:"\\F077A"}.mdi-set-left::before{content:"\\F077B"}.mdi-set-left-center::before{content:"\\F077C"}.mdi-set-left-right::before{content:"\\F077D"}.mdi-set-merge::before{content:"\\F14E0"}.mdi-set-none::before{content:"\\F077E"}.mdi-set-right::before{content:"\\F077F"}.mdi-set-split::before{content:"\\F14E1"}.mdi-set-square::before{content:"\\F145D"}.mdi-set-top-box::before{content:"\\F099F"}.mdi-settings-helper::before{content:"\\F0A6E"}.mdi-shaker::before{content:"\\F110E"}.mdi-shaker-outline::before{content:"\\F110F"}.mdi-shape::before{content:"\\F0831"}.mdi-shape-circle-plus::before{content:"\\F065D"}.mdi-shape-outline::before{content:"\\F0832"}.mdi-shape-oval-plus::before{content:"\\F11FA"}.mdi-shape-plus::before{content:"\\F0495"}.mdi-shape-polygon-plus::before{content:"\\F065E"}.mdi-shape-rectangle-plus::before{content:"\\F065F"}.mdi-shape-square-plus::before{content:"\\F0660"}.mdi-share::before{content:"\\F0496"}.mdi-share-all::before{content:"\\F11F4"}.mdi-share-all-outline::before{content:"\\F11F5"}.mdi-share-circle::before{content:"\\F11AD"}.mdi-share-off::before{content:"\\F0F23"}.mdi-share-off-outline::before{content:"\\F0F24"}.mdi-share-outline::before{content:"\\F0932"}.mdi-share-variant::before{content:"\\F0497"}.mdi-sheep::before{content:"\\F0CC6"}.mdi-shield::before{content:"\\F0498"}.mdi-shield-account::before{content:"\\F088F"}.mdi-shield-account-outline::before{content:"\\F0A12"}.mdi-shield-airplane::before{content:"\\F06BB"}.mdi-shield-airplane-outline::before{content:"\\F0CC7"}.mdi-shield-alert::before{content:"\\F0ECC"}.mdi-shield-alert-outline::before{content:"\\F0ECD"}.mdi-shield-bug::before{content:"\\F13DA"}.mdi-shield-bug-outline::before{content:"\\F13DB"}.mdi-shield-car::before{content:"\\F0F83"}.mdi-shield-check::before{content:"\\F0565"}.mdi-shield-check-outline::before{content:"\\F0CC8"}.mdi-shield-cross::before{content:"\\F0CC9"}.mdi-shield-cross-outline::before{content:"\\F0CCA"}.mdi-shield-edit::before{content:"\\F11A0"}.mdi-shield-edit-outline::before{content:"\\F11A1"}.mdi-shield-half::before{content:"\\F1360"}.mdi-shield-half-full::before{content:"\\F0780"}.mdi-shield-home::before{content:"\\F068A"}.mdi-shield-home-outline::before{content:"\\F0CCB"}.mdi-shield-key::before{content:"\\F0BC4"}.mdi-shield-key-outline::before{content:"\\F0BC5"}.mdi-shield-link-variant::before{content:"\\F0D33"}.mdi-shield-link-variant-outline::before{content:"\\F0D34"}.mdi-shield-lock::before{content:"\\F099D"}.mdi-shield-lock-outline::before{content:"\\F0CCC"}.mdi-shield-off::before{content:"\\F099E"}.mdi-shield-off-outline::before{content:"\\F099C"}.mdi-shield-outline::before{content:"\\F0499"}.mdi-shield-plus::before{content:"\\F0ADA"}.mdi-shield-plus-outline::before{content:"\\F0ADB"}.mdi-shield-refresh::before{content:"\\F00AA"}.mdi-shield-refresh-outline::before{content:"\\F01E0"}.mdi-shield-remove::before{content:"\\F0ADC"}.mdi-shield-remove-outline::before{content:"\\F0ADD"}.mdi-shield-search::before{content:"\\F0D9A"}.mdi-shield-star::before{content:"\\F113B"}.mdi-shield-star-outline::before{content:"\\F113C"}.mdi-shield-sun::before{content:"\\F105D"}.mdi-shield-sun-outline::before{content:"\\F105E"}.mdi-shield-sync::before{content:"\\F11A2"}.mdi-shield-sync-outline::before{content:"\\F11A3"}.mdi-ship-wheel::before{content:"\\F0833"}.mdi-shoe-formal::before{content:"\\F0B47"}.mdi-shoe-heel::before{content:"\\F0B48"}.mdi-shoe-print::before{content:"\\F0DFA"}.mdi-shopping::before{content:"\\F049A"}.mdi-shopping-music::before{content:"\\F049B"}.mdi-shopping-outline::before{content:"\\F11D5"}.mdi-shopping-search::before{content:"\\F0F84"}.mdi-shovel::before{content:"\\F0710"}.mdi-shovel-off::before{content:"\\F0711"}.mdi-shower::before{content:"\\F09A0"}.mdi-shower-head::before{content:"\\F09A1"}.mdi-shredder::before{content:"\\F049C"}.mdi-shuffle::before{content:"\\F049D"}.mdi-shuffle-disabled::before{content:"\\F049E"}.mdi-shuffle-variant::before{content:"\\F049F"}.mdi-shuriken::before{content:"\\F137F"}.mdi-sigma::before{content:"\\F04A0"}.mdi-sigma-lower::before{content:"\\F062B"}.mdi-sign-caution::before{content:"\\F04A1"}.mdi-sign-direction::before{content:"\\F0781"}.mdi-sign-direction-minus::before{content:"\\F1000"}.mdi-sign-direction-plus::before{content:"\\F0FDC"}.mdi-sign-direction-remove::before{content:"\\F0FDD"}.mdi-sign-real-estate::before{content:"\\F1118"}.mdi-sign-text::before{content:"\\F0782"}.mdi-signal::before{content:"\\F04A2"}.mdi-signal-2g::before{content:"\\F0712"}.mdi-signal-3g::before{content:"\\F0713"}.mdi-signal-4g::before{content:"\\F0714"}.mdi-signal-5g::before{content:"\\F0A6F"}.mdi-signal-cellular-1::before{content:"\\F08BC"}.mdi-signal-cellular-2::before{content:"\\F08BD"}.mdi-signal-cellular-3::before{content:"\\F08BE"}.mdi-signal-cellular-outline::before{content:"\\F08BF"}.mdi-signal-distance-variant::before{content:"\\F0E64"}.mdi-signal-hspa::before{content:"\\F0715"}.mdi-signal-hspa-plus::before{content:"\\F0716"}.mdi-signal-off::before{content:"\\F0783"}.mdi-signal-variant::before{content:"\\F060A"}.mdi-signature::before{content:"\\F0DFB"}.mdi-signature-freehand::before{content:"\\F0DFC"}.mdi-signature-image::before{content:"\\F0DFD"}.mdi-signature-text::before{content:"\\F0DFE"}.mdi-silo::before{content:"\\F0B49"}.mdi-silverware::before{content:"\\F04A3"}.mdi-silverware-clean::before{content:"\\F0FDE"}.mdi-silverware-fork::before{content:"\\F04A4"}.mdi-silverware-fork-knife::before{content:"\\F0A70"}.mdi-silverware-spoon::before{content:"\\F04A5"}.mdi-silverware-variant::before{content:"\\F04A6"}.mdi-sim::before{content:"\\F04A7"}.mdi-sim-alert::before{content:"\\F04A8"}.mdi-sim-off::before{content:"\\F04A9"}.mdi-simple-icons::before{content:"\\F131D"}.mdi-sina-weibo::before{content:"\\F0ADF"}.mdi-sine-wave::before{content:"\\F095B"}.mdi-sitemap::before{content:"\\F04AA"}.mdi-size-l::before{content:"\\F13A6"}.mdi-size-m::before{content:"\\F13A5"}.mdi-size-s::before{content:"\\F13A4"}.mdi-size-xl::before{content:"\\F13A7"}.mdi-size-xs::before{content:"\\F13A3"}.mdi-size-xxl::before{content:"\\F13A8"}.mdi-size-xxs::before{content:"\\F13A2"}.mdi-size-xxxl::before{content:"\\F13A9"}.mdi-skate::before{content:"\\F0D35"}.mdi-skateboard::before{content:"\\F14C2"}.mdi-skew-less::before{content:"\\F0D36"}.mdi-skew-more::before{content:"\\F0D37"}.mdi-ski::before{content:"\\F1304"}.mdi-ski-cross-country::before{content:"\\F1305"}.mdi-ski-water::before{content:"\\F1306"}.mdi-skip-backward::before{content:"\\F04AB"}.mdi-skip-backward-outline::before{content:"\\F0F25"}.mdi-skip-forward::before{content:"\\F04AC"}.mdi-skip-forward-outline::before{content:"\\F0F26"}.mdi-skip-next::before{content:"\\F04AD"}.mdi-skip-next-circle::before{content:"\\F0661"}.mdi-skip-next-circle-outline::before{content:"\\F0662"}.mdi-skip-next-outline::before{content:"\\F0F27"}.mdi-skip-previous::before{content:"\\F04AE"}.mdi-skip-previous-circle::before{content:"\\F0663"}.mdi-skip-previous-circle-outline::before{content:"\\F0664"}.mdi-skip-previous-outline::before{content:"\\F0F28"}.mdi-skull::before{content:"\\F068C"}.mdi-skull-crossbones::before{content:"\\F0BC6"}.mdi-skull-crossbones-outline::before{content:"\\F0BC7"}.mdi-skull-outline::before{content:"\\F0BC8"}.mdi-skull-scan::before{content:"\\F14C7"}.mdi-skull-scan-outline::before{content:"\\F14C8"}.mdi-skype::before{content:"\\F04AF"}.mdi-skype-business::before{content:"\\F04B0"}.mdi-slack::before{content:"\\F04B1"}.mdi-slash-forward::before{content:"\\F0FDF"}.mdi-slash-forward-box::before{content:"\\F0FE0"}.mdi-sleep::before{content:"\\F04B2"}.mdi-sleep-off::before{content:"\\F04B3"}.mdi-slope-downhill::before{content:"\\F0DFF"}.mdi-slope-uphill::before{content:"\\F0E00"}.mdi-slot-machine::before{content:"\\F1114"}.mdi-slot-machine-outline::before{content:"\\F1115"}.mdi-smart-card::before{content:"\\F10BD"}.mdi-smart-card-outline::before{content:"\\F10BE"}.mdi-smart-card-reader::before{content:"\\F10BF"}.mdi-smart-card-reader-outline::before{content:"\\F10C0"}.mdi-smog::before{content:"\\F0A71"}.mdi-smoke-detector::before{content:"\\F0392"}.mdi-smoking::before{content:"\\F04B4"}.mdi-smoking-off::before{content:"\\F04B5"}.mdi-smoking-pipe::before{content:"\\F140D"}.mdi-smoking-pipe-off::before{content:"\\F1428"}.mdi-snapchat::before{content:"\\F04B6"}.mdi-snowboard::before{content:"\\F1307"}.mdi-snowflake::before{content:"\\F0717"}.mdi-snowflake-alert::before{content:"\\F0F29"}.mdi-snowflake-melt::before{content:"\\F12CB"}.mdi-snowflake-variant::before{content:"\\F0F2A"}.mdi-snowman::before{content:"\\F04B7"}.mdi-soccer::before{content:"\\F04B8"}.mdi-soccer-field::before{content:"\\F0834"}.mdi-sofa::before{content:"\\F04B9"}.mdi-solar-panel::before{content:"\\F0D9B"}.mdi-solar-panel-large::before{content:"\\F0D9C"}.mdi-solar-power::before{content:"\\F0A72"}.mdi-soldering-iron::before{content:"\\F1092"}.mdi-solid::before{content:"\\F068D"}.mdi-sony-playstation::before{content:"\\F0414"}.mdi-sort::before{content:"\\F04BA"}.mdi-sort-alphabetical-ascending::before{content:"\\F05BD"}.mdi-sort-alphabetical-ascending-variant::before{content:"\\F1148"}.mdi-sort-alphabetical-descending::before{content:"\\F05BF"}.mdi-sort-alphabetical-descending-variant::before{content:"\\F1149"}.mdi-sort-alphabetical-variant::before{content:"\\F04BB"}.mdi-sort-ascending::before{content:"\\F04BC"}.mdi-sort-bool-ascending::before{content:"\\F1385"}.mdi-sort-bool-ascending-variant::before{content:"\\F1386"}.mdi-sort-bool-descending::before{content:"\\F1387"}.mdi-sort-bool-descending-variant::before{content:"\\F1388"}.mdi-sort-descending::before{content:"\\F04BD"}.mdi-sort-numeric-ascending::before{content:"\\F1389"}.mdi-sort-numeric-ascending-variant::before{content:"\\F090D"}.mdi-sort-numeric-descending::before{content:"\\F138A"}.mdi-sort-numeric-descending-variant::before{content:"\\F0AD2"}.mdi-sort-numeric-variant::before{content:"\\F04BE"}.mdi-sort-reverse-variant::before{content:"\\F033C"}.mdi-sort-variant::before{content:"\\F04BF"}.mdi-sort-variant-lock::before{content:"\\F0CCD"}.mdi-sort-variant-lock-open::before{content:"\\F0CCE"}.mdi-sort-variant-remove::before{content:"\\F1147"}.mdi-soundcloud::before{content:"\\F04C0"}.mdi-source-branch::before{content:"\\F062C"}.mdi-source-branch-check::before{content:"\\F14CF"}.mdi-source-branch-minus::before{content:"\\F14CB"}.mdi-source-branch-plus::before{content:"\\F14CA"}.mdi-source-branch-refresh::before{content:"\\F14CD"}.mdi-source-branch-remove::before{content:"\\F14CC"}.mdi-source-branch-sync::before{content:"\\F14CE"}.mdi-source-commit::before{content:"\\F0718"}.mdi-source-commit-end::before{content:"\\F0719"}.mdi-source-commit-end-local::before{content:"\\F071A"}.mdi-source-commit-local::before{content:"\\F071B"}.mdi-source-commit-next-local::before{content:"\\F071C"}.mdi-source-commit-start::before{content:"\\F071D"}.mdi-source-commit-start-next-local::before{content:"\\F071E"}.mdi-source-fork::before{content:"\\F04C1"}.mdi-source-merge::before{content:"\\F062D"}.mdi-source-pull::before{content:"\\F04C2"}.mdi-source-repository::before{content:"\\F0CCF"}.mdi-source-repository-multiple::before{content:"\\F0CD0"}.mdi-soy-sauce::before{content:"\\F07EE"}.mdi-soy-sauce-off::before{content:"\\F13FC"}.mdi-spa::before{content:"\\F0CD1"}.mdi-spa-outline::before{content:"\\F0CD2"}.mdi-space-invaders::before{content:"\\F0BC9"}.mdi-space-station::before{content:"\\F1383"}.mdi-spade::before{content:"\\F0E65"}.mdi-speaker::before{content:"\\F04C3"}.mdi-speaker-bluetooth::before{content:"\\F09A2"}.mdi-speaker-multiple::before{content:"\\F0D38"}.mdi-speaker-off::before{content:"\\F04C4"}.mdi-speaker-wireless::before{content:"\\F071F"}.mdi-speedometer::before{content:"\\F04C5"}.mdi-speedometer-medium::before{content:"\\F0F85"}.mdi-speedometer-slow::before{content:"\\F0F86"}.mdi-spellcheck::before{content:"\\F04C6"}.mdi-spider::before{content:"\\F11EA"}.mdi-spider-thread::before{content:"\\F11EB"}.mdi-spider-web::before{content:"\\F0BCA"}.mdi-spoon-sugar::before{content:"\\F1429"}.mdi-spotify::before{content:"\\F04C7"}.mdi-spotlight::before{content:"\\F04C8"}.mdi-spotlight-beam::before{content:"\\F04C9"}.mdi-spray::before{content:"\\F0665"}.mdi-spray-bottle::before{content:"\\F0AE0"}.mdi-sprinkler::before{content:"\\F105F"}.mdi-sprinkler-variant::before{content:"\\F1060"}.mdi-sprout::before{content:"\\F0E66"}.mdi-sprout-outline::before{content:"\\F0E67"}.mdi-square::before{content:"\\F0764"}.mdi-square-edit-outline::before{content:"\\F090C"}.mdi-square-medium::before{content:"\\F0A13"}.mdi-square-medium-outline::before{content:"\\F0A14"}.mdi-square-off::before{content:"\\F12EE"}.mdi-square-off-outline::before{content:"\\F12EF"}.mdi-square-outline::before{content:"\\F0763"}.mdi-square-root::before{content:"\\F0784"}.mdi-square-root-box::before{content:"\\F09A3"}.mdi-square-small::before{content:"\\F0A15"}.mdi-square-wave::before{content:"\\F147B"}.mdi-squeegee::before{content:"\\F0AE1"}.mdi-ssh::before{content:"\\F08C0"}.mdi-stack-exchange::before{content:"\\F060B"}.mdi-stack-overflow::before{content:"\\F04CC"}.mdi-stackpath::before{content:"\\F0359"}.mdi-stadium::before{content:"\\F0FF9"}.mdi-stadium-variant::before{content:"\\F0720"}.mdi-stairs::before{content:"\\F04CD"}.mdi-stairs-box::before{content:"\\F139E"}.mdi-stairs-down::before{content:"\\F12BE"}.mdi-stairs-up::before{content:"\\F12BD"}.mdi-stamper::before{content:"\\F0D39"}.mdi-standard-definition::before{content:"\\F07EF"}.mdi-star::before{content:"\\F04CE"}.mdi-star-box::before{content:"\\F0A73"}.mdi-star-box-multiple::before{content:"\\F1286"}.mdi-star-box-multiple-outline::before{content:"\\F1287"}.mdi-star-box-outline::before{content:"\\F0A74"}.mdi-star-circle::before{content:"\\F04CF"}.mdi-star-circle-outline::before{content:"\\F09A4"}.mdi-star-face::before{content:"\\F09A5"}.mdi-star-four-points::before{content:"\\F0AE2"}.mdi-star-four-points-outline::before{content:"\\F0AE3"}.mdi-star-half::before{content:"\\F0246"}.mdi-star-half-full::before{content:"\\F04D0"}.mdi-star-off::before{content:"\\F04D1"}.mdi-star-outline::before{content:"\\F04D2"}.mdi-star-three-points::before{content:"\\F0AE4"}.mdi-star-three-points-outline::before{content:"\\F0AE5"}.mdi-state-machine::before{content:"\\F11EF"}.mdi-steam::before{content:"\\F04D3"}.mdi-steering::before{content:"\\F04D4"}.mdi-steering-off::before{content:"\\F090E"}.mdi-step-backward::before{content:"\\F04D5"}.mdi-step-backward-2::before{content:"\\F04D6"}.mdi-step-forward::before{content:"\\F04D7"}.mdi-step-forward-2::before{content:"\\F04D8"}.mdi-stethoscope::before{content:"\\F04D9"}.mdi-sticker::before{content:"\\F1364"}.mdi-sticker-alert::before{content:"\\F1365"}.mdi-sticker-alert-outline::before{content:"\\F1366"}.mdi-sticker-check::before{content:"\\F1367"}.mdi-sticker-check-outline::before{content:"\\F1368"}.mdi-sticker-circle-outline::before{content:"\\F05D0"}.mdi-sticker-emoji::before{content:"\\F0785"}.mdi-sticker-minus::before{content:"\\F1369"}.mdi-sticker-minus-outline::before{content:"\\F136A"}.mdi-sticker-outline::before{content:"\\F136B"}.mdi-sticker-plus::before{content:"\\F136C"}.mdi-sticker-plus-outline::before{content:"\\F136D"}.mdi-sticker-remove::before{content:"\\F136E"}.mdi-sticker-remove-outline::before{content:"\\F136F"}.mdi-stocking::before{content:"\\F04DA"}.mdi-stomach::before{content:"\\F1093"}.mdi-stop::before{content:"\\F04DB"}.mdi-stop-circle::before{content:"\\F0666"}.mdi-stop-circle-outline::before{content:"\\F0667"}.mdi-store::before{content:"\\F04DC"}.mdi-store-24-hour::before{content:"\\F04DD"}.mdi-store-outline::before{content:"\\F1361"}.mdi-storefront::before{content:"\\F07C7"}.mdi-storefront-outline::before{content:"\\F10C1"}.mdi-stove::before{content:"\\F04DE"}.mdi-strategy::before{content:"\\F11D6"}.mdi-stretch-to-page::before{content:"\\F0F2B"}.mdi-stretch-to-page-outline::before{content:"\\F0F2C"}.mdi-string-lights::before{content:"\\F12BA"}.mdi-string-lights-off::before{content:"\\F12BB"}.mdi-subdirectory-arrow-left::before{content:"\\F060C"}.mdi-subdirectory-arrow-right::before{content:"\\F060D"}.mdi-subtitles::before{content:"\\F0A16"}.mdi-subtitles-outline::before{content:"\\F0A17"}.mdi-subway::before{content:"\\F06AC"}.mdi-subway-alert-variant::before{content:"\\F0D9D"}.mdi-subway-variant::before{content:"\\F04DF"}.mdi-summit::before{content:"\\F0786"}.mdi-sunglasses::before{content:"\\F04E0"}.mdi-surround-sound::before{content:"\\F05C5"}.mdi-surround-sound-2-0::before{content:"\\F07F0"}.mdi-surround-sound-3-1::before{content:"\\F07F1"}.mdi-surround-sound-5-1::before{content:"\\F07F2"}.mdi-surround-sound-7-1::before{content:"\\F07F3"}.mdi-svg::before{content:"\\F0721"}.mdi-swap-horizontal::before{content:"\\F04E1"}.mdi-swap-horizontal-bold::before{content:"\\F0BCD"}.mdi-swap-horizontal-circle::before{content:"\\F0FE1"}.mdi-swap-horizontal-circle-outline::before{content:"\\F0FE2"}.mdi-swap-horizontal-variant::before{content:"\\F08C1"}.mdi-swap-vertical::before{content:"\\F04E2"}.mdi-swap-vertical-bold::before{content:"\\F0BCE"}.mdi-swap-vertical-circle::before{content:"\\F0FE3"}.mdi-swap-vertical-circle-outline::before{content:"\\F0FE4"}.mdi-swap-vertical-variant::before{content:"\\F08C2"}.mdi-swim::before{content:"\\F04E3"}.mdi-switch::before{content:"\\F04E4"}.mdi-sword::before{content:"\\F04E5"}.mdi-sword-cross::before{content:"\\F0787"}.mdi-syllabary-hangul::before{content:"\\F1333"}.mdi-syllabary-hiragana::before{content:"\\F1334"}.mdi-syllabary-katakana::before{content:"\\F1335"}.mdi-syllabary-katakana-halfwidth::before{content:"\\F1336"}.mdi-symfony::before{content:"\\F0AE6"}.mdi-sync::before{content:"\\F04E6"}.mdi-sync-alert::before{content:"\\F04E7"}.mdi-sync-circle::before{content:"\\F1378"}.mdi-sync-off::before{content:"\\F04E8"}.mdi-tab::before{content:"\\F04E9"}.mdi-tab-minus::before{content:"\\F0B4B"}.mdi-tab-plus::before{content:"\\F075C"}.mdi-tab-remove::before{content:"\\F0B4C"}.mdi-tab-unselected::before{content:"\\F04EA"}.mdi-table::before{content:"\\F04EB"}.mdi-table-account::before{content:"\\F13B9"}.mdi-table-alert::before{content:"\\F13BA"}.mdi-table-arrow-down::before{content:"\\F13BB"}.mdi-table-arrow-left::before{content:"\\F13BC"}.mdi-table-arrow-right::before{content:"\\F13BD"}.mdi-table-arrow-up::before{content:"\\F13BE"}.mdi-table-border::before{content:"\\F0A18"}.mdi-table-cancel::before{content:"\\F13BF"}.mdi-table-chair::before{content:"\\F1061"}.mdi-table-check::before{content:"\\F13C0"}.mdi-table-clock::before{content:"\\F13C1"}.mdi-table-cog::before{content:"\\F13C2"}.mdi-table-column::before{content:"\\F0835"}.mdi-table-column-plus-after::before{content:"\\F04EC"}.mdi-table-column-plus-before::before{content:"\\F04ED"}.mdi-table-column-remove::before{content:"\\F04EE"}.mdi-table-column-width::before{content:"\\F04EF"}.mdi-table-edit::before{content:"\\F04F0"}.mdi-table-eye::before{content:"\\F1094"}.mdi-table-eye-off::before{content:"\\F13C3"}.mdi-table-furniture::before{content:"\\F05BC"}.mdi-table-headers-eye::before{content:"\\F121D"}.mdi-table-headers-eye-off::before{content:"\\F121E"}.mdi-table-heart::before{content:"\\F13C4"}.mdi-table-key::before{content:"\\F13C5"}.mdi-table-large::before{content:"\\F04F1"}.mdi-table-large-plus::before{content:"\\F0F87"}.mdi-table-large-remove::before{content:"\\F0F88"}.mdi-table-lock::before{content:"\\F13C6"}.mdi-table-merge-cells::before{content:"\\F09A6"}.mdi-table-minus::before{content:"\\F13C7"}.mdi-table-multiple::before{content:"\\F13C8"}.mdi-table-network::before{content:"\\F13C9"}.mdi-table-of-contents::before{content:"\\F0836"}.mdi-table-off::before{content:"\\F13CA"}.mdi-table-plus::before{content:"\\F0A75"}.mdi-table-refresh::before{content:"\\F13A0"}.mdi-table-remove::before{content:"\\F0A76"}.mdi-table-row::before{content:"\\F0837"}.mdi-table-row-height::before{content:"\\F04F2"}.mdi-table-row-plus-after::before{content:"\\F04F3"}.mdi-table-row-plus-before::before{content:"\\F04F4"}.mdi-table-row-remove::before{content:"\\F04F5"}.mdi-table-search::before{content:"\\F090F"}.mdi-table-settings::before{content:"\\F0838"}.mdi-table-split-cell::before{content:"\\F142A"}.mdi-table-star::before{content:"\\F13CB"}.mdi-table-sync::before{content:"\\F13A1"}.mdi-table-tennis::before{content:"\\F0E68"}.mdi-tablet::before{content:"\\F04F6"}.mdi-tablet-android::before{content:"\\F04F7"}.mdi-tablet-cellphone::before{content:"\\F09A7"}.mdi-tablet-dashboard::before{content:"\\F0ECE"}.mdi-tablet-ipad::before{content:"\\F04F8"}.mdi-taco::before{content:"\\F0762"}.mdi-tag::before{content:"\\F04F9"}.mdi-tag-faces::before{content:"\\F04FA"}.mdi-tag-heart::before{content:"\\F068B"}.mdi-tag-heart-outline::before{content:"\\F0BCF"}.mdi-tag-minus::before{content:"\\F0910"}.mdi-tag-minus-outline::before{content:"\\F121F"}.mdi-tag-multiple::before{content:"\\F04FB"}.mdi-tag-multiple-outline::before{content:"\\F12F7"}.mdi-tag-off::before{content:"\\F1220"}.mdi-tag-off-outline::before{content:"\\F1221"}.mdi-tag-outline::before{content:"\\F04FC"}.mdi-tag-plus::before{content:"\\F0722"}.mdi-tag-plus-outline::before{content:"\\F1222"}.mdi-tag-remove::before{content:"\\F0723"}.mdi-tag-remove-outline::before{content:"\\F1223"}.mdi-tag-text::before{content:"\\F1224"}.mdi-tag-text-outline::before{content:"\\F04FD"}.mdi-tailwind::before{content:"\\F13FF"}.mdi-tank::before{content:"\\F0D3A"}.mdi-tanker-truck::before{content:"\\F0FE5"}.mdi-tape-measure::before{content:"\\F0B4D"}.mdi-target::before{content:"\\F04FE"}.mdi-target-account::before{content:"\\F0BD0"}.mdi-target-variant::before{content:"\\F0A77"}.mdi-taxi::before{content:"\\F04FF"}.mdi-tea::before{content:"\\F0D9E"}.mdi-tea-outline::before{content:"\\F0D9F"}.mdi-teach::before{content:"\\F0890"}.mdi-teamviewer::before{content:"\\F0500"}.mdi-telegram::before{content:"\\F0501"}.mdi-telescope::before{content:"\\F0B4E"}.mdi-television::before{content:"\\F0502"}.mdi-television-ambient-light::before{content:"\\F1356"}.mdi-television-box::before{content:"\\F0839"}.mdi-television-classic::before{content:"\\F07F4"}.mdi-television-classic-off::before{content:"\\F083A"}.mdi-television-clean::before{content:"\\F1110"}.mdi-television-guide::before{content:"\\F0503"}.mdi-television-off::before{content:"\\F083B"}.mdi-television-pause::before{content:"\\F0F89"}.mdi-television-play::before{content:"\\F0ECF"}.mdi-television-stop::before{content:"\\F0F8A"}.mdi-temperature-celsius::before{content:"\\F0504"}.mdi-temperature-fahrenheit::before{content:"\\F0505"}.mdi-temperature-kelvin::before{content:"\\F0506"}.mdi-tennis::before{content:"\\F0DA0"}.mdi-tennis-ball::before{content:"\\F0507"}.mdi-tent::before{content:"\\F0508"}.mdi-terraform::before{content:"\\F1062"}.mdi-terrain::before{content:"\\F0509"}.mdi-test-tube::before{content:"\\F0668"}.mdi-test-tube-empty::before{content:"\\F0911"}.mdi-test-tube-off::before{content:"\\F0912"}.mdi-text::before{content:"\\F09A8"}.mdi-text-box::before{content:"\\F021A"}.mdi-text-box-check::before{content:"\\F0EA6"}.mdi-text-box-check-outline::before{content:"\\F0EA7"}.mdi-text-box-minus::before{content:"\\F0EA8"}.mdi-text-box-minus-outline::before{content:"\\F0EA9"}.mdi-text-box-multiple::before{content:"\\F0AB7"}.mdi-text-box-multiple-outline::before{content:"\\F0AB8"}.mdi-text-box-outline::before{content:"\\F09ED"}.mdi-text-box-plus::before{content:"\\F0EAA"}.mdi-text-box-plus-outline::before{content:"\\F0EAB"}.mdi-text-box-remove::before{content:"\\F0EAC"}.mdi-text-box-remove-outline::before{content:"\\F0EAD"}.mdi-text-box-search::before{content:"\\F0EAE"}.mdi-text-box-search-outline::before{content:"\\F0EAF"}.mdi-text-recognition::before{content:"\\F113D"}.mdi-text-search::before{content:"\\F13B8"}.mdi-text-shadow::before{content:"\\F0669"}.mdi-text-short::before{content:"\\F09A9"}.mdi-text-subject::before{content:"\\F09AA"}.mdi-text-to-speech::before{content:"\\F050A"}.mdi-text-to-speech-off::before{content:"\\F050B"}.mdi-texture::before{content:"\\F050C"}.mdi-texture-box::before{content:"\\F0FE6"}.mdi-theater::before{content:"\\F050D"}.mdi-theme-light-dark::before{content:"\\F050E"}.mdi-thermometer::before{content:"\\F050F"}.mdi-thermometer-alert::before{content:"\\F0E01"}.mdi-thermometer-chevron-down::before{content:"\\F0E02"}.mdi-thermometer-chevron-up::before{content:"\\F0E03"}.mdi-thermometer-high::before{content:"\\F10C2"}.mdi-thermometer-lines::before{content:"\\F0510"}.mdi-thermometer-low::before{content:"\\F10C3"}.mdi-thermometer-minus::before{content:"\\F0E04"}.mdi-thermometer-plus::before{content:"\\F0E05"}.mdi-thermostat::before{content:"\\F0393"}.mdi-thermostat-box::before{content:"\\F0891"}.mdi-thought-bubble::before{content:"\\F07F6"}.mdi-thought-bubble-outline::before{content:"\\F07F7"}.mdi-thumb-down::before{content:"\\F0511"}.mdi-thumb-down-outline::before{content:"\\F0512"}.mdi-thumb-up::before{content:"\\F0513"}.mdi-thumb-up-outline::before{content:"\\F0514"}.mdi-thumbs-up-down::before{content:"\\F0515"}.mdi-ticket::before{content:"\\F0516"}.mdi-ticket-account::before{content:"\\F0517"}.mdi-ticket-confirmation::before{content:"\\F0518"}.mdi-ticket-confirmation-outline::before{content:"\\F13AA"}.mdi-ticket-outline::before{content:"\\F0913"}.mdi-ticket-percent::before{content:"\\F0724"}.mdi-ticket-percent-outline::before{content:"\\F142B"}.mdi-tie::before{content:"\\F0519"}.mdi-tilde::before{content:"\\F0725"}.mdi-timelapse::before{content:"\\F051A"}.mdi-timeline::before{content:"\\F0BD1"}.mdi-timeline-alert::before{content:"\\F0F95"}.mdi-timeline-alert-outline::before{content:"\\F0F98"}.mdi-timeline-clock::before{content:"\\F11FB"}.mdi-timeline-clock-outline::before{content:"\\F11FC"}.mdi-timeline-help::before{content:"\\F0F99"}.mdi-timeline-help-outline::before{content:"\\F0F9A"}.mdi-timeline-outline::before{content:"\\F0BD2"}.mdi-timeline-plus::before{content:"\\F0F96"}.mdi-timeline-plus-outline::before{content:"\\F0F97"}.mdi-timeline-text::before{content:"\\F0BD3"}.mdi-timeline-text-outline::before{content:"\\F0BD4"}.mdi-timer::before{content:"\\F13AB"}.mdi-timer-10::before{content:"\\F051C"}.mdi-timer-3::before{content:"\\F051D"}.mdi-timer-off::before{content:"\\F13AC"}.mdi-timer-off-outline::before{content:"\\F051E"}.mdi-timer-outline::before{content:"\\F051B"}.mdi-timer-sand::before{content:"\\F051F"}.mdi-timer-sand-empty::before{content:"\\F06AD"}.mdi-timer-sand-full::before{content:"\\F078C"}.mdi-timetable::before{content:"\\F0520"}.mdi-toaster::before{content:"\\F1063"}.mdi-toaster-off::before{content:"\\F11B7"}.mdi-toaster-oven::before{content:"\\F0CD3"}.mdi-toggle-switch::before{content:"\\F0521"}.mdi-toggle-switch-off::before{content:"\\F0522"}.mdi-toggle-switch-off-outline::before{content:"\\F0A19"}.mdi-toggle-switch-outline::before{content:"\\F0A1A"}.mdi-toilet::before{content:"\\F09AB"}.mdi-toolbox::before{content:"\\F09AC"}.mdi-toolbox-outline::before{content:"\\F09AD"}.mdi-tools::before{content:"\\F1064"}.mdi-tooltip::before{content:"\\F0523"}.mdi-tooltip-account::before{content:"\\F000C"}.mdi-tooltip-edit::before{content:"\\F0524"}.mdi-tooltip-edit-outline::before{content:"\\F12C5"}.mdi-tooltip-image::before{content:"\\F0525"}.mdi-tooltip-image-outline::before{content:"\\F0BD5"}.mdi-tooltip-outline::before{content:"\\F0526"}.mdi-tooltip-plus::before{content:"\\F0BD6"}.mdi-tooltip-plus-outline::before{content:"\\F0527"}.mdi-tooltip-text::before{content:"\\F0528"}.mdi-tooltip-text-outline::before{content:"\\F0BD7"}.mdi-tooth::before{content:"\\F08C3"}.mdi-tooth-outline::before{content:"\\F0529"}.mdi-toothbrush::before{content:"\\F1129"}.mdi-toothbrush-electric::before{content:"\\F112C"}.mdi-toothbrush-paste::before{content:"\\F112A"}.mdi-tortoise::before{content:"\\F0D3B"}.mdi-toslink::before{content:"\\F12B8"}.mdi-tournament::before{content:"\\F09AE"}.mdi-tow-truck::before{content:"\\F083C"}.mdi-tower-beach::before{content:"\\F0681"}.mdi-tower-fire::before{content:"\\F0682"}.mdi-toy-brick::before{content:"\\F1288"}.mdi-toy-brick-marker::before{content:"\\F1289"}.mdi-toy-brick-marker-outline::before{content:"\\F128A"}.mdi-toy-brick-minus::before{content:"\\F128B"}.mdi-toy-brick-minus-outline::before{content:"\\F128C"}.mdi-toy-brick-outline::before{content:"\\F128D"}.mdi-toy-brick-plus::before{content:"\\F128E"}.mdi-toy-brick-plus-outline::before{content:"\\F128F"}.mdi-toy-brick-remove::before{content:"\\F1290"}.mdi-toy-brick-remove-outline::before{content:"\\F1291"}.mdi-toy-brick-search::before{content:"\\F1292"}.mdi-toy-brick-search-outline::before{content:"\\F1293"}.mdi-track-light::before{content:"\\F0914"}.mdi-trackpad::before{content:"\\F07F8"}.mdi-trackpad-lock::before{content:"\\F0933"}.mdi-tractor::before{content:"\\F0892"}.mdi-tractor-variant::before{content:"\\F14C4"}.mdi-trademark::before{content:"\\F0A78"}.mdi-traffic-cone::before{content:"\\F137C"}.mdi-traffic-light::before{content:"\\F052B"}.mdi-train::before{content:"\\F052C"}.mdi-train-car::before{content:"\\F0BD8"}.mdi-train-variant::before{content:"\\F08C4"}.mdi-tram::before{content:"\\F052D"}.mdi-tram-side::before{content:"\\F0FE7"}.mdi-transcribe::before{content:"\\F052E"}.mdi-transcribe-close::before{content:"\\F052F"}.mdi-transfer::before{content:"\\F1065"}.mdi-transfer-down::before{content:"\\F0DA1"}.mdi-transfer-left::before{content:"\\F0DA2"}.mdi-transfer-right::before{content:"\\F0530"}.mdi-transfer-up::before{content:"\\F0DA3"}.mdi-transit-connection::before{content:"\\F0D3C"}.mdi-transit-connection-variant::before{content:"\\F0D3D"}.mdi-transit-detour::before{content:"\\F0F8B"}.mdi-transit-transfer::before{content:"\\F06AE"}.mdi-transition::before{content:"\\F0915"}.mdi-transition-masked::before{content:"\\F0916"}.mdi-translate::before{content:"\\F05CA"}.mdi-translate-off::before{content:"\\F0E06"}.mdi-transmission-tower::before{content:"\\F0D3E"}.mdi-trash-can::before{content:"\\F0A79"}.mdi-trash-can-outline::before{content:"\\F0A7A"}.mdi-tray::before{content:"\\F1294"}.mdi-tray-alert::before{content:"\\F1295"}.mdi-tray-full::before{content:"\\F1296"}.mdi-tray-minus::before{content:"\\F1297"}.mdi-tray-plus::before{content:"\\F1298"}.mdi-tray-remove::before{content:"\\F1299"}.mdi-treasure-chest::before{content:"\\F0726"}.mdi-tree::before{content:"\\F0531"}.mdi-tree-outline::before{content:"\\F0E69"}.mdi-trello::before{content:"\\F0532"}.mdi-trending-down::before{content:"\\F0533"}.mdi-trending-neutral::before{content:"\\F0534"}.mdi-trending-up::before{content:"\\F0535"}.mdi-triangle::before{content:"\\F0536"}.mdi-triangle-outline::before{content:"\\F0537"}.mdi-triangle-wave::before{content:"\\F147C"}.mdi-triforce::before{content:"\\F0BD9"}.mdi-trophy::before{content:"\\F0538"}.mdi-trophy-award::before{content:"\\F0539"}.mdi-trophy-broken::before{content:"\\F0DA4"}.mdi-trophy-outline::before{content:"\\F053A"}.mdi-trophy-variant::before{content:"\\F053B"}.mdi-trophy-variant-outline::before{content:"\\F053C"}.mdi-truck::before{content:"\\F053D"}.mdi-truck-check::before{content:"\\F0CD4"}.mdi-truck-check-outline::before{content:"\\F129A"}.mdi-truck-delivery::before{content:"\\F053E"}.mdi-truck-delivery-outline::before{content:"\\F129B"}.mdi-truck-fast::before{content:"\\F0788"}.mdi-truck-fast-outline::before{content:"\\F129C"}.mdi-truck-outline::before{content:"\\F129D"}.mdi-truck-trailer::before{content:"\\F0727"}.mdi-trumpet::before{content:"\\F1096"}.mdi-tshirt-crew::before{content:"\\F0A7B"}.mdi-tshirt-crew-outline::before{content:"\\F053F"}.mdi-tshirt-v::before{content:"\\F0A7C"}.mdi-tshirt-v-outline::before{content:"\\F0540"}.mdi-tumble-dryer::before{content:"\\F0917"}.mdi-tumble-dryer-alert::before{content:"\\F11BA"}.mdi-tumble-dryer-off::before{content:"\\F11BB"}.mdi-tune::before{content:"\\F062E"}.mdi-tune-vertical::before{content:"\\F066A"}.mdi-turnstile::before{content:"\\F0CD5"}.mdi-turnstile-outline::before{content:"\\F0CD6"}.mdi-turtle::before{content:"\\F0CD7"}.mdi-twitch::before{content:"\\F0543"}.mdi-twitter::before{content:"\\F0544"}.mdi-twitter-retweet::before{content:"\\F0547"}.mdi-two-factor-authentication::before{content:"\\F09AF"}.mdi-typewriter::before{content:"\\F0F2D"}.mdi-ubisoft::before{content:"\\F0BDA"}.mdi-ubuntu::before{content:"\\F0548"}.mdi-ufo::before{content:"\\F10C4"}.mdi-ufo-outline::before{content:"\\F10C5"}.mdi-ultra-high-definition::before{content:"\\F07F9"}.mdi-umbraco::before{content:"\\F0549"}.mdi-umbrella::before{content:"\\F054A"}.mdi-umbrella-closed::before{content:"\\F09B0"}.mdi-umbrella-closed-outline::before{content:"\\F13E2"}.mdi-umbrella-closed-variant::before{content:"\\F13E1"}.mdi-umbrella-outline::before{content:"\\F054B"}.mdi-undo::before{content:"\\F054C"}.mdi-undo-variant::before{content:"\\F054D"}.mdi-unfold-less-horizontal::before{content:"\\F054E"}.mdi-unfold-less-vertical::before{content:"\\F0760"}.mdi-unfold-more-horizontal::before{content:"\\F054F"}.mdi-unfold-more-vertical::before{content:"\\F0761"}.mdi-ungroup::before{content:"\\F0550"}.mdi-unicode::before{content:"\\F0ED0"}.mdi-unity::before{content:"\\F06AF"}.mdi-unreal::before{content:"\\F09B1"}.mdi-untappd::before{content:"\\F0551"}.mdi-update::before{content:"\\F06B0"}.mdi-upload::before{content:"\\F0552"}.mdi-upload-lock::before{content:"\\F1373"}.mdi-upload-lock-outline::before{content:"\\F1374"}.mdi-upload-multiple::before{content:"\\F083D"}.mdi-upload-network::before{content:"\\F06F6"}.mdi-upload-network-outline::before{content:"\\F0CD8"}.mdi-upload-off::before{content:"\\F10C6"}.mdi-upload-off-outline::before{content:"\\F10C7"}.mdi-upload-outline::before{content:"\\F0E07"}.mdi-usb::before{content:"\\F0553"}.mdi-usb-flash-drive::before{content:"\\F129E"}.mdi-usb-flash-drive-outline::before{content:"\\F129F"}.mdi-usb-port::before{content:"\\F11F0"}.mdi-valve::before{content:"\\F1066"}.mdi-valve-closed::before{content:"\\F1067"}.mdi-valve-open::before{content:"\\F1068"}.mdi-van-passenger::before{content:"\\F07FA"}.mdi-van-utility::before{content:"\\F07FB"}.mdi-vanish::before{content:"\\F07FC"}.mdi-vanity-light::before{content:"\\F11E1"}.mdi-variable::before{content:"\\F0AE7"}.mdi-variable-box::before{content:"\\F1111"}.mdi-vector-arrange-above::before{content:"\\F0554"}.mdi-vector-arrange-below::before{content:"\\F0555"}.mdi-vector-bezier::before{content:"\\F0AE8"}.mdi-vector-circle::before{content:"\\F0556"}.mdi-vector-circle-variant::before{content:"\\F0557"}.mdi-vector-combine::before{content:"\\F0558"}.mdi-vector-curve::before{content:"\\F0559"}.mdi-vector-difference::before{content:"\\F055A"}.mdi-vector-difference-ab::before{content:"\\F055B"}.mdi-vector-difference-ba::before{content:"\\F055C"}.mdi-vector-ellipse::before{content:"\\F0893"}.mdi-vector-intersection::before{content:"\\F055D"}.mdi-vector-line::before{content:"\\F055E"}.mdi-vector-link::before{content:"\\F0FE8"}.mdi-vector-point::before{content:"\\F055F"}.mdi-vector-polygon::before{content:"\\F0560"}.mdi-vector-polyline::before{content:"\\F0561"}.mdi-vector-polyline-edit::before{content:"\\F1225"}.mdi-vector-polyline-minus::before{content:"\\F1226"}.mdi-vector-polyline-plus::before{content:"\\F1227"}.mdi-vector-polyline-remove::before{content:"\\F1228"}.mdi-vector-radius::before{content:"\\F074A"}.mdi-vector-rectangle::before{content:"\\F05C6"}.mdi-vector-selection::before{content:"\\F0562"}.mdi-vector-square::before{content:"\\F0001"}.mdi-vector-triangle::before{content:"\\F0563"}.mdi-vector-union::before{content:"\\F0564"}.mdi-vhs::before{content:"\\F0A1B"}.mdi-vibrate::before{content:"\\F0566"}.mdi-vibrate-off::before{content:"\\F0CD9"}.mdi-video::before{content:"\\F0567"}.mdi-video-3d::before{content:"\\F07FD"}.mdi-video-3d-off::before{content:"\\F13D9"}.mdi-video-3d-variant::before{content:"\\F0ED1"}.mdi-video-4k-box::before{content:"\\F083E"}.mdi-video-account::before{content:"\\F0919"}.mdi-video-box::before{content:"\\F00FD"}.mdi-video-box-off::before{content:"\\F00FE"}.mdi-video-check::before{content:"\\F1069"}.mdi-video-check-outline::before{content:"\\F106A"}.mdi-video-image::before{content:"\\F091A"}.mdi-video-input-antenna::before{content:"\\F083F"}.mdi-video-input-component::before{content:"\\F0840"}.mdi-video-input-hdmi::before{content:"\\F0841"}.mdi-video-input-scart::before{content:"\\F0F8C"}.mdi-video-input-svideo::before{content:"\\F0842"}.mdi-video-minus::before{content:"\\F09B2"}.mdi-video-minus-outline::before{content:"\\F02BA"}.mdi-video-off::before{content:"\\F0568"}.mdi-video-off-outline::before{content:"\\F0BDB"}.mdi-video-outline::before{content:"\\F0BDC"}.mdi-video-plus::before{content:"\\F09B3"}.mdi-video-plus-outline::before{content:"\\F01D3"}.mdi-video-stabilization::before{content:"\\F091B"}.mdi-video-switch::before{content:"\\F0569"}.mdi-video-switch-outline::before{content:"\\F0790"}.mdi-video-vintage::before{content:"\\F0A1C"}.mdi-video-wireless::before{content:"\\F0ED2"}.mdi-video-wireless-outline::before{content:"\\F0ED3"}.mdi-view-agenda::before{content:"\\F056A"}.mdi-view-agenda-outline::before{content:"\\F11D8"}.mdi-view-array::before{content:"\\F056B"}.mdi-view-array-outline::before{content:"\\F1485"}.mdi-view-carousel::before{content:"\\F056C"}.mdi-view-carousel-outline::before{content:"\\F1486"}.mdi-view-column::before{content:"\\F056D"}.mdi-view-column-outline::before{content:"\\F1487"}.mdi-view-comfy::before{content:"\\F0E6A"}.mdi-view-comfy-outline::before{content:"\\F1488"}.mdi-view-compact::before{content:"\\F0E6B"}.mdi-view-compact-outline::before{content:"\\F0E6C"}.mdi-view-dashboard::before{content:"\\F056E"}.mdi-view-dashboard-outline::before{content:"\\F0A1D"}.mdi-view-dashboard-variant::before{content:"\\F0843"}.mdi-view-dashboard-variant-outline::before{content:"\\F1489"}.mdi-view-day::before{content:"\\F056F"}.mdi-view-day-outline::before{content:"\\F148A"}.mdi-view-grid::before{content:"\\F0570"}.mdi-view-grid-outline::before{content:"\\F11D9"}.mdi-view-grid-plus::before{content:"\\F0F8D"}.mdi-view-grid-plus-outline::before{content:"\\F11DA"}.mdi-view-headline::before{content:"\\F0571"}.mdi-view-list::before{content:"\\F0572"}.mdi-view-list-outline::before{content:"\\F148B"}.mdi-view-module::before{content:"\\F0573"}.mdi-view-module-outline::before{content:"\\F148C"}.mdi-view-parallel::before{content:"\\F0728"}.mdi-view-parallel-outline::before{content:"\\F148D"}.mdi-view-quilt::before{content:"\\F0574"}.mdi-view-quilt-outline::before{content:"\\F148E"}.mdi-view-sequential::before{content:"\\F0729"}.mdi-view-sequential-outline::before{content:"\\F148F"}.mdi-view-split-horizontal::before{content:"\\F0BCB"}.mdi-view-split-vertical::before{content:"\\F0BCC"}.mdi-view-stream::before{content:"\\F0575"}.mdi-view-stream-outline::before{content:"\\F1490"}.mdi-view-week::before{content:"\\F0576"}.mdi-view-week-outline::before{content:"\\F1491"}.mdi-vimeo::before{content:"\\F0577"}.mdi-violin::before{content:"\\F060F"}.mdi-virtual-reality::before{content:"\\F0894"}.mdi-virus::before{content:"\\F13B6"}.mdi-virus-outline::before{content:"\\F13B7"}.mdi-vk::before{content:"\\F0579"}.mdi-vlc::before{content:"\\F057C"}.mdi-voice-off::before{content:"\\F0ED4"}.mdi-voicemail::before{content:"\\F057D"}.mdi-volleyball::before{content:"\\F09B4"}.mdi-volume-high::before{content:"\\F057E"}.mdi-volume-low::before{content:"\\F057F"}.mdi-volume-medium::before{content:"\\F0580"}.mdi-volume-minus::before{content:"\\F075E"}.mdi-volume-mute::before{content:"\\F075F"}.mdi-volume-off::before{content:"\\F0581"}.mdi-volume-plus::before{content:"\\F075D"}.mdi-volume-source::before{content:"\\F1120"}.mdi-volume-variant-off::before{content:"\\F0E08"}.mdi-volume-vibrate::before{content:"\\F1121"}.mdi-vote::before{content:"\\F0A1F"}.mdi-vote-outline::before{content:"\\F0A20"}.mdi-vpn::before{content:"\\F0582"}.mdi-vuejs::before{content:"\\F0844"}.mdi-vuetify::before{content:"\\F0E6D"}.mdi-walk::before{content:"\\F0583"}.mdi-wall::before{content:"\\F07FE"}.mdi-wall-sconce::before{content:"\\F091C"}.mdi-wall-sconce-flat::before{content:"\\F091D"}.mdi-wall-sconce-flat-variant::before{content:"\\F041C"}.mdi-wall-sconce-round::before{content:"\\F0748"}.mdi-wall-sconce-round-variant::before{content:"\\F091E"}.mdi-wallet::before{content:"\\F0584"}.mdi-wallet-giftcard::before{content:"\\F0585"}.mdi-wallet-membership::before{content:"\\F0586"}.mdi-wallet-outline::before{content:"\\F0BDD"}.mdi-wallet-plus::before{content:"\\F0F8E"}.mdi-wallet-plus-outline::before{content:"\\F0F8F"}.mdi-wallet-travel::before{content:"\\F0587"}.mdi-wallpaper::before{content:"\\F0E09"}.mdi-wan::before{content:"\\F0588"}.mdi-wardrobe::before{content:"\\F0F90"}.mdi-wardrobe-outline::before{content:"\\F0F91"}.mdi-warehouse::before{content:"\\F0F81"}.mdi-washing-machine::before{content:"\\F072A"}.mdi-washing-machine-alert::before{content:"\\F11BC"}.mdi-washing-machine-off::before{content:"\\F11BD"}.mdi-watch::before{content:"\\F0589"}.mdi-watch-export::before{content:"\\F058A"}.mdi-watch-export-variant::before{content:"\\F0895"}.mdi-watch-import::before{content:"\\F058B"}.mdi-watch-import-variant::before{content:"\\F0896"}.mdi-watch-variant::before{content:"\\F0897"}.mdi-watch-vibrate::before{content:"\\F06B1"}.mdi-watch-vibrate-off::before{content:"\\F0CDA"}.mdi-water::before{content:"\\F058C"}.mdi-water-boiler::before{content:"\\F0F92"}.mdi-water-boiler-alert::before{content:"\\F11B3"}.mdi-water-boiler-off::before{content:"\\F11B4"}.mdi-water-off::before{content:"\\F058D"}.mdi-water-outline::before{content:"\\F0E0A"}.mdi-water-percent::before{content:"\\F058E"}.mdi-water-polo::before{content:"\\F12A0"}.mdi-water-pump::before{content:"\\F058F"}.mdi-water-pump-off::before{content:"\\F0F93"}.mdi-water-well::before{content:"\\F106B"}.mdi-water-well-outline::before{content:"\\F106C"}.mdi-watering-can::before{content:"\\F1481"}.mdi-watering-can-outline::before{content:"\\F1482"}.mdi-watermark::before{content:"\\F0612"}.mdi-wave::before{content:"\\F0F2E"}.mdi-waveform::before{content:"\\F147D"}.mdi-waves::before{content:"\\F078D"}.mdi-waze::before{content:"\\F0BDE"}.mdi-weather-cloudy::before{content:"\\F0590"}.mdi-weather-cloudy-alert::before{content:"\\F0F2F"}.mdi-weather-cloudy-arrow-right::before{content:"\\F0E6E"}.mdi-weather-fog::before{content:"\\F0591"}.mdi-weather-hail::before{content:"\\F0592"}.mdi-weather-hazy::before{content:"\\F0F30"}.mdi-weather-hurricane::before{content:"\\F0898"}.mdi-weather-lightning::before{content:"\\F0593"}.mdi-weather-lightning-rainy::before{content:"\\F067E"}.mdi-weather-night::before{content:"\\F0594"}.mdi-weather-night-partly-cloudy::before{content:"\\F0F31"}.mdi-weather-partly-cloudy::before{content:"\\F0595"}.mdi-weather-partly-lightning::before{content:"\\F0F32"}.mdi-weather-partly-rainy::before{content:"\\F0F33"}.mdi-weather-partly-snowy::before{content:"\\F0F34"}.mdi-weather-partly-snowy-rainy::before{content:"\\F0F35"}.mdi-weather-pouring::before{content:"\\F0596"}.mdi-weather-rainy::before{content:"\\F0597"}.mdi-weather-snowy::before{content:"\\F0598"}.mdi-weather-snowy-heavy::before{content:"\\F0F36"}.mdi-weather-snowy-rainy::before{content:"\\F067F"}.mdi-weather-sunny::before{content:"\\F0599"}.mdi-weather-sunny-alert::before{content:"\\F0F37"}.mdi-weather-sunset::before{content:"\\F059A"}.mdi-weather-sunset-down::before{content:"\\F059B"}.mdi-weather-sunset-up::before{content:"\\F059C"}.mdi-weather-tornado::before{content:"\\F0F38"}.mdi-weather-windy::before{content:"\\F059D"}.mdi-weather-windy-variant::before{content:"\\F059E"}.mdi-web::before{content:"\\F059F"}.mdi-web-box::before{content:"\\F0F94"}.mdi-web-clock::before{content:"\\F124A"}.mdi-webcam::before{content:"\\F05A0"}.mdi-webhook::before{content:"\\F062F"}.mdi-webpack::before{content:"\\F072B"}.mdi-webrtc::before{content:"\\F1248"}.mdi-wechat::before{content:"\\F0611"}.mdi-weight::before{content:"\\F05A1"}.mdi-weight-gram::before{content:"\\F0D3F"}.mdi-weight-kilogram::before{content:"\\F05A2"}.mdi-weight-lifter::before{content:"\\F115D"}.mdi-weight-pound::before{content:"\\F09B5"}.mdi-whatsapp::before{content:"\\F05A3"}.mdi-wheelchair-accessibility::before{content:"\\F05A4"}.mdi-whistle::before{content:"\\F09B6"}.mdi-whistle-outline::before{content:"\\F12BC"}.mdi-white-balance-auto::before{content:"\\F05A5"}.mdi-white-balance-incandescent::before{content:"\\F05A6"}.mdi-white-balance-iridescent::before{content:"\\F05A7"}.mdi-white-balance-sunny::before{content:"\\F05A8"}.mdi-widgets::before{content:"\\F072C"}.mdi-widgets-outline::before{content:"\\F1355"}.mdi-wifi::before{content:"\\F05A9"}.mdi-wifi-off::before{content:"\\F05AA"}.mdi-wifi-star::before{content:"\\F0E0B"}.mdi-wifi-strength-1::before{content:"\\F091F"}.mdi-wifi-strength-1-alert::before{content:"\\F0920"}.mdi-wifi-strength-1-lock::before{content:"\\F0921"}.mdi-wifi-strength-2::before{content:"\\F0922"}.mdi-wifi-strength-2-alert::before{content:"\\F0923"}.mdi-wifi-strength-2-lock::before{content:"\\F0924"}.mdi-wifi-strength-3::before{content:"\\F0925"}.mdi-wifi-strength-3-alert::before{content:"\\F0926"}.mdi-wifi-strength-3-lock::before{content:"\\F0927"}.mdi-wifi-strength-4::before{content:"\\F0928"}.mdi-wifi-strength-4-alert::before{content:"\\F0929"}.mdi-wifi-strength-4-lock::before{content:"\\F092A"}.mdi-wifi-strength-alert-outline::before{content:"\\F092B"}.mdi-wifi-strength-lock-outline::before{content:"\\F092C"}.mdi-wifi-strength-off::before{content:"\\F092D"}.mdi-wifi-strength-off-outline::before{content:"\\F092E"}.mdi-wifi-strength-outline::before{content:"\\F092F"}.mdi-wikipedia::before{content:"\\F05AC"}.mdi-wind-turbine::before{content:"\\F0DA5"}.mdi-window-close::before{content:"\\F05AD"}.mdi-window-closed::before{content:"\\F05AE"}.mdi-window-closed-variant::before{content:"\\F11DB"}.mdi-window-maximize::before{content:"\\F05AF"}.mdi-window-minimize::before{content:"\\F05B0"}.mdi-window-open::before{content:"\\F05B1"}.mdi-window-open-variant::before{content:"\\F11DC"}.mdi-window-restore::before{content:"\\F05B2"}.mdi-window-shutter::before{content:"\\F111C"}.mdi-window-shutter-alert::before{content:"\\F111D"}.mdi-window-shutter-open::before{content:"\\F111E"}.mdi-wiper::before{content:"\\F0AE9"}.mdi-wiper-wash::before{content:"\\F0DA6"}.mdi-wizard-hat::before{content:"\\F1477"}.mdi-wordpress::before{content:"\\F05B4"}.mdi-wrap::before{content:"\\F05B6"}.mdi-wrap-disabled::before{content:"\\F0BDF"}.mdi-wrench::before{content:"\\F05B7"}.mdi-wrench-outline::before{content:"\\F0BE0"}.mdi-xamarin::before{content:"\\F0845"}.mdi-xamarin-outline::before{content:"\\F0846"}.mdi-xing::before{content:"\\F05BE"}.mdi-xml::before{content:"\\F05C0"}.mdi-xmpp::before{content:"\\F07FF"}.mdi-y-combinator::before{content:"\\F0624"}.mdi-yahoo::before{content:"\\F0B4F"}.mdi-yeast::before{content:"\\F05C1"}.mdi-yin-yang::before{content:"\\F0680"}.mdi-yoga::before{content:"\\F117C"}.mdi-youtube::before{content:"\\F05C3"}.mdi-youtube-gaming::before{content:"\\F0848"}.mdi-youtube-studio::before{content:"\\F0847"}.mdi-youtube-subscription::before{content:"\\F0D40"}.mdi-youtube-tv::before{content:"\\F0448"}.mdi-z-wave::before{content:"\\F0AEA"}.mdi-zend::before{content:"\\F0AEB"}.mdi-zigbee::before{content:"\\F0D41"}.mdi-zip-box::before{content:"\\F05C4"}.mdi-zip-box-outline::before{content:"\\F0FFA"}.mdi-zip-disk::before{content:"\\F0A23"}.mdi-zodiac-aquarius::before{content:"\\F0A7D"}.mdi-zodiac-aries::before{content:"\\F0A7E"}.mdi-zodiac-cancer::before{content:"\\F0A7F"}.mdi-zodiac-capricorn::before{content:"\\F0A80"}.mdi-zodiac-gemini::before{content:"\\F0A81"}.mdi-zodiac-leo::before{content:"\\F0A82"}.mdi-zodiac-libra::before{content:"\\F0A83"}.mdi-zodiac-pisces::before{content:"\\F0A84"}.mdi-zodiac-sagittarius::before{content:"\\F0A85"}.mdi-zodiac-scorpio::before{content:"\\F0A86"}.mdi-zodiac-taurus::before{content:"\\F0A87"}.mdi-zodiac-virgo::before{content:"\\F0A88"}.mdi-blank::before{content:"\\F68C";visibility:hidden}.mdi-18px.mdi-set,.mdi-18px.mdi:before{font-size:18px}.mdi-24px.mdi-set,.mdi-24px.mdi:before{font-size:24px}.mdi-36px.mdi-set,.mdi-36px.mdi:before{font-size:36px}.mdi-48px.mdi-set,.mdi-48px.mdi:before{font-size:48px}.mdi-dark:before{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive:before{color:rgba(0,0,0,0.26)}.mdi-light:before{color:#fff}.mdi-light.mdi-inactive:before{color:rgba(255,255,255,0.3)}.mdi-rotate-45:before{transform:rotate(45deg)}.mdi-rotate-90:before{transform:rotate(90deg)}.mdi-rotate-135:before{transform:rotate(135deg)}.mdi-rotate-180:before{transform:rotate(180deg)}.mdi-rotate-225:before{transform:rotate(225deg)}.mdi-rotate-270:before{transform:rotate(270deg)}.mdi-rotate-315:before{transform:rotate(315deg)}.mdi-flip-h:before{transform:scaleX(-1);filter:FlipH;-ms-filter:"FlipH"}.mdi-flip-v:before{transform:scaleY(-1);filter:FlipV;-ms-filter:"FlipV"}.mdi-spin:before{animation:mdi-spin 2s infinite linear}@keyframes mdi-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}',""]),e.exports=a},5895:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".switch-options {\n position: relative;\n --columns: 1;\n}\n.switch-options.grid {\n width: 100%;\n}\n.switch-options .switch-icon {\n margin-right: 8px;\n transform: scale(0.9);\n}\n.switch-options .dim {\n opacity: 0.5;\n}\n.switch-options-grid {\n font-size: 12px;\n display: grid;\n grid-template-columns: repeat(auto-fill, 50%);\n}\n.switch-options-popup {\n font-size: 12px;\n transition: 0.2s ease-out;\n transform-origin: left;\n transform: translateY(-50%) scale(0.9);\n top: 50%;\n left: calc(100% + 8px);\n background-color: #fff;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n white-space: nowrap;\n padding: 4px;\n display: grid;\n width: max-content;\n grid-template-columns: repeat(var(--columns), auto);\n border-radius: 5px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n max-height: calc(100vh - 100px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\nbody.dark .switch-options-popup {\n background-color: #333;\n}\nbody.dark .switch-options-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.switch-options-popup::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.switch-options-popup.open {\n transform: translateY(-50%) scale(1);\n}\nbody.settings-panel-dock-right .switch-options-popup {\n right: calc(100% + 8px);\n left: unset;\n transform-origin: right;\n}\n.switch-options.small-size .switch-options-popup {\n transform-origin: top;\n top: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%) scale(0.9);\n}\n.switch-options.small-size .switch-options-popup.open {\n transform: translateX(-50%) scale(1);\n}",""]),e.exports=o},8173:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".check-all-updates[data-v-76652ef2] {\n margin: 1px 0;\n}\n.check-all-updates .be-icon[data-v-76652ef2] {\n margin-right: 6px;\n}",""]),e.exports=o},771:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bisector-dialog-content-container[data-v-31cf1990] {\n padding: 0 16px;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text.weak[data-v-31cf1990] {\n opacity: 0.6;\n}\n.bisector-dialog-content-container .bisector-dialog-content-text[data-v-31cf1990],\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n margin-bottom: 8px;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group[data-v-31cf1990] {\n display: grid;\n gap: 8px;\n grid-template-columns: 1fr 1fr;\n}\n.bisector-dialog-content-container .bisector-dialog-button-group .be-button[data-v-31cf1990]:last-child {\n grid-column: span 2;\n}",""]),e.exports=o},318:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,"div[data-v-386ddf8e] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.peek[data-v-386ddf8e] {\n cursor: pointer;\n}",""]),e.exports=o},8106:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.bangumi-card[data-v-b2f4653c] {\n --cover-width: 94px;\n background-color: #fff;\n margin: 0 8px 8px 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 8px;\n display: grid;\n grid-template-areas: "cover epTitle" "cover title";\n grid-template-columns: var(--cover-width) 1fr;\n grid-template-rows: 6fr 5fr;\n position: relative;\n flex-shrink: 0;\n}\n.bangumi-card .up[data-v-b2f4653c] {\n grid-area: title;\n display: flex;\n align-items: center;\n padding: 0 12px;\n align-self: center;\n overflow: hidden;\n margin-bottom: 4px;\n}\n.bangumi-card .up .cover[data-v-b2f4653c] {\n height: 18px;\n width: 18px;\n border-radius: 50%;\n}\n.bangumi-card .up .title[data-v-b2f4653c] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin: 0 6px;\n line-height: normal;\n}\n.bangumi-card .ep-title[data-v-b2f4653c] {\n grid-area: epTitle;\n font-size: 11pt;\n font-weight: 600;\n padding: 0 12px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n align-self: center;\n color: inherit;\n line-height: normal;\n margin: 4px 0 0 0;\n}\n.bangumi-card .ep-cover-container[data-v-b2f4653c] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n overflow: hidden;\n display: flex;\n}\n.bangumi-card .ep-cover-container .ep-cover[data-v-b2f4653c] {\n background-color: rgba(136, 136, 136, 0.2666666667);\n width: var(--cover-width);\n min-height: 62.5px;\n}\n.bangumi-card:hover .ep-title[data-v-b2f4653c] {\n color: var(--theme-color);\n}\n.bangumi-card:hover .ep-cover[data-v-b2f4653c] {\n transform: scale(1.05);\n}\nbody.dark .bangumi-card[data-v-b2f4653c] {\n box-shadow: rgba(0, 0, 0, 0.0666666667) 0 4px 12px 0px;\n background-color: #2d2d2d;\n color: #eee;\n}\n.bangumi-card.new[data-v-b2f4653c]::before {\n content: "NEW";\n position: absolute;\n top: 4px;\n left: 4px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n padding: 0 6px;\n height: 18px;\n border-radius: 9px;\n font-weight: 700;\n font-size: 11px;\n line-height: 18px;\n z-index: 1;\n}',""]),e.exports=o},6007:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".column-card[data-v-335afa63] {\n width: 356px;\n display: flex;\n flex-direction: column;\n margin-bottom: 12px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n background-color: #fff;\n box-sizing: border-box;\n position: relative;\n flex-shrink: 0;\n font-size: 12px;\n cursor: pointer;\n border-radius: 8px;\n}\nbody.dark .column-card[data-v-335afa63] {\n background-color: #282828;\n color: #eee;\n}\n.column-card .covers[data-v-335afa63] {\n position: relative;\n display: flex;\n overflow: hidden;\n border-radius: 8px 8px 0 0;\n}\n.column-card .covers .cover[data-v-335afa63] {\n flex: 1 0 0;\n height: 120px;\n width: 0;\n object-fit: cover;\n}\n.column-card .up[data-v-335afa63] {\n position: absolute;\n left: 8px;\n top: 86px;\n padding: 2px;\n display: flex;\n align-items: center;\n background-color: rgba(0, 0, 0, 0.6666666667);\n border-radius: 14px;\n height: 28px;\n box-sizing: border-box;\n}\n.column-card .up .face[data-v-335afa63] {\n border-radius: 50%;\n height: 24px;\n width: 24px;\n}\n.column-card .up .name[data-v-335afa63] {\n margin: 0 6px;\n color: #fff;\n}\n.column-card .title[data-v-335afa63] {\n padding: 10px 10px 0;\n margin: 0;\n font-size: 11pt;\n font-weight: 600;\n color: inherit;\n line-height: normal;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.column-card .description[data-v-335afa63] {\n margin: 8px 10px;\n display: -webkit-box;\n white-space: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-all;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 1.5;\n max-height: 3em;\n}\n.column-card:hover .title[data-v-335afa63] {\n color: var(--theme-color);\n}\n.column-card:hover .cover[data-v-335afa63] {\n transform: scale(1.05);\n}",""]),e.exports=o},5019:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-up-info {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n line-height: normal;\n}\n.be-up-info:not(.fallback) {\n background-color: #fff;\n color: black;\n border-radius: 14px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 28px;\n border-radius: 14px;\n padding: 2px;\n box-shadow: none;\n padding-right: 8px;\n}\nbody.dark .be-up-info:not(.fallback) {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-up-info:not(.fallback) {\n background-color: #282828;\n color: #eee;\n}\n.be-up-info-cover {\n border-radius: 50%;\n}\n.be-up-info-cover-fallback {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 18px;\n margin-right: -3px;\n}\n.be-up-info-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: 0.2s ease-out;\n}\n.be-up-info:hover .be-up-info-name {\n color: var(--theme-color) !important;\n}",""]),e.exports=o},117:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.video-card[data-v-57e48aec] {\n display: grid;\n grid-template-columns: 196px 1fr;\n grid-template-rows: 1fr 1fr 1fr;\n grid-template-areas: "cover title" "cover description" "cover up";\n height: var(--card-height);\n width: var(--card-width);\n color: black;\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n margin-right: var(--card-margin);\n margin-bottom: var(--card-margin);\n position: relative;\n}\nbody.dark .video-card[data-v-57e48aec], body.dark .video-card[data-v-57e48aec]:hover {\n background-color: #282828;\n color: #eee;\n}\n.video-card[data-v-57e48aec]:hover {\n color: black;\n}\n.video-card.vertical[data-v-57e48aec] {\n grid-template-columns: auto auto;\n grid-template-rows: auto 1fr auto auto;\n grid-template-areas: "cover cover" "title title" "up up" "stats stats";\n gap: 4px;\n}\n.video-card.vertical .description[data-v-57e48aec],\n.video-card.vertical .topics[data-v-57e48aec] {\n display: none;\n}\n.video-card.vertical .cover-container[data-v-57e48aec] {\n border-radius: 8px 8px 0 0;\n width: calc(var(--card-width) - 2px);\n height: calc(var(--card-width) / 20 * 12.5);\n}\n.video-card.vertical .title[data-v-57e48aec] {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n max-height: 3em;\n word-break: break-all;\n white-space: normal;\n line-height: 1.5;\n margin: 4px 0;\n padding: 0 10px;\n font-size: 14px;\n}\n.video-card.vertical .up[data-v-57e48aec] {\n align-self: start;\n white-space: nowrap;\n}\n.video-card.vertical .up .name[data-v-57e48aec] {\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.video-card.vertical .up[data-v-57e48aec]:not(.no-face) {\n margin-left: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .up.no-face[data-v-57e48aec] {\n margin-top: 8px;\n max-width: calc(var(--card-width) - 24px);\n}\n.video-card.vertical .cooperation[data-v-57e48aec] {\n margin: 0 12px 6px 8px;\n}\n.video-card.vertical .cooperation-note[data-v-57e48aec] {\n display: flex;\n opacity: 0.5;\n}\n.video-card.vertical .stats[data-v-57e48aec] {\n grid-area: stats;\n align-self: end;\n justify-self: start;\n margin-bottom: 8px;\n margin-right: 0;\n}\n.video-card > *[data-v-57e48aec] {\n justify-self: self-start;\n align-self: center;\n}\n.video-card .publish-time-summary[data-v-57e48aec],\n.video-card .publish-time-detail[data-v-57e48aec],\n.video-card .duration[data-v-57e48aec],\n.video-card .watchlater[data-v-57e48aec] {\n opacity: 0;\n}\n.video-card:hover .cover[data-v-57e48aec] {\n transform: scale(1.05);\n}\n.video-card:hover .publish-time-summary[data-v-57e48aec],\n.video-card:hover .duration[data-v-57e48aec],\n.video-card:hover .watchlater[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .publish-time-summary[data-v-57e48aec]:hover {\n opacity: 0;\n}\n.video-card .publish-time-summary:hover ~ .publish-time-detail[data-v-57e48aec] {\n opacity: 1;\n}\n.video-card .cover-container[data-v-57e48aec] {\n grid-area: cover;\n border-radius: 8px 0 0 8px;\n position: relative;\n width: calc(var(--card-height) / 12.5 * 20);\n height: calc(var(--card-height) - 2px);\n overflow: hidden;\n}\n.video-card .cover-container .cover[data-v-57e48aec] {\n transition: 0.1s cubic-bezier(0.39, 0.58, 0.57, 1);\n -webkit-transform: rotate(0deg);\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n.video-card .cover-container[data-v-57e48aec] > :not(.cover) {\n position: absolute;\n display: flex;\n align-items: center;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec],\n.video-card .cover-container .duration[data-v-57e48aec],\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n bottom: 6px;\n padding: 2px 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n color: white;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail .mdi[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary .mdi[data-v-57e48aec],\n.video-card .cover-container .duration .mdi[data-v-57e48aec],\n.video-card .cover-container .watchlater .mdi[data-v-57e48aec] {\n margin-right: 4px;\n}\n.video-card .cover-container .new[data-v-57e48aec] {\n top: 6px;\n left: 6px;\n background-color: var(--theme-color);\n color: var(--foreground-color);\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 10px;\n height: 20px;\n box-sizing: border-box;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec] {\n z-index: 0;\n}\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n z-index: 1;\n}\n.video-card .cover-container .publish-time-detail[data-v-57e48aec],\n.video-card .cover-container .publish-time-summary[data-v-57e48aec] {\n top: 6px;\n right: 6px;\n}\n.video-card .cover-container .duration[data-v-57e48aec] {\n left: 6px;\n}\n.video-card .cover-container .watchlater[data-v-57e48aec] {\n right: 6px;\n padding-left: 4px;\n}\n.video-card .title[data-v-57e48aec] {\n grid-area: title;\n font-size: 15px;\n font-weight: 600;\n color: inherit;\n padding: 4px 12px 0 12px;\n white-space: nowrap;\n overflow: hidden;\n justify-self: stretch;\n text-overflow: ellipsis;\n}\n.video-card .title[data-v-57e48aec]:hover {\n color: var(--theme-color);\n}\n.video-card .topics[data-v-57e48aec] {\n display: flex;\n align-items: center;\n grid-area: description;\n margin-left: 12px;\n}\n.video-card .topics .topic[data-v-57e48aec] {\n display: flex;\n align-items: center;\n gap: 4px;\n color: inherit;\n padding: 4px 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n margin-right: 8px;\n border-radius: 14px;\n opacity: 0.75;\n}\n.video-card .topics .topic .topic-name[data-v-57e48aec] {\n max-width: 84px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.video-card .topics .topic[data-v-57e48aec]:hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: var(--theme-color);\n opacity: 1;\n}\n.video-card .description[data-v-57e48aec] {\n grid-area: description;\n color: inherit;\n overflow: hidden;\n align-self: stretch;\n justify-self: stretch;\n margin: 0 12px;\n line-height: 1.5;\n height: 3em;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n scrollbar-width: none !important;\n}\n.video-card .description[data-v-57e48aec]::-webkit-scrollbar {\n width: 0px !important;\n}\n.video-card .description.single-line[data-v-57e48aec] {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.video-card .cooperation[data-v-57e48aec],\n.video-card .up[data-v-57e48aec],\n.video-card .stats[data-v-57e48aec] {\n grid-area: up;\n}\n.video-card .up[data-v-57e48aec] {\n margin-left: 12px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n padding: 2px;\n background-color: transparent;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n border-radius: 15px;\n color: inherit;\n}\n.video-card .up .name[data-v-57e48aec] {\n margin: 0 8px;\n}\n.video-card .up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .up[data-v-57e48aec]:not(.no-face):hover {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.video-card .up:hover .name[data-v-57e48aec],\n.video-card .up:hover .be-icon[data-v-57e48aec] {\n color: var(--theme-color);\n}\n.video-card.no-stats .up[data-v-57e48aec],\n.video-card.no-stats .cooperation[data-v-57e48aec] {\n margin-bottom: 4px;\n}\n.video-card .cooperation[data-v-57e48aec] {\n margin-left: 12px;\n display: flex;\n align-items: center;\n justify-self: stretch;\n justify-content: space-between;\n}\n.video-card .cooperation-ups[data-v-57e48aec] {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: flex-start;\n}\n.video-card .cooperation-ups .cooperation-up[data-v-57e48aec] {\n flex: 0 0 15px;\n width: 15px;\n display: flex;\n}\n.video-card .cooperation-ups .cooperation-up.no-face[data-v-57e48aec] {\n background-color: transparent;\n padding: 0;\n}\n.video-card .cooperation-ups .cooperation-up.no-face .be-icon[data-v-57e48aec] {\n font-size: 18px;\n opacity: 0.75;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border-radius: 50%;\n width: 24px;\n height: 24px;\n box-sizing: content-box;\n}\n.video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 2px;\n background-color: #fff;\n}\nbody.dark .video-card .cooperation-ups .cooperation-up .face[data-v-57e48aec] {\n background-color: #282828;\n}\n.video-card .cooperation-ups:hover .cooperation-up[data-v-57e48aec] {\n flex-basis: auto;\n width: 30px;\n margin-right: 4px;\n}\n.video-card .cooperation-note[data-v-57e48aec] {\n display: none;\n}\n.video-card .stats[data-v-57e48aec] {\n font-size: 11px;\n justify-self: self-end;\n margin-right: 12px;\n display: flex;\n align-items: center;\n opacity: 0.5;\n}\n.video-card .stats[data-v-57e48aec] > :nth-child(n+4) {\n display: none;\n}\n.video-card .stats .be-icon[data-v-57e48aec] {\n margin: 0 4px 0 12px;\n}',""]),e.exports=o},5286:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".bb-comment .translate-container,\n.card-content .translate-container {\n margin: 4px 0 2px 0;\n display: inline-block;\n font-weight: normal;\n font-size: 14px;\n}\n.bb-comment .translate-container .translated,\n.card-content .translate-container .translated {\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.bb-comment .translate-container .translated a,\n.card-content .translate-container .translated a {\n color: #aaa !important;\n}\n.bb-comment .translate-container .translated a:hover,\n.card-content .translate-container .translated a:hover {\n color: var(--theme-color) !important;\n}\n.bb-comment .translate-container .translate,\n.card-content .translate-container .translate {\n display: flex;\n align-items: center;\n gap: 2px;\n font-size: 12px;\n height: 18px;\n color: #aaa;\n cursor: pointer;\n}\n.bb-comment .translate-container .translate:hover,\n.card-content .translate-container .translate:hover {\n color: var(--theme-color);\n}\n.bb-comment .translate-container .translate-result,\n.card-content .translate-container .translate-result {\n padding-top: 6px;\n white-space: pre-wrap;\n line-height: 20px;\n word-break: break-all;\n overflow-wrap: break-word;\n}\nbody.dark .bb-comment .translate-container .translate-result,\nbody.dark .card-content .translate-container .translate-result {\n color: #eee;\n}\nbody.machine-translator-enabled .bb-comment .reply-con .text-con {\n display: block;\n margin: 0 !important;\n}\nbody.machine-translator-enabled .card-content .translate-container {\n margin: 13px 0 2px 0;\n}",""]),e.exports=o},7463:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".suggest-item {\n outline: none !important;\n padding: 6px 6px 6px 10px;\n cursor: pointer;\n}\n.suggest-item.disabled {\n cursor: default;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.suggest-item:not(.disabled):hover, .suggest-item:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.suggest-item:first-child {\n padding-top: 8px;\n border-radius: 7px 7px 0 0;\n}\n.suggest-item:last-child {\n padding-bottom: 8px;\n border-radius: 0 0 7px 7px;\n}\n.suggest-item-content {\n display: flex;\n align-items: center;\n}\n.suggest-item-icon {\n margin-right: 6px;\n}\n.suggest-item-title {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n flex: 1 0 0;\n width: 0;\n}\n.suggest-item-name {\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-description {\n opacity: 0.5;\n font-size: smaller;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.suggest-item-delete {\n opacity: 0.5;\n margin-right: 4px;\n}\n.suggest-item-delete:hover {\n opacity: 1;\n}",""]),e.exports=o},6650:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".global-launch-bar-container {\n display: flex;\n top: 20vh;\n left: 50%;\n width: 40vw;\n max-width: 650px;\n height: 50px;\n padding: 0 8px;\n z-index: 5000;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n font-size: 16px;\n transform: translateX(-50%);\n transition: opacity 0.2s ease-out;\n}\nbody.dark .global-launch-bar-container {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .global-launch-bar-container {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .global-launch-bar-container {\n background-color: #222;\n}\n.global-launch-bar-container .launch-bar {\n flex: 1;\n}\nbody.dark .global-launch-bar-container .launch-bar {\n --color: #eee;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list {\n transition: 0.2s ease-out;\n top: calc(100% + 8px);\n max-height: calc(80vh - 16px - 50px);\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n font-size: 14px;\n}\n.global-launch-bar-container .launch-bar .launch-bar-suggest-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}",""]),e.exports=o},1012:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".launch-bar {\n --color: black;\n color: var(--color);\n position: relative;\n display: flex;\n align-items: center;\n}\n.launch-bar .input-area {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n.launch-bar .input-area .recommended-target {\n display: none;\n}\n.launch-bar .input-area .launch-bar-form {\n flex: 1;\n display: flex;\n}\n.launch-bar .input-area .launch-bar-form .input {\n flex: 1;\n padding: 8px;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: inherit;\n box-sizing: border-box;\n width: 15vw;\n font-size: inherit;\n}\n.launch-bar .input-area .launch-bar-form .input::placeholder {\n color: inherit !important;\n opacity: 0.8;\n}\n.launch-bar .input-area .launch-bar-form .submit {\n color: inherit;\n padding: 4px;\n background: transparent;\n border: none;\n outline: none !important;\n cursor: pointer;\n}\n.launch-bar .input-area .input-active-bar {\n flex: 0 0 auto;\n align-self: flex-start;\n height: 2px;\n width: 0;\n border-radius: 1px;\n background-color: var(--theme-color);\n transition: 0.3s ease-in-out;\n}\n.launch-bar .launch-bar-suggest-list {\n position: absolute;\n top: 100%;\n left: 50%;\n opacity: 0;\n width: 100%;\n transform: translateX(-50%) translateY(-4px);\n pointer-events: none;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n white-space: nowrap;\n border-radius: 8px;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n background-color: #fff;\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .launch-bar .launch-bar-suggest-list {\n color: #eee;\n background-color: #222;\n}\n.launch-bar .launch-bar-suggest-list .suggest-highlight {\n color: var(--theme-color);\n font-style: normal;\n}\n.launch-bar:focus-within .input-active-bar {\n width: 100%;\n}\n.launch-bar:focus-within .launch-bar-suggest-list,\n.launch-bar .launch-bar-suggest-list:focus-within {\n opacity: 1;\n transform: translateX(-50%);\n pointer-events: initial;\n}",""]),e.exports=o},7373:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.release-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 12px;\n padding: 0 16px 16px 16px;\n}\n.release-content-markdown {\n font-size: 14px;\n flex-grow: 1;\n max-height: calc(100vh - 220px);\n overflow: auto;\n line-height: normal;\n}\n.release-content-markdown ul,\n.release-content-markdown ul li {\n list-style: disc;\n}\n.release-content-markdown ol,\n.release-content-markdown ol li {\n list-style: decimal;\n}\n.release-content-markdown ul,\n.release-content-markdown ol {\n padding-left: 16px;\n margin: 0;\n}\n.release-content-markdown ul li,\n.release-content-markdown ol li {\n line-height: 1.75;\n}\n.release-content-markdown p {\n margin: 0;\n}\n.release-content-markdown details {\n line-height: 1.75;\n}\n.release-content-markdown details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.release-content-markdown > p {\n line-height: 1.75;\n}\n.release-content-markdown p + p {\n margin-top: 8px;\n}\n.release-content-markdown pre {\n white-space: pre-wrap;\n}\n.release-content-markdown code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.release-content-markdown kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .release-content-markdown kbd {\n border-color: #666;\n}\n.release-content-markdown blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .release-content-markdown blockquote * {\n color: inherit !important;\n}\n.release-content-markdown blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.release-content-markdown a,\n.release-content-markdown a:focus-within,\n.release-content-markdown a:hover {\n color: var(--theme-color);\n}\n.release-content-markdown > :last-child {\n margin-bottom: 0;\n}\n.release-content-actions {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n font-size: 15px;\n justify-content: flex-end;\n}\n.release-content-actions .be-button {\n padding: 6px 12px;\n}',""]),e.exports=o},3854:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-description {\n word-break: break-all;\n line-height: normal;\n}\n.component-description ul,\n.component-description ul li {\n list-style: disc;\n}\n.component-description ol,\n.component-description ol li {\n list-style: decimal;\n}\n.component-description ul,\n.component-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.component-description ul li,\n.component-description ol li {\n line-height: 1.75;\n}\n.component-description p {\n margin: 0;\n}\n.component-description details {\n line-height: 1.75;\n}\n.component-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.component-description > p {\n line-height: 1.75;\n}\n.component-description p + p {\n margin-top: 8px;\n}\n.component-description pre {\n white-space: pre-wrap;\n}\n.component-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.component-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .component-description kbd {\n border-color: #666;\n}\n.component-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .component-description blockquote * {\n color: inherit !important;\n}\n.component-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.component-description a,\n.component-description a:focus-within,\n.component-description a:hover {\n color: var(--theme-color);\n}\n.component-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},5248:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-detail {\n min-width: 264px;\n width: 264px;\n flex: 1;\n background-color: inherit;\n border-radius: 7px;\n overflow: auto;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n.component-detail .extra-option {\n display: flow-root;\n}\n.component-detail-separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n margin-bottom: 12px;\n flex-shrink: 0;\n align-self: stretch;\n}\n.component-detail-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px;\n background-color: inherit;\n position: sticky;\n top: 0;\n z-index: 2;\n}\n.component-detail-header .display-name {\n font-weight: 600;\n font-size: 16px;\n}\n.component-detail-header .close {\n cursor: pointer;\n}\n.component-detail-header .close:hover {\n color: var(--theme-color);\n}\n.component-detail-description:not(:last-child) {\n padding: 12px 12px 0;\n}\n.component-detail-tags {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n padding: 0 8px 8px;\n}\n.component-detail-tags .tag {\n display: flex;\n align-items: center;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n height: 24px;\n border-radius: 12px;\n padding: 2px 6px;\n margin-right: 4px;\n margin-bottom: 4px;\n font-size: 12px;\n box-shadow: none;\n}\nbody.dark .component-detail-tags .tag {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .component-detail-tags .tag {\n background-color: #282828;\n color: #eee;\n}\n.component-detail-tags .tag .tag-color {\n border-radius: 50%;\n width: 12px;\n height: 12px;\n margin-right: 4px;\n}\n.component-detail-internal-data {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n justify-content: center;\n flex-shrink: 0;\n position: sticky;\n bottom: 0;\n min-height: 24px;\n box-sizing: content-box;\n background-color: inherit;\n padding: 8px 12px;\n}\n.component-detail-internal-data-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n line-height: 24px;\n}\n.component-detail-internal-data .internal-name {\n opacity: 0.5;\n}\n.component-detail-internal-data .tippy-content {\n padding: 4px;\n}\n.component-detail-internal-data .extra-actions-wrapper {\n position: relative;\n transform: translateX(2px);\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions {\n padding: 4px;\n cursor: pointer;\n}\n.component-detail-internal-data .extra-actions-wrapper .extra-actions-list {\n width: max-content;\n}\n.component-detail-operations {\n display: flex;\n align-items: center;\n}\n.component-detail-operations > * {\n flex: 1 0 0;\n}\n.component-detail-operations > *:not(:last-child) {\n margin-right: 8px;\n}\n.component-detail-options {\n padding: 8px 12px;\n}\n.component-detail-options .component-detail-options-title {\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 8px;\n}\n.component-detail-options .generated-option:not(:last-child) {\n margin-bottom: 4px;\n}\n.component-detail-grow {\n flex: 1;\n}",""]),e.exports=o},7338:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-option[data-v-730efac0] {\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n.component-option .unknown-option-type[data-v-730efac0],\n.component-option .be-slider[data-v-730efac0],\n.component-option .be-range-input[data-v-730efac0],\n.component-option .be-text-box[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=boolean] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=dropdown] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=color] .option-name[data-v-730efac0] {\n flex: 1 0 0;\n}\n.component-option[data-type=switch][data-v-730efac0] {\n justify-content: center;\n}\n.component-option[data-type=switch] .option-name[data-v-730efac0] {\n display: none;\n}\n.component-option .option-name[data-v-730efac0] {\n margin-right: 8px;\n}\n.component-option .be-slider[data-v-730efac0] {\n margin: 0 8px;\n}",""]),e.exports=o},7467:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.component-settings {\n display: flex;\n flex-direction: column;\n justify-content: center;\n box-sizing: border-box;\n overflow: hidden;\n padding: 7px 12px 7px 7px;\n width: 100%;\n min-height: 36px;\n position: relative;\n cursor: pointer;\n transition: 0.2s ease-out;\n -webkit-user-select: none;\n user-select: none;\n}\n.component-settings::after {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n top: 0;\n left: 10px;\n height: 100%;\n width: calc(100% - 20px);\n pointer-events: none;\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0) 10px, rgba(136, 136, 136, 0.1333333333) 10px, rgba(136, 136, 136, 0.1333333333) 30px, rgba(0, 0, 0, 0) 30px, rgba(0, 0, 0, 0) 38px, rgba(136, 136, 136, 0.1333333333) 38px, rgba(136, 136, 136, 0.1333333333) 50px, rgba(0, 0, 0, 0) 50px);\n}\n.component-settings.virtual::after {\n opacity: 1;\n}\n.component-settings.virtual .component-settings-row {\n display: none;\n}\n.component-settings .component-settings-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.component-settings .component-settings-row:not(:last-child) {\n margin-bottom: 8px;\n}\n.component-settings .display-name {\n font-size: 14px;\n height: 20px;\n flex: 1 0 auto;\n margin-left: 6px;\n width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n}\n.component-settings .details-arrow {\n opacity: 0.75;\n width: 32px;\n justify-content: flex-end;\n}\n.component-settings .be-switch-box {\n margin: 0;\n}\n.component-settings:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.component-settings:hover .options-count {\n opacity: 1;\n}\n.component-settings.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}',""]),e.exports=o},5120:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-content .sidebar > * {\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page {\n font-size: 13px;\n top: 12px;\n transition: 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n transform: translateX(calc(-12.5% * var(--direction)));\n min-width: 372px;\n padding: 12px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-content .sidebar > * .settings-panel-sub-page {\n background-color: #282828;\n color: #eee;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page.open {\n transform: translateX(0);\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .sub-page-row:not(:last-child) {\n margin-bottom: 12px;\n}\n.settings-panel-content .sidebar > * .settings-panel-sub-page .separator {\n height: 1px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n width: 100%;\n}\n.settings-panel-content .sidebar > * .component-tags-item {\n background-color: transparent;\n cursor: pointer;\n display: flex;\n align-items: center;\n white-space: nowrap;\n padding: 8px;\n padding-right: 10px;\n font-size: 13px;\n}\n.settings-panel-content .sidebar > * .component-tags-item .tag-name {\n margin-right: 4px;\n margin-left: 8px;\n}\n.settings-panel-content .sidebar > * .component-tags-item:hover, .settings-panel-content .sidebar > * .component-tags-item.selected {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.settings-panel-content .sidebar > * .icon-list,\n.settings-panel-content .sidebar > * .component-tags {\n flex-grow: 1;\n max-height: calc(var(--panel-height) - var(--header-height));\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n background-color: transparent;\n width: 40px;\n display: flex;\n flex-direction: column;\n}\n.settings-panel-content .sidebar > * .icon-list::-webkit-scrollbar,\n.settings-panel-content .sidebar > * .component-tags::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-content .sidebar > * .icon-list .grow,\n.settings-panel-content .sidebar > * .component-tags .grow {\n flex-grow: 1;\n}\n.settings-panel-content .sidebar > * .icon-list .be-icon,\n.settings-panel-content .sidebar > * .component-tags .be-icon {\n margin-left: 2px;\n}\n.settings-panel-content .sidebar > * .component-tags {\n height: 100%;\n width: auto;\n position: absolute;\n top: 0;\n opacity: 0;\n transition: 0.2s ease-out;\n pointer-events: none;\n background-color: #fff;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.dark .settings-panel-content .sidebar > * .component-tags {\n background-color: #222;\n}\n.settings-panel-content .sidebar > * .icon-list:hover ~ .component-tags,\n.settings-panel-content .sidebar > * .component-tags:hover {\n opacity: 1;\n pointer-events: initial;\n}",""]),e.exports=o},2194:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-settings {\n line-height: normal;\n font-size: 12px;\n --panel-height: calc(100vh - 120px);\n}\nbody.player-mode-blackmask .be-settings {\n visibility: hidden;\n}\n.be-settings > .sidebar {\n position: fixed;\n top: 50%;\n z-index: 1002;\n transform: translateX(calc(-50% * var(--direction))) translateY(-50%);\n}\nbody.player-mode-full .be-settings > .sidebar, body.player-fullscreen-fix .be-settings > .sidebar, body.player-mode-web .be-settings > .sidebar, body.player-full-win .be-settings > .sidebar {\n z-index: 1;\n}\n.be-settings > .sidebar > * {\n transition: transform 0.3s ease-out, opacity 0.3s ease-out;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n width: 26px;\n height: 26px;\n padding: 8px;\n box-sizing: content-box;\n background-color: rgba(255, 255, 255, 0.6666666667);\n border-radius: 50%;\n position: relative;\n}\nbody.dark .be-settings > .sidebar > * {\n background-color: rgba(51, 51, 51, 0.6666666667);\n}\n.be-settings > .sidebar > *:not(:last-child) {\n margin-bottom: 26px;\n}\n.be-settings > .sidebar > *::after {\n content: "";\n width: 140%;\n height: 140%;\n position: absolute;\n top: -20%;\n left: -20%;\n background: transparent;\n}\n.be-settings > .sidebar > * .be-icon {\n font-size: 26px;\n color: #888;\n fill: #888;\n transition: fill 0.3s ease-out;\n}\n.be-settings > .sidebar > *:hover {\n transform: translateX(calc(60% * var(--direction))) scale(1.1);\n background-color: #fff;\n}\nbody.dark .be-settings > .sidebar > *:hover {\n background-color: #333;\n}\n.be-settings > .sidebar > *:hover .be-icon {\n color: #222;\n fill: #222;\n}\nbody.dark .be-settings > .sidebar > *:hover .be-icon {\n color: #eee;\n fill: #eee;\n}\n.be-settings > .sidebar > *.open {\n transform: translateX(calc(100% * var(--direction))) scale(1.5);\n opacity: 0;\n}\n.be-settings .settings-panel-popup {\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n top: 50%;\n z-index: 100001;\n}\n.be-settings .settings-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .settings-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.be-settings .widgets-panel-popup {\n top: 50%;\n z-index: 100001;\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.be-settings .widgets-panel-popup.close {\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n}\n.be-settings .widgets-panel-popup.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.bilibili-player-dm-tip-wrap {\n pointer-events: none !important;\n}\nbody:not(.settings-panel-dock-right) .contact-help {\n display: none !important;\n}\nbody:not(.settings-panel-dock-right) .be-settings {\n --direction: 1;\n}\nbody:not(.settings-panel-dock-right) .be-settings > .sidebar {\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .widgets-panel-popup,\nbody:not(.settings-panel-dock-right) .settings-panel-popup {\n left: 12px;\n transform-origin: left;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .sidebar {\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .settings-panel-content .main {\n border-bottom-right-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags {\n border-bottom-left-radius: 8px;\n border-right: 1px solid rgba(136, 136, 136, 0.1333333333);\n left: 0;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-left-radius: 7px;\n}\nbody:not(.settings-panel-dock-right) .settings-panel-sub-page {\n left: 53px;\n}\nbody.settings-panel-dock-right {\n --direction: -1;\n}\nbody.settings-panel-dock-right .be-settings > .sidebar {\n right: 0;\n}\nbody.settings-panel-dock-right .widgets-panel-popup,\nbody.settings-panel-dock-right .settings-panel-popup {\n right: 12px;\n transform-origin: right;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .sidebar {\n order: 1;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel-content .main {\n border-bottom-left-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags {\n border-bottom-right-radius: 8px;\n border-left: 1px solid rgba(136, 136, 136, 0.1333333333);\n right: 0;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-tags .component-tags-item:last-child {\n border-bottom-right-radius: 7px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings {\n padding: 7px 7px 7px 12px;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row {\n flex-direction: row-reverse;\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .details-arrow {\n transform: rotate(180deg);\n}\nbody.settings-panel-dock-right .settings-panel-popup .component-settings .row .display-name {\n margin-left: 12px;\n width: 180px;\n}\nbody.settings-panel-dock-right .settings-panel-sub-page {\n right: 53px;\n}',""]),e.exports=o},6207:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".settings-panel-popup {\n z-index: 1000;\n}\n.settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n --header-height: 50px;\n --settings-panel-background: #fff;\n background-color: var(--settings-panel-background);\n position: relative;\n overscroll-behavior: contain;\n border-radius: 8px;\n color: black;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: content-box;\n width: auto;\n min-width: 320px;\n height: var(--panel-height);\n transition: opacity 0.2s 0.2s ease-out;\n}\nbody.dark .settings-panel-popup .settings-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel {\n --settings-panel-background: #222;\n color: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header {\n box-sizing: border-box;\n height: var(--header-height);\n padding: 12px;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n display: flex;\n align-items: center;\n gap: 8px;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .settings-panel-popup .settings-panel .settings-panel-header {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .title {\n font-size: 18px;\n font-weight: 600;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon {\n font-size: 28px;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .peek {\n cursor: pointer;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon {\n cursor: pointer;\n transition: 0.2s ease-out;\n}\n.settings-panel-popup .settings-panel .settings-panel-header .collaspe .be-icon:hover,\n.settings-panel-popup .settings-panel .settings-panel-header .close .be-icon:hover {\n color: var(--theme-color);\n}\n.settings-panel-popup .settings-panel .settings-panel-content {\n flex: 1;\n display: flex;\n max-height: calc(var(--panel-height) - var(--header-height));\n}\n.settings-panel-popup .settings-panel .settings-panel-content .sidebar {\n display: flex;\n flex-direction: column;\n z-index: 2;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main {\n flex: 1;\n padding: 0;\n position: relative;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .be-empty {\n min-height: 36px;\n padding: 7px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list {\n display: grid;\n grid-template-columns: auto;\n gap: 0;\n width: auto;\n margin: 0;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-move, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-active, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n transition: all 0.5s ease;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-enter-from, .settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-to {\n opacity: 0;\n transform: translateY(-30px);\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .transition-leave-active {\n position: absolute;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar {\n display: flex;\n align-items: center;\n background-color: var(--settings-panel-background);\n padding-right: 8px;\n height: 36px;\n box-sizing: border-box;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n position: sticky;\n top: 0;\n z-index: 1;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search {\n align-self: stretch;\n font-size: 13px;\n box-shadow: none;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main .component-list .settings-panel-search-bar .settings-panel-search input {\n padding: 4px 10px;\n}\n.settings-panel-popup .settings-panel .settings-panel-content .main > * {\n flex: 1;\n}\n.settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n top: 50%;\n left: calc(100% - 12px);\n height: calc(100% - 22px);\n z-index: -1;\n transform: translateZ(0) translateY(-50%) translateX(calc(-48% * var(--direction)));\n transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);\n padding-left: 12px;\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .settings-panel-popup .settings-panel .component-detail-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.settings-panel-dock-right .settings-panel-popup .settings-panel .component-detail-panel {\n left: unset;\n right: calc(100% - 12px);\n padding: 0 12px 0 0;\n}\n.settings-panel-popup .settings-panel .component-detail-panel.open {\n transform: translateZ(0) translateY(-50%) translateX(0);\n}\n.settings-panel-popup .settings-panel.collapsed {\n height: auto;\n transform: translateY(calc(50% - 45vh));\n opacity: 0.3;\n}\n.settings-panel-popup .settings-panel.collapsed .header, body.dark .settings-panel-popup .settings-panel.collapsed .header {\n border-color: transparent;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar,\n.settings-panel-popup .settings-panel.collapsed .main {\n opacity: 0;\n padding: 0;\n pointer-events: none;\n}\n.settings-panel-popup .settings-panel.collapsed .sidebar {\n display: none;\n}\n.settings-panel-popup .settings-panel.collapsed:hover {\n opacity: 1;\n}\n.settings-panel-popup .settings-panel.peek {\n opacity: 0.1;\n}",""]),e.exports=o},7533:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tag-ring {\n display: flex;\n transform: scaleX(-1) rotate(-90deg);\n}\n.tag-ring svg {\n height: 18px;\n width: 18px;\n}",""]),e.exports=o},764:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.widgets-panel {\n max-height: var(--panel-height);\n min-height: 80px;\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n padding: 16px;\n padding-right: 20px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .widgets-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .widgets-panel {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .widgets-panel {\n background-color: #222;\n}\nbody.dark .widgets-panel {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.widgets-panel-header {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n font-weight: 600;\n font-size: 18px;\n margin-bottom: 18px;\n}\n.widgets-panel-header .be-icon {\n margin-right: 6px;\n}\n.widgets-panel .widgets-loading,\n.widgets-panel .widgets-empty {\n padding: 12px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content,\n.widgets-panel .widgets-empty .widgets-empty-content {\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ul li {\n list-style: disc;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n list-style: decimal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul,\n.widgets-panel .widgets-loading .widgets-empty-content ol,\n.widgets-panel .widgets-empty .widgets-empty-content ul,\n.widgets-panel .widgets-empty .widgets-empty-content ol {\n padding-left: 16px;\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content ul li,\n.widgets-panel .widgets-loading .widgets-empty-content ol li,\n.widgets-panel .widgets-empty .widgets-empty-content ul li,\n.widgets-panel .widgets-empty .widgets-empty-content ol li {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p,\n.widgets-panel .widgets-empty .widgets-empty-content p {\n margin: 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details,\n.widgets-panel .widgets-empty .widgets-empty-content details {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content details summary,\n.widgets-panel .widgets-empty .widgets-empty-content details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.widgets-panel .widgets-loading .widgets-empty-content > p,\n.widgets-panel .widgets-empty .widgets-empty-content > p {\n line-height: 1.75;\n}\n.widgets-panel .widgets-loading .widgets-empty-content p + p,\n.widgets-panel .widgets-empty .widgets-empty-content p + p {\n margin-top: 8px;\n}\n.widgets-panel .widgets-loading .widgets-empty-content pre,\n.widgets-panel .widgets-empty .widgets-empty-content pre {\n white-space: pre-wrap;\n}\n.widgets-panel .widgets-loading .widgets-empty-content code,\n.widgets-panel .widgets-empty .widgets-empty-content code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.widgets-panel .widgets-loading .widgets-empty-content kbd,\n.widgets-panel .widgets-empty .widgets-empty-content kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content kbd,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content kbd {\n border-color: #666;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .widgets-panel .widgets-loading .widgets-empty-content blockquote *,\nbody.dark .widgets-panel .widgets-empty .widgets-empty-content blockquote * {\n color: inherit !important;\n}\n.widgets-panel .widgets-loading .widgets-empty-content blockquote::before,\n.widgets-panel .widgets-empty .widgets-empty-content blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content a,\n.widgets-panel .widgets-loading .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-loading .widgets-empty-content a:hover,\n.widgets-panel .widgets-empty .widgets-empty-content a,\n.widgets-panel .widgets-empty .widgets-empty-content a:focus-within,\n.widgets-panel .widgets-empty .widgets-empty-content a:hover {\n color: var(--theme-color);\n}\n.widgets-panel .widgets-loading .widgets-empty-content > :last-child,\n.widgets-panel .widgets-empty .widgets-empty-content > :last-child {\n margin-bottom: 0;\n}\n.widgets-panel .widget-items {\n position: relative;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n}\n.widgets-panel .widget-items .widget-item {\n font-size: 14px;\n transition: 0.2s ease-out;\n display: flex;\n}\n.widgets-panel .widget-items .widget-item-enter, .widgets-panel .widget-items .widget-item-leave-to {\n opacity: 0;\n transform: scale(0.9);\n}\n.widgets-panel .widget-items .widget-item-leave-active {\n transition: 0.24s cubic-bezier(0.22, 0.61, 0.36, 1);\n position: absolute;\n white-space: nowrap;\n}\n.widgets-panel .widget-items .multiple-widgets {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n position: relative;\n}',""]),e.exports=o},2763:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".component-action {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n border-radius: 4px;\n padding: 4px 8px 4px 6px;\n font-size: 13px;\n}\n.component-action:hover {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.component-action.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},8911:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-about-page {\n flex: 1;\n}\n.be-about-page-header {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 12px;\n}\n.be-about-page-header .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.be-about-page-content {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 24px;\n}\n.be-about-page-content .script-meta-info {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 8px;\n text-align: center;\n padding: 0 24px;\n}\n.be-about-page-content .script-meta-info .meta-info-name {\n font-weight: 500;\n font-size: 22px;\n}\n.be-about-page-content .script-meta-info .meta-info-version {\n font-size: 14px;\n color: var(--theme-color);\n}\n.be-about-page-content .script-meta-info .meta-info-description {\n opacity: 0.5;\n}\n.be-about-page-content .script-links .script-link {\n display: flex;\n align-items: stretch;\n}\n.be-about-page-content .script-links .script-link .be-button {\n flex: 1;\n}\n.be-about-page-content .script-links,\n.be-about-page-content .about-page-actions {\n display: flex;\n align-items: stretch;\n gap: 8px;\n flex-wrap: wrap;\n}\n.be-about-page-content .script-links .script-link,\n.be-about-page-content .script-links .about-page-action,\n.be-about-page-content .about-page-actions .script-link,\n.be-about-page-content .about-page-actions .about-page-action {\n flex: 1 0 auto;\n}\n.be-about-page-content .script-links .script-link .be-icon,\n.be-about-page-content .script-links .about-page-action .be-icon,\n.be-about-page-content .about-page-actions .script-link .be-icon,\n.be-about-page-content .about-page-actions .about-page-action .be-icon {\n margin-right: 6px;\n}",""]),e.exports=o},686:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel .manage-item {\n flex: 0 0 auto;\n min-height: 30px;\n width: 100%;\n box-sizing: border-box;\n}",""]),e.exports=o},336:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".manage-panel {\n height: calc(var(--panel-height) - 52px - 48px);\n display: flex;\n flex-direction: column;\n}\n.manage-panel > :not(:last-child) {\n margin-bottom: 12px;\n}\n.manage-panel .be-button .be-icon {\n margin-right: 6px;\n}\n.manage-panel .exclude-built-in .be-switch-box {\n margin-left: 6px;\n}\n.manage-panel .title-text {\n font-size: 14px;\n font-weight: 600;\n}\n.manage-panel .item-url-result {\n color: var(--theme-color);\n}\n.manage-panel .item-url {\n margin-right: 12px;\n}\n.manage-panel .manage-item-list {\n display: flex;\n align-items: center;\n flex-direction: column;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n flex-shrink: 1;\n}\n.manage-panel .manage-item-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.manage-panel .item-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.manage-panel .exclude-built-in {\n display: flex;\n align-items: center;\n}\n.manage-panel .be-loading {\n width: 100%;\n text-align: center;\n}\n.manage-panel .description-text {\n opacity: 0.75;\n}\n.manage-panel .add-item-row {\n position: relative;\n}\n.manage-panel .batch-add-popup {\n top: calc(100% + 8px);\n left: 50%;\n transition: 0.2s ease-out;\n transform: translateX(-50%) translateY(-8px);\n padding: 8px;\n width: 100%;\n min-height: calc(var(--panel-height) / 2);\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n gap: 8px;\n}\nbody.dark .manage-panel .batch-add-popup {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .manage-panel .batch-add-popup {\n background-color: #222;\n}\n.manage-panel .batch-add-popup.open {\n transform: translateX(-50%) translateY(0px);\n}\n.manage-panel .batch-add-popup .be-text-area {\n flex: 1 0 auto;\n}\n.manage-panel .batch-add-popup .batch-add-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-button {\n flex: 1 0 0;\n}\n.manage-panel .batch-add-popup .batch-add-actions .be-icon {\n margin-right: 6px;\n}\n.manage-panel-title {\n gap: 6px;\n}\n.manage-panel-title .title-text {\n font-size: 16px;\n font-weight: 600;\n flex: 1 0 auto;\n}\n.manage-panel .search-item-row {\n gap: 6px;\n}",""]),e.exports=o},1350:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.manage-panel .user-item {\n display: grid;\n column-gap: 6px;\n grid-template: "displayName line remove" auto "name line remove" auto/auto 1fr auto;\n align-items: center;\n padding: 6px 0;\n}\n.manage-panel .user-item .user-item-display-name {\n grid-area: displayName;\n}\n.manage-panel .user-item .user-item-name {\n grid-area: name;\n opacity: 0.5;\n font-size: 11px;\n}\n.manage-panel .user-item .user-item-line {\n grid-area: line;\n justify-self: stretch;\n transition: 0.2s ease-out;\n opacity: 0;\n height: 0;\n width: 100%;\n border-bottom: 1px dashed;\n box-sizing: border-box;\n}\n.manage-panel .user-item .user-item-toggle {\n grid-area: toggle;\n justify-self: end;\n}\n.manage-panel .user-item .user-item-remove-confirm {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: white;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button {\n color: inherit;\n font-size: 12px;\n padding: 4px;\n padding-right: 6px;\n}\n.manage-panel .user-item .user-item-remove-confirm .be-button .be-icon {\n margin-right: 4px;\n}\n.manage-panel .user-item .tippy-box {\n border-radius: 8px;\n}\n.manage-panel .user-item .tippy-box .tippy-content {\n padding-right: 5px;\n}\n.manage-panel .user-item .user-item-remove {\n grid-area: remove;\n justify-self: end;\n display: flex;\n align-items: center;\n opacity: 0.1;\n transition: 0.2s ease-out;\n cursor: pointer;\n padding: 4px;\n}\n.manage-panel .user-item .user-item-remove:hover {\n opacity: 1;\n color: #e54e4e;\n}\n.manage-panel .user-item:hover .user-item-remove:not(:hover) {\n opacity: 0.75;\n}\n.manage-panel .user-item:hover .user-item-line {\n opacity: 0.5;\n}',""]),e.exports=o},1065:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".online-registry {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n width: 400px;\n height: 85vh;\n z-index: 100000;\n transition: 0.2s ease-out;\n font-size: 14px;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .online-registry {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .online-registry {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .online-registry {\n background-color: #222;\n}\n.online-registry.open {\n transform: translate(-50%, -50%) scale(1);\n}\n.online-registry-header {\n padding: 12px 12px 6px 12px;\n display: flex;\n align-items: center;\n gap: 12px;\n row-gap: 6px;\n flex-wrap: wrap;\n}\n.online-registry-header + .online-registry-header {\n padding-top: 6px;\n}\n.online-registry-header-title {\n flex: 1;\n font-size: 18px;\n font-weight: 600;\n}\n.online-registry-header-search {\n flex: 1;\n justify-content: center;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.online-registry-header-search .be-textbox {\n max-width: 320px;\n flex: 1;\n font-size: 12px;\n}\n.online-registry-header-filter {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-branch {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n}\n.online-registry-header-refresh-icon, .online-registry-header-close-icon {\n padding: 2px;\n cursor: pointer;\n transition: 0.3s ease-out;\n}\n.online-registry-header-refresh-icon:hover, .online-registry-header-close-icon:hover {\n color: var(--theme-color);\n}\n.online-registry-header-refresh-icon {\n padding: 3px;\n}\n.online-registry-header-refresh-icon:hover {\n transform: rotate(360deg);\n}\n.online-registry-separator {\n height: 1px;\n width: calc(100% - 24px);\n margin: 0 12px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-content {\n flex: 1;\n padding: 4px 0;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.online-registry-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.online-registry-content .be-loading,\n.online-registry-content .be-empty {\n margin: 12px 0;\n}",""]),e.exports=o},7862:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.online-registry-item-wrapper {\n min-height: 39px;\n position: relative;\n}\n.online-registry-item-wrapper.hidden {\n display: none;\n}\n.online-registry-item-wrapper::before {\n content: "";\n opacity: 0;\n transition: opacity 0.2s ease-out;\n position: absolute;\n pointer-events: none;\n top: 50%;\n left: 12px;\n transform: translateY(-50%);\n width: calc(100% - 24px);\n height: 20px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n display: flex;\n}\n.online-registry-item-wrapper.virtual::before {\n opacity: 1;\n}\n.online-registry-item {\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n padding: 8px 12px;\n}\n.online-registry-item:hover {\n background-color: rgba(136, 136, 136, 0.0666666667);\n}\n.online-registry-item:not(:last-child) {\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n}\n.online-registry-item .item-badge {\n padding: 2px 4px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n border-radius: 4px;\n font-size: 12px;\n}\n.online-registry-item .item-display-name {\n font-weight: 600;\n}\n.online-registry-item .grow {\n flex: 1 0 0;\n}\n.online-registry-item .item-action {\n font-size: 12px;\n}\n.online-registry-item .item-action .be-icon {\n margin-right: 6px;\n}\n.online-registry-item .item-action .reinstall-button:not(:hover):not(:focus-within) {\n opacity: 0.5;\n}\n.online-registry-item:hover .item-description {\n opacity: 1;\n}\n.online-registry-description {\n font-size: 13px;\n line-height: normal;\n word-break: break-all;\n}\n.online-registry-description ul,\n.online-registry-description ul li {\n list-style: disc;\n}\n.online-registry-description ol,\n.online-registry-description ol li {\n list-style: decimal;\n}\n.online-registry-description ul,\n.online-registry-description ol {\n padding-left: 16px;\n margin: 0;\n}\n.online-registry-description ul li,\n.online-registry-description ol li {\n line-height: 1.75;\n}\n.online-registry-description p {\n margin: 0;\n}\n.online-registry-description details {\n line-height: 1.75;\n}\n.online-registry-description details summary {\n cursor: pointer;\n margin: 4px 0;\n}\n.online-registry-description > p {\n line-height: 1.75;\n}\n.online-registry-description p + p {\n margin-top: 8px;\n}\n.online-registry-description pre {\n white-space: pre-wrap;\n}\n.online-registry-description code {\n display: inline-block;\n padding: 0 4px;\n margin: 1px 2px;\n border-radius: 4px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n line-height: normal;\n}\n.online-registry-description kbd {\n font-family: monospace;\n border: 1px solid #ccc;\n display: inline-block;\n border-radius: 4px;\n padding: 0 4px;\n margin: 1px 2px;\n line-height: 1.1;\n}\nbody.dark .online-registry-description kbd {\n border-color: #666;\n}\n.online-registry-description blockquote {\n border-radius: 4px;\n margin: 0;\n padding: 4px;\n padding-left: 12px;\n color: inherit;\n background-color: rgba(136, 136, 136, 0.0666666667);\n box-sizing: border-box;\n position: relative;\n}\nbody.dark .online-registry-description blockquote * {\n color: inherit !important;\n}\n.online-registry-description blockquote::before {\n content: "";\n position: absolute;\n display: block;\n width: 3px;\n height: calc(100% - 8px);\n top: 4px;\n left: 0;\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.online-registry-description a,\n.online-registry-description a:focus-within,\n.online-registry-description a:hover {\n color: var(--theme-color);\n}\n.online-registry-description > :last-child {\n margin-bottom: 0;\n}',""]),e.exports=o},6872:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-video-control-bar-extend {\n display: flex;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend {\n margin-top: 1px;\n}\n.be-video-control-bar-extend, .squirtle-controller.squirtle-wide-screen .be-video-control-bar-extend.squirtle-block-wrap {\n width: auto !important;\n margin-top: 0px;\n}\n.be-video-control-bar-extend .bp-svgicon {\n width: auto;\n padding-top: 1px;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n transition: transform 0.2s ease-out;\n}\n.be-video-control-bar-extend .bp-svgicon .be-icon svg,\n.be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 22px;\n width: 22px;\n height: 22px;\n color: #fff;\n fill: #fff;\n}\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon svg, body.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon svg,\nbody.player-mode-full .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-fullscreen-fix .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-mode-web .be-video-control-bar-extend .bp-svgicon .be-icon,\nbody.player-full-win .be-video-control-bar-extend .bp-svgicon .be-icon {\n font-size: 28px;\n width: 28px;\n height: 28px;\n}\n.be-video-control-bar-extend .be-video-control-tooltip {\n pointer-events: none;\n font-size: 12px;\n padding: 6px 8px;\n line-height: normal;\n white-space: nowrap;\n color: #fff;\n background-color: rgba(0, 0, 0, 0.7019607843);\n border-radius: 4px;\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%) translateY(calc(-100% - 11px));\n opacity: 0;\n}\n.be-video-control-bar-extend-item {\n display: flex;\n align-items: flex-start;\n justify-content: center;\n position: relative;\n}\n.squirtle-controller-wrap .be-video-control-bar-extend-item {\n align-items: center;\n}\n.be-video-control-bar-extend-item:hover .be-video-control-tooltip {\n transition: all 0.3s ease-in-out 0.3s;\n opacity: 1;\n transform: translateX(-50%) translateY(calc(-100% - 19px));\n}\n.be-video-control-bar-extend-item:active .bp-svgicon .be-icon {\n transform: scale(0.95);\n}\n.be-video-control-bar-extend-item button {\n background-color: transparent;\n margin: 0;\n padding: 0;\n border: none;\n cursor: pointer;\n}\n.be-video-control-bar-extend-item button:hover, .be-video-control-bar-extend-item button:active {\n outline: none !important;\n}\nbody.player-mode-full .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-fullscreen-fix .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-mode-web .bpx-player-control-wrap .be-video-control-bar-extend-item button, body.player-full-win .bpx-player-control-wrap .be-video-control-bar-extend-item button {\n padding-top: 2px;\n}",""]),e.exports=o},2149:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dialog {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n display: flex;\n align-items: stretch;\n flex-direction: column;\n min-width: 200px;\n min-height: 150px;\n max-width: calc(100vw - 100px);\n max-height: calc(100vh - 100px);\n position: fixed;\n transition: 0.2s ease-out;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%) scale(0.95);\n opacity: 0;\n pointer-events: none;\n}\nbody.dark .be-dialog {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-dialog {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-dialog {\n background-color: #222;\n}\n.be-dialog.open {\n transform: translateX(-50%) translateY(-50%) scale(1);\n opacity: 1;\n pointer-events: initial;\n}\n.be-dialog-header {\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: space-between;\n padding: 12px 12px 12px 16px;\n}\n.be-dialog-header-title {\n font-weight: 600;\n font-size: 18px;\n}\n.be-dialog-header-close .be-button {\n padding: 6px;\n}\n.be-dialog-content {\n flex: 1 0 auto;\n overflow: auto;\n}",""]),e.exports=o},1579:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card {\n background: #fff;\n min-width: var(--card-min-width);\n max-width: 60vw;\n min-height: 87px;\n margin: 8px 0;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: border-box;\n border: 1px solid rgba(136, 136, 136, 0.2666666667);\n transform-origin: left;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n position: relative;\n padding-left: 8px;\n border-radius: 8px;\n}\nbody.dark .toast-card {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.toast-card.toast-card-container-enter, .toast-card.toast-card-container-leave-to {\n opacity: 0;\n transform: translateX(var(--card-min-width-negative));\n}\n.toast-card.toast-card-container-leave-active {\n position: absolute;\n transition: 0.3s cubic-bezier(0.6, -0.28, 0.74, 0.05);\n}\n.toast-card-header {\n display: flex;\n align-items: center;\n}\n.toast-card-title {\n font-size: 18px;\n color: #444;\n opacity: 0.5;\n margin: 12px;\n font-weight: 600;\n flex: 1 1 auto;\n}\nbody.dark .toast-card-title {\n color: #999;\n}\n.toast-card-close {\n height: 24px;\n width: 24px;\n display: flex;\n align-items: center;\n position: relative;\n justify-content: center;\n flex: 0 0 auto;\n padding: 14px;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n box-sizing: content-box;\n opacity: 0.75;\n}\n.toast-card-close:hover {\n opacity: 0.85;\n}\n.toast-card-close:hover .be-icon {\n transform: scale(1.2);\n}\n.toast-card-close:active {\n opacity: 0.9;\n}\n.toast-card-close:active .be-icon {\n transform: scale(1.3);\n}\n.toast-card-close .be-icon {\n transition: 0.2s ease-out;\n}\n.toast-card-close .be-progress-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n --ring-color: currentColor;\n opacity: 0;\n}\n.toast-card-close.show-progress .be-progress-ring {\n opacity: 1;\n}\n.toast-card-message {\n color: #000;\n font-size: 14px;\n margin: 0 16px 12px 12px;\n white-space: pre-wrap;\n display: flex;\n align-items: center;\n line-height: 1.5;\n flex-wrap: wrap;\n word-break: break-all;\n max-height: 200px;\n overflow: auto;\n}\n.toast-card-border {\n position: absolute;\n border-radius: 2px;\n height: calc(100% - 10px);\n width: 4px;\n top: 5px;\n left: 0;\n}\n.toast-card.toast-default .toast-card-border {\n background-color: #444;\n}\n.toast-card.toast-error .toast-card-border {\n background-color: #f44336;\n}\n.toast-card.toast-info .toast-card-border {\n background-color: #2196f3;\n}\n.toast-card.toast-success .toast-card-border {\n background-color: #8bc34a;\n}\n.toast-card span,\n.toast-card .link {\n display: inline-block;\n padding: 2px 4px;\n margin: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n text-decoration: none;\n color: #000;\n transition: all 0.2s ease-out;\n border-radius: 6px;\n}\n.toast-card .link {\n cursor: pointer;\n}\n.toast-card .link:hover {\n background-color: rgba(136, 136, 136, 0.2);\n}\n.toast-card .link:active {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.toast-card .download-link,\n.toast-card .download-link:hover {\n color: inherit !important;\n text-decoration: underline;\n word-break: break-all;\n}",""]),e.exports=o},2210:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".toast-card-container {\n --card-min-width: 240px;\n --card-min-width-negative: -240px;\n position: fixed;\n left: 0;\n bottom: 0;\n display: flex;\n flex-direction: column-reverse;\n align-items: flex-start;\n padding-left: 16px;\n z-index: 100001;\n pointer-events: none;\n overflow: hidden;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n}\n.toast-card-container * {\n pointer-events: initial;\n transition: 0.2s ease-out;\n}",""]),e.exports=o},455:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-check-box .text-container[data-v-07bbf374] {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n}\n.be-check-box .icon-container[data-v-07bbf374] {\n flex-shrink: 0;\n position: relative;\n margin: 2px 0 2px 8px;\n}\n.be-check-box .icon-container > *[data-v-07bbf374] {\n transition: 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n}\n.be-check-box .icon-container .not-checked[data-v-07bbf374] {\n opacity: 0.75;\n}\n.be-check-box .icon-container .checked[data-v-07bbf374] {\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n transform: scale(0);\n}\n.be-check-box.checked .icon-container[data-v-07bbf374] {\n color: var(--theme-color);\n}\n.be-check-box.checked .icon-container .not-checked[data-v-07bbf374] {\n transform: scale(0);\n opacity: 0;\n}\n.be-check-box.checked .icon-container .checked[data-v-07bbf374] {\n transform: scale(1);\n opacity: 1;\n}\n.be-check-box.left-icon .icon-container[data-v-07bbf374] {\n order: -1;\n margin: 2px 6px 2px 0;\n}",""]),e.exports=o},8325:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-color-picker[data-v-5b939efc] {\n font-size: 14px;\n display: flex;\n position: relative;\n color: #000;\n}\n.be-color-picker[data-v-5b939efc], .be-color-picker *[data-v-5b939efc] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-color-picker[data-v-5b939efc] {\n color: #eee;\n}\n.be-color-picker .selected-color[data-v-5b939efc] {\n cursor: pointer;\n border-radius: 50%;\n outline: none !important;\n transition: box-shadow 0.2s ease-out;\n}\n.be-color-picker .selected-color[data-v-5b939efc]:focus-within {\n box-shadow: 0 0 0 3px var(--theme-color-20);\n}\n.be-color-picker .picker[data-v-5b939efc] {\n left: calc(50% + var(--offset));\n top: 100%;\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n padding: 14px;\n width: 240px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n box-sizing: content-box;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-color-picker .picker[data-v-5b939efc] {\n background-color: #222;\n}\n.be-color-picker .picker.open[data-v-5b939efc] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-color-picker .picker .item-group[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .item-title[data-v-5b939efc] {\n font-weight: 600;\n margin-bottom: 8px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc], .be-color-picker .picker .item-group.operations[data-v-5b939efc] {\n flex-direction: row;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc],\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n padding: 6px 8px;\n flex: 1 0 0;\n text-align: center;\n font-size: 14px;\n}\n.be-color-picker .picker .item-group.operations .cancel[data-v-5b939efc] {\n margin-right: 4px;\n}\n.be-color-picker .picker .item-group.operations .ok[data-v-5b939efc] {\n margin-left: 4px;\n}\n.be-color-picker .picker .item-group.info[data-v-5b939efc] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.be-color-picker .picker .item-group.info .color-preview[data-v-5b939efc] {\n transition: none;\n width: 24px;\n height: 24px;\n margin-right: 8px;\n border-radius: 50%;\n}\n.be-color-picker .picker .item-group.info .grow[data-v-5b939efc] {\n flex: 1 0 0;\n}\n.be-color-picker .picker .item-group.info .toggle-mode[data-v-5b939efc] {\n font-size: 14px;\n padding: 4px 8px;\n}\n.be-color-picker .picker .item-group.info .hex[data-v-5b939efc] {\n flex: 1 1 64px;\n}\n.be-color-picker .picker .item-group .colors[data-v-5b939efc] {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc] {\n outline: none !important;\n margin-right: 6px;\n margin-bottom: 6px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n border-radius: 50%;\n transition: transform 0.2s ease-out;\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:hover, .be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:focus-within {\n transform: scale(1.1);\n}\n.be-color-picker .picker .item-group .colors .color[data-v-5b939efc]:active {\n transform: scale(1.05);\n}\n.be-color-picker .picker .item-group .bars[data-v-5b939efc] {\n display: flex;\n flex-direction: column;\n}\n.be-color-picker .picker .item-group .bars .bar[data-v-5b939efc] {\n display: flex;\n align-items: center;\n font-size: 14px;\n margin-bottom: 4px;\n}\n.be-color-picker .picker .item-group .bars .bar .color-bar[data-v-5b939efc] {\n height: 4px;\n border-radius: 2px;\n box-shadow: 0 0 0 2px rgba(136, 136, 136, 0.1333333333);\n}\n.be-color-picker .picker .item-group .bars .bar .color-thumb[data-v-5b939efc] {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid var(--theme-color-20);\n transition: border 0.2s ease-out;\n background-color: #fff;\n}\n.be-color-picker .picker .item-group .bars .bar .be-slider:focus-within .color-thumb[data-v-5b939efc] {\n border-color: var(--theme-color);\n}\n.be-color-picker .picker .item-group .bars .bar-name[data-v-5b939efc] {\n flex-shrink: 0;\n width: 24px;\n}\n.be-color-picker .picker .item-group .bars .bar-value[data-v-5b939efc] {\n flex: 0 0 48px;\n margin-left: 6px;\n text-align: right;\n}\n.be-color-picker .picker .item-group .bars .be-slider[data-v-5b939efc] {\n flex: 1 0 0;\n margin: 4px 6px;\n}\n.be-color-picker .picker .item-group[data-v-5b939efc]:not(:last-child) {\n margin-bottom: 16px;\n}\n.be-color-picker .picker.compact[data-v-5b939efc] {\n width: 200px;\n}\n.be-color-picker .picker.compact .item-group .colors .color[data-v-5b939efc] {\n width: 19px;\n height: 19px;\n}",""]),e.exports=o},6261:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".default-widget[data-v-20e1bedd] {\n position: relative;\n}\n.default-widget .widget-icon[data-v-20e1bedd] {\n margin-right: 8px;\n opacity: 0.75;\n}\n.default-widget .widget-name[data-v-20e1bedd] {\n display: flex;\n}",""]),e.exports=o},7354:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-image-picker[data-v-7b32c90b] {\n position: relative;\n font-size: 14px;\n}\n.be-image-picker .popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(8px) scale(0.75);\n transform-origin: top;\n top: 100%;\n left: 50%;\n padding: 8px;\n width: 302px;\n box-sizing: border-box;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(8px) scale(1);\n}\n.be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: black;\n fill: black;\n stroke: black;\n text-align: center;\n margin-bottom: 16px;\n}\nbody.dark .be-image-picker .popup .empty-tip[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .images[data-v-7b32c90b] {\n max-height: 240px;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n outline: none !important;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n padding-left: 6px;\n padding-top: 6px;\n}\n.be-image-picker .popup .images[data-v-7b32c90b]::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b] {\n border-radius: 4px;\n transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;\n outline: none !important;\n overflow: hidden;\n cursor: pointer;\n display: flex;\n margin-right: 6px;\n margin-bottom: 6px;\n}\n.be-image-picker .popup .images .image.image-list-enter[data-v-7b32c90b], .be-image-picker .popup .images .image.image-list-leave-to[data-v-7b32c90b] {\n opacity: 0;\n}\n.be-image-picker .popup .images .image.image-list-leave-active[data-v-7b32c90b] {\n position: absolute;\n}\n.be-image-picker .popup .images .image img[data-v-7b32c90b] {\n object-fit: cover;\n transition: 0.2s ease-out;\n}\n.be-image-picker .popup .images .image[data-v-7b32c90b]:hover, .be-image-picker .popup .images .image[data-v-7b32c90b]:focus-within {\n box-shadow: 0 0 0 2px var(--theme-color), 0 0 0 4px var(--theme-color-20);\n}\n.be-image-picker .popup .images .image:hover img[data-v-7b32c90b], .be-image-picker .popup .images .image:focus-within img[data-v-7b32c90b] {\n transform: scale(1.1);\n}\n.be-image-picker .popup .images .image.selected[data-v-7b32c90b] {\n box-shadow: 0 0 0 3px var(--theme-color);\n}\n.be-image-picker .popup .mask[data-v-7b32c90b] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 8px;\n background-color: rgba(0, 0, 0, 0.6666666667);\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] {\n display: flex;\n margin: 8px 4px 4px 4px;\n}\n.be-image-picker .popup .operations[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}\n.be-image-picker .popup .operations > .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations > .be-button.clear-image[data-v-7b32c90b] {\n flex-grow: 2;\n}\n.be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n transition: 0.12s ease-out;\n transform: translateX(-50%) translateY(-50%) scale(0.75);\n top: 50%;\n left: 50%;\n padding: 14px;\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n width: 80%;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #282828;\n color: #eee;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup[data-v-7b32c90b] {\n background-color: #222;\n}\n.be-image-picker .popup .operations .add-image-popup.open[data-v-7b32c90b] {\n transform: translateX(-50%) translateY(-50%) scale(1);\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n display: flex;\n align-items: center;\n justify-content: center;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row[data-v-7b32c90b]:not(:last-child) {\n margin-bottom: 12px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-textbox[data-v-7b32c90b] {\n margin-left: 8px;\n flex: 1 0 0;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .be-button[data-v-7b32c90b] {\n flex: 1 0 0;\n padding: 6px 8px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row .title[data-v-7b32c90b] {\n font-weight: 600;\n font-size: 16px;\n}\n.be-image-picker .popup .operations .add-image-popup .add-image-row.buttons[data-v-7b32c90b] > :not(:last-child) {\n margin-right: 8px;\n}",""]),e.exports=o},1618:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.image-viewer-container[data-v-8829ba14] {\n background: rgba(0, 0, 0, 0.85);\n width: 100%;\n height: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 100002;\n display: flex;\n justify-content: center;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n color: #eee;\n}\n.image-viewer-container[data-v-8829ba14], .image-viewer-container *[data-v-8829ba14] {\n transition: 0.2s ease-out;\n}\n.image-viewer-container.open[data-v-8829ba14] {\n opacity: 1;\n pointer-events: initial;\n}\n.image-viewer-container .image-viewer[data-v-8829ba14] {\n width: 90%;\n height: 90%;\n display: grid;\n grid-template: "image close" 48px "image ." auto "image copy-link" 48px "image ." 12px "image new-tab" 48px "image ." 18px "image download" 48px/auto 48px;\n column-gap: 12px;\n justify-items: center;\n justify-content: stretch;\n align-items: center;\n align-content: stretch;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .image-container[data-v-8829ba14] {\n grid-area: image;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.image-viewer-container .image-viewer .image-container .image[data-v-8829ba14] {\n flex: 1 0 0;\n height: 0;\n object-fit: contain;\n}\n.image-viewer-container .image-viewer .close[data-v-8829ba14] {\n grid-area: close;\n}\n.image-viewer-container .image-viewer .download[data-v-8829ba14] {\n grid-area: download;\n}\n.image-viewer-container .image-viewer .copy-link[data-v-8829ba14] {\n grid-area: copy-link;\n transform: scale(0.95);\n}\n.image-viewer-container .image-viewer .new-tab[data-v-8829ba14] {\n grid-area: new-tab;\n transform: scale(0.85);\n}\n.image-viewer-container .image-viewer .image-viewer-icon[data-v-8829ba14] {\n cursor: pointer;\n width: 100%;\n height: 100%;\n transition: 0.2s ease-out;\n color: #eee;\n}\n.image-viewer-container .image-viewer .image-viewer-icon:hover .be-icon[data-v-8829ba14] {\n color: var(--theme-color);\n}\n.image-viewer-container.open .image-viewer[data-v-8829ba14] {\n transform: scale(1);\n}',""]),e.exports=o},1058:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-bar[data-v-56b62124] {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n height: 4px;\n background-color: rgba(136, 136, 136, 0.2666666667);\n border-radius: 2px;\n min-width: 24px;\n overflow: hidden;\n}\n.be-progress-bar .progress[data-v-56b62124] {\n border-radius: 2px;\n background-color: var(--theme-color);\n}\n.be-progress-bar .progress.transition[data-v-56b62124] {\n transition: width 0.3s ease-out;\n}",""]),e.exports=o},514:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-progress-ring[data-v-360d0319] {\n --ring-color: var(--theme-color);\n --ring-background: #8884;\n display: flex;\n}\n.be-progress-ring svg[data-v-360d0319] {\n transform: rotate(-90deg);\n}\n.be-progress-ring svg .progress[data-v-360d0319] {\n stroke: var(--ring-color);\n}\n.be-progress-ring svg .progress.transition[data-v-360d0319] {\n transition: stroke-dashoffset 0.3s ease-out;\n}\n.be-progress-ring svg .progress-background[data-v-360d0319] {\n stroke: var(--ring-background);\n}",""]),e.exports=o},4773:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-range-input[data-v-b459c060] {\n display: flex;\n align-items: center;\n}\n.be-range-input > .be-textbox[data-v-b459c060] {\n flex: 1;\n}\n.be-range-input .default-separator[data-v-b459c060] {\n margin: 0 8px;\n flex: 0 0 auto;\n}",""]),e.exports=o},9972:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-scroll-trigger {\n cursor: pointer;\n}",""]),e.exports=o},4085:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-switch-box {\n outline: none !important;\n width: 32px;\n margin: 4px 0;\n}\n.be-switch-box, .be-switch-box *, .be-switch-box *::before, .be-switch-box *::after {\n transition: 0.2s all ease-out;\n}\n.be-switch-box input[type=checkbox] {\n display: none;\n}\n.be-switch-box label {\n display: block;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.be-switch-box .bar {\n position: relative;\n background-color: rgba(136, 136, 136, 0.2666666667);\n box-sizing: border-box;\n height: 12px;\n border-radius: 6px;\n}\n.be-switch-box .bar .thumb {\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: #fff;\n border: 1px solid #ddd;\n}\nbody.dark .be-switch-box .bar .thumb {\n border-color: #555;\n background-color: #666;\n}\n.be-switch-box.checked .bar {\n background-color: var(--theme-color-50);\n}\n.be-switch-box.checked .bar .thumb {\n background-color: var(--theme-color);\n border-color: transparent;\n left: calc(100% - 18px);\n}\nbody.dark .be-switch-box.checked .bar .thumb {\n border-color: transparent;\n background-color: var(--theme-color);\n}\n.be-switch-box:focus-within.checked .thumb {\n box-shadow: 0 0 0 1px var(--theme-color-20);\n}\n.be-switch-box.disabled {\n opacity: 0.5;\n}\n.be-switch-box.disabled, .be-switch-box.disabled * {\n cursor: not-allowed;\n}",""]),e.exports=o},2069:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'.be-tab-control {\n display: flex;\n flex-direction: column;\n}\n.be-tab-control .default-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 8px 8px 0;\n}\n.be-tab-control .default-header .default-tabs {\n display: flex;\n padding: 6px 8px;\n}\n.be-tab-control .default-header .default-tabs .default-tab {\n font-size: 14px;\n position: relative;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n color: black;\n fill: black;\n stroke: black;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(:last-child) {\n margin-right: 16px;\n}\n.be-tab-control .default-header .default-tabs .default-tab::after {\n content: "";\n position: absolute;\n top: calc(100% + 4px);\n left: 50%;\n display: block;\n height: 3px;\n border-radius: 2px;\n width: 80%;\n background-color: var(--theme-color);\n transition: transform 0.2s ease-out;\n transform: translateX(-50%) scaleX(0);\n}\n.be-tab-control .default-header .default-tabs .default-tab-name {\n transition: transform 0.2s ease-out;\n opacity: 0.5;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected .default-tab-name {\n font-weight: 600;\n transform: scale(1.1);\n opacity: 1;\n}\n.be-tab-control .default-header .default-tabs .default-tab.selected::after {\n transform: translateX(-50%) scaleX(1);\n}\n.be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n content: attr(data-count);\n position: absolute;\n bottom: calc(100% + 2px);\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n font-size: 11px;\n border-radius: 10px;\n background-color: #fff;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n height: 10px;\n min-width: 10px;\n box-sizing: content-box;\n line-height: 1;\n}\nbody.dark .be-tab-control .default-header .default-tabs .default-tab:not(.selected)[data-count]::before {\n background-color: #333;\n}\n.be-tab-control .default-header .header-item {\n flex: 1;\n margin: 0 8px;\n}\n.be-tab-control .default-header .header-item:empty {\n display: none;\n}\n.be-tab-control .default-header .be-more-link .be-button {\n padding: 4px 6px 4px 10px;\n}\n.be-tab-control .default-header .be-more-link .be-button .be-icon {\n margin-left: 4px;\n}\n.be-tab-control .default-content {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 6px 0;\n position: relative;\n max-height: 100%;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.be-tab-control .default-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.be-tab-control .default-content .content-transition-enter, .be-tab-control .default-content .content-transition-leave-to {\n opacity: 0;\n transform: translateY(-12px);\n}\n.be-tab-control .default-content .content-transition-leave-active {\n position: absolute;\n}\n.be-tab-control .default-content .content-transition-enter-active, .be-tab-control .default-content .content-transition-leave-active {\n transition: 0.2s ease-out;\n}',""]),e.exports=o},2187:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-text-area {\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-text-area:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-text-area textarea {\n resize: none;\n width: 0;\n flex: 1 0 0;\n padding: 4px 6px;\n border-radius: 4px;\n background-color: transparent;\n overflow: auto;\n border: none;\n outline: none !important;\n color: black;\n font-size: inherit;\n}\nbody.dark .be-text-area textarea {\n color: #eee;\n}\n.be-text-area textarea:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-text-area textarea::-webkit-input-placeholder {\n color: #888;\n}",""]),e.exports=o},4098:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-textbox[data-v-d1f779a8] {\n position: relative;\n flex: 1 1 32px;\n min-width: 32px;\n display: flex;\n align-items: stretch;\n justify-content: stretch;\n border-radius: 4px;\n transition: border 0.2s ease-out, box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667), 0 0 0 0px var(--theme-color-20);\n}\n.be-textbox[data-v-d1f779a8]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-textbox input[type=text][data-v-d1f779a8] {\n line-height: normal;\n padding: 4px 6px;\n border-radius: 4px;\n flex: 1 0 0;\n background-color: transparent;\n border: none;\n outline: none !important;\n color: black;\n width: 0;\n font-size: inherit;\n}\nbody.dark .be-textbox input[type=text][data-v-d1f779a8] {\n color: #eee;\n}\n.be-textbox input[type=text][data-v-d1f779a8]:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n.be-textbox input[type=text][data-v-d1f779a8]::-webkit-input-placeholder {\n color: #888;\n}\n.be-textbox.linear[data-v-d1f779a8] {\n box-shadow: none;\n}\n.be-textbox.linear input[type=text][data-v-d1f779a8] {\n padding: 4px;\n}\n.be-textbox.linear .linear-bar[data-v-d1f779a8] {\n position: absolute;\n top: calc(100% - 1px);\n left: 50%;\n transform: translateX(-50%);\n border-radius: 1px;\n height: 1px;\n width: 100%;\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-textbox.linear[data-v-d1f779a8]:focus-within {\n box-shadow: none;\n}\n.be-textbox.linear:focus-within .linear-bar[data-v-d1f779a8] {\n background-color: var(--theme-color);\n}",""]),e.exports=o},5564:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-button[data-v-18aa9448] {\n outline: none !important;\n line-height: normal;\n transition: background-color 0.2s ease-out, box-shadow 0.2s ease-out;\n background-color: rgba(136, 136, 136, 0.1333333333);\n color: black;\n border: none;\n border-radius: 4px;\n padding: 4px 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.be-button[data-v-18aa9448], .be-button *[data-v-18aa9448] {\n -webkit-tap-highlight-color: transparent;\n}\nbody.dark .be-button[data-v-18aa9448] {\n color: #eee;\n}\n.be-button.round[data-v-18aa9448] {\n border-radius: calc(1em + 8px);\n padding: 4px 10px;\n}\n.be-button.icon[data-v-18aa9448] {\n border-radius: 50%;\n padding: 4px;\n background-image: none !important;\n}\n.be-button .content-container[data-v-18aa9448] {\n -webkit-user-select: none;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n}\n.be-button.transparent[data-v-18aa9448] {\n background-color: transparent;\n}\n.be-button.primary[data-v-18aa9448] {\n box-shadow: 0 0 0 1px var(--theme-color-80);\n background-color: var(--theme-color-80);\n color: var(--foreground-color);\n}\n.be-button.light[data-v-18aa9448] {\n background-color: #fff;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n transition: box-shadow 0.2s ease-out;\n}\nbody.dark .be-button.light[data-v-18aa9448] {\n background-color: #333;\n}\n.be-button[data-v-18aa9448]:not(.disabled):hover, .be-button[data-v-18aa9448]:not(.disabled):focus-within {\n background-color: rgba(136, 136, 136, 0.2666666667);\n}\n.be-button[data-v-18aa9448]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).transparent[data-v-18aa9448]:hover, .be-button:not(.disabled).transparent[data-v-18aa9448]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button:not(.disabled).primary[data-v-18aa9448]:hover, .be-button:not(.disabled).primary[data-v-18aa9448]:focus-within {\n background-color: var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-button:not(.disabled).light[data-v-18aa9448]:active, .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #fff;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:hover {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color);\n}\nbody.dark .be-button:not(.disabled).light[data-v-18aa9448]:active, body.dark .be-button:not(.disabled).light[data-v-18aa9448]:focus-within {\n background-color: #333;\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-button.disabled[data-v-18aa9448] {\n cursor: not-allowed;\n opacity: 0.5;\n}",""]),e.exports=o},8752:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-dropdown[data-v-6b51ccd4] {\n display: flex;\n border-radius: 4px;\n color: black;\n fill: black;\n stroke: black;\n background-color: #fff;\n transition: box-shadow 0.2s ease-out;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n position: relative;\n cursor: pointer;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n color: #eee;\n fill: #eee;\n stroke: #eee;\n}\n.be-dropdown[data-v-6b51ccd4], .be-dropdown *[data-v-6b51ccd4] {\n -webkit-tap-highlight-color: transparent;\n outline: none !important;\n}\nbody.dark .be-dropdown[data-v-6b51ccd4] {\n background-color: #333;\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):hover {\n box-shadow: 0 0 0 1px var(--theme-color);\n}\n.be-dropdown[data-v-6b51ccd4]:not(.disabled):active, .be-dropdown[data-v-6b51ccd4]:not(.disabled):focus-within {\n box-shadow: 0 0 0 1px var(--theme-color), 0 0 0 3px var(--theme-color-20);\n}\n.be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n background-color: inherit;\n top: calc(100% + 4px);\n left: 50%;\n transform: translateX(-50%) translateY(-4px) scale(0.8);\n transform-origin: top;\n transition: 0.2s ease-out;\n min-width: 100%;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n}\nbody.dark .be-dropdown .dropdown-popup[data-v-6b51ccd4] {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\n.be-dropdown .dropdown-popup.open[data-v-6b51ccd4] {\n transform: translateX(-50%) scale(1);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4] {\n padding: 4px 6px;\n margin: 2px 4px;\n border-radius: 4px;\n white-space: nowrap;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s ease-out;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:hover, .be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:focus-within {\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:first-child {\n margin-top: 4px;\n}\n.be-dropdown .dropdown-popup .bex-dropdown-item[data-v-6b51ccd4]:last-child {\n margin-bottom: 4px;\n}\n.be-dropdown .selected[data-v-6b51ccd4] {\n display: flex;\n align-items: center;\n flex-grow: 1;\n line-height: normal;\n}\n.be-dropdown .selected-item[data-v-6b51ccd4] {\n flex: 1;\n padding: 4px 8px;\n}\n.be-dropdown .selected .arrow[data-v-6b51ccd4] {\n flex-shrink: 0;\n transition: transform 0.2s ease-out;\n}\n.be-dropdown .selected .arrow.open[data-v-6b51ccd4] {\n transform: rotate(180deg);\n}\n.be-dropdown .selected .arrow .default-arrow[data-v-6b51ccd4] {\n padding: 0 6px;\n display: flex;\n align-items: center;\n}\n.be-dropdown .selected .arrow .default-arrow path[data-v-6b51ccd4] {\n fill: transparent;\n}\n.be-dropdown .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n transition: 0.2s ease-out;\n stroke: rgba(136, 136, 136, 0.6666666667);\n fill: transparent;\n width: 12px;\n height: 12px;\n}\n.be-dropdown:not(.disabled):hover .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):active .selected .arrow .default-arrow svg[data-v-6b51ccd4], .be-dropdown:not(.disabled):focus-within .selected .arrow .default-arrow svg[data-v-6b51ccd4] {\n stroke: var(--theme-color);\n}\n.be-dropdown.disabled[data-v-6b51ccd4] {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.be-dropdown.round[data-v-6b51ccd4] {\n border-radius: calc(1em + 8px);\n}\n.be-dropdown.round .selected-item[data-v-6b51ccd4] {\n padding: 4px 10px;\n}",""]),e.exports=o},8963:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-empty {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},8203:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-loading {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}",""]),e.exports=o},4621:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-popup {\n position: absolute;\n z-index: 1;\n border-radius: 8px;\n}\n.be-popup.fixed {\n position: fixed;\n}\n.be-popup.close.closed-style {\n pointer-events: none;\n opacity: 0;\n}\n.be-popup.open {\n pointer-events: initial;\n opacity: 1;\n}",""]),e.exports=o},1473:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".be-slider[data-v-94f62aa6] {\n min-width: 50px;\n position: relative;\n outline: none !important;\n}\n.be-slider .bar-container[data-v-94f62aa6] {\n padding: 6px 0;\n}\n.be-slider .default-bar[data-v-94f62aa6] {\n height: 4px;\n cursor: pointer;\n border-radius: 2px;\n background-color: rgba(136, 136, 136, 0.1333333333);\n}\n.be-slider .thumb-container[data-v-94f62aa6] {\n cursor: pointer;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n transition: none;\n}\n.be-slider .default-thumb[data-v-94f62aa6] {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background-color: var(--theme-color);\n box-shadow: 0 0 0 2px var(--theme-color-20);\n transition: box-shadow 0.2s ease-out;\n}",""]),e.exports=o},6893:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,'@charset "UTF-8";\n/** 由于允许自定义SVG插入, 样式不能是scoped的, 否则匹配不上 */\n@font-face {\n font-family: "be-iconfont-bilifont";\n src: url("//s1.hdslb.com/bfs/seed/jinkela/header-v2/asserts/iconfont.ttf") format("truetype");\n}\n@font-face {\n font-family: "be-iconfont-vanfont";\n src: url("//s1.hdslb.com/bfs/static/jinkela/video/asserts/iconfont.6401a86.ttf") format("truetype");\n}\n.be-icon {\n color: inherit;\n fill: inherit;\n stroke: inherit;\n font-size: var(--size);\n font-style: normal;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--size);\n height: var(--size);\n}\n.be-icon.be-iconfont-logo::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e725";\n}\n.be-icon.be-iconfont-profile::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e722";\n}\n.be-icon.be-iconfont-posts::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-wallet::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71f";\n}\n.be-icon.be-iconfont-live-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e720";\n}\n.be-icon.be-iconfont-order-center::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e71e";\n}\n.be-icon.be-iconfont-course::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e60e";\n}\n.be-icon.be-iconfont-logout::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e721";\n}\n.be-icon.be-iconfont-ok::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e749";\n}\n.be-icon.be-iconfont-cancel::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e74a";\n}\n.be-icon.be-iconfont-bind-phone::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e733";\n}\n.be-icon.be-iconfont-bind-email::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e735";\n}\n.be-icon.be-iconfont-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e734";\n}\n.be-icon.be-iconfont-b-coin::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-b-coin-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e736";\n}\n.be-icon.be-iconfont-activity::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-feeds::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e732";\n}\n.be-icon.be-iconfont-message::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e731";\n}\n.be-icon.be-iconfont-favorites-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e730";\n}\n.be-icon.be-iconfont-history::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72f";\n}\n.be-icon.be-iconfont-vip::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e72e";\n}\n.be-icon.be-iconfont-up-outline::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e741";\n}\n.be-icon.be-iconfont-play-triangle::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e737";\n}\n.be-icon.be-iconfont-refresh::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e73c";\n}\n.be-icon.be-iconfont-eye::before {\n font-family: "be-iconfont-bilifont" !important;\n content: "\\e742";\n}\n.be-icon.be-iconfont-coin::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e4";\n}\n.be-icon.be-iconfont-favorites::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e1";\n}\n.be-icon.be-iconfont-play::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e6";\n}\n.be-icon.be-iconfont-danmaku::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e7";\n}\n.be-icon.be-iconfont-like::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6e0";\n}\n.be-icon.be-iconfont-like-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63a";\n}\n.be-icon.be-iconfont-dislike-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e638";\n}\n.be-icon.be-iconfont-comment-outline::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e639";\n}\n.be-icon.be-iconfont-up::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e723";\n}\n.be-icon.be-iconfont-left-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f1";\n}\n.be-icon.be-iconfont-right-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6f0";\n}\n.be-icon.be-iconfont-up-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ec";\n}\n.be-icon.be-iconfont-down-arrow::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6eb";\n}\n.be-icon.be-iconfont-close::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e63c";\n}\n.be-icon.be-iconfont-search::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e635";\n}\n.be-icon.be-iconfont-upload::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e634";\n}\n.be-icon.be-iconfont-lv0::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cb";\n color: #9a9a9a;\n}\nbody.dark .be-icon.be-iconfont-lv0::before {\n color: #777;\n}\n.be-icon.be-iconfont-lv1::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cc";\n color: #646464;\n}\nbody.dark .be-icon.be-iconfont-lv1::before {\n color: #ddd;\n}\n.be-icon.be-iconfont-lv2::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cd";\n color: #1bc861;\n}\n.be-icon.be-iconfont-lv3::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6ce";\n color: #22baea;\n}\n.be-icon.be-iconfont-lv4::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6cf";\n color: #eaa722;\n}\n.be-icon.be-iconfont-lv5::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d0";\n color: #ff7631;\n}\n.be-icon.be-iconfont-lv6::before {\n font-family: "be-iconfont-vanfont" !important;\n content: "\\e6d1";\n color: #ff3131;\n}\n.be-icon:not(.colored) svg, .be-icon:not(.colored) svg path {\n fill: inherit;\n stroke: inherit;\n stroke-width: 0;\n}\n.be-icon .custom-icon {\n display: flex;\n}\n.be-icon .custom-icon > svg {\n width: var(--size);\n height: var(--size);\n}',""]),e.exports=o},3617:(e,t,n)=>{var o=n(8218)((function(e){return e[1]}));o.push([e.id,".tippy-box {\n font-size: inherit;\n filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.2));\n}",""]),e.exports=o},8218:e=>{"use strict"; // eslint-disable-next-line func-names e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")}, // eslint-disable-next-line func-names @@ -100,11 +100,11 @@ e=e&&e.__esModule?e.default:e)?e:(/^['"].*['"]$/.test(e)&&( // eslint-disable-next-line no-param-reassign e=e.slice(1,-1)),t.hash&&( // eslint-disable-next-line no-param-reassign -e+=t.hash),/["'() \t\n]/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},7942:(e,t,n)=>{"use strict";function o(e){return Array.isArray?Array.isArray(e):"[object Array]"===l(e)}function i(e){return"string"==typeof e}function r(e){return"number"==typeof e}function a(e){return!0===e||!1===e||function(e){return function(e){return"object"==typeof e}(e)&&null!==e}(e)&&"[object Boolean]"==l(e)}function c(e){return null!=e}function s(e){return!e.trim().length}function l(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}n.d(t,{Z:()=>B});const d=Object.prototype.hasOwnProperty;class m{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach((e=>{let n=f(e);t+=n.weight,this._keys.push(n),this._keyMap[n.id]=n,t+=n.weight})),this._keys.forEach((e=>{e.weight/=t}))}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function f(e){let t=null,n=null,r=null,a=1,c=null;if(i(e)||o(e))r=e,t=u(e),n=p(e);else{if(!d.call(e,"name"))throw new Error("Missing name property in key");const o=e.name;if(r=o,d.call(e,"weight")&&(a=e.weight,a<=0))throw new Error((e=>`Property 'weight' in key '${e}' must be a positive integer`)(o));t=u(o),n=p(o),c=e.getFn}return{path:t,id:n,weight:a,src:r,getFn:c}}function u(e){return o(e)?e:e.split(".")}function p(e){return o(e)?e.join("."):e}var b={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx{if(c(e))if(t[d]){const m=e[t[d]];if(!c(m))return;if(d===t.length-1&&(i(m)||r(m)||a(m)))n.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;let t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(m));else if(o(m)){s=!0;for(let e=0,n=m.length;e{this._keysMap[e.id]=t}))}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,i(this.docs[0])?this.docs.forEach(((e,t)=>{this._addString(e,t)})):this.docs.forEach(((e,t)=>{this._addObject(e,t)})),this.norm.clear())}add(e){const t=this.size();i(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,n=this.size();t{let a=t.getFn?t.getFn(e):this.getFn(e,t.path);if(c(a))if(o(a)){let e=[];const t=[{nestedArrIndex:-1,value:a}];for(;t.length;){const{nestedArrIndex:n,value:r}=t.pop();if(c(r))if(i(r)&&!s(r)){let t={v:r,i:n,n:this.norm.get(r)};e.push(t)}else o(r)&&r.forEach(((e,n)=>{t.push({nestedArrIndex:n,value:e})}))}n.$[r]=e}else if(!s(a)){let e={v:a,n:this.norm.get(a)};n.$[r]=e}})),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function F(e,t,{getFn:n=b.getFn,fieldNormWeight:o=b.fieldNormWeight}={}){const i=new g({getFn:n,fieldNormWeight:o});return i.setKeys(e.map(f)),i.setSources(t),i.create(),i}function v(e,{errors:t=0,currentLocation:n=0,expectedLocation:o=0,distance:i=b.distance,ignoreLocation:r=b.ignoreLocation}={}){const a=t/e.length;if(r)return a;const c=Math.abs(o-n);return i?a+c/i:c?1:a}function w(e,t,n,{location:o=b.location,distance:i=b.distance,threshold:r=b.threshold,findAllMatches:a=b.findAllMatches,minMatchCharLength:c=b.minMatchCharLength,includeMatches:s=b.includeMatches,ignoreLocation:l=b.ignoreLocation}={}){if(t.length>32)throw new Error("Pattern length exceeds max of 32.");const d=t.length,m=e.length,f=Math.max(0,Math.min(o,m));let u=r,p=f;const h=c>1||s,g=h?Array(m):[];let F;for(;(F=e.indexOf(t,p))>-1;){let e=v(t,{currentLocation:F,expectedLocation:f,distance:i,ignoreLocation:l});if(u=Math.min(e,u),p=F+d,h){let e=0;for(;e=s;r-=1){let a=r-1,c=n[e.charAt(a)];if(h&&(g[a]=+!!c),F[r]=(F[r+1]<<1|1)&c,o&&(F[r]|=(w[r+1]|w[r])<<1|1|w[r+1]),F[r]&k&&(y=v(t,{errors:o,currentLocation:a,expectedLocation:f,distance:i,ignoreLocation:l}),y<=u)){if(u=y,p=a,p<=f)break;s=Math.max(1,2*f-p)}}if(v(t,{errors:o+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>u)break;w=F}const C={isMatch:p>=0,score:Math.max(.001,y)};if(h){const e=function(e=[],t=b.minMatchCharLength){let n=[],o=-1,i=-1,r=0;for(let a=e.length;r=t&&n.push([o,i]),o=-1)}return e[r-1]&&r-o>=t&&n.push([o,r-1]),n}(g,c);e.length?s&&(C.indices=e):C.isMatch=!1}return C}function y(e){let t={};for(let n=0,o=e.length;n{this.chunks.push({pattern:e,alphabet:y(e),startIndex:t})},d=this.pattern.length;if(d>32){let e=0;const t=d%32,n=d-t;for(;e{const{isMatch:p,score:b,indices:h}=w(e,t,f,{location:o+u,distance:i,threshold:r,findAllMatches:a,minMatchCharLength:c,includeMatches:n,ignoreLocation:s});p&&(m=!0),d+=b,p&&h&&(l=[...l,...h])}));let f={isMatch:m,score:m?d/this.chunks.length:1};return m&&n&&(f.indices=l),f}}const k=[];function C(e,t){for(let n=0,o=k.length;n{if(!c(e.indices)||!e.indices.length)return;const{indices:n,value:o}=e;let i={indices:n,value:o};e.key&&(i.key=e.key.src),e.idx>-1&&(i.refIndex=e.idx),t.matches.push(i)}))}function E(e,t){t.score=e.score}class B{constructor(e,t={},n){if(this.options={...b,...t},this.options.useExtendedSearch)throw new Error("Extended search is not available");this._keyStore=new m(this.options.keys),this.setCollection(e,n)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof g))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){c(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=(()=>!1)){const t=[];for(let n=0,o=this._docs.length;n{let n=1;e.matches.forEach((({key:e,norm:o,score:i})=>{const r=e?e.weight:null;n*=Math.pow(0===i&&r?Number.EPSILON:i,(r||1)*(t?1:o))})),e.score=n}))}(l,{ignoreFieldNorm:s}),a&&l.sort(c),r(t)&&t>-1&&(l=l.slice(0,t)),function(e,t,{includeMatches:n=b.includeMatches,includeScore:o=b.includeScore}={}){const i=[];return n&&i.push(A),o&&i.push(E),e.map((e=>{const{idx:n}=e,o={item:t[n],refIndex:n};return i.length&&i.forEach((t=>{t(e,o)})),o}))}(l,this._docs,{includeMatches:n,includeScore:o})}_searchStringList(e){const t=C(e,this.options),{records:n}=this._myIndex,o=[];return n.forEach((({v:e,i:n,n:i})=>{if(!c(e))return;const{isMatch:r,score:a,indices:s}=t.searchIn(e);r&&o.push({item:e,idx:n,matches:[{score:a,value:e,norm:i,indices:s}]})})),o}_searchLogical(e){throw new Error("Logical search is not available")}_searchObjectList(e){const t=C(e,this.options),{keys:n,records:o}=this._myIndex,i=[];return o.forEach((({$:e,i:o})=>{if(!c(e))return;let r=[];n.forEach(((n,o)=>{r.push(...this._findMatches({key:n,value:e[o],searcher:t}))})),r.length&&i.push({idx:o,item:e,matches:r})})),i}_findMatches({key:e,value:t,searcher:n}){if(!c(t))return[];let i=[];if(o(t))t.forEach((({v:t,i:o,n:r})=>{if(!c(t))return;const{isMatch:a,score:s,indices:l}=n.searchIn(t);a&&i.push({score:s,key:e,value:t,idx:o,norm:r,indices:l})}));else{const{v:o,n:r}=t,{isMatch:a,score:c,indices:s}=n.searchIn(o);a&&i.push({score:c,key:e,value:o,norm:r,indices:s})}return i}}B.version="6.6.1",B.createIndex=F,B.parseIndex=function(e,{getFn:t=b.getFn,fieldNormWeight:n=b.fieldNormWeight}={}){const{keys:o,records:i}=e,r=new g({getFn:t,fieldNormWeight:n});return r.setKeys(o),r.setIndexRecords(i),r},B.config=b},8254:e=>{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},9896:function(e){e.exports=function(){"use strict";function e(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(o=e[Symbol.iterator]()).next.bind(o)}function r(e){var t={exports:{}};return e(t,t.exports),t.exports}var a=r((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function n(t){e.exports.defaults=t}e.exports={defaults:t(),getDefaults:t,changeDefaults:n}})),c=/[&<>"']/,s=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,d=/[<>"']|&(?!#?\w+;)/g,m={"&":"&","<":"<",">":">",'"':""","'":"'"},f=function(e){return m[e]};function u(e,t){if(t){if(c.test(e))return e.replace(s,f)}else if(l.test(e))return e.replace(d,f);return e}var p=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function b(e){return e.replace(p,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var h=/(^|[^\[])\^/g;function g(e,t){e=e.source||e,t=t||"";var n={replace:function(t,o){return o=(o=o.source||o).replace(h,"$1"),e=e.replace(t,o),n},getRegex:function(){return new RegExp(e,t)}};return n}var F=/[^\w:]/g,v=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function w(e,t,n){if(e){var o;try{o=decodeURIComponent(b(n)).replace(F,"").toLowerCase()}catch(e){return null}if(0===o.indexOf("javascript:")||0===o.indexOf("vbscript:")||0===o.indexOf("data:"))return null}t&&!v.test(n)&&(n=A(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var y={},x=/^[^:]+:\/*[^/]*$/,k=/^([^:]+:)[\s\S]*$/,C=/^([^:]+:\/*[^/]*)[\s\S]*$/;function A(e,t){y[" "+e]||(x.test(e)?y[" "+e]=e+"/":y[" "+e]=D(e,"/",!0));var n=-1===(e=y[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(k,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(C,"$1")+t:e+t}function E(e){for(var t,n,o=1;o=0&&"\\"===n[i];)o=!o;return o?"|":" |"})).split(/ \|/),o=0;if(n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}var M={escape:u,unescape:b,edit:g,cleanUrl:w,resolveUrl:A,noopTest:{exec:function(){}},merge:E,splitCells:B,rtrim:D,findClosingBracket:I,checkSanitizeDeprecation:z,repeatString:S},P=a.defaults,O=M.rtrim,V=M.splitCells,T=M.escape,L=M.findClosingBracket;function j(e,t,n){var o=t.href,i=t.title?T(t.title):null,r=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:o,title:i,text:r}:{type:"image",raw:n,href:o,title:i,text:T(r)}}function R(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var o=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=o.length?e.slice(o.length):e})).join("\n")}var N=function(){function e(e){this.options=e||P}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var o=t[t.length-1];if(o&&"paragraph"===o.type)return{raw:n[0],text:n[0].trimRight()};var i=n[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?i:O(i,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],o=R(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:o}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var o=O(n,"#");this.options.pedantic?n=o.trim():o&&!/ $/.test(o)||(n=o.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var o,i=n.align.length;for(o=0;o ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,o,i,r,a,c,s,l,d=t[0],m=t[2],f=m.length>1,u={type:"list",raw:d,ordered:f,start:f?+m.slice(0,-1):"",loose:!1,items:[]},p=t[0].match(this.rules.block.item),b=!1,h=p.length;i=this.rules.block.listItemStart.exec(p[0]);for(var g=0;gi[1].length:r[1].length>i[0].length||r[1].length>3){p.splice(g,2,p[g]+"\n"+p[g+1]),g--,h--;continue}(!this.options.pedantic||this.options.smartLists?r[2][r[2].length-1]!==m[m.length-1]:f===(1===r[2].length))&&(a=p.slice(g+1).join("\n"),u.raw=u.raw.substring(0,u.raw.length-a.length),g=h-1),i=r}o=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) ?/,"")).indexOf("\n ")&&(o-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+o+"}","gm"),"")),c=b||/\n\n(?!\s*$)/.test(n),g!==h-1&&(b="\n"===n.charAt(n.length-1),c||(c=b)),c&&(u.loose=!0),this.options.gfm&&(l=void 0,(s=/^\[[ xX]\] /.test(n))&&(l=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,""))),u.items.push({type:"list_item",raw:d,task:s,checked:l,loose:c,text:n})}return u}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):T(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var o,i=n.align.length;for(o=0;o/i.test(o[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:o[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):T(o[0]):o[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var o=O(n.slice(0,-1),"\\");if((n.length-o.length)%2==0)return}else{var i=L(t[2],"()");if(i>-1){var r=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,r).trim(),t[3]=""}}var a=t[2],c="";if(this.options.pedantic){var s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);s&&(a=s[1],c=s[3])}else c=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),j(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:c?c.replace(this.rules.inline._escapes,"$1"):c},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var o=(n[2]||n[1]).replace(/\s+/g," ");if(!(o=t[o.toLowerCase()])||!o.href){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return j(n,o,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.strong.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="**"===o[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.strong.middle.exec(t.slice(0,o.index+3)))return{type:"strong",raw:e.slice(0,i[0].length),text:e.slice(2,i[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.em.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="*"===o[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.em.middle.exec(t.slice(0,o.index+2)))return{type:"em",raw:e.slice(0,i[0].length),text:e.slice(1,i[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),o=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return o&&i&&(n=n.substring(1,n.length-1)),n=T(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,o,i=this.rules.inline.autolink.exec(e);if(i)return o="@"===i[2]?"mailto:"+(n=T(this.options.mangle?t(i[1]):i[1])):n=T(i[1]),{type:"link",raw:i[0],text:n,href:o,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var o,i;if("@"===n[2])i="mailto:"+(o=T(this.options.mangle?t(n[0]):n[0]));else{var r;do{r=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(r!==n[0]);o=T(n[0]),i="www."===n[1]?"http://"+o:o}return{type:"link",raw:n[0],text:o,href:i,tokens:[{type:"text",raw:o,text:o}]}}},t.inlineText=function(e,t,n){var o,i=this.rules.inline.text.exec(e);if(i)return o=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):T(i[0]):i[0]:T(this.options.smartypants?n(i[0]):i[0]),{type:"text",raw:i[0],text:o}},e}(),q=M.noopTest,Z=M.edit,U=M.merge,H={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:q,table:q,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};H.def=Z(H.def).replace("label",H._label).replace("title",H._title).getRegex(),H.bullet=/(?:[*+-]|\d{1,9}[.)])/,H.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,H.item=Z(H.item,"gm").replace(/bull/g,H.bullet).getRegex(),H.listItemStart=Z(/^( *)(bull)/).replace("bull",H.bullet).getRegex(),H.list=Z(H.list).replace(/bull/g,H.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+H.def.source+")").getRegex(),H._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",H._comment=/|$)/,H.html=Z(H.html,"i").replace("comment",H._comment).replace("tag",H._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),H.paragraph=Z(H._paragraph).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.blockquote=Z(H.blockquote).replace("paragraph",H.paragraph).getRegex(),H.normal=U({},H),H.gfm=U({},H.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),H.gfm.nptable=Z(H.gfm.nptable).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.gfm.table=Z(H.gfm.table).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.pedantic=U({},H.normal,{html:Z("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",H._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:q,paragraph:Z(H.normal._paragraph).replace("hr",H.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",H.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var W={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:q,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation*\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation*\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:q,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};W.punctuation=Z(W.punctuation).replace(/punctuation/g,W._punctuation).getRegex(),W._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",W._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",W._comment=Z(H._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),W.em.start=Z(W.em.start).replace(/punctuation/g,W._punctuation).getRegex(),W.em.middle=Z(W.em.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.em.endAst=Z(W.em.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.em.endUnd=Z(W.em.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.start=Z(W.strong.start).replace(/punctuation/g,W._punctuation).getRegex(),W.strong.middle=Z(W.strong.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.strong.endAst=Z(W.strong.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.endUnd=Z(W.strong.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.blockSkip=Z(W._blockSkip,"g").getRegex(),W.overlapSkip=Z(W._overlapSkip,"g").getRegex(),W._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,W._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,W._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,W.autolink=Z(W.autolink).replace("scheme",W._scheme).replace("email",W._email).getRegex(),W._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,W.tag=Z(W.tag).replace("comment",W._comment).replace("attribute",W._attribute).getRegex(),W._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,W._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,W._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,W.link=Z(W.link).replace("label",W._label).replace("href",W._href).replace("title",W._title).getRegex(),W.reflink=Z(W.reflink).replace("label",W._label).getRegex(),W.reflinkSearch=Z(W.reflinkSearch,"g").replace("reflink",W.reflink).replace("nolink",W.nolink).getRegex(),W.normal=U({},W),W.pedantic=U({},W.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Z(/^!?\[(label)\]\((.*?)\)/).replace("label",W._label).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",W._label).getRegex()}),W.gfm=U({},W.normal,{escape:Z(W.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),o+="&#"+n+";";return o}var $=function(){function e(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Q,this.options.tokenizer=this.options.tokenizer||new N,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:Y.normal,inline:X.normal};this.options.pedantic?(t.block=Y.pedantic,t.inline=X.pedantic):this.options.gfm&&(t.block=Y.gfm,this.options.breaks?t.inline=X.breaks:t.inline=X.gfm),this.tokenizer.rules=t}e.lex=function(t,n){return new e(n).lex(t)},e.lexInline=function(t,n){return new e(n).inlineTokens(t)};var n=e.prototype;return n.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},n.blockTokens=function(e,t,n){var o,i,r,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(o=this.tokenizer.space(e))e=e.substring(o.raw.length),o.type&&t.push(o);else if(o=this.tokenizer.code(e,t))e=e.substring(o.raw.length),o.type?t.push(o):((a=t[t.length-1]).raw+="\n"+o.raw,a.text+="\n"+o.text);else if(o=this.tokenizer.fences(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.heading(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.nptable(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.hr(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.blockquote(e))e=e.substring(o.raw.length),o.tokens=this.blockTokens(o.text,[],n),t.push(o);else if(o=this.tokenizer.list(e)){for(e=e.substring(o.raw.length),r=o.items.length,i=0;i0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(s));)l.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(s));)s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(a||(c=""),a=!1,i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e,n,o))e=e.substring(i.raw.length),n=i.inLink,o=i.inRawBlock,t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.strong(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.em(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.autolink(e,_))e=e.substring(i.raw.length),t.push(i);else if(n||!(i=this.tokenizer.url(e,_))){if(i=this.tokenizer.inlineText(e,o,J))e=e.substring(i.raw.length),c=i.raw.slice(-1),a=!0,t.push(i);else if(e){var d="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}else e=e.substring(i.raw.length),t.push(i);return t},t(e,null,[{key:"rules",get:function(){return{block:Y,inline:X}}}]),e}(),ee=a.defaults,te=M.cleanUrl,ne=M.escape,oe=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,n){var o=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,o);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",o?'
    '+(n?e:ne(e,!0))+"
    \n":"
    "+(n?e:ne(e,!0))+"
    \n"},t.blockquote=function(e){return"
    \n"+e+"
    \n"},t.html=function(e){return e},t.heading=function(e,t,n,o){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},t.list=function(e,t,n){var o=t?"ol":"ul";return"<"+o+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o='
    "},t.image=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o=''+n+'":">"},t.text=function(e){return e},e}(),ie=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),re=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,o=0;if(this.seen.hasOwnProperty(n)){o=this.seen[e];do{n=e+"-"+ ++o}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=o,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),ae=a.defaults,ce=M.unescape,se=function(){function e(e){this.options=e||ae,this.options.renderer=this.options.renderer||new oe,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ie,this.slugger=new re}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w="",y=e.length;for(n=0;n0&&"text"===h.tokens[0].type?(h.tokens[0].text=v+" "+h.tokens[0].text,h.tokens[0].tokens&&h.tokens[0].tokens.length>0&&"text"===h.tokens[0].tokens[0].type&&(h.tokens[0].tokens[0].text=v+" "+h.tokens[0].tokens[0].text)):h.tokens.unshift({type:"text",text:v}):b+=v),b+=this.parse(h.tokens,p),d+=this.renderer.listitem(b,F,g);w+=this.renderer.list(d,f,u);continue;case"html":w+=this.renderer.html(m.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(m.tokens));continue;case"text":for(d=m.tokens?this.parseInline(m.tokens):m.text;n+1An error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}}return be.options=be.setOptions=function(e){return le(be.defaults,e),ue(be.defaults),be},be.getDefaults=fe,be.defaults=pe,be.use=function(e){var t=le({},e);if(e.renderer&&function(){var n=be.defaults.renderer||new oe,o=function(t){var o=n[t];n[t]=function(){for(var i=arguments.length,r=new Array(i),a=0;aAn error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}},be.Parser=se,be.parser=se.parse,be.Renderer=oe,be.TextRenderer=ie,be.Lexer=$,be.lexer=$.lex,be.Tokenizer=N,be.Slugger=re,be.parse=be,be}()},7933:(e,t,n)=>{"use strict";var o=n(8254),i=Array.prototype.concat,r=Array.prototype.slice,a=e.exports=function(e){for(var t=[],n=0,a=e.length;n{"use strict";n.r(t),n.d(t,{default:()=>s});var o=n(8332),i=n.n(o),r=n(1489),a=n.n(r),c={insert:"head",singleton:!1};i()(a(),c);const s=a().locals||{}},8332:(e,t,n)=>{"use strict";var o,i=function(){return void 0===o&&( +e+=t.hash),/["'() \t\n]/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},7942:(e,t,n)=>{"use strict";function o(e){return Array.isArray?Array.isArray(e):"[object Array]"===l(e)}function i(e){return"string"==typeof e}function r(e){return"number"==typeof e}function a(e){return!0===e||!1===e||function(e){return function(e){return"object"==typeof e}(e)&&null!==e}(e)&&"[object Boolean]"==l(e)}function c(e){return null!=e}function s(e){return!e.trim().length}function l(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}n.d(t,{Z:()=>B});const d=Object.prototype.hasOwnProperty;class m{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach((e=>{let n=f(e);t+=n.weight,this._keys.push(n),this._keyMap[n.id]=n,t+=n.weight})),this._keys.forEach((e=>{e.weight/=t}))}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function f(e){let t=null,n=null,r=null,a=1,c=null;if(i(e)||o(e))r=e,t=u(e),n=p(e);else{if(!d.call(e,"name"))throw new Error("Missing name property in key");const o=e.name;if(r=o,d.call(e,"weight")&&(a=e.weight,a<=0))throw new Error((e=>`Property 'weight' in key '${e}' must be a positive integer`)(o));t=u(o),n=p(o),c=e.getFn}return{path:t,id:n,weight:a,src:r,getFn:c}}function u(e){return o(e)?e:e.split(".")}function p(e){return o(e)?e.join("."):e}var b={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx{if(c(e))if(t[d]){const m=e[t[d]];if(!c(m))return;if(d===t.length-1&&(i(m)||r(m)||a(m)))n.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;let t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(m));else if(o(m)){s=!0;for(let e=0,n=m.length;e{this._keysMap[e.id]=t}))}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,i(this.docs[0])?this.docs.forEach(((e,t)=>{this._addString(e,t)})):this.docs.forEach(((e,t)=>{this._addObject(e,t)})),this.norm.clear())}add(e){const t=this.size();i(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,n=this.size();t{let a=t.getFn?t.getFn(e):this.getFn(e,t.path);if(c(a))if(o(a)){let e=[];const t=[{nestedArrIndex:-1,value:a}];for(;t.length;){const{nestedArrIndex:n,value:r}=t.pop();if(c(r))if(i(r)&&!s(r)){let t={v:r,i:n,n:this.norm.get(r)};e.push(t)}else o(r)&&r.forEach(((e,n)=>{t.push({nestedArrIndex:n,value:e})}))}n.$[r]=e}else if(!s(a)){let e={v:a,n:this.norm.get(a)};n.$[r]=e}})),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function F(e,t,{getFn:n=b.getFn,fieldNormWeight:o=b.fieldNormWeight}={}){const i=new g({getFn:n,fieldNormWeight:o});return i.setKeys(e.map(f)),i.setSources(t),i.create(),i}function v(e,{errors:t=0,currentLocation:n=0,expectedLocation:o=0,distance:i=b.distance,ignoreLocation:r=b.ignoreLocation}={}){const a=t/e.length;if(r)return a;const c=Math.abs(o-n);return i?a+c/i:c?1:a}function w(e,t,n,{location:o=b.location,distance:i=b.distance,threshold:r=b.threshold,findAllMatches:a=b.findAllMatches,minMatchCharLength:c=b.minMatchCharLength,includeMatches:s=b.includeMatches,ignoreLocation:l=b.ignoreLocation}={}){if(t.length>32)throw new Error("Pattern length exceeds max of 32.");const d=t.length,m=e.length,f=Math.max(0,Math.min(o,m));let u=r,p=f;const h=c>1||s,g=h?Array(m):[];let F;for(;(F=e.indexOf(t,p))>-1;){let e=v(t,{currentLocation:F,expectedLocation:f,distance:i,ignoreLocation:l});if(u=Math.min(e,u),p=F+d,h){let e=0;for(;e=s;r-=1){let a=r-1,c=n[e.charAt(a)];if(h&&(g[a]=+!!c),F[r]=(F[r+1]<<1|1)&c,o&&(F[r]|=(w[r+1]|w[r])<<1|1|w[r+1]),F[r]&k&&(y=v(t,{errors:o,currentLocation:a,expectedLocation:f,distance:i,ignoreLocation:l}),y<=u)){if(u=y,p=a,p<=f)break;s=Math.max(1,2*f-p)}}if(v(t,{errors:o+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>u)break;w=F}const C={isMatch:p>=0,score:Math.max(.001,y)};if(h){const e=function(e=[],t=b.minMatchCharLength){let n=[],o=-1,i=-1,r=0;for(let a=e.length;r=t&&n.push([o,i]),o=-1)}return e[r-1]&&r-o>=t&&n.push([o,r-1]),n}(g,c);e.length?s&&(C.indices=e):C.isMatch=!1}return C}function y(e){let t={};for(let n=0,o=e.length;n{this.chunks.push({pattern:e,alphabet:y(e),startIndex:t})},d=this.pattern.length;if(d>32){let e=0;const t=d%32,n=d-t;for(;e{const{isMatch:p,score:b,indices:h}=w(e,t,f,{location:o+u,distance:i,threshold:r,findAllMatches:a,minMatchCharLength:c,includeMatches:n,ignoreLocation:s});p&&(m=!0),d+=b,p&&h&&(l=[...l,...h])}));let f={isMatch:m,score:m?d/this.chunks.length:1};return m&&n&&(f.indices=l),f}}const k=[];function C(e,t){for(let n=0,o=k.length;n{if(!c(e.indices)||!e.indices.length)return;const{indices:n,value:o}=e;let i={indices:n,value:o};e.key&&(i.key=e.key.src),e.idx>-1&&(i.refIndex=e.idx),t.matches.push(i)}))}function E(e,t){t.score=e.score}class B{constructor(e,t={},n){if(this.options={...b,...t},this.options.useExtendedSearch)throw new Error("Extended search is not available");this._keyStore=new m(this.options.keys),this.setCollection(e,n)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof g))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){c(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=(()=>!1)){const t=[];for(let n=0,o=this._docs.length;n{let n=1;e.matches.forEach((({key:e,norm:o,score:i})=>{const r=e?e.weight:null;n*=Math.pow(0===i&&r?Number.EPSILON:i,(r||1)*(t?1:o))})),e.score=n}))}(l,{ignoreFieldNorm:s}),a&&l.sort(c),r(t)&&t>-1&&(l=l.slice(0,t)),function(e,t,{includeMatches:n=b.includeMatches,includeScore:o=b.includeScore}={}){const i=[];return n&&i.push(A),o&&i.push(E),e.map((e=>{const{idx:n}=e,o={item:t[n],refIndex:n};return i.length&&i.forEach((t=>{t(e,o)})),o}))}(l,this._docs,{includeMatches:n,includeScore:o})}_searchStringList(e){const t=C(e,this.options),{records:n}=this._myIndex,o=[];return n.forEach((({v:e,i:n,n:i})=>{if(!c(e))return;const{isMatch:r,score:a,indices:s}=t.searchIn(e);r&&o.push({item:e,idx:n,matches:[{score:a,value:e,norm:i,indices:s}]})})),o}_searchLogical(e){throw new Error("Logical search is not available")}_searchObjectList(e){const t=C(e,this.options),{keys:n,records:o}=this._myIndex,i=[];return o.forEach((({$:e,i:o})=>{if(!c(e))return;let r=[];n.forEach(((n,o)=>{r.push(...this._findMatches({key:n,value:e[o],searcher:t}))})),r.length&&i.push({idx:o,item:e,matches:r})})),i}_findMatches({key:e,value:t,searcher:n}){if(!c(t))return[];let i=[];if(o(t))t.forEach((({v:t,i:o,n:r})=>{if(!c(t))return;const{isMatch:a,score:s,indices:l}=n.searchIn(t);a&&i.push({score:s,key:e,value:t,idx:o,norm:r,indices:l})}));else{const{v:o,n:r}=t,{isMatch:a,score:c,indices:s}=n.searchIn(o);a&&i.push({score:c,key:e,value:o,norm:r,indices:s})}return i}}B.version="6.6.1",B.createIndex=F,B.parseIndex=function(e,{getFn:t=b.getFn,fieldNormWeight:n=b.fieldNormWeight}={}){const{keys:o,records:i}=e,r=new g({getFn:t,fieldNormWeight:n});return r.setKeys(o),r.setIndexRecords(i),r},B.config=b},8254:e=>{e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},9896:function(e){e.exports=function(){"use strict";function e(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,o=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(o=e[Symbol.iterator]()).next.bind(o)}function r(e){var t={exports:{}};return e(t,t.exports),t.exports}var a=r((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function n(t){e.exports.defaults=t}e.exports={defaults:t(),getDefaults:t,changeDefaults:n}})),c=/[&<>"']/,s=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,d=/[<>"']|&(?!#?\w+;)/g,m={"&":"&","<":"<",">":">",'"':""","'":"'"},f=function(e){return m[e]};function u(e,t){if(t){if(c.test(e))return e.replace(s,f)}else if(l.test(e))return e.replace(d,f);return e}var p=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function b(e){return e.replace(p,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var h=/(^|[^\[])\^/g;function g(e,t){e=e.source||e,t=t||"";var n={replace:function(t,o){return o=(o=o.source||o).replace(h,"$1"),e=e.replace(t,o),n},getRegex:function(){return new RegExp(e,t)}};return n}var F=/[^\w:]/g,v=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function w(e,t,n){if(e){var o;try{o=decodeURIComponent(b(n)).replace(F,"").toLowerCase()}catch(e){return null}if(0===o.indexOf("javascript:")||0===o.indexOf("vbscript:")||0===o.indexOf("data:"))return null}t&&!v.test(n)&&(n=A(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}var y={},x=/^[^:]+:\/*[^/]*$/,k=/^([^:]+:)[\s\S]*$/,C=/^([^:]+:\/*[^/]*)[\s\S]*$/;function A(e,t){y[" "+e]||(x.test(e)?y[" "+e]=e+"/":y[" "+e]=D(e,"/",!0));var n=-1===(e=y[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(k,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(C,"$1")+t:e+t}function E(e){for(var t,n,o=1;o=0&&"\\"===n[i];)o=!o;return o?"|":" |"})).split(/ \|/),o=0;if(n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}var P={escape:u,unescape:b,edit:g,cleanUrl:w,resolveUrl:A,noopTest:{exec:function(){}},merge:E,splitCells:B,rtrim:D,findClosingBracket:I,checkSanitizeDeprecation:z,repeatString:S},M=a.defaults,O=P.rtrim,V=P.splitCells,T=P.escape,L=P.findClosingBracket;function j(e,t,n){var o=t.href,i=t.title?T(t.title):null,r=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:o,title:i,text:r}:{type:"image",raw:n,href:o,title:i,text:T(r)}}function R(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var o=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=o.length?e.slice(o.length):e})).join("\n")}var N=function(){function e(e){this.options=e||M}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var n=this.rules.block.code.exec(e);if(n){var o=t[t.length-1];if(o&&"paragraph"===o.type)return{raw:n[0],text:n[0].trimRight()};var i=n[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:n[0],codeBlockStyle:"indented",text:this.options.pedantic?i:O(i,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],o=R(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:o}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var o=O(n,"#");this.options.pedantic?n=o.trim():o&&!/ $/.test(o)||(n=o.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var o,i=n.align.length;for(o=0;o ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,o,i,r,a,c,s,l,d=t[0],m=t[2],f=m.length>1,u={type:"list",raw:d,ordered:f,start:f?+m.slice(0,-1):"",loose:!1,items:[]},p=t[0].match(this.rules.block.item),b=!1,h=p.length;i=this.rules.block.listItemStart.exec(p[0]);for(var g=0;gi[1].length:r[1].length>i[0].length||r[1].length>3){p.splice(g,2,p[g]+"\n"+p[g+1]),g--,h--;continue}(!this.options.pedantic||this.options.smartLists?r[2][r[2].length-1]!==m[m.length-1]:f===(1===r[2].length))&&(a=p.slice(g+1).join("\n"),u.raw=u.raw.substring(0,u.raw.length-a.length),g=h-1),i=r}o=n.length,~(n=n.replace(/^ *([*+-]|\d+[.)]) ?/,"")).indexOf("\n ")&&(o-=n.length,n=this.options.pedantic?n.replace(/^ {1,4}/gm,""):n.replace(new RegExp("^ {1,"+o+"}","gm"),"")),c=b||/\n\n(?!\s*$)/.test(n),g!==h-1&&(b="\n"===n.charAt(n.length-1),c||(c=b)),c&&(u.loose=!0),this.options.gfm&&(l=void 0,(s=/^\[[ xX]\] /.test(n))&&(l=" "!==n[1],n=n.replace(/^\[[ xX]\] +/,""))),u.items.push({type:"list_item",raw:d,task:s,checked:l,loose:c,text:n})}return u}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):T(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:V(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var o,i=n.align.length;for(o=0;o/i.test(o[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:o[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):T(o[0]):o[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var o=O(n.slice(0,-1),"\\");if((n.length-o.length)%2==0)return}else{var i=L(t[2],"()");if(i>-1){var r=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,r).trim(),t[3]=""}}var a=t[2],c="";if(this.options.pedantic){var s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);s&&(a=s[1],c=s[3])}else c=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),j(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:c?c.replace(this.rules.inline._escapes,"$1"):c},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var o=(n[2]||n[1]).replace(/\s+/g," ");if(!(o=t[o.toLowerCase()])||!o.href){var i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return j(n,o,n[0])}},t.strong=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.strong.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="**"===o[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.strong.middle.exec(t.slice(0,o.index+3)))return{type:"strong",raw:e.slice(0,i[0].length),text:e.slice(2,i[0].length-2)}}},t.em=function(e,t,n){void 0===n&&(n="");var o=this.rules.inline.em.start.exec(e);if(o&&(!o[1]||o[1]&&(""===n||this.rules.inline.punctuation.exec(n)))){t=t.slice(-1*e.length);var i,r="*"===o[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(r.lastIndex=0;null!=(o=r.exec(t));)if(i=this.rules.inline.em.middle.exec(t.slice(0,o.index+2)))return{type:"em",raw:e.slice(0,i[0].length),text:e.slice(1,i[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),o=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return o&&i&&(n=n.substring(1,n.length-1)),n=T(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,o,i=this.rules.inline.autolink.exec(e);if(i)return o="@"===i[2]?"mailto:"+(n=T(this.options.mangle?t(i[1]):i[1])):n=T(i[1]),{type:"link",raw:i[0],text:n,href:o,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var o,i;if("@"===n[2])i="mailto:"+(o=T(this.options.mangle?t(n[0]):n[0]));else{var r;do{r=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(r!==n[0]);o=T(n[0]),i="www."===n[1]?"http://"+o:o}return{type:"link",raw:n[0],text:o,href:i,tokens:[{type:"text",raw:o,text:o}]}}},t.inlineText=function(e,t,n){var o,i=this.rules.inline.text.exec(e);if(i)return o=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):T(i[0]):i[0]:T(this.options.smartypants?n(i[0]):i[0]),{type:"text",raw:i[0],text:o}},e}(),q=P.noopTest,Z=P.edit,U=P.merge,H={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:q,table:q,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};H.def=Z(H.def).replace("label",H._label).replace("title",H._title).getRegex(),H.bullet=/(?:[*+-]|\d{1,9}[.)])/,H.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,H.item=Z(H.item,"gm").replace(/bull/g,H.bullet).getRegex(),H.listItemStart=Z(/^( *)(bull)/).replace("bull",H.bullet).getRegex(),H.list=Z(H.list).replace(/bull/g,H.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+H.def.source+")").getRegex(),H._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",H._comment=/|$)/,H.html=Z(H.html,"i").replace("comment",H._comment).replace("tag",H._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),H.paragraph=Z(H._paragraph).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.blockquote=Z(H.blockquote).replace("paragraph",H.paragraph).getRegex(),H.normal=U({},H),H.gfm=U({},H.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),H.gfm.nptable=Z(H.gfm.nptable).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.gfm.table=Z(H.gfm.table).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.pedantic=U({},H.normal,{html:Z("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",H._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:q,paragraph:Z(H.normal._paragraph).replace("hr",H.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",H.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var W={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:q,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation*\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation_\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation*\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:q,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};W.punctuation=Z(W.punctuation).replace(/punctuation/g,W._punctuation).getRegex(),W._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",W._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",W._comment=Z(H._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),W.em.start=Z(W.em.start).replace(/punctuation/g,W._punctuation).getRegex(),W.em.middle=Z(W.em.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.em.endAst=Z(W.em.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.em.endUnd=Z(W.em.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.start=Z(W.strong.start).replace(/punctuation/g,W._punctuation).getRegex(),W.strong.middle=Z(W.strong.middle).replace(/punctuation/g,W._punctuation).replace(/overlapSkip/g,W._overlapSkip).getRegex(),W.strong.endAst=Z(W.strong.endAst,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.strong.endUnd=Z(W.strong.endUnd,"g").replace(/punctuation/g,W._punctuation).getRegex(),W.blockSkip=Z(W._blockSkip,"g").getRegex(),W.overlapSkip=Z(W._overlapSkip,"g").getRegex(),W._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,W._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,W._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,W.autolink=Z(W.autolink).replace("scheme",W._scheme).replace("email",W._email).getRegex(),W._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,W.tag=Z(W.tag).replace("comment",W._comment).replace("attribute",W._attribute).getRegex(),W._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,W._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,W._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,W.link=Z(W.link).replace("label",W._label).replace("href",W._href).replace("title",W._title).getRegex(),W.reflink=Z(W.reflink).replace("label",W._label).getRegex(),W.reflinkSearch=Z(W.reflinkSearch,"g").replace("reflink",W.reflink).replace("nolink",W.nolink).getRegex(),W.normal=U({},W),W.pedantic=U({},W.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:Z(/^!?\[(label)\]\((.*?)\)/).replace("label",W._label).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",W._label).getRegex()}),W.gfm=U({},W.normal,{escape:Z(W.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),o+="&#"+n+";";return o}var $=function(){function e(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Q,this.options.tokenizer=this.options.tokenizer||new N,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:Y.normal,inline:X.normal};this.options.pedantic?(t.block=Y.pedantic,t.inline=X.pedantic):this.options.gfm&&(t.block=Y.gfm,this.options.breaks?t.inline=X.breaks:t.inline=X.gfm),this.tokenizer.rules=t}e.lex=function(t,n){return new e(n).lex(t)},e.lexInline=function(t,n){return new e(n).inlineTokens(t)};var n=e.prototype;return n.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},n.blockTokens=function(e,t,n){var o,i,r,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(o=this.tokenizer.space(e))e=e.substring(o.raw.length),o.type&&t.push(o);else if(o=this.tokenizer.code(e,t))e=e.substring(o.raw.length),o.type?t.push(o):((a=t[t.length-1]).raw+="\n"+o.raw,a.text+="\n"+o.text);else if(o=this.tokenizer.fences(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.heading(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.nptable(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.hr(e))e=e.substring(o.raw.length),t.push(o);else if(o=this.tokenizer.blockquote(e))e=e.substring(o.raw.length),o.tokens=this.blockTokens(o.text,[],n),t.push(o);else if(o=this.tokenizer.list(e)){for(e=e.substring(o.raw.length),r=o.items.length,i=0;i0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(s));)l.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(s));)s=s.slice(0,r.index)+"["+K("a",r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(a||(c=""),a=!1,i=this.tokenizer.escape(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.tag(e,n,o))e=e.substring(i.raw.length),n=i.inLink,o=i.inRawBlock,t.push(i);else if(i=this.tokenizer.link(e))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(i.raw.length),"link"===i.type&&(i.tokens=this.inlineTokens(i.text,[],!0,o)),t.push(i);else if(i=this.tokenizer.strong(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.em(e,s,c))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.codespan(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.br(e))e=e.substring(i.raw.length),t.push(i);else if(i=this.tokenizer.del(e))e=e.substring(i.raw.length),i.tokens=this.inlineTokens(i.text,[],n,o),t.push(i);else if(i=this.tokenizer.autolink(e,_))e=e.substring(i.raw.length),t.push(i);else if(n||!(i=this.tokenizer.url(e,_))){if(i=this.tokenizer.inlineText(e,o,J))e=e.substring(i.raw.length),c=i.raw.slice(-1),a=!0,t.push(i);else if(e){var d="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(d);break}throw new Error(d)}}else e=e.substring(i.raw.length),t.push(i);return t},t(e,null,[{key:"rules",get:function(){return{block:Y,inline:X}}}]),e}(),ee=a.defaults,te=P.cleanUrl,ne=P.escape,oe=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,n){var o=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,o);null!=i&&i!==e&&(n=!0,e=i)}return e=e.replace(/\n$/,"")+"\n",o?'
    '+(n?e:ne(e,!0))+"
    \n":"
    "+(n?e:ne(e,!0))+"
    \n"},t.blockquote=function(e){return"
    \n"+e+"
    \n"},t.html=function(e){return e},t.heading=function(e,t,n,o){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},t.list=function(e,t,n){var o=t?"ol":"ul";return"<"+o+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o='
    "},t.image=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var o=''+n+'":">"},t.text=function(e){return e},e}(),ie=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),re=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,o=0;if(this.seen.hasOwnProperty(n)){o=this.seen[e];do{n=e+"-"+ ++o}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=o,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),ae=a.defaults,ce=P.unescape,se=function(){function e(e){this.options=e||ae,this.options.renderer=this.options.renderer||new oe,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ie,this.slugger=new re}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w="",y=e.length;for(n=0;n0&&"text"===h.tokens[0].type?(h.tokens[0].text=v+" "+h.tokens[0].text,h.tokens[0].tokens&&h.tokens[0].tokens.length>0&&"text"===h.tokens[0].tokens[0].type&&(h.tokens[0].tokens[0].text=v+" "+h.tokens[0].tokens[0].text)):h.tokens.unshift({type:"text",text:v}):b+=v),b+=this.parse(h.tokens,p),d+=this.renderer.listitem(b,F,g);w+=this.renderer.list(d,f,u);continue;case"html":w+=this.renderer.html(m.text);continue;case"paragraph":w+=this.renderer.paragraph(this.parseInline(m.tokens));continue;case"text":for(d=m.tokens?this.parseInline(m.tokens):m.text;n+1An error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}}return be.options=be.setOptions=function(e){return le(be.defaults,e),ue(be.defaults),be},be.getDefaults=fe,be.defaults=pe,be.use=function(e){var t=le({},e);if(e.renderer&&function(){var n=be.defaults.renderer||new oe,o=function(t){var o=n[t];n[t]=function(){for(var i=arguments.length,r=new Array(i),a=0;aAn error occurred:

    "+me(e.message+"",!0)+"
    ";throw e}},be.Parser=se,be.parser=se.parse,be.Renderer=oe,be.TextRenderer=ie,be.Lexer=$,be.lexer=$.lex,be.Tokenizer=N,be.Slugger=re,be.parse=be,be}()},7933:(e,t,n)=>{"use strict";var o=n(8254),i=Array.prototype.concat,r=Array.prototype.slice,a=e.exports=function(e){for(var t=[],n=0,a=e.length;n{"use strict";n.r(t),n.d(t,{default:()=>s});var o=n(8332),i=n.n(o),r=n(1489),a=n.n(r),c={insert:"head",singleton:!1};i()(a(),c);const s=a().locals||{}},8332:(e,t,n)=>{"use strict";var o,i=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function c(e){for(var t=-1,n=0;n{var o=n(9145);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},3975:(e,t,n)=>{var o=n(3617);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},3932:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"switch-options",class:{"small-size":e.smallSize,grid:!e.popupMode}},[e.popupMode?[t("VButton",{ref:"button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[t("VIcon",{staticClass:"switch-icon",attrs:{icon:"mdi-checkbox-marked-circle-outline",size:e.smallSize?16:22}}),e._v("\n "+e._s(e.options.optionDisplayName)+"\n ")],1),e._v(" "),t("VPopup",{staticClass:"switch-options-popup widgets-popup",attrs:{"trigger-element":e.$refs.button,"esc-close":"","auto-destroy":""},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]:[t("div",{staticClass:"switch-options-grid"},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]],2)};o._withStripped=!0;var i=n(1445),r=n(7234);const a=Vue.extend({name:"SwitchOptions",components:{VPopup:i.VPopup,VButton:i.VButton,VIcon:i.VIcon,CheckBox:i.CheckBox,RadioButton:i.RadioButton},props:{options:{type:Object,required:!0},smallSize:{type:Boolean,default:!1},popupMode:{type:Boolean,default:!0}},data(){const{componentName:e}=this.options;return{popupOpen:!1,componentOptions:(0,r.getComponentSettings)(e).options}},computed:{mergedSwitchProps(){return{checkedIcon:"mdi-eye-off-outline",notCheckedIcon:"mdi-eye-outline",...this.options.switchProps}}},watch:{options(){this.updateColumnsCount()}},mounted(){this.updateColumnsCount()},methods:{updateColumnsCount(){const e=this.$el,t=Math.ceil(Object.keys(this.options.switches).length/12);e.style.setProperty("--columns",t.toString())},isDim(e){return"checked"===this.options.dimAt||void 0===this.options.dimAt?this.componentOptions[`switch-${e}`]:"notChecked"===this.options.dimAt&&!this.componentOptions[`switch-${e}`]}}});var c=n(8332),s=n.n(c),l=n(5895),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},7078:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{staticClass:"check-all-updates",attrs:{disabled:e.disabled},on:{click:function(t){return e.checkUpdates()}}},[t("VIcon",{attrs:{size:16,icon:"mdi-cloud-sync-outline"}}),e._v("\n 立即检查所有更新\n")],1)};o._withStripped=!0;var i=n(9107),r=n(1445),a=n(7548);const c=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon},data:()=>({disabled:!1}),methods:{async checkUpdates(){try{this.disabled=!0;const e=i.Toast.info("正在检查更新...","检查所有更新");await(0,a.forceCheckUpdateAndReload)(),e.close()}finally{this.disabled=!1}}}});var s=n(8332),l=n.n(s),d=n(8173),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"76652ef2",null).exports},3209:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"bisector-dialog-content-container"},[t("div",{staticClass:"bisector-dialog-content-text"},[e._v("\n 组件二等分进行中,预计剩余\n "),t("b",{staticStyle:{color:"var(--theme-color)"}},[e._v(e._s(e.rouge)+" ")]),e._v("轮次,请确认当前情况:\n ")]),e._v(" "),t("div",{staticClass:"bisector-dialog-button-group"},[t("VButton",{on:{click:e.onGood}},[e._v("正常")]),e._v(" "),t("VButton",{on:{click:e.onBad}},[e._v("不正常")]),e._v(" "),t("VButton",{attrs:{type:"primary"},on:{click:e.onAbort}},[e._v("终止")])],1),e._v(" "),t("div",{staticClass:"bisector-dialog-content-text weak"},[e._v("\n *可以点击×号关闭对话框,刷新页面后,会再次询问\n ")])])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(1445);const c=r().extend({components:{VButton:a.VButton},props:{rouge:{type:Number,required:!0},onAbort:{type:Function,default:none},onGood:{type:Function,default:none},onBad:{type:Function,default:none}}});var s=n(8332),l=n.n(s),d=n(771),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"31cf1990",null).exports},898:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",[e._v("\n 组件二等分\n "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1)])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(1445);const c=r().extend({components:{VIcon:a.VIcon},data:()=>({peek:!1}),watch:{peek(e){this.$el.closest(".be-dialog").style.opacity=e?"0.1":"1"}}});var s=n(8332),l=n.n(s),d=n(318),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"386ddf8e",null).exports},2098:(e,t,n)=>{"use strict";n.d(t,{Z:()=>z});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"launch-bar"},[t("div",{staticClass:"input-area"},[t("div",{staticClass:"launch-bar-form"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.keyword,expression:"keyword"}],ref:"input",staticClass:"input",attrs:{type:"text",autocomplete:"off",placeholder:e.recommended.word},domProps:{value:e.keyword},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.stopPropagation(),e.handleEnter.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.stopPropagation(),e.handleUp.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.stopPropagation(),e.handleDown.apply(null,arguments))}],input:function(t){t.target.composing||(e.keyword=t.target.value)}}}),e._v(" "),t("button",{staticClass:"submit",attrs:{title:"执行",tabindex:"-1"},on:{click:e.handleEnter}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1)])]),e._v(" "),t("div",{ref:"list",staticClass:"launch-bar-suggest-list"},[e.isHistory?t("div",{staticClass:"launch-bar-history-list"},[0===e.actions.length?t("div",{staticClass:"history-empty suggest-item disabled",attrs:{tabindex:"0"}},[e._v("\n 暂无搜索历史\n ")]):e._e(),e._v(" "),e._l(e.actions,(function(n,o){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem(t,o)},"next-item":function(t){return e.nextItem(t,o)},"delete-item":function(t){return e.onDeleteItem(t,o)},action:function(t){o===e.actions.length-1&&e.onClearHistory(),e.onAction(n)}}})}))],2):e._e(),e._v(" "),e.isHistory?e._e():t("div",{staticClass:"launch-bar-action-list"},[0===e.actions.length&&e.noActions?t("VEmpty",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}):e._e(),e._v(" "),0!==e.actions.length||e.noActions?e._e():t("VLoading",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}),e._v(" "),e._l(e.actions,(function(n,o){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem(t,o)},"next-item":function(t){return e.nextItem(t,o)},"delete-item":function(t){return e.onDeleteItem(t,o)},action:function(t){return e.onAction(n)}}})}))],2)])])};o._withStripped=!0;var i=n(7942),r=n(1445),a=n(779),c=n(2533),s=n(3085),l=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-launch-bar-action-item suggest-item",attrs:{tabindex:"0",title:e.action.displayName||e.action.name,"data-indexer":e.action.indexer},on:{click:function(t){return t.target!==t.currentTarget?null:e.performAction(t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),e.performAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:t.shiftKey?(t.preventDefault(),t.stopPropagation(),e.performDelete(t)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("previous-item",t.currentTarget))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("next-item",t.currentTarget))}]}},[t("div",{staticClass:"suggest-item-content"},[e.action.icon?t("div",{staticClass:"suggest-item-icon",on:{click:function(t){return e.performAction(t)}}},[t("VIcon",{attrs:{icon:e.action.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"suggest-item-title",on:{click:function(t){return e.performAction(t)}}},[e.action.content?t(e.action.content,{tag:"component",staticClass:"suggest-item-name",attrs:{name:e.action.name}}):t("div",{staticClass:"suggest-item-name"},[e._v("\n "+e._s(e.action.displayName||e.action.name)+"\n ")]),e._v(" "),e.action.description?t("div",{staticClass:"suggest-item-description",attrs:{title:e.action.description}},[e._v("\n "+e._s(e.action.description)+"\n ")]):e._e()],1),e._v(" "),e.action.deleteAction?t("div",{staticClass:"suggest-item-delete",attrs:{title:"删除此项"},on:{click:function(t){return e.performDelete(t)}}},[t("VIcon",{attrs:{icon:"cancel",size:18}})],1):e._e()])])};l._withStripped=!0;const d=Vue.extend({components:{VIcon:r.VIcon},props:{action:{type:Object,required:!0}},methods:{async performAction(e){const{currentTarget:t}=e;await this.action.action(),this.$emit("action",t)},async performDelete(e){const{currentTarget:t}=e;this.action.deleteAction&&(await this.action.deleteAction(),this.$emit("delete-item",t))}}});var m=n(8332),f=n.n(m),u=n(7463),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;var h=n(4893);const g=(0,h.Z)(d,l,[],!1,null,null,null).exports;var F=n(5613),v=n(9517),w=n(7087),y=n(4055);const[x]=(0,a.registerAndGetData)(F.LaunchBarActionProviders,[v.searchProvider,w.dr]),k=e=>[...e].sort((0,y.ascendingSort)((e=>e.order??1/0))),C=(e,t)=>t.map((t=>{const n=`${e.name}.${t.name}`;return{...t,key:n,provider:e}}));const[A]=(0,a.registerAndGetData)("launchBar.recommended",{word:"搜索",href:"https://search.bilibili.com/"}),E=Vue.extend({components:{VIcon:r.VIcon,VLoading:r.VLoading,VEmpty:r.VEmpty,ActionItem:g},data:()=>({recommended:A,actions:[],keyword:"",noActions:!1}),computed:{isHistory(){return 0===this.keyword.length}},watch:{keyword(){this.getActions()}},async mounted(){this.getActions(),(0,s.matchUrlPattern)(/^https?:\/\/search\.bilibili\.com/)&&(0,c.select)("#search-keyword, .search-input-el").then((e=>{e&&(this.keyword=e.value,document.addEventListener("change",(e=>{e.target instanceof HTMLInputElement&&"search-keyword"===e.target.id&&(this.keyword=e.target.value)})))}))},methods:{getOnlineActions:lodash.debounce((async function(){const e=(await Promise.all(x.map((async e=>C(e,await e.getActions(this.keyword)))))).flat();if(this.isHistory)return;const t=new i.Z(e,{keys:["indexer","displayName","name","description","key"]}).search(this.keyword);console.log(t),this.actions=k(t.map((e=>e.item)).slice(0,12)),this.noActions=0===this.actions.length}),200),getActions:async function(){if(this.noActions=!1,this.isHistory)return void(this.actions=k(C(w.dr,await w.dr.getActions(this.keyword))));this.actions=[],this.getOnlineActions()},handleSelect(){this.$emit("close"),this.getActions()},async handleEnter(e){if(!e.isComposing){if(this.actions.length>0&&!this.isHistory){const[e]=this.actions;if(!0!==e.explicitSelect)return void e.action()}if(this.keyword)return(0,v.search)(this.keyword),void this.handleSelect();window.open(this.recommended.href,"_blank"),this.handleSelect()}},handleUp(e){e.isComposing||(this.$refs.list.querySelector(".suggest-item:last-child").focus(),e.preventDefault())},handleDown(e){e.isComposing||(this.$refs.list.querySelector(".suggest-item").focus(),e.preventDefault())},previousItem(e,t){0===t?this.focus():e.previousElementSibling.focus()},nextItem(e,t){t!==this.actions.length-1?e.nextElementSibling.focus():this.focus()},search:v.search,onDeleteItem(e,t){this.previousItem(e,t),this.getActions()},onClearHistory(){this.focus(),this.getActions()},onAction(){this.handleSelect()},focus(){this.$refs.input.focus()}}});var B=n(8797),D=n.n(B),I={insert:"head",singleton:!1};f()(D(),I);D().locals;const z=(0,h.Z)(E,o,[],!1,null,null,null).exports},239:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"release-content"},[t("div",{staticClass:"release-content-markdown",domProps:{innerHTML:e._s(e.content)}}),e._v(" "),t("div",{staticClass:"release-content-actions"},[t("VButton",{on:{click:function(t){return e.$emit("dialog-close")}}},[e._v(" 取消 ")]),e._v(" "),e.detailsLink?t("a",{attrs:{href:e.detailsLink,target:"_blank"}},[t("VButton",[e._v(" 查看详情 ")])],1):e._e(),e._v(" "),e.updateUrl?t("a",{attrs:{href:e.updateUrl,target:"_blank"}},[t("VButton",{attrs:{type:"primary"}},[e._v(" 安装 ")])],1):e._e()],1)])};o._withStripped=!0;var i=n(2129),r=n(1445);const a=`https://github.com/${i.defaultOwner}/Bilibili-Evolved/releases`,c=Vue.extend({components:{VButton:r.VButton},props:{content:{type:String,default:""},updateUrl:{type:String,default:""}},data:()=>({detailsLink:a})});var s=n(8332),l=n.n(s),d=n(7373),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},8741:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-description",domProps:{innerHTML:e._s(e.html)}})};o._withStripped=!0;var i=n(7234),r=n(1557);const a=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,i.getComponentSettings)(this.componentData),html:""}},async created(){this.html=await(0,r.getDescriptionHTML)(this.componentData)}});var c=n(8332),s=n.n(c),l=n(3854),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},2161:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"be-settings"},[t("div",{staticClass:"sidebar"},[t("div",{ref:"widgetsIcon",class:{open:e.widgetsOpened},attrs:{title:"功能"},on:{click:[function(t){return t.shiftKey?e.theWorld.apply(null,arguments):null},function(t){if(t.ctrlKey||t.shiftKey||t.altKey||t.metaKey)return null;e.widgetsOpened=!e.widgetsOpened}],mouseover:function(t){return e.loadPanel("widgetsPanelPopup")}}},[t("VIcon",{attrs:{icon:"widgets",size:26}})],1),e._v(" "),t("div",{ref:"settingsIcon",class:{open:e.settingsOpened},attrs:{title:"设置"},on:{click:function(t){e.settingsOpened=!e.settingsOpened},mouseover:function(t){return e.loadPanel("settingsPanelPopup")}}},[t("VIcon",{attrs:{icon:"settings-outline",size:26}})],1)]),e._v(" "),t("VPopup",{ref:"widgetsPanelPopup",staticClass:"widgets-panel-popup",attrs:{"trigger-element":e.$refs.widgetsIcon,fixed:!0},model:{value:e.widgetsOpened,callback:function(t){e.widgetsOpened=t},expression:"widgetsOpened"}},[t("WidgetsPanel")],1),e._v(" "),t("VPopup",{ref:"settingsPanelPopup",staticClass:"settings-panel-popup",attrs:{"trigger-element":e.$refs.settingsIcon,"auto-close-predicate":e.settingsPanelClosePredicate,fixed:!0},model:{value:e.settingsOpened,callback:function(t){e.settingsOpened=t},expression:"settingsOpened"}},[t("SettingsPanel",{on:{close:function(t){e.settingsOpened=!1}}})],1)],1)};o._withStripped=!0;var i=n(1445),r=n(8677);const a={name:"SettingsContainer",components:{VPopup:i.VPopup,VIcon:i.VIcon,SettingsPanel:()=>Promise.resolve().then(n.bind(n,9313)).then((e=>e.default)),WidgetsPanel:()=>Promise.resolve().then(n.bind(n,7506)).then((e=>e.default))},data:()=>({settingsOpened:!1,widgetsOpened:!1}),mounted(){GM_registerMenuCommand("功能",(()=>{this.loadPanel("widgetsPanelPopup"),this.widgetsOpened=!0,this.settingsOpened=!1})),GM_registerMenuCommand("设置",(()=>{this.loadPanel("settingsPanelPopup"),this.widgetsOpened=!1,this.settingsOpened=!0}))},methods:{theWorld(){r.externalApis.theWorld(0)},settingsPanelClosePredicate:e=>!dqa(".be-settings-extra-options").some((t=>t===e.target||t.contains(e.target))),loadPanel(e){const t=this.$refs[e];t&&((t?.loaded??1)||(t.loaded=!0))}}};var c=n(8332),s=n.n(c),l=n(2194),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},9313:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Ae});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"settings-panel",class:{collapsed:e.collapsed,peek:e.peek}},[t("div",{staticClass:"settings-panel-header"},[t("VIcon",{attrs:{icon:"settings-outline"}}),e._v(" "),t("div",{staticClass:"title"},[e._v("设置")]),e._v(" "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1),e._v(" "),t("div",{staticClass:"close",on:{click:function(t){return e.$emit("close")}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1),e._v(" "),t("div",{staticClass:"settings-panel-content"},[t("div",{ref:"sidebarContainer",staticClass:"sidebar"},[t("ComponentTags",{ref:"componentTags",on:{change:function(t){e.searchFilter=t}}})],1),e._v(" "),t("div",{ref:"mainContainer",staticClass:"main"},[t("div",{ref:"componentList",staticClass:"component-list"},[t("div",{staticClass:"settings-panel-search-bar"},[t("TextBox",{staticClass:"settings-panel-search",attrs:{placeholder:"搜索"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}}),e._v(" "),e._l(e.searchBarActions,(function(n){return t("VButton",{key:n.key,attrs:{type:"transparent",icon:"",title:"function"==typeof n.title?n.title(e.searchBarContext):n.title,disabled:!!n.disabled&&n.disabled(e.searchBarContext)}},[t("VIcon",{attrs:{icon:n.icon,size:18},on:{click:function(t){return n.run(e.searchBarContext)}}})],1)}))],2),e._v(" "),e._l(e.renderedComponents,(function(n){return t("div",{key:n.name,on:{"!click":[function(t){return t.ctrlKey?(t.stopPropagation(),e.selectMultipleComponent(n)):null},function(t){return t.shiftKey?(t.stopPropagation(),e.selectMultipleComponent(n,!0)):null}]}},[t("ComponentSettings",{class:{selected:e.isComponentSelected(n.name)},attrs:{"component-data":n,"data-name":n.name},nativeOn:{click:function(t){return e.selectComponent(n)}}})],1)})),e._v(" "),0===e.renderedComponents.length?t("VEmpty"):e._e()],2)]),e._v(" "),t("VPopup",{ref:"detailsPopup",staticClass:"component-detail-panel",attrs:{"trigger-element":e.$refs.componentList,open:e.componentDetailOpen},on:{"popup-change":function(t){!t&&e.closePopper()}}},[e.selectedComponent?t("ComponentDetail",{key:e.selectedComponent.name,attrs:{"component-data":e.selectedComponent},on:{close:function(t){return e.closePopper()}}}):e._e()],1)],1)])};o._withStripped=!0;var i=n(1445),r=n(6695),a=n(3085),c=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-settings",class:{virtual:e.virtual}},[e.virtual?e._e():[t("div",{staticClass:"component-settings-row"},[t("TagRing",{attrs:{tags:e.componentData.tags}}),e._v(" "),t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),!1!==e.componentData.configurable?t("SwitchBox",{model:{value:e.settings.enabled,callback:function(t){e.$set(e.settings,"enabled",t)},expression:"settings.enabled"}}):t("VIcon",{staticClass:"details-arrow",attrs:{icon:"right-arrow",size:18}})],1)]],2)};c._withStripped=!0;var s=n(9896),l=n.n(s),d=n(7234),m=n(7481),f=n(2593),u=n(8737),p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"tag-ring"},[t("svg",{attrs:{height:e.size,width:e.size}},e._l(e.tags,(function(n,o){return t("circle",{key:n.name,staticClass:"tag-stroke",style:e.getStyle(n,o),attrs:{fill:"transparent","stroke-dasharray":e.circumference+" "+e.circumference,"stroke-width":e.stroke,r:e.radius,cx:e.size/2,cy:e.size/2}})})),0)])};p._withStripped=!0;const b=Vue.extend({props:{tags:{type:Array,required:!0},size:{type:Number,default:18},stroke:{type:Number,default:3}},data(){const e=this.size/2-this.stroke;return{radius:e,circumference:2*e*Math.PI}},methods:{getStyle(e,t){return{strokeDashoffset:t/this.tags.length*this.circumference,stroke:e.color}}}});var h=n(8332),g=n.n(h),F=n(7533),v=n.n(F),w={insert:"head",singleton:!1};g()(v(),w);v().locals;var y=n(4893);const x=(0,y.Z)(b,p,[],!1,null,null,null).exports;var k=n(1541);const C=Vue.extend({components:{SwitchBox:m.Z,TagRing:x,VIcon:f.default},props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,d.getComponentSettings)(this.componentData),virtual:!1}},async mounted(){const e=this.$el,t=(0,a.dq)(".settings-panel-content .main");t?(0,u.visibleInside)(e,t,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.log("settings container not found, virtual scroll will be disabled!")},methods:{markdown:e=>l()(e),descriptionI18n(e){const{description:t,options:n}=e;if(!t){if(n&&Object.keys(n).length>0){return`${Object.keys(n).length}个选项`}return"暂无说明"}return"string"==typeof t?t:t[(0,k.getSelectedLanguage)()]||t["zh-CN"]}}}),A=C;var E=n(7467),B=n.n(E),D={insert:"head",singleton:!1};g()(B(),D);B().locals;const I=(0,y.Z)(A,c,[],!1,null,null,null).exports;var z=n(2267),S=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-detail"},[e.settings?e._e():t("div",{staticClass:"component-not-found"},[e._v("\n 未找到组件'"+e._s(e.componentData.displayName)+"' ("+e._s(e.componentData.name)+"), 可能已被卸载.\n ")]),e._v(" "),e.settings?[t("div",{staticClass:"component-detail-header"},[t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),t("VIcon",{staticClass:"close",attrs:{icon:"close",size:18},on:{click:function(t){return e.$emit("close")}}})],1),e._v(" "),t("div",{staticClass:"component-detail-tags"},e._l(e.componentData.tags,(function(n){return t("div",{key:n.name,staticClass:"tag"},[t("div",{staticClass:"tag-color",style:{backgroundColor:n.color}}),e._v("\n "+e._s(n.displayName)+"\n ")])})),0),e._v(" "),e.componentData.options&&e.generatedOptions.length>0||e.componentData.extraOptions?[t("div",{staticClass:"component-detail-options"},[t("div",{staticClass:"component-detail-options-title"},[e._v("选项")]),e._v(" "),e._l(e.generatedOptions,(function([n,o]){return t("div",{key:n,staticClass:"generated-option"},[t("ComponentOption",{attrs:{name:n,"display-name":o.displayName,option:o,component:e.componentData}})],1)})),e._v(" "),e.componentData.extraOptions?t("div",{staticClass:"extra-option"},[t(e.componentData.extraOptions,{tag:"component",attrs:{"component-data":e.componentData}})],1):e._e(),e._v(" "),e._t("default")],2)]:e._e(),e._v(" "),!e.componentData.options||e.componentData.description?[t("ComponentDescription",{staticClass:"component-detail-description",attrs:{"component-data":e.componentData}})]:e._e(),e._v(" "),t("div",{staticClass:"component-detail-grow"}),e._v(" "),t("div",{staticClass:"component-detail-internal-data"},[e.componentData.commitHash?t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("Commit: "+e._s(e.componentData.commitHash.substring(0,9)))])]):e._e(),e._v(" "),t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("内部名称: "+e._s(e.componentData.name))]),e._v(" "),!1!==e.componentData.configurable&&e.componentActions.length>0?t("MiniToast",{staticClass:"extra-actions-wrapper",attrs:{placement:"bottom",trigger:"click"},scopedSlots:e._u([{key:"toast",fn:function(){return[t("div",{staticClass:"extra-actions-list"},e._l(e.componentActions,(function(n){return t("div",{key:n.name},[n.component?t(n.component,{tag:"component",attrs:{item:n,component:e.componentData}}):t("ComponentAction",{directives:[{name:"show",rawName:"v-show",value:!1!==n.visible,expression:"a.visible !== false"}],staticClass:"extra-action-item",attrs:{item:n,component:e.componentData}})],1)})),0)]},proxy:!0}],null,!1,2977217718)},[t("div",{staticClass:"extra-actions"},[t("VIcon",{attrs:{icon:"mdi-dots-vertical",size:16}})],1)]):e._e()],1)])]:e._e()],2)};S._withStripped=!0;var M=n(8741),P=function(){var e=this,t=e._self._c;return t("div",{staticClass:"component-option",attrs:{"data-type":e.type}},[t("div",{staticClass:"option-name"},[e._v("\n "+e._s(e.displayName)+"\n ")]),e._v(" "),"text"===e.type||"number"===e.type?t("TextBox",{attrs:{"change-on-blur":"",validator:e.option.validator,text:e.value.toString(),placeholder:e.value.toString()},on:{change:function(t){"text"===e.type?e.valueChange(t):e.numberChange(t)}}}):e._e(),e._v(" "),"boolean"===e.type?t("SwitchBox",{attrs:{checked:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"color"===e.type?t("ColorPicker",{attrs:{compact:!0,"popup-offset":-95,color:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"range"===e.type?t("RangeInput",{attrs:{validator:e.option.validator,range:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"image"===e.type?t("ImagePicker",{attrs:{image:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"dropdown"===e.type?t("VDropdown",{attrs:{value:e.value,items:e.getDropdownItems(e.option.dropdownEnum),"key-mapper":e=>e},on:{change:function(t){return e.valueChange(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}],null,!1,3506243887)}):e._e(),e._v(" "),"switch"===e.type?t("SwitchOptions",{attrs:{"small-size":"","popup-mode":!1,options:e.option.defaultValue}}):e._e(),e._v(" "),"slider"===e.type?t("VSlider",e._b({attrs:{value:e.value},on:{change:function(t){return e.debounceValueChange(t)}}},"VSlider",e.option.slider,!1)):e._e(),e._v(" "),"unknown"===e.type?t("div",{staticClass:"unknown-option-type"},[e._v("未知的选项类型")]):e._e()],1)};P._withStripped=!0;function O(e){this.settings.options[this.name]=e,this.value=e}const V={name:"ComponentOption",components:{SwitchOptions:n(3932).default,TextBox:i.TextBox,SwitchBox:i.SwitchBox,ColorPicker:i.ColorPicker,RangeInput:i.RangeInput,VDropdown:i.VDropdown,ImagePicker:i.ImagePicker,VSlider:i.VSlider},props:{name:{type:String,required:!0},displayName:{type:String,default:""},option:{type:Object,required:!0},component:{type:Object,required:!0}},data(){const e=(0,d.getComponentSettings)(this.component);return{settings:e,value:e.options[this.name]}},computed:{type(){const e=this.option,{defaultValue:t}=e;switch(typeof t){case"boolean":return"boolean";case"number":return e.slider?"slider":"number";case"string":return e.color?"color":e.dropdownEnum?"dropdown":"text";case"object":return"start"in t&&"end"in t?"range":"name"in t&&"url"in t?"image":"name"in t&&"switches"in t?"switch":"unknown";default:return"unknown"}}},methods:{getDropdownItems:e=>{if(Array.isArray(e))return e;return Object.entries(e).filter((e=>{let[t]=e;const n=t.charCodeAt(0);return!(n>=48&&n<=57)})).map((e=>{let[,t]=e;return t}))},numberChange(e){const t=this.settings,n=parseFloat(e);Number.isNaN(n)||(t.options[this.name]=n,this.value=n)},debounceValueChange:lodash.debounce(O,200),valueChange:O}};var T=n(7338),L=n.n(T),j={insert:"head",singleton:!1};g()(L(),j);L().locals;const R=(0,y.Z)(V,P,[],!1,null,"730efac0",null).exports;var N=n(8588),q=n(779),Z=n(6312);const U=[e=>({name:"uninstall",displayName:"卸载",icon:"mdi-trash-can-outline",visible:(0,d.isUserComponent)(e),action:async()=>{const{before:t,after:n}=(0,r.getHook)("userComponents.remove",e);await t(),await(0,Z.uninstallComponent)(e.name),await n()}})],[H]=(0,q.registerAndGetData)("settingsPanel.componentActions",U);var W=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-action",class:{disabled:e.disabled},attrs:{"aria-disabled":e.disabled,title:e.item.title},on:{click:e.handleClick}},[t("VIcon",{attrs:{icon:e.item.icon,size:16}}),e._v("\n "+e._s(e.item.displayName)+"\n")],1)};W._withStripped=!0;const G=Vue.extend({components:{VIcon:i.VIcon},props:{item:{type:Object,required:!0},component:{type:Object,required:!0}},data:()=>({disabled:!1}),methods:{async handleClick(){if(!this.disabled)try{this.disabled=!0,await this.item.action(this.component)}finally{this.disabled=!1}}}});var Q=n(2763),Y=n.n(Q),X={insert:"head",singleton:!1};g()(Y(),X);Y().locals;const K=(0,y.Z)(G,W,[],!1,null,null,null).exports,J=Vue.extend({components:{ComponentDescription:M.Z,ComponentOption:R,ComponentAction:K,VButton:i.VButton,VIcon:i.VIcon,SwitchBox:i.SwitchBox,MiniToast:i.MiniToast},mixins:[N.U],data(){return{virtual:!1,componentActions:H.map((e=>e(this.componentData))).filter((e=>void 0!==e&&!1!==e.visible))}},computed:{generatedOptions(){return Object.entries(this.componentData.options??{}).filter((e=>{let[,t]=e;return!t.hidden}))}},async mounted(){const e=this.$el;(0,u.visible)(e,(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})),await this.$nextTick(),this.$emit("mounted"),console.log(this.componentActions)}});var _=n(5248),$=n.n(_),ee={insert:"head",singleton:!1};g()($(),ee);$().locals;const te=(0,y.Z)(J,S,[],!1,null,null,null).exports;var ne=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-tags-preview"},[t("VPopup",{staticClass:"settings-panel-sub-page",attrs:{lazy:!1,"trigger-element":e.selectedSubPageTrigger},model:{value:e.selectedSubPageOpen,callback:function(t){e.selectedSubPageOpen=t},expression:"selectedSubPageOpen"}},[t("keep-alive",[e.selectedSubPage?t(e.selectedSubPage,{tag:"component"}):e._e()],1)],1),e._v(" "),t("div",{staticClass:"icon-list"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}})],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(e){return t("div",{key:e.name,staticClass:"component-tags-item"},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:e.icon}})],1)}))],2),e._v(" "),t("div",{staticClass:"component-tags"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"tag-count"},[e._v("("+e._s(n.count)+")")])],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",on:{click:function(t){return e.openSubPage(t,n.component)}}},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])],1)}))],2)],1)};ne._withStripped=!0;var oe=n(4055),ie=n(1432);const re=[{name:"userComponentsManage",displayName:"组件",component:()=>Promise.resolve().then(n.bind(n,1897)).then((e=>e.default)),icon:"mdi-cube-scan"},{name:"userPluginsManage",displayName:"插件",component:()=>Promise.resolve().then(n.bind(n,8426)).then((e=>e.default)),icon:"mdi-puzzle-outline"},{name:"customStylesManage",displayName:"样式",component:()=>Promise.resolve().then(n.bind(n,4161)).then((e=>e.default)),icon:"mdi-tune"},{name:"about",displayName:"关于",component:()=>Promise.resolve().then(n.bind(n,8171)).then((e=>e.default)),icon:"mdi-information-outline"}],ae=[e=>{let{renderedComponents:t}=e;return{name:"all",displayName:"全部",color:"inherit",icon:"mdi-shape-outline",order:0,count:t.length,filter:e=>e}},e=>{let{renderedComponents:t}=e;const n=[];t.forEach((e=>e.tags.forEach((e=>{n.push({count:0,...e,filter:t=>t.filter((t=>"all"===e.name||t.tags.some((t=>t.name===e.name))))})}))));const o=lodash.countBy(n,(e=>e.name));return lodash.uniqBy(n,(e=>e.name)).map((e=>({...e,count:o[e.name]})))}],[ce]=(0,q.registerAndGetData)("settingsPanel.tagFilters",ae),se=Vue.extend({components:{VIcon:f.default,VPopup:ie.default},data:()=>({tags:[],selectedTagName:"",subPages:re,selectedSubPage:null,selectedSubPageOpen:!1,selectedSubPageTrigger:null}),created(){this.refreshTags(),this.reset()},mounted(){this.selectTag(this.tags[0])},methods:{refreshTags(){const e=z.components.filter((e=>!e.hidden)),t=ce.flatMap((t=>"function"==typeof t?t({components:z.components,renderedComponents:e}):t));this.tags=t.sort((0,oe.ascendingSort)((e=>e.order)))},reset(){this.selectedTagName=this.tags[0].name},selectTag(e){this.selectedTagName=e.name;const{filter:t}=this.tags.find((t=>t.name===e.name));this.$emit("change",t)},async openSubPage(e,t){this.selectedSubPage!==t?(this.selectedSubPage=t,this.selectedSubPageTrigger=e.currentTarget,await this.$nextTick(),this.selectedSubPageOpen=!0):this.selectedSubPageOpen=!this.selectedSubPageOpen}}}),le=se;var de=n(5120),me=n.n(de),fe={insert:"head",singleton:!1};g()(me(),fe);me().locals;const ue=(0,y.Z)(le,ne,[],!1,null,null,null).exports;var pe=n(1557),be=n(9107),he=n(6955);const ge=[{key:"uninstallSelectedComponent",title:"卸载所选组件",icon:"mdi-trash-can-outline",disabled:e=>{let{selectedComponents:t}=e;return 0===t.length},run:e=>{window.confirm(`确定要卸载所选的 ${e.selectedComponents.length} 个组件吗?`)&&(e.selectedComponents.forEach((e=>{let{name:t}=e;(0,he.isBuiltInComponent)(t)?be.Toast.info("内置组件不能卸载","检查更新",3e3):(0,Z.uninstallComponent)(t)})),e.selectedComponents=[])}}],[Fe]=(0,q.registerAndGetData)("settingsPanel.searchBarActions",[...ge]),ve=e=>e,we={name:"SettingsPanel",components:{VIcon:i.VIcon,TextBox:i.TextBox,VPopup:i.VPopup,VButton:i.VButton,VEmpty:i.VEmpty,ComponentSettings:I,ComponentDetail:te,ComponentTags:ue},data:()=>({components:z.components,renderedComponents:z.components.filter((e=>!e.hidden)),selectedComponent:null,selectedComponents:[],componentDetailOpen:!1,collapsed:!1,peek:!1,searchKeyword:"",searchFilter:ve,searchBarActions:Fe}),computed:{isComponentSelected(){return e=>this.selectedComponents.some((t=>t.name===e))},tags(){const e=this.renderedComponents;let t=[];e.forEach((e=>e.tags.forEach((e=>{t.push({count:0,...e})}))));const n=lodash.countBy(t,(e=>e.name));return t=lodash.uniqBy(t,(e=>e.name)),t.forEach((e=>e.count=n[e.name])),t},searchBarContext(){return lodash.pick(this,"components","selectedComponent","selectedComponents","searchKeyword","searchFilter")}},watch:{searchKeyword:lodash.debounce((function(){this.updateRenderedComponents()}),200),searchFilter(){this.searchKeyword="",this.selectedComponents=[],this.updateRenderedComponents()},components(){this.updateRenderedComponents(),this.$refs.componentTags.refreshTags(),this.components.some((e=>e.name===this.selectedComponent?.name))||(this.selectedComponent=null)}},methods:{closePopper(){this.selectedComponent=null,this.selectedComponents=[],this.componentDetailOpen=!1},selectMultipleComponent(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.selectedComponent&&t){const{name:t}=e,{name:n}=this.selectedComponent,o=this.renderedComponents;let i=o.findIndex((e=>e.name===n)),r=o.findIndex((e=>e.name===t));return i>r&&([i,r]=[r,i]),void(this.selectedComponents=o.slice(i,r+1))}const n=this.selectedComponents,o=n.find((t=>t.name===e.name));o?(0,a.deleteValue)(n,(e=>e.name===o.name)):n.push(e)},selectComponent(e){this.selectedComponents=[];const t=(0,r.getHook)("settingsPanel.componentDetail.close"),n=(0,r.getHook)("settingsPanel.componentDetail.open"),o=this.selectedComponent?.name,i=this.componentDetailOpen&&o===e.name;t.before(o),this.closePopper(),t.after(o),i||(n.before(e.name),this.selectedComponents.push(e),this.selectedComponent=e,this.componentDetailOpen=!0,n.after(e.name))},async updateRenderedComponents(){const e=await(async()=>this.searchKeyword?Object.fromEntries(await Promise.all(z.components.map((async e=>[e.name,[e.name,e.displayName,e.tags.map((e=>`${e.name}\n${e.displayName}`)).join("\n"),await(0,pe.getDescriptionText)(e)].join("\n").toLowerCase()])))):{})(),t=z.components.filter((t=>{if(t.hidden)return!1;if(this.searchKeyword){const n=e[t.name];return!!n&&n.includes(this.searchKeyword.toLowerCase())}return!0}));this.renderedComponents=this.searchFilter(t)}}},ye=we;var xe=n(6207),ke=n.n(xe),Ce={insert:"head",singleton:!1};g()(ke(),Ce);ke().locals;const Ae=(0,y.Z)(ye,o,[],!1,null,null,null).exports},7506:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"widgets-panel"},[t("div",{staticClass:"widgets-panel-header"},[t("VIcon",{attrs:{icon:"widgets"}}),e._v("功能")],1),e._v(" "),e.loading||0!==e.widgets.length?e._e():t("VEmpty",{staticClass:"widgets-empty"},[t("div",{staticClass:"widgets-empty-content"},[e._v("\n 空空如也哦 = ̄ω ̄="),t("br"),e._v("\n 可点此参考\n "),t("a",{attrs:{href:"https://bilibili-evolved-doc.vercel.app/docs/user/settings",target:"_blank"}},[e._v("\n 用户手册\n ")]),e._v("\n 以安装所需功能\n ")])]),e._v(" "),t("div",{staticClass:"widget-items"},e._l(e.widgets,(function(e){return t(e.component,{key:e.name,tag:"component",staticClass:"widget-item",attrs:{options:e.options}})})),1)],1)};o._withStripped=!0;var i=n(3085),r=n(1445),a=n(779),c=n(1394);const s=[],l=Vue.extend({components:{VIcon:r.VIcon,VEmpty:r.VEmpty},data:()=>(unsafeWindow.allWidgets=s,{allWidgets:s,widgets:[],loading:!0}),watch:{allWidgets(){this.allWidgets.forEach((async e=>{const t=await(async e=>{if(e.urlExclude&&e.urlExclude.some(i.matchUrlPattern))return!1;if(e.urlInclude&&e.urlInclude.every(lodash.negate(i.matchUrlPattern)))return!1;if(e.condition){const t=e.condition();return!0===t||t instanceof Promise&&!0===await t}return!0})(e);t?this.widgets.push(e):(0,i.deleteValue)(this.widgets,(t=>t.name===e.name))})),console.log("updated widgets",this.widgets)}},created(){(0,a.registerAndGetData)(c.WidgetsPlugin,s),this.$nextTick().then((()=>this.loading=!1))}});var d=n(8332),m=n.n(d),f=n(4010),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},8171:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-about-page"},[t("div",{staticClass:"be-about-page-header"},[t("VIcon",{attrs:{icon:"mdi-information-outline"}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("关于")])],1),e._v(" "),t("div",{staticClass:"be-about-page-content"},[t("div",{staticClass:"script-meta-info"},[t("div",{staticClass:"meta-info-name"},[e._v("\n "+e._s(e.meta.name)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-version"},[e._v("\n "+e._s(e.meta.compilationInfo.versionWithTag)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-description"},[e._v("\n "+e._s(e.meta.description)+"\n ")])]),e._v(" "),e.feedbackSupported?t("div",{staticClass:"script-links"},[t("a",{staticClass:"homepage script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-home-outline",size:20}}),e._v("\n 主页\n ")],1)],1),e._v(" "),t("a",{staticClass:"feedback script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/issues"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-message-text-outline",size:18}}),e._v("\n 反馈\n ")],1)],1),e._v(" "),t("a",{staticClass:"releases script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/releases"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-update",size:20}}),e._v("\n 更新日志\n ")],1)],1),e._v(" "),t("a",{staticClass:"donate script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/donate.md"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-heart-outline",size:18}}),e._v("\n 捐赠\n ")],1)],1)]):e._e(),e._v(" "),t("div",{staticClass:"about-page-actions"},e._l(e.aboutPageActions,(function(n){return t("VButton",{key:n.name,staticClass:"about-page-action",attrs:{disabled:n.disabled},on:{click:function(t){return e.runAction(n,t)}}},[t("VIcon",{attrs:{icon:n.icon,size:n.iconSize||20}}),e._v("\n "+e._s(n.displayName)+"\n ")],1)})),1)])])};o._withStripped=!0;var i=n(5791),r=n(7079),a=n(1445),c=n(5607);const s=(()=>{const e=GM_info.scriptMetaStr.match(/@namespace\s*(.+)/);return!e||!e[1]||!e[1].includes("greasyfork")})(),l=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon},data:()=>({meta:i.meta,aboutPageActions:c.a,feedbackSupported:s}),methods:{formatDateTime:r.formatDateTime,async runAction(e,t){e.disabled=!0;try{await e.run(t)}finally{e.disabled=!1}}}});var d=n(8332),m=n.n(d),f=n(8911),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},1897:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-components-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(2267),r=n(6312),a=n(7234),c=n(6695),s=n(5347),l=n(8817);const d={key:"userComponents",icon:"mdi-cube-scan",title:"组件",description:"可以在此处添加或删除组件, 要查看组件详情, 请回到设置面板查看.",list:i.components,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,a.isUserComponent)(e)),async onItemAdd(e,t){const{before:n,after:o}=(0,c.getHook)("userComponents.add",e,t);await n();const{metadata:i,message:a}=await(0,r.installComponent)(e);return await o(i),a}},m=Vue.extend({components:{ManagePanel:s.Z,UserItem:l.Z},data:()=>({config:d}),methods:{getItemConfig:e=>({key:"userComponents",item:e,isUserItem:(0,a.isUserComponent)(e),getSettings:e=>(0,a.getComponentSettings)(e),onItemRemove:async e=>{const{before:t,after:n}=(0,c.getHook)("userComponents.remove",e);await t(),(0,r.uninstallComponent)(e.name),await n()}})}});const f=(0,n(4893).Z)(m,o,[],!1,null,null,null).exports},8426:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-plugins-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(7234),r=n(6695),a=n(4602),c=n(5347),s=n(8817);const l={key:"userPlugins",icon:"mdi-puzzle-outline",title:"插件",description:"可以在此处管理插件, 插件能够增强现有组件的功能. 内置插件包括脚本本体包含的插件和组件自带的插件, 组件自带的插件会自动随组件卸载而卸载.",list:a.plugins,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,i.isUserPlugin)(e.name)),async onItemAdd(e,t){const{before:n,after:o}=(0,r.getHook)("userPlugins.add",e,t);await n();const{message:i,metadata:c}=await(0,a.installPlugin)(e);return await o(c),i}},d=Vue.extend({components:{ManagePanel:c.Z,UserItem:s.Z},data:()=>({config:l}),methods:{getItemConfig:e=>({key:"userPlugins",item:e,isUserItem:(0,i.isUserPlugin)(e.name),onItemRemove:async e=>{const{before:t,after:n}=(0,r.getHook)("userPlugins.remove",e);await t(),(0,a.uninstallPlugin)(e.name),await n()}})}});const m=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},4161:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-styles-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(6695),r=n(6118),a=n(5347),c=n(8817);const s={key:"userStyles",icon:"mdi-tune",title:"样式",description:"可以在此处管理自定义样式, 自定义样式能简单修改界面元素以满足您的需求, 对于更复杂的样式, 推荐使用 Stylus 浏览器插件来管理.",list:r.styles,listFilter:(e,t)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase())),async onItemAdd(e,t){const{before:n,after:o}=(0,i.getHook)("userStyles.add",e,t);await n();const{message:a,metadata:c}=await(0,r.installStyle)(e);return await o(c),a}},l=Vue.extend({components:{ManagePanel:a.Z,UserItem:c.Z},data:()=>({config:s}),methods:{getItemConfig:e=>({key:"userStyles",item:e,isUserItem:!0,onItemRemove:async e=>{const{before:t,after:n}=(0,i.getHook)("userStyles.remove",e);await t(),(0,r.uninstallStyle)(e.name),await n()}})}});const d=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},5347:(e,t,n)=>{"use strict";n.d(t,{Z:()=>D});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-panel"},[t("div",{staticClass:"manage-panel-title sub-page-row"},[t("VIcon",{attrs:{icon:e.config.icon}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("\n "+e._s(e.config.title)+"\n ")])],1),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"description-text"},[e._v("\n "+e._s(e.config.description)+"\n ")])]):e._e(),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row separator"}):e._e(),e._v(" "),t("div",{staticClass:"sub-page-row add-item-row"},[t("div",{staticClass:"title-text"},[e._v("添加"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"item-actions"},[t("VButton",{ref:"batchAddButton",on:{click:function(t){return e.showBatchAddPopup()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-download-multiple"}}),e._v("\n 批量\n ")],1),e._v(" "),t("VButton",{on:{click:function(t){return e.browse()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-folder-open-outline"}}),e._v("\n 浏览\n ")],1),e._v(" "),t("OnlineRegistryButton",[t("VIcon",{attrs:{size:18,icon:"mdi-web"}}),e._v("\n 在线\n ")],1)],1),e._v(" "),t("VPopup",{staticClass:"batch-add-popup",attrs:{"trigger-element":e.$refs.batchAddButton},model:{value:e.batchAddShow,callback:function(t){e.batchAddShow=t},expression:"batchAddShow"}},[t("TextArea",{ref:"batchAddTextArea",staticClass:"batch-add-textarea",attrs:{placeholder:"批量粘贴功能链接, 可以混合其他类型的功能 (如合集包)"},model:{value:e.batchUrl,callback:function(t){e.batchUrl=t},expression:"batchUrl"}}),e._v(" "),t("div",{staticClass:"batch-add-actions"},[t("VButton",{on:{click:function(t){e.batchAddShow=!1}}},[t("VIcon",{attrs:{size:12,icon:"close"}}),e._v("\n 取消\n ")],1),e._v(" "),t("VButton",{attrs:{type:"primary",disabled:!e.batchUrl},on:{click:function(t){return e.batchAddItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1)],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("TextBox",{staticClass:"item-url",attrs:{placeholder:"粘贴"+e.config.title+"链接"},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.addItem()}},model:{value:e.url,callback:function(t){e.url=t},expression:"url"}}),e._v(" "),t("VButton",{attrs:{disabled:!e.url},on:{click:function(t){return e.addItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row separator"}),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"title-text"},[e._v("已安装的"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"exclude-built-in"},[e._v("\n 隐藏内置"+e._s(e.config.title)+"\n "),t("SwitchBox",{model:{value:e.excludeBuiltIn,callback:function(t){e.excludeBuiltIn=t},expression:"excludeBuiltIn"}})],1)]),e._v(" "),t("div",{staticClass:"sub-page-row search-item-row"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{staticClass:"list-search",attrs:{placeholder:`在 ${e.filteredList.length} 个${e.config.title}中搜索`},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),e.loaded?e._e():t("div",{staticClass:"sub-page-row"},[t("VLoading",{key:"loading"})],1),e._v(" "),e.loaded?t("div",{staticClass:"manage-item-list"},[0===e.debouncedList.length?t("VEmpty",{key:"empty"}):e._e(),e._v(" "),e._l(e.debouncedList,(function(n){return t("ManageItem",{key:n.name},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)}))],2):e._e()])};o._withStripped=!0;var i=n(1233),r=n(5244),a=n(9107),c=n(5145),s=n(7789),l=n(1445),d=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-item",class:{virtual:e.virtual}},[e.virtual?e._e():e._t("default")],2)};d._withStripped=!0;var m=n(8588);const f=Vue.extend({mixins:[(0,m.B)(".manage-panel .manage-item-list")]});var u=n(8332),p=n.n(u),b=n(686),h=n.n(b),g={insert:"head",singleton:!1};p()(h(),g);h().locals;var F=n(4893);const v=(0,F.Z)(f,d,[],!1,null,null,null).exports;var w=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{on:{mouseover:function(t){return e.initPopup()},click:function(t){return e.togglePopup()}}},[e._t("default")],2)};w._withStripped=!0;var y=n(9334);const x=Vue.extend({components:{VButton:l.VButton},methods:{initPopup:y.initPopup,togglePopup:y.togglePopup}});const k=(0,F.Z)(x,w,[],!1,null,null,null).exports,C=Vue.extend({components:{VIcon:l.VIcon,VButton:l.VButton,TextBox:l.TextBox,VEmpty:l.VEmpty,VLoading:l.VLoading,VPopup:l.VPopup,TextArea:l.TextArea,SwitchBox:l.SwitchBox,ManageItem:v,OnlineRegistryButton:k},props:{config:{type:Object,required:!0}},data:()=>({search:"",url:"",loaded:!1,batchAddShow:!1,batchUrl:"",excludeBuiltIn:!0,debouncedList:[]}),computed:{filteredList(){return this.config.list.filter((e=>this.config.listFilter(e,this.search,this.excludeBuiltIn)))}},watch:{filteredList(){this.loaded=!1,window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}),200)}},mounted(){window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}))},methods:{async browse(){const e=await(0,r.pickFile)({accept:"*.js;*.zip"});if(0===e.length)return;const[t]=e;let n;if(t.name.endsWith(".zip")){const e=await s.JSZipLibrary,o=await e.loadAsync(t),i=Object.values(o.files);if(0===i.length)return void a.Toast.info("不能打开空文件",`添加${this.config.title}`);n=await i[0].async("text")}else n=await t.text();try{a.Toast.info(await(this.config.onItemAdd?.(n,"")),`添加${this.config.title}`)}catch(e){(0,c.logError)(e)}},async showBatchAddPopup(){this.batchAddShow=!this.batchAddShow,this.batchAddShow&&(await this.$nextTick(),this.$refs.batchAddTextArea?.focus())},async addItem(){if(!this.url)return;const e=a.Toast.info("获取中...",`添加${this.config.title}`);try{const t=await(0,i.tryParseZip)(this.url);e.message=await(this.config.onItemAdd?.(t,this.url)),this.url=""}catch(t){console.error(t),e.type=a.ToastType.Error,e.message=t}},async batchAddItem(){if(!this.batchUrl)return;const e=this.batchUrl.split("\n").map((e=>e.trim())).filter((e=>""!==e)),t=a.Toast.info(`获取中... (0/${e.length})`,"批量添加");let n=0;const o=await Promise.allSettled(e.map((async o=>{const{message:r}=await(0,i.installFeature)(o);return n++,t.message=`获取中... (${n}/${e.length})`,r}))),r=o.filter((e=>"fulfilled"===e.status)).length,c=o.filter((e=>"rejected"===e.status)).length;t.message=`安装完成, 成功 ${r} 个, 失败 ${c} 个.`;const s=o.map(((t,n)=>{const o=e[n];return"fulfilled"===t.status?`${t.value} ${o}`:`${t.reason} ${o}`})).join("\n");console.log(s),this.batchUrl=""}}});var A=n(336),E=n.n(A),B={insert:"head",singleton:!1};p()(E(),B);E().locals;const D=(0,F.Z)(C,o,[],!1,null,null,null).exports},8817:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-item"},[t("div",{staticClass:"user-item-display-name"},[e._v("\n "+e._s(e.config.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"user-item-name"},[e._v("\n "+e._s(e.config.item.name)+"\n ")]),e._v(" "),e.config.isUserItem?t("div",{staticClass:"user-item-line"}):e._e(),e._v(" "),e.config.isUserItem?t("div",{ref:"removeIcon",staticClass:"user-item-remove",on:{dblclick:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:18}}),e._v(" "),t("div",{ref:"removeConfirmTemplate",staticClass:"user-item-remove-confirm"},[e._v("\n 确定要卸载 "+e._s(e.config.item.displayName)+" 吗?\n "),t("VButton",{attrs:{type:"primary"},on:{click:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}}),e._v("\n 确定\n ")],1)],1)],1):e._e()])};o._withStripped=!0;var i=n(9107),r=n(1445),a=n(7784);const c=Vue.extend({components:{VIcon:r.VIcon,VButton:a.default},props:{config:{type:Object,required:!0}},data:()=>({removeConfirm:!1,settings:{}}),mounted(){this.config.getSettings&&(this.settings=this.config.getSettings(this.config.item)),this.config.isUserItem&&i.Toast.mini(this.$refs.removeConfirmTemplate,this.$refs.removeIcon,{trigger:"click",hideOnClick:!0})},methods:{async removeItem(){await this.config.onItemRemove(this.config.item),this.removeConfirm=!1}}});var s=n(8332),l=n.n(s),d=n(1350),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},2208:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-video-control-bar-extend squirtle-block-wrap"},e._l(e.items,(function(n){return t("div",{key:n.name,staticClass:"be-video-control-bar-extend-item bilibili-player-video-btn squirtle-block-wrap bpx-player-ctrl-btn",style:{order:n.order.toString()},attrs:{"data-name":n.name},on:{click:function(e){return n.action(e)}}},[t("button",[t("span",{staticClass:"bp-svgicon"},[t("VIcon",{attrs:{icon:n.icon}})],1)]),e._v(" "),t("div",{staticClass:"be-video-control-tooltip"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)};o._withStripped=!0;var i=n(1445);const r=Vue.extend({components:{VIcon:i.VIcon},props:{items:{type:Array,required:!0}}});var a=n(8332),c=n.n(a),s=n(6872),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},5468:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-mini-toast-wrapper"},[t("div",{ref:"content",staticClass:"be-mini-toast-content"},[e._t("default")],2),e._v(" "),t("div",{ref:"toast",staticClass:"be-mini-toast"},[e._t("toast")],2)])};o._withStripped=!0;var i=n(2603);const r={body:()=>document.body,local:void 0},a=Vue.extend({model:{prop:"show",event:"change"},props:{show:{type:Boolean,default:!1},container:{type:String,default:"local"},placement:{type:String,default:void 0}},data:()=>({toast:null}),watch:{placement(e){e&&this.toast&&(this.toast.placement=e)}},async mounted(){await this.$nextTick();const e=r[this.container];this.toast=(0,i.$)(this.$refs.toast,this.$refs.content,{placement:this.placement,showOnCreate:this.show,trigger:"mouseenter focusin",onHide:()=>{this.$emit("change",!1)},onShow:()=>{this.$emit("change",!0)},appendTo:"function"==typeof e?e():e,...this.$attrs})}});const c=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},6706:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"toast-card visible",class:"toast-"+e.card.type,on:{mouseover:e.stopTimer,mouseout:e.startTimer}},[t("div",{staticClass:"toast-card-border"}),e._v(" "),t("div",{staticClass:"toast-card-header"},[t("h1",{staticClass:"toast-card-title"},[e._v("\n "+e._s(e.card.title)+"\n ")]),e._v(" "),t("div",{staticClass:"toast-card-close",class:{"show-progress":Boolean(e.remainingTime)},attrs:{title:"关闭"},on:{click:function(t){return e.card.close()}}},[t("ProgressRing",{attrs:{size:28,stroke:2,progress:e.progressMax-e.remainingTime,max:e.progressMax}}),e._v(" "),t("VIcon",{attrs:{icon:"close",size:14}})],1)]),e._v(" "),t("div",{staticClass:"toast-card-message",domProps:{innerHTML:e._s(e.card.message)}})])};o._withStripped=!0;var i=n(1445);const r=Vue.extend({components:{VIcon:i.VIcon,ProgressRing:i.ProgressRing},props:{card:{type:Object,required:!0}},data:()=>({progressMax:0,remainingTime:0}),created(){this.readDuration()},methods:{durationTick(){const{closeTime:e}=this.card;e&&(this.remainingTime=e-Number(new Date),this.remainingTime>0&&requestAnimationFrame((()=>this.durationTick())))},readDuration(){const{duration:e,closeTime:t}=this.card;e&&(this.progressMax=t-Number(new Date),this.remainingTime=this.progressMax,requestAnimationFrame((()=>this.durationTick())))},stopTimer(){this.card.clearDuration(),this.progressMax=0,this.remainingTime=0},startTimer(){this.card.setDuration(),this.readDuration()}}});var a=n(8332),c=n.n(a),s=n(1579),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},7481:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-switch-box",class:{checked:e.checked,disabled:e.disabled},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.disabled,tabindex:"0"},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])?null:(t.preventDefault(),e.toggle())},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.toggle())}]}},[t("label",[t("input",{ref:"input",attrs:{type:"checkbox",disabled:e.disabled},domProps:{checked:e.checked},on:{change:function(t){return t.stopPropagation(),e.$emit("change",t.target.checked)}}}),e._v(" "),e._m(0)])])};o._withStripped=!0;const i=Vue.extend({name:"SwitchBox",model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},methods:{toggle(){this.disabled||(this.$refs.input.checked=!this.$refs.input.checked,this.$emit("change",this.$refs.input.checked))}}});var r=n(8332),a=n.n(r),c=n(4085),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"bar"},[e("div",{staticClass:"thumb"})])}],!1,null,null,null).exports},9856:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-textbox",class:{linear:e.linear},attrs:{role:"textbox"}},[t("input",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"input",e.$attrs,!1),e.restListeners)),e._v(" "),e.linear?t("div",{staticClass:"linear-bar"}):e._e()])};o._withStripped=!0;var i=n(3225);const r=Vue.extend({name:"TextBox",mixins:[i.t],props:{linear:{type:Boolean,default:!1}}});var a=n(8332),c=n.n(a),s=n(4098),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"d1f779a8",null).exports},7784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-button",class:{[e.type]:!0,disabled:e.disabled,round:e.round,icon:e.icon},attrs:{role:"button","aria-disabled":e.disabled,tabindex:e.disabled?-1:0},on:{keydown:[function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)},function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)}]}},e.disabled?null:e.$listeners),[t("div",{staticClass:"content-container"},[e._t("default",(function(){return[e._v("Button")]}))],2)])};o._withStripped=!0;const i=Vue.extend({name:"VButton",props:{type:{type:String,default:"light"},round:{type:Boolean,default:!1},icon:{type:Boolean,default:!1}},computed:{disabled(){return Boolean(this.$attrs.disabled)}}});var r=n(8332),a=n.n(r),c=n(5564),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,"18aa9448",null).exports},1570:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-loading"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};o._withStripped=!0;var i=n(779);const[r]=(0,i.registerAndGetData)("vLoading",{content:"加载中..."}),a=Vue.extend({name:"VLoading",data:()=>({config:r})});var c=n(8332),s=n.n(c),l=n(8203),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},1432:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-popup",class:{open:e.open,fixed:e.fixed,close:!e.open,"closed-style":e.closedStyle}},e.$listeners),[e.loaded?e._t("default"):e._e()],2)};o._withStripped=!0;const i=Vue.extend({name:"VPopup",model:{prop:"open",event:"popup-change"},props:{open:{type:Boolean,required:!1,default:!1},closedStyle:{type:Boolean,required:!1,default:!0},fixed:{type:Boolean,required:!1,default:!1},triggerElement:{required:!1,default:null},lazy:{type:Boolean,required:!1,default:!0},autoClose:{type:Boolean,required:!1,default:!0},autoDestroy:{type:Boolean,required:!1,default:!1},escClose:{type:Boolean,required:!1,default:!1},autoClosePredicate:{type:Function,required:!1,default:null}},data(){return{loaded:!this.lazy}},computed:{trigger(){return null===this.triggerElement?null:"$el"in this.triggerElement?this.triggerElement.$el:this.triggerElement}},watch:{open(){this.lazy&&!this.loaded&&(this.loaded=!0),this.setAutoClose()}},mounted(){const e=this.$el;this.open&&this.setAutoClose(),this.escClose&&e.addEventListener("keydown",(e=>{"Escape"===e.key&&this.$emit("popup-change",!1)})),this.autoDestroy&&e.addEventListener("transitionend",(()=>{this.open||(this.loaded=!1)}))},methods:{openHandler(e){const t=e.target,n=document.querySelector(".toast-card-container");let o=t!==this.trigger&&!this.trigger?.contains(t)&&t!==this.$el&&!this.$el.contains(t)&&!n?.contains(t);this.autoClosePredicate&&(o=o&&this.autoClosePredicate({target:t,element:this.$el,trigger:this.trigger})),o&&this.$emit("popup-change",!1)},setAutoClose(){if(this.autoClose){["mousedown","touchstart"].forEach((e=>{this.open?document.documentElement.addEventListener(e,(e=>this.openHandler(e))):document.documentElement.removeEventListener(e,(e=>this.openHandler(e)))}))}},toggle(){this.$emit("popup-change",!this.open)}}});var r=n(8332),a=n.n(r),c=n(4621),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,null,null).exports},91:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{ref:"slider",staticClass:"be-slider",attrs:{role:"slider",tabindex:e.focusable?0:-1},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(-1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(1))}]}},[t("div",{ref:"barContainer",staticClass:"bar-container",on:{click:function(t){return e.setByCoord(t.offsetX)}}},[e._t("bar",(function(){return[t("div",{staticClass:"default-bar"})]}))],2),e._v(" "),t("MiniToast",{ref:"thumbContainer",staticClass:"thumb-container",style:{left:e.thumbLeft},attrs:{placement:"top",arrow:!1},scopedSlots:e._u([{key:"toast",fn:function(){return[e._v("\n "+e._s(e.displayFun(e.realValue))+"\n ")]},proxy:!0}])},[e._t("thumb",(function(){return[t("div",{staticClass:"default-thumb"})]}))],2)],1)};o._withStripped=!0;var i=n(5468);const r=Vue.extend({name:"VSlider",components:{MiniToast:i.Z},model:{prop:"value",event:"change"},props:{focusable:{type:Boolean,default:!0},min:{type:Number,default:0},max:{type:Number,default:100},value:{type:Number,default:0},center:{type:Number,default:0},step:{type:Number,default:1},displayFun:{type:Function,default:e=>String(e)}},data:()=>({realValue:0}),computed:{realMax(){return this.valueToRounded(this.max,Math.floor)},realMin(){return this.valueToRounded(this.min,Math.ceil)},valueLength(){const e=this.realMax-this.realMin;return e<0?(console.error("[VSlider] No desirable value between min and max"),0):e},thumbLeft(){if(0===this.valueLength)return 0;return`${(this.realValue-this.realMin)/this.valueLength*100}%`},centerCoord(){return this.valueToLength(this.center-this.realMin)}},watch:{value(e){e!==this.realValue&&this.setByValue(e)},center(){this.setByValue(this.realValue)},min(){this.setByRounded(this.realValue)},max(){this.setByRounded(this.realValue)}},created(){this.setByValue(this.value)},mounted(){this.setupDrag()},methods:{valueToStep(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round)(e/this.step)},valueToStepped(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.valueToStep(e,t)*this.step},lengthToValue(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return this.valueLength*(e/t)},lengthToStep(e){return this.valueToStep(this.lengthToValue(e))},lengthToStepped(e){return this.lengthToStep(e)*this.step},valueToLength(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return 0===this.valueLength?0:t*(e/this.valueLength)},valueToRounded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.center+this.valueToStepped(e-this.center,t)},limitValue(e){return 0===this.valueLength?this.realMin:(ethis.realMax&&(e=this.realMax),e)},offsetByStep(e){this.setByRounded(this.realValue+e*this.step)},setByLimited(e){e!==this.realValue&&(this.realValue=e,this.$emit("change",this.realValue))},setByRounded(e){this.setByLimited(this.limitValue(e))},setByValue(e){this.setByRounded(this.valueToRounded(e))},setByCoord(e){this.setByRounded(this.center+this.lengthToStepped(e-this.centerCoord))},setupDrag(){function e(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const i=e=>{e.preventDefault(),e instanceof MouseEvent||e instanceof unsafeWindow.MouseEvent?n(e.pageX):1===e.touches.length&&n(e.touches[0].pageX)};return e.addEventListener(t,i,{once:o,passive:!1}),()=>e.removeEventListener(t,i)}const t=this.$refs.thumbContainer.$el,n=[{start:"mousedown",move:"mousemove",end:"mouseup"},{start:"touchstart",move:"touchmove",end:"touchend"}];for(const o of n){let n=0,i=0;e(t,o.start,(t=>{this.$emit("start",this.realValue),this.$refs.slider.focus(),n=t,i=this.realValue;const r=e(window,o.move,(e=>{this.setByValue(i+this.lengthToValue(e-n))}));e(window,o.end,(()=>{this.$emit("end",this.realValue),r()}),!0)}))}}}});var a=n(8332),c=n.n(a),s=n(1473),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"94f62aa6",null).exports},2593:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("i",e._g(e._b({staticClass:"be-icon",class:e.classes,style:{"--size":e.size+"px"}},"i",e.$attrs,!1),e.$listeners),[e._t("default"),e._v(" "),e.icon in e.$options.static.customIcons?t("div",{staticClass:"custom-icon",domProps:{innerHTML:e._s(e.$options.static.customIcons[e.icon])}}):e._e()],2)};o._withStripped=!0;var i=n(779);const r=n(5454),a=lodash.fromPairs(r.keys().map((e=>[e.replace(/.*\/([^/]+?)\.svg$/,"$1"),r(e)]))),[c]=(0,i.registerAndGetData)("ui.icons",a),s={customIcons:a},l=Vue.extend({name:"VIcon",props:{icon:{type:String,default:""},size:{type:Number,default:24},colored:{type:Boolean,default:!1}},computed:{classes(){const e=this.$options.static.customIcons,t=this.icon,n=[];return this.colored&&n.push("colored"),""===t||t in e?n:t.startsWith("mdi-")?[...n,"mdi",t]:[...n,`be-iconfont-${t}`]}},beforeCreate(){this.$options.static=s}}),d=l;var m=n(8332),f=n.n(m),u=n(6893),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},4893:(e,t,n)=>{"use strict";function o(e,t,n,o,i,r,a,c){var s,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),a?(s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=s):i&&(s=c?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),s)if(l.functional){l._injectStyles=s;var d=l.render;l.render=function(e,t){return s.call(t),d(e,t)}}else{var m=l.beforeCreate;l.beforeCreate=m?[].concat(m,s):[s]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},5026:(e,t,n)=>{"use strict";const o=Object.freeze({}),i=Array.isArray;function r(e){return null==e}function a(e){return null!=e}function c(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function l(e){return"function"==typeof e}function d(e){return null!==e&&"object"==typeof e}const m=Object.prototype.toString;function f(e){return"[object Object]"===m.call(e)}function u(e){const t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function b(e){return null==e?"":Array.isArray(e)||f(e)&&e.toString===m?JSON.stringify(e,null,2):String(e)}function h(e){const t=parseFloat(e);return isNaN(t)?e:t}function g(e,t){const n=Object.create(null),o=e.split(",");for(let e=0;en[e.toLowerCase()]:e=>n[e]}const F=g("key,ref,slot,slot-scope,is");function v(e,t){const n=e.length;if(n){if(t===e[n-1])return void(e.length=n-1);const o=e.indexOf(t);if(o>-1)return e.splice(o,1)}}const w=Object.prototype.hasOwnProperty;function y(e,t){return w.call(e,t)}function x(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const k=/-(\w)/g,C=x((e=>e.replace(k,((e,t)=>t?t.toUpperCase():"")))),A=x((e=>e.charAt(0).toUpperCase()+e.slice(1))),E=/\B([A-Z])/g,B=x((e=>e.replace(E,"-$1").toLowerCase())),D=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){const o=arguments.length;return o?o>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function I(e,t){t=t||0;let n=e.length-t;const o=new Array(n);for(;n--;)o[n]=e[n+t];return o}function z(e,t){for(const n in t)e[n]=t[n];return e}function S(e){const t={};for(let n=0;n!1,O=e=>e;function V(e,t){if(e===t)return!0;const n=d(e),o=d(t);if(!n||!o)return!n&&!o&&String(e)===String(t);try{const n=Array.isArray(e),o=Array.isArray(t);if(n&&o)return e.length===t.length&&e.every(((e,n)=>V(e,t[n])));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(n||o)return!1;{const n=Object.keys(e),o=Object.keys(t);return n.length===o.length&&n.every((n=>V(e[n],t[n])))}}catch(e){return!1}}function T(e,t){for(let n=0;n0,K=Q&&Q.indexOf("edge/")>0;Q&&Q.indexOf("android");const J=Q&&/iphone|ipad|ipod|ios/.test(Q);Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q);const _=Q&&Q.match(/firefox\/(\d+)/),$={}.watch;let ee,te=!1;if(G)try{const e={};Object.defineProperty(e,"passive",{get(){te=!0}}),window.addEventListener("test-passive",null,e)}catch(o){}const ne=()=>(void 0===ee&&(ee=!G&&void 0!==n.g&&n.g.process&&"server"===n.g.process.env.VUE_ENV),ee),oe=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ie(e){return"function"==typeof e&&/native code/.test(e.toString())}const re="undefined"!=typeof Symbol&&ie(Symbol)&&"undefined"!=typeof Reflect&&ie(Reflect.ownKeys);let ae;ae="undefined"!=typeof Set&&ie(Set)?Set:class{constructor(){this.set=Object.create(null)}has(e){return!0===this.set[e]}add(e){this.set[e]=!0}clear(){this.set=Object.create(null)}};let ce=null;function se(e=null){e||ce&&ce._scope.off(),ce=e,e&&e._scope.on()}class le{constructor(e,t,n,o,i,r,a,c){this.tag=e,this.data=t,this.children=n,this.text=o,this.elm=i,this.ns=void 0,this.context=r,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=c,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}get child(){return this.componentInstance}}const de=(e="")=>{const t=new le;return t.text=e,t.isComment=!0,t};function me(e){return new le(void 0,void 0,void 0,String(e))}function fe(e){const t=new le(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}let ue=0;const pe=[];class be{constructor(){this._pending=!1,this.id=ue++,this.subs=[]}addSub(e){this.subs.push(e)}removeSub(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,pe.push(this))}depend(e){be.target&&be.target.addDep(this)}notify(e){const t=this.subs.filter((e=>e));for(let e=0,n=t.length;e{const e=t[n];if(Le(e))return e.value;{const t=e&&e.__ob__;return t&&t.dep.depend(),e}},set:e=>{const o=t[n];Le(o)&&!Le(e)?o.value=e:t[n]=e}})}function Ne(e,t,n){const o=e[t];if(Le(o))return o;const i={get value(){const o=e[t];return void 0===o?n:o},set value(n){e[t]=n}};return U(i,"__v_isRef",!0),i}function qe(e){return Ze(e,!1)}function Ze(e,t){if(!f(e))return e;if(Te(e))return e;const n=t?"__v_rawToShallowReadonly":"__v_rawToReadonly",o=e[n];if(o)return o;const i=Object.create(Object.getPrototypeOf(e));U(e,n,i),U(i,"__v_isReadonly",!0),U(i,"__v_raw",e),Le(e)&&U(i,"__v_isRef",!0),(t||Ve(e))&&U(i,"__v_isShallow",!0);const r=Object.keys(e);for(let n=0;nTt(e,null,n,d,t);let f,u,p=!1,b=!1;if(Le(e)?(f=()=>e.value,p=Ve(e)):Oe(e)?(f=()=>(e.__ob__.dep.depend(),e),r=!0):i(e)?(b=!0,p=e.some((e=>Oe(e)||Ve(e))),f=()=>e.map((e=>Le(e)?e.value:Oe(e)?cn(e):l(e)?m(e,"watcher getter"):void 0))):f=l(e)?t?()=>m(e,"watcher getter"):()=>{if(!d||!d._isDestroyed)return u&&u(),m(e,"watcher",[h])}:M,t&&r){const e=f;f=()=>cn(e())}let h=e=>{u=g.onStop=()=>{m(e,"watcher cleanup")}};if(ne())return h=M,t?n&&m(t,"watcher callback",[f(),b?[]:void 0,h]):f(),M;const g=new mn(ce,f,M,{lazy:!0});g.noRecurse=!t;let F=b?[]:We;return g.run=()=>{if(g.active)if(t){const e=g.get();(r||p||(b?e.some(((e,t)=>j(e,F[t]))):j(e,F)))&&(u&&u(),m(t,"watcher callback",[e,F===We?void 0:F,h]),F=e)}else g.get()},"sync"===a?g.update=g.run:"post"===a?(g.post=!0,g.update=()=>Mn(g)):g.update=()=>{if(d&&d===ce&&!d._isMounted){const e=d._preWatchers||(d._preWatchers=[]);e.indexOf(g)<0&&e.push(g)}else Mn(g)},t?n?g.run():F=g.get():"post"===a&&d?d.$once("hook:mounted",(()=>g.get())):g.get(),()=>{g.teardown()}}let Qe;class Ye{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Qe,!e&&Qe&&(this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1)}run(e){if(this.active){const t=Qe;try{return Qe=this,e()}finally{Qe=t}}}on(){Qe=this}off(){Qe=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t{const t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),o="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=o?e.slice(1):e,once:n,capture:o,passive:t}}));function Je(e,t){function n(){const e=n.fns;if(!i(e))return Tt(e,null,arguments,t,"v-on handler");{const n=e.slice();for(let e=0;e0&&(l=ot(l,`${t||""}_${o}`),nt(l[0])&&nt(m)&&(n[d]=me(m.text+l[0].text),l.shift()),n.push.apply(n,l)):s(l)?nt(m)?n[d]=me(m.text+l):""!==l&&n.push(me(l)):nt(l)&&nt(m)?n[d]=me(m.text+l.text):(c(e._isVList)&&a(l.tag)&&r(l.key)&&a(t)&&(l.key=`__vlist${t}_${o}__`),n.push(l)));return n}function it(e,t){let n,o,r,c,s=null;if(i(e)||"string"==typeof e)for(s=new Array(e.length),n=0,o=e.length;n0,c=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(c&&i&&i!==o&&s===i.$key&&!a&&!i.$hasNormal)return i;r={};for(const o in t)t[o]&&"$"!==o[0]&&(r[o]=kt(e,n,o,t[o]))}else r={};for(const e in n)e in r||(r[e]=Ct(n,e));return t&&Object.isExtensible(t)&&(t._normalized=r),U(r,"$stable",c),U(r,"$key",s),U(r,"$hasNormal",a),r}function kt(e,t,n,o){const r=function(){const t=ce;se(e);let n=arguments.length?o.apply(null,arguments):o({});n=n&&"object"==typeof n&&!i(n)?[n]:tt(n);const r=n&&n[0];return se(t),n&&(!r||1===n.length&&r.isComment&&!yt(r))?void 0:n};return o.proxy&&Object.defineProperty(t,n,{get:r,enumerable:!0,configurable:!0}),r}function Ct(e,t){return()=>e[t]}function At(e){return{get attrs(){if(!e._attrsProxy){const t=e._attrsProxy={};U(t,"_v_attr_proxy",!0),Et(t,e.$attrs,o,e,"$attrs")}return e._attrsProxy},get listeners(){return e._listenersProxy||Et(e._listenersProxy={},e.$listeners,o,e,"$listeners"),e._listenersProxy},get slots(){return function(e){return e._slotsProxy||Dt(e._slotsProxy={},e.$scopedSlots),e._slotsProxy}(e)},emit:D(e.$emit,e),expose(t){t&&Object.keys(t).forEach((n=>Re(e,t,n)))}}}function Et(e,t,n,o,i){let r=!1;for(const a in t)a in e?t[a]!==n[a]&&(r=!0):(r=!0,Bt(e,a,o,i));for(const n in e)n in t||(r=!0,delete e[n]);return r}function Bt(e,t,n,o){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:()=>n[o][t]})}function Dt(e,t){for(const n in t)e[n]=t[n];for(const n in e)n in t||delete e[n]}function It(){const e=ce;return e._setupContext||(e._setupContext=At(e))}let zt=null;function St(e,t){return(e.__esModule||re&&"Module"===e[Symbol.toStringTag])&&(e=e.default),d(e)?t.extend(e):e}function Mt(e){if(i(e))for(let t=0;tVt(e,o,i+" (Promise/async)"))),r._handled=!0)}catch(e){Vt(e,o,i)}return r}function Lt(e,t,n){if(q.errorHandler)try{return q.errorHandler.call(null,e,t,n)}catch(t){t!==e&&jt(t)}jt(e)}function jt(e,t,n){if(!G||"undefined"==typeof console)throw e;console.error(e)}let Rt=!1;const Nt=[];let qt,Zt=!1;function Ut(){Zt=!1;const e=Nt.slice(0);Nt.length=0;for(let t=0;t{e.then(Ut),J&&setTimeout(M)},Rt=!0}else if(Y||"undefined"==typeof MutationObserver||!ie(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())qt="undefined"!=typeof setImmediate&&ie(setImmediate)?()=>{setImmediate(Ut)}:()=>{setTimeout(Ut,0)};else{let e=1;const t=new MutationObserver(Ut),n=document.createTextNode(String(e));t.observe(n,{characterData:!0}),qt=()=>{e=(e+1)%2,n.data=String(e)},Rt=!0}function Ht(e,t){let n;if(Nt.push((()=>{if(e)try{e.call(t)}catch(e){Vt(e,t,"nextTick")}else n&&n(t)})),Zt||(Zt=!0,qt()),!e&&"undefined"!=typeof Promise)return new Promise((e=>{n=e}))}function Wt(e){return(t,n=ce)=>{if(n)return function(e,t,n){const o=e.$options;o[t]=Gn(o[t],n)}(n,e,t)}}const Gt=Wt("beforeMount"),Qt=Wt("mounted"),Yt=Wt("beforeUpdate"),Xt=Wt("updated"),Kt=Wt("beforeDestroy"),Jt=Wt("destroyed"),_t=Wt("activated"),$t=Wt("deactivated"),en=Wt("serverPrefetch"),tn=Wt("renderTracked"),nn=Wt("renderTriggered"),on=Wt("errorCaptured");var rn=Object.freeze({__proto__:null,version:"2.7.14",defineComponent:function(e){return e},ref:function(e){return je(e,!1)},shallowRef:function(e){return je(e,!0)},isRef:Le,toRef:Ne,toRefs:function(e){const t=i(e)?new Array(e.length):{};for(const n in e)t[n]=Ne(e,n);return t},unref:function(e){return Le(e)?e.value:e},proxyRefs:function(e){if(Oe(e))return e;const t={},n=Object.keys(e);for(let o=0;o{t.depend()}),(()=>{t.notify()})),i={get value(){return n()},set value(e){o(e)}};return U(i,"__v_isRef",!0),i},triggerRef:function(e){e.dep&&e.dep.notify()},reactive:function(e){return Pe(e,!1),e},isReactive:Oe,isReadonly:Te,isShallow:Ve,isProxy:function(e){return Oe(e)||Te(e)},shallowReactive:Me,markRaw:function(e){return Object.isExtensible(e)&&U(e,"__v_skip",!0),e},toRaw:function e(t){const n=t&&t.__v_raw;return n?e(n):t},readonly:qe,shallowReadonly:function(e){return Ze(e,!0)},computed:function(e,t){let n,o;const i=l(e);i?(n=e,o=M):(n=e.get,o=e.set);const r=ne()?null:new mn(ce,n,M,{lazy:!0}),a={effect:r,get value(){return r?(r.dirty&&r.evaluate(),be.target&&r.depend(),r.value):n()},set value(e){o(e)}};return U(a,"__v_isRef",!0),U(a,"__v_isReadonly",i),a},watch:function(e,t,n){return Ge(e,t,n)},watchEffect:function(e,t){return Ge(e,null,t)},watchPostEffect:He,watchSyncEffect:function(e,t){return Ge(e,null,{flush:"sync"})},EffectScope:Ye,effectScope:function(e){return new Ye(e)},onScopeDispose:function(e){Qe&&Qe.cleanups.push(e)},getCurrentScope:function(){return Qe},provide:function(e,t){ce&&(Xe(ce)[e]=t)},inject:function(e,t,n=!1){const o=ce;if(o){const i=o.$parent&&o.$parent._provided;if(i&&e in i)return i[e];if(arguments.length>1)return n&&l(t)?t.call(o):t}},h:function(e,t,n){return Pt(ce,e,t,n,2,!0)},getCurrentInstance:function(){return ce&&{proxy:ce}},useSlots:function(){return It().slots},useAttrs:function(){return It().attrs},useListeners:function(){return It().listeners},mergeDefaults:function(e,t){const n=i(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const o=n[e];o?i(o)||l(o)?n[e]={type:o,default:t[e]}:o.default=t[e]:null===o&&(n[e]={default:t[e]})}return n},nextTick:Ht,set:Ie,del:ze,useCssModule:function(e="$style"){if(!ce)return o;return ce[e]||o},useCssVars:function(e){if(!G)return;const t=ce;t&&He((()=>{const n=t.$el,o=e(t,t._setupProxy);if(n&&1===n.nodeType){const e=n.style;for(const t in o)e.setProperty(`--${t}`,o[t])}}))},defineAsyncComponent:function(e){l(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:i=200,timeout:r,suspensible:a=!1,onError:c}=e;let s=null,d=0;const m=()=>{let e;return s||(e=s=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),c)return new Promise(((t,n)=>{c(e,(()=>t((d++,s=null,m()))),(()=>n(e)),d+1)}));throw e})).then((t=>e!==s&&s?s:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),t))))};return()=>({component:m(),delay:i,timeout:r,error:o,loading:n})},onBeforeMount:Gt,onMounted:Qt,onBeforeUpdate:Yt,onUpdated:Xt,onBeforeUnmount:Kt,onUnmounted:Jt,onActivated:_t,onDeactivated:$t,onServerPrefetch:en,onRenderTracked:tn,onRenderTriggered:nn,onErrorCaptured:function(e,t=ce){on(e,t)}});const an=new ae;function cn(e){return sn(e,an),an.clear(),e}function sn(e,t){let n,o;const r=i(e);if(!(!r&&!d(e)||e.__v_skip||Object.isFrozen(e)||e instanceof le)){if(e.__ob__){const n=e.__ob__.dep.id;if(t.has(n))return;t.add(n)}if(r)for(n=e.length;n--;)sn(e[n],t);else if(Le(e))sn(e.value,t);else for(o=Object.keys(e),n=o.length;n--;)sn(e[o[n]],t)}}let ln,dn=0;class mn{constructor(e,t,n,o,i){!function(e,t=Qe){t&&t.active&&t.effects.push(e)}(this,Qe&&!Qe._vm?Qe:e?e._scope:void 0),(this.vm=e)&&i&&(e._watcher=this),o?(this.deep=!!o.deep,this.user=!!o.user,this.lazy=!!o.lazy,this.sync=!!o.sync,this.before=o.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++dn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ae,this.newDepIds=new ae,this.expression="",l(t)?this.getter=t:(this.getter=function(e){if(H.test(e))return;const t=e.split(".");return function(e){for(let n=0;n{hn=t}}function Fn(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function vn(e,t){if(t){if(e._directInactive=!1,Fn(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(let t=0;tdocument.createEvent("Event").timeStamp&&(In=()=>e.now())}const zn=(e,t)=>{if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function Sn(){let e,t;for(Dn=In(),En=!0,xn.sort(zn),Bn=0;Bn{for(let e=0;ee)),t._pending=!1}pe.length=0})(),oe&&q.devtools&&oe.emit("flush")}function Mn(e){const t=e.id;if(null==Cn[t]&&(e!==be.target||!e.noRecurse)){if(Cn[t]=!0,En){let t=xn.length-1;for(;t>Bn&&xn[t].id>e.id;)t--;xn.splice(t+1,0,e)}else xn.push(e);An||(An=!0,Ht(Sn))}}function Pn(e,t){if(e){const n=Object.create(null),o=re?Reflect.ownKeys(e):Object.keys(e);for(let i=0;i(this.$slots||xt(r,e.scopedSlots,this.$slots=vt(n,r)),this.$slots),Object.defineProperty(this,"scopedSlots",{enumerable:!0,get(){return xt(r,e.scopedSlots,this.slots())}}),d&&(this.$options=s,this.$slots=this.slots(),this.$scopedSlots=xt(r,e.scopedSlots,this.$slots)),s._scopeId?this._c=(e,t,n,o)=>{const a=Pt(l,e,t,n,o,m);return a&&!i(a)&&(a.fnScopeId=s._scopeId,a.fnContext=r),a}:this._c=(e,t,n,o)=>Pt(l,e,t,n,o,m)}function Vn(e,t,n,o,i){const r=fe(e);return r.fnContext=n,r.fnOptions=o,t.slot&&((r.data||(r.data={})).slot=t.slot),r}function Tn(e,t){for(const n in t)e[C(n)]=t[n]}function Ln(e){return e.name||e.__name||e._componentTag}Ft(On.prototype);const jn={init(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){const t=e;jn.prepatch(t,t)}else(e.componentInstance=function(e,t){const n={_isComponent:!0,_parentVnode:e,parent:t},o=e.data.inlineTemplate;return a(o)&&(n.render=o.render,n.staticRenderFns=o.staticRenderFns),new e.componentOptions.Ctor(n)}(e,hn)).$mount(t?e.elm:void 0,t)},prepatch(e,t){const n=t.componentOptions;!function(e,t,n,i,r){const a=i.data.scopedSlots,c=e.$scopedSlots,s=!!(a&&!a.$stable||c!==o&&!c.$stable||a&&e.$scopedSlots.$key!==a.$key||!a&&e.$scopedSlots.$key);let l=!!(r||e.$options._renderChildren||s);const d=e.$vnode;e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=r;const m=i.data.attrs||o;e._attrsProxy&&Et(e._attrsProxy,m,d.data&&d.data.attrs||o,e,"$attrs")&&(l=!0),e.$attrs=m,n=n||o;const f=e.$options._parentListeners;if(e._listenersProxy&&Et(e._listenersProxy,n,f||o,e,"$listeners"),e.$listeners=e.$options._parentListeners=n,bn(e,n,f),t&&e.$options.props){Ce(!1);const n=e._props,o=e.$options._propKeys||[];for(let i=0;iv(o,n)));const l=e=>{for(let e=0,t=o.length;e{e.resolved=St(n,t),i?o.length=0:l(!0)})),f=L((t=>{a(e.errorComp)&&(e.error=!0,l(!0))})),u=e(m,f);return d(u)&&(p(u)?r(e.resolved)&&u.then(m,f):p(u.component)&&(u.component.then(m,f),a(u.error)&&(e.errorComp=St(u.error,t)),a(u.loading)&&(e.loadingComp=St(u.loading,t),0===u.delay?e.loading=!0:c=setTimeout((()=>{c=null,r(e.resolved)&&r(e.error)&&(e.loading=!0,l(!1))}),u.delay||200)),a(u.timeout)&&(s=setTimeout((()=>{s=null,r(e.resolved)&&f(null)}),u.timeout)))),i=!1,e.loading?e.loadingComp:e.resolved}}(f,m),void 0===e))return function(e,t,n,o,i){const r=de();return r.asyncFactory=e,r.asyncMeta={data:t,context:n,children:o,tag:i},r}(f,t,n,s,l);t=t||{},fo(e),a(t.model)&&function(e,t){const n=e.model&&e.model.prop||"value",o=e.model&&e.model.event||"input";(t.attrs||(t.attrs={}))[n]=t.model.value;const r=t.on||(t.on={}),c=r[o],s=t.model.callback;a(c)?(i(c)?-1===c.indexOf(s):c!==s)&&(r[o]=[s].concat(c)):r[o]=s}(e.options,t);const u=function(e,t,n){const o=t.options.props;if(r(o))return;const i={},{attrs:c,props:s}=e;if(a(c)||a(s))for(const e in o){const t=B(e);et(i,s,e,t,!0)||et(i,c,e,t,!1)}return i}(t,e);if(c(e.options.functional))return function(e,t,n,r,c){const s=e.options,l={},d=s.props;if(a(d))for(const e in d)l[e]=Jn(e,d,t||o);else a(n.attrs)&&Tn(l,n.attrs),a(n.props)&&Tn(l,n.props);const m=new On(n,l,c,r,e),f=s.render.call(null,m._c,m);if(f instanceof le)return Vn(f,n,m.parent,s);if(i(f)){const e=tt(f)||[],t=new Array(e.length);for(let o=0;o{e(n,o),t(n,o)};return n._merged=!0,n}let Zn=M;const Un=q.optionMergeStrategies;function Hn(e,t,n=!0){if(!t)return e;let o,i,r;const a=re?Reflect.ownKeys(t):Object.keys(t);for(let c=0;c{Un[e]=Gn})),R.forEach((function(e){Un[e+"s"]=Qn})),Un.watch=function(e,t,n,o){if(e===$&&(e=void 0),t===$&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;const r={};z(r,e);for(const e in t){let n=r[e];const o=t[e];n&&!i(n)&&(n=[n]),r[e]=n?n.concat(o):i(o)?o:[o]}return r},Un.props=Un.methods=Un.inject=Un.computed=function(e,t,n,o){if(!e)return t;const i=Object.create(null);return z(i,e),t&&z(i,t),i},Un.provide=function(e,t){return e?function(){const n=Object.create(null);return Hn(n,l(e)?e.call(this):e),t&&Hn(n,l(t)?t.call(this):t,!1),n}:t};const Yn=function(e,t){return void 0===t?e:t};function Xn(e,t,n){if(l(t)&&(t=t.options),function(e,t){const n=e.props;if(!n)return;const o={};let r,a,c;if(i(n))for(r=n.length;r--;)a=n[r],"string"==typeof a&&(c=C(a),o[c]={type:null});else if(f(n))for(const e in n)a=n[e],c=C(e),o[c]=f(a)?a:{type:a};e.props=o}(t),function(e,t){const n=e.inject;if(!n)return;const o=e.inject={};if(i(n))for(let e=0;e-1)if(r&&!y(i,"default"))a=!1;else if(""===a||a===B(e)){const e=to(String,i.type);(e<0||c-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===m.call(n)&&e.test(t));var n}function ho(e,t){const{cache:n,keys:o,_vnode:i}=e;for(const e in n){const r=n[e];if(r){const a=r.name;a&&!t(a)&&go(n,e,o,i)}}}function go(e,t,n,o){const i=e[t];!i||o&&i.tag===o.tag||i.componentInstance.$destroy(),e[t]=null,v(n,t)}!function(e){e.prototype._init=function(e){const t=this;t._uid=mo++,t._isVue=!0,t.__v_skip=!0,t._scope=new Ye(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){const n=e.$options=Object.create(e.constructor.options),o=t._parentVnode;n.parent=t.parent,n._parentVnode=o;const i=o.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Xn(fo(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){const t=e.$options;let n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;const t=e.$options._parentListeners;t&&bn(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;const t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=vt(t._renderChildren,i),e.$scopedSlots=n?xt(e.$parent,n.data.scopedSlots,e.$slots):o,e._c=(t,n,o,i)=>Pt(e,t,n,o,i,!1),e.$createElement=(t,n,o,i)=>Pt(e,t,n,o,i,!0);const r=n&&n.data;De(e,"$attrs",r&&r.attrs||o,null,!0),De(e,"$listeners",t._parentListeners||o,null,!0)}(t),yn(t,"beforeCreate",void 0,!1),function(e){const t=Pn(e.$options.inject,e);t&&(Ce(!1),Object.keys(t).forEach((n=>{De(e,n,t[n])})),Ce(!0))}(t),io(t),function(e){const t=e.$options.provide;if(t){const n=l(t)?t.call(e):t;if(!d(n))return;const o=Xe(e),i=re?Reflect.ownKeys(n):Object.keys(n);for(let e=0;e1?I(n):n;const o=I(arguments,1),i=`event handler for "${e}"`;for(let e=0,r=n.length;eparseInt(this.max)&&go(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created(){this.cache=Object.create(null),this.keys=[]},destroyed(){for(const e in this.cache)go(this.cache,e,this.keys)},mounted(){this.cacheVNode(),this.$watch("include",(e=>{ho(this,(t=>bo(e,t)))})),this.$watch("exclude",(e=>{ho(this,(t=>!bo(e,t)))}))},updated(){this.cacheVNode()},render(){const e=this.$slots.default,t=Mt(e),n=t&&t.componentOptions;if(n){const e=po(n),{include:o,exclude:i}=this;if(o&&(!e||!bo(o,e))||i&&e&&bo(i,e))return t;const{cache:r,keys:a}=this,c=null==t.key?n.Ctor.cid+(n.tag?`::${n.tag}`:""):t.key;r[c]?(t.componentInstance=r[c].componentInstance,v(a,c),a.push(c)):(this.vnodeToCache=t,this.keyToCache=c),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){const t={get:()=>q};Object.defineProperty(e,"config",t),e.util={warn:Zn,extend:z,mergeOptions:Xn,defineReactive:De},e.set=Ie,e.delete=ze,e.nextTick=Ht,e.observable=e=>(Be(e),e),e.options=Object.create(null),R.forEach((t=>{e.options[t+"s"]=Object.create(null)})),e.options._base=e,z(e.options.components,vo),function(e){e.use=function(e){const t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;const n=I(arguments,1);return n.unshift(this),l(e.install)?e.install.apply(e,n):l(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Xn(this.options,e),this}}(e),function(e){e.cid=0;let t=1;e.extend=function(e){e=e||{};const n=this,o=n.cid,i=e._Ctor||(e._Ctor={});if(i[o])return i[o];const r=Ln(e)||Ln(n.options),a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Xn(n.options,e),a.super=n,a.options.props&&function(e){const t=e.options.props;for(const n in t)oo(e.prototype,"_props",n)}(a),a.options.computed&&function(e){const t=e.options.computed;for(const n in t)ao(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach((function(e){a[e]=n[e]})),r&&(a.options.components[r]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=z({},a.options),i[o]=a,a}}(e),function(e){R.forEach((t=>{e[t]=function(e,n){return n?("component"===t&&f(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&l(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(uo),Object.defineProperty(uo.prototype,"$isServer",{get:ne}),Object.defineProperty(uo.prototype,"$ssrContext",{get(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(uo,"FunctionalRenderContext",{value:On}),uo.version="2.7.14";const wo=g("style,class"),yo=g("input,textarea,option,select,progress"),xo=g("contenteditable,draggable,spellcheck"),ko=g("events,caret,typing,plaintext-only"),Co=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Ao="http://www.w3.org/1999/xlink",Eo=e=>":"===e.charAt(5)&&"xlink"===e.slice(0,5),Bo=e=>Eo(e)?e.slice(6,e.length):"",Do=e=>null==e||!1===e;function Io(e,t){return{staticClass:zo(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function zo(e,t){return e?t?e+" "+t:e:t||""}function So(e){return Array.isArray(e)?function(e){let t,n="";for(let o=0,i=e.length;oPo(e)||Oo(e),To=Object.create(null),Lo=g("text,number,password,search,email,tel,url");var jo=Object.freeze({__proto__:null,createElement:function(e,t){const n=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(e,t){return document.createElementNS(Mo[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),Ro={create(e,t){No(t)},update(e,t){e.data.ref!==t.data.ref&&(No(e,!0),No(t))},destroy(e){No(e,!0)}};function No(e,t){const n=e.data.ref;if(!a(n))return;const o=e.context,r=e.componentInstance||e.elm,c=t?null:r,s=t?void 0:r;if(l(n))return void Tt(n,o,[c],o,"template ref function");const d=e.data.refInFor,m="string"==typeof n||"number"==typeof n,f=Le(n),u=o.$refs;if(m||f)if(d){const e=m?u[n]:n.value;t?i(e)&&v(e,r):i(e)?e.includes(r)||e.push(r):m?(u[n]=[r],qo(o,n,u[n])):n.value=[r]}else if(m){if(t&&u[n]!==r)return;u[n]=s,qo(o,n,c)}else if(f){if(t&&n.value!==r)return;n.value=c}}function qo({_setupState:e},t,n){e&&y(e,t)&&(Le(e[t])?e[t].value=n:e[t]=n)}const Zo=new le("",{},[]),Uo=["create","activate","update","remove","destroy"];function Ho(e,t){return e.key===t.key&&e.asyncFactory===t.asyncFactory&&(e.tag===t.tag&&e.isComment===t.isComment&&a(e.data)===a(t.data)&&function(e,t){if("input"!==e.tag)return!0;let n;const o=a(n=e.data)&&a(n=n.attrs)&&n.type,i=a(n=t.data)&&a(n=n.attrs)&&n.type;return o===i||Lo(o)&&Lo(i)}(e,t)||c(e.isAsyncPlaceholder)&&r(t.asyncFactory.error))}function Wo(e,t,n){let o,i;const r={};for(o=t;o<=n;++o)i=e[o].key,a(i)&&(r[i]=o);return r}var Go={create:Qo,update:Qo,destroy:function(e){Qo(e,Zo)}};function Qo(e,t){(e.data.directives||t.data.directives)&&function(e,t){const n=e===Zo,o=t===Zo,i=Xo(e.data.directives,e.context),r=Xo(t.data.directives,t.context),a=[],c=[];let s,l,d;for(s in r)l=i[s],d=r[s],l?(d.oldValue=l.value,d.oldArg=l.arg,Jo(d,"update",t,e),d.def&&d.def.componentUpdated&&c.push(d)):(Jo(d,"bind",t,e),d.def&&d.def.inserted&&a.push(d));if(a.length){const o=()=>{for(let n=0;n{for(let n=0;n-1?ti(e,t,n):Co(t)?Do(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):xo(t)?e.setAttribute(t,((e,t)=>Do(t)||"false"===t?"false":"contenteditable"===e&&ko(t)?t:"true")(t,n)):Eo(t)?Do(n)?e.removeAttributeNS(Ao,Bo(t)):e.setAttributeNS(Ao,t,n):ti(e,t,n)}function ti(e,t,n){if(Do(n))e.removeAttribute(t);else{if(Y&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){const t=n=>{n.stopImmediatePropagation(),e.removeEventListener("input",t)};e.addEventListener("input",t),e.__ieph=!0}e.setAttribute(t,n)}}var ni={create:$o,update:$o};function oi(e,t){const n=t.elm,o=t.data,i=e.data;if(r(o.staticClass)&&r(o.class)&&(r(i)||r(i.staticClass)&&r(i.class)))return;let c=function(e){let t=e.data,n=e,o=e;for(;a(o.componentInstance);)o=o.componentInstance._vnode,o&&o.data&&(t=Io(o.data,t));for(;a(n=n.parent);)n&&n.data&&(t=Io(t,n.data));return function(e,t){return a(e)||a(t)?zo(e,So(t)):""}(t.staticClass,t.class)}(t);const s=n._transitionClasses;a(s)&&(c=zo(c,So(s))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}var ii={create:oi,update:oi};let ri;function ai(e,t,n){const o=ri;return function i(){const r=t.apply(null,arguments);null!==r&&li(e,i,n,o)}}const ci=Rt&&!(_&&Number(_[1])<=53);function si(e,t,n,o){if(ci){const e=Dn,n=t;t=n._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=e||t.timeStamp<=0||t.target.ownerDocument!==document)return n.apply(this,arguments)}}ri.addEventListener(e,t,te?{capture:n,passive:o}:n)}function li(e,t,n,o){(o||ri).removeEventListener(e,t._wrapper||t,n)}function di(e,t){if(r(e.data.on)&&r(t.data.on))return;const n=t.data.on||{},o=e.data.on||{};ri=t.elm||e.elm,function(e){if(a(e.__r)){const t=Y?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),_e(n,o,si,li,ai,t.context),ri=void 0}var mi={create:di,update:di,destroy:e=>di(e,Zo)};let fi;function ui(e,t){if(r(e.data.domProps)&&r(t.data.domProps))return;let n,o;const i=t.elm,s=e.data.domProps||{};let l=t.data.domProps||{};for(n in(a(l.__ob__)||c(l._v_attr_proxy))&&(l=t.data.domProps=z({},l)),s)n in l||(i[n]="");for(n in l){if(o=l[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),o===s[n])continue;1===i.childNodes.length&&i.removeChild(i.childNodes[0])}if("value"===n&&"PROGRESS"!==i.tagName){i._value=o;const e=r(o)?"":String(o);pi(i,e)&&(i.value=e)}else if("innerHTML"===n&&Oo(i.tagName)&&r(i.innerHTML)){fi=fi||document.createElement("div"),fi.innerHTML=`${o}`;const e=fi.firstChild;for(;i.firstChild;)i.removeChild(i.firstChild);for(;e.firstChild;)i.appendChild(e.firstChild)}else if(o!==s[n])try{i[n]=o}catch(e){}}}function pi(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){let n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){const n=e.value,o=e._vModifiers;if(a(o)){if(o.number)return h(n)!==h(t);if(o.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var bi={create:ui,update:ui};const hi=x((function(e){const t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){const o=e.split(n);o.length>1&&(t[o[0].trim()]=o[1].trim())}})),t}));function gi(e){const t=Fi(e.style);return e.staticStyle?z(e.staticStyle,t):t}function Fi(e){return Array.isArray(e)?S(e):"string"==typeof e?hi(e):e}const vi=/^--/,wi=/\s*!important$/,yi=(e,t,n)=>{if(vi.test(t))e.style.setProperty(t,n);else if(wi.test(n))e.style.setProperty(B(t),n.replace(wi,""),"important");else{const o=Ci(t);if(Array.isArray(n))for(let t=0,i=n.length;t-1?t.split(Bi).forEach((t=>e.classList.add(t))):e.classList.add(t);else{const n=` ${e.getAttribute("class")||""} `;n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Ii(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Bi).forEach((t=>e.classList.remove(t))):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{let n=` ${e.getAttribute("class")||""} `;const o=" "+t+" ";for(;n.indexOf(o)>=0;)n=n.replace(o," ");n=n.trim(),n?e.setAttribute("class",n):e.removeAttribute("class")}}function zi(e){if(e){if("object"==typeof e){const t={};return!1!==e.css&&z(t,Si(e.name||"v")),z(t,e),t}return"string"==typeof e?Si(e):void 0}}const Si=x((e=>({enterClass:`${e}-enter`,enterToClass:`${e}-enter-to`,enterActiveClass:`${e}-enter-active`,leaveClass:`${e}-leave`,leaveToClass:`${e}-leave-to`,leaveActiveClass:`${e}-leave-active`}))),Mi=G&&!X;let Pi="transition",Oi="transitionend",Vi="animation",Ti="animationend";Mi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Pi="WebkitTransition",Oi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Vi="WebkitAnimation",Ti="webkitAnimationEnd"));const Li=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:e=>e();function ji(e){Li((()=>{Li(e)}))}function Ri(e,t){const n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),Di(e,t))}function Ni(e,t){e._transitionClasses&&v(e._transitionClasses,t),Ii(e,t)}function qi(e,t,n){const{type:o,timeout:i,propCount:r}=Ui(e,t);if(!o)return n();const a="transition"===o?Oi:Ti;let c=0;const s=()=>{e.removeEventListener(a,l),n()},l=t=>{t.target===e&&++c>=r&&s()};setTimeout((()=>{c0&&(l="transition",d=r,m=i.length):"animation"===t?s>0&&(l="animation",d=s,m=c.length):(d=Math.max(r,s),l=d>0?r>s?"transition":"animation":null,m=l?"transition"===l?i.length:c.length:0),{type:l,timeout:d,propCount:m,hasTransform:"transition"===l&&Zi.test(n[Pi+"Property"])}}function Hi(e,t){for(;e.lengthWi(t)+Wi(e[n]))))}function Wi(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function Gi(e,t){const n=e.elm;a(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());const o=zi(e.data.transition);if(r(o))return;if(a(n._enterCb)||1!==n.nodeType)return;const{css:i,type:c,enterClass:s,enterToClass:m,enterActiveClass:f,appearClass:u,appearToClass:p,appearActiveClass:b,beforeEnter:g,enter:F,afterEnter:v,enterCancelled:w,beforeAppear:y,appear:x,afterAppear:k,appearCancelled:C,duration:A}=o;let E=hn,B=hn.$vnode;for(;B&&B.parent;)E=B.context,B=B.parent;const D=!E._isMounted||!e.isRootInsert;if(D&&!x&&""!==x)return;const I=D&&u?u:s,z=D&&b?b:f,S=D&&p?p:m,M=D&&y||g,P=D&&l(x)?x:F,O=D&&k||v,V=D&&C||w,T=h(d(A)?A.enter:A),j=!1!==i&&!X,R=Xi(P),N=n._enterCb=L((()=>{j&&(Ni(n,S),Ni(n,z)),N.cancelled?(j&&Ni(n,I),V&&V(n)):O&&O(n),n._enterCb=null}));e.data.show||$e(e,"insert",(()=>{const t=n.parentNode,o=t&&t._pending&&t._pending[e.key];o&&o.tag===e.tag&&o.elm._leaveCb&&o.elm._leaveCb(),P&&P(n,N)})),M&&M(n),j&&(Ri(n,I),Ri(n,z),ji((()=>{Ni(n,I),N.cancelled||(Ri(n,S),R||(Yi(T)?setTimeout(N,T):qi(n,c,N)))}))),e.data.show&&(t&&t(),P&&P(n,N)),j||R||N()}function Qi(e,t){const n=e.elm;a(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());const o=zi(e.data.transition);if(r(o)||1!==n.nodeType)return t();if(a(n._leaveCb))return;const{css:i,type:c,leaveClass:s,leaveToClass:l,leaveActiveClass:m,beforeLeave:f,leave:u,afterLeave:p,leaveCancelled:b,delayLeave:g,duration:F}=o,v=!1!==i&&!X,w=Xi(u),y=h(d(F)?F.leave:F),x=n._leaveCb=L((()=>{n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),v&&(Ni(n,l),Ni(n,m)),x.cancelled?(v&&Ni(n,s),b&&b(n)):(t(),p&&p(n)),n._leaveCb=null}));function k(){x.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),f&&f(n),v&&(Ri(n,s),Ri(n,m),ji((()=>{Ni(n,s),x.cancelled||(Ri(n,l),w||(Yi(y)?setTimeout(x,y):qi(n,c,x)))}))),u&&u(n,x),v||w||x())}g?g(k):k()}function Yi(e){return"number"==typeof e&&!isNaN(e)}function Xi(e){if(r(e))return!1;const t=e.fns;return a(t)?Xi(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ki(e,t){!0!==t.data.show&&Gi(t)}const Ji=function(e){let t,n;const o={},{modules:l,nodeOps:d}=e;for(t=0;tb?(m=r(n[F+1])?null:n[F+1].elm,w(e,m,n,p,F,o)):p>F&&x(t,u,b)}(m,b,g,n,l):a(g)?(a(e.text)&&d.setTextContent(m,""),w(m,null,g,0,g.length-1,n)):a(b)?x(b,0,b.length-1):a(e.text)&&d.setTextContent(m,""):e.text!==t.text&&d.setTextContent(m,t.text),a(p)&&a(u=p.hook)&&a(u=u.postpatch)&&u(e,t)}function E(e,t,n){if(c(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(let e=0;e{const e=document.activeElement;e&&e.vmodel&&rr(e,"input")}));const _i={inserted(e,t,n,o){"select"===n.tag?(o.elm&&!o.elm._vOptions?$e(n,"postpatch",(()=>{_i.componentUpdated(e,t,n)})):$i(e,t,n.context),e._vOptions=[].map.call(e.options,nr)):("textarea"===n.tag||Lo(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",or),e.addEventListener("compositionend",ir),e.addEventListener("change",ir),X&&(e.vmodel=!0)))},componentUpdated(e,t,n){if("select"===n.tag){$i(e,t,n.context);const o=e._vOptions,i=e._vOptions=[].map.call(e.options,nr);i.some(((e,t)=>!V(e,o[t])))&&(e.multiple?t.value.some((e=>tr(e,i))):t.value!==t.oldValue&&tr(t.value,i))&&rr(e,"change")}}};function $i(e,t,n){er(e,t),(Y||K)&&setTimeout((()=>{er(e,t)}),0)}function er(e,t,n){const o=t.value,i=e.multiple;if(i&&!Array.isArray(o))return;let r,a;for(let t=0,n=e.options.length;t-1,a.selected!==r&&(a.selected=r);else if(V(nr(a),o))return void(e.selectedIndex!==t&&(e.selectedIndex=t));i||(e.selectedIndex=-1)}function tr(e,t){return t.every((t=>!V(t,e)))}function nr(e){return"_value"in e?e._value:e.value}function or(e){e.target.composing=!0}function ir(e){e.target.composing&&(e.target.composing=!1,rr(e.target,"input"))}function rr(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function ar(e){return!e.componentInstance||e.data&&e.data.transition?e:ar(e.componentInstance._vnode)}var cr={bind(e,{value:t},n){const o=(n=ar(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;t&&o?(n.data.show=!0,Gi(n,(()=>{e.style.display=i}))):e.style.display=t?i:"none"},update(e,{value:t,oldValue:n},o){!t!=!n&&((o=ar(o)).data&&o.data.transition?(o.data.show=!0,t?Gi(o,(()=>{e.style.display=e.__vOriginalDisplay})):Qi(o,(()=>{e.style.display="none"}))):e.style.display=t?e.__vOriginalDisplay:"none")},unbind(e,t,n,o,i){i||(e.style.display=e.__vOriginalDisplay)}},sr={model:_i,show:cr};const lr={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function dr(e){const t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?dr(Mt(t.children)):e}function mr(e){const t={},n=e.$options;for(const o in n.propsData)t[o]=e[o];const o=n._parentListeners;for(const e in o)t[C(e)]=o[e];return t}function fr(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}const ur=e=>e.tag||yt(e),pr=e=>"show"===e.name;var br={name:"transition",props:lr,abstract:!0,render(e){let t=this.$slots.default;if(!t)return;if(t=t.filter(ur),!t.length)return;const n=this.mode,o=t[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;const i=dr(o);if(!i)return o;if(this._leaving)return fr(e,o);const r=`__transition-${this._uid}-`;i.key=null==i.key?i.isComment?r+"comment":r+i.tag:s(i.key)?0===String(i.key).indexOf(r)?i.key:r+i.key:i.key;const a=(i.data||(i.data={})).transition=mr(this),c=this._vnode,l=dr(c);if(i.data.directives&&i.data.directives.some(pr)&&(i.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,l)&&!yt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){const t=l.data.transition=z({},a);if("out-in"===n)return this._leaving=!0,$e(t,"afterLeave",(()=>{this._leaving=!1,this.$forceUpdate()})),fr(e,o);if("in-out"===n){if(yt(i))return c;let e;const n=()=>{e()};$e(a,"afterEnter",n),$e(a,"enterCancelled",n),$e(t,"delayLeave",(t=>{e=t}))}}return o}};const hr=z({tag:String,moveClass:String},lr);delete hr.mode;var gr={props:hr,beforeMount(){const e=this._update;this._update=(t,n)=>{const o=gn(this);this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept,o(),e.call(this,t,n)}},render(e){const t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),o=this.prevChildren=this.children,i=this.$slots.default||[],r=this.children=[],a=mr(this);for(let e=0;e{if(e.data.moved){const n=e.elm,o=n.style;Ri(n,t),o.transform=o.WebkitTransform=o.transitionDuration="",n.addEventListener(Oi,n._moveCb=function e(o){o&&o.target!==n||o&&!/transform$/.test(o.propertyName)||(n.removeEventListener(Oi,e),n._moveCb=null,Ni(n,t))})}})))},methods:{hasMove(e,t){if(!Mi)return!1;if(this._hasMove)return this._hasMove;const n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach((e=>{Ii(n,e)})),Di(n,t),n.style.display="none",this.$el.appendChild(n);const o=Ui(n);return this.$el.removeChild(n),this._hasMove=o.hasTransform}}};function Fr(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function vr(e){e.data.newPos=e.elm.getBoundingClientRect()}function wr(e){const t=e.data.pos,n=e.data.newPos,o=t.left-n.left,i=t.top-n.top;if(o||i){e.data.moved=!0;const t=e.elm.style;t.transform=t.WebkitTransform=`translate(${o}px,${i}px)`,t.transitionDuration="0s"}}var yr={Transition:br,TransitionGroup:gr};uo.config.mustUseProp=(e,t,n)=>"value"===n&&yo(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e,uo.config.isReservedTag=Vo,uo.config.isReservedAttr=wo,uo.config.getTagNamespace=function(e){return Oo(e)?"svg":"math"===e?"math":void 0},uo.config.isUnknownElement=function(e){if(!G)return!0;if(Vo(e))return!1;if(e=e.toLowerCase(),null!=To[e])return To[e];const t=document.createElement(e);return e.indexOf("-")>-1?To[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:To[e]=/HTMLUnknownElement/.test(t.toString())},z(uo.options.directives,sr),z(uo.options.components,yr),uo.prototype.__patch__=G?Ji:M,uo.prototype.$mount=function(e,t){return function(e,t,n){let o;e.$el=t,e.$options.render||(e.$options.render=de),yn(e,"beforeMount"),o=()=>{e._update(e._render(),n)},new mn(e,o,M,{before(){e._isMounted&&!e._isDestroyed&&yn(e,"beforeUpdate")}},!0),n=!1;const i=e._preWatchers;if(i)for(let e=0;e{q.devtools&&oe&&oe.emit("init",uo)}),0),z(uo,rn),e.exports=uo},7761:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=7761,e.exports=t},4311:(e,t,n)=>{var o={"./index.en-US.md":5340};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4311},3552:(e,t,n)=>{var o={"./index.en-US.ts":4792};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=3552},4353:(e,t,n)=>{var o={"./id-search/index.ts":9234};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4353},5269:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pako:()=>o}); +o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function c(e){for(var t=-1,n=0;n{var o=n(9145);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},3975:(e,t,n)=>{var o=n(3617);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},3932:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"switch-options",class:{"small-size":e.smallSize,grid:!e.popupMode}},[e.popupMode?[t("VButton",{ref:"button",on:{click:function(t){e.popupOpen=!e.popupOpen}}},[t("VIcon",{staticClass:"switch-icon",attrs:{icon:"mdi-checkbox-marked-circle-outline",size:e.smallSize?16:22}}),e._v("\n "+e._s(e.options.optionDisplayName)+"\n ")],1),e._v(" "),t("VPopup",{staticClass:"switch-options-popup widgets-popup",attrs:{"trigger-element":e.$refs.button,"esc-close":"","auto-destroy":""},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]:[t("div",{staticClass:"switch-options-grid"},e._l(Object.keys(e.options.switches),(function(n){return t(e.options.radio?"RadioButton":"CheckBox",e._b({key:n,tag:"component",class:{dim:e.isDim(n)},attrs:{checked:e.componentOptions[`switch-${n}`]},on:{change:function(t){e.componentOptions[`switch-${n}`]=t}}},"component",e.mergedSwitchProps,!1),[e._v("\n "+e._s(e.options.switches[n].displayName)+"\n ")])})),1)]],2)};o._withStripped=!0;var i=n(1445),r=n(7234);const a=Vue.extend({name:"SwitchOptions",components:{VPopup:i.VPopup,VButton:i.VButton,VIcon:i.VIcon,CheckBox:i.CheckBox,RadioButton:i.RadioButton},props:{options:{type:Object,required:!0},smallSize:{type:Boolean,default:!1},popupMode:{type:Boolean,default:!0}},data(){const{componentName:e}=this.options;return{popupOpen:!1,componentOptions:(0,r.getComponentSettings)(e).options}},computed:{mergedSwitchProps(){return{checkedIcon:"mdi-eye-off-outline",notCheckedIcon:"mdi-eye-outline",...this.options.switchProps}}},watch:{options(){this.updateColumnsCount()}},mounted(){this.updateColumnsCount()},methods:{updateColumnsCount(){const e=this.$el,t=Math.ceil(Object.keys(this.options.switches).length/12);e.style.setProperty("--columns",t.toString())},isDim(e){return"checked"===this.options.dimAt||void 0===this.options.dimAt?this.componentOptions[`switch-${e}`]:"notChecked"===this.options.dimAt&&!this.componentOptions[`switch-${e}`]}}});var c=n(8332),s=n.n(c),l=n(5895),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},7078:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{staticClass:"check-all-updates",attrs:{disabled:e.disabled},on:{click:function(t){return e.checkUpdates()}}},[t("VIcon",{attrs:{size:16,icon:"mdi-cloud-sync-outline"}}),e._v("\n 立即检查所有更新\n")],1)};o._withStripped=!0;var i=n(9107),r=n(1445),a=n(7548);const c=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon},data:()=>({disabled:!1}),methods:{async checkUpdates(){try{this.disabled=!0;const e=i.Toast.info("正在检查更新...","检查所有更新");await(0,a.forceCheckUpdateAndReload)(),e.close()}finally{this.disabled=!1}}}});var s=n(8332),l=n.n(s),d=n(8173),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"76652ef2",null).exports},3209:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"bisector-dialog-content-container"},[t("div",{staticClass:"bisector-dialog-content-text"},[e._v("\n 组件二等分进行中,预计剩余\n "),t("b",{staticStyle:{color:"var(--theme-color)"}},[e._v(e._s(e.rouge)+" ")]),e._v("轮次,请确认当前情况:\n ")]),e._v(" "),t("div",{staticClass:"bisector-dialog-button-group"},[t("VButton",{on:{click:e.onGood}},[e._v("正常")]),e._v(" "),t("VButton",{on:{click:e.onBad}},[e._v("不正常")]),e._v(" "),t("VButton",{attrs:{type:"primary"},on:{click:e.onAbort}},[e._v("终止")])],1),e._v(" "),t("div",{staticClass:"bisector-dialog-content-text weak"},[e._v("\n *可以点击×号关闭对话框,刷新页面后,会再次询问\n ")])])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(1445);const c=r().extend({components:{VButton:a.VButton},props:{rouge:{type:Number,required:!0},onAbort:{type:Function,default:none},onGood:{type:Function,default:none},onBad:{type:Function,default:none}}});var s=n(8332),l=n.n(s),d=n(771),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"31cf1990",null).exports},898:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",[e._v("\n 组件二等分\n "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1)])};o._withStripped=!0;var i=n(5026),r=n.n(i),a=n(1445);const c=r().extend({components:{VIcon:a.VIcon},data:()=>({peek:!1}),watch:{peek(e){this.$el.closest(".be-dialog").style.opacity=e?"0.1":"1"}}});var s=n(8332),l=n.n(s),d=n(318),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,"386ddf8e",null).exports},6423:(e,t,n)=>{"use strict";n.d(t,{Z:()=>M});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"launch-bar"},[t("div",{staticClass:"input-area"},[t("div",{staticClass:"launch-bar-form"},[t("input",{directives:[{name:"model",rawName:"v-model",value:e.keyword,expression:"keyword"}],ref:"input",staticClass:"input",attrs:{type:"text",autocomplete:"off",placeholder:e.recommended.word},domProps:{value:e.keyword},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.stopPropagation(),e.handleEnter.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.stopPropagation(),e.handleUp.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.stopPropagation(),e.handleDown.apply(null,arguments))}],input:function(t){t.target.composing||(e.keyword=t.target.value)}}}),e._v(" "),t("button",{staticClass:"submit",attrs:{title:"执行",tabindex:"-1"},on:{click:e.handleEnter}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1)])]),e._v(" "),t("div",{ref:"list",staticClass:"launch-bar-suggest-list"},[e.isHistory?t("div",{staticClass:"launch-bar-history-list"},[0===e.actions.length?t("div",{staticClass:"history-empty suggest-item disabled",attrs:{tabindex:"0"}},[e._v("\n 暂无搜索历史\n ")]):e._e(),e._v(" "),e._l(e.actions,(function(n,o){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem()},"next-item":function(t){return e.nextItem()},"delete-item":function(t){return e.onDeleteItem()},action:function(t){o===e.actions.length-1&&e.onClearHistory(),e.onAction(n)}}})}))],2):e._e(),e._v(" "),e.isHistory?e._e():t("div",{staticClass:"launch-bar-action-list"},[0===e.actions.length&&e.noActions?t("VEmpty",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}):e._e(),e._v(" "),0!==e.actions.length||e.noActions?e._e():t("VLoading",{staticClass:"suggest-item disabled",attrs:{tabindex:"0"}}),e._v(" "),e._l(e.actions,(function(n){return t("ActionItem",{key:n.key,attrs:{action:n},on:{"previous-item":function(t){return e.previousItem()},"next-item":function(t){return e.nextItem()},"delete-item":function(t){return e.onDeleteItem()},action:function(t){return e.onAction(n)}}})}))],2)])])};o._withStripped=!0;var i=n(7942),r=n(1445),a=n(779),c=n(2533),s=n(4055),l=n(3085),d=n(8737),m=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-launch-bar-action-item suggest-item",attrs:{tabindex:"0",title:e.action.displayName||e.action.name,"data-indexer":e.action.indexer},on:{click:function(t){return t.target!==t.currentTarget?null:e.performAction(t)},keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),t.stopPropagation(),e.performAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:t.shiftKey?(t.preventDefault(),t.stopPropagation(),e.performDelete(t)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("previous-item",t.currentTarget))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),t.stopPropagation(),e.$emit("next-item",t.currentTarget))}]}},[t("div",{staticClass:"suggest-item-content"},[e.action.icon?t("div",{staticClass:"suggest-item-icon",on:{click:function(t){return e.performAction(t)}}},[t("VIcon",{attrs:{icon:e.action.icon,size:18}})],1):e._e(),e._v(" "),t("div",{staticClass:"suggest-item-title",on:{click:function(t){return e.performAction(t)}}},[e.action.content?t(e.action.content,{tag:"component",staticClass:"suggest-item-name",attrs:{name:e.action.name}}):t("div",{staticClass:"suggest-item-name"},[e._v("\n "+e._s(e.action.displayName||e.action.name)+"\n ")]),e._v(" "),e.action.description?t("div",{staticClass:"suggest-item-description",attrs:{title:e.action.description}},[e._v("\n "+e._s(e.action.description)+"\n ")]):e._e()],1),e._v(" "),e.action.deleteAction?t("div",{staticClass:"suggest-item-delete",attrs:{title:"删除此项"},on:{click:function(t){return e.performDelete(t)}}},[t("VIcon",{attrs:{icon:"cancel",size:18}})],1):e._e()])])};m._withStripped=!0;const f=Vue.extend({components:{VIcon:r.VIcon},props:{action:{type:Object,required:!0}},methods:{async performAction(e){const{currentTarget:t}=e;await this.action.action(),this.$emit("action",t)},async performDelete(e){const{currentTarget:t}=e;this.action.deleteAction&&(await this.action.deleteAction(),this.$emit("delete-item",t))}}});var u=n(8332),p=n.n(u),b=n(7463),h=n.n(b),g={insert:"head",singleton:!1};p()(h(),g);h().locals;var F=n(4893);const v=(0,F.Z)(f,m,[],!1,null,null,null).exports;var w=n(5613),y=n(9517),x=n(7087);function k(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class C extends EventTarget{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;super(),k(this,"itemIndex",-1),k(this,"itemLength",0),this.itemLength=e,this.index=t}get index(){return this.itemIndex}set index(e){this.itemIndex=lodash.clamp(e,-1,this.itemLength-1),this.dispatchEvent(new CustomEvent("index-change",{detail:this}))}get hasFocus(){return this.itemIndex>-1}reset(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.index;this.itemLength=e,this.index=t}next(){this.index+=1,console.log(this.index)}previous(){this.index-=1,console.log(this.index)}}const[A]=(0,a.registerAndGetData)(w.LaunchBarActionProviders,[y.searchProvider,x.dr]),E=e=>[...e].sort((0,s.ascendingSort)((e=>e.order??1/0))),B=(e,t)=>t.map((t=>{const n=`${e.name}.${t.name}`;return{...t,key:n,provider:e}}));const[D]=(0,a.registerAndGetData)("launchBar.recommended",{word:"搜索",href:"https://search.bilibili.com/"}),I=Vue.extend({components:{VIcon:r.VIcon,VLoading:r.VLoading,VEmpty:r.VEmpty,ActionItem:v},data(){const e=new C(0);return{recommended:D,actions:[],keyword:"",focusTarget:e,noActions:!1}},computed:{isHistory(){return 0===this.keyword.length}},watch:{keyword(){this.getActions()},actions(){this.focusTarget.reset(this.actions.length)}},async mounted(){await this.getActions(),(0,l.matchUrlPattern)(/^https?:\/\/search\.bilibili\.com/)&&await this.setupSearchPageSync(),this.focusTarget.addEventListener("index-change",(()=>{this.handleIndexUpdate()}))},methods:{getOnlineActions:lodash.debounce((async function(){const e=(await Promise.all(A.map((async e=>B(e,await e.getActions(this.keyword)))))).flat();if(this.isHistory)return;const t=new i.Z(e,{keys:["indexer","displayName","name","description","key"]}).search(this.keyword);console.log(t),this.actions=E(t.map((e=>e.item)).slice(0,12)),this.noActions=0===this.actions.length}),200),getActions:async function(){if(this.noActions=!1,this.isHistory)return void(this.actions=E(B(x.dr,await x.dr.getActions(this.keyword))));this.actions=[],this.getOnlineActions()},async setupSearchPageSync(){const e=await(0,c.select)("#search-keyword, .search-input-el");e&&(this.keyword=e.value,(0,d.urlChange)((e=>{const t=new URLSearchParams(e);this.keyword=t.get("keyword")})),await this.$nextTick())},handleSelect(){this.$emit("close"),this.getActions()},async handleEnter(e){if(!e.isComposing){if(this.actions.length>0&&!this.isHistory){const[e]=this.actions;if(!0!==e.explicitSelect)return void e.action()}if(this.keyword)return(0,y.search)(this.keyword),void this.handleSelect();window.open(this.recommended.href,"_blank"),this.handleSelect()}},handleUp(e){e.isComposing||(this.focusTarget.previous(),e.preventDefault())},handleDown(e){e.isComposing||(this.focusTarget.next(),e.preventDefault())},handleIndexUpdate(){this.focusTarget.hasFocus?this.focusSuggestItem(this.focusTarget.index+1):this.focusInput()},previousItem(){this.focusTarget.previous()},nextItem(){this.focusTarget.next()},search:y.search,onDeleteItem(){this.focusTarget.previous(),this.getActions()},onClearHistory(){this.focusInput(),this.getActions()},onAction(){this.handleSelect()},focusInput(){this.$refs.input.focus()},focusSuggestItem(e){this.$refs.list.querySelector(`.suggest-item:nth-child(${e})`)?.focus()}}});var z=n(1012),S=n.n(z),P={insert:"head",singleton:!1};p()(S(),P);S().locals;const M=(0,F.Z)(I,o,[],!1,null,null,null).exports},239:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"release-content"},[t("div",{staticClass:"release-content-markdown",domProps:{innerHTML:e._s(e.content)}}),e._v(" "),t("div",{staticClass:"release-content-actions"},[t("VButton",{on:{click:function(t){return e.$emit("dialog-close")}}},[e._v(" 取消 ")]),e._v(" "),e.detailsLink?t("a",{attrs:{href:e.detailsLink,target:"_blank"}},[t("VButton",[e._v(" 查看详情 ")])],1):e._e(),e._v(" "),e.updateUrl?t("a",{attrs:{href:e.updateUrl,target:"_blank"}},[t("VButton",{attrs:{type:"primary"}},[e._v(" 安装 ")])],1):e._e()],1)])};o._withStripped=!0;var i=n(2129),r=n(1445);const a=`https://github.com/${i.defaultOwner}/Bilibili-Evolved/releases`,c=Vue.extend({components:{VButton:r.VButton},props:{content:{type:String,default:""},updateUrl:{type:String,default:""}},data:()=>({detailsLink:a})});var s=n(8332),l=n.n(s),d=n(7373),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},8741:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-description",domProps:{innerHTML:e._s(e.html)}})};o._withStripped=!0;var i=n(7234),r=n(1557);const a=Vue.extend({props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,i.getComponentSettings)(this.componentData),html:""}},async created(){this.html=await(0,r.getDescriptionHTML)(this.componentData)}});var c=n(8332),s=n.n(c),l=n(3854),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},2161:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"be-settings"},[t("div",{staticClass:"sidebar"},[t("div",{ref:"widgetsIcon",class:{open:e.widgetsOpened},attrs:{title:"功能"},on:{click:[function(t){return t.shiftKey?e.theWorld.apply(null,arguments):null},function(t){if(t.ctrlKey||t.shiftKey||t.altKey||t.metaKey)return null;e.widgetsOpened=!e.widgetsOpened}],mouseover:function(t){return e.loadPanel("widgetsPanelPopup")}}},[t("VIcon",{attrs:{icon:"widgets",size:26}})],1),e._v(" "),t("div",{ref:"settingsIcon",class:{open:e.settingsOpened},attrs:{title:"设置"},on:{click:function(t){e.settingsOpened=!e.settingsOpened},mouseover:function(t){return e.loadPanel("settingsPanelPopup")}}},[t("VIcon",{attrs:{icon:"settings-outline",size:26}})],1)]),e._v(" "),t("VPopup",{ref:"widgetsPanelPopup",staticClass:"widgets-panel-popup",attrs:{"trigger-element":e.$refs.widgetsIcon,fixed:!0},model:{value:e.widgetsOpened,callback:function(t){e.widgetsOpened=t},expression:"widgetsOpened"}},[t("WidgetsPanel")],1),e._v(" "),t("VPopup",{ref:"settingsPanelPopup",staticClass:"settings-panel-popup",attrs:{"trigger-element":e.$refs.settingsIcon,"auto-close-predicate":e.settingsPanelClosePredicate,fixed:!0},model:{value:e.settingsOpened,callback:function(t){e.settingsOpened=t},expression:"settingsOpened"}},[t("SettingsPanel",{on:{close:function(t){e.settingsOpened=!1}}})],1)],1)};o._withStripped=!0;var i=n(1445),r=n(8677);const a={name:"SettingsContainer",components:{VPopup:i.VPopup,VIcon:i.VIcon,SettingsPanel:()=>Promise.resolve().then(n.bind(n,9313)).then((e=>e.default)),WidgetsPanel:()=>Promise.resolve().then(n.bind(n,670)).then((e=>e.default))},data:()=>({settingsOpened:!1,widgetsOpened:!1}),mounted(){GM_registerMenuCommand("功能",(()=>{this.loadPanel("widgetsPanelPopup"),this.widgetsOpened=!0,this.settingsOpened=!1})),GM_registerMenuCommand("设置",(()=>{this.loadPanel("settingsPanelPopup"),this.widgetsOpened=!1,this.settingsOpened=!0}))},methods:{theWorld(){r.externalApis.theWorld(0)},settingsPanelClosePredicate:e=>!dqa(".be-settings-extra-options").some((t=>t===e.target||t.contains(e.target))),loadPanel(e){const t=this.$refs[e];t&&((t?.loaded??1)||(t.loaded=!0))}}};var c=n(8332),s=n.n(c),l=n(2194),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},9313:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Ae});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"settings-panel",class:{collapsed:e.collapsed,peek:e.peek}},[t("div",{staticClass:"settings-panel-header"},[t("VIcon",{attrs:{icon:"settings-outline"}}),e._v(" "),t("div",{staticClass:"title"},[e._v("设置")]),e._v(" "),t("div",{staticClass:"peek",staticStyle:{"margin-left":"auto"},attrs:{title:"透视"},on:{mouseover:function(t){e.peek=!0},mouseout:function(t){e.peek=!1}}},[t("VIcon",{attrs:{icon:"eye",size:18}})],1),e._v(" "),t("div",{staticClass:"close",on:{click:function(t){return e.$emit("close")}}},[t("VIcon",{attrs:{icon:"close",size:18}})],1)],1),e._v(" "),t("div",{staticClass:"settings-panel-content"},[t("div",{ref:"sidebarContainer",staticClass:"sidebar"},[t("ComponentTags",{ref:"componentTags",on:{change:function(t){e.searchFilter=t}}})],1),e._v(" "),t("div",{ref:"mainContainer",staticClass:"main"},[t("div",{ref:"componentList",staticClass:"component-list"},[t("div",{staticClass:"settings-panel-search-bar"},[t("TextBox",{staticClass:"settings-panel-search",attrs:{placeholder:"搜索"},model:{value:e.searchKeyword,callback:function(t){e.searchKeyword=t},expression:"searchKeyword"}}),e._v(" "),e._l(e.searchBarActions,(function(n){return t("VButton",{key:n.key,attrs:{type:"transparent",icon:"",title:"function"==typeof n.title?n.title(e.searchBarContext):n.title,disabled:!!n.disabled&&n.disabled(e.searchBarContext)}},[t("VIcon",{attrs:{icon:n.icon,size:18},on:{click:function(t){return n.run(e.searchBarContext)}}})],1)}))],2),e._v(" "),e._l(e.renderedComponents,(function(n){return t("div",{key:n.name,on:{"!click":[function(t){return t.ctrlKey?(t.stopPropagation(),e.selectMultipleComponent(n)):null},function(t){return t.shiftKey?(t.stopPropagation(),e.selectMultipleComponent(n,!0)):null}]}},[t("ComponentSettings",{class:{selected:e.isComponentSelected(n.name)},attrs:{"component-data":n,"data-name":n.name},nativeOn:{click:function(t){return e.selectComponent(n)}}})],1)})),e._v(" "),0===e.renderedComponents.length?t("VEmpty"):e._e()],2)]),e._v(" "),t("VPopup",{ref:"detailsPopup",staticClass:"component-detail-panel",attrs:{"trigger-element":e.$refs.componentList,open:e.componentDetailOpen},on:{"popup-change":function(t){!t&&e.closePopper()}}},[e.selectedComponent?t("ComponentDetail",{key:e.selectedComponent.name,attrs:{"component-data":e.selectedComponent},on:{close:function(t){return e.closePopper()}}}):e._e()],1)],1)])};o._withStripped=!0;var i=n(1445),r=n(6695),a=n(3085),c=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-settings",class:{virtual:e.virtual}},[e.virtual?e._e():[t("div",{staticClass:"component-settings-row"},[t("TagRing",{attrs:{tags:e.componentData.tags}}),e._v(" "),t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),!1!==e.componentData.configurable?t("SwitchBox",{model:{value:e.settings.enabled,callback:function(t){e.$set(e.settings,"enabled",t)},expression:"settings.enabled"}}):t("VIcon",{staticClass:"details-arrow",attrs:{icon:"right-arrow",size:18}})],1)]],2)};c._withStripped=!0;var s=n(9896),l=n.n(s),d=n(7234),m=n(7481),f=n(2593),u=n(8737),p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"tag-ring"},[t("svg",{attrs:{height:e.size,width:e.size}},e._l(e.tags,(function(n,o){return t("circle",{key:n.name,staticClass:"tag-stroke",style:e.getStyle(n,o),attrs:{fill:"transparent","stroke-dasharray":e.circumference+" "+e.circumference,"stroke-width":e.stroke,r:e.radius,cx:e.size/2,cy:e.size/2}})})),0)])};p._withStripped=!0;const b=Vue.extend({props:{tags:{type:Array,required:!0},size:{type:Number,default:18},stroke:{type:Number,default:3}},data(){const e=this.size/2-this.stroke;return{radius:e,circumference:2*e*Math.PI}},methods:{getStyle(e,t){return{strokeDashoffset:t/this.tags.length*this.circumference,stroke:e.color}}}});var h=n(8332),g=n.n(h),F=n(7533),v=n.n(F),w={insert:"head",singleton:!1};g()(v(),w);v().locals;var y=n(4893);const x=(0,y.Z)(b,p,[],!1,null,null,null).exports;var k=n(1541);const C=Vue.extend({components:{SwitchBox:m.Z,TagRing:x,VIcon:f.default},props:{componentData:{type:Object,required:!0}},data(){return{settings:(0,d.getComponentSettings)(this.componentData),virtual:!1}},async mounted(){const e=this.$el,t=(0,a.dq)(".settings-panel-content .main");t?(0,u.visibleInside)(e,t,"150% 0px",(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})):console.log("settings container not found, virtual scroll will be disabled!")},methods:{markdown:e=>l()(e),descriptionI18n(e){const{description:t,options:n}=e;if(!t){if(n&&Object.keys(n).length>0){return`${Object.keys(n).length}个选项`}return"暂无说明"}return"string"==typeof t?t:t[(0,k.getSelectedLanguage)()]||t["zh-CN"]}}}),A=C;var E=n(7467),B=n.n(E),D={insert:"head",singleton:!1};g()(B(),D);B().locals;const I=(0,y.Z)(A,c,[],!1,null,null,null).exports;var z=n(2267),S=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-detail"},[e.settings?e._e():t("div",{staticClass:"component-not-found"},[e._v("\n 未找到组件'"+e._s(e.componentData.displayName)+"' ("+e._s(e.componentData.name)+"), 可能已被卸载.\n ")]),e._v(" "),e.settings?[t("div",{staticClass:"component-detail-header"},[t("div",{staticClass:"display-name"},[e._v("\n "+e._s(e.componentData.displayName)+"\n ")]),e._v(" "),t("VIcon",{staticClass:"close",attrs:{icon:"close",size:18},on:{click:function(t){return e.$emit("close")}}})],1),e._v(" "),t("div",{staticClass:"component-detail-tags"},e._l(e.componentData.tags,(function(n){return t("div",{key:n.name,staticClass:"tag"},[t("div",{staticClass:"tag-color",style:{backgroundColor:n.color}}),e._v("\n "+e._s(n.displayName)+"\n ")])})),0),e._v(" "),e.componentData.options&&e.generatedOptions.length>0||e.componentData.extraOptions?[t("div",{staticClass:"component-detail-options"},[t("div",{staticClass:"component-detail-options-title"},[e._v("选项")]),e._v(" "),e._l(e.generatedOptions,(function([n,o]){return t("div",{key:n,staticClass:"generated-option"},[t("ComponentOption",{attrs:{name:n,"display-name":o.displayName,option:o,component:e.componentData}})],1)})),e._v(" "),e.componentData.extraOptions?t("div",{staticClass:"extra-option"},[t(e.componentData.extraOptions,{tag:"component",attrs:{"component-data":e.componentData}})],1):e._e(),e._v(" "),e._t("default")],2)]:e._e(),e._v(" "),!e.componentData.options||e.componentData.description?[t("ComponentDescription",{staticClass:"component-detail-description",attrs:{"component-data":e.componentData}})]:e._e(),e._v(" "),t("div",{staticClass:"component-detail-grow"}),e._v(" "),t("div",{staticClass:"component-detail-internal-data"},[e.componentData.commitHash?t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("Commit: "+e._s(e.componentData.commitHash.substring(0,9)))])]):e._e(),e._v(" "),t("div",{staticClass:"component-detail-internal-data-row"},[t("div",{staticClass:"internal-name"},[e._v("内部名称: "+e._s(e.componentData.name))]),e._v(" "),!1!==e.componentData.configurable&&e.componentActions.length>0?t("MiniToast",{staticClass:"extra-actions-wrapper",attrs:{placement:"bottom",trigger:"click"},scopedSlots:e._u([{key:"toast",fn:function(){return[t("div",{staticClass:"extra-actions-list"},e._l(e.componentActions,(function(n){return t("div",{key:n.name},[n.component?t(n.component,{tag:"component",attrs:{item:n,component:e.componentData}}):t("ComponentAction",{directives:[{name:"show",rawName:"v-show",value:!1!==n.visible,expression:"a.visible !== false"}],staticClass:"extra-action-item",attrs:{item:n,component:e.componentData}})],1)})),0)]},proxy:!0}],null,!1,2977217718)},[t("div",{staticClass:"extra-actions"},[t("VIcon",{attrs:{icon:"mdi-dots-vertical",size:16}})],1)]):e._e()],1)])]:e._e()],2)};S._withStripped=!0;var P=n(8741),M=function(){var e=this,t=e._self._c;return t("div",{staticClass:"component-option",attrs:{"data-type":e.type}},[t("div",{staticClass:"option-name"},[e._v("\n "+e._s(e.displayName)+"\n ")]),e._v(" "),"text"===e.type||"number"===e.type?t("TextBox",{attrs:{"change-on-blur":"",validator:e.option.validator,text:e.value.toString(),placeholder:e.value.toString()},on:{change:function(t){"text"===e.type?e.valueChange(t):e.numberChange(t)}}}):e._e(),e._v(" "),"boolean"===e.type?t("SwitchBox",{attrs:{checked:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"color"===e.type?t("ColorPicker",{attrs:{compact:!0,"popup-offset":-95,color:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"range"===e.type?t("RangeInput",{attrs:{validator:e.option.validator,range:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"image"===e.type?t("ImagePicker",{attrs:{image:e.value},on:{change:function(t){return e.valueChange(t)}}}):e._e(),e._v(" "),"dropdown"===e.type?t("VDropdown",{attrs:{value:e.value,items:e.getDropdownItems(e.option.dropdownEnum),"key-mapper":e=>e},on:{change:function(t){return e.valueChange(t)}},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}],null,!1,3506243887)}):e._e(),e._v(" "),"switch"===e.type?t("SwitchOptions",{attrs:{"small-size":"","popup-mode":!1,options:e.option.defaultValue}}):e._e(),e._v(" "),"slider"===e.type?t("VSlider",e._b({attrs:{value:e.value},on:{change:function(t){return e.debounceValueChange(t)}}},"VSlider",e.option.slider,!1)):e._e(),e._v(" "),"unknown"===e.type?t("div",{staticClass:"unknown-option-type"},[e._v("未知的选项类型")]):e._e()],1)};M._withStripped=!0;function O(e){this.settings.options[this.name]=e,this.value=e}const V={name:"ComponentOption",components:{SwitchOptions:n(3932).default,TextBox:i.TextBox,SwitchBox:i.SwitchBox,ColorPicker:i.ColorPicker,RangeInput:i.RangeInput,VDropdown:i.VDropdown,ImagePicker:i.ImagePicker,VSlider:i.VSlider},props:{name:{type:String,required:!0},displayName:{type:String,default:""},option:{type:Object,required:!0},component:{type:Object,required:!0}},data(){const e=(0,d.getComponentSettings)(this.component);return{settings:e,value:e.options[this.name]}},computed:{type(){const e=this.option,{defaultValue:t}=e;switch(typeof t){case"boolean":return"boolean";case"number":return e.slider?"slider":"number";case"string":return e.color?"color":e.dropdownEnum?"dropdown":"text";case"object":return"start"in t&&"end"in t?"range":"name"in t&&"url"in t?"image":"name"in t&&"switches"in t?"switch":"unknown";default:return"unknown"}}},methods:{getDropdownItems:e=>{if(Array.isArray(e))return e;return Object.entries(e).filter((e=>{let[t]=e;const n=t.charCodeAt(0);return!(n>=48&&n<=57)})).map((e=>{let[,t]=e;return t}))},numberChange(e){const t=this.settings,n=parseFloat(e);Number.isNaN(n)||(t.options[this.name]=n,this.value=n)},debounceValueChange:lodash.debounce(O,200),valueChange:O}};var T=n(7338),L=n.n(T),j={insert:"head",singleton:!1};g()(L(),j);L().locals;const R=(0,y.Z)(V,M,[],!1,null,"730efac0",null).exports;var N=n(8588),q=n(779),Z=n(6312);const U=[e=>({name:"uninstall",displayName:"卸载",icon:"mdi-trash-can-outline",visible:(0,d.isUserComponent)(e),action:async()=>{const{before:t,after:n}=(0,r.getHook)("userComponents.remove",e);await t(),await(0,Z.uninstallComponent)(e.name),await n()}})],[H]=(0,q.registerAndGetData)("settingsPanel.componentActions",U);var W=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-action",class:{disabled:e.disabled},attrs:{"aria-disabled":e.disabled,title:e.item.title},on:{click:e.handleClick}},[t("VIcon",{attrs:{icon:e.item.icon,size:16}}),e._v("\n "+e._s(e.item.displayName)+"\n")],1)};W._withStripped=!0;const G=Vue.extend({components:{VIcon:i.VIcon},props:{item:{type:Object,required:!0},component:{type:Object,required:!0}},data:()=>({disabled:!1}),methods:{async handleClick(){if(!this.disabled)try{this.disabled=!0,await this.item.action(this.component)}finally{this.disabled=!1}}}});var Q=n(2763),Y=n.n(Q),X={insert:"head",singleton:!1};g()(Y(),X);Y().locals;const K=(0,y.Z)(G,W,[],!1,null,null,null).exports,J=Vue.extend({components:{ComponentDescription:P.Z,ComponentOption:R,ComponentAction:K,VButton:i.VButton,VIcon:i.VIcon,SwitchBox:i.SwitchBox,MiniToast:i.MiniToast},mixins:[N.U],data(){return{virtual:!1,componentActions:H.map((e=>e(this.componentData))).filter((e=>void 0!==e&&!1!==e.visible))}},computed:{generatedOptions(){return Object.entries(this.componentData.options??{}).filter((e=>{let[,t]=e;return!t.hidden}))}},async mounted(){const e=this.$el;(0,u.visible)(e,(e=>{e.forEach((e=>{this.virtual=!e.isIntersecting}))})),await this.$nextTick(),this.$emit("mounted"),console.log(this.componentActions)}});var _=n(5248),$=n.n(_),ee={insert:"head",singleton:!1};g()($(),ee);$().locals;const te=(0,y.Z)(J,S,[],!1,null,null,null).exports;var ne=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"component-tags-preview"},[t("VPopup",{staticClass:"settings-panel-sub-page",attrs:{lazy:!1,"trigger-element":e.selectedSubPageTrigger},model:{value:e.selectedSubPageOpen,callback:function(t){e.selectedSubPageOpen=t},expression:"selectedSubPageOpen"}},[t("keep-alive",[e.selectedSubPage?t(e.selectedSubPage,{tag:"component"}):e._e()],1)],1),e._v(" "),t("div",{staticClass:"icon-list"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}})],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(e){return t("div",{key:e.name,staticClass:"component-tags-item"},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:e.icon}})],1)}))],2),e._v(" "),t("div",{staticClass:"component-tags"},[e._l(e.tags,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",class:{selected:n.name===e.selectedTagName},on:{click:function(t){return e.selectTag(n)}}},[t("VIcon",{style:{color:n.color},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"tag-count"},[e._v("("+e._s(n.count)+")")])],1)})),e._v(" "),t("div",{staticClass:"grow"}),e._v(" "),e._l(e.subPages,(function(n){return t("div",{key:n.name,staticClass:"component-tags-item",on:{click:function(t){return e.openSubPage(t,n.component)}}},[t("VIcon",{style:{color:"inherit"},attrs:{size:20,icon:n.icon}}),e._v(" "),t("div",{staticClass:"tag-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])],1)}))],2)],1)};ne._withStripped=!0;var oe=n(4055),ie=n(1432);const re=[{name:"userComponentsManage",displayName:"组件",component:()=>Promise.resolve().then(n.bind(n,1897)).then((e=>e.default)),icon:"mdi-cube-scan"},{name:"userPluginsManage",displayName:"插件",component:()=>Promise.resolve().then(n.bind(n,8426)).then((e=>e.default)),icon:"mdi-puzzle-outline"},{name:"customStylesManage",displayName:"样式",component:()=>Promise.resolve().then(n.bind(n,4161)).then((e=>e.default)),icon:"mdi-tune"},{name:"about",displayName:"关于",component:()=>Promise.resolve().then(n.bind(n,8171)).then((e=>e.default)),icon:"mdi-information-outline"}],ae=[e=>{let{renderedComponents:t}=e;return{name:"all",displayName:"全部",color:"inherit",icon:"mdi-shape-outline",order:0,count:t.length,filter:e=>e}},e=>{let{renderedComponents:t}=e;const n=[];t.forEach((e=>e.tags.forEach((e=>{n.push({count:0,...e,filter:t=>t.filter((t=>"all"===e.name||t.tags.some((t=>t.name===e.name))))})}))));const o=lodash.countBy(n,(e=>e.name));return lodash.uniqBy(n,(e=>e.name)).map((e=>({...e,count:o[e.name]})))}],[ce]=(0,q.registerAndGetData)("settingsPanel.tagFilters",ae),se=Vue.extend({components:{VIcon:f.default,VPopup:ie.default},data:()=>({tags:[],selectedTagName:"",subPages:re,selectedSubPage:null,selectedSubPageOpen:!1,selectedSubPageTrigger:null}),created(){this.refreshTags(),this.reset()},mounted(){this.selectTag(this.tags[0])},methods:{refreshTags(){const e=z.components.filter((e=>!e.hidden)),t=ce.flatMap((t=>"function"==typeof t?t({components:z.components,renderedComponents:e}):t));this.tags=t.sort((0,oe.ascendingSort)((e=>e.order)))},reset(){this.selectedTagName=this.tags[0].name},selectTag(e){this.selectedTagName=e.name;const{filter:t}=this.tags.find((t=>t.name===e.name));this.$emit("change",t)},async openSubPage(e,t){this.selectedSubPage!==t?(this.selectedSubPage=t,this.selectedSubPageTrigger=e.currentTarget,await this.$nextTick(),this.selectedSubPageOpen=!0):this.selectedSubPageOpen=!this.selectedSubPageOpen}}}),le=se;var de=n(5120),me=n.n(de),fe={insert:"head",singleton:!1};g()(me(),fe);me().locals;const ue=(0,y.Z)(le,ne,[],!1,null,null,null).exports;var pe=n(1557),be=n(9107),he=n(6955);const ge=[{key:"uninstallSelectedComponent",title:"卸载所选组件",icon:"mdi-trash-can-outline",disabled:e=>{let{selectedComponents:t}=e;return 0===t.length},run:e=>{window.confirm(`确定要卸载所选的 ${e.selectedComponents.length} 个组件吗?`)&&(e.selectedComponents.forEach((e=>{let{name:t}=e;(0,he.isBuiltInComponent)(t)?be.Toast.info("内置组件不能卸载","检查更新",3e3):(0,Z.uninstallComponent)(t)})),e.selectedComponents=[])}}],[Fe]=(0,q.registerAndGetData)("settingsPanel.searchBarActions",[...ge]),ve=e=>e,we={name:"SettingsPanel",components:{VIcon:i.VIcon,TextBox:i.TextBox,VPopup:i.VPopup,VButton:i.VButton,VEmpty:i.VEmpty,ComponentSettings:I,ComponentDetail:te,ComponentTags:ue},data:()=>({components:z.components,renderedComponents:z.components.filter((e=>!e.hidden)),selectedComponent:null,selectedComponents:[],componentDetailOpen:!1,collapsed:!1,peek:!1,searchKeyword:"",searchFilter:ve,searchBarActions:Fe}),computed:{isComponentSelected(){return e=>this.selectedComponents.some((t=>t.name===e))},tags(){const e=this.renderedComponents;let t=[];e.forEach((e=>e.tags.forEach((e=>{t.push({count:0,...e})}))));const n=lodash.countBy(t,(e=>e.name));return t=lodash.uniqBy(t,(e=>e.name)),t.forEach((e=>e.count=n[e.name])),t},searchBarContext(){return lodash.pick(this,"components","selectedComponent","selectedComponents","searchKeyword","searchFilter")}},watch:{searchKeyword:lodash.debounce((function(){this.updateRenderedComponents()}),200),searchFilter(){this.searchKeyword="",this.selectedComponents=[],this.updateRenderedComponents()},components(){this.updateRenderedComponents(),this.$refs.componentTags.refreshTags(),this.components.some((e=>e.name===this.selectedComponent?.name))||(this.selectedComponent=null)}},methods:{closePopper(){this.selectedComponent=null,this.selectedComponents=[],this.componentDetailOpen=!1},selectMultipleComponent(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.selectedComponent&&t){const{name:t}=e,{name:n}=this.selectedComponent,o=this.renderedComponents;let i=o.findIndex((e=>e.name===n)),r=o.findIndex((e=>e.name===t));return i>r&&([i,r]=[r,i]),void(this.selectedComponents=o.slice(i,r+1))}const n=this.selectedComponents,o=n.find((t=>t.name===e.name));o?(0,a.deleteValue)(n,(e=>e.name===o.name)):n.push(e)},selectComponent(e){this.selectedComponents=[];const t=(0,r.getHook)("settingsPanel.componentDetail.close"),n=(0,r.getHook)("settingsPanel.componentDetail.open"),o=this.selectedComponent?.name,i=this.componentDetailOpen&&o===e.name;t.before(o),this.closePopper(),t.after(o),i||(n.before(e.name),this.selectedComponents.push(e),this.selectedComponent=e,this.componentDetailOpen=!0,n.after(e.name))},async updateRenderedComponents(){const e=await(async()=>this.searchKeyword?Object.fromEntries(await Promise.all(z.components.map((async e=>[e.name,[e.name,e.displayName,e.tags.map((e=>`${e.name}\n${e.displayName}`)).join("\n"),await(0,pe.getDescriptionText)(e)].join("\n").toLowerCase()])))):{})(),t=z.components.filter((t=>{if(t.hidden)return!1;if(this.searchKeyword){const n=e[t.name];return!!n&&n.includes(this.searchKeyword.toLowerCase())}return!0}));this.renderedComponents=this.searchFilter(t)}}},ye=we;var xe=n(6207),ke=n.n(xe),Ce={insert:"head",singleton:!1};g()(ke(),Ce);ke().locals;const Ae=(0,y.Z)(ye,o,[],!1,null,null,null).exports},670:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"widgets-panel"},[t("div",{staticClass:"widgets-panel-header"},[t("VIcon",{attrs:{icon:"widgets"}}),e._v("功能")],1),e._v(" "),e.loading||0!==e.widgets.length?e._e():t("VEmpty",{staticClass:"widgets-empty"},[t("div",{staticClass:"widgets-empty-content"},[e._v("\n 空空如也哦 = ̄ω ̄="),t("br"),e._v("\n 可点此参考\n "),t("a",{attrs:{href:"https://bilibili-evolved-doc.vercel.app/docs/user/settings",target:"_blank"}},[e._v("\n 用户手册\n ")]),e._v("\n 以安装所需功能\n ")])]),e._v(" "),t("div",{staticClass:"widget-items"},e._l(e.widgets,(function(e){return t(e.component,{key:e.name,tag:"component",staticClass:"widget-item",attrs:{options:e.options}})})),1)],1)};o._withStripped=!0;var i=n(3085),r=n(1445),a=n(779),c=n(1394);const s=[],l=Vue.extend({components:{VIcon:r.VIcon,VEmpty:r.VEmpty},data:()=>(unsafeWindow.allWidgets=s,{allWidgets:s,widgets:[],loading:!0}),watch:{allWidgets(){this.widgets=[],this.allWidgets.forEach((async e=>{const t=await(async e=>{if(e.urlExclude&&e.urlExclude.some(i.matchUrlPattern))return!1;if(e.urlInclude&&e.urlInclude.every(lodash.negate(i.matchUrlPattern)))return!1;if(e.condition){const t=e.condition();return!0===t||t instanceof Promise&&!0===await t}return!0})(e);t?this.widgets.push(e):(0,i.deleteValue)(this.widgets,(t=>t.name===e.name))})),console.log("updated widgets",this.widgets)}},created(){(0,a.registerAndGetData)(c.WidgetsPlugin,s),this.$nextTick().then((()=>this.loading=!1))}});var d=n(8332),m=n.n(d),f=n(764),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},8171:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-about-page"},[t("div",{staticClass:"be-about-page-header"},[t("VIcon",{attrs:{icon:"mdi-information-outline"}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("关于")])],1),e._v(" "),t("div",{staticClass:"be-about-page-content"},[t("div",{staticClass:"script-meta-info"},[t("div",{staticClass:"meta-info-name"},[e._v("\n "+e._s(e.meta.name)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-version"},[e._v("\n "+e._s(e.meta.compilationInfo.versionWithTag)+"\n ")]),e._v(" "),t("div",{staticClass:"meta-info-description"},[e._v("\n "+e._s(e.meta.description)+"\n ")])]),e._v(" "),e.feedbackSupported?t("div",{staticClass:"script-links"},[t("a",{staticClass:"homepage script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-home-outline",size:20}}),e._v("\n 主页\n ")],1)],1),e._v(" "),t("a",{staticClass:"feedback script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/issues"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-message-text-outline",size:18}}),e._v("\n 反馈\n ")],1)],1),e._v(" "),t("a",{staticClass:"releases script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/releases"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-update",size:20}}),e._v("\n 更新日志\n ")],1)],1),e._v(" "),t("a",{staticClass:"donate script-link",attrs:{target:"_blank",href:"https://github.com/the1812/Bilibili-Evolved/blob/preview/doc/donate.md"}},[t("VButton",[t("VIcon",{attrs:{icon:"mdi-heart-outline",size:18}}),e._v("\n 捐赠\n ")],1)],1)]):e._e(),e._v(" "),t("div",{staticClass:"about-page-actions"},e._l(e.aboutPageActions,(function(n){return t("VButton",{key:n.name,staticClass:"about-page-action",attrs:{disabled:n.disabled},on:{click:function(t){return e.runAction(n,t)}}},[t("VIcon",{attrs:{icon:n.icon,size:n.iconSize||20}}),e._v("\n "+e._s(n.displayName)+"\n ")],1)})),1)])])};o._withStripped=!0;var i=n(5791),r=n(7079),a=n(1445),c=n(5607);const s=(()=>{const e=GM_info.scriptMetaStr.match(/@namespace\s*(.+)/);return!e||!e[1]||!e[1].includes("greasyfork")})(),l=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon},data:()=>({meta:i.meta,aboutPageActions:c.a,feedbackSupported:s}),methods:{formatDateTime:r.formatDateTime,async runAction(e,t){e.disabled=!0;try{await e.run(t)}finally{e.disabled=!1}}}});var d=n(8332),m=n.n(d),f=n(8911),u=n.n(f),p={insert:"head",singleton:!1};m()(u(),p);u().locals;const b=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},1897:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-components-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(2267),r=n(6312),a=n(7234),c=n(6695),s=n(5347),l=n(8817);const d={key:"userComponents",icon:"mdi-cube-scan",title:"组件",description:"可以在此处添加或删除组件, 要查看组件详情, 请回到设置面板查看.",list:i.components,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,a.isUserComponent)(e)),async onItemAdd(e,t){const{before:n,after:o}=(0,c.getHook)("userComponents.add",e,t);await n();const{metadata:i,message:a}=await(0,r.installComponent)(e);return await o(i),a}},m=Vue.extend({components:{ManagePanel:s.Z,UserItem:l.Z},data:()=>({config:d}),methods:{getItemConfig:e=>({key:"userComponents",item:e,isUserItem:(0,a.isUserComponent)(e),getSettings:e=>(0,a.getComponentSettings)(e),onItemRemove:async e=>{const{before:t,after:n}=(0,c.getHook)("userComponents.remove",e);await t(),(0,r.uninstallComponent)(e.name),await n()}})}});const f=(0,n(4893).Z)(m,o,[],!1,null,null,null).exports},8426:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-plugins-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(7234),r=n(6695),a=n(4602),c=n(5347),s=n(8817);const l={key:"userPlugins",icon:"mdi-puzzle-outline",title:"插件",description:"可以在此处管理插件, 插件能够增强现有组件的功能. 内置插件包括脚本本体包含的插件和组件自带的插件, 组件自带的插件会自动随组件卸载而卸载.",list:a.plugins,listFilter:(e,t,n)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase()))&&!(n&&!(0,i.isUserPlugin)(e.name)),async onItemAdd(e,t){const{before:n,after:o}=(0,r.getHook)("userPlugins.add",e,t);await n();const{message:i,metadata:c}=await(0,a.installPlugin)(e);return await o(c),i}},d=Vue.extend({components:{ManagePanel:c.Z,UserItem:s.Z},data:()=>({config:l}),methods:{getItemConfig:e=>({key:"userPlugins",item:e,isUserItem:(0,i.isUserPlugin)(e.name),onItemRemove:async e=>{const{before:t,after:n}=(0,r.getHook)("userPlugins.remove",e);await t(),(0,a.uninstallPlugin)(e.name),await n()}})}});const m=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},4161:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-styles-page"},[t("ManagePanel",{attrs:{config:e.config},scopedSlots:e._u([{key:"item",fn:function({item:n}){return[t("UserItem",{attrs:{config:e.getItemConfig(n)}})]}}])})],1)};o._withStripped=!0;var i=n(6695),r=n(6118),a=n(5347),c=n(8817);const s={key:"userStyles",icon:"mdi-tune",title:"样式",description:"可以在此处管理自定义样式, 自定义样式能简单修改界面元素以满足您的需求, 对于更复杂的样式, 推荐使用 Stylus 浏览器插件来管理.",list:r.styles,listFilter:(e,t)=>!(t&&!`${e.name}\n${e.displayName}`.toLowerCase().includes(t.toLowerCase())),async onItemAdd(e,t){const{before:n,after:o}=(0,i.getHook)("userStyles.add",e,t);await n();const{message:a,metadata:c}=await(0,r.installStyle)(e);return await o(c),a}},l=Vue.extend({components:{ManagePanel:a.Z,UserItem:c.Z},data:()=>({config:s}),methods:{getItemConfig:e=>({key:"userStyles",item:e,isUserItem:!0,onItemRemove:async e=>{const{before:t,after:n}=(0,i.getHook)("userStyles.remove",e);await t(),(0,r.uninstallStyle)(e.name),await n()}})}});const d=(0,n(4893).Z)(l,o,[],!1,null,null,null).exports},5347:(e,t,n)=>{"use strict";n.d(t,{Z:()=>D});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-panel"},[t("div",{staticClass:"manage-panel-title sub-page-row"},[t("VIcon",{attrs:{icon:e.config.icon}}),e._v(" "),t("div",{staticClass:"title-text"},[e._v("\n "+e._s(e.config.title)+"\n ")])],1),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"description-text"},[e._v("\n "+e._s(e.config.description)+"\n ")])]):e._e(),e._v(" "),e.config.description?t("div",{staticClass:"sub-page-row separator"}):e._e(),e._v(" "),t("div",{staticClass:"sub-page-row add-item-row"},[t("div",{staticClass:"title-text"},[e._v("添加"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"item-actions"},[t("VButton",{ref:"batchAddButton",on:{click:function(t){return e.showBatchAddPopup()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-download-multiple"}}),e._v("\n 批量\n ")],1),e._v(" "),t("VButton",{on:{click:function(t){return e.browse()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-folder-open-outline"}}),e._v("\n 浏览\n ")],1),e._v(" "),t("OnlineRegistryButton",[t("VIcon",{attrs:{size:18,icon:"mdi-web"}}),e._v("\n 在线\n ")],1)],1),e._v(" "),t("VPopup",{staticClass:"batch-add-popup",attrs:{"trigger-element":e.$refs.batchAddButton},model:{value:e.batchAddShow,callback:function(t){e.batchAddShow=t},expression:"batchAddShow"}},[t("TextArea",{ref:"batchAddTextArea",staticClass:"batch-add-textarea",attrs:{placeholder:"批量粘贴功能链接, 可以混合其他类型的功能 (如合集包)"},model:{value:e.batchUrl,callback:function(t){e.batchUrl=t},expression:"batchUrl"}}),e._v(" "),t("div",{staticClass:"batch-add-actions"},[t("VButton",{on:{click:function(t){e.batchAddShow=!1}}},[t("VIcon",{attrs:{size:12,icon:"close"}}),e._v("\n 取消\n ")],1),e._v(" "),t("VButton",{attrs:{type:"primary",disabled:!e.batchUrl},on:{click:function(t){return e.batchAddItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1)],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("TextBox",{staticClass:"item-url",attrs:{placeholder:"粘贴"+e.config.title+"链接"},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.addItem()}},model:{value:e.url,callback:function(t){e.url=t},expression:"url"}}),e._v(" "),t("VButton",{attrs:{disabled:!e.url},on:{click:function(t){return e.addItem()}}},[t("VIcon",{attrs:{size:18,icon:"mdi-plus"}}),e._v("\n 添加\n ")],1)],1),e._v(" "),t("div",{staticClass:"sub-page-row separator"}),e._v(" "),t("div",{staticClass:"sub-page-row"},[t("div",{staticClass:"title-text"},[e._v("已安装的"+e._s(e.config.title)+":")]),e._v(" "),t("div",{staticClass:"exclude-built-in"},[e._v("\n 隐藏内置"+e._s(e.config.title)+"\n "),t("SwitchBox",{model:{value:e.excludeBuiltIn,callback:function(t){e.excludeBuiltIn=t},expression:"excludeBuiltIn"}})],1)]),e._v(" "),t("div",{staticClass:"sub-page-row search-item-row"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{staticClass:"list-search",attrs:{placeholder:`在 ${e.filteredList.length} 个${e.config.title}中搜索`},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),e.loaded?e._e():t("div",{staticClass:"sub-page-row"},[t("VLoading",{key:"loading"})],1),e._v(" "),e.loaded?t("div",{staticClass:"manage-item-list"},[0===e.debouncedList.length?t("VEmpty",{key:"empty"}):e._e(),e._v(" "),e._l(e.debouncedList,(function(n){return t("ManageItem",{key:n.name},[e._t("item",(function(){return[e._v("\n "+e._s(n.displayName)+"\n ")]}),{item:n})],2)}))],2):e._e()])};o._withStripped=!0;var i=n(1233),r=n(5244),a=n(9107),c=n(5145),s=n(7789),l=n(1445),d=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manage-item",class:{virtual:e.virtual}},[e.virtual?e._e():e._t("default")],2)};d._withStripped=!0;var m=n(8588);const f=Vue.extend({mixins:[(0,m.B)(".manage-panel .manage-item-list")]});var u=n(8332),p=n.n(u),b=n(686),h=n.n(b),g={insert:"head",singleton:!1};p()(h(),g);h().locals;var F=n(4893);const v=(0,F.Z)(f,d,[],!1,null,null,null).exports;var w=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VButton",{on:{mouseover:function(t){return e.initPopup()},click:function(t){return e.togglePopup()}}},[e._t("default")],2)};w._withStripped=!0;var y=n(9334);const x=Vue.extend({components:{VButton:l.VButton},methods:{initPopup:y.initPopup,togglePopup:y.togglePopup}});const k=(0,F.Z)(x,w,[],!1,null,null,null).exports,C=Vue.extend({components:{VIcon:l.VIcon,VButton:l.VButton,TextBox:l.TextBox,VEmpty:l.VEmpty,VLoading:l.VLoading,VPopup:l.VPopup,TextArea:l.TextArea,SwitchBox:l.SwitchBox,ManageItem:v,OnlineRegistryButton:k},props:{config:{type:Object,required:!0}},data:()=>({search:"",url:"",loaded:!1,batchAddShow:!1,batchUrl:"",excludeBuiltIn:!0,debouncedList:[]}),computed:{filteredList(){return this.config.list.filter((e=>this.config.listFilter(e,this.search,this.excludeBuiltIn)))}},watch:{filteredList(){this.loaded=!1,window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}),200)}},mounted(){window.setTimeout((()=>{this.debouncedList=this.filteredList,this.loaded=!0}))},methods:{async browse(){const e=await(0,r.pickFile)({accept:"*.js;*.zip"});if(0===e.length)return;const[t]=e;let n;if(t.name.endsWith(".zip")){const e=await s.JSZipLibrary,o=await e.loadAsync(t),i=Object.values(o.files);if(0===i.length)return void a.Toast.info("不能打开空文件",`添加${this.config.title}`);n=await i[0].async("text")}else n=await t.text();try{a.Toast.info(await(this.config.onItemAdd?.(n,"")),`添加${this.config.title}`)}catch(e){(0,c.logError)(e)}},async showBatchAddPopup(){this.batchAddShow=!this.batchAddShow,this.batchAddShow&&(await this.$nextTick(),this.$refs.batchAddTextArea?.focus())},async addItem(){if(!this.url)return;const e=a.Toast.info("获取中...",`添加${this.config.title}`);try{const t=await(0,i.tryParseZip)(this.url);e.message=await(this.config.onItemAdd?.(t,this.url)),this.url=""}catch(t){console.error(t),e.type=a.ToastType.Error,e.message=t}},async batchAddItem(){if(!this.batchUrl)return;const e=this.batchUrl.split("\n").map((e=>e.trim())).filter((e=>""!==e)),t=a.Toast.info(`获取中... (0/${e.length})`,"批量添加");let n=0;const o=await Promise.allSettled(e.map((async o=>{const{message:r}=await(0,i.installFeature)(o);return n++,t.message=`获取中... (${n}/${e.length})`,r}))),r=o.filter((e=>"fulfilled"===e.status)).length,c=o.filter((e=>"rejected"===e.status)).length;t.message=`安装完成, 成功 ${r} 个, 失败 ${c} 个.`;const s=o.map(((t,n)=>{const o=e[n];return"fulfilled"===t.status?`${t.value} ${o}`:`${t.reason} ${o}`})).join("\n");console.log(s),this.batchUrl=""}}});var A=n(336),E=n.n(A),B={insert:"head",singleton:!1};p()(E(),B);E().locals;const D=(0,F.Z)(C,o,[],!1,null,null,null).exports},8817:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"user-item"},[t("div",{staticClass:"user-item-display-name"},[e._v("\n "+e._s(e.config.item.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"user-item-name"},[e._v("\n "+e._s(e.config.item.name)+"\n ")]),e._v(" "),e.config.isUserItem?t("div",{staticClass:"user-item-line"}):e._e(),e._v(" "),e.config.isUserItem?t("div",{ref:"removeIcon",staticClass:"user-item-remove",on:{dblclick:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:18}}),e._v(" "),t("div",{ref:"removeConfirmTemplate",staticClass:"user-item-remove-confirm"},[e._v("\n 确定要卸载 "+e._s(e.config.item.displayName)+" 吗?\n "),t("VButton",{attrs:{type:"primary"},on:{click:function(t){return e.removeItem()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}}),e._v("\n 确定\n ")],1)],1)],1):e._e()])};o._withStripped=!0;var i=n(9107),r=n(1445),a=n(7784);const c=Vue.extend({components:{VIcon:r.VIcon,VButton:a.default},props:{config:{type:Object,required:!0}},data:()=>({removeConfirm:!1,settings:{}}),mounted(){this.config.getSettings&&(this.settings=this.config.getSettings(this.config.item)),this.config.isUserItem&&i.Toast.mini(this.$refs.removeConfirmTemplate,this.$refs.removeIcon,{trigger:"click",hideOnClick:!0})},methods:{async removeItem(){await this.config.onItemRemove(this.config.item),this.removeConfirm=!1}}});var s=n(8332),l=n.n(s),d=n(1350),m=n.n(d),f={insert:"head",singleton:!1};l()(m(),f);m().locals;const u=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},2208:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-video-control-bar-extend squirtle-block-wrap"},e._l(e.items,(function(n){return t("div",{key:n.name,staticClass:"be-video-control-bar-extend-item bilibili-player-video-btn squirtle-block-wrap bpx-player-ctrl-btn",style:{order:n.order.toString()},attrs:{"data-name":n.name},on:{click:function(e){return n.action(e)}}},[t("button",[t("span",{staticClass:"bp-svgicon"},[t("VIcon",{attrs:{icon:n.icon}})],1)]),e._v(" "),t("div",{staticClass:"be-video-control-tooltip"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)};o._withStripped=!0;var i=n(1445);const r=Vue.extend({components:{VIcon:i.VIcon},props:{items:{type:Array,required:!0}}});var a=n(8332),c=n.n(a),s=n(6872),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},5468:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-mini-toast-wrapper"},[t("div",{ref:"content",staticClass:"be-mini-toast-content"},[e._t("default")],2),e._v(" "),t("div",{ref:"toast",staticClass:"be-mini-toast"},[e._t("toast")],2)])};o._withStripped=!0;var i=n(2603);const r={body:()=>document.body,local:void 0},a=Vue.extend({model:{prop:"show",event:"change"},props:{show:{type:Boolean,default:!1},container:{type:String,default:"local"},placement:{type:String,default:void 0}},data:()=>({toast:null}),watch:{placement(e){e&&this.toast&&(this.toast.placement=e)}},async mounted(){await this.$nextTick();const e=r[this.container];this.toast=(0,i.$)(this.$refs.toast,this.$refs.content,{placement:this.placement,showOnCreate:this.show,trigger:"mouseenter focusin",onHide:()=>{this.$emit("change",!1)},onShow:()=>{this.$emit("change",!0)},appendTo:"function"==typeof e?e():e,...this.$attrs})}});const c=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},6706:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"toast-card visible",class:"toast-"+e.card.type,on:{mouseover:e.stopTimer,mouseout:e.startTimer}},[t("div",{staticClass:"toast-card-border"}),e._v(" "),t("div",{staticClass:"toast-card-header"},[t("h1",{staticClass:"toast-card-title"},[e._v("\n "+e._s(e.card.title)+"\n ")]),e._v(" "),t("div",{staticClass:"toast-card-close",class:{"show-progress":Boolean(e.remainingTime)},attrs:{title:"关闭"},on:{click:function(t){return e.card.close()}}},[t("ProgressRing",{attrs:{size:28,stroke:2,progress:e.progressMax-e.remainingTime,max:e.progressMax}}),e._v(" "),t("VIcon",{attrs:{icon:"close",size:14}})],1)]),e._v(" "),t("div",{staticClass:"toast-card-message",domProps:{innerHTML:e._s(e.card.message)}})])};o._withStripped=!0;var i=n(1445);const r=Vue.extend({components:{VIcon:i.VIcon,ProgressRing:i.ProgressRing},props:{card:{type:Object,required:!0}},data:()=>({progressMax:0,remainingTime:0}),created(){this.readDuration()},methods:{durationTick(){const{closeTime:e}=this.card;e&&(this.remainingTime=e-Number(new Date),this.remainingTime>0&&requestAnimationFrame((()=>this.durationTick())))},readDuration(){const{duration:e,closeTime:t}=this.card;e&&(this.progressMax=t-Number(new Date),this.remainingTime=this.progressMax,requestAnimationFrame((()=>this.durationTick())))},stopTimer(){this.card.clearDuration(),this.progressMax=0,this.remainingTime=0},startTimer(){this.card.setDuration(),this.readDuration()}}});var a=n(8332),c=n.n(a),s=n(1579),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,null,null).exports},7481:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-switch-box",class:{checked:e.checked,disabled:e.disabled},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.disabled,tabindex:"0"},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])?null:(t.preventDefault(),e.toggle())},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.toggle())}]}},[t("label",[t("input",{ref:"input",attrs:{type:"checkbox",disabled:e.disabled},domProps:{checked:e.checked},on:{change:function(t){return t.stopPropagation(),e.$emit("change",t.target.checked)}}}),e._v(" "),e._m(0)])])};o._withStripped=!0;const i=Vue.extend({name:"SwitchBox",model:{prop:"checked",event:"change"},props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},methods:{toggle(){this.disabled||(this.$refs.input.checked=!this.$refs.input.checked,this.$emit("change",this.$refs.input.checked))}}});var r=n(8332),a=n.n(r),c=n(4085),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[function(){var e=this._self._c;this._self._setupProxy;return e("div",{staticClass:"bar"},[e("div",{staticClass:"thumb"})])}],!1,null,null,null).exports},9856:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-textbox",class:{linear:e.linear},attrs:{role:"textbox"}},[t("input",e._g(e._b({ref:"input",attrs:{type:"text"},domProps:{value:e.text},on:{change:function(t){return t.stopPropagation(),e.change.apply(null,arguments)},input:function(t){return t.stopPropagation(),e.input.apply(null,arguments)},compositionstart:e.compositionStart,compositionend:e.compositionEnd}},"input",e.$attrs,!1),e.restListeners)),e._v(" "),e.linear?t("div",{staticClass:"linear-bar"}):e._e()])};o._withStripped=!0;var i=n(3225);const r=Vue.extend({name:"TextBox",mixins:[i.t],props:{linear:{type:Boolean,default:!1}}});var a=n(8332),c=n.n(a),s=n(4098),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"d1f779a8",null).exports},7784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-button",class:{[e.type]:!0,disabled:e.disabled,round:e.round,icon:e.icon},attrs:{role:"button","aria-disabled":e.disabled,tabindex:e.disabled?-1:0},on:{keydown:[function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter"))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)},function(t){if(!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.preventDefault(),e.$listeners.click&&e.$listeners.click(t)}]}},e.disabled?null:e.$listeners),[t("div",{staticClass:"content-container"},[e._t("default",(function(){return[e._v("Button")]}))],2)])};o._withStripped=!0;const i=Vue.extend({name:"VButton",props:{type:{type:String,default:"light"},round:{type:Boolean,default:!1},icon:{type:Boolean,default:!1}},computed:{disabled(){return Boolean(this.$attrs.disabled)}}});var r=n(8332),a=n.n(r),c=n(5564),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,"18aa9448",null).exports},1570:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-loading"},[e._t("default",(function(){return["string"==typeof e.config.content&&e.config.content.length>0?[e._v("\n "+e._s(e.config.content)+"\n ")]:e._e(),e._v(" "),"string"!=typeof e.config.content?t(e.config.content,{tag:"component"}):e._e()]}))],2)};o._withStripped=!0;var i=n(779);const[r]=(0,i.registerAndGetData)("vLoading",{content:"加载中..."}),a=Vue.extend({name:"VLoading",data:()=>({config:r})});var c=n(8332),s=n.n(c),l=n(8203),d=n.n(l),m={insert:"head",singleton:!1};s()(d(),m);d().locals;const f=(0,n(4893).Z)(a,o,[],!1,null,null,null).exports},1432:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",e._g({staticClass:"be-popup",class:{open:e.open,fixed:e.fixed,close:!e.open,"closed-style":e.closedStyle}},e.$listeners),[e.loaded?e._t("default"):e._e()],2)};o._withStripped=!0;const i=Vue.extend({name:"VPopup",model:{prop:"open",event:"popup-change"},props:{open:{type:Boolean,required:!1,default:!1},closedStyle:{type:Boolean,required:!1,default:!0},fixed:{type:Boolean,required:!1,default:!1},triggerElement:{required:!1,default:null},lazy:{type:Boolean,required:!1,default:!0},autoClose:{type:Boolean,required:!1,default:!0},autoDestroy:{type:Boolean,required:!1,default:!1},escClose:{type:Boolean,required:!1,default:!1},autoClosePredicate:{type:Function,required:!1,default:null}},data(){return{loaded:!this.lazy}},computed:{trigger(){return null===this.triggerElement?null:"$el"in this.triggerElement?this.triggerElement.$el:this.triggerElement}},watch:{open(){this.lazy&&!this.loaded&&(this.loaded=!0),this.setAutoClose()}},mounted(){const e=this.$el;this.open&&this.setAutoClose(),this.escClose&&e.addEventListener("keydown",(e=>{"Escape"===e.key&&this.$emit("popup-change",!1)})),this.autoDestroy&&e.addEventListener("transitionend",(()=>{this.open||(this.loaded=!1)}))},methods:{openHandler(e){const t=e.target,n=document.querySelector(".toast-card-container");let o=t!==this.trigger&&!this.trigger?.contains(t)&&t!==this.$el&&!this.$el.contains(t)&&!n?.contains(t);this.autoClosePredicate&&(o=o&&this.autoClosePredicate({target:t,element:this.$el,trigger:this.trigger})),o&&this.$emit("popup-change",!1)},setAutoClose(){if(this.autoClose){["mousedown","touchstart"].forEach((e=>{this.open?document.documentElement.addEventListener(e,(e=>this.openHandler(e))):document.documentElement.removeEventListener(e,(e=>this.openHandler(e)))}))}},toggle(){this.$emit("popup-change",!this.open)}}});var r=n(8332),a=n.n(r),c=n(4621),s=n.n(c),l={insert:"head",singleton:!1};a()(s(),l);s().locals;const d=(0,n(4893).Z)(i,o,[],!1,null,null,null).exports},91:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{ref:"slider",staticClass:"be-slider",attrs:{role:"slider",tabindex:e.focusable?0:-1},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(-1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:(t.preventDefault(),t.stopPropagation(),e.offsetByStep(1))}]}},[t("div",{ref:"barContainer",staticClass:"bar-container",on:{click:function(t){return e.setByCoord(t.offsetX)}}},[e._t("bar",(function(){return[t("div",{staticClass:"default-bar"})]}))],2),e._v(" "),t("MiniToast",{ref:"thumbContainer",staticClass:"thumb-container",style:{left:e.thumbLeft},attrs:{placement:"top",arrow:!1},scopedSlots:e._u([{key:"toast",fn:function(){return[e._v("\n "+e._s(e.displayFun(e.realValue))+"\n ")]},proxy:!0}])},[e._t("thumb",(function(){return[t("div",{staticClass:"default-thumb"})]}))],2)],1)};o._withStripped=!0;var i=n(5468);const r=Vue.extend({name:"VSlider",components:{MiniToast:i.Z},model:{prop:"value",event:"change"},props:{focusable:{type:Boolean,default:!0},min:{type:Number,default:0},max:{type:Number,default:100},value:{type:Number,default:0},center:{type:Number,default:0},step:{type:Number,default:1},displayFun:{type:Function,default:e=>String(e)}},data:()=>({realValue:0}),computed:{realMax(){return this.valueToRounded(this.max,Math.floor)},realMin(){return this.valueToRounded(this.min,Math.ceil)},valueLength(){const e=this.realMax-this.realMin;return e<0?(console.error("[VSlider] No desirable value between min and max"),0):e},thumbLeft(){if(0===this.valueLength)return 0;return`${(this.realValue-this.realMin)/this.valueLength*100}%`},centerCoord(){return this.valueToLength(this.center-this.realMin)}},watch:{value(e){e!==this.realValue&&this.setByValue(e)},center(){this.setByValue(this.realValue)},min(){this.setByRounded(this.realValue)},max(){this.setByRounded(this.realValue)}},created(){this.setByValue(this.value)},mounted(){this.setupDrag()},methods:{valueToStep(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round)(e/this.step)},valueToStepped(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.valueToStep(e,t)*this.step},lengthToValue(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return this.valueLength*(e/t)},lengthToStep(e){return this.valueToStep(this.lengthToValue(e))},lengthToStepped(e){return this.lengthToStep(e)*this.step},valueToLength(e){const t=this.$refs.barContainer.getBoundingClientRect().width;return 0===this.valueLength?0:t*(e/this.valueLength)},valueToRounded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Math.round;return this.center+this.valueToStepped(e-this.center,t)},limitValue(e){return 0===this.valueLength?this.realMin:(ethis.realMax&&(e=this.realMax),e)},offsetByStep(e){this.setByRounded(this.realValue+e*this.step)},setByLimited(e){e!==this.realValue&&(this.realValue=e,this.$emit("change",this.realValue))},setByRounded(e){this.setByLimited(this.limitValue(e))},setByValue(e){this.setByRounded(this.valueToRounded(e))},setByCoord(e){this.setByRounded(this.center+this.lengthToStepped(e-this.centerCoord))},setupDrag(){function e(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const i=e=>{e.preventDefault(),e instanceof MouseEvent||e instanceof unsafeWindow.MouseEvent?n(e.pageX):1===e.touches.length&&n(e.touches[0].pageX)};return e.addEventListener(t,i,{once:o,passive:!1}),()=>e.removeEventListener(t,i)}const t=this.$refs.thumbContainer.$el,n=[{start:"mousedown",move:"mousemove",end:"mouseup"},{start:"touchstart",move:"touchmove",end:"touchend"}];for(const o of n){let n=0,i=0;e(t,o.start,(t=>{this.$emit("start",this.realValue),this.$refs.slider.focus(),n=t,i=this.realValue;const r=e(window,o.move,(e=>{this.setByValue(i+this.lengthToValue(e-n))}));e(window,o.end,(()=>{this.$emit("end",this.realValue),r()}),!0)}))}}}});var a=n(8332),c=n.n(a),s=n(1473),l=n.n(s),d={insert:"head",singleton:!1};c()(l(),d);l().locals;const m=(0,n(4893).Z)(r,o,[],!1,null,"94f62aa6",null).exports},2593:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("i",e._g(e._b({staticClass:"be-icon",class:e.classes,style:{"--size":e.size+"px"}},"i",e.$attrs,!1),e.$listeners),[e._t("default"),e._v(" "),e.icon in e.$options.static.customIcons?t("div",{staticClass:"custom-icon",domProps:{innerHTML:e._s(e.$options.static.customIcons[e.icon])}}):e._e()],2)};o._withStripped=!0;var i=n(779);const r=n(5454),a=lodash.fromPairs(r.keys().map((e=>[e.replace(/.*\/([^/]+?)\.svg$/,"$1"),r(e)]))),[c]=(0,i.registerAndGetData)("ui.icons",a),s={customIcons:a},l=Vue.extend({name:"VIcon",props:{icon:{type:String,default:""},size:{type:Number,default:24},colored:{type:Boolean,default:!1}},computed:{classes(){const e=this.$options.static.customIcons,t=this.icon,n=[];return this.colored&&n.push("colored"),""===t||t in e?n:t.startsWith("mdi-")?[...n,"mdi",t]:[...n,`be-iconfont-${t}`]}},beforeCreate(){this.$options.static=s}}),d=l;var m=n(8332),f=n.n(m),u=n(6893),p=n.n(u),b={insert:"head",singleton:!1};f()(p(),b);p().locals;const h=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},4893:(e,t,n)=>{"use strict";function o(e,t,n,o,i,r,a,c){var s,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),a?(s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=s):i&&(s=c?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),s)if(l.functional){l._injectStyles=s;var d=l.render;l.render=function(e,t){return s.call(t),d(e,t)}}else{var m=l.beforeCreate;l.beforeCreate=m?[].concat(m,s):[s]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},5026:(e,t,n)=>{"use strict";const o=Object.freeze({}),i=Array.isArray;function r(e){return null==e}function a(e){return null!=e}function c(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function l(e){return"function"==typeof e}function d(e){return null!==e&&"object"==typeof e}const m=Object.prototype.toString;function f(e){return"[object Object]"===m.call(e)}function u(e){const t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function b(e){return null==e?"":Array.isArray(e)||f(e)&&e.toString===m?JSON.stringify(e,null,2):String(e)}function h(e){const t=parseFloat(e);return isNaN(t)?e:t}function g(e,t){const n=Object.create(null),o=e.split(",");for(let e=0;en[e.toLowerCase()]:e=>n[e]}const F=g("key,ref,slot,slot-scope,is");function v(e,t){const n=e.length;if(n){if(t===e[n-1])return void(e.length=n-1);const o=e.indexOf(t);if(o>-1)return e.splice(o,1)}}const w=Object.prototype.hasOwnProperty;function y(e,t){return w.call(e,t)}function x(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const k=/-(\w)/g,C=x((e=>e.replace(k,((e,t)=>t?t.toUpperCase():"")))),A=x((e=>e.charAt(0).toUpperCase()+e.slice(1))),E=/\B([A-Z])/g,B=x((e=>e.replace(E,"-$1").toLowerCase())),D=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){const o=arguments.length;return o?o>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function I(e,t){t=t||0;let n=e.length-t;const o=new Array(n);for(;n--;)o[n]=e[n+t];return o}function z(e,t){for(const n in t)e[n]=t[n];return e}function S(e){const t={};for(let n=0;n!1,O=e=>e;function V(e,t){if(e===t)return!0;const n=d(e),o=d(t);if(!n||!o)return!n&&!o&&String(e)===String(t);try{const n=Array.isArray(e),o=Array.isArray(t);if(n&&o)return e.length===t.length&&e.every(((e,n)=>V(e,t[n])));if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(n||o)return!1;{const n=Object.keys(e),o=Object.keys(t);return n.length===o.length&&n.every((n=>V(e[n],t[n])))}}catch(e){return!1}}function T(e,t){for(let n=0;n0,K=Q&&Q.indexOf("edge/")>0;Q&&Q.indexOf("android");const J=Q&&/iphone|ipad|ipod|ios/.test(Q);Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q);const _=Q&&Q.match(/firefox\/(\d+)/),$={}.watch;let ee,te=!1;if(G)try{const e={};Object.defineProperty(e,"passive",{get(){te=!0}}),window.addEventListener("test-passive",null,e)}catch(o){}const ne=()=>(void 0===ee&&(ee=!G&&void 0!==n.g&&n.g.process&&"server"===n.g.process.env.VUE_ENV),ee),oe=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ie(e){return"function"==typeof e&&/native code/.test(e.toString())}const re="undefined"!=typeof Symbol&&ie(Symbol)&&"undefined"!=typeof Reflect&&ie(Reflect.ownKeys);let ae;ae="undefined"!=typeof Set&&ie(Set)?Set:class{constructor(){this.set=Object.create(null)}has(e){return!0===this.set[e]}add(e){this.set[e]=!0}clear(){this.set=Object.create(null)}};let ce=null;function se(e=null){e||ce&&ce._scope.off(),ce=e,e&&e._scope.on()}class le{constructor(e,t,n,o,i,r,a,c){this.tag=e,this.data=t,this.children=n,this.text=o,this.elm=i,this.ns=void 0,this.context=r,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=c,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}get child(){return this.componentInstance}}const de=(e="")=>{const t=new le;return t.text=e,t.isComment=!0,t};function me(e){return new le(void 0,void 0,void 0,String(e))}function fe(e){const t=new le(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}let ue=0;const pe=[];class be{constructor(){this._pending=!1,this.id=ue++,this.subs=[]}addSub(e){this.subs.push(e)}removeSub(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,pe.push(this))}depend(e){be.target&&be.target.addDep(this)}notify(e){const t=this.subs.filter((e=>e));for(let e=0,n=t.length;e{const e=t[n];if(Le(e))return e.value;{const t=e&&e.__ob__;return t&&t.dep.depend(),e}},set:e=>{const o=t[n];Le(o)&&!Le(e)?o.value=e:t[n]=e}})}function Ne(e,t,n){const o=e[t];if(Le(o))return o;const i={get value(){const o=e[t];return void 0===o?n:o},set value(n){e[t]=n}};return U(i,"__v_isRef",!0),i}function qe(e){return Ze(e,!1)}function Ze(e,t){if(!f(e))return e;if(Te(e))return e;const n=t?"__v_rawToShallowReadonly":"__v_rawToReadonly",o=e[n];if(o)return o;const i=Object.create(Object.getPrototypeOf(e));U(e,n,i),U(i,"__v_isReadonly",!0),U(i,"__v_raw",e),Le(e)&&U(i,"__v_isRef",!0),(t||Ve(e))&&U(i,"__v_isShallow",!0);const r=Object.keys(e);for(let n=0;nTt(e,null,n,d,t);let f,u,p=!1,b=!1;if(Le(e)?(f=()=>e.value,p=Ve(e)):Oe(e)?(f=()=>(e.__ob__.dep.depend(),e),r=!0):i(e)?(b=!0,p=e.some((e=>Oe(e)||Ve(e))),f=()=>e.map((e=>Le(e)?e.value:Oe(e)?cn(e):l(e)?m(e,"watcher getter"):void 0))):f=l(e)?t?()=>m(e,"watcher getter"):()=>{if(!d||!d._isDestroyed)return u&&u(),m(e,"watcher",[h])}:P,t&&r){const e=f;f=()=>cn(e())}let h=e=>{u=g.onStop=()=>{m(e,"watcher cleanup")}};if(ne())return h=P,t?n&&m(t,"watcher callback",[f(),b?[]:void 0,h]):f(),P;const g=new mn(ce,f,P,{lazy:!0});g.noRecurse=!t;let F=b?[]:We;return g.run=()=>{if(g.active)if(t){const e=g.get();(r||p||(b?e.some(((e,t)=>j(e,F[t]))):j(e,F)))&&(u&&u(),m(t,"watcher callback",[e,F===We?void 0:F,h]),F=e)}else g.get()},"sync"===a?g.update=g.run:"post"===a?(g.post=!0,g.update=()=>Pn(g)):g.update=()=>{if(d&&d===ce&&!d._isMounted){const e=d._preWatchers||(d._preWatchers=[]);e.indexOf(g)<0&&e.push(g)}else Pn(g)},t?n?g.run():F=g.get():"post"===a&&d?d.$once("hook:mounted",(()=>g.get())):g.get(),()=>{g.teardown()}}let Qe;class Ye{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Qe,!e&&Qe&&(this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1)}run(e){if(this.active){const t=Qe;try{return Qe=this,e()}finally{Qe=t}}}on(){Qe=this}off(){Qe=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t{const t="&"===e.charAt(0),n="~"===(e=t?e.slice(1):e).charAt(0),o="!"===(e=n?e.slice(1):e).charAt(0);return{name:e=o?e.slice(1):e,once:n,capture:o,passive:t}}));function Je(e,t){function n(){const e=n.fns;if(!i(e))return Tt(e,null,arguments,t,"v-on handler");{const n=e.slice();for(let e=0;e0&&(l=ot(l,`${t||""}_${o}`),nt(l[0])&&nt(m)&&(n[d]=me(m.text+l[0].text),l.shift()),n.push.apply(n,l)):s(l)?nt(m)?n[d]=me(m.text+l):""!==l&&n.push(me(l)):nt(l)&&nt(m)?n[d]=me(m.text+l.text):(c(e._isVList)&&a(l.tag)&&r(l.key)&&a(t)&&(l.key=`__vlist${t}_${o}__`),n.push(l)));return n}function it(e,t){let n,o,r,c,s=null;if(i(e)||"string"==typeof e)for(s=new Array(e.length),n=0,o=e.length;n0,c=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(c&&i&&i!==o&&s===i.$key&&!a&&!i.$hasNormal)return i;r={};for(const o in t)t[o]&&"$"!==o[0]&&(r[o]=kt(e,n,o,t[o]))}else r={};for(const e in n)e in r||(r[e]=Ct(n,e));return t&&Object.isExtensible(t)&&(t._normalized=r),U(r,"$stable",c),U(r,"$key",s),U(r,"$hasNormal",a),r}function kt(e,t,n,o){const r=function(){const t=ce;se(e);let n=arguments.length?o.apply(null,arguments):o({});n=n&&"object"==typeof n&&!i(n)?[n]:tt(n);const r=n&&n[0];return se(t),n&&(!r||1===n.length&&r.isComment&&!yt(r))?void 0:n};return o.proxy&&Object.defineProperty(t,n,{get:r,enumerable:!0,configurable:!0}),r}function Ct(e,t){return()=>e[t]}function At(e){return{get attrs(){if(!e._attrsProxy){const t=e._attrsProxy={};U(t,"_v_attr_proxy",!0),Et(t,e.$attrs,o,e,"$attrs")}return e._attrsProxy},get listeners(){return e._listenersProxy||Et(e._listenersProxy={},e.$listeners,o,e,"$listeners"),e._listenersProxy},get slots(){return function(e){return e._slotsProxy||Dt(e._slotsProxy={},e.$scopedSlots),e._slotsProxy}(e)},emit:D(e.$emit,e),expose(t){t&&Object.keys(t).forEach((n=>Re(e,t,n)))}}}function Et(e,t,n,o,i){let r=!1;for(const a in t)a in e?t[a]!==n[a]&&(r=!0):(r=!0,Bt(e,a,o,i));for(const n in e)n in t||(r=!0,delete e[n]);return r}function Bt(e,t,n,o){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:()=>n[o][t]})}function Dt(e,t){for(const n in t)e[n]=t[n];for(const n in e)n in t||delete e[n]}function It(){const e=ce;return e._setupContext||(e._setupContext=At(e))}let zt=null;function St(e,t){return(e.__esModule||re&&"Module"===e[Symbol.toStringTag])&&(e=e.default),d(e)?t.extend(e):e}function Pt(e){if(i(e))for(let t=0;tVt(e,o,i+" (Promise/async)"))),r._handled=!0)}catch(e){Vt(e,o,i)}return r}function Lt(e,t,n){if(q.errorHandler)try{return q.errorHandler.call(null,e,t,n)}catch(t){t!==e&&jt(t)}jt(e)}function jt(e,t,n){if(!G||"undefined"==typeof console)throw e;console.error(e)}let Rt=!1;const Nt=[];let qt,Zt=!1;function Ut(){Zt=!1;const e=Nt.slice(0);Nt.length=0;for(let t=0;t{e.then(Ut),J&&setTimeout(P)},Rt=!0}else if(Y||"undefined"==typeof MutationObserver||!ie(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())qt="undefined"!=typeof setImmediate&&ie(setImmediate)?()=>{setImmediate(Ut)}:()=>{setTimeout(Ut,0)};else{let e=1;const t=new MutationObserver(Ut),n=document.createTextNode(String(e));t.observe(n,{characterData:!0}),qt=()=>{e=(e+1)%2,n.data=String(e)},Rt=!0}function Ht(e,t){let n;if(Nt.push((()=>{if(e)try{e.call(t)}catch(e){Vt(e,t,"nextTick")}else n&&n(t)})),Zt||(Zt=!0,qt()),!e&&"undefined"!=typeof Promise)return new Promise((e=>{n=e}))}function Wt(e){return(t,n=ce)=>{if(n)return function(e,t,n){const o=e.$options;o[t]=Gn(o[t],n)}(n,e,t)}}const Gt=Wt("beforeMount"),Qt=Wt("mounted"),Yt=Wt("beforeUpdate"),Xt=Wt("updated"),Kt=Wt("beforeDestroy"),Jt=Wt("destroyed"),_t=Wt("activated"),$t=Wt("deactivated"),en=Wt("serverPrefetch"),tn=Wt("renderTracked"),nn=Wt("renderTriggered"),on=Wt("errorCaptured");var rn=Object.freeze({__proto__:null,version:"2.7.14",defineComponent:function(e){return e},ref:function(e){return je(e,!1)},shallowRef:function(e){return je(e,!0)},isRef:Le,toRef:Ne,toRefs:function(e){const t=i(e)?new Array(e.length):{};for(const n in e)t[n]=Ne(e,n);return t},unref:function(e){return Le(e)?e.value:e},proxyRefs:function(e){if(Oe(e))return e;const t={},n=Object.keys(e);for(let o=0;o{t.depend()}),(()=>{t.notify()})),i={get value(){return n()},set value(e){o(e)}};return U(i,"__v_isRef",!0),i},triggerRef:function(e){e.dep&&e.dep.notify()},reactive:function(e){return Me(e,!1),e},isReactive:Oe,isReadonly:Te,isShallow:Ve,isProxy:function(e){return Oe(e)||Te(e)},shallowReactive:Pe,markRaw:function(e){return Object.isExtensible(e)&&U(e,"__v_skip",!0),e},toRaw:function e(t){const n=t&&t.__v_raw;return n?e(n):t},readonly:qe,shallowReadonly:function(e){return Ze(e,!0)},computed:function(e,t){let n,o;const i=l(e);i?(n=e,o=P):(n=e.get,o=e.set);const r=ne()?null:new mn(ce,n,P,{lazy:!0}),a={effect:r,get value(){return r?(r.dirty&&r.evaluate(),be.target&&r.depend(),r.value):n()},set value(e){o(e)}};return U(a,"__v_isRef",!0),U(a,"__v_isReadonly",i),a},watch:function(e,t,n){return Ge(e,t,n)},watchEffect:function(e,t){return Ge(e,null,t)},watchPostEffect:He,watchSyncEffect:function(e,t){return Ge(e,null,{flush:"sync"})},EffectScope:Ye,effectScope:function(e){return new Ye(e)},onScopeDispose:function(e){Qe&&Qe.cleanups.push(e)},getCurrentScope:function(){return Qe},provide:function(e,t){ce&&(Xe(ce)[e]=t)},inject:function(e,t,n=!1){const o=ce;if(o){const i=o.$parent&&o.$parent._provided;if(i&&e in i)return i[e];if(arguments.length>1)return n&&l(t)?t.call(o):t}},h:function(e,t,n){return Mt(ce,e,t,n,2,!0)},getCurrentInstance:function(){return ce&&{proxy:ce}},useSlots:function(){return It().slots},useAttrs:function(){return It().attrs},useListeners:function(){return It().listeners},mergeDefaults:function(e,t){const n=i(e)?e.reduce(((e,t)=>(e[t]={},e)),{}):e;for(const e in t){const o=n[e];o?i(o)||l(o)?n[e]={type:o,default:t[e]}:o.default=t[e]:null===o&&(n[e]={default:t[e]})}return n},nextTick:Ht,set:Ie,del:ze,useCssModule:function(e="$style"){if(!ce)return o;return ce[e]||o},useCssVars:function(e){if(!G)return;const t=ce;t&&He((()=>{const n=t.$el,o=e(t,t._setupProxy);if(n&&1===n.nodeType){const e=n.style;for(const t in o)e.setProperty(`--${t}`,o[t])}}))},defineAsyncComponent:function(e){l(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:o,delay:i=200,timeout:r,suspensible:a=!1,onError:c}=e;let s=null,d=0;const m=()=>{let e;return s||(e=s=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),c)return new Promise(((t,n)=>{c(e,(()=>t((d++,s=null,m()))),(()=>n(e)),d+1)}));throw e})).then((t=>e!==s&&s?s:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),t))))};return()=>({component:m(),delay:i,timeout:r,error:o,loading:n})},onBeforeMount:Gt,onMounted:Qt,onBeforeUpdate:Yt,onUpdated:Xt,onBeforeUnmount:Kt,onUnmounted:Jt,onActivated:_t,onDeactivated:$t,onServerPrefetch:en,onRenderTracked:tn,onRenderTriggered:nn,onErrorCaptured:function(e,t=ce){on(e,t)}});const an=new ae;function cn(e){return sn(e,an),an.clear(),e}function sn(e,t){let n,o;const r=i(e);if(!(!r&&!d(e)||e.__v_skip||Object.isFrozen(e)||e instanceof le)){if(e.__ob__){const n=e.__ob__.dep.id;if(t.has(n))return;t.add(n)}if(r)for(n=e.length;n--;)sn(e[n],t);else if(Le(e))sn(e.value,t);else for(o=Object.keys(e),n=o.length;n--;)sn(e[o[n]],t)}}let ln,dn=0;class mn{constructor(e,t,n,o,i){!function(e,t=Qe){t&&t.active&&t.effects.push(e)}(this,Qe&&!Qe._vm?Qe:e?e._scope:void 0),(this.vm=e)&&i&&(e._watcher=this),o?(this.deep=!!o.deep,this.user=!!o.user,this.lazy=!!o.lazy,this.sync=!!o.sync,this.before=o.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++dn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ae,this.newDepIds=new ae,this.expression="",l(t)?this.getter=t:(this.getter=function(e){if(H.test(e))return;const t=e.split(".");return function(e){for(let n=0;n{hn=t}}function Fn(e){for(;e&&(e=e.$parent);)if(e._inactive)return!0;return!1}function vn(e,t){if(t){if(e._directInactive=!1,Fn(e))return}else if(e._directInactive)return;if(e._inactive||null===e._inactive){e._inactive=!1;for(let t=0;tdocument.createEvent("Event").timeStamp&&(In=()=>e.now())}const zn=(e,t)=>{if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function Sn(){let e,t;for(Dn=In(),En=!0,xn.sort(zn),Bn=0;Bn{for(let e=0;ee)),t._pending=!1}pe.length=0})(),oe&&q.devtools&&oe.emit("flush")}function Pn(e){const t=e.id;if(null==Cn[t]&&(e!==be.target||!e.noRecurse)){if(Cn[t]=!0,En){let t=xn.length-1;for(;t>Bn&&xn[t].id>e.id;)t--;xn.splice(t+1,0,e)}else xn.push(e);An||(An=!0,Ht(Sn))}}function Mn(e,t){if(e){const n=Object.create(null),o=re?Reflect.ownKeys(e):Object.keys(e);for(let i=0;i(this.$slots||xt(r,e.scopedSlots,this.$slots=vt(n,r)),this.$slots),Object.defineProperty(this,"scopedSlots",{enumerable:!0,get(){return xt(r,e.scopedSlots,this.slots())}}),d&&(this.$options=s,this.$slots=this.slots(),this.$scopedSlots=xt(r,e.scopedSlots,this.$slots)),s._scopeId?this._c=(e,t,n,o)=>{const a=Mt(l,e,t,n,o,m);return a&&!i(a)&&(a.fnScopeId=s._scopeId,a.fnContext=r),a}:this._c=(e,t,n,o)=>Mt(l,e,t,n,o,m)}function Vn(e,t,n,o,i){const r=fe(e);return r.fnContext=n,r.fnOptions=o,t.slot&&((r.data||(r.data={})).slot=t.slot),r}function Tn(e,t){for(const n in t)e[C(n)]=t[n]}function Ln(e){return e.name||e.__name||e._componentTag}Ft(On.prototype);const jn={init(e,t){if(e.componentInstance&&!e.componentInstance._isDestroyed&&e.data.keepAlive){const t=e;jn.prepatch(t,t)}else(e.componentInstance=function(e,t){const n={_isComponent:!0,_parentVnode:e,parent:t},o=e.data.inlineTemplate;return a(o)&&(n.render=o.render,n.staticRenderFns=o.staticRenderFns),new e.componentOptions.Ctor(n)}(e,hn)).$mount(t?e.elm:void 0,t)},prepatch(e,t){const n=t.componentOptions;!function(e,t,n,i,r){const a=i.data.scopedSlots,c=e.$scopedSlots,s=!!(a&&!a.$stable||c!==o&&!c.$stable||a&&e.$scopedSlots.$key!==a.$key||!a&&e.$scopedSlots.$key);let l=!!(r||e.$options._renderChildren||s);const d=e.$vnode;e.$options._parentVnode=i,e.$vnode=i,e._vnode&&(e._vnode.parent=i),e.$options._renderChildren=r;const m=i.data.attrs||o;e._attrsProxy&&Et(e._attrsProxy,m,d.data&&d.data.attrs||o,e,"$attrs")&&(l=!0),e.$attrs=m,n=n||o;const f=e.$options._parentListeners;if(e._listenersProxy&&Et(e._listenersProxy,n,f||o,e,"$listeners"),e.$listeners=e.$options._parentListeners=n,bn(e,n,f),t&&e.$options.props){Ce(!1);const n=e._props,o=e.$options._propKeys||[];for(let i=0;iv(o,n)));const l=e=>{for(let e=0,t=o.length;e{e.resolved=St(n,t),i?o.length=0:l(!0)})),f=L((t=>{a(e.errorComp)&&(e.error=!0,l(!0))})),u=e(m,f);return d(u)&&(p(u)?r(e.resolved)&&u.then(m,f):p(u.component)&&(u.component.then(m,f),a(u.error)&&(e.errorComp=St(u.error,t)),a(u.loading)&&(e.loadingComp=St(u.loading,t),0===u.delay?e.loading=!0:c=setTimeout((()=>{c=null,r(e.resolved)&&r(e.error)&&(e.loading=!0,l(!1))}),u.delay||200)),a(u.timeout)&&(s=setTimeout((()=>{s=null,r(e.resolved)&&f(null)}),u.timeout)))),i=!1,e.loading?e.loadingComp:e.resolved}}(f,m),void 0===e))return function(e,t,n,o,i){const r=de();return r.asyncFactory=e,r.asyncMeta={data:t,context:n,children:o,tag:i},r}(f,t,n,s,l);t=t||{},fo(e),a(t.model)&&function(e,t){const n=e.model&&e.model.prop||"value",o=e.model&&e.model.event||"input";(t.attrs||(t.attrs={}))[n]=t.model.value;const r=t.on||(t.on={}),c=r[o],s=t.model.callback;a(c)?(i(c)?-1===c.indexOf(s):c!==s)&&(r[o]=[s].concat(c)):r[o]=s}(e.options,t);const u=function(e,t,n){const o=t.options.props;if(r(o))return;const i={},{attrs:c,props:s}=e;if(a(c)||a(s))for(const e in o){const t=B(e);et(i,s,e,t,!0)||et(i,c,e,t,!1)}return i}(t,e);if(c(e.options.functional))return function(e,t,n,r,c){const s=e.options,l={},d=s.props;if(a(d))for(const e in d)l[e]=Jn(e,d,t||o);else a(n.attrs)&&Tn(l,n.attrs),a(n.props)&&Tn(l,n.props);const m=new On(n,l,c,r,e),f=s.render.call(null,m._c,m);if(f instanceof le)return Vn(f,n,m.parent,s);if(i(f)){const e=tt(f)||[],t=new Array(e.length);for(let o=0;o{e(n,o),t(n,o)};return n._merged=!0,n}let Zn=P;const Un=q.optionMergeStrategies;function Hn(e,t,n=!0){if(!t)return e;let o,i,r;const a=re?Reflect.ownKeys(t):Object.keys(t);for(let c=0;c{Un[e]=Gn})),R.forEach((function(e){Un[e+"s"]=Qn})),Un.watch=function(e,t,n,o){if(e===$&&(e=void 0),t===$&&(t=void 0),!t)return Object.create(e||null);if(!e)return t;const r={};z(r,e);for(const e in t){let n=r[e];const o=t[e];n&&!i(n)&&(n=[n]),r[e]=n?n.concat(o):i(o)?o:[o]}return r},Un.props=Un.methods=Un.inject=Un.computed=function(e,t,n,o){if(!e)return t;const i=Object.create(null);return z(i,e),t&&z(i,t),i},Un.provide=function(e,t){return e?function(){const n=Object.create(null);return Hn(n,l(e)?e.call(this):e),t&&Hn(n,l(t)?t.call(this):t,!1),n}:t};const Yn=function(e,t){return void 0===t?e:t};function Xn(e,t,n){if(l(t)&&(t=t.options),function(e,t){const n=e.props;if(!n)return;const o={};let r,a,c;if(i(n))for(r=n.length;r--;)a=n[r],"string"==typeof a&&(c=C(a),o[c]={type:null});else if(f(n))for(const e in n)a=n[e],c=C(e),o[c]=f(a)?a:{type:a};e.props=o}(t),function(e,t){const n=e.inject;if(!n)return;const o=e.inject={};if(i(n))for(let e=0;e-1)if(r&&!y(i,"default"))a=!1;else if(""===a||a===B(e)){const e=to(String,i.type);(e<0||c-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===m.call(n)&&e.test(t));var n}function ho(e,t){const{cache:n,keys:o,_vnode:i}=e;for(const e in n){const r=n[e];if(r){const a=r.name;a&&!t(a)&&go(n,e,o,i)}}}function go(e,t,n,o){const i=e[t];!i||o&&i.tag===o.tag||i.componentInstance.$destroy(),e[t]=null,v(n,t)}!function(e){e.prototype._init=function(e){const t=this;t._uid=mo++,t._isVue=!0,t.__v_skip=!0,t._scope=new Ye(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){const n=e.$options=Object.create(e.constructor.options),o=t._parentVnode;n.parent=t.parent,n._parentVnode=o;const i=o.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Xn(fo(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){const t=e.$options;let n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;const t=e.$options._parentListeners;t&&bn(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;const t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=vt(t._renderChildren,i),e.$scopedSlots=n?xt(e.$parent,n.data.scopedSlots,e.$slots):o,e._c=(t,n,o,i)=>Mt(e,t,n,o,i,!1),e.$createElement=(t,n,o,i)=>Mt(e,t,n,o,i,!0);const r=n&&n.data;De(e,"$attrs",r&&r.attrs||o,null,!0),De(e,"$listeners",t._parentListeners||o,null,!0)}(t),yn(t,"beforeCreate",void 0,!1),function(e){const t=Mn(e.$options.inject,e);t&&(Ce(!1),Object.keys(t).forEach((n=>{De(e,n,t[n])})),Ce(!0))}(t),io(t),function(e){const t=e.$options.provide;if(t){const n=l(t)?t.call(e):t;if(!d(n))return;const o=Xe(e),i=re?Reflect.ownKeys(n):Object.keys(n);for(let e=0;e1?I(n):n;const o=I(arguments,1),i=`event handler for "${e}"`;for(let e=0,r=n.length;eparseInt(this.max)&&go(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created(){this.cache=Object.create(null),this.keys=[]},destroyed(){for(const e in this.cache)go(this.cache,e,this.keys)},mounted(){this.cacheVNode(),this.$watch("include",(e=>{ho(this,(t=>bo(e,t)))})),this.$watch("exclude",(e=>{ho(this,(t=>!bo(e,t)))}))},updated(){this.cacheVNode()},render(){const e=this.$slots.default,t=Pt(e),n=t&&t.componentOptions;if(n){const e=po(n),{include:o,exclude:i}=this;if(o&&(!e||!bo(o,e))||i&&e&&bo(i,e))return t;const{cache:r,keys:a}=this,c=null==t.key?n.Ctor.cid+(n.tag?`::${n.tag}`:""):t.key;r[c]?(t.componentInstance=r[c].componentInstance,v(a,c),a.push(c)):(this.vnodeToCache=t,this.keyToCache=c),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){const t={get:()=>q};Object.defineProperty(e,"config",t),e.util={warn:Zn,extend:z,mergeOptions:Xn,defineReactive:De},e.set=Ie,e.delete=ze,e.nextTick=Ht,e.observable=e=>(Be(e),e),e.options=Object.create(null),R.forEach((t=>{e.options[t+"s"]=Object.create(null)})),e.options._base=e,z(e.options.components,vo),function(e){e.use=function(e){const t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;const n=I(arguments,1);return n.unshift(this),l(e.install)?e.install.apply(e,n):l(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Xn(this.options,e),this}}(e),function(e){e.cid=0;let t=1;e.extend=function(e){e=e||{};const n=this,o=n.cid,i=e._Ctor||(e._Ctor={});if(i[o])return i[o];const r=Ln(e)||Ln(n.options),a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=Xn(n.options,e),a.super=n,a.options.props&&function(e){const t=e.options.props;for(const n in t)oo(e.prototype,"_props",n)}(a),a.options.computed&&function(e){const t=e.options.computed;for(const n in t)ao(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach((function(e){a[e]=n[e]})),r&&(a.options.components[r]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=z({},a.options),i[o]=a,a}}(e),function(e){R.forEach((t=>{e[t]=function(e,n){return n?("component"===t&&f(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&l(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(uo),Object.defineProperty(uo.prototype,"$isServer",{get:ne}),Object.defineProperty(uo.prototype,"$ssrContext",{get(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(uo,"FunctionalRenderContext",{value:On}),uo.version="2.7.14";const wo=g("style,class"),yo=g("input,textarea,option,select,progress"),xo=g("contenteditable,draggable,spellcheck"),ko=g("events,caret,typing,plaintext-only"),Co=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Ao="http://www.w3.org/1999/xlink",Eo=e=>":"===e.charAt(5)&&"xlink"===e.slice(0,5),Bo=e=>Eo(e)?e.slice(6,e.length):"",Do=e=>null==e||!1===e;function Io(e,t){return{staticClass:zo(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function zo(e,t){return e?t?e+" "+t:e:t||""}function So(e){return Array.isArray(e)?function(e){let t,n="";for(let o=0,i=e.length;oMo(e)||Oo(e),To=Object.create(null),Lo=g("text,number,password,search,email,tel,url");var jo=Object.freeze({__proto__:null,createElement:function(e,t){const n=document.createElement(e);return"select"!==e||t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(e,t){return document.createElementNS(Po[e],t)},createTextNode:function(e){return document.createTextNode(e)},createComment:function(e){return document.createComment(e)},insertBefore:function(e,t,n){e.insertBefore(t,n)},removeChild:function(e,t){e.removeChild(t)},appendChild:function(e,t){e.appendChild(t)},parentNode:function(e){return e.parentNode},nextSibling:function(e){return e.nextSibling},tagName:function(e){return e.tagName},setTextContent:function(e,t){e.textContent=t},setStyleScope:function(e,t){e.setAttribute(t,"")}}),Ro={create(e,t){No(t)},update(e,t){e.data.ref!==t.data.ref&&(No(e,!0),No(t))},destroy(e){No(e,!0)}};function No(e,t){const n=e.data.ref;if(!a(n))return;const o=e.context,r=e.componentInstance||e.elm,c=t?null:r,s=t?void 0:r;if(l(n))return void Tt(n,o,[c],o,"template ref function");const d=e.data.refInFor,m="string"==typeof n||"number"==typeof n,f=Le(n),u=o.$refs;if(m||f)if(d){const e=m?u[n]:n.value;t?i(e)&&v(e,r):i(e)?e.includes(r)||e.push(r):m?(u[n]=[r],qo(o,n,u[n])):n.value=[r]}else if(m){if(t&&u[n]!==r)return;u[n]=s,qo(o,n,c)}else if(f){if(t&&n.value!==r)return;n.value=c}}function qo({_setupState:e},t,n){e&&y(e,t)&&(Le(e[t])?e[t].value=n:e[t]=n)}const Zo=new le("",{},[]),Uo=["create","activate","update","remove","destroy"];function Ho(e,t){return e.key===t.key&&e.asyncFactory===t.asyncFactory&&(e.tag===t.tag&&e.isComment===t.isComment&&a(e.data)===a(t.data)&&function(e,t){if("input"!==e.tag)return!0;let n;const o=a(n=e.data)&&a(n=n.attrs)&&n.type,i=a(n=t.data)&&a(n=n.attrs)&&n.type;return o===i||Lo(o)&&Lo(i)}(e,t)||c(e.isAsyncPlaceholder)&&r(t.asyncFactory.error))}function Wo(e,t,n){let o,i;const r={};for(o=t;o<=n;++o)i=e[o].key,a(i)&&(r[i]=o);return r}var Go={create:Qo,update:Qo,destroy:function(e){Qo(e,Zo)}};function Qo(e,t){(e.data.directives||t.data.directives)&&function(e,t){const n=e===Zo,o=t===Zo,i=Xo(e.data.directives,e.context),r=Xo(t.data.directives,t.context),a=[],c=[];let s,l,d;for(s in r)l=i[s],d=r[s],l?(d.oldValue=l.value,d.oldArg=l.arg,Jo(d,"update",t,e),d.def&&d.def.componentUpdated&&c.push(d)):(Jo(d,"bind",t,e),d.def&&d.def.inserted&&a.push(d));if(a.length){const o=()=>{for(let n=0;n{for(let n=0;n-1?ti(e,t,n):Co(t)?Do(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):xo(t)?e.setAttribute(t,((e,t)=>Do(t)||"false"===t?"false":"contenteditable"===e&&ko(t)?t:"true")(t,n)):Eo(t)?Do(n)?e.removeAttributeNS(Ao,Bo(t)):e.setAttributeNS(Ao,t,n):ti(e,t,n)}function ti(e,t,n){if(Do(n))e.removeAttribute(t);else{if(Y&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){const t=n=>{n.stopImmediatePropagation(),e.removeEventListener("input",t)};e.addEventListener("input",t),e.__ieph=!0}e.setAttribute(t,n)}}var ni={create:$o,update:$o};function oi(e,t){const n=t.elm,o=t.data,i=e.data;if(r(o.staticClass)&&r(o.class)&&(r(i)||r(i.staticClass)&&r(i.class)))return;let c=function(e){let t=e.data,n=e,o=e;for(;a(o.componentInstance);)o=o.componentInstance._vnode,o&&o.data&&(t=Io(o.data,t));for(;a(n=n.parent);)n&&n.data&&(t=Io(t,n.data));return function(e,t){return a(e)||a(t)?zo(e,So(t)):""}(t.staticClass,t.class)}(t);const s=n._transitionClasses;a(s)&&(c=zo(c,So(s))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}var ii={create:oi,update:oi};let ri;function ai(e,t,n){const o=ri;return function i(){const r=t.apply(null,arguments);null!==r&&li(e,i,n,o)}}const ci=Rt&&!(_&&Number(_[1])<=53);function si(e,t,n,o){if(ci){const e=Dn,n=t;t=n._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=e||t.timeStamp<=0||t.target.ownerDocument!==document)return n.apply(this,arguments)}}ri.addEventListener(e,t,te?{capture:n,passive:o}:n)}function li(e,t,n,o){(o||ri).removeEventListener(e,t._wrapper||t,n)}function di(e,t){if(r(e.data.on)&&r(t.data.on))return;const n=t.data.on||{},o=e.data.on||{};ri=t.elm||e.elm,function(e){if(a(e.__r)){const t=Y?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),_e(n,o,si,li,ai,t.context),ri=void 0}var mi={create:di,update:di,destroy:e=>di(e,Zo)};let fi;function ui(e,t){if(r(e.data.domProps)&&r(t.data.domProps))return;let n,o;const i=t.elm,s=e.data.domProps||{};let l=t.data.domProps||{};for(n in(a(l.__ob__)||c(l._v_attr_proxy))&&(l=t.data.domProps=z({},l)),s)n in l||(i[n]="");for(n in l){if(o=l[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),o===s[n])continue;1===i.childNodes.length&&i.removeChild(i.childNodes[0])}if("value"===n&&"PROGRESS"!==i.tagName){i._value=o;const e=r(o)?"":String(o);pi(i,e)&&(i.value=e)}else if("innerHTML"===n&&Oo(i.tagName)&&r(i.innerHTML)){fi=fi||document.createElement("div"),fi.innerHTML=`${o}`;const e=fi.firstChild;for(;i.firstChild;)i.removeChild(i.firstChild);for(;e.firstChild;)i.appendChild(e.firstChild)}else if(o!==s[n])try{i[n]=o}catch(e){}}}function pi(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){let n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){const n=e.value,o=e._vModifiers;if(a(o)){if(o.number)return h(n)!==h(t);if(o.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var bi={create:ui,update:ui};const hi=x((function(e){const t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){const o=e.split(n);o.length>1&&(t[o[0].trim()]=o[1].trim())}})),t}));function gi(e){const t=Fi(e.style);return e.staticStyle?z(e.staticStyle,t):t}function Fi(e){return Array.isArray(e)?S(e):"string"==typeof e?hi(e):e}const vi=/^--/,wi=/\s*!important$/,yi=(e,t,n)=>{if(vi.test(t))e.style.setProperty(t,n);else if(wi.test(n))e.style.setProperty(B(t),n.replace(wi,""),"important");else{const o=Ci(t);if(Array.isArray(n))for(let t=0,i=n.length;t-1?t.split(Bi).forEach((t=>e.classList.add(t))):e.classList.add(t);else{const n=` ${e.getAttribute("class")||""} `;n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Ii(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Bi).forEach((t=>e.classList.remove(t))):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{let n=` ${e.getAttribute("class")||""} `;const o=" "+t+" ";for(;n.indexOf(o)>=0;)n=n.replace(o," ");n=n.trim(),n?e.setAttribute("class",n):e.removeAttribute("class")}}function zi(e){if(e){if("object"==typeof e){const t={};return!1!==e.css&&z(t,Si(e.name||"v")),z(t,e),t}return"string"==typeof e?Si(e):void 0}}const Si=x((e=>({enterClass:`${e}-enter`,enterToClass:`${e}-enter-to`,enterActiveClass:`${e}-enter-active`,leaveClass:`${e}-leave`,leaveToClass:`${e}-leave-to`,leaveActiveClass:`${e}-leave-active`}))),Pi=G&&!X;let Mi="transition",Oi="transitionend",Vi="animation",Ti="animationend";Pi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Mi="WebkitTransition",Oi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Vi="WebkitAnimation",Ti="webkitAnimationEnd"));const Li=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:e=>e();function ji(e){Li((()=>{Li(e)}))}function Ri(e,t){const n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),Di(e,t))}function Ni(e,t){e._transitionClasses&&v(e._transitionClasses,t),Ii(e,t)}function qi(e,t,n){const{type:o,timeout:i,propCount:r}=Ui(e,t);if(!o)return n();const a="transition"===o?Oi:Ti;let c=0;const s=()=>{e.removeEventListener(a,l),n()},l=t=>{t.target===e&&++c>=r&&s()};setTimeout((()=>{c0&&(l="transition",d=r,m=i.length):"animation"===t?s>0&&(l="animation",d=s,m=c.length):(d=Math.max(r,s),l=d>0?r>s?"transition":"animation":null,m=l?"transition"===l?i.length:c.length:0),{type:l,timeout:d,propCount:m,hasTransform:"transition"===l&&Zi.test(n[Mi+"Property"])}}function Hi(e,t){for(;e.lengthWi(t)+Wi(e[n]))))}function Wi(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}function Gi(e,t){const n=e.elm;a(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());const o=zi(e.data.transition);if(r(o))return;if(a(n._enterCb)||1!==n.nodeType)return;const{css:i,type:c,enterClass:s,enterToClass:m,enterActiveClass:f,appearClass:u,appearToClass:p,appearActiveClass:b,beforeEnter:g,enter:F,afterEnter:v,enterCancelled:w,beforeAppear:y,appear:x,afterAppear:k,appearCancelled:C,duration:A}=o;let E=hn,B=hn.$vnode;for(;B&&B.parent;)E=B.context,B=B.parent;const D=!E._isMounted||!e.isRootInsert;if(D&&!x&&""!==x)return;const I=D&&u?u:s,z=D&&b?b:f,S=D&&p?p:m,P=D&&y||g,M=D&&l(x)?x:F,O=D&&k||v,V=D&&C||w,T=h(d(A)?A.enter:A),j=!1!==i&&!X,R=Xi(M),N=n._enterCb=L((()=>{j&&(Ni(n,S),Ni(n,z)),N.cancelled?(j&&Ni(n,I),V&&V(n)):O&&O(n),n._enterCb=null}));e.data.show||$e(e,"insert",(()=>{const t=n.parentNode,o=t&&t._pending&&t._pending[e.key];o&&o.tag===e.tag&&o.elm._leaveCb&&o.elm._leaveCb(),M&&M(n,N)})),P&&P(n),j&&(Ri(n,I),Ri(n,z),ji((()=>{Ni(n,I),N.cancelled||(Ri(n,S),R||(Yi(T)?setTimeout(N,T):qi(n,c,N)))}))),e.data.show&&(t&&t(),M&&M(n,N)),j||R||N()}function Qi(e,t){const n=e.elm;a(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());const o=zi(e.data.transition);if(r(o)||1!==n.nodeType)return t();if(a(n._leaveCb))return;const{css:i,type:c,leaveClass:s,leaveToClass:l,leaveActiveClass:m,beforeLeave:f,leave:u,afterLeave:p,leaveCancelled:b,delayLeave:g,duration:F}=o,v=!1!==i&&!X,w=Xi(u),y=h(d(F)?F.leave:F),x=n._leaveCb=L((()=>{n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[e.key]=null),v&&(Ni(n,l),Ni(n,m)),x.cancelled?(v&&Ni(n,s),b&&b(n)):(t(),p&&p(n)),n._leaveCb=null}));function k(){x.cancelled||(!e.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[e.key]=e),f&&f(n),v&&(Ri(n,s),Ri(n,m),ji((()=>{Ni(n,s),x.cancelled||(Ri(n,l),w||(Yi(y)?setTimeout(x,y):qi(n,c,x)))}))),u&&u(n,x),v||w||x())}g?g(k):k()}function Yi(e){return"number"==typeof e&&!isNaN(e)}function Xi(e){if(r(e))return!1;const t=e.fns;return a(t)?Xi(Array.isArray(t)?t[0]:t):(e._length||e.length)>1}function Ki(e,t){!0!==t.data.show&&Gi(t)}const Ji=function(e){let t,n;const o={},{modules:l,nodeOps:d}=e;for(t=0;tb?(m=r(n[F+1])?null:n[F+1].elm,w(e,m,n,p,F,o)):p>F&&x(t,u,b)}(m,b,g,n,l):a(g)?(a(e.text)&&d.setTextContent(m,""),w(m,null,g,0,g.length-1,n)):a(b)?x(b,0,b.length-1):a(e.text)&&d.setTextContent(m,""):e.text!==t.text&&d.setTextContent(m,t.text),a(p)&&a(u=p.hook)&&a(u=u.postpatch)&&u(e,t)}function E(e,t,n){if(c(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(let e=0;e{const e=document.activeElement;e&&e.vmodel&&rr(e,"input")}));const _i={inserted(e,t,n,o){"select"===n.tag?(o.elm&&!o.elm._vOptions?$e(n,"postpatch",(()=>{_i.componentUpdated(e,t,n)})):$i(e,t,n.context),e._vOptions=[].map.call(e.options,nr)):("textarea"===n.tag||Lo(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",or),e.addEventListener("compositionend",ir),e.addEventListener("change",ir),X&&(e.vmodel=!0)))},componentUpdated(e,t,n){if("select"===n.tag){$i(e,t,n.context);const o=e._vOptions,i=e._vOptions=[].map.call(e.options,nr);i.some(((e,t)=>!V(e,o[t])))&&(e.multiple?t.value.some((e=>tr(e,i))):t.value!==t.oldValue&&tr(t.value,i))&&rr(e,"change")}}};function $i(e,t,n){er(e,t),(Y||K)&&setTimeout((()=>{er(e,t)}),0)}function er(e,t,n){const o=t.value,i=e.multiple;if(i&&!Array.isArray(o))return;let r,a;for(let t=0,n=e.options.length;t-1,a.selected!==r&&(a.selected=r);else if(V(nr(a),o))return void(e.selectedIndex!==t&&(e.selectedIndex=t));i||(e.selectedIndex=-1)}function tr(e,t){return t.every((t=>!V(t,e)))}function nr(e){return"_value"in e?e._value:e.value}function or(e){e.target.composing=!0}function ir(e){e.target.composing&&(e.target.composing=!1,rr(e.target,"input"))}function rr(e,t){const n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function ar(e){return!e.componentInstance||e.data&&e.data.transition?e:ar(e.componentInstance._vnode)}var cr={bind(e,{value:t},n){const o=(n=ar(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;t&&o?(n.data.show=!0,Gi(n,(()=>{e.style.display=i}))):e.style.display=t?i:"none"},update(e,{value:t,oldValue:n},o){!t!=!n&&((o=ar(o)).data&&o.data.transition?(o.data.show=!0,t?Gi(o,(()=>{e.style.display=e.__vOriginalDisplay})):Qi(o,(()=>{e.style.display="none"}))):e.style.display=t?e.__vOriginalDisplay:"none")},unbind(e,t,n,o,i){i||(e.style.display=e.__vOriginalDisplay)}},sr={model:_i,show:cr};const lr={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function dr(e){const t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?dr(Pt(t.children)):e}function mr(e){const t={},n=e.$options;for(const o in n.propsData)t[o]=e[o];const o=n._parentListeners;for(const e in o)t[C(e)]=o[e];return t}function fr(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}const ur=e=>e.tag||yt(e),pr=e=>"show"===e.name;var br={name:"transition",props:lr,abstract:!0,render(e){let t=this.$slots.default;if(!t)return;if(t=t.filter(ur),!t.length)return;const n=this.mode,o=t[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;const i=dr(o);if(!i)return o;if(this._leaving)return fr(e,o);const r=`__transition-${this._uid}-`;i.key=null==i.key?i.isComment?r+"comment":r+i.tag:s(i.key)?0===String(i.key).indexOf(r)?i.key:r+i.key:i.key;const a=(i.data||(i.data={})).transition=mr(this),c=this._vnode,l=dr(c);if(i.data.directives&&i.data.directives.some(pr)&&(i.data.show=!0),l&&l.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,l)&&!yt(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){const t=l.data.transition=z({},a);if("out-in"===n)return this._leaving=!0,$e(t,"afterLeave",(()=>{this._leaving=!1,this.$forceUpdate()})),fr(e,o);if("in-out"===n){if(yt(i))return c;let e;const n=()=>{e()};$e(a,"afterEnter",n),$e(a,"enterCancelled",n),$e(t,"delayLeave",(t=>{e=t}))}}return o}};const hr=z({tag:String,moveClass:String},lr);delete hr.mode;var gr={props:hr,beforeMount(){const e=this._update;this._update=(t,n)=>{const o=gn(this);this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept,o(),e.call(this,t,n)}},render(e){const t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),o=this.prevChildren=this.children,i=this.$slots.default||[],r=this.children=[],a=mr(this);for(let e=0;e{if(e.data.moved){const n=e.elm,o=n.style;Ri(n,t),o.transform=o.WebkitTransform=o.transitionDuration="",n.addEventListener(Oi,n._moveCb=function e(o){o&&o.target!==n||o&&!/transform$/.test(o.propertyName)||(n.removeEventListener(Oi,e),n._moveCb=null,Ni(n,t))})}})))},methods:{hasMove(e,t){if(!Pi)return!1;if(this._hasMove)return this._hasMove;const n=e.cloneNode();e._transitionClasses&&e._transitionClasses.forEach((e=>{Ii(n,e)})),Di(n,t),n.style.display="none",this.$el.appendChild(n);const o=Ui(n);return this.$el.removeChild(n),this._hasMove=o.hasTransform}}};function Fr(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function vr(e){e.data.newPos=e.elm.getBoundingClientRect()}function wr(e){const t=e.data.pos,n=e.data.newPos,o=t.left-n.left,i=t.top-n.top;if(o||i){e.data.moved=!0;const t=e.elm.style;t.transform=t.WebkitTransform=`translate(${o}px,${i}px)`,t.transitionDuration="0s"}}var yr={Transition:br,TransitionGroup:gr};uo.config.mustUseProp=(e,t,n)=>"value"===n&&yo(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e,uo.config.isReservedTag=Vo,uo.config.isReservedAttr=wo,uo.config.getTagNamespace=function(e){return Oo(e)?"svg":"math"===e?"math":void 0},uo.config.isUnknownElement=function(e){if(!G)return!0;if(Vo(e))return!1;if(e=e.toLowerCase(),null!=To[e])return To[e];const t=document.createElement(e);return e.indexOf("-")>-1?To[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:To[e]=/HTMLUnknownElement/.test(t.toString())},z(uo.options.directives,sr),z(uo.options.components,yr),uo.prototype.__patch__=G?Ji:P,uo.prototype.$mount=function(e,t){return function(e,t,n){let o;e.$el=t,e.$options.render||(e.$options.render=de),yn(e,"beforeMount"),o=()=>{e._update(e._render(),n)},new mn(e,o,P,{before(){e._isMounted&&!e._isDestroyed&&yn(e,"beforeUpdate")}},!0),n=!1;const i=e._preWatchers;if(i)for(let e=0;e{q.devtools&&oe&&oe.emit("init",uo)}),0),z(uo,rn),e.exports=uo},7761:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=7761,e.exports=t},4311:(e,t,n)=>{var o={"./index.en-US.md":5340};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4311},3552:(e,t,n)=>{var o={"./index.en-US.ts":4792};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=3552},4353:(e,t,n)=>{var o={"./id-search/index.ts":9234};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=4353},5269:(e,t,n)=>{"use strict";n.r(t),n.d(t,{pako:()=>o}); /* eslint-disable */ -const o=function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var l=n[a]={exports:{}};t[a][0].call(l.exports,(function(e){return i(t[a][1][e]||e)}),l,l.exports,e,t,n,o)}return n[a].exports}for(var r=void 0,a=0;a>>6:(n<65536?t[a++]=224|n>>>12:(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63),t[a++]=128|n>>>6&63),t[a++]=128|63&n);return t},n.buf2binstring=function(e){return s(e,e.length)},n.binstring2buf=function(e){for(var t=new o.Buf8(e.length),n=0,i=t.length;n>10&1023,l[o++]=56320|1023&i)}return s(l,o)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;0<=n&&128==(192&e[n]);)n--;return n<0||0===n?t:n+a[e[n]]>t?n:t}},{"./common":1}],3:[function(e,t,n){t.exports=function(e,t,n,o){for(var i=65535&e|0,r=e>>>16&65535|0,a=0;0!==n;){for(n-=a=2e3>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,i){var r=o,a=i+n;e^=-1;for(var c=i;c>>8^r[255&(e^t[c])];return-1^e}},{}],6:[function(e,t,n){t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(e,t,n){t.exports=function(e,t){var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w,y,x,k,C,A,E;n=e.state,o=e.next_in,A=e.input,i=o+(e.avail_in-5),r=e.next_out,E=e.output,a=r-(t-e.avail_out),c=r+(e.avail_out-257),s=n.dmax,l=n.wsize,d=n.whave,m=n.wnext,f=n.window,u=n.hold,p=n.bits,b=n.lencode,h=n.distcode,g=(1<>>=w=v>>>24,p-=w,0==(w=v>>>16&255))E[r++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=b[(65535&v)+(u&(1<>>=w,p-=w),p<15&&(u+=A[o++]<>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=h[(65535&v)+(u&(1<>>=w,p-=w,(w=r-a)>3,u&=(1<<(p-=y<<3))-1,e.next_in=o,e.next_out=r,e.avail_in=o>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new o.Buf16(320),this.work=new o.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function m(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new o.Buf32(852),t.distcode=t.distdyn=new o.Buf32(592),t.sane=1,t.back=-1,0):s}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,m(e)):s}function u(e,t){var n,o;return e&&e.state?(o=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=a.wsize?(o.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i<(r=a.wsize-a.wnext)&&(r=i),o.arraySet(a.window,t,n-i,r,a.wnext),(i-=r)?(o.arraySet(a.window,t,n-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=r(n.check,T,2,0),g=h=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",n.mode=30;break}if(g-=4,S=8+(15&(h>>>=4)),0===n.wbits)n.wbits=S;else if(S>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=3;case 3:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>8&255,T[2]=h>>>16&255,T[3]=h>>>24&255,n.check=r(n.check,T,4,0)),g=h=0,n.mode=4;case 4:for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>8),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=5;case 5:if(1024&n.flags){for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>>8&255,n.check=r(n.check,T,2,0)),g=h=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&(p<(x=n.length)&&(x=p),x&&(n.head&&(S=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),o.arraySet(n.head.extra,d,f,x,S)),512&n.flags&&(n.check=r(n.check,d,x,f)),p-=x,f+=x,n.length-=x),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===p)break e;for(x=0;S=d[f+x++],n.head&&S&&n.length<65536&&(n.head.name+=String.fromCharCode(S)),S&&x>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>=7&g,g-=7&g,n.mode=27;break}for(;g<3;){if(0===p)break e;p--,h+=d[f++]<>>=1)){case 0:n.mode=14;break;case 1:if(F(n),n.mode=20,6!==t)break;h>>>=2,g-=2;break e;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}h>>>=2,g-=2;break;case 14:for(h>>>=7&g,g-=7&g;g<32;){if(0===p)break e;p--,h+=d[f++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&h,g=h=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(x=n.length){if(p>>=5,g-=5,n.ndist=1+(31&h),h>>>=5,g-=5,n.ncode=4+(15&h),h>>>=4,g-=4,286>>=3,g-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,P={bits:n.lenbits},M=c(0,n.lens,0,19,n.lencode,0,n.work,P),n.lenbits=P.bits,M){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=A,g-=A,n.lens[n.have++]=B;else{if(16===B){for(O=A+2;g>>=A,g-=A,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}S=n.lens[n.have-1],x=3+(3&h),h>>>=2,g-=2}else if(17===B){for(O=A+3;g>>=A)),h>>>=3,g-=3}else{for(O=A+7;g>>=A)),h>>>=7,g-=7}if(n.have+x>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;x--;)n.lens[n.have++]=S}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,P={bits:n.lenbits},M=c(1,n.lens,0,n.nlen,n.lencode,0,n.work,P),n.lenbits=P.bits,M){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,P={bits:n.distbits},M=c(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,P),n.distbits=P.bits,M){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(6<=p&&258<=b){e.next_out=u,e.avail_out=b,e.next_in=f,e.avail_in=p,n.hold=h,n.bits=g,a(e,y),u=e.next_out,m=e.output,b=e.avail_out,f=e.next_in,d=e.input,p=e.avail_in,h=n.hold,g=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;E=(V=n.lencode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,n.length=B,0===E){n.mode=26;break}if(32&E){n.back=-1,n.mode=12;break}if(64&E){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&E,n.mode=22;case 22:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;E=(V=n.distcode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,64&E){e.msg="invalid distance code",n.mode=30;break}n.offset=B,n.extra=15&E,n.mode=24;case 24:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===b)break e;if(x=y-b,n.offset>x){if((x=n.offset-x)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}x>n.wnext?(x-=n.wnext,k=n.wsize-x):k=n.wnext-x,x>n.length&&(x=n.length),C=n.window}else C=m,k=u-n.offset,x=n.length;for(bF?(w=L[j+m[C]],y=P[O+m[C]]):(w=96,y=0),u=1<>I)+(p-=u)]=v<<24|w<<16|y|0,0!==p;);for(u=1<>=1;if(0!==u?(M&=u-1,M+=u):M=0,C++,0==--V[k]){if(k===E)break;k=t[n+m[C]]}if(B{var o={"./biliplus.svg":4050,"./lv6-plus.svg":732,"./settings-outline.svg":2613,"./widgets.svg":1522};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=5454},8195:e=>{"use strict";e.exports="data:font/woff2;base64,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"},8232:e=>{"use strict";e.exports='- `与 "解除 B 站区域限制" 互斥`: 若打开此选项, 在检测到 "解除 B 站区域限制" 脚本时, 将停止此脚本的加载以避免布局错乱.\n'},5340:e=>{"use strict";e.exports="TODO: en-US doc"},6284:e=>{"use strict";e.exports="- 文本颜色设为自动时, 背景色为主题色的元素, 会根据背景色的亮度自动决定使用黑色还是白色的文字.\n- 更新源决定在线仓库中功能的数据来源, 请注意更换更新源不会影响已安装的组件, 脚本本体的更新源与这个选项无关.\n- 文件下载模式决定多个文件下载时是打包为单个 zip 文件还是触发多个下载请求.\n- 开发者模式若开启:\n - 控制台中会统计各个功能的加载耗时.\n - 本地安装的功能将无视更新间隔期.\n - 允许输出 debug 级别的日志.\n - 报错的 Toast 将会显示整个堆栈信息.\n\n
    文件命名格式说明\n\n自定义文件命名格式, 各个功能在下载单个文件时, 会根据这个格式来命名\n可以使用的变量有:\n- `title`: 视频标题/直播间标题\n- `ep`: 选集标题\n- `aid`: AV 号\n- `bvid`: BV 号\n- `cid`: CID (每个视频的唯一编号, AV 号对应的视频可能有多集)\n- `lid`: 直播间号\n- `y`/`M`/`d`: 年/月/日\n- `h`/`m`/`s`/`ms`: 时/分/秒/毫秒\n\n默认的格式是 `[title][ - ep]`, 标题+选集标题, 当没有选集标题时则只有标题.\n\n变量要放在方括号里, 而方括号里的其他内容会在变量有效时出现. 比如格式如果写成 `[title] - [ep]`, 那么即使没有选集标题, 中间那个 ` - ` 也会出现在文件名里. 如果像默认那样放在方括号里, 没有选集标题时, ` - ` 也不会出现.\n\n例如, 想要标题 + AV 号 + 时间的格式, 可以设定为 `[title][ AVaid] [y]-[M]-[d] [h]-[m]-[s]`, 能够得到类似 `xxxx AV23333 2019-05-29 19-59-44` 的名字.\n
    \n\n
    批量命名格式说明\n\n自定义批量下载时的文件命名格式, 基本规则同 `文件命名格式`.\n新增的变量:\n- `n`: 数字, 表示第n个视频.\n\n
    \n"},3066:e=>{"use strict";e.exports=''},4050:e=>{"use strict";e.exports=''},732:e=>{"use strict";e.exports=''},2613:e=>{"use strict";e.exports=''},1522:e=>{"use strict";e.exports=''},113:e=>{"use strict";e.exports=JSON.parse('{"version":"2.8.10","author":"Grant Howard, Coulomb-G","copyright":"[year], Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)","license":"MIT","match":"*://*.bilibili.com/*","exclude":["*://api.bilibili.com/*","*://api.*.bilibili.com/*","*://*.bilibili.com/api/*","*://member.bilibili.com/studio/bs-editor/*","*://t.bilibili.com/h5/dynamic/specification","*://bbq.bilibili.com/*","*://message.bilibili.com/pages/nav/header_sync","*://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html","*://open-live.bilibili.com/*"],"run-at":"document-start","grant":["unsafeWindow","GM_getValue","GM_setValue","GM_deleteValue","GM_info","GM_xmlhttpRequest","GM_registerMenuCommand","GM_unregisterMenuCommand"],"connect":["raw.githubusercontent.com","github.com","[altCdn.host]","cn.bing.com","www.bing.com","translate.google.cn","translate.google.com","localhost","*"],"require":["[altCdn.library.lodash]"],"icon":"[altCdn.smallLogo]","icon64":"[altCdn.logo]"}')}},__webpack_module_cache__={},leafPrototypes,getProto;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},getProto=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var n=Object.create(null);__webpack_require__.r(n);var o={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var i=2&t&&e;"object"==typeof i&&!~leafPrototypes.indexOf(i);i=getProto(i))Object.getOwnPropertyNames(i).forEach((t=>o[t]=()=>e[t]));return o.default=()=>e,__webpack_require__.d(n,o),n},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{"use strict";(async()=>{window.lodash=_,Object.defineProperty(window,"_",{get:()=>(console.warn("window._ is deprecated, please use window.lodash instead."),window.lodash)});const{initVue:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,1467));e();const{headLoaded:t,raiseLifeCycleEvent:n,LifeCycleEventTypes:o}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,7792));n(o.Start);const{none:i}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3085)),{promiseLoadTrace:r}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,6165));await r("wait for ",(async()=>{await t(i)})),await r("compatibility patch",(async()=>{const{compatibilityPatch:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8793));e()}));const{coreApis:a,externalApis:c}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8677));if(unsafeWindow.bangumi_area_limit_hack&&a.settings.getComponentSettings("compatibilities").options.disableOnBalh&&a.utils.matchUrlPattern("//www.bilibili.com/bangumi/play/"))return void console.log("BALH detected, Bilibili Evolved is disabled.");unsafeWindow.bilibiliEvolved=c,window.coreApis=a,window.dq=a.utils.dq,window.dqa=a.utils.dqa,window.de=a.utils.de,window.des=a.utils.des,window.dea=a.utils.dea,window.deai=a.utils.deai,window.none=a.utils.none,window.componentsTags=a.componentApis.component.componentsTags,window.console=a.utils.log.useScopedConsole({name:"Bilibili Evolved",color:"#00A0D8"}), +const o=function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){if(r)return r(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var l=n[a]={exports:{}};t[a][0].call(l.exports,(function(e){return i(t[a][1][e]||e)}),l,l.exports,e,t,n,o)}return n[a].exports}for(var r=void 0,a=0;a>>6:(n<65536?t[a++]=224|n>>>12:(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63),t[a++]=128|n>>>6&63),t[a++]=128|63&n);return t},n.buf2binstring=function(e){return s(e,e.length)},n.binstring2buf=function(e){for(var t=new o.Buf8(e.length),n=0,i=t.length;n>10&1023,l[o++]=56320|1023&i)}return s(l,o)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;0<=n&&128==(192&e[n]);)n--;return n<0||0===n?t:n+a[e[n]]>t?n:t}},{"./common":1}],3:[function(e,t,n){t.exports=function(e,t,n,o){for(var i=65535&e|0,r=e>>>16&65535|0,a=0;0!==n;){for(n-=a=2e3>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,i){var r=o,a=i+n;e^=-1;for(var c=i;c>>8^r[255&(e^t[c])];return-1^e}},{}],6:[function(e,t,n){t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(e,t,n){t.exports=function(e,t){var n,o,i,r,a,c,s,l,d,m,f,u,p,b,h,g,F,v,w,y,x,k,C,A,E;n=e.state,o=e.next_in,A=e.input,i=o+(e.avail_in-5),r=e.next_out,E=e.output,a=r-(t-e.avail_out),c=r+(e.avail_out-257),s=n.dmax,l=n.wsize,d=n.whave,m=n.wnext,f=n.window,u=n.hold,p=n.bits,b=n.lencode,h=n.distcode,g=(1<>>=w=v>>>24,p-=w,0==(w=v>>>16&255))E[r++]=65535&v;else{if(!(16&w)){if(0==(64&w)){v=b[(65535&v)+(u&(1<>>=w,p-=w),p<15&&(u+=A[o++]<>>=w=v>>>24,p-=w,!(16&(w=v>>>16&255))){if(0==(64&w)){v=h[(65535&v)+(u&(1<>>=w,p-=w,(w=r-a)>3,u&=(1<<(p-=y<<3))-1,e.next_in=o,e.next_out=r,e.avail_in=o>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new o.Buf16(320),this.work=new o.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function m(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new o.Buf32(852),t.distcode=t.distdyn=new o.Buf32(592),t.sane=1,t.back=-1,0):s}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,m(e)):s}function u(e,t){var n,o;return e&&e.state?(o=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=a.wsize?(o.arraySet(a.window,t,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i<(r=a.wsize-a.wnext)&&(r=i),o.arraySet(a.window,t,n-i,r,a.wnext),(i-=r)?(o.arraySet(a.window,t,n-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=r(n.check,T,2,0),g=h=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",n.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",n.mode=30;break}if(g-=4,S=8+(15&(h>>>=4)),0===n.wbits)n.wbits=S;else if(S>n.wbits){e.msg="invalid window size",n.mode=30;break}n.dmax=1<>8&1),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=3;case 3:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>8&255,T[2]=h>>>16&255,T[3]=h>>>24&255,n.check=r(n.check,T,4,0)),g=h=0,n.mode=4;case 4:for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>8),512&n.flags&&(T[0]=255&h,T[1]=h>>>8&255,n.check=r(n.check,T,2,0)),g=h=0,n.mode=5;case 5:if(1024&n.flags){for(;g<16;){if(0===p)break e;p--,h+=d[f++]<>>8&255,n.check=r(n.check,T,2,0)),g=h=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&(p<(x=n.length)&&(x=p),x&&(n.head&&(S=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),o.arraySet(n.head.extra,d,f,x,S)),512&n.flags&&(n.check=r(n.check,d,x,f)),p-=x,f+=x,n.length-=x),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===p)break e;for(x=0;S=d[f+x++],n.head&&S&&n.length<65536&&(n.head.name+=String.fromCharCode(S)),S&&x>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=12;break;case 10:for(;g<32;){if(0===p)break e;p--,h+=d[f++]<>>=7&g,g-=7&g,n.mode=27;break}for(;g<3;){if(0===p)break e;p--,h+=d[f++]<>>=1)){case 0:n.mode=14;break;case 1:if(F(n),n.mode=20,6!==t)break;h>>>=2,g-=2;break e;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=30}h>>>=2,g-=2;break;case 14:for(h>>>=7&g,g-=7&g;g<32;){if(0===p)break e;p--,h+=d[f++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=30;break}if(n.length=65535&h,g=h=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(x=n.length){if(p>>=5,g-=5,n.ndist=1+(31&h),h>>>=5,g-=5,n.ncode=4+(15&h),h>>>=4,g-=4,286>>=3,g-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,M={bits:n.lenbits},P=c(0,n.lens,0,19,n.lencode,0,n.work,M),n.lenbits=M.bits,P){e.msg="invalid code lengths set",n.mode=30;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=A,g-=A,n.lens[n.have++]=B;else{if(16===B){for(O=A+2;g>>=A,g-=A,0===n.have){e.msg="invalid bit length repeat",n.mode=30;break}S=n.lens[n.have-1],x=3+(3&h),h>>>=2,g-=2}else if(17===B){for(O=A+3;g>>=A)),h>>>=3,g-=3}else{for(O=A+7;g>>=A)),h>>>=7,g-=7}if(n.have+x>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=30;break}for(;x--;)n.lens[n.have++]=S}}if(30===n.mode)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=30;break}if(n.lenbits=9,M={bits:n.lenbits},P=c(1,n.lens,0,n.nlen,n.lencode,0,n.work,M),n.lenbits=M.bits,P){e.msg="invalid literal/lengths set",n.mode=30;break}if(n.distbits=6,n.distcode=n.distdyn,M={bits:n.distbits},P=c(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,M),n.distbits=M.bits,P){e.msg="invalid distances set",n.mode=30;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(6<=p&&258<=b){e.next_out=u,e.avail_out=b,e.next_in=f,e.avail_in=p,n.hold=h,n.bits=g,a(e,y),u=e.next_out,m=e.output,b=e.avail_out,f=e.next_in,d=e.input,p=e.avail_in,h=n.hold,g=n.bits,12===n.mode&&(n.back=-1);break}for(n.back=0;E=(V=n.lencode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,n.length=B,0===E){n.mode=26;break}if(32&E){n.back=-1,n.mode=12;break}if(64&E){e.msg="invalid literal/length code",n.mode=30;break}n.extra=15&E,n.mode=22;case 22:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;E=(V=n.distcode[h&(1<>>16&255,B=65535&V,!((A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>D)])>>>16&255,B=65535&V,!(D+(A=V>>>24)<=g);){if(0===p)break e;p--,h+=d[f++]<>>=D,g-=D,n.back+=D}if(h>>>=A,g-=A,n.back+=A,64&E){e.msg="invalid distance code",n.mode=30;break}n.offset=B,n.extra=15&E,n.mode=24;case 24:if(n.extra){for(O=n.extra;g>>=n.extra,g-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=30;break}n.mode=25;case 25:if(0===b)break e;if(x=y-b,n.offset>x){if((x=n.offset-x)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=30;break}x>n.wnext?(x-=n.wnext,k=n.wsize-x):k=n.wnext-x,x>n.length&&(x=n.length),C=n.window}else C=m,k=u-n.offset,x=n.length;for(bF?(w=L[j+m[C]],y=M[O+m[C]]):(w=96,y=0),u=1<>I)+(p-=u)]=v<<24|w<<16|y|0,0!==p;);for(u=1<>=1;if(0!==u?(P&=u-1,P+=u):P=0,C++,0==--V[k]){if(k===E)break;k=t[n+m[C]]}if(B{var o={"./biliplus.svg":4050,"./lv6-plus.svg":732,"./settings-outline.svg":2613,"./widgets.svg":1522};function i(e){var t=r(e);return n(t)}function r(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}i.keys=function(){return Object.keys(o)},i.resolve=r,e.exports=i,i.id=5454},8195:e=>{"use strict";e.exports="data:font/woff2;base64,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"},8232:e=>{"use strict";e.exports='- `与 "解除 B 站区域限制" 互斥`: 若打开此选项, 在检测到 "解除 B 站区域限制" 脚本时, 将停止此脚本的加载以避免布局错乱.\n'},5340:e=>{"use strict";e.exports="TODO: en-US doc"},6284:e=>{"use strict";e.exports="- 文本颜色设为自动时, 背景色为主题色的元素, 会根据背景色的亮度自动决定使用黑色还是白色的文字.\n- 更新源决定在线仓库中功能的数据来源, 请注意更换更新源不会影响已安装的组件, 脚本本体的更新源与这个选项无关.\n- 文件下载模式决定多个文件下载时是打包为单个 zip 文件还是触发多个下载请求.\n- 开发者模式若开启:\n - 控制台中会统计各个功能的加载耗时.\n - 本地安装的功能将无视更新间隔期.\n - 允许输出 debug 级别的日志.\n - 报错的 Toast 将会显示整个堆栈信息.\n\n
    文件命名格式说明\n\n自定义文件命名格式, 各个功能在下载单个文件时, 会根据这个格式来命名\n可以使用的变量有:\n- `title`: 视频标题/直播间标题\n- `ep`: 选集标题\n- `aid`: AV 号\n- `bvid`: BV 号\n- `cid`: CID (每个视频的唯一编号, AV 号对应的视频可能有多集)\n- `lid`: 直播间号\n- `y`/`M`/`d`: 年/月/日\n- `h`/`m`/`s`/`ms`: 时/分/秒/毫秒\n\n默认的格式是 `[title][ - ep]`, 标题+选集标题, 当没有选集标题时则只有标题.\n\n变量要放在方括号里, 而方括号里的其他内容会在变量有效时出现. 比如格式如果写成 `[title] - [ep]`, 那么即使没有选集标题, 中间那个 ` - ` 也会出现在文件名里. 如果像默认那样放在方括号里, 没有选集标题时, ` - ` 也不会出现.\n\n例如, 想要标题 + AV 号 + 时间的格式, 可以设定为 `[title][ AVaid] [y]-[M]-[d] [h]-[m]-[s]`, 能够得到类似 `xxxx AV23333 2019-05-29 19-59-44` 的名字.\n
    \n\n
    批量命名格式说明\n\n自定义批量下载时的文件命名格式, 基本规则同 `文件命名格式`.\n新增的变量:\n- `n`: 数字, 表示第n个视频.\n\n
    \n"},3066:e=>{"use strict";e.exports=''},4050:e=>{"use strict";e.exports=''},732:e=>{"use strict";e.exports=''},2613:e=>{"use strict";e.exports=''},1522:e=>{"use strict";e.exports=''},113:e=>{"use strict";e.exports=JSON.parse('{"version":"2.8.11","author":"Grant Howard, Coulomb-G","copyright":"[year], Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)","license":"MIT","match":"*://*.bilibili.com/*","exclude":["*://api.bilibili.com/*","*://api.*.bilibili.com/*","*://*.bilibili.com/api/*","*://member.bilibili.com/studio/bs-editor/*","*://t.bilibili.com/h5/dynamic/specification","*://bbq.bilibili.com/*","*://message.bilibili.com/pages/nav/header_sync","*://s1.hdslb.com/bfs/seed/jinkela/short/cols/iframe.html","*://open-live.bilibili.com/*"],"run-at":"document-start","grant":["unsafeWindow","GM_getValue","GM_setValue","GM_deleteValue","GM_info","GM_xmlhttpRequest","GM_registerMenuCommand","GM_unregisterMenuCommand"],"connect":["raw.githubusercontent.com","github.com","[altCdn.host]","cn.bing.com","www.bing.com","translate.google.cn","translate.google.com","localhost","*"],"require":["[altCdn.library.lodash]"],"icon":"[altCdn.smallLogo]","icon64":"[altCdn.logo]"}')}},__webpack_module_cache__={},leafPrototypes,getProto;function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},getProto=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var n=Object.create(null);__webpack_require__.r(n);var o={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var i=2&t&&e;"object"==typeof i&&!~leafPrototypes.indexOf(i);i=getProto(i))Object.getOwnPropertyNames(i).forEach((t=>o[t]=()=>e[t]));return o.default=()=>e,__webpack_require__.d(n,o),n},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{"use strict";(async()=>{window.lodash=_,Object.defineProperty(window,"_",{get:()=>(console.warn("window._ is deprecated, please use window.lodash instead."),window.lodash)});const{initVue:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,1467));e();const{headLoaded:t,raiseLifeCycleEvent:n,LifeCycleEventTypes:o}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,7792));n(o.Start);const{none:i}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,3085)),{promiseLoadTrace:r}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,6165));await r("wait for ",(async()=>{await t(i)})),await r("compatibility patch",(async()=>{const{compatibilityPatch:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8793));e()}));const{coreApis:a,externalApis:c}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,8677));if(unsafeWindow.bangumi_area_limit_hack&&a.settings.getComponentSettings("compatibilities").options.disableOnBalh&&a.utils.matchUrlPattern("//www.bilibili.com/bangumi/play/"))return void console.log("BALH detected, Bilibili Evolved is disabled.");unsafeWindow.bilibiliEvolved=c,window.coreApis=a,window.dq=a.utils.dq,window.dqa=a.utils.dqa,window.de=a.utils.de,window.des=a.utils.des,window.dea=a.utils.dea,window.deai=a.utils.deai,window.none=a.utils.none,window.componentsTags=a.componentApis.component.componentsTags,window.console=a.utils.log.useScopedConsole({name:"Bilibili Evolved",color:"#00A0D8"}), // eslint-disable-next-line no-global-assign console=window.console;const{loadAllUserComponents:s}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,2267));await r("parse user components",s);const{preloadStyles:l,loadAllCustomStyles:d}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,7511));await r("load styles",l),n(o.StyleLoaded),await r("load components",(async()=>{const{loadAllComponents:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,2267));return Promise.all([e(),d()]).catch((e=>{console.error(e)}))})),n(o.ComponentsLoaded),await r("wind up",(async()=>{const e=document.createElement("link");e.rel="dns-prefetch",e.href="https://api.bilibili.com",document.head.insertAdjacentElement("afterbegin",e),requestIdleCallback((async()=>{const{getGeneralSettings:e}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,5402)),{devMode:t}=e();if(t){const{promiseLoadTime:e,promiseResolveTime:t}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,6165)),{logStats:n}=await Promise.resolve().then(__webpack_require__.bind(__webpack_require__,7035));n("init block",e),n("init resolve",t)}}))})),n(o.End)})()})()})(); \ No newline at end of file diff --git a/bb-evolved/doc/donate.md b/bb-evolved/doc/donate.md index 66c088c933..a8e21167a6 100644 --- a/bb-evolved/doc/donate.md +++ b/bb-evolved/doc/donate.md @@ -29,6 +29,8 @@ https://afdian.net/@the1812?tab=sponsor | 时间 | 用户名 | 单号后4位 | 金额 | | ------------------- | --------------------- | --------- | ------- | +| 2024.05.02 16:06:40 | C*6 | 9321 | ¥100.00 | +| 2024.05.02 01:51:05 | 匿名 | 7540 | ¥5.00 | | 2024.04.08 16:02:38 | 匿名 | 2455 | ¥5.00 | | 2024.03.31 16:36:20 | N*r | 3391 | ¥5.20 | | 2024.03.27 21:25:21 | M*g | 0180 | ¥10.00 | diff --git a/bb-evolved/doc/features/features.json b/bb-evolved/doc/features/features.json index 57acfdfe6a..b400ddca91 100644 --- a/bb-evolved/doc/features/features.json +++ b/bb-evolved/doc/features/features.json @@ -699,7 +699,7 @@ "type": "component", "name": "videoDefaultLocation", "displayName": "视频页默认定位", - "description": "打开视频/番剧时自动定位到指定位置\r\n\r\n
    \r\n\r\n位置:距离页面顶部的像素距离\\\r\n默认位置:打开视频时自动定位到此处\\\r\n位置测试:查看、调整当前页面所在位置\r\n\r\n当前版本限制默认位置的最大值为 4000。\\\r\n若有其他希望支持的页面,请提交反馈。\\\r\n脚本不会等待评论完全加载,因此较大的默认位置将无法正确定位。\r\n\r\n
    \r\n\r\n\r\n", + "description": "打开视频/番剧时自动定位到指定位置\r\n\r\n位置:距离页面顶部的像素距离\\\r\n默认位置:打开视频时自动定位到此处\\\r\n位置测试:查看、调整当前页面所在位置\r\n\r\n当前版本限制默认位置的最大值为 4000。\\\r\n若有其他希望支持的页面,请提交反馈。\\\r\n脚本不会等待评论完全加载,因此较大的默认位置将无法正确定位。\r\n", "fullRelativePath": "../../registry/dist/components/video/default-location.js", "fullAbsolutePath": "registry/dist/components/video/default-location.js" }, @@ -779,7 +779,7 @@ "type": "component", "name": "extendVideoSpeed", "displayName": "扩展倍速", - "description": "by [@JLoeve](https://github.com/LonelySteve)\n\n\n\n> 扩展视频播放器的倍速菜单项,可用于突破原有播放倍数的上限或下限.\n\n### 🔧 **选项**\n\n- `隐藏滚动条`:如果添加的倍速过多,倍速菜单将出现滚动条,在 Windows 下,若没有安装并启用「细滚动条」组件会显得比较挤,建议开启此选项隐藏滚动条.\n\n- `隐藏移除图标`:如果认为倍速右侧的移除倍速图标有些突兀,可以开启此选项隐藏.\n\n- `隐藏新增图标`:如果认为顶部的新增倍速图标有些突兀,可以开启此选项隐藏.\n\n### **新增倍速**\n\n开启组件后,在默认情况下,播放器的倍速菜单就会新增 2.5x 和 3.0x 两个倍速选项.\n\n如果需要添加更多倍速,只需将鼠标指针移到菜单顶部的新增图标上,图标将变成一个输入框,根据需要键入新的倍速值,或通过滚轮增减数值,或直接使用推荐的数值,回车确认即可.\n\n新增倍速的范围要求在 0.0625 到 16 之间,数量则不受限制.\n\n**不推荐设置超高倍速(>3.0x)**:原生播放器内部没有针对超高倍速进行优化,可能导致音画不同步、播放卡顿、声音嘈杂/消失等一系列问题.\n\n### **删除倍速**\n\n将鼠标指针移到**自定义**的倍速菜单项上,其右侧将会显示一个移除图标,单击即可删除相应的倍速.\n\n", + "description": "by [@JLoeve](https://github.com/LonelySteve)\n\n\n\n> 扩展视频播放器的倍速菜单项,可用于突破原有播放倍数的上限或下限.\n\n#### 🔧 **选项**\n\n- `隐藏滚动条`:如果添加的倍速过多,倍速菜单将出现滚动条,在 Windows 下,若没有安装并启用「细滚动条」组件会显得比较挤,建议开启此选项隐藏滚动条.\n\n- `隐藏移除图标`:如果认为倍速右侧的移除倍速图标有些突兀,可以开启此选项隐藏.\n\n- `隐藏新增图标`:如果认为顶部的新增倍速图标有些突兀,可以开启此选项隐藏.\n\n#### **新增倍速**\n\n开启组件后,在默认情况下,播放器的倍速菜单就会新增 2.5x 和 3.0x 两个倍速选项.\n\n如果需要添加更多倍速,只需将鼠标指针移到菜单顶部的新增图标上,图标将变成一个输入框,根据需要键入新的倍速值,或通过滚轮增减数值,或直接使用推荐的数值,回车确认即可.\n\n新增倍速的范围要求在 0.0625 到 16 之间,数量则不受限制.\n\n**不推荐设置超高倍速(>3.0x)**:原生播放器内部没有针对超高倍速进行优化,可能导致音画不同步、播放卡顿、声音嘈杂/消失等一系列问题.\n\n#### **删除倍速**\n\n将鼠标指针移到**自定义**的倍速菜单项上,其右侧将会显示一个移除图标,单击即可删除相应的倍速.\n\n", "fullRelativePath": "../../registry/dist/components/video/player/extend-speed.js", "fullAbsolutePath": "registry/dist/components/video/player/extend-speed.js" }, @@ -827,7 +827,7 @@ "type": "component", "name": "rememberVideoSpeed", "displayName": "记忆倍速", - "description": "by [@JLoeve](https://github.com/LonelySteve)\n\n\n\n> 提高视频播放器的倍速记忆体验,可实现跨页共享倍速,也可以按视频分别记忆倍速.\n\n### 🔧 **选项**\n\n- `全局记忆倍速值`:默认情况下,这是跨页共享的倍速值,如果启用「各视频分别记忆」,则作为从未独立记忆倍速视频的初始倍速值.\n- `固定全局倍速值`:默认情况下,全局倍速值将随着用户改变视频倍速而改变,打开此选项后,全局记忆倍速值不再受倍速调整的影响.\n- `各视频分别记忆`:打开此选项后,将按不同视频分别记忆倍速,对于从未被记忆过倍速的视频,将采用全局记忆倍速值,选项「固定全局倍速值」在此情况下强制生效.\n- `弹出还原倍速提示`:打开此选项后,每次成功还原倍速后都会弹出提示.\n\n### 🌈 **温馨提示**\n\n「扩展倍速」和倍速相关的快捷键插件已分离为单独的组件或插件.\n\n请根据自身需要:\n\n- 前往「组件」页面安装[「扩展倍速」]((branch, ownerOverride) => `https://${host}/${ownerOverride || owner}/Bilibili-Evolved/${branch}/`registry/dist/components/video/player/extend-speed.js)组件\n- 前往「插件」页面安装[「快捷键扩展 - 视频倍速」]((branch, ownerOverride) => `https://${host}/${ownerOverride || owner}/Bilibili-Evolved/${branch}/`registry/dist/plugins/video/player/speed.js)插件.\n\n*如果想要清除当前视频的记忆状态,需要安装「快捷键扩展 - 视频倍速」插件.*\n", + "description": "by [@JLoeve](https://github.com/LonelySteve)\n\n\n\n> 提高视频播放器的倍速记忆体验,可实现跨页共享倍速,也可以按视频分别记忆倍速.\n\n#### 🔧 **选项**\n\n- `全局记忆倍速值`:默认情况下,这是跨页共享的倍速值,如果启用「各视频分别记忆」,则作为从未独立记忆倍速视频的初始倍速值.\n- `固定全局倍速值`:默认情况下,全局倍速值将随着用户改变视频倍速而改变,打开此选项后,全局记忆倍速值不再受倍速调整的影响.\n- `各视频分别记忆`:打开此选项后,将按不同视频分别记忆倍速,对于从未被记忆过倍速的视频,将采用全局记忆倍速值,选项「固定全局倍速值」在此情况下强制生效.\n- `弹出还原倍速提示`:打开此选项后,每次成功还原倍速后都会弹出提示.\n\n#### 🌈 **温馨提示**\n\n「扩展倍速」和倍速相关的快捷键插件已分离为单独的组件或插件.\n\n请根据自身需要:\n\n- 前往「组件」页面安装[「扩展倍速」]((branch, ownerOverride) => `https://${host}/${ownerOverride || owner}/Bilibili-Evolved/${branch}/`registry/dist/components/video/player/extend-speed.js)组件\n- 前往「插件」页面安装[「快捷键扩展 - 视频倍速」]((branch, ownerOverride) => `https://${host}/${ownerOverride || owner}/Bilibili-Evolved/${branch}/`registry/dist/plugins/video/player/speed.js)插件.\n\n*如果想要清除当前视频的记忆状态,需要安装「快捷键扩展 - 视频倍速」插件.*\n", "fullRelativePath": "../../registry/dist/components/video/player/remember-speed.js", "fullAbsolutePath": "registry/dist/components/video/player/remember-speed.js" }, diff --git a/bb-evolved/doc/features/features.md b/bb-evolved/doc/features/features.md index fc6d4b363a..ce453e906b 100644 --- a/bb-evolved/doc/features/features.md +++ b/bb-evolved/doc/features/features.md @@ -927,8 +927,6 @@ by [@kdxcxs](https://github.com/kdxcxs) 打开视频/番剧时自动定位到指定位置 -
    - 位置:距离页面顶部的像素距离\ 默认位置:打开视频时自动定位到此处\ 位置测试:查看、调整当前页面所在位置 @@ -937,14 +935,6 @@ by [@kdxcxs](https://github.com/kdxcxs) 若有其他希望支持的页面,请提交反馈。\ 脚本不会等待评论完全加载,因此较大的默认位置将无法正确定位。 -
    - - - ### [下载视频](../../registry/dist/components/video/download.js) `downloadVideo` @@ -1045,7 +1035,7 @@ by [@JLoeve](https://github.com/LonelySteve) > 扩展视频播放器的倍速菜单项,可用于突破原有播放倍数的上限或下限. -### 🔧 **选项** +#### 🔧 **选项** - `隐藏滚动条`:如果添加的倍速过多,倍速菜单将出现滚动条,在 Windows 下,若没有安装并启用「细滚动条」组件会显得比较挤,建议开启此选项隐藏滚动条. @@ -1053,7 +1043,7 @@ by [@JLoeve](https://github.com/LonelySteve) - `隐藏新增图标`:如果认为顶部的新增倍速图标有些突兀,可以开启此选项隐藏. -### **新增倍速** +#### **新增倍速** 开启组件后,在默认情况下,播放器的倍速菜单就会新增 2.5x 和 3.0x 两个倍速选项. @@ -1063,7 +1053,7 @@ by [@JLoeve](https://github.com/LonelySteve) **不推荐设置超高倍速(>3.0x)**:原生播放器内部没有针对超高倍速进行优化,可能导致音画不同步、播放卡顿、声音嘈杂/消失等一系列问题. -### **删除倍速** +#### **删除倍速** 将鼠标指针移到**自定义**的倍速菜单项上,其右侧将会显示一个移除图标,单击即可删除相应的倍速. @@ -1133,14 +1123,14 @@ by [@JLoeve](https://github.com/LonelySteve) > 提高视频播放器的倍速记忆体验,可实现跨页共享倍速,也可以按视频分别记忆倍速. -### 🔧 **选项** +#### 🔧 **选项** - `全局记忆倍速值`:默认情况下,这是跨页共享的倍速值,如果启用「各视频分别记忆」,则作为从未独立记忆倍速视频的初始倍速值. - `固定全局倍速值`:默认情况下,全局倍速值将随着用户改变视频倍速而改变,打开此选项后,全局记忆倍速值不再受倍速调整的影响. - `各视频分别记忆`:打开此选项后,将按不同视频分别记忆倍速,对于从未被记忆过倍速的视频,将采用全局记忆倍速值,选项「固定全局倍速值」在此情况下强制生效. - `弹出还原倍速提示`:打开此选项后,每次成功还原倍速后都会弹出提示. -### 🌈 **温馨提示** +#### 🌈 **温馨提示** 「扩展倍速」和倍速相关的快捷键插件已分离为单独的组件或插件. diff --git a/bb-evolved/registry/dist/components/feeds/copy-link.js b/bb-evolved/registry/dist/components/feeds/copy-link.js index 2ac0492178..c6ef64afb9 100644 --- a/bb-evolved/registry/dist/components/feeds/copy-link.js +++ b/bb-evolved/registry/dist/components/feeds/copy-link.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/copy-link"]=t():e["feeds/copy-link"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={799:e=>{e.exports=coreApis.componentApis.feeds.api}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&r&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,n.d(i,s),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"copyFeedsLink",displayName:"复制动态链接",description:{"zh-CN":"开启后, 可在每条动态的菜单中选择复制链接."},entry:async()=>{const{forEachFeedsCard:e,addMenuItem:t}=await Promise.resolve().then(n.t.bind(n,799,23));e({added:e=>{t(e,{className:"copy-link",text:"复制链接",action:async()=>{await navigator.clipboard.writeText(`https://t.bilibili.com/${e.id}`)}})}})},urlInclude:t.feedsUrls,tags:[componentsTags.feeds,componentsTags.utils],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/copy-link"]=t():e["feeds/copy-link"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={799:e=>{e.exports=coreApis.componentApis.feeds.api}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"copyFeedsLink",displayName:"复制动态链接",description:{"zh-CN":"开启后, 可在每条动态的菜单中选择复制链接."},entry:async()=>{const{forEachFeedsCard:e,addMenuItem:t}=await Promise.resolve().then(n.t.bind(n,799,23));e({added:e=>{t(e,{className:"copy-link",text:"复制链接",action:async()=>{await navigator.clipboard.writeText(`https://t.bilibili.com/${e.id}`)}})}})},urlInclude:t.feedsUrls,tags:[componentsTags.feeds,componentsTags.utils],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/disable-details.js b/bb-evolved/registry/dist/components/feeds/disable-details.js index ee7d7c2a11..9951519dc7 100644 --- a/bb-evolved/registry/dist/components/feeds/disable-details.js +++ b/bb-evolved/registry/dist/components/feeds/disable-details.js @@ -6,4 +6,4 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(o)for(var i=0;i{var o=n(915);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},170:(e,t,n)=>{var o=n(116);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},356:e=>{"use strict";e.exports=coreApis.style}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>d});const e=coreApis.componentApis.define;var t=r(799);const n=coreApis.utils.urls;let o=!0;const a="disable-feeds-details-style",s=async()=>{const{addImportantStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23)),{default:t}=await Promise.resolve().then(r.t.bind(r,770,23));e(t,a)},d=(0,e.defineComponentMetadata)({name:"disableFeedsDetails",displayName:"禁止跳转动态详情",tags:[componentsTags.feeds],urlInclude:n.feedsUrls,description:{"zh-CN":"禁止动态点击后跳转详情页, 方便选择其中的文字."},entry:async()=>{const{addImportantStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23)),{forEachFeedsCard:n}=await Promise.resolve().then(r.t.bind(r,799,23)),{default:i}=await Promise.resolve().then(r.t.bind(r,170,23));e(i,"disable-feeds-details-init-style"),s();n({added:e=>{const{element:n}=e;n.addEventListener("click",(e=>{if(e.ctrlKey||!o)return;const t=dqa(n,'.content, .bili-dyn-content [data-module="desc"] .bili-rich-text, .dyn-card-opus__summary'),r=e.target;if(r.hasAttribute("click-title"))return;if(r.hasAttribute("data-pics"))return;if(["bili-rich-text__action","bili-rich-text-topic","bili-rich-text-module","bili-rich-text-link"].some((e=>r.classList.contains(e))))return;dqa(n,".im-popup").some((e=>e.contains(r)))||t.some((e=>e===r||e.contains(r)))&&e.stopImmediatePropagation()}),{capture:!0});const r=dq(n,".post-content, .bili-dyn-content");if(!r)return;if(![".video-container",".bangumi-container",".media-list",".article-container"].some((e=>dq(r,e)))&&!dq(r,".details")&&(r.classList.contains("repost")||e.type===t.feedsCardTypes.repost)){const e=dq(r,".content, .bili-dyn-content__orig__desc, .dyn-card-opus__summary");if(!e)return;const t=document.createElement("div");t.classList.add("details"),t.setAttribute("click-title","详情"),t.innerHTML='\n 详情\n ',e.insertAdjacentElement("beforeend",t)}}})},unload:()=>{document.getElementById(a)?.remove(),o=!1},reload:()=>{s(),o=!0},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var o=n(915);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},170:(e,t,n)=>{var o=n(116);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},356:e=>{"use strict";e.exports=coreApis.style}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>d});const e=coreApis.componentApis.define;var t=r(799);const n=coreApis.utils.urls;let o=!0;const a="disable-feeds-details-style",s=async()=>{const{addImportantStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23)),{default:t}=await Promise.resolve().then(r.t.bind(r,770,23));e(t,a)},d=(0,e.defineComponentMetadata)({name:"disableFeedsDetails",displayName:"禁止跳转动态详情",tags:[componentsTags.feeds],urlInclude:n.feedsUrls,description:{"zh-CN":"禁止动态点击后跳转详情页, 方便选择其中的文字."},entry:async()=>{const{addImportantStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23)),{forEachFeedsCard:n}=await Promise.resolve().then(r.t.bind(r,799,23)),{default:i}=await Promise.resolve().then(r.t.bind(r,170,23));e(i,"disable-feeds-details-init-style"),s();n({added:e=>{const{element:n}=e;n.addEventListener("click",(e=>{if(e.ctrlKey||!o)return;const t=dqa(n,'.content, .bili-dyn-content [data-module="desc"] .bili-rich-text, .dyn-card-opus__summary'),r=e.target;if(r.hasAttribute("click-title"))return;if(r.hasAttribute("data-pics"))return;if(["bili-rich-text__action","bili-rich-text-topic","bili-rich-text-module","bili-rich-text-link"].some((e=>r.classList.contains(e))))return;dqa(n,".im-popup").some((e=>e.contains(r)))||t.some((e=>e===r||e.contains(r)))&&e.stopImmediatePropagation()}),{capture:!0});const r=dq(n,".post-content, .bili-dyn-content");if(!r)return;if(![".video-container",".bangumi-container",".media-list",".article-container"].some((e=>dq(r,e)))&&!dq(r,".details")&&(r.classList.contains("repost")||e.type===t.feedsCardTypes.repost)){const e=dq(r,".content, .bili-dyn-content__orig__desc, .dyn-card-opus__summary");if(!e)return;const t=document.createElement("div");t.classList.add("details"),t.setAttribute("click-title","详情"),t.innerHTML='\n 详情\n ',e.insertAdjacentElement("beforeend",t)}}})},unload:()=>{document.getElementById(a)?.remove(),o=!1},reload:()=>{s(),o=!0},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/extend-live.js b/bb-evolved/registry/dist/components/feeds/extend-live.js index 4f8f508110..b87f3f2ecd 100644 --- a/bb-evolved/registry/dist/components/feeds/extend-live.js +++ b/bb-evolved/registry/dist/components/feeds/extend-live.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(i)for(var r=0;r{"use strict";var i,o=function(){return void 0===i&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{var i=n(735);i&&i.__esModule&&(i=i.default),e.exports="string"==typeof i?i:i.toString()},14:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-live-list"},[t("div",{staticClass:"be-live-list-header"},[t("div",{staticClass:"be-live-list-title"},[e._v("\n 正在直播\n "),t("div",{staticClass:"be-live-list-count"},[e._v("("+e._s(e.items.length)+")")])]),e._v(" "),t("div",{staticClass:"be-live-list-actions"},[e.loaded?t("div",{staticClass:"be-live-list-refresh",attrs:{title:"刷新"},on:{click:e.refresh}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:16}})],1):e._e(),e._v(" "),t("a",{staticClass:"be-live-list-more",attrs:{target:"_blank",href:"https://link.bilibili.com/p/center/index#/user-center/follow/1"}},[e._v("\n 更多\n "),t("VIcon",{attrs:{icon:"right-arrow",size:14}})],1)])]),e._v(" "),t("div",{staticClass:"be-live-list-search"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{attrs:{placeholder:"搜索"},model:{value:e.keyword,callback:function(t){e.keyword=t},expression:"keyword"}})],1),e._v(" "),t("div",{staticClass:"be-live-list-content"},[e.loaded?e._e():t("VLoading"),e._v(" "),e.loaded&&0===e.filteredItems.length?t("VEmpty"):e._e(),e._v(" "),e._l(e.filteredItems,(function(n){return t("a",{key:n.roomid,staticClass:"be-live-list-item",attrs:{target:"_blank",href:n.link}},[t("div",{staticClass:"be-live-list-item-avatar"},[t("DpiImage",{attrs:{src:n.face,alt:n.title,size:36}})],1),e._v(" "),t("div",{staticClass:"be-live-list-item-info"},[t("div",{staticClass:"be-live-list-item-title",attrs:{title:n.title}},[e._v("\n "+e._s(e.decodeTitle(n.title))+"\n ")]),e._v(" "),t("div",{staticClass:"be-live-list-item-user",attrs:{title:n.uname}},[e._v("\n "+e._s(n.uname)+"\n ")])])])}))],2)])};i._withStripped=!0;const o=coreApis.ui,r=coreApis.ajax,s=Vue.extend({components:{VIcon:o.VIcon,TextBox:o.TextBox,DpiImage:o.DpiImage,VEmpty:o.VEmpty,VLoading:o.VLoading},data:()=>({items:[],loaded:!1,keyword:""}),computed:{filteredItems(){return this.keyword?this.items.filter((e=>{const t=t=>e[t].toString().toLowerCase().includes(this.keyword.toLowerCase());return t("title")||t("uname")||t("roomid")||t("uid")})):this.items}},created(){this.refresh()},methods:{decodeTitle:e=>{const t=document.createElement("textarea");return t.innerHTML=e,t.value},async refresh(){try{this.items=[],this.loaded=!1;const[,e]=(0,r.responsiveGetPages)({api:e=>(0,r.getJsonWithCredentials)(`https://api.live.bilibili.com/xlive/web-ucenter/v1/xfetter/GetWebList?page=${e}`),getList:e=>lodash.get(e,"data.list",[]).map((e=>{const{face:t,uname:n,title:i,room_id:o,cover_from_user:r,online:s,uid:a,link:l}=e;return{cover:t,face:t,uname:n,title:i,roomid:o,pic:r,online:s,uid:a,link:l}})),getTotal:e=>lodash.get(e,"data.count",0)}),[t,n]=await Promise.all([e,this.fetchRecommendItems()]);this.items=this.sortByRecommend(t,n)}finally{this.loaded=!0}},fetchRecommendItems:async()=>(await(0,r.getJsonWithCredentials)("https://api.bilibili.com/x/polymer/web-dynamic/v1/portal")).data.live_users.items.map((e=>{const{jump_url:t,room_id:n,face:i,title:o,uname:r,mid:s}=e;return{cover:i,face:i,uname:r,title:o,roomid:n,pic:"",online:0,uid:s,link:t}})),sortByRecommend(e,t){const n=t.map((e=>e.roomid)),i=e.filter((e=>!n.includes(e.roomid)));return lodash.concat(t,i)}}});var a=n(332),l=n.n(a),c=n(132),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;var u=function(e,t,n,i,o,r,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):o&&(l=a?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(s,i,[],!1,null,null,null);const f=u.exports},405:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=405,e.exports=t},478:e=>{"use strict";e.exports="替换动态的 `正在直播` 面板, 能够显示超过 10 个的直播间.\n"}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var r=Object.create(null);o.r(r);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,o.d(r,s),r},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,n=coreApis.spinQuery,i=coreApis.utils,s=coreApis.utils.log,a=(0,e.defineComponentMetadata)({name:"extendFeedsLive",displayName:"直播信息扩充",entry:(0,t.styledComponentEntry)((()=>Promise.resolve().then(o.t.bind(o,399,23))),(async()=>{const e=(0,s.useScopedConsole)("extendFeedsLive"),t=await(0,n.select)(".bili-dyn-home--member aside.left");let r;t||e.error("aside not found");if((a=t.childNodes[t.childNodes.length-1]).nodeType!==Node.COMMENT_NODE&&a instanceof HTMLElement&&"section"===a.tagName.toLowerCase()&&a.classList.contains("sticky"))r=await(0,n.select)((()=>dq(t,"section.sticky")));else{const e=document.createElement("section");e.classList.add("sticky"),t.appendChild(e),r=e}var a;r||e.error("container not found");const l=await Promise.resolve().then(o.bind(o,14)).then((e=>e.default)),c=(0,i.mountVueComponent)(l);r.appendChild(c.$el)})),tags:[componentsTags.feeds,componentsTags.live],urlInclude:[/^https:\/\/t\.bilibili\.com\/$/],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=o(405);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,478,17)).then((e=>e.default))}})()})})(),r=r.component})())); \ No newline at end of file +i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{var i=n(735);i&&i.__esModule&&(i=i.default),e.exports="string"==typeof i?i:i.toString()},14:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-live-list"},[t("div",{staticClass:"be-live-list-header"},[t("div",{staticClass:"be-live-list-title"},[e._v("\n 正在直播\n "),t("div",{staticClass:"be-live-list-count"},[e._v("("+e._s(e.items.length)+")")])]),e._v(" "),t("div",{staticClass:"be-live-list-actions"},[e.loaded?t("div",{staticClass:"be-live-list-refresh",attrs:{title:"刷新"},on:{click:e.refresh}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:16}})],1):e._e(),e._v(" "),t("a",{staticClass:"be-live-list-more",attrs:{target:"_blank",href:"https://link.bilibili.com/p/center/index#/user-center/follow/1"}},[e._v("\n 更多\n "),t("VIcon",{attrs:{icon:"right-arrow",size:14}})],1)])]),e._v(" "),t("div",{staticClass:"be-live-list-search"},[t("VIcon",{attrs:{icon:"search",size:18}}),e._v(" "),t("TextBox",{attrs:{placeholder:"搜索"},model:{value:e.keyword,callback:function(t){e.keyword=t},expression:"keyword"}})],1),e._v(" "),t("div",{staticClass:"be-live-list-content"},[e.loaded?e._e():t("VLoading"),e._v(" "),e.loaded&&0===e.filteredItems.length?t("VEmpty"):e._e(),e._v(" "),e._l(e.filteredItems,(function(n){return t("a",{key:n.roomid,staticClass:"be-live-list-item",attrs:{target:"_blank",href:n.link}},[t("div",{staticClass:"be-live-list-item-avatar"},[t("DpiImage",{attrs:{src:n.face,alt:n.title,size:36}})],1),e._v(" "),t("div",{staticClass:"be-live-list-item-info"},[t("div",{staticClass:"be-live-list-item-title",attrs:{title:n.title}},[e._v("\n "+e._s(e.decodeTitle(n.title))+"\n ")]),e._v(" "),t("div",{staticClass:"be-live-list-item-user",attrs:{title:n.uname}},[e._v("\n "+e._s(n.uname)+"\n ")])])])}))],2)])};i._withStripped=!0;const o=coreApis.ui,r=coreApis.ajax,s=Vue.extend({components:{VIcon:o.VIcon,TextBox:o.TextBox,DpiImage:o.DpiImage,VEmpty:o.VEmpty,VLoading:o.VLoading},data:()=>({items:[],loaded:!1,keyword:""}),computed:{filteredItems(){return this.keyword?this.items.filter((e=>{const t=t=>e[t].toString().toLowerCase().includes(this.keyword.toLowerCase());return t("title")||t("uname")||t("roomid")||t("uid")})):this.items}},created(){this.refresh()},methods:{decodeTitle:e=>{const t=document.createElement("textarea");return t.innerHTML=e,t.value},async refresh(){try{this.items=[],this.loaded=!1;const[,e]=(0,r.responsiveGetPages)({api:e=>(0,r.getJsonWithCredentials)(`https://api.live.bilibili.com/xlive/web-ucenter/v1/xfetter/GetWebList?page=${e}`),getList:e=>lodash.get(e,"data.list",[]).map((e=>{const{face:t,uname:n,title:i,room_id:o,cover_from_user:r,online:s,uid:a,link:l}=e;return{cover:t,face:t,uname:n,title:i,roomid:o,pic:r,online:s,uid:a,link:l}})),getTotal:e=>lodash.get(e,"data.count",0)}),[t,n]=await Promise.all([e,this.fetchRecommendItems()]);this.items=this.sortByRecommend(t,n)}finally{this.loaded=!0}},fetchRecommendItems:async()=>(await(0,r.getJsonWithCredentials)("https://api.bilibili.com/x/polymer/web-dynamic/v1/portal")).data.live_users.items.map((e=>{const{jump_url:t,room_id:n,face:i,title:o,uname:r,mid:s}=e;return{cover:i,face:i,uname:r,title:o,roomid:n,pic:"",online:0,uid:s,link:t}})),sortByRecommend(e,t){const n=t.map((e=>e.roomid)),i=e.filter((e=>!n.includes(e.roomid)));return lodash.concat(t,i)}}});var a=n(332),l=n.n(a),c=n(132),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;var u=function(e,t,n,i,o,r,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):o&&(l=a?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(s,i,[],!1,null,null,null);const f=u.exports},405:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=405,e.exports=t},478:e=>{"use strict";e.exports="替换动态的 `正在直播` 面板, 能够显示超过 10 个的直播间.\n"}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var r=Object.create(null);o.r(r);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,o.d(r,s),r},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,n=coreApis.spinQuery,i=coreApis.utils,s=coreApis.utils.log,a=(0,e.defineComponentMetadata)({name:"extendFeedsLive",displayName:"直播信息扩充",entry:(0,t.styledComponentEntry)((()=>Promise.resolve().then(o.t.bind(o,399,23))),(async()=>{const e=(0,s.useScopedConsole)("extendFeedsLive"),t=await(0,n.select)(".bili-dyn-home--member aside.left");let r;t||e.error("aside not found");if((a=t.childNodes[t.childNodes.length-1]).nodeType!==Node.COMMENT_NODE&&a instanceof HTMLElement&&"section"===a.tagName.toLowerCase()&&a.classList.contains("sticky"))r=await(0,n.select)((()=>dq(t,"section.sticky")));else{const e=document.createElement("section");e.classList.add("sticky"),t.appendChild(e),r=e}var a;r||e.error("container not found");const l=await Promise.resolve().then(o.bind(o,14)).then((e=>e.default)),c=(0,i.mountVueComponent)(l);r.appendChild(c.$el)})),tags:[componentsTags.feeds,componentsTags.live],urlInclude:[/^https:\/\/t\.bilibili\.com\/$/],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=o(405);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,478,17)).then((e=>e.default))}})()})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/filter.js b/bb-evolved/registry/dist/components/feeds/filter.js index 8e863a1a56..7545eee7c7 100644 --- a/bb-evolved/registry/dist/components/feeds/filter.js +++ b/bb-evolved/registry/dist/components/feeds/filter.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var s={};if(i)for(var l=0;l{"use strict";var i,s=function(){return void 0===i&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -i=Boolean(window&&document&&document.all&&!window.atob)),i},l=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),r=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>_});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"feeds-filter",class:{collapse:e.collapse}},[t("div",{staticClass:"feeds-filter-header",on:{click:function(t){e.collapse=!e.collapse}}},[t("h1",[e._v("动态过滤")]),e._v(" "),t("VIcon",{attrs:{icon:"mdi-chevron-up"}})],1),e._v(" "),t("h2",[e._v("类型")]),e._v(" "),t("div",{staticClass:"filter-types"},e._l(e.allTypes,(function([e,n]){return t("FilterTypeSwitch",{key:n.id,attrs:{name:e,type:n}})})),1),e._v(" "),t("h2",[e._v("关键词")]),e._v(" "),t("div",{staticClass:"filter-patterns"},e._l(e.patterns,(function(n){return t("div",{key:n,staticClass:"pattern"},[e._v("\n "+e._s(n)+"\n "),t("VIcon",{attrs:{title:"删除",icon:"mdi-trash-can-outline",size:16},nativeOn:{click:function(t){return e.deletePattern(n)}}})],1)})),0),e._v(" "),t("div",{staticClass:"add-pattern"},[t("TextBox",{attrs:{placeholder:"支持正则表达式 /^xxx$/",type:"text"},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.addPattern(e.newPattern)}},model:{value:e.newPattern,callback:function(t){e.newPattern=t},expression:"newPattern"}}),e._v(" "),t("VButton",{attrs:{type:"transparent"},nativeOn:{click:function(t){return e.addPattern(e.newPattern)}}},[t("VIcon",{attrs:{title:"添加",icon:"mdi-plus",size:18}})],1)],1),e._v(" "),t("h2",[e._v("板块")]),e._v(" "),t("div",{staticClass:"filter-side-card"},e._l(Object.entries(e.allSideCards),(function([n,i]){return t("div",{key:n,staticClass:"filter-side-card-switch feeds-filter-switch",on:{click:function(t){return e.toggleBlockSide(n)}}},[t("label",{class:{disabled:e.sideDisabled(n)}},[t("span",{staticClass:"name",class:{disabled:e.sideDisabled(n)}},[e._v(e._s(i.displayName))]),e._v(" "),t("VIcon",{staticClass:"disabled",attrs:{size:16,icon:"mdi-cancel"}}),e._v(" "),t("VIcon",{attrs:{size:16,icon:"mdi-check"}})],1)])})),0)])};i._withStripped=!0;var s=n(799),l=n(986),r=n(200);const a=coreApis.observer;var d=n(648),o=n(84);const{options:f}=(0,l.getComponentSettings)("feedsFilter"),c={0:{className:"profile",displayName:"个人资料"},1:{className:"following-tags",displayName:"话题"},2:{className:"notice",displayName:"公告栏"},3:{className:"live",displayName:"正在直播"},5:{className:"most-viewed",displayName:"关注栏"},6:{className:"compose",displayName:"发布动态"}};let p;const b="feeds-filter-side-block-",y=Vue.extend({components:{FilterTypeSwitch:()=>Promise.resolve().then(n.bind(n,50)),VIcon:d.VIcon,TextBox:d.TextBox,VButton:d.VButton},data:()=>({allTypes:[],patterns:[...f.patterns],newPattern:"",allSideCards:c,blockSideCards:[...f.sideCards],collapse:!0}),watch:{patterns(){f.patterns=this.patterns,p&&p.cards.forEach((e=>this.updateCard(lodash.clone(e))))}},async mounted(){this.updateBlockSide();const e=await(0,r.select)(".feed-card .tab-bar, .bili-dyn-list-tabs__list");if(!e)return void console.error("tabBar not found");document.body.classList.add("enable-feeds-filter");if(this.allTypes=Object.entries(s.feedsCardTypes).concat(Object.entries({"self-repost":{id:-1,name:"自转发"}})).filter((e=>{let[,t]=e;return t.id<=2048})).map((e=>{let[t,n]=e;return[t,lodash.clone(n)]})),p=await(0,s.forEachFeedsCard)({added:e=>{this.updateCard(lodash.clone(e))}}),"v1"===p.managerType){const t=e.querySelector(".tab:nth-child(1) .tab-text");(0,a.attributes)(t,(()=>{document.body.classList.toggle("by-type",!t.classList.contains("selected"))}))}if("v2"===p.managerType){const e=await(0,r.select)(".bili-dyn-home--member main"),t=()=>Boolean(dq(".bili-dyn-list-tabs__item:first-child.active")),n=()=>Boolean(dq(".bili-dyn-up-list__item:first-child.active"));(0,a.attributesSubtree)(e,(()=>{document.body.classList.toggle("by-type",n()&&!t())}))}},methods:{updateCard(e){const t={...e};e.type===s.feedsCardTypes.repost&&(t.text+=`\n${e.repostText}`);f.patterns.some((e=>(0,o.w)(e,t)))?e.element.classList.add("pattern-block"):e.element.classList.remove("pattern-block")},deletePattern(e){const t=f.patterns.indexOf(e);-1!==t&&this.patterns.splice(t,1)},addPattern(e){e&&!this.patterns.includes(e)&&this.patterns.push(e),this.newPattern=""},updateBlockSide(){Object.entries(c).forEach((e=>{let[t,n]=e;const i=b+n.className;document.body.classList[this.blockSideCards.includes(t)?"add":"remove"](i)}))},toggleBlockSide(e){const t=this.blockSideCards.indexOf(e),n=c[e];-1!==t?(this.blockSideCards.splice(t,1),document.body.classList.remove(b+n.className)):(this.blockSideCards.push(e),document.body.classList.add(b+n.className)),f.sideCards=this.blockSideCards},sideDisabled(e){return this.blockSideCards.includes(e)}}}),u=y;var m=n(332),h=n.n(m),v=n(430),g=n.n(v),x={insert:"head",singleton:!1};h()(g(),x);g().locals;const _=(0,n(893).Z)(u,i,[],!1,null,null,null).exports},50:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"filter-type-switch feeds-filter-switch"},[t("label",{class:{disabled:e.disabled}},[t("span",{staticClass:"name",class:{disabled:e.disabled}},[e._v(e._s(e.type.name))]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.disabled,expression:"disabled"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.disabled)?e._i(e.disabled,null)>-1:e.disabled},on:{change:function(t){var n=e.disabled,i=t.target,s=!!i.checked;if(Array.isArray(n)){var l=e._i(n,null);i.checked?l<0&&(e.disabled=n.concat([null])):l>-1&&(e.disabled=n.slice(0,l).concat(n.slice(l+1)))}else e.disabled=s}}}),e._v(" "),e.disabled?t("VIcon",{staticClass:"disabled",attrs:{size:16,icon:"mdi-cancel"}}):t("VIcon",{attrs:{size:16,icon:"mdi-check"}})],1)])};i._withStripped=!0;var s=n(986),l=n(648);const{options:r}=(0,s.getComponentSettings)("feedsFilter"),a=Vue.extend({components:{VIcon:l.VIcon},props:{name:{type:String,required:!0},type:{type:Object,required:!0}},data(){const e=this.type.id>=0?"types":"specialTypes";return{disabled:r[e].includes(this.type.id),optionKey:e}},watch:{disabled(e){this.setFilter(e)}},created(){this.setFilter(this.disabled,!1)},methods:{setFilter(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(document.body.classList[e?"add":"remove"](`feeds-filter-block-${this.name}`),!t)return;const n=this.optionKey;if(e)r[n].push(this.type.id);else{const e=r[n].indexOf(this.type.id);-1!==e&&r[n].splice(e,1)}}}});var d=n(332),o=n.n(d),f=n(388),c=n.n(f),p={insert:"head",singleton:!1};o()(c(),p);c().locals;const b=(0,n(893).Z)(a,i,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function i(e,t,n,i,s,l,r,a){var d,o="function"==typeof e?e.options:e;if(t&&(o.render=t,o.staticRenderFns=n,o._compiled=!0),i&&(o.functional=!0),l&&(o._scopeId="data-v-"+l),r?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},o._ssrRegister=d):s&&(d=a?function(){s.call(this,(o.functional?this.parent:this).$root.$options.shadowRoot)}:s),d)if(o.functional){o._injectStyles=d;var f=o.render;o.render=function(e,t){return d.call(t),f(e,t)}}else{var c=o.beforeCreate;o.beforeCreate=c?[].concat(c,d):[d]}return{exports:e,options:o}}n.d(t,{Z:()=>i})},156:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=156,e.exports=t},814:e=>{"use strict";e.exports="按照类型或者关键词过滤动态首页的内容, 也可以移除动态页的一些侧边卡片. 详细设置请前往[动态首页](https://t.bilibili.com/)查看.\n"},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},986:e=>{"use strict";e.exports=coreApis.settings},200:e=>{"use strict";e.exports=coreApis.spinQuery},648:e=>{"use strict";e.exports=coreApis.ui},605:e=>{"use strict";e.exports=coreApis.utils}},i={};function s(e){var t=i[e];if(void 0!==t)return t.exports;var l=i[e]={id:e,exports:{}};return n[e](l,l.exports,s),l.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var l=Object.create(null);s.r(l);var r={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>r[e]=()=>n[e]));return r.default=()=>n,s.d(l,r),l},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";s.d(l,{component:()=>o});const e=coreApis.componentApis.define;var t=s(799),n=s(986),i=s(84);const r=[{username:"title",text:"epTitle"},{username:"upName",text:["title","dynamic"]},{username:["username","repostUsername"],text:["text","repostText"]}],a={name:"feeds.contentFilters.patterns",displayName:"动态关键词过滤",setup:e=>{let{addData:t}=e;t("feeds.contentFilters",(e=>{e.push({filter:e=>{const{patterns:t}=(0,n.getComponentSettings)("feedsFilter").options;return e.filter((e=>{const n=r.find((t=>Object.values(t).every((t=>Array.isArray(t)?t.some((t=>t in e)):t in e)))),s=Object.fromEntries(Object.entries(n).map((t=>{let[n,i]=t;return Array.isArray(i)?[n,i.map((t=>e[t]??"")).join("\n").trim()]:[n,e[i].trim()]})));return t.every((e=>!(0,i.w)(e,s)))}))}})}))}},d=(0,e.defineOptionsMetadata)({types:{defaultValue:[],displayName:"过滤动态类型",hidden:!0},patterns:{defaultValue:[],displayName:"过滤关键词",hidden:!0},sideCards:{defaultValue:[],displayName:"过滤侧边栏",hidden:!0},specialTypes:{defaultValue:[],displayName:"过滤特殊动态类型",hidden:!0}}),o=(0,e.defineComponentMetadata)({name:"feedsFilter",displayName:"动态过滤器",entry:async()=>{const{select:e}=await Promise.resolve().then(s.t.bind(s,200,23));let n;if("v2"===t.feedsCardsManager.managerType){const t=await e(".bili-dyn-home--member aside.left"),i=document.createElement("section");i.classList.add("feeds-filter-section"),t.insertAdjacentElement("afterbegin",i),n=i}else n=await e(".home-container .left-panel");if(null===n)return;const i=await Promise.resolve().then(s.bind(s,536)),{mountVueComponent:l}=await Promise.resolve().then(s.t.bind(s,605,23));n.insertAdjacentElement("afterbegin",l(i).$el)},tags:[componentsTags.feeds],options:d,reload:()=>document.body.classList.remove("disable-feeds-filter"),unload:()=>document.body.classList.add("disable-feeds-filter"),urlInclude:[/^https:\/\/t\.bilibili\.com\/$/],plugin:a,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=s(156);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(s.t.bind(s,814,17)).then((e=>e.default))}})()})})(),l=l.component})())); \ No newline at end of file +i=Boolean(window&&document&&document.all&&!window.atob)),i},l=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),r=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>_});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"feeds-filter",class:{collapse:e.collapse}},[t("div",{staticClass:"feeds-filter-header",on:{click:function(t){e.collapse=!e.collapse}}},[t("h1",[e._v("动态过滤")]),e._v(" "),t("VIcon",{attrs:{icon:"mdi-chevron-up"}})],1),e._v(" "),t("h2",[e._v("类型")]),e._v(" "),t("div",{staticClass:"filter-types"},e._l(e.allTypes,(function([e,n]){return t("FilterTypeSwitch",{key:n.id,attrs:{name:e,type:n}})})),1),e._v(" "),t("h2",[e._v("关键词")]),e._v(" "),t("div",{staticClass:"filter-patterns"},e._l(e.patterns,(function(n){return t("div",{key:n,staticClass:"pattern"},[e._v("\n "+e._s(n)+"\n "),t("VIcon",{attrs:{title:"删除",icon:"mdi-trash-can-outline",size:16},nativeOn:{click:function(t){return e.deletePattern(n)}}})],1)})),0),e._v(" "),t("div",{staticClass:"add-pattern"},[t("TextBox",{attrs:{placeholder:"支持正则表达式 /^xxx$/",type:"text"},on:{keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.addPattern(e.newPattern)}},model:{value:e.newPattern,callback:function(t){e.newPattern=t},expression:"newPattern"}}),e._v(" "),t("VButton",{attrs:{type:"transparent"},nativeOn:{click:function(t){return e.addPattern(e.newPattern)}}},[t("VIcon",{attrs:{title:"添加",icon:"mdi-plus",size:18}})],1)],1),e._v(" "),t("h2",[e._v("板块")]),e._v(" "),t("div",{staticClass:"filter-side-card"},e._l(Object.entries(e.allSideCards),(function([n,i]){return t("div",{key:n,staticClass:"filter-side-card-switch feeds-filter-switch",on:{click:function(t){return e.toggleBlockSide(n)}}},[t("label",{class:{disabled:e.sideDisabled(n)}},[t("span",{staticClass:"name",class:{disabled:e.sideDisabled(n)}},[e._v(e._s(i.displayName))]),e._v(" "),t("VIcon",{staticClass:"disabled",attrs:{size:16,icon:"mdi-cancel"}}),e._v(" "),t("VIcon",{attrs:{size:16,icon:"mdi-check"}})],1)])})),0)])};i._withStripped=!0;var s=n(799),l=n(986),r=n(200);const a=coreApis.observer;var d=n(648),o=n(84);const{options:f}=(0,l.getComponentSettings)("feedsFilter"),c={0:{className:"profile",displayName:"个人资料"},1:{className:"following-tags",displayName:"话题"},2:{className:"notice",displayName:"公告栏"},3:{className:"live",displayName:"正在直播"},5:{className:"most-viewed",displayName:"关注栏"},6:{className:"compose",displayName:"发布动态"}};let p;const b="feeds-filter-side-block-",y=Vue.extend({components:{FilterTypeSwitch:()=>Promise.resolve().then(n.bind(n,50)),VIcon:d.VIcon,TextBox:d.TextBox,VButton:d.VButton},data:()=>({allTypes:[],patterns:[...f.patterns],newPattern:"",allSideCards:c,blockSideCards:[...f.sideCards],collapse:!0}),watch:{patterns(){f.patterns=this.patterns,p&&p.cards.forEach((e=>this.updateCard(lodash.clone(e))))}},async mounted(){this.updateBlockSide();const e=await(0,r.select)(".feed-card .tab-bar, .bili-dyn-list-tabs__list");if(!e)return void console.error("tabBar not found");document.body.classList.add("enable-feeds-filter");if(this.allTypes=Object.entries(s.feedsCardTypes).concat(Object.entries({"self-repost":{id:-1,name:"自转发"}})).filter((e=>{let[,t]=e;return t.id<=2048})).map((e=>{let[t,n]=e;return[t,lodash.clone(n)]})),p=await(0,s.forEachFeedsCard)({added:e=>{this.updateCard(lodash.clone(e))}}),"v1"===p.managerType){const t=e.querySelector(".tab:nth-child(1) .tab-text");(0,a.attributes)(t,(()=>{document.body.classList.toggle("by-type",!t.classList.contains("selected"))}))}if("v2"===p.managerType){const e=await(0,r.select)(".bili-dyn-home--member main"),t=()=>Boolean(dq(".bili-dyn-list-tabs__item:first-child.active")),n=()=>Boolean(dq(".bili-dyn-up-list__item:first-child.active"));(0,a.attributesSubtree)(e,(()=>{document.body.classList.toggle("by-type",n()&&!t())}))}},methods:{updateCard(e){const t={...e};e.type===s.feedsCardTypes.repost&&(t.text+=`\n${e.repostText}`);f.patterns.some((e=>(0,o.w)(e,t)))?e.element.classList.add("pattern-block"):e.element.classList.remove("pattern-block")},deletePattern(e){const t=f.patterns.indexOf(e);-1!==t&&this.patterns.splice(t,1)},addPattern(e){e&&!this.patterns.includes(e)&&this.patterns.push(e),this.newPattern=""},updateBlockSide(){Object.entries(c).forEach((e=>{let[t,n]=e;const i=b+n.className;document.body.classList[this.blockSideCards.includes(t)?"add":"remove"](i)}))},toggleBlockSide(e){const t=this.blockSideCards.indexOf(e),n=c[e];-1!==t?(this.blockSideCards.splice(t,1),document.body.classList.remove(b+n.className)):(this.blockSideCards.push(e),document.body.classList.add(b+n.className)),f.sideCards=this.blockSideCards},sideDisabled(e){return this.blockSideCards.includes(e)}}}),u=y;var m=n(332),h=n.n(m),v=n(430),g=n.n(v),x={insert:"head",singleton:!1};h()(g(),x);g().locals;const _=(0,n(893).Z)(u,i,[],!1,null,null,null).exports},50:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"filter-type-switch feeds-filter-switch"},[t("label",{class:{disabled:e.disabled}},[t("span",{staticClass:"name",class:{disabled:e.disabled}},[e._v(e._s(e.type.name))]),e._v(" "),t("input",{directives:[{name:"model",rawName:"v-model",value:e.disabled,expression:"disabled"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.disabled)?e._i(e.disabled,null)>-1:e.disabled},on:{change:function(t){var n=e.disabled,i=t.target,s=!!i.checked;if(Array.isArray(n)){var l=e._i(n,null);i.checked?l<0&&(e.disabled=n.concat([null])):l>-1&&(e.disabled=n.slice(0,l).concat(n.slice(l+1)))}else e.disabled=s}}}),e._v(" "),e.disabled?t("VIcon",{staticClass:"disabled",attrs:{size:16,icon:"mdi-cancel"}}):t("VIcon",{attrs:{size:16,icon:"mdi-check"}})],1)])};i._withStripped=!0;var s=n(986),l=n(648);const{options:r}=(0,s.getComponentSettings)("feedsFilter"),a=Vue.extend({components:{VIcon:l.VIcon},props:{name:{type:String,required:!0},type:{type:Object,required:!0}},data(){const e=this.type.id>=0?"types":"specialTypes";return{disabled:r[e].includes(this.type.id),optionKey:e}},watch:{disabled(e){this.setFilter(e)}},created(){this.setFilter(this.disabled,!1)},methods:{setFilter(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(document.body.classList[e?"add":"remove"](`feeds-filter-block-${this.name}`),!t)return;const n=this.optionKey;if(e)r[n].push(this.type.id);else{const e=r[n].indexOf(this.type.id);-1!==e&&r[n].splice(e,1)}}}});var d=n(332),o=n.n(d),f=n(388),c=n.n(f),p={insert:"head",singleton:!1};o()(c(),p);c().locals;const b=(0,n(893).Z)(a,i,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function i(e,t,n,i,s,l,r,a){var d,o="function"==typeof e?e.options:e;if(t&&(o.render=t,o.staticRenderFns=n,o._compiled=!0),i&&(o.functional=!0),l&&(o._scopeId="data-v-"+l),r?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},o._ssrRegister=d):s&&(d=a?function(){s.call(this,(o.functional?this.parent:this).$root.$options.shadowRoot)}:s),d)if(o.functional){o._injectStyles=d;var f=o.render;o.render=function(e,t){return d.call(t),f(e,t)}}else{var c=o.beforeCreate;o.beforeCreate=c?[].concat(c,d):[d]}return{exports:e,options:o}}n.d(t,{Z:()=>i})},156:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=156,e.exports=t},814:e=>{"use strict";e.exports="按照类型或者关键词过滤动态首页的内容, 也可以移除动态页的一些侧边卡片. 详细设置请前往[动态首页](https://t.bilibili.com/)查看.\n"},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},986:e=>{"use strict";e.exports=coreApis.settings},200:e=>{"use strict";e.exports=coreApis.spinQuery},648:e=>{"use strict";e.exports=coreApis.ui},605:e=>{"use strict";e.exports=coreApis.utils}},i={};function s(e){var t=i[e];if(void 0!==t)return t.exports;var l=i[e]={id:e,exports:{}};return n[e](l,l.exports,s),l.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var l=Object.create(null);s.r(l);var r={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>r[e]=()=>n[e]));return r.default=()=>n,s.d(l,r),l},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";s.d(l,{component:()=>o});const e=coreApis.componentApis.define;var t=s(799),n=s(986),i=s(84);const r=[{username:"title",text:"epTitle"},{username:"upName",text:["title","dynamic"]},{username:["username","repostUsername"],text:["text","repostText"]}],a={name:"feeds.contentFilters.patterns",displayName:"动态关键词过滤",setup:e=>{let{addData:t}=e;t("feeds.contentFilters",(e=>{e.push({filter:e=>{const{patterns:t}=(0,n.getComponentSettings)("feedsFilter").options;return e.filter((e=>{const n=r.find((t=>Object.values(t).every((t=>Array.isArray(t)?t.some((t=>t in e)):t in e)))),s=Object.fromEntries(Object.entries(n).map((t=>{let[n,i]=t;return Array.isArray(i)?[n,i.map((t=>e[t]??"")).join("\n").trim()]:[n,e[i].trim()]})));return t.every((e=>!(0,i.w)(e,s)))}))}})}))}},d=(0,e.defineOptionsMetadata)({types:{defaultValue:[],displayName:"过滤动态类型",hidden:!0},patterns:{defaultValue:[],displayName:"过滤关键词",hidden:!0},sideCards:{defaultValue:[],displayName:"过滤侧边栏",hidden:!0},specialTypes:{defaultValue:[],displayName:"过滤特殊动态类型",hidden:!0}}),o=(0,e.defineComponentMetadata)({name:"feedsFilter",displayName:"动态过滤器",entry:async()=>{const{select:e}=await Promise.resolve().then(s.t.bind(s,200,23));let n;if("v2"===t.feedsCardsManager.managerType){const t=await e(".bili-dyn-home--member aside.left"),i=document.createElement("section");i.classList.add("feeds-filter-section"),t.insertAdjacentElement("afterbegin",i),n=i}else n=await e(".home-container .left-panel");if(null===n)return;const i=await Promise.resolve().then(s.bind(s,536)),{mountVueComponent:l}=await Promise.resolve().then(s.t.bind(s,605,23));n.insertAdjacentElement("afterbegin",l(i).$el)},tags:[componentsTags.feeds],options:d,reload:()=>document.body.classList.remove("disable-feeds-filter"),unload:()=>document.body.classList.add("disable-feeds-filter"),urlInclude:[/^https:\/\/t\.bilibili\.com\/$/],plugin:a,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=s(156);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(s.t.bind(s,814,17)).then((e=>e.default))}})()})})(),l=l.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/fixed-sidebars.js b/bb-evolved/registry/dist/components/feeds/fixed-sidebars.js index 9e3e0138dd..db4ffabd88 100644 --- a/bb-evolved/registry/dist/components/feeds/fixed-sidebars.js +++ b/bb-evolved/registry/dist/components/feeds/fixed-sidebars.js @@ -6,4 +6,4 @@ e.i=function(n,t,i){"string"==typeof n&&( // eslint-disable-next-line no-param-reassign n=[[null,n,""]]);var o={};if(i)for(var r=0;r{var i=t(656);i&&i.__esModule&&(i=i.default),n.exports="string"==typeof i?i:i.toString()},567:n=>{"use strict";n.exports=coreApis.componentApis.feeds.disableProfilePopup}},i={};function o(n){var e=i[n];if(void 0!==e)return e.exports;var r=i[n]={id:n,exports:{}};return t[n](r,r.exports,o),r.exports}e=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,o.t=function(t,i){if(1&i&&(t=this(t)),8&i)return t;if("object"==typeof t&&t){if(4&i&&t.__esModule)return t;if(16&i&&"function"==typeof t.then)return t}var r=Object.create(null);o.r(r);var a={};n=n||[null,e({}),e([]),e(e)];for(var p=2&i&&t;"object"==typeof p&&!~n.indexOf(p);p=e(p))Object.getOwnPropertyNames(p).forEach((n=>a[n]=()=>t[n]));return a.default=()=>t,o.d(r,a),r},o.d=(n,e)=>{for(var t in e)o.o(e,t)&&!o.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),o.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>n});const n=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"fixedFeedsSidebars",instantStyles:[{name:"fixed-sidebars-style",style:()=>Promise.resolve().then(o.t.bind(o,709,23)),important:!0}],displayName:"强制固定动态侧栏",description:{"zh-CN":"强制固定动态主页的顶栏和所有侧栏."},tags:[componentsTags.feeds],entry:async()=>{const{disableProfilePopup:n}=await Promise.resolve().then(o.t.bind(o,567,23));n()},urlInclude:[/^https:\/\/t\.bilibili\.com\/$/],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +var a=this[r][0];null!=a&&(o[a]=!0)}for(var p=0;p{var i=t(656);i&&i.__esModule&&(i=i.default),n.exports="string"==typeof i?i:i.toString()},567:n=>{"use strict";n.exports=coreApis.componentApis.feeds.disableProfilePopup}},i={};function o(n){var e=i[n];if(void 0!==e)return e.exports;var r=i[n]={id:n,exports:{}};return t[n](r,r.exports,o),r.exports}e=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,o.t=function(t,i){if(1&i&&(t=this(t)),8&i)return t;if("object"==typeof t&&t){if(4&i&&t.__esModule)return t;if(16&i&&"function"==typeof t.then)return t}var r=Object.create(null);o.r(r);var a={};n=n||[null,e({}),e([]),e(e)];for(var p=2&i&&t;"object"==typeof p&&!~n.indexOf(p);p=e(p))Object.getOwnPropertyNames(p).forEach((n=>a[n]=()=>t[n]));return a.default=()=>t,o.d(r,a),r},o.d=(n,e)=>{for(var t in e)o.o(e,t)&&!o.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),o.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>n});const n=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"fixedFeedsSidebars",instantStyles:[{name:"fixed-sidebars-style",style:()=>Promise.resolve().then(o.t.bind(o,709,23)),important:!0}],displayName:"强制固定动态侧栏",description:{"zh-CN":"强制固定动态主页的顶栏和所有侧栏."},tags:[componentsTags.feeds],entry:async()=>{const{disableProfilePopup:n}=await Promise.resolve().then(o.t.bind(o,567,23));n()},urlInclude:[/^https:\/\/t\.bilibili\.com\/$/],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/fold-comments.js b/bb-evolved/registry/dist/components/feeds/fold-comments.js index a915e68c35..ee87c3fa1d 100644 --- a/bb-evolved/registry/dist/components/feeds/fold-comments.js +++ b/bb-evolved/registry/dist/components/feeds/fold-comments.js @@ -6,4 +6,4 @@ n.i=function(e,o,t){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(t)for(var i=0;i{var t=o(918);t&&t.__esModule&&(t=t.default),e.exports="string"==typeof t?t:t.toString()},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},391:e=>{"use strict";e.exports=coreApis.observer}},t={};function r(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,t){if(1&t&&(o=this(o)),8&t)return o;if("object"==typeof o&&o){if(4&t&&o.__esModule)return o;if(16&t&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var c={};e=e||[null,n({}),n([]),n(n)];for(var a=2&t&&o;"object"==typeof a&&!~e.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((e=>c[e]=()=>o[e]));return c.default=()=>o,r.d(i,c),i},r.d=(e,n)=>{for(var o in n)r.o(n,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>l});const e=coreApis.componentApis.define,n=coreApis.componentApis.styledComponent,o=coreApis.utils.urls;var t=r(799);const c=coreApis.spinQuery;var a=r(391);const l=(0,e.defineComponentMetadata)({name:"foldComments",displayName:"快速收起评论",description:{"zh-CN":"动态里查看评论区时, 在底部添加一个`收起评论`按钮, 这样就不用再回到上面收起了."},urlInclude:o.feedsUrlsWithoutDetail,tags:[componentsTags.feeds],entry:(0,n.styledComponentEntry)((()=>Promise.resolve().then(r.t.bind(r,279,23))),(async()=>{const{forEachFeedsCard:e}=await Promise.resolve().then(r.t.bind(r,799,23)),{childList:n}=await Promise.resolve().then(r.t.bind(r,391,23)),o=".bb-comment, .bili-comment-container";e({added:e=>(e=>{const r=async(n,t)=>{const r=await(0,c.select)((()=>dq(n,o)));if(null!==r.querySelector(".fold-comment"))return;if(null===r)return void console.error("未找到评论区");const i=document.createElement("div");i.classList.add("fold-comment"),i.innerHTML="收起评论",i.addEventListener("click",(()=>{t(),e.scrollIntoView(),window.scrollBy({top:-75})})),r.insertAdjacentElement("beforeend",i)};if("v2"!==t.feedsCardsManager.managerType)if("v1"!==t.feedsCardsManager.managerType)console.warn("unrecognized card type",e);else{const o=e.querySelector(".panel-area");if(null===o)return void console.warn("panelArea not found",e);const t=()=>{e.querySelector(".button-bar").children[1]?.click()};if(0===o.childElementCount){const[e]=n(o,(n=>{n.length>0&&(r(o,t),e.disconnect())}))}else r(o,t)}else{const n=dq(e,o),t=()=>{dq(e,".bili-dyn-action.comment")?.click()};n?r(n,t):(0,a.childListSubtree)(e,(()=>{dq(e,o)&&r(e,t)}))}})(e.element)})})),commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var c=this[i][0];null!=c&&(r[c]=!0)}for(var a=0;a{var t=o(918);t&&t.__esModule&&(t=t.default),e.exports="string"==typeof t?t:t.toString()},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},391:e=>{"use strict";e.exports=coreApis.observer}},t={};function r(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,t){if(1&t&&(o=this(o)),8&t)return o;if("object"==typeof o&&o){if(4&t&&o.__esModule)return o;if(16&t&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var c={};e=e||[null,n({}),n([]),n(n)];for(var a=2&t&&o;"object"==typeof a&&!~e.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((e=>c[e]=()=>o[e]));return c.default=()=>o,r.d(i,c),i},r.d=(e,n)=>{for(var o in n)r.o(n,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>l});const e=coreApis.componentApis.define,n=coreApis.componentApis.styledComponent,o=coreApis.utils.urls;var t=r(799);const c=coreApis.spinQuery;var a=r(391);const l=(0,e.defineComponentMetadata)({name:"foldComments",displayName:"快速收起评论",description:{"zh-CN":"动态里查看评论区时, 在底部添加一个`收起评论`按钮, 这样就不用再回到上面收起了."},urlInclude:o.feedsUrlsWithoutDetail,tags:[componentsTags.feeds],entry:(0,n.styledComponentEntry)((()=>Promise.resolve().then(r.t.bind(r,279,23))),(async()=>{const{forEachFeedsCard:e}=await Promise.resolve().then(r.t.bind(r,799,23)),{childList:n}=await Promise.resolve().then(r.t.bind(r,391,23)),o=".bb-comment, .bili-comment-container";e({added:e=>(e=>{const r=async(n,t)=>{const r=await(0,c.select)((()=>dq(n,o)));if(null!==r.querySelector(".fold-comment"))return;if(null===r)return void console.error("未找到评论区");const i=document.createElement("div");i.classList.add("fold-comment"),i.innerHTML="收起评论",i.addEventListener("click",(()=>{t(),e.scrollIntoView(),window.scrollBy({top:-75})})),r.insertAdjacentElement("beforeend",i)};if("v2"!==t.feedsCardsManager.managerType)if("v1"!==t.feedsCardsManager.managerType)console.warn("unrecognized card type",e);else{const o=e.querySelector(".panel-area");if(null===o)return void console.warn("panelArea not found",e);const t=()=>{e.querySelector(".button-bar").children[1]?.click()};if(0===o.childElementCount){const[e]=n(o,(n=>{n.length>0&&(r(o,t),e.disconnect())}))}else r(o,t)}else{const n=dq(e,o),t=()=>{dq(e,".bili-dyn-action.comment")?.click()};n?r(n,t):(0,a.childListSubtree)(e,(()=>{dq(e,o)&&r(e,t)}))}})(e.element)})})),commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/full-content.js b/bb-evolved/registry/dist/components/feeds/full-content.js index 3ea381ed0d..aefa0e0c3d 100644 --- a/bb-evolved/registry/dist/components/feeds/full-content.js +++ b/bb-evolved/registry/dist/components/feeds/full-content.js @@ -6,4 +6,4 @@ e.i=function(t,n,o){"string"==typeof t&&( // eslint-disable-next-line no-param-reassign t=[[null,t,""]]);var r={};if(o)for(var i=0;i{var o=n(267);o&&o.__esModule&&(o=o.default),t.exports="string"==typeof o?o:o.toString()},660:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=660,t.exports=e},230:t=>{"use strict";t.exports="不管内容多长, 总是完全展开动态的内容. (专栏不算)\n"}},o={};function r(t){var e=o[t];if(void 0!==e)return e.exports;var i=o[t]={id:t,exports:{}};return n[t](i,i.exports,r),i.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};t=t||[null,e({}),e([]),e(e)];for(var c=2&o&&n;"object"==typeof c&&!~t.indexOf(c);c=e(c))Object.getOwnPropertyNames(c).forEach((t=>a[t]=()=>n[t]));return a.default=()=>n,r.d(i,a),i},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const t=coreApis.componentApis.define,e=coreApis.utils.urls,n=(0,t.defineComponentMetadata)({name:"fullFeedsContent",instantStyles:[{name:"full-feeds-content",style:()=>Promise.resolve().then(r.t.bind(r,957,23))}],displayName:"展开动态内容",tags:[componentsTags.style,componentsTags.feeds],urlInclude:e.feedsUrlsWithoutDetail,entry:none,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const t=r(660);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,230,17)).then((t=>t.default))}})()})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var c=0;c{var o=n(267);o&&o.__esModule&&(o=o.default),t.exports="string"==typeof o?o:o.toString()},660:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=660,t.exports=e},230:t=>{"use strict";t.exports="不管内容多长, 总是完全展开动态的内容. (专栏不算)\n"}},o={};function r(t){var e=o[t];if(void 0!==e)return e.exports;var i=o[t]={id:t,exports:{}};return n[t](i,i.exports,r),i.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};t=t||[null,e({}),e([]),e(e)];for(var c=2&o&&n;"object"==typeof c&&!~t.indexOf(c);c=e(c))Object.getOwnPropertyNames(c).forEach((t=>a[t]=()=>n[t]));return a.default=()=>n,r.d(i,a),i},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const t=coreApis.componentApis.define,e=coreApis.utils.urls,n=(0,t.defineComponentMetadata)({name:"fullFeedsContent",instantStyles:[{name:"full-feeds-content",style:()=>Promise.resolve().then(r.t.bind(r,957,23))}],displayName:"展开动态内容",tags:[componentsTags.style,componentsTags.feeds],urlInclude:e.feedsUrlsWithoutDetail,entry:none,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const t=r(660);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,230,17)).then((t=>t.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/full-title.js b/bb-evolved/registry/dist/components/feeds/full-title.js index daeaf99fcc..7aff6b632d 100644 --- a/bb-evolved/registry/dist/components/feeds/full-title.js +++ b/bb-evolved/registry/dist/components/feeds/full-title.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(810);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=(0,e.defineComponentMetadata)({...(0,t.toggleStyle)("fullFeedsTitle",(()=>Promise.resolve().then(r.t.bind(r,733,23)))),displayName:"展开动态标题",description:{"zh-CN":"在顶栏的视频动态中, 无论标题多长总是完全展开."},tags:[componentsTags.feeds,componentsTags.style],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var c=0;c{var n=o(810);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=(0,e.defineComponentMetadata)({...(0,t.toggleStyle)("fullFeedsTitle",(()=>Promise.resolve().then(r.t.bind(r,733,23)))),displayName:"展开动态标题",description:{"zh-CN":"在顶栏的视频动态中, 无论标题多长总是完全展开."},tags:[componentsTags.feeds,componentsTags.style],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/hide-comment-preview.js b/bb-evolved/registry/dist/components/feeds/hide-comment-preview.js index f6bce6b151..1c3671fc56 100644 --- a/bb-evolved/registry/dist/components/feeds/hide-comment-preview.js +++ b/bb-evolved/registry/dist/components/feeds/hide-comment-preview.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(935);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},831:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=831,e.exports=t},631:e=>{"use strict";e.exports="隐藏动态评论按钮上方的精选评论预览. (详细可看 [#3322](https://github.com/the1812/Bilibili-Evolved/discussions/3322))\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>t});const e="hideFeedsCommentPreview",t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:e,tags:[componentsTags.feeds,componentsTags.style],displayName:"隐藏动态评论预览",entry:none,instantStyles:[{style:()=>Promise.resolve().then(r.t.bind(r,81,23)),name:e}],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(831);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,631,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var s=this[i][0];null!=s&&(r[s]=!0)}for(var a=0;a{var n=o(935);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},831:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=831,e.exports=t},631:e=>{"use strict";e.exports="隐藏动态评论按钮上方的精选评论预览. (详细可看 [#3322](https://github.com/the1812/Bilibili-Evolved/discussions/3322))\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>t});const e="hideFeedsCommentPreview",t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:e,tags:[componentsTags.feeds,componentsTags.style],displayName:"隐藏动态评论预览",entry:none,instantStyles:[{style:()=>Promise.resolve().then(r.t.bind(r,81,23)),name:e}],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(831);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,631,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/image-auto-back-to-top.js b/bb-evolved/registry/dist/components/feeds/image-auto-back-to-top.js index 0cefc2b8b5..c9798bc01e 100644 --- a/bb-evolved/registry/dist/components/feeds/image-auto-back-to-top.js +++ b/bb-evolved/registry/dist/components/feeds/image-auto-back-to-top.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/image-auto-back-to-top"]=t():e["feeds/image-auto-back-to-top"]=t()}(globalThis,(()=>(()=>{var e,t,o={583:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=583,e.exports=t},953:e=>{"use strict";e.exports="在动态里查看图片详情时 (非全屏), 切换图片自动回到图片顶部; 退出查看图片模式时, 自动将动态移入视图内.\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>s});const e=coreApis.componentApis.define,t=coreApis.componentApis.feeds.api,o=coreApis.observer,r=coreApis.utils.log,a=coreApis.utils.urls,s=(0,e.defineComponentMetadata)({name:"imageAutoBackToTop",displayName:"动态看图自动回顶",tags:[componentsTags.feeds],urlInclude:a.feedsUrlsWithoutDetail,entry:()=>{const e=(0,r.useScopedConsole)("imageAutoBackToTop");(0,t.forEachFeedsCard)({added:t=>{const r=e=>{e?.scrollIntoView(),window.scrollBy({top:-75})},n=dqa(t.element,".bili-album");(0,o.mutationObserve)(n,{childList:!0,attributes:!0,subtree:!0},(o=>{o.forEach((o=>{const n=()=>o.target instanceof HTMLElement&&o.target.classList.contains("bili-album__watch")&&"style"===o.attributeName?"none"!==o.target.style.display:null,i=e=>[...e].some((e=>e instanceof HTMLElement&&e.classList.contains("bili-album__watch")));(i(o.removedNodes)||!1===n())&&(r(t.element),e.log("imagePreviewExited"));if(i(o.addedNodes)||!0===n()){const o=dq(t.element,".bili-album__watch__control");r(o),e.log("imagePreviewEntered")}}))})),(0,o.attributesSubtree)(t.element,(o=>{o.forEach((o=>{if(!(o.target instanceof HTMLImageElement&&o.target.matches(".bili-album__watch__content img")&&"src"===o.attributeName))return;const n=dq(t.element,".bili-album__watch__control");r(n),e.log("imagePreviewSwitched")}))}))}})},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(583);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,953,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/image-auto-back-to-top"]=t():e["feeds/image-auto-back-to-top"]=t()}(globalThis,(()=>(()=>{var e,t,o={583:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=583,e.exports=t},953:e=>{"use strict";e.exports="在动态里查看图片详情时 (非全屏), 切换图片自动回到图片顶部; 退出查看图片模式时, 自动将动态移入视图内.\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>s});const e=coreApis.componentApis.define,t=coreApis.componentApis.feeds.api,o=coreApis.observer,r=coreApis.utils.log,a=coreApis.utils.urls,s=(0,e.defineComponentMetadata)({name:"imageAutoBackToTop",displayName:"动态看图自动回顶",tags:[componentsTags.feeds],urlInclude:a.feedsUrlsWithoutDetail,entry:()=>{const e=(0,r.useScopedConsole)("imageAutoBackToTop");(0,t.forEachFeedsCard)({added:t=>{const r=e=>{e?.scrollIntoView(),window.scrollBy({top:-75})},n=dqa(t.element,".bili-album");(0,o.mutationObserve)(n,{childList:!0,attributes:!0,subtree:!0},(o=>{o.forEach((o=>{const n=()=>o.target instanceof HTMLElement&&o.target.classList.contains("bili-album__watch")&&"style"===o.attributeName?"none"!==o.target.style.display:null,i=e=>[...e].some((e=>e instanceof HTMLElement&&e.classList.contains("bili-album__watch")));(i(o.removedNodes)||!1===n())&&(r(t.element),e.log("imagePreviewExited"));if(i(o.addedNodes)||!0===n()){const o=dq(t.element,".bili-album__watch__control");r(o),e.log("imagePreviewEntered")}}))})),(0,o.attributesSubtree)(t.element,(o=>{o.forEach((o=>{if(!(o.target instanceof HTMLImageElement&&o.target.matches(".bili-album__watch__content img")&&"src"===o.attributeName))return;const n=dq(t.element,".bili-album__watch__control");r(n),e.log("imagePreviewSwitched")}))}))}})},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(583);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,953,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/legacy-image-viewer.js b/bb-evolved/registry/dist/components/feeds/legacy-image-viewer.js index 06bc2a397e..e3a2c1ac5e 100644 --- a/bb-evolved/registry/dist/components/feeds/legacy-image-viewer.js +++ b/bb-evolved/registry/dist/components/feeds/legacy-image-viewer.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/legacy-image-viewer"]=t():e["feeds/legacy-image-viewer"]=t()}(globalThis,(()=>(()=>{var e,t,o={218:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=218,e.exports=t},588:e=>{"use strict";e.exports="将动态中左右切换式的图片改回传统的平铺展示. (在动态详情中可能稍有延迟)\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return o[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&r&&o;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,n.d(a,s),a},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.componentApis.feeds.api,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({name:"legacyFeedsImageViewer",displayName:"动态图片平铺展示",tags:[componentsTags.feeds],urlInclude:o.feedsUrls,entry:()=>{(0,t.forEachFeedsCard)({added:e=>{const o=(0,t.getVueData)(e.element),r=o?.data?.type,n="DYNAMIC_TYPE_FORWARD"===r?"data.orig.modules.module_dynamic.major.opus.style":"data.modules.module_dynamic.major.opus.style";if(1===lodash.get(o,n,null))return void lodash.set(o,n,void 0);const a=o?.data?.modules;if(Array.isArray(a)){const e=a.find((e=>"MODULE_TYPE_TOP"===e.module_type)),t=a.find((e=>"MODULE_TYPE_CONTENT"===e.module_type)),o=e?.module_top?.display?.album,r=t?.module_content?.paragraphs;o&&r&&(a.splice(a.indexOf(e),1),r.push({align:0,para_type:2,pic:{pics:o.pics,style:1}}))}}})},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(218);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,588,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/legacy-image-viewer"]=t():e["feeds/legacy-image-viewer"]=t()}(globalThis,(()=>(()=>{var e,t,o={218:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=218,e.exports=t},588:e=>{"use strict";e.exports="将动态中左右切换式的图片改回传统的平铺展示. (在动态详情中可能稍有延迟)\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return o[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var s={};e=e||[null,t({}),t([]),t(t)];for(var d=2&r&&o;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,n.d(a,s),a},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.componentApis.feeds.api,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({name:"legacyFeedsImageViewer",displayName:"动态图片平铺展示",tags:[componentsTags.feeds],urlInclude:o.feedsUrls,entry:()=>{(0,t.forEachFeedsCard)({added:e=>{const o=(0,t.getVueData)(e.element),r=o?.data?.type,n="DYNAMIC_TYPE_FORWARD"===r?"data.orig.modules.module_dynamic.major.opus.style":"data.modules.module_dynamic.major.opus.style";if(1===lodash.get(o,n,null))return void lodash.set(o,n,void 0);const a=o?.data?.modules;if(Array.isArray(a)){const e=a.find((e=>"MODULE_TYPE_TOP"===e.module_type)),t=a.find((e=>"MODULE_TYPE_CONTENT"===e.module_type)),o=e?.module_top?.display?.album,r=t?.module_content?.paragraphs;o&&r&&(a.splice(a.indexOf(e),1),r.push({align:0,para_type:2,pic:{pics:o.pics,style:1}}))}}})},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(218);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,588,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/feeds/unfold.js b/bb-evolved/registry/dist/components/feeds/unfold.js index 26faf8702c..57446f8bad 100644 --- a/bb-evolved/registry/dist/components/feeds/unfold.js +++ b/bb-evolved/registry/dist/components/feeds/unfold.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/unfold"]=t():e["feeds/unfold"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={799:e=>{e.exports=coreApis.componentApis.feeds.api}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var f=2&n&&o;"object"==typeof f&&!~e.indexOf(f);f=t(f))Object.getOwnPropertyNames(f).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.spinQuery,o=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"unfoldFeeds",displayName:"动态反折叠",tags:[componentsTags.feeds],description:{"zh-CN":"\n自动展开被折叠的动态.\n\n动态被折叠可能是因为:\n- 短时间内大量更新作品\n- 多人转发同一个作品\n- 被审核折叠\n"},urlInclude:o.feedsUrlsWithoutDetail,entry:async()=>{const{forEachFeedsCard:e}=await Promise.resolve().then(r.t.bind(r,799,23));e({added:async e=>{(await(0,t.select)((()=>dq(e.element,".fold-hoverable, .bili-dyn-item-fold"))))?.click()}})},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/unfold"]=t():e["feeds/unfold"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={799:e=>{e.exports=coreApis.componentApis.feeds.api}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var d=2&n&&o;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.spinQuery,o=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"unfoldFeeds",displayName:"动态反折叠",tags:[componentsTags.feeds],description:{"zh-CN":"\n自动展开被折叠的动态.\n\n动态被折叠可能是因为:\n- 短时间内大量更新作品\n- 多人转发同一个作品\n- 被审核折叠\n"},urlInclude:o.feedsUrlsWithoutDetail,entry:async()=>{const{forEachFeedsCard:e}=await Promise.resolve().then(r.t.bind(r,799,23));e({added:async e=>{(await(0,t.select)((()=>dq(e.element,".fold-hoverable, .bili-dyn-item-fold"))))?.click()}})},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/badge-helper.js b/bb-evolved/registry/dist/components/live/badge-helper.js index 36f07db463..c73b1ae372 100644 --- a/bb-evolved/registry/dist/components/live/badge-helper.js +++ b/bb-evolved/registry/dist/components/live/badge-helper.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(l)for(var a=0;a{"use strict";var l,o=function(){return void 0===l&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -l=Boolean(window&&document&&document.all&&!window.atob)),l},a=function(){var e={};return function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}e[n]=t}return e[n]}}(),i=[];function r(e){for(var n=-1,t=0;t{"use strict";t.r(n),t.d(n,{default:()=>m});var l=function(){var e=this,n=e._self._c,t=e._self._setupProxy;return n("div",{ref:"element",staticClass:"multiple-widgets"},[n(t.VPopup,{ref:"medalPopup",staticClass:"badge-popup widgets-popup medal",attrs:{"trigger-element":e.$refs.medalButton},model:{value:t.medalOpen,callback:function(e){t.medalOpen=e},expression:"medalOpen"}},[n("ul",e._l(t.medalList,(function(l){return n("li",{key:l.id,class:{active:l.isActive,gray:t.grayEffect&&!l.isLighted},attrs:{"data-id":l.id,title:l.upName},on:{click:function(e){return t.toggleBadge(l,t.medalList)}}},[n("div",{staticClass:"fans-medal-item",class:["level-"+l.level]},[n("span",{staticClass:"label"},[e._v(e._s(l.name))]),e._v(" "),n("span",{staticClass:"level"},[e._v(e._s(l.level))])])])})),0)]),e._v(" "),n(t.DefaultWidget,{ref:"medalButton",attrs:{icon:"mdi-medal"},on:{click:function(e){t.medalOpen=!t.medalOpen}}},[n("span",[e._v("更换勋章")])]),e._v(" "),n(t.VPopup,{ref:"titlePopup",staticClass:"badge-popup widgets-popup title",attrs:{"trigger-element":e.$refs.titleButton},model:{value:t.titleOpen,callback:function(e){t.titleOpen=e},expression:"titleOpen"}},[n("ul",e._l(t.titleList,(function(e){return n("li",{key:e.id,class:{active:e.isActive},attrs:{"data-id":e.id},on:{click:function(n){return t.toggleBadge(e,t.titleList)}}},[n("img",{staticClass:"title-image",attrs:{src:e.imageUrl}})])})),0)]),e._v(" "),n(t.DefaultWidget,{ref:"titleButton",attrs:{icon:"mdi-script-outline"},on:{click:function(e){t.titleOpen=!t.titleOpen}}},[n("span",[e._v("更换头衔")])])],1)};l._withStripped=!0;const o=globalThis.Vue;var a=t(986);const i=coreApis.utils.sort,r=coreApis.ui;var d=t(176);const p=(0,o.defineComponent)({__name:"BadgeHelper",setup(e){const{options:n}=(0,a.getComponentSettings)("badgeHelper"),t=(0,o.ref)(),l=(0,o.ref)([]),p=(0,o.ref)([]),c=(0,o.ref)(!1),s=(0,o.ref)(!1),u=(0,o.ref)(!0),b=()=>{const e=Math.min(Math.ceil(l.value.length/18),15);t.value.style.setProperty("--medal-columns",e.toString());const n=Math.min(Math.ceil(p.value.length/18),15);t.value.style.setProperty("--title-columns",n.toString())},f=async()=>{l.value=(await(0,d.KK)()).sort((0,i.descendingSort)((e=>e.level))).slice(0,n.maxBadgeCount)},g=async()=>{p.value=(await(0,d.eB)()).slice(0,n.maxBadgeCount)};return(0,o.onMounted)((async()=>{(0,a.addComponentListener)("badgeHelper.grayEffect",(e=>{u.value=e}),!0);await(async()=>{const e=f();await d.Dx.getImageMap();const n=g();return Promise.all([e,n])})(),b()})),{__sfc:!0,options:n,element:t,medalList:l,titleList:p,medalOpen:c,titleOpen:s,grayEffect:u,updateColumnsCount:b,loadMedalList:f,loadTitleList:g,toggleBadge:async(e,t)=>{if(console.log(e),e.isActive)e.isActive=!1,await e.deactivate();else{const l=t.find((e=>e.isActive));l&&(l.isActive=!1),e.isActive=!0,await e.activate(),e instanceof d.j9&&(n.defaultMedalID=e.id)}e instanceof d.j9?await f():e instanceof d.Dx&&await g()},DefaultWidget:r.DefaultWidget,VPopup:r.VPopup}}}),c=p;var s=t(332),u=t.n(s),b=t(548),f=t.n(b),g={insert:"head",singleton:!1};u()(f(),g);f().locals;var v=function(e,n,t,l,o,a,i,r){var d,p="function"==typeof e?e.options:e;if(n&&(p.render=n,p.staticRenderFns=t,p._compiled=!0),l&&(p.functional=!0),a&&(p._scopeId="data-v-"+a),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},p._ssrRegister=d):o&&(d=r?function(){o.call(this,(p.functional?this.parent:this).$root.$options.shadowRoot)}:o),d)if(p.functional){p._injectStyles=d;var c=p.render;p.render=function(e,n){return d.call(n),c(e,n)}}else{var s=p.beforeCreate;p.beforeCreate=s?[].concat(s,d):[d]}return{exports:e,options:p}}(c,l,[],!1,null,null,null);const m=v.exports},984:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=984,e.exports=n},235:e=>{"use strict";e.exports="在直播区中, 可从功能面板中直接切换勋章和头衔. 默认显示 256 个 (同时也是上限), 可在选项中修改.\n"},986:e=>{"use strict";e.exports=coreApis.settings},605:e=>{"use strict";e.exports=coreApis.utils}},l={};function o(e){var n=l[e];if(void 0!==n)return n.exports;var a=l[e]={id:e,exports:{}};return t[e](a,a.exports,o),a.exports}o.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return o.d(n,{a:n}),n},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(t,l){if(1&l&&(t=this(t)),8&l)return t;if("object"==typeof t&&t){if(4&l&&t.__esModule)return t;if(16&l&&"function"==typeof t.then)return t}var a=Object.create(null);o.r(a);var i={};e=e||[null,n({}),n([]),n(n)];for(var r=2&l&&t;"object"==typeof r&&!~e.indexOf(r);r=n(r))Object.getOwnPropertyNames(r).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,o.d(a,i),a},o.d=(e,n)=>{for(var t in n)o.o(n,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>i});const e=coreApis.componentApis.define;var n=o(605),t=o(176);const l=(0,e.defineOptionsMetadata)({autoMatchMedal:{defaultValue:!0,displayName:"自动佩戴当前直播间勋章"},maxBadgeCount:{defaultValue:256,displayName:"最大显示数量",validator:(0,n.getNumberValidator)(1,256)},defaultMedalID:{displayName:"默认勋章ID",hidden:!0,defaultValue:0},grayEffect:{displayName:"显示勋章的未点亮状态",defaultValue:!0}}),i=(0,e.defineComponentMetadata)({name:"badgeHelper",displayName:"直播勋章快速更换",entry:()=>(async()=>{const{getUID:e}=await Promise.resolve().then(o.t.bind(o,605,23));if(!e())return;const{getComponentSettings:n}=await Promise.resolve().then(o.t.bind(o,986,23)),{options:l}=n("badgeHelper");if(!l.autoMatchMedal)return;const a=document.URL.match(/^https:\/\/live\.bilibili\.com\/(blanc\/)?([\d]+)/);if(!a)return;const i=parseInt(a[2]);if(Number.isNaN(i))return void console.warn("roomID not found");const r=await(0,t.KK)();if(!l.defaultMedalID){const e=r.find((e=>e.isActive));e&&(l.defaultMedalID=e.id,console.log(`set defaultMedalID to activeMedal (${e.id})`))}const d=l.defaultMedalID?r.find((e=>e.id===l.defaultMedalID)):r.find((e=>e.isActive)),p=r.find((e=>e.roomID===i));p?(await p.activate(),console.log(`activated matchMedal (${p.id})`)):d&&(await d.activate(),console.log(`no matchMedal, fallback to defaultMedal (${d.id})`))})(),reload:n.none,unload:n.none,tags:[componentsTags.live],widget:{component:()=>Promise.resolve().then(o.bind(o,122)).then((e=>e.default)),condition:()=>Boolean((0,n.getUID)())},options:l,urlInclude:["//live.bilibili.com"],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=o(984);return{...Object.fromEntries(e.keys().map((n=>[n.match(/index\.(.+)\.md$/)[1],e(n)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,235,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file +l=Boolean(window&&document&&document.all&&!window.atob)),l},a=function(){var e={};return function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}e[n]=t}return e[n]}}(),i=[];function r(e){for(var n=-1,t=0;t{"use strict";t.r(n),t.d(n,{default:()=>m});var l=function(){var e=this,n=e._self._c,t=e._self._setupProxy;return n("div",{ref:"element",staticClass:"multiple-widgets"},[n(t.VPopup,{ref:"medalPopup",staticClass:"badge-popup widgets-popup medal",attrs:{"trigger-element":e.$refs.medalButton},model:{value:t.medalOpen,callback:function(e){t.medalOpen=e},expression:"medalOpen"}},[n("ul",e._l(t.medalList,(function(l){return n("li",{key:l.id,class:{active:l.isActive,gray:t.grayEffect&&!l.isLighted},attrs:{"data-id":l.id,title:l.upName},on:{click:function(e){return t.toggleBadge(l,t.medalList)}}},[n("div",{staticClass:"fans-medal-item",class:["level-"+l.level]},[n("span",{staticClass:"label"},[e._v(e._s(l.name))]),e._v(" "),n("span",{staticClass:"level"},[e._v(e._s(l.level))])])])})),0)]),e._v(" "),n(t.DefaultWidget,{ref:"medalButton",attrs:{icon:"mdi-medal"},on:{click:function(e){t.medalOpen=!t.medalOpen}}},[n("span",[e._v("更换勋章")])]),e._v(" "),n(t.VPopup,{ref:"titlePopup",staticClass:"badge-popup widgets-popup title",attrs:{"trigger-element":e.$refs.titleButton},model:{value:t.titleOpen,callback:function(e){t.titleOpen=e},expression:"titleOpen"}},[n("ul",e._l(t.titleList,(function(e){return n("li",{key:e.id,class:{active:e.isActive},attrs:{"data-id":e.id},on:{click:function(n){return t.toggleBadge(e,t.titleList)}}},[n("img",{staticClass:"title-image",attrs:{src:e.imageUrl}})])})),0)]),e._v(" "),n(t.DefaultWidget,{ref:"titleButton",attrs:{icon:"mdi-script-outline"},on:{click:function(e){t.titleOpen=!t.titleOpen}}},[n("span",[e._v("更换头衔")])])],1)};l._withStripped=!0;const o=globalThis.Vue;var a=t(986);const i=coreApis.utils.sort,r=coreApis.ui;var d=t(176);const p=(0,o.defineComponent)({__name:"BadgeHelper",setup(e){const{options:n}=(0,a.getComponentSettings)("badgeHelper"),t=(0,o.ref)(),l=(0,o.ref)([]),p=(0,o.ref)([]),c=(0,o.ref)(!1),s=(0,o.ref)(!1),u=(0,o.ref)(!0),b=()=>{const e=Math.min(Math.ceil(l.value.length/18),15);t.value.style.setProperty("--medal-columns",e.toString());const n=Math.min(Math.ceil(p.value.length/18),15);t.value.style.setProperty("--title-columns",n.toString())},f=async()=>{l.value=(await(0,d.KK)()).sort((0,i.descendingSort)((e=>e.level))).slice(0,n.maxBadgeCount)},g=async()=>{p.value=(await(0,d.eB)()).slice(0,n.maxBadgeCount)};return(0,o.onMounted)((async()=>{(0,a.addComponentListener)("badgeHelper.grayEffect",(e=>{u.value=e}),!0);await(async()=>{const e=f();await d.Dx.getImageMap();const n=g();return Promise.all([e,n])})(),b()})),{__sfc:!0,options:n,element:t,medalList:l,titleList:p,medalOpen:c,titleOpen:s,grayEffect:u,updateColumnsCount:b,loadMedalList:f,loadTitleList:g,toggleBadge:async(e,t)=>{if(console.log(e),e.isActive)e.isActive=!1,await e.deactivate();else{const l=t.find((e=>e.isActive));l&&(l.isActive=!1),e.isActive=!0,await e.activate(),e instanceof d.j9&&(n.defaultMedalID=e.id)}e instanceof d.j9?await f():e instanceof d.Dx&&await g()},DefaultWidget:r.DefaultWidget,VPopup:r.VPopup}}}),c=p;var s=t(332),u=t.n(s),b=t(548),f=t.n(b),g={insert:"head",singleton:!1};u()(f(),g);f().locals;var v=function(e,n,t,l,o,a,i,r){var d,p="function"==typeof e?e.options:e;if(n&&(p.render=n,p.staticRenderFns=t,p._compiled=!0),l&&(p.functional=!0),a&&(p._scopeId="data-v-"+a),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},p._ssrRegister=d):o&&(d=r?function(){o.call(this,(p.functional?this.parent:this).$root.$options.shadowRoot)}:o),d)if(p.functional){p._injectStyles=d;var c=p.render;p.render=function(e,n){return d.call(n),c(e,n)}}else{var s=p.beforeCreate;p.beforeCreate=s?[].concat(s,d):[d]}return{exports:e,options:p}}(c,l,[],!1,null,null,null);const m=v.exports},984:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=984,e.exports=n},235:e=>{"use strict";e.exports="在直播区中, 可从功能面板中直接切换勋章和头衔. 默认显示 256 个 (同时也是上限), 可在选项中修改.\n"},986:e=>{"use strict";e.exports=coreApis.settings},605:e=>{"use strict";e.exports=coreApis.utils}},l={};function o(e){var n=l[e];if(void 0!==n)return n.exports;var a=l[e]={id:e,exports:{}};return t[e](a,a.exports,o),a.exports}o.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return o.d(n,{a:n}),n},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(t,l){if(1&l&&(t=this(t)),8&l)return t;if("object"==typeof t&&t){if(4&l&&t.__esModule)return t;if(16&l&&"function"==typeof t.then)return t}var a=Object.create(null);o.r(a);var i={};e=e||[null,n({}),n([]),n(n)];for(var r=2&l&&t;"object"==typeof r&&!~e.indexOf(r);r=n(r))Object.getOwnPropertyNames(r).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,o.d(a,i),a},o.d=(e,n)=>{for(var t in n)o.o(n,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>i});const e=coreApis.componentApis.define;var n=o(605),t=o(176);const l=(0,e.defineOptionsMetadata)({autoMatchMedal:{defaultValue:!0,displayName:"自动佩戴当前直播间勋章"},maxBadgeCount:{defaultValue:256,displayName:"最大显示数量",validator:(0,n.getNumberValidator)(1,256)},defaultMedalID:{displayName:"默认勋章ID",hidden:!0,defaultValue:0},grayEffect:{displayName:"显示勋章的未点亮状态",defaultValue:!0}}),i=(0,e.defineComponentMetadata)({name:"badgeHelper",displayName:"直播勋章快速更换",entry:()=>(async()=>{const{getUID:e}=await Promise.resolve().then(o.t.bind(o,605,23));if(!e())return;const{getComponentSettings:n}=await Promise.resolve().then(o.t.bind(o,986,23)),{options:l}=n("badgeHelper");if(!l.autoMatchMedal)return;const a=document.URL.match(/^https:\/\/live\.bilibili\.com\/(blanc\/)?([\d]+)/);if(!a)return;const i=parseInt(a[2]);if(Number.isNaN(i))return void console.warn("roomID not found");const r=await(0,t.KK)();if(!l.defaultMedalID){const e=r.find((e=>e.isActive));e&&(l.defaultMedalID=e.id,console.log(`set defaultMedalID to activeMedal (${e.id})`))}const d=l.defaultMedalID?r.find((e=>e.id===l.defaultMedalID)):r.find((e=>e.isActive)),p=r.find((e=>e.roomID===i));p?(await p.activate(),console.log(`activated matchMedal (${p.id})`)):d&&(await d.activate(),console.log(`no matchMedal, fallback to defaultMedal (${d.id})`))})(),reload:n.none,unload:n.none,tags:[componentsTags.live],widget:{component:()=>Promise.resolve().then(o.bind(o,122)).then((e=>e.default)),condition:()=>Boolean((0,n.getUID)())},options:l,urlInclude:["//live.bilibili.com"],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=o(984);return{...Object.fromEntries(e.keys().map((n=>[n.match(/index\.(.+)\.md$/)[1],e(n)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,235,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/chat-panel-fit.js b/bb-evolved/registry/dist/components/live/chat-panel-fit.js index cfe98de671..06f29d8a6a 100644 --- a/bb-evolved/registry/dist/components/live/chat-panel-fit.js +++ b/bb-evolved/registry/dist/components/live/chat-panel-fit.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(r)for(var i=0;i{"use strict";var r,o=function(){return void 0===r&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -r=Boolean(window&&document&&document.all&&!window.atob)),r},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{var r=n(710);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var r=function(){var e=this,t=e._self._c,n=e._self._setupProxy;return t("div",{ref:"draggerElement",staticClass:"chat-panel-fit-dragger",class:{dragging:n.isDragging},style:{transform:`translateX(${-n.movement}px)`},on:{pointerdown:n.startDragging,pointermove:n.handlePointerMove,dblclick:n.resetCustomWidth}},[t("div",{staticClass:"chat-panel-fit-dragger-bar"}),e._v(" "),t("div",{staticClass:"chat-panel-fit-dragger-preview-area",style:{width:`${n.previewWidth}px`}},[t("div",{staticClass:"chat-panel-fit-dragger-preview-area-background"},[e._v("\n "+e._s(n.previewWidth.toFixed(1))+"px\n ")])])])};r._withStripped=!0;const o=globalThis.Vue;var i=n(986),a=n(519);const s=(0,o.defineComponent)({__name:"ChatPanelFitDragger",setup(e){const t=(0,o.reactive)((0,i.getComponentSettings)("liveChatPanelFit").options);(0,o.onBeforeMount)((()=>{0!==t.customWidth&&document.documentElement.style.setProperty("--live-chat-panel-width",`${t.customWidth}px`)}));const n=()=>parseFloat(document.documentElement.style.getPropertyValue("--live-chat-panel-width")),r=(0,o.ref)(),s=(0,o.ref)(0),l=(0,o.ref)(0),c=(0,o.computed)((()=>t.customWidth?t.customWidth+l.value:n())),d=(0,o.ref)(!1);return{__sfc:!0,options:t,getAutoWidth:n,draggerElement:r,startPoint:s,movement:l,previewWidth:c,isDragging:d,resetCustomWidth:()=>{t.customWidth=0,window.dispatchEvent(new CustomEvent("customWidthReset"))},handlePointerMove:e=>{if(!d.value)return;const n=s.value-e.screenX;l.value=lodash.clamp(t.customWidth+n,a.a,t.maxWidth)-t.customWidth},startDragging:e=>{d.value=!0,s.value=e.screenX,0===t.customWidth&&(t.customWidth=n()),r.value.setPointerCapture(e.pointerId),document.documentElement.style.cursor="ew-resize",document.documentElement.classList.add("custom-width-dragging"),document.documentElement.addEventListener("pointerup",(()=>{if(document.documentElement.style.cursor="",document.documentElement.classList.remove("custom-width-dragging"),d.value=!1,s.value=0,!l.value)return;const e=c.value;t.customWidth=e,l.value=0,document.documentElement.style.setProperty("--live-chat-panel-width",`${e}px`)}),{once:!0})}}}}),l=s;var c=n(332),d=n.n(c),u=n(181),p=n.n(u),f={insert:"head",singleton:!1};d()(p(),f);p().locals;var h=function(e,t,n,r,o,i,a,s){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),i&&(c._scopeId="data-v-"+i),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):o&&(l=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}(l,r,[],!1,null,null,null);const m=h.exports},427:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=427,e.exports=t},513:e=>{"use strict";e.exports="在直播网页全屏时, 自动调整侧边栏的宽度, 使得视频区域的比例和视频源相匹配, 达到无黑边的效果.\n如果在侧边栏的边缘拖动, 可以自定义侧边栏的固定宽度, 双击边缘可以还原到自动宽度.\n\n- `侧边栏最大宽度 (px)`: 限制侧边栏可被拉伸到的最大宽度. (最小宽度固定为 190px, 再小的话布局就要出问题了)\n\n> 注意, 由于有最大宽度和最小宽度的限制, 部分窗口尺寸下仍然无法做到无黑边.\n"},952:e=>{"use strict";e.exports=coreApis.componentApis.define},986:e=>{"use strict";e.exports=coreApis.settings},605:e=>{"use strict";e.exports=coreApis.utils}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return n[e](i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var i=Object.create(null);o.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,o.d(i,a),i},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>m});var e=o(952),t=o(986);const n=coreApis.spinQuery;var r=o(605);const a=coreApis.utils.log,s=coreApis.utils.urls;var l=o(519);const c="liveChatPanelFit",d=(0,a.useScopedConsole)(c),u=()=>{const{maxWidth:e,customWidth:n}=(0,t.getComponentSettings)(c).options;if(0!==n)return;const r=dq(".live-player-ctnr video");if(!r)return;const o=r.videoWidth,i=r.videoHeight;if(0===o||0===i)return;const{innerWidth:a,innerHeight:s}=window,u=a-o*s/i;d.log({liveChatPanelWidth:u}),document.documentElement.style.setProperty("--live-chat-panel-width",`${lodash.clamp(u,l.a,e)}px`)},p=lodash.debounce(u,200);let f;const h=async()=>{(0,t.addComponentListener)("liveChatPanelFit.targetRatio",u),(0,t.addComponentListener)("liveChatPanelFit.maxWidth",u),window.addEventListener("customWidthReset",u),window.addEventListener("resize",p);if(!await(0,n.sq)((()=>dq(".live-player-ctnr video")),(e=>null!==e&&e.readyState!==HTMLMediaElement.HAVE_NOTHING)))return void d.log("未找到 video 元素");u();const e=await(0,n.select)(".aside-area-toggle-btn");if(!e)return void d.log("未找到侧边栏按钮");const{default:i}=await Promise.resolve().then(o.bind(o,560));f=(0,r.mountVueComponent)(i),e.insertAdjacentElement("afterend",f.$el)},m=(0,e.defineComponentMetadata)({name:c,displayName:"直播间网页全屏自适应",tags:[componentsTags.live,componentsTags.style],urlInclude:[...s.liveUrls],entry:h,reload:h,unload:()=>{(0,t.removeComponentListener)("liveChatPanelFit.targetRatio",u),(0,t.removeComponentListener)("liveChatPanelFit.maxWidth",u),window.removeEventListener("customWidthReset",u),window.removeEventListener("resize",p),document.documentElement.style.removeProperty("--live-chat-panel-width"),f&&(f.$el.remove(),f.$destroy(),f=void 0)},instantStyles:[{name:c,style:()=>Promise.resolve().then(o.t.bind(o,188,23)),important:!0}],options:l.W,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=o(427);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,513,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +r=Boolean(window&&document&&document.all&&!window.atob)),r},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{var r=n(710);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var r=function(){var e=this,t=e._self._c,n=e._self._setupProxy;return t("div",{ref:"draggerElement",staticClass:"chat-panel-fit-dragger",class:{dragging:n.isDragging},style:{transform:`translateX(${-n.movement}px)`},on:{pointerdown:n.startDragging,pointermove:n.handlePointerMove,dblclick:n.resetCustomWidth}},[t("div",{staticClass:"chat-panel-fit-dragger-bar"}),e._v(" "),t("div",{staticClass:"chat-panel-fit-dragger-preview-area",style:{width:`${n.previewWidth}px`}},[t("div",{staticClass:"chat-panel-fit-dragger-preview-area-background"},[e._v("\n "+e._s(n.previewWidth.toFixed(1))+"px\n ")])])])};r._withStripped=!0;const o=globalThis.Vue;var i=n(986),a=n(519);const s=(0,o.defineComponent)({__name:"ChatPanelFitDragger",setup(e){const t=(0,o.reactive)((0,i.getComponentSettings)("liveChatPanelFit").options);(0,o.onBeforeMount)((()=>{0!==t.customWidth&&document.documentElement.style.setProperty("--live-chat-panel-width",`${t.customWidth}px`)}));const n=()=>parseFloat(document.documentElement.style.getPropertyValue("--live-chat-panel-width")),r=(0,o.ref)(),s=(0,o.ref)(0),l=(0,o.ref)(0),d=(0,o.computed)((()=>t.customWidth?t.customWidth+l.value:n())),c=(0,o.ref)(!1);return{__sfc:!0,options:t,getAutoWidth:n,draggerElement:r,startPoint:s,movement:l,previewWidth:d,isDragging:c,resetCustomWidth:()=>{t.customWidth=0,window.dispatchEvent(new CustomEvent("customWidthReset"))},handlePointerMove:e=>{if(!c.value)return;const n=s.value-e.screenX;l.value=lodash.clamp(t.customWidth+n,a.a,t.maxWidth)-t.customWidth},startDragging:e=>{c.value=!0,s.value=e.screenX,0===t.customWidth&&(t.customWidth=n()),r.value.setPointerCapture(e.pointerId),document.documentElement.style.cursor="ew-resize",document.documentElement.classList.add("custom-width-dragging"),document.documentElement.addEventListener("pointerup",(()=>{if(document.documentElement.style.cursor="",document.documentElement.classList.remove("custom-width-dragging"),c.value=!1,s.value=0,!l.value)return;const e=d.value;t.customWidth=e,l.value=0,document.documentElement.style.setProperty("--live-chat-panel-width",`${e}px`)}),{once:!0})}}}}),l=s;var d=n(332),c=n.n(d),u=n(181),p=n.n(u),f={insert:"head",singleton:!1};c()(p(),f);p().locals;var h=function(e,t,n,r,o,i,a,s){var l,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),r&&(d.functional=!0),i&&(d._scopeId="data-v-"+i),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},d._ssrRegister=l):o&&(l=s?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(d.functional){d._injectStyles=l;var c=d.render;d.render=function(e,t){return l.call(t),c(e,t)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:d}}(l,r,[],!1,null,null,null);const m=h.exports},427:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=427,e.exports=t},513:e=>{"use strict";e.exports="在直播网页全屏时, 自动调整侧边栏的宽度, 使得视频区域的比例和视频源相匹配, 达到无黑边的效果.\n如果在侧边栏的边缘拖动, 可以自定义侧边栏的固定宽度, 双击边缘可以还原到自动宽度.\n\n- `侧边栏最大宽度 (px)`: 限制侧边栏可被拉伸到的最大宽度. (最小宽度固定为 190px, 再小的话布局就要出问题了)\n\n> 注意, 由于有最大宽度和最小宽度的限制, 部分窗口尺寸下仍然无法做到无黑边.\n"},952:e=>{"use strict";e.exports=coreApis.componentApis.define},986:e=>{"use strict";e.exports=coreApis.settings},605:e=>{"use strict";e.exports=coreApis.utils}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return n[e](i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var i=Object.create(null);o.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,o.d(i,a),i},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>m});var e=o(952),t=o(986);const n=coreApis.spinQuery;var r=o(605);const a=coreApis.utils.log,s=coreApis.utils.urls;var l=o(519);const d="liveChatPanelFit",c=(0,a.useScopedConsole)(d),u=()=>{const{maxWidth:e,customWidth:n}=(0,t.getComponentSettings)(d).options;if(0!==n)return;const r=dq(".live-player-ctnr video");if(!r)return;const o=r.videoWidth,i=r.videoHeight;if(0===o||0===i)return;const{innerWidth:a,innerHeight:s}=window,u=a-o*s/i;c.log({liveChatPanelWidth:u}),document.documentElement.style.setProperty("--live-chat-panel-width",`${lodash.clamp(u,l.a,e)}px`)},p=lodash.debounce(u,200);let f;const h=async()=>{(0,t.addComponentListener)("liveChatPanelFit.targetRatio",u),(0,t.addComponentListener)("liveChatPanelFit.maxWidth",u),window.addEventListener("customWidthReset",u),window.addEventListener("resize",p);if(!await(0,n.sq)((()=>dq(".live-player-ctnr video")),(e=>null!==e&&e.readyState!==HTMLMediaElement.HAVE_NOTHING)))return void c.log("未找到 video 元素");u();const e=await(0,n.select)(".aside-area-toggle-btn");if(!e)return void c.log("未找到侧边栏按钮");const{default:i}=await Promise.resolve().then(o.bind(o,560));f=(0,r.mountVueComponent)(i),e.insertAdjacentElement("afterend",f.$el)},m=(0,e.defineComponentMetadata)({name:d,displayName:"直播间网页全屏自适应",tags:[componentsTags.live,componentsTags.style],urlInclude:[...s.liveUrls],entry:h,reload:h,unload:()=>{(0,t.removeComponentListener)("liveChatPanelFit.targetRatio",u),(0,t.removeComponentListener)("liveChatPanelFit.maxWidth",u),window.removeEventListener("customWidthReset",u),window.removeEventListener("resize",p),document.documentElement.style.removeProperty("--live-chat-panel-width"),f&&(f.$el.remove(),f.$destroy(),f=void 0)},instantStyles:[{name:d,style:()=>Promise.resolve().then(o.t.bind(o,188,23)),important:!0}],options:l.W,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=o(427);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,513,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/danmaku-sendbar.js b/bb-evolved/registry/dist/components/live/danmaku-sendbar.js index b35f6eba6c..4c48e0dc4c 100644 --- a/bb-evolved/registry/dist/components/live/danmaku-sendbar.js +++ b/bb-evolved/registry/dist/components/live/danmaku-sendbar.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(r)for(var a=0;a{"use strict";var r,o=function(){return void 0===r&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -r=Boolean(window&&document&&document.all&&!window.atob)),r},a=function(){var e={};return function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}e[n]=t}return e[n]}}(),i=[];function l(e){for(var n=-1,t=0;t{"use strict";t.r(n),t.d(n,{default:()=>m});var r=function(){var e=this,n=e._self._c;e._self._setupProxy;return n("div",{staticClass:"danmaku-send-bar"},[n("input",{attrs:{type:"text",placeholder:"发个弹幕呗~",maxlength:"30"},domProps:{value:e.value},on:{keydown:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:e.send()},input:function(n){return e.updateValue(n.target.value)}}})])};r._withStripped=!0;const o=coreApis.spinQuery;var a=t(605),i=t(826);let l=!1;const s=Vue.extend({data:()=>({originalTextArea:null,sendButton:null,value:""}),async mounted(){const e=await(0,o.select)(i.M6),n=await(0,o.select)(i.Jd);if(!e||!n)throw new Error(`[danmakuSendBar] ref elements not found. originalTextArea = ${null===e} sendButton = ${null===n}`);if(this.originalTextArea=e,this.sendButton=n,this.value=e.value,e.addEventListener("input",this.listenChange),e.addEventListener("change",this.listenChange),!l){const n=Object.getOwnPropertyDescriptors(HTMLTextAreaElement.prototype).value;Object.defineProperty(e,"value",{...n,set(t){n.set?.call(this,t),(0,a.raiseEvent)(e,"input")}}),l=!0}},beforeDestroy(){this.originalTextArea.removeEventListener("input",this.listenChange),this.originalTextArea.removeEventListener("change",this.listenChange)},methods:{updateValue(e){this.originalTextArea.value=e,(0,a.raiseEvent)(this.originalTextArea,"input")},send(){this.sendButton.disabled||(this.value="",this.sendButton.click())},listenChange(e){this.value=e.target.value}}});var d=t(332),u=t.n(d),c=t(597),p=t.n(c),f={insert:"head",singleton:!1};u()(p(),f);p().locals;var v=function(e,n,t,r,o,a,i,l){var s,d="function"==typeof e?e.options:e;if(n&&(d.render=n,d.staticRenderFns=t,d._compiled=!0),r&&(d.functional=!0),a&&(d._scopeId="data-v-"+a),i?(s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},d._ssrRegister=s):o&&(s=l?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),s)if(d.functional){d._injectStyles=s;var u=d.render;d.render=function(e,n){return s.call(n),u(e,n)}}else{var c=d.beforeCreate;d.beforeCreate=c?[].concat(c,s):[s]}return{exports:e,options:d}}(s,r,[],!1,null,null,null);const m=v.exports},605:e=>{"use strict";e.exports=coreApis.utils}},r={};function o(e){var n=r[e];if(void 0!==n)return n.exports;var a=r[e]={id:e,exports:{}};return t[e](a,a.exports,o),a.exports}o.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return o.d(n,{a:n}),n},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(t,r){if(1&r&&(t=this(t)),8&r)return t;if("object"==typeof t&&t){if(4&r&&t.__esModule)return t;if(16&r&&"function"==typeof t.then)return t}var a=Object.create(null);o.r(a);var i={};e=e||[null,n({}),n([]),n(n)];for(var l=2&r&&t;"object"==typeof l&&!~e.indexOf(l);l=n(l))Object.getOwnPropertyNames(l).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,o.d(a,i),a},o.d=(e,n)=>{for(var t in n)o.o(n,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>l});const e=coreApis.componentApis.live.liveControlBar,n=coreApis.componentApis.define;var t=o(605);const r=coreApis.utils.urls;var i=o(826);const l=(0,n.defineComponentMetadata)({name:"liveDanmakuSendbar",displayName:"直播弹幕发送栏",tags:[componentsTags.live],description:{"zh-CN":"在直播的网页全屏和全屏模式状态下, 在底部显示弹幕栏."},entry:async()=>{if(!(0,t.getUID)())return;let n;(0,e.waitForControlBar)({callback:async e=>{const t=dq(e,i.xO);if(!t)throw new Error("[danmakuSendBar] leftController not found");if(!dq(e,".danmaku-send-bar")){if(!n){const{mountVueComponent:e}=await Promise.resolve().then(o.t.bind(o,605,23)),t=await Promise.resolve().then(o.bind(o,880));n=e(t).$el}t.insertAdjacentElement("afterend",n)}}})},reload:()=>document.body.classList.remove("danmaku-send-bar-unloaded"),unload:()=>document.body.classList.add("danmaku-send-bar-unloaded"),urlInclude:r.liveUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +r=Boolean(window&&document&&document.all&&!window.atob)),r},a=function(){var e={};return function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}e[n]=t}return e[n]}}(),i=[];function l(e){for(var n=-1,t=0;t{"use strict";t.r(n),t.d(n,{default:()=>m});var r=function(){var e=this,n=e._self._c;e._self._setupProxy;return n("div",{staticClass:"danmaku-send-bar"},[n("input",{attrs:{type:"text",placeholder:"发个弹幕呗~",maxlength:"30"},domProps:{value:e.value},on:{keydown:function(n){return!n.type.indexOf("key")&&e._k(n.keyCode,"enter",13,n.key,"Enter")?null:e.send()},input:function(n){return e.updateValue(n.target.value)}}})])};r._withStripped=!0;const o=coreApis.spinQuery;var a=t(605),i=t(826);let l=!1;const s=Vue.extend({data:()=>({originalTextArea:null,sendButton:null,value:""}),async mounted(){const e=await(0,o.select)(i.M6),n=await(0,o.select)(i.Jd);if(!e||!n)throw new Error(`[danmakuSendBar] ref elements not found. originalTextArea = ${null===e} sendButton = ${null===n}`);if(this.originalTextArea=e,this.sendButton=n,this.value=e.value,e.addEventListener("input",this.listenChange),e.addEventListener("change",this.listenChange),!l){const n=Object.getOwnPropertyDescriptors(HTMLTextAreaElement.prototype).value;Object.defineProperty(e,"value",{...n,set(t){n.set?.call(this,t),(0,a.raiseEvent)(e,"input")}}),l=!0}},beforeDestroy(){this.originalTextArea.removeEventListener("input",this.listenChange),this.originalTextArea.removeEventListener("change",this.listenChange)},methods:{updateValue(e){this.originalTextArea.value=e,(0,a.raiseEvent)(this.originalTextArea,"input")},send(){this.sendButton.disabled||(this.value="",this.sendButton.click())},listenChange(e){this.value=e.target.value}}});var d=t(332),u=t.n(d),c=t(597),p=t.n(c),f={insert:"head",singleton:!1};u()(p(),f);p().locals;var v=function(e,n,t,r,o,a,i,l){var s,d="function"==typeof e?e.options:e;if(n&&(d.render=n,d.staticRenderFns=t,d._compiled=!0),r&&(d.functional=!0),a&&(d._scopeId="data-v-"+a),i?(s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},d._ssrRegister=s):o&&(s=l?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),s)if(d.functional){d._injectStyles=s;var u=d.render;d.render=function(e,n){return s.call(n),u(e,n)}}else{var c=d.beforeCreate;d.beforeCreate=c?[].concat(c,s):[s]}return{exports:e,options:d}}(s,r,[],!1,null,null,null);const m=v.exports},605:e=>{"use strict";e.exports=coreApis.utils}},r={};function o(e){var n=r[e];if(void 0!==n)return n.exports;var a=r[e]={id:e,exports:{}};return t[e](a,a.exports,o),a.exports}o.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return o.d(n,{a:n}),n},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(t,r){if(1&r&&(t=this(t)),8&r)return t;if("object"==typeof t&&t){if(4&r&&t.__esModule)return t;if(16&r&&"function"==typeof t.then)return t}var a=Object.create(null);o.r(a);var i={};e=e||[null,n({}),n([]),n(n)];for(var l=2&r&&t;"object"==typeof l&&!~e.indexOf(l);l=n(l))Object.getOwnPropertyNames(l).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,o.d(a,i),a},o.d=(e,n)=>{for(var t in n)o.o(n,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>l});const e=coreApis.componentApis.live.liveControlBar,n=coreApis.componentApis.define;var t=o(605);const r=coreApis.utils.urls;var i=o(826);const l=(0,n.defineComponentMetadata)({name:"liveDanmakuSendbar",displayName:"直播弹幕发送栏",tags:[componentsTags.live],description:{"zh-CN":"在直播的网页全屏和全屏模式状态下, 在底部显示弹幕栏."},entry:async()=>{if(!(0,t.getUID)())return;let n;(0,e.waitForControlBar)({callback:async e=>{const t=dq(e,i.xO);if(!t)throw new Error("[danmakuSendBar] leftController not found");if(!dq(e,".danmaku-send-bar")){if(!n){const{mountVueComponent:e}=await Promise.resolve().then(o.t.bind(o,605,23)),t=await Promise.resolve().then(o.bind(o,880));n=e(t).$el}t.insertAdjacentElement("afterend",n)}}})},reload:()=>document.body.classList.remove("danmaku-send-bar-unloaded"),unload:()=>document.body.classList.add("danmaku-send-bar-unloaded"),urlInclude:r.liveUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/gift-box.js b/bb-evolved/registry/dist/components/live/gift-box.js index 741c1a4c0f..ac59d4ccfe 100644 --- a/bb-evolved/registry/dist/components/live/gift-box.js +++ b/bb-evolved/registry/dist/components/live/gift-box.js @@ -6,4 +6,4 @@ t.i=function(n,e,r){"string"==typeof n&&( // eslint-disable-next-line no-param-reassign n=[[null,n,""]]);var o={};if(r)for(var i=0;i{var r=e(739);r&&r.__esModule&&(r=r.default),n.exports="string"==typeof r?r:r.toString()}},t={};function e(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={id:r,exports:{}};return n[r](i,i.exports,e),i.exports}e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var r in t)e.o(t,r)&&!e.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:t[r]})},e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t);var r={};return(()=>{"use strict";e.d(r,{component:()=>x});const n=coreApis.componentApis.live.liveControlBar,t=coreApis.componentApis.define,o=coreApis.spinQuery,i=coreApis.style,l=coreApis.utils.urls;var a=e(411),c=e.n(a);const p="player-full-win",f="fullscreen-fix",u="full-win-gift-btn-wrapper",s="liveGiftBox";let d=null,g=null,b=null;function w(){return document.body.classList.contains(p)||document.body.classList.contains(f)}function m(n,t){const e=dq(n,".right-area");if(e){const n=document.createElement("div");n.className=u,n.appendChild(t),e.appendChild(n)}else console.warn("[liveGiftBox] .right-area could not be found in control bar")}function v(n,t){return function(n){function t(n){const t=w(),e=n.oldValue.split(" ");return t===(e.includes(p)||e.includes(f))?null:t}const e=new MutationObserver((e=>{for(const r of e){const e=t(r);null!==e&&n(e)}}));return e?.observe(document.body,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0}),()=>e.disconnect()}((e=>{e?function(n){const t=dq(".control-area");t&&m(t,n)}(n):function(n,t){t.appendChild(n)}(n,t)}))}async function h(){(0,i.addStyle)(c(),s);const n=await async function(){const n=await(0,o.select)(".z-gift-package",{maxRetry:15,queryInterval:200});return n||console.warn("[liveGiftBox] the parent element of gift button not found"),n}();d=n?.children[0],n&&d&&(g=v(d,n),b=function(n){const t=dq("#live-player");if(!t)return console.warn("[liveGiftBox] live player not found"),null;function e(){dq(".full-win-gift-btn-wrapper .wrap")&&n.click()}return t.addEventListener("mouseleave",e),()=>t.removeEventListener("mouseleave",e)}(d))}const x=(0,t.defineComponentMetadata)({name:s,displayName:"直播全屏包裹",description:{"zh-CN":"在直播的网页全屏(不能是全屏)模式下往控制栏添加包裹按钮."},urlInclude:l.liveUrls,tags:[componentsTags.live],entry:function(){(0,n.waitForControlBar)({callback:function(n){const t=w();d&&t&&m(n,d)}}),h()},reload:h,unload:function(){b?.call(null),b=null,g?.call(null),g=null,d=null,(0,i.removeStyle)(s)},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(o[a]=!0)}for(var l=0;l{var r=e(739);r&&r.__esModule&&(r=r.default),n.exports="string"==typeof r?r:r.toString()}},t={};function e(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={id:r,exports:{}};return n[r](i,i.exports,e),i.exports}e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var r in t)e.o(t,r)&&!e.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:t[r]})},e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t);var r={};return(()=>{"use strict";e.d(r,{component:()=>x});const n=coreApis.componentApis.live.liveControlBar,t=coreApis.componentApis.define,o=coreApis.spinQuery,i=coreApis.style,a=coreApis.utils.urls;var l=e(411),c=e.n(l);const p="player-full-win",u="fullscreen-fix",f="full-win-gift-btn-wrapper",s="liveGiftBox";let d=null,g=null,w=null;function b(){return document.body.classList.contains(p)||document.body.classList.contains(u)}function m(n,t){const e=dq(n,".right-area");if(e){const n=document.createElement("div");n.className=f,n.appendChild(t),e.appendChild(n)}else console.warn("[liveGiftBox] .right-area could not be found in control bar")}function v(n,t){return function(n){function t(n){const t=b(),e=n.oldValue.split(" ");return t===(e.includes(p)||e.includes(u))?null:t}const e=new MutationObserver((e=>{for(const r of e){const e=t(r);null!==e&&n(e)}}));return e?.observe(document.body,{attributes:!0,attributeFilter:["class"],attributeOldValue:!0}),()=>e.disconnect()}((e=>{e?function(n){const t=dq(".control-area");t&&m(t,n)}(n):function(n,t){t.appendChild(n)}(n,t)}))}async function h(){(0,i.addStyle)(c(),s);const n=await async function(){const n=await(0,o.select)(".z-gift-package",{maxRetry:15,queryInterval:200});return n||console.warn("[liveGiftBox] the parent element of gift button not found"),n}();d=n?.children[0],n&&d&&(g=v(d,n),w=function(n){const t=dq("#live-player");if(!t)return console.warn("[liveGiftBox] live player not found"),null;function e(){dq(".full-win-gift-btn-wrapper .wrap")&&n.click()}return t.addEventListener("mouseleave",e),()=>t.removeEventListener("mouseleave",e)}(d))}const x=(0,t.defineComponentMetadata)({name:s,displayName:"直播全屏包裹",description:{"zh-CN":"在直播的网页全屏(不能是全屏)模式下往控制栏添加包裹按钮."},urlInclude:a.liveUrls,tags:[componentsTags.live],entry:function(){(0,n.waitForControlBar)({callback:function(n){const t=b();d&&t&&m(n,d)}}),h()},reload:h,unload:function(){w?.call(null),w=null,g?.call(null),g=null,d=null,(0,i.removeStyle)(s)},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/hide-gift-fullscreen.js b/bb-evolved/registry/dist/components/live/hide-gift-fullscreen.js index 447166fa63..92f55dba60 100644 --- a/bb-evolved/registry/dist/components/live/hide-gift-fullscreen.js +++ b/bb-evolved/registry/dist/components/live/hide-gift-fullscreen.js @@ -6,4 +6,4 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(o)for(var i=0;i{var o=n(982);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&o&&n;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"hide-fullscreen-gift-bar",displayName:"全屏直播礼物简化",description:"移除全屏观看直播时的底部礼物栏",author:{name:"TimmyOVO",link:"https://github.com/TimmyOVO"},instantStyles:[{name:"hide-fullscreen-gift",style:()=>Promise.resolve().then(r.t.bind(r,594,23))}],entry:none,tags:[componentsTags.live,componentsTags.style],urlInclude:t.liveUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var c=0;c{var o=n(982);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&o&&n;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"hide-fullscreen-gift-bar",displayName:"全屏直播礼物简化",description:"移除全屏观看直播时的底部礼物栏",author:{name:"TimmyOVO",link:"https://github.com/TimmyOVO"},instantStyles:[{name:"hide-fullscreen-gift",style:()=>Promise.resolve().then(r.t.bind(r,594,23))}],entry:none,tags:[componentsTags.live,componentsTags.style],urlInclude:t.liveUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/home-mute.js b/bb-evolved/registry/dist/components/live/home-mute.js index d75b1a96cd..609476b768 100644 --- a/bb-evolved/registry/dist/components/live/home-mute.js +++ b/bb-evolved/registry/dist/components/live/home-mute.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["live/home-mute"]=t():e["live/home-mute"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={200:e=>{e.exports=coreApis.spinQuery},605:e=>{e.exports=coreApis.utils}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.settings,o=coreApis.style,r=/^https:\/\/live\.bilibili\.com\/(index\.html)?$/,a=(0,e.defineComponentMetadata)({name:"liveHomeMute",displayName:"直播首页静音",tags:[componentsTags.live],description:{"zh-CN":"禁止直播首页的推荐直播间自动开始播放."},entry:async e=>{let{metadata:r}=e;const n="hide-home-live";(0,t.addComponentListener)(`${r.name}.hide`,(e=>{e?(0,o.addStyle)(".player-area-ctnr,#player-header { display: none !important }",n):(0,o.removeStyle)(n)}),!0)},options:{hide:{displayName:"隐藏首页直播板块",defaultValue:!1}},urlInclude:[r],plugin:{displayName:"直播首页静音 - 提前执行",description:{"zh-CN":"提前执行代码以尽快静音."},async setup(){const{matchUrlPattern:e}=await Promise.resolve().then(n.t.bind(n,605,23));if(!e(r))return;const{select:t}=await Promise.resolve().then(n.t.bind(n,200,23));t("video").then((e=>{e.muted=!0}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["live/home-mute"]=t():e["live/home-mute"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={200:e=>{e.exports=coreApis.spinQuery},605:e=>{e.exports=coreApis.utils}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.settings,o=coreApis.style,r=/^https:\/\/live\.bilibili\.com\/(index\.html)?$/,a=(0,e.defineComponentMetadata)({name:"liveHomeMute",displayName:"直播首页静音",tags:[componentsTags.live],description:{"zh-CN":"禁止直播首页的推荐直播间自动开始播放."},entry:async e=>{let{metadata:r}=e;const n="hide-home-live";(0,t.addComponentListener)(`${r.name}.hide`,(e=>{e?(0,o.addStyle)(".player-area-ctnr,#player-header { display: none !important }",n):(0,o.removeStyle)(n)}),!0)},options:{hide:{displayName:"隐藏首页直播板块",defaultValue:!1}},urlInclude:[r],plugin:{displayName:"直播首页静音 - 提前执行",description:{"zh-CN":"提前执行代码以尽快静音."},async setup(){const{matchUrlPattern:e}=await Promise.resolve().then(n.t.bind(n,605,23));if(!e(r))return;const{select:t}=await Promise.resolve().then(n.t.bind(n,200,23));t("video").then((e=>{e.muted=!0}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/original.js b/bb-evolved/registry/dist/components/live/original.js index e7983e0636..6719b23391 100644 --- a/bb-evolved/registry/dist/components/live/original.js +++ b/bb-evolved/registry/dist/components/live/original.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["live/original"]=t():e["live/original"]=t()}(globalThis,(()=>(()=>{"use strict";var e={844:(e,t,o)=>{o.d(t,{u:()=>n});const n=e=>{const t=e.match(/^https:\/\/live\.bilibili\.com\/([\d]+)/);return t?`https://live.bilibili.com/blanc/${t[1]}`:e}},157:(e,t,o)=>{o.r(t),o.d(t,{default:()=>a});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{attrs:{href:e.href,tabindex:"-1"}},[t("DefaultWidget",{attrs:{name:"返回原版直播间",icon:"mdi-arrow-left-circle-outline"}})],1)};n._withStripped=!0;const i=coreApis.ui;var r=o(844);var s=function(e,t,o,n,i,r,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=o,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(Vue.extend({components:{DefaultWidget:i.DefaultWidget},data:()=>({href:(0,r.u)(document.URL)})}),n,[],!1,null,null,null);const a=s.exports}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,o),r.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.d(n,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils;var i=o(844);const r=(0,e.defineComponentMetadata)({name:"originalLiveroom",displayName:"返回原版直播间",description:"在直播间中提供返回原版直播间的按钮, 原版直播间将无视活动皮肤, 强制使用标准的直播页面.",tags:[componentsTags.live],entry:e=>{let{settings:o}=e;(0,t.isNotHtml)()||(0,t.isIframe)()||o.options.defaultBack&&window.location.assign((0,i.u)(document.URL))},options:{defaultBack:{displayName:"默认返回原版直播间",defaultValue:!1}},urlInclude:[/^https:\/\/live\.bilibili\.com\/[\d]+/],widget:{component:()=>Promise.resolve().then(o.bind(o,157)).then((e=>e.default)),condition:()=>(0,t.matchUrlPattern)(/^https:\/\/live\.bilibili\.com\/([\d]+)/)},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),n=n.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["live/original"]=t():e["live/original"]=t()}(globalThis,(()=>(()=>{"use strict";var e={844:(e,t,o)=>{o.d(t,{u:()=>n});const n=e=>{const t=e.match(/^https:\/\/live\.bilibili\.com\/([\d]+)/);return t?`https://live.bilibili.com/blanc/${t[1]}`:e}},157:(e,t,o)=>{o.r(t),o.d(t,{default:()=>s});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{attrs:{href:e.href,tabindex:"-1"}},[t("DefaultWidget",{attrs:{name:"返回原版直播间",icon:"mdi-arrow-left-circle-outline"}})],1)};n._withStripped=!0;const i=coreApis.ui;var r=o(844);var a=function(e,t,o,n,i,r,a,s){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=o,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(Vue.extend({components:{DefaultWidget:i.DefaultWidget},data:()=>({href:(0,r.u)(document.URL)})}),n,[],!1,null,null,null);const s=a.exports}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,o),r.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.d(n,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils;var i=o(844);const r=(0,e.defineComponentMetadata)({name:"originalLiveroom",displayName:"返回原版直播间",description:"在直播间中提供返回原版直播间的按钮, 原版直播间将无视活动皮肤, 强制使用标准的直播页面.",tags:[componentsTags.live],entry:e=>{let{settings:o}=e;(0,t.isNotHtml)()||(0,t.isIframe)()||o.options.defaultBack&&window.location.assign((0,i.u)(document.URL))},options:{defaultBack:{displayName:"默认返回原版直播间",defaultValue:!1}},urlInclude:[/^https:\/\/live\.bilibili\.com\/[\d]+/],widget:{component:()=>Promise.resolve().then(o.bind(o,157)).then((e=>e.default)),condition:()=>(0,t.matchUrlPattern)(/^https:\/\/live\.bilibili\.com\/([\d]+)/)},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),n=n.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/remove-watermark.js b/bb-evolved/registry/dist/components/live/remove-watermark.js index b3257efab5..16e8f5c416 100644 --- a/bb-evolved/registry/dist/components/live/remove-watermark.js +++ b/bb-evolved/registry/dist/components/live/remove-watermark.js @@ -6,4 +6,4 @@ t.i=function(e,o,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(r)for(var i=0;i{var r=o(593);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({...(0,t.toggleStyle)("removeLiveWatermark",(()=>Promise.resolve().then(n.t.bind(n,467,23)))),displayName:"删除直播水印",tags:[componentsTags.live,componentsTags.style],description:{"zh-CN":"删除观看直播时角落的水印."},urlInclude:o.liveUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(n[a]=!0)}for(var c=0;c{var r=o(593);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({...(0,t.toggleStyle)("removeLiveWatermark",(()=>Promise.resolve().then(n.t.bind(n,467,23)))),displayName:"删除直播水印",tags:[componentsTags.live,componentsTags.style],description:{"zh-CN":"删除观看直播时角落的水印."},urlInclude:o.liveUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/showgirl.js b/bb-evolved/registry/dist/components/live/showgirl.js index 14185367c2..6fc29cb742 100644 --- a/bb-evolved/registry/dist/components/live/showgirl.js +++ b/bb-evolved/registry/dist/components/live/showgirl.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["live/showgirl"]=t():e["live/showgirl"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={356:e=>{e.exports=coreApis.style}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var l=2&n&&o;"object"==typeof l&&!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o="dpi-live-showgirl",n=async()=>{const{addStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23));null===document.getElementById(o)&&e(`\n .haruna-ctnr,\n .avatar-btn\n {\n transform: scale(${1/window.devicePixelRatio}) !important;\n }\n `,o)},a=(0,e.defineComponentMetadata)({name:"dpiLiveShowgirl",displayName:"直播看板娘高 DPI 适配",enabledByDefault:window.devicePixelRatio>1,description:{"zh-CN":"根据屏幕 DPI 缩放直播看板娘的大小, 避免像素锯齿."},tags:[componentsTags.live,componentsTags.style],entry:n,reload:n,unload:()=>{document.getElementById(o)?.remove()},urlInclude:t.liveUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["live/showgirl"]=t():e["live/showgirl"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={356:e=>{e.exports=coreApis.style}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var l=2&n&&o;"object"==typeof l&&!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o="dpi-live-showgirl",n=async()=>{const{addStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23));null===document.getElementById(o)&&e(`\n .haruna-ctnr,\n .avatar-btn\n {\n transform: scale(${1/window.devicePixelRatio}) !important;\n }\n `,o)},a=(0,e.defineComponentMetadata)({name:"dpiLiveShowgirl",displayName:"直播看板娘高 DPI 适配",enabledByDefault:window.devicePixelRatio>1,description:{"zh-CN":"根据屏幕 DPI 缩放直播看板娘的大小, 避免像素锯齿."},tags:[componentsTags.live,componentsTags.style],entry:n,reload:n,unload:()=>{document.getElementById(o)?.remove()},urlInclude:t.liveUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/live/side-bar.js b/bb-evolved/registry/dist/components/live/side-bar.js index f84b234afd..ad952932e8 100644 --- a/bb-evolved/registry/dist/components/live/side-bar.js +++ b/bb-evolved/registry/dist/components/live/side-bar.js @@ -6,4 +6,4 @@ r.i=function(e,t,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var o={};if(n)for(var a=0;a{var n=t(375);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={id:e,exports:{}};return t[e](a,a.exports,o),a.exports}r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var a=Object.create(null);o.r(a);var i={};e=e||[null,r({}),r([]),r(r)];for(var s=2&n&&t;"object"==typeof s&&!~e.indexOf(s);s=r(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,o.d(a,i),a},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>t});const e=coreApis.componentApis.define,r=coreApis.utils.urls,t=(0,e.defineComponentMetadata)({name:"collapseLiveSideBar",entry:none,instantStyles:[{name:"collapseLiveSideBar",style:()=>Promise.resolve().then(o.t.bind(o,923,23))}],displayName:"自动收起直播侧栏",description:'自动收起直播间右边偏下的侧栏. (上面有个 "关注" 的面板)',tags:[componentsTags.live,componentsTags.style],urlInclude:r.liveUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +var i=this[a][0];null!=i&&(o[i]=!0)}for(var s=0;s{var n=t(375);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={id:e,exports:{}};return t[e](a,a.exports,o),a.exports}r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var a=Object.create(null);o.r(a);var i={};e=e||[null,r({}),r([]),r(r)];for(var s=2&n&&t;"object"==typeof s&&!~e.indexOf(s);s=r(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,o.d(a,i),a},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>t});const e=coreApis.componentApis.define,r=coreApis.utils.urls,t=(0,e.defineComponentMetadata)({name:"collapseLiveSideBar",entry:none,instantStyles:[{name:"collapseLiveSideBar",style:()=>Promise.resolve().then(o.t.bind(o,923,23))}],displayName:"自动收起直播侧栏",description:'自动收起直播间右边偏下的侧栏. (上面有个 "关注" 的面板)',tags:[componentsTags.live,componentsTags.style],urlInclude:r.liveUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/always-show-duration.js b/bb-evolved/registry/dist/components/style/always-show-duration.js index 937c2a3fa3..bcbf356aac 100644 --- a/bb-evolved/registry/dist/components/style/always-show-duration.js +++ b/bb-evolved/registry/dist/components/style/always-show-duration.js @@ -1,9 +1,9 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["style/always-show-duration"]=e():t["style/always-show-duration"]=e()}(globalThis,(()=>(()=>{var t,e,o={581:(t,e,o)=>{var r=o(218)((function(t){return t[1]}));r.push([t.id,".watchlater-card .duration,\n.time-group-item .duration,\n.favorite-card .duration,\n.video-card .duration {\n opacity: 1 !important;\n}",""]),t.exports=r},218:t=>{"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/always-show-duration"]=t():e["style/always-show-duration"]=t()}(globalThis,(()=>(()=>{var e,t,o={581:(e,t,o)=>{var r=o(218)((function(e){return e[1]}));r.push([e.id,".watchlater-card .duration,\n.time-group-item .duration,\n.favorite-card .duration,\n.video-card .duration {\n opacity: 1 !important;\n}",""]),e.exports=r},218:e=>{"use strict"; // eslint-disable-next-line func-names -t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var o=t(e);return e[2]?"@media ".concat(e[2]," {").concat(o,"}"):o})).join("")}, +e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=e(t);return t[2]?"@media ".concat(t[2]," {").concat(o,"}"):o})).join("")}, // eslint-disable-next-line func-names -e.i=function(t,o,r){"string"==typeof t&&( +t.i=function(e,o,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign -t=[[null,t,""]]);var n={};if(r)for(var a=0;a{var r=o(581);r&&r.__esModule&&(r=r.default),t.exports="string"==typeof r?r:r.toString()}},r={};function n(t){var e=r[t];if(void 0!==e)return e.exports;var a=r[t]={id:t,exports:{}};return o[t](a,a.exports,n),a.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var i={};t=t||[null,e({}),e([]),e(e)];for(var c=2&r&&o;"object"==typeof c&&!~t.indexOf(c);c=e(c))Object.getOwnPropertyNames(c).forEach((t=>i[t]=()=>o[t]));return i.default=()=>o,n.d(a,i),a},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>e});const t=coreApis.componentApis.styledComponent,e=(0,coreApis.componentApis.define.defineComponentMetadata)({...(0,t.toggleStyle)("alwaysShowDuration",(()=>Promise.resolve().then(n.t.bind(n,840,23)))),displayName:"总是显示视频时长",description:{"zh-CN":"使脚本展示的各种视频卡片中的时长无需鼠标经过也能一直显示."},tags:[componentsTags.video,componentsTags.style],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +var i=this[a][0];null!=i&&(n[i]=!0)}for(var c=0;c{var r=o(581);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,exports:{}};return o[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(a,i),a},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>t});const e=coreApis.componentApis.styledComponent,t=(0,coreApis.componentApis.define.defineComponentMetadata)({...(0,e.toggleStyle)("alwaysShowDuration",(()=>Promise.resolve().then(n.t.bind(n,840,23)))),displayName:"总是显示视频时长",description:{"zh-CN":"使脚本展示的各种视频卡片中的时长无需鼠标经过也能一直显示."},tags:[componentsTags.video,componentsTags.style],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/auto-hide-sidebar.js b/bb-evolved/registry/dist/components/style/auto-hide-sidebar.js index 9e45e6ad39..d1cc6aa749 100644 --- a/bb-evolved/registry/dist/components/style/auto-hide-sidebar.js +++ b/bb-evolved/registry/dist/components/style/auto-hide-sidebar.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(715);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.settings,o=coreApis.utils,n=(0,e.defineComponentMetadata)({name:"autoHideSidebar",entry:()=>{(0,t.addComponentListener)("autoHideSidebar.triggerWidth",(e=>{document.documentElement.style.setProperty("--auto-hide-sidebar-width",`${e}px`)}),!0)},displayName:"自动隐藏侧栏",instantStyles:[{name:"autoHideSidebar",style:()=>Promise.resolve().then(r.t.bind(r,769,23)),important:!0}],tags:[componentsTags.style,componentsTags.general],options:{triggerWidth:{defaultValue:8,displayName:"触发区域宽度 (px)",validator:(0,o.getNumberValidator)(1,1e3)}},description:{"zh-CN":"自动隐藏脚本的侧栏 (功能和设置图标). 设置面板停靠在右侧时不建议使用, 因为网页的滚动条会占用右边缘的触发区域."},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var n=o(715);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.settings,o=coreApis.utils,n=(0,e.defineComponentMetadata)({name:"autoHideSidebar",entry:()=>{(0,t.addComponentListener)("autoHideSidebar.triggerWidth",(e=>{document.documentElement.style.setProperty("--auto-hide-sidebar-width",`${e}px`)}),!0)},displayName:"自动隐藏侧栏",instantStyles:[{name:"autoHideSidebar",style:()=>Promise.resolve().then(r.t.bind(r,769,23)),important:!0}],tags:[componentsTags.style,componentsTags.general],options:{triggerWidth:{defaultValue:8,displayName:"触发区域宽度 (px)",validator:(0,o.getNumberValidator)(1,1e3)}},description:{"zh-CN":"自动隐藏脚本的侧栏 (功能和设置图标). 设置面板停靠在右侧时不建议使用, 因为网页的滚动条会占用右边缘的触发区域."},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/clear-home.js b/bb-evolved/registry/dist/components/style/clear-home.js index 4efc396ea7..f6e97cd0a6 100644 --- a/bb-evolved/registry/dist/components/style/clear-home.js +++ b/bb-evolved/registry/dist/components/style/clear-home.js @@ -1 +1 @@ -!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?exports["style/clear-home"]=a():e["style/clear-home"]=a()}(globalThis,(()=>(()=>{"use strict";var e={d:(a,l)=>{for(var t in l)e.o(l,t)&&!e.o(a,t)&&Object.defineProperty(a,t,{enumerable:!0,get:l[t]})},o:(e,a)=>Object.prototype.hasOwnProperty.call(e,a)},a={};e.d(a,{component:()=>c});const l=coreApis.componentApis.define,t=coreApis.settings,s=[];let d=!1,i=!0;const o=(0,l.defineOptionsMetadata)({广告:{displayName:"广告",defaultValue:!0},番剧:{displayName:"番剧",defaultValue:!0},电影:{displayName:"电影",defaultValue:!0},国创:{displayName:"国创",defaultValue:!0},电视剧:{displayName:"电视剧",defaultValue:!0},综艺:{displayName:"综艺",defaultValue:!0},纪录片:{displayName:"纪录片",defaultValue:!0},动画:{displayName:"动画",defaultValue:!0},游戏:{displayName:"游戏",defaultValue:!0},鬼畜:{displayName:"鬼畜",defaultValue:!0},音乐:{displayName:"音乐",defaultValue:!0},舞蹈:{displayName:"舞蹈",defaultValue:!0},影视:{displayName:"影视",defaultValue:!0},娱乐:{displayName:"娱乐",defaultValue:!0},知识:{displayName:"知识",defaultValue:!0},科技:{displayName:"科技",defaultValue:!0},资讯:{displayName:"资讯",defaultValue:!0},美食:{displayName:"美食",defaultValue:!0},生活:{displayName:"生活",defaultValue:!0},汽车:{displayName:"汽车",defaultValue:!0},时尚:{displayName:"时尚",defaultValue:!0},运动:{displayName:"运动",defaultValue:!0},动物圈:{displayName:"动物圈",defaultValue:!0},VLOG:{displayName:"VLOG",defaultValue:!0},搞笑:{displayName:"搞笑",defaultValue:!0},单机游戏:{displayName:"单机游戏",defaultValue:!0},虚拟UP主:{displayName:"虚拟UP主",defaultValue:!0},公益:{displayName:"公益",defaultValue:!0},公开课:{displayName:"公开课",defaultValue:!0},专栏:{displayName:"专栏",defaultValue:!0},直播:{displayName:"直播",defaultValue:!0},赛事:{displayName:"赛事",defaultValue:!0},活动:{displayName:"活动",defaultValue:!0},课堂:{displayName:"课堂",defaultValue:!0},社区中心:{displayName:"社区中心",defaultValue:!0},新歌热榜:{displayName:"新歌热榜",defaultValue:!0},漫画:{displayName:"漫画",defaultValue:!0}});function u(e){for(const a of e)if(a.classList)if(a.classList.contains("floor-single-card")){const e=a.querySelector(".badge").textContent;e&&s.includes(e)&&a.remove()}else a.classList.contains("bili-live-card")?d&&a.remove():(a.classList.contains("bili-video-card")||a.classList.contains("feed-card"))&&i&&(a.querySelector(".bili-video-card__info--ad")||a.querySelector(".bili-video-card__info--creative-ad"))&&a.remove()}function n(e){const a=[];for(const l of e){const e=l.target;if(!(e.classList&&e.classList.contains("carousel-transform")||"SPAN"===e.tagName)&&l.addedNodes.length>0)for(const e of l.addedNodes){const l=e;"#text"===l.nodeName||l.classList&&l.classList.contains("bili-watch-later")||a.push(l)}}a.length>0&&u(a)}const c=(0,l.defineComponentMetadata)({name:"clear-home",author:{name:"RieN7",link:"https://github.com/rien7"},tags:[componentsTags.style],displayName:"首页净化",description:"删除首页特定类型的卡片",entry:async e=>{let{metadata:a,settings:l}=e;const o=document.querySelector("main > .feed2 > .recommended-container_floor-aside > .container");if(!o)return;new MutationObserver(n).observe(o,{childList:!0}),Object.keys(l.options).forEach((e=>{(0,t.addComponentListener)(`${a.name}.${e}`,(a=>{if(a){if("广告"===e)return void(i=!0);s.push(e),"直播"===e&&(d=!0)}}),!0)}));u(o.children)},options:o,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return a=a.component})())); \ No newline at end of file +!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?exports["style/clear-home"]=a():e["style/clear-home"]=a()}(globalThis,(()=>(()=>{"use strict";var e={d:(a,l)=>{for(var t in l)e.o(l,t)&&!e.o(a,t)&&Object.defineProperty(a,t,{enumerable:!0,get:l[t]})},o:(e,a)=>Object.prototype.hasOwnProperty.call(e,a)},a={};e.d(a,{component:()=>c});const l=coreApis.componentApis.define,t=coreApis.settings,d=[];let s=!1,i=!0;const o=(0,l.defineOptionsMetadata)({广告:{displayName:"广告",defaultValue:!0},番剧:{displayName:"番剧",defaultValue:!0},电影:{displayName:"电影",defaultValue:!0},国创:{displayName:"国创",defaultValue:!0},电视剧:{displayName:"电视剧",defaultValue:!0},综艺:{displayName:"综艺",defaultValue:!0},纪录片:{displayName:"纪录片",defaultValue:!0},动画:{displayName:"动画",defaultValue:!0},游戏:{displayName:"游戏",defaultValue:!0},鬼畜:{displayName:"鬼畜",defaultValue:!0},音乐:{displayName:"音乐",defaultValue:!0},舞蹈:{displayName:"舞蹈",defaultValue:!0},影视:{displayName:"影视",defaultValue:!0},娱乐:{displayName:"娱乐",defaultValue:!0},知识:{displayName:"知识",defaultValue:!0},科技:{displayName:"科技",defaultValue:!0},资讯:{displayName:"资讯",defaultValue:!0},美食:{displayName:"美食",defaultValue:!0},生活:{displayName:"生活",defaultValue:!0},汽车:{displayName:"汽车",defaultValue:!0},时尚:{displayName:"时尚",defaultValue:!0},运动:{displayName:"运动",defaultValue:!0},动物圈:{displayName:"动物圈",defaultValue:!0},VLOG:{displayName:"VLOG",defaultValue:!0},搞笑:{displayName:"搞笑",defaultValue:!0},单机游戏:{displayName:"单机游戏",defaultValue:!0},虚拟UP主:{displayName:"虚拟UP主",defaultValue:!0},公益:{displayName:"公益",defaultValue:!0},公开课:{displayName:"公开课",defaultValue:!0},专栏:{displayName:"专栏",defaultValue:!0},直播:{displayName:"直播",defaultValue:!0},赛事:{displayName:"赛事",defaultValue:!0},活动:{displayName:"活动",defaultValue:!0},课堂:{displayName:"课堂",defaultValue:!0},社区中心:{displayName:"社区中心",defaultValue:!0},新歌热榜:{displayName:"新歌热榜",defaultValue:!0},漫画:{displayName:"漫画",defaultValue:!0}});function u(e){for(const a of e)if(a.classList)if(a.classList.contains("floor-single-card")){const e=a.querySelector(".badge").textContent;e&&d.includes(e)&&a.remove()}else a.classList.contains("bili-live-card")?s&&a.remove():(a.classList.contains("bili-video-card")||a.classList.contains("feed-card"))&&i&&(a.querySelector(".bili-video-card__info--ad")||a.querySelector(".bili-video-card__info--creative-ad"))&&a.remove()}function n(e){const a=[];for(const l of e){const e=l.target;if(!(e.classList&&e.classList.contains("carousel-transform")||"SPAN"===e.tagName)&&l.addedNodes.length>0)for(const e of l.addedNodes){const l=e;"#text"===l.nodeName||l.classList&&l.classList.contains("bili-watch-later")||a.push(l)}}a.length>0&&u(a)}const c=(0,l.defineComponentMetadata)({name:"clear-home",author:{name:"RieN7",link:"https://github.com/rien7"},tags:[componentsTags.style],displayName:"首页净化",description:"删除首页特定类型的卡片",entry:async e=>{let{metadata:a,settings:l}=e;const o=document.querySelector("main > .feed2 > .recommended-container_floor-aside > .container");if(!o)return;new MutationObserver(n).observe(o,{childList:!0}),Object.keys(l.options).forEach((e=>{(0,t.addComponentListener)(`${a.name}.${e}`,(a=>{if(a){if("广告"===e)return void(i=!0);d.push(e),"直播"===e&&(s=!0)}}),!0)}));u(o.children)},options:o,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/custom-font-family.js b/bb-evolved/registry/dist/components/style/custom-font-family.js index 3a20b3b7e4..c5f7442f1f 100644 --- a/bb-evolved/registry/dist/components/style/custom-font-family.js +++ b/bb-evolved/registry/dist/components/style/custom-font-family.js @@ -9,4 +9,4 @@ t=[[null,t,""]]);var i={};if(o)for(var a=0;a{"use strict";var o,i=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},a=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),s=[];function r(t){for(var e=-1,n=0;n{var o=n(983);o&&o.__esModule&&(o=o.default),t.exports="string"==typeof o?o:o.toString()},964:(t,e,n)=>{var o=n(545);o&&o.__esModule&&(o=o.default),t.exports="string"==typeof o?o:o.toString()},439:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var o=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-font-family-extra-options-entry"},[e("VButton",{on:{mouseover:function(e){return t.loadPanel()},click:function(e){return t.togglePanelDisplay()}}},[t._v("\n 更多选项"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1)],1)};o._withStripped=!0;var i=n(309),a=n(648),s=n(605);let r;const c=(0,i.defineComponent)({components:{VIcon:a.VIcon,VButton:a.VButton},methods:{loadPanel:async()=>{Boolean(r)||await(async()=>{const t=await Promise.resolve().then(n.bind(n,330)).then((t=>t.default));r=(0,s.mountVueComponent)(t),document.body.insertAdjacentElement("beforeend",r.$el)})()},togglePanelDisplay:async()=>{r.toggleDisplay()}}});var l=n(332),p=n.n(l),u=n(855),d=n.n(u),f={insert:"head",singleton:!1};p()(d(),f);d().locals;const m=(0,n(893).Z)(c,o,[],!1,null,null,null).exports},330:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>$});var o=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("ExtraOptionsPanel",{ref:"extraOptionsPanel",staticClass:"custom-font-family-extra-options-panel",class:{peek:t.isPeeking},attrs:{"init-data":t.initData},scopedSlots:t._u([{key:"input0",fn:function(){return[e("TextArea",{model:{value:t.inputFontFamily,callback:function(e){t.inputFontFamily=e},expression:"inputFontFamily"}})]},proxy:!0},{key:"input1",fn:function(){return[e("SwitchOptionsMin",{attrs:{options:t.switchOptionsComponentOptions}})]},proxy:!0}])})};o._withStripped=!0;var i=n(309),a=n(648),s=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"switch-options-min"},[e("div",{staticClass:"switch-options-min-grid"},t._l(Object.keys(t.options.switches),(function(n){return e(t.options.radio?"RadioButton":"CheckBox",t._b({key:n,tag:"component",class:{dim:!(Number(t.componentOptions[n])^Number(t.isDimAtChecked))},attrs:{checked:t.componentOptions[n]},on:{change:function(e){t.componentOptions[n]=e}}},"component",t.mergedSwitchProps,!1),[t._v("\n "+t._s(t.options.switches[n].displayName)+"\n ")])})),1)])};s._withStripped=!0;var r=n(986);const c=(0,i.defineComponent)({name:"SwitchOptionsMin",components:{CheckBox:a.CheckBox,RadioButton:a.RadioButton},props:{options:{type:Object,required:!0}},data(){const{componentName:t}=this.options;return{componentOptions:(0,r.getComponentSettings)(t).options,isDimAtChecked:(()=>"checked"===this.options.dimAt||void 0===this.options.dimAt||(this.options.dimAt,!1))()}},computed:{mergedSwitchProps(){return{checkedIcon:"mdi-eye-off-outline",notCheckedIcon:"mdi-eye-outline",...this.options.switchProps}}},watch:{options(){this.updateColumnsCount()}},mounted(){this.updateColumnsCount()},methods:{updateColumnsCount(){const t=this.$el,e=Math.ceil(Object.keys(this.options.switches).length/12);t.style.setProperty("--columns",e.toString())}}});var l=n(332),p=n.n(l),u=n(117),d=n.n(u),f={insert:"head",singleton:!1};p()(d(),f);d().locals;var m=n(893);const h=(0,m.Z)(c,s,[],!1,null,null,null).exports;var b=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VPopup",{staticClass:"be-extra-options-panel",attrs:{fixed:"",lazy:!1},model:{value:t.popupOpen,callback:function(e){t.popupOpen=e},expression:"popupOpen"}},[e("div",{staticClass:"be-eop-header"},[e("div",{staticClass:"be-eop-h-title"},[e("VIcon",{staticClass:"be-eop-h-t-icon",attrs:{icon:t.initData.header.title.icon,size:24}}),t._v(" "),e("div",{staticClass:"be-eop-h-t-text"},[t._v(t._s(t.initData.header.title.text))])],1),t._v(" "),e("div",{staticClass:"be-eop-h-actions"},[t._l(t.initData.header.actions,(function(t){return e("div",{key:t.id,staticClass:"be-eop-h-a-action"},[e("VIcon",{ref:`action${t.id}`,refInFor:!0,class:`action-${t.actionClassNameSuffix}`,attrs:{title:t.title,icon:t.icon,size:24}})],1)})),t._v(" "),e("div",{staticClass:"be-eop-h-a-action"},[e("VIcon",{staticClass:"action-close",attrs:{title:"关闭",icon:"mdi-close",size:24},on:{click:function(e){t.popupOpen=!1}}})],1)],2)]),t._v(" "),e("div",{staticClass:"be-eop-separator"}),t._v(" "),e("div",{staticClass:"be-eop-content"},t._l(t.initData.content.options,(function(n){return e("div",{key:n.id,staticClass:"be-eop-c-option"},[e("div",{staticClass:"be-eop-c-o-title"},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"be-eop-c-o-description"},[t._v(t._s(n.description))]),t._v(" "),e("div",{staticClass:"be-eop-c-o-input",class:`input-${n.inputClassNameSuffix}`},[t._t(`input${n.id}`,(function(){return[t._v("\n 选项输入入口默认文字,使用含 v-slot 指令的 template 元素以替换默认内容\n ")]}))],2)])})),0)])};b._withStripped=!0;const y=(0,i.defineComponent)({name:"ExtraOptionsPanel",components:{VPopup:a.VPopup,VIcon:a.VIcon},props:{initData:{type:Object,default:{header:{title:{text:"默认标题",icon:"mdi-format-font"},actions:[{id:0,title:"默认动作 0",icon:"mdi-cog-sync-outline",actionClassNameSuffix:"default-action-0"},{id:1,title:"默认动作 1",icon:"mdi-eye-outline",actionClassNameSuffix:"default-action-1"}]},content:{options:[{id:0,title:"默认选项 0",description:"默认选项 0 的说明",inputClassNameSuffix:"default-option-0"},{id:1,title:"默认选项 1",description:"默认选项 1 的说明",inputClassNameSuffix:"default-option-1"}]}}}},data:()=>({popupOpen:!1})});var v=n(957),x=n.n(v),g={insert:"head",singleton:!1};p()(x(),g);x().locals;const _=(0,m.Z)(y,b,[],!1,null,null,null).exports,C=coreApis.toast;var k=n(605);const O=coreApis.utils.log;var w=n(84);const F={header:{title:{text:"自定义字体",icon:"mdi-format-font"},actions:[{id:0,title:"重置面板中的所有选项为默认值",icon:"mdi-cog-sync-outline",actionClassNameSuffix:"reset"},{id:1,title:"透视",icon:"mdi-eye-outline",actionClassNameSuffix:"peek"}]},content:{options:[{id:0,title:"自定义字体",description:"输入需要设置的字体,不同字体之间必须以英文逗号分隔",inputClassNameSuffix:"input-font-family"},{id:1,title:"覆盖选项",description:"下面的元素使用了特殊字体,启用选项后可在对应的元素上应用组件提供的字体设置",inputClassNameSuffix:"cover-options"}]}},S={name:"customFontFamilyCoverOptions",switches:{},radio:!1,dimAt:"notChecked",switchProps:{checkedIcon:"mdi-checkbox-marked-circle",notCheckedIcon:"mdi-checkbox-blank-circle-outline"},componentName:"customFontFamily",optionDisplayName:"自定义字体覆盖选项"};for(const t of w.nF)S.switches[t.camel]={displayName:t.display,defaultValue:w.p_[t.camel]};const P=(0,O.useScopedConsole)("自定义字体"),N=(0,i.defineComponent)({components:{ExtraOptionsPanel:_,TextArea:a.TextArea,SwitchOptionsMin:h},data:()=>({isPeeking:!1,isMouseOverPeekIcon:!1,initData:F,inputFontFamily:(0,r.getComponentSettings)("customFontFamily").options.fontFamily,switchOptionsComponentOptions:S}),watch:{inputFontFamily:lodash.debounce((t=>{(0,r.getComponentSettings)("customFontFamily").options.fontFamily=t}),1e3),async isMouseOverPeekIcon(t){t?(t&&await(0,k.delay)(200),this.isMouseOverPeekIcon&&(this.isPeeking=!0)):this.isPeeking=!1}},mounted(){this.$refs.extraOptionsPanel.$refs.action0[0].$el.addEventListener("click",this.confirmResetOptions);const t=this.$refs.extraOptionsPanel.$refs.action1[0].$el;t.addEventListener("mouseover",this.setIsMouseOverPeekIconToTrue),t.addEventListener("mouseout",this.setIsMouseOverPeekIconToFalse)},methods:{toggleDisplay(){this.$refs.extraOptionsPanel.popupOpen=!this.$refs.extraOptionsPanel.popupOpen},setIsMouseOverPeekIconToTrue(){this.isMouseOverPeekIcon=!0},setIsMouseOverPeekIconToFalse(){this.isMouseOverPeekIcon=!1},confirmResetOptions(){confirm("确定将面板中的所有选项重置为默认值吗?")&&this.resetOptions()},resetOptions(){(0,r.getComponentSettings)("customFontFamily").options.fontFamily=w.nY,this.inputFontFamily=w.nY;for(const t of w.nF){const e=w.p_[t.camel];(0,r.getComponentSettings)("customFontFamily").options[t.camel]=e}C.Toast.success("更多选项面板中的所有选项已成功被重置为默认值","自定义字体",2e3),P.log("更多选项面板中的所有选项已成功被重置为默认值")}}});var T=n(546),I=n.n(T),M={insert:"head",singleton:!1};p()(I(),M);I().locals;const $=(0,m.Z)(N,o,[],!1,null,null,null).exports},893:(t,e,n)=>{"use strict";function o(t,e,n,o,i,a,s,r){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),s?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},l._ssrRegister=c):i&&(c=r?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var p=l.render;l.render=function(t,e){return c.call(e),p(t,e)}}else{var u=l.beforeCreate;l.beforeCreate=u?[].concat(u,c):[c]}return{exports:t,options:l}}n.d(e,{Z:()=>o})},814:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=814,t.exports=e},697:t=>{"use strict";t.exports="使用组件提供的字体设置覆盖原版的主站字体,并使主站字体可被自定义。\n\n当组件被启用后,几乎所有的元素会立即应用组件提供的字体设置。\n\n选项说明:\n- `禁用标题标点符号缩进`: 在新版视频页中,推荐视频栏中的视频标题,如果首个字符是特定的标点符号,则文本会缩入左侧。这个选项可以禁用这种样式\n- `更多选项`:\n - `自定义字体`: 设置自定义字体。写法请参考 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-family)、默认设置与设置说明。\n - `覆盖选项`: 相当于一个白名单,使用了特殊字体的元素会被加入其中。默认情况下这些元素不会应用组件提供的字体设置,只有在启用对应的选项后才会应用。"},309:t=>{"use strict";t.exports=globalThis.Vue},986:t=>{"use strict";t.exports=coreApis.settings},648:t=>{"use strict";t.exports=coreApis.ui},605:t=>{"use strict";t.exports=coreApis.utils}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var a=o[t]={id:t,exports:{}};return n[t](a,a.exports,i),a.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);i.r(a);var s={};t=t||[null,e({}),e([]),e(e)];for(var r=2&o&&n;"object"==typeof r&&!~t.indexOf(r);r=e(r))Object.getOwnPropertyNames(r).forEach((t=>s[t]=()=>n[t]));return s.default=()=>n,i.d(a,s),a},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";i.d(a,{component:()=>u});const t=coreApis.componentApis.define;var e=i(986),n=i(84);const o=document.documentElement,s="custom-font-family",r="customFontFamily",c=[componentsTags.style,componentsTags.general],l={fontFamily:{displayName:"字体",defaultValue:n.nY,hidden:!0},disableTitlePunctuationTextIndent:{displayName:"禁用标题标点符号缩进",defaultValue:!0}};(()=>{for(const t of n.nF)l[t.camel]={displayName:t.display,defaultValue:n.p_[t.camel],hidden:!0}})();const p=[{name:`${s}--style--set-font-family`,style:()=>Promise.resolve().then(i.t.bind(i,964,23)),important:!0},{name:`${s}--style--disable-title-punctuation-text-indent`,style:()=>Promise.resolve().then(i.t.bind(i,326,23)),important:!0}],u=(0,t.defineComponentMetadata)({name:r,displayName:"自定义字体",tags:c,entry:()=>{(0,e.addComponentListener)("customFontFamily.fontFamily",(t=>{t?(o.style.setProperty(`--${s}--options--font-family`,`${t}`),o.setAttribute(`${s}--detect--is-input-empty`,"false")):o.setAttribute(`${s}--detect--is-input-empty`,"true")}),!0),(0,e.addComponentListener)("customFontFamily.disableTitlePunctuationTextIndent",(t=>{o.setAttribute(`${s}--options--disable-title-punctuation-text-indent`,`${t}`)}),!0);for(const t of n.nF)(0,e.addComponentListener)(`customFontFamily.${t.camel}`,(e=>{o.setAttribute(`${s}--options--${t.kebab}`,`${e}`)}),!0)},options:l,extraOptions:()=>Promise.resolve().then(i.bind(i,439)).then((t=>t.default)),instantStyles:p,author:{name:"Tinhone",link:"https://github.com/Tinhone"},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const t=i(814);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,697,17)).then((t=>t.default))}})()})})(),a=a.component})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},a=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),s=[];function r(t){for(var e=-1,n=0;n{var o=n(983);o&&o.__esModule&&(o=o.default),t.exports="string"==typeof o?o:o.toString()},964:(t,e,n)=>{var o=n(545);o&&o.__esModule&&(o=o.default),t.exports="string"==typeof o?o:o.toString()},439:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var o=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-font-family-extra-options-entry"},[e("VButton",{on:{mouseover:function(e){return t.loadPanel()},click:function(e){return t.togglePanelDisplay()}}},[t._v("\n 更多选项"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1)],1)};o._withStripped=!0;var i=n(309),a=n(648),s=n(605);let r;const c=(0,i.defineComponent)({components:{VIcon:a.VIcon,VButton:a.VButton},methods:{loadPanel:async()=>{Boolean(r)||await(async()=>{const t=await Promise.resolve().then(n.bind(n,330)).then((t=>t.default));r=(0,s.mountVueComponent)(t),document.body.insertAdjacentElement("beforeend",r.$el)})()},togglePanelDisplay:async()=>{r.toggleDisplay()}}});var l=n(332),p=n.n(l),u=n(855),d=n.n(u),f={insert:"head",singleton:!1};p()(d(),f);d().locals;const m=(0,n(893).Z)(c,o,[],!1,null,null,null).exports},330:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>$});var o=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("ExtraOptionsPanel",{ref:"extraOptionsPanel",staticClass:"custom-font-family-extra-options-panel",class:{peek:t.isPeeking},attrs:{"init-data":t.initData},scopedSlots:t._u([{key:"input0",fn:function(){return[e("TextArea",{model:{value:t.inputFontFamily,callback:function(e){t.inputFontFamily=e},expression:"inputFontFamily"}})]},proxy:!0},{key:"input1",fn:function(){return[e("SwitchOptionsMin",{attrs:{options:t.switchOptionsComponentOptions}})]},proxy:!0}])})};o._withStripped=!0;var i=n(309),a=n(648),s=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"switch-options-min"},[e("div",{staticClass:"switch-options-min-grid"},t._l(Object.keys(t.options.switches),(function(n){return e(t.options.radio?"RadioButton":"CheckBox",t._b({key:n,tag:"component",class:{dim:!(Number(t.componentOptions[n])^Number(t.isDimAtChecked))},attrs:{checked:t.componentOptions[n]},on:{change:function(e){t.componentOptions[n]=e}}},"component",t.mergedSwitchProps,!1),[t._v("\n "+t._s(t.options.switches[n].displayName)+"\n ")])})),1)])};s._withStripped=!0;var r=n(986);const c=(0,i.defineComponent)({name:"SwitchOptionsMin",components:{CheckBox:a.CheckBox,RadioButton:a.RadioButton},props:{options:{type:Object,required:!0}},data(){const{componentName:t}=this.options;return{componentOptions:(0,r.getComponentSettings)(t).options,isDimAtChecked:(()=>"checked"===this.options.dimAt||void 0===this.options.dimAt||(this.options.dimAt,!1))()}},computed:{mergedSwitchProps(){return{checkedIcon:"mdi-eye-off-outline",notCheckedIcon:"mdi-eye-outline",...this.options.switchProps}}},watch:{options(){this.updateColumnsCount()}},mounted(){this.updateColumnsCount()},methods:{updateColumnsCount(){const t=this.$el,e=Math.ceil(Object.keys(this.options.switches).length/12);t.style.setProperty("--columns",e.toString())}}});var l=n(332),p=n.n(l),u=n(117),d=n.n(u),f={insert:"head",singleton:!1};p()(d(),f);d().locals;var m=n(893);const h=(0,m.Z)(c,s,[],!1,null,null,null).exports;var b=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VPopup",{staticClass:"be-extra-options-panel",attrs:{fixed:"",lazy:!1},model:{value:t.popupOpen,callback:function(e){t.popupOpen=e},expression:"popupOpen"}},[e("div",{staticClass:"be-eop-header"},[e("div",{staticClass:"be-eop-h-title"},[e("VIcon",{staticClass:"be-eop-h-t-icon",attrs:{icon:t.initData.header.title.icon,size:24}}),t._v(" "),e("div",{staticClass:"be-eop-h-t-text"},[t._v(t._s(t.initData.header.title.text))])],1),t._v(" "),e("div",{staticClass:"be-eop-h-actions"},[t._l(t.initData.header.actions,(function(t){return e("div",{key:t.id,staticClass:"be-eop-h-a-action"},[e("VIcon",{ref:`action${t.id}`,refInFor:!0,class:`action-${t.actionClassNameSuffix}`,attrs:{title:t.title,icon:t.icon,size:24}})],1)})),t._v(" "),e("div",{staticClass:"be-eop-h-a-action"},[e("VIcon",{staticClass:"action-close",attrs:{title:"关闭",icon:"mdi-close",size:24},on:{click:function(e){t.popupOpen=!1}}})],1)],2)]),t._v(" "),e("div",{staticClass:"be-eop-separator"}),t._v(" "),e("div",{staticClass:"be-eop-content"},t._l(t.initData.content.options,(function(n){return e("div",{key:n.id,staticClass:"be-eop-c-option"},[e("div",{staticClass:"be-eop-c-o-title"},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"be-eop-c-o-description"},[t._v(t._s(n.description))]),t._v(" "),e("div",{staticClass:"be-eop-c-o-input",class:`input-${n.inputClassNameSuffix}`},[t._t(`input${n.id}`,(function(){return[t._v("\n 选项输入入口默认文字,使用含 v-slot 指令的 template 元素以替换默认内容\n ")]}))],2)])})),0)])};b._withStripped=!0;const y=(0,i.defineComponent)({name:"ExtraOptionsPanel",components:{VPopup:a.VPopup,VIcon:a.VIcon},props:{initData:{type:Object,default:{header:{title:{text:"默认标题",icon:"mdi-format-font"},actions:[{id:0,title:"默认动作 0",icon:"mdi-cog-sync-outline",actionClassNameSuffix:"default-action-0"},{id:1,title:"默认动作 1",icon:"mdi-eye-outline",actionClassNameSuffix:"default-action-1"}]},content:{options:[{id:0,title:"默认选项 0",description:"默认选项 0 的说明",inputClassNameSuffix:"default-option-0"},{id:1,title:"默认选项 1",description:"默认选项 1 的说明",inputClassNameSuffix:"default-option-1"}]}}}},data:()=>({popupOpen:!1})});var v=n(957),x=n.n(v),g={insert:"head",singleton:!1};p()(x(),g);x().locals;const _=(0,m.Z)(y,b,[],!1,null,null,null).exports,C=coreApis.toast;var k=n(605);const O=coreApis.utils.log;var w=n(84);const F={header:{title:{text:"自定义字体",icon:"mdi-format-font"},actions:[{id:0,title:"重置面板中的所有选项为默认值",icon:"mdi-cog-sync-outline",actionClassNameSuffix:"reset"},{id:1,title:"透视",icon:"mdi-eye-outline",actionClassNameSuffix:"peek"}]},content:{options:[{id:0,title:"自定义字体",description:"输入需要设置的字体,不同字体之间必须以英文逗号分隔",inputClassNameSuffix:"input-font-family"},{id:1,title:"覆盖选项",description:"下面的元素使用了特殊字体,启用选项后可在对应的元素上应用组件提供的字体设置",inputClassNameSuffix:"cover-options"}]}},S={name:"customFontFamilyCoverOptions",switches:{},radio:!1,dimAt:"notChecked",switchProps:{checkedIcon:"mdi-checkbox-marked-circle",notCheckedIcon:"mdi-checkbox-blank-circle-outline"},componentName:"customFontFamily",optionDisplayName:"自定义字体覆盖选项"};for(const t of w.nF)S.switches[t.camel]={displayName:t.display,defaultValue:w.p_[t.camel]};const P=(0,O.useScopedConsole)("自定义字体"),N=(0,i.defineComponent)({components:{ExtraOptionsPanel:_,TextArea:a.TextArea,SwitchOptionsMin:h},data:()=>({isPeeking:!1,isMouseOverPeekIcon:!1,initData:F,inputFontFamily:(0,r.getComponentSettings)("customFontFamily").options.fontFamily,switchOptionsComponentOptions:S}),watch:{inputFontFamily:lodash.debounce((t=>{(0,r.getComponentSettings)("customFontFamily").options.fontFamily=t}),1e3),async isMouseOverPeekIcon(t){t?(t&&await(0,k.delay)(200),this.isMouseOverPeekIcon&&(this.isPeeking=!0)):this.isPeeking=!1}},mounted(){this.$refs.extraOptionsPanel.$refs.action0[0].$el.addEventListener("click",this.confirmResetOptions);const t=this.$refs.extraOptionsPanel.$refs.action1[0].$el;t.addEventListener("mouseover",this.setIsMouseOverPeekIconToTrue),t.addEventListener("mouseout",this.setIsMouseOverPeekIconToFalse)},methods:{toggleDisplay(){this.$refs.extraOptionsPanel.popupOpen=!this.$refs.extraOptionsPanel.popupOpen},setIsMouseOverPeekIconToTrue(){this.isMouseOverPeekIcon=!0},setIsMouseOverPeekIconToFalse(){this.isMouseOverPeekIcon=!1},confirmResetOptions(){confirm("确定将面板中的所有选项重置为默认值吗?")&&this.resetOptions()},resetOptions(){(0,r.getComponentSettings)("customFontFamily").options.fontFamily=w.nY,this.inputFontFamily=w.nY;for(const t of w.nF){const e=w.p_[t.camel];(0,r.getComponentSettings)("customFontFamily").options[t.camel]=e}C.Toast.success("更多选项面板中的所有选项已成功被重置为默认值","自定义字体",2e3),P.log("更多选项面板中的所有选项已成功被重置为默认值")}}});var T=n(546),I=n.n(T),M={insert:"head",singleton:!1};p()(I(),M);I().locals;const $=(0,m.Z)(N,o,[],!1,null,null,null).exports},893:(t,e,n)=>{"use strict";function o(t,e,n,o,i,a,s,r){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),s?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},l._ssrRegister=c):i&&(c=r?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var p=l.render;l.render=function(t,e){return c.call(e),p(t,e)}}else{var u=l.beforeCreate;l.beforeCreate=u?[].concat(u,c):[c]}return{exports:t,options:l}}n.d(e,{Z:()=>o})},814:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=814,t.exports=e},697:t=>{"use strict";t.exports="使用组件提供的字体设置覆盖原版的主站字体,并使主站字体可被自定义。\n\n当组件被启用后,几乎所有的元素会立即应用组件提供的字体设置。\n\n选项说明:\n- `禁用标题标点符号缩进`: 在新版视频页中,推荐视频栏中的视频标题,如果首个字符是特定的标点符号,则文本会缩入左侧。这个选项可以禁用这种样式\n- `更多选项`:\n - `自定义字体`: 设置自定义字体。写法请参考 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-family)、默认设置与设置说明。\n - `覆盖选项`: 相当于一个白名单,使用了特殊字体的元素会被加入其中。默认情况下这些元素不会应用组件提供的字体设置,只有在启用对应的选项后才会应用。"},309:t=>{"use strict";t.exports=globalThis.Vue},986:t=>{"use strict";t.exports=coreApis.settings},648:t=>{"use strict";t.exports=coreApis.ui},605:t=>{"use strict";t.exports=coreApis.utils}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var a=o[t]={id:t,exports:{}};return n[t](a,a.exports,i),a.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);i.r(a);var s={};t=t||[null,e({}),e([]),e(e)];for(var r=2&o&&n;"object"==typeof r&&!~t.indexOf(r);r=e(r))Object.getOwnPropertyNames(r).forEach((t=>s[t]=()=>n[t]));return s.default=()=>n,i.d(a,s),a},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";i.d(a,{component:()=>u});const t=coreApis.componentApis.define;var e=i(986),n=i(84);const o=document.documentElement,s="custom-font-family",r="customFontFamily",c=[componentsTags.style,componentsTags.general],l={fontFamily:{displayName:"字体",defaultValue:n.nY,hidden:!0},disableTitlePunctuationTextIndent:{displayName:"禁用标题标点符号缩进",defaultValue:!0}};(()=>{for(const t of n.nF)l[t.camel]={displayName:t.display,defaultValue:n.p_[t.camel],hidden:!0}})();const p=[{name:`${s}--style--set-font-family`,style:()=>Promise.resolve().then(i.t.bind(i,964,23)),important:!0},{name:`${s}--style--disable-title-punctuation-text-indent`,style:()=>Promise.resolve().then(i.t.bind(i,326,23)),important:!0}],u=(0,t.defineComponentMetadata)({name:r,displayName:"自定义字体",tags:c,entry:()=>{(0,e.addComponentListener)("customFontFamily.fontFamily",(t=>{t?(o.style.setProperty(`--${s}--options--font-family`,`${t}`),o.setAttribute(`${s}--detect--is-input-empty`,"false")):o.setAttribute(`${s}--detect--is-input-empty`,"true")}),!0),(0,e.addComponentListener)("customFontFamily.disableTitlePunctuationTextIndent",(t=>{o.setAttribute(`${s}--options--disable-title-punctuation-text-indent`,`${t}`)}),!0);for(const t of n.nF)(0,e.addComponentListener)(`customFontFamily.${t.camel}`,(e=>{o.setAttribute(`${s}--options--${t.kebab}`,`${e}`)}),!0)},options:l,extraOptions:()=>Promise.resolve().then(i.bind(i,439)).then((t=>t.default)),instantStyles:p,author:{name:"Tinhone",link:"https://github.com/Tinhone"},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const t=i(814);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,697,17)).then((t=>t.default))}})()})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/custom-navbar.js b/bb-evolved/registry/dist/components/style/custom-navbar.js index 3483d8b044..78b31ed043 100644 --- a/bb-evolved/registry/dist/components/style/custom-navbar.js +++ b/bb-evolved/registry/dist/components/style/custom-navbar.js @@ -27,4 +27,4 @@ t=[[null,t,""]]);var i={};if(a)for(var r=0;r{"use strict";var a,i=function(){return void 0===a&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -a=Boolean(window&&document&&document.all&&!window.atob)),a},r=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),o=[];function s(t){for(var e=-1,n=0;n{var a=n(1551);a&&a.__esModule&&(a=a.default),t.exports="string"==typeof a?a:a.toString()},9184:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>ct});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar",class:t.styles,attrs:{role:"navigation"}},[e("div",{staticClass:"left-pad padding"}),t._v(" "),e("div",{staticClass:"custom-navbar-items",attrs:{role:"list"}},t._l(t.items,(function(t){return e("NavbarItem",{key:t.name,attrs:{item:t}})})),1),t._v(" "),e("div",{staticClass:"right-pad padding"})])};a._withStripped=!0;var i=n(9986),r=n(605),o=n(4577),s=n(9153);const l="https://message.bilibili.com/",c={name:"messages",displayName:"消息",content:"消息",href:l,active:document.URL.startsWith(l),loginRequired:!0,touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,2096)).then((t=>t.default)),lazy:!1},d="https://www.bilibili.com/v/popular/rank/",p={name:"ranking",displayName:"排行",content:"排行",href:`${d}all`,active:document.URL.startsWith(d),touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,9990)).then((t=>t.default))},u={name:"userInfo",displayName:"个人信息",content:()=>Promise.resolve().then(n.bind(n,1093)).then((t=>t.default)),href:(0,r.getUID)()?"https://space.bilibili.com":null,touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,9630)).then((t=>t.default)),lazy:!1,noPopupPadding:!0,boundingWidth:240},m={name:"logo",displayName:"Logo",content:()=>Promise.resolve().then(n.bind(n,6310)).then((t=>t.default)),href:"https://www.bilibili.com/"},h={name:"home",displayName:"主站",content:"主站",href:"https://www.bilibili.com/",touch:!0,boundingWidth:366,popupContent:()=>Promise.resolve().then(n.bind(n,4324)).then((t=>t.default))},f=t=>({...t,name:`${t.iframeName}Iframe`,content:t.displayName,touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,486)).then((t=>t.default)),boundingWidth:t.width,noPopupPadding:!0,transparentPopup:!0}),v=f({src:"https://www.bilibili.com/page-proxy/game-nav.html",href:"https://game.bilibili.com/",width:680,height:260,lazy:!0,displayName:"游戏中心",iframeName:"games"}),b=f({src:"https://live.bilibili.com/blackboard/dropdown-menu.html",href:"https://live.bilibili.com",width:528,height:266,lazy:!0,displayName:"直播",iframeName:"lives"}),g=f({src:"https://manga.bilibili.com/eden/bilibili-nav-panel.html",href:"https://manga.bilibili.com",width:720,height:266,lazy:!0,displayName:"漫画",iframeName:"manga"}),x=new Array(4).fill(0).map(((t,e)=>({name:`blank${e+1}`,displayName:`弹性空白${e+1}`,content:"",disabled:!0,flexStyle:"1 0 auto"}))),y=t=>({...t,content:t.displayName,active:document.URL.startsWith(t.href)}),w=(y({name:"ranking",displayName:"排行",href:"https://www.bilibili.com/v/popular/rank/all"}),y({name:"bangumi",displayName:"番剧",href:"https://www.bilibili.com/anime/"})),_=y({name:"drawing",displayName:"相簿",href:"https://h.bilibili.com"}),C=y({name:"music",displayName:"音频",href:"https://www.bilibili.com/audio/home/"}),k=y({name:"shop",displayName:"会员购",href:"https://show.bilibili.com"}),V=y({name:"match",displayName:"赛事",href:"https://www.bilibili.com/v/game/match/"}),S=y({name:"creations",displayName:"创作中心",href:"https://member.bilibili.com/platform/home"}),P={name:"upload",displayName:"投稿",content:()=>Promise.resolve().then(n.bind(n,5913)).then((t=>t.default)),touch:!0,href:"https://member.bilibili.com/platform/upload/video/frame",popupContent:()=>Promise.resolve().then(n.bind(n,8855)).then((t=>t.default))},I={name:"search",displayName:"搜索",content:()=>Promise.resolve().then(n.bind(n,6903)).then((t=>t.default)),disabled:!0},N={name:"feeds",displayName:"动态",content:"动态",href:"https://t.bilibili.com/",touch:!0,active:"https://t.bilibili.com/"===document.URL.replace(window.location.search,""),contentMounted:async t=>{const{getNotifyCount:e}=await Promise.resolve().then(n.t.bind(n,5441,23));await(async()=>{const n=await e();t.notifyCount=n})()},loginRequired:!0,popupContent:()=>Promise.resolve().then(n.bind(n,5559)).then((t=>t.default)),boundingWidth:300,noPopupPadding:!0};var L=n(1459);const z={name:"watchlater",displayName:"稍后再看",content:"稍后再看",href:"https://www.bilibili.com/watchlater/#/list",touch:!0,active:document.URL.startsWith("https://www.bilibili.com/watchlater/"),loginRequired:!0,boundingWidth:380,noPopupPadding:!0,popupContent:()=>Promise.resolve().then(n.bind(n,95)).then((t=>t.default))},O=`https://space.bilibili.com/${(0,r.getUID)()}/favlist`,T={name:"favorites",displayName:"收藏",content:"收藏",href:O,touch:!0,active:document.URL.replace(/\?.*$/,"")===O,loginRequired:!0,boundingWidth:380,noPopupPadding:!0,popupContent:()=>Promise.resolve().then(n.bind(n,6127)).then((t=>t.default))},j="https://www.bilibili.com/account/history",D={name:"history",displayName:"历史",content:"历史",href:j,touch:!0,active:document.URL.replace(/\?.*$/,"")===j,loginRequired:!0,boundingWidth:400,noPopupPadding:!0,popupContent:()=>Promise.resolve().then(n.bind(n,4850)).then((t=>t.default))},[A,E,$,M]=x;var B=n(4276),U=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{directives:[{name:"show",rawName:"v-show",value:!t.item.hidden,expression:"!item.hidden"}],staticClass:"custom-navbar-item",class:{disabled:t.item.disabled,active:t.item.active,"input-within":t.inputWithin},style:{flex:t.item.flexStyle,order:t.item.order},attrs:{role:"listitem","data-name":t.item.name}},[t.item.href?e("CustomNavbarLink",{staticClass:"main-content",attrs:{"new-tab":t.newTab,href:!t.item.active&&!t.item.touch&&t.item.href},on:{mouseover:function(e){return e.target!==e.currentTarget?null:t.requestPopup()}}},["string"==typeof t.item.content?[t._v("\n "+t._s(t.item.content)+"\n ")]:e(t.item.content,{tag:"component",attrs:{item:t.item}})],2):e("div",{staticClass:"main-content",on:{click:function(e){!t.item.active&&!t.item.touch&&t.item.clickAction&&t.item.clickAction(e)}}},["string"==typeof t.item.content?[t._v("\n "+t._s(t.item.content)+"\n ")]:e(t.item.content,{tag:"component",attrs:{item:t.item}})],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.item.active,expression:"!item.active"}],staticClass:"notify-count"},[t.item.notifyCount>0?[t._v("\n "+t._s(t.item.notifyCount)+"\n ")]:t._e()],2),t._v(" "),e("div",{ref:"popupContainer",staticClass:"popup-container",on:{focusin:function(e){return t.toggleInputWithin(e,!0)},focusout:function(e){return t.toggleInputWithin(e,!1)}}},[t.item.popupContent?e("div",{staticClass:"popup",class:t.popupClasses(t.item)},[t.item.requestedPopup?e(t.item.popupContent,{ref:"popup",tag:"component",attrs:{container:t.$refs.popupContainer,item:t.item}}):t._e()],1):t._e()]),t._v(" "),e("div",{staticClass:"active-bar"})],1)};U._withStripped=!0;var W=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("a",t._g(t._b({attrs:{target:t.newTab?"_blank":null}},"a",t.$attrs,!1),t.$listeners),[t._t("default")],2)};W._withStripped=!0;const F=Vue.extend({props:{newTab:{type:Boolean,default:!0}}});var R=n(4893);const q=(0,R.Z)(F,W,[],!1,null,null,null).exports,H=t=>{const{name:e}=t,n=B.kO.navbarOptions;return e in n.openInNewTabOverrides?n.openInNewTabOverrides[e]:n.openInNewTab},Z=Vue.extend({components:{CustomNavbarLink:q},props:{item:{type:B.kO,required:!0}},data(){return{newTab:H(this.item),cancelListeners:none,inputWithin:!1}},mounted(){const t=this.item;t.contentMounted?.(t);const e=()=>{this.updateLinkOption()};(0,i.addComponentListener)("customNavbar.openInNewTabOverrides",e),(0,i.addComponentListener)("customNavbar.openInNewTab",e),this.cancelListeners=()=>{(0,i.removeComponentListener)("customNavbar.openInNewTabOverrides",e),(0,i.removeComponentListener)("customNavbar.openInNewTab",e)}},beforeDestroy(){this.cancelListeners?.()},methods:{toggleInputWithin(t,e){t.target instanceof HTMLInputElement?this.inputWithin=e:this.inputWithin=!1},updateLinkOption(){this.newTab=H(this.item)},popupClasses:t=>({transparent:t.transparentPopup,"no-padding":t.noPopupPadding,"iframe-container":t.iframeName}),triggerPopupShow:lodash.debounce((function(t){const{popup:e}=this.$refs;if(!e)return;const n=B.kO.navbarOptions.refreshOnPopup&&e.popupRefresh&&"function"==typeof e.popupRefresh;!t&&n&&e.popupRefresh(),e.popupShow&&"function"==typeof e.popupShow&&e.popupShow()}),300),async requestPopup(){const{item:t}=this;if(!t.disabled)return t.requestedPopup?void this.triggerPopupShow(!1):(t.requestedPopup=!0,void this.triggerPopupShow(!0))}}});var J=n(8332),Y=n.n(J),X=n(1385),G=n.n(X),Q={insert:"head",singleton:!1};Y()(G(),Q);G().locals;const K=(0,R.Z)(Z,U,[],!1,null,null,null).exports,tt=coreApis.spinQuery,et=coreApis.utils.urls,[nt]=(0,s.registerAndGetData)(B.rm,[A,m,h,w,p,_,C,v,b,k,V,g,E,I,$,u,c,N,L.V,z,T,D,S,P,M]),[at]=(0,s.registerAndGetData)(B.Je,{items:[]}),it=()=>{const t=Boolean((0,r.getUID)()),e=nt.filter((e=>!(e.loginRequired&&!t))).map((t=>new B.kO(t))).sort((0,o.ascendingSort)((t=>t.order)));return at.items=e,e},rt=Vue.extend({components:{NavbarItem:K},data:()=>({initItems:nt,items:it(),styles:[],height:B.kO.navbarOptions.height}),watch:{initItems(){this.items=it()}},async mounted(){(0,i.addComponentListener)("customNavbar.height",(t=>{document.documentElement.style.setProperty("--navbar-height",`${t}px`)}),!0),await(async t=>{(0,et.matchCurrentPage)(et.mainSiteUrls)&&(0,tt.sq)((()=>dqa(".animated-banner video, .banner-img img, #banner_link, .international-header .bili-banner, .bili-header__banner")),(t=>0!==t.length&&!!t.some((t=>!!t.style.backgroundImage||!!t.src||!!t.querySelector(".animated-banner"))))).then((e=>{0!==e.length&&((0,i.addComponentListener)("customNavbar.transparent",(e=>{(0,i.getComponentSettings)("hideBanner").enabled||t.toggleStyle(e,"transparent")}),!0),(0,i.addComponentListener)("hideBanner",(e=>{(0,i.getComponentSettings)("customNavbar").options.transparent&&t.toggleStyle(!e,"transparent")})))}))})(this)},methods:{toggleStyle(t,e){t&&!this.styles.includes(e)?this.styles.push(e):!t&&this.styles.includes(e)&&this.styles.splice(this.styles.indexOf(e),1)}}});var ot=n(2963),st=n.n(ot),lt={insert:"head",singleton:!1};Y()(st(),lt);st().locals;const ct=(0,R.Z)(rt,a,[],!1,null,null,null).exports},6127:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>S});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"favorites-list"},[e("div",{staticClass:"header"},[e("FavoritesFolderSelect",{model:{value:t.folder,callback:function(e){t.folder=e},expression:"folder"}}),t._v(" "),e("div",{staticClass:"search"},[e("TextBox",{attrs:{linear:"",placeholder:"搜索"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),e("a",{staticClass:"operation",attrs:{href:t.playLink,title:"播放全部",target:"_blank"}},[e("VButton",{staticClass:"play-all",attrs:{round:""}},[e("VIcon",{attrs:{icon:"mdi-play",size:18}})],1)],1),t._v(" "),e("a",{staticClass:"operation",attrs:{href:t.moreLink,title:"查看更多",target:"_blank"}},[e("VButton",{staticClass:"more-info",attrs:{round:""}},[e("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})],1)],1)],1),t._v(" "),e("div",{staticClass:"content"},[t.loading&&!t.searching?e("VLoading"):t.loading||t.canLoadMore||0!==t.filteredCards.length?e("transition-group",{staticClass:"cards",attrs:{name:"cards",tag:"div"}},[t._l(t.filteredCards,(function(n){return e("div",{key:n.id,staticClass:"favorite-card"},[e("a",{staticClass:"favorites-cover-container",attrs:{target:"_blank",href:"https://www.bilibili.com/video/"+n.bvid}},[e("DpiImage",{staticClass:"cover",attrs:{src:n.coverUrl,size:{width:130,height:85}}}),t._v(" "),e("div",{staticClass:"floating duration"},[t._v(t._s(n.durationText))]),t._v(" "),e("div",{staticClass:"floating favorite-time"},[t._v(t._s(n.favoriteTime))])],1),t._v(" "),e("a",{staticClass:"title",attrs:{target:"_blank",href:"https://www.bilibili.com/video/"+n.bvid,title:n.title}},[t._v(t._s(n.title))]),t._v(" "),n.upID?e("a",{staticClass:"up",attrs:{target:"_blank",href:"https://space.bilibili.com/"+n.upID,title:n.upName}},[e("DpiImage",{staticClass:"face",attrs:{"placeholder-image":"",src:n.upFaceUrl,size:20}}),t._v(" "),e("div",{staticClass:"name"},[t._v(t._s(n.upName))])],1):e("div",{staticClass:"description"},[t._v("\n "+t._s(n.description)+"\n ")])])})),t._v(" "),t.canLoadMore?e("ScrollTrigger",{key:"scroll-trigger",on:{trigger:function(e){return t.scrollTrigger()}}}):t._e()],2):e("VEmpty")],1)])};a._withStripped=!0;var i=n(9648),r=n(4289),o=n(605),s=n(2375),l=n(3414),c=n(9986);const d={id:0,name:"加载中...",count:0};var p=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VDropdown",{staticClass:"favorites-folder-select",attrs:{round:"",items:t.folders,"key-mapper":t=>t.id,value:t.folder},on:{change:function(e){return t.change(e)}},scopedSlots:t._u([{key:"item",fn:function({item:e}){return[t._v(" "+t._s(e.name)+" ("+t._s(e.count)+") ")]}}])})};p._withStripped=!0;const u=(0,c.getComponentSettings)("customNavbar").options,m=Vue.extend({components:{VDropdown:i.VDropdown},model:{prop:"folder",event:"change"},props:{folder:{type:Object,required:!0}},data:()=>({folders:[]}),async created(){const t=(0,o.getUID)();if(!t)return;const e=`https://api.bilibili.com/medialist/gateway/base/created?pn=1&ps=100&up_mid=${t}&is_space=0`,n=await(0,s.getJsonWithCredentials)(e);if(0!==n.code)throw new Error(`获取收藏夹列表失败: ${n.message}`);if(this.folders=lodash.get(n,"data.list",[]).map((t=>({id:t.id,name:t.title,count:t.media_count}))),this.folders.length>0&&this.folder.id===d.id){const{lastFavoriteFolder:t}=u,e=this.folders.find((e=>e.id===t));e?this.$emit("change",e):this.$emit("change",this.folders[0])}},methods:{change(t){u.lastFavoriteFolder=t.id,this.$emit("change",t)}}});var h=n(4893);const f=(0,h.Z)(m,p,[],!1,null,null,null).exports;var v=n(1111);const b=(0,c.getComponentSettings)("customNavbar").options,g=t=>!!b.showDeadVideos||9!==t.attr&&1!==t.attr,x=t=>({id:t.id,aid:t.id,bvid:t.bvid,coverUrl:t.cover.replace("http:","https:"),favoriteTimestamp:1e3*t.fav_time,favoriteTime:(0,r.formatDate)(new Date(1e3*t.fav_time)),title:t.title,description:t.intro,duration:t.duration,durationText:(0,r.formatDuration)(t.duration),playCount:t.cnt_info.play,danmakuCount:t.cnt_info.danmaku,upName:t.upper.name,upFaceUrl:t.upper.face.replace("http:","https:"),upID:t.upper.mid});const y=Vue.extend({components:{FavoritesFolderSelect:f,VLoading:i.VLoading,VEmpty:i.VEmpty,VIcon:i.VIcon,VButton:i.VButton,TextBox:i.TextBox,DpiImage:i.DpiImage,ScrollTrigger:i.ScrollTrigger},mixins:[v.u],data:()=>({loading:!0,cards:[],filteredCards:[],page:1,hasMorePage:!0,searchPage:1,hasMoreSearchPage:!0,search:"",folder:d}),computed:{searching(){return""!==this.search},moreLink(){const{id:t}=this.folder;return 0===t?`https://space.bilibili.com/${(0,o.getUID)()}/favlist`:`https://space.bilibili.com/${(0,o.getUID)()}/favlist?fid=${t}`},playLink(){const{id:t}=this.folder;if(0!==t)return`https://www.bilibili.com/medialist/play/ml${t}`},canLoadMore(){return this.searching?this.hasMoreSearchPage:this.hasMorePage}},watch:{folder(){this.changeList()},search(t){""!==t?(t=t.toLowerCase(),this.hasMoreSearchPage=!0,this.searchPage=1,this.filteredCards=this.cards.filter((e=>e.title.toLowerCase().includes(t)||e.upName.toLowerCase().includes(t)))):this.filteredCards=this.cards}},methods:{async getCards(){const t=`https://api.bilibili.com/x/v3/fav/resource/list?media_id=${this.folder.id}&pn=${this.page}&ps=20&keyword=&order=mtime&type=0&tid=0&platform=web`,e=await(0,s.getJsonWithCredentials)(t);if(0!==e.code)throw new Error(`加载收藏夹内容失败: ${e.message}`);return e.data.medias?e.data.medias.filter(g).map(x):[]},async changeList(){if(0!==this.folder.id)try{this.search="",this.cards=[],this.loading=!0,this.searchPage=1,this.hasMoreSearchPage=!0,this.page=1,this.hasMorePage=!0,this.cards=await this.getCards(),this.filteredCards=this.cards}catch(t){(0,l.logError)(t)}finally{this.loading=!1}},async loadNextPage(){try{this.page++;const t=await this.getCards();this.cards.push(...t),this.hasMorePage=0!==t.length||this.cards.lengtht.id));this.filteredCards=i;const r=n.length+a.length===0,o=a.length<20;if(r||o)return void(this.hasMoreSearchPage=!1)}catch(t){console.error(t)}finally{this.loading=!1}}),200),scrollTrigger(){this.searching?this.debounceSearchAllList():this.loadNextPage()}}});var w=n(8332),_=n.n(w),C=n(3608),k=n.n(C),V={insert:"head",singleton:!1};_()(k(),V);k().locals;const S=(0,h.Z)(y,a,[],!1,null,null,null).exports},5559:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"navbar-feeds"},[e("TabControl",{ref:"tabControl",attrs:{tabs:t.tabs,"more-link":"https://t.bilibili.com/"},scopedSlots:t._u([{key:"more-link",fn:function(){return[t._v("\n 所有动态\n "),e("VIcon",{attrs:{icon:"feeds",size:18}})]},proxy:!0}])})],1)};a._withStripped=!0;var i=n(9648),r=n(9799),o=n(5441),s=n(1111);const l=[{name:"video",displayName:"视频",component:()=>Promise.resolve().then(n.bind(n,5800)).then((t=>t.default)),activeLink:"https://t.bilibili.com/?tab=video",count:0},{name:"bangumi",displayName:"番剧",component:()=>Promise.resolve().then(n.bind(n,6801)).then((t=>t.default)),activeLink:"https://t.bilibili.com/?tab=pgc",count:0},{name:"column",displayName:"专栏",component:()=>Promise.resolve().then(n.bind(n,8957)).then((t=>t.default)),activeLink:"https://t.bilibili.com/?tab=article",count:0},{name:"live",displayName:"直播",component:()=>Promise.resolve().then(n.bind(n,2124)).then((t=>t.default)),activeLink:"https://link.bilibili.com/p/center/index#/user-center/follow/1",count:0}],c=Vue.extend({components:{TabControl:i.TabControl,VIcon:i.VIcon},mixins:[s.u],data:()=>({tabs:l}),mounted(){this.refreshNotifyCount()},methods:{popupShow(){this.item.notifyCount=0},async refreshNotifyCount(){const{tabControl:t}=this.$refs;l.forEach((async e=>{if(t.selectedTab===e)return;if("live"===e.name)return;const n=r.feedsCardTypes[e.name];if(!n.apiType)return;const a=await(0,o.getNotifyCountByType)(n.apiType);e.count=a,console.log(e)}))}}});var d=n(8332),p=n.n(d),u=n(9951),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},6801:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"bangumi-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"bangumi-feeds-content"},t._l(t.cards,(function(t){return e("BangumiCard",{key:t.id,attrs:{"is-new":t.new,data:t}})})),1),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(9799),r=n(5441);const o=coreApis.componentApis.feeds.BangumiCard;var s=n.n(o),l=n(9149);const c=Vue.extend({components:{BangumiCard:s()},mixins:[(0,l.I)(i.feedsCardTypes.bangumi,(t=>{const e=lodash.get(t,"modules.module_dynamic.major.pgc"),n=lodash.get(t,"modules.module_author");return{id:t.id_str,title:n.name,coverUrl:n.face,epCoverUrl:e.cover,epTitle:e.title.replace(new RegExp(`^${n.name}:`),""),url:e.jump_url,get new(){return(0,r.isNewID)(this.id)}}}))]});var d=n(8332),p=n.n(d),u=n(7210),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},8957:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"column-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"columns-feeds-content"},t._l(t.cards,(function(t){return e("ColumnCard",{key:t.id,attrs:{"is-new":t.new,data:t}})})),1),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(9799),r=n(5441);const o=coreApis.componentApis.feeds.ColumnCard;var s=n.n(o),l=n(9149);const c=Vue.extend({components:{ColumnCard:s()},mixins:[(0,l.I)(i.feedsCardTypes.column,(t=>{const e=lodash.get(t,"modules.module_dynamic.major.article"),n=lodash.get(t,"modules.module_author");return{id:t.id_str,cvID:e.id.toString(),title:e.title,upName:n.name,upFaceUrl:n.face,upID:n.mid,description:e.desc,covers:e.covers,originalCovers:e.covers,get new(){return(0,r.isNewID)(this.id)}}}))]});var d=n(8332),p=n.n(d),u=n(4044),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},2124:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"live-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?t._e():e("VEmpty"),t._v(" "),e("transition-group",{staticClass:"live-feeds-content",attrs:{name:"cards",tag:"div"}},t._l(t.cards,(function(n){return e("a",{key:n.id,staticClass:"live-card",attrs:{target:"_blank",href:n.url}},[e("div",{staticClass:"face-container"},[e("DpiImage",{staticClass:"face",attrs:{size:48,src:n.upFaceUrl}})],1),t._v(" "),e("div",{staticClass:"live-info"},[e("div",{staticClass:"live-title",attrs:{title:n.title}},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"live-name",attrs:{title:n.upName}},[t._v(t._s(n.upName))])])])})),0)],1)};a._withStripped=!0;var i=n(9648),r=n(2375);const o=Vue.extend({components:{VLoading:i.VLoading,VEmpty:i.VEmpty,DpiImage:i.DpiImage},data:()=>({loading:!0,rawItems:[],hasMorePage:!0}),computed:{cards(){return this.rawItems.map((t=>({id:t.roomid,title:t.title,upFaceUrl:t.face,upName:t.uname,url:t.link})))}},async created(){const[t]=(0,r.responsiveGetPages)({api:t=>(0,r.getJsonWithCredentials)(`https://api.live.bilibili.com/relation/v1/feed/feed_list?page=${t}&pagesize=24`),getList:t=>lodash.get(t,"data.list",[]),getTotal:t=>lodash.get(t,"data.results",0)});this.rawItems=await t,this.loading=!1}});var s=n(8332),l=n.n(s),c=n(4956),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;const u=(0,n(4893).Z)(o,a,[],!1,null,null,null).exports},5800:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>g});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"video-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"video-feeds-content"},[e("transition-group",{staticClass:"left-column",attrs:{name:"cards",tag:"div"}},t._l(t.columnedCards.left,(function(t){return e("VideoCard",{key:t.id,attrs:{orientation:"vertical","is-new":t.new,"show-stats":!1,data:t}})})),1),t._v(" "),e("transition-group",{staticClass:"right-column",attrs:{name:"cards",tag:"div"}},t._l(t.columnedCards.right,(function(t){return e("VideoCard",{key:t.id,attrs:{orientation:"vertical","is-new":t.new,"show-stats":!1,data:t}})})),1)],1),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(4289),r=n(5441),o=n(9799);const s=coreApis.componentApis.feeds.VideoCard;var l=n.n(s),c=n(9149);const d=t=>{const e=Number(new Date),n=new Date(t),a=[n.getHours(),n.getMinutes(),n.getSeconds()].map((t=>t.toString().padStart(2,"0"))).join(":");let i;return i=new Date(e).getFullYear()!==n.getFullYear()?[n.getFullYear(),n.getMonth()+1,n.getDate()]:[n.getMonth()+1,n.getDate()],`${i.map((t=>t.toString().padStart(2,"0"))).join("-")} ${a}`},p=t=>{const e=Number(new Date);if(e-864e5t.toString().padStart(2,"0"))).join("-")}`},u=Vue.extend({components:{VideoCard:l()},mixins:[(0,c.I)(o.feedsCardTypes.video,(t=>{const e=lodash.get(t,"modules.module_dynamic.major.archive"),n=lodash.get(t,"modules.module_author");return{id:t.id_str,aid:parseInt(e.aid),bvid:e.bvid,videoUrl:`https://www.bilibili.com/${e.bvid}`,coverUrl:e.cover,title:e.title,duration:(0,i.parseDuration)(e.duration_text),durationText:(0,i.formatDuration)((0,i.parseDuration)(e.duration_text)),description:e.desc,pubTime:d(1e3*n.pub_ts),pubTimeText:p(1e3*n.pub_ts),upFaceUrl:n.face,upName:n.name,upID:n.mid,watchlater:!0,playCount:(0,i.formatCount)((0,i.parseCount)(e.stat.play)),get new(){return(0,r.isNewID)(this.id)}}}))],computed:{columnedCards(){const{cards:t}=this;return{left:t.filter(((t,e)=>e%2==0)),right:t.filter(((t,e)=>e%2!=0))}}},methods:{onCardsUpdate:t=>(0,o.groupVideoFeeds)(t)}});var m=n(8332),h=n.n(m),f=n(9973),v=n.n(f),b={insert:"head",singleton:!1};h()(v(),b);v().locals;const g=(0,n(4893).Z)(u,a,[],!1,null,"d3e1a0c0",null).exports},4850:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>w});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar-history-list"},[e("div",{staticClass:"header"},[e("div",{staticClass:"header-row"},[e("div",{staticClass:"search"},[e("TextBox",{attrs:{placeholder:"搜索",linear:""},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),e("div",{staticClass:"operations"},[e("div",{staticClass:"operation",on:{click:t.toggleHistoryPause}},[t.paused?e("VButton",{attrs:{title:"继续记录历史",round:""}},[e("VIcon",{attrs:{icon:"mdi-play",size:14}})],1):e("VButton",{attrs:{title:"暂停记录历史",round:""}},[e("VIcon",{attrs:{icon:"mdi-pause",size:14}})],1)],1),t._v(" "),e("a",{staticClass:"operation",attrs:{target:"_blank",href:"https://www.bilibili.com/account/history"}},[e("VButton",{attrs:{title:"查看更多",round:""}},[e("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})],1)],1)])]),t._v(" "),e("div",{staticClass:"header-row"},[e("div",{staticClass:"row-title"},[t._v("过滤:")]),t._v(" "),e("div",{staticClass:"type-filters"},t._l(t.types,(function(n){return e("div",{key:n.name,staticClass:"type-filter"},[e("RadioButton",{class:{checked:n.checked},attrs:{title:(n.checked?"不显示":"显示")+n.displayName,checked:n.checked,disabled:t.loading},on:{change:function(e){return t.toggleTypeFilter(n)}}},[t._v("\n "+t._s(n.displayName)+"\n ")])],1)})),0)])]),t._v(" "),e("div",{staticClass:"content"},[t.loading?e("VLoading"):t.loading||0!==t.groups.length?e("transition-group",{staticClass:"cards",attrs:{name:"cards",tag:"div"}},[t._l(t.groups,(function(n){return e("div",{key:n.name,staticClass:"time-group"},[e("div",{staticClass:"time-group-name"},[t._v("\n "+t._s(n.name)+"\n ")]),t._v(" "),e("transition-group",{staticClass:"time-group-items",attrs:{name:"time-group",tag:"div"}},t._l(n.items,(function(n){return e("div",{key:n.id,staticClass:"time-group-item"},[e("a",{staticClass:"history-cover-container",attrs:{target:"_blank",href:n.url}},[e("DpiImage",{staticClass:"cover",attrs:{src:n.cover,size:{width:160,height:110},"placeholder-image":""}}),t._v(" "),n.progress?e("div",{staticClass:"progress",style:{width:100*n.progress+"%"}}):t._e(),t._v(" "),n.progressText?e("div",{staticClass:"floating progress-number"},[t._v("\n "+t._s(n.progress>=1?"已看完":n.progressText)+"\n ")]):t._e(),t._v(" "),void 0!==n.liveStatus?e("div",{staticClass:"floating duration live-status",class:{on:1===n.liveStatus}},[t._v("\n "+t._s(1===n.liveStatus?"直播中":"未开播")+"\n ")]):t._e(),t._v(" "),n.durationText?e("div",{staticClass:"floating duration"},[t._v(t._s(n.durationText))]):t._e()],1),t._v(" "),e("a",{staticClass:"title",attrs:{target:"_blank",href:n.url,title:n.title}},[t._v(t._s(n.title||n.upName+"的直播间"))]),t._v(" "),e("a",{staticClass:"up",attrs:{target:"_blank",href:"pgc"===n.type?n.url:"https://space.bilibili.com/"+n.upID,title:n.upName}},[n.upFaceUrl?e("DpiImage",{staticClass:"up-face",attrs:{size:18,src:n.upFaceUrl}}):t._e(),t._v(" "),e("div",{staticClass:"up-name"},[t._v(t._s(n.upName))])],1),t._v(" "),n.timeText?e("div",{staticClass:"time",attrs:{title:new Date(n.viewAt).toLocaleString()}},[t._v("\n "+t._s(n.timeText)+"\n ")]):t._e()])})),0)],1)})),t._v(" "),t.canNextPage?e("ScrollTrigger",{key:"scroll-trigger",on:{trigger:function(e){return t.nextPage()}}}):t._e()],2):e("VEmpty")],1)])};a._withStripped=!0;var i=n(2375),r=n(605),o=n(4577),s=n(9648),l=n(1111),c=n(4289);let d=function(t){return t.All="all",t.Video="archive",t.Live="live",t.Article="article",t.Bangumi="pgc",t.Cheese="cheese",t}({});const p=[{name:d.All,displayName:"全部",icon:"",checked:!0,apiType:""},{name:d.Video,displayName:"视频",icon:"mdi-play-circle-outline",checked:!1,apiType:"archive"},{name:d.Bangumi,displayName:"番剧",icon:"mdi-television-classic",checked:!1,apiType:"archive"},{name:d.Live,displayName:"直播",icon:"mdi-video-wireless-outline",checked:!1,apiType:"live"},{name:d.Article,displayName:"专栏",icon:"mdi-newspaper-variant-outline",checked:!1,apiType:"article"}],u=()=>{const t=new Date,e=Number(new Date(t.getFullYear(),t.getMonth(),t.getDate())),n=864e5;return{now:t,today:e,oneDay:n,yesterday:e-n,lastWeek:e-7*n}},m=t=>{const{yesterday:e}=u();return Number(t)>=e?`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}`:`${(t.getMonth()+1).toString().padStart(2,"0")}-${t.getDate().toString().padStart(2,"0")} ${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}`},h=t=>{t.history.business===d.Article&&(t.history.cid=t.history.oid);const{epid:e,bvid:n,cid:a,oid:i}=t.history,o=t.progress>0?`t=${t.progress}`:"t=0",s=-1===t.progress?1:t.progress/t.duration,l=t=>t.replace("http:","https:"),p=new Date(1e3*t.view_at),u=t.cover?l(t.cover):t.covers?l(t.covers[0]):"",h={title:t.title,viewAt:1e3*t.view_at,time:p,timeText:m(p),cover:u,covers:t.covers?.map(l)??[],progress:s,progressText:Number.isNaN(s)?null:`${(0,r.fixed)(100*s,1)}%`,duration:t.duration,durationText:t.duration?(0,c.formatDuration)(t.duration):null,upName:t.author_name,upFaceUrl:l(t.author_face),upID:t.author_mid};if(t.history.business===d.Cheese)return{...h,id:i,upName:t.title,title:t.show_title,url:t.uri,type:d.Video};if(e)return{...h,id:e,url:`https://www.bilibili.com/bangumi/play/ep${e}?${o}`,title:t.show_title||t.title,upName:t.title,type:d.Bangumi};if(n)return{...h,id:n,url:`https://www.bilibili.com/video/${n}?p=${t.history.page}&${o}`,type:d.Video};if(a)return{...h,id:a,url:`https://www.bilibili.com/read/cv${a}`,type:d.Article};if(i)return{...h,id:i,url:`https://live.bilibili.com/${i}`,liveStatus:t.live_status,type:d.Live};throw console.error("unknown history item type",t),new Error("未知的历史项目类型")},f=Vue.extend({components:{VButton:s.VButton,VIcon:s.VIcon,RadioButton:s.RadioButton,TextBox:s.TextBox,VLoading:s.VLoading,VEmpty:s.VEmpty,ScrollTrigger:s.ScrollTrigger,DpiImage:s.DpiImage},mixins:[l.u],data:()=>({types:p,search:"",viewTime:0,cards:[],groups:[],loading:!0,hasMorePage:!0,paused:!1}),computed:{canNextPage(){return""===this.search&&!this.loading&&this.hasMorePage}},watch:{search:lodash.debounce((function(){this.reloadHistoryItems()}),200)},async created(){try{await Promise.all([this.nextPage(),this.updateHistoryPauseState()])}finally{this.loading=!1}},methods:{toggleTypeFilter(t){p.forEach((e=>e.checked=e.name===t.name)),this.reloadHistoryItems()},async reloadHistoryItems(){this.cards=[],this.viewTime=0,this.hasMorePage=!0,this.loading=!0;try{await this.nextPage()}finally{this.loading=!1}},filterFunc(t){return!(!p.find((t=>t.name===d.All)).checked&&p.some((e=>e.name===t.type&&!e.checked)))&&!(!t.title.toLowerCase().includes(this.search.toLowerCase())&&!t.upName.toLowerCase().includes(this.search.toLowerCase()))},updateGroups(){this.groups=(t=>{if(0===t.length)return[];const{today:e,yesterday:n,lastWeek:a}=u(),i=lodash.groupBy(t,(t=>t.viewAt>=e?"今天":t.viewAt>=n?"昨天":t.viewAt>=a?"本周":"更早"));return Object.entries(i).map((t=>{let[e,n]=t;return{name:e,items:n}}))})(this.cards.filter(this.filterFunc))},async nextPage(){const t=await(async(t,e)=>{const n=new URLSearchParams;t&&n.set("view_at",Math.round(t/1e3).toString()),n.set("type",e?.apiType??"");const{list:a}=await(0,i.bilibiliApi)((0,i.getJsonWithCredentials)(`https://api.bilibili.com/x/web-interface/history/cursor?${n.toString()}`),"获取历史记录失败");return Array.isArray(a)?a.map(h).filter((t=>null!==t&&(!e||e.name===d.All||t.type===e.name))):[]})(this.viewTime,p.find((t=>t.checked))),e=lodash.uniqBy(this.cards.concat(t).sort((0,o.descendingSort)((t=>t.viewAt))),(t=>t.id));this.cards=e,this.updateGroups(),e.length>0&&(this.viewTime=lodash.last(e).viewAt),this.hasMorePage=0!==t.length,this.hasMorePage&&0===this.groups.length&&await this.nextPage()},async updateHistoryPauseState(){const t=await(0,i.bilibiliApi)((0,i.getJsonWithCredentials)("https://api.bilibili.com/x/v2/history/shadow"));this.paused=!0===t},async toggleHistoryPause(){const t=!this.paused;try{this.paused=t,await(0,i.postTextWithCredentials)("https://api.bilibili.com/x/v2/history/shadow/set",new URLSearchParams({csrf:(0,r.getCsrf)(),switch:t.toString()}).toString())}catch(e){this.paused=!t}}}});var v=n(8332),b=n.n(v),g=n(2549),x=n.n(g),y={insert:"head",singleton:!1};b()(x(),y);x().locals;const w=(0,n(4893).Z)(f,a,[],!1,null,null,null).exports},4324:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>h});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"home-popup",attrs:{role:"list"}},t._l(Object.entries(t.categories),(function([n,a]){return e("div",{key:n,staticClass:"category-item",class:{main:null!==a.code},attrs:{role:"listitem"}},[e("a",{attrs:{href:a.link,target:"_blank"}},[e("svg",{attrs:{"aria-hidden":"true"}},[e("use",{attrs:{href:"#header-icon-"+a.icon,"xlink:href":"#header-icon-"+a.icon}})]),t._v(" "),e("div",{staticClass:"name"},[t._v(t._s(n))]),t._v(" "),e("span",{staticClass:"count"},[null!==a.count?[t._v(t._s(a.count))]:t._e()],2)]),t._v(" "),a.subCategories?e("div",{staticClass:"sub-regions-popup popup"},t._l(Object.entries(a.subCategories),(function([n,a]){return e("a",{key:n,staticClass:"sub-region",attrs:{href:a,target:"_blank"}},[t._v(t._s(n))])})),0):t._e()])})),0)};a._withStripped=!0;var i=n(3861),r=n(1111);const o=lodash.cloneDeep(i.categories);Object.values(o).forEach((t=>{t.count=null}));let s=!1;const l=Vue.extend({mixins:[r.u],data:()=>({categories:o}),async created(){if(s)return;s=!0;const{bilibiliApi:t,getJson:e}=await Promise.resolve().then(n.t.bind(n,2375,23)),{addCategoryIcons:a}=await Promise.resolve().then(n.t.bind(n,3861,23));a();const{region_count:i={}}=await t(e("https://api.bilibili.com/x/web-interface/online"),"[自定义顶栏] 分区投稿信息获取失败");Object.values(this.categories).forEach((t=>{t.code&&(Array.isArray(t.code)?t.count=lodash.sum(t.code.map((t=>i[t]))):t.count=i[t.code])}))},mounted(){this.$el.style.maxHeight="inherit",this.$nextTick((()=>{this.$el.style.maxHeight=""}))}});var c=n(8332),d=n.n(c),p=n(5544),u=n.n(p),m={insert:"head",singleton:!1};d()(u(),m);u().locals;const h=(0,n(4893).Z)(l,a,[],!1,null,null,null).exports},486:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("iframe",{attrs:{src:t.item.src,frameborder:"0",width:t.item.width,height:t.item.height}})};a._withStripped=!0;var i=n(1111),r=n(4276);const o=Vue.extend({name:"IframePopup",mixins:[i.u],props:{item:{type:r.kO,required:!0}}});const s=(0,n(4893).Z)(o,a,[],!1,null,null,null).exports},6310:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar-logo-container"},[t.seasonLogoUrl?e("div",{staticClass:"custom-navbar-logo season",style:{backgroundImage:`url(${t.seasonLogoUrl})`}}):e("VIcon",{staticClass:"custom-navbar-logo",attrs:{icon:"logo"}})],1)};a._withStripped=!0;var i=n(9986),r=n(2375),o=n(9648);const s=Vue.extend({name:"NavbarLogo",components:{VIcon:o.VIcon},data:()=>({seasonLogoUrl:""}),watch:{seasonLogoUrl(){document.body.classList.toggle("season-logo-enabled",Boolean(this.seasonLogoUrl))}},async created(){(0,i.addComponentListener)("customNavbar.seasonLogo",(async t=>{if(!t)return void(this.seasonLogoUrl="");const e=await(0,r.getJson)("https://api.bilibili.com/x/web-show/page/header?resource_id=1");0===e.code?this.seasonLogoUrl=lodash.get(e,"data.litpic","").replace("http:","https:"):this.seasonLogoUrl=""}),!0)}});var l=n(8332),c=n.n(l),d=n(7169),p=n.n(d),u={insert:"head",singleton:!1};c()(p(),u);p().locals;const m=(0,n(4893).Z)(s,a,[],!1,null,null,null).exports},2096:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"messages-popup",attrs:{role:"list"}},t._l(t.entries,(function(n){return e("div",{key:n.name,staticClass:"message-entry",attrs:{role:"listitem"}},[e("a",{attrs:{"data-prop":n.prop,target:"_blank",href:n.href,"data-count":n.count||null},on:{click:function(e){return t.clearCount(n)}}},[t._v(t._s(n.name))])])})),0)};a._withStripped=!0;var i=n(2375),r=n(1111);const o=[{prop:"reply",href:"https://message.bilibili.com/#/reply",name:"回复我的"},{prop:"at",href:"https://message.bilibili.com/#/at",name:"@我的"},{prop:"like",href:"https://message.bilibili.com/#/love",name:"收到的赞"},{prop:"sys_msg",href:"https://message.bilibili.com/#/system",name:"系统通知"},{prop:"user_msg",href:"https://message.bilibili.com/#/whisper",name:"我的消息"},{href:"https://message.bilibili.com/#/archive",name:"私信存档"},{href:"https://message.bilibili.com/#/config",name:"消息设置"}],s=Vue.extend({name:"MessagesPopup",mixins:[r.u],data:()=>({entries:o.map((t=>(t.count=0,t))),settings:{notify:!0,hideNotFollowedCount:!1,json:{}}}),async created(){await this.fetchSettings(),this.notify()},methods:{popupRefresh(){this.notify()},async fetchSettings(){const t=await(0,i.getJsonWithCredentials)("https://api.vc.bilibili.com/link_setting/v1/link_setting/get?msg_notify=1&show_unfollowed_msg=1");0===t.code&&(this.settings={notify:3!==t.data.msg_notify,hideNotFollowedCount:1===t.data.show_unfollowed_msg,json:t.data})},async notify(){if(!this.settings.notify)return;const[t,e]=await Promise.all([(0,i.getJsonWithCredentials)("https://api.bilibili.com/x/msgfeed/unread"),(0,i.getJsonWithCredentials)("https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread")]);t.data.user_msg=e.data.follow_unread||0,this.settings.hideNotFollowedCount||(t.data.user_msg+=e.data.unfollow_unread||0),this.item.notifyCount=o.reduce(((e,n)=>e+(n.prop?t.data[n.prop]:0)),0),this.item.notifyCount&&(console.log(o),o.forEach((e=>{if(!e.prop)return;const n=t.data[e.prop];console.log(e.prop,e.count,n),n>0&&(e.count=n)})))},clearCount(t){this.item.notifyCount-=t.count,t.count=0}}});var l=n(8332),c=n.n(l),d=n(5255),p=n.n(d),u={insert:"head",singleton:!1};c()(p(),u);p().locals;const m=(0,n(4893).Z)(s,a,[],!1,null,"38cbdbce",null).exports},9990:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"ranking-popup",attrs:{role:"list"}},t._l(t.entries,(function(n){return e("div",{key:n.name,staticClass:"ranking-entry",attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:n.href}},[t._v(t._s(n.name))])])})),0)};a._withStripped=!0;var i=n(1111);const r=[{href:"https://www.bilibili.com/v/popular/all",name:"综合热门"},{href:"https://www.bilibili.com/v/popular/weekly",name:"每周必看"},{href:"https://www.bilibili.com/v/popular/history",name:"入站必刷"},{href:"https://www.bilibili.com/v/popular/rank/all",name:"排行榜"},{href:"https://www.bilibili.com/v/popular/music",name:"全站音乐榜"},{href:"https://www.bilibili.com/v/popular/drama",name:"短剧榜"}],o=Vue.extend({name:"RankingPopup",mixins:[i.u],data:()=>({entries:r})});var s=n(8332),l=n.n(s),c=n(1703),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;const u=(0,n(4893).Z)(o,a,[],!1,null,"6d9b8319",null).exports},6903:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var a=function(){var t=this._self._c;this._self._setupProxy;return t("div",{staticClass:"custom-navbar-search"},[t("LaunchBar")],1)};a._withStripped=!0;const i=coreApis.componentApis.launchBar.LaunchBar;var r=n.n(i);const o=Vue.extend({components:{LaunchBar:r()}});var s=n(8332),l=n.n(s),c=n(827),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;const u=(0,n(4893).Z)(o,a,[],!1,null,null,null).exports},5401:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar-extra-options"},[t.login?e("VButton",{ref:"button",on:{mouseover:function(e){return t.loadNavbarSettings()},click:function(e){return t.toggleNavbarSettings()}}},[t._v("\n 布局设置"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):t._e()],1)};a._withStripped=!0;var i=n(605),r=n(9648),o=n(632);const s=Vue.extend({components:{VIcon:r.VIcon,VButton:r.VButton},data:()=>({login:Boolean((0,i.getUID)())}),methods:{async loadNavbarSettings(){if(await(0,o.loadNavbarSettings)()){const t=this.$refs.button.$el;(0,o.setTriggerElement)(t)}},toggleNavbarSettings:o.toggleNavbarSettings}});var l=n(8332),c=n.n(l),d=n(4116),p=n.n(d),u={insert:"head",singleton:!1};c()(p(),u);p().locals;const m=(0,n(4893).Z)(s,a,[],!1,null,null,null).exports},7373:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>x});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VPopup",{ref:"popup",staticClass:"custom-navbar-settings",attrs:{fixed:"",lazy:!1,"trigger-element":t.triggerElement},model:{value:t.open,callback:function(e){t.open=e},expression:"open"}},[e("div",{staticClass:"navbar-settings-header"},[e("VIcon",{staticClass:"title-icon",attrs:{icon:"mdi-sort",size:24}}),t._v(" "),e("div",{staticClass:"title"},[t._v("顶栏布局设置")]),t._v(" "),e("div",{staticClass:"grow"}),t._v(" "),e("div",{staticClass:"close",on:{click:function(e){t.open=!1}}},[e("VIcon",{attrs:{icon:"close",size:18}})],1)],1),t._v(" "),e("div",{staticClass:"navbar-settings-content"},[e("div",{staticClass:"navbar-settings-section"},[e("div",{staticClass:"navbar-settings-section-title"},[t._v("边缘间距")]),t._v(" "),e("div",{staticClass:"navbar-settings-section-description"},[t._v("\n 设定两侧边缘处的间距, 单位为百分比, 100%为整个顶栏的宽度.\n "),e("br"),t._v("空间不足时, 实际呈现的间距会自动缩小.\n ")]),t._v(" "),e("div",{staticClass:"navbar-settings-section-content",on:{mouseover:function(e){return t.peekPadding(!0)},mouseout:function(e){return t.peekPadding(!1)}}},[e("VSlider",{attrs:{min:0,max:40,step:.5},model:{value:t.padding,callback:function(e){t.padding=e},expression:"padding"}}),t._v(" "),e("div",{staticClass:"padding-value"},[t._v(t._s(t.padding.toFixed(1))+"%")])],1)]),t._v(" "),e("div",{staticClass:"navbar-settings-section"},[e("div",{staticClass:"navbar-settings-section-title"},[t._v("元素呈现")]),t._v(" "),e("div",{staticClass:"navbar-settings-section-description"},[t._v("\n 按住并拖动可以调整顺序, 点击眼睛图标可以切换隐藏/显示.\n ")]),t._v(" "),t.loaded?t._e():e("VLoading"),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],ref:"navbarSortList",staticClass:"navbar-settings-section-content navbar-sort-list"},t._l(t.rendered.items,(function(n){return e("div",{key:n.name,staticClass:"navbar-sort-item",class:{"navbar-hidden":n.hidden},attrs:{"data-name":n.name},on:{mouseover:function(e){return t.peekItem(n,!0)},mouseout:function(e){return t.peekItem(n,!1)}}},[e("div",{staticClass:"item-name"},[t._v("\n "+t._s(n.displayName)+"\n ")]),t._v(" "),e("div",{staticClass:"toggle-visible"},[e("VIcon",{attrs:{size:18,icon:n.hidden?"mdi-eye-off-outline":"mdi-eye-outline"},on:{click:function(e){return t.toggleVisible(n)}}})],1)])})),0)],1)])])};a._withStripped=!0;var i=n(9648),r=n(9986),o=n(605);const s=coreApis.runtimeLibrary;var l=n(9153),c=n(4276);const d=t=>{t.forEach(((t,e)=>{t.order!==e&&(t.order=e)}));const e=Object.fromEntries(t.map((t=>[t.name,t.order])));c.kO.navbarOptions.order=e},{navbarOptions:p}=c.kO,[u]=(0,l.getData)(c.Je),m=Vue.extend({components:{VPopup:i.VPopup,VIcon:i.VIcon,VSlider:i.VSlider,VLoading:i.VLoading},props:{triggerElement:{type:HTMLElement,default:null}},data:()=>({open:!1,padding:p.padding,rendered:u,hidden:p.hidden,loaded:!1}),watch:{padding:lodash.debounce((t=>{p.padding=t}),200)},async mounted(){(0,r.addComponentListener)("customNavbar.padding",(t=>{this.padding!==t&&(this.padding=t)}));const t=this.$refs.navbarSortList;var e;(await s.SortableJSLibrary).create(t,{delay:100,forceFallback:!0,onEnd:t=>{this.onSort(t)}}),(e=u.items).every(((t,e)=>t.order===e))||d(e),this.loaded=!0},methods:{toggle(){this.$refs.popup.toggle()},peekPadding(t){(0,o.dqa)(".custom-navbar .padding").forEach((e=>e.classList.toggle("peek",t)))},peekItem(t,e){t.element?.classList.toggle("peek",e)},onSort(t){const e=this.$refs.navbarSortList,n=t.item;console.log(`${n.getAttribute("data-name")} ${t.oldIndex}->${t.newIndex}`);const a=Object.fromEntries([...e.children].map(((t,e)=>[t.getAttribute("data-name"),e])));this.rendered.items=((t,e)=>{const n=lodash.sortBy(t,(t=>e[t.name]));return d(n),n})(u.items,a)},toggleVisible(t){p.hidden.includes(t.name)?(lodash.pull(p.hidden,t.name),t.hidden=!1,console.log("delete",t.name)):(p.hidden.push(t.name),t.hidden=!0,console.log("add",t.name))}}});var h=n(8332),f=n.n(h),v=n(9522),b=n.n(v),g={insert:"head",singleton:!1};f()(b(),g);b().locals;const x=(0,n(4893).Z)(m,a,[],!1,null,null,null).exports},9947:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("SubscriptionsList",{attrs:{type:"bangumi",filter:t.filter}})};a._withStripped=!0;var i=n(467);const r=Vue.extend({components:{SubscriptionsList:i.Z},props:{filter:{type:[Object,null],default:null}}});const o=(0,n(4893).Z)(r,a,[],!1,null,null,null).exports},2944:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("SubscriptionsList",{attrs:{type:"cinema",filter:t.filter}})};a._withStripped=!0;var i=n(467);const r=Vue.extend({components:{SubscriptionsList:i.Z},props:{filter:{type:[Object,null],default:null}}});const o=(0,n(4893).Z)(r,a,[],!1,null,null,null).exports},453:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>v});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"navbar-subscriptions"},[e("TabControl",{ref:"tabControl",attrs:{tabs:t.tabs,"more-link":t.moreLink},scopedSlots:t._u([{key:"header-item",fn:function(){return[e("div",{staticClass:"navbar-subscriptions-filter"},[e("VDropdown",{attrs:{round:"",items:t.filterItems},model:{value:t.selectedFilter,callback:function(e){t.selectedFilter=e},expression:"selectedFilter"}})],1)]},proxy:!0}])})],1)};a._withStripped=!0;var i=n(9648),r=n(605),o=n(1111),s=n(1459),l=n(9054);const c=[{name:"all",value:{viewAll:!0,status:l.y.Viewing},displayName:"全部"},{name:"viewing",value:{viewAll:!1,status:l.y.Viewing},displayName:"在看"},{name:"toView",value:{viewAll:!1,status:l.y.ToView},displayName:"想看"},{name:"viewed",value:{viewAll:!1,status:l.y.Viewed},displayName:"看过"}],d=Vue.extend({components:{TabControl:i.TabControl,VDropdown:i.VDropdown},mixins:[o.u],data(){const t=(0,r.getUID)();return{uid:t,filterItems:c,selectedFilter:c[0],moreLink:e=>`https://space.bilibili.com/${t}/${e.name}`,filter:{viewAll:!0,status:l.y.Viewing}}},computed:{tabs(){return[{name:s.N.Bangumi,displayName:"追番",activeLink:`https://space.bilibili.com/${this.uid}/bangumi`,component:()=>Promise.resolve().then(n.bind(n,9947)).then((t=>t.default)),propsData:{filter:this.selectedFilter.value}},{name:s.N.Cinema,displayName:"追剧",activeLink:`https://space.bilibili.com/${this.uid}/cinema`,component:()=>Promise.resolve().then(n.bind(n,2944)).then((t=>t.default)),propsData:{filter:this.selectedFilter.value}}]}}});var p=n(8332),u=n.n(p),m=n(3174),h=n.n(m),f={insert:"head",singleton:!1};u()(h(),f);h().locals;const v=(0,n(4893).Z)(d,a,[],!1,null,null,null).exports},467:(t,e,n)=>{"use strict";n.d(e,{Z:()=>g});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"subscription-list"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"subscription-content"},t._l(t.cards,(function(n){return e("a",{key:n.id,staticClass:"subscription-card",attrs:{href:n.playUrl,target:"_blank"}},[e("div",{staticClass:"subscriptions-cover-container"},[e("DpiImage",{staticClass:"cover",attrs:{src:n.coverUrl,size:64}})],1),t._v(" "),e("div",{staticClass:"card-info"},[e("h1",{staticClass:"title",attrs:{title:n.title}},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"progress-row"},[n.status?e("div",{staticClass:"status",class:"status-"+n.status},[t._v("\n "+t._s(n.statusText)+"\n ")]):t._e(),t._v(" "),n.progress?e("div",{staticClass:"progress",attrs:{title:n.progress+" | "+n.latest}},[t._v("\n "+t._s(n.progress)+" | "+t._s(n.latest)+"\n ")]):e("div",{staticClass:"progress",attrs:{title:n.latest}},[t._v(t._s(n.latest))]),t._v(" "),e("a",{staticClass:"info",attrs:{href:n.mediaUrl,target:"_blank",title:"详细信息"}},[e("VIcon",{attrs:{icon:"mdi-information-outline",size:16}})],1)])])])})),0),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(605),r=n(3414),o=n(9648),s=n(2375),l=n(1459),c=n(9054);const d=t=>{switch(t){case c.y.ToView:return"想看";case c.y.Viewing:default:return"在看";case c.y.Viewed:return"看过"}},p=(t,e)=>{let n=t.status;n!==c.y.Viewed&&(n=c.y.Viewed-n);let a=e.status;return a!==c.y.Viewed&&(a=c.y.Viewed-a),n-a},u=Vue.extend({components:{DpiImage:o.DpiImage,VLoading:o.VLoading,VEmpty:o.VEmpty,VIcon:o.VIcon,ScrollTrigger:o.ScrollTrigger},props:{filter:{type:[Object,null],default:null},type:{type:String,default:l.N.Bangumi}},data:()=>({loading:!0,hasMorePage:!0,cards:[],page:1}),watch:{filter(){this.cards=[],this.loading=!0,this.page=1,this.nextPage()}},async created(){this.nextPage()},methods:{async nextPage(){try{const t=this.filter,e=t.viewAll?0:t.status,n=new URLSearchParams({type:this.type!==l.N.Bangumi?"2":"1",pn:this.page,ps:"16",vmid:(0,i.getUID)(),follow_status:e.toString()}),a=await(0,s.getJsonWithCredentials)(`https://api.bilibili.com/x/space/bangumi/follow/list?${n}`);if(0!==a.code)return void(0,r.logError)(`加载订阅信息失败: ${a.message}`);const o=lodash.uniqBy(lodash.get(a,"data.list").map((t=>({title:t.title,coverUrl:t.square_cover.replace("http:","https:"),latest:t.new_ep.index_show,progress:t.progress,id:t.season_id,status:t.follow_status,statusText:d(t.follow_status),playUrl:`https://www.bilibili.com/bangumi/play/ss${t.season_id}`,mediaUrl:`https://www.bilibili.com/bangumi/media/md${t.media_id}`}))),(t=>t.id)).sort(p);this.page++,this.cards=this.cards.concat(o),this.hasMorePage=this.cards.length{"use strict";n.r(e),n.d(e,{default:()=>p});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"navbar-upload"},[e("VIcon",{attrs:{icon:"upload",size:18}}),t._v(" "),e("div",{staticClass:"navbar-upload-name"},[t._v("投稿")])],1)};a._withStripped=!0;var i=n(9648);const r=Vue.extend({components:{VIcon:i.VIcon}});var o=n(8332),s=n.n(o),l=n(6046),c=n.n(l),d={insert:"head",singleton:!1};s()(c(),d);c().locals;const p=(0,n(4893).Z)(r,a,[],!1,null,"99a054ea",null).exports},8855:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>p});var a=function(){var t=this;t._self._c,t._self._setupProxy;return t._m(0)};a._withStripped=!0;var i=n(1111);const r=Vue.extend({mixins:[i.u]});var o=n(8332),s=n.n(o),l=n(3467),c=n.n(l),d={insert:"head",singleton:!1};s()(c(),d);c().locals;const p=(0,n(4893).Z)(r,a,[function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"upload-popup",attrs:{role:"list"}},[e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/text/apply"}},[t._v("专栏投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/audio/frame"}},[t._v("音频投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/sticker"}},[t._v("贴纸投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/video/frame"}},[t._v("视频投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload-manager/article"}},[t._v("投稿管理")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/home"}},[t._v("创作中心")])])])}],!1,null,"b43e8cea",null).exports},1093:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>h});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"user-face-container"},[e("img",{staticClass:"user-face",attrs:{src:t.faceSrc,srcset:t.faceSrcset}}),t._v(" "),e("img",{staticClass:"user-pendant",attrs:{src:t.pendantSrc,srcset:t.pendantSrcset}})])};a._withStripped=!0;var i=n(3517),r=n(605);const o=coreApis.utils.constants,s="//static.hdslb.com/images/member/noface.gif",l=Vue.extend({name:"UserFace",data:()=>({faceSrc:o.EmptyImageUrl,pendantSrc:o.EmptyImageUrl,faceSrcset:null,pendantSrcset:null}),async created(){const t=await(0,i.getUserInfo)();if(t.isLogin){if(t.face){const e=t.face.replace("http:","https:");if(e.includes(s))this.faceSrc=s;else{const t=68;this.faceSrc=e,this.faceSrcset=(0,r.getDpiSourceSet)(e,t)}}if(t.pendant?.image){const e=t.pendant.image.replace("http:","https:"),n=116;this.pendantSrcset=(0,r.getDpiSourceSet)(e,n,"png")}}else this.faceSrc="https://static.hdslb.com/images/akari.jpg"}});var c=n(8332),d=n.n(c),p=n(5650),u=n.n(p),m={insert:"head",singleton:!1};d()(u(),m);u().locals;const h=(0,n(4893).Z)(l,a,[],!1,null,null,null).exports},9630:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>v});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"user-info-panel"},[t.isLogin&&!0===t.userInfo.isLogin?e("div",{staticClass:"logged-in"},[e("a",{staticClass:"name",attrs:{target:"_blank",href:"https://space.bilibili.com/"}},[t._v(t._s(t.userInfo.uname))]),t._v(" "),e("a",{staticClass:"type",attrs:{target:"_blank",href:"https://account.bilibili.com/account/big"}},[t._v(t._s(t.userType))]),t._v(" "),1===t.userInfo.vipStatus&&2===t.userInfo.vipType?e("div",{staticClass:"privileges row"},[e("div",{staticClass:"b-coin",class:{received:t.privileges.bCoin.received},attrs:{title:"有效期限: "+t.privileges.bCoin.expire},on:{click:function(e){return t.privilegeReceive(1)}}},[t._v("\n "+t._s(t.privileges.bCoin.received?"已领取B币":"领取B币")+"\n ")]),t._v(" "),e("div",{staticClass:"coupons",class:{received:t.privileges.coupons.received},attrs:{title:"有效期限: "+t.privileges.coupons.expire},on:{click:function(e){return t.privilegeReceive(2)}}},[t._v("\n "+t._s(t.privileges.coupons.received?"已领取优惠券":"领取优惠券")+"\n ")])]):t._e(),t._v(" "),e("div",{staticClass:"level-info row"},[e("a",{staticClass:"level",attrs:{target:"_blank",title:"等级",href:"https://account.bilibili.com/account/record"}},[t.userInfo.is_senior_member?e("VIcon",{staticClass:"level-icon plus",attrs:{icon:"lv"+t.userInfo.level_info.current_level+"-plus",colored:"",size:30}}):e("VIcon",{staticClass:"level-icon",attrs:{icon:"lv"+t.userInfo.level_info.current_level}})],1),t._v(" "),e("span",{staticClass:"level-progress-label"},[t._v(t._s(t.userInfo.level_info.current_exp)+" / "+t._s(t.userInfo.level_info.next_exp))])]),t._v(" "),e("div",{staticClass:"level-progress separator"},[e("div",{staticClass:"level-progress-thumb",style:t.levelProgressStyle})]),t._v(" "),e("div",{staticClass:"items"},[e("a",{staticClass:"item",attrs:{target:"_blank",title:"手机验证",href:"https://passport.bilibili.com/account/security#/bindphone"}},[e("VIcon",{attrs:{icon:"bind-phone",size:20}}),t._v(" "),t.userInfo.mobile_verified?e("VIcon",{attrs:{icon:"ok",size:18}}):e("VIcon",{attrs:{icon:"cancel",size:18}})],1),t._v(" "),e("a",{staticClass:"item",attrs:{target:"_blank",title:"邮箱验证",href:"https://passport.bilibili.com/account/security#/bindmail"}},[e("VIcon",{attrs:{icon:"bind-email",size:20}}),t._v(" "),t.userInfo.email_verified?e("VIcon",{attrs:{icon:"ok",size:18}}):e("VIcon",{attrs:{icon:"cancel",size:18}})],1),t._v(" "),e("a",{staticClass:"item",attrs:{target:"_blank",href:"https://account.bilibili.com/site/coin",title:"硬币"}},[e("VIcon",{attrs:{icon:"coin-outline",size:20}}),t._v(" "),e("span",[t._v(t._s(t.userInfo.money))])],1),t._v(" "),e("a",{staticClass:"item",attrs:{target:"_blank",href:"https://pay.bilibili.com/bb_balance.html",title:"B币"}},[e("VIcon",{attrs:{icon:"b-coin-outline",size:20}}),t._v(" "),e("span",[t._v(t._s(t.userInfo.wallet.bcoin_balance))])],1)]),t._v(" "),e("div",{staticClass:"separator"}),t._v(" "),e("div",{staticClass:"stats"},[e("a",{staticClass:"stats-item",attrs:{href:"https://space.bilibili.com/"+t.userInfo.mid+"/fans/follow",target:"_blank"}},[e("div",{staticClass:"stats-number"},[t._v(t._s(t._f("count")(t.stat.following)))]),t._v("\n 关注\n ")]),t._v(" "),e("a",{staticClass:"stats-item",attrs:{href:"https://space.bilibili.com/"+t.userInfo.mid+"/fans/fans",target:"_blank"}},[e("div",{staticClass:"stats-number"},[t._v(t._s(t._f("count")(t.stat.follower)))]),t._v("\n 粉丝\n ")]),t._v(" "),e("a",{staticClass:"stats-item",attrs:{href:"https://space.bilibili.com/"+t.userInfo.mid+"/dynamic",target:"_blank"}},[e("div",{staticClass:"stats-number"},[t._v(t._s(t._f("count")(t.stat.dynamic_count)))]),t._v("\n 动态\n ")])]),t._v(" "),e("div",{staticClass:"separator"}),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://account.bilibili.com/account/home"}},[e("VIcon",{attrs:{icon:"profile"}}),t._v("个人中心\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload-manager/article"}},[e("VIcon",{attrs:{icon:"posts"}}),t._v("投稿管理\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://pay.bilibili.com/"}},[e("VIcon",{attrs:{icon:"wallet"}}),t._v("B币钱包\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://link.bilibili.com/p/center/index"}},[e("VIcon",{attrs:{icon:"live-center"}}),t._v("直播中心\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://show.bilibili.com/orderlist"}},[e("VIcon",{attrs:{icon:"order-center"}}),t._v("订单中心\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://www.bilibili.com/v/cheese/mine"}},[e("VIcon",{attrs:{icon:"course"}}),t._v("我的课程\n ")],1),t._v(" "),e("div",{staticClass:"logout grey-button",on:{click:function(e){return t.logout()}}},[t._v("退出登录")])]):t._e(),t._v(" "),t.isLogin?t._e():e("div",{staticClass:"not-logged-in"},[e("h1",{staticClass:"welcome"},[t._v("欢迎来到 bilibili")]),t._v(" "),e("a",{staticClass:"signup grey-button",attrs:{href:"https://passport.bilibili.com/register/phone.html"}},[t._v("注册")]),t._v(" "),e("a",{staticClass:"login theme-button",attrs:{href:"https://passport.bilibili.com/login"}},[t._v("登录")])])])};a._withStripped=!0;var i=n(605),r=n(4289),o=n(3414),s=n(2375),l=n(3517),c=n(1111);const d=Vue.extend({components:{VIcon:coreApis.ui.VIcon},filters:{count:r.formatCount},mixins:[c.u],data:()=>({userInfo:{},stat:{},isLogin:Boolean((0,i.getUID)()),privileges:{bCoin:{received:!1,expire:""},coupons:{received:!1,expire:""}}}),computed:{level(){const t=`lv${this.userInfo.level_info.current_level}`;return this.userInfo.is_senior_member?{icon:`${t}-plus`,colored:!0}:{icon:t}},userType(){if(!this.userInfo.isLogin)return"未登录";if(0===this.userInfo.level_info.current_level)return"注册会员";if(1===this.userInfo.vipStatus){if(1===this.userInfo.vipType)return this.userInfo.vip_theme_type?"小会员":"大会员";if(2===this.userInfo.vipType)return this.userInfo.vip_theme_type?"年度小会员":"年度大会员"}return"正式会员"},levelProgressStyle(){if(!this.userInfo.isLogin)return{};const{current_exp:t,current_min:e,next_exp:n}=this.userInfo.level_info;return{transform:`scaleX(${(t-e)/(n-e)})`}}},async created(){const t=await(0,l.getUserInfo)();this.userInfo=t;const e=await(0,s.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/nav/stat");if(this.stat=e.data||{},this.isLogin&&2===this.userInfo.vipType){const t=await(0,s.getJsonWithCredentials)("https://api.bilibili.com/x/vip/privilege/my");if(0===t.code){const e=t.data.list.find((t=>1===t.type));this.privileges.bCoin.received=1===e.state,this.privileges.bCoin.expire=new Date(1e3*e.expire_time).toLocaleDateString();const n=t.data.list.find((t=>2===t.type));this.privileges.coupons.received=1===n.state,this.privileges.coupons.expire=new Date(1e3*n.expire_time).toLocaleDateString()}}},methods:{async privilegeReceive(t){const e={1:"bCoin",2:"coupons"};if(this.privileges[e[t]].received)return;this.privileges[e[t]].received=!0;const n=(0,i.getCsrf)(),a=await(await fetch("https://api.bilibili.com/x/vip/privilege/receive",{credentials:"include",headers:{"content-type":"application/x-www-form-urlencoded"},body:`type=${t}&csrf=${n}`,method:"POST"})).json();console.log(a),0===a.code?"bCoin"===e[t]&&(this.userInfo.wallet.bcoin_balance+=5):69801===a.code||(this.privileges[e[t]].received=!1,(0,o.logError)(a.message))},async logout(){const t=await(0,s.postTextWithCredentials)("https://passport.bilibili.com/login/exit/v2",(0,i.formData)({biliCSRF:(0,i.getCsrf)()})),e=lodash.get(JSON.parse(t),"data.redirectUrl","");e&&window.location.assign(e)}}});var p=n(8332),u=n.n(p),m=n(4642),h=n.n(m),f={insert:"head",singleton:!1};u()(h(),f);h().locals;const v=(0,n(4893).Z)(d,a,[],!1,null,null,null).exports},95:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"watchlater-list"},[e("div",{staticClass:"header"},[e("div",{staticClass:"watchlater-list-summary"},[t._v("共 "+t._s(t.filteredCards.length)+" 个")]),t._v(" "),e("div",{staticClass:"search"},[e("TextBox",{attrs:{linear:"",placeholder:"搜索"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),e("a",{staticClass:"operation",attrs:{target:"_blank",href:"https://www.bilibili.com/medialist/play/watchlater"}},[e("VButton",{staticClass:"round-button",attrs:{title:"播放全部",round:""}},[e("VIcon",{attrs:{icon:"mdi-play",size:18}})],1)],1),t._v(" "),e("a",{staticClass:"operation",attrs:{target:"_blank",href:"https://www.bilibili.com/watchlater/#/list"}},[e("VButton",{staticClass:"round-button",attrs:{title:"查看更多",round:""}},[e("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})],1)],1)]),t._v(" "),t.loading?e("VLoading"):t.loading||0!==t.cards.length?e("transition-group",{staticClass:"watchlater-list-content",attrs:{name:"cards",tag:"div"}},t._l(t.filteredCards,(function(n,a){return e("div",{key:n.aid,staticClass:"watchlater-card"},[e("a",{staticClass:"watchlater-cover-container",attrs:{target:"_blank",href:n.href}},[e("DpiImage",{staticClass:"cover",attrs:{src:n.coverUrl,size:{width:130,height:85}}}),t._v(" "),e("div",{staticClass:"floating remove",attrs:{title:"移除"},on:{click:function(e){return e.preventDefault(),t.remove(n.aid,a)}}},[e("VIcon",{attrs:{icon:"mdi-close",size:16}})],1),t._v(" "),e("div",{staticClass:"floating duration"},[t._v(t._s(n.durationText))]),t._v(" "),n.complete?e("div",{staticClass:"floating viewed"},[t._v("已观看")]):t._e()],1),t._v(" "),e("a",{staticClass:"title",attrs:{target:"_blank",href:n.href,title:n.title}},[t._v(t._s(n.title))]),t._v(" "),e("a",{staticClass:"up",attrs:{target:"_blank",href:"https://space.bilibili.com/"+n.upID,title:n.upName}},[e("DpiImage",{staticClass:"face",attrs:{src:n.upFaceUrl,size:20}}),t._v(" "),e("div",{staticClass:"name"},[t._v(t._s(n.upName))])],1)])})),0):e("VEmpty")],1)};a._withStripped=!0;var i=n(9986),r=n(4289);const o=coreApis.componentApis.video.watchlater;var s=n(9648),l=n(1111);const c=Vue.extend({components:{VLoading:s.VLoading,VEmpty:s.VEmpty,TextBox:s.TextBox,VButton:s.VButton,VIcon:s.VIcon,DpiImage:s.DpiImage},mixins:[l.u],data(){const t=(0,i.getComponentSettings)("watchlaterRedirect");return{watchlaterList:o.watchlaterList,loading:!0,cards:[],filteredCards:[],search:"",redirect:t.enabled&&t.options.navbar}},watch:{search(){this.updateFilteredCards()}},async created(){try{await this.updateList()}finally{this.loading=!1}},methods:{toggleWatchlater:o.toggleWatchlater,popupRefresh(){this.updateList()},async updateList(){const t=await(0,o.getWatchlaterList)(!0);if(!t)return void(this.cards=[]);const e=t=>this.redirect?`https://www.bilibili.com/video/${t.bvid}`:`https://www.bilibili.com/medialist/play/watchlater/${t.bvid}`,n=t.map((t=>{const n=(()=>{if(void 0===t.pages||!this.redirect)return e(t);const n=t.pages.map((t=>t.cid)),a=0===t.cid?1:n.indexOf(t.cid)+1;return a<=1?e(t):`${e(t)}?p=${a}`})(),a=Math.round(1e3*t.progress/t.duration)/1e3;return{aid:t.aid,href:n,coverUrl:t.pic.replace("http:","https:"),durationText:(0,r.formatDuration)(t.duration),duration:t.duration,complete:t.progress<0||a>.95,title:t.title,upName:t.owner.name,upFaceUrl:t.owner.face.replace("http:","https:"),upID:t.owner.mid}}));this.cards=n,this.search?this.updateFilteredCards():this.filteredCards=n},async remove(t,e){this.cards.splice(e,1),await this.toggleWatchlater(t)},updateFilteredCards:lodash.debounce((function(){const t=this.search.toLowerCase();this.$el.querySelector(".watchlater-list-content").scrollTo(0,0),this.filteredCards=this.cards.filter((e=>e.title.toLowerCase().includes(t)||e.upName.toLowerCase().includes(t)))}),100)}});var d=n(8332),p=n.n(d),u=n(5756),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},4893:(t,e,n)=>{"use strict";function a(t,e,n,a,i,r,o,s){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),a&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(t,e){return l.call(e),d(t,e)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:t,options:c}}n.d(e,{Z:()=>a})},6690:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=6690,t.exports=e},2948:t=>{"use strict";t.exports="使用脚本提供的顶栏替换原版的主站顶栏 (非主站不替换).\n\n启用后还可以在反广告插件 (例如 ABP) 中配置禁止原版顶栏的消息 iframe 以提升性能:\n- *://message.bilibili.com/pages/nav/index_new_pc_sync\n- *://message.bilibili.com/pages/nav/index_new_sync\n\n选项说明:\n- `全局固定`: 将顶栏固定显示, 即使页面向下滚动也仍然可见. (除了一部分有 b 站定制顶栏的页面会忽略此选项)\n- `主题色填充`: 使用通用设置中的主题颜色填充顶栏的背景.\n- `透明填充`: 在首页和主站的部分页面中, 当存在顶部横幅图片时, 顶栏背景将变为透明 + 阴影的样式.\n- `背景模糊`: 启用背景模糊效果, 会使背景颜色变得半透明, 注意这个效果非常非常消耗图形性能, 慎用.\n- `投影`: 在顶栏下方增加一小段投影效果.\n- `使用季节 Logo`: 使用 b 站首页的特殊 Logo 图片替换顶栏的 Logo 图, 通常会对应当前季节, 特殊活动期间可能会有变化导致看不清. (比如搞了个全白的 Logo, 而顶栏正好也是白色的)\n- `触摸模式`: 启用后顶栏的一级入口点击时不进行跳转, 方便触屏使用.\n- `新标签页打开`: 控制顶栏内链接是否在新标签页打开.\n- `自动刷新数据`: 启用后, 部分有弹窗的顶栏入口在鼠标经过时会自动刷新数据.\n- `顶栏高度`: 自定义顶栏的高度 (b 站原版的为 64px)\n- `消息提醒样式`: 自定义顶栏入口的消息提醒样式.\n- `搜索栏宽度`: 自定义搜索栏占顶栏的比例.\n- `链接对齐样式`: 自定义纯链接弹窗内链接文字的对齐样式.\n"},2375:t=>{"use strict";t.exports=coreApis.ajax},9799:t=>{"use strict";t.exports=coreApis.componentApis.feeds.api},5441:t=>{"use strict";t.exports=coreApis.componentApis.feeds.notify},3861:t=>{"use strict";t.exports=coreApis.componentApis.utils.categories.data},9153:t=>{"use strict";t.exports=coreApis.pluginApis.data},9986:t=>{"use strict";t.exports=coreApis.settings},9648:t=>{"use strict";t.exports=coreApis.ui},3517:t=>{"use strict";t.exports=coreApis.userInfo},4289:t=>{"use strict";t.exports=coreApis.utils.formatters},3414:t=>{"use strict";t.exports=coreApis.utils.log},4577:t=>{"use strict";t.exports=coreApis.utils.sort},605:t=>{"use strict";t.exports=coreApis.utils}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var r=a[t]={id:t,exports:{}};return n[t](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.t=function(n,a){if(1&a&&(n=this(n)),8&a)return n;if("object"==typeof n&&n){if(4&a&&n.__esModule)return n;if(16&a&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var o={};t=t||[null,e({}),e([]),e(e)];for(var s=2&a&&n;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((t=>o[t]=()=>n[t]));return o.default=()=>n,i.d(r,o),r},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>l});const t=coreApis.componentApis.define;var e=i(9986),n=i(605);let a=function(t){return t.Number="数字",t.Hidden="隐藏",t.Dot="点状",t}({});let o=function(t){return t.Left="左侧对齐",t.Center="居中对齐",t.Right="右侧对齐",t}({});const s=(0,t.defineOptionsMetadata)({hidden:{hidden:!0,defaultValue:["blank1","blank4","drawing","music","gamesIframe","bangumi","match","creations"],displayName:"隐藏的元素"},order:{hidden:!0,defaultValue:{},displayName:"元素顺序"},padding:{hidden:!0,defaultValue:10,displayName:"边缘间距(%)"},globalFixed:{defaultValue:!1,displayName:"全局固定"},fill:{defaultValue:!1,displayName:"主题色填充"},transparent:{defaultValue:!0,displayName:"透明填充"},blur:{defaultValue:!1,displayName:"背景模糊"},shadow:{defaultValue:!0,displayName:"投影"},seasonLogo:{defaultValue:!1,displayName:"使用季节Logo"},touch:{defaultValue:!1,displayName:"触摸模式"},openInNewTab:{defaultValue:!0,displayName:"新标签页打开"},refreshOnPopup:{defaultValue:!0,displayName:"自动刷新数据"},height:{defaultValue:50,validator:(0,n.getNumberValidator)(50,64),displayName:"顶栏高度 (px)"},openInNewTabOverrides:{defaultValue:{logo:!1},displayName:"新标签页打开设置覆盖",hidden:!0},showDeadVideos:{defaultValue:!1,displayName:"显示已失效视频",hidden:!0},notifyStyle:{defaultValue:a.Number,dropdownEnum:a,displayName:"消息提醒样式"},linkPopupContentAlignStyle:{defaultValue:o.Left,dropdownEnum:o,displayName:"链接对齐样式"},searchBarWidth:{defaultValue:15,slider:{min:8,max:64},displayName:"搜索栏宽度 (%)"}}),l=(0,t.defineComponentMetadata)({name:"customNavbar",displayName:"自定义顶栏",entry:async t=>{let{metadata:{name:r}}=t;if((0,n.isIframe)()||(0,n.isNotHtml)())return;(0,e.addComponentListener)(`${r}.padding`,(t=>{document.documentElement.style.setProperty("--navbar-bounds-padding",`${t}%`)}),!0),(0,e.addComponentListener)(`${r}.searchBarWidth`,(t=>{document.documentElement.style.setProperty("--navbar-search-width",`${t}vw`)}),!0);["https://space.bilibili.com","https://www.bilibili.com/read","https://www.bilibili.com/opus","https://www.bilibili.com/account/history"].some((t=>(0,n.matchUrlPattern)(t)))||(0,e.addComponentListener)(`${r}.globalFixed`,(t=>{document.body.classList.toggle("fixed-navbar",t)}),!0),(0,n.matchUrlPattern)("https://www.bilibili.com/account/history")&&document.body.classList.add("history-page");const s=await Promise.resolve().then(i.bind(i,9184)),l=(0,n.mountVueComponent)(s);document.body.insertAdjacentElement("beforeend",l.$el),["fill","shadow","blur"].forEach((t=>{(0,e.addComponentListener)(`${r}.${t}`,(e=>l.toggleStyle(e,t)),!0)})),(()=>{const t={[a.Number]:"number",[a.Hidden]:"hidden",[a.Dot]:"dot"};(0,e.addComponentListener)("customNavbar.notifyStyle",(e=>{document.documentElement.setAttribute("data-navbar-notify-style",t[e])}),!0)})(),(()=>{const t={[o.Left]:"left",[o.Center]:"center",[o.Right]:"right"};(0,e.addComponentListener)("customNavbar.linkPopupContentAlignStyle",(e=>{document.documentElement.setAttribute("data-navbar-link-popup-content-align-style",t[e])}),!0)})()},tags:[componentsTags.style,componentsTags.general],options:s,urlInclude:["//www.bilibili.com","//t.bilibili.com","//search.bilibili.com","//space.bilibili.com","//account.bilibili.com","//pay.bilibili.com","//member.bilibili.com","//big.bilibili.com","//message.bilibili.com","//app.bilibili.com","//passport.bilibili.com","//live.bilibili.com/blackboard/"],urlExclude:["//t.bilibili.com/vote/h5/index/#/result","//t.bilibili.com/lottery/h5/index/#/result","//member.bilibili.com/video/upload","//member.bilibili.com/platform","//space.bilibili.com/ajax/","//www.bilibili.com/h5/comment/","//member.bilibili.com/v2","//game.bilibili.com/","//www.bilibili.com/mooc/"],instantStyles:[{name:"custom-navbar-style",style:()=>Promise.resolve().then(i.t.bind(i,5222,23)),important:!0}],unload:async()=>{document.querySelectorAll(".custom-navbar,.custom-navbar-settings").forEach((t=>t.style.display="none"))},reload:async()=>{document.querySelectorAll(".custom-navbar,.custom-navbar-settings").forEach((t=>t.style.display="flex"))},extraOptions:()=>Promise.resolve().then(i.bind(i,5401)).then((t=>t.default)),plugin:{displayName:"自定义顶栏 - 功能扩展",setup:t=>{let{addData:e}=t;e("launchBar.actions",(t=>{t.push({name:"navbarSettings",getActions:async()=>[{name:"自定义顶栏设置",description:"Custom Navbar Settings",icon:"mdi-sort",action:async()=>{const{toggleNavbarSettings:t}=await Promise.resolve().then(i.bind(i,632));t()}}]})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const t=i(6690);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,2948,17)).then((t=>t.default))}})()})})(),r=r.component})())); \ No newline at end of file +a=Boolean(window&&document&&document.all&&!window.atob)),a},r=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),o=[];function s(t){for(var e=-1,n=0;n{var a=n(1551);a&&a.__esModule&&(a=a.default),t.exports="string"==typeof a?a:a.toString()},9184:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>ct});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar",class:t.styles,attrs:{role:"navigation"}},[e("div",{staticClass:"left-pad padding"}),t._v(" "),e("div",{staticClass:"custom-navbar-items",attrs:{role:"list"}},t._l(t.items,(function(t){return e("NavbarItem",{key:t.name,attrs:{item:t}})})),1),t._v(" "),e("div",{staticClass:"right-pad padding"})])};a._withStripped=!0;var i=n(9986),r=n(605),o=n(4577),s=n(9153);const l="https://message.bilibili.com/",c={name:"messages",displayName:"消息",content:"消息",href:l,active:document.URL.startsWith(l),loginRequired:!0,touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,2096)).then((t=>t.default)),lazy:!1},d="https://www.bilibili.com/v/popular/rank/",p={name:"ranking",displayName:"排行",content:"排行",href:`${d}all`,active:document.URL.startsWith(d),touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,9990)).then((t=>t.default))},u={name:"userInfo",displayName:"个人信息",content:()=>Promise.resolve().then(n.bind(n,1093)).then((t=>t.default)),href:(0,r.getUID)()?"https://space.bilibili.com":null,touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,9630)).then((t=>t.default)),lazy:!1,noPopupPadding:!0,boundingWidth:240},m={name:"logo",displayName:"Logo",content:()=>Promise.resolve().then(n.bind(n,6310)).then((t=>t.default)),href:"https://www.bilibili.com/"},h={name:"home",displayName:"主站",content:"主站",href:"https://www.bilibili.com/",touch:!0,boundingWidth:366,popupContent:()=>Promise.resolve().then(n.bind(n,4324)).then((t=>t.default))},f=t=>({...t,name:`${t.iframeName}Iframe`,content:t.displayName,touch:!0,popupContent:()=>Promise.resolve().then(n.bind(n,486)).then((t=>t.default)),boundingWidth:t.width,noPopupPadding:!0,transparentPopup:!0}),v=f({src:"https://www.bilibili.com/page-proxy/game-nav.html",href:"https://game.bilibili.com/",width:680,height:260,lazy:!0,displayName:"游戏中心",iframeName:"games"}),b=f({src:"https://live.bilibili.com/blackboard/dropdown-menu.html",href:"https://live.bilibili.com",width:528,height:266,lazy:!0,displayName:"直播",iframeName:"lives"}),g=f({src:"https://manga.bilibili.com/eden/bilibili-nav-panel.html",href:"https://manga.bilibili.com",width:720,height:266,lazy:!0,displayName:"漫画",iframeName:"manga"}),x=new Array(4).fill(0).map(((t,e)=>({name:`blank${e+1}`,displayName:`弹性空白${e+1}`,content:"",disabled:!0,flexStyle:"1 0 auto"}))),y=t=>({...t,content:t.displayName,active:document.URL.startsWith(t.href)}),w=(y({name:"ranking",displayName:"排行",href:"https://www.bilibili.com/v/popular/rank/all"}),y({name:"bangumi",displayName:"番剧",href:"https://www.bilibili.com/anime/"})),_=y({name:"drawing",displayName:"相簿",href:"https://h.bilibili.com"}),C=y({name:"music",displayName:"音频",href:"https://www.bilibili.com/audio/home/"}),k=y({name:"shop",displayName:"会员购",href:"https://show.bilibili.com"}),V=y({name:"match",displayName:"赛事",href:"https://www.bilibili.com/v/game/match/"}),S=y({name:"creations",displayName:"创作中心",href:"https://member.bilibili.com/platform/home"}),P={name:"upload",displayName:"投稿",content:()=>Promise.resolve().then(n.bind(n,5913)).then((t=>t.default)),touch:!0,href:"https://member.bilibili.com/platform/upload/video/frame",popupContent:()=>Promise.resolve().then(n.bind(n,8855)).then((t=>t.default))},I={name:"search",displayName:"搜索",content:()=>Promise.resolve().then(n.bind(n,6903)).then((t=>t.default)),disabled:!0},N={name:"feeds",displayName:"动态",content:"动态",href:"https://t.bilibili.com/",touch:!0,active:"https://t.bilibili.com/"===document.URL.replace(window.location.search,""),contentMounted:async t=>{const{getNotifyCount:e}=await Promise.resolve().then(n.t.bind(n,5441,23));await(async()=>{const n=await e();t.notifyCount=n})()},loginRequired:!0,popupContent:()=>Promise.resolve().then(n.bind(n,5559)).then((t=>t.default)),boundingWidth:300,noPopupPadding:!0};var L=n(1459);const z={name:"watchlater",displayName:"稍后再看",content:"稍后再看",href:"https://www.bilibili.com/watchlater/#/list",touch:!0,active:document.URL.startsWith("https://www.bilibili.com/watchlater/"),loginRequired:!0,boundingWidth:380,noPopupPadding:!0,popupContent:()=>Promise.resolve().then(n.bind(n,95)).then((t=>t.default))},O=`https://space.bilibili.com/${(0,r.getUID)()}/favlist`,T={name:"favorites",displayName:"收藏",content:"收藏",href:O,touch:!0,active:document.URL.replace(/\?.*$/,"")===O,loginRequired:!0,boundingWidth:380,noPopupPadding:!0,popupContent:()=>Promise.resolve().then(n.bind(n,6127)).then((t=>t.default))},j="https://www.bilibili.com/account/history",D={name:"history",displayName:"历史",content:"历史",href:j,touch:!0,active:document.URL.replace(/\?.*$/,"")===j,loginRequired:!0,boundingWidth:400,noPopupPadding:!0,popupContent:()=>Promise.resolve().then(n.bind(n,4850)).then((t=>t.default))},[A,E,$,M]=x;var B=n(4276),U=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{directives:[{name:"show",rawName:"v-show",value:!t.item.hidden,expression:"!item.hidden"}],staticClass:"custom-navbar-item",class:{disabled:t.item.disabled,active:t.item.active,"input-within":t.inputWithin},style:{flex:t.item.flexStyle,order:t.item.order},attrs:{role:"listitem","data-name":t.item.name}},[t.item.href?e("CustomNavbarLink",{staticClass:"main-content",attrs:{"new-tab":t.newTab,href:!t.item.active&&!t.item.touch&&t.item.href},on:{mouseover:function(e){return e.target!==e.currentTarget?null:t.requestPopup()}}},["string"==typeof t.item.content?[t._v("\n "+t._s(t.item.content)+"\n ")]:e(t.item.content,{tag:"component",attrs:{item:t.item}})],2):e("div",{staticClass:"main-content",on:{click:function(e){!t.item.active&&!t.item.touch&&t.item.clickAction&&t.item.clickAction(e)}}},["string"==typeof t.item.content?[t._v("\n "+t._s(t.item.content)+"\n ")]:e(t.item.content,{tag:"component",attrs:{item:t.item}})],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.item.active,expression:"!item.active"}],staticClass:"notify-count"},[t.item.notifyCount>0?[t._v("\n "+t._s(t.item.notifyCount)+"\n ")]:t._e()],2),t._v(" "),e("div",{ref:"popupContainer",staticClass:"popup-container",on:{focusin:function(e){return t.toggleInputWithin(e,!0)},focusout:function(e){return t.toggleInputWithin(e,!1)}}},[t.item.popupContent?e("div",{staticClass:"popup",class:t.popupClasses(t.item)},[t.item.requestedPopup?e(t.item.popupContent,{ref:"popup",tag:"component",attrs:{container:t.$refs.popupContainer,item:t.item}}):t._e()],1):t._e()]),t._v(" "),e("div",{staticClass:"active-bar"})],1)};U._withStripped=!0;var W=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("a",t._g(t._b({attrs:{target:t.newTab?"_blank":null}},"a",t.$attrs,!1),t.$listeners),[t._t("default")],2)};W._withStripped=!0;const F=Vue.extend({props:{newTab:{type:Boolean,default:!0}}});var R=n(4893);const q=(0,R.Z)(F,W,[],!1,null,null,null).exports,H=t=>{const{name:e}=t,n=B.kO.navbarOptions;return e in n.openInNewTabOverrides?n.openInNewTabOverrides[e]:n.openInNewTab},Z=Vue.extend({components:{CustomNavbarLink:q},props:{item:{type:B.kO,required:!0}},data(){return{newTab:H(this.item),cancelListeners:none,inputWithin:!1}},mounted(){const t=this.item;t.contentMounted?.(t);const e=()=>{this.updateLinkOption()};(0,i.addComponentListener)("customNavbar.openInNewTabOverrides",e),(0,i.addComponentListener)("customNavbar.openInNewTab",e),this.cancelListeners=()=>{(0,i.removeComponentListener)("customNavbar.openInNewTabOverrides",e),(0,i.removeComponentListener)("customNavbar.openInNewTab",e)}},beforeDestroy(){this.cancelListeners?.()},methods:{toggleInputWithin(t,e){t.target instanceof HTMLInputElement?this.inputWithin=e:this.inputWithin=!1},updateLinkOption(){this.newTab=H(this.item)},popupClasses:t=>({transparent:t.transparentPopup,"no-padding":t.noPopupPadding,"iframe-container":t.iframeName}),triggerPopupShow:lodash.debounce((function(t){const{popup:e}=this.$refs;if(!e)return;const n=B.kO.navbarOptions.refreshOnPopup&&e.popupRefresh&&"function"==typeof e.popupRefresh;!t&&n&&e.popupRefresh(),e.popupShow&&"function"==typeof e.popupShow&&e.popupShow()}),300),async requestPopup(){const{item:t}=this;if(!t.disabled)return t.requestedPopup?void this.triggerPopupShow(!1):(t.requestedPopup=!0,void this.triggerPopupShow(!0))}}});var J=n(8332),Y=n.n(J),X=n(1385),G=n.n(X),Q={insert:"head",singleton:!1};Y()(G(),Q);G().locals;const K=(0,R.Z)(Z,U,[],!1,null,null,null).exports,tt=coreApis.spinQuery,et=coreApis.utils.urls,[nt]=(0,s.registerAndGetData)(B.rm,[A,m,h,w,p,_,C,v,b,k,V,g,E,I,$,u,c,N,L.V,z,T,D,S,P,M]),[at]=(0,s.registerAndGetData)(B.Je,{items:[]}),it=()=>{const t=Boolean((0,r.getUID)()),e=nt.filter((e=>!(e.loginRequired&&!t))).map((t=>new B.kO(t))).sort((0,o.ascendingSort)((t=>t.order)));return at.items=e,e},rt=Vue.extend({components:{NavbarItem:K},data:()=>({initItems:nt,items:it(),styles:[],height:B.kO.navbarOptions.height}),watch:{initItems(){this.items=it()}},async mounted(){(0,i.addComponentListener)("customNavbar.height",(t=>{document.documentElement.style.setProperty("--navbar-height",`${t}px`)}),!0),await(async t=>{(0,et.matchCurrentPage)(et.mainSiteUrls)&&(0,tt.sq)((()=>dqa(".animated-banner video, .banner-img img, #banner_link, .international-header .bili-banner, .bili-header__banner")),(t=>0!==t.length&&!!t.some((t=>!!t.style.backgroundImage||!!t.src||!!t.querySelector(".animated-banner"))))).then((e=>{0!==e.length&&((0,i.addComponentListener)("customNavbar.transparent",(e=>{(0,i.getComponentSettings)("hideBanner").enabled||t.toggleStyle(e,"transparent")}),!0),(0,i.addComponentListener)("hideBanner",(e=>{(0,i.getComponentSettings)("customNavbar").options.transparent&&t.toggleStyle(!e,"transparent")})))}))})(this)},methods:{toggleStyle(t,e){t&&!this.styles.includes(e)?this.styles.push(e):!t&&this.styles.includes(e)&&this.styles.splice(this.styles.indexOf(e),1)}}});var ot=n(2963),st=n.n(ot),lt={insert:"head",singleton:!1};Y()(st(),lt);st().locals;const ct=(0,R.Z)(rt,a,[],!1,null,null,null).exports},6127:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>S});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"favorites-list"},[e("div",{staticClass:"header"},[e("FavoritesFolderSelect",{model:{value:t.folder,callback:function(e){t.folder=e},expression:"folder"}}),t._v(" "),e("div",{staticClass:"search"},[e("TextBox",{attrs:{linear:"",placeholder:"搜索"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),e("a",{staticClass:"operation",attrs:{href:t.playLink,title:"播放全部",target:"_blank"}},[e("VButton",{staticClass:"play-all",attrs:{round:""}},[e("VIcon",{attrs:{icon:"mdi-play",size:18}})],1)],1),t._v(" "),e("a",{staticClass:"operation",attrs:{href:t.moreLink,title:"查看更多",target:"_blank"}},[e("VButton",{staticClass:"more-info",attrs:{round:""}},[e("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})],1)],1)],1),t._v(" "),e("div",{staticClass:"content"},[t.loading&&!t.searching?e("VLoading"):t.loading||t.canLoadMore||0!==t.filteredCards.length?e("transition-group",{staticClass:"cards",attrs:{name:"cards",tag:"div"}},[t._l(t.filteredCards,(function(n){return e("div",{key:n.id,staticClass:"favorite-card"},[e("a",{staticClass:"favorites-cover-container",attrs:{target:"_blank",href:"https://www.bilibili.com/video/"+n.bvid}},[e("DpiImage",{staticClass:"cover",attrs:{src:n.coverUrl,size:{width:130,height:85}}}),t._v(" "),e("div",{staticClass:"floating duration"},[t._v(t._s(n.durationText))]),t._v(" "),e("div",{staticClass:"floating favorite-time"},[t._v(t._s(n.favoriteTime))])],1),t._v(" "),e("a",{staticClass:"title",attrs:{target:"_blank",href:"https://www.bilibili.com/video/"+n.bvid,title:n.title}},[t._v(t._s(n.title))]),t._v(" "),n.upID?e("a",{staticClass:"up",attrs:{target:"_blank",href:"https://space.bilibili.com/"+n.upID,title:n.upName}},[e("DpiImage",{staticClass:"face",attrs:{"placeholder-image":"",src:n.upFaceUrl,size:20}}),t._v(" "),e("div",{staticClass:"name"},[t._v(t._s(n.upName))])],1):e("div",{staticClass:"description"},[t._v("\n "+t._s(n.description)+"\n ")])])})),t._v(" "),t.canLoadMore?e("ScrollTrigger",{key:"scroll-trigger",on:{trigger:function(e){return t.scrollTrigger()}}}):t._e()],2):e("VEmpty")],1)])};a._withStripped=!0;var i=n(9648),r=n(4289),o=n(605),s=n(2375),l=n(3414),c=n(9986);const d={id:0,name:"加载中...",count:0};var p=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VDropdown",{staticClass:"favorites-folder-select",attrs:{round:"",items:t.folders,"key-mapper":t=>t.id,value:t.folder},on:{change:function(e){return t.change(e)}},scopedSlots:t._u([{key:"item",fn:function({item:e}){return[t._v(" "+t._s(e.name)+" ("+t._s(e.count)+") ")]}}])})};p._withStripped=!0;const u=(0,c.getComponentSettings)("customNavbar").options,m=Vue.extend({components:{VDropdown:i.VDropdown},model:{prop:"folder",event:"change"},props:{folder:{type:Object,required:!0}},data:()=>({folders:[]}),async created(){const t=(0,o.getUID)();if(!t)return;const e=`https://api.bilibili.com/medialist/gateway/base/created?pn=1&ps=100&up_mid=${t}&is_space=0`,n=await(0,s.getJsonWithCredentials)(e);if(0!==n.code)throw new Error(`获取收藏夹列表失败: ${n.message}`);if(this.folders=lodash.get(n,"data.list",[]).map((t=>({id:t.id,name:t.title,count:t.media_count}))),this.folders.length>0&&this.folder.id===d.id){const{lastFavoriteFolder:t}=u,e=this.folders.find((e=>e.id===t));e?this.$emit("change",e):this.$emit("change",this.folders[0])}},methods:{change(t){u.lastFavoriteFolder=t.id,this.$emit("change",t)}}});var h=n(4893);const f=(0,h.Z)(m,p,[],!1,null,null,null).exports;var v=n(1111);const b=(0,c.getComponentSettings)("customNavbar").options,g=t=>!!b.showDeadVideos||9!==t.attr&&1!==t.attr,x=t=>({id:t.id,aid:t.id,bvid:t.bvid,coverUrl:t.cover.replace("http:","https:"),favoriteTimestamp:1e3*t.fav_time,favoriteTime:(0,r.formatDate)(new Date(1e3*t.fav_time)),title:t.title,description:t.intro,duration:t.duration,durationText:(0,r.formatDuration)(t.duration),playCount:t.cnt_info.play,danmakuCount:t.cnt_info.danmaku,upName:t.upper.name,upFaceUrl:t.upper.face.replace("http:","https:"),upID:t.upper.mid});const y=Vue.extend({components:{FavoritesFolderSelect:f,VLoading:i.VLoading,VEmpty:i.VEmpty,VIcon:i.VIcon,VButton:i.VButton,TextBox:i.TextBox,DpiImage:i.DpiImage,ScrollTrigger:i.ScrollTrigger},mixins:[v.u],data:()=>({loading:!0,cards:[],filteredCards:[],page:1,hasMorePage:!0,searchPage:1,hasMoreSearchPage:!0,search:"",folder:d}),computed:{searching(){return""!==this.search},moreLink(){const{id:t}=this.folder;return 0===t?`https://space.bilibili.com/${(0,o.getUID)()}/favlist`:`https://space.bilibili.com/${(0,o.getUID)()}/favlist?fid=${t}`},playLink(){const{id:t}=this.folder;if(0!==t)return`https://www.bilibili.com/medialist/play/ml${t}`},canLoadMore(){return this.searching?this.hasMoreSearchPage:this.hasMorePage}},watch:{folder(){this.changeList()},search(t){""!==t?(t=t.toLowerCase(),this.hasMoreSearchPage=!0,this.searchPage=1,this.filteredCards=this.cards.filter((e=>e.title.toLowerCase().includes(t)||e.upName.toLowerCase().includes(t)))):this.filteredCards=this.cards}},methods:{async getCards(){const t=`https://api.bilibili.com/x/v3/fav/resource/list?media_id=${this.folder.id}&pn=${this.page}&ps=20&keyword=&order=mtime&type=0&tid=0&platform=web`,e=await(0,s.getJsonWithCredentials)(t);if(0!==e.code)throw new Error(`加载收藏夹内容失败: ${e.message}`);return e.data.medias?e.data.medias.filter(g).map(x):[]},async changeList(){if(0!==this.folder.id)try{this.search="",this.cards=[],this.loading=!0,this.searchPage=1,this.hasMoreSearchPage=!0,this.page=1,this.hasMorePage=!0,this.cards=await this.getCards(),this.filteredCards=this.cards}catch(t){(0,l.logError)(t)}finally{this.loading=!1}},async loadNextPage(){try{this.page++;const t=await this.getCards();this.cards.push(...t),this.hasMorePage=0!==t.length||this.cards.lengtht.id));this.filteredCards=i;const r=n.length+a.length===0,o=a.length<20;if(r||o)return void(this.hasMoreSearchPage=!1)}catch(t){console.error(t)}finally{this.loading=!1}}),200),scrollTrigger(){this.searching?this.debounceSearchAllList():this.loadNextPage()}}});var w=n(8332),_=n.n(w),C=n(3608),k=n.n(C),V={insert:"head",singleton:!1};_()(k(),V);k().locals;const S=(0,h.Z)(y,a,[],!1,null,null,null).exports},5559:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"navbar-feeds"},[e("TabControl",{ref:"tabControl",attrs:{tabs:t.tabs,"more-link":"https://t.bilibili.com/"},scopedSlots:t._u([{key:"more-link",fn:function(){return[t._v("\n 所有动态\n "),e("VIcon",{attrs:{icon:"feeds",size:18}})]},proxy:!0}])})],1)};a._withStripped=!0;var i=n(9648),r=n(9799),o=n(5441),s=n(1111);const l=[{name:"video",displayName:"视频",component:()=>Promise.resolve().then(n.bind(n,5800)).then((t=>t.default)),activeLink:"https://t.bilibili.com/?tab=video",count:0},{name:"bangumi",displayName:"番剧",component:()=>Promise.resolve().then(n.bind(n,6801)).then((t=>t.default)),activeLink:"https://t.bilibili.com/?tab=pgc",count:0},{name:"column",displayName:"专栏",component:()=>Promise.resolve().then(n.bind(n,8957)).then((t=>t.default)),activeLink:"https://t.bilibili.com/?tab=article",count:0},{name:"live",displayName:"直播",component:()=>Promise.resolve().then(n.bind(n,2124)).then((t=>t.default)),activeLink:"https://link.bilibili.com/p/center/index#/user-center/follow/1",count:0}],c=Vue.extend({components:{TabControl:i.TabControl,VIcon:i.VIcon},mixins:[s.u],data:()=>({tabs:l}),mounted(){this.refreshNotifyCount()},methods:{popupShow(){this.item.notifyCount=0},async refreshNotifyCount(){const{tabControl:t}=this.$refs;l.forEach((async e=>{if(t.selectedTab===e)return;if("live"===e.name)return;const n=r.feedsCardTypes[e.name];if(!n.apiType)return;const a=await(0,o.getNotifyCountByType)(n.apiType);e.count=a,console.log(e)}))}}});var d=n(8332),p=n.n(d),u=n(9951),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},6801:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"bangumi-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"bangumi-feeds-content"},t._l(t.cards,(function(t){return e("BangumiCard",{key:t.id,attrs:{"is-new":t.new,data:t}})})),1),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(9799),r=n(5441);const o=coreApis.componentApis.feeds.BangumiCard;var s=n.n(o),l=n(9149);const c=Vue.extend({components:{BangumiCard:s()},mixins:[(0,l.I)(i.feedsCardTypes.bangumi,(t=>{const e=lodash.get(t,"modules.module_dynamic.major.pgc"),n=lodash.get(t,"modules.module_author");return{id:t.id_str,title:n.name,coverUrl:n.face,epCoverUrl:e.cover,epTitle:e.title.replace(new RegExp(`^${n.name}:`),""),url:e.jump_url,get new(){return(0,r.isNewID)(this.id)}}}))]});var d=n(8332),p=n.n(d),u=n(7210),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},8957:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"column-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"columns-feeds-content"},t._l(t.cards,(function(t){return e("ColumnCard",{key:t.id,attrs:{"is-new":t.new,data:t}})})),1),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(9799),r=n(5441);const o=coreApis.componentApis.feeds.ColumnCard;var s=n.n(o),l=n(9149);const c=Vue.extend({components:{ColumnCard:s()},mixins:[(0,l.I)(i.feedsCardTypes.column,(t=>{const e=lodash.get(t,"modules.module_dynamic.major.article"),n=lodash.get(t,"modules.module_author");return{id:t.id_str,cvID:e.id.toString(),title:e.title,upName:n.name,upFaceUrl:n.face,upID:n.mid,description:e.desc,covers:e.covers,originalCovers:e.covers,get new(){return(0,r.isNewID)(this.id)}}}))]});var d=n(8332),p=n.n(d),u=n(4044),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},2124:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"live-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?t._e():e("VEmpty"),t._v(" "),e("transition-group",{staticClass:"live-feeds-content",attrs:{name:"cards",tag:"div"}},t._l(t.cards,(function(n){return e("a",{key:n.id,staticClass:"live-card",attrs:{target:"_blank",href:n.url}},[e("div",{staticClass:"face-container"},[e("DpiImage",{staticClass:"face",attrs:{size:48,src:n.upFaceUrl}})],1),t._v(" "),e("div",{staticClass:"live-info"},[e("div",{staticClass:"live-title",attrs:{title:n.title}},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"live-name",attrs:{title:n.upName}},[t._v(t._s(n.upName))])])])})),0)],1)};a._withStripped=!0;var i=n(9648),r=n(2375);const o=Vue.extend({components:{VLoading:i.VLoading,VEmpty:i.VEmpty,DpiImage:i.DpiImage},data:()=>({loading:!0,rawItems:[],hasMorePage:!0}),computed:{cards(){return this.rawItems.map((t=>({id:t.roomid,title:t.title,upFaceUrl:t.face,upName:t.uname,url:t.link})))}},async created(){const[t]=(0,r.responsiveGetPages)({api:t=>(0,r.getJsonWithCredentials)(`https://api.live.bilibili.com/relation/v1/feed/feed_list?page=${t}&pagesize=24`),getList:t=>lodash.get(t,"data.list",[]),getTotal:t=>lodash.get(t,"data.results",0)});this.rawItems=await t,this.loading=!1}});var s=n(8332),l=n.n(s),c=n(4956),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;const u=(0,n(4893).Z)(o,a,[],!1,null,null,null).exports},5800:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>g});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"video-feeds"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"video-feeds-content"},[e("transition-group",{staticClass:"left-column",attrs:{name:"cards",tag:"div"}},t._l(t.columnedCards.left,(function(t){return e("VideoCard",{key:t.id,attrs:{orientation:"vertical","is-new":t.new,"show-stats":!1,data:t}})})),1),t._v(" "),e("transition-group",{staticClass:"right-column",attrs:{name:"cards",tag:"div"}},t._l(t.columnedCards.right,(function(t){return e("VideoCard",{key:t.id,attrs:{orientation:"vertical","is-new":t.new,"show-stats":!1,data:t}})})),1)],1),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(4289),r=n(5441),o=n(9799);const s=coreApis.componentApis.feeds.VideoCard;var l=n.n(s),c=n(9149);const d=t=>{const e=Number(new Date),n=new Date(t),a=[n.getHours(),n.getMinutes(),n.getSeconds()].map((t=>t.toString().padStart(2,"0"))).join(":");let i;return i=new Date(e).getFullYear()!==n.getFullYear()?[n.getFullYear(),n.getMonth()+1,n.getDate()]:[n.getMonth()+1,n.getDate()],`${i.map((t=>t.toString().padStart(2,"0"))).join("-")} ${a}`},p=t=>{const e=Number(new Date);if(e-864e5t.toString().padStart(2,"0"))).join("-")}`},u=Vue.extend({components:{VideoCard:l()},mixins:[(0,c.I)(o.feedsCardTypes.video,(t=>{const e=lodash.get(t,"modules.module_dynamic.major.archive"),n=lodash.get(t,"modules.module_author");return{id:t.id_str,aid:parseInt(e.aid),bvid:e.bvid,videoUrl:`https://www.bilibili.com/${e.bvid}`,coverUrl:e.cover,title:e.title,duration:(0,i.parseDuration)(e.duration_text),durationText:(0,i.formatDuration)((0,i.parseDuration)(e.duration_text)),description:e.desc,pubTime:d(1e3*n.pub_ts),pubTimeText:p(1e3*n.pub_ts),upFaceUrl:n.face,upName:n.name,upID:n.mid,watchlater:!0,playCount:(0,i.formatCount)((0,i.parseCount)(e.stat.play)),get new(){return(0,r.isNewID)(this.id)}}}))],computed:{columnedCards(){const{cards:t}=this;return{left:t.filter(((t,e)=>e%2==0)),right:t.filter(((t,e)=>e%2!=0))}}},methods:{onCardsUpdate:t=>(0,o.groupVideoFeeds)(t)}});var m=n(8332),h=n.n(m),f=n(9973),v=n.n(f),b={insert:"head",singleton:!1};h()(v(),b);v().locals;const g=(0,n(4893).Z)(u,a,[],!1,null,"d3e1a0c0",null).exports},4850:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>w});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar-history-list"},[e("div",{staticClass:"header"},[e("div",{staticClass:"header-row"},[e("div",{staticClass:"search"},[e("TextBox",{attrs:{placeholder:"搜索",linear:""},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),e("div",{staticClass:"operations"},[e("div",{staticClass:"operation",on:{click:t.toggleHistoryPause}},[t.paused?e("VButton",{attrs:{title:"继续记录历史",round:""}},[e("VIcon",{attrs:{icon:"mdi-play",size:14}})],1):e("VButton",{attrs:{title:"暂停记录历史",round:""}},[e("VIcon",{attrs:{icon:"mdi-pause",size:14}})],1)],1),t._v(" "),e("a",{staticClass:"operation",attrs:{target:"_blank",href:"https://www.bilibili.com/account/history"}},[e("VButton",{attrs:{title:"查看更多",round:""}},[e("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})],1)],1)])]),t._v(" "),e("div",{staticClass:"header-row"},[e("div",{staticClass:"row-title"},[t._v("过滤:")]),t._v(" "),e("div",{staticClass:"type-filters"},t._l(t.types,(function(n){return e("div",{key:n.name,staticClass:"type-filter"},[e("RadioButton",{class:{checked:n.checked},attrs:{title:(n.checked?"不显示":"显示")+n.displayName,checked:n.checked,disabled:t.loading},on:{change:function(e){return t.toggleTypeFilter(n)}}},[t._v("\n "+t._s(n.displayName)+"\n ")])],1)})),0)])]),t._v(" "),e("div",{staticClass:"content"},[t.loading?e("VLoading"):t.loading||0!==t.groups.length?e("transition-group",{staticClass:"cards",attrs:{name:"cards",tag:"div"}},[t._l(t.groups,(function(n){return e("div",{key:n.name,staticClass:"time-group"},[e("div",{staticClass:"time-group-name"},[t._v("\n "+t._s(n.name)+"\n ")]),t._v(" "),e("transition-group",{staticClass:"time-group-items",attrs:{name:"time-group",tag:"div"}},t._l(n.items,(function(n){return e("div",{key:n.id,staticClass:"time-group-item"},[e("a",{staticClass:"history-cover-container",attrs:{target:"_blank",href:n.url}},[e("DpiImage",{staticClass:"cover",attrs:{src:n.cover,size:{width:160,height:110},"placeholder-image":""}}),t._v(" "),n.progress?e("div",{staticClass:"progress",style:{width:100*n.progress+"%"}}):t._e(),t._v(" "),n.progressText?e("div",{staticClass:"floating progress-number"},[t._v("\n "+t._s(n.progress>=1?"已看完":n.progressText)+"\n ")]):t._e(),t._v(" "),void 0!==n.liveStatus?e("div",{staticClass:"floating duration live-status",class:{on:1===n.liveStatus}},[t._v("\n "+t._s(1===n.liveStatus?"直播中":"未开播")+"\n ")]):t._e(),t._v(" "),n.durationText?e("div",{staticClass:"floating duration"},[t._v(t._s(n.durationText))]):t._e()],1),t._v(" "),e("a",{staticClass:"title",attrs:{target:"_blank",href:n.url,title:n.title}},[t._v(t._s(n.title||n.upName+"的直播间"))]),t._v(" "),e("a",{staticClass:"up",attrs:{target:"_blank",href:"pgc"===n.type?n.url:"https://space.bilibili.com/"+n.upID,title:n.upName}},[n.upFaceUrl?e("DpiImage",{staticClass:"up-face",attrs:{size:18,src:n.upFaceUrl}}):t._e(),t._v(" "),e("div",{staticClass:"up-name"},[t._v(t._s(n.upName))])],1),t._v(" "),n.timeText?e("div",{staticClass:"time",attrs:{title:new Date(n.viewAt).toLocaleString()}},[t._v("\n "+t._s(n.timeText)+"\n ")]):t._e()])})),0)],1)})),t._v(" "),t.canNextPage?e("ScrollTrigger",{key:"scroll-trigger",on:{trigger:function(e){return t.nextPage()}}}):t._e()],2):e("VEmpty")],1)])};a._withStripped=!0;var i=n(2375),r=n(605),o=n(4577),s=n(9648),l=n(1111),c=n(4289);let d=function(t){return t.All="all",t.Video="archive",t.Live="live",t.Article="article",t.Bangumi="pgc",t.Cheese="cheese",t}({});const p=[{name:d.All,displayName:"全部",icon:"",checked:!0,apiType:""},{name:d.Video,displayName:"视频",icon:"mdi-play-circle-outline",checked:!1,apiType:"archive"},{name:d.Bangumi,displayName:"番剧",icon:"mdi-television-classic",checked:!1,apiType:"archive"},{name:d.Live,displayName:"直播",icon:"mdi-video-wireless-outline",checked:!1,apiType:"live"},{name:d.Article,displayName:"专栏",icon:"mdi-newspaper-variant-outline",checked:!1,apiType:"article"}],u=()=>{const t=new Date,e=Number(new Date(t.getFullYear(),t.getMonth(),t.getDate())),n=864e5;return{now:t,today:e,oneDay:n,yesterday:e-n,lastWeek:e-7*n}},m=t=>{const{yesterday:e}=u();return Number(t)>=e?`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}`:`${(t.getMonth()+1).toString().padStart(2,"0")}-${t.getDate().toString().padStart(2,"0")} ${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}`},h=t=>{t.history.business===d.Article&&(t.history.cid=t.history.oid);const{epid:e,bvid:n,cid:a,oid:i}=t.history,o=t.progress>0?`t=${t.progress}`:"t=0",s=-1===t.progress?1:t.progress/t.duration,l=t=>t.replace("http:","https:"),p=new Date(1e3*t.view_at),u=t.cover?l(t.cover):t.covers?l(t.covers[0]):"",h={title:t.title,viewAt:1e3*t.view_at,time:p,timeText:m(p),cover:u,covers:t.covers?.map(l)??[],progress:s,progressText:Number.isNaN(s)?null:`${(0,r.fixed)(100*s,1)}%`,duration:t.duration,durationText:t.duration?(0,c.formatDuration)(t.duration):null,upName:t.author_name,upFaceUrl:l(t.author_face),upID:t.author_mid};if(t.history.business===d.Cheese)return{...h,id:i,upName:t.title,title:t.show_title,url:t.uri,type:d.Video};if(e)return{...h,id:e,url:`https://www.bilibili.com/bangumi/play/ep${e}?${o}`,title:t.show_title||t.title,upName:t.title,type:d.Bangumi};if(n)return{...h,id:n,url:`https://www.bilibili.com/video/${n}?p=${t.history.page}&${o}`,type:d.Video};if(a)return{...h,id:a,url:`https://www.bilibili.com/read/cv${a}`,type:d.Article};if(i)return{...h,id:i,url:`https://live.bilibili.com/${i}`,liveStatus:t.live_status,type:d.Live};throw console.error("unknown history item type",t),new Error("未知的历史项目类型")},f=Vue.extend({components:{VButton:s.VButton,VIcon:s.VIcon,RadioButton:s.RadioButton,TextBox:s.TextBox,VLoading:s.VLoading,VEmpty:s.VEmpty,ScrollTrigger:s.ScrollTrigger,DpiImage:s.DpiImage},mixins:[l.u],data:()=>({types:p,search:"",viewTime:0,cards:[],groups:[],loading:!0,hasMorePage:!0,paused:!1}),computed:{canNextPage(){return""===this.search&&!this.loading&&this.hasMorePage}},watch:{search:lodash.debounce((function(){this.reloadHistoryItems()}),200)},async created(){try{await Promise.all([this.nextPage(),this.updateHistoryPauseState()])}finally{this.loading=!1}},methods:{toggleTypeFilter(t){p.forEach((e=>e.checked=e.name===t.name)),this.reloadHistoryItems()},async reloadHistoryItems(){this.cards=[],this.viewTime=0,this.hasMorePage=!0,this.loading=!0;try{await this.nextPage()}finally{this.loading=!1}},filterFunc(t){return!(!p.find((t=>t.name===d.All)).checked&&p.some((e=>e.name===t.type&&!e.checked)))&&!(!t.title.toLowerCase().includes(this.search.toLowerCase())&&!t.upName.toLowerCase().includes(this.search.toLowerCase()))},updateGroups(){this.groups=(t=>{if(0===t.length)return[];const{today:e,yesterday:n,lastWeek:a}=u(),i=lodash.groupBy(t,(t=>t.viewAt>=e?"今天":t.viewAt>=n?"昨天":t.viewAt>=a?"本周":"更早"));return Object.entries(i).map((t=>{let[e,n]=t;return{name:e,items:n}}))})(this.cards.filter(this.filterFunc))},async nextPage(){const t=await(async(t,e)=>{const n=new URLSearchParams;t&&n.set("view_at",Math.round(t/1e3).toString()),n.set("type",e?.apiType??"");const{list:a}=await(0,i.bilibiliApi)((0,i.getJsonWithCredentials)(`https://api.bilibili.com/x/web-interface/history/cursor?${n.toString()}`),"获取历史记录失败");return Array.isArray(a)?a.map(h).filter((t=>null!==t&&(!e||e.name===d.All||t.type===e.name))):[]})(this.viewTime,p.find((t=>t.checked))),e=lodash.uniqBy(this.cards.concat(t).sort((0,o.descendingSort)((t=>t.viewAt))),(t=>t.id));this.cards=e,this.updateGroups(),e.length>0&&(this.viewTime=lodash.last(e).viewAt),this.hasMorePage=0!==t.length,this.hasMorePage&&0===this.groups.length&&await this.nextPage()},async updateHistoryPauseState(){const t=await(0,i.bilibiliApi)((0,i.getJsonWithCredentials)("https://api.bilibili.com/x/v2/history/shadow"));this.paused=!0===t},async toggleHistoryPause(){const t=!this.paused;try{this.paused=t,await(0,i.postTextWithCredentials)("https://api.bilibili.com/x/v2/history/shadow/set",new URLSearchParams({csrf:(0,r.getCsrf)(),switch:t.toString()}).toString())}catch(e){this.paused=!t}}}});var v=n(8332),b=n.n(v),g=n(2549),x=n.n(g),y={insert:"head",singleton:!1};b()(x(),y);x().locals;const w=(0,n(4893).Z)(f,a,[],!1,null,null,null).exports},4324:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>h});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"home-popup",attrs:{role:"list"}},t._l(Object.entries(t.categories),(function([n,a]){return e("div",{key:n,staticClass:"category-item",class:{main:null!==a.code},attrs:{role:"listitem"}},[e("a",{attrs:{href:a.link,target:"_blank"}},[e("svg",{attrs:{"aria-hidden":"true"}},[e("use",{attrs:{href:"#header-icon-"+a.icon,"xlink:href":"#header-icon-"+a.icon}})]),t._v(" "),e("div",{staticClass:"name"},[t._v(t._s(n))]),t._v(" "),e("span",{staticClass:"count"},[null!==a.count?[t._v(t._s(a.count))]:t._e()],2)]),t._v(" "),a.subCategories?e("div",{staticClass:"sub-regions-popup popup"},t._l(Object.entries(a.subCategories),(function([n,a]){return e("a",{key:n,staticClass:"sub-region",attrs:{href:a,target:"_blank"}},[t._v(t._s(n))])})),0):t._e()])})),0)};a._withStripped=!0;var i=n(3861),r=n(1111);const o=lodash.cloneDeep(i.categories);Object.values(o).forEach((t=>{t.count=null}));let s=!1;const l=Vue.extend({mixins:[r.u],data:()=>({categories:o}),async created(){if(s)return;s=!0;const{bilibiliApi:t,getJson:e}=await Promise.resolve().then(n.t.bind(n,2375,23)),{addCategoryIcons:a}=await Promise.resolve().then(n.t.bind(n,3861,23));a();const{region_count:i={}}=await t(e("https://api.bilibili.com/x/web-interface/online"),"[自定义顶栏] 分区投稿信息获取失败");Object.values(this.categories).forEach((t=>{t.code&&(Array.isArray(t.code)?t.count=lodash.sum(t.code.map((t=>i[t]))):t.count=i[t.code])}))},mounted(){this.$el.style.maxHeight="inherit",this.$nextTick((()=>{this.$el.style.maxHeight=""}))}});var c=n(8332),d=n.n(c),p=n(5544),u=n.n(p),m={insert:"head",singleton:!1};d()(u(),m);u().locals;const h=(0,n(4893).Z)(l,a,[],!1,null,null,null).exports},486:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("iframe",{attrs:{src:t.item.src,frameborder:"0",width:t.item.width,height:t.item.height}})};a._withStripped=!0;var i=n(1111),r=n(4276);const o=Vue.extend({name:"IframePopup",mixins:[i.u],props:{item:{type:r.kO,required:!0}}});const s=(0,n(4893).Z)(o,a,[],!1,null,null,null).exports},6310:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar-logo-container"},[t.seasonLogoUrl?e("div",{staticClass:"custom-navbar-logo season",style:{backgroundImage:`url(${t.seasonLogoUrl})`}}):e("VIcon",{staticClass:"custom-navbar-logo",attrs:{icon:"logo"}})],1)};a._withStripped=!0;var i=n(9986),r=n(2375),o=n(9648);const s=Vue.extend({name:"NavbarLogo",components:{VIcon:o.VIcon},data:()=>({seasonLogoUrl:""}),watch:{seasonLogoUrl(){document.body.classList.toggle("season-logo-enabled",Boolean(this.seasonLogoUrl))}},async created(){(0,i.addComponentListener)("customNavbar.seasonLogo",(async t=>{if(!t)return void(this.seasonLogoUrl="");const e=await(0,r.getJson)("https://api.bilibili.com/x/web-show/page/header?resource_id=1");0===e.code?this.seasonLogoUrl=lodash.get(e,"data.litpic","").replace("http:","https:"):this.seasonLogoUrl=""}),!0)}});var l=n(8332),c=n.n(l),d=n(7169),p=n.n(d),u={insert:"head",singleton:!1};c()(p(),u);p().locals;const m=(0,n(4893).Z)(s,a,[],!1,null,null,null).exports},2096:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"messages-popup",attrs:{role:"list"}},t._l(t.entries,(function(n){return e("div",{key:n.name,staticClass:"message-entry",attrs:{role:"listitem"}},[e("a",{attrs:{"data-prop":n.prop,target:"_blank",href:n.href,"data-count":n.count||null},on:{click:function(e){return t.clearCount(n)}}},[t._v(t._s(n.name))])])})),0)};a._withStripped=!0;var i=n(2375),r=n(1111);const o=[{prop:"reply",href:"https://message.bilibili.com/#/reply",name:"回复我的"},{prop:"at",href:"https://message.bilibili.com/#/at",name:"@我的"},{prop:"like",href:"https://message.bilibili.com/#/love",name:"收到的赞"},{prop:"sys_msg",href:"https://message.bilibili.com/#/system",name:"系统通知"},{prop:"user_msg",href:"https://message.bilibili.com/#/whisper",name:"我的消息"},{href:"https://message.bilibili.com/#/archive",name:"私信存档"},{href:"https://message.bilibili.com/#/config",name:"消息设置"}],s=Vue.extend({name:"MessagesPopup",mixins:[r.u],data:()=>({entries:o.map((t=>(t.count=0,t))),settings:{notify:!0,hideNotFollowedCount:!1,json:{}}}),async created(){await this.fetchSettings(),this.notify()},methods:{popupRefresh(){this.notify()},async fetchSettings(){const t=await(0,i.getJsonWithCredentials)("https://api.vc.bilibili.com/link_setting/v1/link_setting/get?msg_notify=1&show_unfollowed_msg=1");0===t.code&&(this.settings={notify:3!==t.data.msg_notify,hideNotFollowedCount:1===t.data.show_unfollowed_msg,json:t.data})},async notify(){if(!this.settings.notify)return;const[t,e]=await Promise.all([(0,i.getJsonWithCredentials)("https://api.bilibili.com/x/msgfeed/unread"),(0,i.getJsonWithCredentials)("https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread")]);t.data.user_msg=e.data.follow_unread||0,this.settings.hideNotFollowedCount||(t.data.user_msg+=e.data.unfollow_unread||0),this.item.notifyCount=o.reduce(((e,n)=>e+(n.prop?t.data[n.prop]:0)),0),this.item.notifyCount&&(console.log(o),o.forEach((e=>{if(!e.prop)return;const n=t.data[e.prop];console.log(e.prop,e.count,n),n>0&&(e.count=n)})))},clearCount(t){this.item.notifyCount-=t.count,t.count=0}}});var l=n(8332),c=n.n(l),d=n(5255),p=n.n(d),u={insert:"head",singleton:!1};c()(p(),u);p().locals;const m=(0,n(4893).Z)(s,a,[],!1,null,"38cbdbce",null).exports},9990:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"ranking-popup",attrs:{role:"list"}},t._l(t.entries,(function(n){return e("div",{key:n.name,staticClass:"ranking-entry",attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:n.href}},[t._v(t._s(n.name))])])})),0)};a._withStripped=!0;var i=n(1111);const r=[{href:"https://www.bilibili.com/v/popular/all",name:"综合热门"},{href:"https://www.bilibili.com/v/popular/weekly",name:"每周必看"},{href:"https://www.bilibili.com/v/popular/history",name:"入站必刷"},{href:"https://www.bilibili.com/v/popular/rank/all",name:"排行榜"},{href:"https://www.bilibili.com/v/popular/music",name:"全站音乐榜"},{href:"https://www.bilibili.com/v/popular/drama",name:"短剧榜"}],o=Vue.extend({name:"RankingPopup",mixins:[i.u],data:()=>({entries:r})});var s=n(8332),l=n.n(s),c=n(1703),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;const u=(0,n(4893).Z)(o,a,[],!1,null,"6d9b8319",null).exports},6903:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var a=function(){var t=this._self._c;this._self._setupProxy;return t("div",{staticClass:"custom-navbar-search"},[t("LaunchBar")],1)};a._withStripped=!0;const i=coreApis.componentApis.launchBar.LaunchBar;var r=n.n(i);const o=Vue.extend({components:{LaunchBar:r()}});var s=n(8332),l=n.n(s),c=n(827),d=n.n(c),p={insert:"head",singleton:!1};l()(d(),p);d().locals;const u=(0,n(4893).Z)(o,a,[],!1,null,null,null).exports},5401:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>m});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"custom-navbar-extra-options"},[t.login?e("VButton",{ref:"button",on:{mouseover:function(e){return t.loadNavbarSettings()},click:function(e){return t.toggleNavbarSettings()}}},[t._v("\n 布局设置"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):t._e()],1)};a._withStripped=!0;var i=n(605),r=n(9648),o=n(632);const s=Vue.extend({components:{VIcon:r.VIcon,VButton:r.VButton},data:()=>({login:Boolean((0,i.getUID)())}),methods:{async loadNavbarSettings(){if(await(0,o.loadNavbarSettings)()){const t=this.$refs.button.$el;(0,o.setTriggerElement)(t)}},toggleNavbarSettings:o.toggleNavbarSettings}});var l=n(8332),c=n.n(l),d=n(4116),p=n.n(d),u={insert:"head",singleton:!1};c()(p(),u);p().locals;const m=(0,n(4893).Z)(s,a,[],!1,null,null,null).exports},7373:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>x});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VPopup",{ref:"popup",staticClass:"custom-navbar-settings",attrs:{fixed:"",lazy:!1,"trigger-element":t.triggerElement},model:{value:t.open,callback:function(e){t.open=e},expression:"open"}},[e("div",{staticClass:"navbar-settings-header"},[e("VIcon",{staticClass:"title-icon",attrs:{icon:"mdi-sort",size:24}}),t._v(" "),e("div",{staticClass:"title"},[t._v("顶栏布局设置")]),t._v(" "),e("div",{staticClass:"grow"}),t._v(" "),e("div",{staticClass:"close",on:{click:function(e){t.open=!1}}},[e("VIcon",{attrs:{icon:"close",size:18}})],1)],1),t._v(" "),e("div",{staticClass:"navbar-settings-content"},[e("div",{staticClass:"navbar-settings-section"},[e("div",{staticClass:"navbar-settings-section-title"},[t._v("边缘间距")]),t._v(" "),e("div",{staticClass:"navbar-settings-section-description"},[t._v("\n 设定两侧边缘处的间距, 单位为百分比, 100%为整个顶栏的宽度.\n "),e("br"),t._v("空间不足时, 实际呈现的间距会自动缩小.\n ")]),t._v(" "),e("div",{staticClass:"navbar-settings-section-content",on:{mouseover:function(e){return t.peekPadding(!0)},mouseout:function(e){return t.peekPadding(!1)}}},[e("VSlider",{attrs:{min:0,max:40,step:.5},model:{value:t.padding,callback:function(e){t.padding=e},expression:"padding"}}),t._v(" "),e("div",{staticClass:"padding-value"},[t._v(t._s(t.padding.toFixed(1))+"%")])],1)]),t._v(" "),e("div",{staticClass:"navbar-settings-section"},[e("div",{staticClass:"navbar-settings-section-title"},[t._v("元素呈现")]),t._v(" "),e("div",{staticClass:"navbar-settings-section-description"},[t._v("\n 按住并拖动可以调整顺序, 点击眼睛图标可以切换隐藏/显示.\n ")]),t._v(" "),t.loaded?t._e():e("VLoading"),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.loaded,expression:"loaded"}],ref:"navbarSortList",staticClass:"navbar-settings-section-content navbar-sort-list"},t._l(t.rendered.items,(function(n){return e("div",{key:n.name,staticClass:"navbar-sort-item",class:{"navbar-hidden":n.hidden},attrs:{"data-name":n.name},on:{mouseover:function(e){return t.peekItem(n,!0)},mouseout:function(e){return t.peekItem(n,!1)}}},[e("div",{staticClass:"item-name"},[t._v("\n "+t._s(n.displayName)+"\n ")]),t._v(" "),e("div",{staticClass:"toggle-visible"},[e("VIcon",{attrs:{size:18,icon:n.hidden?"mdi-eye-off-outline":"mdi-eye-outline"},on:{click:function(e){return t.toggleVisible(n)}}})],1)])})),0)],1)])])};a._withStripped=!0;var i=n(9648),r=n(9986),o=n(605);const s=coreApis.runtimeLibrary;var l=n(9153),c=n(4276);const d=t=>{t.forEach(((t,e)=>{t.order!==e&&(t.order=e)}));const e=Object.fromEntries(t.map((t=>[t.name,t.order])));c.kO.navbarOptions.order=e},{navbarOptions:p}=c.kO,[u]=(0,l.getData)(c.Je),m=Vue.extend({components:{VPopup:i.VPopup,VIcon:i.VIcon,VSlider:i.VSlider,VLoading:i.VLoading},props:{triggerElement:{type:HTMLElement,default:null}},data:()=>({open:!1,padding:p.padding,rendered:u,hidden:p.hidden,loaded:!1}),watch:{padding:lodash.debounce((t=>{p.padding=t}),200)},async mounted(){(0,r.addComponentListener)("customNavbar.padding",(t=>{this.padding!==t&&(this.padding=t)}));const t=this.$refs.navbarSortList;var e;(await s.SortableJSLibrary).create(t,{delay:100,forceFallback:!0,onEnd:t=>{this.onSort(t)}}),(e=u.items).every(((t,e)=>t.order===e))||d(e),this.loaded=!0},methods:{toggle(){this.$refs.popup.toggle()},peekPadding(t){(0,o.dqa)(".custom-navbar .padding").forEach((e=>e.classList.toggle("peek",t)))},peekItem(t,e){t.element?.classList.toggle("peek",e)},onSort(t){const e=this.$refs.navbarSortList,n=t.item;console.log(`${n.getAttribute("data-name")} ${t.oldIndex}->${t.newIndex}`);const a=Object.fromEntries([...e.children].map(((t,e)=>[t.getAttribute("data-name"),e])));this.rendered.items=((t,e)=>{const n=lodash.sortBy(t,(t=>e[t.name]));return d(n),n})(u.items,a)},toggleVisible(t){p.hidden.includes(t.name)?(lodash.pull(p.hidden,t.name),t.hidden=!1,console.log("delete",t.name)):(p.hidden.push(t.name),t.hidden=!0,console.log("add",t.name))}}});var h=n(8332),f=n.n(h),v=n(9522),b=n.n(v),g={insert:"head",singleton:!1};f()(b(),g);b().locals;const x=(0,n(4893).Z)(m,a,[],!1,null,null,null).exports},9947:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("SubscriptionsList",{attrs:{type:"bangumi",filter:t.filter}})};a._withStripped=!0;var i=n(467);const r=Vue.extend({components:{SubscriptionsList:i.Z},props:{filter:{type:[Object,null],default:null}}});const o=(0,n(4893).Z)(r,a,[],!1,null,null,null).exports},2944:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("SubscriptionsList",{attrs:{type:"cinema",filter:t.filter}})};a._withStripped=!0;var i=n(467);const r=Vue.extend({components:{SubscriptionsList:i.Z},props:{filter:{type:[Object,null],default:null}}});const o=(0,n(4893).Z)(r,a,[],!1,null,null,null).exports},453:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>v});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"navbar-subscriptions"},[e("TabControl",{ref:"tabControl",attrs:{tabs:t.tabs,"more-link":t.moreLink},scopedSlots:t._u([{key:"header-item",fn:function(){return[e("div",{staticClass:"navbar-subscriptions-filter"},[e("VDropdown",{attrs:{round:"",items:t.filterItems},model:{value:t.selectedFilter,callback:function(e){t.selectedFilter=e},expression:"selectedFilter"}})],1)]},proxy:!0}])})],1)};a._withStripped=!0;var i=n(9648),r=n(605),o=n(1111),s=n(1459),l=n(9054);const c=[{name:"all",value:{viewAll:!0,status:l.y.Viewing},displayName:"全部"},{name:"viewing",value:{viewAll:!1,status:l.y.Viewing},displayName:"在看"},{name:"toView",value:{viewAll:!1,status:l.y.ToView},displayName:"想看"},{name:"viewed",value:{viewAll:!1,status:l.y.Viewed},displayName:"看过"}],d=Vue.extend({components:{TabControl:i.TabControl,VDropdown:i.VDropdown},mixins:[o.u],data(){const t=(0,r.getUID)();return{uid:t,filterItems:c,selectedFilter:c[0],moreLink:e=>`https://space.bilibili.com/${t}/${e.name}`,filter:{viewAll:!0,status:l.y.Viewing}}},computed:{tabs(){return[{name:s.N.Bangumi,displayName:"追番",activeLink:`https://space.bilibili.com/${this.uid}/bangumi`,component:()=>Promise.resolve().then(n.bind(n,9947)).then((t=>t.default)),propsData:{filter:this.selectedFilter.value}},{name:s.N.Cinema,displayName:"追剧",activeLink:`https://space.bilibili.com/${this.uid}/cinema`,component:()=>Promise.resolve().then(n.bind(n,2944)).then((t=>t.default)),propsData:{filter:this.selectedFilter.value}}]}}});var p=n(8332),u=n.n(p),m=n(3174),h=n.n(m),f={insert:"head",singleton:!1};u()(h(),f);h().locals;const v=(0,n(4893).Z)(d,a,[],!1,null,null,null).exports},467:(t,e,n)=>{"use strict";n.d(e,{Z:()=>g});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"subscription-list"},[t.loading?e("VLoading"):t.loading||0!==t.cards.length?[e("div",{staticClass:"subscription-content"},t._l(t.cards,(function(n){return e("a",{key:n.id,staticClass:"subscription-card",attrs:{href:n.playUrl,target:"_blank"}},[e("div",{staticClass:"subscriptions-cover-container"},[e("DpiImage",{staticClass:"cover",attrs:{src:n.coverUrl,size:64}})],1),t._v(" "),e("div",{staticClass:"card-info"},[e("h1",{staticClass:"title",attrs:{title:n.title}},[t._v(t._s(n.title))]),t._v(" "),e("div",{staticClass:"progress-row"},[n.status?e("div",{staticClass:"status",class:"status-"+n.status},[t._v("\n "+t._s(n.statusText)+"\n ")]):t._e(),t._v(" "),n.progress?e("div",{staticClass:"progress",attrs:{title:n.progress+" | "+n.latest}},[t._v("\n "+t._s(n.progress)+" | "+t._s(n.latest)+"\n ")]):e("div",{staticClass:"progress",attrs:{title:n.latest}},[t._v(t._s(n.latest))]),t._v(" "),e("a",{staticClass:"info",attrs:{href:n.mediaUrl,target:"_blank",title:"详细信息"}},[e("VIcon",{attrs:{icon:"mdi-information-outline",size:16}})],1)])])])})),0),t._v(" "),t.hasMorePage?e("ScrollTrigger",{on:{trigger:function(e){return t.nextPage()}}}):t._e()]:e("VEmpty")],2)};a._withStripped=!0;var i=n(605),r=n(3414),o=n(9648),s=n(2375),l=n(1459),c=n(9054);const d=t=>{switch(t){case c.y.ToView:return"想看";case c.y.Viewing:default:return"在看";case c.y.Viewed:return"看过"}},p=(t,e)=>{let n=t.status;n!==c.y.Viewed&&(n=c.y.Viewed-n);let a=e.status;return a!==c.y.Viewed&&(a=c.y.Viewed-a),n-a},u=Vue.extend({components:{DpiImage:o.DpiImage,VLoading:o.VLoading,VEmpty:o.VEmpty,VIcon:o.VIcon,ScrollTrigger:o.ScrollTrigger},props:{filter:{type:[Object,null],default:null},type:{type:String,default:l.N.Bangumi}},data:()=>({loading:!0,hasMorePage:!0,cards:[],page:1}),watch:{filter(){this.cards=[],this.loading=!0,this.page=1,this.nextPage()}},async created(){this.nextPage()},methods:{async nextPage(){try{const t=this.filter,e=t.viewAll?0:t.status,n=new URLSearchParams({type:this.type!==l.N.Bangumi?"2":"1",pn:this.page,ps:"16",vmid:(0,i.getUID)(),follow_status:e.toString()}),a=await(0,s.getJsonWithCredentials)(`https://api.bilibili.com/x/space/bangumi/follow/list?${n}`);if(0!==a.code)return void(0,r.logError)(`加载订阅信息失败: ${a.message}`);const o=lodash.uniqBy(lodash.get(a,"data.list").map((t=>({title:t.title,coverUrl:t.square_cover.replace("http:","https:"),latest:t.new_ep.index_show,progress:t.progress,id:t.season_id,status:t.follow_status,statusText:d(t.follow_status),playUrl:`https://www.bilibili.com/bangumi/play/ss${t.season_id}`,mediaUrl:`https://www.bilibili.com/bangumi/media/md${t.media_id}`}))),(t=>t.id)).sort(p);this.page++,this.cards=this.cards.concat(o),this.hasMorePage=this.cards.length{"use strict";n.r(e),n.d(e,{default:()=>p});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"navbar-upload"},[e("VIcon",{attrs:{icon:"upload",size:18}}),t._v(" "),e("div",{staticClass:"navbar-upload-name"},[t._v("投稿")])],1)};a._withStripped=!0;var i=n(9648);const r=Vue.extend({components:{VIcon:i.VIcon}});var o=n(8332),s=n.n(o),l=n(6046),c=n.n(l),d={insert:"head",singleton:!1};s()(c(),d);c().locals;const p=(0,n(4893).Z)(r,a,[],!1,null,"99a054ea",null).exports},8855:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>p});var a=function(){var t=this;t._self._c,t._self._setupProxy;return t._m(0)};a._withStripped=!0;var i=n(1111);const r=Vue.extend({mixins:[i.u]});var o=n(8332),s=n.n(o),l=n(3467),c=n.n(l),d={insert:"head",singleton:!1};s()(c(),d);c().locals;const p=(0,n(4893).Z)(r,a,[function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"upload-popup",attrs:{role:"list"}},[e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/text/apply"}},[t._v("专栏投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/audio/frame"}},[t._v("音频投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/sticker"}},[t._v("贴纸投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload/video/frame"}},[t._v("视频投稿")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload-manager/article"}},[t._v("投稿管理")])]),t._v(" "),e("div",{attrs:{role:"listitem"}},[e("a",{attrs:{target:"_blank",href:"https://member.bilibili.com/platform/home"}},[t._v("创作中心")])])])}],!1,null,"b43e8cea",null).exports},1093:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>h});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"user-face-container"},[e("img",{staticClass:"user-face",attrs:{src:t.faceSrc,srcset:t.faceSrcset}}),t._v(" "),e("img",{staticClass:"user-pendant",attrs:{src:t.pendantSrc,srcset:t.pendantSrcset}})])};a._withStripped=!0;var i=n(3517),r=n(605);const o=coreApis.utils.constants,s="//static.hdslb.com/images/member/noface.gif",l=Vue.extend({name:"UserFace",data:()=>({faceSrc:o.EmptyImageUrl,pendantSrc:o.EmptyImageUrl,faceSrcset:null,pendantSrcset:null}),async created(){const t=await(0,i.getUserInfo)();if(t.isLogin){if(t.face){const e=t.face.replace("http:","https:");if(e.includes(s))this.faceSrc=s;else{const t=68;this.faceSrc=e,this.faceSrcset=(0,r.getDpiSourceSet)(e,t)}}if(t.pendant?.image){const e=t.pendant.image.replace("http:","https:"),n=116;this.pendantSrcset=(0,r.getDpiSourceSet)(e,n,"png")}}else this.faceSrc="https://static.hdslb.com/images/akari.jpg"}});var c=n(8332),d=n.n(c),p=n(5650),u=n.n(p),m={insert:"head",singleton:!1};d()(u(),m);u().locals;const h=(0,n(4893).Z)(l,a,[],!1,null,null,null).exports},9630:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>v});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"user-info-panel"},[t.isLogin&&!0===t.userInfo.isLogin?e("div",{staticClass:"logged-in"},[e("a",{staticClass:"name",attrs:{target:"_blank",href:"https://space.bilibili.com/"}},[t._v(t._s(t.userInfo.uname))]),t._v(" "),e("a",{staticClass:"type",attrs:{target:"_blank",href:"https://account.bilibili.com/account/big"}},[t._v(t._s(t.userType))]),t._v(" "),1===t.userInfo.vipStatus&&2===t.userInfo.vipType?e("div",{staticClass:"privileges row"},[e("div",{staticClass:"b-coin",class:{received:t.privileges.bCoin.received},attrs:{title:"有效期限: "+t.privileges.bCoin.expire},on:{click:function(e){return t.privilegeReceive(1)}}},[t._v("\n "+t._s(t.privileges.bCoin.received?"已领取B币":"领取B币")+"\n ")]),t._v(" "),e("div",{staticClass:"coupons",class:{received:t.privileges.coupons.received},attrs:{title:"有效期限: "+t.privileges.coupons.expire},on:{click:function(e){return t.privilegeReceive(2)}}},[t._v("\n "+t._s(t.privileges.coupons.received?"已领取优惠券":"领取优惠券")+"\n ")])]):t._e(),t._v(" "),e("div",{staticClass:"level-info row"},[e("a",{staticClass:"level",attrs:{target:"_blank",title:"等级",href:"https://account.bilibili.com/account/record"}},[t.userInfo.is_senior_member?e("VIcon",{staticClass:"level-icon plus",attrs:{icon:"lv"+t.userInfo.level_info.current_level+"-plus",colored:"",size:30}}):e("VIcon",{staticClass:"level-icon",attrs:{icon:"lv"+t.userInfo.level_info.current_level}})],1),t._v(" "),e("span",{staticClass:"level-progress-label"},[t._v(t._s(t.userInfo.level_info.current_exp)+" / "+t._s(t.userInfo.level_info.next_exp))])]),t._v(" "),e("div",{staticClass:"level-progress separator"},[e("div",{staticClass:"level-progress-thumb",style:t.levelProgressStyle})]),t._v(" "),e("div",{staticClass:"items"},[e("a",{staticClass:"item",attrs:{target:"_blank",title:"手机验证",href:"https://passport.bilibili.com/account/security#/bindphone"}},[e("VIcon",{attrs:{icon:"bind-phone",size:20}}),t._v(" "),t.userInfo.mobile_verified?e("VIcon",{attrs:{icon:"ok",size:18}}):e("VIcon",{attrs:{icon:"cancel",size:18}})],1),t._v(" "),e("a",{staticClass:"item",attrs:{target:"_blank",title:"邮箱验证",href:"https://passport.bilibili.com/account/security#/bindmail"}},[e("VIcon",{attrs:{icon:"bind-email",size:20}}),t._v(" "),t.userInfo.email_verified?e("VIcon",{attrs:{icon:"ok",size:18}}):e("VIcon",{attrs:{icon:"cancel",size:18}})],1),t._v(" "),e("a",{staticClass:"item",attrs:{target:"_blank",href:"https://account.bilibili.com/site/coin",title:"硬币"}},[e("VIcon",{attrs:{icon:"coin-outline",size:20}}),t._v(" "),e("span",[t._v(t._s(t.userInfo.money))])],1),t._v(" "),e("a",{staticClass:"item",attrs:{target:"_blank",href:"https://pay.bilibili.com/bb_balance.html",title:"B币"}},[e("VIcon",{attrs:{icon:"b-coin-outline",size:20}}),t._v(" "),e("span",[t._v(t._s(t.userInfo.wallet.bcoin_balance))])],1)]),t._v(" "),e("div",{staticClass:"separator"}),t._v(" "),e("div",{staticClass:"stats"},[e("a",{staticClass:"stats-item",attrs:{href:"https://space.bilibili.com/"+t.userInfo.mid+"/fans/follow",target:"_blank"}},[e("div",{staticClass:"stats-number"},[t._v(t._s(t._f("count")(t.stat.following)))]),t._v("\n 关注\n ")]),t._v(" "),e("a",{staticClass:"stats-item",attrs:{href:"https://space.bilibili.com/"+t.userInfo.mid+"/fans/fans",target:"_blank"}},[e("div",{staticClass:"stats-number"},[t._v(t._s(t._f("count")(t.stat.follower)))]),t._v("\n 粉丝\n ")]),t._v(" "),e("a",{staticClass:"stats-item",attrs:{href:"https://space.bilibili.com/"+t.userInfo.mid+"/dynamic",target:"_blank"}},[e("div",{staticClass:"stats-number"},[t._v(t._s(t._f("count")(t.stat.dynamic_count)))]),t._v("\n 动态\n ")])]),t._v(" "),e("div",{staticClass:"separator"}),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://account.bilibili.com/account/home"}},[e("VIcon",{attrs:{icon:"profile"}}),t._v("个人中心\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://member.bilibili.com/platform/upload-manager/article"}},[e("VIcon",{attrs:{icon:"posts"}}),t._v("投稿管理\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://pay.bilibili.com/"}},[e("VIcon",{attrs:{icon:"wallet"}}),t._v("B币钱包\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://link.bilibili.com/p/center/index"}},[e("VIcon",{attrs:{icon:"live-center"}}),t._v("直播中心\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://show.bilibili.com/orderlist"}},[e("VIcon",{attrs:{icon:"order-center"}}),t._v("订单中心\n ")],1),t._v(" "),e("a",{staticClass:"bv-custom-navbar-operation",attrs:{target:"_blank",href:"https://www.bilibili.com/v/cheese/mine"}},[e("VIcon",{attrs:{icon:"course"}}),t._v("我的课程\n ")],1),t._v(" "),e("div",{staticClass:"logout grey-button",on:{click:function(e){return t.logout()}}},[t._v("退出登录")])]):t._e(),t._v(" "),t.isLogin?t._e():e("div",{staticClass:"not-logged-in"},[e("h1",{staticClass:"welcome"},[t._v("欢迎来到 bilibili")]),t._v(" "),e("a",{staticClass:"signup grey-button",attrs:{href:"https://passport.bilibili.com/register/phone.html"}},[t._v("注册")]),t._v(" "),e("a",{staticClass:"login theme-button",attrs:{href:"https://passport.bilibili.com/login"}},[t._v("登录")])])])};a._withStripped=!0;var i=n(605),r=n(4289),o=n(3414),s=n(2375),l=n(3517),c=n(1111);const d=Vue.extend({components:{VIcon:coreApis.ui.VIcon},filters:{count:r.formatCount},mixins:[c.u],data:()=>({userInfo:{},stat:{},isLogin:Boolean((0,i.getUID)()),privileges:{bCoin:{received:!1,expire:""},coupons:{received:!1,expire:""}}}),computed:{level(){const t=`lv${this.userInfo.level_info.current_level}`;return this.userInfo.is_senior_member?{icon:`${t}-plus`,colored:!0}:{icon:t}},userType(){if(!this.userInfo.isLogin)return"未登录";if(0===this.userInfo.level_info.current_level)return"注册会员";if(1===this.userInfo.vipStatus){if(1===this.userInfo.vipType)return this.userInfo.vip_theme_type?"小会员":"大会员";if(2===this.userInfo.vipType)return this.userInfo.vip_theme_type?"年度小会员":"年度大会员"}return"正式会员"},levelProgressStyle(){if(!this.userInfo.isLogin)return{};const{current_exp:t,current_min:e,next_exp:n}=this.userInfo.level_info;return{transform:`scaleX(${(t-e)/(n-e)})`}}},async created(){const t=await(0,l.getUserInfo)();this.userInfo=t;const e=await(0,s.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/nav/stat");if(this.stat=e.data||{},this.isLogin&&2===this.userInfo.vipType){const t=await(0,s.getJsonWithCredentials)("https://api.bilibili.com/x/vip/privilege/my");if(0===t.code){const e=t.data.list.find((t=>1===t.type));this.privileges.bCoin.received=1===e.state,this.privileges.bCoin.expire=new Date(1e3*e.expire_time).toLocaleDateString();const n=t.data.list.find((t=>2===t.type));this.privileges.coupons.received=1===n.state,this.privileges.coupons.expire=new Date(1e3*n.expire_time).toLocaleDateString()}}},methods:{async privilegeReceive(t){const e={1:"bCoin",2:"coupons"};if(this.privileges[e[t]].received)return;this.privileges[e[t]].received=!0;const n=(0,i.getCsrf)(),a=await(await fetch("https://api.bilibili.com/x/vip/privilege/receive",{credentials:"include",headers:{"content-type":"application/x-www-form-urlencoded"},body:`type=${t}&csrf=${n}`,method:"POST"})).json();console.log(a),0===a.code?"bCoin"===e[t]&&(this.userInfo.wallet.bcoin_balance+=5):69801===a.code||(this.privileges[e[t]].received=!1,(0,o.logError)(a.message))},async logout(){const t=await(0,s.postTextWithCredentials)("https://passport.bilibili.com/login/exit/v2",(0,i.formData)({biliCSRF:(0,i.getCsrf)()})),e=lodash.get(JSON.parse(t),"data.redirectUrl","");e&&window.location.assign(e)}}});var p=n(8332),u=n.n(p),m=n(4642),h=n.n(m),f={insert:"head",singleton:!1};u()(h(),f);h().locals;const v=(0,n(4893).Z)(d,a,[],!1,null,null,null).exports},95:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>f});var a=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"watchlater-list"},[e("div",{staticClass:"header"},[e("div",{staticClass:"watchlater-list-summary"},[t._v("共 "+t._s(t.filteredCards.length)+" 个")]),t._v(" "),e("div",{staticClass:"search"},[e("TextBox",{attrs:{linear:"",placeholder:"搜索"},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),e("a",{staticClass:"operation",attrs:{target:"_blank",href:"https://www.bilibili.com/medialist/play/watchlater"}},[e("VButton",{staticClass:"round-button",attrs:{title:"播放全部",round:""}},[e("VIcon",{attrs:{icon:"mdi-play",size:18}})],1)],1),t._v(" "),e("a",{staticClass:"operation",attrs:{target:"_blank",href:"https://www.bilibili.com/watchlater/#/list"}},[e("VButton",{staticClass:"round-button",attrs:{title:"查看更多",round:""}},[e("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:18}})],1)],1)]),t._v(" "),t.loading?e("VLoading"):t.loading||0!==t.cards.length?e("transition-group",{staticClass:"watchlater-list-content",attrs:{name:"cards",tag:"div"}},t._l(t.filteredCards,(function(n,a){return e("div",{key:n.aid,staticClass:"watchlater-card"},[e("a",{staticClass:"watchlater-cover-container",attrs:{target:"_blank",href:n.href}},[e("DpiImage",{staticClass:"cover",attrs:{src:n.coverUrl,size:{width:130,height:85}}}),t._v(" "),e("div",{staticClass:"floating remove",attrs:{title:"移除"},on:{click:function(e){return e.preventDefault(),t.remove(n.aid,a)}}},[e("VIcon",{attrs:{icon:"mdi-close",size:16}})],1),t._v(" "),e("div",{staticClass:"floating duration"},[t._v(t._s(n.durationText))]),t._v(" "),n.complete?e("div",{staticClass:"floating viewed"},[t._v("已观看")]):t._e()],1),t._v(" "),e("a",{staticClass:"title",attrs:{target:"_blank",href:n.href,title:n.title}},[t._v(t._s(n.title))]),t._v(" "),e("a",{staticClass:"up",attrs:{target:"_blank",href:"https://space.bilibili.com/"+n.upID,title:n.upName}},[e("DpiImage",{staticClass:"face",attrs:{src:n.upFaceUrl,size:20}}),t._v(" "),e("div",{staticClass:"name"},[t._v(t._s(n.upName))])],1)])})),0):e("VEmpty")],1)};a._withStripped=!0;var i=n(9986),r=n(4289);const o=coreApis.componentApis.video.watchlater;var s=n(9648),l=n(1111);const c=Vue.extend({components:{VLoading:s.VLoading,VEmpty:s.VEmpty,TextBox:s.TextBox,VButton:s.VButton,VIcon:s.VIcon,DpiImage:s.DpiImage},mixins:[l.u],data(){const t=(0,i.getComponentSettings)("watchlaterRedirect");return{watchlaterList:o.watchlaterList,loading:!0,cards:[],filteredCards:[],search:"",redirect:t.enabled&&t.options.navbar}},watch:{search(){this.updateFilteredCards()}},async created(){try{await this.updateList()}finally{this.loading=!1}},methods:{toggleWatchlater:o.toggleWatchlater,popupRefresh(){this.updateList()},async updateList(){const t=await(0,o.getWatchlaterList)(!0);if(!t)return void(this.cards=[]);const e=t=>this.redirect?`https://www.bilibili.com/video/${t.bvid}`:`https://www.bilibili.com/medialist/play/watchlater/${t.bvid}`,n=t.map((t=>{const n=(()=>{if(void 0===t.pages||!this.redirect)return e(t);const n=t.pages.map((t=>t.cid)),a=0===t.cid?1:n.indexOf(t.cid)+1;return a<=1?e(t):`${e(t)}?p=${a}`})(),a=Math.round(1e3*t.progress/t.duration)/1e3;return{aid:t.aid,href:n,coverUrl:t.pic.replace("http:","https:"),durationText:(0,r.formatDuration)(t.duration),duration:t.duration,complete:t.progress<0||a>.95,title:t.title,upName:t.owner.name,upFaceUrl:t.owner.face.replace("http:","https:"),upID:t.owner.mid}}));this.cards=n,this.search?this.updateFilteredCards():this.filteredCards=n},async remove(t,e){this.cards.splice(e,1),await this.toggleWatchlater(t)},updateFilteredCards:lodash.debounce((function(){const t=this.search.toLowerCase();this.$el.querySelector(".watchlater-list-content").scrollTo(0,0),this.filteredCards=this.cards.filter((e=>e.title.toLowerCase().includes(t)||e.upName.toLowerCase().includes(t)))}),100)}});var d=n(8332),p=n.n(d),u=n(5756),m=n.n(u),h={insert:"head",singleton:!1};p()(m(),h);m().locals;const f=(0,n(4893).Z)(c,a,[],!1,null,null,null).exports},4893:(t,e,n)=>{"use strict";function a(t,e,n,a,i,r,o,s){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),a&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(t,e){return l.call(e),d(t,e)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:t,options:c}}n.d(e,{Z:()=>a})},6690:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=6690,t.exports=e},2948:t=>{"use strict";t.exports="使用脚本提供的顶栏替换原版的主站顶栏 (非主站不替换).\n\n启用后还可以在反广告插件 (例如 ABP) 中配置禁止原版顶栏的消息 iframe 以提升性能:\n- *://message.bilibili.com/pages/nav/index_new_pc_sync\n- *://message.bilibili.com/pages/nav/index_new_sync\n\n选项说明:\n- `全局固定`: 将顶栏固定显示, 即使页面向下滚动也仍然可见. (除了一部分有 b 站定制顶栏的页面会忽略此选项)\n- `主题色填充`: 使用通用设置中的主题颜色填充顶栏的背景.\n- `透明填充`: 在首页和主站的部分页面中, 当存在顶部横幅图片时, 顶栏背景将变为透明 + 阴影的样式.\n- `背景模糊`: 启用背景模糊效果, 会使背景颜色变得半透明, 注意这个效果非常非常消耗图形性能, 慎用.\n- `投影`: 在顶栏下方增加一小段投影效果.\n- `使用季节 Logo`: 使用 b 站首页的特殊 Logo 图片替换顶栏的 Logo 图, 通常会对应当前季节, 特殊活动期间可能会有变化导致看不清. (比如搞了个全白的 Logo, 而顶栏正好也是白色的)\n- `触摸模式`: 启用后顶栏的一级入口点击时不进行跳转, 方便触屏使用.\n- `新标签页打开`: 控制顶栏内链接是否在新标签页打开.\n- `自动刷新数据`: 启用后, 部分有弹窗的顶栏入口在鼠标经过时会自动刷新数据.\n- `顶栏高度`: 自定义顶栏的高度 (b 站原版的为 64px)\n- `消息提醒样式`: 自定义顶栏入口的消息提醒样式.\n- `搜索栏宽度`: 自定义搜索栏占顶栏的比例.\n- `链接对齐样式`: 自定义纯链接弹窗内链接文字的对齐样式.\n"},2375:t=>{"use strict";t.exports=coreApis.ajax},9799:t=>{"use strict";t.exports=coreApis.componentApis.feeds.api},5441:t=>{"use strict";t.exports=coreApis.componentApis.feeds.notify},3861:t=>{"use strict";t.exports=coreApis.componentApis.utils.categories.data},9153:t=>{"use strict";t.exports=coreApis.pluginApis.data},9986:t=>{"use strict";t.exports=coreApis.settings},9648:t=>{"use strict";t.exports=coreApis.ui},3517:t=>{"use strict";t.exports=coreApis.userInfo},4289:t=>{"use strict";t.exports=coreApis.utils.formatters},3414:t=>{"use strict";t.exports=coreApis.utils.log},4577:t=>{"use strict";t.exports=coreApis.utils.sort},605:t=>{"use strict";t.exports=coreApis.utils}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var r=a[t]={id:t,exports:{}};return n[t](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.t=function(n,a){if(1&a&&(n=this(n)),8&a)return n;if("object"==typeof n&&n){if(4&a&&n.__esModule)return n;if(16&a&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var o={};t=t||[null,e({}),e([]),e(e)];for(var s=2&a&&n;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((t=>o[t]=()=>n[t]));return o.default=()=>n,i.d(r,o),r},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>l});const t=coreApis.componentApis.define;var e=i(9986),n=i(605);let a=function(t){return t.Number="数字",t.Hidden="隐藏",t.Dot="点状",t}({});let o=function(t){return t.Left="左侧对齐",t.Center="居中对齐",t.Right="右侧对齐",t}({});const s=(0,t.defineOptionsMetadata)({hidden:{hidden:!0,defaultValue:["blank1","blank4","drawing","music","gamesIframe","bangumi","match","creations"],displayName:"隐藏的元素"},order:{hidden:!0,defaultValue:{},displayName:"元素顺序"},padding:{hidden:!0,defaultValue:10,displayName:"边缘间距(%)"},globalFixed:{defaultValue:!1,displayName:"全局固定"},fill:{defaultValue:!1,displayName:"主题色填充"},transparent:{defaultValue:!0,displayName:"透明填充"},blur:{defaultValue:!1,displayName:"背景模糊"},shadow:{defaultValue:!0,displayName:"投影"},seasonLogo:{defaultValue:!1,displayName:"使用季节Logo"},touch:{defaultValue:!1,displayName:"触摸模式"},openInNewTab:{defaultValue:!0,displayName:"新标签页打开"},refreshOnPopup:{defaultValue:!0,displayName:"自动刷新数据"},height:{defaultValue:50,validator:(0,n.getNumberValidator)(50,64),displayName:"顶栏高度 (px)"},openInNewTabOverrides:{defaultValue:{logo:!1},displayName:"新标签页打开设置覆盖",hidden:!0},showDeadVideos:{defaultValue:!1,displayName:"显示已失效视频",hidden:!0},notifyStyle:{defaultValue:a.Number,dropdownEnum:a,displayName:"消息提醒样式"},linkPopupContentAlignStyle:{defaultValue:o.Left,dropdownEnum:o,displayName:"链接对齐样式"},searchBarWidth:{defaultValue:15,slider:{min:8,max:64},displayName:"搜索栏宽度 (%)"}}),l=(0,t.defineComponentMetadata)({name:"customNavbar",displayName:"自定义顶栏",entry:async t=>{let{metadata:{name:r}}=t;if((0,n.isIframe)()||(0,n.isNotHtml)())return;(0,e.addComponentListener)(`${r}.padding`,(t=>{document.documentElement.style.setProperty("--navbar-bounds-padding",`${t}%`)}),!0),(0,e.addComponentListener)(`${r}.searchBarWidth`,(t=>{document.documentElement.style.setProperty("--navbar-search-width",`${t}vw`)}),!0);["https://space.bilibili.com","https://www.bilibili.com/read","https://www.bilibili.com/opus","https://www.bilibili.com/account/history"].some((t=>(0,n.matchUrlPattern)(t)))||(0,e.addComponentListener)(`${r}.globalFixed`,(t=>{document.body.classList.toggle("fixed-navbar",t)}),!0),(0,n.matchUrlPattern)("https://www.bilibili.com/account/history")&&document.body.classList.add("history-page");const s=await Promise.resolve().then(i.bind(i,9184)),l=(0,n.mountVueComponent)(s);document.body.insertAdjacentElement("beforeend",l.$el),["fill","shadow","blur"].forEach((t=>{(0,e.addComponentListener)(`${r}.${t}`,(e=>l.toggleStyle(e,t)),!0)})),(()=>{const t={[a.Number]:"number",[a.Hidden]:"hidden",[a.Dot]:"dot"};(0,e.addComponentListener)("customNavbar.notifyStyle",(e=>{document.documentElement.setAttribute("data-navbar-notify-style",t[e])}),!0)})(),(()=>{const t={[o.Left]:"left",[o.Center]:"center",[o.Right]:"right"};(0,e.addComponentListener)("customNavbar.linkPopupContentAlignStyle",(e=>{document.documentElement.setAttribute("data-navbar-link-popup-content-align-style",t[e])}),!0)})()},tags:[componentsTags.style,componentsTags.general],options:s,urlInclude:["//www.bilibili.com","//t.bilibili.com","//search.bilibili.com","//space.bilibili.com","//account.bilibili.com","//pay.bilibili.com","//member.bilibili.com","//big.bilibili.com","//message.bilibili.com","//app.bilibili.com","//passport.bilibili.com","//live.bilibili.com/blackboard/"],urlExclude:["//t.bilibili.com/vote/h5/index/#/result","//t.bilibili.com/lottery/h5/index/#/result","//member.bilibili.com/video/upload","//member.bilibili.com/platform","//space.bilibili.com/ajax/","//www.bilibili.com/h5/comment/","//member.bilibili.com/v2","//game.bilibili.com/","//www.bilibili.com/mooc/"],instantStyles:[{name:"custom-navbar-style",style:()=>Promise.resolve().then(i.t.bind(i,5222,23)),important:!0}],unload:async()=>{document.querySelectorAll(".custom-navbar,.custom-navbar-settings").forEach((t=>t.style.display="none"))},reload:async()=>{document.querySelectorAll(".custom-navbar,.custom-navbar-settings").forEach((t=>t.style.display="flex"))},extraOptions:()=>Promise.resolve().then(i.bind(i,5401)).then((t=>t.default)),plugin:{displayName:"自定义顶栏 - 功能扩展",setup:t=>{let{addData:e}=t;e("launchBar.actions",(t=>{t.push({name:"navbarSettings",getActions:async()=>[{name:"自定义顶栏设置",description:"Custom Navbar Settings",icon:"mdi-sort",action:async()=>{const{toggleNavbarSettings:t}=await Promise.resolve().then(i.bind(i,632));t()}}]})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const t=i(6690);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,2948,17)).then((t=>t.default))}})()})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/dark-mode.js b/bb-evolved/registry/dist/components/style/dark-mode.js index 72ab441e36..370554f030 100644 --- a/bb-evolved/registry/dist/components/style/dark-mode.js +++ b/bb-evolved/registry/dist/components/style/dark-mode.js @@ -6,4 +6,4 @@ e.i=function(n,t,o){"string"==typeof n&&( // eslint-disable-next-line no-param-reassign n=[[null,n,""]]);var a={};if(o)for(var r=0;r{var o=t(956);o&&o.__esModule&&(o=o.default),n.exports="string"==typeof o?o:o.toString()},144:(n,e,t)=>{var o=t(404);o&&o.__esModule&&(o=o.default),n.exports="string"==typeof o?o:o.toString()},110:n=>{"use strict";n.exports=coreApis.lifeCycle},986:n=>{"use strict";n.exports=coreApis.settings}},o={};function a(n){var e=o[n];if(void 0!==e)return e.exports;var r=o[n]={id:n,exports:{}};return t[n](r,r.exports,a),r.exports}e=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,a.t=function(t,o){if(1&o&&(t=this(t)),8&o)return t;if("object"==typeof t&&t){if(4&o&&t.__esModule)return t;if(16&o&&"function"==typeof t.then)return t}var r=Object.create(null);a.r(r);var i={};n=n||[null,e({}),e([]),e(e)];for(var l=2&o&&t;"object"==typeof l&&!~n.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach((n=>i[n]=()=>t[n]));return i.default=()=>t,a.d(r,i),r},a.d=(n,e)=>{for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},a.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),a.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var r={};return(()=>{"use strict";a.d(r,{component:()=>i});const n=coreApis.componentApis.define,e="#111",t=async()=>{document.body.classList.add("dark"),localStorage.setItem("pbp_theme_v4","b");const n=dq('meta[name="theme-color"]');n?(n.dataset.light=n.content,n.content=e):document.head.insertAdjacentHTML("beforeend",'')},o=async()=>{document.body.classList.remove("dark");const n=dq('meta[name="theme-color"]');n&&(n.dataset.light?n.content=n.dataset.light:n.remove())},i=(0,n.defineComponentMetadata)({name:"darkMode",displayName:"夜间模式",entry:()=>{setTimeout(t,200)},reload:()=>{setTimeout(t,200)},unload:()=>{setTimeout(o,200)},description:"启用夜间模式能更好地适应光线暗的环境, 并会大量应用主题颜色.",tags:[componentsTags.style,componentsTags.general],instantStyles:[{name:"dark-mode",style:()=>Promise.resolve().then(a.t.bind(a,144,23)),important:!1},{name:"dark-mode-important",style:()=>Promise.resolve().then(a.t.bind(a,25,23)),important:!0}],plugin:{displayName:"夜间模式 - 提前注入",description:{"zh-CN":"提前注入夜间模式的 .dark class 以减少一些组件首屏仍然是白色的问题."},async setup(){const{contentLoaded:n}=await Promise.resolve().then(a.t.bind(a,110,23)),{isComponentEnabled:e}=await Promise.resolve().then(a.t.bind(a,986,23));n((()=>{e("darkMode")&&document.body.classList.add("dark")}))}},urlExclude:["//member.bilibili.com/v2","//member.bilibili.com/platform","//member.bilibili.com/video/upload.html","//member.bilibili.com/article-text/home","//www.bilibili.com/audio/submit/","//member.bilibili.com/studio/bs-editor/projects","//www.bilibili.com/s/video/","//member.bilibili.com/platform","//live.bilibili.com/p/html/live-lottery/anchor-join.html","//account.bilibili.com/subtitle/edit/#/editor","/york/allowance-charge","//cm.bilibili.com/quests/#/task","//live.bilibili.com/activity/live-activity-full/full-next/index.html"],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +var i=this[r][0];null!=i&&(a[i]=!0)}for(var l=0;l{var o=t(956);o&&o.__esModule&&(o=o.default),n.exports="string"==typeof o?o:o.toString()},144:(n,e,t)=>{var o=t(404);o&&o.__esModule&&(o=o.default),n.exports="string"==typeof o?o:o.toString()},110:n=>{"use strict";n.exports=coreApis.lifeCycle},986:n=>{"use strict";n.exports=coreApis.settings}},o={};function a(n){var e=o[n];if(void 0!==e)return e.exports;var r=o[n]={id:n,exports:{}};return t[n](r,r.exports,a),r.exports}e=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,a.t=function(t,o){if(1&o&&(t=this(t)),8&o)return t;if("object"==typeof t&&t){if(4&o&&t.__esModule)return t;if(16&o&&"function"==typeof t.then)return t}var r=Object.create(null);a.r(r);var i={};n=n||[null,e({}),e([]),e(e)];for(var l=2&o&&t;"object"==typeof l&&!~n.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach((n=>i[n]=()=>t[n]));return i.default=()=>t,a.d(r,i),r},a.d=(n,e)=>{for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},a.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),a.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var r={};return(()=>{"use strict";a.d(r,{component:()=>i});const n=coreApis.componentApis.define,e="#111",t=async()=>{document.body.classList.add("dark"),localStorage.setItem("pbp_theme_v4","b");const n=dq('meta[name="theme-color"]');n?(n.dataset.light=n.content,n.content=e):document.head.insertAdjacentHTML("beforeend",'')},o=async()=>{document.body.classList.remove("dark");const n=dq('meta[name="theme-color"]');n&&(n.dataset.light?n.content=n.dataset.light:n.remove())},i=(0,n.defineComponentMetadata)({name:"darkMode",displayName:"夜间模式",entry:()=>{setTimeout(t,200)},reload:()=>{setTimeout(t,200)},unload:()=>{setTimeout(o,200)},description:"启用夜间模式能更好地适应光线暗的环境, 并会大量应用主题颜色.",tags:[componentsTags.style,componentsTags.general],instantStyles:[{name:"dark-mode",style:()=>Promise.resolve().then(a.t.bind(a,144,23)),important:!1},{name:"dark-mode-important",style:()=>Promise.resolve().then(a.t.bind(a,25,23)),important:!0}],plugin:{displayName:"夜间模式 - 提前注入",description:{"zh-CN":"提前注入夜间模式的 .dark class 以减少一些组件首屏仍然是白色的问题."},async setup(){const{contentLoaded:n}=await Promise.resolve().then(a.t.bind(a,110,23)),{isComponentEnabled:e}=await Promise.resolve().then(a.t.bind(a,986,23));n((()=>{e("darkMode")&&document.body.classList.add("dark")}))}},urlExclude:["//member.bilibili.com/v2","//member.bilibili.com/platform","//member.bilibili.com/video/upload.html","//member.bilibili.com/article-text/home","//www.bilibili.com/audio/submit/","//member.bilibili.com/studio/bs-editor/projects","//www.bilibili.com/s/video/","//member.bilibili.com/platform","//live.bilibili.com/p/html/live-lottery/anchor-join.html","//account.bilibili.com/subtitle/edit/#/editor","/york/allowance-charge","//cm.bilibili.com/quests/#/task","//live.bilibili.com/activity/live-activity-full/full-next/index.html"],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/dark-mode/follow-system.js b/bb-evolved/registry/dist/components/style/dark-mode/follow-system.js index f5dc9f13cb..b44cf7dbdd 100644 --- a/bb-evolved/registry/dist/components/style/dark-mode/follow-system.js +++ b/bb-evolved/registry/dist/components/style/dark-mode/follow-system.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/dark-mode/follow-system"]=t():e["style/dark-mode/follow-system"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={986:e=>{e.exports=coreApis.settings}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var l=i[e]={exports:{}};return o[e](l,l.exports,r),l.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,i){if(1&i&&(o=this(o)),8&i)return o;if("object"==typeof o&&o){if(4&i&&o.__esModule)return o;if(16&i&&"function"==typeof o.then)return o}var l=Object.create(null);r.r(l);var n={};e=e||[null,t({}),t([]),t(t)];for(var c=2&i&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>n[e]=()=>o[e]));return n.default=()=>o,r.d(l,n),l},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{r.d(l,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.lifeCycle,o=(0,e.defineComponentMetadata)({name:"darkModeFollowSystem",displayName:"夜间模式跟随系统",entry:()=>{unsafeWindow.addEventListener(t.LifeCycleEventTypes.End,(async()=>{const{getComponentSettings:e}=await Promise.resolve().then(r.t.bind(r,986,23)),t=e("darkMode"),o=matchMedia("(prefers-color-scheme: dark)"),i=e=>{e!==t.enabled&&(t.enabled=e)};i(o.matches),o.addEventListener("change",(e=>{i(e.matches)}))}))},urlExclude:["//member.bilibili.com/v2","//member.bilibili.com/platform","//member.bilibili.com/video/upload.html","//member.bilibili.com/article-text/home","//www.bilibili.com/audio/submit/","//member.bilibili.com/studio/bs-editor/projects","//www.bilibili.com/s/video/","//member.bilibili.com/platform","//live.bilibili.com/p/html/live-lottery/anchor-join.html","//account.bilibili.com/subtitle/edit/#/editor","/york/allowance-charge","//cm.bilibili.com/quests/#/task","//live.bilibili.com/activity/live-activity-full/full-next/index.html"],tags:[componentsTags.style,componentsTags.general],description:{"zh-CN":"\n使夜间模式同步系统设置的亮 / 暗主题, 请勿和 `夜间模式计划时段` 一同使用.\n\n> 注:在某些浏览器 (如 `Microsoft Edge`) 中,夜间模式仅会同步浏览器的亮 / 暗主题.\n ".trim()},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),l=l.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/dark-mode/follow-system"]=t():e["style/dark-mode/follow-system"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={986:e=>{e.exports=coreApis.settings}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var l=i[e]={exports:{}};return o[e](l,l.exports,r),l.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,i){if(1&i&&(o=this(o)),8&i)return o;if("object"==typeof o&&o){if(4&i&&o.__esModule)return o;if(16&i&&"function"==typeof o.then)return o}var l=Object.create(null);r.r(l);var n={};e=e||[null,t({}),t([]),t(t)];for(var c=2&i&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>n[e]=()=>o[e]));return n.default=()=>o,r.d(l,n),l},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{r.d(l,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.lifeCycle,o=(0,e.defineComponentMetadata)({name:"darkModeFollowSystem",displayName:"夜间模式跟随系统",entry:()=>{unsafeWindow.addEventListener(t.LifeCycleEventTypes.End,(async()=>{const{getComponentSettings:e}=await Promise.resolve().then(r.t.bind(r,986,23)),t=e("darkMode"),o=matchMedia("(prefers-color-scheme: dark)"),i=e=>{e!==t.enabled&&(t.enabled=e)};i(o.matches),o.addEventListener("change",(e=>{i(e.matches)}))}))},urlExclude:["//member.bilibili.com/v2","//member.bilibili.com/platform","//member.bilibili.com/video/upload.html","//member.bilibili.com/article-text/home","//www.bilibili.com/audio/submit/","//member.bilibili.com/studio/bs-editor/projects","//www.bilibili.com/s/video/","//member.bilibili.com/platform","//live.bilibili.com/p/html/live-lottery/anchor-join.html","//account.bilibili.com/subtitle/edit/#/editor","/york/allowance-charge","//cm.bilibili.com/quests/#/task","//live.bilibili.com/activity/live-activity-full/full-next/index.html"],tags:[componentsTags.style,componentsTags.general],description:{"zh-CN":"\n使夜间模式同步系统设置的亮 / 暗主题, 请勿和 `夜间模式计划时段` 一同使用.\n\n> 注:在某些浏览器 (如 `Microsoft Edge`) 中,夜间模式仅会同步浏览器的亮 / 暗主题.\n ".trim()},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),l=l.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/dark-mode/schedule.js b/bb-evolved/registry/dist/components/style/dark-mode/schedule.js index 357cbe4183..14a6aa4eb9 100644 --- a/bb-evolved/registry/dist/components/style/dark-mode/schedule.js +++ b/bb-evolved/registry/dist/components/style/dark-mode/schedule.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/dark-mode/schedule"]=t():e["style/dark-mode/schedule"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var r in i)e.o(i,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:i[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>u});const i=coreApis.componentApis.define,r=coreApis.lifeCycle,o=coreApis.settings;function n(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class s{constructor(){n(this,"hour",void 0),n(this,"minute",void 0);for(var e=arguments.length,t=new Array(e),i=0;is.validatePart(e))),this.normalize()}else 2===t.length&&([this.hour,this.minute]=t)}normalize(){for(;this.minute<0;)this.minute+=60,this.hour-=1;for(;this.minute>=60;)this.minute-=60,this.hour+=1;for(;this.hour<0;)this.hour+=24;for(;this.hour>=24;)this.hour-=24}lessThan(e){return this.houre.hour||this.hour===e.hour&&this.minute>e.minute}equals(e){return this.hour===e.hour&&this.minute===e.minute}isInRange(e,t){if(e.equals(t))return!1;let i=this.greaterThan(e)&&this.lessThan(t);e.greaterThan(t)&&(i=this.greaterThan(e)||this.lessThan(t));return i||this.equals(e)}toString(){return`${this.hour.toString().padStart(2,"0")}:${this.minute.toString().padStart(2,"0")}`}static validatePart(e){const t=parseInt(e);return!Number.isNaN(t)&&t>=0&&t<=59?t:null}static millisecondsBefore(e){const t=new s,i=(new Date).getSeconds(),r=1e3*(3600*t.hour+60*t.minute+i);let o=1e3*(3600*e.hour+60*e.minute)-r;return(t.greaterThan(e)||t.equals(e)&&0!==i)&&(o+=864e5),o}}const l=(0,i.defineOptionsMetadata)({range:{defaultValue:{start:"18:00",end:"6:00"},displayName:"时间段",validator:e=>{const{start:t,end:i}=e,r=/^(\d{1,2}):(\d{1,2})$/;if(!r.test(t)||!r.test(i))return null;const o=new s(e.start),n=new s(e.end);return{start:o.toString(),end:n.toString()}}}}),a=e=>{const t=new s(e.options.range.start),i=new s(e.options.range.end),r=(new s).isInRange(t,i),n=(0,o.getComponentSettings)("darkMode");n.enabled!==r&&(n.enabled=r);let l=0;l=r?s.millisecondsBefore(i):s.millisecondsBefore(t),0!==l&&setTimeout((()=>a(e)),l)},u=(0,i.defineComponentMetadata)({name:"darkModeSchedule",displayName:"夜间模式计划时段",description:"设置一个使用夜间模式的时间段, 进入 / 离开此时间段时, 会自动开启 / 关闭夜间模式. 结束时间小于起始时间时将视为次日, 如 `18:00` 至 `6:00` 表示晚上 18:00 到次日 6:00. 请勿和 `夜间模式跟随系统` 一同使用.",tags:[componentsTags.style,componentsTags.general],entry:e=>{let{settings:t}=e;return(0,r.fullyLoaded)((()=>a(t)))},urlExclude:["//member.bilibili.com/v2","//member.bilibili.com/platform","//member.bilibili.com/video/upload.html","//member.bilibili.com/article-text/home","//www.bilibili.com/audio/submit/","//member.bilibili.com/studio/bs-editor/projects","//www.bilibili.com/s/video/","//member.bilibili.com/platform","//live.bilibili.com/p/html/live-lottery/anchor-join.html","//account.bilibili.com/subtitle/edit/#/editor","/york/allowance-charge","//cm.bilibili.com/quests/#/task","//live.bilibili.com/activity/live-activity-full/full-next/index.html"],options:l,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return t=t.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/dark-mode/schedule"]=t():e["style/dark-mode/schedule"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var r in i)e.o(i,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:i[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>u});const i=coreApis.componentApis.define,r=coreApis.lifeCycle,o=coreApis.settings;function n(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class s{constructor(){n(this,"hour",void 0),n(this,"minute",void 0);for(var e=arguments.length,t=new Array(e),i=0;is.validatePart(e))),this.normalize()}else 2===t.length&&([this.hour,this.minute]=t)}normalize(){for(;this.minute<0;)this.minute+=60,this.hour-=1;for(;this.minute>=60;)this.minute-=60,this.hour+=1;for(;this.hour<0;)this.hour+=24;for(;this.hour>=24;)this.hour-=24}lessThan(e){return this.houre.hour||this.hour===e.hour&&this.minute>e.minute}equals(e){return this.hour===e.hour&&this.minute===e.minute}isInRange(e,t){if(e.equals(t))return!1;let i=this.greaterThan(e)&&this.lessThan(t);e.greaterThan(t)&&(i=this.greaterThan(e)||this.lessThan(t));return i||this.equals(e)}toString(){return`${this.hour.toString().padStart(2,"0")}:${this.minute.toString().padStart(2,"0")}`}static validatePart(e){const t=parseInt(e);return!Number.isNaN(t)&&t>=0&&t<=59?t:null}static millisecondsBefore(e){const t=new s,i=(new Date).getSeconds(),r=1e3*(3600*t.hour+60*t.minute+i);let o=1e3*(3600*e.hour+60*e.minute)-r;return(t.greaterThan(e)||t.equals(e)&&0!==i)&&(o+=864e5),o}}const l=(0,i.defineOptionsMetadata)({range:{defaultValue:{start:"18:00",end:"6:00"},displayName:"时间段",validator:e=>{const{start:t,end:i}=e,r=/^(\d{1,2}):(\d{1,2})$/;if(!r.test(t)||!r.test(i))return null;const o=new s(e.start),n=new s(e.end);return{start:o.toString(),end:n.toString()}}}}),a=e=>{const t=new s(e.options.range.start),i=new s(e.options.range.end),r=(new s).isInRange(t,i),n=(0,o.getComponentSettings)("darkMode");n.enabled!==r&&(n.enabled=r);let l=0;l=r?s.millisecondsBefore(i):s.millisecondsBefore(t),0!==l&&setTimeout((()=>a(e)),l)},u=(0,i.defineComponentMetadata)({name:"darkModeSchedule",displayName:"夜间模式计划时段",description:"设置一个使用夜间模式的时间段, 进入 / 离开此时间段时, 会自动开启 / 关闭夜间模式. 结束时间小于起始时间时将视为次日, 如 `18:00` 至 `6:00` 表示晚上 18:00 到次日 6:00. 请勿和 `夜间模式跟随系统` 一同使用.",tags:[componentsTags.style,componentsTags.general],entry:e=>{let{settings:t}=e;return(0,r.fullyLoaded)((()=>a(t)))},urlExclude:["//member.bilibili.com/v2","//member.bilibili.com/platform","//member.bilibili.com/video/upload.html","//member.bilibili.com/article-text/home","//www.bilibili.com/audio/submit/","//member.bilibili.com/studio/bs-editor/projects","//www.bilibili.com/s/video/","//member.bilibili.com/platform","//live.bilibili.com/p/html/live-lottery/anchor-join.html","//account.bilibili.com/subtitle/edit/#/editor","/york/allowance-charge","//cm.bilibili.com/quests/#/task","//live.bilibili.com/activity/live-activity-full/full-next/index.html"],options:l,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/bangumi/reviews.js b/bb-evolved/registry/dist/components/style/hide/bangumi/reviews.js index bb28138dc5..5e13f48b00 100644 --- a/bb-evolved/registry/dist/components/style/hide/bangumi/reviews.js +++ b/bb-evolved/registry/dist/components/style/hide/bangumi/reviews.js @@ -6,4 +6,4 @@ t.i=function(e,o,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(r)for(var i=0;i{var r=o(272);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({displayName:"隐藏番剧点评",tags:[componentsTags.style],...(0,t.toggleStyle)("hideBangumiReviews",(()=>Promise.resolve().then(n.t.bind(n,399,23)))),urlInclude:o.bangumiUrls,description:{"zh-CN":"隐藏番剧播放页面里的点评板块."},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(n[a]=!0)}for(var s=0;s{var r=o(272);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({displayName:"隐藏番剧点评",tags:[componentsTags.style],...(0,t.toggleStyle)("hideBangumiReviews",(()=>Promise.resolve().then(n.t.bind(n,399,23)))),urlInclude:o.bangumiUrls,description:{"zh-CN":"隐藏番剧播放页面里的点评板块."},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/bangumi/sponsors.js b/bb-evolved/registry/dist/components/style/hide/bangumi/sponsors.js index 5e16c8a930..cd42c4eda2 100644 --- a/bb-evolved/registry/dist/components/style/hide/bangumi/sponsors.js +++ b/bb-evolved/registry/dist/components/style/hide/bangumi/sponsors.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(486);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({displayName:"隐藏番剧承包",tags:[componentsTags.style],...(0,t.toggleStyle)("hideBangumiSponsors",(()=>Promise.resolve().then(r.t.bind(r,897,23)))),urlInclude:o.bangumiUrls,description:{"zh-CN":"隐藏番剧页面下方的承包榜, 以及右边的承包按钮."},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var s=this[i][0];null!=s&&(r[s]=!0)}for(var a=0;a{var n=o(486);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({displayName:"隐藏番剧承包",tags:[componentsTags.style],...(0,t.toggleStyle)("hideBangumiSponsors",(()=>Promise.resolve().then(r.t.bind(r,897,23)))),urlInclude:o.bangumiUrls,description:{"zh-CN":"隐藏番剧页面下方的承包榜, 以及右边的承包按钮."},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/banner.js b/bb-evolved/registry/dist/components/style/hide/banner.js index 559d754366..d481c5895d 100644 --- a/bb-evolved/registry/dist/components/style/hide/banner.js +++ b/bb-evolved/registry/dist/components/style/hide/banner.js @@ -6,4 +6,4 @@ e.i=function(n,t,r){"string"==typeof n&&( // eslint-disable-next-line no-param-reassign n=[[null,n,""]]);var o={};if(r)for(var i=0;i{var r=t(124);r&&r.__esModule&&(r=r.default),n.exports="string"==typeof r?r:r.toString()}},r={};function o(n){var e=r[n];if(void 0!==e)return e.exports;var i=r[n]={id:n,exports:{}};return t[n](i,i.exports,o),i.exports}e=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,o.t=function(t,r){if(1&r&&(t=this(t)),8&r)return t;if("object"==typeof t&&t){if(4&r&&t.__esModule)return t;if(16&r&&"function"==typeof t.then)return t}var i=Object.create(null);o.r(i);var a={};n=n||[null,e({}),e([]),e(e)];for(var l=2&r&&t;"object"==typeof l&&!~n.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach((n=>a[n]=()=>t[n]));return a.default=()=>t,o.d(i,a),i},o.d=(n,e)=>{for(var t in e)o.o(e,t)&&!o.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),o.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>t});const n=coreApis.componentApis.define,e=coreApis.utils.urls,t=(0,n.defineComponentMetadata)({name:"hideBanner",entry:none,displayName:"隐藏顶部横幅",instantStyles:[{name:"hideBanner",style:()=>Promise.resolve().then(o.t.bind(o,511,23))}],tags:[componentsTags.style],description:{"zh-CN":"隐藏首页顶部横幅."},urlInclude:e.mainSiteUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(o[a]=!0)}for(var l=0;l{var r=t(124);r&&r.__esModule&&(r=r.default),n.exports="string"==typeof r?r:r.toString()}},r={};function o(n){var e=r[n];if(void 0!==e)return e.exports;var i=r[n]={id:n,exports:{}};return t[n](i,i.exports,o),i.exports}e=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,o.t=function(t,r){if(1&r&&(t=this(t)),8&r)return t;if("object"==typeof t&&t){if(4&r&&t.__esModule)return t;if(16&r&&"function"==typeof t.then)return t}var i=Object.create(null);o.r(i);var a={};n=n||[null,e({}),e([]),e(e)];for(var l=2&r&&t;"object"==typeof l&&!~n.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach((n=>a[n]=()=>t[n]));return a.default=()=>t,o.d(i,a),i},o.d=(n,e)=>{for(var t in e)o.o(e,t)&&!o.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},o.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),o.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>t});const n=coreApis.componentApis.define,e=coreApis.utils.urls,t=(0,n.defineComponentMetadata)({name:"hideBanner",entry:none,displayName:"隐藏顶部横幅",instantStyles:[{name:"hideBanner",style:()=>Promise.resolve().then(o.t.bind(o,511,23))}],tags:[componentsTags.style],description:{"zh-CN":"隐藏首页顶部横幅."},urlInclude:e.mainSiteUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/trending-search.js b/bb-evolved/registry/dist/components/style/hide/trending-search.js index ced8370915..5f5f5fbee4 100644 --- a/bb-evolved/registry/dist/components/style/hide/trending-search.js +++ b/bb-evolved/registry/dist/components/style/hide/trending-search.js @@ -6,4 +6,4 @@ t.i=function(e,n,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var o={};if(r)for(var i=0;i{var r=n(409);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},909:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=909,e.exports=t},643:e=>{"use strict";e.exports="隐藏搜索栏和搜索页面中的 `bilibili 热搜`. 请注意这只是视觉上的隐藏, 如果不输入任何关键词就点 Enter 或搜索按钮, 仍然会跳转至推荐的热搜词."}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return n[e](i,i.exports,o),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var i=Object.create(null);o.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,o.d(i,a),i},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.observer,n=(0,e.defineComponentMetadata)({name:"hideTrendingSearch",displayName:"隐藏热搜",tags:[componentsTags.style],instantStyles:[{name:"hideTrendingSearch",style:()=>Promise.resolve().then(o.t.bind(o,453,23))}],entry:async()=>{(0,t.allMutations)((e=>{e.forEach((e=>{e.target instanceof HTMLInputElement&&e.target.classList.contains("nav-search-input")&&"搜索"!==e.target.placeholder&&(e.target.placeholder="搜索")}))}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=o(909);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,643,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(o[a]=!0)}for(var s=0;s{var r=n(409);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},909:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=909,e.exports=t},643:e=>{"use strict";e.exports="隐藏搜索栏和搜索页面中的 `bilibili 热搜`. 请注意这只是视觉上的隐藏, 如果不输入任何关键词就点 Enter 或搜索按钮, 仍然会跳转至推荐的热搜词."}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return n[e](i,i.exports,o),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var i=Object.create(null);o.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,o.d(i,a),i},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.observer,n=(0,e.defineComponentMetadata)({name:"hideTrendingSearch",displayName:"隐藏热搜",tags:[componentsTags.style],instantStyles:[{name:"hideTrendingSearch",style:()=>Promise.resolve().then(o.t.bind(o,453,23))}],entry:async()=>{(0,t.allMutations)((e=>{e.forEach((e=>{e.target instanceof HTMLInputElement&&e.target.classList.contains("nav-search-input")&&"搜索"!==e.target.placeholder&&(e.target.placeholder="搜索")}))}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=o(909);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,643,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/user-card.js b/bb-evolved/registry/dist/components/style/hide/user-card.js index 73269c24f9..cc70810739 100644 --- a/bb-evolved/registry/dist/components/style/hide/user-card.js +++ b/bb-evolved/registry/dist/components/style/hide/user-card.js @@ -6,4 +6,4 @@ t.i=function(e,o,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(r)for(var i=0;i{var r=o(498);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=(0,e.defineComponentMetadata)({displayName:"隐藏用户信息卡片",description:{"zh-CN":"隐藏鼠标指向用户名或用户头像时弹出的浮动用户信息卡片"},author:{name:"WakelessSloth56",link:"https://github.com/WakelessSloth56"},tags:[componentsTags.style],...(0,t.toggleStyle)("hideUserCard",(()=>Promise.resolve().then(n.t.bind(n,859,23)))),commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(n[a]=!0)}for(var s=0;s{var r=o(498);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=(0,e.defineComponentMetadata)({displayName:"隐藏用户信息卡片",description:{"zh-CN":"隐藏鼠标指向用户名或用户头像时弹出的浮动用户信息卡片"},author:{name:"WakelessSloth56",link:"https://github.com/WakelessSloth56"},tags:[componentsTags.style],...(0,t.toggleStyle)("hideUserCard",(()=>Promise.resolve().then(n.t.bind(n,859,23)))),commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/video/notes.js b/bb-evolved/registry/dist/components/style/hide/video/notes.js index 405d7e1490..d9ce7dd9e6 100644 --- a/bb-evolved/registry/dist/components/style/hide/video/notes.js +++ b/bb-evolved/registry/dist/components/style/hide/video/notes.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(517);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},96:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=96,e.exports=t},982:e=>{"use strict";e.exports='隐藏视频页面中的 "记笔记" 按钮.\n'}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>t});const e="hideVideoNotes",t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:e,displayName:"隐藏记笔记",tags:[componentsTags.video,componentsTags.style],entry:none,instantStyles:[{name:e,style:()=>Promise.resolve().then(r.t.bind(r,108,23))}],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(96);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,982,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var n=o(517);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},96:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=96,e.exports=t},982:e=>{"use strict";e.exports='隐藏视频页面中的 "记笔记" 按钮.\n'}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>t});const e="hideVideoNotes",t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:e,displayName:"隐藏记笔记",tags:[componentsTags.video,componentsTags.style],entry:none,instantStyles:[{name:e,style:()=>Promise.resolve().then(r.t.bind(r,108,23))}],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(96);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,982,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/video/recommended-live.js b/bb-evolved/registry/dist/components/style/hide/video/recommended-live.js index 1d044d5aab..743671ff93 100644 --- a/bb-evolved/registry/dist/components/style/hide/video/recommended-live.js +++ b/bb-evolved/registry/dist/components/style/hide/video/recommended-live.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(183);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var c={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>c[e]=()=>o[e]));return c.default=()=>o,r.d(i,c),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"hideRecommendedLive",entry:none,instantStyles:[{name:"hideRecommendedLive",style:()=>Promise.resolve().then(r.t.bind(r,69,23))}],displayName:"隐藏直播推荐",tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"隐藏视频页面右侧下方的直播推荐."},urlInclude:t.videoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var c=0;c{var n=o(183);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"hideRecommendedLive",entry:none,instantStyles:[{name:"hideRecommendedLive",style:()=>Promise.resolve().then(r.t.bind(r,69,23))}],displayName:"隐藏直播推荐",tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"隐藏视频页面右侧下方的直播推荐."},urlInclude:t.videoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/video/related-videos.js b/bb-evolved/registry/dist/components/style/hide/video/related-videos.js index 60e676e7c3..3b8be8b4ff 100644 --- a/bb-evolved/registry/dist/components/style/hide/video/related-videos.js +++ b/bb-evolved/registry/dist/components/style/hide/video/related-videos.js @@ -6,4 +6,4 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(o)for(var i=0;i{var o=n(660);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},459:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=459,e.exports=t},319:e=>{"use strict";e.exports="隐藏番剧和视频页面右侧的推荐视频列表. 注意: 如果你想关闭 b 站的自动连播 (自动播放下一个推荐视频) 功能, 需要先取消隐藏视频推荐才能看到开关.\n"}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"hideRelatedVideos",displayName:"隐藏视频推荐",entry:none,instantStyles:[{name:"hideRelatedVideos",style:()=>Promise.resolve().then(r.t.bind(r,140,23))}],tags:[componentsTags.style,componentsTags.video],urlInclude:t.videoAndBangumiUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(459);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,319,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var o=n(660);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},459:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=459,e.exports=t},319:e=>{"use strict";e.exports="隐藏番剧和视频页面右侧的推荐视频列表. 注意: 如果你想关闭 b 站的自动连播 (自动播放下一个推荐视频) 功能, 需要先取消隐藏视频推荐才能看到开关.\n"}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"hideRelatedVideos",displayName:"隐藏视频推荐",entry:none,instantStyles:[{name:"hideRelatedVideos",style:()=>Promise.resolve().then(r.t.bind(r,140,23))}],tags:[componentsTags.style,componentsTags.video],urlInclude:t.videoAndBangumiUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(459);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,319,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/video/report.js b/bb-evolved/registry/dist/components/style/hide/video/report.js index 2eb95d85c8..c6caa94b83 100644 --- a/bb-evolved/registry/dist/components/style/hide/video/report.js +++ b/bb-evolved/registry/dist/components/style/hide/video/report.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(971);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},211:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=211,e.exports=t},282:e=>{"use strict";e.exports='隐藏视频页面中的 "稿件投诉" 按钮.\n'}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>t});const e="hideVideoReport",t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:e,displayName:"隐藏稿件投诉",tags:[componentsTags.video,componentsTags.style],entry:none,instantStyles:[{name:e,style:()=>Promise.resolve().then(r.t.bind(r,312,23))}],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(211);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,282,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var n=o(971);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},211:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=211,e.exports=t},282:e=>{"use strict";e.exports='隐藏视频页面中的 "稿件投诉" 按钮.\n'}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>t});const e="hideVideoReport",t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:e,displayName:"隐藏稿件投诉",tags:[componentsTags.video,componentsTags.style],entry:none,instantStyles:[{name:e,style:()=>Promise.resolve().then(r.t.bind(r,312,23))}],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(211);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,282,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/video/share.js b/bb-evolved/registry/dist/components/style/hide/video/share.js index a19b364b99..23ee641926 100644 --- a/bb-evolved/registry/dist/components/style/hide/video/share.js +++ b/bb-evolved/registry/dist/components/style/hide/video/share.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(949);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},799:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=799,e.exports=t},9:e=>{"use strict";e.exports="隐藏视频和番剧播放器下方的分享按钮.\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"hideVideoShare",displayName:"隐藏视频分享",tags:[componentsTags.style,componentsTags.video],instantStyles:[{name:"hideVideoShare",style:()=>Promise.resolve().then(r.t.bind(r,299,23))}],entry:none,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(799);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,9,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var n=o(949);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},799:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=799,e.exports=t},9:e=>{"use strict";e.exports="隐藏视频和番剧播放器下方的分享按钮.\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"hideVideoShare",displayName:"隐藏视频分享",tags:[componentsTags.style,componentsTags.video],instantStyles:[{name:"hideVideoShare",style:()=>Promise.resolve().then(r.t.bind(r,299,23))}],entry:none,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(799);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,9,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/hide/video/top-mask.js b/bb-evolved/registry/dist/components/style/hide/video/top-mask.js index 8f0de8a0db..69a3d9d609 100644 --- a/bb-evolved/registry/dist/components/style/hide/video/top-mask.js +++ b/bb-evolved/registry/dist/components/style/hide/video/top-mask.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(21);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var p=2&n&&o;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o="hideVideoTopMask",n=(0,e.defineComponentMetadata)({name:o,displayName:"隐藏视频标题层",entry:none,instantStyles:[{name:o,style:()=>Promise.resolve().then(r.t.bind(r,310,23))}],tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"隐藏视频里鼠标经过时出现在右上角的覆盖层."},urlInclude:t.playerUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var p=0;p{var n=o(21);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var p=2&n&&o;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o="hideVideoTopMask",n=(0,e.defineComponentMetadata)({name:o,displayName:"隐藏视频标题层",entry:none,instantStyles:[{name:o,style:()=>Promise.resolve().then(r.t.bind(r,310,23))}],tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"隐藏视频里鼠标经过时出现在右上角的覆盖层."},urlInclude:t.playerUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/home-redesign/fresh.js b/bb-evolved/registry/dist/components/style/home-redesign/fresh.js index adfbfc19d0..5e5f78e844 100644 --- a/bb-evolved/registry/dist/components/style/home-redesign/fresh.js +++ b/bb-evolved/registry/dist/components/style/home-redesign/fresh.js @@ -16,4 +16,4 @@ e=e.slice(1,-1)),t.hash&&( e+=t.hash),/["'() \t\n]/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},8332:(e,t,n)=>{"use strict";var o,r=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),i=[];function s(e){for(var t=-1,n=0;n{var o=n(7652);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},1935:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-extra-options"},[t("div",{staticClass:"fresh-home-extra-options-title"},[e._v("布局配置")]),e._v(" "),e.loaded?e._e():t("VLoading"),e._v(" "),e.loaded?t("div",{staticClass:"fresh-home-extra-options-tips"},[t("div",{staticClass:"fresh-home-extra-options-tip"},[e._v("\n 按住并拖动可以调整顺序, 打开换行后下一个元素将会另起一行.\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legends"},[t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-arrow-expand-horizontal",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("可变宽度")])],1),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-arrow-collapse-horizontal",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("固定宽度")])],1),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-wrap",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("切换换行")])],1),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-eye-outline",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("切换显示")])],1)])]):e._e(),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.loaded,expression:"loaded"}],ref:"sortList",staticClass:"fresh-home-extra-options-sort-list"},e._l(e.sortedItems,(function(n){return t("div",{key:n.layoutItem.name,staticClass:"fresh-home-extra-options-sort-item",class:{"fresh-home-extra-options-sort-item-dimmed":n.layoutSettings.hidden},attrs:{"data-name":n.layoutItem.name}},[n.layoutItem.grow?t("VIcon",{staticClass:"fresh-home-extra-options-sort-item-type",attrs:{title:"可变宽度",icon:"mdi-arrow-expand-horizontal",size:16}}):t("VIcon",{staticClass:"fresh-home-extra-options-sort-item-type",attrs:{icon:"mdi-arrow-collapse-horizontal",title:"固定宽度",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-sort-item-name"},[e._v(e._s(n.layoutItem.displayName))]),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-sort-item-actions"},[t("VButton",{attrs:{type:"transparent",title:"切换换行",icon:""},on:{click:function(t){return e.toggleLinebreak(n.layoutItem)}}},[n.layoutSettings.linebreak?t("VIcon",{attrs:{icon:"mdi-wrap",size:16}}):t("VIcon",{attrs:{icon:"mdi-wrap-disabled",size:16}})],1),e._v(" "),t("VButton",{attrs:{type:"transparent",title:"切换显示",icon:""},on:{click:function(t){return e.toggleVisible(n.layoutItem)}}},[n.layoutSettings.hidden?t("VIcon",{attrs:{icon:"mdi-eye-off-outline",size:16}}):t("VIcon",{attrs:{icon:"mdi-eye-outline",size:16}})],1)],1)],1)})),0)],1)};o._withStripped=!0;const r=coreApis.runtimeLibrary;var a=n(4577),i=n(9648),s=n(5424),d=n(4438);const l=Vue.extend({components:{VLoading:i.VLoading,VIcon:i.VIcon,VButton:i.VButton},data:()=>({loaded:!1,layouts:s.$,sortedItems:[]}),async mounted(){const e=this.$refs.sortList,t=await r.SortableJSLibrary;console.log({list:e}),t.create(e,{delay:100,forceFallback:!0,onEnd:e=>{const t=[...this.sortedItems],[n]=t.splice(e.oldIndex,1);console.log(n.layoutItem.name,`${e.oldIndex} -> ${e.newIndex}`),t.splice(e.newIndex,0,n);const{layoutOptions:o}=d.O;t.forEach(((e,t)=>{o[e.layoutItem.name].order=t+1,e.layoutSettings.order=t+1})),this.sortedItems=t}}),this.sortItems(),this.loaded=!0},methods:{sortItems(){this.sortedItems=this.layouts.map(((e,t)=>({layoutItem:e,layoutSettings:{linebreak:!1,order:t+1,hidden:!1,...d.O.layoutOptions[e.name]}}))).filter((e=>null!==e)).sort((0,a.ascendingSort)((e=>e.layoutSettings.order)))},toggleLinebreak(e){const t=d.O.layoutOptions[e.name];t.linebreak=!t.linebreak,this.sortItems()},toggleVisible(e){const t=d.O.layoutOptions[e.name];t.hidden=!t.hidden,this.sortItems()}}}),h=l;var c=n(8332),m=n.n(c),p=n(6804),f=n.n(p),b={insert:"head",singleton:!1};m()(f(),b);f().locals;const u=(0,n(4893).Z)(h,o,[],!1,null,null,null).exports},10:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>C});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("HomeRedesignBase",[t("div",{staticClass:"fresh-home"},[t("div",{staticClass:"fresh-home-content-layout"},e._l(e.layouts,(function(e){return t("FreshLayoutItem",{key:e.name,attrs:{item:e}})})),1)])])};o._withStripped=!0;var r=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"home-redesign-base"},[e._t("default")],2)};r._withStripped=!0;const a=(0,globalThis.Vue.defineComponent)({__name:"HomeRedesignBase",setup(e){const t=new URLSearchParams(location.search);if(t.has("bvid")){const e=new URLSearchParams([...t.entries()].filter((e=>{let[t]=e;return"bvid"!==t})));location.replace(`/video/${t.get("bvid")}${e.size>0?`?${e.toString()}`:""}`)}return{__sfc:!0,params:t}}});var i=n(8332),s=n.n(i),d=n(7512),l=n.n(d),h={insert:"head",singleton:!1};s()(l(),h);l().locals;var c=n(4893);const m=(0,c.Z)(a,r,[],!1,null,null,null).exports;var p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-content-layout-item-container",class:{"fresh-home-content-layout-item-hidden":e.options.hidden}},[e.options.hidden?e._e():[t("div",{staticClass:"fresh-home-content-layout-item",class:{grow:e.item.grow},style:{order:e.options.order}},[t(e.item.component,{tag:"component"})],1),e._v(" "),e.options.linebreak?t("div",{staticClass:"fresh-home-content-layout-item linebreak",style:{order:e.options.order}}):e._e()]],2)};p._withStripped=!0;var f=n(4438);const b=Vue.extend({props:{item:{required:!0,type:Object}},data(){return{options:f.O.layoutOptions[this.item.name]??{}}}});var u=n(4479),g=n.n(u),v={insert:"head",singleton:!1};s()(g(),v);g().locals;const x=(0,c.Z)(b,p,[],!1,null,null,null).exports;var k=n(5424);const y=Vue.extend({components:{HomeRedesignBase:m,FreshLayoutItem:x},data:()=>({layouts:k.$})});var w=n(5917),A=n.n(w),V={insert:"head",singleton:!1};s()(A(),V);A().locals;const C=(0,c.Z)(y,o,[],!1,null,null,null).exports},8903:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"fresh-home-sub-header"},[t("div",{staticClass:"fresh-home-sub-header-dot"}),e._v(" "),e._t("default")],2)};o._withStripped=!0;var r=n(8332),a=n.n(r),i=n(8838),s=n.n(i),d={insert:"head",singleton:!1};a()(s(),d);s().locals;const l=(0,n(4893).Z)({},o,[],!1,null,null,null).exports},3720:(e,t,n)=>{"use strict";n.d(t,{Z:()=>A});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-video-list scroll-top scroll-bottom",class:{"not-empty":e.videos.length>0}},[t("div",{ref:"content",staticClass:"fresh-home-video-list-content"},[0===e.videos.length?t("div",{staticClass:"fresh-home-video-list-empty"},[e.loading?t("VLoading"):t("VEmpty")],1):e._l(e.videos,(function(e){return t("VideoCardWrapper",{key:e.id,ref:"cards",refInFor:!0,attrs:{data:e}})}))],2)])};o._withStripped=!0;var r=n(9648),a=n(6831),i=n(9986),s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-video-card-wrapper"},[t("VideoCard",e._b({attrs:{orientation:"vertical"}},"VideoCard",e.$attrs,!1))],1)};s._withStripped=!0;const d=coreApis.componentApis.feeds.VideoCard;var l=n.n(d);const h=Vue.extend({components:{VideoCard:l()}});var c=n(8332),m=n.n(c),p=n(4132),f=n.n(p),b={insert:"head",singleton:!1};m()(f(),b);f().locals;var u=n(4893);const g=(0,u.Z)(h,s,[],!1,null,null,null).exports;var v=n(5656);const x=Vue.extend({components:{VEmpty:r.VEmpty,VLoading:r.VLoading,VideoCardWrapper:g},props:{videos:{type:Array,default:()=>[]},loading:{type:Boolean,default:!0}},watch:{videos(){this.setupIntersection()},loaded(){this.loaded&&this.setupIntersection()}},beforeDestroy(){(0,v.b)(this.$el)},mounted(){const e=this.$refs.content;let t;(0,i.addComponentListener)("freshHome.horizontalWheelScroll",(n=>{n?t=(0,a.enableHorizontalScroll)(e):t?.()}),!0)},methods:{async setupIntersection(){await this.$nextTick(),(0,v.a)({container:this.$el,items:this.$refs.cards.map((e=>e.$el))})},offsetPage(e){const t=this.$refs.content,n=getComputedStyle(t),o=t.clientWidth,r=parseFloat(n.getPropertyValue("--card-width"))+parseFloat(n.getPropertyValue("--card-padding")),a=Math.trunc(o/r)*r;t.scrollBy(e*a,0)}}});var k=n(3833),y=n.n(k),w={insert:"head",singleton:!1};m()(y(),w);y().locals;const A=(0,u.Z)(x,o,[],!1,null,null,null).exports},2494:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-areas"},[e._m(0),e._v(" "),t("div",{staticClass:"fresh-home-areas-content"},[t("a",{staticClass:"fresh-home-areas-content-primary",attrs:{href:e.primary.url,target:"_blank"}},[t("div",{staticClass:"fresh-home-areas-content-primary-image"}),e._v(" "),t("div",{staticClass:"fresh-home-areas-content-primary-title"},[e._v("\n "+e._s(e.primary.title)+"\n ")])]),e._v(" "),t("div",{staticClass:"fresh-home-areas-content-other"},e._l(e.others,(function(n){return t("a",{key:n.title,attrs:{href:n.url,target:"_blank"}},[t("VButton",{attrs:{type:"transparent"}},[t("VIcon",{attrs:{colored:"",icon:n.icon,size:22}}),e._v("\n "+e._s(n.title)+"\n ")],1)],1)})),0)])])};o._withStripped=!0;var r=n(9153),a=n(9648);(0,r.addData)("ui.icons",(e=>{e["live-colored"]='\n \n \n \n \n',e["topic-colored"]='\n \n',e["black-room-colored"]='\n \n \n \n \n \n \n \n \n'}));const i={title:"专栏",url:"https://www.bilibili.com/read/home"},s=[{title:"直播",url:"https://live.bilibili.com/",icon:"live-colored"},{title:"专题",url:"https://www.bilibili.com/blackboard/topic_list.html",icon:"topic-colored"},{title:"小黑屋",url:"https://www.bilibili.com/blackroom/",icon:"black-room-colored"}],d=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon},data:()=>({primary:i,others:s})});var l=n(8332),h=n.n(l),c=n(5985),m=n.n(c),p={insert:"head",singleton:!1};h()(m(),p);m().locals;const f=(0,n(4893).Z)(d,o,[function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("栏目")])])}],!1,null,null,null).exports},1314:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-blackboard",on:{mouseenter:e.destroyTimer,mouseleave:e.createTimer}},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("活动")]),e._v(" "),t("a",{staticClass:"fresh-home-header-icon-button rotate",attrs:{href:"https://www.bilibili.com/blackboard/x/act_list/",target:"_blank"}},[t("VButton",{attrs:{round:""}},[t("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:20}}),e._v("\n 更多\n ")],1)],1)]),e._v(" "),e._l(e.blackboards,(function(e,n){return t("input",{key:n,staticClass:"fresh-home-blackboard-radio",attrs:{id:"blackboard"+n,type:"radio",name:"blackboard","data-index":n},domProps:{checked:0===n}})})),e._v(" "),t("div",{staticClass:"fresh-home-blackboard-cards"},e._l(e.blackboards,(function(n,o){return t("a",{key:o,staticClass:"fresh-home-blackboard-card",attrs:{target:"_blank",href:n.url,title:n.title}},[t("DpiImage",{staticClass:"fresh-home-blackboard-card-image",attrs:{src:n.imageUrl,alt:n.title,size:{width:500,height:250},intersection:{root:e.cardsContainer}}}),e._v(" "),t("div",{staticClass:"fresh-home-blackboard-card-title",attrs:{title:n.title}},[e._v("\n "+e._s(n.title)+"\n ")])],1)})),0),e._v(" "),t("div",{staticClass:"fresh-home-blackboard-jump-dots"},e._l(e.blackboards,(function(e,n){return t("label",{key:n,attrs:{for:"blackboard"+n}},[t("div",{staticClass:"fresh-home-blackboard-jump-dot"})])})),0)],2)};o._withStripped=!0;var r=n(9648),a=n(2375);const i=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon,DpiImage:r.DpiImage},data:()=>({blackboards:[],timer:0}),computed:{cardsContainer(){return this.$el.querySelector(".fresh-home-blackboard-cards")}},async created(){const e=await(async()=>{const e=4694,{code:t,message:n,data:o}=await(0,a.getJson)("https://api.bilibili.com/x/web-show/res/locs?pf=0&ids=4694");if(0!==t)throw new Error(`获取活动卡片失败: ${n}`);return o[4694].map((t=>({url:t.url,title:t.name,isAd:t.res_id!==e,imageUrl:t.pic})))})();this.blackboards=e.filter((e=>!e.isAd))},mounted(){this.createTimer()},beforeDestroy(){this.destroyTimer()},methods:{createTimer(){if(this.timer)return;const e="fresh-home-blackboard-radio";this.timer=window.setInterval((()=>{if(!document.hasFocus()||this.$el.matches(":hover"))return;const t=parseInt(dq(`.${e}:checked`).getAttribute("data-index"));let n;n=t===this.blackboards.length-1?0:t+1,dq(`.${e}[data-index='${n}']`).checked=!0}),5e3)},destroyTimer(){this.timer&&(window.clearInterval(this.timer),this.timer=0)}}});var s=n(8332),d=n.n(s),l=n(2949),h=n.n(l),c={insert:"head",singleton:!1};d()(h(),c);h().locals;const m=(0,n(4893).Z)(i,o,[],!1,null,null,null).exports},8900:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>y});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories"},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("分区")]),e._v(" "),t("div",{staticClass:"fresh-home-header-center-area"},[t("div",{staticClass:"fresh-home-header-tabs"},[t("div",{ref:"tabs",staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},attrs:{"data-name":n.name},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)])]),e._v(" "),t("div",{staticClass:"fresh-home-header-pagination"},[e.isReordering?t("VButton",{attrs:{icon:"",title:"完成排序"},on:{click:e.toggleReorder}},[t("VIcon",{attrs:{icon:"mdi-check",size:18}})],1):t("VButton",{attrs:{icon:"",title:"排序"},on:{click:e.toggleReorder}},[t("VIcon",{attrs:{icon:"mdi-swap-horizontal",size:18}})],1)],1)]),e._v(" "),t("div",{staticClass:"fresh-home-categories-content"},[t(e.content,{tag:"component",attrs:{region:e.selectedTab}})],1)])};o._withStripped=!0;const r=coreApis.reorder;var a=n(4577),i=n(9648),s=n(4438);const d=coreApis.componentApis.utils.categories.data,l=JSON.parse('["推广","正在直播","动画","番剧","番剧动态","国创","国产原创相关","漫画","音乐","舞蹈","游戏","知识","课堂","科技","运动","汽车","生活","美食","动物圈","鬼畜","时尚","资讯","娱乐","专栏","电影","电视剧","影视","纪录片","特别推荐"]'),h=["推广","正在直播","番剧动态","国产原创相关","漫画","课堂","专栏","特别推荐"],c=Object.fromEntries(Object.entries(d.categories).filter((e=>{let[t]=e;return!h.includes(t)&&!!l.includes(t)}))),m=["番剧","国创"],p=e=>(console.log("getContent",e),m.includes(e)?()=>Promise.resolve().then(n.bind(n,6657)).then((e=>e.default)):()=>Promise.resolve().then(n.bind(n,3531)).then((e=>e.default))),f=Object.entries(c).map((e=>{let[t,n]=e;return{id:n.code,name:t,displayName:t,category:n,href:n.link,order:0}})),b=Vue.extend({components:{VButton:i.VButton,VIcon:i.VIcon},data(){const e=s.O.categoriesOrder??{},t=[...f].sort((0,a.ascendingSort)((t=>e[t.name])));return{tabs:t,isReordering:!1,reorder:null,selectedTab:t[0],content:p(t[0].name)}},mounted(){const e=this.$refs.tabs,t=new r.Reorder(e);t.addEventListener("reorder",(e=>{let{detail:t}=e;const n=Object.fromEntries(t.map((e=>[e.element.getAttribute("data-name"),e.order])));console.log(t,n),s.O.categoriesOrder=n})),this.reorder=t},methods:{toggleReorder(){this.reorder.toggle(),this.isReordering=this.reorder.enabled},selectTab(e){this.isReordering||(this.selectedTab!==e?(this.selectedTab=e,this.content=p(e.name)):window.open(e.href,"_blank"))}}});var u=n(8332),g=n.n(u),v=n(2136),x=n.n(v),k={insert:"head",singleton:!1};g()(x(),k);x().locals;const y=(0,n(4893).Z)(b,o,[],!1,null,null,null).exports},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Q});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories-bangumi"},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline"},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-header"},[t("SubHeader",[e._v(" 时间表 ")])],1),e._v(" "),t("BangumiTimeline",{attrs:{api:e.timelineApi}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-rank-list"},[t("div",{staticClass:"fresh-home-categories-bangumi-rank-list-header"},[t("a",{attrs:{href:e.rankingsLink,target:"_blank"}},[t("SubHeader",[e._v(" 排行榜 ")])],1),e._v(" "),e.isCompactRankList?t("VButton",{attrs:{icon:"",title:"显示较少项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-poll",size:16}})],1):t("VButton",{attrs:{icon:"",title:"显示较多项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-format-list-text",size:16}})],1)],1),e._v(" "),e.isCompactRankList?t("CompactRankList",{attrs:{"parse-json":e.parseJson,api:e.rankingsApi}}):t("RankList",{attrs:{"bangumi-mode":"","parse-json":e.parseJson,api:e.rankingsApi}})],1)])};o._withStripped=!0;var r=n(9648),a=n(9799),i=n(8903),s=n(80),d=n(2927),l=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories-bangumi-timeline-content",class:{loading:e.loading,loaded:e.loaded,scrolled:e.scrolled,empty:0===e.items.length}},[e.loading?t("VLoading"):e._e(),e._v(" "),e.loaded&&0===e.items.length?t("VEmpty"):e._e(),e._v(" "),e._l(e.items,(function(n,o){return t("div",{key:n.date_ts,staticClass:"fresh-home-categories-bangumi-timeline-item animation",class:{today:o===e.todayIndex}},[0===n.episodes.length?t("div",{staticClass:"fresh-home-categories-bangumi-timeline-empty-background"}):e._e(),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date"},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-icon",class:{today:o===e.todayIndex,["day-of-week-"+n.day_of_week]:!0}}),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-number"},[e._v("\n "+e._s(n.date)+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-text"},[e._v("\n "+e._s(e.dayOfWeekText(n))+"\n ")]),e._v(" "),o===e.todayIndex?t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-today"},[e._v("\n TODAY\n ")]):e._e()]),e._v(" "),n.episodes.length>0?t("VButton",{attrs:{icon:"",type:"transparent",title:"上一页"},on:{click:function(t){return e.offsetPage(n,-1)}}},[t("VIcon",{attrs:{icon:"left-arrow",size:16}})],1):e._e(),e._v(" "),t("div",{ref:"seasonsList",refInFor:!0,staticClass:"fresh-home-categories-bangumi-timeline-seasons-container scroll-top scroll-bottom",class:{"not-empty":n.episodes.length>0},attrs:{"data-date":n.date}},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-seasons",class:{today:o===e.todayIndex}},[0===n.episodes.length?t("VEmpty"):e._e(),e._v(" "),e._l(n.episodes,(function(n){return t("a",{key:`${n.season_id}-${n.episode_id}-${n.delay_id}`,staticClass:"fresh-home-categories-bangumi-timeline-season",class:{today:o===e.todayIndex,delay:Boolean(n.delay)},attrs:{"data-season":n.season_id,"data-episode":n.episode_id,target:"_blank",href:`https://www.bilibili.com/bangumi/play/ss${n.season_id}`}},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-cover",class:{published:o===e.todayIndex&&e.isPublished(n),today:o===e.todayIndex,follow:n.follow}},[t("DpiImage",{attrs:{src:n.square_cover,size:80}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-title",class:{today:o===e.todayIndex},attrs:{title:n.title}},[e._v("\n "+e._s(n.title)+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-episode",attrs:{title:e.getEpisode(n)}},[e._v("\n "+e._s(e.getEpisode(n))+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-time",class:{published:o===e.todayIndex&&e.isPublished(n),follow:n.follow,today:o===e.todayIndex}},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-time-icon"},[n.follow?t("VIcon",{attrs:{icon:"mdi-heart-outline",size:14}}):t("VIcon",{attrs:{icon:e.isPublished(n)?"mdi-clock-check-outline":"mdi-progress-clock",size:14}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-time-text"},[e._v("\n "+e._s(n.pub_time)+"\n ")])])])}))],2)]),e._v(" "),n.episodes.length>0?t("VButton",{attrs:{icon:"",type:"transparent",title:"下一页"},on:{click:function(t){return e.offsetPage(n,1)}}},[t("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):e._e()],1)}))],2)};l._withStripped=!0;var h=n(9986),c=n(6831),m=n(5486),p=n(943),f=n(5656),b=n(2375);const u=p.b.panelHeight-2*p.b.padding,g=(()=>{const e=(u-524)/5;return{seasonItemWidth:250,seasonTodayWidth:250,timelineItemHeight:82,timelineTodayHeight:114,timelineViewportItemsHeight:524,timelineItemGap:e,timelineViewportHeight:5*e+524}})(),v=Vue.extend({components:{DpiImage:r.DpiImage,VIcon:r.VIcon,VEmpty:r.VEmpty,VLoading:r.VLoading,VButton:r.VButton},mixins:[(0,m.Ov)({requestMethod:b.getJsonWithCredentials}),(0,m.kN)(g)],data:()=>({observers:[],now:Number(new Date),timer:0,scrolled:!1}),computed:{todayIndex(){return this.items.findIndex((e=>1===e.is_today))},pastWeekItems(){return this.items.slice(0,this.todayIndex+1)},currentWeekItems(){return this.items.slice(this.todayIndex)}},watch:{loaded(){this.loaded&&this.updateScrollPosition()}},mounted(){this.timer=setInterval((()=>{this.now=Number(new Date)}),6e4);const e=this.$el;let t=0;const n=()=>{t++,t>=7&&(e.classList.add("snap"),e.removeEventListener("animationend",n))};e.addEventListener("animationend",n)},beforeDestroy(){this.timer&&clearInterval(this.timer);const e=this.$refs.seasonsList;(0,f.b)(...e)},methods:{parseJson:e=>e.result??[],async updateScrollPosition(){await this.$nextTick();const e=this.$refs.seasonsList;let t;(0,h.addComponentListener)("freshHome.horizontalWheelScroll",(n=>{if(n){const n=e.flatMap((e=>[...e.children])).map((e=>(0,c.enableHorizontalScroll)(e)));t=()=>n.forEach((e=>e()))}else t?.()}),!0);this.$el.scrollTop=5*g.timelineItemHeight+5*g.timelineItemGap;const n=".fresh-home-categories-bangumi-timeline";e.forEach((e=>{(0,f.a)({container:e,items:dqa(e,`${n}-season`)})}));const o=dq(`${n}-seasons.today`);if(!o)return;const r=this.items[this.todayIndex]?.episodes;if(0===r.length)return;const a=[...r].reverse().find((e=>this.isPublished(e)));if(!a)return void(this.scrolled=!0);const i=dq(o,`[data-season="${a.season_id}"]`);i&&(o.scrollLeft=i.offsetLeft,this.scrolled=!0)},getEpisode:e=>e.delay?`${e.delay_reason}: ${e.delay_index}`:e.pub_index,isPublished(e){return!e.delay&&1e3*e.pub_ts<=this.now},dayOfWeekText:e=>`周${["日","一","二","三","四","五","六","日"][e.day_of_week]}`,offsetPage(e,t){const n=this.$refs.seasonsList.find((t=>t.dataset.date===e.date)),o=n.clientWidth,r=Math.trunc(o/g.seasonItemWidth)*g.seasonItemWidth;n.children[0]?.scrollBy(t*r,0)}}});var x=n(8332),k=n.n(x),y=n(534),w=n.n(y),A={insert:"head",singleton:!1};k()(w(),A);w().locals;var V=n(4893);const C=(0,V.Z)(v,l,[],!1,null,null,null).exports,I={anime:{seasonType:1,rankingName:"bangumi"},guochuang:{seasonType:4,rankingName:"guochan"}},q=Vue.extend({components:{SubHeader:i.Z,BangumiTimeline:C,RankList:s.Z,CompactRankList:d.Z,VButton:r.VButton,VIcon:r.VIcon},mixins:[(0,m.QP)()],props:{region:{type:Object,required:!0}},data(){const{route:e}=this.region.category,{rankingName:t,seasonType:n}=I[e];return{bangumiDataMap:I,route:e,timelineApi:`https://api.bilibili.com/pgc/web/timeline?types=${n}&before=6&after=6`,rankingsApi:`https://api.bilibili.com/pgc/season/rank/web/list?day=3&season_type=${n}`,rankingsLink:`https://www.bilibili.com/v/popular/rank/${t}`}},methods:{parseJson(e){const t=(e.data?.list??[]).map((e=>{const t=e.new_ep?.index_show??e.title;return{id:e.season_id,title:e.title,playCount:e.stat.view,points:e.stat.follow,upHref:e.url,upName:t,dynamic:t,coverUrl:e.new_ep?.cover??e.ss_horizontal_cover,videoHref:e.url}})).slice(0,10);return(0,a.applyContentFilter)(t)}}});var B=n(4623),T=n.n(B),E={insert:"head",singleton:!1};k()(T(),E);T().locals;const Q=(0,V.Z)(q,o,[],!1,null,null,null).exports},2927:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-compact-rank-list scroll-top scroll-bottom",class:{loading:e.loading,loaded:e.loaded,"not-empty":e.items.length>0}},[e.loaded?e._e():t("div",{staticClass:"fresh-home-compact-rank-list-loading-container"},[e.loading?t("VLoading"):e._e(),e._v(" "),!e.error&&0!==e.items.length||e.loading?e._e():t("div",{staticClass:"fresh-home-compact-rank-list-empty"},[t("VEmpty"),e._v(" "),t("VButton",{staticClass:"fresh-home-compact-rank-list-refresh-button",attrs:{round:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}}),e._v("\n 刷新\n ")],1)],1)],1),e._v(" "),e.loaded?t("div",{ref:"content",staticClass:"fresh-home-compact-rank-list-content"},e._l(e.items,(function(n,o){return t("a",{key:n.id,ref:"cards",refInFor:!0,staticClass:"compact-rank-list-card",attrs:{href:n.videoHref,target:"_blank"}},[t("div",{staticClass:"compact-rank-list-card-cover"},[t("div",{staticClass:"compact-rank-list-card-rank",class:{"top-three":o<3}},[e._v("\n "+e._s(o+1)+"\n ")]),e._v(" "),t("DpiImage",{attrs:{src:n.coverUrl,size:{width:128,height:80}}})],1),e._v(" "),t("div",{staticClass:"compact-rank-list-card-info"},[t("div",{staticClass:"compact-rank-list-card-title",attrs:{title:n.title}},[e._v(e._s(n.title))]),e._v(" "),t("UpInfo",{attrs:{"up-face-url":n.upFaceUrl,href:n.upHref,"up-name":n.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!0)}),e._v(" "),t("div",{staticClass:"compact-rank-list-card-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(n.points))+"\n "),t("VIcon",{attrs:{icon:"play",size:16}}),e._v("\n "+e._s(e._f("formatCount")(n.playCount))+"\n ")],1)],1)])})),0):e._e()])};o._withStripped=!0;var r=n(1352),a=n.n(r),i=n(4289),s=n(9648),d=n(5486),l=n(5656),h=n(943);const c=Vue.extend({components:{DpiImage:s.DpiImage,UpInfo:a(),VIcon:s.VIcon,VLoading:s.VLoading,VEmpty:s.VEmpty,VButton:s.VButton},filters:{formatCount:i.formatCount},mixins:[(0,d.Ov)(),(0,d.kN)(h.o)],props:{parseJson:{type:Function,required:!0},bangumiMode:{type:Boolean,default:!1}},computed:{upInfoProps(){return{size:18,icon:this.bangumiMode?"mdi-television-classic":"up-outline",style:{transform:this.bangumiMode?"translateY(-1px)":"none"}}}},watch:{loaded(){this.loaded&&this.setupIntersection()}},beforeDestroy(){(0,l.b)(this.$el)},methods:{async setupIntersection(){await this.$nextTick(),console.log(this.$refs.cards),(0,l.a)({container:this.$el,items:this.$refs.cards})}}});var m=n(8332),p=n.n(m),f=n(6698),b=n.n(f),u={insert:"head",singleton:!1};p()(b(),u);b().locals;const g=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},3531:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>C});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories-default"},[t("div",{staticClass:"fresh-home-categories-default-video-column"},[t("div",{staticClass:"fresh-home-categories-default-video-column-item"},[t("SubHeader",[e._v(" 有新动态 ")]),e._v(" "),t("VideoSlides",{attrs:{api:e.activeVideosApi}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-default-video-column-item"},[t("SubHeader",[e._v(" 最新发布 ")]),e._v(" "),t("VideoSlides",{attrs:{api:e.newVideosApi}})],1)]),e._v(" "),t("div",{staticClass:"fresh-home-categories-default-rank-list"},[t("div",{staticClass:"fresh-home-categories-default-rank-list-header"},[t("a",{attrs:{href:e.rankingsLink,target:"_blank"}},[t("SubHeader",[e._v(" 排行榜 ")])],1),e._v(" "),e.isCompactRankList?t("VButton",{attrs:{icon:"",title:"显示较少项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-poll",size:16}})],1):t("VButton",{attrs:{icon:"",title:"显示较多项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-format-list-text",size:16}})],1)],1),e._v(" "),e.isCompactRankList?t("CompactRankList",{attrs:{"parse-json":e.parseJson,api:e.rankingsApi}}):t("RankList",{attrs:{"parse-json":e.parseJson,api:e.rankingsApi}})],1)])};o._withStripped=!0;var r=n(9648),a=n(9799),i=n(2927),s=n(80),d=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-video-slides"},[e.loaded?t("div",{staticClass:"fresh-home-video-slides-covers"},e._l(e.items,(function(n,o){return t("a",{key:n.id,staticClass:"fresh-home-video-slides-cover",attrs:{title:n.title,href:1!==o?"javascript:void(0)":e.url(n.bvid),target:"_blank"},on:{"!click":function(t){1!==o&&e.jumpToCard(t,o)}}},[t("DpiImage",{attrs:{src:n.coverUrl,size:{width:e.ui.mainCoverWidth,height:e.ui.mainCoverHeight}}})],1)})),0):e._e(),e._v(" "),t("div",{staticClass:"cover-placeholder-vertical"}),e._v(" "),e.loaded?e._e():t("div",{staticClass:"fresh-home-video-slides-empty"},[t("div",{staticClass:"empty-placeholder fresh-home-video-slides-main-title",domProps:{textContent:e._s(" ")}}),e._v(" "),t("div",{staticClass:"empty-indicator"},[e.loading?t("VLoading"):e._e(),e._v(" "),e.error?t("div",{staticClass:"empty-indicator-error"},[t("VEmpty"),e._v(" "),t("VButton",{staticClass:"fresh-home-video-slides-refresh-button",attrs:{round:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}}),e._v("\n 刷新\n ")],1)],1):e._e()],1)]),e._v(" "),e.currentItem&&e.loaded?t("div",{staticClass:"fresh-home-video-slides-row"},[t("div",{staticClass:"fresh-home-video-slides-main-info"},[t("div",{staticClass:"fresh-home-video-slides-row"},[t("div",{staticClass:"cover-placeholder-horizontal"}),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-main-actions"},[t("a",{staticClass:"fresh-home-video-slides-play-button",attrs:{href:e.currentUrl,target:"_blank"}},[t("VButton",{attrs:{type:"primary",round:""}},[t("VIcon",{attrs:{icon:"mdi-play"}}),e._v("\n 播放\n ")],1)],1),e._v(" "),e.watchlaterAdded?t("VButton",{staticClass:"fresh-home-video-slides-watchlater-button",attrs:{icon:"",title:"取消稍后再看"},on:{click:function(t){return e.toggleWatchlater(e.currentItem.aid)}}},[t("VIcon",{attrs:{icon:"mdi-clock-check-outline",size:20}})],1):t("VButton",{staticClass:"fresh-home-video-slides-watchlater-button",attrs:{icon:"",title:"稍后再看"},on:{click:function(t){return e.toggleWatchlater(e.currentItem.aid)}}},[t("VIcon",{attrs:{icon:"mdi-clock-outline",size:20}})],1),e._v(" "),t("a",{staticClass:"fresh-home-video-slides-up-container",attrs:{href:`https://space.bilibili.com/${e.currentItem.upID}`,title:e.currentItem.upName,target:"_blank"}},[t("DpiImage",{attrs:{size:24,src:e.currentItem.upFaceUrl}}),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-up-name"},[e._v("\n "+e._s(e.currentItem.upName)+"\n ")])],1)],1)]),e._v(" "),t("a",{staticClass:"fresh-home-video-slides-main-title",attrs:{title:e.currentItem.title,href:e.currentUrl,target:"_blank"}},[e._v("\n "+e._s(e.currentItem.title)+"\n ")])]),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-main-description"},[t("div",{staticClass:"description-text",domProps:{textContent:e._s(e.currentItem.description)}})]),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-actions"},[t("VButton",{staticClass:"fresh-home-video-slides-refresh-button",attrs:{title:"刷新",icon:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}})],1),e._v(" "),t("VButton",{staticClass:"fresh-home-video-slides-previous-button",attrs:{title:"上一个",icon:""},on:{click:e.previousCard}},[t("VIcon",{attrs:{icon:"mdi-arrow-left"}})],1),e._v(" "),t("VButton",{staticClass:"fresh-home-video-slides-next-button",attrs:{title:"下一个",icon:""},on:{click:e.nextCard}},[t("VIcon",{attrs:{icon:"mdi-arrow-right",size:36}})],1)],1)]):e._e()])};d._withStripped=!0;const l=coreApis.componentApis.video.watchlater;var h=n(4289),c=n(5486);const m=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon,DpiImage:r.DpiImage,VLoading:r.VLoading,VEmpty:r.VEmpty},mixins:[(0,c.Ov)(),(0,c.kN)({mainCoverHeight:185,mainCoverWidth:287,otherCoverHeight:100,otherCoverWidth:154,mainPaddingX:18,mainPaddingY:20,coverPadding:16})],data:()=>({watchlaterList:l.watchlaterList,itemLimit:10}),computed:{currentItem(){return this.items[1]},currentUrl(){return this.url(this.currentItem.bvid)},watchlaterAdded(){return this.watchlaterList.includes(this.currentItem.aid)}},created(){(0,l.getWatchlaterList)()},methods:{parseJson(e){const t=lodash.get(e,"data.archives",[]).map((e=>({id:e.aid,aid:e.aid,bvid:e.bvid,coverUrl:e.pic,title:e.title,upName:e.owner.name,upFaceUrl:e.owner.face,upID:e.owner.mid,playCount:e.stat.view,danmakuCount:e.stat.danmaku,like:e.stat.like,coins:e.stat.coin,description:e.desc,dynamic:"-"===e.desc?"":e.desc,type:e.tname,duration:e.duration,durationText:(0,h.formatDuration)(e.duration)})));return(0,a.applyContentFilter)(t)},url:e=>`https://www.bilibili.com/video/${e}`,toggleWatchlater:l.toggleWatchlater,nextCard(){this.items.push(this.items.shift())},previousCard(){this.items.unshift(this.items.pop())},jumpToCard(e,t){if(t<=1||t>=this.items.length)return;let n=t-1;const o=()=>{this.nextCard(),n--,n>0&&setTimeout(o)};o(),e.preventDefault()}}});var p=n(8332),f=n.n(p),b=n(8991),u=n.n(b),g={insert:"head",singleton:!1};f()(u(),g);u().locals;var v=n(4893);const x=(0,v.Z)(m,d,[],!1,null,null,null).exports;var k=n(8903);const y=Vue.extend({components:{CompactRankList:i.Z,RankList:s.Z,VideoSlides:x,SubHeader:k.Z,VButton:r.VButton,VIcon:r.VIcon},mixins:[(0,c.QP)()],props:{region:{type:Object,required:!0}},data(){const e=this.region.id;return console.log(this.region.category),{activeVideosApi:`https://api.bilibili.com/x/web-interface/dynamic/region?ps=10&rid=${e}`,newVideosApi:`https://api.bilibili.com/x/web-interface/newlist?ps=10&rid=${e}`,rankingsApi:`https://api.bilibili.com/x/web-interface/ranking/region?rid=${e}&day=3&original=0`,rankingsLink:`https://www.bilibili.com/v/popular/rank/${this.region.category.route}`}},methods:{parseJson(e){const t=(lodash.get(e,"data",[])||[]).map((e=>({id:e.aid,title:e.title,playCount:e.play,points:e.pts,upHref:`https://space.bilibili.com/${e.mid}`,upName:e.author,dynamic:e.description,coverUrl:e.pic,videoHref:`https://www.bilibili.com/video/${e.bvid}`}))).slice(0,10);return(0,a.applyContentFilter)(t)}}});var w=n(1880),A=n.n(w),V={insert:"head",singleton:!1};f()(A(),V);A().locals;const C=(0,v.Z)(y,o,[],!1,null,null,null).exports},80:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-rank-list",class:{loading:e.loading,loaded:e.loaded}},[e.loaded?e._e():t("div",{staticClass:"fresh-home-rank-list-loading-container"},[e.loading?t("VLoading"):e._e(),e._v(" "),!e.error&&0!==e.items.length||e.loading?e._e():t("div",{staticClass:"fresh-home-rank-list-empty"},[t("VEmpty"),e._v(" "),t("VButton",{staticClass:"fresh-home-rank-list-refresh-button",attrs:{round:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}}),e._v("\n 刷新\n ")],1)],1)],1),e._v(" "),e.loaded?[e.firstItem?t("div",{staticClass:"fresh-home-rank-list-first-item animation"},[t("div",{staticClass:"fresh-home-rank-list-rank-item"}),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-rank-item-title",attrs:{target:"_blank",href:e.firstItem.videoHref,title:e.firstItem.title}},[e._v("\n "+e._s(e.firstItem.title)+"\n ")]),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-cover",attrs:{target:"_blank",href:e.firstItem.videoHref}},[t("DpiImage",{attrs:{src:e.firstItem.coverUrl,size:{width:e.ui.firstCoverWidth,height:e.ui.firstCoverHeight}}}),e._v(" "),t("UpInfo",{attrs:{"up-face-url":e.firstItem.upFaceUrl,href:e.firstItem.upHref,"up-name":e.firstItem.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!1,4101577376)}),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.firstItem.points))+"\n ")],1)],1),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-laser",attrs:{"data-number":"1"}})]):e._e(),e._v(" "),e.secondItem?t("div",{staticClass:"fresh-home-rank-list-second-item animation"},[t("a",{staticClass:"fresh-home-rank-list-rank-item",attrs:{target:"_blank",href:e.secondItem.videoHref}},[t("div",{staticClass:"fresh-home-rank-list-rank-item-title",attrs:{title:e.secondItem.title}},[e._v("\n "+e._s(e.secondItem.title)+"\n ")]),e._v(" "),t("UpInfo",{attrs:{"up-face-url":e.secondItem.upFaceUrl,href:e.secondItem.upHref,"up-name":e.secondItem.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!1,4101577376)}),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.secondItem.points))+"\n "),t("VIcon",{attrs:{icon:"play",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.secondItem.playCount))+"\n ")],1)],1),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-cover",attrs:{target:"_blank",href:e.secondItem.videoHref}},[t("DpiImage",{attrs:{src:e.secondItem.coverUrl,size:{width:e.ui.secondCoverWidth,height:e.ui.secondCoverHeight}}})],1),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-laser",attrs:{"data-number":"2"}})]):e._e(),e._v(" "),e.thirdItem?t("div",{staticClass:"fresh-home-rank-list-third-item animation"},[t("a",{staticClass:"fresh-home-rank-list-rank-item",attrs:{target:"_blank",href:e.thirdItem.videoHref}},[t("div",{staticClass:"fresh-home-rank-list-rank-item-title",attrs:{title:e.thirdItem.title}},[e._v("\n "+e._s(e.thirdItem.title)+"\n ")]),e._v(" "),t("UpInfo",{attrs:{"up-face-url":e.thirdItem.upFaceUrl,href:e.thirdItem.upHref,"up-name":e.thirdItem.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!1,4101577376)}),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.thirdItem.points))+"\n "),t("VIcon",{attrs:{icon:"play",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.thirdItem.playCount))+"\n ")],1)],1),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-cover",attrs:{target:"_blank",href:e.thirdItem.videoHref}},[t("DpiImage",{attrs:{src:e.thirdItem.coverUrl,size:{width:e.ui.thirdCoverWidth,height:e.ui.thirdCoverHeight}}})],1),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-laser",attrs:{"data-number":"3"}})]):e._e()]:e._e()],2)};o._withStripped=!0;var r=n(1352),a=n.n(r),i=n(4289),s=n(9648),d=n(5486),l=n(943);const h=Vue.extend({components:{DpiImage:s.DpiImage,UpInfo:a(),VIcon:s.VIcon,VLoading:s.VLoading,VEmpty:s.VEmpty,VButton:s.VButton},filters:{formatCount:i.formatCount},mixins:[(0,d.Ov)(),(0,d.kN)(l.b)],props:{parseJson:{type:Function,required:!0},bangumiMode:{type:Boolean,default:!1}},computed:{firstItem(){return this.items[0]},secondItem(){return this.items[1]},thirdItem(){return this.items[2]},upInfoProps(){return{size:18,icon:this.bangumiMode?"mdi-television-classic":"up-outline",style:{transform:this.bangumiMode?"translateY(-1px)":"none"}}},firstRow(){return this.items.slice(3,6)},secondRow(){return this.items.slice(6,10)}}});var c=n(8332),m=n.n(c),p=n(8682),f=n.n(p),b={insert:"head",singleton:!1};m()(f(),b);f().locals;const u=(0,n(4893).Z)(h,o,[],!1,null,null,null).exports},2738:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-feeds"},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("动态")]),e._v(" "),t("div",{staticClass:"fresh-home-header-center-area"},[t("div",{staticClass:"fresh-home-header-tabs"},[t("div",{staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)])]),e._v(" "),t("div",{staticClass:"fresh-home-header-pagination"},[t("a",{attrs:{href:"https://www.bilibili.com/video/online.html",target:"_blank",title:"在线列表"}},[t("VButton",{attrs:{icon:""}},[t("VIcon",{attrs:{icon:"mdi-account-group-outline",size:19}})],1)],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"刷新"},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:18}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"上一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(-1)}}},[t("VIcon",{attrs:{icon:"left-arrow",size:20}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"下一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(1)}}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1),e._v(" "),t("a",{staticClass:"fresh-home-header-icon-button rotate",attrs:{href:"https://t.bilibili.com",target:"_blank"}},[t("VButton",{attrs:{round:""}},[t("VIcon",{attrs:{icon:"feeds",size:20}}),e._v("\n 全部动态\n ")],1)],1)],1)]),e._v(" "),t("div",{staticClass:"fresh-home-feeds-content"},[t("VideoList",{ref:"videoList",attrs:{videos:e.videos,loading:e.loading}})],1)])};o._withStripped=!0;var r=n(9799),a=n(9648),i=n(3720);const s=[{name:"videoFeeds",displayName:"视频",api:r.getVideoFeeds.bind(void 0,"video"),href:"https://t.bilibili.com/?tab=8"},{name:"bangumiFeeds",displayName:"番剧",api:r.getVideoFeeds.bind(void 0,"bangumi"),href:"https://t.bilibili.com/?tab=512"}],d=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon,VideoList:i.Z},data:()=>({tabs:s,selectedTab:s[0],videos:[],loading:!0}),created(){this.reload()},methods:{selectTab(e){this.selectedTab!==e?(this.selectedTab=e,this.reload()):window.open(e.href,"_blank")},async reload(){this.loading=!0,this.videos=[],this.videos=await this.selectedTab.api().finally((()=>{this.loading=!1}))}}});var l=n(8332),h=n.n(l),c=n(3568),m=n.n(c),p={insert:"head",singleton:!1};h()(m(),p);m().locals;const f=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},2475:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-trending"},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("\n "+e._s(e.title)+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-header-pagination"},[t("VButton",{attrs:{icon:"",title:"刷新"},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:18}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"上一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(-1)}}},[t("VIcon",{attrs:{icon:"left-arrow",size:20}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"下一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(1)}}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1)],1)]),e._v(" "),t("div",{staticClass:"fresh-home-trending-content"},[t("VideoList",{ref:"videoList",attrs:{videos:e.videos,loading:e.loading}})],1)])};o._withStripped=!0;var r=n(9648),a=n(3720),i=n(4438),s=n(9799),d=n(2375),l=n(605),h=n(4289);const c=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon,VideoList:a.Z},data:()=>({videos:[],loading:!0}),computed:{title:()=>i.O.personalized?"推荐":"热门"},created(){this.reload()},methods:{async reload(){this.loading=!0,this.videos=[],this.videos=await(async e=>{const t=Boolean((0,l.getUID)())&&e,n=t?d.getJsonWithCredentials:d.getJson,{code:o,message:r,data:a}=await n("https://api.bilibili.com/x/web-interface/index/top/feed/rcmd");if(0!==o)throw new Error(`获取${t?"推荐":"热门"}视频失败: ${r}`);const i=a.item.map((e=>({id:e.id,aid:e.id,bvid:e.bvid,coverUrl:e.pic.replace("http:","https:"),title:e.title,description:"",dynamic:"",duration:e.duration,durationText:(0,h.formatDuration)(e.duration),timestamp:1e3*e.pubdate,time:new Date(1e3*e.pubdate),upName:e.owner.name,upID:e.owner.mid,upFaceUrl:e.owner.face.replace("http:","https:"),like:(0,h.formatCount)(e.stat.like),playCount:(0,h.formatCount)(e.stat.view),danmakuCount:(0,h.formatCount)(e.stat.danmaku)})));return(0,s.applyContentFilter)(i)})(i.O.personalized).finally((()=>{this.loading=!1}))}}});var m=n(8332),p=n.n(m),f=n(4066),b=n.n(f),u={insert:"head",singleton:!1};p()(b(),u);b().locals;const g=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},4893:(e,t,n)=>{"use strict";function o(e,t,n,o,r,a,i,s){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=d):r&&(d=s?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),d)if(l.functional){l._injectStyles=d;var h=l.render;l.render=function(e,t){return d.call(t),h(e,t)}}else{var c=l.beforeCreate;l.beforeCreate=c?[].concat(c,d):[d]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},4422:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=4422,e.exports=t},2093:e=>{"use strict";e.exports="data:image/jpeg;base64,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"},5873:e=>{"use strict";e.exports="使用重新设计的清爽风格首页替换原本的首页.\n\n请注意:\n- 此功能与 `极简首页` 互斥, 请勿同时使用.\n- 此功能会禁用首页的[悬浮视频](https://github.com/the1812/Bilibili-Evolved/discussions/4404), 变为直接跳转到视频页面.\n\n选项说明:\n- 个性化推荐: 启用时展示推荐视频, 禁用时展示热门视频.\n- 启用横向滚动: 在可以横向滚动的列表中, 使鼠标滚轮可以做出横向滚动的效果, 请注意这会禁用卡片的边缘吸附效果.\n"},2375:e=>{"use strict";e.exports=coreApis.ajax},1952:e=>{"use strict";e.exports=coreApis.componentApis.define},1352:e=>{"use strict";e.exports=coreApis.componentApis.feeds.UpInfo},9799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},6831:e=>{"use strict";e.exports=coreApis.horizontalScroll},9153:e=>{"use strict";e.exports=coreApis.pluginApis.data},9986:e=>{"use strict";e.exports=coreApis.settings},9648:e=>{"use strict";e.exports=coreApis.ui},4289:e=>{"use strict";e.exports=coreApis.utils.formatters},4577:e=>{"use strict";e.exports=coreApis.utils.sort},605:e=>{"use strict";e.exports=coreApis.utils}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={id:e,exports:{}};return n[e](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>n[e]));return i.default=()=>n,r.d(a,i),a},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>s});var e=r(1952);const t=coreApis.lifeCycle;var n=r(9986),o=r(605);var i=r(6213);const s=(0,e.defineComponentMetadata)({name:"freshHome",displayName:"清爽首页",urlInclude:[/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/index\.html$/],tags:[componentsTags.style],entry:()=>{(0,n.addComponentListener)("freshHome.maxWidth",(e=>{document.documentElement.style.setProperty("--home-max-width-override",`${e}px`)}),!0),(0,t.contentLoaded)((async()=>{const e=await Promise.resolve().then(r.bind(r,10)),t=(0,o.mountVueComponent)(e);document.body.appendChild(t.$el)}))},options:i._,extraOptions:()=>Promise.resolve().then(r.bind(r,1935)),unload:()=>document.body.classList.add("home-redesign-off"),reload:()=>document.body.classList.remove("home-redesign-off"),instantStyles:[{name:"fresh-home-hide-original",style:()=>Promise.resolve().then(r.t.bind(r,2369,23))}],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(4422);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,5873,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),i=[];function s(e){for(var t=-1,n=0;n{var o=n(7652);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},1935:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-extra-options"},[t("div",{staticClass:"fresh-home-extra-options-title"},[e._v("布局配置")]),e._v(" "),e.loaded?e._e():t("VLoading"),e._v(" "),e.loaded?t("div",{staticClass:"fresh-home-extra-options-tips"},[t("div",{staticClass:"fresh-home-extra-options-tip"},[e._v("\n 按住并拖动可以调整顺序, 打开换行后下一个元素将会另起一行.\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legends"},[t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-arrow-expand-horizontal",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("可变宽度")])],1),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-arrow-collapse-horizontal",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("固定宽度")])],1),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-wrap",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("切换换行")])],1),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend"},[t("VIcon",{attrs:{icon:"mdi-eye-outline",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-legend-text"},[e._v("切换显示")])],1)])]):e._e(),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.loaded,expression:"loaded"}],ref:"sortList",staticClass:"fresh-home-extra-options-sort-list"},e._l(e.sortedItems,(function(n){return t("div",{key:n.layoutItem.name,staticClass:"fresh-home-extra-options-sort-item",class:{"fresh-home-extra-options-sort-item-dimmed":n.layoutSettings.hidden},attrs:{"data-name":n.layoutItem.name}},[n.layoutItem.grow?t("VIcon",{staticClass:"fresh-home-extra-options-sort-item-type",attrs:{title:"可变宽度",icon:"mdi-arrow-expand-horizontal",size:16}}):t("VIcon",{staticClass:"fresh-home-extra-options-sort-item-type",attrs:{icon:"mdi-arrow-collapse-horizontal",title:"固定宽度",size:16}}),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-sort-item-name"},[e._v(e._s(n.layoutItem.displayName))]),e._v(" "),t("div",{staticClass:"fresh-home-extra-options-sort-item-actions"},[t("VButton",{attrs:{type:"transparent",title:"切换换行",icon:""},on:{click:function(t){return e.toggleLinebreak(n.layoutItem)}}},[n.layoutSettings.linebreak?t("VIcon",{attrs:{icon:"mdi-wrap",size:16}}):t("VIcon",{attrs:{icon:"mdi-wrap-disabled",size:16}})],1),e._v(" "),t("VButton",{attrs:{type:"transparent",title:"切换显示",icon:""},on:{click:function(t){return e.toggleVisible(n.layoutItem)}}},[n.layoutSettings.hidden?t("VIcon",{attrs:{icon:"mdi-eye-off-outline",size:16}}):t("VIcon",{attrs:{icon:"mdi-eye-outline",size:16}})],1)],1)],1)})),0)],1)};o._withStripped=!0;const r=coreApis.runtimeLibrary;var a=n(4577),i=n(9648),s=n(5424),d=n(4438);const l=Vue.extend({components:{VLoading:i.VLoading,VIcon:i.VIcon,VButton:i.VButton},data:()=>({loaded:!1,layouts:s.$,sortedItems:[]}),async mounted(){const e=this.$refs.sortList,t=await r.SortableJSLibrary;console.log({list:e}),t.create(e,{delay:100,forceFallback:!0,onEnd:e=>{const t=[...this.sortedItems],[n]=t.splice(e.oldIndex,1);console.log(n.layoutItem.name,`${e.oldIndex} -> ${e.newIndex}`),t.splice(e.newIndex,0,n);const{layoutOptions:o}=d.O;t.forEach(((e,t)=>{o[e.layoutItem.name].order=t+1,e.layoutSettings.order=t+1})),this.sortedItems=t}}),this.sortItems(),this.loaded=!0},methods:{sortItems(){this.sortedItems=this.layouts.map(((e,t)=>({layoutItem:e,layoutSettings:{linebreak:!1,order:t+1,hidden:!1,...d.O.layoutOptions[e.name]}}))).filter((e=>null!==e)).sort((0,a.ascendingSort)((e=>e.layoutSettings.order)))},toggleLinebreak(e){const t=d.O.layoutOptions[e.name];t.linebreak=!t.linebreak,this.sortItems()},toggleVisible(e){const t=d.O.layoutOptions[e.name];t.hidden=!t.hidden,this.sortItems()}}}),h=l;var c=n(8332),m=n.n(c),p=n(6804),f=n.n(p),b={insert:"head",singleton:!1};m()(f(),b);f().locals;const u=(0,n(4893).Z)(h,o,[],!1,null,null,null).exports},10:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>C});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("HomeRedesignBase",[t("div",{staticClass:"fresh-home"},[t("div",{staticClass:"fresh-home-content-layout"},e._l(e.layouts,(function(e){return t("FreshLayoutItem",{key:e.name,attrs:{item:e}})})),1)])])};o._withStripped=!0;var r=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"home-redesign-base"},[e._t("default")],2)};r._withStripped=!0;const a=(0,globalThis.Vue.defineComponent)({__name:"HomeRedesignBase",setup(e){const t=new URLSearchParams(location.search);if(t.has("bvid")){const e=new URLSearchParams([...t.entries()].filter((e=>{let[t]=e;return"bvid"!==t})));location.replace(`/video/${t.get("bvid")}${e.size>0?`?${e.toString()}`:""}`)}return{__sfc:!0,params:t}}});var i=n(8332),s=n.n(i),d=n(7512),l=n.n(d),h={insert:"head",singleton:!1};s()(l(),h);l().locals;var c=n(4893);const m=(0,c.Z)(a,r,[],!1,null,null,null).exports;var p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-content-layout-item-container",class:{"fresh-home-content-layout-item-hidden":e.options.hidden}},[e.options.hidden?e._e():[t("div",{staticClass:"fresh-home-content-layout-item",class:{grow:e.item.grow},style:{order:e.options.order}},[t(e.item.component,{tag:"component"})],1),e._v(" "),e.options.linebreak?t("div",{staticClass:"fresh-home-content-layout-item linebreak",style:{order:e.options.order}}):e._e()]],2)};p._withStripped=!0;var f=n(4438);const b=Vue.extend({props:{item:{required:!0,type:Object}},data(){return{options:f.O.layoutOptions[this.item.name]??{}}}});var u=n(4479),g=n.n(u),v={insert:"head",singleton:!1};s()(g(),v);g().locals;const x=(0,c.Z)(b,p,[],!1,null,null,null).exports;var k=n(5424);const y=Vue.extend({components:{HomeRedesignBase:m,FreshLayoutItem:x},data:()=>({layouts:k.$})});var w=n(5917),A=n.n(w),V={insert:"head",singleton:!1};s()(A(),V);A().locals;const C=(0,c.Z)(y,o,[],!1,null,null,null).exports},8903:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=function(){var e=this,t=e._self._c;return t("div",{staticClass:"fresh-home-sub-header"},[t("div",{staticClass:"fresh-home-sub-header-dot"}),e._v(" "),e._t("default")],2)};o._withStripped=!0;var r=n(8332),a=n.n(r),i=n(8838),s=n.n(i),d={insert:"head",singleton:!1};a()(s(),d);s().locals;const l=(0,n(4893).Z)({},o,[],!1,null,null,null).exports},3720:(e,t,n)=>{"use strict";n.d(t,{Z:()=>A});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-video-list scroll-top scroll-bottom",class:{"not-empty":e.videos.length>0}},[t("div",{ref:"content",staticClass:"fresh-home-video-list-content"},[0===e.videos.length?t("div",{staticClass:"fresh-home-video-list-empty"},[e.loading?t("VLoading"):t("VEmpty")],1):e._l(e.videos,(function(e){return t("VideoCardWrapper",{key:e.id,ref:"cards",refInFor:!0,attrs:{data:e}})}))],2)])};o._withStripped=!0;var r=n(9648),a=n(6831),i=n(9986),s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-video-card-wrapper"},[t("VideoCard",e._b({attrs:{orientation:"vertical"}},"VideoCard",e.$attrs,!1))],1)};s._withStripped=!0;const d=coreApis.componentApis.feeds.VideoCard;var l=n.n(d);const h=Vue.extend({components:{VideoCard:l()}});var c=n(8332),m=n.n(c),p=n(4132),f=n.n(p),b={insert:"head",singleton:!1};m()(f(),b);f().locals;var u=n(4893);const g=(0,u.Z)(h,s,[],!1,null,null,null).exports;var v=n(5656);const x=Vue.extend({components:{VEmpty:r.VEmpty,VLoading:r.VLoading,VideoCardWrapper:g},props:{videos:{type:Array,default:()=>[]},loading:{type:Boolean,default:!0}},watch:{videos(){this.setupIntersection()},loaded(){this.loaded&&this.setupIntersection()}},beforeDestroy(){(0,v.b)(this.$el)},mounted(){const e=this.$refs.content;let t;(0,i.addComponentListener)("freshHome.horizontalWheelScroll",(n=>{n?t=(0,a.enableHorizontalScroll)(e):t?.()}),!0)},methods:{async setupIntersection(){await this.$nextTick(),(0,v.a)({container:this.$el,items:this.$refs.cards.map((e=>e.$el))})},offsetPage(e){const t=this.$refs.content,n=getComputedStyle(t),o=t.clientWidth,r=parseFloat(n.getPropertyValue("--card-width"))+parseFloat(n.getPropertyValue("--card-padding")),a=Math.trunc(o/r)*r;t.scrollBy(e*a,0)}}});var k=n(3833),y=n.n(k),w={insert:"head",singleton:!1};m()(y(),w);y().locals;const A=(0,u.Z)(x,o,[],!1,null,null,null).exports},2494:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-areas"},[e._m(0),e._v(" "),t("div",{staticClass:"fresh-home-areas-content"},[t("a",{staticClass:"fresh-home-areas-content-primary",attrs:{href:e.primary.url,target:"_blank"}},[t("div",{staticClass:"fresh-home-areas-content-primary-image"}),e._v(" "),t("div",{staticClass:"fresh-home-areas-content-primary-title"},[e._v("\n "+e._s(e.primary.title)+"\n ")])]),e._v(" "),t("div",{staticClass:"fresh-home-areas-content-other"},e._l(e.others,(function(n){return t("a",{key:n.title,attrs:{href:n.url,target:"_blank"}},[t("VButton",{attrs:{type:"transparent"}},[t("VIcon",{attrs:{colored:"",icon:n.icon,size:22}}),e._v("\n "+e._s(n.title)+"\n ")],1)],1)})),0)])])};o._withStripped=!0;var r=n(9153),a=n(9648);(0,r.addData)("ui.icons",(e=>{e["live-colored"]='\n \n \n \n \n',e["topic-colored"]='\n \n',e["black-room-colored"]='\n \n \n \n \n \n \n \n \n'}));const i={title:"专栏",url:"https://www.bilibili.com/read/home"},s=[{title:"直播",url:"https://live.bilibili.com/",icon:"live-colored"},{title:"专题",url:"https://www.bilibili.com/blackboard/topic_list.html",icon:"topic-colored"},{title:"小黑屋",url:"https://www.bilibili.com/blackroom/",icon:"black-room-colored"}],d=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon},data:()=>({primary:i,others:s})});var l=n(8332),h=n.n(l),c=n(5985),m=n.n(c),p={insert:"head",singleton:!1};h()(m(),p);m().locals;const f=(0,n(4893).Z)(d,o,[function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("栏目")])])}],!1,null,null,null).exports},1314:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-blackboard",on:{mouseenter:e.destroyTimer,mouseleave:e.createTimer}},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("活动")]),e._v(" "),t("a",{staticClass:"fresh-home-header-icon-button rotate",attrs:{href:"https://www.bilibili.com/blackboard/x/act_list/",target:"_blank"}},[t("VButton",{attrs:{round:""}},[t("VIcon",{attrs:{icon:"mdi-dots-horizontal",size:20}}),e._v("\n 更多\n ")],1)],1)]),e._v(" "),e._l(e.blackboards,(function(e,n){return t("input",{key:n,staticClass:"fresh-home-blackboard-radio",attrs:{id:"blackboard"+n,type:"radio",name:"blackboard","data-index":n},domProps:{checked:0===n}})})),e._v(" "),t("div",{staticClass:"fresh-home-blackboard-cards"},e._l(e.blackboards,(function(n,o){return t("a",{key:o,staticClass:"fresh-home-blackboard-card",attrs:{target:"_blank",href:n.url,title:n.title}},[t("DpiImage",{staticClass:"fresh-home-blackboard-card-image",attrs:{src:n.imageUrl,alt:n.title,size:{width:500,height:250},intersection:{root:e.cardsContainer}}}),e._v(" "),t("div",{staticClass:"fresh-home-blackboard-card-title",attrs:{title:n.title}},[e._v("\n "+e._s(n.title)+"\n ")])],1)})),0),e._v(" "),t("div",{staticClass:"fresh-home-blackboard-jump-dots"},e._l(e.blackboards,(function(e,n){return t("label",{key:n,attrs:{for:"blackboard"+n}},[t("div",{staticClass:"fresh-home-blackboard-jump-dot"})])})),0)],2)};o._withStripped=!0;var r=n(9648),a=n(2375);const i=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon,DpiImage:r.DpiImage},data:()=>({blackboards:[],timer:0}),computed:{cardsContainer(){return this.$el.querySelector(".fresh-home-blackboard-cards")}},async created(){const e=await(async()=>{const e=4694,{code:t,message:n,data:o}=await(0,a.getJson)("https://api.bilibili.com/x/web-show/res/locs?pf=0&ids=4694");if(0!==t)throw new Error(`获取活动卡片失败: ${n}`);return o[4694].map((t=>({url:t.url,title:t.name,isAd:t.res_id!==e,imageUrl:t.pic})))})();this.blackboards=e.filter((e=>!e.isAd))},mounted(){this.createTimer()},beforeDestroy(){this.destroyTimer()},methods:{createTimer(){if(this.timer)return;const e="fresh-home-blackboard-radio";this.timer=window.setInterval((()=>{if(!document.hasFocus()||this.$el.matches(":hover"))return;const t=parseInt(dq(`.${e}:checked`).getAttribute("data-index"));let n;n=t===this.blackboards.length-1?0:t+1,dq(`.${e}[data-index='${n}']`).checked=!0}),5e3)},destroyTimer(){this.timer&&(window.clearInterval(this.timer),this.timer=0)}}});var s=n(8332),d=n.n(s),l=n(2949),h=n.n(l),c={insert:"head",singleton:!1};d()(h(),c);h().locals;const m=(0,n(4893).Z)(i,o,[],!1,null,null,null).exports},8900:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>y});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories"},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("分区")]),e._v(" "),t("div",{staticClass:"fresh-home-header-center-area"},[t("div",{staticClass:"fresh-home-header-tabs"},[t("div",{ref:"tabs",staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},attrs:{"data-name":n.name},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)])]),e._v(" "),t("div",{staticClass:"fresh-home-header-pagination"},[e.isReordering?t("VButton",{attrs:{icon:"",title:"完成排序"},on:{click:e.toggleReorder}},[t("VIcon",{attrs:{icon:"mdi-check",size:18}})],1):t("VButton",{attrs:{icon:"",title:"排序"},on:{click:e.toggleReorder}},[t("VIcon",{attrs:{icon:"mdi-swap-horizontal",size:18}})],1)],1)]),e._v(" "),t("div",{staticClass:"fresh-home-categories-content"},[t(e.content,{tag:"component",attrs:{region:e.selectedTab}})],1)])};o._withStripped=!0;const r=coreApis.reorder;var a=n(4577),i=n(9648),s=n(4438);const d=coreApis.componentApis.utils.categories.data,l=JSON.parse('["推广","正在直播","动画","番剧","番剧动态","国创","国产原创相关","漫画","音乐","舞蹈","游戏","知识","课堂","科技","运动","汽车","生活","美食","动物圈","鬼畜","时尚","资讯","娱乐","专栏","电影","电视剧","影视","纪录片","特别推荐"]'),h=["推广","正在直播","番剧动态","国产原创相关","漫画","课堂","专栏","特别推荐"],c=Object.fromEntries(Object.entries(d.categories).filter((e=>{let[t]=e;return!h.includes(t)&&!!l.includes(t)}))),m=["番剧","国创"],p=e=>(console.log("getContent",e),m.includes(e)?()=>Promise.resolve().then(n.bind(n,6657)).then((e=>e.default)):()=>Promise.resolve().then(n.bind(n,3531)).then((e=>e.default))),f=Object.entries(c).map((e=>{let[t,n]=e;return{id:n.code,name:t,displayName:t,category:n,href:n.link,order:0}})),b=Vue.extend({components:{VButton:i.VButton,VIcon:i.VIcon},data(){const e=s.O.categoriesOrder??{},t=[...f].sort((0,a.ascendingSort)((t=>e[t.name])));return{tabs:t,isReordering:!1,reorder:null,selectedTab:t[0],content:p(t[0].name)}},mounted(){const e=this.$refs.tabs,t=new r.Reorder(e);t.addEventListener("reorder",(e=>{let{detail:t}=e;const n=Object.fromEntries(t.map((e=>[e.element.getAttribute("data-name"),e.order])));console.log(t,n),s.O.categoriesOrder=n})),this.reorder=t},methods:{toggleReorder(){this.reorder.toggle(),this.isReordering=this.reorder.enabled},selectTab(e){this.isReordering||(this.selectedTab!==e?(this.selectedTab=e,this.content=p(e.name)):window.open(e.href,"_blank"))}}});var u=n(8332),g=n.n(u),v=n(2136),x=n.n(v),k={insert:"head",singleton:!1};g()(x(),k);x().locals;const y=(0,n(4893).Z)(b,o,[],!1,null,null,null).exports},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Q});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories-bangumi"},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline"},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-header"},[t("SubHeader",[e._v(" 时间表 ")])],1),e._v(" "),t("BangumiTimeline",{attrs:{api:e.timelineApi}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-rank-list"},[t("div",{staticClass:"fresh-home-categories-bangumi-rank-list-header"},[t("a",{attrs:{href:e.rankingsLink,target:"_blank"}},[t("SubHeader",[e._v(" 排行榜 ")])],1),e._v(" "),e.isCompactRankList?t("VButton",{attrs:{icon:"",title:"显示较少项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-poll",size:16}})],1):t("VButton",{attrs:{icon:"",title:"显示较多项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-format-list-text",size:16}})],1)],1),e._v(" "),e.isCompactRankList?t("CompactRankList",{attrs:{"parse-json":e.parseJson,api:e.rankingsApi}}):t("RankList",{attrs:{"bangumi-mode":"","parse-json":e.parseJson,api:e.rankingsApi}})],1)])};o._withStripped=!0;var r=n(9648),a=n(9799),i=n(8903),s=n(80),d=n(2927),l=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories-bangumi-timeline-content",class:{loading:e.loading,loaded:e.loaded,scrolled:e.scrolled,empty:0===e.items.length}},[e.loading?t("VLoading"):e._e(),e._v(" "),e.loaded&&0===e.items.length?t("VEmpty"):e._e(),e._v(" "),e._l(e.items,(function(n,o){return t("div",{key:n.date_ts,staticClass:"fresh-home-categories-bangumi-timeline-item animation",class:{today:o===e.todayIndex}},[0===n.episodes.length?t("div",{staticClass:"fresh-home-categories-bangumi-timeline-empty-background"}):e._e(),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date"},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-icon",class:{today:o===e.todayIndex,["day-of-week-"+n.day_of_week]:!0}}),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-number"},[e._v("\n "+e._s(n.date)+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-text"},[e._v("\n "+e._s(e.dayOfWeekText(n))+"\n ")]),e._v(" "),o===e.todayIndex?t("div",{staticClass:"fresh-home-categories-bangumi-timeline-date-today"},[e._v("\n TODAY\n ")]):e._e()]),e._v(" "),n.episodes.length>0?t("VButton",{attrs:{icon:"",type:"transparent",title:"上一页"},on:{click:function(t){return e.offsetPage(n,-1)}}},[t("VIcon",{attrs:{icon:"left-arrow",size:16}})],1):e._e(),e._v(" "),t("div",{ref:"seasonsList",refInFor:!0,staticClass:"fresh-home-categories-bangumi-timeline-seasons-container scroll-top scroll-bottom",class:{"not-empty":n.episodes.length>0},attrs:{"data-date":n.date}},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-seasons",class:{today:o===e.todayIndex}},[0===n.episodes.length?t("VEmpty"):e._e(),e._v(" "),e._l(n.episodes,(function(n){return t("a",{key:`${n.season_id}-${n.episode_id}-${n.delay_id}`,staticClass:"fresh-home-categories-bangumi-timeline-season",class:{today:o===e.todayIndex,delay:Boolean(n.delay)},attrs:{"data-season":n.season_id,"data-episode":n.episode_id,target:"_blank",href:`https://www.bilibili.com/bangumi/play/ss${n.season_id}`}},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-cover",class:{published:o===e.todayIndex&&e.isPublished(n),today:o===e.todayIndex,follow:n.follow}},[t("DpiImage",{attrs:{src:n.square_cover,size:80}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-title",class:{today:o===e.todayIndex},attrs:{title:n.title}},[e._v("\n "+e._s(n.title)+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-episode",attrs:{title:e.getEpisode(n)}},[e._v("\n "+e._s(e.getEpisode(n))+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-time",class:{published:o===e.todayIndex&&e.isPublished(n),follow:n.follow,today:o===e.todayIndex}},[t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-time-icon"},[n.follow?t("VIcon",{attrs:{icon:"mdi-heart-outline",size:14}}):t("VIcon",{attrs:{icon:e.isPublished(n)?"mdi-clock-check-outline":"mdi-progress-clock",size:14}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-bangumi-timeline-season-time-text"},[e._v("\n "+e._s(n.pub_time)+"\n ")])])])}))],2)]),e._v(" "),n.episodes.length>0?t("VButton",{attrs:{icon:"",type:"transparent",title:"下一页"},on:{click:function(t){return e.offsetPage(n,1)}}},[t("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):e._e()],1)}))],2)};l._withStripped=!0;var h=n(9986),c=n(6831),m=n(5486),p=n(943),f=n(5656),b=n(2375);const u=p.b.panelHeight-2*p.b.padding,g=(()=>{const e=(u-524)/5;return{seasonItemWidth:250,seasonTodayWidth:250,timelineItemHeight:82,timelineTodayHeight:114,timelineViewportItemsHeight:524,timelineItemGap:e,timelineViewportHeight:5*e+524}})(),v=Vue.extend({components:{DpiImage:r.DpiImage,VIcon:r.VIcon,VEmpty:r.VEmpty,VLoading:r.VLoading,VButton:r.VButton},mixins:[(0,m.Ov)({requestMethod:b.getJsonWithCredentials}),(0,m.kN)(g)],data:()=>({observers:[],now:Number(new Date),timer:0,scrolled:!1}),computed:{todayIndex(){return this.items.findIndex((e=>1===e.is_today))},pastWeekItems(){return this.items.slice(0,this.todayIndex+1)},currentWeekItems(){return this.items.slice(this.todayIndex)}},watch:{loaded(){this.loaded&&this.updateScrollPosition()}},mounted(){this.timer=setInterval((()=>{this.now=Number(new Date)}),6e4);const e=this.$el;let t=0;const n=()=>{t++,t>=7&&(e.classList.add("snap"),e.removeEventListener("animationend",n))};e.addEventListener("animationend",n)},beforeDestroy(){this.timer&&clearInterval(this.timer);const e=this.$refs.seasonsList;(0,f.b)(...e)},methods:{parseJson:e=>e.result??[],async updateScrollPosition(){await this.$nextTick();const e=this.$refs.seasonsList;let t;(0,h.addComponentListener)("freshHome.horizontalWheelScroll",(n=>{if(n){const n=e.flatMap((e=>[...e.children])).map((e=>(0,c.enableHorizontalScroll)(e)));t=()=>n.forEach((e=>e()))}else t?.()}),!0);this.$el.scrollTop=5*g.timelineItemHeight+5*g.timelineItemGap;const n=".fresh-home-categories-bangumi-timeline";e.forEach((e=>{(0,f.a)({container:e,items:dqa(e,`${n}-season`)})}));const o=dq(`${n}-seasons.today`);if(!o)return;const r=this.items[this.todayIndex]?.episodes;if(0===r.length)return;const a=[...r].reverse().find((e=>this.isPublished(e)));if(!a)return void(this.scrolled=!0);const i=dq(o,`[data-season="${a.season_id}"]`);i&&(o.scrollLeft=i.offsetLeft,this.scrolled=!0)},getEpisode:e=>e.delay?`${e.delay_reason}: ${e.delay_index}`:e.pub_index,isPublished(e){return!e.delay&&1e3*e.pub_ts<=this.now},dayOfWeekText:e=>`周${["日","一","二","三","四","五","六","日"][e.day_of_week]}`,offsetPage(e,t){const n=this.$refs.seasonsList.find((t=>t.dataset.date===e.date)),o=n.clientWidth,r=Math.trunc(o/g.seasonItemWidth)*g.seasonItemWidth;n.children[0]?.scrollBy(t*r,0)}}});var x=n(8332),k=n.n(x),y=n(534),w=n.n(y),A={insert:"head",singleton:!1};k()(w(),A);w().locals;var V=n(4893);const C=(0,V.Z)(v,l,[],!1,null,null,null).exports,I={anime:{seasonType:1,rankingName:"bangumi"},guochuang:{seasonType:4,rankingName:"guochan"}},q=Vue.extend({components:{SubHeader:i.Z,BangumiTimeline:C,RankList:s.Z,CompactRankList:d.Z,VButton:r.VButton,VIcon:r.VIcon},mixins:[(0,m.QP)()],props:{region:{type:Object,required:!0}},data(){const{route:e}=this.region.category,{rankingName:t,seasonType:n}=I[e];return{bangumiDataMap:I,route:e,timelineApi:`https://api.bilibili.com/pgc/web/timeline?types=${n}&before=6&after=6`,rankingsApi:`https://api.bilibili.com/pgc/season/rank/web/list?day=3&season_type=${n}`,rankingsLink:`https://www.bilibili.com/v/popular/rank/${t}`}},methods:{parseJson(e){const t=(e.data?.list??[]).map((e=>{const t=e.new_ep?.index_show??e.title;return{id:e.season_id,title:e.title,playCount:e.stat.view,points:e.stat.follow,upHref:e.url,upName:t,dynamic:t,coverUrl:e.new_ep?.cover??e.ss_horizontal_cover,videoHref:e.url}})).slice(0,10);return(0,a.applyContentFilter)(t)}}});var B=n(4623),T=n.n(B),E={insert:"head",singleton:!1};k()(T(),E);T().locals;const Q=(0,V.Z)(q,o,[],!1,null,null,null).exports},2927:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-compact-rank-list scroll-top scroll-bottom",class:{loading:e.loading,loaded:e.loaded,"not-empty":e.items.length>0}},[e.loaded?e._e():t("div",{staticClass:"fresh-home-compact-rank-list-loading-container"},[e.loading?t("VLoading"):e._e(),e._v(" "),!e.error&&0!==e.items.length||e.loading?e._e():t("div",{staticClass:"fresh-home-compact-rank-list-empty"},[t("VEmpty"),e._v(" "),t("VButton",{staticClass:"fresh-home-compact-rank-list-refresh-button",attrs:{round:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}}),e._v("\n 刷新\n ")],1)],1)],1),e._v(" "),e.loaded?t("div",{ref:"content",staticClass:"fresh-home-compact-rank-list-content"},e._l(e.items,(function(n,o){return t("a",{key:n.id,ref:"cards",refInFor:!0,staticClass:"compact-rank-list-card",attrs:{href:n.videoHref,target:"_blank"}},[t("div",{staticClass:"compact-rank-list-card-cover"},[t("div",{staticClass:"compact-rank-list-card-rank",class:{"top-three":o<3}},[e._v("\n "+e._s(o+1)+"\n ")]),e._v(" "),t("DpiImage",{attrs:{src:n.coverUrl,size:{width:128,height:80}}})],1),e._v(" "),t("div",{staticClass:"compact-rank-list-card-info"},[t("div",{staticClass:"compact-rank-list-card-title",attrs:{title:n.title}},[e._v(e._s(n.title))]),e._v(" "),t("UpInfo",{attrs:{"up-face-url":n.upFaceUrl,href:n.upHref,"up-name":n.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!0)}),e._v(" "),t("div",{staticClass:"compact-rank-list-card-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(n.points))+"\n "),t("VIcon",{attrs:{icon:"play",size:16}}),e._v("\n "+e._s(e._f("formatCount")(n.playCount))+"\n ")],1)],1)])})),0):e._e()])};o._withStripped=!0;var r=n(1352),a=n.n(r),i=n(4289),s=n(9648),d=n(5486),l=n(5656),h=n(943);const c=Vue.extend({components:{DpiImage:s.DpiImage,UpInfo:a(),VIcon:s.VIcon,VLoading:s.VLoading,VEmpty:s.VEmpty,VButton:s.VButton},filters:{formatCount:i.formatCount},mixins:[(0,d.Ov)(),(0,d.kN)(h.o)],props:{parseJson:{type:Function,required:!0},bangumiMode:{type:Boolean,default:!1}},computed:{upInfoProps(){return{size:18,icon:this.bangumiMode?"mdi-television-classic":"up-outline",style:{transform:this.bangumiMode?"translateY(-1px)":"none"}}}},watch:{loaded(){this.loaded&&this.setupIntersection()}},beforeDestroy(){(0,l.b)(this.$el)},methods:{async setupIntersection(){await this.$nextTick(),console.log(this.$refs.cards),(0,l.a)({container:this.$el,items:this.$refs.cards})}}});var m=n(8332),p=n.n(m),f=n(6698),b=n.n(f),u={insert:"head",singleton:!1};p()(b(),u);b().locals;const g=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},3531:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>C});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-categories-default"},[t("div",{staticClass:"fresh-home-categories-default-video-column"},[t("div",{staticClass:"fresh-home-categories-default-video-column-item"},[t("SubHeader",[e._v(" 有新动态 ")]),e._v(" "),t("VideoSlides",{attrs:{api:e.activeVideosApi}})],1),e._v(" "),t("div",{staticClass:"fresh-home-categories-default-video-column-item"},[t("SubHeader",[e._v(" 最新发布 ")]),e._v(" "),t("VideoSlides",{attrs:{api:e.newVideosApi}})],1)]),e._v(" "),t("div",{staticClass:"fresh-home-categories-default-rank-list"},[t("div",{staticClass:"fresh-home-categories-default-rank-list-header"},[t("a",{attrs:{href:e.rankingsLink,target:"_blank"}},[t("SubHeader",[e._v(" 排行榜 ")])],1),e._v(" "),e.isCompactRankList?t("VButton",{attrs:{icon:"",title:"显示较少项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-poll",size:16}})],1):t("VButton",{attrs:{icon:"",title:"显示较多项目"},on:{click:e.toggleRankListMode}},[t("VIcon",{attrs:{icon:"mdi-format-list-text",size:16}})],1)],1),e._v(" "),e.isCompactRankList?t("CompactRankList",{attrs:{"parse-json":e.parseJson,api:e.rankingsApi}}):t("RankList",{attrs:{"parse-json":e.parseJson,api:e.rankingsApi}})],1)])};o._withStripped=!0;var r=n(9648),a=n(9799),i=n(2927),s=n(80),d=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-video-slides"},[e.loaded?t("div",{staticClass:"fresh-home-video-slides-covers"},e._l(e.items,(function(n,o){return t("a",{key:n.id,staticClass:"fresh-home-video-slides-cover",attrs:{title:n.title,href:1!==o?"javascript:void(0)":e.url(n.bvid),target:"_blank"},on:{"!click":function(t){1!==o&&e.jumpToCard(t,o)}}},[t("DpiImage",{attrs:{src:n.coverUrl,size:{width:e.ui.mainCoverWidth,height:e.ui.mainCoverHeight}}})],1)})),0):e._e(),e._v(" "),t("div",{staticClass:"cover-placeholder-vertical"}),e._v(" "),e.loaded?e._e():t("div",{staticClass:"fresh-home-video-slides-empty"},[t("div",{staticClass:"empty-placeholder fresh-home-video-slides-main-title",domProps:{textContent:e._s(" ")}}),e._v(" "),t("div",{staticClass:"empty-indicator"},[e.loading?t("VLoading"):e._e(),e._v(" "),e.error?t("div",{staticClass:"empty-indicator-error"},[t("VEmpty"),e._v(" "),t("VButton",{staticClass:"fresh-home-video-slides-refresh-button",attrs:{round:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}}),e._v("\n 刷新\n ")],1)],1):e._e()],1)]),e._v(" "),e.currentItem&&e.loaded?t("div",{staticClass:"fresh-home-video-slides-row"},[t("div",{staticClass:"fresh-home-video-slides-main-info"},[t("div",{staticClass:"fresh-home-video-slides-row"},[t("div",{staticClass:"cover-placeholder-horizontal"}),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-main-actions"},[t("a",{staticClass:"fresh-home-video-slides-play-button",attrs:{href:e.currentUrl,target:"_blank"}},[t("VButton",{attrs:{type:"primary",round:""}},[t("VIcon",{attrs:{icon:"mdi-play"}}),e._v("\n 播放\n ")],1)],1),e._v(" "),e.watchlaterAdded?t("VButton",{staticClass:"fresh-home-video-slides-watchlater-button",attrs:{icon:"",title:"取消稍后再看"},on:{click:function(t){return e.toggleWatchlater(e.currentItem.aid)}}},[t("VIcon",{attrs:{icon:"mdi-clock-check-outline",size:20}})],1):t("VButton",{staticClass:"fresh-home-video-slides-watchlater-button",attrs:{icon:"",title:"稍后再看"},on:{click:function(t){return e.toggleWatchlater(e.currentItem.aid)}}},[t("VIcon",{attrs:{icon:"mdi-clock-outline",size:20}})],1),e._v(" "),t("a",{staticClass:"fresh-home-video-slides-up-container",attrs:{href:`https://space.bilibili.com/${e.currentItem.upID}`,title:e.currentItem.upName,target:"_blank"}},[t("DpiImage",{attrs:{size:24,src:e.currentItem.upFaceUrl}}),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-up-name"},[e._v("\n "+e._s(e.currentItem.upName)+"\n ")])],1)],1)]),e._v(" "),t("a",{staticClass:"fresh-home-video-slides-main-title",attrs:{title:e.currentItem.title,href:e.currentUrl,target:"_blank"}},[e._v("\n "+e._s(e.currentItem.title)+"\n ")])]),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-main-description"},[t("div",{staticClass:"description-text",domProps:{textContent:e._s(e.currentItem.description)}})]),e._v(" "),t("div",{staticClass:"fresh-home-video-slides-actions"},[t("VButton",{staticClass:"fresh-home-video-slides-refresh-button",attrs:{title:"刷新",icon:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}})],1),e._v(" "),t("VButton",{staticClass:"fresh-home-video-slides-previous-button",attrs:{title:"上一个",icon:""},on:{click:e.previousCard}},[t("VIcon",{attrs:{icon:"mdi-arrow-left"}})],1),e._v(" "),t("VButton",{staticClass:"fresh-home-video-slides-next-button",attrs:{title:"下一个",icon:""},on:{click:e.nextCard}},[t("VIcon",{attrs:{icon:"mdi-arrow-right",size:36}})],1)],1)]):e._e()])};d._withStripped=!0;const l=coreApis.componentApis.video.watchlater;var h=n(4289),c=n(5486);const m=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon,DpiImage:r.DpiImage,VLoading:r.VLoading,VEmpty:r.VEmpty},mixins:[(0,c.Ov)(),(0,c.kN)({mainCoverHeight:185,mainCoverWidth:287,otherCoverHeight:100,otherCoverWidth:154,mainPaddingX:18,mainPaddingY:20,coverPadding:16})],data:()=>({watchlaterList:l.watchlaterList,itemLimit:10}),computed:{currentItem(){return this.items[1]},currentUrl(){return this.url(this.currentItem.bvid)},watchlaterAdded(){return this.watchlaterList.includes(this.currentItem.aid)}},created(){(0,l.getWatchlaterList)()},methods:{parseJson(e){const t=lodash.get(e,"data.archives",[]).map((e=>({id:e.aid,aid:e.aid,bvid:e.bvid,coverUrl:e.pic,title:e.title,upName:e.owner.name,upFaceUrl:e.owner.face,upID:e.owner.mid,playCount:e.stat.view,danmakuCount:e.stat.danmaku,like:e.stat.like,coins:e.stat.coin,description:e.desc,dynamic:"-"===e.desc?"":e.desc,type:e.tname,duration:e.duration,durationText:(0,h.formatDuration)(e.duration)})));return(0,a.applyContentFilter)(t)},url:e=>`https://www.bilibili.com/video/${e}`,toggleWatchlater:l.toggleWatchlater,nextCard(){this.items.push(this.items.shift())},previousCard(){this.items.unshift(this.items.pop())},jumpToCard(e,t){if(t<=1||t>=this.items.length)return;let n=t-1;const o=()=>{this.nextCard(),n--,n>0&&setTimeout(o)};o(),e.preventDefault()}}});var p=n(8332),f=n.n(p),b=n(8991),u=n.n(b),g={insert:"head",singleton:!1};f()(u(),g);u().locals;var v=n(4893);const x=(0,v.Z)(m,d,[],!1,null,null,null).exports;var k=n(8903);const y=Vue.extend({components:{CompactRankList:i.Z,RankList:s.Z,VideoSlides:x,SubHeader:k.Z,VButton:r.VButton,VIcon:r.VIcon},mixins:[(0,c.QP)()],props:{region:{type:Object,required:!0}},data(){const e=this.region.id;return console.log(this.region.category),{activeVideosApi:`https://api.bilibili.com/x/web-interface/dynamic/region?ps=10&rid=${e}`,newVideosApi:`https://api.bilibili.com/x/web-interface/newlist?ps=10&rid=${e}`,rankingsApi:`https://api.bilibili.com/x/web-interface/ranking/region?rid=${e}&day=3&original=0`,rankingsLink:`https://www.bilibili.com/v/popular/rank/${this.region.category.route}`}},methods:{parseJson(e){const t=(lodash.get(e,"data",[])||[]).map((e=>({id:e.aid,title:e.title,playCount:e.play,points:e.pts,upHref:`https://space.bilibili.com/${e.mid}`,upName:e.author,dynamic:e.description,coverUrl:e.pic,videoHref:`https://www.bilibili.com/video/${e.bvid}`}))).slice(0,10);return(0,a.applyContentFilter)(t)}}});var w=n(1880),A=n.n(w),V={insert:"head",singleton:!1};f()(A(),V);A().locals;const C=(0,v.Z)(y,o,[],!1,null,null,null).exports},80:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-rank-list",class:{loading:e.loading,loaded:e.loaded}},[e.loaded?e._e():t("div",{staticClass:"fresh-home-rank-list-loading-container"},[e.loading?t("VLoading"):e._e(),e._v(" "),!e.error&&0!==e.items.length||e.loading?e._e():t("div",{staticClass:"fresh-home-rank-list-empty"},[t("VEmpty"),e._v(" "),t("VButton",{staticClass:"fresh-home-rank-list-refresh-button",attrs:{round:""},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh"}}),e._v("\n 刷新\n ")],1)],1)],1),e._v(" "),e.loaded?[e.firstItem?t("div",{staticClass:"fresh-home-rank-list-first-item animation"},[t("div",{staticClass:"fresh-home-rank-list-rank-item"}),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-rank-item-title",attrs:{target:"_blank",href:e.firstItem.videoHref,title:e.firstItem.title}},[e._v("\n "+e._s(e.firstItem.title)+"\n ")]),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-cover",attrs:{target:"_blank",href:e.firstItem.videoHref}},[t("DpiImage",{attrs:{src:e.firstItem.coverUrl,size:{width:e.ui.firstCoverWidth,height:e.ui.firstCoverHeight}}}),e._v(" "),t("UpInfo",{attrs:{"up-face-url":e.firstItem.upFaceUrl,href:e.firstItem.upHref,"up-name":e.firstItem.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!1,4101577376)}),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.firstItem.points))+"\n ")],1)],1),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-laser",attrs:{"data-number":"1"}})]):e._e(),e._v(" "),e.secondItem?t("div",{staticClass:"fresh-home-rank-list-second-item animation"},[t("a",{staticClass:"fresh-home-rank-list-rank-item",attrs:{target:"_blank",href:e.secondItem.videoHref}},[t("div",{staticClass:"fresh-home-rank-list-rank-item-title",attrs:{title:e.secondItem.title}},[e._v("\n "+e._s(e.secondItem.title)+"\n ")]),e._v(" "),t("UpInfo",{attrs:{"up-face-url":e.secondItem.upFaceUrl,href:e.secondItem.upHref,"up-name":e.secondItem.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!1,4101577376)}),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.secondItem.points))+"\n "),t("VIcon",{attrs:{icon:"play",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.secondItem.playCount))+"\n ")],1)],1),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-cover",attrs:{target:"_blank",href:e.secondItem.videoHref}},[t("DpiImage",{attrs:{src:e.secondItem.coverUrl,size:{width:e.ui.secondCoverWidth,height:e.ui.secondCoverHeight}}})],1),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-laser",attrs:{"data-number":"2"}})]):e._e(),e._v(" "),e.thirdItem?t("div",{staticClass:"fresh-home-rank-list-third-item animation"},[t("a",{staticClass:"fresh-home-rank-list-rank-item",attrs:{target:"_blank",href:e.thirdItem.videoHref}},[t("div",{staticClass:"fresh-home-rank-list-rank-item-title",attrs:{title:e.thirdItem.title}},[e._v("\n "+e._s(e.thirdItem.title)+"\n ")]),e._v(" "),t("UpInfo",{attrs:{"up-face-url":e.thirdItem.upFaceUrl,href:e.thirdItem.upHref,"up-name":e.thirdItem.upName},scopedSlots:e._u([{key:"fallback-icon",fn:function(){return[t("VIcon",e._b({},"VIcon",e.upInfoProps,!1))]},proxy:!0}],null,!1,4101577376)}),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-stats"},[t("VIcon",{attrs:{icon:"mdi-fire",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.thirdItem.points))+"\n "),t("VIcon",{attrs:{icon:"play",size:16}}),e._v("\n "+e._s(e._f("formatCount")(e.thirdItem.playCount))+"\n ")],1)],1),e._v(" "),t("a",{staticClass:"fresh-home-rank-list-cover",attrs:{target:"_blank",href:e.thirdItem.videoHref}},[t("DpiImage",{attrs:{src:e.thirdItem.coverUrl,size:{width:e.ui.thirdCoverWidth,height:e.ui.thirdCoverHeight}}})],1),e._v(" "),t("div",{staticClass:"fresh-home-rank-list-laser",attrs:{"data-number":"3"}})]):e._e()]:e._e()],2)};o._withStripped=!0;var r=n(1352),a=n.n(r),i=n(4289),s=n(9648),d=n(5486),l=n(943);const h=Vue.extend({components:{DpiImage:s.DpiImage,UpInfo:a(),VIcon:s.VIcon,VLoading:s.VLoading,VEmpty:s.VEmpty,VButton:s.VButton},filters:{formatCount:i.formatCount},mixins:[(0,d.Ov)(),(0,d.kN)(l.b)],props:{parseJson:{type:Function,required:!0},bangumiMode:{type:Boolean,default:!1}},computed:{firstItem(){return this.items[0]},secondItem(){return this.items[1]},thirdItem(){return this.items[2]},upInfoProps(){return{size:18,icon:this.bangumiMode?"mdi-television-classic":"up-outline",style:{transform:this.bangumiMode?"translateY(-1px)":"none"}}},firstRow(){return this.items.slice(3,6)},secondRow(){return this.items.slice(6,10)}}});var c=n(8332),m=n.n(c),p=n(8682),f=n.n(p),b={insert:"head",singleton:!1};m()(f(),b);f().locals;const u=(0,n(4893).Z)(h,o,[],!1,null,null,null).exports},2738:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-feeds"},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("动态")]),e._v(" "),t("div",{staticClass:"fresh-home-header-center-area"},[t("div",{staticClass:"fresh-home-header-tabs"},[t("div",{staticClass:"default-tabs"},e._l(e.tabs,(function(n){return t("div",{key:n.name,staticClass:"default-tab",class:{selected:n===e.selectedTab},on:{click:function(t){return e.selectTab(n)}}},[t("div",{staticClass:"default-tab-name"},[e._v("\n "+e._s(n.displayName)+"\n ")])])})),0)])]),e._v(" "),t("div",{staticClass:"fresh-home-header-pagination"},[t("a",{attrs:{href:"https://www.bilibili.com/video/online.html",target:"_blank",title:"在线列表"}},[t("VButton",{attrs:{icon:""}},[t("VIcon",{attrs:{icon:"mdi-account-group-outline",size:19}})],1)],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"刷新"},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:18}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"上一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(-1)}}},[t("VIcon",{attrs:{icon:"left-arrow",size:20}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"下一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(1)}}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1),e._v(" "),t("a",{staticClass:"fresh-home-header-icon-button rotate",attrs:{href:"https://t.bilibili.com",target:"_blank"}},[t("VButton",{attrs:{round:""}},[t("VIcon",{attrs:{icon:"feeds",size:20}}),e._v("\n 全部动态\n ")],1)],1)],1)]),e._v(" "),t("div",{staticClass:"fresh-home-feeds-content"},[t("VideoList",{ref:"videoList",attrs:{videos:e.videos,loading:e.loading}})],1)])};o._withStripped=!0;var r=n(9799),a=n(9648),i=n(3720);const s=[{name:"videoFeeds",displayName:"视频",api:r.getVideoFeeds.bind(void 0,"video"),href:"https://t.bilibili.com/?tab=8"},{name:"bangumiFeeds",displayName:"番剧",api:r.getVideoFeeds.bind(void 0,"bangumi"),href:"https://t.bilibili.com/?tab=512"}],d=Vue.extend({components:{VButton:a.VButton,VIcon:a.VIcon,VideoList:i.Z},data:()=>({tabs:s,selectedTab:s[0],videos:[],loading:!0}),created(){this.reload()},methods:{selectTab(e){this.selectedTab!==e?(this.selectedTab=e,this.reload()):window.open(e.href,"_blank")},async reload(){this.loading=!0,this.videos=[],this.videos=await this.selectedTab.api().finally((()=>{this.loading=!1}))}}});var l=n(8332),h=n.n(l),c=n(3568),m=n.n(c),p={insert:"head",singleton:!1};h()(m(),p);m().locals;const f=(0,n(4893).Z)(d,o,[],!1,null,null,null).exports},2475:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"fresh-home-trending"},[t("div",{staticClass:"fresh-home-header"},[t("div",{staticClass:"fresh-home-header-title"},[e._v("\n "+e._s(e.title)+"\n ")]),e._v(" "),t("div",{staticClass:"fresh-home-header-pagination"},[t("VButton",{attrs:{icon:"",title:"刷新"},on:{click:e.reload}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:18}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"上一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(-1)}}},[t("VIcon",{attrs:{icon:"left-arrow",size:20}})],1),e._v(" "),t("VButton",{attrs:{icon:"",title:"下一页"},on:{click:function(t){return e.$refs.videoList.offsetPage(1)}}},[t("VIcon",{attrs:{icon:"right-arrow",size:20}})],1)],1)]),e._v(" "),t("div",{staticClass:"fresh-home-trending-content"},[t("VideoList",{ref:"videoList",attrs:{videos:e.videos,loading:e.loading}})],1)])};o._withStripped=!0;var r=n(9648),a=n(3720),i=n(4438),s=n(9799),d=n(2375),l=n(605),h=n(4289);const c=Vue.extend({components:{VButton:r.VButton,VIcon:r.VIcon,VideoList:a.Z},data:()=>({videos:[],loading:!0}),computed:{title:()=>i.O.personalized?"推荐":"热门"},created(){this.reload()},methods:{async reload(){this.loading=!0,this.videos=[],this.videos=await(async e=>{const t=Boolean((0,l.getUID)())&&e,n=t?d.getJsonWithCredentials:d.getJson,{code:o,message:r,data:a}=await n("https://api.bilibili.com/x/web-interface/index/top/feed/rcmd");if(0!==o)throw new Error(`获取${t?"推荐":"热门"}视频失败: ${r}`);const i=a.item.map((e=>({id:e.id,aid:e.id,bvid:e.bvid,coverUrl:e.pic.replace("http:","https:"),title:e.title,description:"",dynamic:"",duration:e.duration,durationText:(0,h.formatDuration)(e.duration),timestamp:1e3*e.pubdate,time:new Date(1e3*e.pubdate),upName:e.owner.name,upID:e.owner.mid,upFaceUrl:e.owner.face.replace("http:","https:"),like:(0,h.formatCount)(e.stat.like),playCount:(0,h.formatCount)(e.stat.view),danmakuCount:(0,h.formatCount)(e.stat.danmaku)})));return(0,s.applyContentFilter)(i)})(i.O.personalized).finally((()=>{this.loading=!1}))}}});var m=n(8332),p=n.n(m),f=n(4066),b=n.n(f),u={insert:"head",singleton:!1};p()(b(),u);b().locals;const g=(0,n(4893).Z)(c,o,[],!1,null,null,null).exports},4893:(e,t,n)=>{"use strict";function o(e,t,n,o,r,a,i,s){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=d):r&&(d=s?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),d)if(l.functional){l._injectStyles=d;var h=l.render;l.render=function(e,t){return d.call(t),h(e,t)}}else{var c=l.beforeCreate;l.beforeCreate=c?[].concat(c,d):[d]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},4422:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=4422,e.exports=t},2093:e=>{"use strict";e.exports="data:image/jpeg;base64,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"},5873:e=>{"use strict";e.exports="使用重新设计的清爽风格首页替换原本的首页.\n\n请注意:\n- 此功能与 `极简首页` 互斥, 请勿同时使用.\n- 此功能会禁用首页的[悬浮视频](https://github.com/the1812/Bilibili-Evolved/discussions/4404), 变为直接跳转到视频页面.\n\n选项说明:\n- 个性化推荐: 启用时展示推荐视频, 禁用时展示热门视频.\n- 启用横向滚动: 在可以横向滚动的列表中, 使鼠标滚轮可以做出横向滚动的效果, 请注意这会禁用卡片的边缘吸附效果.\n"},2375:e=>{"use strict";e.exports=coreApis.ajax},1952:e=>{"use strict";e.exports=coreApis.componentApis.define},1352:e=>{"use strict";e.exports=coreApis.componentApis.feeds.UpInfo},9799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},6831:e=>{"use strict";e.exports=coreApis.horizontalScroll},9153:e=>{"use strict";e.exports=coreApis.pluginApis.data},9986:e=>{"use strict";e.exports=coreApis.settings},9648:e=>{"use strict";e.exports=coreApis.ui},4289:e=>{"use strict";e.exports=coreApis.utils.formatters},4577:e=>{"use strict";e.exports=coreApis.utils.sort},605:e=>{"use strict";e.exports=coreApis.utils}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={id:e,exports:{}};return n[e](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>n[e]));return i.default=()=>n,r.d(a,i),a},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>s});var e=r(1952);const t=coreApis.lifeCycle;var n=r(9986),o=r(605);var i=r(6213);const s=(0,e.defineComponentMetadata)({name:"freshHome",displayName:"清爽首页",urlInclude:[/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/index\.html$/],tags:[componentsTags.style],entry:()=>{(0,n.addComponentListener)("freshHome.maxWidth",(e=>{document.documentElement.style.setProperty("--home-max-width-override",`${e}px`)}),!0),(0,t.contentLoaded)((async()=>{const e=await Promise.resolve().then(r.bind(r,10)),t=(0,o.mountVueComponent)(e);document.body.appendChild(t.$el)}))},options:i._,extraOptions:()=>Promise.resolve().then(r.bind(r,1935)),unload:()=>document.body.classList.add("home-redesign-off"),reload:()=>document.body.classList.remove("home-redesign-off"),instantStyles:[{name:"fresh-home-hide-original",style:()=>Promise.resolve().then(r.t.bind(r,2369,23))}],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(4422);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,5873,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/home-redesign/minimal.js b/bb-evolved/registry/dist/components/style/home-redesign/minimal.js index 3bb31d1150..77f98a0ca1 100644 --- a/bb-evolved/registry/dist/components/style/home-redesign/minimal.js +++ b/bb-evolved/registry/dist/components/style/home-redesign/minimal.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var i={};if(o)for(var r=0;r{"use strict";var o,i=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{var o=n(263);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},688:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>w});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("HomeRedesignBase",[t("div",{staticClass:"minimal-home"},[t("TabControl",{staticClass:"minimal-home-tabs",attrs:{"default-tab":e.defaultTab,tabs:e.tabs}})],1)])};o._withStripped=!0;var i=n(986),r=n(648),a=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"home-redesign-base"},[e._t("default")],2)};a._withStripped=!0;const s=(0,globalThis.Vue.defineComponent)({__name:"HomeRedesignBase",setup(e){const t=new URLSearchParams(location.search);if(t.has("bvid")){const e=new URLSearchParams([...t.entries()].filter((e=>{let[t]=e;return"bvid"!==t})));location.replace(`/video/${t.get("bvid")}${e.size>0?`?${e.toString()}`:""}`)}return{__sfc:!0,params:t}}});var d=n(332),l=n.n(d),c=n(530),m=n.n(c),u={insert:"head",singleton:!1};l()(m(),u);m().locals;var p=n(893);const h=(0,p.Z)(s,a,[],!1,null,null,null).exports;var f=n(314),g=n(665);const v=[{name:g.F.Feeds,displayName:"动态",component:()=>Promise.resolve().then(n.bind(n,325)).then((e=>e.default)),activeLink:"https://t.bilibili.com/?tab=video"},{name:g.F.Trending,displayName:f.t.personalized?"推荐":"热门",component:()=>Promise.resolve().then(n.bind(n,676)).then((e=>e.default)),activeLink:"https://www.bilibili.com/v/popular/all"}],b=Vue.extend({components:{HomeRedesignBase:h,TabControl:r.TabControl},data:()=>({tabs:v,defaultTab:f.t.defaultTab}),mounted(){const e="--minimal-home-column-count-override";(0,i.addComponentListener)("minimalHome.columnCount",(t=>{t>0?this.$el.style.setProperty(e,t.toString()):this.$el.style.removeProperty(e)}),!0)}});var y=n(154),x=n.n(y),_={insert:"head",singleton:!1};l()(x(),_);x().locals;const w=(0,p.Z)(b,o,[],!1,null,null,null).exports},852:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"minimal-home-operations"},[t("VButton",{staticClass:"minimal-home-operations-refresh",attrs:{round:"",icon:"",title:"刷新"},on:{click:function(t){e.backToTop(),e.$emit("refresh")}}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:e.size}})],1),e._v(" "),t("VButton",{staticClass:"minimal-home-operations-top",attrs:{round:"",icon:"",title:"返回顶部"},on:{click:e.backToTop}},[t("VIcon",{attrs:{icon:"mdi-arrow-up",size:e.size}})],1)],1)};o._withStripped=!0;var i=n(648);const r=Vue.extend({components:{VButton:i.VButton,VIcon:i.VIcon},data:()=>({size:28}),methods:{backToTop(){window.scrollTo(0,0)}}});var a=n(332),s=n.n(a),d=n(677),l=n.n(d),c={insert:"head",singleton:!1};s()(l(),c);l().locals;const m=(0,n(893).Z)(r,o,[],!1,null,null,null).exports},325:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"minimal-home-tab",class:{loading:e.loading,loaded:e.loaded,error:e.error}},[t("div",{staticClass:"minimal-home-tab-cards"},e._l(e.cards,(function(e){return t("VideoCard",{key:e.id,attrs:{data:e}})})),1),e._v(" "),e.loading||0!==e.cards.length?e._e():t("VEmpty"),e._v(" "),e.error?e._e():t("ScrollTrigger",{ref:"scrollTrigger",attrs:{"detect-viewport":""},on:{trigger:e.loadCards}}),e._v(" "),e.cards.length>0?t("MinimalHomeOperations",{on:{refresh:e.refresh}}):e._e()],1)};o._withStripped=!0;var i=n(799),r=n(783),a=n.n(r),s=n(414),d=n(577),l=n(648),c=n(852);const m=Vue.extend({components:{ScrollTrigger:l.ScrollTrigger,VEmpty:l.VEmpty,VideoCard:a(),MinimalHomeOperations:c.Z},data:()=>({loading:!0,cards:[],error:!1}),computed:{loaded(){return!this.loading&&!this.error},lastID(){if(!this.cards.length)return null;return[...this.cards].sort((0,d.ascendingStringSort)((e=>e.id)))[0].id}},methods:{async loadCards(){try{this.error=!1,this.loading=!0,this.$refs.scrollTrigger.setLoadState("loading"),this.cards=lodash.uniqBy([...this.cards,...await(0,i.getVideoFeeds)("video",this.lastID)],(e=>e.id))}catch(e){(0,s.logError)(e),this.error=!0,this.$refs.scrollTrigger.setLoadState("error")}finally{this.loading=!1,this.loaded&&this.$refs.scrollTrigger.setLoadState("loaded")}},async refresh(){this.cards=[],this.$refs.scrollTrigger.resetIsFirstLoad()}}});const u=(0,n(893).Z)(m,o,[],!1,null,null,null).exports},676:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"minimal-home-tab",class:{loading:e.loading,loaded:e.loaded,error:e.error}},[t("div",{staticClass:"minimal-home-tab-cards"},e._l(e.cards,(function(e){return t("VideoCard",{key:e.id,attrs:{data:e}})})),1),e._v(" "),e.loading||0!==e.cards.length?e._e():t("VEmpty"),e._v(" "),e.loading&&0===e.cards.length?t("VLoading"):e._e(),e._v(" "),e.cards.length>0?t("MinimalHomeOperations",{on:{refresh:e.loadCards}}):e._e()],1)};o._withStripped=!0;var i=n(783),r=n.n(i),a=n(414),s=n(577),d=n(648),l=n(799);const c=coreApis.ajax;var m=n(605);const u=coreApis.utils.formatters;var p=n(852),h=n(314);const f=Vue.extend({components:{VLoading:d.VLoading,VEmpty:d.VEmpty,VideoCard:r(),MinimalHomeOperations:p.Z},data:()=>({loading:!0,cards:[],error:!1}),computed:{loaded(){return!this.loading&&!this.error},lastID(){if(!this.cards.length)return null;return[...this.cards].sort((0,s.ascendingStringSort)((e=>e.id)))[0].id}},async mounted(){this.loadCards()},methods:{async loadCards(){try{this.cards=[],this.error=!1,this.loading=!0,this.cards=await(async e=>{const t=Boolean((0,m.getUID)())&&e,n=t?c.getJsonWithCredentials:c.getJson,{code:o,message:i,data:r}=await n("https://api.bilibili.com/x/web-interface/index/top/feed/rcmd");if(0!==o)throw new Error(`获取${t?"推荐":"热门"}视频失败: ${i}`);const a=r.item.map((e=>({id:e.id,aid:e.id,bvid:e.bvid,coverUrl:e.pic.replace("http:","https:"),title:e.title,description:"",dynamic:"",duration:e.duration,durationText:(0,u.formatDuration)(e.duration),timestamp:1e3*e.pubdate,time:new Date(1e3*e.pubdate),upName:e.owner.name,upID:e.owner.mid,upFaceUrl:e.owner.face.replace("http:","https:"),like:(0,u.formatCount)(e.stat.like),playCount:(0,u.formatCount)(e.stat.view),danmakuCount:(0,u.formatCount)(e.stat.danmaku)})));return(0,l.applyContentFilter)(a)})(h.t.personalized)}catch(e){(0,a.logError)(e),this.error=!0}finally{this.loading=!1}}}});const g=(0,n(893).Z)(f,o,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function o(e,t,n,o,i,r,a,s){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),a?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=d):i&&(d=s?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),d)if(l.functional){l._injectStyles=d;var c=l.render;l.render=function(e,t){return d.call(t),c(e,t)}}else{var m=l.beforeCreate;l.beforeCreate=m?[].concat(m,d):[d]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},96:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=96,e.exports=t},431:e=>{"use strict";e.exports="使用重新设计的极简首页替换原本的首页.\n\n请注意:\n- 此功能与 `清爽首页` 互斥, 请勿同时使用.\n- 此功能会禁用首页的[悬浮视频](https://github.com/the1812/Bilibili-Evolved/discussions/4404), 变为直接跳转到视频页面.\n\n选项说明:\n- 个性化推荐: 启用时展示推荐视频, 禁用时展示热门视频\n- 自定义列数: 为 `0` 时根据视图宽度推断, 大于 `0` 的值将作为固定的列数"},783:e=>{"use strict";e.exports=coreApis.componentApis.feeds.VideoCard},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},986:e=>{"use strict";e.exports=coreApis.settings},648:e=>{"use strict";e.exports=coreApis.ui},414:e=>{"use strict";e.exports=coreApis.utils.log},577:e=>{"use strict";e.exports=coreApis.utils.sort},605:e=>{"use strict";e.exports=coreApis.utils}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={id:e,exports:{}};return n[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,i.d(r,a),r},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>d});const e=coreApis.componentApis.define,t=coreApis.lifeCycle;var n=i(986),o=i(605);var a=i(665);const s=(0,e.defineOptionsMetadata)({personalized:{displayName:"个性化推荐",defaultValue:!1},columnCount:{displayName:"自定义列数",defaultValue:0,validator:(0,o.getNumberValidator)(0,10)},defaultTab:{displayName:"默认标签页",defaultValue:a.F.Feeds,dropdownEnum:a.F}}),d=(0,e.defineComponentMetadata)({name:"minimalHome",displayName:"极简首页",urlInclude:[/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/index\.html$/],tags:[componentsTags.style],entry:()=>{(0,n.addComponentListener)("minimalHome.columnCount",(e=>{document.documentElement.style.setProperty("--home-column-count-override",e.toString())}),!0),(0,t.contentLoaded)((async()=>{const e=await Promise.resolve().then(i.bind(i,688)),t=(0,o.mountVueComponent)(e);document.body.appendChild(t.$el)}))},options:s,unload:()=>document.body.classList.add("home-redesign-off"),reload:()=>document.body.classList.remove("home-redesign-off"),instantStyles:[{name:"minimal-home-hide-original",style:()=>Promise.resolve().then(i.t.bind(i,482,23))}],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=i(96);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,431,17)).then((e=>e.default))}})()})})(),r=r.component})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{var o=n(263);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},688:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>w});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("HomeRedesignBase",[t("div",{staticClass:"minimal-home"},[t("TabControl",{staticClass:"minimal-home-tabs",attrs:{"default-tab":e.defaultTab,tabs:e.tabs}})],1)])};o._withStripped=!0;var i=n(986),r=n(648),a=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"home-redesign-base"},[e._t("default")],2)};a._withStripped=!0;const s=(0,globalThis.Vue.defineComponent)({__name:"HomeRedesignBase",setup(e){const t=new URLSearchParams(location.search);if(t.has("bvid")){const e=new URLSearchParams([...t.entries()].filter((e=>{let[t]=e;return"bvid"!==t})));location.replace(`/video/${t.get("bvid")}${e.size>0?`?${e.toString()}`:""}`)}return{__sfc:!0,params:t}}});var d=n(332),l=n.n(d),c=n(530),m=n.n(c),u={insert:"head",singleton:!1};l()(m(),u);m().locals;var p=n(893);const h=(0,p.Z)(s,a,[],!1,null,null,null).exports;var f=n(314),g=n(665);const v=[{name:g.F.Feeds,displayName:"动态",component:()=>Promise.resolve().then(n.bind(n,325)).then((e=>e.default)),activeLink:"https://t.bilibili.com/?tab=video"},{name:g.F.Trending,displayName:f.t.personalized?"推荐":"热门",component:()=>Promise.resolve().then(n.bind(n,676)).then((e=>e.default)),activeLink:"https://www.bilibili.com/v/popular/all"}],b=Vue.extend({components:{HomeRedesignBase:h,TabControl:r.TabControl},data:()=>({tabs:v,defaultTab:f.t.defaultTab}),mounted(){const e="--minimal-home-column-count-override";(0,i.addComponentListener)("minimalHome.columnCount",(t=>{t>0?this.$el.style.setProperty(e,t.toString()):this.$el.style.removeProperty(e)}),!0)}});var y=n(154),x=n.n(y),_={insert:"head",singleton:!1};l()(x(),_);x().locals;const w=(0,p.Z)(b,o,[],!1,null,null,null).exports},852:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"minimal-home-operations"},[t("VButton",{staticClass:"minimal-home-operations-refresh",attrs:{round:"",icon:"",title:"刷新"},on:{click:function(t){e.backToTop(),e.$emit("refresh")}}},[t("VIcon",{attrs:{icon:"mdi-refresh",size:e.size}})],1),e._v(" "),t("VButton",{staticClass:"minimal-home-operations-top",attrs:{round:"",icon:"",title:"返回顶部"},on:{click:e.backToTop}},[t("VIcon",{attrs:{icon:"mdi-arrow-up",size:e.size}})],1)],1)};o._withStripped=!0;var i=n(648);const r=Vue.extend({components:{VButton:i.VButton,VIcon:i.VIcon},data:()=>({size:28}),methods:{backToTop(){window.scrollTo(0,0)}}});var a=n(332),s=n.n(a),d=n(677),l=n.n(d),c={insert:"head",singleton:!1};s()(l(),c);l().locals;const m=(0,n(893).Z)(r,o,[],!1,null,null,null).exports},325:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"minimal-home-tab",class:{loading:e.loading,loaded:e.loaded,error:e.error}},[t("div",{staticClass:"minimal-home-tab-cards"},e._l(e.cards,(function(e){return t("VideoCard",{key:e.id,attrs:{data:e}})})),1),e._v(" "),e.loading||0!==e.cards.length?e._e():t("VEmpty"),e._v(" "),e.error?e._e():t("ScrollTrigger",{ref:"scrollTrigger",attrs:{"detect-viewport":""},on:{trigger:e.loadCards}}),e._v(" "),e.cards.length>0?t("MinimalHomeOperations",{on:{refresh:e.refresh}}):e._e()],1)};o._withStripped=!0;var i=n(799),r=n(783),a=n.n(r),s=n(414),d=n(577),l=n(648),c=n(852);const m=Vue.extend({components:{ScrollTrigger:l.ScrollTrigger,VEmpty:l.VEmpty,VideoCard:a(),MinimalHomeOperations:c.Z},data:()=>({loading:!0,cards:[],error:!1}),computed:{loaded(){return!this.loading&&!this.error},lastID(){if(!this.cards.length)return null;return[...this.cards].sort((0,d.ascendingStringSort)((e=>e.id)))[0].id}},methods:{async loadCards(){try{this.error=!1,this.loading=!0,this.$refs.scrollTrigger.setLoadState("loading"),this.cards=lodash.uniqBy([...this.cards,...await(0,i.getVideoFeeds)("video",this.lastID)],(e=>e.id))}catch(e){(0,s.logError)(e),this.error=!0,this.$refs.scrollTrigger.setLoadState("error")}finally{this.loading=!1,this.loaded&&this.$refs.scrollTrigger.setLoadState("loaded")}},async refresh(){this.cards=[],this.$refs.scrollTrigger.resetIsFirstLoad()}}});const u=(0,n(893).Z)(m,o,[],!1,null,null,null).exports},676:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>g});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"minimal-home-tab",class:{loading:e.loading,loaded:e.loaded,error:e.error}},[t("div",{staticClass:"minimal-home-tab-cards"},e._l(e.cards,(function(e){return t("VideoCard",{key:e.id,attrs:{data:e}})})),1),e._v(" "),e.loading||0!==e.cards.length?e._e():t("VEmpty"),e._v(" "),e.loading&&0===e.cards.length?t("VLoading"):e._e(),e._v(" "),e.cards.length>0?t("MinimalHomeOperations",{on:{refresh:e.loadCards}}):e._e()],1)};o._withStripped=!0;var i=n(783),r=n.n(i),a=n(414),s=n(577),d=n(648),l=n(799);const c=coreApis.ajax;var m=n(605);const u=coreApis.utils.formatters;var p=n(852),h=n(314);const f=Vue.extend({components:{VLoading:d.VLoading,VEmpty:d.VEmpty,VideoCard:r(),MinimalHomeOperations:p.Z},data:()=>({loading:!0,cards:[],error:!1}),computed:{loaded(){return!this.loading&&!this.error},lastID(){if(!this.cards.length)return null;return[...this.cards].sort((0,s.ascendingStringSort)((e=>e.id)))[0].id}},async mounted(){this.loadCards()},methods:{async loadCards(){try{this.cards=[],this.error=!1,this.loading=!0,this.cards=await(async e=>{const t=Boolean((0,m.getUID)())&&e,n=t?c.getJsonWithCredentials:c.getJson,{code:o,message:i,data:r}=await n("https://api.bilibili.com/x/web-interface/index/top/feed/rcmd");if(0!==o)throw new Error(`获取${t?"推荐":"热门"}视频失败: ${i}`);const a=r.item.map((e=>({id:e.id,aid:e.id,bvid:e.bvid,coverUrl:e.pic.replace("http:","https:"),title:e.title,description:"",dynamic:"",duration:e.duration,durationText:(0,u.formatDuration)(e.duration),timestamp:1e3*e.pubdate,time:new Date(1e3*e.pubdate),upName:e.owner.name,upID:e.owner.mid,upFaceUrl:e.owner.face.replace("http:","https:"),like:(0,u.formatCount)(e.stat.like),playCount:(0,u.formatCount)(e.stat.view),danmakuCount:(0,u.formatCount)(e.stat.danmaku)})));return(0,l.applyContentFilter)(a)})(h.t.personalized)}catch(e){(0,a.logError)(e),this.error=!0}finally{this.loading=!1}}}});const g=(0,n(893).Z)(f,o,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function o(e,t,n,o,i,r,a,s){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),a?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=d):i&&(d=s?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),d)if(l.functional){l._injectStyles=d;var c=l.render;l.render=function(e,t){return d.call(t),c(e,t)}}else{var m=l.beforeCreate;l.beforeCreate=m?[].concat(m,d):[d]}return{exports:e,options:l}}n.d(t,{Z:()=>o})},96:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=96,e.exports=t},431:e=>{"use strict";e.exports="使用重新设计的极简首页替换原本的首页.\n\n请注意:\n- 此功能与 `清爽首页` 互斥, 请勿同时使用.\n- 此功能会禁用首页的[悬浮视频](https://github.com/the1812/Bilibili-Evolved/discussions/4404), 变为直接跳转到视频页面.\n\n选项说明:\n- 个性化推荐: 启用时展示推荐视频, 禁用时展示热门视频\n- 自定义列数: 为 `0` 时根据视图宽度推断, 大于 `0` 的值将作为固定的列数"},783:e=>{"use strict";e.exports=coreApis.componentApis.feeds.VideoCard},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},986:e=>{"use strict";e.exports=coreApis.settings},648:e=>{"use strict";e.exports=coreApis.ui},414:e=>{"use strict";e.exports=coreApis.utils.log},577:e=>{"use strict";e.exports=coreApis.utils.sort},605:e=>{"use strict";e.exports=coreApis.utils}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={id:e,exports:{}};return n[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,i.d(r,a),r},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>d});const e=coreApis.componentApis.define,t=coreApis.lifeCycle;var n=i(986),o=i(605);var a=i(665);const s=(0,e.defineOptionsMetadata)({personalized:{displayName:"个性化推荐",defaultValue:!1},columnCount:{displayName:"自定义列数",defaultValue:0,validator:(0,o.getNumberValidator)(0,10)},defaultTab:{displayName:"默认标签页",defaultValue:a.F.Feeds,dropdownEnum:a.F}}),d=(0,e.defineComponentMetadata)({name:"minimalHome",displayName:"极简首页",urlInclude:[/^https:\/\/www\.bilibili\.com\/$/,/^https:\/\/www\.bilibili\.com\/index\.html$/],tags:[componentsTags.style],entry:()=>{(0,n.addComponentListener)("minimalHome.columnCount",(e=>{document.documentElement.style.setProperty("--home-column-count-override",e.toString())}),!0),(0,t.contentLoaded)((async()=>{const e=await Promise.resolve().then(i.bind(i,688)),t=(0,o.mountVueComponent)(e);document.body.appendChild(t.$el)}))},options:s,unload:()=>document.body.classList.add("home-redesign-off"),reload:()=>document.body.classList.remove("home-redesign-off"),instantStyles:[{name:"minimal-home-hide-original",style:()=>Promise.resolve().then(i.t.bind(i,482,23))}],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=i(96);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,431,17)).then((e=>e.default))}})()})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/player-on-top-new.js b/bb-evolved/registry/dist/components/style/player-on-top-new.js index eb717d01f4..89c9afe1d8 100644 --- a/bb-evolved/registry/dist/components/style/player-on-top-new.js +++ b/bb-evolved/registry/dist/components/style/player-on-top-new.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/player-on-top-new"]=t():e["style/player-on-top-new"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>s});const n=coreApis.componentApis.define,o=coreApis.settings,i=coreApis.utils,r=coreApis.utils.urls;function a(){const e=window.innerHeight,t=Math.max(document.body&&document.body.clientWidth||window.innerWidth,1100),n=innerWidth>1680?411:350,o=parseInt(String(16*(e-(window.innerWidth>1690?318:308))/9)),i=t-112-n,r=i1680?56:46)}px`}async function p(e){let{settings:{options:t},metadata:n}=e;await(0,i.playerReady)();const r=document.querySelector("#viewbox_report"),p=document.querySelector("#playerWrap");!function(e,t){const n=e.parentElement;n&&(n.removeChild(e),n.insertBefore(e,t.nextSibling))}(r,p),p.style.marginTop=`${t.marginTop}px`,(0,o.addComponentListener)(`${n.name}.marginTop`,(e=>{p.style.marginTop=`${e}px`})),function(){const e=document.querySelector(".up-panel-container"),t=document.querySelector("#danmukuBox");let n="normal";window.addEventListener("playerModeChange",(o=>{const{mode:i}=o.detail;n=i,"wide"===i?(t.style.marginTop="0px",e.style.marginTop=a()):e.style.marginTop="0px"})),window.addEventListener("resize",(()=>{"wide"===n&&(e.style.marginTop=a())}))}()}const s=(0,n.defineComponentMetadata)({name:"playerOnTopNew",author:[{name:"RieN7",link:"https://github.com/rien7"},{name:"ZiuChen",link:"https://github.com/ZiuChen"},{name:"LockRim",link:"https://github.com/LockRim"}],tags:[componentsTags.style,componentsTags.video],options:{marginTop:{displayName:"顶部留白 (px)",defaultValue:20,validator:(0,i.getNumberValidator)(0,1/0)}},urlInclude:r.videoUrls,displayName:"播放器置顶(新)",description:"原来的播放器置顶插件,现在已经不可用了,这是一个新的版本,可以在视频页面中将播放器放在页面最上方.",entry:p,reload:()=>p({settings:(0,o.getComponentSettings)("playerOnTopNew"),metadata:s}),commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return t=t.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/player-on-top-new"]=t():e["style/player-on-top-new"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>s});const n=coreApis.componentApis.define,o=coreApis.settings,i=coreApis.utils,r=coreApis.utils.urls;function a(){const e=window.innerHeight,t=Math.max(document.body&&document.body.clientWidth||window.innerWidth,1100),n=innerWidth>1680?411:350,o=parseInt(String(16*(e-(window.innerWidth>1690?318:308))/9)),i=t-112-n,r=i1680?56:46)}px`}async function p(e){let{settings:{options:t},metadata:n}=e;await(0,i.playerReady)();const r=document.querySelector("#viewbox_report"),p=document.querySelector("#playerWrap");!function(e,t){const n=e.parentElement;n&&(n.removeChild(e),n.insertBefore(e,t.nextSibling))}(r,p),p.style.marginTop=`${t.marginTop}px`,(0,o.addComponentListener)(`${n.name}.marginTop`,(e=>{p.style.marginTop=`${e}px`})),function(){const e=document.querySelector(".up-panel-container"),t=document.querySelector("#danmukuBox");let n="normal";window.addEventListener("playerModeChange",(o=>{const{mode:i}=o.detail;n=i,"wide"===i?(t.style.marginTop="0px",e.style.marginTop=a()):e.style.marginTop="0px"})),window.addEventListener("resize",(()=>{"wide"===n&&(e.style.marginTop=a())}))}()}const s=(0,n.defineComponentMetadata)({name:"playerOnTopNew",author:[{name:"RieN7",link:"https://github.com/rien7"},{name:"ZiuChen",link:"https://github.com/ZiuChen"},{name:"LockRim",link:"https://github.com/LockRim"}],tags:[componentsTags.style,componentsTags.video],options:{marginTop:{displayName:"顶部留白 (px)",defaultValue:20,validator:(0,i.getNumberValidator)(0,1/0)}},urlInclude:r.videoUrls,displayName:"播放器置顶(新)",description:"原来的播放器置顶插件,现在已经不可用了,这是一个新的版本,可以在视频页面中将播放器放在页面最上方.",entry:p,reload:()=>p({settings:(0,o.getComponentSettings)("playerOnTopNew"),metadata:s}),commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/player-on-top.js b/bb-evolved/registry/dist/components/style/player-on-top.js index 0e6812a5d0..81ac266298 100644 --- a/bb-evolved/registry/dist/components/style/player-on-top.js +++ b/bb-evolved/registry/dist/components/style/player-on-top.js @@ -6,4 +6,4 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(o)for(var a=0;a{var o=n(208);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={id:e,exports:{}};return n[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var p=2&o&&n;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>i[e]=()=>n[e]));return i.default=()=>n,r.d(a,i),a},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"playerOnTop",displayName:"播放器置顶",description:{"zh-CN":"在视频页面中将播放器放在页面最上方."},instantStyles:[{name:"playerOnTop",style:()=>Promise.resolve().then(r.t.bind(r,801,23))}],tags:[componentsTags.style,componentsTags.video],entry:none,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +var i=this[a][0];null!=i&&(r[i]=!0)}for(var p=0;p{var o=n(208);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={id:e,exports:{}};return n[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var p=2&o&&n;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>i[e]=()=>n[e]));return i.default=()=>n,r.d(a,i),a},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"playerOnTop",displayName:"播放器置顶",description:{"zh-CN":"在视频页面中将播放器放在页面最上方."},instantStyles:[{name:"playerOnTop",style:()=>Promise.resolve().then(r.t.bind(r,801,23))}],tags:[componentsTags.style,componentsTags.video],entry:none,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/player-shadow.js b/bb-evolved/registry/dist/components/style/player-shadow.js index 5f330ade02..81d62ac99a 100644 --- a/bb-evolved/registry/dist/components/style/player-shadow.js +++ b/bb-evolved/registry/dist/components/style/player-shadow.js @@ -6,4 +6,4 @@ t.i=function(e,o,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(r)for(var i=0;i{var r=o(223);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var p=2&r&&o;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"playerShadow",displayName:"播放器投影",entry:none,instantStyles:[{name:"playerShadow",style:()=>Promise.resolve().then(n.t.bind(n,828,23))}],tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"为播放器添加主题色投影."},urlInclude:t.allVideoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(n[a]=!0)}for(var p=0;p{var r=o(223);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var p=2&r&&o;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"playerShadow",displayName:"播放器投影",entry:none,instantStyles:[{name:"playerShadow",style:()=>Promise.resolve().then(n.t.bind(n,828,23))}],tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"为播放器添加主题色投影."},urlInclude:t.allVideoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/scrollbar.js b/bb-evolved/registry/dist/components/style/scrollbar.js index 40c2e776b5..76a4bd500c 100644 --- a/bb-evolved/registry/dist/components/style/scrollbar.js +++ b/bb-evolved/registry/dist/components/style/scrollbar.js @@ -6,4 +6,4 @@ e.i=function(t,r,n){"string"==typeof t&&( // eslint-disable-next-line no-param-reassign t=[[null,t,""]]);var o={};if(n)for(var a=0;a{var n=r(909);n&&n.__esModule&&(n=n.default),t.exports="string"==typeof n?n:n.toString()}},n={};function o(t){var e=n[t];if(void 0!==e)return e.exports;var a=n[t]={id:t,exports:{}};return r[t](a,a.exports,o),a.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,o.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var a=Object.create(null);o.r(a);var i={};t=t||[null,e({}),e([]),e(e)];for(var c=2&n&&r;"object"==typeof c&&!~t.indexOf(c);c=e(c))Object.getOwnPropertyNames(c).forEach((t=>i[t]=()=>r[t]));return i.default=()=>r,o.d(a,i),a},o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>t});const t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"elegantScrollbar",entry:none,displayName:"使用细滚动条",description:"使用浏览器的滚动条风格替代系统的滚动条, 不过 macOS 系统滚动条比浏览器做得好一些, 因此不建议 macOS 使用此功能.",tags:[componentsTags.style,componentsTags.general],instantStyles:[{name:"elegant-scrollbar",style:()=>Promise.resolve().then(o.t.bind(o,393,23))}],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +var i=this[a][0];null!=i&&(o[i]=!0)}for(var l=0;l{var n=r(909);n&&n.__esModule&&(n=n.default),t.exports="string"==typeof n?n:n.toString()}},n={};function o(t){var e=n[t];if(void 0!==e)return e.exports;var a=n[t]={id:t,exports:{}};return r[t](a,a.exports,o),a.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,o.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var a=Object.create(null);o.r(a);var i={};t=t||[null,e({}),e([]),e(e)];for(var l=2&n&&r;"object"==typeof l&&!~t.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach((t=>i[t]=()=>r[t]));return i.default=()=>r,o.d(a,i),a},o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>t});const t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"elegantScrollbar",entry:none,displayName:"使用细滚动条",description:"使用浏览器的滚动条风格替代系统的滚动条, 不过 macOS 系统滚动条比浏览器做得好一些, 因此不建议 macOS 使用此功能.",tags:[componentsTags.style,componentsTags.general],instantStyles:[{name:"elegant-scrollbar",style:()=>Promise.resolve().then(o.t.bind(o,393,23))}],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/sidebar-offset.js b/bb-evolved/registry/dist/components/style/sidebar-offset.js index 20f7496974..e0e2f87c42 100644 --- a/bb-evolved/registry/dist/components/style/sidebar-offset.js +++ b/bb-evolved/registry/dist/components/style/sidebar-offset.js @@ -6,4 +6,4 @@ t.i=function(e,o,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(r)for(var a=0;a{var r=o(254);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,exports:{}};return o[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(a,i),a},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.settings,o=coreApis.utils,r=(0,e.defineComponentMetadata)({name:"sidebarOffset",displayName:"侧栏垂直偏移",tags:[componentsTags.style],instantStyles:[{name:"sidebarOffset",style:()=>Promise.resolve().then(n.t.bind(n,913,23))}],description:{"zh-CN":"给脚本的侧栏设置垂直偏移量, 范围为 -35% ~ 40%"},entry:e=>{let{metadata:o}=e;(0,t.addComponentListener)(`${o.name}.offset`,(e=>{document.documentElement.style.setProperty("--be-sidebar-offset",`${e}%`)}),!0)},options:{offset:{displayName:"偏移量 (%)",defaultValue:0,validator:(0,o.getNumberValidator)(-35,40)}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +var i=this[a][0];null!=i&&(n[i]=!0)}for(var s=0;s{var r=o(254);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,exports:{}};return o[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(a,i),a},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.settings,o=coreApis.utils,r=(0,e.defineComponentMetadata)({name:"sidebarOffset",displayName:"侧栏垂直偏移",tags:[componentsTags.style],instantStyles:[{name:"sidebarOffset",style:()=>Promise.resolve().then(n.t.bind(n,913,23))}],description:{"zh-CN":"给脚本的侧栏设置垂直偏移量, 范围为 -35% ~ 40%"},entry:e=>{let{metadata:o}=e;(0,t.addComponentListener)(`${o.name}.offset`,(e=>{document.documentElement.style.setProperty("--be-sidebar-offset",`${e}%`)}),!0)},options:{offset:{displayName:"偏移量 (%)",defaultValue:0,validator:(0,o.getNumberValidator)(-35,40)}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/simplify/comments.js b/bb-evolved/registry/dist/components/style/simplify/comments.js index 96bfe86eb1..4c4c155fbd 100644 --- a/bb-evolved/registry/dist/components/style/simplify/comments.js +++ b/bb-evolved/registry/dist/components/style/simplify/comments.js @@ -6,4 +6,4 @@ t.i=function(n,e,i){"string"==typeof n&&( // eslint-disable-next-line no-param-reassign n=[[null,n,""]]);var o={};if(i)for(var m=0;m{var i=e(121);i&&i.__esModule&&(i=i.default),n.exports="string"==typeof i?i:i.toString()},108:(n,t,e)=>{var i=e(809);i&&i.__esModule&&(i=i.default),n.exports="string"==typeof i?i:i.toString()},807:n=>{function t(n){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=807,n.exports=t},849:n=>{"use strict";n.exports="去除或优化评论区内的元素, 可配置以下选项 (描述的是勾选时的效果):\n\n> 配置项仅对新版评论区有效\n\n- `用户等级`: 隐藏用户等级标识. (隐藏后, 可以通过鼠标停留在头像上, 在弹出的资料卡小窗中查看)\n- `装扮 & 时间`: 隐藏装扮图片, 并把发送时间移动到装扮的位置.\n- `头像框`: 隐藏头像框.\n- `回复换行`:\n - 楼中楼回复也另起一行显示, 和一级回复保持一致.\n - `热评`, `UP 主点赞` 等标记和点赞栏放在同一行.\n- `编辑框`: 将提示文本居上, 符合用户实际输入文字的位置, 并将发布按钮的字号略微调小.\n- `粉丝勋章`: 隐藏用户的粉丝勋章.\n- `小喇叭横幅`: 隐藏评论区顶部的小喇叭横幅\n"},986:n=>{"use strict";n.exports=coreApis.settings}},i={};function o(n){var t=i[n];if(void 0!==t)return t.exports;var m=i[n]={id:n,exports:{}};return e[n](m,m.exports,o),m.exports}t=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,o.t=function(e,i){if(1&i&&(e=this(e)),8&i)return e;if("object"==typeof e&&e){if(4&i&&e.__esModule)return e;if(16&i&&"function"==typeof e.then)return e}var m=Object.create(null);o.r(m);var a={};n=n||[null,t({}),t([]),t(t)];for(var r=2&i&&e;"object"==typeof r&&!~n.indexOf(r);r=t(r))Object.getOwnPropertyNames(r).forEach((n=>a[n]=()=>e[n]));return a.default=()=>e,o.d(m,a),m},o.d=(n,t)=>{for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),o.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var m={};return(()=>{"use strict";o.d(m,{component:()=>t});const n="simplifyComments",t=(0,coreApis.componentApis.switchOptions.wrapSwitchOptions)({name:"simplifyOptions",switchProps:{checkedIcon:"mdi-checkbox-marked-circle",notCheckedIcon:"mdi-checkbox-blank-circle-outline"},dimAt:!1,switches:{userLevel:{defaultValue:!0,displayName:"用户等级"},decorateAndTime:{defaultValue:!0,displayName:"装扮 & 时间"},userPendent:{defaultValue:!1,displayName:"头像框"},subReplyNewLine:{defaultValue:!0,displayName:"回复换行"},replyEditor:{defaultValue:!0,displayName:"编辑框"},fansMedal:{defaultValue:!1,displayName:"粉丝勋章"},eventBanner:{defaultValue:!0,displayName:"小喇叭横幅"}}})({name:n,displayName:"简化评论区",entry:async n=>{let{metadata:t}=n;const{addComponentListener:e}=await Promise.resolve().then(o.t.bind(o,986,23));e(t.name,(n=>{document.body.classList.toggle("simplify-comment",n)}),!0)},instantStyles:[{name:n,style:()=>Promise.resolve().then(o.t.bind(o,108,23))},{name:n,style:()=>Promise.resolve().then(o.t.bind(o,903,23))}],tags:[componentsTags.style],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const n=o(807);return{...Object.fromEntries(n.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],n(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,849,17)).then((n=>n.default))}})()})})(),m=m.component})())); \ No newline at end of file +var a=this[m][0];null!=a&&(o[a]=!0)}for(var r=0;r{var i=e(121);i&&i.__esModule&&(i=i.default),n.exports="string"==typeof i?i:i.toString()},108:(n,t,e)=>{var i=e(809);i&&i.__esModule&&(i=i.default),n.exports="string"==typeof i?i:i.toString()},807:n=>{function t(n){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=807,n.exports=t},849:n=>{"use strict";n.exports="去除或优化评论区内的元素, 可配置以下选项 (描述的是勾选时的效果):\n\n> 配置项仅对新版评论区有效\n\n- `用户等级`: 隐藏用户等级标识. (隐藏后, 可以通过鼠标停留在头像上, 在弹出的资料卡小窗中查看)\n- `装扮 & 时间`: 隐藏装扮图片, 并把发送时间移动到装扮的位置.\n- `头像框`: 隐藏头像框.\n- `回复换行`:\n - 楼中楼回复也另起一行显示, 和一级回复保持一致.\n - `热评`, `UP 主点赞` 等标记和点赞栏放在同一行.\n- `编辑框`: 将提示文本居上, 符合用户实际输入文字的位置, 并将发布按钮的字号略微调小.\n- `粉丝勋章`: 隐藏用户的粉丝勋章.\n- `小喇叭横幅`: 隐藏评论区顶部的小喇叭横幅\n"},986:n=>{"use strict";n.exports=coreApis.settings}},i={};function o(n){var t=i[n];if(void 0!==t)return t.exports;var m=i[n]={id:n,exports:{}};return e[n](m,m.exports,o),m.exports}t=Object.getPrototypeOf?n=>Object.getPrototypeOf(n):n=>n.__proto__,o.t=function(e,i){if(1&i&&(e=this(e)),8&i)return e;if("object"==typeof e&&e){if(4&i&&e.__esModule)return e;if(16&i&&"function"==typeof e.then)return e}var m=Object.create(null);o.r(m);var a={};n=n||[null,t({}),t([]),t(t)];for(var r=2&i&&e;"object"==typeof r&&!~n.indexOf(r);r=t(r))Object.getOwnPropertyNames(r).forEach((n=>a[n]=()=>e[n]));return a.default=()=>e,o.d(m,a),m},o.d=(n,t)=>{for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),o.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var m={};return(()=>{"use strict";o.d(m,{component:()=>t});const n="simplifyComments",t=(0,coreApis.componentApis.switchOptions.wrapSwitchOptions)({name:"simplifyOptions",switchProps:{checkedIcon:"mdi-checkbox-marked-circle",notCheckedIcon:"mdi-checkbox-blank-circle-outline"},dimAt:!1,switches:{userLevel:{defaultValue:!0,displayName:"用户等级"},decorateAndTime:{defaultValue:!0,displayName:"装扮 & 时间"},userPendent:{defaultValue:!1,displayName:"头像框"},subReplyNewLine:{defaultValue:!0,displayName:"回复换行"},replyEditor:{defaultValue:!0,displayName:"编辑框"},fansMedal:{defaultValue:!1,displayName:"粉丝勋章"},eventBanner:{defaultValue:!0,displayName:"小喇叭横幅"}}})({name:n,displayName:"简化评论区",entry:async n=>{let{metadata:t}=n;const{addComponentListener:e}=await Promise.resolve().then(o.t.bind(o,986,23));e(t.name,(n=>{document.body.classList.toggle("simplify-comment",n)}),!0)},instantStyles:[{name:n,style:()=>Promise.resolve().then(o.t.bind(o,108,23))},{name:n,style:()=>Promise.resolve().then(o.t.bind(o,903,23))}],tags:[componentsTags.style],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const n=o(807);return{...Object.fromEntries(n.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],n(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,849,17)).then((n=>n.default))}})()})})(),m=m.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/simplify/home.js b/bb-evolved/registry/dist/components/style/simplify/home.js index c3801c415c..a7fca47359 100644 --- a/bb-evolved/registry/dist/components/style/simplify/home.js +++ b/bb-evolved/registry/dist/components/style/simplify/home.js @@ -6,4 +6,4 @@ t.i=function(e,i,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var o={};if(n)for(var r=0;r{var n=i(938);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,exports:{}};return i[e](r,r.exports,o),r.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var r=Object.create(null);o.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&i;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,o.d(r,a),r},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>m});const e=coreApis.componentApis.switchOptions,t=coreApis.settings,i=coreApis.spinQuery,n=coreApis.style,a=coreApis.utils,s=coreApis.utils.log,l=coreApis.utils.urls,p=(0,e.defineSwitchMetadata)({name:"simplifyOptions",switches:{categories:{defaultValue:!1,displayName:"分区栏"},trends:{defaultValue:!1,displayName:"活动/热门视频"},online:{defaultValue:!1,displayName:"在线列表(旧)"},"ext-box":{defaultValue:!1,displayName:"电竞赛事(旧)"},special:{defaultValue:!1,displayName:"特别推荐(旧)"},contact:{defaultValue:!1,displayName:"联系方式"},elevator:{defaultValue:!1,displayName:"右侧分区导航(旧)"}}}),c=(0,s.useScopedConsole)("简化首页"),m=(0,e.wrapSwitchOptions)(p)({name:"simplifyHome",displayName:"简化首页",description:"隐藏原版首页不需要的元素 / 分区.",instantStyles:[{name:"simplifyHome",style:()=>Promise.resolve().then(o.t.bind(o,466,23))}],urlInclude:l.mainSiteUrls,tags:[componentsTags.style],entry:async e=>{let{metadata:o}=e;const r=(0,a.matchUrlPattern)("https://www.bilibili.com/");if(!r)return;c.log("isHome",r);const{options:s}=(0,t.getComponentSettings)(o.name),l="-1"===(0,a.getCookieValue)("i-wanna-go-back"),m=await(async()=>{if(!l){const e=await(0,i.sq)((()=>dqa(".proxy-box > div")),(e=>e.length>0||!r));return Object.fromEntries(e.map((e=>[e.id.replace(/^bili_/,""),{displayName:e.querySelector("header .name")?.textContent?.trim()??"未知分区",defaultValue:!1}])))}const e=["推广"],t=await(0,i.sq)((()=>dqa(".bili-grid .the-world")),(e=>e.length>3||!r));c.log(t);const n=t?.filter((t=>!e.includes(t.id))).map((e=>{const t=(e=>{let t=e;for(;t.parentElement;){if(t.classList.contains("bili-grid"))return t;t=t.parentElement}return null})(e),i=e.id;return t?(t.dataset.area=i,[i,{displayName:i,defaultValue:!1}]):null})).filter((e=>null!==e))??[];return Object.fromEntries(n)})(),d={};Object.entries(m).forEach((e=>{let[i,{displayName:n,defaultValue:r}]=e;const a={defaultValue:r,displayName:n},l=`switch-${i}`;void 0===s[l]&&(s[l]=r);const c=`switch-${i}`;(0,t.addComponentListener)(`${o.name}.${c}`,(e=>{document.body.classList.toggle(`${o.name}-${c}`,e)}),!0),p.switches[i]=a,d[i]=a})),s.simplifyOptions.switches=d;const y=Object.keys(m).map((e=>`\n body.simplifyHome-switch-${e} .bili-layout .bili-grid[data-area="${e}"],\n body.simplifyHome-switch-${e} .storey-box .proxy-box #bili_${e} {\n display: none !important;\n }\n `.trim())).join("\n");(0,n.addStyle)(y,"simplify-home-generated")},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +var a=this[r][0];null!=a&&(o[a]=!0)}for(var s=0;s{var n=i(938);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,exports:{}};return i[e](r,r.exports,o),r.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var r=Object.create(null);o.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&i;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,o.d(r,a),r},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>m});const e=coreApis.componentApis.switchOptions,t=coreApis.settings,i=coreApis.spinQuery,n=coreApis.style,a=coreApis.utils,s=coreApis.utils.log,l=coreApis.utils.urls,p=(0,e.defineSwitchMetadata)({name:"simplifyOptions",switches:{categories:{defaultValue:!1,displayName:"分区栏"},trends:{defaultValue:!1,displayName:"活动/热门视频"},online:{defaultValue:!1,displayName:"在线列表(旧)"},"ext-box":{defaultValue:!1,displayName:"电竞赛事(旧)"},special:{defaultValue:!1,displayName:"特别推荐(旧)"},contact:{defaultValue:!1,displayName:"联系方式"},elevator:{defaultValue:!1,displayName:"右侧分区导航(旧)"}}}),c=(0,s.useScopedConsole)("简化首页"),m=(0,e.wrapSwitchOptions)(p)({name:"simplifyHome",displayName:"简化首页",description:"隐藏原版首页不需要的元素 / 分区.",instantStyles:[{name:"simplifyHome",style:()=>Promise.resolve().then(o.t.bind(o,466,23))}],urlInclude:l.mainSiteUrls,tags:[componentsTags.style],entry:async e=>{let{metadata:o}=e;const r=(0,a.matchUrlPattern)("https://www.bilibili.com/");if(!r)return;c.log("isHome",r);const{options:s}=(0,t.getComponentSettings)(o.name),l="-1"===(0,a.getCookieValue)("i-wanna-go-back"),m=await(async()=>{if(!l){const e=await(0,i.sq)((()=>dqa(".proxy-box > div")),(e=>e.length>0||!r));return Object.fromEntries(e.map((e=>[e.id.replace(/^bili_/,""),{displayName:e.querySelector("header .name")?.textContent?.trim()??"未知分区",defaultValue:!1}])))}const e=["推广"],t=await(0,i.sq)((()=>dqa(".bili-grid .the-world")),(e=>e.length>3||!r));c.log(t);const n=t?.filter((t=>!e.includes(t.id))).map((e=>{const t=(e=>{let t=e;for(;t.parentElement;){if(t.classList.contains("bili-grid"))return t;t=t.parentElement}return null})(e),i=e.id;return t?(t.dataset.area=i,[i,{displayName:i,defaultValue:!1}]):null})).filter((e=>null!==e))??[];return Object.fromEntries(n)})(),d={};Object.entries(m).forEach((e=>{let[i,{displayName:n,defaultValue:r}]=e;const a={defaultValue:r,displayName:n},l=`switch-${i}`;void 0===s[l]&&(s[l]=r);const c=`switch-${i}`;(0,t.addComponentListener)(`${o.name}.${c}`,(e=>{document.body.classList.toggle(`${o.name}-${c}`,e)}),!0),p.switches[i]=a,d[i]=a})),s.simplifyOptions.switches=d;const y=Object.keys(m).map((e=>`\n body.simplifyHome-switch-${e} .bili-layout .bili-grid[data-area="${e}"],\n body.simplifyHome-switch-${e} .storey-box .proxy-box #bili_${e} {\n display: none !important;\n }\n `.trim())).join("\n");(0,n.addStyle)(y,"simplify-home-generated")},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/simplify/live.js b/bb-evolved/registry/dist/components/style/simplify/live.js index 3a054ea2b4..fe646ad704 100644 --- a/bb-evolved/registry/dist/components/style/simplify/live.js +++ b/bb-evolved/registry/dist/components/style/simplify/live.js @@ -6,4 +6,4 @@ t.i=function(i,e,n){"string"==typeof i&&( // eslint-disable-next-line no-param-reassign i=[[null,i,""]]);var o={};if(n)for(var a=0;a{var n=e(365);n&&n.__esModule&&(n=n.default),i.exports="string"==typeof n?n:n.toString()}},n={};function o(i){var t=n[i];if(void 0!==t)return t.exports;var a=n[i]={id:i,exports:{}};return e[i](a,a.exports,o),a.exports}t=Object.getPrototypeOf?i=>Object.getPrototypeOf(i):i=>i.__proto__,o.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var a=Object.create(null);o.r(a);var r={};i=i||[null,t({}),t([]),t(t)];for(var s=2&n&&e;"object"==typeof s&&!~i.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((i=>r[i]=()=>e[i]));return r.default=()=>e,o.d(a,r),a},o.d=(i,t)=>{for(var e in t)o.o(t,e)&&!o.o(i,e)&&Object.defineProperty(i,e,{enumerable:!0,get:t[e]})},o.o=(i,t)=>Object.prototype.hasOwnProperty.call(i,t),o.r=i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>n});const i=coreApis.componentApis.switchOptions,t=coreApis.componentApis.styledComponent,e=coreApis.utils.urls,n=(0,i.wrapSwitchOptions)({name:"simplifyOptions",switches:{vip:{defaultValue:!0,displayName:"老爷图标"},enterPrompt:{defaultValue:!0,displayName:"入场通知"},wealthMedal:{defaultValue:!0,displayName:"荣耀等级勋章"},fansMedal:{defaultValue:!0,displayName:"粉丝勋章"},title:{defaultValue:!0,displayName:"活动头衔"},guard:{defaultValue:!0,displayName:"舰长图标"},systemMessage:{defaultValue:!0,displayName:"全区广播"},welcomeMessage:{defaultValue:!0,displayName:"欢迎信息"},giftMessage:{defaultValue:!0,displayName:"礼物弹幕"},emoticons:{defaultValue:!0,displayName:"表情特效"},guardPurchase:{defaultValue:!0,displayName:"上舰提示"},giftPanel:{defaultValue:!0,displayName:"付费礼物"},headerPanel:{defaultValue:!1,displayName:"标题栏活动"},userEffect:{defaultValue:!0,displayName:"入场特效"},kanban:{defaultValue:!0,displayName:"看板娘"},eventsBanner:{defaultValue:!1,displayName:"活动横幅"},rankList:{defaultValue:!1,displayName:"排行榜"},popup:{defaultValue:!1,displayName:"抽奖提示"},pk:{defaultValue:!1,displayName:"PK浮窗"},topRank:{defaultValue:!1,displayName:"高能榜提示"},skin:{defaultValue:!1,displayName:"房间皮肤"}}})({name:"simplifyLiveroom",displayName:"简化直播间",entry:(0,t.styledComponentEntry)((()=>Promise.resolve().then(o.t.bind(o,736,23))),(async()=>{const{setupSkinSimplify:i}=await Promise.resolve().then(o.bind(o,328));i()})),description:{"zh-CN":"隐藏直播间中各种不需要的内容."},tags:[componentsTags.live,componentsTags.style],urlInclude:e.liveUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +var r=this[a][0];null!=r&&(o[r]=!0)}for(var s=0;s{var n=e(365);n&&n.__esModule&&(n=n.default),i.exports="string"==typeof n?n:n.toString()}},n={};function o(i){var t=n[i];if(void 0!==t)return t.exports;var a=n[i]={id:i,exports:{}};return e[i](a,a.exports,o),a.exports}t=Object.getPrototypeOf?i=>Object.getPrototypeOf(i):i=>i.__proto__,o.t=function(e,n){if(1&n&&(e=this(e)),8&n)return e;if("object"==typeof e&&e){if(4&n&&e.__esModule)return e;if(16&n&&"function"==typeof e.then)return e}var a=Object.create(null);o.r(a);var r={};i=i||[null,t({}),t([]),t(t)];for(var s=2&n&&e;"object"==typeof s&&!~i.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((i=>r[i]=()=>e[i]));return r.default=()=>e,o.d(a,r),a},o.d=(i,t)=>{for(var e in t)o.o(t,e)&&!o.o(i,e)&&Object.defineProperty(i,e,{enumerable:!0,get:t[e]})},o.o=(i,t)=>Object.prototype.hasOwnProperty.call(i,t),o.r=i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>n});const i=coreApis.componentApis.switchOptions,t=coreApis.componentApis.styledComponent,e=coreApis.utils.urls,n=(0,i.wrapSwitchOptions)({name:"simplifyOptions",switches:{vip:{defaultValue:!0,displayName:"老爷图标"},enterPrompt:{defaultValue:!0,displayName:"入场通知"},wealthMedal:{defaultValue:!0,displayName:"荣耀等级勋章"},fansMedal:{defaultValue:!0,displayName:"粉丝勋章"},title:{defaultValue:!0,displayName:"活动头衔"},guard:{defaultValue:!0,displayName:"舰长图标"},systemMessage:{defaultValue:!0,displayName:"全区广播"},welcomeMessage:{defaultValue:!0,displayName:"欢迎信息"},giftMessage:{defaultValue:!0,displayName:"礼物弹幕"},emoticons:{defaultValue:!0,displayName:"表情特效"},guardPurchase:{defaultValue:!0,displayName:"上舰提示"},giftPanel:{defaultValue:!0,displayName:"付费礼物"},headerPanel:{defaultValue:!1,displayName:"标题栏活动"},userEffect:{defaultValue:!0,displayName:"入场特效"},kanban:{defaultValue:!0,displayName:"看板娘"},eventsBanner:{defaultValue:!1,displayName:"活动横幅"},rankList:{defaultValue:!1,displayName:"排行榜"},popup:{defaultValue:!1,displayName:"抽奖提示"},pk:{defaultValue:!1,displayName:"PK浮窗"},topRank:{defaultValue:!1,displayName:"高能榜提示"},skin:{defaultValue:!1,displayName:"房间皮肤"}}})({name:"simplifyLiveroom",displayName:"简化直播间",entry:(0,t.styledComponentEntry)((()=>Promise.resolve().then(o.t.bind(o,736,23))),(async()=>{const{setupSkinSimplify:i}=await Promise.resolve().then(o.bind(o,328));i()})),description:{"zh-CN":"隐藏直播间中各种不需要的内容."},tags:[componentsTags.live,componentsTags.style],urlInclude:e.liveUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/special-danmaku.js b/bb-evolved/registry/dist/components/style/special-danmaku.js index b3837b5ee4..7e5e462cfb 100644 --- a/bb-evolved/registry/dist/components/style/special-danmaku.js +++ b/bb-evolved/registry/dist/components/style/special-danmaku.js @@ -6,4 +6,4 @@ e.i=function(t,n,a){"string"==typeof t&&( // eslint-disable-next-line no-param-reassign t=[[null,t,""]]);var i={};if(a)for(var o=0;o{var a=n(873);a&&a.__esModule&&(a=a.default),t.exports="string"==typeof a?a:a.toString()},177:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=177,t.exports=e},496:t=>{"use strict";t.exports="移除高赞弹幕或 UP 主弹幕的特殊样式, 弹幕内容不会移除.\n"}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var o=a[t]={id:t,exports:{}};return n[t](o,o.exports,i),o.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.t=function(n,a){if(1&a&&(n=this(n)),8&a)return n;if("object"==typeof n&&n){if(4&a&&n.__esModule)return n;if(16&a&&"function"==typeof n.then)return n}var o=Object.create(null);i.r(o);var d={};t=t||[null,e({}),e([]),e(e)];for(var l=2&a&&n;"object"==typeof l&&!~t.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach((t=>d[t]=()=>n[t]));return d.default=()=>n,i.d(o,d),o},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";i.d(o,{component:()=>p});const t=coreApis.componentApis.define,e=coreApis.utils.urls,n=coreApis.settings,a=coreApis.localStorage;var d=function(t){return t[t.Heavy=0]="Heavy",t[t.Stroke=1]="Stroke",t[t.Shadow=2]="Shadow",t}(d||{});const l={[d.Heavy]:"1px 0 1px #000000,0 1px 1px #000000,0 -1px 1px #000000,-1px 0 1px #000000",[d.Stroke]:"0px 0px 1px #000000,0 0 1px #000000,0 0 1px #000000",[d.Shadow]:"1px 1px 2px #000000,0 0 1px #000000"},r=(0,t.defineOptionsMetadata)({highlight:{displayName:"禁用高赞弹幕",defaultValue:!0},up:{displayName:"禁用UP主弹幕",defaultValue:!0},upSlogan:{displayName:"禁用带货弹幕",defaultValue:!0},vip:{displayName:"禁用大会员弹幕",defaultValue:!0}}),s="disableSpecialDanmaku",p=(0,t.defineComponentMetadata)({name:s,entry:t=>{let{metadata:e,settings:i}=t;Object.keys(i.options).forEach((t=>{(0,n.addComponentListener)(`${e.name}.${t}`,(e=>{document.body.classList.toggle(`disable-${t}-danmaku-style`,e)}),!0)})),(()=>{const t="bpx_player_profile",e=t=>{const e=lodash.get(t,"dmSetting.fontborder");document.documentElement.style.setProperty("--danmaku-text-shadow",l[e])};e(JSON.parse(localStorage.getItem(t))),(0,a.watchLocalStorage)(((n,a)=>{n===t&&e(JSON.parse(a))}))})()},displayName:"禁用特殊弹幕样式",tags:[componentsTags.style],instantStyles:[{name:s,style:()=>Promise.resolve().then(i.t.bind(i,771,23))}],urlInclude:e.playerUrls,options:r,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const t=i(177);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,496,17)).then((t=>t.default))}})()})})(),o=o.component})())); \ No newline at end of file +var d=this[o][0];null!=d&&(i[d]=!0)}for(var l=0;l{var a=n(873);a&&a.__esModule&&(a=a.default),t.exports="string"==typeof a?a:a.toString()},177:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=177,t.exports=e},496:t=>{"use strict";t.exports="移除高赞弹幕或 UP 主弹幕的特殊样式, 弹幕内容不会移除.\n"}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var o=a[t]={id:t,exports:{}};return n[t](o,o.exports,i),o.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.t=function(n,a){if(1&a&&(n=this(n)),8&a)return n;if("object"==typeof n&&n){if(4&a&&n.__esModule)return n;if(16&a&&"function"==typeof n.then)return n}var o=Object.create(null);i.r(o);var d={};t=t||[null,e({}),e([]),e(e)];for(var l=2&a&&n;"object"==typeof l&&!~t.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach((t=>d[t]=()=>n[t]));return d.default=()=>n,i.d(o,d),o},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";i.d(o,{component:()=>p});const t=coreApis.componentApis.define,e=coreApis.utils.urls,n=coreApis.settings,a=coreApis.localStorage;var d=function(t){return t[t.Heavy=0]="Heavy",t[t.Stroke=1]="Stroke",t[t.Shadow=2]="Shadow",t}(d||{});const l={[d.Heavy]:"1px 0 1px #000000,0 1px 1px #000000,0 -1px 1px #000000,-1px 0 1px #000000",[d.Stroke]:"0px 0px 1px #000000,0 0 1px #000000,0 0 1px #000000",[d.Shadow]:"1px 1px 2px #000000,0 0 1px #000000"},r=(0,t.defineOptionsMetadata)({highlight:{displayName:"禁用高赞弹幕",defaultValue:!0},up:{displayName:"禁用UP主弹幕",defaultValue:!0},upSlogan:{displayName:"禁用带货弹幕",defaultValue:!0},vip:{displayName:"禁用大会员弹幕",defaultValue:!0}}),s="disableSpecialDanmaku",p=(0,t.defineComponentMetadata)({name:s,entry:t=>{let{metadata:e,settings:i}=t;Object.keys(i.options).forEach((t=>{(0,n.addComponentListener)(`${e.name}.${t}`,(e=>{document.body.classList.toggle(`disable-${t}-danmaku-style`,e)}),!0)})),(()=>{const t="bpx_player_profile",e=t=>{const e=lodash.get(t,"dmSetting.fontborder");document.documentElement.style.setProperty("--danmaku-text-shadow",l[e])};e(JSON.parse(localStorage.getItem(t))),(0,a.watchLocalStorage)(((n,a)=>{n===t&&e(JSON.parse(a))}))})()},displayName:"禁用特殊弹幕样式",tags:[componentsTags.style],instantStyles:[{name:s,style:()=>Promise.resolve().then(i.t.bind(i,771,23))}],urlInclude:e.playerUrls,options:r,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const t=i(177);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,496,17)).then((t=>t.default))}})()})})(),o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/style/v1-panel.js b/bb-evolved/registry/dist/components/style/v1-panel.js index 3829ece594..5beb68b2aa 100644 --- a/bb-evolved/registry/dist/components/style/v1-panel.js +++ b/bb-evolved/registry/dist/components/style/v1-panel.js @@ -6,4 +6,4 @@ n.i=function(t,e,r){"string"==typeof t&&( // eslint-disable-next-line no-param-reassign t=[[null,t,""]]);var o={};if(r)for(var a=0;a{var r=e(149);r&&r.__esModule&&(r=r.default),t.exports="string"==typeof r?r:r.toString()}},r={};function o(t){var n=r[t];if(void 0!==n)return n.exports;var a=r[t]={id:t,exports:{}};return e[t](a,a.exports,o),a.exports}n=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var a=Object.create(null);o.r(a);var i={};t=t||[null,n({}),n([]),n(n)];for(var s=2&r&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,o.d(a,i),a},o.d=(t,n)=>{for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>t});const t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"v1PanelStyle",displayName:"v1 风格设置面板",tags:[componentsTags.style],entry:none,description:{"zh-CN":"使用 v1 风格的设置面板样式"},instantStyles:[{name:"v1PanelStyle",style:()=>Promise.resolve().then(o.t.bind(o,181,23))}],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +var i=this[a][0];null!=i&&(o[i]=!0)}for(var s=0;s{var r=e(149);r&&r.__esModule&&(r=r.default),t.exports="string"==typeof r?r:r.toString()}},r={};function o(t){var n=r[t];if(void 0!==n)return n.exports;var a=r[t]={id:t,exports:{}};return e[t](a,a.exports,o),a.exports}n=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var a=Object.create(null);o.r(a);var i={};t=t||[null,n({}),n([]),n(n)];for(var s=2&r&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,o.d(a,i),a},o.d=(t,n)=>{for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{component:()=>t});const t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"v1PanelStyle",displayName:"v1 风格设置面板",tags:[componentsTags.style],entry:none,description:{"zh-CN":"使用 v1 风格的设置面板样式"},instantStyles:[{name:"v1PanelStyle",style:()=>Promise.resolve().then(o.t.bind(o,181,23))}],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/touch/combo-like.js b/bb-evolved/registry/dist/components/touch/combo-like.js index 3dd9b59c16..3971b0a938 100644 --- a/bb-evolved/registry/dist/components/touch/combo-like.js +++ b/bb-evolved/registry/dist/components/touch/combo-like.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["touch/combo-like"]=t():e["touch/combo-like"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={200:e=>{e.exports=coreApis.spinQuery}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var c={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>c[e]=()=>o[e]));return c.default=()=>o,r.d(i,c),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"touchComboLike",displayName:"三连触摸支持",tags:[componentsTags.touch],enabledByDefault:navigator.maxTouchPoints>0,entry:async()=>{const{select:e}=await Promise.resolve().then(r.t.bind(r,200,23)),t=await e(":is(.ops, .video-toolbar-v1) span.like");if(!t)return;t.style.userSelect="none";const o=(e,o)=>{const n=new CustomEvent(e,o);t.dispatchEvent(n)};let n=!0;t.addEventListener("touchstart",(e=>{e.preventDefault(),n=!0,setTimeout((()=>n=!1),200),o("mousedown",e)})),t.addEventListener("touchend",(e=>{e.preventDefault(),o("mouseup",e),n&&o("click",e)}))},description:{"zh-CN":"为视频页面中的三连操作 (长按点赞) 启用触摸支持."},urlInclude:t.videoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["touch/combo-like"]=t():e["touch/combo-like"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={200:e=>{e.exports=coreApis.spinQuery}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineComponentMetadata)({name:"touchComboLike",displayName:"三连触摸支持",tags:[componentsTags.touch],enabledByDefault:navigator.maxTouchPoints>0,entry:async()=>{const{select:e}=await Promise.resolve().then(r.t.bind(r,200,23)),t=await e(":is(.ops, .video-toolbar-v1) span.like");if(!t)return;t.style.userSelect="none";const o=(e,o)=>{const n=new CustomEvent(e,o);t.dispatchEvent(n)};let n=!0;t.addEventListener("touchstart",(e=>{e.preventDefault(),n=!0,setTimeout((()=>n=!1),200),o("mousedown",e)})),t.addEventListener("touchend",(e=>{e.preventDefault(),o("mouseup",e),n&&o("click",e)}))},description:{"zh-CN":"为视频页面中的三连操作 (长按点赞) 启用触摸支持."},urlInclude:t.videoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/touch/double-click-control.js b/bb-evolved/registry/dist/components/touch/double-click-control.js index a14269e63c..19e9ee1ba1 100644 --- a/bb-evolved/registry/dist/components/touch/double-click-control.js +++ b/bb-evolved/registry/dist/components/touch/double-click-control.js @@ -6,4 +6,4 @@ o.i=function(i,l,e){"string"==typeof i&&( // eslint-disable-next-line no-param-reassign i=[[null,i,""]]);var t={};if(e)for(var r=0;r{var e=l(507);e&&e.__esModule&&(e=e.default),i.exports="string"==typeof e?e:e.toString()},605:i=>{"use strict";i.exports=coreApis.utils}},e={};function t(i){var o=e[i];if(void 0!==o)return o.exports;var r=e[i]={id:i,exports:{}};return l[i](r,r.exports,t),r.exports}t.n=i=>{var o=i&&i.__esModule?()=>i.default:()=>i;return t.d(o,{a:o}),o},o=Object.getPrototypeOf?i=>Object.getPrototypeOf(i):i=>i.__proto__,t.t=function(l,e){if(1&e&&(l=this(l)),8&e)return l;if("object"==typeof l&&l){if(4&e&&l.__esModule)return l;if(16&e&&"function"==typeof l.then)return l}var r=Object.create(null);t.r(r);var n={};i=i||[null,o({}),o([]),o(o)];for(var a=2&e&&l;"object"==typeof a&&!~i.indexOf(a);a=o(a))Object.getOwnPropertyNames(a).forEach((i=>n[i]=()=>l[i]));return n.default=()=>l,t.d(r,n),r},t.d=(i,o)=>{for(var l in o)t.o(o,l)&&!t.o(i,l)&&Object.defineProperty(i,l,{enumerable:!0,get:o[l]})},t.o=(i,o)=>Object.prototype.hasOwnProperty.call(i,o),t.r=i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var r={};return(()=>{"use strict";t.d(r,{component:()=>p});const i=coreApis.componentApis.define,o=coreApis.componentApis.video.playerAgent,l=coreApis.observer,e=coreApis.style,n=coreApis.utils.urls;var a=t(259),b=t.n(a);const p=(0,i.defineComponentMetadata)({name:"doubleClickControl",displayName:"启用双击控制",description:{"zh-CN":"将视频播放器的操作方式更改为: 单击显示 / 隐藏控制栏, 双击播放 / 暂停. 请注意不能和 `双击全屏` 一同使用."},tags:[componentsTags.touch],enabledByDefault:navigator.maxTouchPoints>0,urlInclude:n.playerUrls,entry:async()=>{(0,e.addStyle)(b());const i="disable-original-hover";(0,l.videoChange)((async()=>{const l=await o.playerAgent.query.playerArea();if(l.classList.contains(i))return;l.classList.add(i);const e=o.playerAgent.query.video.container.sync(),{DoubleClickEvent:r}=await Promise.resolve().then(t.t.bind(t,605,23)),n=new r((()=>o.playerAgent.togglePlay()),!0);n.singleClickHandler=()=>{l.classList.toggle("touch-video-control-show")},n.bind(e)}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +var n=this[r][0];null!=n&&(t[n]=!0)}for(var a=0;a{var e=l(507);e&&e.__esModule&&(e=e.default),i.exports="string"==typeof e?e:e.toString()},605:i=>{"use strict";i.exports=coreApis.utils}},e={};function t(i){var o=e[i];if(void 0!==o)return o.exports;var r=e[i]={id:i,exports:{}};return l[i](r,r.exports,t),r.exports}t.n=i=>{var o=i&&i.__esModule?()=>i.default:()=>i;return t.d(o,{a:o}),o},o=Object.getPrototypeOf?i=>Object.getPrototypeOf(i):i=>i.__proto__,t.t=function(l,e){if(1&e&&(l=this(l)),8&e)return l;if("object"==typeof l&&l){if(4&e&&l.__esModule)return l;if(16&e&&"function"==typeof l.then)return l}var r=Object.create(null);t.r(r);var n={};i=i||[null,o({}),o([]),o(o)];for(var a=2&e&&l;"object"==typeof a&&!~i.indexOf(a);a=o(a))Object.getOwnPropertyNames(a).forEach((i=>n[i]=()=>l[i]));return n.default=()=>l,t.d(r,n),r},t.d=(i,o)=>{for(var l in o)t.o(o,l)&&!t.o(i,l)&&Object.defineProperty(i,l,{enumerable:!0,get:o[l]})},t.o=(i,o)=>Object.prototype.hasOwnProperty.call(i,o),t.r=i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var r={};return(()=>{"use strict";t.d(r,{component:()=>p});const i=coreApis.componentApis.define,o=coreApis.componentApis.video.playerAgent,l=coreApis.observer,e=coreApis.style,n=coreApis.utils.urls;var a=t(259),b=t.n(a);const p=(0,i.defineComponentMetadata)({name:"doubleClickControl",displayName:"启用双击控制",description:{"zh-CN":"将视频播放器的操作方式更改为: 单击显示 / 隐藏控制栏, 双击播放 / 暂停. 请注意不能和 `双击全屏` 一同使用."},tags:[componentsTags.touch],enabledByDefault:navigator.maxTouchPoints>0,urlInclude:n.playerUrls,entry:async()=>{(0,e.addStyle)(b());const i="disable-original-hover";(0,l.videoChange)((async()=>{const l=await o.playerAgent.query.playerArea();if(l.classList.contains(i))return;l.classList.add(i);const e=o.playerAgent.query.video.container.sync(),{DoubleClickEvent:r}=await Promise.resolve().then(t.t.bind(t,605,23)),n=new r((()=>o.playerAgent.togglePlay()),!0);n.singleClickHandler=()=>{l.classList.toggle("touch-video-control-show")},n.bind(e)}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/touch/mini-player.js b/bb-evolved/registry/dist/components/touch/mini-player.js index 14ac283f58..e3aa088a20 100644 --- a/bb-evolved/registry/dist/components/touch/mini-player.js +++ b/bb-evolved/registry/dist/components/touch/mini-player.js @@ -6,4 +6,4 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var i={};if(o)for(var r=0;r{var o=n(254);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},200:e=>{"use strict";e.exports=coreApis.spinQuery}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils.urls,i=async e=>{if(document.URL.startsWith("https://live.bilibili.com")){const{touchLiveMiniPlayer:t}=await Promise.resolve().then(n.bind(n,304));await t(e)}else{const{touchVideoMiniPlayer:t}=await Promise.resolve().then(n.bind(n,36));await t(e)}},r=(0,e.defineComponentMetadata)({name:"touchMiniPlayer",displayName:"迷你播放器触摸拖动",description:{"zh-CN":"使迷你播放器的拖动条可以触摸拖动."},enabledByDefault:navigator.maxTouchPoints>0,tags:[componentsTags.touch],urlInclude:[...t.videoAndBangumiUrls,...t.liveUrls],entry:()=>i(!0),reload:()=>i(!0),unload:()=>i(!1),options:{touchMoveDistance:{displayName:"拖动触发最小距离",defaultValue:10,hidden:!0}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),o=o.component})())); \ No newline at end of file +var a=this[r][0];null!=a&&(i[a]=!0)}for(var c=0;c{var o=n(254);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},200:e=>{"use strict";e.exports=coreApis.spinQuery}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils.urls,i=async e=>{if(document.URL.startsWith("https://live.bilibili.com")){const{touchLiveMiniPlayer:t}=await Promise.resolve().then(n.bind(n,304));await t(e)}else{const{touchVideoMiniPlayer:t}=await Promise.resolve().then(n.bind(n,36));await t(e)}},r=(0,e.defineComponentMetadata)({name:"touchMiniPlayer",displayName:"迷你播放器触摸拖动",description:{"zh-CN":"使迷你播放器的拖动条可以触摸拖动."},enabledByDefault:navigator.maxTouchPoints>0,tags:[componentsTags.touch],urlInclude:[...t.videoAndBangumiUrls,...t.liveUrls],entry:()=>i(!0),reload:()=>i(!0),unload:()=>i(!1),options:{touchMoveDistance:{displayName:"拖动触发最小距离",defaultValue:10,hidden:!0}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/touch/player-control.js b/bb-evolved/registry/dist/components/touch/player-control.js index cb20fa7993..3bfd5e8b98 100644 --- a/bb-evolved/registry/dist/components/touch/player-control.js +++ b/bb-evolved/registry/dist/components/touch/player-control.js @@ -6,4 +6,4 @@ e.i=function(l,r,i){"string"==typeof l&&( // eslint-disable-next-line no-param-reassign l=[[null,l,""]]);var o={};if(i)for(var t=0;t{var i=r(824);i&&i.__esModule&&(i=i.default),l.exports="string"==typeof i?i:i.toString()}},i={};function o(l){var e=i[l];if(void 0!==e)return e.exports;var t=i[l]={id:l,exports:{}};return r[l](t,t.exports,o),t.exports}e=Object.getPrototypeOf?l=>Object.getPrototypeOf(l):l=>l.__proto__,o.t=function(r,i){if(1&i&&(r=this(r)),8&i)return r;if("object"==typeof r&&r){if(4&i&&r.__esModule)return r;if(16&i&&"function"==typeof r.then)return r}var t=Object.create(null);o.r(t);var a={};l=l||[null,e({}),e([]),e(e)];for(var p=2&i&&r;"object"==typeof p&&!~l.indexOf(p);p=e(p))Object.getOwnPropertyNames(p).forEach((l=>a[l]=()=>r[l]));return a.default=()=>r,o.d(t,a),t},o.d=(l,e)=>{for(var r in e)o.o(e,r)&&!o.o(l,r)&&Object.defineProperty(l,r,{enumerable:!0,get:e[r]})},o.o=(l,e)=>Object.prototype.hasOwnProperty.call(l,e),o.r=l=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(l,"__esModule",{value:!0})};var t={};return(()=>{"use strict";o.d(t,{component:()=>a});const l=coreApis.componentApis.define,e=coreApis.utils.urls,r="touch-player-control",i=async()=>{document.body.classList.add(r)},a=(0,l.defineComponentMetadata)({name:"touchPlayerControl",displayName:"控制栏触摸优化",description:{"zh-CN":"增大播放器控制栏里按钮的间距, 方便触屏使用."},tags:[componentsTags.touch,componentsTags.style],enabledByDefault:navigator.maxTouchPoints>0,urlInclude:e.playerUrls,instantStyles:[{name:r,style:()=>Promise.resolve().then(o.t.bind(o,330,23))}],entry:i,reload:i,unload:()=>{document.body.classList.remove(r)},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),t=t.component})())); \ No newline at end of file +var a=this[t][0];null!=a&&(o[a]=!0)}for(var p=0;p{var i=r(824);i&&i.__esModule&&(i=i.default),l.exports="string"==typeof i?i:i.toString()}},i={};function o(l){var e=i[l];if(void 0!==e)return e.exports;var t=i[l]={id:l,exports:{}};return r[l](t,t.exports,o),t.exports}e=Object.getPrototypeOf?l=>Object.getPrototypeOf(l):l=>l.__proto__,o.t=function(r,i){if(1&i&&(r=this(r)),8&i)return r;if("object"==typeof r&&r){if(4&i&&r.__esModule)return r;if(16&i&&"function"==typeof r.then)return r}var t=Object.create(null);o.r(t);var a={};l=l||[null,e({}),e([]),e(e)];for(var p=2&i&&r;"object"==typeof p&&!~l.indexOf(p);p=e(p))Object.getOwnPropertyNames(p).forEach((l=>a[l]=()=>r[l]));return a.default=()=>r,o.d(t,a),t},o.d=(l,e)=>{for(var r in e)o.o(e,r)&&!o.o(l,r)&&Object.defineProperty(l,r,{enumerable:!0,get:e[r]})},o.o=(l,e)=>Object.prototype.hasOwnProperty.call(l,e),o.r=l=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(l,"__esModule",{value:!0})};var t={};return(()=>{"use strict";o.d(t,{component:()=>a});const l=coreApis.componentApis.define,e=coreApis.utils.urls,r="touch-player-control",i=async()=>{document.body.classList.add(r)},a=(0,l.defineComponentMetadata)({name:"touchPlayerControl",displayName:"控制栏触摸优化",description:{"zh-CN":"增大播放器控制栏里按钮的间距, 方便触屏使用."},tags:[componentsTags.touch,componentsTags.style],enabledByDefault:navigator.maxTouchPoints>0,urlInclude:e.playerUrls,instantStyles:[{name:r,style:()=>Promise.resolve().then(o.t.bind(o,330,23))}],entry:i,reload:i,unload:()=>{document.body.classList.remove(r)},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/touch/player-gestures.js b/bb-evolved/registry/dist/components/touch/player-gestures.js index 26b86fe307..a7a61a6fde 100644 --- a/bb-evolved/registry/dist/components/touch/player-gestures.js +++ b/bb-evolved/registry/dist/components/touch/player-gestures.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var i={};if(n)for(var r=0;r{"use strict";var n,i=function(){return void 0===n&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),o=[];function a(e){for(var t=-1,s=0;s{"use strict";s.r(t),s.d(t,{default:()=>y});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"gesture-preview",class:{opened:e.opened}},[t("div",{staticClass:"gesture-preview-content"},[t("div",{staticClass:"brightness"},[t("ProgressRing",{attrs:{size:100,progress:100*e.preview.brightness}}),e._v(" "),t("div",{staticClass:"label"},[t("div",{staticClass:"name"},[e._v("亮度")]),e._v(" "),t("div",{staticClass:"value"},[e._v("\n "+e._s(e._f("percent")(e.preview.brightness))+"\n ")])])],1),e._v(" "),t("div",{staticClass:"progress"},[t("div",{staticClass:"videoshot",style:e.videoshotStyle}),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:null!==e.preview.progress,expression:"preview.progress !== null"}],staticClass:"preview"},[e.progressNaN?e._e():t("div",{staticClass:"diff"},[e._v("\n "+e._s(e._f("progressDiff")(e.preview.progress-e.store.progress))+"\n ")]),e._v(" "),t("div",{staticClass:"seek-mode"},[e._v("\n "+e._s(e.progressNaN?"取消调整":e.preview.seekMode)+"\n ")])]),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:null===e.preview.progress,expression:"preview.progress === null"}],staticClass:"name"},[e._v("进度")]),e._v(" "),t("div",{staticClass:"progress-label"},[e._v("\n "+e._s(e._f("progress")(e.progressValid?e.preview.progress:e.store.progress))+"\n ")])]),e._v(" "),t("div",{staticClass:"volume"},[t("ProgressRing",{attrs:{size:100,progress:100*e.preview.volume}}),e._v(" "),t("div",{staticClass:"label"},[t("div",{staticClass:"name"},[e._v("音量")]),e._v(" "),t("div",{staticClass:"value"},[e._v("\n "+e._s(e._f("percent")(e.preview.volume))+"\n ")])])],1)]),e._v(" "),t("div",{staticClass:"progress-bar"},[t("ProgressBar",{attrs:{progress:e.progressValid?e.preview.progress:e.store.progress,max:e.video.duration}})],1)])};n._withStripped=!0;const i=coreApis.ui;var r=s(605);const o=coreApis.utils.formatters;var a=s(787);function l(e,t,s){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var n=s.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}class c{constructor(){l(this,"aid",unsafeWindow.aid),l(this,"cid",unsafeWindow.cid),l(this,"viewWidth",120),l(this,"viewHeight",70),l(this,"cidData",null),l(this,"blocked",!1),l(this,"workingPromise",null)}async getVideoshot(e){if(!this.aid||!this.cid||this.blocked)return null;if(this.workingPromise)return this.workingPromise;const{getJson:t}=await Promise.resolve().then(s.t.bind(s,375,23));if(!this.cidData){this.workingPromise=t(`https://api.bilibili.com/x/player/videoshot?aid=${this.aid}&cid=${this.cid}&index=1`);const s=await this.workingPromise;return this.workingPromise=null,-412===s.code?(this.blocked=!0,null):(this.cidData=s.data,this.getVideoshot(e))}const n=this.cidData,i=n.index;let r=1;for(let t=i.length-1;t>0;t--)if(e>=i[t]){r=t;break}const o=n.image;if(null===o)return null;const a=n.img_x_len??10,l=n.img_y_len??10,c=a*this.viewWidth,u=l*this.viewHeight,p=this.viewWidth,d=this.viewHeight,h=-(r-1)%100%a*p,v=-Math.floor((r-1)%100/l)*d;return{backgroundImage:`url(${o[Math.floor(r/100)]})`,backgroundPosition:`${h}px ${v}px`,backgroundSize:`${c}px ${u}px`}}}var u=s(200);const p=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const i=e+t;return i>s?s:i(0,o.formatDuration)(e,1),progressDiff:e=>`${e>0?"+":"-"}${(e=>{e=Math.abs(e);const t=Math.floor(e/3600),s=Math.floor((e-3600*t)/60),n=e-3600*t-60*s;let i=`${(0,r.fixed)(n)}秒`;return s>0&&(i=`${s}分${i}`),t>0&&(i=`${t}时${i}`),i})(e)}`},data(){const e={progress:0,brightness:1,volume:.66};return{opened:!1,video:dq("video"),videoshot:new c,videoshotStyle:{},store:e,preview:{...e,progress:null,seekMode:a.q.Fast}}},computed:{progressNaN(){return Number.isNaN(this.preview.progress)},progressNull(){return null===this.preview.progress},progressValid(){return!this.progressNaN&&!this.progressNull}},methods:{sync(){const e=dq("video");this.video=e,this.store.volume=e.volume,this.store.progress=e.currentTime,this.store.brightness=(()=>{if(e.style.filter){const t=e.style.filter.match(/brightness\((.+)\)/);return t?parseFloat(t[1]):1}return 1})(),this.preview={...this.preview,...this.store,progress:null}},startPreview(e){let{brightness:t,volume:s,progress:n}=e;if(this.opened=!0,void 0!==n){this.preview.progress=p(this.store.progress,n,this.video.duration);this.videoshot.getVideoshot(this.preview.progress).then((e=>{this.videoshotStyle=e}))}else void 0!==t?this.preview.brightness=p(this.store.brightness,t,1/0):void 0!==s&&(this.preview.volume=p(this.store.volume,s)),this.apply({brightness:t,volume:s})},cancelPreview(){this.preview.progress=NaN},endPreview(){unsafeWindow.touchGestureDebug||(this.opened=!1),this.store.volume!==this.preview.volume&&(0,u.syncVolumeUI)(this.preview.volume),Number.isNaN(this.preview.progress)?this.preview.progress=null:this.store.progress!==this.preview.progress&&null!==this.preview.progress&&this.apply({progress:this.preview.progress})},async apply(e){let{brightness:t,volume:n,progress:i}=e;const r=this.video;if(r)if(void 0!==t){const{setBrightness:e}=await Promise.resolve().then(s.bind(s,154));e(r,this.preview.brightness)}else if(void 0!==n){const{setVolume:e}=await Promise.resolve().then(s.bind(s,200));e(r,this.preview.volume)}else if(void 0!==i){const{setProgress:e}=await Promise.resolve().then(s.bind(s,600));e(r,i)}}}}),h=d;var v=s(332),f=s.n(v),g=s(521),m=s.n(g),w={insert:"head",singleton:!1};f()(m(),w);m().locals;var b=function(e,t,s,n,i,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=s,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(h,n,[],!1,null,null,null);const y=b.exports},375:e=>{"use strict";e.exports=coreApis.ajax},391:e=>{"use strict";e.exports=coreApis.observer},605:e=>{"use strict";e.exports=coreApis.utils}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,exports:{}};return s[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(s,n){if(1&n&&(s=this(s)),8&n)return s;if("object"==typeof s&&s){if(4&n&&s.__esModule)return s;if(16&n&&"function"==typeof s.then)return s}var r=Object.create(null);i.r(r);var o={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&s;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>o[e]=()=>s[e]));return o.default=()=>s,i.d(r,o),r},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,s=coreApis.componentApis.video.playerAgent,n=(0,e.defineComponentMetadata)({name:"touchPlayerGestures",displayName:"播放器触摸手势",enabledByDefault:navigator.maxTouchPoints>0,tags:[componentsTags.touch],description:{"zh-CN":"为播放器启用触摸手势支持:\n- 左右滑动可调整进度\n- 上下滑动可调整音量\n- 进度调整可在左上角和右上角取消\n- 进度调整时在不同位置滑动, 可以使用3档不同的灵敏度."},entry:async()=>{const{videoChange:e}=await Promise.resolve().then(i.t.bind(i,391,23));e((async()=>{if(!await s.playerAgent.query.video.element())return;let e;if(!dq(".gesture-preview")){const t=await Promise.resolve().then(i.bind(i,145)),{mountVueComponent:n}=await Promise.resolve().then(i.t.bind(i,605,23));e=n(t),s.playerAgent.query.video.subtitle.sync()?.insertAdjacentElement("beforebegin",e.$el)}const{Swiper:t}=await Promise.resolve().then(i.bind(i,608)),n=new t(s.playerAgent.query.video.container.sync());n.action.addEventListener("start",(()=>{e.sync()})),n.action.addEventListener("cancel",(()=>{e.cancelPreview()})),n.action.addEventListener("end",(()=>{e.endPreview()})),["volume","brightness"].forEach((t=>{n.action.addEventListener(t,(s=>{e.startPreview({[t]:s.detail})}))})),n.action.addEventListener("progress",(t=>{const{progress:s,mode:n}=t.detail;e.preview.seekMode=n,e.startPreview({progress:s})}))}))},urlInclude:t.playerUrls,options:{swiperDistance:{displayName:"手势触发最小距离",defaultValue:10,hidden:!0}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),o=[];function a(e){for(var t=-1,s=0;s{"use strict";s.r(t),s.d(t,{default:()=>y});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"gesture-preview",class:{opened:e.opened}},[t("div",{staticClass:"gesture-preview-content"},[t("div",{staticClass:"brightness"},[t("ProgressRing",{attrs:{size:100,progress:100*e.preview.brightness}}),e._v(" "),t("div",{staticClass:"label"},[t("div",{staticClass:"name"},[e._v("亮度")]),e._v(" "),t("div",{staticClass:"value"},[e._v("\n "+e._s(e._f("percent")(e.preview.brightness))+"\n ")])])],1),e._v(" "),t("div",{staticClass:"progress"},[t("div",{staticClass:"videoshot",style:e.videoshotStyle}),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:null!==e.preview.progress,expression:"preview.progress !== null"}],staticClass:"preview"},[e.progressNaN?e._e():t("div",{staticClass:"diff"},[e._v("\n "+e._s(e._f("progressDiff")(e.preview.progress-e.store.progress))+"\n ")]),e._v(" "),t("div",{staticClass:"seek-mode"},[e._v("\n "+e._s(e.progressNaN?"取消调整":e.preview.seekMode)+"\n ")])]),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:null===e.preview.progress,expression:"preview.progress === null"}],staticClass:"name"},[e._v("进度")]),e._v(" "),t("div",{staticClass:"progress-label"},[e._v("\n "+e._s(e._f("progress")(e.progressValid?e.preview.progress:e.store.progress))+"\n ")])]),e._v(" "),t("div",{staticClass:"volume"},[t("ProgressRing",{attrs:{size:100,progress:100*e.preview.volume}}),e._v(" "),t("div",{staticClass:"label"},[t("div",{staticClass:"name"},[e._v("音量")]),e._v(" "),t("div",{staticClass:"value"},[e._v("\n "+e._s(e._f("percent")(e.preview.volume))+"\n ")])])],1)]),e._v(" "),t("div",{staticClass:"progress-bar"},[t("ProgressBar",{attrs:{progress:e.progressValid?e.preview.progress:e.store.progress,max:e.video.duration}})],1)])};n._withStripped=!0;const i=coreApis.ui;var r=s(605);const o=coreApis.utils.formatters;var a=s(787);function l(e,t,s){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var n=s.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}class c{constructor(){l(this,"aid",unsafeWindow.aid),l(this,"cid",unsafeWindow.cid),l(this,"viewWidth",120),l(this,"viewHeight",70),l(this,"cidData",null),l(this,"blocked",!1),l(this,"workingPromise",null)}async getVideoshot(e){if(!this.aid||!this.cid||this.blocked)return null;if(this.workingPromise)return this.workingPromise;const{getJson:t}=await Promise.resolve().then(s.t.bind(s,375,23));if(!this.cidData){this.workingPromise=t(`https://api.bilibili.com/x/player/videoshot?aid=${this.aid}&cid=${this.cid}&index=1`);const s=await this.workingPromise;return this.workingPromise=null,-412===s.code?(this.blocked=!0,null):(this.cidData=s.data,this.getVideoshot(e))}const n=this.cidData,i=n.index;let r=1;for(let t=i.length-1;t>0;t--)if(e>=i[t]){r=t;break}const o=n.image;if(null===o)return null;const a=n.img_x_len??10,l=n.img_y_len??10,c=a*this.viewWidth,u=l*this.viewHeight,p=this.viewWidth,d=this.viewHeight,h=-(r-1)%100%a*p,v=-Math.floor((r-1)%100/l)*d;return{backgroundImage:`url(${o[Math.floor(r/100)]})`,backgroundPosition:`${h}px ${v}px`,backgroundSize:`${c}px ${u}px`}}}var u=s(200);const p=function(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const i=e+t;return i>s?s:i(0,o.formatDuration)(e,1),progressDiff:e=>`${e>0?"+":"-"}${(e=>{e=Math.abs(e);const t=Math.floor(e/3600),s=Math.floor((e-3600*t)/60),n=e-3600*t-60*s;let i=`${(0,r.fixed)(n)}秒`;return s>0&&(i=`${s}分${i}`),t>0&&(i=`${t}时${i}`),i})(e)}`},data(){const e={progress:0,brightness:1,volume:.66};return{opened:!1,video:dq("video"),videoshot:new c,videoshotStyle:{},store:e,preview:{...e,progress:null,seekMode:a.q.Fast}}},computed:{progressNaN(){return Number.isNaN(this.preview.progress)},progressNull(){return null===this.preview.progress},progressValid(){return!this.progressNaN&&!this.progressNull}},methods:{sync(){const e=dq("video");this.video=e,this.store.volume=e.volume,this.store.progress=e.currentTime,this.store.brightness=(()=>{if(e.style.filter){const t=e.style.filter.match(/brightness\((.+)\)/);return t?parseFloat(t[1]):1}return 1})(),this.preview={...this.preview,...this.store,progress:null}},startPreview(e){let{brightness:t,volume:s,progress:n}=e;if(this.opened=!0,void 0!==n){this.preview.progress=p(this.store.progress,n,this.video.duration);this.videoshot.getVideoshot(this.preview.progress).then((e=>{this.videoshotStyle=e}))}else void 0!==t?this.preview.brightness=p(this.store.brightness,t,1/0):void 0!==s&&(this.preview.volume=p(this.store.volume,s)),this.apply({brightness:t,volume:s})},cancelPreview(){this.preview.progress=NaN},endPreview(){unsafeWindow.touchGestureDebug||(this.opened=!1),this.store.volume!==this.preview.volume&&(0,u.syncVolumeUI)(this.preview.volume),Number.isNaN(this.preview.progress)?this.preview.progress=null:this.store.progress!==this.preview.progress&&null!==this.preview.progress&&this.apply({progress:this.preview.progress})},async apply(e){let{brightness:t,volume:n,progress:i}=e;const r=this.video;if(r)if(void 0!==t){const{setBrightness:e}=await Promise.resolve().then(s.bind(s,154));e(r,this.preview.brightness)}else if(void 0!==n){const{setVolume:e}=await Promise.resolve().then(s.bind(s,200));e(r,this.preview.volume)}else if(void 0!==i){const{setProgress:e}=await Promise.resolve().then(s.bind(s,600));e(r,i)}}}}),h=d;var v=s(332),f=s.n(v),g=s(521),m=s.n(g),w={insert:"head",singleton:!1};f()(m(),w);m().locals;var b=function(e,t,s,n,i,r,o,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=s,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},c._ssrRegister=l):i&&(l=a?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(h,n,[],!1,null,null,null);const y=b.exports},375:e=>{"use strict";e.exports=coreApis.ajax},391:e=>{"use strict";e.exports=coreApis.observer},605:e=>{"use strict";e.exports=coreApis.utils}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,exports:{}};return s[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(s,n){if(1&n&&(s=this(s)),8&n)return s;if("object"==typeof s&&s){if(4&n&&s.__esModule)return s;if(16&n&&"function"==typeof s.then)return s}var r=Object.create(null);i.r(r);var o={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&s;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>o[e]=()=>s[e]));return o.default=()=>s,i.d(r,o),r},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,s=coreApis.componentApis.video.playerAgent,n=(0,e.defineComponentMetadata)({name:"touchPlayerGestures",displayName:"播放器触摸手势",enabledByDefault:navigator.maxTouchPoints>0,tags:[componentsTags.touch],description:{"zh-CN":"为播放器启用触摸手势支持:\n- 左右滑动可调整进度\n- 上下滑动可调整音量\n- 进度调整可在左上角和右上角取消\n- 进度调整时在不同位置滑动, 可以使用3档不同的灵敏度."},entry:async()=>{const{videoChange:e}=await Promise.resolve().then(i.t.bind(i,391,23));e((async()=>{if(!await s.playerAgent.query.video.element())return;let e;if(!dq(".gesture-preview")){const t=await Promise.resolve().then(i.bind(i,145)),{mountVueComponent:n}=await Promise.resolve().then(i.t.bind(i,605,23));e=n(t),s.playerAgent.query.video.subtitle.sync()?.insertAdjacentElement("beforebegin",e.$el)}const{Swiper:t}=await Promise.resolve().then(i.bind(i,608)),n=new t(s.playerAgent.query.video.container.sync());n.action.addEventListener("start",(()=>{e.sync()})),n.action.addEventListener("cancel",(()=>{e.cancelPreview()})),n.action.addEventListener("end",(()=>{e.endPreview()})),["volume","brightness"].forEach((t=>{n.action.addEventListener(t,(s=>{e.startPreview({[t]:s.detail})}))})),n.action.addEventListener("progress",(t=>{const{progress:s,mode:n}=t.detail;e.preview.seekMode=n,e.startPreview({progress:s})}))}))},urlInclude:t.playerUrls,options:{swiperDistance:{displayName:"手势触发最小距离",defaultValue:10,hidden:!0}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/album-time-show.js b/bb-evolved/registry/dist/components/utils/album-time-show.js index 7e22579ecf..88f4178783 100644 --- a/bb-evolved/registry/dist/components/utils/album-time-show.js +++ b/bb-evolved/registry/dist/components/utils/album-time-show.js @@ -1,11 +1,11 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["utils/album-time-show"]=e():t["utils/album-time-show"]=e()}(globalThis,(()=>(()=>{var t,e,o={482:(t,e,o)=>{var n=o(218)((function(t){return t[1]}));n.push([t.id,'@charset "UTF-8";\n/* 保持相簿元素高度 */\n.album-card {\n margin-bottom: 21px;\n}\n\n/* 上移原互动数据 */\n.album-card .album-card__info {\n margin-top: -5px;\n}\n\n/* 相簿发布时间样式 */\n.album-pub-time {\n color: #99a2aa;\n position: absolute;\n margin-top: -5px;\n}\nbody.dark .album-pub-time {\n color: #aaa;\n}',""]),t.exports=n},218:t=>{"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/album-time-show"]=t():e["utils/album-time-show"]=t()}(globalThis,(()=>(()=>{var e,t,o={482:(e,t,o)=>{var n=o(218)((function(e){return e[1]}));n.push([e.id,'@charset "UTF-8";\n/* 保持相簿元素高度 */\n.album-card {\n margin-bottom: 21px;\n}\n\n/* 上移原互动数据 */\n.album-card .album-card__info {\n margin-top: -5px;\n}\n\n/* 相簿发布时间样式 */\n.album-pub-time {\n color: #99a2aa;\n position: absolute;\n margin-top: -5px;\n}\nbody.dark .album-pub-time {\n color: #aaa;\n}',""]),e.exports=n},218:e=>{"use strict"; // eslint-disable-next-line func-names -t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var o=t(e);return e[2]?"@media ".concat(e[2]," {").concat(o,"}"):o})).join("")}, +e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=e(t);return t[2]?"@media ".concat(t[2]," {").concat(o,"}"):o})).join("")}, // eslint-disable-next-line func-names -e.i=function(t,o,n){"string"==typeof t&&( +t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign -t=[[null,t,""]]);var r={};if(n)for(var a=0;a{var n=o(482);n&&n.__esModule&&(n=n.default),t.exports="string"==typeof n?n:n.toString()},356:t=>{"use strict";t.exports=coreApis.style}},n={};function r(t){var e=n[t];if(void 0!==e)return e.exports;var a=n[t]={id:t,exports:{}};return o[t](a,a.exports,r),a.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var a=Object.create(null);r.r(a);var i={};t=t||[null,e({}),e([]),e(e)];for(var c=2&n&&o;"object"==typeof c&&!~t.indexOf(c);c=e(c))Object.getOwnPropertyNames(c).forEach((t=>i[t]=()=>o[t]));return i.default=()=>o,r.d(a,i),a},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>c});const t=coreApis.componentApis.define,e=coreApis.observer,o=coreApis.spinQuery;let n,i;const c=(0,t.defineComponentMetadata)({name:"albumPubTimeShow",author:{name:"Light_Quanta",link:"https://github.com/LightQuanta"},displayName:"相簿发布时间显示",tags:[componentsTags.utils],urlInclude:[/^https:\/\/space\.bilibili\.com/],entry:async()=>{const t=await(0,o.select)(".s-space");(0,e.childList)(t,(async()=>{document.URL.match(/^https:\/\/space\.bilibili\.com\/\d+\/album/)&&(n=await(0,o.select)(".album-list__content"),(async t=>{const[o]=(0,e.attributesSubtree)(t,(()=>{n.querySelectorAll(".album-card").forEach((t=>{const e=t.querySelector(".album-pub-time"),o=t.__vue__.item.ctime; +var i=this[a][0];null!=i&&(r[i]=!0)}for(var c=0;c{var n=o(482);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},356:e=>{"use strict";e.exports=coreApis.style}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={id:e,exports:{}};return o[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,r.d(a,i),a},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>c});const e=coreApis.componentApis.define,t=coreApis.observer,o=coreApis.spinQuery;let n,i;const c=(0,e.defineComponentMetadata)({name:"albumPubTimeShow",author:{name:"Light_Quanta",link:"https://github.com/LightQuanta"},displayName:"相簿发布时间显示",tags:[componentsTags.utils],urlInclude:[/^https:\/\/space\.bilibili\.com/],entry:async()=>{const e=await(0,o.select)(".s-space");(0,t.childList)(e,(async()=>{document.URL.match(/^https:\/\/space\.bilibili\.com\/\d+\/album/)&&(n=await(0,o.select)(".album-list__content"),(async e=>{const[o]=(0,t.attributesSubtree)(e,(()=>{n.querySelectorAll(".album-card").forEach((e=>{const t=e.querySelector(".album-pub-time"),o=e.__vue__.item.ctime; // eslint-disable-next-line no-underscore-dangle -void 0!==o&&(null!==e?e.innerHTML=new Date(1e3*o).toLocaleString():t.insertAdjacentHTML("beforeend",`
    ${new Date(1e3*o).toLocaleString()}
    `))}))}));i?.disconnect(),i=o;const{addImportantStyle:a}=await Promise.resolve().then(r.t.bind(r,356,23)),{default:c}=await Promise.resolve().then(r.t.bind(r,977,23));a(c,"album-pub-time-style")})(n))}))},description:{"zh-CN":"在相簿界面显示相簿的发布时间"},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +void 0!==o&&(null!==t?t.innerHTML=new Date(1e3*o).toLocaleString():e.insertAdjacentHTML("beforeend",`
    ${new Date(1e3*o).toLocaleString()}
    `))}))}));i?.disconnect(),i=o;const{addImportantStyle:a}=await Promise.resolve().then(r.t.bind(r,356,23)),{default:c}=await Promise.resolve().then(r.t.bind(r,977,23));a(c,"album-pub-time-style")})(n))}))},description:{"zh-CN":"在相簿界面显示相簿的发布时间"},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/auto-like.js b/bb-evolved/registry/dist/components/utils/auto-like.js index 4cafb87748..c8055f9bf6 100644 --- a/bb-evolved/registry/dist/components/utils/auto-like.js +++ b/bb-evolved/registry/dist/components/utils/auto-like.js @@ -13,4 +13,4 @@ i=Boolean(window&&document&&document.all&&!window.atob)),i},o=function(){var t={ // eslint-disable-next-line vue/no-mutating-props this.list.push(this.name),this.name=""},toggleVisible(t){ // eslint-disable-next-line vue/no-mutating-props -this.list.splice(this.list.indexOf(t),1)}}});var l=n(332),a=n.n(l),r=n(890),c=n.n(r),d={insert:"head",singleton:!1};a()(c(),d);c().locals;const u=(0,n(893).Z)(o,i,[],!1,null,null,null).exports},237:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var i=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VButton",{staticClass:"manual-like",attrs:{round:""},on:{click:t.like}},[e("div",{class:{like:t.isLike},attrs:{id:"text"}},[t._v("正在点赞: "+t._s(t.curLikeCnt)+" / "+t._s(t.totalLikeCnt))]),t._v(" "),e("VIcon",{directives:[{name:"show",rawName:"v-show",value:!t.isLike,expression:"!isLike"}],attrs:{colored:"",icon:"like",size:20}})],1)};i._withStripped=!0;var s=n(648);const o=Vue.extend({components:{VButton:s.VButton,VIcon:s.VIcon},props:{list:{type:Array,default:null}},data:()=>({isClick:!1,isLike:!1,totalLikeCnt:0,curLikeCnt:0,feedsLikeQueue:[]}),methods:{like(){if(this.isClick)return;this.isClick=!0;const t=Array.from(document.getElementsByClassName("bili-dyn-title__text")).reduce(((t,e)=>{if(this.list.includes(e.textContent.trim()))return t;const n=e.closest(".bili-dyn-item__main").querySelector(".bili-dyn-action.like");return n&&!n.classList.contains("active")&&t.push(n),t}),[]);this.feedsLikeQueue.push(...t),this.totalLikeCnt=this.feedsLikeQueue.length,this.curLikeCnt=0,this.isLike=!0;const e=window.setInterval((()=>{if(0===this.feedsLikeQueue.length)return this.isLike=!1,this.isClick=!1,void clearInterval(e);this.feedsLikeQueue.shift()?.click(),this.curLikeCnt++}),1200)}}});var l=n(332),a=n.n(l),r=n(130),c=n.n(r),d={insert:"head",singleton:!1};a()(c(),d);c().locals;const u=(0,n(893).Z)(o,i,[],!1,null,null,null).exports},487:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>p});var i=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",[e("div",{staticClass:"custom-black-list-extra-options"},[e("VButton",{ref:"button",on:{mouseover:t.setBlackListProps,click:t.toggleBlackList}},[t._v("\n 黑名单\n "),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1)],1)])};i._withStripped=!0;var s=n(648),o=n(64);const l=Vue.extend({components:{VIcon:s.VIcon,VButton:s.VButton},data:()=>({isFirstLoad:!1}),methods:{toggle(){this.$refs.popup.toggle()},async setBlackListProps(){if(!this.isFirstLoad&&(this.isFirstLoad=await(0,o.J9)(),this.isFirstLoad)){const t=this.$refs.button.$el;(0,o.sz)(t)}},toggleBlackList:o.h4}});var a=n(332),r=n.n(a),c=n(96),d=n.n(c),u={insert:"head",singleton:!1};r()(d(),u);d().locals;const p=(0,n(893).Z)(l,i,[],!1,null,null,null).exports},893:(t,e,n)=>{"use strict";function i(t,e,n,i,s,o,l,a){var r,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),o&&(c._scopeId="data-v-"+o),l?(r=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),s&&s.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(l)},c._ssrRegister=r):s&&(r=a?function(){s.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:s),r)if(c.functional){c._injectStyles=r;var d=c.render;c.render=function(t,e){return r.call(e),d(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,r):[r]}return{exports:t,options:c}}n.d(e,{Z:()=>i})},945:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=945,t.exports=e},185:t=>{"use strict";t.exports="进入视频 / 查看动态时, 自动点赞\\\n无法触发未加载动态的点赞,当启用手动对动态点赞后可手动触发,启用后不会触发动态自动点赞\\\n安装快捷键扩展后可以点击【l】键或【L】键触发\\\n还可以添加动态点赞的黑名单\\\n"},153:t=>{"use strict";t.exports=coreApis.pluginApis.data},200:t=>{"use strict";t.exports=coreApis.spinQuery},648:t=>{"use strict";t.exports=coreApis.ui},605:t=>{"use strict";t.exports=coreApis.utils}},i={};function s(t){var e=i[t];if(void 0!==e)return e.exports;var o=i[t]={id:t,exports:{}};return n[t](o,o.exports,s),o.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,s.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var o=Object.create(null);s.r(o);var l={};t=t||[null,e({}),e([]),e(e)];for(var a=2&i&&n;"object"==typeof a&&!~t.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach((t=>l[t]=()=>n[t]));return l.default=()=>n,s.d(o,l),o},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";s.d(o,{component:()=>d});const t=coreApis.componentApis.define;var e=s(200),n=s(605);const i=coreApis.utils.urls,l=coreApis.componentApis.feeds.api;var a=s(64),r=s(153);const c=[],d=(0,t.defineComponentMetadata)({name:"autoLike",displayName:"自动点赞",tags:[componentsTags.utils,componentsTags.feeds,componentsTags.video],urlInclude:[...i.videoAndBangumiUrls,...i.feedsUrls],author:{name:"CrazyboyQCD",link:"https://github.com/CrazyboyQCD"},options:{video:{defaultValue:!0,displayName:"对视频点赞"},feed:{defaultValue:!0,displayName:"对动态点赞"},manualFeed:{defaultValue:!0,displayName:"手动对动态点赞"},users:{displayName:"黑名单",defaultValue:[],hidden:!0}},extraOptions:()=>Promise.resolve().then(s.bind(s,487)).then((t=>t.default)),entry:async t=>{let{settings:{options:s}}=t;if(s.video&&i.videoAndBangumiUrls.some((t=>(0,n.matchUrlPattern)(t)))){await(0,n.playerReady)();const t=await(0,e.select)(".video-like");if(!t||t.classList.contains("on"))return;t.click()}if(s.feed&&i.feedsUrls.some((t=>(0,n.matchUrlPattern)(t)))){const t={users:s.users};if((0,r.registerData)(a.qt,t),s.manualFeed)(0,a.Ts)();else{window.setInterval((()=>{if(0===c.length)return;c.shift()?.click()}),1e3);const t=(0,r.getData)(a.qt);(0,l.forEachFeedsCard)({added:e=>{if(t.includes(e.username))return;const n=dq(e.element,".bili-dyn-action.like");n&&!n.classList.contains("active")&&c.push(n)}})}}},plugin:{displayName:"点赞 - 手动",setup:t=>{let{addData:e}=t;e("keymap.actions",(t=>{t.manuallike={displayName:"手动触发对动态点赞",run:t=>{const{clickElement:e}=t;return e(".manual-like",t)}}})),e("keymap.presets",(t=>{t.manuallike="l L"}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const t=s(945);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(s.t.bind(s,185,17)).then((t=>t.default))}})()})})(),o=o.component})())); \ No newline at end of file +this.list.splice(this.list.indexOf(t),1)}}});var l=n(332),a=n.n(l),r=n(890),c=n.n(r),d={insert:"head",singleton:!1};a()(c(),d);c().locals;const u=(0,n(893).Z)(o,i,[],!1,null,null,null).exports},237:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var i=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("VButton",{staticClass:"manual-like",attrs:{round:""},on:{click:t.like}},[e("div",{class:{like:t.isLike},attrs:{id:"text"}},[t._v("正在点赞: "+t._s(t.curLikeCnt)+" / "+t._s(t.totalLikeCnt))]),t._v(" "),e("VIcon",{directives:[{name:"show",rawName:"v-show",value:!t.isLike,expression:"!isLike"}],attrs:{colored:"",icon:"like",size:20}})],1)};i._withStripped=!0;var s=n(648);const o=Vue.extend({components:{VButton:s.VButton,VIcon:s.VIcon},props:{list:{type:Array,default:null}},data:()=>({isClick:!1,isLike:!1,totalLikeCnt:0,curLikeCnt:0,feedsLikeQueue:[]}),methods:{like(){if(this.isClick)return;this.isClick=!0;const t=Array.from(document.getElementsByClassName("bili-dyn-title__text")).reduce(((t,e)=>{if(this.list.includes(e.textContent.trim()))return t;const n=e.closest(".bili-dyn-item__main").querySelector(".bili-dyn-action.like");return n&&!n.classList.contains("active")&&t.push(n),t}),[]);this.feedsLikeQueue.push(...t),this.totalLikeCnt=this.feedsLikeQueue.length,this.curLikeCnt=0,this.isLike=!0;const e=window.setInterval((()=>{if(0===this.feedsLikeQueue.length)return this.isLike=!1,this.isClick=!1,void clearInterval(e);this.feedsLikeQueue.shift()?.click(),this.curLikeCnt++}),1200)}}});var l=n(332),a=n.n(l),r=n(130),c=n.n(r),d={insert:"head",singleton:!1};a()(c(),d);c().locals;const u=(0,n(893).Z)(o,i,[],!1,null,null,null).exports},487:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>p});var i=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",[e("div",{staticClass:"custom-black-list-extra-options"},[e("VButton",{ref:"button",on:{mouseover:t.setBlackListProps,click:t.toggleBlackList}},[t._v("\n 黑名单\n "),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1)],1)])};i._withStripped=!0;var s=n(648),o=n(64);const l=Vue.extend({components:{VIcon:s.VIcon,VButton:s.VButton},data:()=>({isFirstLoad:!1}),methods:{toggle(){this.$refs.popup.toggle()},async setBlackListProps(){if(!this.isFirstLoad&&(this.isFirstLoad=await(0,o.J9)(),this.isFirstLoad)){const t=this.$refs.button.$el;(0,o.sz)(t)}},toggleBlackList:o.h4}});var a=n(332),r=n.n(a),c=n(96),d=n.n(c),u={insert:"head",singleton:!1};r()(d(),u);d().locals;const p=(0,n(893).Z)(l,i,[],!1,null,null,null).exports},893:(t,e,n)=>{"use strict";function i(t,e,n,i,s,o,l,a){var r,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),o&&(c._scopeId="data-v-"+o),l?(r=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),s&&s.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(l)},c._ssrRegister=r):s&&(r=a?function(){s.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:s),r)if(c.functional){c._injectStyles=r;var d=c.render;c.render=function(t,e){return r.call(e),d(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,r):[r]}return{exports:t,options:c}}n.d(e,{Z:()=>i})},945:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=945,t.exports=e},185:t=>{"use strict";t.exports="进入视频 / 查看动态时, 自动点赞\\\n无法触发未加载动态的点赞,当启用手动对动态点赞后可手动触发,启用后不会触发动态自动点赞\\\n安装快捷键扩展后可以点击【l】键或【L】键触发\\\n还可以添加动态点赞的黑名单\\\n"},153:t=>{"use strict";t.exports=coreApis.pluginApis.data},200:t=>{"use strict";t.exports=coreApis.spinQuery},648:t=>{"use strict";t.exports=coreApis.ui},605:t=>{"use strict";t.exports=coreApis.utils}},i={};function s(t){var e=i[t];if(void 0!==e)return e.exports;var o=i[t]={id:t,exports:{}};return n[t](o,o.exports,s),o.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,s.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var o=Object.create(null);s.r(o);var l={};t=t||[null,e({}),e([]),e(e)];for(var a=2&i&&n;"object"==typeof a&&!~t.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach((t=>l[t]=()=>n[t]));return l.default=()=>n,s.d(o,l),o},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";s.d(o,{component:()=>d});const t=coreApis.componentApis.define;var e=s(200),n=s(605);const i=coreApis.utils.urls,l=coreApis.componentApis.feeds.api;var a=s(64),r=s(153);const c=[],d=(0,t.defineComponentMetadata)({name:"autoLike",displayName:"自动点赞",tags:[componentsTags.utils,componentsTags.feeds,componentsTags.video],urlInclude:[...i.videoAndBangumiUrls,...i.feedsUrls],author:{name:"CrazyboyQCD",link:"https://github.com/CrazyboyQCD"},options:{video:{defaultValue:!0,displayName:"对视频点赞"},feed:{defaultValue:!0,displayName:"对动态点赞"},manualFeed:{defaultValue:!0,displayName:"手动对动态点赞"},users:{displayName:"黑名单",defaultValue:[],hidden:!0}},extraOptions:()=>Promise.resolve().then(s.bind(s,487)).then((t=>t.default)),entry:async t=>{let{settings:{options:s}}=t;if(s.video&&i.videoAndBangumiUrls.some((t=>(0,n.matchUrlPattern)(t)))){await(0,n.playerReady)();const t=await(0,e.select)(".video-like");if(!t||t.classList.contains("on"))return;t.click()}if(s.feed&&i.feedsUrls.some((t=>(0,n.matchUrlPattern)(t)))){const t={users:s.users};if((0,r.registerData)(a.qt,t),s.manualFeed)(0,a.Ts)();else{window.setInterval((()=>{if(0===c.length)return;c.shift()?.click()}),1e3);const t=(0,r.getData)(a.qt);(0,l.forEachFeedsCard)({added:e=>{if(t.includes(e.username))return;const n=dq(e.element,".bili-dyn-action.like");n&&!n.classList.contains("active")&&c.push(n)}})}}},plugin:{displayName:"点赞 - 手动",setup:t=>{let{addData:e}=t;e("keymap.actions",(t=>{t.manuallike={displayName:"手动触发对动态点赞",run:t=>{const{clickElement:e}=t;return e(".manual-like",t)}}})),e("keymap.presets",(t=>{t.manuallike="l L"}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const t=s(945);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(s.t.bind(s,185,17)).then((t=>t.default))}})()})})(),o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/black-list.js b/bb-evolved/registry/dist/components/utils/black-list.js index 1efa0b5d5c..c0ef66e38a 100644 --- a/bb-evolved/registry/dist/components/utils/black-list.js +++ b/bb-evolved/registry/dist/components/utils/black-list.js @@ -15,4 +15,4 @@ this.list.push(this.name), // eslint-disable-next-line vue/no-mutating-props this.list=lodash.uniq(this.list),this.name=""},toggleVisible(t){ // eslint-disable-next-line vue/no-mutating-props -this.list.splice(this.list.indexOf(t),1)}}});var a=n(332),l=n.n(a),c=n(660),r=n.n(c),u={insert:"head",singleton:!1};l()(r(),u);r().locals;const d=(0,n(893).Z)(o,s,[],!1,null,null,null).exports},508:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>x});var s=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",[e("div",{staticClass:"custom-black-list-extra-options"},[t.login?e("VButton",{ref:"button",on:{mouseover:function(e){return t.loadNameBlackListSettings()},click:function(e){return t.toggleNameSettings()}}},[t._v("\n 精确匹配列表"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):t._e()],1),t._v(" "),e("div",{staticClass:"custom-black-list-extra-options"},[t.login?e("VButton",{ref:"button",on:{mouseover:function(e){return t.loadRegexBlackListSettings()},click:function(e){return t.toggleRegexSettings()}}},[t._v("\n 正则匹配列表"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):t._e()],1)])};s._withStripped=!0;const i=coreApis.utils;var o=n(648);const a=coreApis.settings;var l=n(153),c=n(725);let r,u;const d=(0,a.getComponentSettings)("blackList").options,p=async()=>{if(r)return!1;const t=await Promise.resolve().then(n.bind(n,991)).then((t=>t.default));return r=(0,i.mountVueComponent)(t),document.body.insertAdjacentElement("beforeend",r.$el),!0},g=async()=>{if(u)return!1;const t=await Promise.resolve().then(n.bind(n,991)).then((t=>t.default));return u=(0,i.mountVueComponent)(t),document.body.insertAdjacentElement("beforeend",u.$el),!0},b=Vue.extend({components:{VIcon:o.VIcon,VButton:o.VButton},data:()=>({login:Boolean((0,i.getUID)())}),methods:{async loadNameBlackListSettings(){if(await p()){(t=>{if(!r)return;r.triggerElement=t;const e=(0,l.getData)(c.q);r.list=lodash.cloneDeep(e[0].up),r.save=t=>{(0,l.addData)(c.q,(e=>{e.up=t})),d.up=t},r.titleName="精确匹配"})(this.$refs.button.$el)}},toggleNameSettings:async()=>{r||await p(),r?.toggle()},async loadRegexBlackListSettings(){if(await g()){(t=>{if(!u)return;u.triggerElement=t;const e=(0,l.getData)(c.q);u.list=lodash.cloneDeep(e[0].upRegex),u.save=t=>{(0,l.addData)(c.q,(e=>{e.upRegex=t})),d.upRegex=t},u.titleName="正则匹配"})(this.$refs.button.$el)}},toggleRegexSettings:async()=>{u||await g(),u?.toggle()}}});var f=n(332),m=n.n(f),v=n(771),k=n.n(v),h={insert:"head",singleton:!1};m()(k(),h);k().locals;const x=(0,n(893).Z)(b,s,[],!1,null,null,null).exports},893:(t,e,n)=>{"use strict";function s(t,e,n,s,i,o,a,l){var c,r="function"==typeof t?t.options:t;if(e&&(r.render=e,r.staticRenderFns=n,r._compiled=!0),s&&(r.functional=!0),o&&(r._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},r._ssrRegister=c):i&&(c=l?function(){i.call(this,(r.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(r.functional){r._injectStyles=c;var u=r.render;r.render=function(t,e){return c.call(e),u(t,e)}}else{var d=r.beforeCreate;r.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:r}}n.d(e,{Z:()=>s})},153:t=>{"use strict";t.exports=coreApis.pluginApis.data},648:t=>{"use strict";t.exports=coreApis.ui}},e={};function n(s){var i=e[s];if(void 0!==i)return i.exports;var o=e[s]={id:s,exports:{}};return t[s](o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var s in e)n.o(e,s)&&!n.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var s={};return(()=>{"use strict";n.d(s,{component:()=>c});const t=coreApis.componentApis.define,e=coreApis.observer,i=coreApis.spinQuery,o=coreApis.utils.urls;var a=n(153),l=n(725);const c=(0,t.defineComponentMetadata)({name:"blackList",entry:async t=>{let{settings:{options:n}}=t;const s={up:n.up,upRegex:n.upRegex};(0,a.registerData)(l.q,s);const o=await(0,i.selectAll)(".feed2");(0,e.allMutationsOn)(o,(async()=>{const t=await(0,i.selectAll)(".bili-video-card");if(!t)return;const e=(0,a.getData)(l.q),n=e[0].upRegex.map((t=>new RegExp(t)));t.forEach((t=>{const s=t.querySelector(".bili-video-card__info--author"),i=t.querySelector(".bili-video-card__info--tit > a");if(null!=s){const o=s.innerHTML;if(-1!==e[0].up.indexOf(o)){t.querySelector(".v-img.bili-video-card__cover").innerHTML="",s.innerHTML="",i.innerHTML=""}else for(const e in n)if(n[e].test(o)){t.querySelector(".v-img.bili-video-card__cover").innerHTML="",s.innerHTML="",i.innerHTML="";break}}}))}))},extraOptions:()=>Promise.resolve().then(n.bind(n,508)).then((t=>t.default)),options:{up:{displayName:"up主名称",defaultValue:[],hidden:!0},upRegex:{displayName:"正则匹配up主名称",defaultValue:[],hidden:!0}},displayName:"屏蔽黑名单up主",tags:[componentsTags.utils],description:{"zh-CN":"屏蔽黑名单up主, 根据up主的名称进行匹配,支持精确匹配和正则匹配. 请注意只能在首页中使用或调整设置."},author:{name:"snowraincloud",link:"https://github.com/snowraincloud"},urlInclude:o.mainSiteUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),s=s.component})())); \ No newline at end of file +this.list.splice(this.list.indexOf(t),1)}}});var a=n(332),l=n.n(a),c=n(660),r=n.n(c),u={insert:"head",singleton:!1};l()(r(),u);r().locals;const d=(0,n(893).Z)(o,s,[],!1,null,null,null).exports},508:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>x});var s=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",[e("div",{staticClass:"custom-black-list-extra-options"},[t.login?e("VButton",{ref:"button",on:{mouseover:function(e){return t.loadNameBlackListSettings()},click:function(e){return t.toggleNameSettings()}}},[t._v("\n 精确匹配列表"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):t._e()],1),t._v(" "),e("div",{staticClass:"custom-black-list-extra-options"},[t.login?e("VButton",{ref:"button",on:{mouseover:function(e){return t.loadRegexBlackListSettings()},click:function(e){return t.toggleRegexSettings()}}},[t._v("\n 正则匹配列表"),e("VIcon",{attrs:{icon:"right-arrow",size:16}})],1):t._e()],1)])};s._withStripped=!0;const i=coreApis.utils;var o=n(648);const a=coreApis.settings;var l=n(153),c=n(725);let r,u;const d=(0,a.getComponentSettings)("blackList").options,p=async()=>{if(r)return!1;const t=await Promise.resolve().then(n.bind(n,991)).then((t=>t.default));return r=(0,i.mountVueComponent)(t),document.body.insertAdjacentElement("beforeend",r.$el),!0},g=async()=>{if(u)return!1;const t=await Promise.resolve().then(n.bind(n,991)).then((t=>t.default));return u=(0,i.mountVueComponent)(t),document.body.insertAdjacentElement("beforeend",u.$el),!0},b=Vue.extend({components:{VIcon:o.VIcon,VButton:o.VButton},data:()=>({login:Boolean((0,i.getUID)())}),methods:{async loadNameBlackListSettings(){if(await p()){(t=>{if(!r)return;r.triggerElement=t;const e=(0,l.getData)(c.q);r.list=lodash.cloneDeep(e[0].up),r.save=t=>{(0,l.addData)(c.q,(e=>{e.up=t})),d.up=t},r.titleName="精确匹配"})(this.$refs.button.$el)}},toggleNameSettings:async()=>{r||await p(),r?.toggle()},async loadRegexBlackListSettings(){if(await g()){(t=>{if(!u)return;u.triggerElement=t;const e=(0,l.getData)(c.q);u.list=lodash.cloneDeep(e[0].upRegex),u.save=t=>{(0,l.addData)(c.q,(e=>{e.upRegex=t})),d.upRegex=t},u.titleName="正则匹配"})(this.$refs.button.$el)}},toggleRegexSettings:async()=>{u||await g(),u?.toggle()}}});var f=n(332),m=n.n(f),v=n(771),k=n.n(v),h={insert:"head",singleton:!1};m()(k(),h);k().locals;const x=(0,n(893).Z)(b,s,[],!1,null,null,null).exports},893:(t,e,n)=>{"use strict";function s(t,e,n,s,i,o,a,l){var c,r="function"==typeof t?t.options:t;if(e&&(r.render=e,r.staticRenderFns=n,r._compiled=!0),s&&(r.functional=!0),o&&(r._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},r._ssrRegister=c):i&&(c=l?function(){i.call(this,(r.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(r.functional){r._injectStyles=c;var u=r.render;r.render=function(t,e){return c.call(e),u(t,e)}}else{var d=r.beforeCreate;r.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:r}}n.d(e,{Z:()=>s})},153:t=>{"use strict";t.exports=coreApis.pluginApis.data},648:t=>{"use strict";t.exports=coreApis.ui}},e={};function n(s){var i=e[s];if(void 0!==i)return i.exports;var o=e[s]={id:s,exports:{}};return t[s](o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var s in e)n.o(e,s)&&!n.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var s={};return(()=>{"use strict";n.d(s,{component:()=>c});const t=coreApis.componentApis.define,e=coreApis.observer,i=coreApis.spinQuery,o=coreApis.utils.urls;var a=n(153),l=n(725);const c=(0,t.defineComponentMetadata)({name:"blackList",entry:async t=>{let{settings:{options:n}}=t;const s={up:n.up,upRegex:n.upRegex};(0,a.registerData)(l.q,s);const o=await(0,i.selectAll)(".feed2");(0,e.allMutationsOn)(o,(async()=>{const t=await(0,i.selectAll)(".bili-video-card");if(!t)return;const e=(0,a.getData)(l.q),n=e[0].upRegex.map((t=>new RegExp(t)));t.forEach((t=>{const s=t.querySelector(".bili-video-card__info--author"),i=t.querySelector(".bili-video-card__info--tit > a");if(null!=s){const o=s.innerHTML;if(-1!==e[0].up.indexOf(o)){t.querySelector(".v-img.bili-video-card__cover").innerHTML="",s.innerHTML="",i.innerHTML=""}else for(const e in n)if(n[e].test(o)){t.querySelector(".v-img.bili-video-card__cover").innerHTML="",s.innerHTML="",i.innerHTML="";break}}}))}))},extraOptions:()=>Promise.resolve().then(n.bind(n,508)).then((t=>t.default)),options:{up:{displayName:"up主名称",defaultValue:[],hidden:!0},upRegex:{displayName:"正则匹配up主名称",defaultValue:[],hidden:!0}},displayName:"屏蔽黑名单up主",tags:[componentsTags.utils],description:{"zh-CN":"屏蔽黑名单up主, 根据up主的名称进行匹配,支持精确匹配和正则匹配. 请注意只能在首页中使用或调整设置."},author:{name:"snowraincloud",link:"https://github.com/snowraincloud"},urlInclude:o.mainSiteUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),s=s.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/change-update-urls.js b/bb-evolved/registry/dist/components/utils/change-update-urls.js index 7b65ded669..cd70fffc00 100644 --- a/bb-evolved/registry/dist/components/utils/change-update-urls.js +++ b/bb-evolved/registry/dist/components/utils/change-update-urls.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/change-update-urls"]=t():e["utils/change-update-urls"]=t()}(globalThis,(()=>(()=>{"use strict";var e={807:(e,t,o)=>{o.r(t),o.d(t,{default:()=>c});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{attrs:{name:"替换更新链接",icon:"mdi-file-replace-outline",disabled:e.busy},on:{click:function(t){return e.replaceBranch()}}})};n._withStripped=!0;const r=coreApis.settings,i=coreApis.toast,s=coreApis.utils.log,a=coreApis.ui;var l=function(e,t,o,n,r,i,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=o,c._compiled=!0),n&&(c.functional=!0),i&&(c._scopeId="data-v-"+i),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):r&&(l=a?function(){r.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(Vue.extend({components:{DefaultWidget:a.DefaultWidget},data:()=>({busy:!1}),methods:{async replaceBranch(){const e=window.prompt("输入希望替换成的分支名称");if(e){this.busy=!0;try{const{options:t}=(0,r.getComponentSettings)("autoUpdate");Object.values(t.urls).forEach((t=>{Object.values(t).forEach((t=>{const o=/^(https:\/\/github\.com\/.+\/Bilibili-Evolved\/raw\/)(.+?)(\/)/;if(o.test(t.url))return void(t.url=t.url.replace(o,`$1${e}$3`));const n=/^(https:\/\/raw\.githubusercontent\.com\/.+\/Bilibili-Evolved\/)(.+?)(\/)/;if(n.test(t.url))return void(t.url=t.url.replace(n,`$1${e}$3`));const r=/^(https:\/\/cdn\.jsdelivr\.net\/gh\/.+\/Bilibili-Evolved@)(.+?)(\/)/;r.test(t.url)?t.url=t.url.replace(r,`$1${e}$3`):console.log("skip record",t)}))})),i.Toast.info("替换完成","替换更新链接",3e3)}catch(e){(0,s.logError)(e)}finally{this.busy=!1}}}}}),n,[],!1,null,null,null);const c=l.exports}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.d(n,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"changeUpdateUrls",displayName:"更新链接替换",description:"批量更换已安装功能的更新链接的分支, 对本地安装的功能无效.",entry:none,tags:[componentsTags.utils],widget:{component:()=>Promise.resolve().then(o.bind(o,807)).then((e=>e.default))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),n=n.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/change-update-urls"]=t():e["utils/change-update-urls"]=t()}(globalThis,(()=>(()=>{"use strict";var e={807:(e,t,o)=>{o.r(t),o.d(t,{default:()=>c});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{attrs:{name:"替换更新链接",icon:"mdi-file-replace-outline",disabled:e.busy},on:{click:function(t){return e.replaceBranch()}}})};n._withStripped=!0;const r=coreApis.settings,i=coreApis.toast,s=coreApis.utils.log,a=coreApis.ui;var l=function(e,t,o,n,r,i,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=o,c._compiled=!0),n&&(c.functional=!0),i&&(c._scopeId="data-v-"+i),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):r&&(l=a?function(){r.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(Vue.extend({components:{DefaultWidget:a.DefaultWidget},data:()=>({busy:!1}),methods:{async replaceBranch(){const e=window.prompt("输入希望替换成的分支名称");if(e){this.busy=!0;try{const{options:t}=(0,r.getComponentSettings)("autoUpdate");Object.values(t.urls).forEach((t=>{Object.values(t).forEach((t=>{const o=/^(https:\/\/github\.com\/.+\/Bilibili-Evolved\/raw\/)(.+?)(\/)/;if(o.test(t.url))return void(t.url=t.url.replace(o,`$1${e}$3`));const n=/^(https:\/\/raw\.githubusercontent\.com\/.+\/Bilibili-Evolved\/)(.+?)(\/)/;if(n.test(t.url))return void(t.url=t.url.replace(n,`$1${e}$3`));const r=/^(https:\/\/cdn\.jsdelivr\.net\/gh\/.+\/Bilibili-Evolved@)(.+?)(\/)/;r.test(t.url)?t.url=t.url.replace(r,`$1${e}$3`):console.log("skip record",t)}))})),i.Toast.info("替换完成","替换更新链接",3e3)}catch(e){(0,s.logError)(e)}finally{this.busy=!1}}}}}),n,[],!1,null,null,null);const c=l.exports}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{o.d(n,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"changeUpdateUrls",displayName:"更新链接替换",description:"批量更换已安装功能的更新链接的分支, 对本地安装的功能无效.",entry:none,tags:[componentsTags.utils],widget:{component:()=>Promise.resolve().then(o.bind(o,807)).then((e=>e.default))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),n=n.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/check-in-center.js b/bb-evolved/registry/dist/components/utils/check-in-center.js index ece6b980e1..faf5bc31cd 100644 --- a/bb-evolved/registry/dist/components/utils/check-in-center.js +++ b/bb-evolved/registry/dist/components/utils/check-in-center.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/check-in-center"]=t():e["utils/check-in-center"]=t()}(globalThis,(()=>(()=>{"use strict";var e={685:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"multiple-widgets"},e._l(e.items,(function(n){return t("DefaultWidget",{key:n.name,attrs:{disabled:n.disabled,"data-name":n.name,name:n.displayName,icon:n.icon},on:{click:function(t){return e.runItemAction(n,t)}}})})),1)};o._withStripped=!0;const i=coreApis.ui,s=coreApis.ajax,a=coreApis.toast;var r=n(605);const c=coreApis.pluginApis.data,l=[{name:"seeds-to-coins",displayName:"瓜子换硬币",icon:"mdi-seed-outline",action:async()=>{const e=await(0,s.postTextWithCredentials)("https://api.live.bilibili.com/xlive/revenue/v1/wallet/silver2coin",(0,r.formData)({csrf:(0,r.getCsrf)(),csrf_token:(0,r.getCsrf)()})),t=JSON.parse(e);0!==t.code?a.Toast.info(t.message,"瓜子换硬币",3e3):a.Toast.success(`${t.message}\n剩余银瓜子:${t.data.silver}`,"瓜子换硬币",3e3)}},{name:"live-check-in",displayName:"直播间签到",icon:"mdi-calendar-check",action:async()=>{const e=await(0,s.getJsonWithCredentials)("https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign");if(0!==e.code)a.Toast.info(e.message,"直播间签到",3e3);else{const{text:t,specialText:n,allDays:o,hadSignDays:i}=e.data,s=`签到成功, 获得了${t} ${n}\n本月进度: ${i} / ${o}`;a.Toast.success(s,"直播间签到",3e3)}}}],[d]=(0,c.registerAndGetData)("checkInCenter.items",l);var p=function(e,t,n,o,i,s,a,r){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),s&&(l._scopeId="data-v-"+s),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):i&&(c=r?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(Vue.extend({components:{DefaultWidget:i.DefaultWidget},data:()=>({items:d}),methods:{async runItemAction(e,t){try{this.$set(e,"disabled",!0);const n=this.$el.querySelector(`[data-name='${e.name}']`);await e.action(n,t)}finally{e.disabled=!1}}}}),o,[],!1,null,null,null);const u=p.exports},605:e=>{e.exports=coreApis.utils}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.d(o,{component:()=>i});const e=coreApis.componentApis.define;var t=n(605);const i=(0,e.defineComponentMetadata)({name:"checkInCenter",displayName:"签到助手",description:{"zh-CN":"在功能面板中提供一些可以每日进行的操作."},tags:[componentsTags.utils],entry:none,widget:{component:()=>Promise.resolve().then(n.bind(n,685)).then((e=>e.default)),condition:()=>Boolean((0,t.getUID)())},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),o=o.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/check-in-center"]=t():e["utils/check-in-center"]=t()}(globalThis,(()=>(()=>{"use strict";var e={685:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"multiple-widgets"},e._l(e.items,(function(n){return t("DefaultWidget",{key:n.name,attrs:{disabled:n.disabled,"data-name":n.name,name:n.displayName,icon:n.icon},on:{click:function(t){return e.runItemAction(n,t)}}})})),1)};o._withStripped=!0;const i=coreApis.ui,s=coreApis.ajax,a=coreApis.toast;var r=n(605);const c=coreApis.pluginApis.data,l=[{name:"seeds-to-coins",displayName:"瓜子换硬币",icon:"mdi-seed-outline",action:async()=>{const e=await(0,s.postTextWithCredentials)("https://api.live.bilibili.com/xlive/revenue/v1/wallet/silver2coin",(0,r.formData)({csrf:(0,r.getCsrf)(),csrf_token:(0,r.getCsrf)()})),t=JSON.parse(e);0!==t.code?a.Toast.info(t.message,"瓜子换硬币",3e3):a.Toast.success(`${t.message}\n剩余银瓜子:${t.data.silver}`,"瓜子换硬币",3e3)}},{name:"live-check-in",displayName:"直播间签到",icon:"mdi-calendar-check",action:async()=>{const e=await(0,s.getJsonWithCredentials)("https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign");if(0!==e.code)a.Toast.info(e.message,"直播间签到",3e3);else{const{text:t,specialText:n,allDays:o,hadSignDays:i}=e.data,s=`签到成功, 获得了${t} ${n}\n本月进度: ${i} / ${o}`;a.Toast.success(s,"直播间签到",3e3)}}}],[d]=(0,c.registerAndGetData)("checkInCenter.items",l);var p=function(e,t,n,o,i,s,a,r){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),s&&(l._scopeId="data-v-"+s),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):i&&(c=r?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(Vue.extend({components:{DefaultWidget:i.DefaultWidget},data:()=>({items:d}),methods:{async runItemAction(e,t){try{this.$set(e,"disabled",!0);const n=this.$el.querySelector(`[data-name='${e.name}']`);await e.action(n,t)}finally{e.disabled=!1}}}}),o,[],!1,null,null,null);const u=p.exports},605:e=>{e.exports=coreApis.utils}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.d(o,{component:()=>i});const e=coreApis.componentApis.define;var t=n(605);const i=(0,e.defineComponentMetadata)({name:"checkInCenter",displayName:"签到助手",description:{"zh-CN":"在功能面板中提供一些可以每日进行的操作."},tags:[componentsTags.utils],entry:none,widget:{component:()=>Promise.resolve().then(n.bind(n,685)).then((e=>e.default)),condition:()=>Boolean((0,t.getUID)())},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/column-unlock.js b/bb-evolved/registry/dist/components/utils/column-unlock.js index 7028246d6f..bd58d425b0 100644 --- a/bb-evolved/registry/dist/components/utils/column-unlock.js +++ b/bb-evolved/registry/dist/components/utils/column-unlock.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/column-unlock"]=t():e["utils/column-unlock"]=t()}(globalThis,(()=>(()=>{var e,t,o={280:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=280,e.exports=t},780:e=>{"use strict";e.exports="(原名: 专栏文字选择, 现在专栏已经不限制选中文字了)\n\n避免专栏的文字复制后在最后带上出处信息, 更贴近原生的复制行为.\n"},356:e=>{"use strict";e.exports=coreApis.style}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var c=n[e]={exports:{}};return o[e](c,c.exports,r),c.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var c=Object.create(null);r.r(c);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,r.d(c,i),c},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var c={};return(()=>{"use strict";r.d(c,{component:()=>s});const e=coreApis.componentApis.define;let t=!1,o=!0;const n="column-unlock",i=async()=>{o=!0;const{addStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23));e(".article-holder { user-select: text !important }",n),t||(t=!0,document.addEventListener("copy",(e=>{o&&e.stopImmediatePropagation()}),{capture:!0}))},s=(0,e.defineComponentMetadata)({name:"columnUnlock",displayName:"专栏复制优化",entry:i,reload:i,unload:async()=>{document.getElementById(n)?.remove(),o=!1},tags:[componentsTags.utils],urlInclude:["//www.bilibili.com/read/"],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(280);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,780,17)).then((e=>e.default))}})()})})(),c=c.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/column-unlock"]=t():e["utils/column-unlock"]=t()}(globalThis,(()=>(()=>{var e,t,o={280:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=280,e.exports=t},780:e=>{"use strict";e.exports="(原名: 专栏文字选择, 现在专栏已经不限制选中文字了)\n\n避免专栏的文字复制后在最后带上出处信息, 更贴近原生的复制行为.\n"},356:e=>{"use strict";e.exports=coreApis.style}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var c=n[e]={exports:{}};return o[e](c,c.exports,r),c.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var c=Object.create(null);r.r(c);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,r.d(c,i),c},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var c={};return(()=>{"use strict";r.d(c,{component:()=>s});const e=coreApis.componentApis.define;let t=!1,o=!0;const n="column-unlock",i=async()=>{o=!0;const{addStyle:e}=await Promise.resolve().then(r.t.bind(r,356,23));e(".article-holder { user-select: text !important }",n),t||(t=!0,document.addEventListener("copy",(e=>{o&&e.stopImmediatePropagation()}),{capture:!0}))},s=(0,e.defineComponentMetadata)({name:"columnUnlock",displayName:"专栏复制优化",entry:i,reload:i,unload:async()=>{document.getElementById(n)?.remove(),o=!1},tags:[componentsTags.utils],urlInclude:["//www.bilibili.com/read/"],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(280);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,780,17)).then((e=>e.default))}})()})})(),c=c.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/comments/copy-link.js b/bb-evolved/registry/dist/components/utils/comments/copy-link.js index 4c62cc38ea..98f30d9189 100644 --- a/bb-evolved/registry/dist/components/utils/comments/copy-link.js +++ b/bb-evolved/registry/dist/components/utils/comments/copy-link.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/comments/copy-link"]=t():e["utils/comments/copy-link"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={206:e=>{e.exports=coreApis.componentApis.utils.commentApis}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({name:"copyCommentsLink",displayName:"复制评论链接",description:{"zh-CN":"开启后, 可在每条评论的菜单中选择复制链接."},entry:async()=>{const{forEachCommentItem:e,addMenuItem:r}=await Promise.resolve().then(n.t.bind(n,206,23));e({added:e=>{const n=e=>{e.forEach((e=>{r(e,{className:"copy-link",text:"复制链接",action:async()=>{const r=(e=>{if(document.URL.match(/\/\/t\.bilibili\.com\/(\d+)/))return"";if(o.feedsUrls.every((e=>!(0,t.matchUrlPattern)(e))))return"";let r=e;for(;null!==r&&r!==document.body;){if(r.hasAttribute("data-did"))return`https://t.bilibili.com/${r.getAttribute("data-did")}`;r=r.parentElement}return""})(e.element)||document.URL.replace(location.hash,"");await navigator.clipboard.writeText(`${r}#reply${e.id}`)}})}))};n([e,...e.replies]),e.addEventListener("repliesUpdate",(e=>n(e.detail)))}})},tags:[componentsTags.utils],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/comments/copy-link"]=t():e["utils/comments/copy-link"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={206:e=>{e.exports=coreApis.componentApis.utils.commentApis}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils,o=coreApis.utils.urls,r=(0,e.defineComponentMetadata)({name:"copyCommentsLink",displayName:"复制评论链接",description:{"zh-CN":"开启后, 可在每条评论的菜单中选择复制链接."},entry:async()=>{const{forEachCommentItem:e,addMenuItem:r}=await Promise.resolve().then(n.t.bind(n,206,23));e({added:e=>{const n=e=>{e.forEach((e=>{r(e,{className:"copy-link",text:"复制链接",action:async()=>{const r=(e=>{if(document.URL.match(/\/\/t\.bilibili\.com\/(\d+)/))return"";if(o.feedsUrls.every((e=>!(0,t.matchUrlPattern)(e))))return"";let r=e;for(;null!==r&&r!==document.body;){if(r.hasAttribute("data-did"))return`https://t.bilibili.com/${r.getAttribute("data-did")}`;r=r.parentElement}return""})(e.element)||document.URL.replace(location.hash,"");await navigator.clipboard.writeText(`${r}#reply${e.id}`)}})}))};n([e,...e.replies]),e.addEventListener("repliesUpdate",(e=>n(e.detail)))}})},tags:[componentsTags.utils],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/comments/disable-search-link.js b/bb-evolved/registry/dist/components/utils/comments/disable-search-link.js index fffc7da94b..ca67a375a6 100644 --- a/bb-evolved/registry/dist/components/utils/comments/disable-search-link.js +++ b/bb-evolved/registry/dist/components/utils/comments/disable-search-link.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(126);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},59:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=59,e.exports=t},629:e=>{"use strict";e.exports="禁用评论区的搜索词链接."}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.componentApis.utils.commentApis,o=coreApis.utils,n="disableCommentsSearchLink";let s=!1;const a=(0,e.defineComponentMetadata)({name:n,displayName:"禁用评论区搜索词",instantStyles:[{name:n,style:()=>Promise.resolve().then(r.t.bind(r,805,23)),important:!0}],tags:[componentsTags.utils,componentsTags.style],entry:async()=>{s=!0,(0,t.forEachCommentArea)((e=>{(0,o.preventEvent)(e.element,"click",(e=>{if(!(e.target instanceof HTMLElement&&s))return!1;const t=e.target;return!![".jump-link.search-word",".icon.search-word"].some((e=>t.matches(e)))}))}))},reload:()=>{s=!0},unload:()=>{s=!1},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(59);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,629,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var s=this[i][0];null!=s&&(r[s]=!0)}for(var a=0;a{var n=o(126);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},59:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=59,e.exports=t},629:e=>{"use strict";e.exports="禁用评论区的搜索词链接."}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.componentApis.utils.commentApis,o=coreApis.utils,n="disableCommentsSearchLink";let s=!1;const a=(0,e.defineComponentMetadata)({name:n,displayName:"禁用评论区搜索词",instantStyles:[{name:n,style:()=>Promise.resolve().then(r.t.bind(r,805,23)),important:!0}],tags:[componentsTags.utils,componentsTags.style],entry:async()=>{s=!0,(0,t.forEachCommentArea)((e=>{(0,o.preventEvent)(e.element,"click",(e=>{if(!(e.target instanceof HTMLElement&&s))return!1;const t=e.target;return!![".jump-link.search-word",".icon.search-word"].some((e=>t.matches(e)))}))}))},reload:()=>{s=!0},unload:()=>{s=!1},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(59);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,629,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/dev-client.js b/bb-evolved/registry/dist/components/utils/dev-client.js index 8eb5936fc0..57249c7f7f 100644 --- a/bb-evolved/registry/dist/components/utils/dev-client.js +++ b/bb-evolved/registry/dist/components/utils/dev-client.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(s)for(var i=0;i{"use strict";var s,o=function(){return void 0===s&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -s=Boolean(window&&document&&document.all&&!window.atob)),s},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),r=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>p});var s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{directives:[{name:"show",rawName:"v-show",value:e.isConnected,expression:"isConnected"}]},[e.canStartDebug?t("div",{staticClass:"component-action dev-client-action",on:{click:e.startDebug}},[e.busy?t("VIcon",{attrs:{icon:"mdi-network-outline",size:16}}):t("VIcon",{attrs:{icon:"mdi-play-network-outline",size:16}}),e._v("\n "+e._s(e.busy?"启动中":"开始调试")+"\n ")],1):e._e(),e._v(" "),e.canStopDebug?t("div",{staticClass:"component-action dev-client-action",on:{click:e.stopDebug}},[e.busy?t("VIcon",{attrs:{icon:"mdi-network-outline",size:16}}):t("VIcon",{attrs:{icon:"mdi-minus-network-outline",size:16}}),e._v("\n "+e._s(e.busy?"停止中":"停止调试")+"\n ")],1):e._e()])};s._withStripped=!0;var o=n(391),i=n(648),r=n(583),a=n(278);const c=(0,a.Ub)(),d=e=>{if(!e)return null;if(e.match(new RegExp(`localhost:${c.port}\\/registry\\/components\\/(.+)$`)))return e;const t=e.match(/localhost:(\d+?)\/components\/(.+)$/);if(t)return`http://localhost:${c.port}/registry/dist/components/${t[2]}`;const n=e.match(/\/registry\/dist\/components\/(.+)$/);return n?`http://localhost:${c.port}/registry/dist/components/${n[1]}`:null},l=(0,a.Ub)(),u=Vue.extend({components:{VIcon:i.VIcon},props:{item:{type:Object,required:!0},component:{type:Object,required:!0}},data:()=>({busy:!1,autoUpdateComponents:a.Db.urls.components,sessions:[],isConnected:!1}),computed:{autoUpdateRecord(){const e=this.component;return this.autoUpdateComponents[e.name]},componentUpdateUrl(){return this.autoUpdateRecord?.url},isDebugging(){return this.componentUpdateUrl&&this.sessions.some((e=>{const{pathname:t}=new URL(this.componentUpdateUrl);return e===t}))},canStartDebug(){return!this.isDebugging&&null!==d(this.componentUpdateUrl)},canStopDebug(){return Boolean(this.isDebugging&&this.componentUpdateUrl)}},async created(){const{devClient:e}=await Promise.resolve().then(n.bind(n,583));this.sessions=e.sessions,this.isConnected=e.isConnected,e.addEventListener(r.DevClientEvents.ServerChange,this.handleServerChange),e.addEventListener(r.DevClientEvents.SessionsUpdate,this.handleSessionsUpdate)},async beforeDestroy(){const{devClient:e}=await Promise.resolve().then(n.bind(n,583));e.removeEventListener(r.DevClientEvents.SessionsUpdate,this.handleSessionsUpdate)},methods:{handleSessionsUpdate(e){this.sessions=e.detail},handleServerChange(e){this.isConnected=e.detail},async handleClick(e){if(!this.busy)try{this.busy=!0,await e()}finally{this.busy=!1}},async startDebug(){await this.handleClick((async()=>{const{devClient:e}=await Promise.resolve().then(n.bind(n,583)),t=this.component,s=d(this.componentUpdateUrl);this.autoUpdateRecord.url!==s&&(l.devRecords[t.name]={name:t.name,originalUrl:this.componentUpdateUrl},this.autoUpdateRecord.url=s);const i=o.Toast.info("启动调试中...","DevClient");try{await e.startDebug(this.autoUpdateRecord.url)}catch(e){console.error(e)}finally{i.close()}}))},async stopDebug(){await this.handleClick((async()=>{const{devClient:e}=await Promise.resolve().then(n.bind(n,583)),t=this.component,{pathname:s}=new URL(this.componentUpdateUrl);e.isConnected&&await e.stopDebug(s),l.devRecords[t.name]&&(this.autoUpdateRecord.url=l.devRecords[t.name].originalUrl,delete l.devRecords[t.name])}))}}});const p=(0,n(893).Z)(u,s,[],!1,null,null,null).exports},290:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-dev-client"},[t("div",{staticClass:"title"},[e._v("DevClient")]),e._v(" "),t("div",{staticClass:"connection-status"},[e.isConnected?[t("div",{staticClass:"status-dot connected"}),e._v(" "),t("div",{staticClass:"status-text"},[e._v("已连接")]),e._v(" "),t("AsyncButton",{attrs:{title:"断开连接"},on:{click:e.disconnect}},[t("VIcon",{attrs:{icon:"mdi-stop",size:14}}),e._v("\n 断开连接\n ")],1)]:[t("div",{staticClass:"status-dot disconnected"}),e._v(" "),t("div",{staticClass:"status-text"},[e._v("未连接")]),e._v(" "),t("AsyncButton",{attrs:{title:"连接"},on:{click:e.connect}},[t("VIcon",{attrs:{icon:"mdi-play",size:14}}),e._v("\n 连接\n ")],1)]],2)])};s._withStripped=!0;var o=n(648),i=n(583);const r=Vue.extend({components:{AsyncButton:o.AsyncButton,VIcon:o.VIcon},data:()=>({client:null,isConnected:!1}),async created(){const{devClient:e}=await Promise.resolve().then(n.bind(n,583));this.client=e,this.updateConnectionStatus(),e.addEventListener(i.DevClientEvents.ServerChange,this.updateConnectionStatus)},beforeDestroy(){this.client.removeEventListener(i.DevClientEvents.ServerChange,this.updateConnectionStatus)},methods:{async connect(){return this.client.createSocket(!0)},disconnect(){this.client.closeSocket()},updateConnectionStatus(){this.isConnected=this.client.isConnected}}});var a=n(332),c=n.n(a),d=n(906),l=n.n(d),u={insert:"head",singleton:!1};c()(l(),u);l().locals;const p=(0,n(893).Z)(r,s,[],!1,null,"b4ec1a08",null).exports},893:(e,t,n)=>{"use strict";function s(e,t,n,s,o,i,r,a){var c,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),s&&(d.functional=!0),i&&(d._scopeId="data-v-"+i),r?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},d._ssrRegister=c):o&&(c=a?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(d.functional){d._injectStyles=c;var l=d.render;d.render=function(e,t){return c.call(t),l(e,t)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,c):[c]}return{exports:e,options:d}}n.d(t,{Z:()=>s})},456:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=456,e.exports=t},626:e=>{"use strict";e.exports="本地开发工具, 提供自动更新功能和样式热重载的能力, 需要与 DevServer 配合使用. (DevServer 的使用方式见 [CONTRIBUTING.md](https://github.com/the1812/Bilibili-Evolved/blob/preview/CONTRIBUTING.md))\n\n`自动连接` 开启时, 每次进入网页都会自动尝试连接到 DevServer, 如果关闭则需要手动操作连接.\n\n`刷新策略` 决定了收到本体或者功能更新的消息时是否刷新:\n - **总是刷新**: 收到更新时立即刷新页面\n - 不刷新: 收到更新时不刷新页面\n\n`热重载策略` 决定了是否开启热重载功能, 只要成功触发热重载, 就不刷新页面:\n - **开启热重载**: 功能带有 `instantStyles` 时, 热重载 `instantStyles` 中的样式\n - 关闭热重载: 收到更新时按 `刷新策略` 执行\n\n> 目前就这两个选项, 将来可能会支持对 `entry` 的热重载\n"},952:e=>{"use strict";e.exports=coreApis.componentApis.define},890:e=>{"use strict";e.exports=coreApis.installFeature},391:e=>{"use strict";e.exports=coreApis.toast},648:e=>{"use strict";e.exports=coreApis.ui},605:e=>{"use strict";e.exports=coreApis.utils}},s={};function o(e){var t=s[e];if(void 0!==t)return t.exports;var i=s[e]={id:e,exports:{}};return n[e](i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,s){if(1&s&&(n=this(n)),8&s)return n;if("object"==typeof n&&n){if(4&s&&n.__esModule)return n;if(16&s&&"function"==typeof n.then)return n}var i=Object.create(null);o.r(i);var r={};e=e||[null,t({}),t([]),t(t)];for(var a=2&s&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>r[e]=()=>n[e]));return r.default=()=>n,o.d(i,r),i},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>s});var e=o(952),t=o(605),n=o(278);const s=(0,e.defineComponentMetadata)({name:"devClient",displayName:"DevClient",tags:[componentsTags.utils],entry:async e=>{let{settings:{options:s}}=e;if((0,t.isIframe)())return;const{devClient:i,DevClientEvents:r}=await Promise.resolve().then(o.bind(o,583));i.addEventListener(r.ServerConnected,(()=>{i.addEventListener(r.SessionsUpdate,(()=>{Object.entries(s.devRecords).forEach((e=>{let[,{name:t,originalUrl:o}]=e;const r=n.Db.urls.components[t];if(!r)return;const a=r.url;i.sessions.find((e=>a.endsWith(e)))||(r.url=o,console.log("cleanUpDevRecords",t,a,o,r),delete s.devRecords[t])}))}),{once:!0})})),s.autoConnect&&i.createSocket()},options:n.j4,widget:{component:()=>Promise.resolve().then(o.bind(o,290)).then((e=>e.default))},plugin:{setup:async e=>{let{addData:s}=e;(0,t.isIframe)()||(s("settingsPanel.componentActions",(e=>{e.push((e=>{if(!n.Db.urls.components[e.name])return;return{name:"devClient",component:()=>Promise.resolve().then(o.bind(o,8))}}))})),s("launchBar.actions",(e=>{e.push({name:"devClientActions",getActions:async()=>{const{devClient:e}=await Promise.resolve().then(o.bind(o,583)),t=[];return e.isConnected?t.push({name:"断开 DevServer 连接",description:"Disconnect from DevServer",icon:"mdi-stop-circle-outline",action:()=>e.closeSocket()}):t.push({name:"连接 DevServer",description:"Connect to DevServer",icon:"mdi-play-circle-outline",action:async()=>{await e.createSocket(!0)}}),t}})})))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=o(456);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,626,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +s=Boolean(window&&document&&document.all&&!window.atob)),s},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),r=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>p});var s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{directives:[{name:"show",rawName:"v-show",value:e.isConnected,expression:"isConnected"}]},[e.canStartDebug?t("div",{staticClass:"component-action dev-client-action",on:{click:e.startDebug}},[e.busy?t("VIcon",{attrs:{icon:"mdi-network-outline",size:16}}):t("VIcon",{attrs:{icon:"mdi-play-network-outline",size:16}}),e._v("\n "+e._s(e.busy?"启动中":"开始调试")+"\n ")],1):e._e(),e._v(" "),e.canStopDebug?t("div",{staticClass:"component-action dev-client-action",on:{click:e.stopDebug}},[e.busy?t("VIcon",{attrs:{icon:"mdi-network-outline",size:16}}):t("VIcon",{attrs:{icon:"mdi-minus-network-outline",size:16}}),e._v("\n "+e._s(e.busy?"停止中":"停止调试")+"\n ")],1):e._e()])};s._withStripped=!0;var o=n(391),i=n(648),r=n(583),a=n(278);const c=(0,a.Ub)(),d=e=>{if(!e)return null;if(e.match(new RegExp(`localhost:${c.port}\\/registry\\/components\\/(.+)$`)))return e;const t=e.match(/localhost:(\d+?)\/components\/(.+)$/);if(t)return`http://localhost:${c.port}/registry/dist/components/${t[2]}`;const n=e.match(/\/registry\/dist\/components\/(.+)$/);return n?`http://localhost:${c.port}/registry/dist/components/${n[1]}`:null},l=(0,a.Ub)(),u=Vue.extend({components:{VIcon:i.VIcon},props:{item:{type:Object,required:!0},component:{type:Object,required:!0}},data:()=>({busy:!1,autoUpdateComponents:a.Db.urls.components,sessions:[],isConnected:!1}),computed:{autoUpdateRecord(){const e=this.component;return this.autoUpdateComponents[e.name]},componentUpdateUrl(){return this.autoUpdateRecord?.url},isDebugging(){return this.componentUpdateUrl&&this.sessions.some((e=>{const{pathname:t}=new URL(this.componentUpdateUrl);return e===t}))},canStartDebug(){return!this.isDebugging&&null!==d(this.componentUpdateUrl)},canStopDebug(){return Boolean(this.isDebugging&&this.componentUpdateUrl)}},async created(){const{devClient:e}=await Promise.resolve().then(n.bind(n,583));this.sessions=e.sessions,this.isConnected=e.isConnected,e.addEventListener(r.DevClientEvents.ServerChange,this.handleServerChange),e.addEventListener(r.DevClientEvents.SessionsUpdate,this.handleSessionsUpdate)},async beforeDestroy(){const{devClient:e}=await Promise.resolve().then(n.bind(n,583));e.removeEventListener(r.DevClientEvents.SessionsUpdate,this.handleSessionsUpdate)},methods:{handleSessionsUpdate(e){this.sessions=e.detail},handleServerChange(e){this.isConnected=e.detail},async handleClick(e){if(!this.busy)try{this.busy=!0,await e()}finally{this.busy=!1}},async startDebug(){await this.handleClick((async()=>{const{devClient:e}=await Promise.resolve().then(n.bind(n,583)),t=this.component,s=d(this.componentUpdateUrl);this.autoUpdateRecord.url!==s&&(l.devRecords[t.name]={name:t.name,originalUrl:this.componentUpdateUrl},this.autoUpdateRecord.url=s);const i=o.Toast.info("启动调试中...","DevClient");try{await e.startDebug(this.autoUpdateRecord.url)}catch(e){console.error(e)}finally{i.close()}}))},async stopDebug(){await this.handleClick((async()=>{const{devClient:e}=await Promise.resolve().then(n.bind(n,583)),t=this.component,{pathname:s}=new URL(this.componentUpdateUrl);e.isConnected&&await e.stopDebug(s),l.devRecords[t.name]&&(this.autoUpdateRecord.url=l.devRecords[t.name].originalUrl,delete l.devRecords[t.name])}))}}});const p=(0,n(893).Z)(u,s,[],!1,null,null,null).exports},290:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"be-dev-client"},[t("div",{staticClass:"title"},[e._v("DevClient")]),e._v(" "),t("div",{staticClass:"connection-status"},[e.isConnected?[t("div",{staticClass:"status-dot connected"}),e._v(" "),t("div",{staticClass:"status-text"},[e._v("已连接")]),e._v(" "),t("AsyncButton",{attrs:{title:"断开连接"},on:{click:e.disconnect}},[t("VIcon",{attrs:{icon:"mdi-stop",size:14}}),e._v("\n 断开连接\n ")],1)]:[t("div",{staticClass:"status-dot disconnected"}),e._v(" "),t("div",{staticClass:"status-text"},[e._v("未连接")]),e._v(" "),t("AsyncButton",{attrs:{title:"连接"},on:{click:e.connect}},[t("VIcon",{attrs:{icon:"mdi-play",size:14}}),e._v("\n 连接\n ")],1)]],2)])};s._withStripped=!0;var o=n(648),i=n(583);const r=Vue.extend({components:{AsyncButton:o.AsyncButton,VIcon:o.VIcon},data:()=>({client:null,isConnected:!1}),async created(){const{devClient:e}=await Promise.resolve().then(n.bind(n,583));this.client=e,this.updateConnectionStatus(),e.addEventListener(i.DevClientEvents.ServerChange,this.updateConnectionStatus)},beforeDestroy(){this.client.removeEventListener(i.DevClientEvents.ServerChange,this.updateConnectionStatus)},methods:{async connect(){return this.client.createSocket(!0)},disconnect(){this.client.closeSocket()},updateConnectionStatus(){this.isConnected=this.client.isConnected}}});var a=n(332),c=n.n(a),d=n(906),l=n.n(d),u={insert:"head",singleton:!1};c()(l(),u);l().locals;const p=(0,n(893).Z)(r,s,[],!1,null,"b4ec1a08",null).exports},893:(e,t,n)=>{"use strict";function s(e,t,n,s,o,i,r,a){var c,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),s&&(d.functional=!0),i&&(d._scopeId="data-v-"+i),r?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},d._ssrRegister=c):o&&(c=a?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(d.functional){d._injectStyles=c;var l=d.render;d.render=function(e,t){return c.call(t),l(e,t)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,c):[c]}return{exports:e,options:d}}n.d(t,{Z:()=>s})},456:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=456,e.exports=t},626:e=>{"use strict";e.exports="本地开发工具, 提供自动更新功能和样式热重载的能力, 需要与 DevServer 配合使用. (DevServer 的使用方式见 [CONTRIBUTING.md](https://github.com/the1812/Bilibili-Evolved/blob/preview/CONTRIBUTING.md))\n\n`自动连接` 开启时, 每次进入网页都会自动尝试连接到 DevServer, 如果关闭则需要手动操作连接.\n\n`刷新策略` 决定了收到本体或者功能更新的消息时是否刷新:\n - **总是刷新**: 收到更新时立即刷新页面\n - 不刷新: 收到更新时不刷新页面\n\n`热重载策略` 决定了是否开启热重载功能, 只要成功触发热重载, 就不刷新页面:\n - **开启热重载**: 功能带有 `instantStyles` 时, 热重载 `instantStyles` 中的样式\n - 关闭热重载: 收到更新时按 `刷新策略` 执行\n\n> 目前就这两个选项, 将来可能会支持对 `entry` 的热重载\n"},952:e=>{"use strict";e.exports=coreApis.componentApis.define},890:e=>{"use strict";e.exports=coreApis.installFeature},391:e=>{"use strict";e.exports=coreApis.toast},648:e=>{"use strict";e.exports=coreApis.ui},605:e=>{"use strict";e.exports=coreApis.utils}},s={};function o(e){var t=s[e];if(void 0!==t)return t.exports;var i=s[e]={id:e,exports:{}};return n[e](i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,s){if(1&s&&(n=this(n)),8&s)return n;if("object"==typeof n&&n){if(4&s&&n.__esModule)return n;if(16&s&&"function"==typeof n.then)return n}var i=Object.create(null);o.r(i);var r={};e=e||[null,t({}),t([]),t(t)];for(var a=2&s&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>r[e]=()=>n[e]));return r.default=()=>n,o.d(i,r),i},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{component:()=>s});var e=o(952),t=o(605),n=o(278);const s=(0,e.defineComponentMetadata)({name:"devClient",displayName:"DevClient",tags:[componentsTags.utils],entry:async e=>{let{settings:{options:s}}=e;if((0,t.isIframe)())return;const{devClient:i,DevClientEvents:r}=await Promise.resolve().then(o.bind(o,583));i.addEventListener(r.ServerConnected,(()=>{i.addEventListener(r.SessionsUpdate,(()=>{Object.entries(s.devRecords).forEach((e=>{let[,{name:t,originalUrl:o}]=e;const r=n.Db.urls.components[t];if(!r)return;const a=r.url;i.sessions.find((e=>a.endsWith(e)))||(r.url=o,console.log("cleanUpDevRecords",t,a,o,r),delete s.devRecords[t])}))}),{once:!0})})),s.autoConnect&&i.createSocket()},options:n.j4,widget:{component:()=>Promise.resolve().then(o.bind(o,290)).then((e=>e.default))},plugin:{setup:async e=>{let{addData:s}=e;(0,t.isIframe)()||(s("settingsPanel.componentActions",(e=>{e.push((e=>{if(!n.Db.urls.components[e.name])return;return{name:"devClient",component:()=>Promise.resolve().then(o.bind(o,8))}}))})),s("launchBar.actions",(e=>{e.push({name:"devClientActions",getActions:async()=>{const{devClient:e}=await Promise.resolve().then(o.bind(o,583)),t=[];return e.isConnected?t.push({name:"断开 DevServer 连接",description:"Disconnect from DevServer",icon:"mdi-stop-circle-outline",action:()=>e.closeSocket()}):t.push({name:"连接 DevServer",description:"Connect to DevServer",icon:"mdi-play-circle-outline",action:async()=>{await e.createSocket(!0)}}),t}})})))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=o(456);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,626,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/download-audio.js b/bb-evolved/registry/dist/components/utils/download-audio.js index 2833e8cee3..3b7e2fa7c7 100644 --- a/bb-evolved/registry/dist/components/utils/download-audio.js +++ b/bb-evolved/registry/dist/components/utils/download-audio.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/download-audio"]=t():e["utils/download-audio"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={468:(e,t,o)=>{o.r(t),o.d(t,{default:()=>u});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{attrs:{disabled:e.disabled||e.downloading,name:e.progress||"下载音频",icon:"mdi-download"},on:{click:function(t){return e.download()}}})};n._withStripped=!0;const r=coreApis.spinQuery,i=coreApis.observer,s=coreApis.download,a=coreApis.ui;function d(e,t,o){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}class l{constructor(){d(this,"progress",null),d(this,"sid",void 0)}async getDownloadUrl(){const{getJsonWithCredentials:e}=await Promise.resolve().then(o.t.bind(o,375,23)),{Toast:t}=await Promise.resolve().then(o.t.bind(o,391,23)),n=`https://www.bilibili.com/audio/music-service-c/web/url?sid=${this.sid}&privilege=2&quality=2`,r=await e(n);return 0!==r.code?(t.error("获取下载链接失败, 请确保当前账号有下载权限.","下载音频",1e4),null):r.data.cdns.shift()}async download(){const e=await this.getDownloadUrl();return new Promise(((t,o)=>{const n=new XMLHttpRequest;n.open("GET",e),n.responseType="blob",n.addEventListener("load",(()=>t(n.response))),n.addEventListener("error",(()=>o(n.status))),n.addEventListener("progress",(e=>this.progress?.(100*e.loaded/e.total))),n.send()}))}}var c=function(e,t,o,n,r,i,s,a){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=o,l._compiled=!0),n&&(l.functional=!0),i&&(l._scopeId="data-v-"+i),s?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=d):r&&(d=a?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),d)if(l.functional){l._injectStyles=d;var c=l.render;l.render=function(e,t){return d.call(t),c(e,t)}}else{var u=l.beforeCreate;l.beforeCreate=u?[].concat(u,d):[d]}return{exports:e,options:l}}(Vue.extend({components:{DefaultWidget:a.DefaultWidget},data:()=>({progress:"",disabled:!0,downloader:new l,downloading:!1}),async mounted(){const e=await(0,r.select)("#app"),t=this.downloader;t.progress=e=>{this.progress=`${Math.round(e)}%`},(0,i.childList)(e,(()=>{const e=document.URL.match(/bilibili\.com\/audio\/au([\d]+)/);e&&e[1]?(this.disabled=!1,[,t.sid]=e):this.disabled=!0}))},methods:{async download(){if(!this.downloading){this.downloading=!0;try{const e=this.downloader;if(null===e.sid)return;const t=await e.download(),o=`${(()=>{const e=document.querySelector(".song-title");return e?e.getAttribute("title"):"神秘音频"})()}.mp3`;this.progress="",await s.DownloadPackage.single(o,t)}finally{this.downloading=!1}}}}}),n,[],!1,null,null,null);const u=c.exports},375:e=>{e.exports=coreApis.ajax},391:e=>{e.exports=coreApis.toast}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"downloadAudio",displayName:"下载音频",entry:none,tags:[componentsTags.utils],description:{"zh-CN":"\n开启音频下载支持, 音频页面中可以在功能面板中下载当前音频.\n\n> 需要进入音频的详细信息页面才能下载, 在其他页面中此按钮将不可点击.\n ".trim()},widget:{component:()=>Promise.resolve().then(r.bind(r,468)).then((e=>e.default))},urlInclude:["//www.bilibili.com/audio/"],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/download-audio"]=t():e["utils/download-audio"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={468:(e,t,o)=>{o.r(t),o.d(t,{default:()=>u});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{attrs:{disabled:e.disabled||e.downloading,name:e.progress||"下载音频",icon:"mdi-download"},on:{click:function(t){return e.download()}}})};n._withStripped=!0;const r=coreApis.spinQuery,i=coreApis.observer,s=coreApis.download,a=coreApis.ui;function d(e,t,o){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}class l{constructor(){d(this,"progress",null),d(this,"sid",void 0)}async getDownloadUrl(){const{getJsonWithCredentials:e}=await Promise.resolve().then(o.t.bind(o,375,23)),{Toast:t}=await Promise.resolve().then(o.t.bind(o,391,23)),n=`https://www.bilibili.com/audio/music-service-c/web/url?sid=${this.sid}&privilege=2&quality=2`,r=await e(n);return 0!==r.code?(t.error("获取下载链接失败, 请确保当前账号有下载权限.","下载音频",1e4),null):r.data.cdns.shift()}async download(){const e=await this.getDownloadUrl();return new Promise(((t,o)=>{const n=new XMLHttpRequest;n.open("GET",e),n.responseType="blob",n.addEventListener("load",(()=>t(n.response))),n.addEventListener("error",(()=>o(n.status))),n.addEventListener("progress",(e=>this.progress?.(100*e.loaded/e.total))),n.send()}))}}var c=function(e,t,o,n,r,i,s,a){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=o,l._compiled=!0),n&&(l.functional=!0),i&&(l._scopeId="data-v-"+i),s?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=d):r&&(d=a?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),d)if(l.functional){l._injectStyles=d;var c=l.render;l.render=function(e,t){return d.call(t),c(e,t)}}else{var u=l.beforeCreate;l.beforeCreate=u?[].concat(u,d):[d]}return{exports:e,options:l}}(Vue.extend({components:{DefaultWidget:a.DefaultWidget},data:()=>({progress:"",disabled:!0,downloader:new l,downloading:!1}),async mounted(){const e=await(0,r.select)("#app"),t=this.downloader;t.progress=e=>{this.progress=`${Math.round(e)}%`},(0,i.childList)(e,(()=>{const e=document.URL.match(/bilibili\.com\/audio\/au([\d]+)/);e&&e[1]?(this.disabled=!1,[,t.sid]=e):this.disabled=!0}))},methods:{async download(){if(!this.downloading){this.downloading=!0;try{const e=this.downloader;if(null===e.sid)return;const t=await e.download(),o=`${(()=>{const e=document.querySelector(".song-title");return e?e.getAttribute("title"):"神秘音频"})()}.mp3`;this.progress="",await s.DownloadPackage.single(o,t)}finally{this.downloading=!1}}}}}),n,[],!1,null,null,null);const u=c.exports},375:e=>{e.exports=coreApis.ajax},391:e=>{e.exports=coreApis.toast}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(i,s),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{r.d(i,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"downloadAudio",displayName:"下载音频",entry:none,tags:[componentsTags.utils],description:{"zh-CN":"\n开启音频下载支持, 音频页面中可以在功能面板中下载当前音频.\n\n> 需要进入音频的详细信息页面才能下载, 在其他页面中此按钮将不可点击.\n ".trim()},widget:{component:()=>Promise.resolve().then(r.bind(r,468)).then((e=>e.default))},urlInclude:["//www.bilibili.com/audio/"],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/image-exporter.js b/bb-evolved/registry/dist/components/utils/image-exporter.js index 230a802ce6..b94be6a15a 100644 --- a/bb-evolved/registry/dist/components/utils/image-exporter.js +++ b/bb-evolved/registry/dist/components/utils/image-exporter.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/image-exporter"]=t():e["utils/image-exporter"]=t()}(globalThis,(()=>(()=>{var e,t,o={937:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>m});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{attrs:{name:"导出图片",icon:"mdi-export",disabled:e.busy},on:{click:function(t){return e.exportImages()}}})};n._withStripped=!0;var r=o(375),s=o(444);const i=coreApis.settings;var a=o(391),c=o(605);const l=coreApis.utils.log;var u=o(674);const d=coreApis.ui;var p=function(e,t,o,n,r,s,i,a){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=o,l._compiled=!0),n&&(l.functional=!0),s&&(l._scopeId="data-v-"+s),i?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=c):r&&(c=a?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:e,options:l}}(Vue.extend({components:{DefaultWidget:d.DefaultWidget},data:()=>({busy:!1}),methods:{async exportImages(){const{columnFormat:e}=(0,i.getComponentSettings)("imageExporter").options,t=a.Toast.info("下载中...","导出图片");this.busy=!0;try{const o=[],n=dq(".banner-image .card-image__image"),i=(0,c.retrieveImageUrl)(n);i&&(o.push({...i,name:`${(0,u.formatTitle)(e,!1,{n:"1"})}${i.extension}`}),console.log(n,i,o));if(dqa('.article-content .img-box img:not([class*="cut-off-"])').forEach((t=>{const n=(0,c.retrieveImageUrl)(t);n&&o.push({...n,name:`${(0,u.formatTitle)(e,!1,{n:(o.length+1).toString()})}${n.extension}`})})),0===o.length)return void a.Toast.info("此页面没有检测到任何可导出图片.","图片导出");let l=0;const d=await Promise.all(o.map((async e=>{let{url:n}=e;const s=await(0,r.getBlob)(n);return l++,t.message=`下载中... (${l}/${o.length})`,s}))),p=new s.DownloadPackage;d.forEach(((e,t)=>p.add(o[t].name,e))),await p.emit(`${(0,u.formatTitle)(e,!1,{n:""})}.zip`)}catch(e){(0,l.logError)(e)}finally{this.busy=!1,t.close()}}}}),n,[],!1,null,null,null);const m=p.exports},79:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=79,e.exports=t},87:e=>{"use strict";e.exports="可以批量导出某个地方的图片, 目前支持动态和专栏.\n\n动态文件名变量:\n- `user`: 用户名\n- `originalUser`: 被转发用户名, 如果不是转发类型的动态则等于 `user`\n- `id`: 动态 ID\n- `n`: 第 n 张图\n\n专栏文件名变量:\n- `title`: 专栏标题\n- `n`: 第 n 张图"},375:e=>{"use strict";e.exports=coreApis.ajax},444:e=>{"use strict";e.exports=coreApis.download},391:e=>{"use strict";e.exports=coreApis.toast},674:e=>{"use strict";e.exports=coreApis.utils.title},605:e=>{"use strict";e.exports=coreApis.utils}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={exports:{}};return o[e](s,s.exports,r),s.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var s=Object.create(null);r.r(s);var i={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,r.d(s,i),s},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";r.d(s,{component:()=>d});const e=coreApis.componentApis.define;var t=r(605);const o=coreApis.utils.urls,n=coreApis.componentApis.feeds.api;var i=r(375),a=r(444),c=r(391),l=r(674);const u=(0,e.defineOptionsMetadata)({columnFormat:{defaultValue:"[title][ - n]",displayName:"专栏图片命名格式"},feedFormat:{defaultValue:"[user][ - id][ - n]",displayName:"动态图片命名格式"}}),d=(0,e.defineComponentMetadata)({name:"imageExporter",displayName:"图片批量导出",tags:[componentsTags.feeds,componentsTags.utils],entry:async e=>{await(async e=>{let{settings:{options:r}}=e;if(!o.feedsUrls.some((e=>(0,t.matchUrlPattern)(e))))return;(0,n.forEachFeedsCard)({added:e=>{(0,n.addMenuItem)(e,{className:"image-export",text:"导出图片",action:async()=>{const o=[];if(dqa(e.element,".main-content .img-content, .bili-album__preview__picture__img, .bili-album .preview__picture__img").forEach((e=>{const n=(0,t.retrieveImageUrl)(e);n&&!o.some((e=>{let{url:t}=e;return t===n.url}))&&o.push(n)})),0===o.length)return void c.Toast.info("此条动态没有检测到任何图片.","导出图片");const n=c.Toast.info("下载中...","导出图片");let s=0;const u=await Promise.all(o.map((async e=>{let{url:t}=e;const r=await(0,i.getBlob)(t);return s++,n.message=`下载中... (${s}/${o.length})`,r}))),d=new a.DownloadPackage,{feedFormat:p}=r;u.forEach(((t,n)=>{const r={user:e.username,id:e.id,originalUser:e.repostUsername??e.username,n:(n+1).toString()};d.add(`${(0,l.formatTitle)(p,!1,r)}${o[n].extension}`,t)})),n.close();const m={user:e.username,id:e.id,originalUser:e.repostUsername??e.username,n:""};await d.emit(`${(0,l.formatTitle)(p,!1,m)}.zip`)}})}})})(e)},widget:{condition:()=>o.columnUrls.some((e=>(0,t.matchUrlPattern)(e))),component:()=>Promise.resolve().then(r.bind(r,937)).then((e=>e.default))},urlInclude:[...o.feedsUrls,...o.columnUrls],options:u,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(79);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,87,17)).then((e=>e.default))}})()})})(),s=s.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/image-exporter"]=t():e["utils/image-exporter"]=t()}(globalThis,(()=>(()=>{var e,t,o={937:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>m});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{attrs:{name:"导出图片",icon:"mdi-export",disabled:e.busy},on:{click:function(t){return e.exportImages()}}})};n._withStripped=!0;var r=o(375),s=o(444);const i=coreApis.settings;var a=o(391),c=o(605);const l=coreApis.utils.log;var u=o(674);const d=coreApis.ui;var p=function(e,t,o,n,r,s,i,a){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=o,l._compiled=!0),n&&(l.functional=!0),s&&(l._scopeId="data-v-"+s),i?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=c):r&&(c=a?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:e,options:l}}(Vue.extend({components:{DefaultWidget:d.DefaultWidget},data:()=>({busy:!1}),methods:{async exportImages(){const{columnFormat:e}=(0,i.getComponentSettings)("imageExporter").options,t=a.Toast.info("下载中...","导出图片");this.busy=!0;try{const o=[],n=dq(".banner-image .card-image__image"),i=(0,c.retrieveImageUrl)(n);i&&(o.push({...i,name:`${(0,u.formatTitle)(e,!1,{n:"1"})}${i.extension}`}),console.log(n,i,o));if(dqa('.article-content .img-box img:not([class*="cut-off-"])').forEach((t=>{const n=(0,c.retrieveImageUrl)(t);n&&o.push({...n,name:`${(0,u.formatTitle)(e,!1,{n:(o.length+1).toString()})}${n.extension}`})})),0===o.length)return void a.Toast.info("此页面没有检测到任何可导出图片.","图片导出");let l=0;const d=await Promise.all(o.map((async e=>{let{url:n}=e;const s=await(0,r.getBlob)(n);return l++,t.message=`下载中... (${l}/${o.length})`,s}))),p=new s.DownloadPackage;d.forEach(((e,t)=>p.add(o[t].name,e))),await p.emit(`${(0,u.formatTitle)(e,!1,{n:""})}.zip`)}catch(e){(0,l.logError)(e)}finally{this.busy=!1,t.close()}}}}),n,[],!1,null,null,null);const m=p.exports},79:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=79,e.exports=t},87:e=>{"use strict";e.exports="可以批量导出某个地方的图片, 目前支持动态和专栏.\n\n动态文件名变量:\n- `user`: 用户名\n- `originalUser`: 被转发用户名, 如果不是转发类型的动态则等于 `user`\n- `id`: 动态 ID\n- `n`: 第 n 张图\n\n专栏文件名变量:\n- `title`: 专栏标题\n- `n`: 第 n 张图"},375:e=>{"use strict";e.exports=coreApis.ajax},444:e=>{"use strict";e.exports=coreApis.download},391:e=>{"use strict";e.exports=coreApis.toast},674:e=>{"use strict";e.exports=coreApis.utils.title},605:e=>{"use strict";e.exports=coreApis.utils}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={exports:{}};return o[e](s,s.exports,r),s.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var s=Object.create(null);r.r(s);var i={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,r.d(s,i),s},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";r.d(s,{component:()=>d});const e=coreApis.componentApis.define;var t=r(605);const o=coreApis.utils.urls,n=coreApis.componentApis.feeds.api;var i=r(375),a=r(444),c=r(391),l=r(674);const u=(0,e.defineOptionsMetadata)({columnFormat:{defaultValue:"[title][ - n]",displayName:"专栏图片命名格式"},feedFormat:{defaultValue:"[user][ - id][ - n]",displayName:"动态图片命名格式"}}),d=(0,e.defineComponentMetadata)({name:"imageExporter",displayName:"图片批量导出",tags:[componentsTags.feeds,componentsTags.utils],entry:async e=>{await(async e=>{let{settings:{options:r}}=e;if(!o.feedsUrls.some((e=>(0,t.matchUrlPattern)(e))))return;(0,n.forEachFeedsCard)({added:e=>{(0,n.addMenuItem)(e,{className:"image-export",text:"导出图片",action:async()=>{const o=[];if(dqa(e.element,".main-content .img-content, .bili-album__preview__picture__img, .bili-album .preview__picture__img").forEach((e=>{const n=(0,t.retrieveImageUrl)(e);n&&!o.some((e=>{let{url:t}=e;return t===n.url}))&&o.push(n)})),0===o.length)return void c.Toast.info("此条动态没有检测到任何图片.","导出图片");const n=c.Toast.info("下载中...","导出图片");let s=0;const u=await Promise.all(o.map((async e=>{let{url:t}=e;const r=await(0,i.getBlob)(t);return s++,n.message=`下载中... (${s}/${o.length})`,r}))),d=new a.DownloadPackage,{feedFormat:p}=r;u.forEach(((t,n)=>{const r={user:e.username,id:e.id,originalUser:e.repostUsername??e.username,n:(n+1).toString()};d.add(`${(0,l.formatTitle)(p,!1,r)}${o[n].extension}`,t)})),n.close();const m={user:e.username,id:e.id,originalUser:e.repostUsername??e.username,n:""};await d.emit(`${(0,l.formatTitle)(p,!1,m)}.zip`)}})}})})(e)},widget:{condition:()=>o.columnUrls.some((e=>(0,t.matchUrlPattern)(e))),component:()=>Promise.resolve().then(r.bind(r,937)).then((e=>e.default))},urlInclude:[...o.feedsUrls,...o.columnUrls],options:u,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(79);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,87,17)).then((e=>e.default))}})()})})(),s=s.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/image-resolution.js b/bb-evolved/registry/dist/components/utils/image-resolution.js index 94c0c517f4..6593edda09 100644 --- a/bb-evolved/registry/dist/components/utils/image-resolution.js +++ b/bb-evolved/registry/dist/components/utils/image-resolution.js @@ -6,4 +6,4 @@ e.i=function(t,o,n){"string"==typeof t&&( // eslint-disable-next-line no-param-reassign t=[[null,t,""]]);var r={};if(n)for(var i=0;i{var n=o(99);n&&n.__esModule&&(n=n.default),t.exports="string"==typeof n?n:n.toString()},391:t=>{"use strict";t.exports=coreApis.observer}},n={};function r(t){var e=n[t];if(void 0!==e)return e.exports;var i=n[t]={id:t,exports:{}};return o[t](i,i.exports,r),i.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};t=t||[null,e({}),e([]),e(e)];for(var s=2&n&&o;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((t=>a[t]=()=>o[t]));return a.default=()=>o,r.d(i,a),i},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>f});const t=coreApis.componentApis.define,e=coreApis.componentApis.styledComponent,o=/@(\d+)[Ww]_(\d+)[Hh]/,n=["#certify-img1","#certify-img2"],a=[".bili-avatar-img"],s=[".logo-img"],c=(t,e)=>{const o=document.createNodeIterator(t,NodeFilter.SHOW_ELEMENT);let n=o.nextNode();for(;n;)e(n),n=o.nextNode()},u=async(t,e)=>{const{attributes:i}=await Promise.resolve().then(r.t.bind(r,391,23)),c=(r,i)=>{const c=r(e);if(null===c)return;if(n.some((t=>e.matches(t))))return;if(c.includes(","))return;const u=c.match(o);if(!u)return;const[,l,d]=u,f=parseInt(e.getAttribute("data-resolution-width")||"0");if(parseInt(l)>=f&&0!==f)return;null===e.getAttribute("width")&&null===e.getAttribute("height")&&(s.some((t=>e.matches(t)))?(e.setAttribute("height",d),e.setAttribute("width",l)):a.some((t=>e.matches(t)))?e.setAttribute("height",d):e.setAttribute("width",l));const p=Math.round(t*parseInt(l)).toString(),m=Math.round(t*parseInt(d)).toString();e.setAttribute("data-resolution-width",p),i(e,c.replace(o,`@${p}w_${m}h`))};i(e,(()=>{c((t=>t.getAttribute("src")),((t,e)=>t.setAttribute("src",e))),c((t=>t.getAttribute("srcset")),((t,e)=>t.setAttribute("srcset",e))),c((t=>t.style.backgroundImage),((t,e)=>t.style.backgroundImage=e))}))},l=(0,e.styledComponentEntry)((()=>Promise.resolve().then(r.t.bind(r,22,23))),(async t=>{let{settings:e}=t;const{allMutations:o}=await Promise.resolve().then(r.t.bind(r,391,23)),n="auto"===e.options.scale?window.devicePixelRatio:parseFloat(e.options.scale);c(document.body,(t=>u(n,t))),o((t=>{t.forEach((t=>t.addedNodes.forEach((t=>{t instanceof HTMLElement&&(u(n,t),"IMG"!==t.nodeName.toUpperCase()&&c(t,(t=>u(n,t))))}))))}))})),d=(0,t.defineOptionsMetadata)({scale:{displayName:"缩放级别",defaultValue:"auto",hidden:!0}}),f=(0,t.defineComponentMetadata)({name:"imageResolution",displayName:"高分辨率图片",tags:[componentsTags.utils],enabledByDefault:window.devicePixelRatio>1,entry:l,description:{"zh-CN":"根据屏幕 DPI 请求更高分辨率的图片, 例如 DPI 缩放 200% 则请求 2 倍的分辨率, 加载时间也会相应变长一些. (也会导致某些浏览器里出现图片闪动, 因为本质上是更换了图片源)"},options:d,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var n=o(99);n&&n.__esModule&&(n=n.default),t.exports="string"==typeof n?n:n.toString()},391:t=>{"use strict";t.exports=coreApis.observer}},n={};function r(t){var e=n[t];if(void 0!==e)return e.exports;var i=n[t]={id:t,exports:{}};return o[t](i,i.exports,r),i.exports}e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};t=t||[null,e({}),e([]),e(e)];for(var s=2&n&&o;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((t=>a[t]=()=>o[t]));return a.default=()=>o,r.d(i,a),i},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>f});const t=coreApis.componentApis.define,e=coreApis.componentApis.styledComponent,o=/@(\d+)[Ww]_(\d+)[Hh]/,n=["#certify-img1","#certify-img2"],a=[".bili-avatar-img"],s=[".logo-img"],c=(t,e)=>{const o=document.createNodeIterator(t,NodeFilter.SHOW_ELEMENT);let n=o.nextNode();for(;n;)e(n),n=o.nextNode()},u=async(t,e)=>{const{attributes:i}=await Promise.resolve().then(r.t.bind(r,391,23)),c=(r,i)=>{const c=r(e);if(null===c)return;if(n.some((t=>e.matches(t))))return;if(c.includes(","))return;const u=c.match(o);if(!u)return;const[,l,d]=u,f=parseInt(e.getAttribute("data-resolution-width")||"0");if(parseInt(l)>=f&&0!==f)return;null===e.getAttribute("width")&&null===e.getAttribute("height")&&(s.some((t=>e.matches(t)))?(e.setAttribute("height",d),e.setAttribute("width",l)):a.some((t=>e.matches(t)))?e.setAttribute("height",d):e.setAttribute("width",l));const p=Math.round(t*parseInt(l)).toString(),m=Math.round(t*parseInt(d)).toString();e.setAttribute("data-resolution-width",p),i(e,c.replace(o,`@${p}w_${m}h`))};i(e,(()=>{c((t=>t.getAttribute("src")),((t,e)=>t.setAttribute("src",e))),c((t=>t.getAttribute("srcset")),((t,e)=>t.setAttribute("srcset",e))),c((t=>t.style.backgroundImage),((t,e)=>t.style.backgroundImage=e))}))},l=(0,e.styledComponentEntry)((()=>Promise.resolve().then(r.t.bind(r,22,23))),(async t=>{let{settings:e}=t;const{allMutations:o}=await Promise.resolve().then(r.t.bind(r,391,23)),n="auto"===e.options.scale?window.devicePixelRatio:parseFloat(e.options.scale);c(document.body,(t=>u(n,t))),o((t=>{t.forEach((t=>t.addedNodes.forEach((t=>{t instanceof HTMLElement&&(u(n,t),"IMG"!==t.nodeName.toUpperCase()&&c(t,(t=>u(n,t))))}))))}))})),d=(0,t.defineOptionsMetadata)({scale:{displayName:"缩放级别",defaultValue:"auto",hidden:!0}}),f=(0,t.defineComponentMetadata)({name:"imageResolution",displayName:"高分辨率图片",tags:[componentsTags.utils],enabledByDefault:window.devicePixelRatio>1,entry:l,description:{"zh-CN":"根据屏幕 DPI 请求更高分辨率的图片, 例如 DPI 缩放 200% 则请求 2 倍的分辨率, 加载时间也会相应变长一些. (也会导致某些浏览器里出现图片闪动, 因为本质上是更换了图片源)"},options:d,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/import-series.js b/bb-evolved/registry/dist/components/utils/import-series.js index 8fbf87d351..2694f08c61 100644 --- a/bb-evolved/registry/dist/components/utils/import-series.js +++ b/bb-evolved/registry/dist/components/utils/import-series.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/import-series"]=t():e["utils/import-series"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var a in i)e.o(i,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:i[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>c});const i=coreApis.componentApis.define,a=coreApis.utils,o=coreApis.spinQuery,s=coreApis.observer,n=coreApis.toast,r=async()=>{let e=function(e){return e[e.Collection=0]="Collection",e[e.Series=1]="Series",e}({});const t=new URL(window.location.href);let i,s;if(t.pathname.includes("seriesdetail"))s=t.searchParams.get("sid"),i=e.Series;else{if(!t.pathname.includes("collectiondetail"))return;s=t.searchParams.get("sid"),i=e.Collection}const r=t.pathname.split("/")[1],c=(0,a.getCsrf)(),l=await(0,o.select)(".page-head"),d=l.children[1],p=document.createElement("a");p.className="paly-all-btn",p.textContent="一键收藏",p.style.cssText="\n right: 6rem;\n display: block;\n text-align: center;\n width: 65px;\n ",l.insertBefore(p,d),p.onclick=async()=>{i===e.Series?await(async(e,t,i)=>{const s=(await fetch(`https://api.bilibili.com/x/series/archives?mid=${t}&series_id=${e}&only_normal=true&sort=desc&pn=1&ps=99999`).then((e=>e.json()))).data.archives,r=await(0,o.sq)((()=>document.getElementsByClassName("item cur")[0].innerHTML),(e=>""!==e));let c=0;for(;;){const e=await fetch("https://api.bilibili.com/x/v3/fav/folder/add",{method:"POST",credentials:"include",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`title=${r}&csrf=${i}&privacy=0`}).then((e=>e.json()));if(0===e.code){c=e.data.id;break}await(0,a.delay)(2e3)}const l=" 过久未动即触发风控,等待一段时间自动继续",d=n.Toast.info(`0 / ${s.length}${l}`,"收藏系列");for(let e=0;ee.json()))).code){d.message=`${e+1} / ${s.length}${l}`;break}{const e=2e3*Math.random()+2e3;console.log(`请求失败,等待${(e/1e3).toFixed(1)}s后重试`),await(0,a.delay)(e)}}d.duration=1e3,n.Toast.success("完成","收藏系列",2e3)})(s,r,c):await(async(e,t)=>{for(;;){if(0===(await fetch("https://api.bilibili.com/x/v3/fav/season/fav",{method:"POST",credentials:"include",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`platform=web&season_id=${e}&csrf=${t}`}).then((e=>e.json()))).code){n.Toast.success("成功","导入合集",2e3);break}await(0,a.delay)(2e3)}})(s,c)}},c=(0,i.defineComponentMetadata)({name:"importSeries",author:{name:"aiden",link:"https://github.com/swhoro"},displayName:"批量导入合集",tags:[componentsTags.utils],entry:()=>{(0,s.urlChange)((()=>{r()}))},description:{"zh-CN":"在合集页面制作一个批量导入按钮,可以新增所有合集内视频至同名收藏夹"},urlInclude:[/^https:\/\/space\.bilibili\.com\//],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return t=t.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/import-series"]=t():e["utils/import-series"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var a in i)e.o(i,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:i[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>c});const i=coreApis.componentApis.define,a=coreApis.utils,o=coreApis.spinQuery,s=coreApis.observer,n=coreApis.toast,r=async()=>{let e=function(e){return e[e.Collection=0]="Collection",e[e.Series=1]="Series",e}({});const t=new URL(window.location.href);let i,s;if(t.pathname.includes("seriesdetail"))s=t.searchParams.get("sid"),i=e.Series;else{if(!t.pathname.includes("collectiondetail"))return;s=t.searchParams.get("sid"),i=e.Collection}const r=t.pathname.split("/")[1],c=(0,a.getCsrf)(),l=await(0,o.select)(".page-head"),d=l.children[1],p=document.createElement("a");p.className="paly-all-btn",p.textContent="一键收藏",p.style.cssText="\n right: 6rem;\n display: block;\n text-align: center;\n width: 65px;\n ",l.insertBefore(p,d),p.onclick=async()=>{i===e.Series?await(async(e,t,i)=>{const s=(await fetch(`https://api.bilibili.com/x/series/archives?mid=${t}&series_id=${e}&only_normal=true&sort=desc&pn=1&ps=99999`).then((e=>e.json()))).data.archives,r=await(0,o.sq)((()=>document.getElementsByClassName("item cur")[0].innerHTML),(e=>""!==e));let c=0;for(;;){const e=await fetch("https://api.bilibili.com/x/v3/fav/folder/add",{method:"POST",credentials:"include",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`title=${r}&csrf=${i}&privacy=0`}).then((e=>e.json()));if(0===e.code){c=e.data.id;break}await(0,a.delay)(2e3)}const l=" 过久未动即触发风控,等待一段时间自动继续",d=n.Toast.info(`0 / ${s.length}${l}`,"收藏系列");for(let e=0;ee.json()))).code){d.message=`${e+1} / ${s.length}${l}`;break}{const e=2e3*Math.random()+2e3;console.log(`请求失败,等待${(e/1e3).toFixed(1)}s后重试`),await(0,a.delay)(e)}}d.duration=1e3,n.Toast.success("完成","收藏系列",2e3)})(s,r,c):await(async(e,t)=>{for(;;){if(0===(await fetch("https://api.bilibili.com/x/v3/fav/season/fav",{method:"POST",credentials:"include",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:`platform=web&season_id=${e}&csrf=${t}`}).then((e=>e.json()))).code){n.Toast.success("成功","导入合集",2e3);break}await(0,a.delay)(2e3)}})(s,c)}},c=(0,i.defineComponentMetadata)({name:"importSeries",author:{name:"aiden",link:"https://github.com/swhoro"},displayName:"批量导入合集",tags:[componentsTags.utils],entry:()=>{(0,s.urlChange)((()=>{r()}))},description:{"zh-CN":"在合集页面制作一个批量导入按钮,可以新增所有合集内视频至同名收藏夹"},urlInclude:[/^https:\/\/space\.bilibili\.com\//],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/ip-show.js b/bb-evolved/registry/dist/components/utils/ip-show.js index 080360ed34..b2400151c5 100644 --- a/bb-evolved/registry/dist/components/utils/ip-show.js +++ b/bb-evolved/registry/dist/components/utils/ip-show.js @@ -1,3 +1,3 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/ip-show"]=t():e["utils/ip-show"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,i={206:e=>{e.exports=coreApis.componentApis.utils.commentApis}},s={};function a(e){var t=s[e];if(void 0!==t)return t.exports;var l=s[e]={exports:{}};return i[e](l,l.exports,a),l.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(i,s){if(1&s&&(i=this(i)),8&s)return i;if("object"==typeof i&&i){if(4&s&&i.__esModule)return i;if(16&s&&"function"==typeof i.then)return i}var l=Object.create(null);a.r(l);var n={};e=e||[null,t({}),t([]),t(t)];for(var o=2&s&&i;"object"==typeof o&&!~e.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((e=>n[e]=()=>i[e]));return n.default=()=>i,a.d(l,n),l},a.d=(e,t)=>{for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{a.d(l,{component:()=>d});const e=coreApis.componentApis.define;let t,i=2;const s=function(e,i,s){const a=this._parentBlacklistDom(e,i,s),l=[`
    `,`
    ${this._createNickNameDom(e)}`,this._createLevelLink(e),this._identity(e.mid,e.assist,e.member.fans_detail),`${this._createNameplate(e.member.nameplate)+this._createUserSailing(e)}
    `,this._createMsgContent(e),this._createPerfectReply(e),'
    ',this._createPlatformDom(e.content.plat),'',''.concat(this._formateTime(e.ctime),""),e?.reply_control?.location?`${e?.reply_control?.location||""}`:"","",e.lottery_id?"":``,e.lottery_id?"":``,e.lottery_id?"":this._createReplyBtn(e.rcount),e.lottery_id&&e.mid!==t.userStatus.mid?"":`
      ${this._canSetTop(e)?`
    • ${e.isUpTop?"取消置顶":"设为置顶"}
    • `:""}${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)&&!e.isTop?`
    • 删除
    • `:""}
    `,this._createLotteryContent(e.content),this._createVoteContent(e.content),this._createTags(e),"
    ",'
    ',this._createSubReplyList(e.replies,e.rcount,!1,e.rpid,e.folder&&e.folder.has_folded,e.reply_control),"
    ",'
    ',"
    ","
    "].join("");return e.state===t.blacklistCode?a:l},n=function(e,t){return[`
    `,this._createSubReplyUserFace(e),'
    ','
    ',this._createNickNameDom(e),this._createLevelLink(e),this._identity(e.mid),this._createSubMsgContent(e),"
    ","
    ",'
    ','',''.concat(this._formateTime(e.ctime),""),e?.reply_control?.location?`${e?.reply_control?.location||""}`:"","",``,``,'回复',`
      ${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)?`
    • 删除
    • `:""}
    `,"
    ","
    "].join("")},o=function(e,t,i){const s=this._parentBlacklistDom(e,t,i),a=[`
    `,`
    ${this._identity(e.mid,e.assist,e.member.fans_detail)}`,`${this._unhtmlFix(e.member.uname)}${this._createNameplate(e.member.nameplate)}${this._createUserSailing(e.member&&e.member.user_sailing||{})}
    `,this._createMsgContent(e),'
    ',e.floor?`#${e.floor}`:"",this._createPlatformDom(e.content.plat),`${this._formateTime(e.ctime)}`,e?.reply_control?.location?`${e?.reply_control?.location||""}`:"",e.lottery_id?"":``,e.lottery_id?"":``,e.lottery_id?"":this._createReplyBtn(e.rcount),e.lottery_id&&e.mid!==this.userStatus.mid?"":`
      ${this._canSetTop(e)?`
    • ${e.isUpTop?"取消置顶":"设为置顶"}
    • `:""}${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)&&!e.isTop?`
    • 删除
    • `:""}
    `,this._createLotteryContent(e.content),this._createVoteContent(e.content),this._createTags(e),"
    ",'
    ',this._createSubReplyList(e.replies,e.rcount,!1,e.rpid,e.folder&&e.folder.has_folded),"
    ",'
    ',"
    ","
    "].join("");return e.state===this.blacklistCode?s:a},r=function(e,t){return[`
    `,``,``,"",'
    ','
    ',`${this._unhtmlFix(e.member.uname)}`,``,this._createSubMsgContent(e),"
    ","
    ",'
    ',`${this._formateTime(e.ctime)}`,e?.reply_control?.location?`${e?.reply_control?.location||""}`:"",``,``,'回复',`
      ${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)?`
    • 删除
    • `:""}
    `,"
    ","
    "].join("")},c=new MutationObserver((e=>{e.forEach((()=>{void 0!==unsafeWindow.bbComment&&(t=unsafeWindow.bbComment,"blackroom"===unsafeWindow.location.href.split("/")[3]?(t.prototype._unhtmlFix=function(e,t){return e? +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/ip-show"]=t():e["utils/ip-show"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,i={206:e=>{e.exports=coreApis.componentApis.utils.commentApis}},s={};function a(e){var t=s[e];if(void 0!==t)return t.exports;var l=s[e]={exports:{}};return i[e](l,l.exports,a),l.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(i,s){if(1&s&&(i=this(i)),8&s)return i;if("object"==typeof i&&i){if(4&s&&i.__esModule)return i;if(16&s&&"function"==typeof i.then)return i}var l=Object.create(null);a.r(l);var o={};e=e||[null,t({}),t([]),t(t)];for(var n=2&s&&i;"object"==typeof n&&!~e.indexOf(n);n=t(n))Object.getOwnPropertyNames(n).forEach((e=>o[e]=()=>i[e]));return o.default=()=>i,a.d(l,o),l},a.d=(e,t)=>{for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{a.d(l,{component:()=>d});const e=coreApis.componentApis.define;let t,i=2;const s=function(e,i,s){const a=this._parentBlacklistDom(e,i,s),l=[`
    `,`
    ${this._createNickNameDom(e)}`,this._createLevelLink(e),this._identity(e.mid,e.assist,e.member.fans_detail),`${this._createNameplate(e.member.nameplate)+this._createUserSailing(e)}
    `,this._createMsgContent(e),this._createPerfectReply(e),'
    ',this._createPlatformDom(e.content.plat),'',''.concat(this._formateTime(e.ctime),""),e?.reply_control?.location?`${e?.reply_control?.location||""}`:"","",e.lottery_id?"":``,e.lottery_id?"":``,e.lottery_id?"":this._createReplyBtn(e.rcount),e.lottery_id&&e.mid!==t.userStatus.mid?"":`
      ${this._canSetTop(e)?`
    • ${e.isUpTop?"取消置顶":"设为置顶"}
    • `:""}${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)&&!e.isTop?`
    • 删除
    • `:""}
    `,this._createLotteryContent(e.content),this._createVoteContent(e.content),this._createTags(e),"
    ",'
    ',this._createSubReplyList(e.replies,e.rcount,!1,e.rpid,e.folder&&e.folder.has_folded,e.reply_control),"
    ",'
    ',"
    ","
    "].join("");return e.state===t.blacklistCode?a:l},o=function(e,t){return[`
    `,this._createSubReplyUserFace(e),'
    ','
    ',this._createNickNameDom(e),this._createLevelLink(e),this._identity(e.mid),this._createSubMsgContent(e),"
    ","
    ",'
    ','',''.concat(this._formateTime(e.ctime),""),e?.reply_control?.location?`${e?.reply_control?.location||""}`:"","",``,``,'回复',`
      ${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)?`
    • 删除
    • `:""}
    `,"
    ","
    "].join("")},n=function(e,t,i){const s=this._parentBlacklistDom(e,t,i),a=[`
    `,`
    ${this._identity(e.mid,e.assist,e.member.fans_detail)}`,`${this._unhtmlFix(e.member.uname)}${this._createNameplate(e.member.nameplate)}${this._createUserSailing(e.member&&e.member.user_sailing||{})}
    `,this._createMsgContent(e),'
    ',e.floor?`#${e.floor}`:"",this._createPlatformDom(e.content.plat),`${this._formateTime(e.ctime)}`,e?.reply_control?.location?`${e?.reply_control?.location||""}`:"",e.lottery_id?"":``,e.lottery_id?"":``,e.lottery_id?"":this._createReplyBtn(e.rcount),e.lottery_id&&e.mid!==this.userStatus.mid?"":`
      ${this._canSetTop(e)?`
    • ${e.isUpTop?"取消置顶":"设为置顶"}
    • `:""}${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)&&!e.isTop?`
    • 删除
    • `:""}
    `,this._createLotteryContent(e.content),this._createVoteContent(e.content),this._createTags(e),"
    ",'
    ',this._createSubReplyList(e.replies,e.rcount,!1,e.rpid,e.folder&&e.folder.has_folded),"
    ",'
    ',"
    ","
    "].join("");return e.state===this.blacklistCode?s:a},r=function(e,t){return[`
    `,``,``,"",'
    ','
    ',`${this._unhtmlFix(e.member.uname)}`,``,this._createSubMsgContent(e),"
    ","
    ",'
    ',`${this._formateTime(e.ctime)}`,e?.reply_control?.location?`${e?.reply_control?.location||""}`:"",``,``,'回复',`
      ${this._canBlackList(e.mid)?'
    • 加入黑名单
    • ':""}${this._canReport(e.mid)?'
    • 举报
    • ':""}${this._canDel(e.mid)?`
    • 删除
    • `:""}
    `,"
    ","
    "].join("")},c=new MutationObserver((e=>{e.forEach((()=>{void 0!==unsafeWindow.bbComment&&(t=unsafeWindow.bbComment,"blackroom"===unsafeWindow.location.href.split("/")[3]?(t.prototype._unhtmlFix=function(e,t){return e? // eslint-disable-next-line @typescript-eslint/no-shadow -e.replace(t||/[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\\d+);)?/g,(function(e,t){return t?e:{"<":"","&":"",'"':"",">":"","'":""}[e]})):""},t.prototype._trimHttpFix=function(e){return e?e.replace(/^http:/,""):""},t.prototype._webpFix=function(e,t){if(!e)return e;const i=e.match(/(.*\\.(jpg|jpeg|gif|png|bmp))(\\?.*)?/);let s=-1!==e.indexOf("/bfs/");return i&&"gif"!==i[2]&&"bmp"!==i[2]&&s?(s=t.w,e=t.h,e=s&&e?`@${s}w_${e}h`:"@",t=i[3]||"",this.isWebp?`${i[1]+e}.webp${t}`:`${i[1]+e}.${i[2]}${t}`):e},t.prototype._createListCon=o,t.prototype._createSubReplyItem=r):(t.prototype._createListCon=s,t.prototype._createSubReplyItem=n),i=1,c.disconnect())}))}));c.observe(document.head,{childList:!0});const p=e=>{e.forEach((e=>{const t=(e=>{const t=e.__vueParentComponent?.props;return(t?.reply??t?.subReply)?.reply_control?.location??void 0})(e.element);if(void 0!==t){const i=e.element.querySelector(".reply-info>.reply-time")??e.element.querySelector(".sub-reply-info>.sub-reply-time");if(0===i.childElementCount){const e=document.createElement("span");e.style.marginLeft="5px",e.innerText=t,i.appendChild(e)}}}))},d=(0,e.defineComponentMetadata)({name:"ipShow",author:{name:"Light_Quanta",link:"https://github.com/LightQuanta"},displayName:"评论区IP属地显示",tags:[componentsTags.utils],entry:async()=>{const{forEachCommentItem:e}=await Promise.resolve().then(a.t.bind(a,206,23));e({added:e=>{2===i&&(p([e,...e.replies]),e.addEventListener("repliesUpdate",(e=>p(e.detail))))}})},description:{"zh-CN":"在评论区显示评论的IP属地信息"},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),l=l.component})())); \ No newline at end of file +e.replace(t||/[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\\d+);)?/g,(function(e,t){return t?e:{"<":"","&":"",'"':"",">":"","'":""}[e]})):""},t.prototype._trimHttpFix=function(e){return e?e.replace(/^http:/,""):""},t.prototype._webpFix=function(e,t){if(!e)return e;const i=e.match(/(.*\\.(jpg|jpeg|gif|png|bmp))(\\?.*)?/);let s=-1!==e.indexOf("/bfs/");return i&&"gif"!==i[2]&&"bmp"!==i[2]&&s?(s=t.w,e=t.h,e=s&&e?`@${s}w_${e}h`:"@",t=i[3]||"",this.isWebp?`${i[1]+e}.webp${t}`:`${i[1]+e}.${i[2]}${t}`):e},t.prototype._createListCon=n,t.prototype._createSubReplyItem=r):(t.prototype._createListCon=s,t.prototype._createSubReplyItem=o),i=1,c.disconnect())}))}));c.observe(document.head,{childList:!0});const p=e=>{e.forEach((e=>{const t=(e=>e.vueProps?.reply_control?.location??void 0)(e);if(void 0!==t){const i=e.element.querySelector(".reply-info>.reply-time")??e.element.querySelector(".sub-reply-info>.sub-reply-time");if(0===i.childElementCount){const e=document.createElement("span");e.style.marginLeft="5px",e.innerText=t,i.appendChild(e)}}}))},d=(0,e.defineComponentMetadata)({name:"ipShow",author:{name:"Light_Quanta",link:"https://github.com/LightQuanta"},displayName:"评论区IP属地显示",tags:[componentsTags.utils],entry:async()=>{const{forEachCommentItem:e}=await Promise.resolve().then(a.t.bind(a,206,23));e({added:e=>{2===i&&(p([e,...e.replies]),e.addEventListener("repliesUpdate",(e=>p(e.detail))))}})},description:{"zh-CN":"在评论区显示评论的IP属地信息"},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),l=l.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/keymap.js b/bb-evolved/registry/dist/components/utils/keymap.js index e6e9d626a2..092ead3f75 100644 --- a/bb-evolved/registry/dist/components/utils/keymap.js +++ b/bb-evolved/registry/dist/components/utils/keymap.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(i)for(var r=0;r{"use strict";var i,o=function(){return void 0===i&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{var i=n(829);i&&i.__esModule&&(i=i.default),e.exports="string"==typeof i?i:i.toString()},639:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"keymap-extra-options"},[t("VButton",{ref:"button",staticClass:"keymap-settings-button",on:{mouseover:function(t){return e.loadSettings()},click:function(t){return e.toggleSettings()}}},[t("VIcon",{attrs:{icon:"mdi-keyboard-settings-outline",size:18}}),e._v("\n 快捷键设置\n ")],1)],1)};i._withStripped=!0;var o=n(648),r=n(773);const s=Vue.extend({components:{VButton:o.VButton,VIcon:o.VIcon},data:()=>({popupOpen:!1}),methods:{async loadSettings(){await(0,r.loadKeymapSettings)(this.$refs.button)},async toggleSettings(){await(0,r.toggleKeymapSettings)(this.$refs.button)}}});var a=n(332),l=n.n(a),d=n(321),p=n.n(d),c={insert:"head",singleton:!1};l()(p(),c);p().locals;const u=(0,n(893).Z)(s,i,[],!1,null,null,null).exports},436:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>_});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"keymap-settings-popup be-settings-extra-options",attrs:{fixed:"","trigger-element":e.triggerElement},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("div",{staticClass:"keymap-settings"},[t("div",{staticClass:"keymap-settings-header"},[t("div",{staticClass:"keymap-settings-header-title"},[t("VIcon",{attrs:{icon:"mdi-keyboard-settings-outline"}}),e._v("\n 快捷键设置\n ")],1),e._v(" "),t("a",{staticClass:"keymap-settings-header-help",attrs:{href:"https://github.com/the1812/Bilibili-Evolved/blob/preview/registry/lib/components/utils/keymap/help.md",target:"_blank",title:"查看帮助"}},[t("VIcon",{attrs:{size:18,icon:"mdi-help-circle-outline"}})],1),e._v(" "),t("div",{staticClass:"keymap-settings-header-close",attrs:{title:"关闭"}},[t("VIcon",{attrs:{size:18,icon:"close"},on:{click:function(t){e.popupOpen=!1}}})],1)]),e._v(" "),t("div",{staticClass:"keymap-settings-content"},[t("div",{staticClass:"keymap-settings-grid"},[t("div",{staticClass:"grid-header"},[t("div",{staticClass:"header-name"},[e._v("动作")]),e._v(" "),t("div",{staticClass:"header-default-binding"},[e._v("默认按键")]),e._v(" "),t("div",{staticClass:"header-preset-binding"},[t("VDropdown",{attrs:{items:e.presetOptions,"key-mapper":e=>e},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.selectedPreset,callback:function(t){e.selectedPreset=t},expression:"selectedPreset"}})],1),e._v(" "),t("div",{staticClass:"header-custom-binding"},[e._v("自定义按键")])]),e._v(" "),e._l(e.rows,(function(n){return t("KeymapSettingsRow",{key:n.name,attrs:{row:n,"selected-preset":e.selectedPreset}})}))],2)])])])};i._withStripped=!0;var o=n(986),r=n(648),s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"grid-row"},[t("div",{staticClass:"row-name",attrs:{title:e.row.name}},[e._v("\n "+e._s(e.row.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"row-default-binding row-binding",class:{overwritten:e.isOverwrittern(e.presets[e.selectedPreset],e.customKeyBindings),"not-set":void 0===e.presetBase[e.row.name]}},[e._v("\n "+e._s(e.showReadonlyKey(e.presetBase))+"\n ")]),e._v(" "),t("div",{staticClass:"row-preset-binding row-binding",class:{overwritten:e.isOverwrittern(e.customKeyBindings),"not-set":void 0===e.presets[e.selectedPreset][e.row.name]}},[e._v("\n "+e._s(e.showReadonlyKey(e.presets[e.selectedPreset]))+"\n ")]),e._v(" "),t("div",{staticClass:"row-custom-binding row-binding"},[e.editable?t("div",{staticClass:"custom-binding-edit"},[t("TextBox",{ref:"customBindingTextBox",attrs:{placeholder:"禁用","change-on-blur":"",text:e.customKeyBindings[e.row.name]},on:{change:e.updateCustomBinding}}),e._v(" "),t("VButton",{attrs:{type:"transparent",title:"删除自定义键位"},on:{click:function(t){return e.removeCustomBinding()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}})],1)],1):t("div",{staticClass:"custom-binding-add"},[t("VButton",{attrs:{type:"transparent",title:"添加自定义键位"},on:{click:function(t){return e.addCustomBinding()}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:16}})],1)],1)])])};s._withStripped=!0;var a=n(67);const l=(0,o.getComponentSettings)("keymap").options,d=Vue.extend({components:{TextBox:r.TextBox,VButton:r.VButton,VIcon:r.VIcon},props:{row:{type:Object,required:!0},selectedPreset:{type:String,required:!0}},data:()=>({presets:a.um,presetBase:a.Wb,customKeyBindings:l.customKeyBindings,editable:!1}),created(){this.checkEditable()},methods:{checkEditable(){this.editable=void 0!==this.customKeyBindings[this.row.name]},showReadonlyKey(e){const{name:t}=this.row,n=e[t];return void 0===n?"继承":""===n?"禁用":n},isOverwrittern(){const{name:e}=this.row;for(var t=arguments.length,n=new Array(t),i=0;ivoid 0!==t[e]))},async addCustomBinding(){const{name:e}=this.row;this.customKeyBindings[e]="",this.checkEditable(),await this.$nextTick(),this.$refs.customBindingTextBox.focus()},removeCustomBinding(){const{name:e}=this.row;delete this.customKeyBindings[e],this.checkEditable()},updateCustomBinding(e){console.log("update",e);const{name:t}=this.row;this.customKeyBindings[t]=e}}});var p=n(332),c=n.n(p),u=n(700),m=n.n(u),g={insert:"head",singleton:!1};c()(m(),g);m().locals;var y=n(893);const f=(0,y.Z)(d,s,[],!1,null,null,null).exports;var b=n(914);const h=(0,o.getComponentSettings)("keymap").options;console.log(a.um,b.Nw,h.preset,h.customKeyBindings);const v=Vue.extend({components:{VIcon:r.VIcon,VDropdown:r.VDropdown,VPopup:r.VPopup,KeymapSettingsRow:f},props:{triggerElement:{type:HTMLElement,default:null}},data:()=>({popupOpen:!1,actions:b.Nw,presets:a.um,customKeyBindings:h.customKeyBindings}),computed:{selectedPreset:{get:()=>h.preset,set(e){h.preset=e}},rows(){return Object.entries(this.actions).map((e=>{let[t,n]=e;return{name:t,...n}}))},presetOptions(){return Object.keys(this.presets)}}});var w=n(323),k=n.n(w),x={insert:"head",singleton:!1};c()(k(),x);k().locals;const _=(0,y.Z)(v,i,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function i(e,t,n,i,o,r,s,a){var l,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),r&&(d._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},d._ssrRegister=l):o&&(l=a?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(d.functional){d._injectStyles=l;var p=d.render;d.render=function(e,t){return l.call(t),p(e,t)}}else{var c=d.beforeCreate;d.beforeCreate=c?[].concat(c,l):[l]}return{exports:e,options:d}}n.d(t,{Z:()=>i})},153:e=>{"use strict";e.exports=coreApis.pluginApis.data},986:e=>{"use strict";e.exports=coreApis.settings},648:e=>{"use strict";e.exports=coreApis.ui},605:e=>{"use strict";e.exports=coreApis.utils}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var r=Object.create(null);o.r(r);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,o.d(r,s),r},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>y});const e=coreApis.componentApis.styledComponent,t=coreApis.componentApis.define;var n=o(986),i=o(914),s=o(605);const a=coreApis.utils.urls,l=["shift","alt","ctrl","meta"],d=lodash.once((e=>{const t=a.watchlaterUrls.some((e=>(0,s.matchUrlPattern)(e))),n=a.mediaListUrls.some((e=>(0,s.matchUrlPattern)(e))),o={enable:!0,bindings:e};return document.body.addEventListener("keydown",(e=>{o.enable&&o.bindings.forEach((o=>{if(0===o.keys.length)return;if(!1!==o.action.ignoreTyping&&(0,s.isTyping)())return;const r=e.key.toLowerCase(),a=dq(".bilibili-player-sphere-control");if(null!==a&&"none"!==a.style.display&&["w","a","s","d"].includes(r))return;if(l.some((t=>{const n=o.keys.includes(t);if(o.keys.includes(`[${t}]`))return!1;return n!==e[`${t}Key`]})))return;const d=o.keys.filter((e=>!l.includes(e.toLowerCase()))).map((e=>e.toLowerCase()));if(!(d.includes(e.key.toLowerCase())||d.includes(e.code.toLowerCase())))return;const p=o.action.run({binding:o,isWatchlater:t,isMediaList:n,event:e,clickElement:i.$j,changeVideoTime:i.vN,showTip:i.kW}),c=!lodash.isNil(p);(o.action.prevent??c)&&(e.stopPropagation(),e.preventDefault())}))})),o}));var p=o(67);const c=(0,t.defineOptionsMetadata)({longJumpSeconds:{defaultValue:85,displayName:"长跳跃秒数",validator:(0,s.getNumberValidator)(1)},volumeStep:{defaultValue:10,displayName:"音量调整幅度",validator:(0,s.getNumberValidator)(1,100)},customKeyBindings:{defaultValue:{},displayName:"自定义键位",hidden:!0},preset:{defaultValue:"Default",displayName:"预设",hidden:!0}});let u=null;const m=e=>Object.entries(e).map((e=>{let[t,n]=e;return o=t,{keys:n.split(" ").filter((e=>""!==e)),action:i.Nw[o]};var o})),g=(0,e.styledComponentEntry)((()=>Promise.resolve().then(o.t.bind(o,929,23))),(async e=>{let{settings:t}=e;const i=()=>{const e=t.options.preset,n=p.um[e]||{},i=m({...p.Wb,...n,...t.options.customKeyBindings});u?u.bindings=i:u=d(i)};(0,n.addComponentListener)("keymap.preset",i,!0),(0,n.addComponentListener)("keymap.customKeyBindings",i)})),y=(0,t.defineComponentMetadata)({name:"keymap",displayName:"快捷键扩展",tags:[componentsTags.video,componentsTags.utils],entry:g,unload:()=>{u&&(u.enable=!1)},reload:()=>{u&&(u.enable=!0)},description:{"zh-CN":"为脚本的功能和 b 站的功能启用键盘快捷键支持, 快捷键列表可在`快捷键设置`中查看和配置."},extraOptions:()=>Promise.resolve().then(o.bind(o,639)).then((e=>e.default)),options:c,plugin:{displayName:"快捷键扩展 - 搜索支持",setup:e=>{let{addData:t}=e;t("launchBar.actions",(e=>{e.push({name:"keymapSettings",getActions:async()=>[{name:"快捷键扩展设置",description:"Keymap Settings",icon:"mdi-keyboard-settings-outline",action:async()=>{const{toggleKeymapSettings:e}=await Promise.resolve().then(o.bind(o,773));e()}}]})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{var i=n(829);i&&i.__esModule&&(i=i.default),e.exports="string"==typeof i?i:i.toString()},639:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>u});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"keymap-extra-options"},[t("VButton",{ref:"button",staticClass:"keymap-settings-button",on:{mouseover:function(t){return e.loadSettings()},click:function(t){return e.toggleSettings()}}},[t("VIcon",{attrs:{icon:"mdi-keyboard-settings-outline",size:18}}),e._v("\n 快捷键设置\n ")],1)],1)};i._withStripped=!0;var o=n(648),r=n(773);const s=Vue.extend({components:{VButton:o.VButton,VIcon:o.VIcon},data:()=>({popupOpen:!1}),methods:{async loadSettings(){await(0,r.loadKeymapSettings)(this.$refs.button)},async toggleSettings(){await(0,r.toggleKeymapSettings)(this.$refs.button)}}});var a=n(332),l=n.n(a),d=n(321),p=n.n(d),c={insert:"head",singleton:!1};l()(p(),c);p().locals;const u=(0,n(893).Z)(s,i,[],!1,null,null,null).exports},436:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>_});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"keymap-settings-popup be-settings-extra-options",attrs:{fixed:"","trigger-element":e.triggerElement},model:{value:e.popupOpen,callback:function(t){e.popupOpen=t},expression:"popupOpen"}},[t("div",{staticClass:"keymap-settings"},[t("div",{staticClass:"keymap-settings-header"},[t("div",{staticClass:"keymap-settings-header-title"},[t("VIcon",{attrs:{icon:"mdi-keyboard-settings-outline"}}),e._v("\n 快捷键设置\n ")],1),e._v(" "),t("a",{staticClass:"keymap-settings-header-help",attrs:{href:"https://github.com/the1812/Bilibili-Evolved/blob/preview/registry/lib/components/utils/keymap/help.md",target:"_blank",title:"查看帮助"}},[t("VIcon",{attrs:{size:18,icon:"mdi-help-circle-outline"}})],1),e._v(" "),t("div",{staticClass:"keymap-settings-header-close",attrs:{title:"关闭"}},[t("VIcon",{attrs:{size:18,icon:"close"},on:{click:function(t){e.popupOpen=!1}}})],1)]),e._v(" "),t("div",{staticClass:"keymap-settings-content"},[t("div",{staticClass:"keymap-settings-grid"},[t("div",{staticClass:"grid-header"},[t("div",{staticClass:"header-name"},[e._v("动作")]),e._v(" "),t("div",{staticClass:"header-default-binding"},[e._v("默认按键")]),e._v(" "),t("div",{staticClass:"header-preset-binding"},[t("VDropdown",{attrs:{items:e.presetOptions,"key-mapper":e=>e},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.selectedPreset,callback:function(t){e.selectedPreset=t},expression:"selectedPreset"}})],1),e._v(" "),t("div",{staticClass:"header-custom-binding"},[e._v("自定义按键")])]),e._v(" "),e._l(e.rows,(function(n){return t("KeymapSettingsRow",{key:n.name,attrs:{row:n,"selected-preset":e.selectedPreset}})}))],2)])])])};i._withStripped=!0;var o=n(986),r=n(648),s=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"grid-row"},[t("div",{staticClass:"row-name",attrs:{title:e.row.name}},[e._v("\n "+e._s(e.row.displayName)+"\n ")]),e._v(" "),t("div",{staticClass:"row-default-binding row-binding",class:{overwritten:e.isOverwrittern(e.presets[e.selectedPreset],e.customKeyBindings),"not-set":void 0===e.presetBase[e.row.name]}},[e._v("\n "+e._s(e.showReadonlyKey(e.presetBase))+"\n ")]),e._v(" "),t("div",{staticClass:"row-preset-binding row-binding",class:{overwritten:e.isOverwrittern(e.customKeyBindings),"not-set":void 0===e.presets[e.selectedPreset][e.row.name]}},[e._v("\n "+e._s(e.showReadonlyKey(e.presets[e.selectedPreset]))+"\n ")]),e._v(" "),t("div",{staticClass:"row-custom-binding row-binding"},[e.editable?t("div",{staticClass:"custom-binding-edit"},[t("TextBox",{ref:"customBindingTextBox",attrs:{placeholder:"禁用","change-on-blur":"",text:e.customKeyBindings[e.row.name]},on:{change:e.updateCustomBinding}}),e._v(" "),t("VButton",{attrs:{type:"transparent",title:"删除自定义键位"},on:{click:function(t){return e.removeCustomBinding()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}})],1)],1):t("div",{staticClass:"custom-binding-add"},[t("VButton",{attrs:{type:"transparent",title:"添加自定义键位"},on:{click:function(t){return e.addCustomBinding()}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:16}})],1)],1)])])};s._withStripped=!0;var a=n(67);const l=(0,o.getComponentSettings)("keymap").options,d=Vue.extend({components:{TextBox:r.TextBox,VButton:r.VButton,VIcon:r.VIcon},props:{row:{type:Object,required:!0},selectedPreset:{type:String,required:!0}},data:()=>({presets:a.um,presetBase:a.Wb,customKeyBindings:l.customKeyBindings,editable:!1}),created(){this.checkEditable()},methods:{checkEditable(){this.editable=void 0!==this.customKeyBindings[this.row.name]},showReadonlyKey(e){const{name:t}=this.row,n=e[t];return void 0===n?"继承":""===n?"禁用":n},isOverwrittern(){const{name:e}=this.row;for(var t=arguments.length,n=new Array(t),i=0;ivoid 0!==t[e]))},async addCustomBinding(){const{name:e}=this.row;this.customKeyBindings[e]="",this.checkEditable(),await this.$nextTick(),this.$refs.customBindingTextBox.focus()},removeCustomBinding(){const{name:e}=this.row;delete this.customKeyBindings[e],this.checkEditable()},updateCustomBinding(e){console.log("update",e);const{name:t}=this.row;this.customKeyBindings[t]=e}}});var p=n(332),c=n.n(p),u=n(700),m=n.n(u),g={insert:"head",singleton:!1};c()(m(),g);m().locals;var y=n(893);const f=(0,y.Z)(d,s,[],!1,null,null,null).exports;var b=n(914);const h=(0,o.getComponentSettings)("keymap").options;console.log(a.um,b.Nw,h.preset,h.customKeyBindings);const v=Vue.extend({components:{VIcon:r.VIcon,VDropdown:r.VDropdown,VPopup:r.VPopup,KeymapSettingsRow:f},props:{triggerElement:{type:HTMLElement,default:null}},data:()=>({popupOpen:!1,actions:b.Nw,presets:a.um,customKeyBindings:h.customKeyBindings}),computed:{selectedPreset:{get:()=>h.preset,set(e){h.preset=e}},rows(){return Object.entries(this.actions).map((e=>{let[t,n]=e;return{name:t,...n}}))},presetOptions(){return Object.keys(this.presets)}}});var w=n(323),k=n.n(w),x={insert:"head",singleton:!1};c()(k(),x);k().locals;const _=(0,y.Z)(v,i,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function i(e,t,n,i,o,r,s,a){var l,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),r&&(d._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},d._ssrRegister=l):o&&(l=a?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(d.functional){d._injectStyles=l;var p=d.render;d.render=function(e,t){return l.call(t),p(e,t)}}else{var c=d.beforeCreate;d.beforeCreate=c?[].concat(c,l):[l]}return{exports:e,options:d}}n.d(t,{Z:()=>i})},153:e=>{"use strict";e.exports=coreApis.pluginApis.data},986:e=>{"use strict";e.exports=coreApis.settings},648:e=>{"use strict";e.exports=coreApis.ui},605:e=>{"use strict";e.exports=coreApis.utils}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var r=Object.create(null);o.r(r);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,o.d(r,s),r},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>y});const e=coreApis.componentApis.styledComponent,t=coreApis.componentApis.define;var n=o(986),i=o(914),s=o(605);const a=coreApis.utils.urls,l=["shift","alt","ctrl","meta"],d=lodash.once((e=>{const t=a.watchlaterUrls.some((e=>(0,s.matchUrlPattern)(e))),n=a.mediaListUrls.some((e=>(0,s.matchUrlPattern)(e))),o={enable:!0,bindings:e};return document.body.addEventListener("keydown",(e=>{o.enable&&o.bindings.forEach((o=>{if(0===o.keys.length)return;if(!1!==o.action.ignoreTyping&&(0,s.isTyping)())return;const r=e.key.toLowerCase(),a=dq(".bilibili-player-sphere-control");if(null!==a&&"none"!==a.style.display&&["w","a","s","d"].includes(r))return;if(l.some((t=>{const n=o.keys.includes(t);if(o.keys.includes(`[${t}]`))return!1;return n!==e[`${t}Key`]})))return;const d=o.keys.filter((e=>!l.includes(e.toLowerCase()))).map((e=>e.toLowerCase()));if(!(d.includes(e.key.toLowerCase())||d.includes(e.code.toLowerCase())))return;const p=o.action.run({binding:o,isWatchlater:t,isMediaList:n,event:e,clickElement:i.$j,changeVideoTime:i.vN,showTip:i.kW}),c=!lodash.isNil(p);(o.action.prevent??c)&&(e.stopPropagation(),e.preventDefault())}))})),o}));var p=o(67);const c=(0,t.defineOptionsMetadata)({longJumpSeconds:{defaultValue:85,displayName:"长跳跃秒数",validator:(0,s.getNumberValidator)(1)},volumeStep:{defaultValue:10,displayName:"音量调整幅度",validator:(0,s.getNumberValidator)(1,100)},customKeyBindings:{defaultValue:{},displayName:"自定义键位",hidden:!0},preset:{defaultValue:"Default",displayName:"预设",hidden:!0}});let u=null;const m=e=>Object.entries(e).map((e=>{let[t,n]=e;return o=t,{keys:n.split(" ").filter((e=>""!==e)),action:i.Nw[o]};var o})),g=(0,e.styledComponentEntry)((()=>Promise.resolve().then(o.t.bind(o,929,23))),(async e=>{let{settings:t}=e;const i=()=>{const e=t.options.preset,n=p.um[e]||{},i=m({...p.Wb,...n,...t.options.customKeyBindings});u?u.bindings=i:u=d(i)};(0,n.addComponentListener)("keymap.preset",i,!0),(0,n.addComponentListener)("keymap.customKeyBindings",i)})),y=(0,t.defineComponentMetadata)({name:"keymap",displayName:"快捷键扩展",tags:[componentsTags.video,componentsTags.utils],entry:g,unload:()=>{u&&(u.enable=!1)},reload:()=>{u&&(u.enable=!0)},description:{"zh-CN":"为脚本的功能和 b 站的功能启用键盘快捷键支持, 快捷键列表可在`快捷键设置`中查看和配置."},extraOptions:()=>Promise.resolve().then(o.bind(o,639)).then((e=>e.default)),options:c,plugin:{displayName:"快捷键扩展 - 搜索支持",setup:e=>{let{addData:t}=e;t("launchBar.actions",(e=>{e.push({name:"keymapSettings",getActions:async()=>[{name:"快捷键扩展设置",description:"Keymap Settings",icon:"mdi-keyboard-settings-outline",action:async()=>{const{toggleKeymapSettings:e}=await Promise.resolve().then(o.bind(o,773));e()}}]})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/remove-promotions.js b/bb-evolved/registry/dist/components/utils/remove-promotions.js index c8576e0a19..95f36f16d3 100644 --- a/bb-evolved/registry/dist/components/utils/remove-promotions.js +++ b/bb-evolved/registry/dist/components/utils/remove-promotions.js @@ -6,4 +6,4 @@ n.i=function(e,o,t){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(t)for(var i=0;i{var t=o(940);t&&t.__esModule&&(t=t.default),e.exports="string"==typeof t?t:t.toString()},451:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=451,e.exports=n},322:e=>{"use strict";e.exports='删除站内的各种广告. 包括首页的推广模块, 手机 app 推荐, 视频页面右侧的广告等. 注意: 首页推广模块删除后留下空白区域是正常现象, 如果觉得怪可以开启 \\`占位文本\\` 选项.\n\n- \\`占位文本\\`: 删除首页推广模块的广告后显示"🚫已屏蔽广告"来替代空白区域.\n- \\`保留活动横幅\\`: 保留视频页面的活动横幅.\n'},986:e=>{"use strict";e.exports=coreApis.settings},200:e=>{"use strict";e.exports=coreApis.spinQuery}},t={};function r(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,t){if(1&t&&(o=this(o)),8&t)return o;if("object"==typeof o&&o){if(4&t&&o.__esModule)return o;if(16&t&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,n({}),n([]),n(n)];for(var d=2&t&&o;"object"==typeof d&&!~e.indexOf(d);d=n(d))Object.getOwnPropertyNames(d).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,n)=>{for(var o in n)r.o(n,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"removePromotions",displayName:"删除广告",entry:async e=>{let{settings:n,metadata:o}=e;const{addComponentListener:t}=await Promise.resolve().then(r.t.bind(r,986,23));if("https://www.bilibili.com/"===document.URL.replace(window.location.search,"")){const{selectAll:e,select:o}=await Promise.resolve().then(r.t.bind(r,200,23));o(".eva-extension-area").then((e=>{e&&(e.parentElement.style.margin="12px")})),e(".gg-pic").then((e=>{0!==e.length&&e.forEach((e=>{const o=e.parentElement;o.style.display="none";const t=[...o.parentElement.childNodes].indexOf(o)+1,r=o.parentElement.parentElement.querySelector(`.pic li:nth-child(${t})`);if(r){r.style.display="flex";const e=r.querySelector("a:not(.more-text)");e.insertAdjacentHTML("afterend",`\n
    ${n.options.showPlaceholder?"🚫已屏蔽广告":""}
    \n `),e.style.visibility="hidden";[r.querySelector("a.more-text"),r.querySelector("img")].forEach((e=>e.style.display="none"))}}))})),o(".focus-carousel.home-slide").then((e=>{e&&dqa(e,".gg-icon,.bypb-icon").map((e=>e.parentElement.parentElement)).forEach((e=>{e.style.display="none",e.insertAdjacentHTML("afterend",`\n
    ${n.options.showPlaceholder?"🚫已屏蔽广告":""}
    \n `)}))}))}t(`${o.name}.preserveEventBanner`,(e=>{document.body.classList.toggle("preserve-event-banner",e)}),!0),t(`${o.name}.preserveFeedGoods`,(e=>{document.body.classList.toggle("preserve-feed-goods",e)}),!0),t(`${o.name}.preserveReplyNotice`,(e=>{document.body.classList.toggle("preserve-reply-notice",e)}),!0),t(`${o.name}.showPlaceholder`,(e=>{document.body.classList.toggle("promotion-show-placeholder",e)}),!0)},instantStyles:[{name:"removePromotions",style:()=>Promise.resolve().then(r.t.bind(r,398,23))}],tags:[componentsTags.utils],options:{showPlaceholder:{displayName:"占位文本",defaultValue:!0},preserveEventBanner:{displayName:"保留活动横幅",defaultValue:!1},preserveFeedGoods:{displayName:"保留动态商品推荐",defaultValue:!1}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(451);return{...Object.fromEntries(e.keys().map((n=>[n.match(/index\.(.+)\.md$/)[1],e(n)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,322,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var d=0;d{var t=o(940);t&&t.__esModule&&(t=t.default),e.exports="string"==typeof t?t:t.toString()},451:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=451,e.exports=n},322:e=>{"use strict";e.exports='删除站内的各种广告. 包括首页的推广模块, 手机 app 推荐, 视频页面右侧的广告等. 注意: 首页推广模块删除后留下空白区域是正常现象, 如果觉得怪可以开启 \\`占位文本\\` 选项.\n\n- \\`占位文本\\`: 删除首页推广模块的广告后显示"🚫已屏蔽广告"来替代空白区域.\n- \\`保留活动横幅\\`: 保留视频页面的活动横幅.\n'},986:e=>{"use strict";e.exports=coreApis.settings},200:e=>{"use strict";e.exports=coreApis.spinQuery}},t={};function r(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,t){if(1&t&&(o=this(o)),8&t)return o;if("object"==typeof o&&o){if(4&t&&o.__esModule)return o;if(16&t&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,n({}),n([]),n(n)];for(var d=2&t&&o;"object"==typeof d&&!~e.indexOf(d);d=n(d))Object.getOwnPropertyNames(d).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,n)=>{for(var o in n)r.o(n,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"removePromotions",displayName:"删除广告",entry:async e=>{let{settings:n,metadata:o}=e;const{addComponentListener:t}=await Promise.resolve().then(r.t.bind(r,986,23));if("https://www.bilibili.com/"===document.URL.replace(window.location.search,"")){const{selectAll:e,select:o}=await Promise.resolve().then(r.t.bind(r,200,23));o(".eva-extension-area").then((e=>{e&&(e.parentElement.style.margin="12px")})),e(".gg-pic").then((e=>{0!==e.length&&e.forEach((e=>{const o=e.parentElement;o.style.display="none";const t=[...o.parentElement.childNodes].indexOf(o)+1,r=o.parentElement.parentElement.querySelector(`.pic li:nth-child(${t})`);if(r){r.style.display="flex";const e=r.querySelector("a:not(.more-text)");e.insertAdjacentHTML("afterend",`\n
    ${n.options.showPlaceholder?"🚫已屏蔽广告":""}
    \n `),e.style.visibility="hidden";[r.querySelector("a.more-text"),r.querySelector("img")].forEach((e=>e.style.display="none"))}}))})),o(".focus-carousel.home-slide").then((e=>{e&&dqa(e,".gg-icon,.bypb-icon").map((e=>e.parentElement.parentElement)).forEach((e=>{e.style.display="none",e.insertAdjacentHTML("afterend",`\n
    ${n.options.showPlaceholder?"🚫已屏蔽广告":""}
    \n `)}))}))}t(`${o.name}.preserveEventBanner`,(e=>{document.body.classList.toggle("preserve-event-banner",e)}),!0),t(`${o.name}.preserveFeedGoods`,(e=>{document.body.classList.toggle("preserve-feed-goods",e)}),!0),t(`${o.name}.preserveReplyNotice`,(e=>{document.body.classList.toggle("preserve-reply-notice",e)}),!0),t(`${o.name}.showPlaceholder`,(e=>{document.body.classList.toggle("promotion-show-placeholder",e)}),!0)},instantStyles:[{name:"removePromotions",style:()=>Promise.resolve().then(r.t.bind(r,398,23))}],tags:[componentsTags.utils],options:{showPlaceholder:{displayName:"占位文本",defaultValue:!0},preserveEventBanner:{displayName:"保留活动横幅",defaultValue:!1},preserveFeedGoods:{displayName:"保留动态商品推荐",defaultValue:!1}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(451);return{...Object.fromEntries(e.keys().map((n=>[n.match(/index\.(.+)\.md$/)[1],e(n)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,322,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/subscribe-time-show.js b/bb-evolved/registry/dist/components/utils/subscribe-time-show.js index c2ab8be664..28419a3ecf 100644 --- a/bb-evolved/registry/dist/components/utils/subscribe-time-show.js +++ b/bb-evolved/registry/dist/components/utils/subscribe-time-show.js @@ -6,6 +6,6 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(o)for(var i=0;i{var o=n(679);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},356:e=>{"use strict";e.exports=coreApis.style}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var c=2&o&&n;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,r.d(i,s),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>c});const e=coreApis.componentApis.define,t=coreApis.observer,n=coreApis.spinQuery;let o,s;const c=(0,e.defineComponentMetadata)({name:"subscribeTimeShow",author:{name:"Light_Quanta",link:"https://github.com/LightQuanta"},displayName:"关注时间显示",tags:[componentsTags.utils],urlInclude:[/^https:\/\/space\.bilibili\.com/],entry:async()=>{const e=await(0,n.select)(".s-space");(0,t.childList)(e,(async()=>{document.URL.match(/^https:\/\/space\.bilibili\.com\/\d+\/fans/)&&(o=await(0,n.select)(".relation-list"),(async e=>{const[n]=(0,t.childList)(e,(()=>{ +var s=this[i][0];null!=s&&(r[s]=!0)}for(var a=0;a{var o=n(679);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},356:e=>{"use strict";e.exports=coreApis.style}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&o&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,r.d(i,s),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.observer,n=coreApis.spinQuery;let o,s;const a=(0,e.defineComponentMetadata)({name:"subscribeTimeShow",author:{name:"Light_Quanta",link:"https://github.com/LightQuanta"},displayName:"关注时间显示",tags:[componentsTags.utils],urlInclude:[/^https:\/\/space\.bilibili\.com/],entry:async()=>{const e=await(0,n.select)(".s-space");(0,t.childList)(e,(async()=>{document.URL.match(/^https:\/\/space\.bilibili\.com\/\d+\/fans/)&&(o=await(0,n.select)(".relation-list"),(async e=>{const[n]=(0,t.childList)(e,(()=>{ // eslint-disable-next-line no-underscore-dangle -const e=o.parentElement.parentElement.parentElement.parentElement.__vue__.relationList.map((e=>e.mtime));o.querySelectorAll(".list-item>.content").forEach(((t,n)=>{if(null===t.querySelector(".subscribe-time-fix")){const o=e[n];void 0!==o&&t.querySelector("p").insertAdjacentHTML("afterend",``)}}))}));s?.disconnect(),s=n;const{addImportantStyle:i}=await Promise.resolve().then(r.t.bind(r,356,23)),{default:c}=await Promise.resolve().then(r.t.bind(r,970,23));i(c,"subscribe-time-style")})(o))}))},description:{"zh-CN":"在粉丝/关注列表显示关注的具体时间"},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +const e=o.parentElement.parentElement.parentElement.parentElement.__vue__.relationList.map((e=>e.mtime));o.querySelectorAll(".list-item>.content").forEach(((t,n)=>{if(null===t.querySelector(".subscribe-time-fix")){const o=e[n];void 0!==o&&t.querySelector("p").insertAdjacentHTML("afterend",``)}}))}));s?.disconnect(),s=n;const{addImportantStyle:i}=await Promise.resolve().then(r.t.bind(r,356,23)),{default:a}=await Promise.resolve().then(r.t.bind(r,970,23));i(a,"subscribe-time-style")})(o))}))},description:{"zh-CN":"在粉丝/关注列表显示关注的具体时间"},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/url-params-clean.js b/bb-evolved/registry/dist/components/utils/url-params-clean.js index 72fd76d2a1..4c136c0027 100644 --- a/bb-evolved/registry/dist/components/utils/url-params-clean.js +++ b/bb-evolved/registry/dist/components/utils/url-params-clean.js @@ -1,4 +1,4 @@ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/url-params-clean"]=t():e["utils/url-params-clean"]=t()}(globalThis,(()=>(()=>{var e,t,r={912:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=912,e.exports=t},799:e=>{"use strict";e.exports="自动删除网址中的多余跟踪参数。请注意这会导致浏览器历史记录出现重复的标题(分别是转换前后的网址),并可能导致后退要多退几次。\n"},110:e=>{"use strict";e.exports=coreApis.lifeCycle},391:e=>{"use strict";e.exports=coreApis.observer}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={exports:{}};return r[e](i,i.exports,a),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var i=Object.create(null);a.r(i);var n={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&r;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>n[e]=()=>r[e]));return n.default=()=>r,a.d(i,n),i},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";a.d(i,{component:()=>s});const e=coreApis.pluginApis.data,t=coreApis.componentApis.define,r=coreApis.utils,o="网址参数清理",n=(0,coreApis.utils.log.useScopedConsole)(o),s=(0,t.defineComponentMetadata)({name:"urlParamsClean",displayName:o,entry:async()=>{if((0,r.isNotHtml)()||(0,r.isIframe)())return; /* spell-checker: disable */const[t]=(0,e.registerAndGetData)("urlParamsClean.noClean",["videocard_series"]),[o]=(0,e.registerAndGetData)("urlParamsClean.params",["spm_id_from","from_source","from_spmid","from","seid","share_source","share_medium","share_plat","share_tag","share_session_id","share_from","bbid","ts","timestamp","unique_k","rt","tdsourcetag","accept_quality","broadcast_type","current_qn","current_quality","playurl_h264","playurl_h265","quality_description","network","network_status","platform_network_status","p2p_type","referfrom","visit_id","bsource","spm","hotRank","-Arouter","vd_source","is_story_h5","buvid","plat_id","goFrom","jumpLinkType","hasBack","noTitleBar","msource","live_from","plat_id","extra_jump_from","subarea_rank","popular_rank","launch_id","spmid"]),[i]=(0,e.registerAndGetData)("urlParamsClean.siteSpecifiedParams",[{match:/\/\/www\.bilibili\.com\/audio\/(au[\d]+|mycollection)/,param:"type"},{match:/\/\/live\.bilibili\.com\//,param:"session_id"},{match:/\/\/www\.bilibili\.com\/bangumi\//,param:"theme"},{match:/\/\/www\.bilibili\.com\/video\//,param:"mid"},{match:/\/\/www\.bilibili\.com\/video\//,param:"up_id"},{match:/\/\/mall\.bilibili\.com\//,param:"noReffer"}]),[s]=(0,e.registerAndGetData)("urlParamsClean.tailingSlash",[]),l=e=>{const a=new URL(e,location.origin),n=[...new URLSearchParams(a.search).entries()].map((e=>{let[t,r]=e;return`${t}=${r}`}));if(n.some((e=>t.some((t=>e.includes(t))))))return e;const l=n.filter((e=>!o.some((t=>e.startsWith(`${t}=`)))&&!i.some((t=>{let{match:r,param:o}=t;return document.URL.match(r)&&e.startsWith(`${o}=`)})))).join("&");s.forEach((e=>{let{match:t}=e;const o=a.pathname;(0,r.matchPattern)(o,t)&&o.endsWith("/")&&(a.pathname=o.slice(0,o.length-1))}));const c=l?`?${l}`:"";return a.search=c,a.toString()},c=e=>function(t,r,o){for(var a=arguments.length,i=new Array(a>3?a-3:0),s=3;s{try{return new URL(o,location.origin+location.pathname).toString()}catch(e){return n.warn("History API URL",`解析失败: ${o}`),o}})(),m=l(c);return m!==o?(n.log("History API 拦截",c,m),e.call(this,t,r,m,...i)):e.call(this,t,r,o,...i)},m=unsafeWindow.history.pushState;unsafeWindow.history.pushState=c(m);const u=unsafeWindow.history.replaceState;unsafeWindow.history.replaceState=c(u);const{fullyLoaded:p}=await Promise.resolve().then(a.t.bind(a,110,23)),{urlChange:d}=await Promise.resolve().then(a.t.bind(a,391,23));p((()=>{d((()=>(()=>{const e=l(document.URL);e!==document.URL&&(n.log("直接清理",document.URL,e),window.history.replaceState(history.state,"",e))})()))}))},tags:[componentsTags.utils], /* spell-checker: disable */ -urlExclude:[/game\.bilibili\.com\/fgo/,/live\.bilibili\.com\/p\/html\/live-app-hotrank\//],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=a(912);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(a.t.bind(a,799,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file +urlExclude:[/game\.bilibili\.com\/fgo/,/live\.bilibili\.com\/p\/html\/live-app-hotrank\//],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=a(912);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(a.t.bind(a,799,17)).then((e=>e.default))}})()})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/v1-migrate.js b/bb-evolved/registry/dist/components/utils/v1-migrate.js index 0218118058..7e87b04536 100644 --- a/bb-evolved/registry/dist/components/utils/v1-migrate.js +++ b/bb-evolved/registry/dist/components/utils/v1-migrate.js @@ -1 +1 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["utils/v1-migrate"]=o():e["utils/v1-migrate"]=o()}(globalThis,(()=>(()=>{"use strict";var e,o,t={764:e=>{e.exports=coreApis.filePicker},414:e=>{e.exports=coreApis.utils.log}},n={};function a(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,a),i.exports}o=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var i=Object.create(null);a.r(i);var r={};e=e||[null,o({}),o([]),o(o)];for(var s=2&n&&t;"object"==typeof s&&!~e.indexOf(s);s=o(s))Object.getOwnPropertyNames(s).forEach((e=>r[e]=()=>t[e]));return r.default=()=>t,a.d(i,r),i},a.d=(e,o)=>{for(var t in o)a.o(o,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},a.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{a.d(i,{component:()=>g});const e=coreApis.componentApis.define,o=coreApis.pluginApis.data,t=coreApis.componentApis.component,n=coreApis.componentApis.userComponent,r=coreApis.ajax,s=coreApis.cdnTypes,l=coreApis.meta,d=coreApis.settings,c=coreApis.toast;var p=a(414);const m=coreApis.pluginApis.hook,u=coreApis.pluginApis.plugin,g=(0,e.defineComponentMetadata)({name:"v1Migrate",displayName:"v1 设置迁移",description:{"zh-CN":"在设置的 `关于` 面板中添加 `导入 v1 设置` 按钮, 点击导入可以导入 v1 的设置, 并根据打开的选项自动下载安装 v2 中对应的功能."},tags:[componentsTags.utils],entry:()=>{(0,o.addData)("settingsPanel.about.actions",(e=>{e.push({icon:"mdi-inbox-arrow-down-outline",name:"importV1Settings",displayName:"导入 v1 设置",run:async()=>{const{logError:e}=await Promise.resolve().then(a.t.bind(a,414,23)),{pickFile:o}=await Promise.resolve().then(a.t.bind(a,764,23)),i=await o({accept:"*.json"});if(0===i.length)return;const[g]=i;try{const e=JSON.parse(await g.text());await(async e=>{const o=c.Toast.info("下载功能列表中","导入 v1 设置");try{console.log("下载功能列表中");const a=`${s.cdnRoots[(0,d.getGeneralSettings)().cdnRoot](l.meta.compilationInfo.branch)}doc/features/features.json`,i=await(0,r.monkey)({url:a});console.log(i);const c=JSON.parse(i);console.log("下载功能列表完成");const p=(o,a,i)=>async()=>{if(!e[o])return void console.log(`跳过了未开启的选项 ${o}`);const p={component:t.componentsMap,plugin:u.pluginsMap},g={component:n.installComponent,plugin:u.installPlugin};if(a in p[i])console.log(`${a} 已经存在, 跳过安装`);else{const e=c.find((e=>e.type===i&&e.name===a)),o=e?.fullAbsolutePath;if(!o||!e)return void console.log(`没有找到名为 ${a} 的功能`);const t=`${s.cdnRoots[(0,d.getGeneralSettings)().cdnRoot](l.meta.compilationInfo.branch,e.owner)}${o}`,n=await(0,r.monkey)({url:t}),{before:p,after:u}=(0,m.getHook)(`user${lodash.startCase(i)}s.add`,n,t);await p();const{metadata:v,message:f}=await g[i](n);await u(v),console.log(f)}},g=(o,t,n)=>()=>{const a=e[o],i=n?.(a)??a;if(void 0!==i){const[e,...o]=t.split("."),{options:n}=(0,d.getComponentSettings)(e);lodash.set(n,o,i)}console.log(`迁移了选项 ${o} -> ${t}`)},v=()=>()=>{const{customStyles:o}=e;o.filter((e=>e.enabled)).forEach((e=>{d.settings.userStyles[e.name]=lodash.omit(e,"enabled")}))},f=e=>p("guiSettings",e,"plugin"),y=()=>none,b={category:"home",activities:"feeds",bangumi:"subscriptions",watchlaterList:"watchlater",favoritesList:"favorites",historyList:"history",rankingLink:"ranking",drawingLink:"drawing",bangumiLink:"bangumi",musicLink:"music",matchLink:"match",shopLink:"shop"},h=[p("useDarkStyle","darkMode","component"),p("darkColorScheme","darkModeFollowSystem","component"),p("hideBanner","hideBanner","component"),p("expandDanmakuList","expandDanmakuList","component"),g("expandDanmakuListIgnoreMediaList","expandDanmakuList.ignoreMediaList"),p("expandDescription","fullVideoDescription","component"),p("watchlaterRedirect","watchlaterRedirect","component"),g("watchLaterRedirectNavbar","watchlaterRedirect.navbar"),g("watchLaterRedirectPage","watchlaterRedirect.page"),p("touchVideoPlayer","touchPlayerGestures","component"),p("touchVideoPlayer","touchPlayerControl","component"),p("customControlBackground","playerControlBackground","component"),g("customControlBackgroundOpacity","playerControlBackground.opacity",(e=>{const o=parseFloat(e);return Math.round(100*o)})),p("darkSchedule","darkModeSchedule","component"),g("darkScheduleStart","darkModeSchedule.range.start"),g("darkScheduleEnd","darkModeSchedule.range.end"),p("fullTweetsTitle","fullFeedsTitle","component"),p("fullPageTitle","fullEpisodeTitle","component"),p("removeVideoTopMask","hideVideoTopMask","component"),p("removeLiveWatermark","removeLiveWatermark","component"),p("harunaScale","dpiLiveShowgirl","component"),p("harunaScale","dpiLiveShowgirl","component"),p("removeAds","removePromotions","component"),g("showBlockedAdsTip","removePromotions.showPlaceholder"),g("preserveEventBanner","removePromotions.preserveEventBanner"),p("touchVideoPlayerDoubleTapControl","doubleClickControl","component"),g("customStyleColor","settingsPanel.themeColor"),p("useDefaultPlayerMode","defaultPlayerMode","component"),g("applyPlayerModeOnPlay","defaultPlayerMode.applyOnPlay"),g("defaultPlayerMode","defaultPlayerMode.mode"),p("skipChargeList","skipChargeList","component"),p("comboLike","touchComboLike","component"),p("autoLightOff","playerAutoLight","component"),p("airborne","danmakuAirborne","component"),p("useBiliplusRedirect","biliplusRedirect","component"),p("biliplusRedirect","biliplusRedirect","component"),p("framePlayback","seekByFrames","component"),p("useCommentStyle","simplifyComments","component"),p("imageResolution","imageResolution","component"),g("imageResolutionScale","imageResolution.scale"),p("playerFocus","playerFocus","component"),g("playerFocusOffset","playerFocus.offset"),p("simplifyLiveroom","simplifyLiveroom","component"),g("simplifyLiveroomSettings","simplifyLiveroom",(e=>{const{options:o}=(0,d.getComponentSettings)("simplifyLiveroom");Object.assign(o,Object.fromEntries(Object.entries(e).map((e=>{let[o,t]=e;return[`switch-${o}`,t]}))))})),p("customNavbar","customNavbar","component"),f("customNavbar.items.darkMode"),g("favoritesListCurrentSelect","customNavbar.lastFavoriteFolder"),g("touchNavBar","customNavbar.touch"),g("customNavbarFill","customNavbar.fill"),g("customNavbarTransparent","customNavbar.transparent"),g("customNavbarShadow","customNavbar.shadow"),g("customNavbarBlur","customNavbar.blur"),g("customNavbarOrder","customNavbar.order",(e=>(Object.keys(e).forEach((o=>{o in b&&(e[b[o]]=e[o],delete e[o])})),delete e.mangaLink,e))),g("customNavbarHidden","customNavbar.hidden",(e=>([...e].forEach((o=>{o in b&&(e.push(b[o]),lodash.pull(e,o))})),lodash.pull(e,"mangaLink"),e))),g("customNavbarBoundsPadding","customNavbar.padding",(e=>parseFloat(e))),g("customNavbarGlobalFixed","customNavbar.globalFixed"),g("customNavbarSeasonLogo","customNavbar.seasonLogo"),g("customNavbarShowDeadVideos","customNavbar.showDeadVideos"),p("playerShadow","playerShadow","component"),p("narrowDanmaku","preserveDanmakuInput","component"),p("outerWatchlater","outerWatchlater","component"),p("videoScreenshot","videoScreenshot","component"),p("hideBangumiReviews","hideBangumiReviews","component"),g("filenameFormat","settingsPanel.filenameFormat"),g("batchFilenameFormat","settingsPanel.batchFilenameFormat"),p("sidebarOffset","sidebarOffset","component"),g("sidebarOffset","sidebarOffset.offset"),p("noLiveAutoplay","liveHomeMute","component"),p("foldComment","rememberVideoSpeed","component"),g("defaultVideoSpeed","rememberVideoSpeed.speed"),g("rememberVideoSpeedList","rememberVideoSpeed.individualRememberList"),g("rememberVideoSpeed","rememberVideoSpeed.individualRemember"),g("extendVideoSpeed","rememberVideoSpeed.extend"),g("extendVideoSpeedList","rememberVideoSpeed.extendList"),p("foldComment","foldComments","component"),p("autoDraw","liveAutoDraw","component"),p("keymap","keymap","component"),g("keymapPreset","keymap.preset"),g("keymapJumpSeconds","keymap.longJumpSeconds"),g("customKeyBindings","keymap.customKeyBindings"),p("doubleClickFullscreen","doubleClickFullscreen","component"),g("doubleClickFullscreenPreventSingleClick","doubleClickFullscreen.preventSingleClick"),g("scriptLoadingMode","settingsPanel.scriptLoadingMode",(e=>e.replace(/\(自动\)$/,""))),g("guiSettingsDockSide","settingsPanel.dockSide"),p("fullActivityContent","fullFeedsContent","component"),p("feedsFilter","feedsFilter","component"),g("feedsFilterPatterns","feedsFilter.patterns"),g("feedsSpecialFilterTypes","feedsFilter.types"),g("feedsFilterSideCards","feedsFilter.sideCards"),p("selectableColumnText","columnUnlock","component"),p("miniPlayerTouchMove","touchMiniPlayer","component"),p("hideBangumiSponsors","hideBangumiSponsors","component"),p("hideRecommendLive","hideRecommendedLive","component"),p("hideRelatedVideos","hideRelatedVideos","component"),p("urlParamsClean","urlParamsClean","component"),p("collapseLiveSideBar","collapseLiveSideBar","component"),g("foregroundColorMode","settingsPanel.textColor"),g("updateCdn","settingsPanel.cdnRoot"),g("downloadPackageEmitMode","settingsPanel.downloadPackageEmitMode",(e=>"分别下载"===e?"单独下载":e)),p("bvidConvert","bvidConvert","component"),p("fixedSidebars","fixedFeedsSidebars","component"),p("autoHideSideBar","autoHideSidebar","component"),p("livePip","livePip","component"),p("extendFeedsLive","extendFeedsLive","component"),p("playerOnTop","playerOnTop","component"),p("quickFavorite","quickFavorite","component"),g("quickFavoriteID","quickFavorite.favoriteFolderID"),p("disableFeedsDetails","disableFeedsDetails","component"),p("elegantScrollbar","elegantScrollbar","component"),p("danmakuSendBar","liveDanmakuSendbar","component"),p("showCoverBeforePlay","showCoverBeforePlay","component"),p("seoJump","seoRedirect","component"),p("copyFeedsLink","copyFeedsLink","component"),p("copyCommentLink","copyCommentsLink","component"),p("unfoldFeeds","unfoldFeeds","component"),p("feedsImageExporter","imageExporter","component"),p("columnImageExporter","imageExporter","component"),p("preferAvUrl","avUrl","component"),p("homeHidden","simplifyHome","component"),g("homeHiddenItems","simplifyHome",(e=>{const{options:o}=(0,d.getComponentSettings)("simplifyHome");e.forEach((e=>o[`switch-${e}`]=!0))})),p("alwaysShowDuration","alwaysShowDuration","component"),p("removeVideoPopup","removePlayerPopup","component"),p("removeGuidePopup","removePlayerPopup","component"),p("removeVotePopup","removePlayerPopup","component"),g("removeVideoPopup","removePlayerPopup.relatedVideos"),g("removeGuidePopup","removePlayerPopup.comboLikes"),g("removeVotePopup","removePlayerPopup.votes"),p("checkInCenter","checkInCenter","component"),p("fullscreenGiftBox","liveGiftBox","component"),p("autoPlayControl","legacyAutoPlay","component"),p("scrollOutPlayer","playerIntersectionActions","component"),g("scrollOutPlayerTriggerPlace","playerIntersectionActions.triggerLocation"),g("scrollOutPlayerAutoPause","playerIntersectionActions.pause"),g("scrollOutPlayerAutoLightOn","playerIntersectionActions.light"),p("disableDanmakuHighlights","disableSpecialDanmaku","component"),p("disableUpDanmakuStyle","disableSpecialDanmaku","component"),g("disableDanmakuHighlights","disableSpecialDanmaku.highlight"),g("disableUpDanmakuStyle","disableSpecialDanmaku.up"),p("viewCover","viewCover","component"),p("downloadVideo","downloadVideo","component"),f("downloadVideo.outputs.aria2"),f("downloadVideo.outputs.idm"),g("downloadVideoQuality","downloadVideo.basicConfig.quality"),g("downloadVideoFormat","downloadVideo.basicConfig.api",(o=>({flv:"video.flv",dash:e.downloadVideoDashCodec.startsWith("HEVC")?"video.dash.hevc":"video.dash.avc"}[o]))),g("downloadVideoDefaultDanmaku","downloadVideo.danmakuType"),g("downloadVideoDefaultSubtitle","downloadVideo.subtitleType"),g("aria2RpcOptionProfiles","downloadVideo.rpcProfiles"),p("downloadDanmaku","downloadDanmaku","component"),p("downloadSubtitle","downloadSubtitle","component"),p("downloadAudio","downloadAudio","component"),p("downloadLiveRecords","downloadLiveRecords","component"),p("medalHelper","badgeHelper","component"),g("defaultMedalID","badgeHelper.defaultMedalID"),g("autoMatchMedal","badgeHelper.autoMatchMedal"),v(),y()];let k=0;o.message=`导入中... (${k}/${h.length})`;let S=0,P=0;for(const e of h)try{await e(),S++}catch(e){console.log(e),P++}finally{k++,o.message=`导入中... (${k}/${h.length})`}o.message=`导入完成. 成功 ${S} 个, 失败 ${P} 个, 可在控制台查看详细日志.`}catch(e){o.close(),(0,p.logError)(e)}})(e)}catch(o){e(o)}}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["utils/v1-migrate"]=o():e["utils/v1-migrate"]=o()}(globalThis,(()=>(()=>{"use strict";var e,o,t={764:e=>{e.exports=coreApis.filePicker},414:e=>{e.exports=coreApis.utils.log}},n={};function a(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,a),i.exports}o=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var i=Object.create(null);a.r(i);var r={};e=e||[null,o({}),o([]),o(o)];for(var s=2&n&&t;"object"==typeof s&&!~e.indexOf(s);s=o(s))Object.getOwnPropertyNames(s).forEach((e=>r[e]=()=>t[e]));return r.default=()=>t,a.d(i,r),i},a.d=(e,o)=>{for(var t in o)a.o(o,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},a.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{a.d(i,{component:()=>g});const e=coreApis.componentApis.define,o=coreApis.pluginApis.data,t=coreApis.componentApis.component,n=coreApis.componentApis.userComponent,r=coreApis.ajax,s=coreApis.cdnTypes,l=coreApis.meta,d=coreApis.settings,c=coreApis.toast;var p=a(414);const m=coreApis.pluginApis.hook,u=coreApis.pluginApis.plugin,g=(0,e.defineComponentMetadata)({name:"v1Migrate",displayName:"v1 设置迁移",description:{"zh-CN":"在设置的 `关于` 面板中添加 `导入 v1 设置` 按钮, 点击导入可以导入 v1 的设置, 并根据打开的选项自动下载安装 v2 中对应的功能."},tags:[componentsTags.utils],entry:()=>{(0,o.addData)("settingsPanel.about.actions",(e=>{e.push({icon:"mdi-inbox-arrow-down-outline",name:"importV1Settings",displayName:"导入 v1 设置",run:async()=>{const{logError:e}=await Promise.resolve().then(a.t.bind(a,414,23)),{pickFile:o}=await Promise.resolve().then(a.t.bind(a,764,23)),i=await o({accept:"*.json"});if(0===i.length)return;const[g]=i;try{const e=JSON.parse(await g.text());await(async e=>{const o=c.Toast.info("下载功能列表中","导入 v1 设置");try{console.log("下载功能列表中");const a=`${s.cdnRoots[(0,d.getGeneralSettings)().cdnRoot](l.meta.compilationInfo.branch)}doc/features/features.json`,i=await(0,r.monkey)({url:a});console.log(i);const c=JSON.parse(i);console.log("下载功能列表完成");const p=(o,a,i)=>async()=>{if(!e[o])return void console.log(`跳过了未开启的选项 ${o}`);const p={component:t.componentsMap,plugin:u.pluginsMap},g={component:n.installComponent,plugin:u.installPlugin};if(a in p[i])console.log(`${a} 已经存在, 跳过安装`);else{const e=c.find((e=>e.type===i&&e.name===a)),o=e?.fullAbsolutePath;if(!o||!e)return void console.log(`没有找到名为 ${a} 的功能`);const t=`${s.cdnRoots[(0,d.getGeneralSettings)().cdnRoot](l.meta.compilationInfo.branch,e.owner)}${o}`,n=await(0,r.monkey)({url:t}),{before:p,after:u}=(0,m.getHook)(`user${lodash.startCase(i)}s.add`,n,t);await p();const{metadata:v,message:f}=await g[i](n);await u(v),console.log(f)}},g=(o,t,n)=>()=>{const a=e[o],i=n?.(a)??a;if(void 0!==i){const[e,...o]=t.split("."),{options:n}=(0,d.getComponentSettings)(e);lodash.set(n,o,i)}console.log(`迁移了选项 ${o} -> ${t}`)},v=()=>()=>{const{customStyles:o}=e;o.filter((e=>e.enabled)).forEach((e=>{d.settings.userStyles[e.name]=lodash.omit(e,"enabled")}))},f=e=>p("guiSettings",e,"plugin"),y=()=>none,b={category:"home",activities:"feeds",bangumi:"subscriptions",watchlaterList:"watchlater",favoritesList:"favorites",historyList:"history",rankingLink:"ranking",drawingLink:"drawing",bangumiLink:"bangumi",musicLink:"music",matchLink:"match",shopLink:"shop"},h=[p("useDarkStyle","darkMode","component"),p("darkColorScheme","darkModeFollowSystem","component"),p("hideBanner","hideBanner","component"),p("expandDanmakuList","expandDanmakuList","component"),g("expandDanmakuListIgnoreMediaList","expandDanmakuList.ignoreMediaList"),p("expandDescription","fullVideoDescription","component"),p("watchlaterRedirect","watchlaterRedirect","component"),g("watchLaterRedirectNavbar","watchlaterRedirect.navbar"),g("watchLaterRedirectPage","watchlaterRedirect.page"),p("touchVideoPlayer","touchPlayerGestures","component"),p("touchVideoPlayer","touchPlayerControl","component"),p("customControlBackground","playerControlBackground","component"),g("customControlBackgroundOpacity","playerControlBackground.opacity",(e=>{const o=parseFloat(e);return Math.round(100*o)})),p("darkSchedule","darkModeSchedule","component"),g("darkScheduleStart","darkModeSchedule.range.start"),g("darkScheduleEnd","darkModeSchedule.range.end"),p("fullTweetsTitle","fullFeedsTitle","component"),p("fullPageTitle","fullEpisodeTitle","component"),p("removeVideoTopMask","hideVideoTopMask","component"),p("removeLiveWatermark","removeLiveWatermark","component"),p("harunaScale","dpiLiveShowgirl","component"),p("harunaScale","dpiLiveShowgirl","component"),p("removeAds","removePromotions","component"),g("showBlockedAdsTip","removePromotions.showPlaceholder"),g("preserveEventBanner","removePromotions.preserveEventBanner"),p("touchVideoPlayerDoubleTapControl","doubleClickControl","component"),g("customStyleColor","settingsPanel.themeColor"),p("useDefaultPlayerMode","defaultPlayerMode","component"),g("applyPlayerModeOnPlay","defaultPlayerMode.applyOnPlay"),g("defaultPlayerMode","defaultPlayerMode.mode"),p("skipChargeList","skipChargeList","component"),p("comboLike","touchComboLike","component"),p("autoLightOff","playerAutoLight","component"),p("airborne","danmakuAirborne","component"),p("useBiliplusRedirect","biliplusRedirect","component"),p("biliplusRedirect","biliplusRedirect","component"),p("framePlayback","seekByFrames","component"),p("useCommentStyle","simplifyComments","component"),p("imageResolution","imageResolution","component"),g("imageResolutionScale","imageResolution.scale"),p("playerFocus","playerFocus","component"),g("playerFocusOffset","playerFocus.offset"),p("simplifyLiveroom","simplifyLiveroom","component"),g("simplifyLiveroomSettings","simplifyLiveroom",(e=>{const{options:o}=(0,d.getComponentSettings)("simplifyLiveroom");Object.assign(o,Object.fromEntries(Object.entries(e).map((e=>{let[o,t]=e;return[`switch-${o}`,t]}))))})),p("customNavbar","customNavbar","component"),f("customNavbar.items.darkMode"),g("favoritesListCurrentSelect","customNavbar.lastFavoriteFolder"),g("touchNavBar","customNavbar.touch"),g("customNavbarFill","customNavbar.fill"),g("customNavbarTransparent","customNavbar.transparent"),g("customNavbarShadow","customNavbar.shadow"),g("customNavbarBlur","customNavbar.blur"),g("customNavbarOrder","customNavbar.order",(e=>(Object.keys(e).forEach((o=>{o in b&&(e[b[o]]=e[o],delete e[o])})),delete e.mangaLink,e))),g("customNavbarHidden","customNavbar.hidden",(e=>([...e].forEach((o=>{o in b&&(e.push(b[o]),lodash.pull(e,o))})),lodash.pull(e,"mangaLink"),e))),g("customNavbarBoundsPadding","customNavbar.padding",(e=>parseFloat(e))),g("customNavbarGlobalFixed","customNavbar.globalFixed"),g("customNavbarSeasonLogo","customNavbar.seasonLogo"),g("customNavbarShowDeadVideos","customNavbar.showDeadVideos"),p("playerShadow","playerShadow","component"),p("narrowDanmaku","preserveDanmakuInput","component"),p("outerWatchlater","outerWatchlater","component"),p("videoScreenshot","videoScreenshot","component"),p("hideBangumiReviews","hideBangumiReviews","component"),g("filenameFormat","settingsPanel.filenameFormat"),g("batchFilenameFormat","settingsPanel.batchFilenameFormat"),p("sidebarOffset","sidebarOffset","component"),g("sidebarOffset","sidebarOffset.offset"),p("noLiveAutoplay","liveHomeMute","component"),p("foldComment","rememberVideoSpeed","component"),g("defaultVideoSpeed","rememberVideoSpeed.speed"),g("rememberVideoSpeedList","rememberVideoSpeed.individualRememberList"),g("rememberVideoSpeed","rememberVideoSpeed.individualRemember"),g("extendVideoSpeed","rememberVideoSpeed.extend"),g("extendVideoSpeedList","rememberVideoSpeed.extendList"),p("foldComment","foldComments","component"),p("autoDraw","liveAutoDraw","component"),p("keymap","keymap","component"),g("keymapPreset","keymap.preset"),g("keymapJumpSeconds","keymap.longJumpSeconds"),g("customKeyBindings","keymap.customKeyBindings"),p("doubleClickFullscreen","doubleClickFullscreen","component"),g("doubleClickFullscreenPreventSingleClick","doubleClickFullscreen.preventSingleClick"),g("scriptLoadingMode","settingsPanel.scriptLoadingMode",(e=>e.replace(/\(自动\)$/,""))),g("guiSettingsDockSide","settingsPanel.dockSide"),p("fullActivityContent","fullFeedsContent","component"),p("feedsFilter","feedsFilter","component"),g("feedsFilterPatterns","feedsFilter.patterns"),g("feedsSpecialFilterTypes","feedsFilter.types"),g("feedsFilterSideCards","feedsFilter.sideCards"),p("selectableColumnText","columnUnlock","component"),p("miniPlayerTouchMove","touchMiniPlayer","component"),p("hideBangumiSponsors","hideBangumiSponsors","component"),p("hideRecommendLive","hideRecommendedLive","component"),p("hideRelatedVideos","hideRelatedVideos","component"),p("urlParamsClean","urlParamsClean","component"),p("collapseLiveSideBar","collapseLiveSideBar","component"),g("foregroundColorMode","settingsPanel.textColor"),g("updateCdn","settingsPanel.cdnRoot"),g("downloadPackageEmitMode","settingsPanel.downloadPackageEmitMode",(e=>"分别下载"===e?"单独下载":e)),p("bvidConvert","bvidConvert","component"),p("fixedSidebars","fixedFeedsSidebars","component"),p("autoHideSideBar","autoHideSidebar","component"),p("livePip","livePip","component"),p("extendFeedsLive","extendFeedsLive","component"),p("playerOnTop","playerOnTop","component"),p("quickFavorite","quickFavorite","component"),g("quickFavoriteID","quickFavorite.favoriteFolderID"),p("disableFeedsDetails","disableFeedsDetails","component"),p("elegantScrollbar","elegantScrollbar","component"),p("danmakuSendBar","liveDanmakuSendbar","component"),p("showCoverBeforePlay","showCoverBeforePlay","component"),p("seoJump","seoRedirect","component"),p("copyFeedsLink","copyFeedsLink","component"),p("copyCommentLink","copyCommentsLink","component"),p("unfoldFeeds","unfoldFeeds","component"),p("feedsImageExporter","imageExporter","component"),p("columnImageExporter","imageExporter","component"),p("preferAvUrl","avUrl","component"),p("homeHidden","simplifyHome","component"),g("homeHiddenItems","simplifyHome",(e=>{const{options:o}=(0,d.getComponentSettings)("simplifyHome");e.forEach((e=>o[`switch-${e}`]=!0))})),p("alwaysShowDuration","alwaysShowDuration","component"),p("removeVideoPopup","removePlayerPopup","component"),p("removeGuidePopup","removePlayerPopup","component"),p("removeVotePopup","removePlayerPopup","component"),g("removeVideoPopup","removePlayerPopup.relatedVideos"),g("removeGuidePopup","removePlayerPopup.comboLikes"),g("removeVotePopup","removePlayerPopup.votes"),p("checkInCenter","checkInCenter","component"),p("fullscreenGiftBox","liveGiftBox","component"),p("autoPlayControl","legacyAutoPlay","component"),p("scrollOutPlayer","playerIntersectionActions","component"),g("scrollOutPlayerTriggerPlace","playerIntersectionActions.triggerLocation"),g("scrollOutPlayerAutoPause","playerIntersectionActions.pause"),g("scrollOutPlayerAutoLightOn","playerIntersectionActions.light"),p("disableDanmakuHighlights","disableSpecialDanmaku","component"),p("disableUpDanmakuStyle","disableSpecialDanmaku","component"),g("disableDanmakuHighlights","disableSpecialDanmaku.highlight"),g("disableUpDanmakuStyle","disableSpecialDanmaku.up"),p("viewCover","viewCover","component"),p("downloadVideo","downloadVideo","component"),f("downloadVideo.outputs.aria2"),f("downloadVideo.outputs.idm"),g("downloadVideoQuality","downloadVideo.basicConfig.quality"),g("downloadVideoFormat","downloadVideo.basicConfig.api",(o=>({flv:"video.flv",dash:e.downloadVideoDashCodec.startsWith("HEVC")?"video.dash.hevc":"video.dash.avc"}[o]))),g("downloadVideoDefaultDanmaku","downloadVideo.danmakuType"),g("downloadVideoDefaultSubtitle","downloadVideo.subtitleType"),g("aria2RpcOptionProfiles","downloadVideo.rpcProfiles"),p("downloadDanmaku","downloadDanmaku","component"),p("downloadSubtitle","downloadSubtitle","component"),p("downloadAudio","downloadAudio","component"),p("downloadLiveRecords","downloadLiveRecords","component"),p("medalHelper","badgeHelper","component"),g("defaultMedalID","badgeHelper.defaultMedalID"),g("autoMatchMedal","badgeHelper.autoMatchMedal"),v(),y()];let k=0;o.message=`导入中... (${k}/${h.length})`;let S=0,P=0;for(const e of h)try{await e(),S++}catch(e){console.log(e),P++}finally{k++,o.message=`导入中... (${k}/${h.length})`}o.message=`导入完成. 成功 ${S} 个, 失败 ${P} 个, 可在控制台查看详细日志.`}catch(e){o.close(),(0,p.logError)(e)}})(e)}catch(o){e(o)}}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/view-cover.js b/bb-evolved/registry/dist/components/utils/view-cover.js index 420189b94e..e92ba1ad57 100644 --- a/bb-evolved/registry/dist/components/utils/view-cover.js +++ b/bb-evolved/registry/dist/components/utils/view-cover.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var r={};if(o)for(var i=0;i{"use strict";var o,r=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"download-cover-config download-video-config-section"},[t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("封面:")]),e._v(" "),t("VDropdown",{attrs:{items:e.items},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.type,callback:function(t){e.type=t},expression:"type"}})],1)])};o._withStripped=!0;const r=coreApis.settings;var i=n(648);const{options:a}=(0,r.getComponentSettings)("downloadVideo"),s=Vue.extend({components:{VDropdown:i.VDropdown},data:()=>({type:a.CoverType??"无",items:["无","jpg"]}),computed:{enabled(){return"无"!==this.type}},watch:{type(e){a.CoverType=e}}});var c=n(332),d=n.n(c),l=n(887),u=n.n(l),p={insert:"head",singleton:!1};d()(u(),p);u().locals;const f=(0,n(893).Z)(s,o,[],!1,null,null,null).exports},217:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{staticClass:"view-cover",attrs:{disabled:!e.imageUrl,name:"查看封面",icon:"mdi-image-outline"},on:{click:function(t){return e.viewCover()}}})};o._withStripped=!0;var r=n(284);const i=coreApis.ajax,a=coreApis.observer,s=coreApis.spinQuery;var c=n(648);const d=Vue.extend({components:{DefaultWidget:c.DefaultWidget},data:()=>({imageUrl:""}),async mounted(){if(document.URL.includes("live.bilibili.com")){const e=".header-info-ctnr .room-cover, .header-info-ctnr .avatar",t=await(0,s.select)(e);if(!t)return;const n=t.getAttribute("href").match(/space\.bilibili\.com\/([\d]+)/);if(n&&n[1]){const e=`https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=${n[1]}`,t=await(0,i.getJson)(e);this.imageUrl=t.data.cover.replace("http:","https:")}}else(0,a.videoChange)((async()=>{const{aid:e}=unsafeWindow;this.imageUrl=await(0,r.getVideoCoverUrlByAid)(e)}))},methods:{async viewCover(){(0,c.showImage)(this.imageUrl)}}});const l=(0,n(893).Z)(d,o,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function o(e,t,n,o,r,i,a,s){var c,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),o&&(d.functional=!0),i&&(d._scopeId="data-v-"+i),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},d._ssrRegister=c):r&&(c=s?function(){r.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(d.functional){d._injectStyles=c;var l=d.render;d.render=function(e,t){return c.call(t),l(e,t)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,c):[c]}return{exports:e,options:d}}n.d(t,{Z:()=>o})},284:e=>{"use strict";e.exports=coreApis.componentApis.video.videoCover},648:e=>{"use strict";e.exports=coreApis.ui}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{component:()=>a});const e=coreApis.componentApis.define;var t=n(284);const r=coreApis.utils.urls,i=coreApis.toast,a=(0,e.defineComponentMetadata)({name:"viewCover",displayName:"查看封面",tags:[componentsTags.utils,componentsTags.video],entry:none,reload:none,unload:none,plugin:{displayName:"下载视频 - 下载封面支持",setup:e=>{let{addData:o}=e;o("downloadVideo.assets",(async e=>{e.push({name:"downloadCover",displayName:"下载封面",getAssets:async(e,n)=>{const{type:o,enabled:r}=n;if(!r)return[];const a=i.Toast.info("获取封面中...","下载封面");let s=0;const c=await Promise.allSettled(e.map((async n=>{const r=await(0,t.getBlobByAid)(n.input.aid);return s++,a.message=`获取封面中... (${s}/${e.length})`,{name:`${n.input.title}.${o}`,data:r}}))),d=c.filter((e=>"fulfilled"===e.status)),l=c.filter((e=>"rejected"===e.status));return a.message=`获取完成. 成功 ${d.length} 个, 失败 ${l.length} 个.`,d.map((e=>e.value))},component:()=>Promise.resolve().then(n.bind(n,839)).then((e=>e.default))})}))}},widget:{component:()=>Promise.resolve().then(n.bind(n,217)).then((e=>e.default))},description:{"zh-CN":"在视频页面中, 可从功能面板中查看封面."},urlInclude:[...r.videoAndBangumiUrls],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),o=o.component})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>f});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"download-cover-config download-video-config-section"},[t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("封面:")]),e._v(" "),t("VDropdown",{attrs:{items:e.items},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.type,callback:function(t){e.type=t},expression:"type"}})],1)])};o._withStripped=!0;const r=coreApis.settings;var i=n(648);const{options:a}=(0,r.getComponentSettings)("downloadVideo"),s=Vue.extend({components:{VDropdown:i.VDropdown},data:()=>({type:a.CoverType??"无",items:["无","jpg"]}),computed:{enabled(){return"无"!==this.type}},watch:{type(e){a.CoverType=e}}});var c=n(332),d=n.n(c),l=n(887),u=n.n(l),p={insert:"head",singleton:!1};d()(u(),p);u().locals;const f=(0,n(893).Z)(s,o,[],!1,null,null,null).exports},217:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("DefaultWidget",{staticClass:"view-cover",attrs:{disabled:!e.imageUrl,name:"查看封面",icon:"mdi-image-outline"},on:{click:function(t){return e.viewCover()}}})};o._withStripped=!0;var r=n(284);const i=coreApis.ajax,a=coreApis.observer,s=coreApis.spinQuery;var c=n(648);const d=Vue.extend({components:{DefaultWidget:c.DefaultWidget},data:()=>({imageUrl:""}),async mounted(){if(document.URL.includes("live.bilibili.com")){const e=".header-info-ctnr .room-cover, .header-info-ctnr .avatar",t=await(0,s.select)(e);if(!t)return;const n=t.getAttribute("href").match(/space\.bilibili\.com\/([\d]+)/);if(n&&n[1]){const e=`https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=${n[1]}`,t=await(0,i.getJson)(e);this.imageUrl=t.data.cover.replace("http:","https:")}}else(0,a.videoChange)((async()=>{const{aid:e}=unsafeWindow;this.imageUrl=await(0,r.getVideoCoverUrlByAid)(e)}))},methods:{async viewCover(){(0,c.showImage)(this.imageUrl)}}});const l=(0,n(893).Z)(d,o,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function o(e,t,n,o,r,i,a,s){var c,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),o&&(d.functional=!0),i&&(d._scopeId="data-v-"+i),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},d._ssrRegister=c):r&&(c=s?function(){r.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(d.functional){d._injectStyles=c;var l=d.render;d.render=function(e,t){return c.call(t),l(e,t)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,c):[c]}return{exports:e,options:d}}n.d(t,{Z:()=>o})},284:e=>{"use strict";e.exports=coreApis.componentApis.video.videoCover},648:e=>{"use strict";e.exports=coreApis.ui}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{component:()=>a});const e=coreApis.componentApis.define;var t=n(284);const r=coreApis.utils.urls,i=coreApis.toast,a=(0,e.defineComponentMetadata)({name:"viewCover",displayName:"查看封面",tags:[componentsTags.utils,componentsTags.video],entry:none,reload:none,unload:none,plugin:{displayName:"下载视频 - 下载封面支持",setup:e=>{let{addData:o}=e;o("downloadVideo.assets",(async e=>{e.push({name:"downloadCover",displayName:"下载封面",getAssets:async(e,n)=>{const{type:o,enabled:r}=n;if(!r)return[];const a=i.Toast.info("获取封面中...","下载封面");let s=0;const c=await Promise.allSettled(e.map((async n=>{const r=await(0,t.getBlobByAid)(n.input.aid);return s++,a.message=`获取封面中... (${s}/${e.length})`,{name:`${n.input.title}.${o}`,data:r}}))),d=c.filter((e=>"fulfilled"===e.status)),l=c.filter((e=>"rejected"===e.status));return a.message=`获取完成. 成功 ${d.length} 个, 失败 ${l.length} 个.`,d.map((e=>e.value))},component:()=>Promise.resolve().then(n.bind(n,839)).then((e=>e.default))})}))}},widget:{component:()=>Promise.resolve().then(n.bind(n,217)).then((e=>e.default))},description:{"zh-CN":"在视频页面中, 可从功能面板中查看封面."},urlInclude:[...r.videoAndBangumiUrls],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/utils/watchlater-redirect.js b/bb-evolved/registry/dist/components/utils/watchlater-redirect.js index 6c8c52a790..c34e1809ff 100644 --- a/bb-evolved/registry/dist/components/utils/watchlater-redirect.js +++ b/bb-evolved/registry/dist/components/utils/watchlater-redirect.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/watchlater-redirect"]=t():e["utils/watchlater-redirect"]=t()}(globalThis,(()=>(()=>{var e,t,o={517:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=517,e.exports=t},346:e=>{"use strict";e.exports="将稍后再看的链接重定向为普通播放网址.\n- `重定向页面`: 对稍后再看列表页面里的链接重定向.\n- `重定向顶栏`: 对 `自定义顶栏` 里的稍后再看链接重定向.\n"},952:e=>{"use strict";e.exports=coreApis.componentApis.video.watchlater},391:e=>{"use strict";e.exports=coreApis.observer},200:e=>{"use strict";e.exports=coreApis.spinQuery}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={exports:{}};return o[e](n,n.exports,i),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var n=Object.create(null);i.r(n);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,i.d(n,a),n},i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";i.d(n,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"watchlaterRedirect",displayName:"稍后再看重定向",entry:async e=>{let{settings:t}=e;if(t.options.page){const{select:e}=await Promise.resolve().then(i.t.bind(i,200,23)),{childList:t}=await Promise.resolve().then(i.t.bind(i,391,23)),{getWatchlaterList:o}=await Promise.resolve().then(i.t.bind(i,952,23)),r=await o(!0),n=await e(".watch-later-list .list-box > span");if(!n)return;const a=(e,t)=>{try{const o=r[t],{bvid:i,cid:n,pages:a}=o,s=a.find((e=>e.cid===n))?.page??1,c=s>1?`https://www.bilibili.com/video/${i}?p=${s}`:`https://www.bilibili.com/video/${i}`,l=e.querySelector(".av-pic");l.target="_blank",l.href=c;const p=e.querySelector(".av-about .t");p.target="_blank",p.href=c}catch(o){console.error(`[watchlater redirect] error at index ${t}`,e,o)}},s=()=>{n.querySelectorAll(".av-item").forEach(a)};t(n,(e=>{e.forEach((e=>{e.removedNodes.forEach((e=>{if(e instanceof HTMLElement&&!e.classList.contains("itemlist-move")){const t=parseInt(dq(e,".key").textContent)-1;console.log("remove index",t),r.splice(t,1)}}))})),s()}))}},options:{page:{displayName:"重定向页面",defaultValue:!0},navbar:{displayName:"重定向顶栏",defaultValue:!0}},urlInclude:["https://www.bilibili.com/watchlater/#/list"],tags:[componentsTags.utils,componentsTags.video],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=i(517);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,346,17)).then((e=>e.default))}})()})})(),n=n.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/watchlater-redirect"]=t():e["utils/watchlater-redirect"]=t()}(globalThis,(()=>(()=>{var e,t,o={517:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=517,e.exports=t},346:e=>{"use strict";e.exports="将稍后再看的链接重定向为普通播放网址.\n- `重定向页面`: 对稍后再看列表页面里的链接重定向.\n- `重定向顶栏`: 对 `自定义顶栏` 里的稍后再看链接重定向.\n"},952:e=>{"use strict";e.exports=coreApis.componentApis.video.watchlater},391:e=>{"use strict";e.exports=coreApis.observer},200:e=>{"use strict";e.exports=coreApis.spinQuery}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={exports:{}};return o[e](n,n.exports,i),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var n=Object.create(null);i.r(n);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,i.d(n,a),n},i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";i.d(n,{component:()=>e});const e=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"watchlaterRedirect",displayName:"稍后再看重定向",entry:async e=>{let{settings:t}=e;if(t.options.page){const{select:e}=await Promise.resolve().then(i.t.bind(i,200,23)),{childList:t}=await Promise.resolve().then(i.t.bind(i,391,23)),{getWatchlaterList:o}=await Promise.resolve().then(i.t.bind(i,952,23)),r=await o(!0),n=await e(".watch-later-list .list-box > span");if(!n)return;const a=(e,t)=>{try{const o=r[t],{bvid:i,cid:n,pages:a}=o,s=a.find((e=>e.cid===n))?.page??1,c=s>1?`https://www.bilibili.com/video/${i}?p=${s}`:`https://www.bilibili.com/video/${i}`,l=e.querySelector(".av-pic");l.target="_blank",l.href=c;const p=e.querySelector(".av-about .t");p.target="_blank",p.href=c}catch(o){console.error(`[watchlater redirect] error at index ${t}`,e,o)}},s=()=>{n.querySelectorAll(".av-item").forEach(a)};t(n,(e=>{e.forEach((e=>{e.removedNodes.forEach((e=>{if(e instanceof HTMLElement&&!e.classList.contains("itemlist-move")){const t=parseInt(dq(e,".key").textContent)-1;console.log("remove index",t),r.splice(t,1)}}))})),s()}))}},options:{page:{displayName:"重定向页面",defaultValue:!0},navbar:{displayName:"重定向顶栏",defaultValue:!0}},urlInclude:["https://www.bilibili.com/watchlater/#/list"],tags:[componentsTags.utils,componentsTags.video],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=i(517);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,346,17)).then((e=>e.default))}})()})})(),n=n.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/auto-remove-watchlater.js b/bb-evolved/registry/dist/components/video/auto-remove-watchlater.js index 87914de4c0..c4d382848f 100644 --- a/bb-evolved/registry/dist/components/video/auto-remove-watchlater.js +++ b/bb-evolved/registry/dist/components/video/auto-remove-watchlater.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/auto-remove-watchlater"]=t():e["video/auto-remove-watchlater"]=t()}(globalThis,(()=>(()=>{var e,t,o={955:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=955,e.exports=t},219:e=>{"use strict";e.exports="在稍后再看页面播放结束时, 自动将当前视频移出稍后再看.\n注意:\n- 一定要播放结束, 快结束时手动切走不算\n- b 站的稍后再看列表不会实时刷新\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return o[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(a,i),a},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>c});const e=coreApis.componentApis.define,t=coreApis.observer,o=coreApis.utils.urls,r=coreApis.componentApis.video.playerAgent,i=coreApis.componentApis.video.watchlater,c=(0,e.defineComponentMetadata)({name:"autoRemoveWatchlater",displayName:"自动移出稍后再看",tags:[componentsTags.video],urlInclude:[...o.watchlaterUrls,...o.videoUrls],entry:()=>{(0,t.videoChange)((async e=>{let{aid:t}=e;(await r.playerAgent.query.video.element()).addEventListener("ended",(async()=>{(await(0,i.getWatchlaterList)()).includes(parseInt(t))&&await(0,i.toggleWatchlater)(t)}))}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(955);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,219,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/auto-remove-watchlater"]=t():e["video/auto-remove-watchlater"]=t()}(globalThis,(()=>(()=>{var e,t,o={955:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=955,e.exports=t},219:e=>{"use strict";e.exports="在稍后再看页面播放结束时, 自动将当前视频移出稍后再看.\n注意:\n- 一定要播放结束, 快结束时手动切走不算\n- b 站的稍后再看列表不会实时刷新\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return o[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var a=Object.create(null);n.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(a,i),a},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.d(a,{component:()=>c});const e=coreApis.componentApis.define,t=coreApis.observer,o=coreApis.utils.urls,r=coreApis.componentApis.video.playerAgent,i=coreApis.componentApis.video.watchlater,c=(0,e.defineComponentMetadata)({name:"autoRemoveWatchlater",displayName:"自动移出稍后再看",tags:[componentsTags.video],urlInclude:[...o.watchlaterUrls,...o.videoUrls],entry:()=>{(0,t.videoChange)((async e=>{let{aid:t}=e;(await r.playerAgent.query.video.element()).addEventListener("ended",(async()=>{(await(0,i.getWatchlaterList)()).includes(parseInt(t))&&await(0,i.toggleWatchlater)(t)}))}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(955);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,219,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/av-url.js b/bb-evolved/registry/dist/components/video/av-url.js index 5b23919eee..8951e640bd 100644 --- a/bb-evolved/registry/dist/components/video/av-url.js +++ b/bb-evolved/registry/dist/components/video/av-url.js @@ -1 +1 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/av-url"]=o():e["video/av-url"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var i in t)e.o(t,i)&&!e.o(o,i)&&Object.defineProperty(o,i,{enumerable:!0,get:t[i]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{component:()=>c});const t=coreApis.componentApis.define,i=coreApis.lifeCycle,n=coreApis.observer,r=coreApis.spinQuery,s=coreApis.utils.urls,c=(0,t.defineComponentMetadata)({name:"avUrl",displayName:"网址AV号转换",description:{"zh-CN":"当视频的链接是BV号时, 自动转换为AV号. 请注意这会导致浏览器历史记录出现重复的标题 (分别是转换前后的网址), 并可能导致后退要多退几次."},entry:()=>{(0,i.fullyLoaded)((()=>{(0,n.urlChange)((async()=>{const e=await(0,r.select)((()=>unsafeWindow.aid));if(!e)return;if(document.URL.includes("videocard_series"))return void console.log("skip video series");const o=document.URL.replace(/\/(video|bangumi)\/(BV[\w]+)/i,((o,t)=>`/${t}/av${e}`));document.URL!==o&&window.history.replaceState(history.state,"",o)}))}))},tags:[componentsTags.video,componentsTags.utils],urlInclude:s.videoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return o=o.component})())); \ No newline at end of file +!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/av-url"]=o():e["video/av-url"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var i in t)e.o(t,i)&&!e.o(o,i)&&Object.defineProperty(o,i,{enumerable:!0,get:t[i]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{component:()=>a});const t=coreApis.componentApis.define,i=coreApis.lifeCycle,n=coreApis.observer,r=coreApis.spinQuery,s=coreApis.utils.urls,a=(0,t.defineComponentMetadata)({name:"avUrl",displayName:"网址AV号转换",description:{"zh-CN":"当视频的链接是BV号时, 自动转换为AV号. 请注意这会导致浏览器历史记录出现重复的标题 (分别是转换前后的网址), 并可能导致后退要多退几次."},entry:()=>{(0,i.fullyLoaded)((()=>{(0,n.urlChange)((async()=>{const e=await(0,r.select)((()=>unsafeWindow.aid));if(!e)return;if(document.URL.includes("videocard_series"))return void console.log("skip video series");const o=document.URL.replace(/\/(video|bangumi)\/(BV[\w]+)/i,((o,t)=>`/${t}/av${e}`));document.URL!==o&&window.history.replaceState(history.state,"",o)}))}))},tags:[componentsTags.video,componentsTags.utils],urlInclude:s.videoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/biliplus-redirect.js b/bb-evolved/registry/dist/components/video/biliplus-redirect.js index 111da8b5c4..d91d119cd7 100644 --- a/bb-evolved/registry/dist/components/video/biliplus-redirect.js +++ b/bb-evolved/registry/dist/components/video/biliplus-redirect.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/biliplus-redirect"]=t():e["video/biliplus-redirect"]=t()}(globalThis,(()=>(()=>{"use strict";var e={540:(e,t,o)=>{o.r(t),o.d(t,{default:()=>c});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{attrs:{href:e.url,target:"_blank",tabindex:"-1"}},[t("DefaultWidget",{attrs:{name:"转到BiliPlus",icon:"biliplus",disabled:!e.url}})],1)};i._withStripped=!0;const n=coreApis.observer,r=coreApis.ui,s=/\/(video|medialist\/play)\/([^\/]+\/)?(av[\d]+|BV.+)/i,a=[{condition:()=>"space.bilibili.com"===window.location.host,getUrl:e=>document.URL.replace("space.bilibili.com/",`${e}/space/`)},{condition:()=>"space.bilibili.com"===window.location.host,getUrl:e=>document.URL.replace("space.bilibili.com/",`${e}/space/`)},{condition:()=>document.URL.includes("/bangumi/play"),getUrl:(e,t)=>((0,n.videoChange)((()=>{const o=unsafeWindow.aid||document.querySelector(".av-link,.info-sec-av").innerText.replace(/[aAvV]/g,""),i=`https://${e}/video/av${o}/`;document.URL!==i?t(i):t("")})),`https://${e}${window.location.pathname}${window.location.search}`)},{condition:()=>s.test(document.URL),getUrl:e=>`https://${e}/video/${document.URL.match(s)[3]}/`}];var l=function(e,t,o,i,n,r,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=o,c._compiled=!0),i&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):n&&(l=a?function(){n.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:n),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(Vue.extend({components:{DefaultWidget:r.DefaultWidget},data:()=>({url:""}),created(){const e="www.biliplus.com",t=e=>this.url=e,o=a.find((e=>e.condition()));o?t(o.getUrl(e,t)):(0,n.videoChange)((()=>{this.url=document.URL.replace(window.location.host,e)}))}}),i,[],!1,null,null,null);const c=l.exports}},t={};function o(i){var n=t[i];if(void 0!==n)return n.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,o),r.exports}o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{o.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"biliplusRedirect",displayName:"BiliPlus 跳转支持",description:{"zh-CN":"在视频 / 番剧 / 空间中, 可以从功能中的按钮点击转到 BiliPlus 上对应的页面."},urlInclude:[...t.videoAndBangumiUrls,"//space.bilibili.com"],entry:none,tags:[componentsTags.video,componentsTags.utils],widget:{component:()=>Promise.resolve().then(o.bind(o,540)).then((e=>e.default))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/biliplus-redirect"]=t():e["video/biliplus-redirect"]=t()}(globalThis,(()=>(()=>{"use strict";var e={540:(e,t,o)=>{o.r(t),o.d(t,{default:()=>c});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("a",{attrs:{href:e.url,target:"_blank",tabindex:"-1"}},[t("DefaultWidget",{attrs:{name:"转到BiliPlus",icon:"biliplus",disabled:!e.url}})],1)};i._withStripped=!0;const n=coreApis.observer,r=coreApis.ui,s=/\/(video|medialist\/play)\/([^\/]+\/)?(av[\d]+|BV.+)/i,a=[{condition:()=>"space.bilibili.com"===window.location.host,getUrl:e=>document.URL.replace("space.bilibili.com/",`${e}/space/`)},{condition:()=>"space.bilibili.com"===window.location.host,getUrl:e=>document.URL.replace("space.bilibili.com/",`${e}/space/`)},{condition:()=>document.URL.includes("/bangumi/play"),getUrl:(e,t)=>((0,n.videoChange)((()=>{const o=unsafeWindow.aid||document.querySelector(".av-link,.info-sec-av").innerText.replace(/[aAvV]/g,""),i=`https://${e}/video/av${o}/`;document.URL!==i?t(i):t("")})),`https://${e}${window.location.pathname}${window.location.search}`)},{condition:()=>s.test(document.URL),getUrl:e=>`https://${e}/video/${document.URL.match(s)[3]}/`}];var l=function(e,t,o,i,n,r,s,a){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=o,c._compiled=!0),i&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),n&&n.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},c._ssrRegister=l):n&&(l=a?function(){n.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:n),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:e,options:c}}(Vue.extend({components:{DefaultWidget:r.DefaultWidget},data:()=>({url:""}),created(){const e="www.biliplus.com",t=e=>this.url=e,o=a.find((e=>e.condition()));o?t(o.getUrl(e,t)):(0,n.videoChange)((()=>{this.url=document.URL.replace(window.location.host,e)}))}}),i,[],!1,null,null,null);const c=l.exports}},t={};function o(i){var n=t[i];if(void 0!==n)return n.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,o),r.exports}o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{o.d(i,{component:()=>n});const e=coreApis.componentApis.define,t=coreApis.utils.urls,n=(0,e.defineComponentMetadata)({name:"biliplusRedirect",displayName:"BiliPlus 跳转支持",description:{"zh-CN":"在视频 / 番剧 / 空间中, 可以从功能中的按钮点击转到 BiliPlus 上对应的页面."},urlInclude:[...t.videoAndBangumiUrls,"//space.bilibili.com"],entry:none,tags:[componentsTags.video,componentsTags.utils],widget:{component:()=>Promise.resolve().then(o.bind(o,540)).then((e=>e.default))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/bvid-convert.js b/bb-evolved/registry/dist/components/video/bvid-convert.js index 42ffd1c4a4..9ba2800470 100644 --- a/bb-evolved/registry/dist/components/video/bvid-convert.js +++ b/bb-evolved/registry/dist/components/video/bvid-convert.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(i)for(var r=0;r{"use strict";var i,o=function(){return void 0===i&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>w});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"bvid-convert"},[e.aid?t("div",{staticClass:"bvid-convert-item"},[e._v("\n "+e._s(e.aid)+"\n "),t("div",{staticClass:"bvid-convert-item-copy",attrs:{title:"复制链接"},on:{click:function(t){return e.copyLink("aid")}}},[t("VIcon",{attrs:{size:16,icon:e.aidCopied?"mdi-check":"mdi-link"}})],1)]):e._e(),e._v(" "),e.bvid?t("div",{staticClass:"bvid-convert-item"},[e._v("\n "+e._s(e.bvid)+"\n "),t("div",{staticClass:"bvid-convert-item-copy",attrs:{title:"复制链接"},on:{click:function(t){return e.copyLink("bvid")}}},[t("VIcon",{attrs:{size:16,icon:e.bvidCopied?"mdi-check":"mdi-link"}})],1)]):e._e()])};i._withStripped=!0;const o=coreApis.observer,r=coreApis.settings;var s=n(200);const a=coreApis.utils,c=coreApis.utils.title;var d=n(457);const l=coreApis.ui,{options:u}=(0,r.getComponentSettings)("bvidConvert");var p=function(e){return e.Aid="aid",e.Bvid="bvid",e}(p||{});const v=[p.Aid,p.Bvid],f=[e=>{let{id:t,query:n}=e;return v.some((e=>n.includes(`${e}=`)))?`https://www.bilibili.com/video/${t}`:null},e=>{let{id:t}=e;return d.bangumiUrls.some((e=>(0,a.matchUrlPattern)(e)))?`https://www.bilibili.com/video/${t}`:null},e=>{let{id:t,query:n}=e;const i=new URLSearchParams(n),o=new URLSearchParams;for(const e of["p","t"]){const t=i.get(e);t&&o.set(e,t)}return`https://www.bilibili.com/video/${t}${o.size>0?`?${o.toString()}`:""}`}],m=Vue.extend({components:{VIcon:l.VIcon},data:()=>({aid:"",aidCopied:!1,bvid:"",bvidCopied:!1}),async mounted(){(0,o.videoChange)((async()=>{this.aid=`av${unsafeWindow.aid}`,this.bvid=unsafeWindow.bvid;const e=await(0,s.select)(".av-link,.bv-link,.bvid-link");e&&(this.bvid=e.innerHTML.trim())}))},methods:{async copyLink(e){if(this[`${e}Copied`])return;const t={query:location.search,url:location.origin+location.pathname,id:this[e]},n=f.map((e=>e(t))).filter((e=>null!==e))[0];u.copyWithTitle?await navigator.clipboard.writeText(`${(0,c.getFriendlyTitle)()} ${n}`):await navigator.clipboard.writeText(n),this[`${e}Copied`]=!0,setTimeout((()=>this[`${e}Copied`]=!1),1e3)}}});var b=n(332),h=n.n(b),y=n(521),g=n.n(y),x={insert:"head",singleton:!1};h()(g(),x);g().locals;var C=function(e,t,n,i,o,r,s,a){var c,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),r&&(d._scopeId="data-v-"+r),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},d._ssrRegister=c):o&&(c=a?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(d.functional){d._injectStyles=c;var l=d.render;d.render=function(e,t){return c.call(t),l(e,t)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,c):[c]}return{exports:e,options:d}}(m,i,[],!1,null,null,null);const w=C.exports},200:e=>{"use strict";e.exports=coreApis.spinQuery},457:e=>{"use strict";e.exports=coreApis.utils.urls}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={id:i,exports:{}};return e[i](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>s});const e=coreApis.componentApis.define;var t=n(200),o=n(457);const r=(0,e.defineOptionsMetadata)({copyWithTitle:{defaultValue:!1,displayName:"复制链接时带上标题"}}),s=(0,e.defineComponentMetadata)({name:"bvidConvert",displayName:"BV 号转换",options:r,entry:none,description:{"zh-CN":"在功能面板中显示视频的 AV 号和 BV 号."},tags:[componentsTags.video,componentsTags.utils],widget:{component:()=>Promise.resolve().then(n.bind(n,642)).then((e=>e.default)),condition:t.hasVideo},urlInclude:o.videoAndBangumiUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>w});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"bvid-convert"},[e.aid?t("div",{staticClass:"bvid-convert-item"},[e._v("\n "+e._s(e.aid)+"\n "),t("div",{staticClass:"bvid-convert-item-copy",attrs:{title:"复制链接"},on:{click:function(t){return e.copyLink("aid")}}},[t("VIcon",{attrs:{size:16,icon:e.aidCopied?"mdi-check":"mdi-link"}})],1)]):e._e(),e._v(" "),e.bvid?t("div",{staticClass:"bvid-convert-item"},[e._v("\n "+e._s(e.bvid)+"\n "),t("div",{staticClass:"bvid-convert-item-copy",attrs:{title:"复制链接"},on:{click:function(t){return e.copyLink("bvid")}}},[t("VIcon",{attrs:{size:16,icon:e.bvidCopied?"mdi-check":"mdi-link"}})],1)]):e._e()])};i._withStripped=!0;const o=coreApis.observer,r=coreApis.settings;var s=n(200);const a=coreApis.utils,c=coreApis.utils.title;var d=n(457);const l=coreApis.ui,{options:u}=(0,r.getComponentSettings)("bvidConvert");var p=function(e){return e.Aid="aid",e.Bvid="bvid",e}(p||{});const v=[p.Aid,p.Bvid],f=[e=>{let{id:t,query:n}=e;return v.some((e=>n.includes(`${e}=`)))?`https://www.bilibili.com/video/${t}`:null},e=>{let{id:t}=e;return d.bangumiUrls.some((e=>(0,a.matchUrlPattern)(e)))?`https://www.bilibili.com/video/${t}`:null},e=>{let{id:t,query:n}=e;const i=new URLSearchParams(n),o=new URLSearchParams;for(const e of["p","t"]){const t=i.get(e);t&&o.set(e,t)}return`https://www.bilibili.com/video/${t}${o.size>0?`?${o.toString()}`:""}`}],m=Vue.extend({components:{VIcon:l.VIcon},data:()=>({aid:"",aidCopied:!1,bvid:"",bvidCopied:!1}),async mounted(){(0,o.videoChange)((async()=>{this.aid=`av${unsafeWindow.aid}`,this.bvid=unsafeWindow.bvid;const e=await(0,s.select)(".av-link,.bv-link,.bvid-link");e&&(this.bvid=e.innerHTML.trim())}))},methods:{async copyLink(e){if(this[`${e}Copied`])return;const t={query:location.search,url:location.origin+location.pathname,id:this[e]},n=f.map((e=>e(t))).filter((e=>null!==e))[0];u.copyWithTitle?await navigator.clipboard.writeText(`${(0,c.getFriendlyTitle)()} ${n}`):await navigator.clipboard.writeText(n),this[`${e}Copied`]=!0,setTimeout((()=>this[`${e}Copied`]=!1),1e3)}}});var b=n(332),h=n.n(b),y=n(521),g=n.n(y),x={insert:"head",singleton:!1};h()(g(),x);g().locals;var C=function(e,t,n,i,o,r,s,a){var c,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),r&&(d._scopeId="data-v-"+r),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},d._ssrRegister=c):o&&(c=a?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(d.functional){d._injectStyles=c;var l=d.render;d.render=function(e,t){return c.call(t),l(e,t)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,c):[c]}return{exports:e,options:d}}(m,i,[],!1,null,null,null);const w=C.exports},200:e=>{"use strict";e.exports=coreApis.spinQuery},457:e=>{"use strict";e.exports=coreApis.utils.urls}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={id:i,exports:{}};return e[i](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>s});const e=coreApis.componentApis.define;var t=n(200),o=n(457);const r=(0,e.defineOptionsMetadata)({copyWithTitle:{defaultValue:!1,displayName:"复制链接时带上标题"}}),s=(0,e.defineComponentMetadata)({name:"bvidConvert",displayName:"BV 号转换",options:r,entry:none,description:{"zh-CN":"在功能面板中显示视频的 AV 号和 BV 号."},tags:[componentsTags.video,componentsTags.utils],widget:{component:()=>Promise.resolve().then(n.bind(n,642)).then((e=>e.default)),condition:t.hasVideo},urlInclude:o.videoAndBangumiUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/danmaku/airborne.js b/bb-evolved/registry/dist/components/video/danmaku/airborne.js index f591f901c4..5cbd59e6d9 100644 --- a/bb-evolved/registry/dist/components/video/danmaku/airborne.js +++ b/bb-evolved/registry/dist/components/video/danmaku/airborne.js @@ -6,4 +6,4 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(o)for(var i=0;i{var o=n(661);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>c});const e=coreApis.componentApis.styledComponent,t=coreApis.componentApis.define,n=coreApis.componentApis.video.playerAgent,o=coreApis.componentApis.video.videoDanmaku,a=coreApis.observer,s=coreApis.utils.urls,c=(0,t.defineComponentMetadata)({displayName:"启用弹幕空降",author:{name:"kdxcxs",link:"https://github.com/kdxcxs"},description:{"zh-CN":"为可能含有时间点的弹幕添加下划线, 点击可以跳到视频对应时间."},tags:[componentsTags.video],urlInclude:s.playerUrls,...(0,e.toggleStyle)("danmakuAirborne",(()=>Promise.resolve().then(r.t.bind(r,488,23))),(async e=>{let{settings:t}=e;const{enabled:r}=t,i=e=>{if(!e)return NaN;const t=e.match(/(\d+)[ ]*[::时分][ ]*(\d+)([ ]*[::分][ ]*(\d+))?/);if(!t)return NaN;if(t[3]){const[,n,o,,r]=t.map((e=>parseInt(e)));return[n,o,r].some((e=>Number.isNaN(e)))||e.includes("分")&&!e.includes("时")?NaN:3600*n+60*o+r}const[,n,o]=t.map((e=>parseInt(e)));return[n,o].some((e=>Number.isNaN(e)))?NaN:60*n+o},s=e=>{if(!r)return;const t=e.target;if(!["b-danmaku","bili-dm"].some((e=>t.classList.contains(e))))return;const n=i(t.textContent);Number.isNaN(n)||unsafeWindow.player.seek(n,!1)};(0,o.forEachVideoDanmaku)({added:e=>{const t=!Number.isNaN(i(e.text));e.element.classList.toggle("airborne",t)}}),(0,a.videoChange)((async()=>{const e=await n.playerAgent.query.video.wrap();e.classList.contains("airborne-enabled")||(e.classList.add("airborne-enabled"),e.addEventListener("click",s))}))})),commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var o=n(661);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>c});const e=coreApis.componentApis.styledComponent,t=coreApis.componentApis.define,n=coreApis.componentApis.video.playerAgent,o=coreApis.componentApis.video.videoDanmaku,a=coreApis.observer,s=coreApis.utils.urls,c=(0,t.defineComponentMetadata)({displayName:"启用弹幕空降",author:{name:"kdxcxs",link:"https://github.com/kdxcxs"},description:{"zh-CN":"为可能含有时间点的弹幕添加下划线, 点击可以跳到视频对应时间."},tags:[componentsTags.video],urlInclude:s.playerUrls,...(0,e.toggleStyle)("danmakuAirborne",(()=>Promise.resolve().then(r.t.bind(r,488,23))),(async e=>{let{settings:t}=e;const{enabled:r}=t,i=e=>{if(!e)return NaN;const t=e.match(/(\d+)[ ]*[::时分][ ]*(\d+)([ ]*[::分][ ]*(\d+))?/);if(!t)return NaN;if(t[3]){const[,n,o,,r]=t.map((e=>parseInt(e)));return[n,o,r].some((e=>Number.isNaN(e)))||e.includes("分")&&!e.includes("时")?NaN:3600*n+60*o+r}const[,n,o]=t.map((e=>parseInt(e)));return[n,o].some((e=>Number.isNaN(e)))?NaN:60*n+o},s=e=>{if(!r)return;const t=e.target;if(!["b-danmaku","bili-dm"].some((e=>t.classList.contains(e))))return;const n=i(t.textContent);Number.isNaN(n)||unsafeWindow.player.seek(n,!1)};(0,o.forEachVideoDanmaku)({added:e=>{const t=!Number.isNaN(i(e.text));e.element.classList.toggle("airborne",t)}}),(0,a.videoChange)((async()=>{const e=await n.playerAgent.query.video.wrap();e.classList.contains("airborne-enabled")||(e.classList.add("airborne-enabled"),e.addEventListener("click",s))}))})),commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/danmaku/download.js b/bb-evolved/registry/dist/components/video/danmaku/download.js index 7d0d86379a..ead3116e95 100644 --- a/bb-evolved/registry/dist/components/video/danmaku/download.js +++ b/bb-evolved/registry/dist/components/video/danmaku/download.js @@ -9,4 +9,4 @@ t=[[null,t,""]]);var o={};if(n)for(var r=0;r{"use strict";var n,o=function(){return void 0===n&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),a=[];function s(t){for(var e=-1,i=0;i{"use strict";i.r(e),i.d(e,{default:()=>u});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"multiple-widgets"},[e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载弹幕 (XML)",icon:"danmaku"},on:{click:function(e){return t.download("xml")}}}),t._v(" "),e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载弹幕 (JSON)",icon:"danmaku"},on:{click:function(e){return t.download("json")}}}),t._v(" "),e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载弹幕 (ASS)",icon:"danmaku"},on:{click:function(e){return t.download("ass")}}})],1)};n._withStripped=!0;const o=coreApis.download;var r=i(414),a=i(674);const s=coreApis.pluginApis.data;var l=i(648);var c=i(476);(0,s.addData)("ui.icons",(t=>{t.danmaku=''}));const d=Vue.extend({components:{DefaultWidget:l.DefaultWidget},data:()=>({disabled:!1}),methods:{async download(t){try{this.disabled=!0;const e=(0,a.getFriendlyTitle)(),i=await(0,c.getBlobByType)(t);await o.DownloadPackage.single(`${e}.${t}`,i)}catch(t){(0,r.logError)(t)}finally{this.disabled=!1}}}});const u=(0,i(893).Z)(d,n,[],!1,null,null,null).exports},421:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>m});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"download-danmaku-config download-video-config-section"},[e("div",{staticClass:"download-video-config-item"},[e("div",{staticClass:"download-video-config-title"},[t._v("弹幕:")]),t._v(" "),e("VDropdown",{attrs:{items:t.items},scopedSlots:t._u([{key:"item",fn:function({item:e}){return[t._v("\n "+t._s(e)+"\n ")]}}]),model:{value:t.type,callback:function(e){t.type=e},expression:"type"}})],1)])};n._withStripped=!0;const o=coreApis.settings;var r=i(648);const a=(0,o.getComponentSettings)("downloadVideo").options,s=Vue.extend({components:{VDropdown:r.VDropdown},data:()=>({type:a.danmakuType??"无",items:["无","ass","json","xml"]}),computed:{enabled(){return"无"!==this.type}},watch:{type(t){a.danmakuType=t}}});var l=i(332),c=i.n(l),d=i(962),u=i.n(d),p={insert:"head",singleton:!1};c()(u(),p);u().locals;const m=(0,i(893).Z)(s,n,[],!1,null,null,null).exports},893:(t,e,i)=>{"use strict";function n(t,e,i,n,o,r,a,s){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=l):o&&(l=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(t,e){return l.call(e),d(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:c}}i.d(e,{Z:()=>n})},648:t=>{"use strict";t.exports=coreApis.ui},414:t=>{"use strict";t.exports=coreApis.utils.log},674:t=>{"use strict";t.exports=coreApis.utils.title}},e={};function i(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={id:n,exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";i.d(n,{component:()=>a});const t=coreApis.componentApis.define,e=coreApis.spinQuery,o=coreApis.toast,r=coreApis.utils.urls,a=(0,t.defineComponentMetadata)({name:"downloadDanmaku",displayName:"下载弹幕",description:{"zh-CN":"启用下载弹幕支持, 在视频和番剧页面中可从功能面板里下载弹幕. 请注意 ASS 弹幕下载不会包含高级弹幕, 字幕弹幕等."},tags:[componentsTags.video],entry:none,reload:none,unload:none,plugin:{displayName:"下载视频 - 下载弹幕支持",setup:t=>{let{addData:e}=t;e("downloadVideo.assets",(async t=>{const{getBlobByType:e}=await Promise.resolve().then(i.bind(i,476));t.push({name:"downloadDanmaku",displayName:"下载弹幕",getAssets:async(t,i)=>{const{type:n,enabled:r}=i;if(!r)return[];const a=o.Toast.info("获取弹幕中...","下载弹幕");let s=0;const l=await Promise.allSettled(t.map((async i=>{const o=await e(n,i.input);return s++,a.message=`获取弹幕中... (${s}/${t.length})`,{name:`${i.input.title}.${n}`,data:o}}))),c=l.filter((t=>"fulfilled"===t.status)),d=l.filter((t=>"rejected"===t.status));return a.message=`获取完成. 成功 ${c.length} 个, 失败 ${d.length} 个.`,c.map((t=>t.value))},component:()=>Promise.resolve().then(i.bind(i,421)).then((t=>t.default))})}))}},urlInclude:r.videoAndBangumiUrls,widget:{condition:e.hasVideo,component:()=>Promise.resolve().then(i.bind(i,995)).then((t=>t.default))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),n=n.component})())); \ No newline at end of file +n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),a=[];function s(t){for(var e=-1,i=0;i{"use strict";i.r(e),i.d(e,{default:()=>u});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"multiple-widgets"},[e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载弹幕 (XML)",icon:"danmaku"},on:{click:function(e){return t.download("xml")}}}),t._v(" "),e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载弹幕 (JSON)",icon:"danmaku"},on:{click:function(e){return t.download("json")}}}),t._v(" "),e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载弹幕 (ASS)",icon:"danmaku"},on:{click:function(e){return t.download("ass")}}})],1)};n._withStripped=!0;const o=coreApis.download;var r=i(414),a=i(674);const s=coreApis.pluginApis.data;var l=i(648);var c=i(476);(0,s.addData)("ui.icons",(t=>{t.danmaku=''}));const d=Vue.extend({components:{DefaultWidget:l.DefaultWidget},data:()=>({disabled:!1}),methods:{async download(t){try{this.disabled=!0;const e=(0,a.getFriendlyTitle)(),i=await(0,c.getBlobByType)(t);await o.DownloadPackage.single(`${e}.${t}`,i)}catch(t){(0,r.logError)(t)}finally{this.disabled=!1}}}});const u=(0,i(893).Z)(d,n,[],!1,null,null,null).exports},421:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>m});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"download-danmaku-config download-video-config-section"},[e("div",{staticClass:"download-video-config-item"},[e("div",{staticClass:"download-video-config-title"},[t._v("弹幕:")]),t._v(" "),e("VDropdown",{attrs:{items:t.items},scopedSlots:t._u([{key:"item",fn:function({item:e}){return[t._v("\n "+t._s(e)+"\n ")]}}]),model:{value:t.type,callback:function(e){t.type=e},expression:"type"}})],1)])};n._withStripped=!0;const o=coreApis.settings;var r=i(648);const a=(0,o.getComponentSettings)("downloadVideo").options,s=Vue.extend({components:{VDropdown:r.VDropdown},data:()=>({type:a.danmakuType??"无",items:["无","ass","json","xml"]}),computed:{enabled(){return"无"!==this.type}},watch:{type(t){a.danmakuType=t}}});var l=i(332),c=i.n(l),d=i(962),u=i.n(d),p={insert:"head",singleton:!1};c()(u(),p);u().locals;const m=(0,i(893).Z)(s,n,[],!1,null,null,null).exports},893:(t,e,i)=>{"use strict";function n(t,e,i,n,o,r,a,s){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=l):o&&(l=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(t,e){return l.call(e),d(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:c}}i.d(e,{Z:()=>n})},648:t=>{"use strict";t.exports=coreApis.ui},414:t=>{"use strict";t.exports=coreApis.utils.log},674:t=>{"use strict";t.exports=coreApis.utils.title}},e={};function i(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={id:n,exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";i.d(n,{component:()=>a});const t=coreApis.componentApis.define,e=coreApis.spinQuery,o=coreApis.toast,r=coreApis.utils.urls,a=(0,t.defineComponentMetadata)({name:"downloadDanmaku",displayName:"下载弹幕",description:{"zh-CN":"启用下载弹幕支持, 在视频和番剧页面中可从功能面板里下载弹幕. 请注意 ASS 弹幕下载不会包含高级弹幕, 字幕弹幕等."},tags:[componentsTags.video],entry:none,reload:none,unload:none,plugin:{displayName:"下载视频 - 下载弹幕支持",setup:t=>{let{addData:e}=t;e("downloadVideo.assets",(async t=>{const{getBlobByType:e}=await Promise.resolve().then(i.bind(i,476));t.push({name:"downloadDanmaku",displayName:"下载弹幕",getAssets:async(t,i)=>{const{type:n,enabled:r}=i;if(!r)return[];const a=o.Toast.info("获取弹幕中...","下载弹幕");let s=0;const l=await Promise.allSettled(t.map((async i=>{const o=await e(n,i.input);return s++,a.message=`获取弹幕中... (${s}/${t.length})`,{name:`${i.input.title}.${n}`,data:o}}))),c=l.filter((t=>"fulfilled"===t.status)),d=l.filter((t=>"rejected"===t.status));return a.message=`获取完成. 成功 ${c.length} 个, 失败 ${d.length} 个.`,c.map((t=>t.value))},component:()=>Promise.resolve().then(i.bind(i,421)).then((t=>t.default))})}))}},urlInclude:r.videoAndBangumiUrls,widget:{condition:e.hasVideo,component:()=>Promise.resolve().then(i.bind(i,995)).then((t=>t.default))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),n=n.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/danmaku/expand.js b/bb-evolved/registry/dist/components/video/danmaku/expand.js index 333102b789..138dfe21b4 100644 --- a/bb-evolved/registry/dist/components/video/danmaku/expand.js +++ b/bb-evolved/registry/dist/components/video/danmaku/expand.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/danmaku/expand"]=t():e["video/danmaku/expand"]=t()}(globalThis,(()=>(()=>{var e,t,i={134:(e,t,i)=>{"use strict";i.r(t),i.d(t,{decodeDanmakuSegment:()=>a,decodeDanmakuView:()=>d,getDanmakuSegment:()=>l,getDanmakuView:()=>p,proto:()=>n});const o=coreApis.runtimeLibrary,n={nested:{DmWebViewReply:{fields:{state:{type:"int32",id:1},text:{type:"string",id:2},textSide:{type:"string",id:3},dmSge:{type:"DmSegConfig",id:4},flag:{type:"DanmakuFlagConfig",id:5},specialDms:{rule:"repeated",type:"string",id:6},checkBox:{type:"bool",id:7},count:{type:"int64",id:8},commandDms:{rule:"repeated",type:"CommandDm",id:9},dmSetting:{type:"DanmuWebPlayerConfig",id:10}}},CommandDm:{fields:{id:{type:"int64",id:1},oid:{type:"int64",id:2},mid:{type:"int64",id:3},command:{type:"string",id:4},content:{type:"string",id:5},progress:{type:"int32",id:6},ctime:{type:"string",id:7},mtime:{type:"string",id:8},extra:{type:"string",id:9},idStr:{type:"string",id:10}}},DmSegConfig:{fields:{pageSize:{type:"int64",id:1},total:{type:"int64",id:2}}},DanmakuFlagConfig:{fields:{recFlag:{type:"int32",id:1},recText:{type:"string",id:2},recSwitch:{type:"int32",id:3}}},DmSegMobileReply:{fields:{elems:{rule:"repeated",type:"DanmakuElem",id:1}}},DanmakuElem:{fields:{id:{type:"int64",id:1},progress:{type:"int32",id:2},mode:{type:"int32",id:3},fontsize:{type:"int32",id:4},color:{type:"uint32",id:5},midHash:{type:"string",id:6},content:{type:"string",id:7},ctime:{type:"int64",id:8},weight:{type:"int32",id:9},action:{type:"string",id:10},pool:{type:"int32",id:11},idStr:{type:"string",id:12},attr:{type:"int32",id:13}}},DanmuWebPlayerConfig:{fields:{dmSwitch:{type:"bool",id:1},aiSwitch:{type:"bool",id:2},aiLevel:{type:"int32",id:3},blocktop:{type:"bool",id:4},blockscroll:{type:"bool",id:5},blockbottom:{type:"bool",id:6},blockcolor:{type:"bool",id:7},blockspecial:{type:"bool",id:8},preventshade:{type:"bool",id:9},dmask:{type:"bool",id:10},opacity:{type:"float",id:11},dmarea:{type:"int32",id:12},speedplus:{type:"float",id:13},fontsize:{type:"float",id:14},screensync:{type:"bool",id:15},speedsync:{type:"bool",id:16},fontfamily:{type:"string",id:17},bold:{type:"bool",id:18},fontborder:{type:"int32",id:19},drawType:{type:"string",id:20}}}}},r=lodash.curry((async(e,t)=>{const i=new Uint8Array("arrayBuffer"in Blob.prototype?await t.arrayBuffer():await new Response(t).arrayBuffer()),r=(await o.protobufLibrary).Root.fromJSON(n).lookupType(e),a=r.decode(i);return r.toObject(a)})),a=r("DmSegMobileReply"),d=r("DmWebViewReply"),s=async e=>(await unsafeWindow.fetch(e,{mode:"cors",credentials:"include"})).blob(),p=async(e,t)=>{const i=await s(`https://api.bilibili.com/x/v2/dm/web/view?type=1&oid=${t}&pid=${e}`);if(!i)throw new Error("获取弹幕信息失败");return await d(i)},l=async(e,t,i)=>{const o=await s(`https://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid=${t}&pid=${e}&segment_index=${i+1}`);if(!o)throw new Error(`弹幕片段${i+1}下载失败`);return a(o)}},960:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=960,e.exports=t},635:e=>{"use strict";e.exports="每次加载视频时自动展开弹幕列表, 如果弹幕装载量超过 `最大弹幕数量`, 则不展开以免对页面造成卡顿. (`最大弹幕数量` 是和视频的总弹幕量对比, 不一定和播放器实际装载的弹幕量相等)\n"}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return i[e](r,r.exports,n),r.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(i,o){if(1&o&&(i=this(i)),8&o)return i;if("object"==typeof i&&i){if(4&o&&i.__esModule)return i;if(16&o&&"function"==typeof i.then)return i}var r=Object.create(null);n.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var d=2&o&&i;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,n.d(r,a),r},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.d(r,{component:()=>s});const e=coreApis.componentApis.define,t=coreApis.observer,i=coreApis.spinQuery,o=coreApis.utils,a=coreApis.utils.log,d=coreApis.utils.urls,s=(0,e.defineComponentMetadata)({name:"expandDanmakuList",displayName:"展开弹幕列表",entry:async e=>{let{settings:{options:r}}=e;const s=(0,a.useScopedConsole)("展开弹幕列表"),{getDanmakuView:p}=await Promise.resolve().then(n.bind(n,134));(0,t.videoChange)((async e=>{let{aid:t,cid:n}=e;if(d.mediaListUrls.some((e=>(0,o.matchUrlPattern)(e)))&&r.ignoreMediaList)return;const a=(await p(t,n)).count;if(s.log(`当前弹幕量: ${a}`),null!==a&&a>r.maxDanmakuCount)return void s.log(`超过了最大弹幕数量 ${r.maxDanmakuCount}, 跳过展开`);const l=await(0,i.select)(".bui-collapse-wrap");if(dq(".multi-page-v1, .base-video-sections-v1")&&r.ignoreWithEpisodes)s.log("检测到选集, 跳过展开");else if(l&&l.classList.contains("bui-collapse-wrap-folded")){(await(0,i.select)(".bui-collapse-header"))?.click()}}))},tags:[componentsTags.video],options:{ignoreMediaList:{defaultValue:!0,displayName:"合集类页面不自动展开"},ignoreWithEpisodes:{defaultValue:!0,displayName:"有选集时不自动展开"},maxDanmakuCount:{defaultValue:500,displayName:"最大弹幕数量"}},urlInclude:[...d.videoAndBangumiUrls,...d.mediaListUrls],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(960);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,635,17)).then((e=>e.default))}})()})})(),r=r.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/danmaku/expand"]=t():e["video/danmaku/expand"]=t()}(globalThis,(()=>(()=>{var e,t,i={134:(e,t,i)=>{"use strict";i.r(t),i.d(t,{decodeDanmakuSegment:()=>a,decodeDanmakuView:()=>d,getDanmakuSegment:()=>l,getDanmakuView:()=>p,proto:()=>n});const o=coreApis.runtimeLibrary,n={nested:{DmWebViewReply:{fields:{state:{type:"int32",id:1},text:{type:"string",id:2},textSide:{type:"string",id:3},dmSge:{type:"DmSegConfig",id:4},flag:{type:"DanmakuFlagConfig",id:5},specialDms:{rule:"repeated",type:"string",id:6},checkBox:{type:"bool",id:7},count:{type:"int64",id:8},commandDms:{rule:"repeated",type:"CommandDm",id:9},dmSetting:{type:"DanmuWebPlayerConfig",id:10}}},CommandDm:{fields:{id:{type:"int64",id:1},oid:{type:"int64",id:2},mid:{type:"int64",id:3},command:{type:"string",id:4},content:{type:"string",id:5},progress:{type:"int32",id:6},ctime:{type:"string",id:7},mtime:{type:"string",id:8},extra:{type:"string",id:9},idStr:{type:"string",id:10}}},DmSegConfig:{fields:{pageSize:{type:"int64",id:1},total:{type:"int64",id:2}}},DanmakuFlagConfig:{fields:{recFlag:{type:"int32",id:1},recText:{type:"string",id:2},recSwitch:{type:"int32",id:3}}},DmSegMobileReply:{fields:{elems:{rule:"repeated",type:"DanmakuElem",id:1}}},DanmakuElem:{fields:{id:{type:"int64",id:1},progress:{type:"int32",id:2},mode:{type:"int32",id:3},fontsize:{type:"int32",id:4},color:{type:"uint32",id:5},midHash:{type:"string",id:6},content:{type:"string",id:7},ctime:{type:"int64",id:8},weight:{type:"int32",id:9},action:{type:"string",id:10},pool:{type:"int32",id:11},idStr:{type:"string",id:12},attr:{type:"int32",id:13}}},DanmuWebPlayerConfig:{fields:{dmSwitch:{type:"bool",id:1},aiSwitch:{type:"bool",id:2},aiLevel:{type:"int32",id:3},blocktop:{type:"bool",id:4},blockscroll:{type:"bool",id:5},blockbottom:{type:"bool",id:6},blockcolor:{type:"bool",id:7},blockspecial:{type:"bool",id:8},preventshade:{type:"bool",id:9},dmask:{type:"bool",id:10},opacity:{type:"float",id:11},dmarea:{type:"int32",id:12},speedplus:{type:"float",id:13},fontsize:{type:"float",id:14},screensync:{type:"bool",id:15},speedsync:{type:"bool",id:16},fontfamily:{type:"string",id:17},bold:{type:"bool",id:18},fontborder:{type:"int32",id:19},drawType:{type:"string",id:20}}}}},r=lodash.curry((async(e,t)=>{const i=new Uint8Array("arrayBuffer"in Blob.prototype?await t.arrayBuffer():await new Response(t).arrayBuffer()),r=(await o.protobufLibrary).Root.fromJSON(n).lookupType(e),a=r.decode(i);return r.toObject(a)})),a=r("DmSegMobileReply"),d=r("DmWebViewReply"),s=async e=>(await unsafeWindow.fetch(e,{mode:"cors",credentials:"include"})).blob(),p=async(e,t)=>{const i=await s(`https://api.bilibili.com/x/v2/dm/web/view?type=1&oid=${t}&pid=${e}`);if(!i)throw new Error("获取弹幕信息失败");return await d(i)},l=async(e,t,i)=>{const o=await s(`https://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid=${t}&pid=${e}&segment_index=${i+1}`);if(!o)throw new Error(`弹幕片段${i+1}下载失败`);return a(o)}},960:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=960,e.exports=t},635:e=>{"use strict";e.exports="每次加载视频时自动展开弹幕列表, 如果弹幕装载量超过 `最大弹幕数量`, 则不展开以免对页面造成卡顿. (`最大弹幕数量` 是和视频的总弹幕量对比, 不一定和播放器实际装载的弹幕量相等)\n"}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return i[e](r,r.exports,n),r.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(i,o){if(1&o&&(i=this(i)),8&o)return i;if("object"==typeof i&&i){if(4&o&&i.__esModule)return i;if(16&o&&"function"==typeof i.then)return i}var r=Object.create(null);n.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var d=2&o&&i;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,n.d(r,a),r},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";n.d(r,{component:()=>s});const e=coreApis.componentApis.define,t=coreApis.observer,i=coreApis.spinQuery,o=coreApis.utils,a=coreApis.utils.log,d=coreApis.utils.urls,s=(0,e.defineComponentMetadata)({name:"expandDanmakuList",displayName:"展开弹幕列表",entry:async e=>{let{settings:{options:r}}=e;const s=(0,a.useScopedConsole)("展开弹幕列表"),{getDanmakuView:p}=await Promise.resolve().then(n.bind(n,134));(0,t.videoChange)((async e=>{let{aid:t,cid:n}=e;if(d.mediaListUrls.some((e=>(0,o.matchUrlPattern)(e)))&&r.ignoreMediaList)return;const a=(await p(t,n)).count;if(s.log(`当前弹幕量: ${a}`),null!==a&&a>r.maxDanmakuCount)return void s.log(`超过了最大弹幕数量 ${r.maxDanmakuCount}, 跳过展开`);const l=await(0,i.select)(".bui-collapse-wrap");if(dq(".multi-page-v1, .base-video-sections-v1")&&r.ignoreWithEpisodes)s.log("检测到选集, 跳过展开");else if(l&&l.classList.contains("bui-collapse-wrap-folded")){(await(0,i.select)(".bui-collapse-header"))?.click()}}))},tags:[componentsTags.video],options:{ignoreMediaList:{defaultValue:!0,displayName:"合集类页面不自动展开"},ignoreWithEpisodes:{defaultValue:!0,displayName:"有选集时不自动展开"},maxDanmakuCount:{defaultValue:500,displayName:"最大弹幕数量"}},urlInclude:[...d.videoAndBangumiUrls,...d.mediaListUrls],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(960);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,635,17)).then((e=>e.default))}})()})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/danmaku/unescape.js b/bb-evolved/registry/dist/components/video/danmaku/unescape.js index a01033a7b2..10d1a2ef68 100644 --- a/bb-evolved/registry/dist/components/video/danmaku/unescape.js +++ b/bb-evolved/registry/dist/components/video/danmaku/unescape.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/danmaku/unescape"]=t():e["video/danmaku/unescape"]=t()}(globalThis,(()=>(()=>{var e,t,o={844:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=844,e.exports=t},78:e=>{"use strict";e.exports="将弹幕中的 `\\n` 替换为真实的换行, 注意这可能导致原先不重叠的弹幕发生重叠.\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return o[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,r.d(a,i),a},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.componentApis.video.videoDanmaku,o=(0,e.defineComponentMetadata)({name:"unescapeDanmaku",displayName:"弹幕转义",tags:[componentsTags.video],entry:()=>{const e=/\\n/g;(0,t.forEachVideoDanmaku)({added:t=>{if(e.test(t.text)){const o=t.text.replace(e,"\n");t.element.textContent=o}}})},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(844);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,78,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/danmaku/unescape"]=t():e["video/danmaku/unescape"]=t()}(globalThis,(()=>(()=>{var e,t,o={844:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=844,e.exports=t},78:e=>{"use strict";e.exports="将弹幕中的 `\\n` 替换为真实的换行, 注意这可能导致原先不重叠的弹幕发生重叠.\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return o[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,r.d(a,i),a},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.componentApis.video.videoDanmaku,o=(0,e.defineComponentMetadata)({name:"unescapeDanmaku",displayName:"弹幕转义",tags:[componentsTags.video],entry:()=>{const e=/\\n/g;(0,t.forEachVideoDanmaku)({added:t=>{if(e.test(t.text)){const o=t.text.replace(e,"\n");t.element.textContent=o}}})},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(844);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,78,17)).then((e=>e.default))}})()})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/default-location.js b/bb-evolved/registry/dist/components/video/default-location.js index 7cf217696b..e0c35d30a0 100644 --- a/bb-evolved/registry/dist/components/video/default-location.js +++ b/bb-evolved/registry/dist/components/video/default-location.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/default-location"]=t():e["video/default-location"]=t()}(globalThis,(()=>(()=>{var e={292:(e,t,n)=>{"use strict";n.d(t,{component:()=>u,E:()=>r,F:()=>l});const o=coreApis.componentApis.define,i=coreApis.utils.urls,a=coreApis.spinQuery,s="//www.bilibili.com/video/",l={withTitle:{displayName:"带标题视频页",urls:[s,...i.mediaListUrls]},noTitle:{displayName:"无标题视频页",urls:[...i.bangumiUrls,...i.cheeseUrls]},bnj:{displayName:"拜年纪视频页",urls:[/\/\/www\.bilibili\.com\/festival\/(\d+)bnj/]}},r=lodash.once((()=>{for(const[e,{urls:t}]of Object.entries(l))if((0,i.matchCurrentPage)(t))return e;return null}));class c{constructor(e,t){this.lastMoment=e,this.result=t}}const d=async()=>{const e=6e4,t=(0,a.select)(".bb-comment",{maxRetry:50,queryInterval:600}),n=[e/2,e,3*e].map((e=>({time:e,callback:async e=>{console.warn(`[videoDefaultLocation] waiting more than ${e}ms for the page to load`)}}))),o=(await async function(e,t){let n={time:0,callback:none},o=null;const i=t[Symbol.iterator](),a=()=>{const e=i.next();if(!e.done){const t=e.value;o=setTimeout((()=>{o=null,n.callback(n.time),n=t,a()}),t.time-n.time)}};a();const s=await e;return null!==o&&clearTimeout(o),new c(n.time,s)}(t,n)).result;return null!==o||(console.error("[videoDefaultLocation] waiting for page load timeout"),!1)},u=(0,o.defineComponentMetadata)({name:"videoDefaultLocation",displayName:"视频页默认定位",tags:[componentsTags.video],urlInclude:i.allVideoUrls,description:{"zh-CN":'打开视频/番剧时自动定位到指定位置\n\n
    \n\n位置:距离页面顶部的像素距离\\\n默认位置:打开视频时自动定位到此处\\\n位置测试:查看、调整当前页面所在位置\n\n当前版本限制默认位置的最大值为 4000。\\\n若有其他希望支持的页面,请提交反馈。\\\n脚本不会等待评论完全加载,因此较大的默认位置将无法正确定位。\n\n
    \n\n\n'},extraOptions:()=>Promise.resolve().then(n.bind(n,422)).then((e=>e.default)),options:{locations:{defaultValue:lodash.mapValues(l,(()=>0)),hidden:!0}},entry:async e=>{let{settings:{options:{locations:t}}}=e;const n=window?.performance?.getEntriesByType("navigation");if(1!==n?.length)return void console.error(`[videoDefaultLocation] 无法处理 PerformanceNavigationTiming 不是一个的情况。url: ${window.location.href}`);if("navigate"!==n[0].type)return;if((0,i.matchCurrentPage)(s)){const e=unsafeWindow.scrollTo;unsafeWindow.scrollTo=()=>{unsafeWindow.scrollTo=e}}const o=r();if(null===o)return void console.error(`[videoDefaultLocation] unknown page type. url: ${window.location.href}`);const a=t[o],l=document.documentElement;(a{var o=n(218)((function(e){return e[1]}));o.push([e.id,".video-default-location-extend-box {\n border-radius: 4px;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n}\n.video-default-location-extend-box-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-radius: 4px;\n box-shadow: 0 1px rgba(136, 136, 136, 0.2666666667);\n cursor: pointer;\n}\n.video-default-location-extend-box-bar-text {\n height: 24px;\n line-height: 24px;\n padding: 0 8px;\n}\n.video-default-location-extend-box-bar-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n color: rgba(136, 136, 136, 0.6666666667);\n}\n.video-default-location-extend-box-bar-btn-animation {\n animation: video-default-location-extend-box-bar-btn-animation-keyframes 0.3s;\n}\n@keyframes video-default-location-extend-box-bar-btn-animation-keyframes {\n50% {\n transform: rotateX(90deg);\n}\n}\n.video-default-location-extend-box-bar {\n transition: box-shadow 0.2s ease-out;\n}\n.video-default-location-extend-box-hidden .video-default-location-extend-box-bar {\n box-shadow: 0 0 rgba(136, 136, 136, 0.2666666667);\n}\n.video-default-location-extend-box-content-wrap {\n overflow: hidden;\n}\n.video-default-location-extend-box-content-transition-enter-active,\n.video-default-location-extend-box-content-transition-leave-active {\n transition: margin-top 0.2s ease-out;\n}\n.video-default-location-extend-box-content-transition-enter,\n.video-default-location-extend-box-content-transition-leave-to {\n margin-top: -100%;\n}",""]),e.exports=o},495:(e,t,n)=>{var o=n(218)((function(e){return e[1]}));o.push([e.id,".video-default-location-form-line {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n column-gap: 10px;\n}\n.video-default-location-form-item-grow {\n flex: 1 auto;\n}\n.video-default-location-form-item-not-grow {\n flex: 0 auto;\n}\n.video-default-location-vertical-space {\n height: 8px;\n}\n.video-default-location-options-advanced {\n margin: 8px;\n}",""]),e.exports=o},257:(e,t,n)=>{var o=n(218)((function(e){return e[1]}));o.push([e.id,".video-default-location-page-type-selector-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n color: rgba(136, 136, 136, 0.6666666667);\n}",""]),e.exports=o},218:e=>{"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/default-location"]=t():e["video/default-location"]=t()}(globalThis,(()=>(()=>{var e={292:(e,t,n)=>{"use strict";n.d(t,{component:()=>u,E:()=>r,F:()=>l});const o=coreApis.componentApis.define,i=coreApis.utils.urls,a=coreApis.spinQuery,s="//www.bilibili.com/video/",l={withTitle:{displayName:"带标题视频页",urls:[s,...i.mediaListUrls]},noTitle:{displayName:"无标题视频页",urls:[...i.bangumiUrls,...i.cheeseUrls]},bnj:{displayName:"拜年纪视频页",urls:[/\/\/www\.bilibili\.com\/festival\/(\d+)bnj/]}},r=lodash.once((()=>{for(const[e,{urls:t}]of Object.entries(l))if((0,i.matchCurrentPage)(t))return e;return null}));class c{constructor(e,t){this.lastMoment=e,this.result=t}}const d=async()=>{const e=6e4,t=(0,a.select)(".bb-comment",{maxRetry:50,queryInterval:600}),n=[e/2,e,3*e].map((e=>({time:e,callback:async e=>{console.warn(`[videoDefaultLocation] waiting more than ${e}ms for the page to load`)}}))),o=(await async function(e,t){let n={time:0,callback:none},o=null;const i=t[Symbol.iterator](),a=()=>{const e=i.next();if(!e.done){const t=e.value;o=setTimeout((()=>{o=null,n.callback(n.time),n=t,a()}),t.time-n.time)}};a();const s=await e;return null!==o&&clearTimeout(o),new c(n.time,s)}(t,n)).result;return null!==o||(console.error("[videoDefaultLocation] waiting for page load timeout"),!1)},u=(0,o.defineComponentMetadata)({name:"videoDefaultLocation",displayName:"视频页默认定位",tags:[componentsTags.video],urlInclude:i.allVideoUrls,description:{"zh-CN":"打开视频/番剧时自动定位到指定位置\n\n位置:距离页面顶部的像素距离\\\n默认位置:打开视频时自动定位到此处\\\n位置测试:查看、调整当前页面所在位置\n\n当前版本限制默认位置的最大值为 4000。\\\n若有其他希望支持的页面,请提交反馈。\\\n脚本不会等待评论完全加载,因此较大的默认位置将无法正确定位。\n"},extraOptions:()=>Promise.resolve().then(n.bind(n,422)).then((e=>e.default)),options:{locations:{defaultValue:lodash.mapValues(l,(()=>0)),hidden:!0}},entry:async e=>{let{settings:{options:{locations:t}}}=e;const n=window?.performance?.getEntriesByType("navigation");if(1!==n?.length)return void console.error(`[videoDefaultLocation] 无法处理 PerformanceNavigationTiming 不是一个的情况。url: ${window.location.href}`);if("navigate"!==n[0].type)return;if((0,i.matchCurrentPage)(s)){const e=unsafeWindow.scrollTo;unsafeWindow.scrollTo=()=>{unsafeWindow.scrollTo=e}}const o=r();if(null===o)return void console.error(`[videoDefaultLocation] unknown page type. url: ${window.location.href}`);const a=t[o],l=document.documentElement;(a{var o=n(218)((function(e){return e[1]}));o.push([e.id,".video-default-location-extend-box {\n border-radius: 4px;\n box-shadow: 0 0 0 1px rgba(136, 136, 136, 0.2666666667);\n}\n.video-default-location-extend-box-bar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-radius: 4px;\n box-shadow: 0 1px rgba(136, 136, 136, 0.2666666667);\n cursor: pointer;\n}\n.video-default-location-extend-box-bar-text {\n height: 24px;\n line-height: 24px;\n padding: 0 8px;\n}\n.video-default-location-extend-box-bar-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n color: rgba(136, 136, 136, 0.6666666667);\n}\n.video-default-location-extend-box-bar-btn-animation {\n animation: video-default-location-extend-box-bar-btn-animation-keyframes 0.3s;\n}\n@keyframes video-default-location-extend-box-bar-btn-animation-keyframes {\n50% {\n transform: rotateX(90deg);\n}\n}\n.video-default-location-extend-box-bar {\n transition: box-shadow 0.2s ease-out;\n}\n.video-default-location-extend-box-hidden .video-default-location-extend-box-bar {\n box-shadow: 0 0 rgba(136, 136, 136, 0.2666666667);\n}\n.video-default-location-extend-box-content-wrap {\n overflow: hidden;\n}\n.video-default-location-extend-box-content-transition-enter-active,\n.video-default-location-extend-box-content-transition-leave-active {\n transition: margin-top 0.2s ease-out;\n}\n.video-default-location-extend-box-content-transition-enter,\n.video-default-location-extend-box-content-transition-leave-to {\n margin-top: -100%;\n}",""]),e.exports=o},495:(e,t,n)=>{var o=n(218)((function(e){return e[1]}));o.push([e.id,".video-default-location-form-line {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n column-gap: 10px;\n}\n.video-default-location-form-item-grow {\n flex: 1 auto;\n}\n.video-default-location-form-item-not-grow {\n flex: 0 auto;\n}\n.video-default-location-vertical-space {\n height: 8px;\n}\n.video-default-location-options-advanced {\n margin: 8px;\n}",""]),e.exports=o},257:(e,t,n)=>{var o=n(218)((function(e){return e[1]}));o.push([e.id,".video-default-location-page-type-selector-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n color: rgba(136, 136, 136, 0.6666666667);\n}",""]),e.exports=o},218:e=>{"use strict"; // eslint-disable-next-line func-names e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")}, // eslint-disable-next-line func-names diff --git a/bb-evolved/registry/dist/components/video/download.js b/bb-evolved/registry/dist/components/video/download.js index 53ef19d4b8..6f9d0cf6e6 100644 --- a/bb-evolved/registry/dist/components/video/download.js +++ b/bb-evolved/registry/dist/components/video/download.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/download"]=t():e["video/download"]=t()}(globalThis,(()=>(()=>{var e,t,i={221:(e,t,i)=>{"use strict";i.d(t,{_i:()=>u,o1:()=>x,Ld:()=>w,JV:()=>y,SS:()=>b});var n=i(375),o=i(605);const s=coreApis.utils.sort;var a=i(391),r=i(457),d=i(344),l=i(169),c=i(689),p=i(986);const u={video:".mp4",audio:".m4a",flacAudio:".flac"};let f=function(e){return e.Avc="AVC/H.264",e.Hevc="HEVC/H.265",e.Av1="AV1",e}({});const m=e=>{const{options:t}=(0,p.getComponentSettings)("downloadVideo");return"video"===e?t.dashVideoExtension:"audio"===e?t.dashAudioExtension:"flacAudio"===e?t.dashFlacAudioExtension:u[e]??".m4s"},h=e=>({url:e.downloadUrl,backupUrls:e.backupUrls,length:e.duration,size:Math.trunc(e.bandWidth*e.duration/8),extension:m(e.type)}),v=e=>{const{videoDashes:t,audioDashes:i,videoCodec:n}=e,o=[];if(0!==t.length){const e=e=>e.videoCodec===n;if(t.some(e)){const i=t.filter(e).sort((0,s.ascendingSort)((e=>e.bandWidth)))[0];o.push(h(i))}else o.push(h(t.sort((0,s.ascendingSort)((e=>e.bandWidth)))[0]))}if(0!==i.length){const e=i.sort((0,s.descendingSort)((e=>e.bandWidth)))[0];o.push(h(e))}return o},g=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{codec:i=f.Avc,filters:s}=t,p={video:()=>!0,audio:()=>!0,...s},{aid:u,cid:m,quality:h}=e,g={avid:u,cid:m,qn:h?.value??"",otype:"json",fourk:1,fnver:0,fnval:4048},y=r.bangumiUrls.some((e=>(0,o.matchUrlPattern)(e))),b=y?(0,c.l)((0,o.formData)(g)):(0,c.s)((0,o.formData)(g)),w=await(0,n.bilibiliApi)((0,n.getJsonWithCredentials)(b),"获取视频链接失败");if(!w.dash)throw new Error("此视频没有 dash 格式, 请改用其他格式.");const x=a.allQualities.find((e=>e.value===w.quality)),{duration:_,video:k,audio:I,dolby:C,flac:A}=w.dash,V=e=>{switch(e){case 12:return f.Hevc;case 13:return f.Av1;default:return f.Avc}},S=k.filter((e=>e.id===x.value)).map((e=>({type:"video",videoCodec:V(e.codecid),quality:x,width:e.width,height:e.height,codecs:e.codecs,codecId:e.codecid,bandWidth:e.bandwidth,frameRate:e.frameRate,backupUrls:(e.backupUrl||e.backup_url||[]).map((e=>e.replace("http:","https:"))),downloadUrl:(e.baseUrl||e.base_url||"").replace("http:","https:"),duration:_}))).filter((e=>p.video(e))),E=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"audio";return{type:t,bandWidth:e.bandwidth,codecs:e.codecs,codecId:e.codecid??0,backupUrls:(e.backupUrl||e.backup_url||[]).map((e=>e.replace("http:","https:"))),downloadUrl:(e.baseUrl||e.base_url||"").replace("http:","https:"),duration:_}},D=(I||[]).map((e=>E(e))).filter((e=>p.audio(e)));C&&D.push(...C.audio?.map((e=>E(e)))??[]),A&&D.push(...A.audio?[E(A.audio,"flacAudio")]:[]);const O=v({audioDashes:D,videoDashes:S,videoCodec:i}),U=w.accept_quality.map((e=>a.allQualities.find((t=>t.value===e)))).filter((e=>void 0!==e)),$=new l.c({input:e,jsonData:w,fragments:O,qualities:U,currentQuality:x});return(0,d.c)(e,$),$},y={name:"video.dash.avc",displayName:"dash (AVC/H.264)",description:"音画分离的 mp4 格式, 编码为 H.264, 体积较大, 兼容性较好. 下载后可以合并为单个 mp4 文件. 如果视频源没有此编码, 则会自动选择其他同清晰度的编码格式.",downloadVideoInfo:async e=>g(e,{codec:f.Avc})},b={name:"video.dash.hevc",displayName:"dash (HEVC/H.265)",description:"音画分离的 mp4 格式, 编码为 H.265, 体积中等, 兼容性较差. 下载后可以合并为单个 mp4 文件. 如果视频源没有此编码, 则会自动选择其他同清晰度的编码格式.",downloadVideoInfo:async e=>g(e,{codec:f.Hevc})},w={name:"video.dash.av1",displayName:"dash (AV1)",description:"音画分离的 mp4 格式, 编码为 AV1, 体积较小, 兼容性中等. 下载后可以合并为单个 mp4 文件. 如果视频源没有此编码, 则会自动选择其他同清晰度的编码格式.",downloadVideoInfo:async e=>g(e,{codec:f.Av1})},x={name:"video.dash.audio",displayName:"dash (仅音频)",description:"仅下载视频中的音频轨道.",downloadVideoInfo:async e=>g(e,{filters:{video:()=>!1}})}},689:(e,t,i)=>{"use strict";i.d(t,{l:()=>o,s:()=>n});const n=e=>`https://api.bilibili.com/x/player/playurl?${e}`,o=e=>`https://api.bilibili.com/pgc/player/web/playurl?${e}`},344:(e,t,i)=>{"use strict";i.d(t,{c:()=>o});var n=i(391);const o=(e,t)=>{e.quality&&t.currentQuality.value!==e.quality.value&&(e.allowQualityDrop?console.warn(`'${e.title}' 不支持选择的清晰度${e.quality.displayName}, 已降级为${t.currentQuality.displayName}`):(e=>{if(n.vipRequiredQualities.find((t=>t.value===e)))throw new Error("您选择的清晰度需要大会员, 请更改清晰度后重试.");if(n.loginRequiredQualities.find((t=>t.value===e)))throw new Error("您选择的清晰度需要先登录.");throw new Error("获取下载链接失败, 请尝试更换清晰度或更换格式.")})(e.quality.value))}},169:(e,t,i)=>{"use strict";i.d(t,{u:()=>d,c:()=>r});const n=coreApis.download;var o=i(289),s=i(674);function a(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class r{constructor(e){a(this,"input",void 0),a(this,"fragments",void 0),a(this,"qualities",void 0),a(this,"currentQuality",void 0),a(this,"jsonData",void 0),Object.assign(this,e)}get totalSize(){return lodash.sumBy(this.fragments,(e=>e.size))}get totalLength(){return lodash.sumBy(this.fragments,(e=>e.length))}get titledFragments(){return this.fragments.map(((e,t)=>{const i=this.fragments.filter((t=>t.extension===e.extension)).length>1?` - ${(0,o.formatNumber)(t+1,this.fragments.length)}`:"";return{...e,title:`${this.input.title}${i}${e.extension}`}}))}}class d{constructor(e){this.infos=e,a(this,"inputs",[]),a(this,"extraAssets",[]),this.inputs=e.map((e=>e.input))}get isSingleVideo(){return this.inputs.length<2}async downloadExtraAssets(){console.log("[downloadExtraAssets]",this.extraAssets);const e=`${(0,s.getFriendlyTitle)(!1)}.zip`;await new n.DownloadPackage(this.extraAssets).emit(e)}}},170:(e,t,i)=>{var n=i(218)((function(e){return e[1]}));n.push([e.id,".download-video-panel {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n font-size: 12px;\n padding: 6px;\n top: 100px;\n left: 50%;\n transform: translateX(-50%) scale(0.95);\n transition: 0.2s ease-out;\n z-index: 1000;\n width: 320px;\n height: calc(100vh - 200px);\n display: flex;\n flex-direction: column;\n}\nbody.dark .download-video-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .download-video-panel {\n background-color: #282828;\n color: #eee;\n}\n.download-video-panel.open {\n transform: translateX(-50%);\n}\n.download-video-panel .be-textbox,\n.download-video-panel .be-textarea {\n flex-grow: 1;\n}\n.download-video-panel-header {\n display: flex;\n align-items: center;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 6px 0;\n margin: 0 6px;\n}\n.download-video-panel-header .title {\n font-size: 16px;\n font-weight: 600;\n flex-grow: 1;\n margin: 0 8px;\n}\n.download-video-panel-header .be-button {\n padding: 4px;\n}\n.download-video-panel-content {\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n flex: 1 0 0;\n padding: 12px 6px;\n align-items: flex-start;\n}\n.download-video-panel-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.download-video-panel-content > :not(:first-child) {\n margin-top: 12px;\n}\n.download-video-panel .download-video-config-item {\n display: flex;\n align-items: center;\n}\n.download-video-panel .download-video-config-item .download-video-config-title {\n margin-right: 8px;\n}\n.download-video-panel .download-video-config-item.error {\n color: #e57373;\n}\n.download-video-panel .download-video-config-section {\n align-self: stretch;\n}\n.download-video-panel .download-video-config-description {\n color: rgba(136, 136, 136, 0.8666666667);\n margin-top: 4px;\n}\n.download-video-panel .download-video-config-description a {\n color: var(--theme-color-70);\n}\n.download-video-panel-footer {\n display: flex;\n align-items: center;\n border-top: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 6px 0;\n margin: 0 6px;\n justify-content: center;\n}\n.download-video-panel .run-download {\n font-size: 13px;\n padding: 6px 12px;\n}",""]),e.exports=n},156:(e,t,i)=>{var n=i(218)((function(e){return e[1]}));n.push([e.id,".episodes-picker-header {\n display: flex;\n align-items: center;\n}\n.episodes-picker-checked-ratio {\n flex-grow: 1;\n margin-left: 4px;\n}\n.episodes-picker-actions {\n display: flex;\n align-items: center;\n}\n.episodes-picker-actions .be-button {\n padding: 4px;\n}\n.episodes-picker-actions .be-button.invert-selection .be-icon {\n font-size: 14px;\n}\n.episodes-picker-actions .be-button.select-all .be-icon, .episodes-picker-actions .be-button.deselect-all .be-icon {\n transform: translateY(1px);\n}\n.episodes-picker-items {\n max-height: 400px;\n overflow: auto;\n}\n.episodes-picker-items:not(:empty) {\n margin-top: 4px;\n border: 1px solid rgba(136, 136, 136, 0.2666666667);\n border-radius: 6px;\n}\n.episodes-picker-items .be-check-box {\n padding: 2px 6px;\n}\n.episodes-picker-items .episode-duration {\n margin-right: 4px;\n text-align: right;\n flex: 1 1 0;\n opacity: 0.5;\n}\n.episodes-picker-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 0;\n}",""]),e.exports=n},466:(e,t,i)=>{var n=i(218)((function(e){return e[1]}));n.push([e.id,".single-video-info.download-video-config-section {\n position: relative;\n height: 125px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.single-video-info.download-video-config-section img {\n height: 125px;\n object-fit: contain;\n border-radius: 8px;\n}\n.single-video-info.download-video-config-section img.shadow {\n position: absolute;\n filter: blur(8px) brightness(0.8);\n transform: scaleY(0.95) translateY(4px);\n z-index: -1;\n opacity: 0.3;\n}",""]),e.exports=n},218:e=>{"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/download"]=t():e["video/download"]=t()}(globalThis,(()=>(()=>{var e,t,i={221:(e,t,i)=>{"use strict";i.d(t,{_i:()=>u,o1:()=>x,Ld:()=>b,JV:()=>y,SS:()=>w});var n=i(375),o=i(605);const s=coreApis.utils.sort;var a=i(391),r=i(457),d=i(344),l=i(169),c=i(689),p=i(986);const u={video:".mp4",audio:".m4a",flacAudio:".flac"};let f=function(e){return e.Avc="AVC/H.264",e.Hevc="HEVC/H.265",e.Av1="AV1",e}({});const m=e=>{const{options:t}=(0,p.getComponentSettings)("downloadVideo");return"video"===e?t.dashVideoExtension:"audio"===e?t.dashAudioExtension:"flacAudio"===e?t.dashFlacAudioExtension:u[e]??".m4s"},h=e=>({url:e.downloadUrl,backupUrls:e.backupUrls,length:e.duration,size:Math.trunc(e.bandWidth*e.duration/8),extension:m(e.type)}),v=e=>{const{videoDashes:t,audioDashes:i,videoCodec:n}=e,o=[];if(0!==t.length){const e=e=>e.videoCodec===n;if(t.some(e)){const i=t.filter(e).sort((0,s.ascendingSort)((e=>e.bandWidth)))[0];o.push(h(i))}else o.push(h(t.sort((0,s.ascendingSort)((e=>e.bandWidth)))[0]))}if(0!==i.length){const e=i.sort((0,s.descendingSort)((e=>e.bandWidth)))[0];o.push(h(e))}return o},g=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{codec:i=f.Avc,filters:s}=t,p={video:()=>!0,audio:()=>!0,...s},{aid:u,cid:m,quality:h}=e,g={avid:u,cid:m,qn:h?.value??"",otype:"json",fourk:1,fnver:0,fnval:4048},y=r.bangumiUrls.some((e=>(0,o.matchUrlPattern)(e))),w=y?(0,c.l)((0,o.formData)(g)):(0,c.s)((0,o.formData)(g)),b=await(0,n.bilibiliApi)((0,n.getJsonWithCredentials)(w),"获取视频链接失败");if(!b.dash)throw new Error("此视频没有 dash 格式, 请改用其他格式.");const x=a.allQualities.find((e=>e.value===b.quality)),{duration:_,video:k,audio:I,dolby:C,flac:A}=b.dash,V=e=>{switch(e){case 12:return f.Hevc;case 13:return f.Av1;default:return f.Avc}},S=k.filter((e=>e.id===x.value)).map((e=>({type:"video",videoCodec:V(e.codecid),quality:x,width:e.width,height:e.height,codecs:e.codecs,codecId:e.codecid,bandWidth:e.bandwidth,frameRate:e.frameRate,backupUrls:(e.backupUrl||e.backup_url||[]).map((e=>e.replace("http:","https:"))),downloadUrl:(e.baseUrl||e.base_url||"").replace("http:","https:"),duration:_}))).filter((e=>p.video(e))),E=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"audio";return{type:t,bandWidth:e.bandwidth,codecs:e.codecs,codecId:e.codecid??0,backupUrls:(e.backupUrl||e.backup_url||[]).map((e=>e.replace("http:","https:"))),downloadUrl:(e.baseUrl||e.base_url||"").replace("http:","https:"),duration:_}},D=(I||[]).map((e=>E(e))).filter((e=>p.audio(e)));C&&D.push(...C.audio?.map((e=>E(e)))??[]),A&&D.push(...A.audio?[E(A.audio,"flacAudio")]:[]);const O=v({audioDashes:D,videoDashes:S,videoCodec:i}),U=b.accept_quality.map((e=>a.allQualities.find((t=>t.value===e)))).filter((e=>void 0!==e)),$=new l.c({input:e,jsonData:b,fragments:O,qualities:U,currentQuality:x});return(0,d.c)(e,$),$},y={name:"video.dash.avc",displayName:"dash (AVC/H.264)",description:"音画分离的 mp4 格式, 编码为 H.264, 体积较大, 兼容性较好. 下载后可以合并为单个 mp4 文件. 如果视频源没有此编码, 则会自动选择其他同清晰度的编码格式.",downloadVideoInfo:async e=>g(e,{codec:f.Avc})},w={name:"video.dash.hevc",displayName:"dash (HEVC/H.265)",description:"音画分离的 mp4 格式, 编码为 H.265, 体积中等, 兼容性较差. 下载后可以合并为单个 mp4 文件. 如果视频源没有此编码, 则会自动选择其他同清晰度的编码格式.",downloadVideoInfo:async e=>g(e,{codec:f.Hevc})},b={name:"video.dash.av1",displayName:"dash (AV1)",description:"音画分离的 mp4 格式, 编码为 AV1, 体积较小, 兼容性中等. 下载后可以合并为单个 mp4 文件. 如果视频源没有此编码, 则会自动选择其他同清晰度的编码格式.",downloadVideoInfo:async e=>g(e,{codec:f.Av1})},x={name:"video.dash.audio",displayName:"dash (仅音频)",description:"仅下载视频中的音频轨道.",downloadVideoInfo:async e=>g(e,{filters:{video:()=>!1}})}},689:(e,t,i)=>{"use strict";i.d(t,{l:()=>o,s:()=>n});const n=e=>`https://api.bilibili.com/x/player/playurl?${e}`,o=e=>`https://api.bilibili.com/pgc/player/web/playurl?${e}`},344:(e,t,i)=>{"use strict";i.d(t,{c:()=>o});var n=i(391);const o=(e,t)=>{e.quality&&t.currentQuality.value!==e.quality.value&&(e.allowQualityDrop?console.warn(`'${e.title}' 不支持选择的清晰度${e.quality.displayName}, 已降级为${t.currentQuality.displayName}`):(e=>{if(n.vipRequiredQualities.find((t=>t.value===e)))throw new Error("您选择的清晰度需要大会员, 请更改清晰度后重试.");if(n.loginRequiredQualities.find((t=>t.value===e)))throw new Error("您选择的清晰度需要先登录.");throw new Error("获取下载链接失败, 请尝试更换清晰度或更换格式.")})(e.quality.value))}},169:(e,t,i)=>{"use strict";i.d(t,{u:()=>d,c:()=>r});const n=coreApis.download;var o=i(289),s=i(674);function a(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class r{constructor(e){a(this,"input",void 0),a(this,"fragments",void 0),a(this,"qualities",void 0),a(this,"currentQuality",void 0),a(this,"jsonData",void 0),Object.assign(this,e)}get totalSize(){return lodash.sumBy(this.fragments,(e=>e.size))}get totalLength(){return lodash.sumBy(this.fragments,(e=>e.length))}get titledFragments(){return this.fragments.map(((e,t)=>{const i=this.fragments.filter((t=>t.extension===e.extension)).length>1?` - ${(0,o.formatNumber)(t+1,this.fragments.length)}`:"";return{...e,title:`${this.input.title}${i}${e.extension}`}}))}}class d{constructor(e){this.infos=e,a(this,"inputs",[]),a(this,"extraAssets",[]),this.inputs=e.map((e=>e.input))}get isSingleVideo(){return this.inputs.length<2}async downloadExtraAssets(){console.log("[downloadExtraAssets]",this.extraAssets);const e=`${(0,s.getFriendlyTitle)(!1)}.zip`;await new n.DownloadPackage(this.extraAssets).emit(e)}}},170:(e,t,i)=>{var n=i(218)((function(e){return e[1]}));n.push([e.id,".download-video-panel {\n background-color: #fff;\n color: black;\n border-radius: 8px;\n border: 1px solid rgba(136, 136, 136, 0.1333333333);\n box-sizing: border-box;\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.05);\n font-size: 12px;\n padding: 6px;\n top: 100px;\n left: 50%;\n transform: translateX(-50%) scale(0.95);\n transition: 0.2s ease-out;\n z-index: 1000;\n width: 320px;\n height: calc(100vh - 200px);\n display: flex;\n flex-direction: column;\n}\nbody.dark .download-video-panel {\n box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.2);\n}\nbody.dark .download-video-panel {\n background-color: #282828;\n color: #eee;\n}\n.download-video-panel.open {\n transform: translateX(-50%);\n}\n.download-video-panel .be-textbox,\n.download-video-panel .be-textarea {\n flex-grow: 1;\n}\n.download-video-panel-header {\n display: flex;\n align-items: center;\n border-bottom: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 6px 0;\n margin: 0 6px;\n}\n.download-video-panel-header .title {\n font-size: 16px;\n font-weight: 600;\n flex-grow: 1;\n margin: 0 8px;\n}\n.download-video-panel-header .be-button {\n padding: 4px;\n}\n.download-video-panel-content {\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n flex: 1 0 0;\n padding: 12px 6px;\n align-items: flex-start;\n}\n.download-video-panel-content::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.download-video-panel-content > :not(:first-child) {\n margin-top: 12px;\n}\n.download-video-panel .download-video-config-item {\n display: flex;\n align-items: center;\n}\n.download-video-panel .download-video-config-item .download-video-config-title {\n margin-right: 8px;\n}\n.download-video-panel .download-video-config-item.error {\n color: #e57373;\n}\n.download-video-panel .download-video-config-section {\n align-self: stretch;\n}\n.download-video-panel .download-video-config-description {\n color: rgba(136, 136, 136, 0.8666666667);\n margin-top: 4px;\n}\n.download-video-panel .download-video-config-description a {\n color: var(--theme-color-70);\n}\n.download-video-panel-footer {\n display: flex;\n align-items: center;\n border-top: 1px solid rgba(136, 136, 136, 0.1333333333);\n padding: 6px 0;\n margin: 0 6px;\n justify-content: center;\n}\n.download-video-panel .run-download {\n font-size: 13px;\n padding: 6px 12px;\n}",""]),e.exports=n},156:(e,t,i)=>{var n=i(218)((function(e){return e[1]}));n.push([e.id,".episodes-picker-header {\n display: flex;\n align-items: center;\n}\n.episodes-picker-checked-ratio {\n flex-grow: 1;\n margin-left: 4px;\n}\n.episodes-picker-actions {\n display: flex;\n align-items: center;\n}\n.episodes-picker-actions .be-button {\n padding: 4px;\n}\n.episodes-picker-actions .be-button.invert-selection .be-icon {\n font-size: 14px;\n}\n.episodes-picker-actions .be-button.select-all .be-icon, .episodes-picker-actions .be-button.deselect-all .be-icon {\n transform: translateY(1px);\n}\n.episodes-picker-items {\n max-height: 400px;\n overflow: auto;\n}\n.episodes-picker-items:not(:empty) {\n margin-top: 4px;\n border: 1px solid rgba(136, 136, 136, 0.2666666667);\n border-radius: 6px;\n}\n.episodes-picker-items .be-check-box {\n padding: 2px 6px;\n}\n.episodes-picker-items .episode-duration {\n margin-right: 4px;\n text-align: right;\n flex: 1 1 0;\n opacity: 0.5;\n}\n.episodes-picker-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 0;\n}",""]),e.exports=n},466:(e,t,i)=>{var n=i(218)((function(e){return e[1]}));n.push([e.id,".single-video-info.download-video-config-section {\n position: relative;\n height: 125px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.single-video-info.download-video-config-section img {\n height: 125px;\n object-fit: contain;\n border-radius: 8px;\n}\n.single-video-info.download-video-config-section img.shadow {\n position: absolute;\n filter: blur(8px) brightness(0.8);\n transform: scaleY(0.95) translateY(4px);\n z-index: -1;\n opacity: 0.3;\n}",""]),e.exports=n},218:e=>{"use strict"; // eslint-disable-next-line func-names e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")}, // eslint-disable-next-line func-names @@ -9,5 +9,5 @@ e=[[null,e,""]]);var o={};if(n)for(var s=0;s{"use strict";var n,o=function(){return void 0===n&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),a=[];function r(e){for(var t=-1,i=0;i{"use strict";i.r(t),i.d(t,{default:()=>G});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"download-video-panel",attrs:{fixed:"","trigger-element":e.triggerElement},model:{value:e.open,callback:function(t){e.open=t},expression:"open"}},[t("div",{staticClass:"download-video-panel-header"},[t("VIcon",{attrs:{icon:"mdi-download"}}),e._v(" "),t("div",{staticClass:"title"},[e._v("下载视频")]),e._v(" "),t("VButton",{attrs:{type:"transparent",title:"关闭"},on:{click:function(t){e.open=!1}}},[t("VIcon",{attrs:{icon:"mdi-close",size:20}})],1)],1),e._v(" "),t("div",{staticClass:"download-video-panel-content"},[e.selectedInput?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("输入源:")]),e._v(" "),t("VDropdown",{attrs:{items:e.inputs},model:{value:e.selectedInput,callback:function(t){e.selectedInput=t},expression:"selectedInput"}})],1):e._e(),e._v(" "),0===e.inputs.length?t("div",{staticClass:"download-video-config-item error"},[e._v("\n 没有匹配的输入源, 请确保安装了适合此页面的插件.\n ")]):e._e(),e._v(" "),e.selectedInput&&e.selectedInput.component?t(e.selectedInput.component,{ref:"inputOptions",tag:"component"}):e._e(),e._v(" "),e.selectedApi?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("格式:")]),e._v(" "),t("VDropdown",{attrs:{items:e.apis},model:{value:e.selectedApi,callback:function(t){e.selectedApi=t},expression:"selectedApi"}})],1):e._e(),e._v(" "),e.selectedApi&&e.selectedApi.description?t("div",{staticClass:"download-video-config-description",domProps:{innerHTML:e._s(e.selectedApi.description)}}):e._e(),e._v(" "),e.selectedQuality?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("清晰度:")]),e._v(" "),t("VDropdown",{attrs:{items:e.filteredQualities},on:{change:function(t){return e.saveSelectedQuality()}},model:{value:e.selectedQuality,callback:function(t){e.selectedQuality=t},expression:"selectedQuality"}})],1):e._e(),e._v(" "),!e.testData.multiple&&e.selectedQuality?[e.testData.videoInfo?t("div",{staticClass:"download-video-config-description"},[e._v("\n 预计大小: "+e._s(e.formatFileSize(e.testData.videoInfo.totalSize))+"\n ")]):e._e(),e._v(" "),null===e.testData.videoInfo?t("div",{staticClass:"download-video-config-description"},[e._v("\n 正在计算大小\n ")]):e._e()]:e._e(),e._v(" "),t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("使用备用下载地址:")]),e._v(" "),t("SwitchBox",{model:{value:e.useBackupUrls,callback:function(t){e.useBackupUrls=t},expression:"useBackupUrls"}})],1),e._v(" "),e._l(e.assetsWithOptions,(function(e){return t(e.component,{key:e.name,ref:"assetsOptions",refInFor:!0,tag:"component",attrs:{name:e.name}})})),e._v(" "),e.selectedOutput?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("输出方式:")]),e._v(" "),t("VDropdown",{attrs:{items:e.outputs},model:{value:e.selectedOutput,callback:function(t){e.selectedOutput=t},expression:"selectedOutput"}})],1):e._e(),e._v(" "),e.selectedOutput&&e.selectedOutput.description?t("div",{staticClass:"download-video-config-description",domProps:{innerHTML:e._s(e.selectedOutput.description)}}):e._e(),e._v(" "),e.selectedOutput&&e.selectedOutput.component?t(e.selectedOutput.component,{ref:"outputOptions",tag:"component"}):e._e()],2),e._v(" "),t("div",{staticClass:"download-video-panel-footer"},[t("VButton",{staticClass:"run-download",attrs:{type:"primary",disabled:!e.canStartDownload},on:{click:function(t){return e.startDownload(e.$refs.outputOptions,e.selectedOutput)}}},[e._v("\n 开始\n ")])],1)])};n._withStripped=!0;var o=i(986),s=i(605);const a=coreApis.utils.log;var r=i(289);const d=coreApis.ui,l=coreApis.pluginApis.data;var c=i(391);const p=coreApis.toast;var u=i(674),f=i(375),m=i(457),h=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"episodes-picker download-video-config-section"},[t("div",{staticClass:"episodes-picker-header"},[t("div",{staticClass:"episodes-picker-title"},[e._v("选集:")]),e._v(" "),t("div",{staticClass:"episodes-picker-checked-ratio"},[e._v("\n "+e._s(e.checkedRatio)+"\n ")]),e._v(" "),t("div",{staticClass:"episodes-picker-actions"},[t("VButton",{staticClass:"select-all",attrs:{title:"全选",type:"transparent"},on:{click:function(t){e.forEachItem((e=>e.isChecked=!0))}}},[t("VIcon",{attrs:{size:16,icon:"mdi-checkbox-multiple-marked-circle"}})],1),e._v(" "),t("VButton",{staticClass:"deselect-all",attrs:{title:"全不选",type:"transparent"},on:{click:function(t){e.forEachItem((e=>e.isChecked=!1))}}},[t("VIcon",{attrs:{size:16,icon:"mdi-checkbox-multiple-blank-circle-outline"}})],1),e._v(" "),t("VButton",{staticClass:"invert-selection",attrs:{title:"反选",type:"transparent"},on:{click:function(t){e.forEachItem((e=>e.isChecked=!e.isChecked))}}},[t("VIcon",{attrs:{size:16,icon:"mdi-circle-slice-4"}})],1)],1)]),e._v(" "),t("div",{staticClass:"episodes-picker-items"},[0===e.episodeItems.length?t("div",{staticClass:"episodes-picker-empty"},[t("VEmpty")],1):e._e(),e._v(" "),e._l(e.episodeItems,(function(i,n){return t("div",{key:i.key,staticClass:"episodes-picker-item"},[t("CheckBox",{attrs:{"icon-position":"left","data-aid":i.inputItem.aid,"data-cid":i.inputItem.cid,"data-bvid":i.inputItem.bvid},nativeOn:{click:function(t){return e.shiftSelect(t,i,n)}},model:{value:i.isChecked,callback:function(t){e.$set(i,"isChecked",t)},expression:"item.isChecked"}},[t("span",{staticClass:"episode-title"},[e._v("\n "+e._s(i.title)+"\n ")]),e._v(" "),i.durationText?t("span",{staticClass:"episode-duration"},[e._v("\n "+e._s(i.durationText)+"\n ")]):e._e()])],1)}))],2)])};h._withStripped=!0;const v=Vue.extend({components:{VButton:d.VButton,VIcon:d.VIcon,CheckBox:d.CheckBox,VEmpty:d.VEmpty},props:{api:{type:Function,required:!0}},data:()=>({episodeItems:[],maxCheckedItems:32,lastCheckedEpisodeIndex:-1}),computed:{checkedRatio(){return`(${this.episodeItems.filter((e=>e.isChecked)).length}/${this.episodeItems.length})`},inputItems(){return this.episodeItems.map((e=>e.inputItem))},checkedInputItems(){return this.episodeItems.filter((e=>e.isChecked)).map((e=>e.inputItem))}},created(){this.getEpisodeItems()},methods:{shiftSelect(e,t,i){e.shiftKey&&-1!==this.lastCheckedEpisodeIndex?e.shiftKey&&-1!==this.lastCheckedEpisodeIndex&&(this.episodeItems.slice(Math.min(this.lastCheckedEpisodeIndex,i)+1,Math.max(this.lastCheckedEpisodeIndex,i)).forEach((e=>{e.isChecked=!e.isChecked})),this.lastCheckedEpisodeIndex=i,e.preventDefault()):this.lastCheckedEpisodeIndex=i},forEachItem(e){this.episodeItems.forEach(e)},async getEpisodeItems(){this.episodeItems.length>0||(this.episodeItems=await this.api(this))}}});var g=i(332),y=i.n(g),b=i(156),w=i.n(b),x={insert:"head",singleton:!1};y()(w(),x);w().locals;var _=i(893);const k=(0,_.Z)(v,h,[],!1,null,null,null).exports,I=e=>Vue.extend({computed:{checkedInputItems(){return this.$refs.picker.checkedInputItems}},render:t=>t(k,{props:{api:e},ref:"picker"})}),C={name:"bangumi.batch",displayName:"当前番剧 (多P)",match:m.bangumiUrls,batch:!0,getInputs:async e=>e?.checkedInputItems??[],component:async()=>I((async e=>{const t=dq('script[type="application/ld+json"]');if(!t)return(0,a.logError)("获取番剧数据失败: 无法找到 Metadata"),[];const i=JSON.parse(t.innerHTML.trim()),n=lodash.get(i,"itemListElement.0.url",null);if(null===n)return(0,a.logError)("获取番剧数据失败: 无法找到 metaUrl"),[];const s=n.match(/play\/ss(\d+)/)?.[1];if(void 0===s)return(0,a.logError)("获取番剧数据失败: 无法解析 Season ID"),[];const d=await(0,f.getJson)(`https://api.bilibili.com/pgc/web/season/section?season_id=${s}`);if(0!==d.code)return(0,a.logError)(`获取番剧数据失败: 无法获取番剧集数列表, message=${d.message}`),[];const l=[...d.result.main_section.episodes,...d.result.section?.flatMap((e=>e.episodes))??[]];return l.map((c=l.length,(t,i)=>{const n=t.long_title?t.title:(i+1).toString(),s=t.long_title?t.long_title:t.title;return{key:t.cid,title:`${n} - ${s}`,isChecked:ie?.checkedInputItems??[],component:async()=>I((async e=>{const{aid:t}=unsafeWindow,i=`https://api.bilibili.com/x/web-interface/view?aid=${t}`,n=await(0,f.getJsonWithCredentials)(i);if(0!==n.code)return(0,a.logError)(`获取视频选集列表失败, message = ${n.message}`),[];const{pages:s}=n.data;return void 0===s?((0,a.logError)("获取视频选集列表失败, 没有找到选集信息."),[]):s.map(((i,n)=>({key:i.cid,title:`P${i.page} ${i.part}`,isChecked:ne?.checkedInputItems??[],component:async()=>I((async e=>{const{aid:t,bvid:i}=unsafeWindow,n=`https://api.bilibili.com/x/web-interface/wbi/view/detail?bvid=${i}&aid=${t}`,s=await(0,f.getJsonWithCredentials)(n);if(0!==s.code)return(0,a.logError)(`获取视频合集列表失败, message = ${s.message}`),[];const d=lodash.get(s,"data.View.ugc_season.sections",[]);if(0===d.length)return[];const l=lodash.sumBy(d,(e=>e.episodes.length));return d.flatMap(((t,i)=>{const{episodes:n=[]}=t;return n.map(((t,n)=>{const s=n+lodash.sumBy(d.slice(0,i),(e=>e.episodes.length)),a=s+1;return{key:t.cid,title:`P${a} ${t.title}`,isChecked:s[{aid:unsafeWindow.aid,cid:unsafeWindow.cid,title:(0,u.getFriendlyTitle)(!0)}],component:()=>Promise.resolve().then(i.bind(i,850)).then((e=>e.default))};var E=i(221),D=i(344),O=i(169),U=i(689);const $=(e,t)=>{const i=e=>t.length>e?t[e]:t[t.length-1];return{fragments:e.durl.map(((e,t)=>({length:e.length,size:e.size,url:e.url,backupUrls:e.backup_url,extension:i(t)}))),qualities:e.accept_quality.map((e=>c.allQualities.find((t=>t.value===e)))).filter((e=>void 0!==e)),currentQuality:c.allQualities.find((t=>t.value===e.quality))}},j={name:"video.flv",displayName:"flv",description:"使用 flv 格式下载, 兼容 H.264 编码. 支持的清晰度相比于 dash 会少很多.",downloadVideoInfo:e=>(async e=>{const{aid:t,cid:i,quality:n}=e,o={avid:t,cid:i,qn:n?.value??"",otype:"json"},a=m.bangumiUrls.some((e=>(0,s.matchUrlPattern)(e))),r=a?(0,U.l)((0,s.formData)(o)):(0,U.s)((0,s.formData)(o)),d=await(0,f.bilibiliApi)((0,f.getJsonWithCredentials)(r),"获取视频链接失败"),l=new O.c({input:e,jsonData:d,...$(d,[".flv"])});return(0,D.c)(e,l),l})(e)},T={name:"toast",displayName:"Toast",description:"弹一条消息显示出下载链接, 右键新标签页打开就可以下载. 链接有 referer 限制, 复制无用, 且不能保留视频文件名.",runAction:async e=>{const t=e.infos.flatMap((e=>e.titledFragments)),i=t.map((e=>e.url)).join("\n");p.Toast.show(t.map((e=>`${e.title}`)).join("\n"),"下载视频"),console.log(i),console.log(e)}},P=coreApis.runtimeLibrary,q={name:"steamSaver",displayName:"StreamSaver",description:'使用 StreamSaver 输出到本地文件, 下载过程中请勿关闭页面. 注意: 需要浏览器允许来自 jimmywarting.github.io (StreamSaver 的网站) 的第三方 cookie, 详细原因见 How does it work, 否则弹出的链接点击后会没有反应.',runAction:async e=>{const t=await P.StreamSaverLibrary,i=e.infos.flatMap((e=>e.titledFragments)),n=p.Toast.show(i.map(((e,t)=>`${e.title}`)).join("\n"),"下载视频"),o=await n.element;dqa(o,"a[data-index]").forEach((e=>{e.addEventListener("click",(async()=>{const{index:n}=e.dataset,{title:o,url:s,size:a}=i[n],r=t.createWriteStream(o,{size:a}),d=await fetch(s);await d.body.pipeTo(r)}))}))}},[N]=(0,l.registerAndGetData)("downloadVideo.inputs",[S,A,V,C]),[Q]=(0,l.registerAndGetData)("downloadVideo.apis",[j,E.JV,E.SS,E.Ld,E.o1]),[B]=(0,l.registerAndGetData)("downloadVideo.assets",[]),[F]=(0,l.registerAndGetData)("downloadVideo.outputs",[T,q]),{basicConfig:M}=(0,o.getComponentSettings)("downloadVideo").options,z=e=>e.filter((e=>e.match?.some((e=>(0,s.matchUrlPattern)(e)))??!0)),W=Vue.extend({components:{VPopup:d.VPopup,VButton:d.VButton,VDropdown:d.VDropdown,VIcon:d.VIcon,SwitchBox:d.SwitchBox},props:{triggerElement:{required:!0}},data(){const e=M.output,t=M.useBackupUrls;return{open:!1,busy:!1,testData:{videoInfo:null,multiple:!1},assets:B,qualities:[],selectedQuality:void 0,inputs:[],selectedInput:void 0,apis:[],selectedApi:void 0,outputs:F,selectedOutput:F.find((t=>t.name===e))||F[0],useBackupUrls:t||!1}},computed:{assetsWithOptions(){return this.assets.filter((e=>e.component))},filteredQualities(){return 0===this.qualities.length?c.allQualities:this.qualities},canStartDownload(){if(this.busy||!this.open)return!1;return!Object.entries(this).filter((e=>{let[t]=e;return t.startsWith("selected")})).some((e=>{let[,t]=e;return!t}))}},watch:{selectedInput(e){void 0!==e&&this.updateTestVideoInfo()},selectedApi(e){void 0!==e&&(this.updateTestVideoInfo(),M.api=e.name)},selectedOutput(e){void 0!==e&&(M.output=e.name)},useBackupUrls(e){void 0!==e&&(M.useBackupUrls=e)}},mounted(){coreApis.observer.videoChange((()=>{this.selectedInput=void 0,this.selectedApi=void 0;const e=z(N);this.inputs=e,this.selectedInput=e[0];const t=z(Q);this.apis=t;const i=t.find((e=>e.name===M.api));this.selectedApi=i||t[0]}))},methods:{formatFileSize:r.formatFileSize,saveSelectedQuality(){const e=this.selectedQuality;void 0!==e&&(M.quality=e.value,this.updateTestVideoInfo())},async getVideoItems(){const e=this.selectedInput;return await e.getInputs(this.$refs.inputOptions)},async updateTestVideoInfo(){if(!this.selectedInput||!this.selectedApi)return;this.testData.videoInfo=null;const e=this.selectedInput,t=e.getTestInput?.()??{aid:unsafeWindow.aid,cid:unsafeWindow.cid,title:(0,u.getFriendlyTitle)(!0)};console.log("[updateTestVideoInfo]",t),this.testData.multiple=e.batch;const i=this.selectedApi;try{const e=await i.downloadVideoInfo(t);this.qualities=e.qualities;if((!this.selectedQuality||!e.qualities.some((e=>e.value===this.selectedQuality.value)))&&(this.selectedQuality=e.qualities[0],M.quality)){const[t]=e.qualities.filter((e=>e.value<=M.quality));t&&(this.selectedQuality=t)}t.quality=this.selectedQuality;const n=await i.downloadVideoInfo(t);this.testData.videoInfo=n}catch(e){console.error("[updateTestVideoInfo] failed",e),this.testData.videoInfo=void 0}},async startDownload(e,t){try{this.busy=!0;const i=this.selectedInput,n=this.selectedApi,o=await i.getInputs(this.$refs.inputOptions);if(0===o.length)return void p.Toast.info("未接收到视频, 如果输入源支持批量, 请至少选择一个视频.","下载视频",3e3);o.forEach((e=>{e.quality=this.selectedQuality}));const s=await Promise.all(o.map((e=>n.downloadVideoInfo(e))));if(0===s.length||0===lodash.sumBy(s,(e=>e.fragments.length)))return void p.Toast.info("未接收到可下载数据, 请检查输入源和格式是否适用于当前视频.","下载视频",3e3);this.useBackupUrls&&s.forEach((e=>{e.fragments.forEach((e=>{e.url=e.backupUrls&&0!==e.backupUrls.length?e.backupUrls.at(0):e.url}))}));const a=new O.u(s),r=(await Promise.all(B.map((e=>e.getAssets(s,this.$refs.assetsOptions.find((t=>t.$attrs.name===e.name))))))).flat();a.extraAssets.push(...r),await a.downloadExtraAssets(),await t.runAction(a,e)}catch(e){(0,a.logError)(e)}finally{this.busy=!1}}}}),H=W; -/* spell-checker: disable */var L=i(170),R=i.n(L),J={insert:"head",singleton:!1};y()(R(),J);R().locals;const G=(0,_.Z)(H,n,[],!1,null,null,null).exports},774:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>a});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"multiple-widgets"},[t("DefaultWidget",{ref:"button",attrs:{name:"下载视频",icon:"mdi-download"},on:{mouseover:function(t){return e.createDownloadPanel()},click:function(t){return e.toggleDownloadPanel()}}})],1)};let o;n._withStripped=!0;const s=Vue.extend({components:{DefaultWidget:coreApis.ui.DefaultWidget},methods:{async createDownloadPanel(){if(!o){const e=document.createElement("div");document.body.appendChild(e);const t=await Promise.resolve().then(i.bind(i,757)).then((e=>e.default));o=new t({propsData:{triggerElement:this.$refs.button}}).$mount(e)}},async toggleDownloadPanel(){o&&(o.open=!o.open)}}});const a=(0,i(893).Z)(s,n,[],!1,null,null,null).exports},850:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>u});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"single-video-info download-video-config-section"},[e.imageUrl?t("img",{staticClass:"shadow",attrs:{src:e.imageUrl}}):e._e(),e._v(" "),e.imageUrl?t("img",{attrs:{src:e.imageUrl}}):e._e()])};n._withStripped=!0;const o=coreApis.componentApis.video.videoCover,s=coreApis.observer,a=Vue.extend({data:()=>({imageUrl:""}),created(){(0,s.videoChange)((async()=>{const{aid:e}=unsafeWindow;this.imageUrl=await(0,o.getVideoCoverUrlByAid)(e)}))}});var r=i(332),d=i.n(r),l=i(466),c=i.n(l),p={insert:"head",singleton:!1};d()(c(),p);c().locals;const u=(0,i(893).Z)(a,n,[],!1,null,null,null).exports},893:(e,t,i)=>{"use strict";function n(e,t,i,n,o,s,a,r){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=i,l._compiled=!0),n&&(l.functional=!0),s&&(l._scopeId="data-v-"+s),a?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=d):o&&(d=r?function(){o.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:o),d)if(l.functional){l._injectStyles=d;var c=l.render;l.render=function(e,t){return d.call(t),c(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,d):[d]}return{exports:e,options:l}}i.d(t,{Z:()=>n})},8:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=8,e.exports=t},198:e=>{"use strict";e.exports="在功能面板中添加下载视频支持. 请注意:\n- 不能下载超出账号权限的视频, 例如非大会员下载大会员清晰度视频, 或者大陆地区网络下载港澳台地区番剧, 都是不可以的.\n- 请勿短时间进行大量下载, 以免遭到 b 站 IP 封禁.\n"},375:e=>{"use strict";e.exports=coreApis.ajax},391:e=>{"use strict";e.exports=coreApis.componentApis.video.videoQuality},986:e=>{"use strict";e.exports=coreApis.settings},289:e=>{"use strict";e.exports=coreApis.utils.formatters},674:e=>{"use strict";e.exports=coreApis.utils.title},457:e=>{"use strict";e.exports=coreApis.utils.urls},605:e=>{"use strict";e.exports=coreApis.utils}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={id:e,exports:{}};return i[e](s,s.exports,o),s.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var s=Object.create(null);o.r(s);var a={};e=e||[null,t({}),t([]),t(t)];for(var r=2&n&&i;"object"==typeof r&&!~e.indexOf(r);r=t(r))Object.getOwnPropertyNames(r).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,o.d(s,a),s},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";o.d(s,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.spinQuery;var i=o(221);const n=(0,e.defineOptionsMetadata)({basicConfig:{defaultValue:{},displayName:"基础配置",hidden:!0},dashVideoExtension:{defaultValue:i._i.video,displayName:"DASH 视频扩展名"},dashAudioExtension:{defaultValue:i._i.audio,displayName:"DASH 普通音频扩展名"},dashFlacAudioExtension:{defaultValue:i._i.flacAudio,displayName:"DASH FLAC 音频扩展名"}}),a=(0,e.defineComponentMetadata)({name:"downloadVideo",displayName:"下载视频",entry:none,reload:none,unload:none,widget:{component:()=>Promise.resolve().then(o.bind(o,774)).then((e=>e.default)),condition:()=>(0,t.hasVideo)()},tags:[componentsTags.video],options:n,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=o(8);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,198,17)).then((e=>e.default))}})()})})(),s=s.component})())); \ No newline at end of file +n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),a=[];function r(e){for(var t=-1,i=0;i{"use strict";i.r(t),i.d(t,{default:()=>G});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("VPopup",{staticClass:"download-video-panel",attrs:{fixed:"","trigger-element":e.triggerElement},model:{value:e.open,callback:function(t){e.open=t},expression:"open"}},[t("div",{staticClass:"download-video-panel-header"},[t("VIcon",{attrs:{icon:"mdi-download"}}),e._v(" "),t("div",{staticClass:"title"},[e._v("下载视频")]),e._v(" "),t("VButton",{attrs:{type:"transparent",title:"关闭"},on:{click:function(t){e.open=!1}}},[t("VIcon",{attrs:{icon:"mdi-close",size:20}})],1)],1),e._v(" "),t("div",{staticClass:"download-video-panel-content"},[e.selectedInput?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("输入源:")]),e._v(" "),t("VDropdown",{attrs:{items:e.inputs},model:{value:e.selectedInput,callback:function(t){e.selectedInput=t},expression:"selectedInput"}})],1):e._e(),e._v(" "),0===e.inputs.length?t("div",{staticClass:"download-video-config-item error"},[e._v("\n 没有匹配的输入源, 请确保安装了适合此页面的插件.\n ")]):e._e(),e._v(" "),e.selectedInput&&e.selectedInput.component?t(e.selectedInput.component,{ref:"inputOptions",tag:"component"}):e._e(),e._v(" "),e.selectedApi?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("格式:")]),e._v(" "),t("VDropdown",{attrs:{items:e.apis},model:{value:e.selectedApi,callback:function(t){e.selectedApi=t},expression:"selectedApi"}})],1):e._e(),e._v(" "),e.selectedApi&&e.selectedApi.description?t("div",{staticClass:"download-video-config-description",domProps:{innerHTML:e._s(e.selectedApi.description)}}):e._e(),e._v(" "),e.selectedQuality?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("清晰度:")]),e._v(" "),t("VDropdown",{attrs:{items:e.filteredQualities},on:{change:function(t){return e.saveSelectedQuality()}},model:{value:e.selectedQuality,callback:function(t){e.selectedQuality=t},expression:"selectedQuality"}})],1):e._e(),e._v(" "),!e.testData.multiple&&e.selectedQuality?[e.testData.videoInfo?t("div",{staticClass:"download-video-config-description"},[e._v("\n 预计大小: "+e._s(e.formatFileSize(e.testData.videoInfo.totalSize))+"\n ")]):e._e(),e._v(" "),null===e.testData.videoInfo?t("div",{staticClass:"download-video-config-description"},[e._v("\n 正在计算大小\n ")]):e._e()]:e._e(),e._v(" "),t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("使用备用下载地址:")]),e._v(" "),t("SwitchBox",{model:{value:e.useBackupUrls,callback:function(t){e.useBackupUrls=t},expression:"useBackupUrls"}})],1),e._v(" "),e._l(e.assetsWithOptions,(function(e){return t(e.component,{key:e.name,ref:"assetsOptions",refInFor:!0,tag:"component",attrs:{name:e.name}})})),e._v(" "),e.selectedOutput?t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("输出方式:")]),e._v(" "),t("VDropdown",{attrs:{items:e.outputs},model:{value:e.selectedOutput,callback:function(t){e.selectedOutput=t},expression:"selectedOutput"}})],1):e._e(),e._v(" "),e.selectedOutput&&e.selectedOutput.description?t("div",{staticClass:"download-video-config-description",domProps:{innerHTML:e._s(e.selectedOutput.description)}}):e._e(),e._v(" "),e.selectedOutput&&e.selectedOutput.component?t(e.selectedOutput.component,{ref:"outputOptions",tag:"component"}):e._e()],2),e._v(" "),t("div",{staticClass:"download-video-panel-footer"},[t("VButton",{staticClass:"run-download",attrs:{type:"primary",disabled:!e.canStartDownload},on:{click:function(t){return e.startDownload(e.$refs.outputOptions,e.selectedOutput)}}},[e._v("\n 开始\n ")])],1)])};n._withStripped=!0;var o=i(986),s=i(605);const a=coreApis.utils.log;var r=i(289);const d=coreApis.ui,l=coreApis.pluginApis.data;var c=i(391);const p=coreApis.toast;var u=i(674),f=i(375),m=i(457),h=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"episodes-picker download-video-config-section"},[t("div",{staticClass:"episodes-picker-header"},[t("div",{staticClass:"episodes-picker-title"},[e._v("选集:")]),e._v(" "),t("div",{staticClass:"episodes-picker-checked-ratio"},[e._v("\n "+e._s(e.checkedRatio)+"\n ")]),e._v(" "),t("div",{staticClass:"episodes-picker-actions"},[t("VButton",{staticClass:"select-all",attrs:{title:"全选",type:"transparent"},on:{click:function(t){e.forEachItem((e=>e.isChecked=!0))}}},[t("VIcon",{attrs:{size:16,icon:"mdi-checkbox-multiple-marked-circle"}})],1),e._v(" "),t("VButton",{staticClass:"deselect-all",attrs:{title:"全不选",type:"transparent"},on:{click:function(t){e.forEachItem((e=>e.isChecked=!1))}}},[t("VIcon",{attrs:{size:16,icon:"mdi-checkbox-multiple-blank-circle-outline"}})],1),e._v(" "),t("VButton",{staticClass:"invert-selection",attrs:{title:"反选",type:"transparent"},on:{click:function(t){e.forEachItem((e=>e.isChecked=!e.isChecked))}}},[t("VIcon",{attrs:{size:16,icon:"mdi-circle-slice-4"}})],1)],1)]),e._v(" "),t("div",{staticClass:"episodes-picker-items"},[0===e.episodeItems.length?t("div",{staticClass:"episodes-picker-empty"},[t("VEmpty")],1):e._e(),e._v(" "),e._l(e.episodeItems,(function(i,n){return t("div",{key:i.key,staticClass:"episodes-picker-item"},[t("CheckBox",{attrs:{"icon-position":"left","data-aid":i.inputItem.aid,"data-cid":i.inputItem.cid,"data-bvid":i.inputItem.bvid},nativeOn:{click:function(t){return e.shiftSelect(t,i,n)}},model:{value:i.isChecked,callback:function(t){e.$set(i,"isChecked",t)},expression:"item.isChecked"}},[t("span",{staticClass:"episode-title"},[e._v("\n "+e._s(i.title)+"\n ")]),e._v(" "),i.durationText?t("span",{staticClass:"episode-duration"},[e._v("\n "+e._s(i.durationText)+"\n ")]):e._e()])],1)}))],2)])};h._withStripped=!0;const v=Vue.extend({components:{VButton:d.VButton,VIcon:d.VIcon,CheckBox:d.CheckBox,VEmpty:d.VEmpty},props:{api:{type:Function,required:!0}},data:()=>({episodeItems:[],maxCheckedItems:32,lastCheckedEpisodeIndex:-1}),computed:{checkedRatio(){return`(${this.episodeItems.filter((e=>e.isChecked)).length}/${this.episodeItems.length})`},inputItems(){return this.episodeItems.map((e=>e.inputItem))},checkedInputItems(){return this.episodeItems.filter((e=>e.isChecked)).map((e=>e.inputItem))}},created(){this.getEpisodeItems()},methods:{shiftSelect(e,t,i){e.shiftKey&&-1!==this.lastCheckedEpisodeIndex?e.shiftKey&&-1!==this.lastCheckedEpisodeIndex&&(this.episodeItems.slice(Math.min(this.lastCheckedEpisodeIndex,i)+1,Math.max(this.lastCheckedEpisodeIndex,i)).forEach((e=>{e.isChecked=!e.isChecked})),this.lastCheckedEpisodeIndex=i,e.preventDefault()):this.lastCheckedEpisodeIndex=i},forEachItem(e){this.episodeItems.forEach(e)},async getEpisodeItems(){this.episodeItems.length>0||(this.episodeItems=await this.api(this))}}});var g=i(332),y=i.n(g),w=i(156),b=i.n(w),x={insert:"head",singleton:!1};y()(b(),x);b().locals;var _=i(893);const k=(0,_.Z)(v,h,[],!1,null,null,null).exports,I=e=>Vue.extend({computed:{checkedInputItems(){return this.$refs.picker.checkedInputItems}},render:t=>t(k,{props:{api:e},ref:"picker"})}),C={name:"bangumi.batch",displayName:"当前番剧 (多P)",match:m.bangumiUrls,batch:!0,getInputs:async e=>e?.checkedInputItems??[],component:async()=>I((async e=>{const t=dq('script[type="application/ld+json"]');if(!t)return(0,a.logError)("获取番剧数据失败: 无法找到 Metadata"),[];const i=JSON.parse(t.innerHTML.trim()),n=lodash.get(i,"itemListElement.0.url",null);if(null===n)return(0,a.logError)("获取番剧数据失败: 无法找到 metaUrl"),[];const s=n.match(/play\/ss(\d+)/)?.[1];if(void 0===s)return(0,a.logError)("获取番剧数据失败: 无法解析 Season ID"),[];const d=await(0,f.getJson)(`https://api.bilibili.com/pgc/web/season/section?season_id=${s}`);if(0!==d.code)return(0,a.logError)(`获取番剧数据失败: 无法获取番剧集数列表, message=${d.message}`),[];const l=[...d.result.main_section.episodes,...d.result.section?.flatMap((e=>e.episodes))??[]];return l.map((c=l.length,(t,i)=>{const n=t.long_title?t.title:(i+1).toString(),s=t.long_title?t.long_title:t.title;return{key:t.cid,title:`${n} - ${s}`,isChecked:ie?.checkedInputItems??[],component:async()=>I((async e=>{const{aid:t}=unsafeWindow,i=`https://api.bilibili.com/x/web-interface/view?aid=${t}`,n=await(0,f.getJsonWithCredentials)(i);if(0!==n.code)return(0,a.logError)(`获取视频选集列表失败, message = ${n.message}`),[];const{pages:s}=n.data;return void 0===s?((0,a.logError)("获取视频选集列表失败, 没有找到选集信息."),[]):s.map(((i,n)=>({key:i.cid,title:`P${i.page} ${i.part}`,isChecked:ne?.checkedInputItems??[],component:async()=>I((async e=>{const{aid:t,bvid:i}=unsafeWindow,n=`https://api.bilibili.com/x/web-interface/wbi/view/detail?bvid=${i}&aid=${t}`,s=await(0,f.getJsonWithCredentials)(n);if(0!==s.code)return(0,a.logError)(`获取视频合集列表失败, message = ${s.message}`),[];const d=lodash.get(s,"data.View.ugc_season.sections",[]);if(0===d.length)return[];const l=lodash.sumBy(d,(e=>e.episodes.length));return d.flatMap(((t,i)=>{const{episodes:n=[]}=t;return n.map(((t,n)=>{const s=n+lodash.sumBy(d.slice(0,i),(e=>e.episodes.length)),a=s+1;return{key:t.cid,title:`P${a} ${t.title}`,isChecked:s[{aid:unsafeWindow.aid,cid:unsafeWindow.cid,title:(0,u.getFriendlyTitle)(!0)}],component:()=>Promise.resolve().then(i.bind(i,850)).then((e=>e.default))};var E=i(221),D=i(344),O=i(169),U=i(689);const $=(e,t)=>{const i=e=>t.length>e?t[e]:t[t.length-1];return{fragments:e.durl.map(((e,t)=>({length:e.length,size:e.size,url:e.url,backupUrls:e.backup_url,extension:i(t)}))),qualities:e.accept_quality.map((e=>c.allQualities.find((t=>t.value===e)))).filter((e=>void 0!==e)),currentQuality:c.allQualities.find((t=>t.value===e.quality))}},j={name:"video.flv",displayName:"flv",description:"使用 flv 格式下载, 兼容 H.264 编码. 支持的清晰度相比于 dash 会少很多.",downloadVideoInfo:e=>(async e=>{const{aid:t,cid:i,quality:n}=e,o={avid:t,cid:i,qn:n?.value??"",otype:"json"},a=m.bangumiUrls.some((e=>(0,s.matchUrlPattern)(e))),r=a?(0,U.l)((0,s.formData)(o)):(0,U.s)((0,s.formData)(o)),d=await(0,f.bilibiliApi)((0,f.getJsonWithCredentials)(r),"获取视频链接失败"),l=new O.c({input:e,jsonData:d,...$(d,[".flv"])});return(0,D.c)(e,l),l})(e)},T={name:"toast",displayName:"Toast",description:"弹一条消息显示出下载链接, 右键新标签页打开就可以下载. 链接有 referer 限制, 复制无用, 且不能保留视频文件名.",runAction:async e=>{const t=e.infos.flatMap((e=>e.titledFragments)),i=t.map((e=>e.url)).join("\n");p.Toast.show(t.map((e=>`${e.title}`)).join("\n"),"下载视频"),console.log(i),console.log(e)}},P=coreApis.runtimeLibrary,q={name:"steamSaver",displayName:"StreamSaver",description:'使用 StreamSaver 输出到本地文件, 下载过程中请勿关闭页面. 注意: 需要浏览器允许来自 jimmywarting.github.io (StreamSaver 的网站) 的第三方 cookie, 详细原因见 How does it work, 否则弹出的链接点击后会没有反应.',runAction:async e=>{const t=await P.StreamSaverLibrary,i=e.infos.flatMap((e=>e.titledFragments)),n=p.Toast.show(i.map(((e,t)=>`${e.title}`)).join("\n"),"下载视频"),o=await n.element;dqa(o,"a[data-index]").forEach((e=>{e.addEventListener("click",(async()=>{const{index:n}=e.dataset,{title:o,url:s,size:a}=i[n],r=t.createWriteStream(o,{size:a}),d=await fetch(s);await d.body.pipeTo(r)}))}))}},[N]=(0,l.registerAndGetData)("downloadVideo.inputs",[S,A,V,C]),[Q]=(0,l.registerAndGetData)("downloadVideo.apis",[j,E.JV,E.SS,E.Ld,E.o1]),[B]=(0,l.registerAndGetData)("downloadVideo.assets",[]),[F]=(0,l.registerAndGetData)("downloadVideo.outputs",[T,q]),{basicConfig:M}=(0,o.getComponentSettings)("downloadVideo").options,z=e=>e.filter((e=>e.match?.some((e=>(0,s.matchUrlPattern)(e)))??!0)),W=Vue.extend({components:{VPopup:d.VPopup,VButton:d.VButton,VDropdown:d.VDropdown,VIcon:d.VIcon,SwitchBox:d.SwitchBox},props:{triggerElement:{required:!0}},data(){const e=M.output,t=M.useBackupUrls;return{open:!1,busy:!1,testData:{videoInfo:null,multiple:!1},assets:B,qualities:[],selectedQuality:void 0,inputs:[],selectedInput:void 0,apis:[],selectedApi:void 0,outputs:F,selectedOutput:F.find((t=>t.name===e))||F[0],useBackupUrls:t||!1}},computed:{assetsWithOptions(){return this.assets.filter((e=>e.component))},filteredQualities(){return 0===this.qualities.length?c.allQualities:this.qualities},canStartDownload(){if(this.busy||!this.open)return!1;return!Object.entries(this).filter((e=>{let[t]=e;return t.startsWith("selected")})).some((e=>{let[,t]=e;return!t}))}},watch:{selectedInput(e){void 0!==e&&this.updateTestVideoInfo()},selectedApi(e){void 0!==e&&(this.updateTestVideoInfo(),M.api=e.name)},selectedOutput(e){void 0!==e&&(M.output=e.name)},useBackupUrls(e){void 0!==e&&(M.useBackupUrls=e)}},mounted(){coreApis.observer.videoChange((()=>{this.selectedInput=void 0,this.selectedApi=void 0;const e=z(N);this.inputs=e,this.selectedInput=e[0];const t=z(Q);this.apis=t;const i=t.find((e=>e.name===M.api));this.selectedApi=i||t[0]}))},methods:{formatFileSize:r.formatFileSize,saveSelectedQuality(){const e=this.selectedQuality;void 0!==e&&(M.quality=e.value,this.updateTestVideoInfo())},async getVideoItems(){const e=this.selectedInput;return await e.getInputs(this.$refs.inputOptions)},async updateTestVideoInfo(){if(!this.selectedInput||!this.selectedApi)return;this.testData.videoInfo=null;const e=this.selectedInput,t=e.getTestInput?.()??{aid:unsafeWindow.aid,cid:unsafeWindow.cid,title:(0,u.getFriendlyTitle)(!0)};console.log("[updateTestVideoInfo]",t),this.testData.multiple=e.batch;const i=this.selectedApi;try{const e=await i.downloadVideoInfo(t);this.qualities=e.qualities;if((!this.selectedQuality||!e.qualities.some((e=>e.value===this.selectedQuality.value)))&&(this.selectedQuality=e.qualities[0],M.quality)){const[t]=e.qualities.filter((e=>e.value<=M.quality));t&&(this.selectedQuality=t)}t.quality=this.selectedQuality;const n=await i.downloadVideoInfo(t);this.testData.videoInfo=n}catch(e){console.error("[updateTestVideoInfo] failed",e),this.testData.videoInfo=void 0}},async startDownload(e,t){try{this.busy=!0;const i=this.selectedInput,n=this.selectedApi,o=await i.getInputs(this.$refs.inputOptions);if(0===o.length)return void p.Toast.info("未接收到视频, 如果输入源支持批量, 请至少选择一个视频.","下载视频",3e3);o.forEach((e=>{e.quality=this.selectedQuality}));const s=await Promise.all(o.map((e=>n.downloadVideoInfo(e))));if(0===s.length||0===lodash.sumBy(s,(e=>e.fragments.length)))return void p.Toast.info("未接收到可下载数据, 请检查输入源和格式是否适用于当前视频.","下载视频",3e3);this.useBackupUrls&&s.forEach((e=>{e.fragments.forEach((e=>{e.url=e.backupUrls&&0!==e.backupUrls.length?e.backupUrls.at(0):e.url}))}));const a=new O.u(s),r=(await Promise.all(B.map((e=>e.getAssets(s,this.$refs.assetsOptions.find((t=>t.$attrs.name===e.name))))))).flat();a.extraAssets.push(...r),await a.downloadExtraAssets(),await t.runAction(a,e)}catch(e){(0,a.logError)(e)}finally{this.busy=!1}}}}),H=W; +/* spell-checker: disable */var L=i(170),R=i.n(L),J={insert:"head",singleton:!1};y()(R(),J);R().locals;const G=(0,_.Z)(H,n,[],!1,null,null,null).exports},774:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>a});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"multiple-widgets"},[t("DefaultWidget",{ref:"button",attrs:{name:"下载视频",icon:"mdi-download"},on:{mouseover:function(t){return e.createDownloadPanel()},click:function(t){return e.toggleDownloadPanel()}}})],1)};let o;n._withStripped=!0;const s=Vue.extend({components:{DefaultWidget:coreApis.ui.DefaultWidget},methods:{async createDownloadPanel(){if(!o){const e=document.createElement("div");document.body.appendChild(e);const t=await Promise.resolve().then(i.bind(i,757)).then((e=>e.default));o=new t({propsData:{triggerElement:this.$refs.button}}).$mount(e)}},async toggleDownloadPanel(){o&&(o.open=!o.open)}}});const a=(0,i(893).Z)(s,n,[],!1,null,null,null).exports},850:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>u});var n=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"single-video-info download-video-config-section"},[e.imageUrl?t("img",{staticClass:"shadow",attrs:{src:e.imageUrl}}):e._e(),e._v(" "),e.imageUrl?t("img",{attrs:{src:e.imageUrl}}):e._e()])};n._withStripped=!0;const o=coreApis.componentApis.video.videoCover,s=coreApis.observer,a=Vue.extend({data:()=>({imageUrl:""}),created(){(0,s.videoChange)((async()=>{const{aid:e}=unsafeWindow;this.imageUrl=await(0,o.getVideoCoverUrlByAid)(e)}))}});var r=i(332),d=i.n(r),l=i(466),c=i.n(l),p={insert:"head",singleton:!1};d()(c(),p);c().locals;const u=(0,i(893).Z)(a,n,[],!1,null,null,null).exports},893:(e,t,i)=>{"use strict";function n(e,t,i,n,o,s,a,r){var d,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=i,l._compiled=!0),n&&(l.functional=!0),s&&(l._scopeId="data-v-"+s),a?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=d):o&&(d=r?function(){o.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:o),d)if(l.functional){l._injectStyles=d;var c=l.render;l.render=function(e,t){return d.call(t),c(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,d):[d]}return{exports:e,options:l}}i.d(t,{Z:()=>n})},8:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=8,e.exports=t},198:e=>{"use strict";e.exports="在功能面板中添加下载视频支持. 请注意:\n- 不能下载超出账号权限的视频, 例如非大会员下载大会员清晰度视频, 或者大陆地区网络下载港澳台地区番剧, 都是不可以的.\n- 请勿短时间进行大量下载, 以免遭到 b 站 IP 封禁.\n"},375:e=>{"use strict";e.exports=coreApis.ajax},391:e=>{"use strict";e.exports=coreApis.componentApis.video.videoQuality},986:e=>{"use strict";e.exports=coreApis.settings},289:e=>{"use strict";e.exports=coreApis.utils.formatters},674:e=>{"use strict";e.exports=coreApis.utils.title},457:e=>{"use strict";e.exports=coreApis.utils.urls},605:e=>{"use strict";e.exports=coreApis.utils}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={id:e,exports:{}};return i[e](s,s.exports,o),s.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var s=Object.create(null);o.r(s);var a={};e=e||[null,t({}),t([]),t(t)];for(var r=2&n&&i;"object"==typeof r&&!~e.indexOf(r);r=t(r))Object.getOwnPropertyNames(r).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,o.d(s,a),s},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";o.d(s,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.spinQuery;var i=o(221);const n=(0,e.defineOptionsMetadata)({basicConfig:{defaultValue:{},displayName:"基础配置",hidden:!0},dashVideoExtension:{defaultValue:i._i.video,displayName:"DASH 视频扩展名"},dashAudioExtension:{defaultValue:i._i.audio,displayName:"DASH 普通音频扩展名"},dashFlacAudioExtension:{defaultValue:i._i.flacAudio,displayName:"DASH FLAC 音频扩展名"}}),a=(0,e.defineComponentMetadata)({name:"downloadVideo",displayName:"下载视频",entry:none,reload:none,unload:none,widget:{component:()=>Promise.resolve().then(o.bind(o,774)).then((e=>e.default)),condition:()=>(0,t.hasVideo)()},tags:[componentsTags.video],options:n,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=o(8);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,198,17)).then((e=>e.default))}})()})})(),s=s.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/full-description.js b/bb-evolved/registry/dist/components/video/full-description.js index 083488511e..0a209e3b0b 100644 --- a/bb-evolved/registry/dist/components/video/full-description.js +++ b/bb-evolved/registry/dist/components/video/full-description.js @@ -6,4 +6,4 @@ o.i=function(e,n,t){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var i={};if(t)for(var r=0;r{var t=n(323);t&&t.__esModule&&(t=t.default),e.exports="string"==typeof t?t:t.toString()}},o={};function n(t){var i=o[t];if(void 0!==i)return i.exports;var r=o[t]={id:t,exports:{}};return e[t](r,r.exports,n),r.exports}n.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return n.d(o,{a:o}),o},n.d=(e,o)=>{for(var t in o)n.o(o,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},n.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o);var t={};return(()=>{"use strict";n.d(t,{component:()=>l});const e=coreApis.componentApis.define,o=coreApis.utils.urls,i=coreApis.observer,r=coreApis.spinQuery,s=coreApis.style;var c=n(994),a=n.n(c);const d="fullVideoDescription",p=()=>{(0,s.addStyle)(a(),d),(0,i.videoChange)((async()=>{const e=await(0,r.select)(".video-desc, .video-desc-v1, .video-desc-container");if(!e)return;(await(0,r.sq)((()=>dq(e,'[report-id="abstract_spread"], .toggle-btn')),(e=>e&&"none"!==e.style.display)))?.click()}))},l=(0,e.defineComponentMetadata)({name:d,entry:p,reload:p,unload:()=>{(0,s.removeStyle)(d)},displayName:"展开视频简介",tags:[componentsTags.video,componentsTags.style],description:{"zh-CN":"总是展开完整的视频简介."},urlInclude:o.videoAndBangumiUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),t=t.component})())); \ No newline at end of file +var s=this[r][0];null!=s&&(i[s]=!0)}for(var a=0;a{var t=n(323);t&&t.__esModule&&(t=t.default),e.exports="string"==typeof t?t:t.toString()}},o={};function n(t){var i=o[t];if(void 0!==i)return i.exports;var r=o[t]={id:t,exports:{}};return e[t](r,r.exports,n),r.exports}n.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return n.d(o,{a:o}),o},n.d=(e,o)=>{for(var t in o)n.o(o,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},n.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o);var t={};return(()=>{"use strict";n.d(t,{component:()=>l});const e=coreApis.componentApis.define,o=coreApis.utils.urls,i=coreApis.observer,r=coreApis.spinQuery,s=coreApis.style;var a=n(994),c=n.n(a);const d="fullVideoDescription",p=()=>{(0,s.addStyle)(c(),d),(0,i.videoChange)((async()=>{const e=await(0,r.select)(".video-desc, .video-desc-v1, .video-desc-container");if(!e)return;(await(0,r.sq)((()=>dq(e,'[report-id="abstract_spread"], .toggle-btn')),(e=>e&&"none"!==e.style.display)))?.click()}))},l=(0,e.defineComponentMetadata)({name:d,entry:p,reload:p,unload:()=>{(0,s.removeStyle)(d)},displayName:"展开视频简介",tags:[componentsTags.video,componentsTags.style],description:{"zh-CN":"总是展开完整的视频简介."},urlInclude:o.videoAndBangumiUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/full-episode-title.js b/bb-evolved/registry/dist/components/video/full-episode-title.js index fe7faa4045..4ca4d62566 100644 --- a/bb-evolved/registry/dist/components/video/full-episode-title.js +++ b/bb-evolved/registry/dist/components/video/full-episode-title.js @@ -6,4 +6,4 @@ t.i=function(e,i,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var l={};if(o)for(var n=0;n{var o=i(102);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},365:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=365,e.exports=t},393:e=>{"use strict";e.exports="提供一些视频选集区域的优化, 对番剧无效.\n- `展开选集标题`: 总是完全展开视频选集列表项的标题\n- `展开选集列表`: 总是完全展开视频选集列表\n\n打开 `展开选集列表` 时, 在选集区域的标题上按住 Alt 键点击可以临时切换展开/收起选集列表.\n"}},o={};function l(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,exports:{}};return i[e](n,n.exports,l),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(i,o){if(1&o&&(i=this(i)),8&o)return i;if("object"==typeof i&&i){if(4&o&&i.__esModule)return i;if(16&o&&"function"==typeof i.then)return i}var n=Object.create(null);l.r(n);var s={};e=e||[null,t({}),t([]),t(t)];for(var d=2&o&&i;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>s[e]=()=>i[e]));return s.default=()=>i,l.d(n,s),n},l.d=(e,t)=>{for(var i in t)l.o(t,i)&&!l.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";l.d(n,{component:()=>d});const e=coreApis.componentApis.define,t=coreApis.utils.urls,i=coreApis.settings,o=coreApis.spinQuery,s="fullEpisodeTitle",d=(0,e.defineComponentMetadata)({name:s,instantStyles:[{name:s,style:()=>Promise.resolve().then(l.t.bind(l,875,23))}],options:{fullEpisodeTitle:{defaultValue:!0,displayName:"展开选集标题"},fullEpisodeList:{defaultValue:!0,displayName:"展开选集列表"}},entry:e=>{let{metadata:{options:t}}=e;Object.keys(t).forEach((e=>{(0,i.addComponentListener)(`fullEpisodeTitle.${e}`,(t=>{document.body.classList.toggle(lodash.kebabCase(e),t)}),!0)})),t.fullEpisodeList&&Promise.race([(0,o.select)(".multi-page-v1 .head-left h3"),(0,o.select)(".video-sections-v1 .first-line-title"),(0,o.select)(".base-video-sections-v1 .first-line-title")]).then((e=>{e&&e.addEventListener("click",(e=>{e.altKey&&0===e.button&&(document.body.classList.toggle("disable-full-episode-list"),e.preventDefault(),e.stopImmediatePropagation())}),{capture:!0})}))},displayName:"选集区域优化",tags:[componentsTags.video],urlInclude:t.videoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=l(365);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(l.t.bind(l,393,17)).then((e=>e.default))}})()})})(),n=n.component})())); \ No newline at end of file +var s=this[n][0];null!=s&&(l[s]=!0)}for(var d=0;d{var o=i(102);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()},365:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=365,e.exports=t},393:e=>{"use strict";e.exports="提供一些视频选集区域的优化, 对番剧无效.\n- `展开选集标题`: 总是完全展开视频选集列表项的标题\n- `展开选集列表`: 总是完全展开视频选集列表\n\n打开 `展开选集列表` 时, 在选集区域的标题上按住 Alt 键点击可以临时切换展开/收起选集列表.\n"}},o={};function l(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,exports:{}};return i[e](n,n.exports,l),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(i,o){if(1&o&&(i=this(i)),8&o)return i;if("object"==typeof i&&i){if(4&o&&i.__esModule)return i;if(16&o&&"function"==typeof i.then)return i}var n=Object.create(null);l.r(n);var s={};e=e||[null,t({}),t([]),t(t)];for(var d=2&o&&i;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>s[e]=()=>i[e]));return s.default=()=>i,l.d(n,s),n},l.d=(e,t)=>{for(var i in t)l.o(t,i)&&!l.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),l.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";l.d(n,{component:()=>d});const e=coreApis.componentApis.define,t=coreApis.utils.urls,i=coreApis.settings,o=coreApis.spinQuery,s="fullEpisodeTitle",d=(0,e.defineComponentMetadata)({name:s,instantStyles:[{name:s,style:()=>Promise.resolve().then(l.t.bind(l,875,23))}],options:{fullEpisodeTitle:{defaultValue:!0,displayName:"展开选集标题"},fullEpisodeList:{defaultValue:!0,displayName:"展开选集列表"}},entry:e=>{let{metadata:{options:t}}=e;Object.keys(t).forEach((e=>{(0,i.addComponentListener)(`fullEpisodeTitle.${e}`,(t=>{document.body.classList.toggle(lodash.kebabCase(e),t)}),!0)})),t.fullEpisodeList&&Promise.race([(0,o.select)(".multi-page-v1 .head-left h3"),(0,o.select)(".video-sections-v1 .first-line-title"),(0,o.select)(".base-video-sections-v1 .first-line-title")]).then((e=>{e&&e.addEventListener("click",(e=>{e.altKey&&0===e.button&&(document.body.classList.toggle("disable-full-episode-list"),e.preventDefault(),e.stopImmediatePropagation())}),{capture:!0})}))},displayName:"选集区域优化",tags:[componentsTags.video],urlInclude:t.videoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=l(365);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(l.t.bind(l,393,17)).then((e=>e.default))}})()})})(),n=n.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/outer-watchlater.js b/bb-evolved/registry/dist/components/video/outer-watchlater.js index 0b19847610..29fe8b916a 100644 --- a/bb-evolved/registry/dist/components/video/outer-watchlater.js +++ b/bb-evolved/registry/dist/components/video/outer-watchlater.js @@ -9,4 +9,4 @@ t=[[null,t,""]]);var a={};if(n)for(var r=0;r{"use strict";var n,a=function(){return void 0===n&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var o=document.querySelector(e);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(t){o=null}t[e]=o}return t[e]}}(),i=[];function s(t){for(var e=-1,o=0;o{"use strict";o.r(e),o.d(e,{default:()=>v});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("span",{staticClass:"watchlater be-outer-watchlater video-toolbar-left-item",class:{on:t.on,...t.displayModeClass},attrs:{title:"稍后再看"},on:{click:function(e){return t.toggle()}}},[e("VIcon",{staticClass:"icon",attrs:{size:28,icon:"mdi-timetable"}}),t._v(" "),e("span",{staticClass:"text"},[t._v("稍后再看")]),t._v(" "),e("div",{staticClass:"tip",class:{show:t.tipShowing}},[t._v(t._s(t.tipText))])],1)};n._withStripped=!0;const a=coreApis.ui,r=coreApis.componentApis.video.watchlater;var i=o(209);const s=coreApis.settings,l=Vue.extend({components:{VIcon:a.VIcon},data(){const{displayMode:t}=(0,s.getComponentSettings)("outerWatchlater").options;return{watchlaterList:r.watchlaterList,displayMode:t,aid:unsafeWindow.aid,tipText:"",tipShowing:!1,tipHandle:0}},computed:{on(){return console.log(this.watchlaterList,this.aid,this.watchlaterList.includes(parseInt(this.aid))),this.watchlaterList.includes(parseInt(this.aid))},displayModeClass(){return{"icon-only":this.displayMode===i.d.Icon,"icon-and-text":this.displayMode===i.d.IconAndText}}},created(){(0,s.addComponentListener)("outerWatchlater.displayMode",(t=>{this.displayMode=t}))},methods:{showTip(t){this.tipText=t,this.tipShowing=!0,this.tipHandle&&clearTimeout(this.tipHandle),this.tipHandle=setTimeout((()=>{this.tipShowing=!1}),2e3)},async toggle(){await(0,r.toggleWatchlater)(this.aid),this.showTip(this.on?"已添加至稍后再看":"已从稍后再看移除")}}});var c=o(332),d=o.n(c),p=o(771),u=o.n(p),h={insert:"head",singleton:!1};d()(u(),h);u().locals;var f=function(t,e,o,n,a,r,i,s){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=o,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),i?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},c._ssrRegister=l):a&&(l=s?function(){a.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:a),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(t,e){return l.call(e),d(t,e)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:t,options:c}}(l,n,[],!1,null,null,null);const v=f.exports},952:t=>{"use strict";t.exports=coreApis.componentApis.define},391:t=>{"use strict";t.exports=coreApis.observer}},n={};function a(t){var e=n[t];if(void 0!==e)return e.exports;var r=n[t]={id:t,exports:{}};return o[t](r,r.exports,a),r.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,a.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var r=Object.create(null);a.r(r);var i={};t=t||[null,e({}),e([]),e(e)];for(var s=2&n&&o;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>o[t]));return i.default=()=>o,a.d(r,i),r},a.d=(t,e)=>{for(var o in e)a.o(e,o)&&!a.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";a.d(r,{component:()=>s});var t=a(952);const e=coreApis.utils,o=coreApis.utils.urls,n=coreApis.componentApis.video.videoActions;var i=a(209);const s=(0,t.defineComponentMetadata)({name:"outerWatchlater",displayName:"外置稍后再看",entry:async t=>{let{settings:r}=t;if(o.watchlaterUrls.some(e.matchUrlPattern)&&!r.options.showInWatchlaterPages)return;if(!(0,e.getUID)())return;const i=await Promise.resolve().then(a.bind(a,954)),s=(0,e.mountVueComponent)(i);if(await(0,n.addVideoActionButton)((()=>s.$el))){const{videoChange:t}=await Promise.resolve().then(a.t.bind(a,391,23));t((t=>{let{aid:e}=t;console.log("videoChange",unsafeWindow.aid,e),s.aid=unsafeWindow.aid}))}},tags:[componentsTags.video],description:{"zh-CN":"将视频页面菜单里的 `稍后再看` 移到外面. 请注意如果在稍后再看页面中仍然显示, 是不会实时同步右侧的播放列表的."},urlInclude:o.videoUrls,options:i.Y,reload:()=>{dqa(".be-outer-watchlater").forEach((t=>{t.style.display=""}))},unload:()=>{dqa(".be-outer-watchlater").forEach((t=>{t.style.display="none"}))},plugin:{displayName:"稍后再看 - 快捷键支持",setup:t=>{let{addData:e}=t;e("keymap.actions",(t=>{t.watchlater={displayName:"稍后再看",run:t=>{const{clickElement:e}=t;return e(".be-outer-watchlater",t)}}})),e("keymap.presets",(t=>{t.watchlater="shift w"}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var o=document.querySelector(e);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(t){o=null}t[e]=o}return t[e]}}(),i=[];function s(t){for(var e=-1,o=0;o{"use strict";o.r(e),o.d(e,{default:()=>v});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("span",{staticClass:"watchlater be-outer-watchlater video-toolbar-left-item",class:{on:t.on,...t.displayModeClass},attrs:{title:"稍后再看"},on:{click:function(e){return t.toggle()}}},[e("VIcon",{staticClass:"icon",attrs:{size:28,icon:"mdi-timetable"}}),t._v(" "),e("span",{staticClass:"text"},[t._v("稍后再看")]),t._v(" "),e("div",{staticClass:"tip",class:{show:t.tipShowing}},[t._v(t._s(t.tipText))])],1)};n._withStripped=!0;const a=coreApis.ui,r=coreApis.componentApis.video.watchlater;var i=o(209);const s=coreApis.settings,l=Vue.extend({components:{VIcon:a.VIcon},data(){const{displayMode:t}=(0,s.getComponentSettings)("outerWatchlater").options;return{watchlaterList:r.watchlaterList,displayMode:t,aid:unsafeWindow.aid,tipText:"",tipShowing:!1,tipHandle:0}},computed:{on(){return console.log(this.watchlaterList,this.aid,this.watchlaterList.includes(parseInt(this.aid))),this.watchlaterList.includes(parseInt(this.aid))},displayModeClass(){return{"icon-only":this.displayMode===i.d.Icon,"icon-and-text":this.displayMode===i.d.IconAndText}}},created(){(0,s.addComponentListener)("outerWatchlater.displayMode",(t=>{this.displayMode=t}))},methods:{showTip(t){this.tipText=t,this.tipShowing=!0,this.tipHandle&&clearTimeout(this.tipHandle),this.tipHandle=setTimeout((()=>{this.tipShowing=!1}),2e3)},async toggle(){await(0,r.toggleWatchlater)(this.aid),this.showTip(this.on?"已添加至稍后再看":"已从稍后再看移除")}}});var c=o(332),d=o.n(c),p=o(771),u=o.n(p),h={insert:"head",singleton:!1};d()(u(),h);u().locals;var f=function(t,e,o,n,a,r,i,s){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=o,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),i?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},c._ssrRegister=l):a&&(l=s?function(){a.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:a),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(t,e){return l.call(e),d(t,e)}}else{var p=c.beforeCreate;c.beforeCreate=p?[].concat(p,l):[l]}return{exports:t,options:c}}(l,n,[],!1,null,null,null);const v=f.exports},952:t=>{"use strict";t.exports=coreApis.componentApis.define},391:t=>{"use strict";t.exports=coreApis.observer}},n={};function a(t){var e=n[t];if(void 0!==e)return e.exports;var r=n[t]={id:t,exports:{}};return o[t](r,r.exports,a),r.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,a.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var r=Object.create(null);a.r(r);var i={};t=t||[null,e({}),e([]),e(e)];for(var s=2&n&&o;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>o[t]));return i.default=()=>o,a.d(r,i),r},a.d=(t,e)=>{for(var o in e)a.o(e,o)&&!a.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";a.d(r,{component:()=>s});var t=a(952);const e=coreApis.utils,o=coreApis.utils.urls,n=coreApis.componentApis.video.videoActions;var i=a(209);const s=(0,t.defineComponentMetadata)({name:"outerWatchlater",displayName:"外置稍后再看",entry:async t=>{let{settings:r}=t;if(o.watchlaterUrls.some(e.matchUrlPattern)&&!r.options.showInWatchlaterPages)return;if(!(0,e.getUID)())return;const i=await Promise.resolve().then(a.bind(a,954)),s=(0,e.mountVueComponent)(i);if(await(0,n.addVideoActionButton)((()=>s.$el))){const{videoChange:t}=await Promise.resolve().then(a.t.bind(a,391,23));t((t=>{let{aid:e}=t;console.log("videoChange",unsafeWindow.aid,e),s.aid=unsafeWindow.aid}))}},tags:[componentsTags.video],description:{"zh-CN":"将视频页面菜单里的 `稍后再看` 移到外面. 请注意如果在稍后再看页面中仍然显示, 是不会实时同步右侧的播放列表的."},urlInclude:o.videoUrls,options:i.Y,reload:()=>{dqa(".be-outer-watchlater").forEach((t=>{t.style.display=""}))},unload:()=>{dqa(".be-outer-watchlater").forEach((t=>{t.style.display="none"}))},plugin:{displayName:"稍后再看 - 快捷键支持",setup:t=>{let{addData:e}=t;e("keymap.actions",(t=>{t.watchlater={displayName:"稍后再看",run:t=>{const{clickElement:e}=t;return e(".be-outer-watchlater",t)}}})),e("keymap.presets",(t=>{t.watchlater="shift w"}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/auto-light.js b/bb-evolved/registry/dist/components/video/player/auto-light.js index 67ddc23422..f7fe42ad66 100644 --- a/bb-evolved/registry/dist/components/video/player/auto-light.js +++ b/bb-evolved/registry/dist/components/video/player/auto-light.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/auto-light"]=t():e["video/player/auto-light"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,n={605:e=>{e.exports=coreApis.utils}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,i),r.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,i.d(r,a),r},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{i.d(r,{component:()=>d});const e=coreApis.componentApis.video.playerAgent,t=coreApis.componentApis.video.playerLight,n=coreApis.observer,o=coreApis.utils.urls,a=e=>{let t=document.getElementById("mstars1"),n=document.getElementById("mstars2");e?(null==t&&((()=>{const e=document.getElementById("biliMainHeader");if(null==e)return;const t=document.createElement("div");t.id="mstars1";const n=document.createElement("div");n.id="mstars2",e.appendChild(t),e.appendChild(n);const o=document.createElement("style");function i(e){let t="";const n=window.innerWidth*window.innerHeight;for(let o=0;o{let{settings:r}=o;const{isEmbeddedPlayer:d}=await Promise.resolve().then(i.t.bind(i,605,23));if(d())return;const l=()=>{(0,t.lightOn)(),a(!1)},p=()=>{(0,t.lightOff)(),r.options.starAnimation&&a(!0)};(0,n.videoChange)((async()=>{if(null!=s){const e=await s.query.video.element();e.removeEventListener("ended",l),e.removeEventListener("pause",l),e.removeEventListener("play",p)}s=e.playerAgent;const t=await s.query.video.element();s.isAutoPlay()&&p(),t.addEventListener("ended",l),t.addEventListener("pause",l),t.addEventListener("play",p)}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/auto-light"]=t():e["video/player/auto-light"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,n={605:e=>{e.exports=coreApis.utils}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,i),r.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,i.d(r,a),r},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{i.d(r,{component:()=>d});const e=coreApis.componentApis.video.playerAgent,t=coreApis.componentApis.video.playerLight,n=coreApis.observer,o=coreApis.utils.urls,a=e=>{let t=document.getElementById("mstars1"),n=document.getElementById("mstars2");e?(null==t&&((()=>{const e=document.getElementById("biliMainHeader");if(null==e)return;const t=document.createElement("div");t.id="mstars1";const n=document.createElement("div");n.id="mstars2",e.appendChild(t),e.appendChild(n);const o=document.createElement("style");function i(e){let t="";const n=window.innerWidth*window.innerHeight;for(let o=0;o{let{settings:r}=o;const{isEmbeddedPlayer:d}=await Promise.resolve().then(i.t.bind(i,605,23));if(d())return;const l=()=>{(0,t.lightOn)(),a(!1)},p=()=>{(0,t.lightOff)(),r.options.starAnimation&&a(!0)};(0,n.videoChange)((async()=>{if(null!=s){const e=await s.query.video.element();e.removeEventListener("ended",l),e.removeEventListener("pause",l),e.removeEventListener("play",p)}s=e.playerAgent;const t=await s.query.video.element();s.isAutoPlay()&&p(),t.addEventListener("ended",l),t.addEventListener("pause",l),t.addEventListener("play",p)}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/control-background.js b/bb-evolved/registry/dist/components/video/player/control-background.js index 72a46a7943..2d89061bf9 100644 --- a/bb-evolved/registry/dist/components/video/player/control-background.js +++ b/bb-evolved/registry/dist/components/video/player/control-background.js @@ -6,4 +6,4 @@ e.i=function(o,r,t){"string"==typeof o&&( // eslint-disable-next-line no-param-reassign o=[[null,o,""]]);var n={};if(t)for(var l=0;l{var t=r(319);t&&t.__esModule&&(t=t.default),o.exports="string"==typeof t?t:t.toString()},986:o=>{"use strict";o.exports=coreApis.settings}},t={};function n(o){var e=t[o];if(void 0!==e)return e.exports;var l=t[o]={id:o,exports:{}};return r[o](l,l.exports,n),l.exports}e=Object.getPrototypeOf?o=>Object.getPrototypeOf(o):o=>o.__proto__,n.t=function(r,t){if(1&t&&(r=this(r)),8&t)return r;if("object"==typeof r&&r){if(4&t&&r.__esModule)return r;if(16&t&&"function"==typeof r.then)return r}var l=Object.create(null);n.r(l);var i={};o=o||[null,e({}),e([]),e(e)];for(var a=2&t&&r;"object"==typeof a&&!~o.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach((o=>i[o]=()=>r[o]));return i.default=()=>r,n.d(l,i),l},n.d=(o,e)=>{for(var r in e)n.o(e,r)&&!n.o(o,r)&&Object.defineProperty(o,r,{enumerable:!0,get:e[r]})},n.o=(o,e)=>Object.prototype.hasOwnProperty.call(o,e),n.r=o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})};var l={};return(()=>{"use strict";n.d(l,{component:()=>t});const o=coreApis.componentApis.define,e=coreApis.utils.urls,r=(0,o.defineOptionsMetadata)({opacity:{displayName:"不透明度(%)",defaultValue:64,slider:{}},includeProgress:{displayName:"包括进度条",defaultValue:!0}}),t=(0,o.defineComponentMetadata)({name:"playerControlBackground",displayName:"播放器控制栏背景色",tags:[componentsTags.video,componentsTags.style],description:{"zh-CN":"给视频播放器控制栏附上半透明的黑色, 代替原来的阴影."},entry:async o=>{let{metadata:e}=o;const{addComponentListener:r}=await Promise.resolve().then(n.t.bind(n,986,23));r(`${e.name}.includeProgress`,(o=>{document.body.classList.toggle("video-control-progress-background",o)}),!0),r(`${e.name}.opacity`,lodash.debounce((o=>{document.documentElement.style.setProperty("--video-control-opacity",(o/100).toString())}),200),!0)},instantStyles:[{name:"playerControlBackground",style:()=>Promise.resolve().then(n.t.bind(n,228,23))}],urlInclude:e.playerUrls,options:r,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),l=l.component})())); \ No newline at end of file +var i=this[l][0];null!=i&&(n[i]=!0)}for(var a=0;a{var t=r(319);t&&t.__esModule&&(t=t.default),o.exports="string"==typeof t?t:t.toString()},986:o=>{"use strict";o.exports=coreApis.settings}},t={};function n(o){var e=t[o];if(void 0!==e)return e.exports;var l=t[o]={id:o,exports:{}};return r[o](l,l.exports,n),l.exports}e=Object.getPrototypeOf?o=>Object.getPrototypeOf(o):o=>o.__proto__,n.t=function(r,t){if(1&t&&(r=this(r)),8&t)return r;if("object"==typeof r&&r){if(4&t&&r.__esModule)return r;if(16&t&&"function"==typeof r.then)return r}var l=Object.create(null);n.r(l);var i={};o=o||[null,e({}),e([]),e(e)];for(var a=2&t&&r;"object"==typeof a&&!~o.indexOf(a);a=e(a))Object.getOwnPropertyNames(a).forEach((o=>i[o]=()=>r[o]));return i.default=()=>r,n.d(l,i),l},n.d=(o,e)=>{for(var r in e)n.o(e,r)&&!n.o(o,r)&&Object.defineProperty(o,r,{enumerable:!0,get:e[r]})},n.o=(o,e)=>Object.prototype.hasOwnProperty.call(o,e),n.r=o=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})};var l={};return(()=>{"use strict";n.d(l,{component:()=>t});const o=coreApis.componentApis.define,e=coreApis.utils.urls,r=(0,o.defineOptionsMetadata)({opacity:{displayName:"不透明度(%)",defaultValue:64,slider:{}},includeProgress:{displayName:"包括进度条",defaultValue:!0}}),t=(0,o.defineComponentMetadata)({name:"playerControlBackground",displayName:"播放器控制栏背景色",tags:[componentsTags.video,componentsTags.style],description:{"zh-CN":"给视频播放器控制栏附上半透明的黑色, 代替原来的阴影."},entry:async o=>{let{metadata:e}=o;const{addComponentListener:r}=await Promise.resolve().then(n.t.bind(n,986,23));r(`${e.name}.includeProgress`,(o=>{document.body.classList.toggle("video-control-progress-background",o)}),!0),r(`${e.name}.opacity`,lodash.debounce((o=>{document.documentElement.style.setProperty("--video-control-opacity",(o/100).toString())}),200),!0)},instantStyles:[{name:"playerControlBackground",style:()=>Promise.resolve().then(n.t.bind(n,228,23))}],urlInclude:e.playerUrls,options:r,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),l=l.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/default-mode.js b/bb-evolved/registry/dist/components/video/player/default-mode.js index 9ae1e385de..bda5b71a73 100644 --- a/bb-evolved/registry/dist/components/video/player/default-mode.js +++ b/bb-evolved/registry/dist/components/video/player/default-mode.js @@ -1 +1 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/player/default-mode"]=o():e["video/player/default-mode"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{component:()=>c});const t=coreApis.componentApis.define,n=coreApis.componentApis.video.playerAgent,l=coreApis.spinQuery,a=coreApis.utils,r=coreApis.utils.lazyPanel,s=coreApis.utils.urls;let i=function(e){return e.Normal="常规",e.Wide="宽屏",e.WebFullscreen="网页全屏",e.Fullscreen="全屏",e}({});const d=(0,t.defineOptionsMetadata)({mode:{defaultValue:i.Normal,displayName:"模式选择",dropdownEnum:i},applyOnPlay:{defaultValue:!1,displayName:"播放时应用"}}),c=(0,t.defineComponentMetadata)({name:"defaultPlayerMode",displayName:"默认播放器模式",entry:async e=>{let{settings:{options:o}}=e;if((0,a.isEmbeddedPlayer)())return;const{query:{control:{buttons:t}}}=n.playerAgent;await(0,a.playerReady)(),Promise.resolve().then((async()=>{const e=new Map([[i.Normal,none],[i.Wide,async()=>{await(0,r.loadLazyPanel)(t.widescreen.selector),(0,a.disableWindowScroll)((()=>n.playerAgent.widescreen()))}],[i.WebFullscreen,async()=>{await(0,r.loadLazyPanel)(t.webFullscreen.selector),n.playerAgent.webFullscreen()}],[i.Fullscreen,async()=>{null!==await(0,l.sq)((()=>dq(n.playerAgent.query.video.element.selector)),(e=>null!==e&&4===e.readyState&&"complete"===document.readyState&&document.hasFocus()))?n.playerAgent.fullscreen():console.warn("[默认播放器模式] 未能应用全屏模式, 等待超时.")}]]),s=await n.playerAgent.query.video.element();if(!s)return;const d=e.get(o.mode);o.applyOnPlay&&!n.playerAgent.isAutoPlay()?s.addEventListener("play",d,{once:!0}):d()}))},tags:[componentsTags.video],description:{"zh-CN":"控制是否使用默认播放器模式, 可以为`常规`, `宽屏`, `网页全屏`或`全屏`. 注意: 不能和其他影响定位的功能一同使用, 例如播放器定位. (相关讨论: [#483](https://github.com/the1812/Bilibili-Evolved/issues/483))","en-US":"Set the default player mode. Could be `Normal`, `Widescreen`, `Web fullscreen` or `Fullscreen`.","ja-JP":"デフォルト・プレーヤー・モードが使用するかどうかを制御する、 例えば`常规`、`宽屏`、 `网页全屏`か`全屏`."},options:d,urlInclude:s.allVideoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return o=o.component})())); \ No newline at end of file +!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/player/default-mode"]=o():e["video/player/default-mode"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{component:()=>c});const t=coreApis.componentApis.define,n=coreApis.componentApis.video.playerAgent,l=coreApis.spinQuery,a=coreApis.utils,r=coreApis.utils.lazyPanel,s=coreApis.utils.urls;let i=function(e){return e.Normal="常规",e.Wide="宽屏",e.WebFullscreen="网页全屏",e.Fullscreen="全屏",e}({});const d=(0,t.defineOptionsMetadata)({mode:{defaultValue:i.Normal,displayName:"模式选择",dropdownEnum:i},applyOnPlay:{defaultValue:!1,displayName:"播放时应用"}}),c=(0,t.defineComponentMetadata)({name:"defaultPlayerMode",displayName:"默认播放器模式",entry:async e=>{let{settings:{options:o}}=e;if((0,a.isEmbeddedPlayer)())return;const{query:{control:{buttons:t}}}=n.playerAgent;await(0,a.playerReady)(),Promise.resolve().then((async()=>{const e=new Map([[i.Normal,none],[i.Wide,async()=>{await(0,r.loadLazyPanel)(t.widescreen.selector),(0,a.disableWindowScroll)((()=>n.playerAgent.widescreen()))}],[i.WebFullscreen,async()=>{await(0,r.loadLazyPanel)(t.webFullscreen.selector),n.playerAgent.webFullscreen()}],[i.Fullscreen,async()=>{null!==await(0,l.sq)((()=>dq(n.playerAgent.query.video.element.selector)),(e=>null!==e&&4===e.readyState&&"complete"===document.readyState&&document.hasFocus()))?n.playerAgent.fullscreen():console.warn("[默认播放器模式] 未能应用全屏模式, 等待超时.")}]]),s=await n.playerAgent.query.video.element();if(!s)return;const d=e.get(o.mode);o.applyOnPlay&&!n.playerAgent.isAutoPlay()?s.addEventListener("play",d,{once:!0}):d()}))},tags:[componentsTags.video],description:{"zh-CN":"控制是否使用默认播放器模式, 可以为`常规`, `宽屏`, `网页全屏`或`全屏`. 注意: 不能和其他影响定位的功能一同使用, 例如播放器定位. (相关讨论: [#483](https://github.com/the1812/Bilibili-Evolved/issues/483))","en-US":"Set the default player mode. Could be `Normal`, `Widescreen`, `Web fullscreen` or `Fullscreen`.","ja-JP":"デフォルト・プレーヤー・モードが使用するかどうかを制御する、 例えば`常规`、`宽屏`、 `网页全屏`か`全屏`."},options:d,urlInclude:s.allVideoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/disable-scroll-volume.js b/bb-evolved/registry/dist/components/video/player/disable-scroll-volume.js index 618ce3752c..8e46211d57 100644 --- a/bb-evolved/registry/dist/components/video/player/disable-scroll-volume.js +++ b/bb-evolved/registry/dist/components/video/player/disable-scroll-volume.js @@ -1 +1 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/player/disable-scroll-volume"]=o():e["video/player/disable-scroll-volume"]=o()}(globalThis,(()=>(()=>{var e,o,t={132:e=>{function o(e){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}o.keys=()=>[],o.resolve=o,o.id=132,e.exports=o},466:e=>{"use strict";e.exports="在网页全屏 / 全屏模式下, 禁止鼠标滚轮控制播放器的音量. 请注意不能和 `反转滚轮调音量` 一同使用.\n"}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var l=r[e]={exports:{}};return t[e](l,l.exports,n),l.exports}o=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(t,r){if(1&r&&(t=this(t)),8&r)return t;if("object"==typeof t&&t){if(4&r&&t.__esModule)return t;if(16&r&&"function"==typeof t.then)return t}var l=Object.create(null);n.r(l);var i={};e=e||[null,o({}),o([]),o(o)];for(var s=2&r&&t;"object"==typeof s&&!~e.indexOf(s);s=o(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,n.d(l,i),l},n.d=(e,o)=>{for(var t in o)n.o(o,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},n.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";n.d(l,{component:()=>s});const e=coreApis.componentApis.define,o=coreApis.utils,t=coreApis.utils.urls;let r;const i=()=>(0,o.preventEvent)(unsafeWindow,"mousewheel",(()=>["player-mode-full","player-mode-web","player-fullscreen-fix","player-full-win"].some((e=>document.body.classList.contains(e))))),s=(0,e.defineComponentMetadata)({name:"disableScrollVolume",displayName:"禁止滚轮调音量",tags:[componentsTags.video],entry:()=>{r?.(),r=i()},reload:()=>{r?.(),r=i()},unload:()=>{r?.()},urlInclude:t.allVideoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(132);return{...Object.fromEntries(e.keys().map((o=>[o.match(/index\.(.+)\.md$/)[1],e(o)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,466,17)).then((e=>e.default))}})()})})(),l=l.component})())); \ No newline at end of file +!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/player/disable-scroll-volume"]=o():e["video/player/disable-scroll-volume"]=o()}(globalThis,(()=>(()=>{var e,o,t={132:e=>{function o(e){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}o.keys=()=>[],o.resolve=o,o.id=132,e.exports=o},466:e=>{"use strict";e.exports="在网页全屏 / 全屏模式下, 禁止鼠标滚轮控制播放器的音量. 请注意不能和 `反转滚轮调音量` 一同使用.\n"}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var l=r[e]={exports:{}};return t[e](l,l.exports,n),l.exports}o=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(t,r){if(1&r&&(t=this(t)),8&r)return t;if("object"==typeof t&&t){if(4&r&&t.__esModule)return t;if(16&r&&"function"==typeof t.then)return t}var l=Object.create(null);n.r(l);var i={};e=e||[null,o({}),o([]),o(o)];for(var s=2&r&&t;"object"==typeof s&&!~e.indexOf(s);s=o(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>t[e]));return i.default=()=>t,n.d(l,i),l},n.d=(e,o)=>{for(var t in o)n.o(o,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},n.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";n.d(l,{component:()=>s});const e=coreApis.componentApis.define,o=coreApis.utils,t=coreApis.utils.urls;let r;const i=()=>(0,o.preventEvent)(unsafeWindow,"mousewheel",(()=>["player-mode-full","player-mode-web","player-fullscreen-fix","player-full-win"].some((e=>document.body.classList.contains(e))))),s=(0,e.defineComponentMetadata)({name:"disableScrollVolume",displayName:"禁止滚轮调音量",tags:[componentsTags.video],entry:()=>{r?.(),r=i()},reload:()=>{r?.(),r=i()},unload:()=>{r?.()},urlInclude:t.allVideoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(132);return{...Object.fromEntries(e.keys().map((o=>[o.match(/index\.(.+)\.md$/)[1],e(o)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,466,17)).then((e=>e.default))}})()})})(),l=l.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/double-click-fullscreen.js b/bb-evolved/registry/dist/components/video/player/double-click-fullscreen.js index b830cd255c..9918ec12cd 100644 --- a/bb-evolved/registry/dist/components/video/player/double-click-fullscreen.js +++ b/bb-evolved/registry/dist/components/video/player/double-click-fullscreen.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/double-click-fullscreen"]=t():e["video/player/double-click-fullscreen"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={833:e=>{e.exports=coreApis.componentApis.video.playerAgent},391:e=>{e.exports=coreApis.observer},605:e=>{e.exports=coreApis.utils}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var l={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>l[e]=()=>o[e]));return l.default=()=>o,n.d(i,l),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineOptionsMetadata)({preventSingleClick:{displayName:"双击时阻止单击事件",defaultValue:!0}}),r=(0,e.defineComponentMetadata)({name:"doubleClickFullscreen",displayName:"双击全屏",description:"为视频播放器启用双击全屏功能, 请注意不能和 `启用双击控制` 一同使用.",entry:async e=>{let{settings:t}=e;const{videoChange:o}=await Promise.resolve().then(n.t.bind(n,391,23));o((async()=>{const{DoubleClickEvent:e}=await Promise.resolve().then(n.t.bind(n,605,23)),{playerAgent:o}=await Promise.resolve().then(n.t.bind(n,833,23)),r=await o.query.danmakuTipLayer();if(null===r)return void console.error("playerArea not found");const i="double-click-fullscreen";if(!r.classList.contains(i)){r.classList.add(i);const n=o.query.video.container.sync(),l=new e((()=>o.fullscreen()),t.options.preventSingleClick);l.singleClickHandler=()=>o.togglePlay(),l.bind(n)}}))},tags:[componentsTags.video],options:o,urlInclude:t.playerUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/double-click-fullscreen"]=t():e["video/player/double-click-fullscreen"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={833:e=>{e.exports=coreApis.componentApis.video.playerAgent},391:e=>{e.exports=coreApis.observer},605:e=>{e.exports=coreApis.utils}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var l={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>l[e]=()=>o[e]));return l.default=()=>o,n.d(i,l),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.d(i,{component:()=>r});const e=coreApis.componentApis.define,t=coreApis.utils.urls,o=(0,e.defineOptionsMetadata)({preventSingleClick:{displayName:"双击时阻止单击事件",defaultValue:!0}}),r=(0,e.defineComponentMetadata)({name:"doubleClickFullscreen",displayName:"双击全屏",description:"为视频播放器启用双击全屏功能, 请注意不能和 `启用双击控制` 一同使用.",entry:async e=>{let{settings:t}=e;const{videoChange:o}=await Promise.resolve().then(n.t.bind(n,391,23));o((async()=>{const{DoubleClickEvent:e}=await Promise.resolve().then(n.t.bind(n,605,23)),{playerAgent:o}=await Promise.resolve().then(n.t.bind(n,833,23)),r=await o.query.danmakuTipLayer();if(null===r)return void console.error("playerArea not found");const i="double-click-fullscreen";if(!r.classList.contains(i)){r.classList.add(i);const n=o.query.video.container.sync(),l=new e((()=>o.fullscreen()),t.options.preventSingleClick);l.singleClickHandler=()=>o.togglePlay(),l.bind(n)}}))},tags:[componentsTags.video],options:o,urlInclude:t.playerUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/extend-speed.js b/bb-evolved/registry/dist/components/video/player/extend-speed.js index 23375cd1f5..fc80dc871c 100644 --- a/bb-evolved/registry/dist/components/video/player/extend-speed.js +++ b/bb-evolved/registry/dist/components/video/player/extend-speed.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/extend-speed"]=t():e["video/player/extend-speed"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var s in n)e.o(n,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:n[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>Y});const n=coreApis.utils.urls,s=coreApis.settings,i=coreApis.utils.log,o=coreApis.pluginApis.hook,r=e=>"function"==typeof e?{next:e}:e,a=e=>function e(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=!1;const a=[],l=[];let c=!1;const d=()=>{for(;a.length;)a.pop()();l.length=0,c=!0},p=e=>{c||(l.forEach((t=>{t.error?.(e),(0,s.getGeneralSettings)().devMode&&console.error(e)})),d())},u=e=>{c||l.forEach((t=>{try{t.next(e)}catch(e){p(e)}}))},h=()=>{l.forEach((e=>{e.complete?.()})),d()},m=()=>{if(o)return;const e=t?.({next:u,error:p,complete:h});e&&a.push(e),o=!0},b=e=>null==e?null:(l.push(e),()=>{lodash.pull(l,e)}),f=function(){for(var t=arguments.length,n=new Array(t),s=0;s{const t=b(r(e));return(i?.connect??m)(),t},pipe:f,next:u,error:p,complete:h,...i}:e(n[0],{subscribe:b},i||{connect:m,next:u}).pipe(...n.slice(1))};if(n){const e=t?.({subscribe:e=>n.subscribe({error:p,complete:h,...r(e)}),next:u,error:p,complete:h});e&&a.push(e)}return f()}(e),l=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:s}=e;t.forEach((e=>{n(e)})),s()}))},c=(e,t)=>a((n=>{let{next:s}=n;return e.addEventListener(t,s),()=>e.removeEventListener(t,s)})),d=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s{let{next:s}=t;e(...n,s)}))},p=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:s}=e;const i=[...t],o=()=>{const e=i.shift();e||s(),e.subscribe({next:n,complete:()=>{o()}})};o()}))},u=e=>new Promise(((t,n)=>{const s=e.subscribe({next:e=>{t(e),s()},error:()=>{n(),s()},complete:()=>{n(),s()}})})),h=coreApis.componentApis.video.playerAgent,m=coreApis.lifeCycle,b=coreApis.observer,f=coreApis.utils,y=coreApis.utils.sort,v=e=>t=>{let{subscribe:n,next:s,complete:i,error:o}=t;n(lodash.mapValues({next:s,complete:i,error:o},(t=>e(t))))},g=e=>function(){for(var t=arguments.length,n=new Array(t),s=0;se(...n)))},x=e=>{const t=new Set;return e((e=>{lodash.castArray(e).forEach((e=>{t.add(e)}))})),()=>{t.forEach((e=>{e()}))}},S=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,error:s,complete:i}=e;return x((e=>{const o=[];let r=0;e(t.map(((e,a)=>e.pipe(v(g)).subscribe({next:e=>{o[a]=e,o.reduce((e=>e+1),0)===t.length&&n(o.slice())},complete:()=>{r++,r===t.length&&i()},error:s})))),e((()=>{o.length=0,r=0}))}))}))},w=e=>t=>{let{subscribe:n,next:s,error:i}=t;n(lodash.debounce((e=>{try{s(e)}catch(e){i(e)}}),e))},E=e=>t=>{let{subscribe:n,next:s}=t;n((t=>{e(t)&&s(t)}))},$=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,subscribe:s}=e,i=!1;s((e=>{i||t.forEach((e=>n(e))),n(e),i=!0}))}},C=coreApis.pluginApis.data,V=e=>e.split(",").map((e=>e.trim().replace(/^\./,""))).join(","),M=e=>e.split(",").join(" "),A=(e,t)=>{const n=t=>{(0,C.registerAndGetData)(e,t)[0]=t},s=(0,C.getData)(e);if(s.length)return[s[0],n];if(t){const e=t();return n(e),[e,n]}return[void 0,n]},L=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t&&1===e?"倍速":Math.trunc(e)===e?`${e}.0x`:`${e}x`},k=e=>{if("倍速"===e)return 1;const t=/([0-9]*[.]?[0-9]+)x/.exec(e);if(t)return parseFloat(t[1]);throw new Error(`unknown speed text: ${e}`)};function N(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const j=h.playerAgent.provideCustomQuery({video:{speedMenuList:".bilibili-player-video-btn-speed-menu, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".bilibili-player-video-btn-speed-menu-list, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".bilibili-player-video-btn-speed-name, .bpx-player-ctrl-playbackrate-result",speedContainer:".bilibili-player-video-btn-speed, .bpx-player-ctrl-playbackrate",active:".bilibili-player-active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"},bangumi:{speedMenuList:".squirtle-speed-select-list, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".squirtle-select-item, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".squirtle-speed-select-result, .bpx-player-ctrl-playbackrate-result",speedContainer:".squirtle-speed-wrap, .bpx-player-ctrl-playbackrate",active:".active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"}});let O=function(e){return e[e.MIN=0]="MIN",e[e.CURRENT=1]="CURRENT",e[e.MAX=2]="MAX",e}({});const T=(e,t,n)=>{const s=new MutationObserver(n);return s.observe(e,t),s},I=e=>{let[t,n]=e;if(!t)throw new Error("speed container element not found!");if(!n)throw new Error("video element not found!");const s=t.querySelector(j.custom.speedNameBtn.selector),i=t.querySelector(j.custom.speedMenuList.selector);let o,r,l;const c=a(),d=a().pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))}));d.pipe($(void 0),(e=>{let{subscribe:t,next:n}=e;const s=[];return t((e=>{2===s.length&&s.shift(),s.push(e),2===s.length&&n(s.slice())})),()=>{s.length=0}})).subscribe((e=>{let[t,n]=e;r=t,o=n}));const p=e=>{if(e)switch(e.nodeType){case Node.TEXT_NODE:d.next(k(e.data));break;case Node.ELEMENT_NODE:d.next(k(e.innerHTML));break;default:console.warn("The target parameter of updateActiveVideoSpeed must be a Node, and the node type must be one of TEXT_NODE and ELEMENT_NODE")}},u=()=>{l=lodash([...i.children]).map((e=>lodash.attempt((()=>k(e.textContent))))).reject((e=>lodash.isError(e))).sort((0,y.ascendingSort)()).value()};p(s),u();const h=T(i,{childList:!0,attributes:!0},(e=>{const{attributes:t=[],childList:n=[]}=lodash.groupBy(e,"type");n.length&&u(),c.next({attributes:t,childList:n})})),m=T(s,{childList:!0,subtree:!0},(e=>{e.forEach((e=>{const[t]=e.addedNodes;p(t)}))}));return{containerElement:t,videoElement:n,nameBtnElement:s,menuListElement:i,query:e=>(0,f.des)(`./*[(${function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"or";return e.split(",").map(V).flat().map((e=>`contains(@class, "${e}")`)).join(` ${t} `)}(j.custom.speedMenuItem.selector)}) and normalize-space()="${L(e)}"]`,i),dispose:()=>{h.disconnect(),m.disconnect()},activeVideoSpeed$:d,menuListElementMutations$:c,getActiveVideoSpeed:()=>o,getOldActiveVideoSpeed:()=>r,getAvailableSpeedValues:()=>l}},P=e=>{const{videoElement:t,menuListElement:n}=e,s=c(n,"click").pipe((i=e=>{const{innerText:t,innerHTML:n}=e.target,s=t.trim()||n.trim();return lodash.attempt((()=>k(s)))},e=>{let{subscribe:t,next:n}=e;t((e=>{n(i(e))}))}),E((e=>!lodash.isError(e))));var i;const o=a((e=>{let{next:n}=e,s=t;do{s=Object.getPrototypeOf(s)}while(null===s||!Object.prototype.hasOwnProperty.call(s,"playbackRate"));const i=Object.getOwnPropertyDescriptor(s,"playbackRate");return Object.defineProperty(s,"playbackRate",{set(e){i.set.call(this,e),n(e)}}),()=>{Object.defineProperty(s,"playbackRate",i)}})),r=s.pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))})),l=o.pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))})),d=a((e=>{let{next:t}=e;const n=S(r,l);return n.subscribe((e=>{let[n,s]=e;n===s&&t(s)})),()=>n.complete()})).pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))}));let p;l.pipe(w(200),$(void 0),(e=>{let{subscribe:t,next:n}=e;const s=[];return t((e=>{2===s.length&&s.shift(),s.push(e),2===s.length&&n(s.slice())})),()=>{s.length=0}})).subscribe((e=>{let[t]=e;p=t}));const u={menuListElementClickSpeed$:s,menuListElementClickSpeedChange$:r,playbackRate$:o,playbackRateChange$:l,videoSpeedChange$:d};return{...e,...u,dispose:()=>{lodash.values(u).forEach((e=>{e.complete()})),e.dispose()},getOldPlaybackRate:()=>p}},[R]=A("speed.NoSuchSpeedMenuItemElementError",(()=>class extends Error{constructor(e){const t=lodash.attempt((()=>L(e))),n=lodash.isError(t)?String(e):String(t);super(`There is no such speed menu item as ${n}`),this.speed=e,N(this,"formattedSpeed",void 0),this.formattedSpeed=n}})),q=e=>{const{query:t,videoElement:n,videoSpeedChange$:s,getOldActiveVideoSpeed:i,getAvailableSpeedValues:o,getActiveVideoSpeed:r}=e,a=async function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;const o=t(e);if(null==o)throw new R(e);o.click();const r=t=>{if((t??n.playbackRate)!==e)throw new Error(`failed to set ${L(e)} video speed.`)},a=[u(s.pipe(w(Math.max(0,i||0))))];i>0&&a.push(new Promise(((e,t)=>setTimeout((()=>setTimeout(t,i)))))),await Promise.all(a).then(r).catch(r)},l=async()=>{await a(1)},c=async(e,t)=>{if(lodash.isNil(e)&&(e=!1),"boolean"==typeof e)e||1===n.playbackRate?await a(i()):await l();else{const n=o();switch(t){case O.MIN:await a(n[e]);break;case O.MAX:await a(n[n.length-1+e]);break;case O.CURRENT:default:{const t=n.indexOf(r());if(-1===t)throw new Error("Unexpected Error: The available speed values do not include the active speed value, this should be a bug, please report the issue on github!");await a(n[t+e])}}}},d=async e=>{try{await c(e,O.CURRENT)}catch(e){if(console.warn(e),!(e instanceof R))throw e}};return Object.assign(e,{set:a,force:async e=>{n.playbackRate=e},reset:l,toggle:c,step:d,increase:async()=>{await d(1)},decrease:async()=>{await d(-1)}})},U=()=>A("speed.speedContext"),B=()=>A("speed.buildArguments$",(()=>{return a().pipe((e=e=>e.settings.enabled,t=>{let{subscribe:n,next:s}=t;const i=new Set;return n((t=>{const n=i.size;e(t)?i.add(t):i.delete(t),i.size!==n&&s([...i])})),()=>{i.clear()}}));var e})),z=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:lodash.identity;const[t,n]=U();if(t)return t;let s,i;const[o]=A("lifeCycleComponentLoaded$",(()=>c(unsafeWindow,m.LifeCycleEventTypes.ComponentsLoaded))),[r]=B(),[h]=A("speed.videoChange$",(()=>d(b.videoChange).pipe(E((e=>{let{aid:t,cid:n}=e;return t||n}))))),[f]=A("speed.speedContext$",(()=>a((t=>{let{next:n}=t;return S(h,p(l([]),r),o).subscribe((t=>{let[o,r]=t;const[a]=U();a?.dispose(),i?.("context update");const l=new Promise(((e,t)=>{s=e,i=t}));Promise.all([Promise.all([j.custom.speedContainer(),j.query.video.element()]).then(s),l]).then((e=>{let[,t]=e;return t})).then(I).then(P).then(q).then((e=>Object.assign(e,{videoIdObject:o,speedContext$:f,videoChange$:h}))).then(e(r)).then(n).catch((e=>console.error(e)))}))}))));return f.subscribe(n),u(f)};function H(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const D=[.5,.75,1,1.25,1.5,2],X=.0625;class W{constructor(e,t){this.entryContext=e,this.enabled$=t,H(this,"speedContext",void 0),H(this,"settings",void 0),H(this,"coreApis",void 0),H(this,"metadata",void 0),H(this,"options",void 0),H(this,"getVideoIdObject",void 0),H(this,"getAvailableSpeedValues",void 0),H(this,"getOldActiveVideoSpeed",void 0),H(this,"forceVideoSpeed",void 0),H(this,"getVideoSpeed",void 0),H(this,"setVideoSpeed",void 0),H(this,"resetVideoSpeed",void 0),H(this,"toggleVideoSpeed",void 0),H(this,"increaseVideoSpeed",void 0),H(this,"decreaseVideoSpeed",void 0),lodash.assign(this,e,{options:e.settings.options}),this.migrate?.(),lodash.assign(this,lodash.mapValues(W.contextMap,(e=>async function(){const t=await z(),n=lodash.get(t,e),s=lodash.isFunction(n)?await n(...arguments):n;return s})))}}H(W,"create",void 0),H(W,"contextMap",{getVideoIdObject:"videoIdObject",getAvailableSpeedValues:"getAvailableSpeedValues",getOldActiveVideoSpeed:"getOldActiveVideoSpeed",getVideoSpeed:"videoElement.playbackRate",setVideoSpeed:"set",forceVideoSpeed:"force",resetVideoSpeed:"reset",toggleVideoSpeed:"toggle",increaseVideoSpeed:"increase",decreaseVideoSpeed:"decrease"}),z((e=>t=>{const n=lodash.omit(t,"dispose"),i=e.map((e=>e.getSpeedContextMixin(n)));if(i.length>1){const e=lodash.intersection(...i.map(Object.keys));if(e.length)throw new Error(`In the registered speed component, there is an implementation of getSpeedContextMixin that causes the speed context to be mixed in ambiguous.\nThe repeated key names are ${e.join(", ")}`)}lodash.assign(n,...i);const o=[];return e.forEach((e=>{const t=lodash(e.settings.options).mapValues(((t,n)=>d(s.addComponentListener,`${e.metadata.name}.${n}`).pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))})))).mapKeys(((e,t)=>`${t}$`)).value();o.push(...lodash.values(t)),e.options=new Proxy(e.settings.options,{get:(e,n,s)=>lodash.isSymbol(n)?Reflect.get(e,n,s):!Reflect.has(e,n)&&n.endsWith("$")?t[n]:Reflect.get(e,n,s)}),e.speedContext=n,e.onSpeedContext(n),e.settings.enabled&&lodash(t).entries().forEach((t=>{let[n,s]=t;s.next(e.settings.options[n.slice(0,-1)])}))})),{...n,dispose:()=>{o.forEach((e=>e.complete())),t.dispose()}}})),W.create=function(e){const t=a().pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))}));return{...e,entry:n=>{const s=lodash.attempt((()=>new this(n,t)));if(s instanceof Error)return(0,i.logError)(s),null;const[r]=B();return t.subscribe((()=>{r.next(s)})),t.next(!0),(0,o.getHook)(`speed.component.${e.name}`).after(s),s},reload:()=>t.next(!0),unload:()=>t.next(!1)}};const F=coreApis.style,_=coreApis.toast,G=e=>{let t,{style:n,name:s,container:i}=e;const o=()=>t?.remove();return{next:e=>{o();const r="function"==typeof n?n(e):n;r&&(t=(0,F.addStyle)(r,s,i))},complete:o}};function J(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const K=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=document.createElement("div");n.innerHTML=e;const s={},i=n.children.item(0),o=e=>{t&&(e.id=`scoped-element-${Math.random().toString(36).replace(/[^a-z0-9]+/g,"")}`);const n=e.getAttribute("data-ref");n&&(s[lodash.camelCase(n)]=e);for(let t=0;te=>{let{subscribe:t,next:n}=e;t((e=>{D.includes(e)&&n(e)}))})),this.enabled$.subscribe(G({name:"fix-after-element",style:e=>e&&".bpx-player-ctrl-playbackrate-menu:after { display: none; }"}))}addSpeedValue(e){this.options.extendSpeedList=lodash.sortedUniq(this.options.extendSpeedList.concat(e).sort((0,y.ascendingSort)()))}removeSpeedValue(e){this.options.extendSpeedList=lodash.without(this.options.extendSpeedList,e)}createInputElement(){const{input:e,root:t,icon:n}=K(`\n
  • \n \n \n
  • \n `),s=()=>{const t=this.speedContext.getAvailableSpeedValues().slice(-1)[0]+.5,n=lodash.toString(t>16?null:t);e.value=n,e.min=n};this.options.extendSpeedList$.pipe(v(g)).subscribe(s);const o=(0,F.addStyle)(`\n #${e.id} {\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n background: transparent;\n outline: none;\n width: 100%;\n border: none;\n text-align: center;\n cursor: text;\n }\n /* https://stackoverflow.com/a/4298216 */\n /* Chrome */\n #${e.id}::-webkit-outer-spin-button,\n #${e.id}::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n #${e.id}[type=number] {\n -moz-appearance:textfield;\n }\n `),r=lodash.over(c(e,"keydown").pipe(w(200)).subscribe((t=>{let{key:n}=t;if("Enter"!==n)return;const s=parseFloat(e.value);try{if(!lodash.isFinite(s))throw new Error("无效的倍数值");if(s16)throw new Error("倍数值太大了");if(this.speedContext.getAvailableSpeedValues().includes(s))throw new Error("不能重复添加已有的倍数值");this.addSpeedValue(s)}catch(t){(0,i.logError)(String(t),5e3),e.focus(),e.select()}})),c(t,"mouseenter").subscribe((()=>{e.style.display="inline",n.style.display="none",s(),setTimeout((()=>e.focus()))})),c(t,"mouseleave").subscribe((()=>{e.style.display="none",n.style.display="inline"})),(()=>t.remove()),(()=>o.remove()));return{node:t,destroy:r}}createCustomSpeedMenuItemElement(e){const{closeBtn:t,root:n}=K(`\n
  • \n ${L(e)}\n \n
  • \n `),s=(0,F.addStyle)(`\n .extend-speed-item [data-ref="close-btn"] {\n color: inherit;\n opacity: 0.5;\n display: none;\n position: absolute;\n right: 4px;\n }\n :is(${j.custom.speedMenuItem.selector}):not(${j.custom.active.selector}):hover [data-ref="close-btn"] {\n display: inline;\n }\n .extend-speed-item [data-ref="close-btn"]:hover {\n opacity: 1;\n transition: all .3s;\n }\n `),i=lodash.over(c(t,"click").subscribe((()=>{this.removeSpeedValue(e)})),(()=>n.remove()),(()=>s.remove()));return{tag:e,node:n,destroy:i}}migrate(){const{options:e}=this.settings,{options:t}=(0,s.getComponentSettings)("rememberVideoSpeed");t.extendList&&(e.extendSpeedList=Array.from(t.extendList),delete t.extendList,delete t.extend,_.Toast.success("从「倍速记忆」组件迁移旧配置成功","【扩展倍速】旧配置迁移完成",8e3))}getSpeedContextMixin(e){let{menuListElement:t}=e;return{query:e=>(0,f.des)(`./*[(${Q.speedMenuItemClassName.split(",").map((e=>`contains(@class, "${e}")`)).join(" or ")}) and not(contains(@class, "extend-speed-input")) and normalize-space()="${L(e)}"]`,t)}}onSpeedContext(e){let{menuListElementClickSpeedChange$:t,playbackRate$:n}=e;this.options.extendSpeedList$.subscribe({next:e=>this.patch(((e,t)=>{let n=0,s=e.length,i=0,o=t.length;for(;ne.tag)),Array.from(e))),complete:()=>{this.unpatch()}}),this.options.maxMenuHeight$.subscribe(G({name:"extend-video-speed-style",style:e=>`\n ${j.custom.speedMenuList.selector} {\n display: flex !important; /* 防止3.X样式覆盖 */\n flex-direction: column;\n overflow-y: auto;\n max-height: ${e}px;\n visibility: hidden;\n }\n /* 修复2.X倍速列表显示问题 */\n :is(${j.custom.show.selector}) :is(${j.custom.speedMenuList.selector}){\n visibility: visible;\n }\n /* 修复番剧区的列表显示问题 */\n :is(${j.custom.speedMenuList.selector})[style*="block"] {\n visibility: visible;\n }`})),this.options.hideScrollbar$.subscribe(G({name:"extend-video-speed-no-scrollbar-style",style:e=>e&&`\n ${j.custom.speedMenuList.selector} {\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n }\n :is(${j.custom.speedMenuList.selector})::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n }`})),this.options.hideRemoveBtn$.subscribe(G({name:"extend-video-speed-no-remove-btn-style",style:e=>e&&`\n .extend-speed-item [data-ref="close-btn"] {\n display: none !important;\n }\n :is(${j.custom.speedMenuItem.selector}):not(${j.custom.active.selector}):hover [data-ref="close-btn"] {\n display: none !important;\n }`})),this.options.hideAddBtn$.subscribe(G({name:"extend-video-speed-no-add-btn-style",style:e=>e&&"\n .extend-speed-input {\n display: none !important;\n }"}));let s=1;n.pipe(E((e=>D.includes(e)))).subscribe((e=>{s=e})),t.subscribe({next:e=>{this.forceVideoSpeedWithUpdateStyle(e),this.currentSpeedValue=e},complete:()=>{this.setVideoSpeed(s),this.forceVideoSpeedWithUpdateStyle(s)}}),this.currentSpeedValue&&requestIdleCallback((()=>{this.setVideoSpeed(this.currentSpeedValue,1e3)}))}async forceVideoSpeedWithUpdateStyle(e){await this.forceVideoSpeed(e),setTimeout((()=>this.forceUpdateStyle(e)))}patch(e){const[t,n,s]=e,{menuListElement:i}=this.speedContext;if(this.inputElement||(this.inputElement=this.createInputElement(),i.prepend(this.inputElement.node)),0===n&&0===s.length)return;const o=s.map((e=>this.createCustomSpeedMenuItemElement(e)));this.elementMap.splice(t,n,...o).forEach((e=>{e.destroy()})),(this.elementMap[t-1]||this.inputElement).node.after(...o.map((e=>e.node)).reverse()),i.querySelectorAll(`:is(${j.custom.speedMenuItem.selector}):not(#${this.inputElement.node.id})`).forEach((e=>{e.style.order=(1e4*(16-k(e.innerHTML))).toString()})),this.unpatch=()=>{this.inputElement.destroy(),this.inputElement=void 0,this.elementMap.forEach((e=>e.destroy())),this.elementMap.length=0}}forceUpdateStyle(e){const{menuListElement:t,containerElement:n,nameBtnElement:s,query:i}=this.speedContext;for(const e of(0,f.dea)(`./*[(${V(Q.speedMenuItemClassName).split(",").map((e=>`contains(@class, "${e}")`)).join(" or ")}) and (${V(Q.activeClassName).split(",").map((e=>`contains(@class, "${e}")`)).join(" or ")})]`,t))e.classList.remove(...Q.activeClassName.split(","));i(e).classList.add(...Q.activeClassName.split(",")),n.classList.remove(...Q.showClassName.split(",")),s.innerText=L(e,!0)}}const Y=Q.create({name:"extendVideoSpeed",displayName:"扩展倍速",author:{name:"JLoeve",link:"https://github.com/LonelySteve"},description:{"zh-CN":"\n\n> 扩展视频播放器的倍速菜单项,可用于突破原有播放倍数的上限或下限.\n\n### 🔧 **选项**\n\n- `隐藏滚动条`:如果添加的倍速过多,倍速菜单将出现滚动条,在 Windows 下,若没有安装并启用「细滚动条」组件会显得比较挤,建议开启此选项隐藏滚动条.\n\n- `隐藏移除图标`:如果认为倍速右侧的移除倍速图标有些突兀,可以开启此选项隐藏.\n\n- `隐藏新增图标`:如果认为顶部的新增倍速图标有些突兀,可以开启此选项隐藏.\n\n### **新增倍速**\n\n开启组件后,在默认情况下,播放器的倍速菜单就会新增 2.5x 和 3.0x 两个倍速选项.\n\n如果需要添加更多倍速,只需将鼠标指针移到菜单顶部的新增图标上,图标将变成一个输入框,根据需要键入新的倍速值,或通过滚轮增减数值,或直接使用推荐的数值,回车确认即可.\n\n新增倍速的范围要求在 0.0625 到 16 之间,数量则不受限制.\n\n**不推荐设置超高倍速(>3.0x)**:原生播放器内部没有针对超高倍速进行优化,可能导致音画不同步、播放卡顿、声音嘈杂/消失等一系列问题.\n\n### **删除倍速**\n\n将鼠标指针移到**自定义**的倍速菜单项上,其右侧将会显示一个移除图标,单击即可删除相应的倍速.\n\n"},tags:[componentsTags.video],urlInclude:n.playerUrls,options:{maxMenuHeight:{displayName:"倍速菜单最大高度",defaultValue:360,hidden:!0,validator:e=>Math.max(parseInt(e),360)||360},hideScrollbar:{displayName:"隐藏滚动条",defaultValue:!1},hideRemoveBtn:{displayName:"隐藏移除图标",defaultValue:!1},hideAddBtn:{displayName:"隐藏新增图标",defaultValue:!1},extendSpeedList:{displayName:"扩展倍速列表",defaultValue:[2.5,3],hidden:!0}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return t=t.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/extend-speed"]=t():e["video/player/extend-speed"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var s in n)e.o(n,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:n[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>Y});const n=coreApis.utils.urls,s=coreApis.settings,i=coreApis.utils.log,o=coreApis.pluginApis.hook,r=e=>"function"==typeof e?{next:e}:e,a=e=>function e(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=!1;const a=[],l=[];let c=!1;const d=()=>{for(;a.length;)a.pop()();l.length=0,c=!0},p=e=>{c||(l.forEach((t=>{t.error?.(e),(0,s.getGeneralSettings)().devMode&&console.error(e)})),d())},u=e=>{c||l.forEach((t=>{try{t.next(e)}catch(e){p(e)}}))},h=()=>{l.forEach((e=>{e.complete?.()})),d()},m=()=>{if(o)return;const e=t?.({next:u,error:p,complete:h});e&&a.push(e),o=!0},b=e=>null==e?null:(l.push(e),()=>{lodash.pull(l,e)}),y=function(){for(var t=arguments.length,n=new Array(t),s=0;s{const t=b(r(e));return(i?.connect??m)(),t},pipe:y,next:u,error:p,complete:h,...i}:e(n[0],{subscribe:b},i||{connect:m,next:u}).pipe(...n.slice(1))};if(n){const e=t?.({subscribe:e=>n.subscribe({error:p,complete:h,...r(e)}),next:u,error:p,complete:h});e&&a.push(e)}return y()}(e),l=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:s}=e;t.forEach((e=>{n(e)})),s()}))},c=(e,t)=>a((n=>{let{next:s}=n;return e.addEventListener(t,s),()=>e.removeEventListener(t,s)})),d=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s{let{next:s}=t;e(...n,s)}))},p=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:s}=e;const i=[...t],o=()=>{const e=i.shift();e||s(),e.subscribe({next:n,complete:()=>{o()}})};o()}))},u=e=>new Promise(((t,n)=>{const s=e.subscribe({next:e=>{t(e),s()},error:()=>{n(),s()},complete:()=>{n(),s()}})})),h=coreApis.componentApis.video.playerAgent,m=coreApis.lifeCycle,b=coreApis.observer,y=coreApis.utils,f=coreApis.utils.sort,v=e=>t=>{let{subscribe:n,next:s,complete:i,error:o}=t;n(lodash.mapValues({next:s,complete:i,error:o},(t=>e(t))))},g=e=>function(){for(var t=arguments.length,n=new Array(t),s=0;se(...n)))},x=e=>{const t=new Set;return e((e=>{lodash.castArray(e).forEach((e=>{t.add(e)}))})),()=>{t.forEach((e=>{e()}))}},S=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,error:s,complete:i}=e;return x((e=>{const o=[];let r=0;e(t.map(((e,a)=>e.pipe(v(g)).subscribe({next:e=>{o[a]=e,o.reduce((e=>e+1),0)===t.length&&n(o.slice())},complete:()=>{r++,r===t.length&&i()},error:s})))),e((()=>{o.length=0,r=0}))}))}))},w=e=>t=>{let{subscribe:n,next:s,error:i}=t;n(lodash.debounce((e=>{try{s(e)}catch(e){i(e)}}),e))},E=e=>t=>{let{subscribe:n,next:s}=t;n((t=>{e(t)&&s(t)}))},$=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,subscribe:s}=e,i=!1;s((e=>{i||t.forEach((e=>n(e))),n(e),i=!0}))}},C=coreApis.pluginApis.data,V=e=>e.split(",").map((e=>e.trim().replace(/^\./,""))).join(","),M=e=>e.split(",").join(" "),A=(e,t)=>{const n=t=>{(0,C.registerAndGetData)(e,t)[0]=t},s=(0,C.getData)(e);if(s.length)return[s[0],n];if(t){const e=t();return n(e),[e,n]}return[void 0,n]},L=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t&&1===e?"倍速":Math.trunc(e)===e?`${e}.0x`:`${e}x`},k=e=>{if("倍速"===e)return 1;const t=/([0-9]*[.]?[0-9]+)x/.exec(e);if(t)return parseFloat(t[1]);throw new Error(`unknown speed text: ${e}`)};function N(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const j=h.playerAgent.provideCustomQuery({video:{speedMenuList:".bilibili-player-video-btn-speed-menu, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".bilibili-player-video-btn-speed-menu-list, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".bilibili-player-video-btn-speed-name, .bpx-player-ctrl-playbackrate-result",speedContainer:".bilibili-player-video-btn-speed, .bpx-player-ctrl-playbackrate",active:".bilibili-player-active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"},bangumi:{speedMenuList:".squirtle-speed-select-list, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".squirtle-select-item, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".squirtle-speed-select-result, .bpx-player-ctrl-playbackrate-result",speedContainer:".squirtle-speed-wrap, .bpx-player-ctrl-playbackrate",active:".active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"}});let O=function(e){return e[e.MIN=0]="MIN",e[e.CURRENT=1]="CURRENT",e[e.MAX=2]="MAX",e}({});const T=(e,t,n)=>{const s=new MutationObserver(n);return s.observe(e,t),s},I=e=>{let[t,n]=e;if(!t)throw new Error("speed container element not found!");if(!n)throw new Error("video element not found!");const s=t.querySelector(j.custom.speedNameBtn.selector),i=t.querySelector(j.custom.speedMenuList.selector);let o,r,l;const c=a(),d=a().pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))}));d.pipe($(void 0),(e=>{let{subscribe:t,next:n}=e;const s=[];return t((e=>{2===s.length&&s.shift(),s.push(e),2===s.length&&n(s.slice())})),()=>{s.length=0}})).subscribe((e=>{let[t,n]=e;r=t,o=n}));const p=e=>{if(e)switch(e.nodeType){case Node.TEXT_NODE:d.next(k(e.data));break;case Node.ELEMENT_NODE:d.next(k(e.innerHTML));break;default:console.warn("The target parameter of updateActiveVideoSpeed must be a Node, and the node type must be one of TEXT_NODE and ELEMENT_NODE")}},u=()=>{l=lodash([...i.children]).map((e=>lodash.attempt((()=>k(e.textContent))))).reject((e=>lodash.isError(e))).sort((0,f.ascendingSort)()).value()};p(s),u();const h=T(i,{childList:!0,attributes:!0},(e=>{const{attributes:t=[],childList:n=[]}=lodash.groupBy(e,"type");n.length&&u(),c.next({attributes:t,childList:n})})),m=T(s,{childList:!0,subtree:!0},(e=>{e.forEach((e=>{const[t]=e.addedNodes;p(t)}))}));return{containerElement:t,videoElement:n,nameBtnElement:s,menuListElement:i,query:e=>(0,y.des)(`./*[(${function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"or";return e.split(",").map(V).flat().map((e=>`contains(@class, "${e}")`)).join(` ${t} `)}(j.custom.speedMenuItem.selector)}) and normalize-space()="${L(e)}"]`,i),dispose:()=>{h.disconnect(),m.disconnect()},activeVideoSpeed$:d,menuListElementMutations$:c,getActiveVideoSpeed:()=>o,getOldActiveVideoSpeed:()=>r,getAvailableSpeedValues:()=>l}},P=e=>{const{videoElement:t,menuListElement:n}=e,s=c(n,"click").pipe((i=e=>{const{innerText:t,innerHTML:n}=e.target,s=t.trim()||n.trim();return lodash.attempt((()=>k(s)))},e=>{let{subscribe:t,next:n}=e;t((e=>{n(i(e))}))}),E((e=>!lodash.isError(e))));var i;const o=a((e=>{let{next:n}=e,s=t;do{s=Object.getPrototypeOf(s)}while(null===s||!Object.prototype.hasOwnProperty.call(s,"playbackRate"));const i=Object.getOwnPropertyDescriptor(s,"playbackRate");return Object.defineProperty(s,"playbackRate",{set(e){i.set.call(this,e),n(e)}}),()=>{Object.defineProperty(s,"playbackRate",i)}})),r=s.pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))})),l=o.pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))})),d=a((e=>{let{next:t}=e;const n=S(r,l);return n.subscribe((e=>{let[n,s]=e;n===s&&t(s)})),()=>n.complete()})).pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))}));let p;l.pipe(w(200),$(void 0),(e=>{let{subscribe:t,next:n}=e;const s=[];return t((e=>{2===s.length&&s.shift(),s.push(e),2===s.length&&n(s.slice())})),()=>{s.length=0}})).subscribe((e=>{let[t]=e;p=t}));const u={menuListElementClickSpeed$:s,menuListElementClickSpeedChange$:r,playbackRate$:o,playbackRateChange$:l,videoSpeedChange$:d};return{...e,...u,dispose:()=>{lodash.values(u).forEach((e=>{e.complete()})),e.dispose()},getOldPlaybackRate:()=>p}},[R]=A("speed.NoSuchSpeedMenuItemElementError",(()=>class extends Error{constructor(e){const t=lodash.attempt((()=>L(e))),n=lodash.isError(t)?String(e):String(t);super(`There is no such speed menu item as ${n}`),this.speed=e,N(this,"formattedSpeed",void 0),this.formattedSpeed=n}})),q=e=>{const{query:t,videoElement:n,videoSpeedChange$:s,getOldActiveVideoSpeed:i,getAvailableSpeedValues:o,getActiveVideoSpeed:r}=e,a=async function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;const o=t(e);if(null==o)throw new R(e);o.click();const r=t=>{if((t??n.playbackRate)!==e)throw new Error(`failed to set ${L(e)} video speed.`)},a=[u(s.pipe(w(Math.max(0,i||0))))];i>0&&a.push(new Promise(((e,t)=>setTimeout((()=>setTimeout(t,i)))))),await Promise.all(a).then(r).catch(r)},l=async()=>{await a(1)},c=async(e,t)=>{if(lodash.isNil(e)&&(e=!1),"boolean"==typeof e)e||1===n.playbackRate?await a(i()):await l();else{const n=o();switch(t){case O.MIN:await a(n[e]);break;case O.MAX:await a(n[n.length-1+e]);break;case O.CURRENT:default:{const t=n.indexOf(r());if(-1===t)throw new Error("Unexpected Error: The available speed values do not include the active speed value, this should be a bug, please report the issue on github!");await a(n[t+e])}}}},d=async e=>{try{await c(e,O.CURRENT)}catch(e){if(console.warn(e),!(e instanceof R))throw e}};return Object.assign(e,{set:a,force:async e=>{n.playbackRate=e},reset:l,toggle:c,step:d,increase:async()=>{await d(1)},decrease:async()=>{await d(-1)}})},U=()=>A("speed.speedContext"),B=()=>A("speed.buildArguments$",(()=>{return a().pipe((e=e=>e.settings.enabled,t=>{let{subscribe:n,next:s}=t;const i=new Set;return n((t=>{const n=i.size;e(t)?i.add(t):i.delete(t),i.size!==n&&s([...i])})),()=>{i.clear()}}));var e})),z=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:lodash.identity;const[t,n]=U();if(t)return t;let s,i;const[o]=A("lifeCycleComponentLoaded$",(()=>c(unsafeWindow,m.LifeCycleEventTypes.ComponentsLoaded))),[r]=B(),[h]=A("speed.videoChange$",(()=>d(b.videoChange).pipe(E((e=>{let{aid:t,cid:n}=e;return t||n}))))),[y]=A("speed.speedContext$",(()=>a((t=>{let{next:n}=t;return S(h,p(l([]),r),o).subscribe((t=>{let[o,r]=t;const[a]=U();a?.dispose(),i?.("context update");const l=new Promise(((e,t)=>{s=e,i=t}));Promise.all([Promise.all([j.custom.speedContainer(),j.query.video.element()]).then(s),l]).then((e=>{let[,t]=e;return t})).then(I).then(P).then(q).then((e=>Object.assign(e,{videoIdObject:o,speedContext$:y,videoChange$:h}))).then(e(r)).then(n).catch((e=>console.error(e)))}))}))));return y.subscribe(n),u(y)};function H(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const D=[.5,.75,1,1.25,1.5,2],X=.0625;class W{constructor(e,t){this.entryContext=e,this.enabled$=t,H(this,"speedContext",void 0),H(this,"settings",void 0),H(this,"coreApis",void 0),H(this,"metadata",void 0),H(this,"options",void 0),H(this,"getVideoIdObject",void 0),H(this,"getAvailableSpeedValues",void 0),H(this,"getOldActiveVideoSpeed",void 0),H(this,"forceVideoSpeed",void 0),H(this,"getVideoSpeed",void 0),H(this,"setVideoSpeed",void 0),H(this,"resetVideoSpeed",void 0),H(this,"toggleVideoSpeed",void 0),H(this,"increaseVideoSpeed",void 0),H(this,"decreaseVideoSpeed",void 0),lodash.assign(this,e,{options:e.settings.options}),this.migrate?.(),lodash.assign(this,lodash.mapValues(W.contextMap,(e=>async function(){const t=await z(),n=lodash.get(t,e),s=lodash.isFunction(n)?await n(...arguments):n;return s})))}}H(W,"create",void 0),H(W,"contextMap",{getVideoIdObject:"videoIdObject",getAvailableSpeedValues:"getAvailableSpeedValues",getOldActiveVideoSpeed:"getOldActiveVideoSpeed",getVideoSpeed:"videoElement.playbackRate",setVideoSpeed:"set",forceVideoSpeed:"force",resetVideoSpeed:"reset",toggleVideoSpeed:"toggle",increaseVideoSpeed:"increase",decreaseVideoSpeed:"decrease"}),z((e=>t=>{const n=lodash.omit(t,"dispose"),i=e.map((e=>e.getSpeedContextMixin(n)));if(i.length>1){const e=lodash.intersection(...i.map(Object.keys));if(e.length)throw new Error(`In the registered speed component, there is an implementation of getSpeedContextMixin that causes the speed context to be mixed in ambiguous.\nThe repeated key names are ${e.join(", ")}`)}lodash.assign(n,...i);const o=[];return e.forEach((e=>{const t=lodash(e.settings.options).mapValues(((t,n)=>d(s.addComponentListener,`${e.metadata.name}.${n}`).pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))})))).mapKeys(((e,t)=>`${t}$`)).value();o.push(...lodash.values(t)),e.options=new Proxy(e.settings.options,{get:(e,n,s)=>lodash.isSymbol(n)?Reflect.get(e,n,s):!Reflect.has(e,n)&&n.endsWith("$")?t[n]:Reflect.get(e,n,s)}),e.speedContext=n,e.onSpeedContext(n),e.settings.enabled&&lodash(t).entries().forEach((t=>{let[n,s]=t;s.next(e.settings.options[n.slice(0,-1)])}))})),{...n,dispose:()=>{o.forEach((e=>e.complete())),t.dispose()}}})),W.create=function(e){const t=a().pipe((e=>{let t,{subscribe:n,next:s}=e,i=!0;n((e=>{(i||t!==e)&&(i=!1,t=e,s(e))}))}));return{...e,entry:n=>{const s=lodash.attempt((()=>new this(n,t)));if(s instanceof Error)return(0,i.logError)(s),null;const[r]=B();return t.subscribe((()=>{r.next(s)})),t.next(!0),(0,o.getHook)(`speed.component.${e.name}`).after(s),s},reload:()=>t.next(!0),unload:()=>t.next(!1)}};const F=coreApis.style,_=coreApis.toast,G=e=>{let t,{style:n,name:s,container:i}=e;const o=()=>t?.remove();return{next:e=>{o();const r="function"==typeof n?n(e):n;r&&(t=(0,F.addStyle)(r,s,i))},complete:o}};function J(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const K=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=document.createElement("div");n.innerHTML=e;const s={},i=n.children.item(0),o=e=>{t&&(e.id=`scoped-element-${Math.random().toString(36).replace(/[^a-z0-9]+/g,"")}`);const n=e.getAttribute("data-ref");n&&(s[lodash.camelCase(n)]=e);for(let t=0;te=>{let{subscribe:t,next:n}=e;t((e=>{D.includes(e)&&n(e)}))})),this.enabled$.subscribe(G({name:"fix-after-element",style:e=>e&&".bpx-player-ctrl-playbackrate-menu:after { display: none; }"}))}addSpeedValue(e){this.options.extendSpeedList=lodash.sortedUniq(this.options.extendSpeedList.concat(e).sort((0,f.ascendingSort)()))}removeSpeedValue(e){this.options.extendSpeedList=lodash.without(this.options.extendSpeedList,e)}createInputElement(){const{input:e,root:t,icon:n}=K(`\n
  • \n \n \n
  • \n `),s=()=>{const t=this.speedContext.getAvailableSpeedValues().slice(-1)[0]+.5,n=lodash.toString(t>16?null:t);e.value=n,e.min=n};this.options.extendSpeedList$.pipe(v(g)).subscribe(s);const o=(0,F.addStyle)(`\n #${e.id} {\n font-size: inherit;\n color: inherit;\n line-height: inherit;\n background: transparent;\n outline: none;\n width: 100%;\n border: none;\n text-align: center;\n cursor: text;\n }\n /* https://stackoverflow.com/a/4298216 */\n /* Chrome */\n #${e.id}::-webkit-outer-spin-button,\n #${e.id}::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n /* Firefox */\n #${e.id}[type=number] {\n -moz-appearance:textfield;\n }\n `),r=lodash.over(c(e,"keydown").pipe(w(200)).subscribe((t=>{let{key:n}=t;if("Enter"!==n)return;const s=parseFloat(e.value);try{if(!lodash.isFinite(s))throw new Error("无效的倍数值");if(s16)throw new Error("倍数值太大了");if(this.speedContext.getAvailableSpeedValues().includes(s))throw new Error("不能重复添加已有的倍数值");this.addSpeedValue(s)}catch(t){(0,i.logError)(String(t),5e3),e.focus(),e.select()}})),c(t,"mouseenter").subscribe((()=>{e.style.display="inline",n.style.display="none",s(),setTimeout((()=>e.focus()))})),c(t,"mouseleave").subscribe((()=>{e.style.display="none",n.style.display="inline"})),(()=>t.remove()),(()=>o.remove()));return{node:t,destroy:r}}createCustomSpeedMenuItemElement(e){const{closeBtn:t,root:n}=K(`\n
  • \n ${L(e)}\n \n
  • \n `),s=(0,F.addStyle)(`\n .extend-speed-item [data-ref="close-btn"] {\n color: inherit;\n opacity: 0.5;\n display: none;\n position: absolute;\n right: 4px;\n }\n :is(${j.custom.speedMenuItem.selector}):not(${j.custom.active.selector}):hover [data-ref="close-btn"] {\n display: inline;\n }\n .extend-speed-item [data-ref="close-btn"]:hover {\n opacity: 1;\n transition: all .3s;\n }\n `),i=lodash.over(c(t,"click").subscribe((()=>{this.removeSpeedValue(e)})),(()=>n.remove()),(()=>s.remove()));return{tag:e,node:n,destroy:i}}migrate(){const{options:e}=this.settings,{options:t}=(0,s.getComponentSettings)("rememberVideoSpeed");t.extendList&&(e.extendSpeedList=Array.from(t.extendList),delete t.extendList,delete t.extend,_.Toast.success("从「倍速记忆」组件迁移旧配置成功","【扩展倍速】旧配置迁移完成",8e3))}getSpeedContextMixin(e){let{menuListElement:t}=e;return{query:e=>(0,y.des)(`./*[(${Q.speedMenuItemClassName.split(",").map((e=>`contains(@class, "${e}")`)).join(" or ")}) and not(contains(@class, "extend-speed-input")) and normalize-space()="${L(e)}"]`,t)}}onSpeedContext(e){let{menuListElementClickSpeedChange$:t,playbackRate$:n}=e;this.options.extendSpeedList$.subscribe({next:e=>this.patch(((e,t)=>{let n=0,s=e.length,i=0,o=t.length;for(;ne.tag)),Array.from(e))),complete:()=>{this.unpatch()}}),this.options.maxMenuHeight$.subscribe(G({name:"extend-video-speed-style",style:e=>`\n ${j.custom.speedMenuList.selector} {\n display: flex !important; /* 防止3.X样式覆盖 */\n flex-direction: column;\n overflow-y: auto;\n max-height: ${e}px;\n visibility: hidden;\n }\n /* 修复2.X倍速列表显示问题 */\n :is(${j.custom.show.selector}) :is(${j.custom.speedMenuList.selector}){\n visibility: visible;\n }\n /* 修复番剧区的列表显示问题 */\n :is(${j.custom.speedMenuList.selector})[style*="block"] {\n visibility: visible;\n }`})),this.options.hideScrollbar$.subscribe(G({name:"extend-video-speed-no-scrollbar-style",style:e=>e&&`\n ${j.custom.speedMenuList.selector} {\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n }\n :is(${j.custom.speedMenuList.selector})::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n }`})),this.options.hideRemoveBtn$.subscribe(G({name:"extend-video-speed-no-remove-btn-style",style:e=>e&&`\n .extend-speed-item [data-ref="close-btn"] {\n display: none !important;\n }\n :is(${j.custom.speedMenuItem.selector}):not(${j.custom.active.selector}):hover [data-ref="close-btn"] {\n display: none !important;\n }`})),this.options.hideAddBtn$.subscribe(G({name:"extend-video-speed-no-add-btn-style",style:e=>e&&"\n .extend-speed-input {\n display: none !important;\n }"}));let s=1;n.pipe(E((e=>D.includes(e)))).subscribe((e=>{s=e})),t.subscribe({next:e=>{this.forceVideoSpeedWithUpdateStyle(e),this.currentSpeedValue=e},complete:()=>{this.setVideoSpeed(s),this.forceVideoSpeedWithUpdateStyle(s)}}),this.currentSpeedValue&&requestIdleCallback((()=>{this.setVideoSpeed(this.currentSpeedValue,1e3)}))}async forceVideoSpeedWithUpdateStyle(e){await this.forceVideoSpeed(e),setTimeout((()=>this.forceUpdateStyle(e)))}patch(e){const[t,n,s]=e,{menuListElement:i}=this.speedContext;if(this.inputElement||(this.inputElement=this.createInputElement(),i.prepend(this.inputElement.node)),0===n&&0===s.length)return;const o=s.map((e=>this.createCustomSpeedMenuItemElement(e)));this.elementMap.splice(t,n,...o).forEach((e=>{e.destroy()})),(this.elementMap[t-1]||this.inputElement).node.after(...o.map((e=>e.node)).reverse()),i.querySelectorAll(`:is(${j.custom.speedMenuItem.selector}):not(#${this.inputElement.node.id})`).forEach((e=>{e.style.order=(1e4*(16-k(e.innerHTML))).toString()})),this.unpatch=()=>{this.inputElement.destroy(),this.inputElement=void 0,this.elementMap.forEach((e=>e.destroy())),this.elementMap.length=0}}forceUpdateStyle(e){const{menuListElement:t,containerElement:n,nameBtnElement:s,query:i}=this.speedContext;for(const e of(0,y.dea)(`./*[(${V(Q.speedMenuItemClassName).split(",").map((e=>`contains(@class, "${e}")`)).join(" or ")}) and (${V(Q.activeClassName).split(",").map((e=>`contains(@class, "${e}")`)).join(" or ")})]`,t))e.classList.remove(...Q.activeClassName.split(","));i(e).classList.add(...Q.activeClassName.split(",")),n.classList.remove(...Q.showClassName.split(",")),s.innerText=L(e,!0)}}const Y=Q.create({name:"extendVideoSpeed",displayName:"扩展倍速",author:{name:"JLoeve",link:"https://github.com/LonelySteve"},description:{"zh-CN":"\n\n> 扩展视频播放器的倍速菜单项,可用于突破原有播放倍数的上限或下限.\n\n#### 🔧 **选项**\n\n- `隐藏滚动条`:如果添加的倍速过多,倍速菜单将出现滚动条,在 Windows 下,若没有安装并启用「细滚动条」组件会显得比较挤,建议开启此选项隐藏滚动条.\n\n- `隐藏移除图标`:如果认为倍速右侧的移除倍速图标有些突兀,可以开启此选项隐藏.\n\n- `隐藏新增图标`:如果认为顶部的新增倍速图标有些突兀,可以开启此选项隐藏.\n\n#### **新增倍速**\n\n开启组件后,在默认情况下,播放器的倍速菜单就会新增 2.5x 和 3.0x 两个倍速选项.\n\n如果需要添加更多倍速,只需将鼠标指针移到菜单顶部的新增图标上,图标将变成一个输入框,根据需要键入新的倍速值,或通过滚轮增减数值,或直接使用推荐的数值,回车确认即可.\n\n新增倍速的范围要求在 0.0625 到 16 之间,数量则不受限制.\n\n**不推荐设置超高倍速(>3.0x)**:原生播放器内部没有针对超高倍速进行优化,可能导致音画不同步、播放卡顿、声音嘈杂/消失等一系列问题.\n\n#### **删除倍速**\n\n将鼠标指针移到**自定义**的倍速菜单项上,其右侧将会显示一个移除图标,单击即可删除相应的倍速.\n\n"},tags:[componentsTags.video],urlInclude:n.playerUrls,options:{maxMenuHeight:{displayName:"倍速菜单最大高度",defaultValue:360,hidden:!0,validator:e=>Math.max(parseInt(e),360)||360},hideScrollbar:{displayName:"隐藏滚动条",defaultValue:!1},hideRemoveBtn:{displayName:"隐藏移除图标",defaultValue:!1},hideAddBtn:{displayName:"隐藏新增图标",defaultValue:!1},extendSpeedList:{displayName:"扩展倍速列表",defaultValue:[2.5,3],hidden:!0}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/focus.js b/bb-evolved/registry/dist/components/video/player/focus.js index a999f87ebc..e99e47806f 100644 --- a/bb-evolved/registry/dist/components/video/player/focus.js +++ b/bb-evolved/registry/dist/components/video/player/focus.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/focus"]=t():e["video/player/focus"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={200:e=>{e.exports=coreApis.spinQuery},605:e=>{e.exports=coreApis.utils}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={exports:{}};return o[e](n,n.exports,i),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var n=Object.create(null);i.r(n);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&r&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,i.d(n,s),n},i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{i.d(n,{component:()=>t});const e=coreApis.utils.urls,t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"playerFocus",displayName:"播放器定位",tags:[componentsTags.video],entry:async e=>{let{settings:{options:t}}=e;const o=document.URL.includes("bangumi")?".bilibili-player":".video-info .video-title .tit",{select:r}=await Promise.resolve().then(i.t.bind(i,200,23)),{playerReady:n}=await Promise.resolve().then(i.t.bind(i,605,23)),s=await r(o);await n(),s&&(s.scrollIntoView(),0!==t.offset&&window.scrollBy(0,t.offset))},description:{"zh-CN":"进入视频 / 番剧页面时, 自动定位到播放器. 注意: 不能和其他影响定位的功能一同使用, 例如自动宽屏. (相关讨论: [#483](https://github.com/the1812/Bilibili-Evolved/issues/483))\n\n可设置定位时的竖直偏移量, 单位为像素(px)."},options:{offset:{displayName:"定位偏移量",defaultValue:-10}},urlInclude:e.videoAndBangumiUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),n=n.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/focus"]=t():e["video/player/focus"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,o={200:e=>{e.exports=coreApis.spinQuery},605:e=>{e.exports=coreApis.utils}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={exports:{}};return o[e](n,n.exports,i),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var n=Object.create(null);i.r(n);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&r&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,i.d(n,s),n},i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{i.d(n,{component:()=>t});const e=coreApis.utils.urls,t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"playerFocus",displayName:"播放器定位",tags:[componentsTags.video],entry:async e=>{let{settings:{options:t}}=e;const o=document.URL.includes("bangumi")?".bilibili-player":".video-info .video-title .tit",{select:r}=await Promise.resolve().then(i.t.bind(i,200,23)),{playerReady:n}=await Promise.resolve().then(i.t.bind(i,605,23)),s=await r(o);await n(),s&&(s.scrollIntoView(),0!==t.offset&&window.scrollBy(0,t.offset))},description:{"zh-CN":"进入视频 / 番剧页面时, 自动定位到播放器. 注意: 不能和其他影响定位的功能一同使用, 例如自动宽屏. (相关讨论: [#483](https://github.com/the1812/Bilibili-Evolved/issues/483))\n\n可设置定位时的竖直偏移量, 单位为像素(px)."},options:{offset:{displayName:"定位偏移量",defaultValue:-10}},urlInclude:e.videoAndBangumiUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),n=n.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/intersection-actions.js b/bb-evolved/registry/dist/components/video/player/intersection-actions.js index 1bdc038497..2fbae69e84 100644 --- a/bb-evolved/registry/dist/components/video/player/intersection-actions.js +++ b/bb-evolved/registry/dist/components/video/player/intersection-actions.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/intersection-actions"]=t():e["video/player/intersection-actions"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>d});const o=coreApis.componentApis.define,n=coreApis.componentApis.video.playerAgent,a=coreApis.componentApis.video.playerLight,i=coreApis.observer,s=coreApis.settings,r=coreApis.utils.urls;var p=function(e){return e.Top="视频顶部",e.Medium="视频中间",e.Bottom="视频底部",e}(p||{});const d=(0,o.defineComponentMetadata)({name:"playerIntersectionActions",author:{name:"Waua",link:"https://github.com/FoundTheWOUT"},tags:[componentsTags.video],urlInclude:r.allVideoUrls,entry:async e=>{let{settings:{options:t},metadata:o}=e;const r=t;Promise.resolve().then((async()=>{const{query:{video:e}}=n.playerAgent,t=await e.element(),d=document.getElementById("video-player")??(dq(".player-wrap")||dq(".player-module"));let c,l=!0;function u(e){switch(e){case p.Top:return 1;case p.Medium:return.5;case p.Bottom:return 0;default:return.5}}function m(){c.observe(d)}function y(){c.unobserve(d)}const g=e=>new IntersectionObserver((e=>{let[o]=e;o.isIntersecting?l||(l=!0,r.pause&&t.paused&&t.play(),r.light&&(0,s.getComponentSettings)("playerAutoLight").enabled&&!r.pause&&!t.paused&&(0,a.lightOff)()):(t.paused||(l=!1),r.pause&&!t.paused&&t.pause(),r.light&&(0,s.getComponentSettings)("playerAutoLight").enabled&&!r.pause&&(0,a.lightOn)())}),{threshold:u(e||r.triggerLocation)});(0,s.addComponentListener)(`${o.name}.triggerLocation`,(e=>{y(),c=g(e),m()})),c=g(),(0,i.videoChange)((async()=>{n.playerAgent.isAutoPlay()&&m(),t.addEventListener("play",m),t.addEventListener("ended",y)}))}))},displayName:"播放器位置动作",description:{"zh-CN":"设置当播放器移出视图的位置变化时执行的动作."},options:{triggerLocation:{defaultValue:p.Medium,displayName:"触发位置",dropdownEnum:p},pause:{defaultValue:!1,displayName:"自动暂停"},light:{defaultValue:!0,displayName:"自动开灯"}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return t=t.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/intersection-actions"]=t():e["video/player/intersection-actions"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>d});const o=coreApis.componentApis.define,n=coreApis.componentApis.video.playerAgent,a=coreApis.componentApis.video.playerLight,i=coreApis.observer,s=coreApis.settings,r=coreApis.utils.urls;var p=function(e){return e.Top="视频顶部",e.Medium="视频中间",e.Bottom="视频底部",e}(p||{});const d=(0,o.defineComponentMetadata)({name:"playerIntersectionActions",author:{name:"Waua",link:"https://github.com/FoundTheWOUT"},tags:[componentsTags.video],urlInclude:r.allVideoUrls,entry:async e=>{let{settings:{options:t},metadata:o}=e;const r=t;Promise.resolve().then((async()=>{const{query:{video:e}}=n.playerAgent,t=await e.element(),d=document.getElementById("video-player")??(dq(".player-wrap")||dq(".player-module"));let l,c=!0;function u(e){switch(e){case p.Top:return 1;case p.Medium:return.5;case p.Bottom:return 0;default:return.5}}function m(){l.observe(d)}function y(){l.unobserve(d)}const g=e=>new IntersectionObserver((e=>{let[o]=e;o.isIntersecting?c||(c=!0,r.pause&&t.paused&&t.play(),r.light&&(0,s.getComponentSettings)("playerAutoLight").enabled&&!r.pause&&!t.paused&&(0,a.lightOff)()):(t.paused||(c=!1),r.pause&&!t.paused&&t.pause(),r.light&&(0,s.getComponentSettings)("playerAutoLight").enabled&&!r.pause&&(0,a.lightOn)())}),{threshold:u(e||r.triggerLocation)});(0,s.addComponentListener)(`${o.name}.triggerLocation`,(e=>{y(),l=g(e),m()})),l=g(),(0,i.videoChange)((async()=>{n.playerAgent.isAutoPlay()&&m(),t.addEventListener("play",m),t.addEventListener("ended",y)}))}))},displayName:"播放器位置动作",description:{"zh-CN":"设置当播放器移出视图的位置变化时执行的动作."},options:{triggerLocation:{defaultValue:p.Medium,displayName:"触发位置",dropdownEnum:p},pause:{defaultValue:!1,displayName:"自动暂停"},light:{defaultValue:!0,displayName:"自动开灯"}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/invert-scroll-volume.js b/bb-evolved/registry/dist/components/video/player/invert-scroll-volume.js index 336b63a6e4..f1d135a125 100644 --- a/bb-evolved/registry/dist/components/video/player/invert-scroll-volume.js +++ b/bb-evolved/registry/dist/components/video/player/invert-scroll-volume.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/invert-scroll-volume"]=t():e["video/player/invert-scroll-volume"]=t()}(globalThis,(()=>(()=>{var e,t,o={132:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=132,e.exports=t},17:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=17,e.exports=t},466:e=>{"use strict";e.exports="在网页全屏 / 全屏模式下, 禁止鼠标滚轮控制播放器的音量. 请注意不能和 `反转滚轮调音量` 一同使用.\n"},777:e=>{"use strict";e.exports="反转在网页全屏 / 全屏模式下使用滚轮调节音量的方向, 使其更符合使用触控板时的操作方向. 请注意不能和 `禁止滚轮调音量` 一同使用.\n\n- 手指向上推时, 增加音量\n- 手指向下推时, 减少音量\n- 可以自定义 `灵敏度`, 同样的滚动幅度下, 灵敏度越高变化的音量越多"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var l=n[e]={exports:{}};return o[e](l,l.exports,r),l.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var l=Object.create(null);r.r(l);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&n&&o;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(l,s),l},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";r.d(l,{component:()=>u});const e=coreApis.componentApis.define,t=coreApis.utils,o=coreApis.utils.urls;let n;const s=()=>(0,t.preventEvent)(unsafeWindow,"mousewheel",(()=>["player-mode-full","player-mode-web","player-fullscreen-fix","player-full-win"].some((e=>document.body.classList.contains(e))))),i=((0,e.defineComponentMetadata)({name:"disableScrollVolume",displayName:"禁止滚轮调音量",tags:[componentsTags.video],entry:()=>{n?.(),n=s()},reload:()=>{n?.(),n=s()},unload:()=>{n?.()},urlInclude:o.allVideoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(132);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,466,17)).then((e=>e.default))}})()}),coreApis.componentApis.video.playerAgent),a=coreApis.settings;let c;const d=(0,e.defineOptionsMetadata)({deltaFactor:{defaultValue:15,slider:{min:1,max:30,step:1},displayName:"灵敏度"}}),p=()=>{c?.();const e=(0,a.getComponentSettings)("invertScrollVolume"),t=t=>{["player-mode-webfullscreen","player-fullscreen-fix","player-full-win"].some((e=>document.body.classList.contains(e)))&&i.playerAgent.changeVolume(t.deltaY/((30-e.options.deltaFactor+1)/2))};unsafeWindow.addEventListener("wheel",t);const o=s();return()=>{unsafeWindow.removeEventListener("wheel",t),o()}},u=(0,e.defineComponentMetadata)({name:"invertScrollVolume",displayName:"反转滚轮调音量",tags:[componentsTags.video],options:d,entry:()=>{c?.(),c=p()},reload:()=>{c?.(),c=p()},unload:()=>c?.(),urlInclude:o.allVideoUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(17);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,777,17)).then((e=>e.default))}})()})})(),l=l.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/invert-scroll-volume"]=t():e["video/player/invert-scroll-volume"]=t()}(globalThis,(()=>(()=>{var e,t,o={132:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=132,e.exports=t},17:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=17,e.exports=t},466:e=>{"use strict";e.exports="在网页全屏 / 全屏模式下, 禁止鼠标滚轮控制播放器的音量. 请注意不能和 `反转滚轮调音量` 一同使用.\n"},777:e=>{"use strict";e.exports="反转在网页全屏 / 全屏模式下使用滚轮调节音量的方向, 使其更符合使用触控板时的操作方向. 请注意不能和 `禁止滚轮调音量` 一同使用.\n\n- 手指向上推时, 增加音量\n- 手指向下推时, 减少音量\n- 可以自定义 `灵敏度`, 同样的滚动幅度下, 灵敏度越高变化的音量越多"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var l=n[e]={exports:{}};return o[e](l,l.exports,r),l.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var l=Object.create(null);r.r(l);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,r.d(l,s),l},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var l={};return(()=>{"use strict";r.d(l,{component:()=>u});const e=coreApis.componentApis.define,t=coreApis.utils,o=coreApis.utils.urls;let n;const s=()=>(0,t.preventEvent)(unsafeWindow,"mousewheel",(()=>["player-mode-full","player-mode-web","player-fullscreen-fix","player-full-win"].some((e=>document.body.classList.contains(e))))),a=((0,e.defineComponentMetadata)({name:"disableScrollVolume",displayName:"禁止滚轮调音量",tags:[componentsTags.video],entry:()=>{n?.(),n=s()},reload:()=>{n?.(),n=s()},unload:()=>{n?.()},urlInclude:o.allVideoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(132);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,466,17)).then((e=>e.default))}})()}),coreApis.componentApis.video.playerAgent),i=coreApis.settings;let d;const c=(0,e.defineOptionsMetadata)({deltaFactor:{defaultValue:15,slider:{min:1,max:30,step:1},displayName:"灵敏度"}}),p=()=>{d?.();const e=(0,i.getComponentSettings)("invertScrollVolume"),t=t=>{["player-mode-webfullscreen","player-fullscreen-fix","player-full-win"].some((e=>document.body.classList.contains(e)))&&a.playerAgent.changeVolume(t.deltaY/((30-e.options.deltaFactor+1)/2))};unsafeWindow.addEventListener("wheel",t);const o=s();return()=>{unsafeWindow.removeEventListener("wheel",t),o()}},u=(0,e.defineComponentMetadata)({name:"invertScrollVolume",displayName:"反转滚轮调音量",tags:[componentsTags.video],options:c,entry:()=>{d?.(),d=p()},reload:()=>{d?.(),d=p()},unload:()=>d?.(),urlInclude:o.allVideoUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(17);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,777,17)).then((e=>e.default))}})()})})(),l=l.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/legacy-auto-play.js b/bb-evolved/registry/dist/components/video/player/legacy-auto-play.js index 702000a5c7..b0b4544498 100644 --- a/bb-evolved/registry/dist/components/video/player/legacy-auto-play.js +++ b/bb-evolved/registry/dist/components/video/player/legacy-auto-play.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/legacy-auto-play"]=t():e["video/player/legacy-auto-play"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var o in i)e.o(i,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:i[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>d});const i=coreApis.componentApis.define,o=coreApis.componentApis.feeds.api,n=coreApis.componentApis.video.playerAgent,s=coreApis.observer,a=coreApis.spinQuery,l=coreApis.utils,c=coreApis.utils.log,r=coreApis.utils.urls,d=(0,i.defineComponentMetadata)({name:"legacyAutoPlay",displayName:"传统连播模式",description:"模拟传统的多 P 连播策略: 仅连播视频的分 P, 最后 1P 放完禁止连播其他推荐视频.",tags:[componentsTags.video],urlInclude:r.videoUrls,entry:async()=>{const e=(0,c.useScopedConsole)("传统连播模式"),t={enable:[":is(.base-video-sections, .base-video-sections-v1) .next-button",":is(.multi-page, .multi-page-v1) .next-button",".player-auxiliary-autoplay-switch input"],disable:[":is(.recommend-list, .recommend-list-v1) .next-button"]},i=[()=>Boolean(dq(":is(.multi-page, .multi-page-v1) .list-box li.on:last-child")),()=>Boolean(dq(".video-sections-item:last-child .video-episode-card:last-child .video-episode-card__info-playing")),()=>Boolean(dq(".video-sections-item:last-child .video-episode-card:last-child .video-episode-card__info-title-playing"))];await(0,l.playerReady)();const r=await Promise.any([(0,a.select)(".right-container-inner"),(0,a.select)(".playlist-container--right")]);if(!r)return void e.warn("未找到 rightPanelContainer 或 playListContainer");const d=async()=>{const e=await(0,a.select)([...t.disable,...t.enable].join(","));if(!e)return;var o;(t.enable.some((t=>e.matches(t)))&&i.every((e=>!e())))!==(o=e,Boolean(o.querySelector(".switch-button.on")||o.matches(":checked")))&&e.click()},p=async()=>{r.classList.contains("right-container-inner")?d():(async()=>{const e=dq(".list-count").innerHTML.split("/"),t=dq(".action-list .action-list-inner .action-list-item-wrap:last-child .action-list-item .actionlist-item-inner");let i=!1;i=t.classList.contains("singlep-list-item-inner")?t.classList.contains("siglep-active"):t.children[1].lastElementChild.classList.contains("multip-list-item-active");const n=!(e[0]>=e[1]&&i),s=document.getElementById("app");(0,o.getVueData)(s).setContinuousPlay(n)})()};(0,s.videoChange)((async()=>{p();(await n.playerAgent.query.video.element())?.addEventListener("play",p,{once:!0})})),(0,s.childListSubtree)(r,(()=>p()))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return t=t.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/legacy-auto-play"]=t():e["video/player/legacy-auto-play"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var o in i)e.o(i,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:i[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>d});const i=coreApis.componentApis.define,o=coreApis.componentApis.feeds.api,n=coreApis.componentApis.video.playerAgent,s=coreApis.observer,a=coreApis.spinQuery,l=coreApis.utils,c=coreApis.utils.log,r=coreApis.utils.urls,d=(0,i.defineComponentMetadata)({name:"legacyAutoPlay",displayName:"传统连播模式",description:"模拟传统的多 P 连播策略: 仅连播视频的分 P, 最后 1P 放完禁止连播其他推荐视频.",tags:[componentsTags.video],urlInclude:r.videoUrls,entry:async()=>{const e=(0,c.useScopedConsole)("传统连播模式"),t={enable:[":is(.base-video-sections, .base-video-sections-v1) .next-button",":is(.multi-page, .multi-page-v1) .next-button",".player-auxiliary-autoplay-switch input"],disable:[":is(.recommend-list, .recommend-list-v1) .next-button"]},i=[()=>Boolean(dq(":is(.multi-page, .multi-page-v1) .list-box li.on:last-child")),()=>Boolean(dq(".video-sections-item:last-child .video-episode-card:last-child .video-episode-card__info-playing")),()=>Boolean(dq(".video-sections-item:last-child .video-episode-card:last-child .video-episode-card__info-title-playing"))];await(0,l.playerReady)();const r=await Promise.any([(0,a.select)(".right-container-inner"),(0,a.select)(".playlist-container--right")]);if(!r)return void e.warn("未找到 rightPanelContainer 或 playListContainer");const d=async()=>{const e=await(0,a.select)([...t.disable,...t.enable].join(","));if(!e)return;var o;(t.enable.some((t=>e.matches(t)))&&i.every((e=>!e())))!==(o=e,Boolean(o.querySelector(".switch-button.on")||o.matches(":checked")))&&e.click()},p=async()=>{r.classList.contains("right-container-inner")?d():(async()=>{const e=dq(".list-count").innerHTML.split("/"),t=dq(".action-list .action-list-inner .action-list-item-wrap:last-child .action-list-item .actionlist-item-inner");let i=!1;i=t.classList.contains("singlep-list-item-inner")?t.classList.contains("siglep-active"):t.children[1].lastElementChild.classList.contains("multip-list-item-active");const n=!(e[0]>=e[1]&&i),s=document.getElementById("app");(0,o.getVueData)(s).setContinuousPlay(n)})()};(0,s.videoChange)((async()=>{p();(await n.playerAgent.query.video.element())?.addEventListener("play",p,{once:!0})})),(0,s.childListSubtree)(r,(()=>p()))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/preserve-danmaku-input.js b/bb-evolved/registry/dist/components/video/player/preserve-danmaku-input.js index 87855d706f..24d3306d0e 100644 --- a/bb-evolved/registry/dist/components/video/player/preserve-danmaku-input.js +++ b/bb-evolved/registry/dist/components/video/player/preserve-danmaku-input.js @@ -6,4 +6,4 @@ t.i=function(e,r,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(o)for(var i=0;i{var o=r(32);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return r[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var p=2&o&&r;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,n.d(i,a),i},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,r="preserveDanmakuInput",o=(0,e.defineComponentMetadata)({name:r,displayName:"强制保留弹幕发送栏",entry:none,instantStyles:[{name:r,style:()=>Promise.resolve().then(n.t.bind(n,741,23))}],tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"在视频播放器网页全屏时, 即使宽度过小也强制保留弹幕发送栏, 注意这可能导致右侧的功能按钮挤出边界."},urlInclude:t.playerUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(n[a]=!0)}for(var p=0;p{var o=r(32);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return r[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var p=2&o&&r;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,n.d(i,a),i},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>o});const e=coreApis.componentApis.define,t=coreApis.utils.urls,r="preserveDanmakuInput",o=(0,e.defineComponentMetadata)({name:r,displayName:"强制保留弹幕发送栏",entry:none,instantStyles:[{name:r,style:()=>Promise.resolve().then(n.t.bind(n,741,23))}],tags:[componentsTags.style,componentsTags.video],description:{"zh-CN":"在视频播放器网页全屏时, 即使宽度过小也强制保留弹幕发送栏, 注意这可能导致右侧的功能按钮挤出边界."},urlInclude:t.playerUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/remember-speed.js b/bb-evolved/registry/dist/components/video/player/remember-speed.js index fb0c5bce02..46015cfcad 100644 --- a/bb-evolved/registry/dist/components/video/player/remember-speed.js +++ b/bb-evolved/registry/dist/components/video/player/remember-speed.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/remember-speed"]=t():e["video/player/remember-speed"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var o in i)e.o(i,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:i[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>H});const i=coreApis.meta,o=coreApis.utils.urls,n=coreApis.settings,r=coreApis.utils.log,s=coreApis.pluginApis.hook,a=e=>"function"==typeof e?{next:e}:e,l=e=>function e(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=!1;const s=[],l=[];let d=!1;const c=()=>{for(;s.length;)s.pop()();l.length=0,d=!0},p=e=>{d||(l.forEach((t=>{t.error?.(e),(0,n.getGeneralSettings)().devMode&&console.error(e)})),c())},u=e=>{d||l.forEach((t=>{try{t.next(e)}catch(e){p(e)}}))},h=()=>{l.forEach((e=>{e.complete?.()})),c()},b=()=>{if(r)return;const e=t?.({next:u,error:p,complete:h});e&&s.push(e),r=!0},m=e=>null==e?null:(l.push(e),()=>{lodash.pull(l,e)}),f=function(){for(var t=arguments.length,i=new Array(t),n=0;n{const t=m(a(e));return(o?.connect??b)(),t},pipe:f,next:u,error:p,complete:h,...o}:e(i[0],{subscribe:m},o||{connect:b,next:u}).pipe(...i.slice(1))};if(i){const e=t?.({subscribe:e=>i.subscribe({error:p,complete:h,...a(e)}),next:u,error:p,complete:h});e&&s.push(e)}return f()}(e),d=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,complete:o}=e;t.forEach((e=>{i(e)})),o()}))},c=(e,t)=>l((i=>{let{next:o}=i;return e.addEventListener(t,o),()=>e.removeEventListener(t,o)})),p=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o{let{next:o}=t;e(...i,o)}))},u=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,complete:o}=e;const n=[...t],r=()=>{const e=n.shift();e||o(),e.subscribe({next:i,complete:()=>{r()}})};r()}))},h=e=>new Promise(((t,i)=>{const o=e.subscribe({next:e=>{t(e),o()},error:()=>{i(),o()},complete:()=>{i(),o()}})})),b=coreApis.componentApis.video.playerAgent,m=coreApis.lifeCycle,f=coreApis.observer,g=coreApis.utils,v=coreApis.utils.sort,y=e=>t=>{let{subscribe:i,next:o,complete:n,error:r}=t;i(lodash.mapValues({next:o,complete:n,error:r},(t=>e(t))))},S=e=>function(){for(var t=arguments.length,i=new Array(t),o=0;oe(...i)))},x=e=>{const t=new Set;return e((e=>{lodash.castArray(e).forEach((e=>{t.add(e)}))})),()=>{t.forEach((e=>{e()}))}},w=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,error:o,complete:n}=e;return x((e=>{const r=[];let s=0;e(t.map(((e,a)=>e.pipe(y(S)).subscribe({next:e=>{r[a]=e,r.reduce((e=>e+1),0)===t.length&&i(r.slice())},complete:()=>{s++,s===t.length&&n()},error:o})))),e((()=>{r.length=0,s=0}))}))}))},E=e=>t=>{let{subscribe:i,next:o,error:n}=t;i(lodash.debounce((e=>{try{o(e)}catch(e){n(e)}}),e))},R=e=>t=>{let{subscribe:i,next:o}=t;i((t=>{e(t)&&o(t)}))},A=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,subscribe:o}=e,n=!1;o((e=>{n||t.forEach((e=>i(e))),i(e),n=!0}))}},V=coreApis.pluginApis.data,C=e=>e.split(",").map((e=>e.trim().replace(/^\./,""))).join(","),$=(e,t)=>{const i=t=>{(0,V.registerAndGetData)(e,t)[0]=t},o=(0,V.getData)(e);if(o.length)return[o[0],i];if(t){const e=t();return i(e),[e,i]}return[void 0,i]},O=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t&&1===e?"倍速":Math.trunc(e)===e?`${e}.0x`:`${e}x`},k=e=>{if("倍速"===e)return 1;const t=/([0-9]*[.]?[0-9]+)x/.exec(e);if(t)return parseFloat(t[1]);throw new Error(`unknown speed text: ${e}`)};function N(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}const j=b.playerAgent.provideCustomQuery({video:{speedMenuList:".bilibili-player-video-btn-speed-menu, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".bilibili-player-video-btn-speed-menu-list, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".bilibili-player-video-btn-speed-name, .bpx-player-ctrl-playbackrate-result",speedContainer:".bilibili-player-video-btn-speed, .bpx-player-ctrl-playbackrate",active:".bilibili-player-active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"},bangumi:{speedMenuList:".squirtle-speed-select-list, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".squirtle-select-item, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".squirtle-speed-select-result, .bpx-player-ctrl-playbackrate-result",speedContainer:".squirtle-speed-wrap, .bpx-player-ctrl-playbackrate",active:".active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"}});let T=function(e){return e[e.MIN=0]="MIN",e[e.CURRENT=1]="CURRENT",e[e.MAX=2]="MAX",e}({});const L=(e,t,i)=>{const o=new MutationObserver(i);return o.observe(e,t),o},M=e=>{let[t,i]=e;if(!t)throw new Error("speed container element not found!");if(!i)throw new Error("video element not found!");const o=t.querySelector(j.custom.speedNameBtn.selector),n=t.querySelector(j.custom.speedMenuList.selector);let r,s,a;const d=l(),c=l().pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))}));c.pipe(A(void 0),(e=>{let{subscribe:t,next:i}=e;const o=[];return t((e=>{2===o.length&&o.shift(),o.push(e),2===o.length&&i(o.slice())})),()=>{o.length=0}})).subscribe((e=>{let[t,i]=e;s=t,r=i}));const p=e=>{if(e)switch(e.nodeType){case Node.TEXT_NODE:c.next(k(e.data));break;case Node.ELEMENT_NODE:c.next(k(e.innerHTML));break;default:console.warn("The target parameter of updateActiveVideoSpeed must be a Node, and the node type must be one of TEXT_NODE and ELEMENT_NODE")}},u=()=>{a=lodash([...n.children]).map((e=>lodash.attempt((()=>k(e.textContent))))).reject((e=>lodash.isError(e))).sort((0,v.ascendingSort)()).value()};p(o),u();const h=L(n,{childList:!0,attributes:!0},(e=>{const{attributes:t=[],childList:i=[]}=lodash.groupBy(e,"type");i.length&&u(),d.next({attributes:t,childList:i})})),b=L(o,{childList:!0,subtree:!0},(e=>{e.forEach((e=>{const[t]=e.addedNodes;p(t)}))}));return{containerElement:t,videoElement:i,nameBtnElement:o,menuListElement:n,query:e=>(0,g.des)(`./*[(${function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"or";return e.split(",").map(C).flat().map((e=>`contains(@class, "${e}")`)).join(` ${t} `)}(j.custom.speedMenuItem.selector)}) and normalize-space()="${O(e)}"]`,n),dispose:()=>{h.disconnect(),b.disconnect()},activeVideoSpeed$:c,menuListElementMutations$:d,getActiveVideoSpeed:()=>r,getOldActiveVideoSpeed:()=>s,getAvailableSpeedValues:()=>a}},P=e=>{const{videoElement:t,menuListElement:i}=e,o=c(i,"click").pipe((n=e=>{const{innerText:t,innerHTML:i}=e.target,o=t.trim()||i.trim();return lodash.attempt((()=>k(o)))},e=>{let{subscribe:t,next:i}=e;t((e=>{i(n(e))}))}),R((e=>!lodash.isError(e))));var n;const r=l((e=>{let{next:i}=e,o=t;do{o=Object.getPrototypeOf(o)}while(null===o||!Object.prototype.hasOwnProperty.call(o,"playbackRate"));const n=Object.getOwnPropertyDescriptor(o,"playbackRate");return Object.defineProperty(o,"playbackRate",{set(e){n.set.call(this,e),i(e)}}),()=>{Object.defineProperty(o,"playbackRate",n)}})),s=o.pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))})),a=r.pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))})),d=l((e=>{let{next:t}=e;const i=w(s,a);return i.subscribe((e=>{let[i,o]=e;i===o&&t(o)})),()=>i.complete()})).pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))}));let p;a.pipe(E(200),A(void 0),(e=>{let{subscribe:t,next:i}=e;const o=[];return t((e=>{2===o.length&&o.shift(),o.push(e),2===o.length&&i(o.slice())})),()=>{o.length=0}})).subscribe((e=>{let[t]=e;p=t}));const u={menuListElementClickSpeed$:o,menuListElementClickSpeedChange$:s,playbackRate$:r,playbackRateChange$:a,videoSpeedChange$:d};return{...e,...u,dispose:()=>{lodash.values(u).forEach((e=>{e.complete()})),e.dispose()},getOldPlaybackRate:()=>p}},[I]=$("speed.NoSuchSpeedMenuItemElementError",(()=>class extends Error{constructor(e){const t=lodash.attempt((()=>O(e))),i=lodash.isError(t)?String(e):String(t);super(`There is no such speed menu item as ${i}`),this.speed=e,N(this,"formattedSpeed",void 0),this.formattedSpeed=i}})),q=e=>{const{query:t,videoElement:i,videoSpeedChange$:o,getOldActiveVideoSpeed:n,getAvailableSpeedValues:r,getActiveVideoSpeed:s}=e,a=async function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;const r=t(e);if(null==r)throw new I(e);r.click();const s=t=>{if((t??i.playbackRate)!==e)throw new Error(`failed to set ${O(e)} video speed.`)},a=[h(o.pipe(E(Math.max(0,n||0))))];n>0&&a.push(new Promise(((e,t)=>setTimeout((()=>setTimeout(t,n)))))),await Promise.all(a).then(s).catch(s)},l=async()=>{await a(1)},d=async(e,t)=>{if(lodash.isNil(e)&&(e=!1),"boolean"==typeof e)e||1===i.playbackRate?await a(n()):await l();else{const i=r();switch(t){case T.MIN:await a(i[e]);break;case T.MAX:await a(i[i.length-1+e]);break;case T.CURRENT:default:{const t=i.indexOf(s());if(-1===t)throw new Error("Unexpected Error: The available speed values do not include the active speed value, this should be a bug, please report the issue on github!");await a(i[t+e])}}}},c=async e=>{try{await d(e,T.CURRENT)}catch(e){if(console.warn(e),!(e instanceof I))throw e}};return Object.assign(e,{set:a,force:async e=>{i.playbackRate=e},reset:l,toggle:d,step:c,increase:async()=>{await c(1)},decrease:async()=>{await c(-1)}})},G=()=>$("speed.speedContext"),D=()=>$("speed.buildArguments$",(()=>{return l().pipe((e=e=>e.settings.enabled,t=>{let{subscribe:i,next:o}=t;const n=new Set;return i((t=>{const i=n.size;e(t)?n.add(t):n.delete(t),n.size!==i&&o([...n])})),()=>{n.clear()}}));var e})),U=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:lodash.identity;const[t,i]=G();if(t)return t;let o,n;const[r]=$("lifeCycleComponentLoaded$",(()=>c(unsafeWindow,m.LifeCycleEventTypes.ComponentsLoaded))),[s]=D(),[a]=$("speed.videoChange$",(()=>p(f.videoChange).pipe(R((e=>{let{aid:t,cid:i}=e;return t||i}))))),[b]=$("speed.speedContext$",(()=>l((t=>{let{next:i}=t;return w(a,u(d([]),s),r).subscribe((t=>{let[r,s]=t;const[l]=G();l?.dispose(),n?.("context update");const d=new Promise(((e,t)=>{o=e,n=t}));Promise.all([Promise.all([j.custom.speedContainer(),j.query.video.element()]).then(o),d]).then((e=>{let[,t]=e;return t})).then(M).then(P).then(q).then((e=>Object.assign(e,{videoIdObject:r,speedContext$:b,videoChange$:a}))).then(e(s)).then(i).catch((e=>console.error(e)))}))}))));return b.subscribe(i),h(b)};function B(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class W{constructor(e,t){this.entryContext=e,this.enabled$=t,B(this,"speedContext",void 0),B(this,"settings",void 0),B(this,"coreApis",void 0),B(this,"metadata",void 0),B(this,"options",void 0),B(this,"getVideoIdObject",void 0),B(this,"getAvailableSpeedValues",void 0),B(this,"getOldActiveVideoSpeed",void 0),B(this,"forceVideoSpeed",void 0),B(this,"getVideoSpeed",void 0),B(this,"setVideoSpeed",void 0),B(this,"resetVideoSpeed",void 0),B(this,"toggleVideoSpeed",void 0),B(this,"increaseVideoSpeed",void 0),B(this,"decreaseVideoSpeed",void 0),lodash.assign(this,e,{options:e.settings.options}),this.migrate?.(),lodash.assign(this,lodash.mapValues(W.contextMap,(e=>async function(){const t=await U(),i=lodash.get(t,e),o=lodash.isFunction(i)?await i(...arguments):i;return o})))}}B(W,"create",void 0),B(W,"contextMap",{getVideoIdObject:"videoIdObject",getAvailableSpeedValues:"getAvailableSpeedValues",getOldActiveVideoSpeed:"getOldActiveVideoSpeed",getVideoSpeed:"videoElement.playbackRate",setVideoSpeed:"set",forceVideoSpeed:"force",resetVideoSpeed:"reset",toggleVideoSpeed:"toggle",increaseVideoSpeed:"increase",decreaseVideoSpeed:"decrease"}),U((e=>t=>{const i=lodash.omit(t,"dispose"),o=e.map((e=>e.getSpeedContextMixin(i)));if(o.length>1){const e=lodash.intersection(...o.map(Object.keys));if(e.length)throw new Error(`In the registered speed component, there is an implementation of getSpeedContextMixin that causes the speed context to be mixed in ambiguous.\nThe repeated key names are ${e.join(", ")}`)}lodash.assign(i,...o);const r=[];return e.forEach((e=>{const t=lodash(e.settings.options).mapValues(((t,i)=>p(n.addComponentListener,`${e.metadata.name}.${i}`).pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))})))).mapKeys(((e,t)=>`${t}$`)).value();r.push(...lodash.values(t)),e.options=new Proxy(e.settings.options,{get:(e,i,o)=>lodash.isSymbol(i)?Reflect.get(e,i,o):!Reflect.has(e,i)&&i.endsWith("$")?t[i]:Reflect.get(e,i,o)}),e.speedContext=i,e.onSpeedContext(i),e.settings.enabled&&lodash(t).entries().forEach((t=>{let[i,o]=t;o.next(e.settings.options[i.slice(0,-1)])}))})),{...i,dispose:()=>{r.forEach((e=>e.complete())),t.dispose()}}})),W.create=function(e){const t=l().pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))}));return{...e,entry:i=>{const o=lodash.attempt((()=>new this(i,t)));if(o instanceof Error)return(0,r.logError)(o),null;const[n]=D();return t.subscribe((()=>{n.next(o)})),t.next(!0),(0,s.getHook)(`speed.component.${e.name}`).after(o),o},reload:()=>t.next(!0),unload:()=>t.next(!1)}};const F=coreApis.toast;function X(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class z extends W{getSpeedContextMixin(e){var t=this;let{videoIdObject:i,set:o,reset:n,toggle:r,getActiveVideoSpeed:s,getOldActiveVideoSpeed:a}=e;const l=async()=>{const e=this.getRestoredVideoSpeed(i);await o(e??1)};return{reset:l,toggle:async function(){for(var e=arguments.length,i=new Array(e),d=0;d{e&&(this.options.fixGlobalSpeed=!0)})),this.options.fixGlobalSpeed$.subscribe((e=>{e||(this.options.individualRemember=!1)}));const o=this.getRestoredVideoSpeed(i);o&&requestIdleCallback((async()=>{try{if(await this.setVideoSpeed(o,1e3),this.options.showRestoreTip){let e=`已还原到 ${O(o)} 倍速`;this.options.individualRemember&&null!=this.matchRememberSpeed()&&(e=`【独立倍速视频】${e}`),F.Toast.info(e,this.metadata.displayName,3e3)}}catch(e){const t=`${this.metadata.displayName} - 倍速还原操作失败`,i=e instanceof I?`没有 ${e.formattedSpeed} 这样的倍速项`:String(e);F.Toast.error(i,t,5e3),console.error(e)}})),t.subscribe((e=>{this.settings.enabled&&(this.options.individualRemember?e!==+this.options.globalSpeed&&this.rememberSpeed(e):this.options.fixGlobalSpeed||this.rememberSpeed(e,null))}))}getRestoredVideoSpeed(e){return this.options.individualRemember&&this.matchRememberSpeed(e.aid)||this.readGlobalVideoSpeed()}readGlobalVideoSpeed(){return parseFloat(String(this.options.globalSpeed))}matchRememberSpeed(e){for(const[t,i]of Object.entries(this.options.individualRememberRecord))if(i.some((t=>t.toString()===z.getAid(e).toString())))return parseFloat(t);return null}rememberSpeed(e,t){if(lodash.isNull(t))return void(this.options.globalSpeed=e);lodash.isUndefined(t)&&(t=z.getAid(t));const i=lodash.castArray(t);this.forgetSpeed(i),this.options.individualRememberRecord={...this.options.individualRememberRecord,[e]:lodash.unionWith(this.options.individualRememberRecord[e],i,z.aidComparator)}}forgetSpeed(e){lodash.isNil(e)&&(e=z.getAid(e));const t=lodash.castArray(e);this.options.individualRememberRecord=lodash(this.options.individualRememberRecord).mapValues((e=>lodash(e).pullAllWith(t,z.aidComparator).uniqWith(z.aidComparator).value())).pickBy((e=>e.length)).value()}}X(z,"getAid",(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:unsafeWindow.aid;if(!e)throw new Error("aid is unknown");return e})),X(z,"aidComparator",((e,t)=>e.toString()===t.toString()));const H=z.create({name:"rememberVideoSpeed",displayName:"记忆倍速",author:{name:"JLoeve",link:"https://github.com/LonelySteve"},description:{"zh-CN":`\n\n> 提高视频播放器的倍速记忆体验,可实现跨页共享倍速,也可以按视频分别记忆倍速.\n\n### 🔧 **选项**\n\n- \`全局记忆倍速值\`:默认情况下,这是跨页共享的倍速值,如果启用「各视频分别记忆」,则作为从未独立记忆倍速视频的初始倍速值.\n- \`固定全局倍速值\`:默认情况下,全局倍速值将随着用户改变视频倍速而改变,打开此选项后,全局记忆倍速值不再受倍速调整的影响.\n- \`各视频分别记忆\`:打开此选项后,将按不同视频分别记忆倍速,对于从未被记忆过倍速的视频,将采用全局记忆倍速值,选项「固定全局倍速值」在此情况下强制生效.\n- \`弹出还原倍速提示\`:打开此选项后,每次成功还原倍速后都会弹出提示.\n\n### 🌈 **温馨提示**\n\n「扩展倍速」和倍速相关的快捷键插件已分离为单独的组件或插件.\n\n请根据自身需要:\n\n- 前往「组件」页面安装[「扩展倍速」](${i.meta.compilationInfo.altCdn.root}registry/dist/components/video/player/extend-speed.js)组件\n- 前往「插件」页面安装[「快捷键扩展 - 视频倍速」](${i.meta.compilationInfo.altCdn.root}registry/dist/plugins/video/player/speed.js)插件.\n\n*如果想要清除当前视频的记忆状态,需要安装「快捷键扩展 - 视频倍速」插件.*\n`},tags:[componentsTags.video],urlInclude:o.playerUrls,options:{globalSpeed:{displayName:"全局记忆倍速值",defaultValue:1,validator:e=>lodash.clamp(parseFloat(e),.0625,16)||1},fixGlobalSpeed:{displayName:"固定全局倍速值",defaultValue:!1},individualRemember:{displayName:"各视频分别记忆",defaultValue:!1},individualRememberRecord:{displayName:"独立记忆倍速记录",defaultValue:{},hidden:!0},showRestoreTip:{displayName:"弹出还原倍速提示",defaultValue:!0}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return t=t.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/remember-speed"]=t():e["video/player/remember-speed"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var o in i)e.o(i,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:i[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{component:()=>H});const i=coreApis.meta,o=coreApis.utils.urls,n=coreApis.settings,r=coreApis.utils.log,s=coreApis.pluginApis.hook,a=e=>"function"==typeof e?{next:e}:e,l=e=>function e(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=!1;const s=[],l=[];let d=!1;const c=()=>{for(;s.length;)s.pop()();l.length=0,d=!0},p=e=>{d||(l.forEach((t=>{t.error?.(e),(0,n.getGeneralSettings)().devMode&&console.error(e)})),c())},u=e=>{d||l.forEach((t=>{try{t.next(e)}catch(e){p(e)}}))},h=()=>{l.forEach((e=>{e.complete?.()})),c()},b=()=>{if(r)return;const e=t?.({next:u,error:p,complete:h});e&&s.push(e),r=!0},m=e=>null==e?null:(l.push(e),()=>{lodash.pull(l,e)}),f=function(){for(var t=arguments.length,i=new Array(t),n=0;n{const t=m(a(e));return(o?.connect??b)(),t},pipe:f,next:u,error:p,complete:h,...o}:e(i[0],{subscribe:m},o||{connect:b,next:u}).pipe(...i.slice(1))};if(i){const e=t?.({subscribe:e=>i.subscribe({error:p,complete:h,...a(e)}),next:u,error:p,complete:h});e&&s.push(e)}return f()}(e),d=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,complete:o}=e;t.forEach((e=>{i(e)})),o()}))},c=(e,t)=>l((i=>{let{next:o}=i;return e.addEventListener(t,o),()=>e.removeEventListener(t,o)})),p=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),o=1;o{let{next:o}=t;e(...i,o)}))},u=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,complete:o}=e;const n=[...t],r=()=>{const e=n.shift();e||o(),e.subscribe({next:i,complete:()=>{r()}})};r()}))},h=e=>new Promise(((t,i)=>{const o=e.subscribe({next:e=>{t(e),o()},error:()=>{i(),o()},complete:()=>{i(),o()}})})),b=coreApis.componentApis.video.playerAgent,m=coreApis.lifeCycle,f=coreApis.observer,g=coreApis.utils,v=coreApis.utils.sort,y=e=>t=>{let{subscribe:i,next:o,complete:n,error:r}=t;i(lodash.mapValues({next:o,complete:n,error:r},(t=>e(t))))},S=e=>function(){for(var t=arguments.length,i=new Array(t),o=0;oe(...i)))},x=e=>{const t=new Set;return e((e=>{lodash.castArray(e).forEach((e=>{t.add(e)}))})),()=>{t.forEach((e=>{e()}))}},w=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,error:o,complete:n}=e;return x((e=>{const r=[];let s=0;e(t.map(((e,a)=>e.pipe(y(S)).subscribe({next:e=>{r[a]=e,r.reduce((e=>e+1),0)===t.length&&i(r.slice())},complete:()=>{s++,s===t.length&&n()},error:o})))),e((()=>{r.length=0,s=0}))}))}))},E=e=>t=>{let{subscribe:i,next:o,error:n}=t;i(lodash.debounce((e=>{try{o(e)}catch(e){n(e)}}),e))},R=e=>t=>{let{subscribe:i,next:o}=t;i((t=>{e(t)&&o(t)}))},A=function(){for(var e=arguments.length,t=new Array(e),i=0;i{let{next:i,subscribe:o}=e,n=!1;o((e=>{n||t.forEach((e=>i(e))),i(e),n=!0}))}},V=coreApis.pluginApis.data,C=e=>e.split(",").map((e=>e.trim().replace(/^\./,""))).join(","),$=(e,t)=>{const i=t=>{(0,V.registerAndGetData)(e,t)[0]=t},o=(0,V.getData)(e);if(o.length)return[o[0],i];if(t){const e=t();return i(e),[e,i]}return[void 0,i]},O=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t&&1===e?"倍速":Math.trunc(e)===e?`${e}.0x`:`${e}x`},k=e=>{if("倍速"===e)return 1;const t=/([0-9]*[.]?[0-9]+)x/.exec(e);if(t)return parseFloat(t[1]);throw new Error(`unknown speed text: ${e}`)};function N(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}const j=b.playerAgent.provideCustomQuery({video:{speedMenuList:".bilibili-player-video-btn-speed-menu, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".bilibili-player-video-btn-speed-menu-list, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".bilibili-player-video-btn-speed-name, .bpx-player-ctrl-playbackrate-result",speedContainer:".bilibili-player-video-btn-speed, .bpx-player-ctrl-playbackrate",active:".bilibili-player-active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"},bangumi:{speedMenuList:".squirtle-speed-select-list, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".squirtle-select-item, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".squirtle-speed-select-result, .bpx-player-ctrl-playbackrate-result",speedContainer:".squirtle-speed-wrap, .bpx-player-ctrl-playbackrate",active:".active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"}});let T=function(e){return e[e.MIN=0]="MIN",e[e.CURRENT=1]="CURRENT",e[e.MAX=2]="MAX",e}({});const L=(e,t,i)=>{const o=new MutationObserver(i);return o.observe(e,t),o},M=e=>{let[t,i]=e;if(!t)throw new Error("speed container element not found!");if(!i)throw new Error("video element not found!");const o=t.querySelector(j.custom.speedNameBtn.selector),n=t.querySelector(j.custom.speedMenuList.selector);let r,s,a;const d=l(),c=l().pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))}));c.pipe(A(void 0),(e=>{let{subscribe:t,next:i}=e;const o=[];return t((e=>{2===o.length&&o.shift(),o.push(e),2===o.length&&i(o.slice())})),()=>{o.length=0}})).subscribe((e=>{let[t,i]=e;s=t,r=i}));const p=e=>{if(e)switch(e.nodeType){case Node.TEXT_NODE:c.next(k(e.data));break;case Node.ELEMENT_NODE:c.next(k(e.innerHTML));break;default:console.warn("The target parameter of updateActiveVideoSpeed must be a Node, and the node type must be one of TEXT_NODE and ELEMENT_NODE")}},u=()=>{a=lodash([...n.children]).map((e=>lodash.attempt((()=>k(e.textContent))))).reject((e=>lodash.isError(e))).sort((0,v.ascendingSort)()).value()};p(o),u();const h=L(n,{childList:!0,attributes:!0},(e=>{const{attributes:t=[],childList:i=[]}=lodash.groupBy(e,"type");i.length&&u(),d.next({attributes:t,childList:i})})),b=L(o,{childList:!0,subtree:!0},(e=>{e.forEach((e=>{const[t]=e.addedNodes;p(t)}))}));return{containerElement:t,videoElement:i,nameBtnElement:o,menuListElement:n,query:e=>(0,g.des)(`./*[(${function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"or";return e.split(",").map(C).flat().map((e=>`contains(@class, "${e}")`)).join(` ${t} `)}(j.custom.speedMenuItem.selector)}) and normalize-space()="${O(e)}"]`,n),dispose:()=>{h.disconnect(),b.disconnect()},activeVideoSpeed$:c,menuListElementMutations$:d,getActiveVideoSpeed:()=>r,getOldActiveVideoSpeed:()=>s,getAvailableSpeedValues:()=>a}},P=e=>{const{videoElement:t,menuListElement:i}=e,o=c(i,"click").pipe((n=e=>{const{innerText:t,innerHTML:i}=e.target,o=t.trim()||i.trim();return lodash.attempt((()=>k(o)))},e=>{let{subscribe:t,next:i}=e;t((e=>{i(n(e))}))}),R((e=>!lodash.isError(e))));var n;const r=l((e=>{let{next:i}=e,o=t;do{o=Object.getPrototypeOf(o)}while(null===o||!Object.prototype.hasOwnProperty.call(o,"playbackRate"));const n=Object.getOwnPropertyDescriptor(o,"playbackRate");return Object.defineProperty(o,"playbackRate",{set(e){n.set.call(this,e),i(e)}}),()=>{Object.defineProperty(o,"playbackRate",n)}})),s=o.pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))})),a=r.pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))})),d=l((e=>{let{next:t}=e;const i=w(s,a);return i.subscribe((e=>{let[i,o]=e;i===o&&t(o)})),()=>i.complete()})).pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))}));let p;a.pipe(E(200),A(void 0),(e=>{let{subscribe:t,next:i}=e;const o=[];return t((e=>{2===o.length&&o.shift(),o.push(e),2===o.length&&i(o.slice())})),()=>{o.length=0}})).subscribe((e=>{let[t]=e;p=t}));const u={menuListElementClickSpeed$:o,menuListElementClickSpeedChange$:s,playbackRate$:r,playbackRateChange$:a,videoSpeedChange$:d};return{...e,...u,dispose:()=>{lodash.values(u).forEach((e=>{e.complete()})),e.dispose()},getOldPlaybackRate:()=>p}},[I]=$("speed.NoSuchSpeedMenuItemElementError",(()=>class extends Error{constructor(e){const t=lodash.attempt((()=>O(e))),i=lodash.isError(t)?String(e):String(t);super(`There is no such speed menu item as ${i}`),this.speed=e,N(this,"formattedSpeed",void 0),this.formattedSpeed=i}})),q=e=>{const{query:t,videoElement:i,videoSpeedChange$:o,getOldActiveVideoSpeed:n,getAvailableSpeedValues:r,getActiveVideoSpeed:s}=e,a=async function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;const r=t(e);if(null==r)throw new I(e);r.click();const s=t=>{if((t??i.playbackRate)!==e)throw new Error(`failed to set ${O(e)} video speed.`)},a=[h(o.pipe(E(Math.max(0,n||0))))];n>0&&a.push(new Promise(((e,t)=>setTimeout((()=>setTimeout(t,n)))))),await Promise.all(a).then(s).catch(s)},l=async()=>{await a(1)},d=async(e,t)=>{if(lodash.isNil(e)&&(e=!1),"boolean"==typeof e)e||1===i.playbackRate?await a(n()):await l();else{const i=r();switch(t){case T.MIN:await a(i[e]);break;case T.MAX:await a(i[i.length-1+e]);break;case T.CURRENT:default:{const t=i.indexOf(s());if(-1===t)throw new Error("Unexpected Error: The available speed values do not include the active speed value, this should be a bug, please report the issue on github!");await a(i[t+e])}}}},c=async e=>{try{await d(e,T.CURRENT)}catch(e){if(console.warn(e),!(e instanceof I))throw e}};return Object.assign(e,{set:a,force:async e=>{i.playbackRate=e},reset:l,toggle:d,step:c,increase:async()=>{await c(1)},decrease:async()=>{await c(-1)}})},G=()=>$("speed.speedContext"),D=()=>$("speed.buildArguments$",(()=>{return l().pipe((e=e=>e.settings.enabled,t=>{let{subscribe:i,next:o}=t;const n=new Set;return i((t=>{const i=n.size;e(t)?n.add(t):n.delete(t),n.size!==i&&o([...n])})),()=>{n.clear()}}));var e})),U=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:lodash.identity;const[t,i]=G();if(t)return t;let o,n;const[r]=$("lifeCycleComponentLoaded$",(()=>c(unsafeWindow,m.LifeCycleEventTypes.ComponentsLoaded))),[s]=D(),[a]=$("speed.videoChange$",(()=>p(f.videoChange).pipe(R((e=>{let{aid:t,cid:i}=e;return t||i}))))),[b]=$("speed.speedContext$",(()=>l((t=>{let{next:i}=t;return w(a,u(d([]),s),r).subscribe((t=>{let[r,s]=t;const[l]=G();l?.dispose(),n?.("context update");const d=new Promise(((e,t)=>{o=e,n=t}));Promise.all([Promise.all([j.custom.speedContainer(),j.query.video.element()]).then(o),d]).then((e=>{let[,t]=e;return t})).then(M).then(P).then(q).then((e=>Object.assign(e,{videoIdObject:r,speedContext$:b,videoChange$:a}))).then(e(s)).then(i).catch((e=>console.error(e)))}))}))));return b.subscribe(i),h(b)};function B(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class W{constructor(e,t){this.entryContext=e,this.enabled$=t,B(this,"speedContext",void 0),B(this,"settings",void 0),B(this,"coreApis",void 0),B(this,"metadata",void 0),B(this,"options",void 0),B(this,"getVideoIdObject",void 0),B(this,"getAvailableSpeedValues",void 0),B(this,"getOldActiveVideoSpeed",void 0),B(this,"forceVideoSpeed",void 0),B(this,"getVideoSpeed",void 0),B(this,"setVideoSpeed",void 0),B(this,"resetVideoSpeed",void 0),B(this,"toggleVideoSpeed",void 0),B(this,"increaseVideoSpeed",void 0),B(this,"decreaseVideoSpeed",void 0),lodash.assign(this,e,{options:e.settings.options}),this.migrate?.(),lodash.assign(this,lodash.mapValues(W.contextMap,(e=>async function(){const t=await U(),i=lodash.get(t,e),o=lodash.isFunction(i)?await i(...arguments):i;return o})))}}B(W,"create",void 0),B(W,"contextMap",{getVideoIdObject:"videoIdObject",getAvailableSpeedValues:"getAvailableSpeedValues",getOldActiveVideoSpeed:"getOldActiveVideoSpeed",getVideoSpeed:"videoElement.playbackRate",setVideoSpeed:"set",forceVideoSpeed:"force",resetVideoSpeed:"reset",toggleVideoSpeed:"toggle",increaseVideoSpeed:"increase",decreaseVideoSpeed:"decrease"}),U((e=>t=>{const i=lodash.omit(t,"dispose"),o=e.map((e=>e.getSpeedContextMixin(i)));if(o.length>1){const e=lodash.intersection(...o.map(Object.keys));if(e.length)throw new Error(`In the registered speed component, there is an implementation of getSpeedContextMixin that causes the speed context to be mixed in ambiguous.\nThe repeated key names are ${e.join(", ")}`)}lodash.assign(i,...o);const r=[];return e.forEach((e=>{const t=lodash(e.settings.options).mapValues(((t,i)=>p(n.addComponentListener,`${e.metadata.name}.${i}`).pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))})))).mapKeys(((e,t)=>`${t}$`)).value();r.push(...lodash.values(t)),e.options=new Proxy(e.settings.options,{get:(e,i,o)=>lodash.isSymbol(i)?Reflect.get(e,i,o):!Reflect.has(e,i)&&i.endsWith("$")?t[i]:Reflect.get(e,i,o)}),e.speedContext=i,e.onSpeedContext(i),e.settings.enabled&&lodash(t).entries().forEach((t=>{let[i,o]=t;o.next(e.settings.options[i.slice(0,-1)])}))})),{...i,dispose:()=>{r.forEach((e=>e.complete())),t.dispose()}}})),W.create=function(e){const t=l().pipe((e=>{let t,{subscribe:i,next:o}=e,n=!0;i((e=>{(n||t!==e)&&(n=!1,t=e,o(e))}))}));return{...e,entry:i=>{const o=lodash.attempt((()=>new this(i,t)));if(o instanceof Error)return(0,r.logError)(o),null;const[n]=D();return t.subscribe((()=>{n.next(o)})),t.next(!0),(0,s.getHook)(`speed.component.${e.name}`).after(o),o},reload:()=>t.next(!0),unload:()=>t.next(!1)}};const F=coreApis.toast;function X(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class z extends W{getSpeedContextMixin(e){var t=this;let{videoIdObject:i,set:o,reset:n,toggle:r,getActiveVideoSpeed:s,getOldActiveVideoSpeed:a}=e;const l=async()=>{const e=this.getRestoredVideoSpeed(i);await o(e??1)};return{reset:l,toggle:async function(){for(var e=arguments.length,i=new Array(e),d=0;d{e&&(this.options.fixGlobalSpeed=!0)})),this.options.fixGlobalSpeed$.subscribe((e=>{e||(this.options.individualRemember=!1)}));const o=this.getRestoredVideoSpeed(i);o&&requestIdleCallback((async()=>{try{if(await this.setVideoSpeed(o,1e3),this.options.showRestoreTip){let e=`已还原到 ${O(o)} 倍速`;this.options.individualRemember&&null!=this.matchRememberSpeed()&&(e=`【独立倍速视频】${e}`),F.Toast.info(e,this.metadata.displayName,3e3)}}catch(e){const t=`${this.metadata.displayName} - 倍速还原操作失败`,i=e instanceof I?`没有 ${e.formattedSpeed} 这样的倍速项`:String(e);F.Toast.error(i,t,5e3),console.error(e)}})),t.subscribe((e=>{this.settings.enabled&&(this.options.individualRemember?e!==+this.options.globalSpeed&&this.rememberSpeed(e):this.options.fixGlobalSpeed||this.rememberSpeed(e,null))}))}getRestoredVideoSpeed(e){return this.options.individualRemember&&this.matchRememberSpeed(e.aid)||this.readGlobalVideoSpeed()}readGlobalVideoSpeed(){return parseFloat(String(this.options.globalSpeed))}matchRememberSpeed(e){for(const[t,i]of Object.entries(this.options.individualRememberRecord))if(i.some((t=>t.toString()===z.getAid(e).toString())))return parseFloat(t);return null}rememberSpeed(e,t){if(lodash.isNull(t))return void(this.options.globalSpeed=e);lodash.isUndefined(t)&&(t=z.getAid(t));const i=lodash.castArray(t);this.forgetSpeed(i),this.options.individualRememberRecord={...this.options.individualRememberRecord,[e]:lodash.unionWith(this.options.individualRememberRecord[e],i,z.aidComparator)}}forgetSpeed(e){lodash.isNil(e)&&(e=z.getAid(e));const t=lodash.castArray(e);this.options.individualRememberRecord=lodash(this.options.individualRememberRecord).mapValues((e=>lodash(e).pullAllWith(t,z.aidComparator).uniqWith(z.aidComparator).value())).pickBy((e=>e.length)).value()}}X(z,"getAid",(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:unsafeWindow.aid;if(!e)throw new Error("aid is unknown");return e})),X(z,"aidComparator",((e,t)=>e.toString()===t.toString()));const H=z.create({name:"rememberVideoSpeed",displayName:"记忆倍速",author:{name:"JLoeve",link:"https://github.com/LonelySteve"},description:{"zh-CN":`\n\n> 提高视频播放器的倍速记忆体验,可实现跨页共享倍速,也可以按视频分别记忆倍速.\n\n#### 🔧 **选项**\n\n- \`全局记忆倍速值\`:默认情况下,这是跨页共享的倍速值,如果启用「各视频分别记忆」,则作为从未独立记忆倍速视频的初始倍速值.\n- \`固定全局倍速值\`:默认情况下,全局倍速值将随着用户改变视频倍速而改变,打开此选项后,全局记忆倍速值不再受倍速调整的影响.\n- \`各视频分别记忆\`:打开此选项后,将按不同视频分别记忆倍速,对于从未被记忆过倍速的视频,将采用全局记忆倍速值,选项「固定全局倍速值」在此情况下强制生效.\n- \`弹出还原倍速提示\`:打开此选项后,每次成功还原倍速后都会弹出提示.\n\n#### 🌈 **温馨提示**\n\n「扩展倍速」和倍速相关的快捷键插件已分离为单独的组件或插件.\n\n请根据自身需要:\n\n- 前往「组件」页面安装[「扩展倍速」](${i.meta.compilationInfo.altCdn.root}registry/dist/components/video/player/extend-speed.js)组件\n- 前往「插件」页面安装[「快捷键扩展 - 视频倍速」](${i.meta.compilationInfo.altCdn.root}registry/dist/plugins/video/player/speed.js)插件.\n\n*如果想要清除当前视频的记忆状态,需要安装「快捷键扩展 - 视频倍速」插件.*\n`},tags:[componentsTags.video],urlInclude:o.playerUrls,options:{globalSpeed:{displayName:"全局记忆倍速值",defaultValue:1,validator:e=>lodash.clamp(parseFloat(e),.0625,16)||1},fixGlobalSpeed:{displayName:"固定全局倍速值",defaultValue:!1},individualRemember:{displayName:"各视频分别记忆",defaultValue:!1},individualRememberRecord:{displayName:"独立记忆倍速记录",defaultValue:{},hidden:!0},showRestoreTip:{displayName:"弹出还原倍速提示",defaultValue:!0}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return t=t.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/remove-popup.js b/bb-evolved/registry/dist/components/video/player/remove-popup.js index 848d400e0d..e5ce0ff294 100644 --- a/bb-evolved/registry/dist/components/video/player/remove-popup.js +++ b/bb-evolved/registry/dist/components/video/player/remove-popup.js @@ -6,4 +6,4 @@ o.i=function(e,p,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var t={};if(r)for(var n=0;n{var r=p(195);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},912:e=>{function o(e){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}o.keys=()=>[],o.resolve=o,o.id=912,e.exports=o},541:e=>{"use strict";e.exports="删除视频播放器中出现的各种弹窗, 类别可在选项中分别选择. 如果之前点了收起弹窗, 则收起后的小弹窗则会直接删除. (不受类别选择影响)\n"}},r={};function t(e){var o=r[e];if(void 0!==o)return o.exports;var n=r[e]={id:e,exports:{}};return p[e](n,n.exports,t),n.exports}o=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,t.t=function(p,r){if(1&r&&(p=this(p)),8&r)return p;if("object"==typeof p&&p){if(4&r&&p.__esModule)return p;if(16&r&&"function"==typeof p.then)return p}var n=Object.create(null);t.r(n);var a={};e=e||[null,o({}),o([]),o(o)];for(var i=2&r&&p;"object"==typeof i&&!~e.indexOf(i);i=o(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>p[e]));return a.default=()=>p,t.d(n,a),n},t.d=(e,o)=>{for(var p in o)t.o(o,p)&&!t.o(e,p)&&Object.defineProperty(e,p,{enumerable:!0,get:o[p]})},t.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";t.d(n,{component:()=>a});const e=coreApis.componentApis.define,o=coreApis.settings,p=coreApis.utils.urls,r="removePlayerPopup",a=(0,e.defineComponentMetadata)({name:r,entry:e=>{let{settings:p,metadata:r}=e;const{options:t}=p,{kebabCase:n}=lodash;(0,o.addComponentListener)(r.name,(e=>{document.body.classList.toggle(n(r.name),e)}),!0),Object.keys(t).forEach((e=>{(0,o.addComponentListener)(`${r.name}.${e}`,(o=>{document.body.classList.toggle(`${n(r.name)}-${n(e)}`,o)}),!0)}))},instantStyles:[{name:r,style:()=>Promise.resolve().then(t.t.bind(t,897,23))}],displayName:"删除视频弹窗",tags:[componentsTags.video,componentsTags.style],urlInclude:p.playerUrls,options:{votes:{defaultValue:!1,displayName:"投票"},relatedVideos:{defaultValue:!0,displayName:"关联视频"},comboLikes:{defaultValue:!0,displayName:"关注/三连"},rates:{defaultValue:!0,displayName:"评分"},reservations:{defaultValue:!0,displayName:"预告"},promotions:{defaultValue:!0,displayName:"心动"}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=t(912);return{...Object.fromEntries(e.keys().map((o=>[o.match(/index\.(.+)\.md$/)[1],e(o)]))),"zh-CN":()=>Promise.resolve().then(t.t.bind(t,541,17)).then((e=>e.default))}})()})})(),n=n.component})())); \ No newline at end of file +var a=this[n][0];null!=a&&(t[a]=!0)}for(var i=0;i{var r=p(195);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},912:e=>{function o(e){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}o.keys=()=>[],o.resolve=o,o.id=912,e.exports=o},541:e=>{"use strict";e.exports="删除视频播放器中出现的各种弹窗, 类别可在选项中分别选择. 如果之前点了收起弹窗, 则收起后的小弹窗则会直接删除. (不受类别选择影响)\n"}},r={};function t(e){var o=r[e];if(void 0!==o)return o.exports;var n=r[e]={id:e,exports:{}};return p[e](n,n.exports,t),n.exports}o=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,t.t=function(p,r){if(1&r&&(p=this(p)),8&r)return p;if("object"==typeof p&&p){if(4&r&&p.__esModule)return p;if(16&r&&"function"==typeof p.then)return p}var n=Object.create(null);t.r(n);var a={};e=e||[null,o({}),o([]),o(o)];for(var i=2&r&&p;"object"==typeof i&&!~e.indexOf(i);i=o(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>p[e]));return a.default=()=>p,t.d(n,a),n},t.d=(e,o)=>{for(var p in o)t.o(o,p)&&!t.o(e,p)&&Object.defineProperty(e,p,{enumerable:!0,get:o[p]})},t.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";t.d(n,{component:()=>a});const e=coreApis.componentApis.define,o=coreApis.settings,p=coreApis.utils.urls,r="removePlayerPopup",a=(0,e.defineComponentMetadata)({name:r,entry:e=>{let{settings:p,metadata:r}=e;const{options:t}=p,{kebabCase:n}=lodash;(0,o.addComponentListener)(r.name,(e=>{document.body.classList.toggle(n(r.name),e)}),!0),Object.keys(t).forEach((e=>{(0,o.addComponentListener)(`${r.name}.${e}`,(o=>{document.body.classList.toggle(`${n(r.name)}-${n(e)}`,o)}),!0)}))},instantStyles:[{name:r,style:()=>Promise.resolve().then(t.t.bind(t,897,23))}],displayName:"删除视频弹窗",tags:[componentsTags.video,componentsTags.style],urlInclude:p.playerUrls,options:{votes:{defaultValue:!1,displayName:"投票"},relatedVideos:{defaultValue:!0,displayName:"关联视频"},comboLikes:{defaultValue:!0,displayName:"关注/三连"},rates:{defaultValue:!0,displayName:"评分"},reservations:{defaultValue:!0,displayName:"预告"},promotions:{defaultValue:!0,displayName:"心动"}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=t(912);return{...Object.fromEntries(e.keys().map((o=>[o.match(/index\.(.+)\.md$/)[1],e(o)]))),"zh-CN":()=>Promise.resolve().then(t.t.bind(t,541,17)).then((e=>e.default))}})()})})(),n=n.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/screenshot.js b/bb-evolved/registry/dist/components/video/player/screenshot.js index ce28d2e756..b963e4dbca 100644 --- a/bb-evolved/registry/dist/components/video/player/screenshot.js +++ b/bb-evolved/registry/dist/components/video/player/screenshot.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/screenshot"]=t():e["video/player/screenshot"]=t()}(globalThis,(()=>(()=>{var e,t,n={506:(e,t,n)=>{var i=n(218)((function(e){return e[1]}));i.push([e.id,'.video-screenshot-thumbnail {\n margin: var(--thumbnail-margin-vertical) var(--thumbnail-margin-horizontal);\n position: relative;\n transition: 0.35s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n width: var(--screenshot-width);\n height: var(--screenshot-height);\n background-color: black;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n@keyframes spinner {\nto {\n transform: translate(-50%, -50%) rotate(360deg);\n}\n}\n.video-screenshot-thumbnail img {\n max-width: var(--screenshot-width);\n max-height: var(--screenshot-height);\n display: block;\n background-color: black;\n}\n.video-screenshot-thumbnail .loading::before {\n content: "";\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) rotate(0deg);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 3px solid rgba(136, 136, 136, 0.5333333333);\n border-top-color: var(--theme-color);\n animation: spinner 0.6s linear infinite;\n}\n.video-screenshot-thumbnail.video-screenshot-list-leave-active {\n position: absolute;\n transition: 0.35s cubic-bezier(0.6, -0.28, 0.74, 0.05);\n}\n.video-screenshot-thumbnail .mask {\n position: absolute;\n opacity: 0;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5333333333);\n display: flex;\n justify-content: space-around;\n align-items: center;\n transition: none;\n pointer-events: none;\n}\n.video-screenshot-thumbnail .mask .time {\n color: #fff;\n position: absolute;\n bottom: 4px;\n left: 8px;\n font-size: 10pt;\n}\n.video-screenshot-thumbnail .mask button {\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.6666666667);\n color: #fff;\n border: none;\n border-radius: 50%;\n font-size: 24pt;\n cursor: pointer;\n width: 48px;\n height: 48px;\n pointer-events: initial;\n outline: none !important;\n}\n.video-screenshot-thumbnail:hover .mask {\n opacity: 1;\n}',""]),e.exports=i},364:(e,t,n)=>{var i=n(218)((function(e){return e[1]}));i.push([e.id,".video-screenshot-container {\n position: relative;\n --screenshot-width: 240px;\n --screenshot-width-negative: calc(0px - var(--screenshot-width));\n --screenshot-height: 135px;\n --thumbnail-margin-vertical: 12px;\n --thumbnail-margin-horizontal: 12px;\n --screenshot-list-width: calc(2 * var(--thumbnail-margin-horizontal) + var(--screenshot-width));\n}\n.video-screenshot-disable .video-screenshot-container {\n display: none;\n}\n.video-screenshot-container .video-screenshot-batch {\n position: fixed;\n bottom: var(--thumbnail-margin-vertical);\n right: var(--thumbnail-margin-horizontal);\n z-index: 20000;\n width: var(--screenshot-list-width);\n display: flex;\n align-items: center;\n gap: 16px;\n justify-content: space-between;\n}\n.video-screenshot-container .video-screenshot-batch button {\n background: rgba(0, 0, 0, 0.8);\n color: #fff;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n cursor: pointer;\n outline: 0 !important;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: center;\n flex-grow: 1;\n}\n.video-screenshot-container .video-screenshot-batch button .be-icon {\n margin-right: 4px;\n}\n.video-screenshot-container .video-screenshot-list {\n position: fixed;\n top: 0;\n right: 0;\n z-index: 20000;\n margin: var(--thumbnail-margin-vertical) var(--thumbnail-margin-horizontal);\n max-height: calc(100% - 3 * var(--thumbnail-margin-vertical) - 37px);\n width: var(--screenshot-list-width);\n background-color: rgba(0, 0, 0, 0.8);\n border-radius: 8px;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.video-screenshot-container .video-screenshot-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.video-screenshot-container .video-screenshot-list > * {\n pointer-events: initial;\n}\n.video-screenshot-container .video-screenshot-list-enter {\n opacity: 0;\n transform: translateX(var(--screenshot-width-negative));\n}\n.video-screenshot-container .video-screenshot-list-leave-to {\n opacity: 0;\n transform: translateX(var(--screenshot-width));\n}",""]),e.exports=i},218:e=>{"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/screenshot"]=t():e["video/player/screenshot"]=t()}(globalThis,(()=>(()=>{var e,t,n={45:(e,t,n)=>{var i=n(218)((function(e){return e[1]}));i.push([e.id,'.video-screenshot-thumbnail {\n margin: var(--thumbnail-margin-vertical) var(--thumbnail-margin-horizontal);\n position: relative;\n transition: 0.35s cubic-bezier(0.18, 0.89, 0.32, 1.28);\n width: var(--screenshot-width);\n height: var(--screenshot-height);\n background-color: black;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n@keyframes spinner {\nto {\n transform: translate(-50%, -50%) rotate(360deg);\n}\n}\n.video-screenshot-thumbnail img {\n max-width: var(--screenshot-width);\n max-height: var(--screenshot-height);\n display: block;\n background-color: black;\n}\n.video-screenshot-thumbnail .loading::before {\n content: "";\n box-sizing: border-box;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) rotate(0deg);\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 3px solid rgba(136, 136, 136, 0.5333333333);\n border-top-color: var(--theme-color);\n animation: spinner 0.6s linear infinite;\n}\n.video-screenshot-thumbnail.video-screenshot-list-leave-active {\n position: absolute;\n transition: 0.35s cubic-bezier(0.6, -0.28, 0.74, 0.05);\n}\n.video-screenshot-thumbnail .mask {\n position: absolute;\n opacity: 0;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5333333333);\n display: flex;\n justify-content: space-around;\n align-items: center;\n transition: none;\n pointer-events: none;\n}\n.video-screenshot-thumbnail .mask .time {\n color: #fff;\n position: absolute;\n bottom: 4px;\n left: 8px;\n font-size: 10pt;\n}\n.video-screenshot-thumbnail .mask button {\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.6666666667);\n color: #fff;\n border: none;\n border-radius: 50%;\n font-size: 24pt;\n cursor: pointer;\n width: 48px;\n height: 48px;\n pointer-events: initial;\n outline: none !important;\n}\n.video-screenshot-thumbnail:hover .mask {\n opacity: 1;\n}',""]),e.exports=i},364:(e,t,n)=>{var i=n(218)((function(e){return e[1]}));i.push([e.id,".video-screenshot-container {\n position: relative;\n --screenshot-width: 240px;\n --screenshot-width-negative: calc(0px - var(--screenshot-width));\n --screenshot-height: 135px;\n --thumbnail-margin-vertical: 12px;\n --thumbnail-margin-horizontal: 12px;\n --screenshot-list-width: calc(2 * var(--thumbnail-margin-horizontal) + var(--screenshot-width));\n}\n.video-screenshot-disable .video-screenshot-container {\n display: none;\n}\n.video-screenshot-container .video-screenshot-batch {\n position: fixed;\n bottom: var(--thumbnail-margin-vertical);\n right: var(--thumbnail-margin-horizontal);\n z-index: 20000;\n width: var(--screenshot-list-width);\n display: flex;\n align-items: center;\n gap: 16px;\n justify-content: space-between;\n}\n.video-screenshot-container .video-screenshot-batch button {\n background: rgba(0, 0, 0, 0.8);\n color: #fff;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n cursor: pointer;\n outline: 0 !important;\n padding: 8px 12px;\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: center;\n flex-grow: 1;\n}\n.video-screenshot-container .video-screenshot-batch button .be-icon {\n margin-right: 4px;\n}\n.video-screenshot-container .video-screenshot-list {\n position: fixed;\n top: 0;\n right: 0;\n z-index: 20000;\n margin: var(--thumbnail-margin-vertical) var(--thumbnail-margin-horizontal);\n max-height: calc(100% - 3 * var(--thumbnail-margin-vertical) - 37px);\n width: var(--screenshot-list-width);\n background-color: rgba(0, 0, 0, 0.8);\n border-radius: 8px;\n overflow: auto;\n scrollbar-width: none !important;\n overscroll-behavior: contain;\n}\n.video-screenshot-container .video-screenshot-list::-webkit-scrollbar {\n height: 0 !important;\n width: 0 !important;\n}\n.video-screenshot-container .video-screenshot-list > * {\n pointer-events: initial;\n}\n.video-screenshot-container .video-screenshot-list-enter {\n opacity: 0;\n transform: translateX(var(--screenshot-width-negative));\n}\n.video-screenshot-container .video-screenshot-list-leave-to {\n opacity: 0;\n transform: translateX(var(--screenshot-width));\n}",""]),e.exports=i},218:e=>{"use strict"; // eslint-disable-next-line func-names e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")}, // eslint-disable-next-line func-names @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(i)for(var r=0;r{"use strict";var i,o=function(){return void 0===i&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";e.exports=coreApis.componentApis.video.playerAgent},414:e=>{"use strict";e.exports=coreApis.utils.log}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var r=Object.create(null);o.r(r);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,o.d(r,s),r},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>O});const e=coreApis.componentApis.video.videoControlBar,t=coreApis.utils,n=coreApis.utils.urls;var i=o(833);const s=coreApis.utils.title;function a(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const c=document.createElement("canvas");class l{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.video=e,this.videoTime=t,this.withDanmaku=n,a(this,"url",""),a(this,"blob",void 0),a(this,"timeStamp",(new Date).getTime()),this.createUrl()}async createUrl(){const{logError:e}=await Promise.resolve().then(o.t.bind(o,414,23));if(this.withDanmaku){const e=dq(i.playerAgent.query.video.wrap.selector).getBoundingClientRect(),t=e.width/e.height;t>=this.video.videoWidth/this.video.videoHeight?(c.height=this.video.videoHeight,c.width=this.video.videoHeight*t):(c.width=this.video.videoWidth,c.height=this.video.videoWidth/t)}else c.width=this.video.videoWidth,c.height=this.video.videoHeight;const t=c.getContext("2d");if(null===t)return void e("视频截图失败: canvas 未创建或创建失败.");const n=(c.width-this.video.videoWidth)/2,r=(c.height-this.video.videoHeight)/2;if(t.drawImage(this.video,n,r),this.withDanmaku){const e=dq("canvas.bilibili-player-video-danmaku, canvas.dm-canvas");null!==e&&t.drawImage(e,0,0,c.width,c.height)}try{c.toBlob((t=>{null!==t?(this.blob=t,this.url=URL.createObjectURL(t)):e("视频截图失败: 创建 blob 失败.")}),"image/png")}catch(t){e("视频截图失败: 操作被浏览器阻止. 这通常发生于电影的试看片段, 请在正片尝试使用截图功能.")}}get filename(){return`${(0,s.getFriendlyTitle)()} @${this.time.replace(/:/g,"-")} ${this.timeStamp.toString()}.png`}get id(){return this.videoTime.toString()+this.timeStamp.toString()}get time(){const e=Math.trunc(this.videoTime/3600).toString(),t=Math.trunc(this.videoTime/60).toString(),n=(this.videoTime%60).toFixed(2);return"0"===e?`${t.padStart(2,"0")}:${n.padStart(5,"0")}`:`${e}:${t.padStart(2,"0")}:${n.padStart(5,"0")}`}revoke(){URL.revokeObjectURL(this.url)}}const d=coreApis.componentApis.define;var h=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"video-screenshot-container"},[t("transition-group",{staticClass:"video-screenshot-list",attrs:{name:"video-screenshot-list",tag:"div"}},e._l(e.screenshots,(function(n){return t("VideoScreenshot",{key:n.id,attrs:{filename:n.filename,"object-url":n.url,time:n.time},on:{discard:function(t){return e.discard(n)}}})})),1),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showBatch,expression:"showBatch"}],staticClass:"video-screenshot-batch"},[t("button",{on:{click:e.saveAll}},[t("VIcon",{attrs:{size:18,icon:"mdi-content-save"}}),e._v("全部保存")],1),e._v(" "),t("button",{on:{click:e.discardAll}},[t("VIcon",{attrs:{size:18,icon:"mdi-delete-forever"}}),e._v("全部丢弃\n ")],1)])],1)};h._withStripped=!0;const u=coreApis.download,v=coreApis.ui;var p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"video-screenshot-thumbnail"},[e.objectUrl?t("img",{attrs:{src:e.objectUrl}}):e._e(),e._v(" "),e.objectUrl?t("div",{staticClass:"mask"},[t("a",{ref:"link",staticClass:"link",staticStyle:{display:"none"},attrs:{href:e.objectUrl,download:e.filename}}),e._v(" "),t("button",{staticClass:"save",attrs:{title:"保存"},on:{click:e.save}},[t("VIcon",{attrs:{size:28,icon:"mdi-content-save-outline"}})],1),e._v(" "),t("button",{staticClass:"discard",attrs:{title:"丢弃"},on:{click:e.discard}},[t("VIcon",{attrs:{size:28,icon:"mdi-delete-forever-outline"}})],1),e._v(" "),t("span",{staticClass:"time"},[e._v(e._s(e.time))])]):t("div",{staticClass:"loading",on:{click:e.discard}})])};p._withStripped=!0;const f=Vue.extend({components:{VIcon:v.VIcon},props:{objectUrl:{type:String,required:!0},filename:{type:String,required:!0},time:{type:String,required:!0}},methods:{discard(){this.$emit("discard")},save(){this.$refs.link.click(),this.discard()}}});var m=o(332),b=o.n(m),g=o(506),y=o.n(g),w={insert:"head",singleton:!1};b()(y(),w);y().locals;function x(e,t,n,i,o,r,s,a){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=c):o&&(c=a?function(){o.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}const k=x(f,p,[],!1,null,null,null).exports,_=Vue.extend({components:{VIcon:v.VIcon,VideoScreenshot:k},data:()=>({screenshots:[]}),computed:{showBatch(){return this.screenshots.length>=2}},methods:{discard(e){this.screenshots.splice(this.screenshots.indexOf(e),1),e.revoke()},async saveAll(){const e=new u.DownloadPackage;this.screenshots.forEach((t=>{e.add(t.filename,t.blob,{date:new Date(t.timeStamp)})})),await e.emit(`${(0,s.getFriendlyTitle)()}.zip`),this.discardAll()},discardAll(){this.screenshots.forEach((e=>e.revoke())),this.screenshots=[]}}});var S=o(364),C=o.n(S),j={insert:"head",singleton:!1};b()(C(),j);C().locals;const A=x(_,h,[],!1,null,null,null).exports,T="video-screenshot-disable",O=(0,d.defineComponentMetadata)({name:"videoScreenshot",displayName:"启用视频截图",tags:[componentsTags.video],entry:async()=>{let n;(0,e.addControlBarButton)({name:"takeScreenshot",displayName:"截图",icon:"mdi-camera",order:0,action:async e=>{const{playerAgent:i}=await Promise.resolve().then(o.t.bind(o,833,23)),r=await i.query.video.element();if(r instanceof HTMLVideoElement){const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=e.currentTime;return new l(e,n,t)}(r,e.shiftKey);n||(n=(0,t.mountVueComponent)(A),document.body.insertAdjacentElement("beforeend",n.$el)),n.screenshots.unshift(i)}else{const{logError:e}=await Promise.resolve().then(o.t.bind(o,414,23));e("视频截图失败: 无法定位视频元素, 请尝试右击视频两次后另存为图片, 或将播放策略改为 AV1 或 AVC.")}}})},description:{"zh-CN":"启用视频快速截图, 将在播放器的时间右边增加一个截图按钮. 装有 `快捷键扩展` 时支持键盘快捷键Ctrl+Alt+C."},urlInclude:n.playerUrls,reload:()=>document.body.classList.remove(T),unload:()=>document.body.classList.add(T),plugin:{displayName:"视频截图 - 快捷键支持",setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.takeScreenshot={displayName:"视频截图",run:e=>{const{clickElement:t}=e;return t('.be-video-control-bar-extend [data-name="takeScreenshot"]',e)}}})),t("keymap.presets",(e=>{e.takeScreenshot="ctrl [shift] alt c"}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),r=r.component})())); \ No newline at end of file +i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";e.exports=coreApis.componentApis.video.playerAgent},414:e=>{"use strict";e.exports=coreApis.utils.log}},i={};function o(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var r=Object.create(null);o.r(r);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&i&&n;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,o.d(r,s),r},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.d(r,{component:()=>O});const e=coreApis.componentApis.video.videoControlBar,t=coreApis.utils,n=coreApis.utils.urls;var i=o(833);const s=coreApis.utils.title;function a(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const c=document.createElement("canvas");class d{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.video=e,this.videoTime=t,this.withDanmaku=n,a(this,"url",""),a(this,"blob",void 0),a(this,"timeStamp",(new Date).getTime()),this.createUrl()}async createUrl(){const{logError:e}=await Promise.resolve().then(o.t.bind(o,414,23));if(this.withDanmaku){const e=dq(i.playerAgent.query.video.wrap.selector).getBoundingClientRect(),t=e.width/e.height;t>=this.video.videoWidth/this.video.videoHeight?(c.height=this.video.videoHeight,c.width=this.video.videoHeight*t):(c.width=this.video.videoWidth,c.height=this.video.videoWidth/t)}else c.width=this.video.videoWidth,c.height=this.video.videoHeight;const t=c.getContext("2d");if(null===t)return void e("视频截图失败: canvas 未创建或创建失败.");const n=(c.width-this.video.videoWidth)/2,r=(c.height-this.video.videoHeight)/2;if(t.drawImage(this.video,n,r),this.withDanmaku){const e=dq("canvas.bilibili-player-video-danmaku, canvas.dm-canvas");null!==e&&t.drawImage(e,0,0,c.width,c.height)}try{c.toBlob((t=>{null!==t?(this.blob=t,this.url=URL.createObjectURL(t)):e("视频截图失败: 创建 blob 失败.")}),"image/png")}catch(t){e("视频截图失败: 操作被浏览器阻止. 这通常发生于电影的试看片段, 请在正片尝试使用截图功能.")}}get filename(){return`${(0,s.getFriendlyTitle)()} @${this.time.replace(/:/g,"-")} ${this.timeStamp.toString()}.png`}get id(){return this.videoTime.toString()+this.timeStamp.toString()}get time(){const e=Math.trunc(this.videoTime/3600).toString(),t=Math.trunc(this.videoTime/60).toString(),n=(this.videoTime%60).toFixed(2);return"0"===e?`${t.padStart(2,"0")}:${n.padStart(5,"0")}`:`${e}:${t.padStart(2,"0")}:${n.padStart(5,"0")}`}revoke(){URL.revokeObjectURL(this.url)}}const l=coreApis.componentApis.define;var h=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"video-screenshot-container"},[t("transition-group",{staticClass:"video-screenshot-list",attrs:{name:"video-screenshot-list",tag:"div"}},e._l(e.screenshots,(function(n){return t("VideoScreenshot",{key:n.id,attrs:{filename:n.filename,"object-url":n.url,time:n.time},on:{discard:function(t){return e.discard(n)}}})})),1),e._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showBatch,expression:"showBatch"}],staticClass:"video-screenshot-batch"},[t("button",{on:{click:e.saveAll}},[t("VIcon",{attrs:{size:18,icon:"mdi-content-save"}}),e._v("全部保存")],1),e._v(" "),t("button",{on:{click:e.discardAll}},[t("VIcon",{attrs:{size:18,icon:"mdi-delete-forever"}}),e._v("全部丢弃\n ")],1)])],1)};h._withStripped=!0;const u=coreApis.download,v=coreApis.ui;var p=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"video-screenshot-thumbnail"},[e.objectUrl?t("img",{attrs:{src:e.objectUrl}}):e._e(),e._v(" "),e.objectUrl?t("div",{staticClass:"mask"},[t("a",{ref:"link",staticClass:"link",staticStyle:{display:"none"},attrs:{target:"_blank",href:e.objectUrl,download:e.filename}}),e._v(" "),t("button",{staticClass:"save",attrs:{title:"保存"},on:{click:e.save}},[t("VIcon",{attrs:{size:28,icon:"mdi-content-save-outline"}})],1),e._v(" "),t("button",{staticClass:"discard",attrs:{title:"丢弃"},on:{click:e.discard}},[t("VIcon",{attrs:{size:28,icon:"mdi-delete-forever-outline"}})],1),e._v(" "),t("span",{staticClass:"time"},[e._v(e._s(e.time))])]):t("div",{staticClass:"loading",on:{click:e.discard}})])};p._withStripped=!0;const m=Vue.extend({components:{VIcon:v.VIcon},props:{objectUrl:{type:String,required:!0},filename:{type:String,required:!0},time:{type:String,required:!0}},methods:{discard(){this.$emit("discard")},save(){const e=this.$refs.link;e.addEventListener("click",(e=>{e.stopPropagation()}),{capture:!0,once:!0}),e.click(),this.discard()}}});var f=o(332),b=o.n(f),g=o(45),y=o.n(g),w={insert:"head",singleton:!1};b()(y(),w);y().locals;function x(e,t,n,i,o,r,s,a){var c,d="function"==typeof e?e.options:e;if(t&&(d.render=t,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),r&&(d._scopeId="data-v-"+r),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},d._ssrRegister=c):o&&(c=a?function(){o.call(this,(d.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(d.functional){d._injectStyles=c;var l=d.render;d.render=function(e,t){return c.call(t),l(e,t)}}else{var h=d.beforeCreate;d.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:d}}const k=x(m,p,[],!1,null,null,null).exports,_=Vue.extend({components:{VIcon:v.VIcon,VideoScreenshot:k},data:()=>({screenshots:[]}),computed:{showBatch(){return this.screenshots.length>=2}},methods:{discard(e){this.screenshots.splice(this.screenshots.indexOf(e),1),e.revoke()},async saveAll(){const e=new u.DownloadPackage;this.screenshots.forEach((t=>{e.add(t.filename,t.blob,{date:new Date(t.timeStamp)})})),await e.emit(`${(0,s.getFriendlyTitle)()}.zip`),this.discardAll()},discardAll(){this.screenshots.forEach((e=>e.revoke())),this.screenshots=[]}}});var S=o(364),C=o.n(S),j={insert:"head",singleton:!1};b()(C(),j);C().locals;const A=x(_,h,[],!1,null,null,null).exports,T="video-screenshot-disable",O=(0,l.defineComponentMetadata)({name:"videoScreenshot",displayName:"启用视频截图",tags:[componentsTags.video],entry:async()=>{let n;(0,e.addControlBarButton)({name:"takeScreenshot",displayName:"截图",icon:"mdi-camera",order:0,action:async e=>{const{playerAgent:i}=await Promise.resolve().then(o.t.bind(o,833,23)),r=await i.query.video.element();if(r instanceof HTMLVideoElement){const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=e.currentTime;return new d(e,n,t)}(r,e.shiftKey);n||(n=(0,t.mountVueComponent)(A),document.body.insertAdjacentElement("beforeend",n.$el)),n.screenshots.unshift(i)}else{const{logError:e}=await Promise.resolve().then(o.t.bind(o,414,23));e("视频截图失败: 无法定位视频元素, 请尝试右击视频两次后另存为图片, 或将播放策略改为 AV1 或 AVC.")}}})},description:{"zh-CN":"启用视频快速截图, 将在播放器的时间右边增加一个截图按钮. 装有 `快捷键扩展` 时支持键盘快捷键Ctrl+Alt+C."},urlInclude:n.playerUrls,reload:()=>document.body.classList.remove(T),unload:()=>document.body.classList.add(T),plugin:{displayName:"视频截图 - 快捷键支持",setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.takeScreenshot={displayName:"视频截图",run:e=>{const{clickElement:t}=e;return t('.be-video-control-bar-extend [data-name="takeScreenshot"]',e)}}})),t("keymap.presets",(e=>{e.takeScreenshot="ctrl [shift] alt c"}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/seek-by-frames.js b/bb-evolved/registry/dist/components/video/player/seek-by-frames.js index c50872cefb..e5702707c5 100644 --- a/bb-evolved/registry/dist/components/video/player/seek-by-frames.js +++ b/bb-evolved/registry/dist/components/video/player/seek-by-frames.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/seek-by-frames"]=t():e["video/player/seek-by-frames"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,r={833:e=>{e.exports=coreApis.componentApis.video.playerAgent}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={exports:{}};return r[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var a=Object.create(null);n.r(a);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&o&&r;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>s[e]=()=>r[e]));return s.default=()=>r,n.d(a,s),a},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{n.d(a,{component:()=>c});const e=coreApis.componentApis.video.videoControlBar,t=coreApis.observer,r=coreApis.utils,o=coreApis.utils.urls,s=coreApis.pluginApis.data,i=coreApis.componentApis.define,l="seek-by-frame-disable",c=(0,i.defineComponentMetadata)({name:"seekByFrames",displayName:"启用逐帧调整",tags:[componentsTags.video],description:{"zh-CN":"在播放器的时间右边增加两个按钮, 用于**较精细**调整视频时间. 装有 `快捷键扩展` 时支持键盘快捷键Shift+/.\n\n> 注: `视频的实际播放帧率`跟`视频本身的帧率`和`显示器的刷新率`有关, 很难计算一个精准的数值, 部分视频仍然会有暂停不到那种一闪而过的图的情况."},entry:async()=>{await(0,r.playerReady)();const{playerAgent:o}=await Promise.resolve().then(n.t.bind(n,833,23));(0,s.addData)("ui.icons",(e=>{e["seek-left"]='\n\x3c!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\t\n\n\n\n',e["seek-right"]='\n\x3c!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\t\n\n\n\n'}));let a=0;(0,t.attributesSubtree)(`${o.query.control.buttons.quality.selector} ul`,(()=>{const e=dq(`${o.query.control.buttons.quality.selector} .bui-select-item-active, ${o.query.control.buttons.quality.selector} .active`),t=e?parseInt(e.getAttribute("data-value")):0,r=(()=>{switch(t){case 116:case 74:return 6e4/1001;default:return 3e4/1001}})();a=1/r}));const i=e=>{o.changeTime(e*a)};(0,e.addControlBarButton)({name:"seekPrevFrame",displayName:"上一帧",icon:"seek-left",order:1,action:()=>{i(-1)}}),(0,e.addControlBarButton)({name:"seekNextFrame",displayName:"下一帧",icon:"seek-right",order:2,action:()=>{i(1)}})},reload:()=>document.body.classList.remove(l),unload:()=>document.body.classList.add(l),urlInclude:o.playerUrls,plugin:{displayName:"逐帧调整 - 快捷键支持",setup:()=>{(0,s.addData)("keymap.actions",(e=>{e.previousFrame={displayName:"上一帧",run:e=>{const{clickElement:t}=e;return t('.be-video-control-bar-extend [data-name="seekPrevFrame"]',e)}},e.nextFrame={displayName:"下一帧",run:e=>{const{clickElement:t}=e;return t('.be-video-control-bar-extend [data-name="seekNextFrame"]',e)}}})),(0,s.addData)("keymap.presets",(e=>{e.previousFrame="shift arrowLeft",e.nextFrame="shift arrowRight"}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),a=a.component})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/seek-by-frames"]=t():e["video/player/seek-by-frames"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,r={833:e=>{e.exports=coreApis.componentApis.video.playerAgent}},o={};function n(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={exports:{}};return r[e](a,a.exports,n),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var a=Object.create(null);n.r(a);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&o&&r;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>s[e]=()=>r[e]));return s.default=()=>r,n.d(a,s),a},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{n.d(a,{component:()=>c});const e=coreApis.componentApis.video.videoControlBar,t=coreApis.observer,r=coreApis.utils,o=coreApis.utils.urls,s=coreApis.pluginApis.data,i=coreApis.componentApis.define,l="seek-by-frame-disable",c=(0,i.defineComponentMetadata)({name:"seekByFrames",displayName:"启用逐帧调整",tags:[componentsTags.video],description:{"zh-CN":"在播放器的时间右边增加两个按钮, 用于**较精细**调整视频时间. 装有 `快捷键扩展` 时支持键盘快捷键Shift+/.\n\n> 注: `视频的实际播放帧率`跟`视频本身的帧率`和`显示器的刷新率`有关, 很难计算一个精准的数值, 部分视频仍然会有暂停不到那种一闪而过的图的情况."},entry:async()=>{await(0,r.playerReady)();const{playerAgent:o}=await Promise.resolve().then(n.t.bind(n,833,23));(0,s.addData)("ui.icons",(e=>{e["seek-left"]='\n\x3c!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\t\n\n\n\n',e["seek-right"]='\n\x3c!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\t\n\n\n\n'}));let a=0;(0,t.attributesSubtree)(`${o.query.control.buttons.quality.selector} ul`,(()=>{const e=dq(`${o.query.control.buttons.quality.selector} .bui-select-item-active, ${o.query.control.buttons.quality.selector} .active`),t=e?parseInt(e.getAttribute("data-value")):0,r=(()=>{switch(t){case 116:case 74:return 6e4/1001;default:return 3e4/1001}})();a=1/r}));const i=e=>{o.changeTime(e*a)};(0,e.addControlBarButton)({name:"seekPrevFrame",displayName:"上一帧",icon:"seek-left",order:1,action:()=>{i(-1)}}),(0,e.addControlBarButton)({name:"seekNextFrame",displayName:"下一帧",icon:"seek-right",order:2,action:()=>{i(1)}})},reload:()=>document.body.classList.remove(l),unload:()=>document.body.classList.add(l),urlInclude:o.playerUrls,plugin:{displayName:"逐帧调整 - 快捷键支持",setup:()=>{(0,s.addData)("keymap.actions",(e=>{e.previousFrame={displayName:"上一帧",run:e=>{const{clickElement:t}=e;return t('.be-video-control-bar-extend [data-name="seekPrevFrame"]',e)}},e.nextFrame={displayName:"下一帧",run:e=>{const{clickElement:t}=e;return t('.be-video-control-bar-extend [data-name="seekNextFrame"]',e)}}})),(0,s.addData)("keymap.presets",(e=>{e.previousFrame="shift arrowLeft",e.nextFrame="shift arrowRight"}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),a=a.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/show-cover.js b/bb-evolved/registry/dist/components/video/player/show-cover.js index 5527f5594f..4c477744ae 100644 --- a/bb-evolved/registry/dist/components/video/player/show-cover.js +++ b/bb-evolved/registry/dist/components/video/player/show-cover.js @@ -6,4 +6,4 @@ t.i=function(e,o,n){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(n)for(var i=0;i{var n=o(912);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},77:e=>{"use strict";e.exports=coreApis.componentApis.video.videoInfo}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.componentApis.video.playerAgent,o=coreApis.observer,n=coreApis.utils.urls,a=(0,e.defineComponentMetadata)({name:"showCoverBeforePlay",displayName:"播放前显示封面",urlInclude:n.playerUrls,entry:async()=>{let e;const n=()=>document.documentElement.style.removeProperty("--cover-url");(0,o.videoChange)((()=>{t.playerAgent.addEventListener(t.PlayerAgentEventTypes.Pause,(()=>{n()})),t.playerAgent.addEventListener(t.PlayerAgentEventTypes.Play,(()=>{n()}))}));(0,o.videoChange)((async t=>{let{aid:o}=t;if(!o)return void console.warn("[播放前显示封面] 未找到av号");if(o===e)return;e=o;const{VideoInfo:n}=await Promise.resolve().then(r.t.bind(r,77,23)),i=new n(o);await i.fetchInfo(),document.documentElement.style.setProperty("--cover-url",`url('${i.coverUrl}')`)}))},instantStyles:[{name:"showCoverBeforePlay",style:()=>Promise.resolve().then(r.t.bind(r,956,23))}],description:{"zh-CN":"在视频开始播放前, 在播放器中显示封面."},tags:[componentsTags.video],commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var n=o(912);n&&n.__esModule&&(n=n.default),e.exports="string"==typeof n?n:n.toString()},77:e=>{"use strict";e.exports=coreApis.componentApis.video.videoInfo}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={id:e,exports:{}};return o[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,r.d(i,a),i},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.componentApis.video.playerAgent,o=coreApis.observer,n=coreApis.utils.urls,a=(0,e.defineComponentMetadata)({name:"showCoverBeforePlay",displayName:"播放前显示封面",urlInclude:n.playerUrls,entry:async()=>{let e;const n=()=>document.documentElement.style.removeProperty("--cover-url");(0,o.videoChange)((()=>{t.playerAgent.addEventListener(t.PlayerAgentEventTypes.Pause,(()=>{n()})),t.playerAgent.addEventListener(t.PlayerAgentEventTypes.Play,(()=>{n()}))}));(0,o.videoChange)((async t=>{let{aid:o}=t;if(!o)return void console.warn("[播放前显示封面] 未找到av号");if(o===e)return;e=o;const{VideoInfo:n}=await Promise.resolve().then(r.t.bind(r,77,23)),i=new n(o);await i.fetchInfo(),document.documentElement.style.setProperty("--cover-url",`url('${i.coverUrl}')`)}))},instantStyles:[{name:"showCoverBeforePlay",style:()=>Promise.resolve().then(r.t.bind(r,956,23))}],description:{"zh-CN":"在视频开始播放前, 在播放器中显示封面."},tags:[componentsTags.video],commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/show-upload-time.js b/bb-evolved/registry/dist/components/video/player/show-upload-time.js index a7178372d6..26a6929e7f 100644 --- a/bb-evolved/registry/dist/components/video/player/show-upload-time.js +++ b/bb-evolved/registry/dist/components/video/player/show-upload-time.js @@ -6,4 +6,4 @@ t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var r={};if(o)for(var i=0;i{var o=n(657);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>d});const e=coreApis.componentApis.define,t=coreApis.observer,n=coreApis.utils,o=coreApis.utils.urls,a=coreApis.componentApis.video.videoInfo,s=coreApis.utils.log,c=coreApis.settings,l="显示视频投稿时间",p=(0,s.useScopedConsole)(l),d=(0,e.defineComponentMetadata)({author:{name:"wisokey",link:"https://github.com/wisokey"},name:"showUploadTime",displayName:l,description:"为视频播放页面的推荐列表中的视频添加显示视频投稿时间.\n\n`时间格式` 替换up名的文本格式 (默认为'up · yyyy-MM-dd'):\n - y: 年\n - M: 月\n - d: 日\n - h: 时\n - m: 分\n - s: 秒\n - q: 季度\n - up: up名\n - \\r: 回车符\n - \\n:换行符\n - \\t:制表符",tags:[componentsTags.video],urlInclude:o.videoUrls,options:{formatString:{displayName:"文本格式",defaultValue:"up · yyyy-MM-dd",validator:(e,t)=>e?.trim()?e:t}},instantStyles:[{name:"showUploadTime",style:()=>Promise.resolve().then(r.t.bind(r,439,23))}],entry:async e=>{let{metadata:o}=e;const r=(e,t,n)=>{const o={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3)},r={up:n,"\\\\r":"\r","\\\\n":"\n","\\\\t":"\t"};let i=t.match(/(y+)/);null!==i&&(t=t.replace(i[0],`${e.getFullYear()}`.substring(4-i[0].length)));for(const e in o)e&&(i=t.match(new RegExp(`(${e})`)),null!==i&&(t=t.replace(i[0],1===i[0].length?o[e]:`00${o[e]}`.substring(`${o[e]}`.length))));for(const e in r)e&&(i=t.match(new RegExp(`(${e})`)),null!==i&&(t=t.replace(i[0],r[e])));return t},i=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(!n){const{options:e}=(0,c.getComponentSettings)(o.name);n=e.formatString?.toString()}e.forEach((async e=>{if(t||!e.item.owner.mark){if(e.item.owner.mark=!0,t||!e.mark){let t;if(e.mark=!0,e.item.ctime)t=new Date(1e3*e.item.ctime);else{const n=new a.VideoInfo(e.item.aid);await n.fetchInfo(),t=n.createTime,e.item.ctime=t.getTime()/1e3}e.oldname||(e.oldname=e.name),e.name=r(t,n,e.oldname)}e.item.owner.name=e.name}}))},s=()=>{const e=dq("#reco_list");let t=(0,n.getVue2Data)(e);return void 0===t.isOpen&&(t=t.$children[0],void 0===t.isOpen&&(p.log("结构获取失败"),p.log(document.URL),p.log(t))),t};(0,c.addComponentListener)(`${o.name}.formatString`,(e=>{const t=s().$children.filter((e=>-1===e.$el.className.indexOf("special")));i(t,!0,e)}),!1),(0,t.urlChange)((async()=>{await(0,n.playerReady)();const e=s().$children.filter((e=>-1===e.$el.className.indexOf("special")));i(e)})),await(0,n.playerReady)(),(0,t.childList)(dq("#reco_list .rec-list"),(async()=>{const e=s();if(e.isOpen){const t=e.$children.filter((e=>-1===e.$el.className.indexOf("special")));i(t)}}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(r[a]=!0)}for(var s=0;s{var o=n(657);o&&o.__esModule&&(o=o.default),e.exports="string"==typeof o?o:o.toString()}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var i=o[e]={id:e,exports:{}};return n[e](i,i.exports,r),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var i=Object.create(null);r.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,r.d(i,a),i},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";r.d(i,{component:()=>d});const e=coreApis.componentApis.define,t=coreApis.observer,n=coreApis.utils,o=coreApis.utils.urls,a=coreApis.componentApis.video.videoInfo,s=coreApis.utils.log,c=coreApis.settings,l="显示视频投稿时间",p=(0,s.useScopedConsole)(l),d=(0,e.defineComponentMetadata)({author:{name:"wisokey",link:"https://github.com/wisokey"},name:"showUploadTime",displayName:l,description:"为视频播放页面的推荐列表中的视频添加显示视频投稿时间.\n\n`时间格式` 替换up名的文本格式 (默认为'up · yyyy-MM-dd'):\n - y: 年\n - M: 月\n - d: 日\n - h: 时\n - m: 分\n - s: 秒\n - q: 季度\n - up: up名\n - \\r: 回车符\n - \\n:换行符\n - \\t:制表符",tags:[componentsTags.video],urlInclude:o.videoUrls,options:{formatString:{displayName:"文本格式",defaultValue:"up · yyyy-MM-dd",validator:(e,t)=>e?.trim()?e:t}},instantStyles:[{name:"showUploadTime",style:()=>Promise.resolve().then(r.t.bind(r,439,23))}],entry:async e=>{let{metadata:o}=e;const r=(e,t,n)=>{const o={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3)},r={up:n,"\\\\r":"\r","\\\\n":"\n","\\\\t":"\t"};let i=t.match(/(y+)/);null!==i&&(t=t.replace(i[0],`${e.getFullYear()}`.substring(4-i[0].length)));for(const e in o)e&&(i=t.match(new RegExp(`(${e})`)),null!==i&&(t=t.replace(i[0],1===i[0].length?o[e]:`00${o[e]}`.substring(`${o[e]}`.length))));for(const e in r)e&&(i=t.match(new RegExp(`(${e})`)),null!==i&&(t=t.replace(i[0],r[e])));return t},i=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(!n){const{options:e}=(0,c.getComponentSettings)(o.name);n=e.formatString?.toString()}e.forEach((async e=>{if(t||!e.item.owner.mark){if(e.item.owner.mark=!0,t||!e.mark){let t;if(e.mark=!0,e.item.ctime)t=new Date(1e3*e.item.ctime);else{const n=new a.VideoInfo(e.item.aid);await n.fetchInfo(),t=n.createTime,e.item.ctime=t.getTime()/1e3}e.oldname||(e.oldname=e.name),e.name=r(t,n,e.oldname)}e.item.owner.name=e.name}}))},s=()=>{const e=dq("#reco_list");let t=(0,n.getVue2Data)(e);return void 0===t.isOpen&&(t=t.$children[0],void 0===t.isOpen&&(p.log("结构获取失败"),p.log(document.URL),p.log(t))),t};(0,c.addComponentListener)(`${o.name}.formatString`,(e=>{const t=s().$children.filter((e=>-1===e.$el.className.indexOf("special")));i(t,!0,e)}),!1),(0,t.urlChange)((async()=>{await(0,n.playerReady)();const e=s().$children.filter((e=>-1===e.$el.className.indexOf("special")));i(e)})),await(0,n.playerReady)(),(0,t.childList)(dq("#reco_list .rec-list"),(async()=>{const e=s();if(e.isOpen){const t=e.$children.filter((e=>-1===e.$el.className.indexOf("special")));i(t)}}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/player/skip-charge-list.js b/bb-evolved/registry/dist/components/video/player/skip-charge-list.js index a6d404ebd6..80818688d5 100644 --- a/bb-evolved/registry/dist/components/video/player/skip-charge-list.js +++ b/bb-evolved/registry/dist/components/video/player/skip-charge-list.js @@ -6,4 +6,4 @@ t.i=function(e,o,r){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign e=[[null,e,""]]);var n={};if(r)for(var i=0;i{var r=o(447);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},391:e=>{"use strict";e.exports=coreApis.observer},200:e=>{"use strict";e.exports=coreApis.spinQuery}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&r&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,n.d(i,s),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>a});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,r="skip-charge-list-disable",s=(0,t.styledComponentEntry)((()=>Promise.resolve().then(n.t.bind(n,237,23))),(async()=>{const{videoChange:e}=await Promise.resolve().then(n.t.bind(n,391,23)),{select:t}=await Promise.resolve().then(n.t.bind(n,200,23));e((async()=>{(await t("video"))?.addEventListener("ended",(async()=>{if(document.body.classList.contains(r))return;(await t(".bilibili-player-electric-panel-jump,.bpx-player-electric-jump"))?.click()}))}))})),a=(0,e.defineComponentMetadata)({name:"skipChargeList",displayName:"跳过充电鸣谢",tags:[componentsTags.video],entry:s,description:{"zh-CN":"自动跳过视频结尾的充电鸣谢. 注意: 不包括番剧承包鸣谢."},reload:()=>document.body.classList.remove(r),unload:()=>document.body.classList.add(r),urlInclude:o.playerUrls,commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +var a=this[i][0];null!=a&&(n[a]=!0)}for(var s=0;s{var r=o(447);r&&r.__esModule&&(r=r.default),e.exports="string"==typeof r?r:r.toString()},391:e=>{"use strict";e.exports=coreApis.observer},200:e=>{"use strict";e.exports=coreApis.spinQuery}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&o;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{component:()=>s});const e=coreApis.componentApis.define,t=coreApis.componentApis.styledComponent,o=coreApis.utils.urls,r="skip-charge-list-disable",a=(0,t.styledComponentEntry)((()=>Promise.resolve().then(n.t.bind(n,237,23))),(async()=>{const{videoChange:e}=await Promise.resolve().then(n.t.bind(n,391,23)),{select:t}=await Promise.resolve().then(n.t.bind(n,200,23));e((async()=>{(await t("video"))?.addEventListener("ended",(async()=>{if(document.body.classList.contains(r))return;(await t(".bilibili-player-electric-panel-jump,.bpx-player-electric-jump"))?.click()}))}))})),s=(0,e.defineComponentMetadata)({name:"skipChargeList",displayName:"跳过充电鸣谢",tags:[componentsTags.video],entry:a,description:{"zh-CN":"自动跳过视频结尾的充电鸣谢. 注意: 不包括番剧承包鸣谢."},reload:()=>document.body.classList.remove(r),unload:()=>document.body.classList.add(r),urlInclude:o.playerUrls,commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/quick-favorite.js b/bb-evolved/registry/dist/components/video/quick-favorite.js index c1e85c6460..3ae495c805 100644 --- a/bb-evolved/registry/dist/components/video/quick-favorite.js +++ b/bb-evolved/registry/dist/components/video/quick-favorite.js @@ -9,4 +9,4 @@ A=[[null,A,""]]);var n={};if(i)for(var o=0;o{"use strict";var i,n=function(){return void 0===i&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -i=Boolean(window&&document&&document.all&&!window.atob)),i},o=function(){var A={};return function(t){if(void 0===A[t]){var e=document.querySelector(t);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(A){e=null}A[t]=e}return A[t]}}(),a=[];function r(A){for(var t=-1,e=0;e{"use strict";e.r(t),e.d(t,{default:()=>y});var i=function(){var A=this,t=A._self._c;A._self._setupProxy;return t("span",{staticClass:"quick-favorite be-quick-favorite video-toolbar-left-item",class:{on:A.isFavorite,...A.displayModeClass},attrs:{title:"快速收藏"},on:{click:function(t){return!t.type.indexOf("key")&&A._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button||t.target!==t.currentTarget?null:A.toggle()},contextmenu:function(t){if(t.preventDefault(),t.target!==t.currentTarget)return null;A.listShowing=!A.listShowing}}},[t("i",{staticClass:"quick-favorite-icon icon",on:{click:function(t){return!t.type.indexOf("key")&&A._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:A.toggle()},contextmenu:function(t){t.preventDefault(),A.listShowing=!A.listShowing}}}),A._v(" "),t("div",{staticClass:"text",on:{click:function(t){return!t.type.indexOf("key")&&A._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:A.toggle()},contextmenu:function(t){t.preventDefault(),A.listShowing=!A.listShowing}}},[A._v("\n 快速收藏\n ")]),A._v(" "),t("div",{ref:"selectList",staticClass:"select-list",class:{show:A.listShowing}},[t("div",{staticClass:"lists"},[A._v("\n 选择快速收藏夹:\n "),t("VDropdown",{attrs:{items:A.lists.map((A=>A.title)),"key-mapper":A=>A},scopedSlots:A._u([{key:"item",fn:function({item:t}){return[A._v("\n "+A._s(t)+"\n ")]}}]),model:{value:A.selectedFavorite,callback:function(t){A.selectedFavorite=t},expression:"selectedFavorite"}})],1),A._v(" "),t("div",{staticClass:"lists-tip",class:{show:A.listShowing}},[A._v("右键点击快速收藏可再次打开")])]),A._v(" "),t("div",{staticClass:"tip",class:{show:A.tipShowing}},[A._v(A._s(A.tipText))])])};i._withStripped=!0;const n=coreApis.settings,o=coreApis.ajax;var a=e(605);const r=coreApis.utils.log,s=coreApis.toast,l=coreApis.ui;var c=e(153);const{options:d}=(0,n.getComponentSettings)("quickFavorite"),u=Vue.extend({components:{VDropdown:l.VDropdown},data(){const{displayMode:A}=(0,n.getComponentSettings)("outerWatchlater").options;return{aid:unsafeWindow.aid,favoriteTitle:"",isFavorite:!1,tipText:"",tipShowing:!1,tipHandle:0,lists:[],selectedFavorite:"<未选择>",listShowing:!1,displayMode:A}},computed:{displayModeClass(){return{"icon-only":this.displayMode===c.d.Icon,"icon-and-text":this.displayMode===c.d.IconAndText}}},watch:{selectedFavorite(A){if(0===this.lists.length)return;const{lists:t}=this,e=t.find((t=>t.title===A));e?(d.favoriteFolderID=e.id,this.syncFavoriteState()):console.error("list not found in selectedFavorite(value)")},async listShowing(A){if(A&&(document.addEventListener("click",(A=>{const t=this.$el,e=A.target;e===t||t.contains(e)||(this.listShowing=!1)})),0===this.lists.length))try{const A=await(0,o.getJsonWithCredentials)(`https://api.bilibili.com/medialist/gateway/base/created?pn=1&ps=100&up_mid=${(0,a.getUID)()}&is_space=0`);if(0!==A.code)throw new Error(`获取收藏夹列表失败: ${A.message}`);this.lists=lodash.get(A,"data.list",[])}catch(A){(0,r.logError)(A)}}},created(){this.syncFavoriteState(),(0,n.addComponentListener)("quickFavorite.displayMode",(A=>{this.displayMode=A}))},methods:{async syncFavoriteState(){if(0!==d.favoriteFolderID&&this.aid)try{const A=await(0,o.getJsonWithCredentials)(`https://api.bilibili.com/x/v3/fav/folder/created/list-all?type=2&rid=${this.aid}&up_mid=${(0,a.getUID)()}`);if(0!==A.code)throw new Error(`获取收藏状态失败: ${A.message}`);const t=lodash.get(A,"data.list",[]).find((A=>A.id===d.favoriteFolderID));if(void 0===t)return void(d.favoriteFolderID=0);this.isFavorite=Boolean(t.fav_state),this.favoriteTitle=t.title,this.selectedFavorite=t.title}catch(A){(0,r.logError)(A)}},showTip(A){this.tipText=A,this.tipShowing=!0,this.tipHandle&&clearTimeout(this.tipHandle),this.tipHandle=setTimeout((()=>{this.tipShowing=!1}),2e3)},async toggle(){if(0===d.favoriteFolderID)return void(this.listShowing=!0);const A={rid:this.aid,type:2,add_media_ids:"",del_media_ids:"",csrf:(0,a.getCsrf)()};A[this.isFavorite?"del_media_ids":"add_media_ids"]=d.favoriteFolderID.toString();try{await(0,o.postTextWithCredentials)("https://api.bilibili.com/x/v3/fav/resource/deal",Object.entries(A).map((A=>{let[t,e]=A;return`${t}=${e}`})).join("&")),this.isFavorite=!this.isFavorite,this.showTip(this.isFavorite?`已添加至收藏夹: ${this.favoriteTitle}`:`已移出收藏夹: ${this.favoriteTitle}`)}catch(A){s.Toast.error(`快速收藏失败: ${A.message}`,"快速收藏"),console.error(A)}}}});var p=e(332),f=e.n(p),v=e(441),g=e.n(v),h={insert:"head",singleton:!1};f()(g(),h);g().locals;var m=function(A,t,e,i,n,o,a,r){var s,l="function"==typeof A?A.options:A;if(t&&(l.render=t,l.staticRenderFns=e,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(s=function(A){(A=A||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(A=__VUE_SSR_CONTEXT__),n&&n.call(this,A),A&&A._registeredComponents&&A._registeredComponents.add(a)},l._ssrRegister=s):n&&(s=r?function(){n.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:n),s)if(l.functional){l._injectStyles=s;var c=l.render;l.render=function(A,t){return s.call(t),c(A,t)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,s):[s]}return{exports:A,options:l}}(u,i,[],!1,null,"2e043480",null);const y=m.exports},952:A=>{"use strict";A.exports=coreApis.componentApis.define},605:A=>{"use strict";A.exports=coreApis.utils}},t={};function e(i){var n=t[i];if(void 0!==n)return n.exports;var o=t[i]={id:i,exports:{}};return A[i](o,o.exports,e),o.exports}e.n=A=>{var t=A&&A.__esModule?()=>A.default:()=>A;return e.d(t,{a:t}),t},e.d=(A,t)=>{for(var i in t)e.o(t,i)&&!e.o(A,i)&&Object.defineProperty(A,i,{enumerable:!0,get:t[i]})},e.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t),e.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var i={};return(()=>{"use strict";e.d(i,{component:()=>s});var A=e(952),t=e(605);const n=coreApis.utils.urls,o=coreApis.componentApis.video.videoActions,a=coreApis.observer;var r=e(153);const s=(0,A.defineComponentMetadata)({name:"quickFavorite",displayName:"启用快速收藏",description:{"zh-CN":"启用快速收藏, 在视频页面可以一键收藏到设定的某个收藏夹. 首次启动时或者右键点击快速收藏图标可以配置快速收藏夹. 请注意如果在在收藏夹播放页面仍然显示, 是不会实时同步右侧的播放列表的."},entry:async A=>{let{settings:i}=A;if(n.favoriteListUrls.some(t.matchUrlPattern)&&!i.options.showInFavoritePages)return;if(!(0,t.getUID)())return;const r=await Promise.resolve().then(e.bind(e,58)),s=(0,t.mountVueComponent)(r);await(0,o.addVideoActionButton)((()=>s.$el)),(0,a.videoChange)((()=>{s.aid=unsafeWindow.aid,s.syncFavoriteState()}))},unload:()=>{dqa(".be-quick-favorite").forEach((A=>A.style.display=""))},reload:()=>{dqa(".be-quick-favorite").forEach((A=>A.style.display="inline-block"))},urlInclude:n.videoUrls,tags:[componentsTags.video],options:r.Y,plugin:{displayName:"快速收藏 - 快捷键支持",setup:A=>{let{addData:t}=A;t("keymap.actions",(A=>{A.quickFavorite={displayName:"快速收藏",run:A=>{const{clickElement:t}=A;return t(".be-quick-favorite",A)}}})),t("keymap.presets",(A=>{A.quickFavorite="shift s"}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"})})(),i=i.component})())); \ No newline at end of file +i=Boolean(window&&document&&document.all&&!window.atob)),i},o=function(){var A={};return function(t){if(void 0===A[t]){var e=document.querySelector(t);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(A){e=null}A[t]=e}return A[t]}}(),a=[];function r(A){for(var t=-1,e=0;e{"use strict";e.r(t),e.d(t,{default:()=>y});var i=function(){var A=this,t=A._self._c;A._self._setupProxy;return t("span",{staticClass:"quick-favorite be-quick-favorite video-toolbar-left-item",class:{on:A.isFavorite,...A.displayModeClass},attrs:{title:"快速收藏"},on:{click:function(t){return!t.type.indexOf("key")&&A._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button||t.target!==t.currentTarget?null:A.toggle()},contextmenu:function(t){if(t.preventDefault(),t.target!==t.currentTarget)return null;A.listShowing=!A.listShowing}}},[t("i",{staticClass:"quick-favorite-icon icon",on:{click:function(t){return!t.type.indexOf("key")&&A._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:A.toggle()},contextmenu:function(t){t.preventDefault(),A.listShowing=!A.listShowing}}}),A._v(" "),t("div",{staticClass:"text",on:{click:function(t){return!t.type.indexOf("key")&&A._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:A.toggle()},contextmenu:function(t){t.preventDefault(),A.listShowing=!A.listShowing}}},[A._v("\n 快速收藏\n ")]),A._v(" "),t("div",{ref:"selectList",staticClass:"select-list",class:{show:A.listShowing}},[t("div",{staticClass:"lists"},[A._v("\n 选择快速收藏夹:\n "),t("VDropdown",{attrs:{items:A.lists.map((A=>A.title)),"key-mapper":A=>A},scopedSlots:A._u([{key:"item",fn:function({item:t}){return[A._v("\n "+A._s(t)+"\n ")]}}]),model:{value:A.selectedFavorite,callback:function(t){A.selectedFavorite=t},expression:"selectedFavorite"}})],1),A._v(" "),t("div",{staticClass:"lists-tip",class:{show:A.listShowing}},[A._v("右键点击快速收藏可再次打开")])]),A._v(" "),t("div",{staticClass:"tip",class:{show:A.tipShowing}},[A._v(A._s(A.tipText))])])};i._withStripped=!0;const n=coreApis.settings,o=coreApis.ajax;var a=e(605);const r=coreApis.utils.log,s=coreApis.toast,l=coreApis.ui;var c=e(153);const{options:d}=(0,n.getComponentSettings)("quickFavorite"),u=Vue.extend({components:{VDropdown:l.VDropdown},data(){const{displayMode:A}=(0,n.getComponentSettings)("outerWatchlater").options;return{aid:unsafeWindow.aid,favoriteTitle:"",isFavorite:!1,tipText:"",tipShowing:!1,tipHandle:0,lists:[],selectedFavorite:"<未选择>",listShowing:!1,displayMode:A}},computed:{displayModeClass(){return{"icon-only":this.displayMode===c.d.Icon,"icon-and-text":this.displayMode===c.d.IconAndText}}},watch:{selectedFavorite(A){if(0===this.lists.length)return;const{lists:t}=this,e=t.find((t=>t.title===A));e?(d.favoriteFolderID=e.id,this.syncFavoriteState()):console.error("list not found in selectedFavorite(value)")},async listShowing(A){if(A&&(document.addEventListener("click",(A=>{const t=this.$el,e=A.target;e===t||t.contains(e)||(this.listShowing=!1)})),0===this.lists.length))try{const A=await(0,o.getJsonWithCredentials)(`https://api.bilibili.com/medialist/gateway/base/created?pn=1&ps=100&up_mid=${(0,a.getUID)()}&is_space=0`);if(0!==A.code)throw new Error(`获取收藏夹列表失败: ${A.message}`);this.lists=lodash.get(A,"data.list",[])}catch(A){(0,r.logError)(A)}}},created(){this.syncFavoriteState(),(0,n.addComponentListener)("quickFavorite.displayMode",(A=>{this.displayMode=A}))},methods:{async syncFavoriteState(){if(0!==d.favoriteFolderID&&this.aid)try{const A=await(0,o.getJsonWithCredentials)(`https://api.bilibili.com/x/v3/fav/folder/created/list-all?type=2&rid=${this.aid}&up_mid=${(0,a.getUID)()}`);if(0!==A.code)throw new Error(`获取收藏状态失败: ${A.message}`);const t=lodash.get(A,"data.list",[]).find((A=>A.id===d.favoriteFolderID));if(void 0===t)return void(d.favoriteFolderID=0);this.isFavorite=Boolean(t.fav_state),this.favoriteTitle=t.title,this.selectedFavorite=t.title}catch(A){(0,r.logError)(A)}},showTip(A){this.tipText=A,this.tipShowing=!0,this.tipHandle&&clearTimeout(this.tipHandle),this.tipHandle=setTimeout((()=>{this.tipShowing=!1}),2e3)},async toggle(){if(0===d.favoriteFolderID)return void(this.listShowing=!0);const A={rid:this.aid,type:2,add_media_ids:"",del_media_ids:"",csrf:(0,a.getCsrf)()};A[this.isFavorite?"del_media_ids":"add_media_ids"]=d.favoriteFolderID.toString();try{await(0,o.postTextWithCredentials)("https://api.bilibili.com/x/v3/fav/resource/deal",Object.entries(A).map((A=>{let[t,e]=A;return`${t}=${e}`})).join("&")),this.isFavorite=!this.isFavorite,this.showTip(this.isFavorite?`已添加至收藏夹: ${this.favoriteTitle}`:`已移出收藏夹: ${this.favoriteTitle}`)}catch(A){s.Toast.error(`快速收藏失败: ${A.message}`,"快速收藏"),console.error(A)}}}});var p=e(332),f=e.n(p),v=e(441),g=e.n(v),h={insert:"head",singleton:!1};f()(g(),h);g().locals;var m=function(A,t,e,i,n,o,a,r){var s,l="function"==typeof A?A.options:A;if(t&&(l.render=t,l.staticRenderFns=e,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(s=function(A){(A=A||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(A=__VUE_SSR_CONTEXT__),n&&n.call(this,A),A&&A._registeredComponents&&A._registeredComponents.add(a)},l._ssrRegister=s):n&&(s=r?function(){n.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:n),s)if(l.functional){l._injectStyles=s;var c=l.render;l.render=function(A,t){return s.call(t),c(A,t)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,s):[s]}return{exports:A,options:l}}(u,i,[],!1,null,"2e043480",null);const y=m.exports},952:A=>{"use strict";A.exports=coreApis.componentApis.define},605:A=>{"use strict";A.exports=coreApis.utils}},t={};function e(i){var n=t[i];if(void 0!==n)return n.exports;var o=t[i]={id:i,exports:{}};return A[i](o,o.exports,e),o.exports}e.n=A=>{var t=A&&A.__esModule?()=>A.default:()=>A;return e.d(t,{a:t}),t},e.d=(A,t)=>{for(var i in t)e.o(t,i)&&!e.o(A,i)&&Object.defineProperty(A,i,{enumerable:!0,get:t[i]})},e.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t),e.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var i={};return(()=>{"use strict";e.d(i,{component:()=>s});var A=e(952),t=e(605);const n=coreApis.utils.urls,o=coreApis.componentApis.video.videoActions,a=coreApis.observer;var r=e(153);const s=(0,A.defineComponentMetadata)({name:"quickFavorite",displayName:"启用快速收藏",description:{"zh-CN":"启用快速收藏, 在视频页面可以一键收藏到设定的某个收藏夹. 首次启动时或者右键点击快速收藏图标可以配置快速收藏夹. 请注意如果在在收藏夹播放页面仍然显示, 是不会实时同步右侧的播放列表的."},entry:async A=>{let{settings:i}=A;if(n.favoriteListUrls.some(t.matchUrlPattern)&&!i.options.showInFavoritePages)return;if(!(0,t.getUID)())return;const r=await Promise.resolve().then(e.bind(e,58)),s=(0,t.mountVueComponent)(r);await(0,o.addVideoActionButton)((()=>s.$el)),(0,a.videoChange)((()=>{s.aid=unsafeWindow.aid,s.syncFavoriteState()}))},unload:()=>{dqa(".be-quick-favorite").forEach((A=>A.style.display=""))},reload:()=>{dqa(".be-quick-favorite").forEach((A=>A.style.display="inline-block"))},urlInclude:n.videoUrls,tags:[componentsTags.video],options:r.Y,plugin:{displayName:"快速收藏 - 快捷键支持",setup:A=>{let{addData:t}=A;t("keymap.actions",(A=>{A.quickFavorite={displayName:"快速收藏",run:A=>{const{clickElement:t}=A;return t(".be-quick-favorite",A)}}})),t("keymap.presets",(A=>{A.quickFavorite="shift s"}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"})})(),i=i.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/seo-redirect.js b/bb-evolved/registry/dist/components/video/seo-redirect.js index 239c251eed..e860042374 100644 --- a/bb-evolved/registry/dist/components/video/seo-redirect.js +++ b/bb-evolved/registry/dist/components/video/seo-redirect.js @@ -1 +1 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/seo-redirect"]=o():e["video/seo-redirect"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var i in t)e.o(t,i)&&!e.o(o,i)&&Object.defineProperty(o,i,{enumerable:!0,get:t[i]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{component:()=>t});const t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"seoRedirect",displayName:"SEO 页面重定向",entry:()=>{window.location.assign(document.URL.replace("/s/","/"))},urlInclude:["//www.bilibili.com/s/video/"],tags:[componentsTags.video],description:{"zh-CN":"进入 SEO 视频页面时 (`https://www.bilibili.com/s/video/`) 自动跳转到原视频页面."},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"});return o=o.component})())); \ No newline at end of file +!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/seo-redirect"]=o():e["video/seo-redirect"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var i in t)e.o(t,i)&&!e.o(o,i)&&Object.defineProperty(o,i,{enumerable:!0,get:t[i]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{component:()=>t});const t=(0,coreApis.componentApis.define.defineComponentMetadata)({name:"seoRedirect",displayName:"SEO 页面重定向",entry:()=>{window.location.assign(document.URL.replace("/s/","/"))},urlInclude:["//www.bilibili.com/s/video/"],tags:[componentsTags.video],description:{"zh-CN":"进入 SEO 视频页面时 (`https://www.bilibili.com/s/video/`) 自动跳转到原视频页面."},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"});return o=o.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/components/video/subtitle/download.js b/bb-evolved/registry/dist/components/video/subtitle/download.js index 57a4a83a5c..56cc51dec2 100644 --- a/bb-evolved/registry/dist/components/video/subtitle/download.js +++ b/bb-evolved/registry/dist/components/video/subtitle/download.js @@ -1,12 +1,12 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["video/subtitle/download"]=e():t["video/subtitle/download"]=e()}(globalThis,(()=>(()=>{var t,e,n={597:(t,e,n)=>{"use strict";n.d(e,{mE:()=>l});const o=coreApis.ajax;var i=n(391),r=n(674);const a=async()=>{const{SubtitleConverter:t,SubtitleSize:e,SubtitleLocation:o}=await Promise.resolve().then(n.bind(n,375)),{playerAgent:i}=await Promise.resolve().then(n.t.bind(n,833,23)),a=i.getPlayerConfig("subtitle",null);if(!a)return[t.defaultConfig,""];const s=a.lan,l=(0,r.getFriendlyTitle)(!0),c={.6:e.VerySmall,.8:e.Small,1:e.Medium,1.3:e.Large,1.6:e.VeryLarge}[a.fontsize],d=parseInt(a.color).toString(16),{opacity:u}=a,f={bc:o.BottomCenter,bl:o.BottomLeft,br:o.BottomRight,tc:o.TopCenter,tl:o.TopLeft,tr:o.TopRight,"bottom-center":o.BottomCenter,"bottom-left":o.BottomLeft,"bottom-right":o.BottomRight,"top-center":o.TopCenter,"top-left":o.TopLeft,"top-right":o.TopRight}[a.position],p=i.query.video.element.sync();return[{title:l,height:p.videoHeight,width:p.videoWidth,color:d,location:f,opacity:u,size:c,boxPadding:1,boxMargin:32},s]},s=async(t,e)=>{const n=await(0,o.bilibiliApi)((0,o.getJsonWithCredentials)(`https://api.bilibili.com/x/player/wbi/v2?aid=${t}&cid=${e}`));return lodash.get(n,"subtitle.subtitles",[])},l=async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{...lodash.pick(unsafeWindow,"aid","cid"),title:(0,r.getFriendlyTitle)(!0)};const{aid:l,cid:c}=e;if(!l||!c)throw new Error("未找到视频AID和CID");const d=await s(l,c);if(0===d.length)return i.Toast.info("当前视频没有字幕.","下载字幕",3e3),null;const[u,f]=await a(),p=d.find((t=>t.lan===f))||d[0],m=await(0,o.getJson)(p.subtitle_url),g=m.body;if("ass"===t){const{SubtitleConverter:t}=await Promise.resolve().then(n.bind(n,375)),o=new t({...u,title:e.title}),i=await o.convertToAss(g);return new Blob([i],{type:"text/ass"})}return new Blob([JSON.stringify(g,void 0,2)],{type:"text/json"})}},375:(t,e,n)=>{"use strict";function o(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}n.r(e),n.d(e,{SubtitleConverter:()=>a,SubtitleLocation:()=>i,SubtitleSize:()=>r});const i={TopLeft:7,TopCenter:8,TopRight:9,BottomLeft:1,BottomCenter:2,BottomRight:3};let r=function(t){return t[t.VerySmall=1]="VerySmall",t[t.Small=2]="Small",t[t.Medium=3]="Medium",t[t.Large=4]="Large",t[t.VeryLarge=5]="VeryLarge",t}({});class a{constructor(t){o(this,"config",void 0),this.config=Object.assign(a.defaultConfig,t)}async getAssMeta(){const{convertHexColorForStyle:t}=await Promise.resolve().then(n.t.bind(n,726,23)),e=t(this.config.color),o=t("#000000",this.config.opacity),r=[],a=(10*(this.config.size-3)+48)*this.config.height/720;console.log(a);for(const[t,n]of Object.entries(i))r.push(`Style: ${t},微软雅黑,${a},${e},${e},${o},${o},0,0,0,0,100,100,0,0,3,${this.config.boxPadding},0,${n},${this.config.boxMargin},${this.config.boxMargin},${this.config.boxMargin},0`);return`\n[Script Info]\n; Script generated by Bilibili Evolved Danmaku Converter\n; https://github.com/the1812/Bilibili-Evolved/\nTitle: ${this.config.title}\nScriptType: v4.00+\nPlayResX: ${this.config.width}\nPlayResY: ${this.config.height}\nTimer: 10.0000\nWrapStyle: 0\nScaledBorderAndShadow: no\n\n[V4+ Styles]\nFormat: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\n${r.join("\n")}\n\n[Events]\nFormat: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text`.trim()}async convertToAss(t){const{convertTimeByEndTime:e,normalizeContent:o}=await Promise.resolve().then(n.t.bind(n,726,23));return`${await this.getAssMeta()}\n${t.map((t=>{const[n,r]=e(t.from,t.to);var a;return`Dialogue: 0,${n},${r},${a=this.config.location,Object.entries(i).filter((t=>{let[,e]=t;return e===a})).map((t=>{let[e]=t;return e})).shift()},,0,0,0,,${o(t.content)}`})).join("\n")}`}}o(a,"defaultConfig",void 0),a.defaultConfig={title:"",color:"#ffffff",width:1920,height:1080,size:r.Medium,opacity:.5,location:i.BottomCenter,boxPadding:1,boxMargin:32}},469:(t,e,n)=>{var o=n(218)((function(t){return t[1]}));o.push([t.id,".download-subtitle-config.download-video-config-section .be-dropdown {\n text-transform: uppercase;\n}",""]),t.exports=o},218:t=>{"use strict"; +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/subtitle/download"]=t():e["video/subtitle/download"]=t()}(globalThis,(()=>(()=>{var e,t,n={597:(e,t,n)=>{"use strict";n.d(t,{mE:()=>l});const o=coreApis.ajax;var i=n(391),r=n(674);const a=async()=>{const{SubtitleConverter:e,SubtitleSize:t,SubtitleLocation:o}=await Promise.resolve().then(n.bind(n,375)),{playerAgent:i}=await Promise.resolve().then(n.t.bind(n,833,23)),a=i.getPlayerConfig("subtitle",null);if(!a)return[e.defaultConfig,""];const s=a.lan,l=(0,r.getFriendlyTitle)(!0),c={.6:t.VerySmall,.8:t.Small,1:t.Medium,1.3:t.Large,1.6:t.VeryLarge}[a.fontsize],d=parseInt(a.color).toString(16),{opacity:u}=a,f={bc:o.BottomCenter,bl:o.BottomLeft,br:o.BottomRight,tc:o.TopCenter,tl:o.TopLeft,tr:o.TopRight,"bottom-center":o.BottomCenter,"bottom-left":o.BottomLeft,"bottom-right":o.BottomRight,"top-center":o.TopCenter,"top-left":o.TopLeft,"top-right":o.TopRight}[a.position],p=i.query.video.element.sync();return[{title:l,height:p.videoHeight,width:p.videoWidth,color:d,location:f,opacity:u,size:c,boxPadding:1,boxMargin:32},s]},s=async(e,t)=>{const n=await(0,o.bilibiliApi)((0,o.getJsonWithCredentials)(`https://api.bilibili.com/x/player/wbi/v2?aid=${e}&cid=${t}`));return lodash.get(n,"subtitle.subtitles",[])},l=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{...lodash.pick(unsafeWindow,"aid","cid"),title:(0,r.getFriendlyTitle)(!0)};const{aid:l,cid:c}=t;if(!l||!c)throw new Error("未找到视频AID和CID");const d=await s(l,c);if(0===d.length)return i.Toast.info("当前视频没有字幕.","下载字幕",3e3),null;const[u,f]=await a(),p=d.find((e=>e.lan===f))||d[0],m=await(0,o.getJson)(p.subtitle_url),g=m.body;if("ass"===e){const{SubtitleConverter:e}=await Promise.resolve().then(n.bind(n,375)),o=new e({...u,title:t.title}),i=await o.convertToAss(g);return new Blob([i],{type:"text/ass"})}return new Blob([JSON.stringify(g,void 0,2)],{type:"text/json"})}},375:(e,t,n)=>{"use strict";function o(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t),n.d(t,{SubtitleConverter:()=>a,SubtitleLocation:()=>i,SubtitleSize:()=>r});const i={TopLeft:7,TopCenter:8,TopRight:9,BottomLeft:1,BottomCenter:2,BottomRight:3};let r=function(e){return e[e.VerySmall=1]="VerySmall",e[e.Small=2]="Small",e[e.Medium=3]="Medium",e[e.Large=4]="Large",e[e.VeryLarge=5]="VeryLarge",e}({});class a{constructor(e){o(this,"config",void 0),this.config=Object.assign(a.defaultConfig,e)}async getAssMeta(){const{convertHexColorForStyle:e}=await Promise.resolve().then(n.t.bind(n,726,23)),t=e(this.config.color),o=e("#000000",this.config.opacity),r=[],a=(10*(this.config.size-3)+48)*this.config.height/720;console.log(a);for(const[e,n]of Object.entries(i))r.push(`Style: ${e},微软雅黑,${a},${t},${t},${o},${o},0,0,0,0,100,100,0,0,3,${this.config.boxPadding},0,${n},${this.config.boxMargin},${this.config.boxMargin},${this.config.boxMargin},0`);return`\n[Script Info]\n; Script generated by Bilibili Evolved Danmaku Converter\n; https://github.com/the1812/Bilibili-Evolved/\nTitle: ${this.config.title}\nScriptType: v4.00+\nPlayResX: ${this.config.width}\nPlayResY: ${this.config.height}\nTimer: 10.0000\nWrapStyle: 0\nScaledBorderAndShadow: no\n\n[V4+ Styles]\nFormat: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\n${r.join("\n")}\n\n[Events]\nFormat: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text`.trim()}async convertToAss(e){const{convertTimeByEndTime:t,normalizeContent:o}=await Promise.resolve().then(n.t.bind(n,726,23));return`${await this.getAssMeta()}\n${e.map((e=>{const[n,r]=t(e.from,e.to);var a;return`Dialogue: 0,${n},${r},${a=this.config.location,Object.entries(i).filter((e=>{let[,t]=e;return t===a})).map((e=>{let[t]=e;return t})).shift()},,0,0,0,,${o(e.content)}`})).join("\n")}`}}o(a,"defaultConfig",void 0),a.defaultConfig={title:"",color:"#ffffff",width:1920,height:1080,size:r.Medium,opacity:.5,location:i.BottomCenter,boxPadding:1,boxMargin:32}},469:(e,t,n)=>{var o=n(218)((function(e){return e[1]}));o.push([e.id,".download-subtitle-config.download-video-config-section .be-dropdown {\n text-transform: uppercase;\n}",""]),e.exports=o},218:e=>{"use strict"; // eslint-disable-next-line func-names -t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=t(e);return e[2]?"@media ".concat(e[2]," {").concat(n,"}"):n})).join("")}, +e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")}, // eslint-disable-next-line func-names -e.i=function(t,n,o){"string"==typeof t&&( +t.i=function(e,n,o){"string"==typeof e&&( // eslint-disable-next-line no-param-reassign -t=[[null,t,""]]);var i={};if(o)for(var r=0;r{"use strict";var o,i=function(){return void 0===o&&( +var a=this[r][0];null!=a&&(i[a]=!0)}for(var s=0;s{"use strict";var o,i=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),a=[];function s(t){for(var e=-1,n=0;n{"use strict";n.r(e),n.d(e,{default:()=>u});var o=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"multiple-widgets"},[e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载字幕 (JSON)",icon:"subtitle"},on:{click:function(e){return t.download("json")}}}),t._v(" "),e("DefaultWidget",{attrs:{disabled:t.disabled,name:"下载字幕 (ASS)",icon:"subtitle"},on:{click:function(e){return t.download("ass")}}})],1)};o._withStripped=!0;const i=coreApis.pluginApis.data;var r=n(648);const a=coreApis.utils.log;var s=n(674);const l=coreApis.download;var c=n(597);(0,i.addData)("ui.icons",(t=>{t.subtitle=''}));const d=Vue.extend({components:{DefaultWidget:r.DefaultWidget},data:()=>({disabled:!1}),methods:{async download(t){try{this.disabled=!0;const e=await(0,c.mE)(t);l.DownloadPackage.single(`${(0,s.getFriendlyTitle)(!0)}.${t}`,e)}catch(t){(0,a.logError)(t)}finally{this.disabled=!1}}}});const u=(0,n(893).Z)(d,o,[],!1,null,null,null).exports},620:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>p});var o=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"download-subtitle-config download-video-config-section"},[e("div",{staticClass:"download-video-config-item"},[e("div",{staticClass:"download-video-config-title"},[t._v("字幕:")]),t._v(" "),e("VDropdown",{attrs:{items:t.items},scopedSlots:t._u([{key:"item",fn:function({item:e}){return[t._v("\n "+t._s(e)+"\n ")]}}]),model:{value:t.type,callback:function(e){t.type=e},expression:"type"}})],1)])};o._withStripped=!0;const i=coreApis.settings;var r=n(648);const a=(0,i.getComponentSettings)("downloadVideo").options,s=Vue.extend({components:{VDropdown:r.VDropdown},data:()=>({type:a.subtitleType??"无",items:["无","ass","json"]}),computed:{enabled(){return"无"!==this.type}},watch:{type(t){a.subtitleType=t}}});var l=n(332),c=n.n(l),d=n(469),u=n.n(d),f={insert:"head",singleton:!1};c()(u(),f);u().locals;const p=(0,n(893).Z)(s,o,[],!1,null,null,null).exports},893:(t,e,n)=>{"use strict";function o(t,e,n,o,i,r,a,s){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(t,e){return l.call(e),d(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:c}}n.d(e,{Z:()=>o})},673:t=>{function e(t){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}e.keys=()=>[],e.resolve=e,e.id=673,t.exports=e},132:t=>{"use strict";t.exports="启用下载字幕支持, 在视频页面中可从功能面板里下载字幕. (AI 生成的不可下载)\n"},726:t=>{"use strict";t.exports=coreApis.componentApis.video.assUtils},833:t=>{"use strict";t.exports=coreApis.componentApis.video.playerAgent},391:t=>{"use strict";t.exports=coreApis.toast},648:t=>{"use strict";t.exports=coreApis.ui},674:t=>{"use strict";t.exports=coreApis.utils.title}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,exports:{}};return n[t](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},e=Object.getPrototypeOf?t=>Object.getPrototypeOf(t):t=>t.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var a={};t=t||[null,e({}),e([]),e(e)];for(var s=2&o&&n;"object"==typeof s&&!~t.indexOf(s);s=e(s))Object.getOwnPropertyNames(s).forEach((t=>a[t]=()=>n[t]));return a.default=()=>n,i.d(r,a),r},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>s});const t=coreApis.componentApis.define,e=coreApis.spinQuery;var n=i(391);const o=coreApis.utils.urls;var a=i(597);const s=(0,t.defineComponentMetadata)({name:"downloadSubtitle",displayName:"下载字幕",tags:[componentsTags.video],entry:none,urlInclude:o.videoAndBangumiUrls,widget:{condition:e.hasVideo,component:()=>Promise.resolve().then(i.bind(i,194)).then((t=>t.default))},plugin:{displayName:"下载视频 - 下载字幕支持",setup:t=>{let{addData:e}=t;e("downloadVideo.assets",(async t=>{t.push({name:"downloadSubtitles",displayName:"下载字幕",getAssets:async(t,e)=>{const{type:o,enabled:i}=e;if(!i)return[];const r=n.Toast.info("获取字幕中...","下载字幕");let s=0;const l=await Promise.allSettled(t.map((async e=>{const n=await(0,a.mE)(o,e.input);return s++,r.message=`获取字幕中... (${s}/${t.length})`,{name:`${e.input.title}.${o}`,data:n}}))),c=l.filter((t=>"fulfilled"===t.status)),d=l.filter((t=>"rejected"===t.status));return r.message=`获取完成. 成功 ${c.length} 个, 失败 ${d.length} 个.`,c.map((t=>t.value))},component:()=>Promise.resolve().then(i.bind(i,620)).then((t=>t.default))})}))}},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const t=i(673);return{...Object.fromEntries(t.keys().map((e=>[e.match(/index\.(.+)\.md$/)[1],t(e)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,132,17)).then((t=>t.default))}})()})})(),r=r.component})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>u});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"multiple-widgets"},[t("DefaultWidget",{attrs:{disabled:e.disabled,name:"下载字幕 (JSON)",icon:"subtitle"},on:{click:function(t){return e.download("json")}}}),e._v(" "),t("DefaultWidget",{attrs:{disabled:e.disabled,name:"下载字幕 (ASS)",icon:"subtitle"},on:{click:function(t){return e.download("ass")}}})],1)};o._withStripped=!0;const i=coreApis.pluginApis.data;var r=n(648);const a=coreApis.utils.log;var s=n(674);const l=coreApis.download;var c=n(597);(0,i.addData)("ui.icons",(e=>{e.subtitle=''}));const d=Vue.extend({components:{DefaultWidget:r.DefaultWidget},data:()=>({disabled:!1}),methods:{async download(e){try{this.disabled=!0;const t=await(0,c.mE)(e);l.DownloadPackage.single(`${(0,s.getFriendlyTitle)(!0)}.${e}`,t)}catch(e){(0,a.logError)(e)}finally{this.disabled=!1}}}});const u=(0,n(893).Z)(d,o,[],!1,null,null,null).exports},620:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"download-subtitle-config download-video-config-section"},[t("div",{staticClass:"download-video-config-item"},[t("div",{staticClass:"download-video-config-title"},[e._v("字幕:")]),e._v(" "),t("VDropdown",{attrs:{items:e.items},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}]),model:{value:e.type,callback:function(t){e.type=t},expression:"type"}})],1)])};o._withStripped=!0;const i=coreApis.settings;var r=n(648);const a=(0,i.getComponentSettings)("downloadVideo").options,s=Vue.extend({components:{VDropdown:r.VDropdown},data:()=>({type:a.subtitleType??"无",items:["无","ass","json"]}),computed:{enabled(){return"无"!==this.type}},watch:{type(e){a.subtitleType=e}}});var l=n(332),c=n.n(l),d=n(469),u=n.n(d),f={insert:"head",singleton:!1};c()(u(),f);u().locals;const p=(0,n(893).Z)(s,o,[],!1,null,null,null).exports},893:(e,t,n)=>{"use strict";function o(e,t,n,o,i,r,a,s){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),o&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):i&&(l=s?function(){i.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:i),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}n.d(t,{Z:()=>o})},673:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=673,e.exports=t},132:e=>{"use strict";e.exports="启用下载字幕支持, 在视频页面中可从功能面板里下载字幕. (AI 生成的不可下载)\n"},726:e=>{"use strict";e.exports=coreApis.componentApis.video.assUtils},833:e=>{"use strict";e.exports=coreApis.componentApis.video.playerAgent},391:e=>{"use strict";e.exports=coreApis.toast},648:e=>{"use strict";e.exports=coreApis.ui},674:e=>{"use strict";e.exports=coreApis.utils.title}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={id:e,exports:{}};return n[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var r=Object.create(null);i.r(r);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>n[e]));return a.default=()=>n,i.d(r,a),r},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";i.d(r,{component:()=>s});const e=coreApis.componentApis.define,t=coreApis.spinQuery;var n=i(391);const o=coreApis.utils.urls;var a=i(597);const s=(0,e.defineComponentMetadata)({name:"downloadSubtitle",displayName:"下载字幕",tags:[componentsTags.video],entry:none,urlInclude:o.videoAndBangumiUrls,widget:{condition:t.hasVideo,component:()=>Promise.resolve().then(i.bind(i,194)).then((e=>e.default))},plugin:{displayName:"下载视频 - 下载字幕支持",setup:e=>{let{addData:t}=e;t("downloadVideo.assets",(async e=>{e.push({name:"downloadSubtitles",displayName:"下载字幕",getAssets:async(e,t)=>{const{type:o,enabled:i}=t;if(!i)return[];const r=n.Toast.info("获取字幕中...","下载字幕");let s=0;const l=await Promise.allSettled(e.map((async t=>{const n=await(0,a.mE)(o,t.input);return s++,r.message=`获取字幕中... (${s}/${e.length})`,{name:`${t.input.title}.${o}`,data:n}}))),c=l.filter((e=>"fulfilled"===e.status)),d=l.filter((e=>"rejected"===e.status));return r.message=`获取完成. 成功 ${c.length} 个, 失败 ${d.length} 个.`,c.map((e=>e.value))},component:()=>Promise.resolve().then(i.bind(i,620)).then((e=>e.default))})}))}},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=i(673);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,132,17)).then((e=>e.default))}})()})})(),r=r.component})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/feeds/filter/hide-charge-feeds.js b/bb-evolved/registry/dist/plugins/feeds/filter/hide-charge-feeds.js index c5628fb0ef..c3f818246a 100644 --- a/bb-evolved/registry/dist/plugins/feeds/filter/hide-charge-feeds.js +++ b/bb-evolved/registry/dist/plugins/feeds/filter/hide-charge-feeds.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/filter/hide-charge-feeds"]=t():e["feeds/filter/hide-charge-feeds"]=t()}(globalThis,(()=>(()=>{var e,t,o={522:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=522,e.exports=t},701:e=>{"use strict";e.exports="移除动态里的充电专属动态, 装有 `动态过滤器` 时生效.\n"},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},605:e=>{"use strict";e.exports=coreApis.utils}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var s=r[e]={exports:{}};return o[e](s,s.exports,n),s.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var s=Object.create(null);n.r(s);var i={};e=e||[null,t({}),t([]),t(t)];for(var d=2&r&&o;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(s,i),s},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";n.d(s,{plugin:()=>e});const e={name:"feedsFilter.pluginBlocks.chargeFeeds",displayName:"动态过滤器 - 移除充电专属动态",async setup(){const{getVue2Data:e}=await Promise.resolve().then(n.t.bind(n,605,23)),{forEachFeedsCard:t}=await Promise.resolve().then(n.t.bind(n,799,23));t({added:t=>{const o=e(t.element);3===lodash.get(o,"data.modules.module_dynamic.major.blocked.blocked_type",null)&&t.element.classList.add("plugin-block")}})},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(522);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,701,17)).then((e=>e.default))}})()}})(),s=s.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/filter/hide-charge-feeds"]=t():e["feeds/filter/hide-charge-feeds"]=t()}(globalThis,(()=>(()=>{var e,t,o={522:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=522,e.exports=t},701:e=>{"use strict";e.exports="移除动态里的充电专属动态, 装有 `动态过滤器` 时生效.\n"},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api},605:e=>{"use strict";e.exports=coreApis.utils}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var s=r[e]={exports:{}};return o[e](s,s.exports,n),s.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var s=Object.create(null);n.r(s);var i={};e=e||[null,t({}),t([]),t(t)];for(var d=2&r&&o;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(s,i),s},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";n.d(s,{plugin:()=>e});const e={name:"feedsFilter.pluginBlocks.chargeFeeds",displayName:"动态过滤器 - 移除充电专属动态",async setup(){const{getVue2Data:e}=await Promise.resolve().then(n.t.bind(n,605,23)),{forEachFeedsCard:t}=await Promise.resolve().then(n.t.bind(n,799,23));t({added:t=>{const o=e(t.element);3===lodash.get(o,"data.modules.module_dynamic.major.blocked.blocked_type",null)&&t.element.classList.add("plugin-block")}})},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(522);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,701,17)).then((e=>e.default))}})()}})(),s=s.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/feeds/filter/hide-goods.js b/bb-evolved/registry/dist/plugins/feeds/filter/hide-goods.js index c5d0cac0ff..0d2f97dec5 100644 --- a/bb-evolved/registry/dist/plugins/feeds/filter/hide-goods.js +++ b/bb-evolved/registry/dist/plugins/feeds/filter/hide-goods.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/filter/hide-goods"]=t():e["feeds/filter/hide-goods"]=t()}(globalThis,(()=>(()=>{var e,t,o={698:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=698,e.exports=t},131:e=>{"use strict";e.exports="移除动态里的商品带货动态 (UP主的推荐 · 来自 XX), 装有 `动态过滤器` 时生效.\n"},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var d=2&r&&o;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,n.d(i,s),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{plugin:()=>e});const e={name:"feedsFilter.pluginBlocks.goods",displayName:"动态过滤器 - 移除商品带货动态",async setup(){const{forEachFeedsCard:e,getVueData:t}=await Promise.resolve().then(n.t.bind(n,799,23));e({added:e=>{const o=t(e.element);"ADDITIONAL_TYPE_GOODS"===lodash.get(o,"data.modules.module_dynamic.additional.type",null)&&e.element.classList.add("plugin-block")}})},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(698);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,131,17)).then((e=>e.default))}})()}})(),i=i.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["feeds/filter/hide-goods"]=t():e["feeds/filter/hide-goods"]=t()}(globalThis,(()=>(()=>{var e,t,o={698:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=698,e.exports=t},131:e=>{"use strict";e.exports="移除动态里的商品带货动态 (UP主的推荐 · 来自 XX), 装有 `动态过滤器` 时生效.\n"},799:e=>{"use strict";e.exports=coreApis.componentApis.feeds.api}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var s={};e=e||[null,t({}),t([]),t(t)];for(var d=2&r&&o;"object"==typeof d&&!~e.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,n.d(i,s),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{plugin:()=>e});const e={name:"feedsFilter.pluginBlocks.goods",displayName:"动态过滤器 - 移除商品带货动态",async setup(){const{forEachFeedsCard:e,getVueData:t}=await Promise.resolve().then(n.t.bind(n,799,23));e({added:e=>{const o=t(e.element);"ADDITIONAL_TYPE_GOODS"===lodash.get(o,"data.modules.module_dynamic.additional.type",null)&&e.element.classList.add("plugin-block")}})},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(698);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,131,17)).then((e=>e.default))}})()}})(),i=i.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/launch-bar/audio-search.js b/bb-evolved/registry/dist/plugins/launch-bar/audio-search.js index bab29b8431..497dd9ace0 100644 --- a/bb-evolved/registry/dist/plugins/launch-bar/audio-search.js +++ b/bb-evolved/registry/dist/plugins/launch-bar/audio-search.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/audio-search"]=t():e["launch-bar/audio-search"]=t()}(globalThis,(()=>(()=>{var e,t,o={408:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=408,e.exports=t},500:e=>{"use strict";e.exports="在输入音频的 au 号或播放列表的 am 号时, 提供对应的跳转选项.\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{plugin:()=>o});const e=coreApis.ajax,t=e=>{const{name:t,displayName:o,description:r,indexer:n,link:i}=e;return{name:t||n,displayName:o,icon:"mdi-open-in-new",indexer:n,description:r,action:()=>{window.open(i,"_blank")},order:0}},o={name:"launchBar.actions.audioSearch",displayName:"搜索栏 - 音频跳转",async setup(o){let{addData:r}=o;r("launchBar.actions",(o=>{o.push({name:"audioSearchProvider",getActions:async o=>{const{match:r,type:n,id:i,indexer:a}=((e,t)=>{const o=e.match(t);if(!o)return{};const r=o[1],n=o[2];return{match:o,type:r,id:n,indexer:`${r}${n}`}})(o,/^(a[um])(\d+)$/);if(!r)return[];const c=await(0,e.getJson)("am"===n?`https://www.bilibili.com/audio/music-service-c/web/menu/info?sid=${i}`:`https://www.bilibili.com/audio/music-service-c/web/song/info?sid=${i}`),{title:s}=lodash.get(c,"data",{});return[t({name:s,description:"am"===n?"播放列表跳转":"音频跳转",link:`https://www.bilibili.com/audio/${a}`,indexer:a})]}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(408);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,500,17)).then((e=>e.default))}})()}})(),i=i.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/audio-search"]=t():e["launch-bar/audio-search"]=t()}(globalThis,(()=>(()=>{var e,t,o={408:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=408,e.exports=t},500:e=>{"use strict";e.exports="在输入音频的 au 号或播放列表的 am 号时, 提供对应的跳转选项.\n"}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&r&&o;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>o[e]));return a.default=()=>o,n.d(i,a),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{plugin:()=>o});const e=coreApis.ajax,t=e=>{const{name:t,displayName:o,description:r,indexer:n,link:i}=e;return{name:t||n,displayName:o,icon:"mdi-open-in-new",indexer:n,description:r,action:()=>{window.open(i,"_blank")},order:0}},o={name:"launchBar.actions.audioSearch",displayName:"搜索栏 - 音频跳转",async setup(o){let{addData:r}=o;r("launchBar.actions",(o=>{o.push({name:"audioSearchProvider",getActions:async o=>{const{match:r,type:n,id:i,indexer:a}=((e,t)=>{const o=e.match(t);if(!o)return{};const r=o[1],n=o[2];return{match:o,type:r,id:n,indexer:`${r}${n}`}})(o,/^(a[um])(\d+)$/);if(!r)return[];const c=await(0,e.getJson)("am"===n?`https://www.bilibili.com/audio/music-service-c/web/menu/info?sid=${i}`:`https://www.bilibili.com/audio/music-service-c/web/song/info?sid=${i}`),{title:s}=lodash.get(c,"data",{});return[t({name:s,description:"am"===n?"播放列表跳转":"音频跳转",link:`https://www.bilibili.com/audio/${a}`,indexer:a})]}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(408);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,500,17)).then((e=>e.default))}})()}})(),i=i.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/launch-bar/bangumi-search.js b/bb-evolved/registry/dist/plugins/launch-bar/bangumi-search.js index de782e6a8f..8be2200633 100644 --- a/bb-evolved/registry/dist/plugins/launch-bar/bangumi-search.js +++ b/bb-evolved/registry/dist/plugins/launch-bar/bangumi-search.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/bangumi-search"]=t():e["launch-bar/bangumi-search"]=t()}(globalThis,(()=>(()=>{var e,t,i={706:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=706,e.exports=t},521:e=>{"use strict";e.exports="在输入番剧的 ss 号 / ep 号, 或番剧详情的 md 号时, 提供对应的跳转选项.\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return i[e](o,o.exports,r),o.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var o=Object.create(null);r.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&i;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,r.d(o,a),o},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.d(o,{plugin:()=>i});const e=coreApis.ajax,t=e=>{const{name:t,displayName:i,description:n,indexer:r,link:o}=e;return{name:t||r,displayName:i,icon:"mdi-open-in-new",indexer:r,description:n,action:()=>{window.open(o,"_blank")},order:0}},i={name:"launchBar.actions.bangumiSearch",displayName:"搜索栏 - 番剧跳转",async setup(i){let{addData:n}=i;n("launchBar.actions",(i=>{i.push({name:"bangumiSearchProvider",getActions:async i=>{const{match:n,type:r,id:o,indexer:a}=((e,t)=>{const i=e.match(t);if(!i)return{};const n=i[1],r=i[2];return{match:i,type:n,id:r,indexer:`${n}${r}`}})(i,/^(md|ss|ep)(\d+)$/);if(!n)return[];if("md"===r){const i=await(0,e.getJson)(`https://api.bilibili.com/pgc/review/user?media_id=${o}`),{title:n}=lodash.get(i,"result.media",{});return[t({name:n,description:"番剧详情跳转",link:`https://www.bilibili.com/bangumi/media/${a}`,indexer:a})]}if("ep"===r){const i=await(0,e.getJson)(`https://api.bilibili.com/pgc/view/web/season?ep_id=${o}`),n=lodash.get(i,"result.episodes",[]).find((e=>e.id.toString()===o));return[t({name:n?.share_copy,description:"番剧跳转",link:`https://www.bilibili.com/bangumi/play/${a}`,indexer:a})]}const s=await(0,e.getJson)(`https://api.bilibili.com/pgc/view/web/season?season_id=${o}`),{title:c}=lodash.get(s,"result",{});return[t({name:c,description:"番剧跳转",link:`https://www.bilibili.com/bangumi/play/${a}`,indexer:a})]}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(706);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,521,17)).then((e=>e.default))}})()}})(),o=o.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/bangumi-search"]=t():e["launch-bar/bangumi-search"]=t()}(globalThis,(()=>(()=>{var e,t,i={706:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=706,e.exports=t},521:e=>{"use strict";e.exports="在输入番剧的 ss 号 / ep 号, 或番剧详情的 md 号时, 提供对应的跳转选项.\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return i[e](o,o.exports,r),o.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var o=Object.create(null);r.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&i;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,r.d(o,a),o},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.d(o,{plugin:()=>i});const e=coreApis.ajax,t=e=>{const{name:t,displayName:i,description:n,indexer:r,link:o}=e;return{name:t||r,displayName:i,icon:"mdi-open-in-new",indexer:r,description:n,action:()=>{window.open(o,"_blank")},order:0}},i={name:"launchBar.actions.bangumiSearch",displayName:"搜索栏 - 番剧跳转",async setup(i){let{addData:n}=i;n("launchBar.actions",(i=>{i.push({name:"bangumiSearchProvider",getActions:async i=>{const{match:n,type:r,id:o,indexer:a}=((e,t)=>{const i=e.match(t);if(!i)return{};const n=i[1],r=i[2];return{match:i,type:n,id:r,indexer:`${n}${r}`}})(i,/^(md|ss|ep)(\d+)$/);if(!n)return[];if("md"===r){const i=await(0,e.getJson)(`https://api.bilibili.com/pgc/review/user?media_id=${o}`),{title:n}=lodash.get(i,"result.media",{});return[t({name:n,description:"番剧详情跳转",link:`https://www.bilibili.com/bangumi/media/${a}`,indexer:a})]}if("ep"===r){const i=await(0,e.getJson)(`https://api.bilibili.com/pgc/view/web/season?ep_id=${o}`),n=lodash.get(i,"result.episodes",[]).find((e=>e.id.toString()===o));return[t({name:n?.share_copy,description:"番剧跳转",link:`https://www.bilibili.com/bangumi/play/${a}`,indexer:a})]}const s=await(0,e.getJson)(`https://api.bilibili.com/pgc/view/web/season?season_id=${o}`),{title:c}=lodash.get(s,"result",{});return[t({name:c,description:"番剧跳转",link:`https://www.bilibili.com/bangumi/play/${a}`,indexer:a})]}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(706);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,521,17)).then((e=>e.default))}})()}})(),o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/launch-bar/cv-search.js b/bb-evolved/registry/dist/plugins/launch-bar/cv-search.js index b6236214eb..41cc10df21 100644 --- a/bb-evolved/registry/dist/plugins/launch-bar/cv-search.js +++ b/bb-evolved/registry/dist/plugins/launch-bar/cv-search.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/cv-search"]=t():e["launch-bar/cv-search"]=t()}(globalThis,(()=>(()=>{var e,t,r={560:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=560,e.exports=t},436:e=>{"use strict";e.exports="在输入专栏的 cv 号或专栏文集的 rl 号时, 提供对应的跳转选项.\n"}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var o=Object.create(null);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,i.d(o,a),o},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";i.d(o,{plugin:()=>r});const e=coreApis.ajax,t=e=>{const{name:t,displayName:r,description:n,indexer:i,link:o}=e;return{name:t||i,displayName:r,icon:"mdi-open-in-new",indexer:i,description:n,action:()=>{window.open(o,"_blank")},order:0}},r={name:"launchBar.actions.cvSearch",displayName:"搜索栏 - 专栏跳转",async setup(r){let{addData:n}=r;n("launchBar.actions",(r=>{r.push({name:"cvSearchProvider",getActions:async r=>{const{match:n,type:i,id:o,indexer:a}=((e,t)=>{const r=e.match(t);if(!r)return{};const n=r[1],i=r[2];return{match:r,type:n,id:i,indexer:`${n}${i}`}})(r,/^(cv|rl)(\d+)$/);if(!n)return[];if("rl"===i){const r=await(0,e.getJson)(`https://api.bilibili.com/x/article/list/web/articles?id=${o}`),{name:n}=lodash.get(r,"data.list",{});return[t({name:n,description:"文集跳转",link:`https://www.bilibili.com/read/readlist/${a}`,indexer:a})]}const c=await(0,e.getJson)(`https://api.bilibili.com/x/article/viewinfo?id=${o}`),{title:s}=lodash.get(c,"data",{});return[t({name:s,description:"专栏跳转",link:`https://www.bilibili.com/read/${a}`,indexer:a})]}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=i(560);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,436,17)).then((e=>e.default))}})()}})(),o=o.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/cv-search"]=t():e["launch-bar/cv-search"]=t()}(globalThis,(()=>(()=>{var e,t,r={560:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=560,e.exports=t},436:e=>{"use strict";e.exports="在输入专栏的 cv 号或专栏文集的 rl 号时, 提供对应的跳转选项.\n"}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var o=Object.create(null);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,i.d(o,a),o},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";i.d(o,{plugin:()=>r});const e=coreApis.ajax,t=e=>{const{name:t,displayName:r,description:n,indexer:i,link:o}=e;return{name:t||i,displayName:r,icon:"mdi-open-in-new",indexer:i,description:n,action:()=>{window.open(o,"_blank")},order:0}},r={name:"launchBar.actions.cvSearch",displayName:"搜索栏 - 专栏跳转",async setup(r){let{addData:n}=r;n("launchBar.actions",(r=>{r.push({name:"cvSearchProvider",getActions:async r=>{const{match:n,type:i,id:o,indexer:a}=((e,t)=>{const r=e.match(t);if(!r)return{};const n=r[1],i=r[2];return{match:r,type:n,id:i,indexer:`${n}${i}`}})(r,/^(cv|rl)(\d+)$/);if(!n)return[];if("rl"===i){const r=await(0,e.getJson)(`https://api.bilibili.com/x/article/list/web/articles?id=${o}`),{name:n}=lodash.get(r,"data.list",{});return[t({name:n,description:"文集跳转",link:`https://www.bilibili.com/read/readlist/${a}`,indexer:a})]}const c=await(0,e.getJson)(`https://api.bilibili.com/x/article/viewinfo?id=${o}`),{title:s}=lodash.get(c,"data",{});return[t({name:s,description:"专栏跳转",link:`https://www.bilibili.com/read/${a}`,indexer:a})]}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=i(560);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(i.t.bind(i,436,17)).then((e=>e.default))}})()}})(),o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/launch-bar/number-search.js b/bb-evolved/registry/dist/plugins/launch-bar/number-search.js index 472a143281..d59b8721a8 100644 --- a/bb-evolved/registry/dist/plugins/launch-bar/number-search.js +++ b/bb-evolved/registry/dist/plugins/launch-bar/number-search.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/number-search"]=t():e["launch-bar/number-search"]=t()}(globalThis,(()=>(()=>{var e,t,i={123:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=123,e.exports=t},731:e=>{"use strict";e.exports="在输入纯数字时, 提供以下选项:\n- 跳转至相应的视频 (视为 av 号)\n- 跳转至相应的专栏 (视为 cv 号)\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return i[e](o,o.exports,r),o.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var o=Object.create(null);r.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&i;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>i[e]));return a.default=()=>i,r.d(o,a),o},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.d(o,{plugin:()=>i});const e=coreApis.ajax,t=e=>{const{name:t,displayName:i,description:n,indexer:r,link:o}=e;return{name:t||r,displayName:i,icon:"mdi-open-in-new",indexer:r,description:n,action:()=>{window.open(o,"_blank")},order:0}},i={name:"launchBar.actions.numberSearch",displayName:"搜索栏 - 数字联想",async setup(i){let{addData:n}=i;n("launchBar.actions",(i=>{i.push({name:"numberSearchProvider",getActions:async i=>{const{match:n,id:r,indexer:o}=((e,t)=>{const i=e.match(t);if(!i)return{};const n=i[1],r=i[2];return{match:i,type:n,id:r,indexer:`${n}${r}`}})(i,/^()(\d+)$/);if(!n)return[];const[a,c,s]=await Promise.all([await(0,e.getJsonWithCredentials)(`https://api.bilibili.com/x/web-interface/view?aid=${r}`),await(0,e.getJson)(`https://api.bilibili.com/x/article/viewinfo?id=${r}`),await(0,e.getJson)(`https://api.bilibili.com/x/web-interface/card?mid=${r}`)]),{title:d}=lodash.get(a,"data",{}),{title:l}=lodash.get(c,"data",{}),{name:p}=lodash.get(s,"data.card",{}),m=e=>e?`numberSearchAction.${e}`:e;return[t({name:m(d),displayName:d,description:"视频跳转",link:`https://www.bilibili.com/av${r}`,indexer:o}),t({name:m(r),displayName:r,description:"直播间跳转",link:`https://live.bilibili.com/${r}`,indexer:o}),t({name:m(l),displayName:l,description:"专栏跳转",link:`https://www.bilibili.com/read/cv${r}`,indexer:o}),t({name:m(p),displayName:p,description:"用户跳转",link:`https://space.bilibili.com/${r}`,indexer:o})]}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=r(123);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,731,17)).then((e=>e.default))}})()}})(),o=o.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/number-search"]=t():e["launch-bar/number-search"]=t()}(globalThis,(()=>(()=>{var e,t,i={123:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=123,e.exports=t},731:e=>{"use strict";e.exports="在输入纯数字时, 提供以下选项:\n- 跳转至相应的视频 (视为 av 号)\n- 跳转至相应的专栏 (视为 cv 号)\n"}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return i[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var a=Object.create(null);r.r(a);var o={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&i;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>o[e]=()=>i[e]));return o.default=()=>i,r.d(a,o),a},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";r.d(a,{plugin:()=>i});const e=coreApis.ajax,t=e=>{const{name:t,displayName:i,description:n,indexer:r,link:a}=e;return{name:t||r,displayName:i,icon:"mdi-open-in-new",indexer:r,description:n,action:()=>{window.open(a,"_blank")},order:0}},i={name:"launchBar.actions.numberSearch",displayName:"搜索栏 - 数字联想",async setup(i){let{addData:n}=i;n("launchBar.actions",(i=>{i.push({name:"numberSearchProvider",getActions:async i=>{const{match:n,id:r,indexer:a}=((e,t)=>{const i=e.match(t);if(!i)return{};const n=i[1],r=i[2];return{match:i,type:n,id:r,indexer:`${n}${r}`}})(i,/^()(\d+)$/);if(!n)return[];const[o,c,s]=await Promise.all([await(0,e.getJsonWithCredentials)(`https://api.bilibili.com/x/web-interface/view?aid=${r}`),await(0,e.getJson)(`https://api.bilibili.com/x/article/viewinfo?id=${r}`),await(0,e.getJson)(`https://api.bilibili.com/x/web-interface/card?mid=${r}`)]),{title:d}=lodash.get(o,"data",{}),{title:l}=lodash.get(c,"data",{}),{name:p}=lodash.get(s,"data.card",{}),m=e=>e?`numberSearchAction.${e}`:e;return[t({name:m(d),displayName:d,description:"视频跳转",link:`https://www.bilibili.com/av${r}`,indexer:a}),t({name:m(r),displayName:r,description:"直播间跳转",link:`https://live.bilibili.com/${r}`,indexer:a}),t({name:m(l),displayName:l,description:"专栏跳转",link:`https://www.bilibili.com/read/cv${r}`,indexer:a}),t({name:m(p),displayName:p,description:"用户跳转",link:`https://space.bilibili.com/${r}`,indexer:a})]}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=r(123);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(r.t.bind(r,731,17)).then((e=>e.default))}})()}})(),a=a.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/launch-bar/trending-search.js b/bb-evolved/registry/dist/plugins/launch-bar/trending-search.js index 62694ba3ae..387f94930e 100644 --- a/bb-evolved/registry/dist/plugins/launch-bar/trending-search.js +++ b/bb-evolved/registry/dist/plugins/launch-bar/trending-search.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/trending-search"]=t():e["launch-bar/trending-search"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,r={375:e=>{e.exports=coreApis.ajax}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[e](n,n.exports,a),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var n=Object.create(null);a.r(n);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&o&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(n,i),n},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{a.d(n,{plugin:()=>e});const e={name:"launchBar.trendingSearch",displayName:"搜索栏 - 搜索推荐",description:'在脚本的搜索栏中默认显示类似 b 站搜索栏的搜索推荐词, 替代原来的 "搜索" 两字.',setup:e=>{let{addData:t}=e;t("launchBar.recommended",(async e=>{const{getJson:t}=await Promise.resolve().then(a.t.bind(a,375,23)),r=await t("https://api.bilibili.com/x/web-interface/search/default");if(0===r.code){let t;e.word=r.data.show_name,t=""!==r.data.url?r.data.url:r.data.name.startsWith("av")?`https://www.bilibili.com/${r.data.name}`:`https://search.bilibili.com/all?keyword=${r.data.name}`,e.href=t}else console.error("获取搜索推荐词失败")}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),n=n.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/trending-search"]=t():e["launch-bar/trending-search"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,r={375:e=>{e.exports=coreApis.ajax}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[e](n,n.exports,a),n.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"==typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"==typeof r.then)return r}var n=Object.create(null);a.r(n);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&o&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(n,i),n},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{a.d(n,{plugin:()=>e});const e={name:"launchBar.trendingSearch",displayName:"搜索栏 - 搜索推荐",description:'在脚本的搜索栏中默认显示类似 b 站搜索栏的搜索推荐词, 替代原来的 "搜索" 两字.',setup:e=>{let{addData:t}=e;t("launchBar.recommended",(async e=>{const{getJson:t}=await Promise.resolve().then(a.t.bind(a,375,23)),r=await t("https://api.bilibili.com/x/web-interface/search/default");if(0===r.code){let t;e.word=r.data.show_name,t=""!==r.data.url?r.data.url:r.data.name.startsWith("av")?`https://www.bilibili.com/${r.data.name}`:`https://search.bilibili.com/all?keyword=${r.data.name}`,e.href=t}else console.error("获取搜索推荐词失败")}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),n=n.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/launch-bar/uid-search.js b/bb-evolved/registry/dist/plugins/launch-bar/uid-search.js index 841db92eab..c5f2ac9d71 100644 --- a/bb-evolved/registry/dist/plugins/launch-bar/uid-search.js +++ b/bb-evolved/registry/dist/plugins/launch-bar/uid-search.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/uid-search"]=t():e["launch-bar/uid-search"]=t()}(globalThis,(()=>(()=>{var e,t,r={272:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=272,e.exports=t},321:e=>{"use strict";e.exports="在输入 UID (用户 ID) 时, 提供对应的跳转选项.\n"}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return r[e](i,i.exports,o),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var i=Object.create(null);o.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,o.d(i,a),i},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{plugin:()=>r});const e=coreApis.ajax,t=e=>{const{name:t,displayName:r,description:n,indexer:o,link:i}=e;return{name:t||o,displayName:r,icon:"mdi-open-in-new",indexer:o,description:n,action:()=>{window.open(i,"_blank")},order:0}},r={name:"launchBar.actions.uidSearch",displayName:"搜索栏 - UID 跳转",async setup(r){let{addData:n}=r;n("launchBar.actions",(r=>{r.push({name:"uidSearchProvider",getActions:async r=>{const{match:n,id:o,indexer:i}=((e,t)=>{const r=e.match(t);if(!r)return{};const n=r[1],o=r[2];return{match:r,type:n,id:o,indexer:`${n}${o}`}})(r,/^(uid)(\d+)$/);if(!n)return[];const a=await(0,e.getJson)(`https://api.bilibili.com/x/space/wbi/acc/info?mid=${o}`),{name:c}=lodash.get(a,"data",{});return[t({name:c,description:"用户跳转",link:`https://space.bilibili.com/${o}`,indexer:i})]}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=o(272);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,321,17)).then((e=>e.default))}})()}})(),i=i.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["launch-bar/uid-search"]=t():e["launch-bar/uid-search"]=t()}(globalThis,(()=>(()=>{var e,t,r={272:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=272,e.exports=t},321:e=>{"use strict";e.exports="在输入 UID (用户 ID) 时, 提供对应的跳转选项.\n"}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var i=n[e]={exports:{}};return r[e](i,i.exports,o),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var i=Object.create(null);o.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,o.d(i,a),i},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";o.d(i,{plugin:()=>r});const e=coreApis.ajax,t=e=>{const{name:t,displayName:r,description:n,indexer:o,link:i}=e;return{name:t||o,displayName:r,icon:"mdi-open-in-new",indexer:o,description:n,action:()=>{window.open(i,"_blank")},order:0}},r={name:"launchBar.actions.uidSearch",displayName:"搜索栏 - UID 跳转",async setup(r){let{addData:n}=r;n("launchBar.actions",(r=>{r.push({name:"uidSearchProvider",getActions:async r=>{const{match:n,id:o,indexer:i}=((e,t)=>{const r=e.match(t);if(!r)return{};const n=r[1],o=r[2];return{match:r,type:n,id:o,indexer:`${n}${o}`}})(r,/^(uid)(\d+)$/);if(!n)return[];const a=await(0,e.getJson)(`https://api.bilibili.com/x/space/wbi/acc/info?mid=${o}`),{name:c}=lodash.get(a,"data",{});return[t({name:c,description:"用户跳转",link:`https://space.bilibili.com/${o}`,indexer:i})]}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=o(272);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(o.t.bind(o,321,17)).then((e=>e.default))}})()}})(),i=i.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/settings-panel/recent-components.js b/bb-evolved/registry/dist/plugins/settings-panel/recent-components.js index cfa2cb7cc2..659988c1a9 100644 --- a/bb-evolved/registry/dist/plugins/settings-panel/recent-components.js +++ b/bb-evolved/registry/dist/plugins/settings-panel/recent-components.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["settings-panel/recent-components"]=t():e["settings-panel/recent-components"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,n={986:e=>{e.exports=coreApis.settings}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={exports:{}};return n[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);r.r(a);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&o&&n;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,r.d(a,s),a},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{r.d(a,{plugin:()=>e});const e={name:"settingsPanel.tagFilters.recentComponents",displayName:'设置面板 - "最近使用" 类别',description:'在设置面板中添加 "最近使用" 类别, 方便检索最近操作过的组件.',setup:e=>{let{addData:t,addHook:n}=e;const o=async()=>{const{getGeneralSettings:e}=await Promise.resolve().then(r.t.bind(r,986,23)),t=e();return t.recentComponents||(t.recentComponents={}),t.recentComponents};n("settingsPanel.componentDetail.open",{after:async e=>{(await o())[e]=Number(new Date)}}),n("userComponents.add",{after:async(e,t,n)=>{(await o())[n.name]=Number(new Date)}}),n("userComponents.remove",{after:async e=>{delete(await o())[e.name]}}),t("settingsPanel.tagFilters",(async e=>{const t=await o();e.unshift((e=>{let{renderedComponents:n}=e;return{name:"recent",displayName:"最近",color:"inherit",icon:"mdi-clock-outline",order:0,count:n.length,filter:e=>lodash.sortBy(e,(e=>t[e.name]??0)).reverse()}}))}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),a=a.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["settings-panel/recent-components"]=t():e["settings-panel/recent-components"]=t()}(globalThis,(()=>(()=>{"use strict";var e,t,n={986:e=>{e.exports=coreApis.settings}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var a=o[e]={exports:{}};return n[e](a,a.exports,r),a.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n;if("object"==typeof n&&n){if(4&o&&n.__esModule)return n;if(16&o&&"function"==typeof n.then)return n}var a=Object.create(null);r.r(a);var s={};e=e||[null,t({}),t([]),t(t)];for(var i=2&o&&n;"object"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach((e=>s[e]=()=>n[e]));return s.default=()=>n,r.d(a,s),a},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{r.d(a,{plugin:()=>e});const e={name:"settingsPanel.tagFilters.recentComponents",displayName:'设置面板 - "最近使用" 类别',description:'在设置面板中添加 "最近使用" 类别, 方便检索最近操作过的组件.',setup:e=>{let{addData:t,addHook:n}=e;const o=async()=>{const{getGeneralSettings:e}=await Promise.resolve().then(r.t.bind(r,986,23)),t=e();return t.recentComponents||(t.recentComponents={}),t.recentComponents};n("settingsPanel.componentDetail.open",{after:async e=>{(await o())[e]=Number(new Date)}}),n("userComponents.add",{after:async(e,t,n)=>{(await o())[n.name]=Number(new Date)}}),n("userComponents.remove",{after:async e=>{delete(await o())[e.name]}}),t("settingsPanel.tagFilters",(async e=>{const t=await o();e.unshift((e=>{let{renderedComponents:n}=e;return{name:"recent",displayName:"最近",color:"inherit",icon:"mdi-clock-outline",order:0,count:n.length,filter:e=>lodash.sortBy(e,(e=>t[e.name]??0)).reverse()}}))}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),a=a.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/style/custom-navbar-channel.js b/bb-evolved/registry/dist/plugins/style/custom-navbar-channel.js index 6ad934e475..65c415b8b8 100644 --- a/bb-evolved/registry/dist/plugins/style/custom-navbar-channel.js +++ b/bb-evolved/registry/dist/plugins/style/custom-navbar-channel.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/custom-navbar-channel"]=t():e["style/custom-navbar-channel"]=t()}(globalThis,(()=>(()=>{"use strict";var e={177:(e,t,n)=>{n.r(t),n.d(t,{default:()=>i});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"navbar-channel",attrs:{"data-channel-id":e.channelId}},[e._v("频道")])};o._withStripped=!0;const a=coreApis.ajax;var r=function(e,t,n,o,a,r,i,s){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),i?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),a&&a.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=c):a&&(c=s?function(){a.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:a),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(Vue.extend({data:()=>({channelId:null}),async created(){const{channel_id:e}=await(0,a.bilibiliApi)((0,a.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/web/channel/red"));e&&(this.channelId=e)}}),o,[],!1,null,null,null);const i=r.exports}},t={};function n(o){var a=t[o];if(void 0!==a)return a.exports;var r=t[o]={exports:{}};return e[o](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.d(o,{plugin:()=>t});const e=coreApis.settings,t={name:"customNavbar.items.channel",displayName:"自定义顶栏 - 频道",description:"为自定义顶栏添加一个频道入口.",async setup(t){let{addData:o}=t;o("customNavbar.items",(t=>{const o="https://www.bilibili.com/v/channel/",a="channel";t.push({name:"channel",displayName:"频道",content:()=>Promise.resolve().then(n.bind(n,177)),clickAction:()=>{const t=dq(".navbar-channel").getAttribute("data-channel-id");window.open(t?`${o}${t}`:o,(()=>{const{options:t}=(0,e.getComponentSettings)("customNavbar");return a in t.openInNewTabOverrides?t.openInNewTabOverrides[a]:t.openInNewTab})()?"_blank":"_self")}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),o=o.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["style/custom-navbar-channel"]=t():e["style/custom-navbar-channel"]=t()}(globalThis,(()=>(()=>{"use strict";var e={177:(e,t,n)=>{n.r(t),n.d(t,{default:()=>i});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"navbar-channel",attrs:{"data-channel-id":e.channelId}},[e._v("频道")])};o._withStripped=!0;const a=coreApis.ajax;var r=function(e,t,n,o,a,r,i,s){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),i?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),a&&a.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},l._ssrRegister=c):a&&(c=s?function(){a.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:a),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(Vue.extend({data:()=>({channelId:null}),async created(){const{channel_id:e}=await(0,a.bilibiliApi)((0,a.getJsonWithCredentials)("https://api.bilibili.com/x/web-interface/web/channel/red"));e&&(this.channelId=e)}}),o,[],!1,null,null,null);const i=r.exports}},t={};function n(o){var a=t[o];if(void 0!==a)return a.exports;var r=t[o]={exports:{}};return e[o](r,r.exports,n),r.exports}n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{n.d(o,{plugin:()=>t});const e=coreApis.settings,t={name:"customNavbar.items.channel",displayName:"自定义顶栏 - 频道",description:"为自定义顶栏添加一个频道入口.",async setup(t){let{addData:o}=t;o("customNavbar.items",(t=>{const o="https://www.bilibili.com/v/channel/",a="channel";t.push({name:"channel",displayName:"频道",content:()=>Promise.resolve().then(n.bind(n,177)),clickAction:()=>{const t=dq(".navbar-channel").getAttribute("data-channel-id");window.open(t?`${o}${t}`:o,(()=>{const{options:t}=(0,e.getComponentSettings)("customNavbar");return a in t.openInNewTabOverrides?t.openInNewTabOverrides[a]:t.openInNewTab})()?"_blank":"_self")}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/style/custom-navbar-dark-mode.js b/bb-evolved/registry/dist/plugins/style/custom-navbar-dark-mode.js index 5b1423a6a2..e9e51056cb 100644 --- a/bb-evolved/registry/dist/plugins/style/custom-navbar-dark-mode.js +++ b/bb-evolved/registry/dist/plugins/style/custom-navbar-dark-mode.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(r)for(var a=0;a{"use strict";var r,o=function(){return void 0===r&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -r=Boolean(window&&document&&document.all&&!window.atob)),r},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),i=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>f});var r=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"navbar-dark-mode",attrs:{title:e.dark?"关闭夜间模式":"开启夜间模式"}},[e.dark?t("svg",{staticStyle:{width:"18px"},attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 47.96 47.96"}},[t("path",{attrs:{d:"M24,12A12,12,0,1,0,36,24,12,12,0,0,0,24,12Zm0,20a8,8,0,1,1,8-8A8,8,0,0,1,24,32Z"}}),e._v(" "),t("path",{attrs:{d:"M24,9a2,2,0,0,0,2-2V4a2,2,0,0,0-4,0V7A2,2,0,0,0,24,9Z"}}),e._v(" "),t("path",{attrs:{d:"M36,14a2,2,0,0,0,1.42-.59l2.12-2.12a2,2,0,1,0-2.83-2.83l-2.12,2.12A2,2,0,0,0,36,14Z"}}),e._v(" "),t("path",{attrs:{d:"M44,22H41a2,2,0,0,0,0,4h3a2,2,0,1,0,0-4Z"}}),e._v(" "),t("path",{attrs:{d:"M37.4,34.61a2,2,0,1,0-2.83,2.82l2.12,2.13a2,2,0,0,0,2.83-2.83Z"}}),e._v(" "),t("path",{attrs:{d:"M24,39a2,2,0,0,0-2,2v3a2,2,0,0,0,4,0V41A2,2,0,0,0,24,39Z"}}),e._v(" "),t("path",{attrs:{d:"M10.53,34.61,8.41,36.73a2,2,0,0,0,0,2.83,2,2,0,0,0,2.82,0l2.13-2.13a2,2,0,1,0-2.83-2.82Z"}}),e._v(" "),t("path",{attrs:{d:"M9,24a2,2,0,0,0-2-2H4a2,2,0,0,0,0,4H7A2,2,0,0,0,9,24Z"}}),e._v(" "),t("path",{attrs:{d:"M10.53,13.39a2,2,0,0,0,1.41.59,2,2,0,0,0,1.42-3.42L11.23,8.44a2,2,0,0,0-2.82,2.83Z"}})]):t("svg",{staticStyle:{width:"18px"},attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48"}},[t("path",{attrs:{d:"M24.48,42.18A18.66,18.66,0,0,1,22.11,5,2,2,0,0,1,23.56,8.6,11.32,11.32,0,1,0,39.4,24.44,2,2,0,0,1,43,25.89,18.68,18.68,0,0,1,24.48,42.18ZM16.36,11.32A14.66,14.66,0,1,0,36.68,31.64,15.35,15.35,0,0,1,15,17.68,15.2,15.2,0,0,1,16.36,11.32Z"}})])])};r._withStripped=!0;var o=n(986);const a=Vue.extend({data:()=>({dark:(0,o.getComponentSettings)("darkMode").enabled}),created(){(0,o.addComponentListener)("darkMode",(e=>{this.dark=e}))}});var i=n(332),s=n.n(i),d=n(804),c=n.n(d),l={insert:"head",singleton:!1};s()(c(),l);c().locals;var u=function(e,t,n,r,o,a,i,s){var d,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),a&&(c._scopeId="data-v-"+a),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},c._ssrRegister=d):o&&(d=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),d)if(c.functional){c._injectStyles=d;var l=c.render;c.render=function(e,t){return d.call(t),l(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,d):[d]}return{exports:e,options:c}}(a,r,[],!1,null,null,null);const f=u.exports},986:e=>{"use strict";e.exports=coreApis.settings}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,exports:{}};return n[e](a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var a=Object.create(null);o.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>n[e]));return i.default=()=>n,o.d(a,i),a},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{plugin:()=>e});const e={name:"customNavbar.items.darkMode",displayName:"自定义顶栏 - 夜间模式开关",description:"为自定义顶栏添加一个夜间模式开关, 方便快速切换夜间模式.",async setup(e){let{addData:t}=e;const{getComponentSettings:n}=await Promise.resolve().then(o.t.bind(o,986,23));t("customNavbar.items",(e=>{e.push({name:"darkMode",displayName:"夜间开关",content:()=>Promise.resolve().then(o.bind(o,897)),clickAction:()=>{const e=n("darkMode");e.enabled=!e.enabled}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),a=a.plugin})())); \ No newline at end of file +r=Boolean(window&&document&&document.all&&!window.atob)),r},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),i=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>f});var r=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"navbar-dark-mode",attrs:{title:e.dark?"关闭夜间模式":"开启夜间模式"}},[e.dark?t("svg",{staticStyle:{width:"18px"},attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 47.96 47.96"}},[t("path",{attrs:{d:"M24,12A12,12,0,1,0,36,24,12,12,0,0,0,24,12Zm0,20a8,8,0,1,1,8-8A8,8,0,0,1,24,32Z"}}),e._v(" "),t("path",{attrs:{d:"M24,9a2,2,0,0,0,2-2V4a2,2,0,0,0-4,0V7A2,2,0,0,0,24,9Z"}}),e._v(" "),t("path",{attrs:{d:"M36,14a2,2,0,0,0,1.42-.59l2.12-2.12a2,2,0,1,0-2.83-2.83l-2.12,2.12A2,2,0,0,0,36,14Z"}}),e._v(" "),t("path",{attrs:{d:"M44,22H41a2,2,0,0,0,0,4h3a2,2,0,1,0,0-4Z"}}),e._v(" "),t("path",{attrs:{d:"M37.4,34.61a2,2,0,1,0-2.83,2.82l2.12,2.13a2,2,0,0,0,2.83-2.83Z"}}),e._v(" "),t("path",{attrs:{d:"M24,39a2,2,0,0,0-2,2v3a2,2,0,0,0,4,0V41A2,2,0,0,0,24,39Z"}}),e._v(" "),t("path",{attrs:{d:"M10.53,34.61,8.41,36.73a2,2,0,0,0,0,2.83,2,2,0,0,0,2.82,0l2.13-2.13a2,2,0,1,0-2.83-2.82Z"}}),e._v(" "),t("path",{attrs:{d:"M9,24a2,2,0,0,0-2-2H4a2,2,0,0,0,0,4H7A2,2,0,0,0,9,24Z"}}),e._v(" "),t("path",{attrs:{d:"M10.53,13.39a2,2,0,0,0,1.41.59,2,2,0,0,0,1.42-3.42L11.23,8.44a2,2,0,0,0-2.82,2.83Z"}})]):t("svg",{staticStyle:{width:"18px"},attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 48 48"}},[t("path",{attrs:{d:"M24.48,42.18A18.66,18.66,0,0,1,22.11,5,2,2,0,0,1,23.56,8.6,11.32,11.32,0,1,0,39.4,24.44,2,2,0,0,1,43,25.89,18.68,18.68,0,0,1,24.48,42.18ZM16.36,11.32A14.66,14.66,0,1,0,36.68,31.64,15.35,15.35,0,0,1,15,17.68,15.2,15.2,0,0,1,16.36,11.32Z"}})])])};r._withStripped=!0;var o=n(986);const a=Vue.extend({data:()=>({dark:(0,o.getComponentSettings)("darkMode").enabled}),created(){(0,o.addComponentListener)("darkMode",(e=>{this.dark=e}))}});var i=n(332),s=n.n(i),d=n(804),c=n.n(d),l={insert:"head",singleton:!1};s()(c(),l);c().locals;var u=function(e,t,n,r,o,a,i,s){var d,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),a&&(c._scopeId="data-v-"+a),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},c._ssrRegister=d):o&&(d=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),d)if(c.functional){c._injectStyles=d;var l=c.render;c.render=function(e,t){return d.call(t),l(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,d):[d]}return{exports:e,options:c}}(a,r,[],!1,null,null,null);const f=u.exports},986:e=>{"use strict";e.exports=coreApis.settings}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={id:e,exports:{}};return n[e](a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var a=Object.create(null);o.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>i[e]=()=>n[e]));return i.default=()=>n,o.d(a,i),a},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";o.d(a,{plugin:()=>e});const e={name:"customNavbar.items.darkMode",displayName:"自定义顶栏 - 夜间模式开关",description:"为自定义顶栏添加一个夜间模式开关, 方便快速切换夜间模式.",async setup(e){let{addData:t}=e;const{getComponentSettings:n}=await Promise.resolve().then(o.t.bind(o,986,23));t("customNavbar.items",(e=>{e.push({name:"darkMode",displayName:"夜间开关",content:()=>Promise.resolve().then(o.bind(o,897)),clickAction:()=>{const e=n("darkMode");e.enabled=!e.enabled}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),a=a.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/utils/keymap-dark-mode.js b/bb-evolved/registry/dist/plugins/utils/keymap-dark-mode.js index 129ca81f11..57408bcd4d 100644 --- a/bb-evolved/registry/dist/plugins/utils/keymap-dark-mode.js +++ b/bb-evolved/registry/dist/plugins/utils/keymap-dark-mode.js @@ -1 +1 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["utils/keymap-dark-mode"]=o():e["utils/keymap-dark-mode"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var a in t)e.o(t,a)&&!e.o(o,a)&&Object.defineProperty(o,a,{enumerable:!0,get:t[a]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{plugin:()=>t});const t={name:"keymap.actions.darkMode",displayName:"快捷键扩展 - 夜间模式",description:'在快捷键的动作列表里添加一个 "夜间模式", 可以通过快捷键切换夜间模式',setup:e=>{let{addData:o,coreApis:{settings:t}}=e;o("keymap.actions",(e=>{e.darkMode={displayName:"夜间模式",run:()=>{const e=t.getComponentSettings("darkMode");e.enabled=!e.enabled}}})),o("keymap.presets",(e=>{e.darkMode=""}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return o=o.plugin})())); \ No newline at end of file +!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["utils/keymap-dark-mode"]=o():e["utils/keymap-dark-mode"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var a in t)e.o(t,a)&&!e.o(o,a)&&Object.defineProperty(o,a,{enumerable:!0,get:t[a]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{plugin:()=>t});const t={name:"keymap.actions.darkMode",displayName:"快捷键扩展 - 夜间模式",description:'在快捷键的动作列表里添加一个 "夜间模式", 可以通过快捷键切换夜间模式',setup:e=>{let{addData:o,coreApis:{settings:t}}=e;o("keymap.actions",(e=>{e.darkMode={displayName:"夜间模式",run:()=>{const e=t.getComponentSettings("darkMode");e.enabled=!e.enabled}}})),o("keymap.presets",(e=>{e.darkMode=""}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/utils/keymap-empty-action.ts.js b/bb-evolved/registry/dist/plugins/utils/keymap-empty-action.ts.js index 0de4ee14b9..5281bb9f1f 100644 --- a/bb-evolved/registry/dist/plugins/utils/keymap-empty-action.ts.js +++ b/bb-evolved/registry/dist/plugins/utils/keymap-empty-action.ts.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-empty-action.ts"]=t():e["utils/keymap-empty-action.ts"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var p in o)e.o(o,p)&&!e.o(t,p)&&Object.defineProperty(t,p,{enumerable:!0,get:o[p]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>o});const o={name:"keymap.actions.empty",displayName:"快捷键扩展 - 无动作",description:'在快捷键的动作列表里添加一个 "无动作", 将按键绑定到这个上面就可以阻止原有的快捷键行为.',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.empty={displayName:"无动作",prevent:!0,run:none}})),t("keymap.presets",(e=>{e.empty=""}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return t=t.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-empty-action.ts"]=t():e["utils/keymap-empty-action.ts"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var p in o)e.o(o,p)&&!e.o(t,p)&&Object.defineProperty(t,p,{enumerable:!0,get:o[p]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>o});const o={name:"keymap.actions.empty",displayName:"快捷键扩展 - 无动作",description:'在快捷键的动作列表里添加一个 "无动作", 将按键绑定到这个上面就可以阻止原有的快捷键行为.',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.empty={displayName:"无动作",prevent:!0,run:none}})),t("keymap.presets",(e=>{e.empty=""}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return t=t.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/utils/keymap-toggle-danmaku-list.js b/bb-evolved/registry/dist/plugins/utils/keymap-toggle-danmaku-list.js index f7f1ca5ee8..67a205233a 100644 --- a/bb-evolved/registry/dist/plugins/utils/keymap-toggle-danmaku-list.js +++ b/bb-evolved/registry/dist/plugins/utils/keymap-toggle-danmaku-list.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-toggle-danmaku-list"]=t():e["utils/keymap-toggle-danmaku-list"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,a)=>{for(var o in a)e.o(a,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:a[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>a});const a={name:"keymap.actions.toggleDanmakuList",displayName:"快捷键扩展 - 开关弹幕列表",description:'在快捷键的动作列表里添加一个 "开关弹幕列表".',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.toggleDanmakuList={displayName:"开关弹幕列表",run:async()=>{const e=dq(".bui-collapse-header");return e?.click(),e}}})),t("keymap.presets",((e,t)=>{e.toggleDanmakuList="shift d",t.HTML5Player.toggleDanmakuList="",t.PotPlayer.toggleDanmakuList=""}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return t=t.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-toggle-danmaku-list"]=t():e["utils/keymap-toggle-danmaku-list"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,a)=>{for(var o in a)e.o(a,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:a[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>a});const a={name:"keymap.actions.toggleDanmakuList",displayName:"快捷键扩展 - 开关弹幕列表",description:'在快捷键的动作列表里添加一个 "开关弹幕列表".',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.toggleDanmakuList={displayName:"开关弹幕列表",run:async()=>{const e=dq(".bui-collapse-header");return e?.click(),e}}})),t("keymap.presets",((e,t)=>{e.toggleDanmakuList="shift d",t.HTML5Player.toggleDanmakuList="",t.PotPlayer.toggleDanmakuList=""}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return t=t.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/utils/keymap-toggle-player-light.js b/bb-evolved/registry/dist/plugins/utils/keymap-toggle-player-light.js index 3358e8346c..11661f5a97 100644 --- a/bb-evolved/registry/dist/plugins/utils/keymap-toggle-player-light.js +++ b/bb-evolved/registry/dist/plugins/utils/keymap-toggle-player-light.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-toggle-player-light"]=t():e["utils/keymap-toggle-player-light"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var a in o)e.o(o,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:o[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>a});const o=coreApis.componentApis.video.playerLight,a={name:"keymap.actions.togglePlayerLight",displayName:"快捷键扩展 - 开关灯",description:'在快捷键的动作列表里添加一个 "开关灯".',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.togglePlayerLight={displayName:"开关灯",run:async()=>{(0,o.toggleLight)()}}})),t("keymap.presets",(e=>{e.togglePlayerLight="shift l"}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return t=t.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-toggle-player-light"]=t():e["utils/keymap-toggle-player-light"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var a in o)e.o(o,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:o[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>a});const o=coreApis.componentApis.video.playerLight,a={name:"keymap.actions.togglePlayerLight",displayName:"快捷键扩展 - 开关灯",description:'在快捷键的动作列表里添加一个 "开关灯".',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.togglePlayerLight={displayName:"开关灯",run:async()=>{(0,o.toggleLight)()}}})),t("keymap.presets",(e=>{e.togglePlayerLight="shift l"}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return t=t.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/utils/keymap-toggle-subtitle.js b/bb-evolved/registry/dist/plugins/utils/keymap-toggle-subtitle.js index b73df450f2..44013ba6da 100644 --- a/bb-evolved/registry/dist/plugins/utils/keymap-toggle-subtitle.js +++ b/bb-evolved/registry/dist/plugins/utils/keymap-toggle-subtitle.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-toggle-subtitle"]=t():e["utils/keymap-toggle-subtitle"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var i in o)e.o(o,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:o[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>i});const o=coreApis.componentApis.video.playerAgent,i={name:"keymap.actions.toggleSubtitle",displayName:"快捷键扩展 - 开关 CC 字幕",description:'在快捷键的动作列表里添加一个 "开关 CC 字幕".',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.toggleSubtitle={displayName:"开关 CC 字幕",run:async()=>{const e=o.playerAgent.query.control.buttons.subtitle.sync();return e?.click(),e}}})),t("keymap.presets",((e,t)=>{e.toggleSubtitle="shift c",t.YouTube.toggleSubtitle="c",t.YouTube.coin="",t.PotPlayer.toggleSubtitle="alt h"}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return t=t.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["utils/keymap-toggle-subtitle"]=t():e["utils/keymap-toggle-subtitle"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var i in o)e.o(o,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:o[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>i});const o=coreApis.componentApis.video.playerAgent,i={name:"keymap.actions.toggleSubtitle",displayName:"快捷键扩展 - 开关 CC 字幕",description:'在快捷键的动作列表里添加一个 "开关 CC 字幕".',setup:e=>{let{addData:t}=e;t("keymap.actions",(e=>{e.toggleSubtitle={displayName:"开关 CC 字幕",run:async()=>{const e=o.playerAgent.query.control.buttons.subtitle.sync();return e?.click(),e}}})),t("keymap.presets",((e,t)=>{e.toggleSubtitle="shift c",t.YouTube.toggleSubtitle="c",t.YouTube.coin="",t.PotPlayer.toggleSubtitle="alt h"}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return t=t.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/v-loading/reimu.js b/bb-evolved/registry/dist/plugins/v-loading/reimu.js index cb74eac34c..cf37241579 100644 --- a/bb-evolved/registry/dist/plugins/v-loading/reimu.js +++ b/bb-evolved/registry/dist/plugins/v-loading/reimu.js @@ -9,4 +9,4 @@ A=[[null,A,""]]);var g={};if(C)for(var E=0;E{"use strict";var C,g=function(){return void 0===C&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -C=Boolean(window&&document&&document.all&&!window.atob)),C},E=function(){var A={};return function(I){if(void 0===A[I]){var Q=document.querySelector(I);if(window.HTMLIFrameElement&&Q instanceof window.HTMLIFrameElement)try{Q=Q.contentDocument.head}catch(A){Q=null}A[I]=Q}return A[I]}}(),B=[];function M(A){for(var I=-1,Q=0;Q{"use strict";Q.r(I),Q.d(I,{default:()=>h});var C=function(){this._self._c;return this._m(0)};C._withStripped=!0;var g=Q(332),E=Q.n(g),B=Q(650),M=Q.n(B),D={insert:"head",singleton:!1};E()(M(),D);M().locals;var i=function(A,I,Q,C,g,E,B,M){var D,i="function"==typeof A?A.options:A;if(I&&(i.render=I,i.staticRenderFns=Q,i._compiled=!0),C&&(i.functional=!0),E&&(i._scopeId="data-v-"+E),B?(D=function(A){(A=A||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(A=__VUE_SSR_CONTEXT__),g&&g.call(this,A),A&&A._registeredComponents&&A._registeredComponents.add(B)},i._ssrRegister=D):g&&(D=M?function(){g.call(this,(i.functional?this.parent:this).$root.$options.shadowRoot)}:g),D)if(i.functional){i._injectStyles=D;var h=i.render;i.render=function(A,I){return D.call(I),h(A,I)}}else{var w=i.beforeCreate;i.beforeCreate=w?[].concat(w,D):[D]}return{exports:A,options:i}}({},C,[function(){var A=this._self._c;return A("div",{staticClass:"reimu-loading"},[A("div",{staticClass:"reimu-icon"}),this._v("\n 少女祈祷中...\n")])}],!1,null,null,null);const h=i.exports}},I={};function Q(C){var g=I[C];if(void 0!==g)return g.exports;var E=I[C]={id:C,exports:{}};return A[C](E,E.exports,Q),E.exports}Q.n=A=>{var I=A&&A.__esModule?()=>A.default:()=>A;return Q.d(I,{a:I}),I},Q.d=(A,I)=>{for(var C in I)Q.o(I,C)&&!Q.o(A,C)&&Object.defineProperty(A,C,{enumerable:!0,get:I[C]})},Q.o=(A,I)=>Object.prototype.hasOwnProperty.call(A,I),Q.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var C={};return(()=>{"use strict";Q.d(C,{plugin:()=>A});const A={name:"vLoading.reimu",displayName:"加载提示 - 灵梦油库里",description:'用灵梦油库里代替脚本的所有 "加载中" 提示, 油库里素材来自[东方我乐多从志](https://cn.touhougarakuta.com/).',setup:A=>{let{addData:I}=A;I("vLoading",(A=>{A.content=()=>Promise.resolve().then(Q.bind(Q,936)).then((A=>A.default))}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),C=C.plugin})())); \ No newline at end of file +C=Boolean(window&&document&&document.all&&!window.atob)),C},E=function(){var A={};return function(I){if(void 0===A[I]){var Q=document.querySelector(I);if(window.HTMLIFrameElement&&Q instanceof window.HTMLIFrameElement)try{Q=Q.contentDocument.head}catch(A){Q=null}A[I]=Q}return A[I]}}(),B=[];function M(A){for(var I=-1,Q=0;Q{"use strict";Q.r(I),Q.d(I,{default:()=>h});var C=function(){this._self._c;return this._m(0)};C._withStripped=!0;var g=Q(332),E=Q.n(g),B=Q(650),M=Q.n(B),D={insert:"head",singleton:!1};E()(M(),D);M().locals;var i=function(A,I,Q,C,g,E,B,M){var D,i="function"==typeof A?A.options:A;if(I&&(i.render=I,i.staticRenderFns=Q,i._compiled=!0),C&&(i.functional=!0),E&&(i._scopeId="data-v-"+E),B?(D=function(A){(A=A||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(A=__VUE_SSR_CONTEXT__),g&&g.call(this,A),A&&A._registeredComponents&&A._registeredComponents.add(B)},i._ssrRegister=D):g&&(D=M?function(){g.call(this,(i.functional?this.parent:this).$root.$options.shadowRoot)}:g),D)if(i.functional){i._injectStyles=D;var h=i.render;i.render=function(A,I){return D.call(I),h(A,I)}}else{var w=i.beforeCreate;i.beforeCreate=w?[].concat(w,D):[D]}return{exports:A,options:i}}({},C,[function(){var A=this._self._c;return A("div",{staticClass:"reimu-loading"},[A("div",{staticClass:"reimu-icon"}),this._v("\n 少女祈祷中...\n")])}],!1,null,null,null);const h=i.exports}},I={};function Q(C){var g=I[C];if(void 0!==g)return g.exports;var E=I[C]={id:C,exports:{}};return A[C](E,E.exports,Q),E.exports}Q.n=A=>{var I=A&&A.__esModule?()=>A.default:()=>A;return Q.d(I,{a:I}),I},Q.d=(A,I)=>{for(var C in I)Q.o(I,C)&&!Q.o(A,C)&&Object.defineProperty(A,C,{enumerable:!0,get:I[C]})},Q.o=(A,I)=>Object.prototype.hasOwnProperty.call(A,I),Q.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var C={};return(()=>{"use strict";Q.d(C,{plugin:()=>A});const A={name:"vLoading.reimu",displayName:"加载提示 - 灵梦油库里",description:'用灵梦油库里代替脚本的所有 "加载中" 提示, 油库里素材来自[东方我乐多从志](https://cn.touhougarakuta.com/).',setup:A=>{let{addData:I}=A;I("vLoading",(A=>{A.content=()=>Promise.resolve().then(Q.bind(Q,936)).then((A=>A.default))}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),C=C.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/aria2-output.js b/bb-evolved/registry/dist/plugins/video/download/aria2-output.js index 5280d2692b..a2565175e4 100644 --- a/bb-evolved/registry/dist/plugins/video/download/aria2-output.js +++ b/bb-evolved/registry/dist/plugins/video/download/aria2-output.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var r={};if(o)for(var i=0;i{"use strict";var o,r=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>P});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"rpc-config download-video-config-section"},[e.isRenaming?t("div",{staticClass:"profile-select"},[t("div",{staticClass:"profile-item-name"},[e._v("重命名 RPC 预设:")]),e._v(" "),t("TextBox",{ref:"renameInput",model:{value:e.profileRename,callback:function(t){e.profileRename=t},expression:"profileRename"}}),e._v(" "),t("VButton",{key:"check",attrs:{type:"transparent",title:"完成"},on:{click:function(t){return e.endRename()}}},[t("VIcon",{attrs:{icon:"mdi-check",size:16}})],1)],1):t("div",{staticClass:"profile-select"},[t("div",{staticClass:"profile-item-name"},[e._v("RPC 预设:")]),e._v(" "),t("VDropdown",{attrs:{items:e.rpcProfiles},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t.name)+"\n ")]}}]),model:{value:e.selectedRpcProfile,callback:function(t){e.selectedRpcProfile=t},expression:"selectedRpcProfile"}}),e._v(" "),t("VButton",{key:"edit",attrs:{type:"transparent",title:"重命名"},on:{click:function(t){return e.startRename()}}},[t("VIcon",{attrs:{icon:"mdi-pencil-outline",size:16}})],1),e._v(" "),t("VButton",{key:"new",attrs:{type:"transparent",title:"新建预设"},on:{click:function(t){return e.newProfile()}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:16}})],1),e._v(" "),t("VButton",{key:"delete",attrs:{disabled:e.rpcProfiles.length<2,type:"transparent",title:"删除当前预设"},on:{click:function(t){return e.deleteProfile()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}})],1)],1),e._v(" "),e.selectedRpcProfile?[t("div",{staticClass:"profile-secret-key"},[t("div",{staticClass:"profile-item-name"},[e._v("密钥:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.secretKey,callback:function(t){e.$set(e.selectedRpcProfile,"secretKey",t)},expression:"selectedRpcProfile.secretKey"}})],1),e._v(" "),t("div",{staticClass:"profile-dir"},[t("div",{staticClass:"profile-item-name"},[e._v("路径:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.dir,callback:function(t){e.$set(e.selectedRpcProfile,"dir",t)},expression:"selectedRpcProfile.dir"}})],1),e._v(" "),t("div",{staticClass:"profile-host"},[t("div",{staticClass:"profile-item-name"},[e._v("主机:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.host,callback:function(t){e.$set(e.selectedRpcProfile,"host",t)},expression:"selectedRpcProfile.host"}})],1),e._v(" "),t("div",{staticClass:"profile-port"},[t("div",{staticClass:"profile-item-name"},[e._v("端口:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.port,callback:function(t){e.$set(e.selectedRpcProfile,"port",t)},expression:"selectedRpcProfile.port"}})],1),e._v(" "),t("div",{staticClass:"profile-method"},[t("div",{staticClass:"profile-item-name"},[e._v("方法:")]),e._v(" "),t("VDropdown",{attrs:{items:["get","post"],"key-mapper":e=>e},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}],null,!1,883355439),model:{value:e.selectedRpcProfile.method,callback:function(t){e.$set(e.selectedRpcProfile,"method",t)},expression:"selectedRpcProfile.method"}})],1),e._v(" "),t("div",{staticClass:"profile-other"},[t("div",{staticClass:"profile-item-name"},[e._v("其他配置:")]),e._v(" "),t("TextArea",{attrs:{placeholder:"some-key=value","change-on-blur":""},model:{value:e.selectedRpcProfile.other,callback:function(t){e.$set(e.selectedRpcProfile,"other",t)},expression:"selectedRpcProfile.other"}})],1)]:e._e()],2)};o._withStripped=!0;const r=coreApis.settings;var i=n(391);const s=coreApis.ui,a={name:"未命名",secretKey:"",dir:"",host:"127.0.0.1",port:"6800",method:"get",other:""},{options:c}=(0,r.getComponentSettings)("downloadVideo"),l={...{rpcProfiles:[a],selectedRpcProfileName:a.name},...c},d=l.rpcProfiles.find((e=>e.name===l.selectedRpcProfileName))??(l.rpcProfiles.length<1?(l.rpcProfiles.push(a),a):l.rpcProfiles[0]);console.log(l,d);const p=Vue.extend({components:{TextBox:s.TextBox,VButton:s.VButton,VIcon:s.VIcon,VDropdown:s.VDropdown,TextArea:s.TextArea},data:()=>({isRenaming:!1,profileRename:"",rpcProfiles:l.rpcProfiles,selectedRpcProfile:d}),methods:{saveSettings(){l.selectedRpcProfileName=this.selectedRpcProfile.name,l.rpcProfiles=this.rpcProfiles,Object.assign(c,l)},async startRename(){this.profileRename=this.selectedRpcProfile.name,this.isRenaming=!0,await this.$nextTick(),this.$refs.renameInput?.focus()},endRename(){const e=this.profileRename;e?l.rpcProfiles.some((t=>t.name!==this.selectedRpcProfile.name&&t.name===e))?i.Toast.error("名称不得与其他预设重复","重命名 RPC 预设",2e3):(this.selectedRpcProfile.name=this.profileRename,this.isRenaming=!1,this.saveSettings()):i.Toast.error("名称不得为空","重命名 RPC 预设",2e3)},newProfile(){const e={...this.selectedRpcProfile},t={num:1,toString(){return`未命名${this.num}`}};for(;l.rpcProfiles.some((e=>e.name===t.toString()));)t.num++;e.name=t.toString(),l.rpcProfiles.push(e),this.selectedRpcProfile=e},deleteProfile(){if(l.rpcProfiles.length<2)return;const e=l.rpcProfiles.findIndex((e=>e.name===this.selectedRpcProfile.name));-1!==e&&confirm(`确认删除 RPC 预设 "${this.selectedRpcProfile.name}" 吗?`)&&(l.rpcProfiles.splice(e,1),this.selectedRpcProfile=l.rpcProfiles[0])}}});var f=n(332),u=n.n(f),m=n(800),h=n.n(m),v={insert:"head",singleton:!1};u()(h(),v);h().locals;var g=function(e,t,n,o,r,i,s,a){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),i&&(l._scopeId="data-v-"+i),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=c):r&&(c=a?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(p,o,[],!1,null,null,null);const P=g.exports},391:e=>{"use strict";e.exports=coreApis.toast}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{plugin:()=>h});const e=coreApis.download,t=coreApis.utils.constants,r=coreApis.utils.title,i={name:"aria2",displayName:"aria2 Input",description:"使用 aria2 命令行输入文件开始下载. (aria2c -i xxx.txt)",runAction:async n=>{const{infos:o}=n,i=document.URL.replace(window.location.search,""),s=`\n# Generated by Bilibili Evolved Video Export\n# https://github.com/the1812/Bilibili-Evolved/\n${o.map((e=>e.titledFragments.map((e=>({url:e.url,params:{referer:i,userAgent:t.UserAgent,out:e.title}}))).flat().map((e=>{const t=Object.entries(e.params).map((e=>{let[t,n]=e;return` ${lodash.kebabCase(t)}=${n}`})).join("\n");return`${e.url}\n${t}`})))).flat().join("\n")}`.trim();await e.DownloadPackage.single(`${(0,r.getFriendlyTitle)()}.txt`,s)}},s=coreApis.ajax;var a=n(391);const c=coreApis.utils.log,l=e=>{const t=e.host.match(/^http[s]?:\/\//)?e.host:`http://${e.host}`;return{option:e,host:t,methodName:"aria2.addUri"}},d=async(e,t)=>{try{let n=await t();return"string"==typeof n&&(n=JSON.parse(n)),void 0!==n.error?1===n.error.code?{param:e,success:!1,message:"请求遭到拒绝, 请检查您的密钥相关设置."}:{param:e,success:!1,message:`请求发生错误, code = ${n.error.code}, message = ${n.error.message}`}:{param:e,success:!0,message:n.result}}catch(t){return{param:e,success:!1,message:`无法连接到RPC主机, error = ${t.toString()}`}}},p=async(e,t)=>{const{option:n,host:o,methodName:r}=l(e);return d(t,(async()=>{const e=window.btoa(unescape(encodeURIComponent(JSON.stringify(t.params)))),i=`${o}:${n.port}/jsonrpc?method=${r}&id=${t.id}¶ms=${e}`;return console.log(`RPC request: ${i}`),i.startsWith("http:")?(0,s.monkey)({method:"GET",url:i,responseType:"json"}):(0,s.getJson)(i)}))},f=async(e,t)=>{const{option:n,host:o,methodName:r}=l(e);return d(t,(async()=>{const e=`${o}:${n.port}/jsonrpc`,i={method:r,id:t.id,params:t.params};return e.startsWith("http:")?(0,s.monkey)({method:"POST",url:e,responseType:"json",data:JSON.stringify(i)}):(0,s.postJson)(e,i)}))},u=e=>{if(!e)return{};const t=e.split("\n").map((e=>{const[t,...n]=e.trim().split("=");return[t.trim(),n.join("=").trim()]})).filter((e=>Boolean(e[1])));return Object.fromEntries(t)},m={name:"aria2Rpc",displayName:"aria2 RPC",description:"使用 aria2 RPC 功能发送下载请求.",runAction:async(e,n)=>{const{infos:o}=e,{selectedRpcProfile:r}=n,{secretKey:i,dir:s,other:l}=r,d=document.URL.replace(window.location.search,""),m=o.map((e=>e.titledFragments.map((e=>{const n=[];i&&n.push(`token:${i}`),n.push([e.url]),n.push({referer:d,"user-agent":t.UserAgent,out:e.title,dir:s||void 0,...u(l)});return{params:n,id:encodeURIComponent(e.title)}})))).flat(),h=await(async(e,t)=>{const n=[];for(const o of t){let t;t="get"===e.method?await p(e,o):await f(e,o),n.push(t)}return n})(r,m);if(console.table(h),1===h.length){const e=h[0];e.success?a.Toast.success(`成功发送了请求, GID = ${e.message}`,"aria2 RPC",5e3):(0,c.logError)(e.message)}else{const e=h.filter((e=>e.success)).length,t=h.length-e;a.Toast.info(`发送了 ${h.length} 个请求, 成功 ${e} 个, 失败 ${t} 个.`,"aria2 RPC",5e3)}},component:()=>Promise.resolve().then(n.bind(n,345)).then((e=>e.default))},h={name:"downloadVideo.outputs.aria2",displayName:"下载视频 - aria2 输出支持",description:"为下载视频增加 aria2 文件导出和 RPC 输出支持.",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push(i),e.push(m)}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),o=o.plugin})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>P});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"rpc-config download-video-config-section"},[e.isRenaming?t("div",{staticClass:"profile-select"},[t("div",{staticClass:"profile-item-name"},[e._v("重命名 RPC 预设:")]),e._v(" "),t("TextBox",{ref:"renameInput",model:{value:e.profileRename,callback:function(t){e.profileRename=t},expression:"profileRename"}}),e._v(" "),t("VButton",{key:"check",attrs:{type:"transparent",title:"完成"},on:{click:function(t){return e.endRename()}}},[t("VIcon",{attrs:{icon:"mdi-check",size:16}})],1)],1):t("div",{staticClass:"profile-select"},[t("div",{staticClass:"profile-item-name"},[e._v("RPC 预设:")]),e._v(" "),t("VDropdown",{attrs:{items:e.rpcProfiles},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t.name)+"\n ")]}}]),model:{value:e.selectedRpcProfile,callback:function(t){e.selectedRpcProfile=t},expression:"selectedRpcProfile"}}),e._v(" "),t("VButton",{key:"edit",attrs:{type:"transparent",title:"重命名"},on:{click:function(t){return e.startRename()}}},[t("VIcon",{attrs:{icon:"mdi-pencil-outline",size:16}})],1),e._v(" "),t("VButton",{key:"new",attrs:{type:"transparent",title:"新建预设"},on:{click:function(t){return e.newProfile()}}},[t("VIcon",{attrs:{icon:"mdi-plus",size:16}})],1),e._v(" "),t("VButton",{key:"delete",attrs:{disabled:e.rpcProfiles.length<2,type:"transparent",title:"删除当前预设"},on:{click:function(t){return e.deleteProfile()}}},[t("VIcon",{attrs:{icon:"mdi-trash-can-outline",size:16}})],1)],1),e._v(" "),e.selectedRpcProfile?[t("div",{staticClass:"profile-secret-key"},[t("div",{staticClass:"profile-item-name"},[e._v("密钥:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.secretKey,callback:function(t){e.$set(e.selectedRpcProfile,"secretKey",t)},expression:"selectedRpcProfile.secretKey"}})],1),e._v(" "),t("div",{staticClass:"profile-dir"},[t("div",{staticClass:"profile-item-name"},[e._v("路径:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.dir,callback:function(t){e.$set(e.selectedRpcProfile,"dir",t)},expression:"selectedRpcProfile.dir"}})],1),e._v(" "),t("div",{staticClass:"profile-host"},[t("div",{staticClass:"profile-item-name"},[e._v("主机:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.host,callback:function(t){e.$set(e.selectedRpcProfile,"host",t)},expression:"selectedRpcProfile.host"}})],1),e._v(" "),t("div",{staticClass:"profile-port"},[t("div",{staticClass:"profile-item-name"},[e._v("端口:")]),e._v(" "),t("TextBox",{attrs:{"change-on-blur":""},model:{value:e.selectedRpcProfile.port,callback:function(t){e.$set(e.selectedRpcProfile,"port",t)},expression:"selectedRpcProfile.port"}})],1),e._v(" "),t("div",{staticClass:"profile-method"},[t("div",{staticClass:"profile-item-name"},[e._v("方法:")]),e._v(" "),t("VDropdown",{attrs:{items:["get","post"],"key-mapper":e=>e},scopedSlots:e._u([{key:"item",fn:function({item:t}){return[e._v("\n "+e._s(t)+"\n ")]}}],null,!1,883355439),model:{value:e.selectedRpcProfile.method,callback:function(t){e.$set(e.selectedRpcProfile,"method",t)},expression:"selectedRpcProfile.method"}})],1),e._v(" "),t("div",{staticClass:"profile-other"},[t("div",{staticClass:"profile-item-name"},[e._v("其他配置:")]),e._v(" "),t("TextArea",{attrs:{placeholder:"some-key=value","change-on-blur":""},model:{value:e.selectedRpcProfile.other,callback:function(t){e.$set(e.selectedRpcProfile,"other",t)},expression:"selectedRpcProfile.other"}})],1)]:e._e()],2)};o._withStripped=!0;const r=coreApis.settings;var i=n(391);const s=coreApis.ui,a={name:"未命名",secretKey:"",dir:"",host:"127.0.0.1",port:"6800",method:"get",other:""},{options:c}=(0,r.getComponentSettings)("downloadVideo"),l={...{rpcProfiles:[a],selectedRpcProfileName:a.name},...c},d=l.rpcProfiles.find((e=>e.name===l.selectedRpcProfileName))??(l.rpcProfiles.length<1?(l.rpcProfiles.push(a),a):l.rpcProfiles[0]);console.log(l,d);const p=Vue.extend({components:{TextBox:s.TextBox,VButton:s.VButton,VIcon:s.VIcon,VDropdown:s.VDropdown,TextArea:s.TextArea},data:()=>({isRenaming:!1,profileRename:"",rpcProfiles:l.rpcProfiles,selectedRpcProfile:d}),methods:{saveSettings(){l.selectedRpcProfileName=this.selectedRpcProfile.name,l.rpcProfiles=this.rpcProfiles,Object.assign(c,l)},async startRename(){this.profileRename=this.selectedRpcProfile.name,this.isRenaming=!0,await this.$nextTick(),this.$refs.renameInput?.focus()},endRename(){const e=this.profileRename;e?l.rpcProfiles.some((t=>t.name!==this.selectedRpcProfile.name&&t.name===e))?i.Toast.error("名称不得与其他预设重复","重命名 RPC 预设",2e3):(this.selectedRpcProfile.name=this.profileRename,this.isRenaming=!1,this.saveSettings()):i.Toast.error("名称不得为空","重命名 RPC 预设",2e3)},newProfile(){const e={...this.selectedRpcProfile},t={num:1,toString(){return`未命名${this.num}`}};for(;l.rpcProfiles.some((e=>e.name===t.toString()));)t.num++;e.name=t.toString(),l.rpcProfiles.push(e),this.selectedRpcProfile=e},deleteProfile(){if(l.rpcProfiles.length<2)return;const e=l.rpcProfiles.findIndex((e=>e.name===this.selectedRpcProfile.name));-1!==e&&confirm(`确认删除 RPC 预设 "${this.selectedRpcProfile.name}" 吗?`)&&(l.rpcProfiles.splice(e,1),this.selectedRpcProfile=l.rpcProfiles[0])}}});var f=n(332),u=n.n(f),m=n(800),h=n.n(m),v={insert:"head",singleton:!1};u()(h(),v);h().locals;var g=function(e,t,n,o,r,i,s,a){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),i&&(l._scopeId="data-v-"+i),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=c):r&&(c=a?function(){r.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(p,o,[],!1,null,null,null);const P=g.exports},391:e=>{"use strict";e.exports=coreApis.toast}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{plugin:()=>h});const e=coreApis.download,t=coreApis.utils.constants,r=coreApis.utils.title,i={name:"aria2",displayName:"aria2 Input",description:"使用 aria2 命令行输入文件开始下载. (aria2c -i xxx.txt)",runAction:async n=>{const{infos:o}=n,i=document.URL.replace(window.location.search,""),s=`\n# Generated by Bilibili Evolved Video Export\n# https://github.com/the1812/Bilibili-Evolved/\n${o.map((e=>e.titledFragments.map((e=>({url:e.url,params:{referer:i,userAgent:t.UserAgent,out:e.title}}))).flat().map((e=>{const t=Object.entries(e.params).map((e=>{let[t,n]=e;return` ${lodash.kebabCase(t)}=${n}`})).join("\n");return`${e.url}\n${t}`})))).flat().join("\n")}`.trim();await e.DownloadPackage.single(`${(0,r.getFriendlyTitle)()}.txt`,s)}},s=coreApis.ajax;var a=n(391);const c=coreApis.utils.log,l=e=>{const t=e.host.match(/^http[s]?:\/\//)?e.host:`http://${e.host}`;return{option:e,host:t,methodName:"aria2.addUri"}},d=async(e,t)=>{try{let n=await t();return"string"==typeof n&&(n=JSON.parse(n)),void 0!==n.error?1===n.error.code?{param:e,success:!1,message:"请求遭到拒绝, 请检查您的密钥相关设置."}:{param:e,success:!1,message:`请求发生错误, code = ${n.error.code}, message = ${n.error.message}`}:{param:e,success:!0,message:n.result}}catch(t){return{param:e,success:!1,message:`无法连接到RPC主机, error = ${t.toString()}`}}},p=async(e,t)=>{const{option:n,host:o,methodName:r}=l(e);return d(t,(async()=>{const e=window.btoa(unescape(encodeURIComponent(JSON.stringify(t.params)))),i=`${o}:${n.port}/jsonrpc?method=${r}&id=${t.id}¶ms=${e}`;return console.log(`RPC request: ${i}`),i.startsWith("http:")?(0,s.monkey)({method:"GET",url:i,responseType:"json"}):(0,s.getJson)(i)}))},f=async(e,t)=>{const{option:n,host:o,methodName:r}=l(e);return d(t,(async()=>{const e=`${o}:${n.port}/jsonrpc`,i={method:r,id:t.id,params:t.params};return e.startsWith("http:")?(0,s.monkey)({method:"POST",url:e,responseType:"json",data:JSON.stringify(i)}):(0,s.postJson)(e,i)}))},u=e=>{if(!e)return{};const t=e.split("\n").map((e=>{const[t,...n]=e.trim().split("=");return[t.trim(),n.join("=").trim()]})).filter((e=>Boolean(e[1])));return Object.fromEntries(t)},m={name:"aria2Rpc",displayName:"aria2 RPC",description:"使用 aria2 RPC 功能发送下载请求.",runAction:async(e,n)=>{const{infos:o}=e,{selectedRpcProfile:r}=n,{secretKey:i,dir:s,other:l}=r,d=document.URL.replace(window.location.search,""),m=o.map((e=>e.titledFragments.map((e=>{const n=[];i&&n.push(`token:${i}`),n.push([e.url]),n.push({referer:d,"user-agent":t.UserAgent,out:e.title,dir:s||void 0,...u(l)});return{params:n,id:encodeURIComponent(e.title)}})))).flat(),h=await(async(e,t)=>{const n=[];for(const o of t){let t;t="get"===e.method?await p(e,o):await f(e,o),n.push(t)}return n})(r,m);if(console.table(h),1===h.length){const e=h[0];e.success?a.Toast.success(`成功发送了请求, GID = ${e.message}`,"aria2 RPC",5e3):(0,c.logError)(e.message)}else{const e=h.filter((e=>e.success)).length,t=h.length-e;a.Toast.info(`发送了 ${h.length} 个请求, 成功 ${e} 个, 失败 ${t} 个.`,"aria2 RPC",5e3)}},component:()=>Promise.resolve().then(n.bind(n,345)).then((e=>e.default))},h={name:"downloadVideo.outputs.aria2",displayName:"下载视频 - aria2 输出支持",description:"为下载视频增加 aria2 文件导出和 RPC 输出支持.",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push(i),e.push(m)}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/empty-output.js b/bb-evolved/registry/dist/plugins/video/download/empty-output.js index 9d617011b5..07435ad6fe 100644 --- a/bb-evolved/registry/dist/plugins/video/download/empty-output.js +++ b/bb-evolved/registry/dist/plugins/video/download/empty-output.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/download/empty-output"]=t():e["video/download/empty-output"]=t()}(globalThis,(()=>(()=>{var e,t,o={501:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=501,e.exports=t},532:e=>{"use strict";e.exports='提供一个 "空" 的输出选项, 只想获取下载视频的附带产物 (弹幕, 字幕等) 时可以使用此插件.\n'}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return o[e](i,i.exports,n),i.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var i=Object.create(null);n.r(i);var d={};e=e||[null,t({}),t([]),t(t)];for(var p=2&r&&o;"object"==typeof p&&!~e.indexOf(p);p=t(p))Object.getOwnPropertyNames(p).forEach((e=>d[e]=()=>o[e]));return d.default=()=>o,n.d(i,d),i},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{plugin:()=>e});const e={name:"downloadVideo.outputs.empty",displayName:"下载视频 - 空输出",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push({name:"empty",displayName:"空",description:"不输出视频本身, 仅获取下载视频的附带产物.",runAction:async()=>lodash.noop()})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10",description:(()=>{const e=n(501);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,532,17)).then((e=>e.default))}})()}})(),i=i.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/download/empty-output"]=t():e["video/download/empty-output"]=t()}(globalThis,(()=>(()=>{var e,t,o={501:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=501,e.exports=t},532:e=>{"use strict";e.exports='提供一个 "空" 的输出选项, 只想获取下载视频的附带产物 (弹幕, 字幕等) 时可以使用此插件.\n'}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var d=r[e]={exports:{}};return o[e](d,d.exports,n),d.exports}t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(o,r){if(1&r&&(o=this(o)),8&r)return o;if("object"==typeof o&&o){if(4&r&&o.__esModule)return o;if(16&r&&"function"==typeof o.then)return o}var d=Object.create(null);n.r(d);var i={};e=e||[null,t({}),t([]),t(t)];for(var a=2&r&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>i[e]=()=>o[e]));return i.default=()=>o,n.d(d,i),d},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var d={};return(()=>{"use strict";n.d(d,{plugin:()=>e});const e={name:"downloadVideo.outputs.empty",displayName:"下载视频 - 空输出",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push({name:"empty",displayName:"空",description:"不输出视频本身, 仅获取下载视频的附带产物.",runAction:async()=>lodash.noop()})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11",description:(()=>{const e=n(501);return{...Object.fromEntries(e.keys().map((t=>[t.match(/index\.(.+)\.md$/)[1],e(t)]))),"zh-CN":()=>Promise.resolve().then(n.t.bind(n,532,17)).then((e=>e.default))}})()}})(),d=d.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/idm-output.js b/bb-evolved/registry/dist/plugins/video/download/idm-output.js index bf01ab95e2..d77c2a8e10 100644 --- a/bb-evolved/registry/dist/plugins/video/download/idm-output.js +++ b/bb-evolved/registry/dist/plugins/video/download/idm-output.js @@ -1 +1 @@ -!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/download/idm-output"]=o():e["video/download/idm-output"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{plugin:()=>a});const t=coreApis.download,n=coreApis.utils.constants,i=coreApis.utils.title,a={name:"downloadVideo.outputs.idm",displayName:"下载视频 - IDM 输出支持",description:"为下载视频增加 IDM 输出支持,建议配合 [ef2.exe](https://github.com/MotooriKashin/ef2) 以简化操作、保留文件名.",setup:e=>{let{addData:o}=e;o("downloadVideo.outputs",(e=>{e.push({name:"idm",displayName:"IDM",description:"使用 IDM 的 .ef2 格式导出, 可以在 IDM 中使用导入开始下载.",runAction:async e=>{const{infos:o}=e,a=document.URL.replace(window.location.search,""),r=o.map((e=>e.titledFragments.map((e=>`<\n${e.url}\nreferer: ${a}\nUser-Agent: ${n.UserAgent}\nfilename: ${e.title}\n>`.trim())))).flat().concat("").join("\n").replace(/([^\r])\n/g,"$1\r\n");await t.DownloadPackage.single(`${(0,i.getFriendlyTitle)()}.ef2`,r)}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return o=o.plugin})())); \ No newline at end of file +!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports["video/download/idm-output"]=o():e["video/download/idm-output"]=o()}(globalThis,(()=>(()=>{"use strict";var e={d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)},o={};e.d(o,{plugin:()=>a});const t=coreApis.download,n=coreApis.utils.constants,i=coreApis.utils.title,a={name:"downloadVideo.outputs.idm",displayName:"下载视频 - IDM 输出支持",description:"为下载视频增加 IDM 输出支持,建议配合 [ef2.exe](https://github.com/MotooriKashin/ef2) 以简化操作、保留文件名.",setup:e=>{let{addData:o}=e;o("downloadVideo.outputs",(e=>{e.push({name:"idm",displayName:"IDM",description:"使用 IDM 的 .ef2 格式导出, 可以在 IDM 中使用导入开始下载.",runAction:async e=>{const{infos:o}=e,a=document.URL.replace(window.location.search,""),d=o.map((e=>e.titledFragments.map((e=>`<\n${e.url}\nreferer: ${a}\nUser-Agent: ${n.UserAgent}\nfilename: ${e.title}\n>`.trim())))).flat().concat("").join("\n").replace(/([^\r])\n/g,"$1\r\n");await t.DownloadPackage.single(`${(0,i.getFriendlyTitle)()}.ef2`,d)}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/manual-input.js b/bb-evolved/registry/dist/plugins/video/download/manual-input.js index 6bd7d27311..3d941ec6db 100644 --- a/bb-evolved/registry/dist/plugins/video/download/manual-input.js +++ b/bb-evolved/registry/dist/plugins/video/download/manual-input.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var o={};if(i)for(var r=0;r{"use strict";var i,o=function(){return void 0===i&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>p});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manual-input download-video-config-section"},[t("TextArea",{attrs:{placeholder:"输入 av 号或 BV 号, 空格或换行分隔"},model:{value:e.inputText,callback:function(t){e.inputText=t},expression:"inputText"}}),e._v(" "),t("div",{staticClass:"manual-input-stats download-video-config-description"},[e._v("\n 已输入 "+e._s(e.ids.length)+" 个视频\n ")]),e._v(" "),t("div",{staticClass:"manual-input-description download-video-config-description"},[e._v("\n 手动输入可以自行输入要下载的视频编号, 但下面清晰度的选择依然是以当前视频为准的,\n 所以建议在高清的视频页面里操作. 批量命名格式至少需要包含 title 和 ep 变量.\n ")]),e._v(" "),t("div",{staticClass:"manual-input-description download-video-config-description"},[e._v("\n 一次最多 36 个视频, 请勿短时间进行大量下载, 以免遭到 b 站封禁.\n ")])],1)};i._withStripped=!0;const o=coreApis.ui,r=Vue.extend({components:{TextArea:o.TextArea},data:()=>({inputText:""}),computed:{ids(){const e=this.inputText,t=/(BV.+)|av(\d+)/i;return e.split(/\n| /).map((e=>{const t=e.trim();return/^\d+$/.test(t)?`av${t}`:t})).filter((e=>t.test(e))).map((e=>{const n=e.match(t);return n[1]??n[2]})).slice(0,36)}}});var a=n(332),s=n.n(a),l=n(331),c=n.n(l),d={insert:"head",singleton:!1};s()(c(),d);c().locals;var u=function(e,t,n,i,o,r,a,s){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):o&&(l=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}(r,i,[],!1,null,null,null);const p=u.exports}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={id:i,exports:{}};return e[i](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{plugin:()=>l});const e=coreApis.ajax,t=coreApis.settings,o=coreApis.utils.formatters,r=coreApis.utils.log,a=coreApis.utils.title,s=coreApis.utils.urls,l={name:"downloadVideo.inputs.manual",displayName:"下载视频 - 手动输入",description:"为下载视频增加手动输入支持.",setup:i=>{let{addData:l}=i;l("downloadVideo.inputs",(i=>{i.push({name:"videoManual",displayName:"手动输入",match:s.videoUrls,batch:!0,getInputs:async n=>{const i=(0,r.useScopedConsole)("手动输入"),s=await Promise.allSettled(n.ids.map((t=>/av(\d+)/i.test(t)?(t=>{const n=`https://api.bilibili.com/x/web-interface/view?aid=${t}`;return(0,e.bilibiliApi)((0,e.getJsonWithCredentials)(n),`获取视频信息失败, aid = ${t}`)})(t):/BV(.+)/i.test(t)?(t=>{const n=`https://api.bilibili.com/x/web-interface/view?bvid=${t}`;return(0,e.bilibiliApi)((0,e.getJsonWithCredentials)(n),`获取视频信息失败, bvid = ${t}`)})(t):(i.error(`无效输入: ${t}`),null))));return s.filter((e=>"rejected"===e.status)).forEach((e=>{i.error(e.reason)})),s.filter((e=>"fulfilled"===e.status)).flatMap((e=>{const{aid:n,cid:i,bvid:r,title:s,pages:l}=e.value;if(l.length>1)return l.map(((e,i)=>({aid:n.toString(),cid:e.cid.toString(),bvid:r,allowQualityDrop:!0,title:(0,a.formatTitle)((0,t.getGeneralSettings)().batchFilenameFormat,!1,e.part?{title:s,n:(0,o.formatNumber)(i+1,l.length),ep:e.part}:{title:s})})));return{aid:n.toString(),cid:i.toString(),bvid:r,allowQualityDrop:!0,title:(0,a.formatTitle)((0,t.getGeneralSettings)().batchFilenameFormat,!1,{title:s})}}))},component:()=>Promise.resolve().then(n.bind(n,543)).then((e=>e.default))})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),i=i.plugin})())); \ No newline at end of file +i=Boolean(window&&document&&document.all&&!window.atob)),i},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>p});var i=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"manual-input download-video-config-section"},[t("TextArea",{attrs:{placeholder:"输入 av 号或 BV 号, 空格或换行分隔"},model:{value:e.inputText,callback:function(t){e.inputText=t},expression:"inputText"}}),e._v(" "),t("div",{staticClass:"manual-input-stats download-video-config-description"},[e._v("\n 已输入 "+e._s(e.ids.length)+" 个视频\n ")]),e._v(" "),t("div",{staticClass:"manual-input-description download-video-config-description"},[e._v("\n 手动输入可以自行输入要下载的视频编号, 但下面清晰度的选择依然是以当前视频为准的,\n 所以建议在高清的视频页面里操作. 批量命名格式至少需要包含 title 和 ep 变量.\n ")]),e._v(" "),t("div",{staticClass:"manual-input-description download-video-config-description"},[e._v("\n 一次最多 36 个视频, 请勿短时间进行大量下载, 以免遭到 b 站封禁.\n ")])],1)};i._withStripped=!0;const o=coreApis.ui,r=Vue.extend({components:{TextArea:o.TextArea},data:()=>({inputText:""}),computed:{ids(){const e=this.inputText,t=/(BV.+)|av(\d+)/i;return e.split(/\n| /).map((e=>{const t=e.trim();return/^\d+$/.test(t)?`av${t}`:t})).filter((e=>t.test(e))).map((e=>{const n=e.match(t);return n[1]??n[2]})).slice(0,36)}}});var a=n(332),s=n.n(a),l=n(331),c=n.n(l),d={insert:"head",singleton:!1};s()(c(),d);c().locals;var u=function(e,t,n,i,o,r,a,s){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):o&&(l=s?function(){o.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:o),l)if(c.functional){c._injectStyles=l;var d=c.render;c.render=function(e,t){return l.call(t),d(e,t)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,l):[l]}return{exports:e,options:c}}(r,i,[],!1,null,null,null);const p=u.exports}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={id:i,exports:{}};return e[i](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";n.d(i,{plugin:()=>l});const e=coreApis.ajax,t=coreApis.settings,o=coreApis.utils.formatters,r=coreApis.utils.log,a=coreApis.utils.title,s=coreApis.utils.urls,l={name:"downloadVideo.inputs.manual",displayName:"下载视频 - 手动输入",description:"为下载视频增加手动输入支持.",setup:i=>{let{addData:l}=i;l("downloadVideo.inputs",(i=>{i.push({name:"videoManual",displayName:"手动输入",match:s.videoUrls,batch:!0,getInputs:async n=>{const i=(0,r.useScopedConsole)("手动输入"),s=await Promise.allSettled(n.ids.map((t=>/av(\d+)/i.test(t)?(t=>{const n=`https://api.bilibili.com/x/web-interface/view?aid=${t}`;return(0,e.bilibiliApi)((0,e.getJsonWithCredentials)(n),`获取视频信息失败, aid = ${t}`)})(t):/BV(.+)/i.test(t)?(t=>{const n=`https://api.bilibili.com/x/web-interface/view?bvid=${t}`;return(0,e.bilibiliApi)((0,e.getJsonWithCredentials)(n),`获取视频信息失败, bvid = ${t}`)})(t):(i.error(`无效输入: ${t}`),null))));return s.filter((e=>"rejected"===e.status)).forEach((e=>{i.error(e.reason)})),s.filter((e=>"fulfilled"===e.status)).flatMap((e=>{const{aid:n,cid:i,bvid:r,title:s,pages:l}=e.value;if(l.length>1)return l.map(((e,i)=>({aid:n.toString(),cid:e.cid.toString(),bvid:r,allowQualityDrop:!0,title:(0,a.formatTitle)((0,t.getGeneralSettings)().batchFilenameFormat,!1,e.part?{title:s,n:(0,o.formatNumber)(i+1,l.length),ep:e.part}:{title:s})})));return{aid:n.toString(),cid:i.toString(),bvid:r,allowQualityDrop:!0,title:(0,a.formatTitle)((0,t.getGeneralSettings)().batchFilenameFormat,!1,{title:s})}}))},component:()=>Promise.resolve().then(n.bind(n,543)).then((e=>e.default))})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),i=i.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/motrix-output.js b/bb-evolved/registry/dist/plugins/video/download/motrix-output.js index 6f17ff31cb..cb39ead7a8 100644 --- a/bb-evolved/registry/dist/plugins/video/download/motrix-output.js +++ b/bb-evolved/registry/dist/plugins/video/download/motrix-output.js @@ -1 +1 @@ -!function(o,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["video/download/motrix-output"]=e():o["video/download/motrix-output"]=e()}(globalThis,(()=>(()=>{"use strict";var o={d:(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o:(o,e)=>Object.prototype.hasOwnProperty.call(o,e)},e={};o.d(e,{plugin:()=>r});const t=coreApis.toast,r={name:"downloadVideo.outputs.motrix",displayName:"下载视频 - Motrix 输出支持",description:"为下载视频增加 Motrix 输出支持.",setup:o=>{let{addData:e}=o;e("downloadVideo.outputs",(o=>{o.push({name:"motrix",displayName:"Motrix",description:"调用 Motrix 下载.",runAction:async o=>{const e=o.infos.flatMap((o=>o.titledFragments));try{const o=new URLSearchParams({uris:e.map((o=>o.url)).join("\n"),referer:document.URL.replace(window.location.search,"")});window.open(`motrix://new-task?${o.toString()}`,"_self")}catch(o){t.Toast.error(String(o),"发生错误")}}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return e=e.plugin})())); \ No newline at end of file +!function(o,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["video/download/motrix-output"]=e():o["video/download/motrix-output"]=e()}(globalThis,(()=>(()=>{"use strict";var o={d:(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o:(o,e)=>Object.prototype.hasOwnProperty.call(o,e)},e={};o.d(e,{plugin:()=>r});const t=coreApis.toast,r={name:"downloadVideo.outputs.motrix",displayName:"下载视频 - Motrix 输出支持",description:"为下载视频增加 Motrix 输出支持.",setup:o=>{let{addData:e}=o;e("downloadVideo.outputs",(o=>{o.push({name:"motrix",displayName:"Motrix",description:"调用 Motrix 下载.",runAction:async o=>{const e=o.infos.flatMap((o=>o.titledFragments));try{const o=new URLSearchParams({uris:e.map((o=>o.url)).join("\n"),referer:document.URL.replace(window.location.search,"")});window.open(`motrix://new-task?${o.toString()}`,"_self")}catch(o){t.Toast.error(String(o),"发生错误")}}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return e=e.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/mpv-output-ex.js b/bb-evolved/registry/dist/plugins/video/download/mpv-output-ex.js index 8128cd7636..cdbd4f9992 100644 --- a/bb-evolved/registry/dist/plugins/video/download/mpv-output-ex.js +++ b/bb-evolved/registry/dist/plugins/video/download/mpv-output-ex.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var i={};if(o)for(var a=0;a{"use strict";var o,i=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),r=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>v});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"mpv-ex config"},[t("div",{staticClass:"config-item"},[t("span",{staticClass:"item-name"},[e._v("api_dev_key:")]),e._v(" "),t("TextBox",{on:{blur:e.onChange},model:{value:e.api_dev_key,callback:function(t){e.api_dev_key=t},expression:"api_dev_key"}})],1),e._v(" "),t("div",{staticClass:"config-item"},[t("span",{staticClass:"item-name"},[e._v("api_user_key:")]),e._v(" "),t("TextBox",{on:{blur:e.onChange},model:{value:e.api_user_key,callback:function(t){e.api_user_key=t},expression:"api_user_key"}})],1)])};o._withStripped=!0;const i=coreApis.settings,a=coreApis.ui,{options:r}=(0,i.getComponentSettings)("downloadVideo"),s=Vue.extend({components:{TextBox:a.TextBox},data:()=>({...lodash.pick(r,["api_dev_key","api_user_key"])}),methods:{onChange(){Object.assign(r,lodash.pick(this,["api_dev_key","api_user_key"]))}}});var c=n(332),l=n.n(c),p=n(407),u=n.n(p),d={insert:"head",singleton:!1};l()(u(),d);u().locals;var f=function(e,t,n,o,i,a,r,s){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),r?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},l._ssrRegister=c):i&&(c=s?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var p=l.render;l.render=function(e,t){return c.call(t),p(e,t)}}else{var u=l.beforeCreate;l.beforeCreate=u?[].concat(u,c):[c]}return{exports:e,options:l}}(s,o,[],!1,null,null,null);const v=f.exports}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var a=t[o]={id:o,exports:{}};return e[o](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{plugin:()=>a});const e=coreApis.ajax,t=coreApis.utils.log,i={name:"mpv-ex",displayName:"MPV 输出支持加强版",description:'多文件时格式选择 flv,使用前请先阅读 README',runAction:async(n,o)=>{let i;const a='mpv://--http-header-fields="referer:https://www.bilibili.com/"';if(n.isSingleVideo){const e=n.infos[0].fragments;1===e.length?i=`${a} ${e[0].url}`:2===e.length&&(i=`${a} ${e[0].url} --audio-file=${e[1].url}`)}else{const r=n.infos.reduce(((e,t)=>`${e}#EXTINF:-1,${t.input.title}\n${t.fragments[0].url}\n`),"#EXTM3U\n");try{i=`${a} ${(await(async(t,n)=>{const o=new URLSearchParams;Object.entries({api_dev_key:n.api_dev_key,api_user_key:n.api_user_key,api_folder_key:"m3u",api_option:"paste",api_paste_code:t,api_paste_private:"1",api_paste_expire_date:"10M"}).forEach((e=>{let[t,n]=e;return o.append(t,n)}));const i=await(0,e.monkey)({url:"https://pastebin.com/api/api_post.php",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},data:o.toString(),nocache:!0,responseType:"text",fetch:!0});if(/^Bad API request,/.test(i))throw i;return i})(r,o)).replace(/^(https:\/\/pastebin.com)\/(.*)/,"$1/raw/$2?.m3u")}`}catch(e){return void(0,t.logError)(e)}}console.log(i),window.open(i)},component:()=>Promise.resolve().then(n.bind(n,350)).then((e=>e.default))},a={name:"downloadVideo.outputs.mpv-ex",displayName:"下载视频 - MPV 输出支持加强版",author:{name:"asuaaa",link:"https://github.com/Asukaaaaaa"},description:"为下载视频增加 MPV 输出,支持导出列表, 配置方式请参考 [README](https://github.com/Asukaaaaaa/tricks/blob/main/Bilibili-Evolved%20mpv-ex%20%E6%8F%92%E4%BB%B6.md)",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push(i)}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),o=o.plugin})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},a=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),r=[];function s(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>v});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"mpv-ex config"},[t("div",{staticClass:"config-item"},[t("span",{staticClass:"item-name"},[e._v("api_dev_key:")]),e._v(" "),t("TextBox",{on:{blur:e.onChange},model:{value:e.api_dev_key,callback:function(t){e.api_dev_key=t},expression:"api_dev_key"}})],1),e._v(" "),t("div",{staticClass:"config-item"},[t("span",{staticClass:"item-name"},[e._v("api_user_key:")]),e._v(" "),t("TextBox",{on:{blur:e.onChange},model:{value:e.api_user_key,callback:function(t){e.api_user_key=t},expression:"api_user_key"}})],1)])};o._withStripped=!0;const i=coreApis.settings,a=coreApis.ui,{options:r}=(0,i.getComponentSettings)("downloadVideo"),s=Vue.extend({components:{TextBox:a.TextBox},data:()=>({...lodash.pick(r,["api_dev_key","api_user_key"])}),methods:{onChange(){Object.assign(r,lodash.pick(this,["api_dev_key","api_user_key"]))}}});var c=n(332),l=n.n(c),p=n(407),d=n.n(p),u={insert:"head",singleton:!1};l()(d(),u);d().locals;var f=function(e,t,n,o,i,a,r,s){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),r?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},l._ssrRegister=c):i&&(c=s?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var p=l.render;l.render=function(e,t){return c.call(t),p(e,t)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:e,options:l}}(s,o,[],!1,null,null,null);const v=f.exports}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var a=t[o]={id:o,exports:{}};return e[o](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{plugin:()=>a});const e=coreApis.ajax,t=coreApis.utils.log,i={name:"mpv-ex",displayName:"MPV 输出支持加强版",description:'多文件时格式选择 flv,使用前请先阅读 README',runAction:async(n,o)=>{let i;const a='mpv://--http-header-fields="referer:https://www.bilibili.com/"';if(n.isSingleVideo){const e=n.infos[0].fragments;1===e.length?i=`${a} ${e[0].url}`:2===e.length&&(i=`${a} ${e[0].url} --audio-file=${e[1].url}`)}else{const r=n.infos.reduce(((e,t)=>`${e}#EXTINF:-1,${t.input.title}\n${t.fragments[0].url}\n`),"#EXTM3U\n");try{i=`${a} ${(await(async(t,n)=>{const o=new URLSearchParams;Object.entries({api_dev_key:n.api_dev_key,api_user_key:n.api_user_key,api_folder_key:"m3u",api_option:"paste",api_paste_code:t,api_paste_private:"1",api_paste_expire_date:"10M"}).forEach((e=>{let[t,n]=e;return o.append(t,n)}));const i=await(0,e.monkey)({url:"https://pastebin.com/api/api_post.php",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},data:o.toString(),nocache:!0,responseType:"text",fetch:!0});if(/^Bad API request,/.test(i))throw i;return i})(r,o)).replace(/^(https:\/\/pastebin.com)\/(.*)/,"$1/raw/$2?.m3u")}`}catch(e){return void(0,t.logError)(e)}}console.log(i),window.open(i)},component:()=>Promise.resolve().then(n.bind(n,350)).then((e=>e.default))},a={name:"downloadVideo.outputs.mpv-ex",displayName:"下载视频 - MPV 输出支持加强版",author:{name:"asuaaa",link:"https://github.com/Asukaaaaaa"},description:"为下载视频增加 MPV 输出,支持导出列表, 配置方式请参考 [README](https://github.com/Asukaaaaaa/tricks/blob/main/Bilibili-Evolved%20mpv-ex%20%E6%8F%92%E4%BB%B6.md)",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push(i)}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/mpv-output-playlist.js b/bb-evolved/registry/dist/plugins/video/download/mpv-output-playlist.js index fc7f13e017..0b789d4a36 100644 --- a/bb-evolved/registry/dist/plugins/video/download/mpv-output-playlist.js +++ b/bb-evolved/registry/dist/plugins/video/download/mpv-output-playlist.js @@ -9,4 +9,4 @@ e=[[null,e,""]]);var i={};if(o)for(var r=0;r{"use strict";var o,i=function(){return void 0===o&&( // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // @see https://github.com/webpack-contrib/style-loader/issues/177 -o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"rpc-config download-video-config-section"},[t("div",{staticClass:"profile-dir"},[t("div",{staticClass:"profile-item-name"},[e._v("命令路径:")]),e._v(" "),t("TextBox",{on:{blur:e.saveInfo},model:{value:e.mpvInfo.dir,callback:function(t){e.$set(e.mpvInfo,"dir",t)},expression:"mpvInfo.dir"}})],1),e._v(" "),t("div",{staticClass:"profile-host"},[t("div",{staticClass:"profile-item-name"},[e._v("主机:")]),e._v(" "),t("TextBox",{on:{blur:e.saveInfo},model:{value:e.mpvInfo.host,callback:function(t){e.$set(e.mpvInfo,"host",t)},expression:"mpvInfo.host"}})],1),e._v(" "),t("div",{staticClass:"profile-port"},[t("div",{staticClass:"profile-item-name"},[e._v("端口:")]),e._v(" "),t("TextBox",{on:{blur:e.saveInfo},model:{value:e.mpvInfo.port,callback:function(t){e.$set(e.mpvInfo,"port",t)},expression:"mpvInfo.port"}})],1)])};o._withStripped=!0;const i=coreApis.settings,r=coreApis.ui,{options:s}=(0,i.getComponentSettings)("downloadVideo"),a={dir:"mpv",host:"127.0.0.1",port:"50000",...s},c=Vue.extend({components:{TextBox:r.TextBox},data:()=>({mpvInfo:a}),methods:{saveInfo(){Object.assign(s,a)}}});var l=n(332),d=n.n(l),p=n(374),u=n.n(p),f={insert:"head",singleton:!1};d()(u(),f);u().locals;var v=function(e,t,n,o,i,r,s,a){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=c):i&&(c=a?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(c,o,[],!1,null,null,null);const m=v.exports}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{plugin:()=>a});const e=coreApis.ajax,t=coreApis.toast,i=coreApis.utils.constants,r=coreApis.utils.log,s={name:"mpv-playlist",displayName:"MPV播放",description:"格式选择flv,千万不能选音画分离的dash。建议把mpv.exe所在目录加进环境变量。",runAction:async(n,o)=>{const{infos:s}=n,{mpvInfo:a}=o,c=s.flatMap((e=>e.titledFragments)).map((e=>e.url)),l=s.flatMap((e=>e.titledFragments)).map((e=>e.title)),d={dir:a.dir,referer:"https://www.bilibili.com/","user-agent":i.UserAgent,urls:c,titles:l},p=`http://${a.host}:${a.port}`,u=await(0,e.postJson)(p,d),f=JSON.parse(u);f.success?t.Toast.success(`成功发送了请求: ${f.message}`,"MPV播放",3e3):(0,r.logError)(f.message)},component:()=>Promise.resolve().then(n.bind(n,526)).then((e=>e.default))},a={name:"downloadVideo.outputs.mpv-playlist",displayName:"下载视频 - MPV 播放支持(列表)",author:{name:"wuliic",link:"https://github.com/wullic"},description:"为下载视频增加 MPV 输出支持,支持列表播放,配置方式请参考 [playwithmpv](https://github.com/videoanywhere/playwithmpv)",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push(s)}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"}})(),o=o.plugin})())); \ No newline at end of file +o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),s=[];function a(e){for(var t=-1,n=0;n{"use strict";n.r(t),n.d(t,{default:()=>m});var o=function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"rpc-config download-video-config-section"},[t("div",{staticClass:"profile-dir"},[t("div",{staticClass:"profile-item-name"},[e._v("命令路径:")]),e._v(" "),t("TextBox",{on:{blur:e.saveInfo},model:{value:e.mpvInfo.dir,callback:function(t){e.$set(e.mpvInfo,"dir",t)},expression:"mpvInfo.dir"}})],1),e._v(" "),t("div",{staticClass:"profile-host"},[t("div",{staticClass:"profile-item-name"},[e._v("主机:")]),e._v(" "),t("TextBox",{on:{blur:e.saveInfo},model:{value:e.mpvInfo.host,callback:function(t){e.$set(e.mpvInfo,"host",t)},expression:"mpvInfo.host"}})],1),e._v(" "),t("div",{staticClass:"profile-port"},[t("div",{staticClass:"profile-item-name"},[e._v("端口:")]),e._v(" "),t("TextBox",{on:{blur:e.saveInfo},model:{value:e.mpvInfo.port,callback:function(t){e.$set(e.mpvInfo,"port",t)},expression:"mpvInfo.port"}})],1)])};o._withStripped=!0;const i=coreApis.settings,r=coreApis.ui,{options:s}=(0,i.getComponentSettings)("downloadVideo"),a={dir:"mpv",host:"127.0.0.1",port:"50000",...s},c=Vue.extend({components:{TextBox:r.TextBox},data:()=>({mpvInfo:a}),methods:{saveInfo(){Object.assign(s,a)}}});var l=n(332),d=n.n(l),p=n(374),u=n.n(p),f={insert:"head",singleton:!1};d()(u(),f);u().locals;var v=function(e,t,n,o,i,r,s,a){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),o&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),s?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=c):i&&(c=a?function(){i.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:i),c)if(l.functional){l._injectStyles=c;var d=l.render;l.render=function(e,t){return c.call(t),d(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}(c,o,[],!1,null,null,null);const m=v.exports}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";n.d(o,{plugin:()=>a});const e=coreApis.ajax,t=coreApis.toast,i=coreApis.utils.constants,r=coreApis.utils.log,s={name:"mpv-playlist",displayName:"MPV播放",description:"格式选择flv,千万不能选音画分离的dash。建议把mpv.exe所在目录加进环境变量。",runAction:async(n,o)=>{const{infos:s}=n,{mpvInfo:a}=o,c=s.flatMap((e=>e.titledFragments)).map((e=>e.url)),l=s.flatMap((e=>e.titledFragments)).map((e=>e.title)),d={dir:a.dir,referer:"https://www.bilibili.com/","user-agent":i.UserAgent,urls:c,titles:l},p=`http://${a.host}:${a.port}`,u=await(0,e.postJson)(p,d),f=JSON.parse(u);f.success?t.Toast.success(`成功发送了请求: ${f.message}`,"MPV播放",3e3):(0,r.logError)(f.message)},component:()=>Promise.resolve().then(n.bind(n,526)).then((e=>e.default))},a={name:"downloadVideo.outputs.mpv-playlist",displayName:"下载视频 - MPV 播放支持(列表)",author:{name:"wuliic",link:"https://github.com/wullic"},description:"为下载视频增加 MPV 输出支持,支持列表播放,配置方式请参考 [playwithmpv](https://github.com/videoanywhere/playwithmpv)",setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push(s)}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"}})(),o=o.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/mpv-output.js b/bb-evolved/registry/dist/plugins/video/download/mpv-output.js index 5964429df3..bb79bce6ba 100644 --- a/bb-evolved/registry/dist/plugins/video/download/mpv-output.js +++ b/bb-evolved/registry/dist/plugins/video/download/mpv-output.js @@ -1 +1 @@ -!function(o,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["video/download/mpv-output"]=e():o["video/download/mpv-output"]=e()}(globalThis,(()=>(()=>{"use strict";var o={d:(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(o,e)=>Object.prototype.hasOwnProperty.call(o,e)},e={};o.d(e,{plugin:()=>i});const t=coreApis.toast,i={name:"downloadVideo.outputs.mpv",displayName:"下载视频 - MPV 输出支持",author:{name:"diannaojiang",link:"https://github.com/diannaojiang"},description:"为下载视频增加 MPV 输出支持, 配置方式请参考 [Bilibili-Playin-Mpv](https://github.com/diannaojiang/Bilibili-Playin-Mpv)",setup:o=>{let{addData:e}=o;e("downloadVideo.outputs",(o=>{o.push({name:"mpv",displayName:"MPV",description:"弹一条消息显示出播放按钮,点击即可使用MPV进行播放",runAction:async o=>{const e=o.infos.flatMap((o=>o.titledFragments)),i=e.map((o=>o.url)).join("\n"),n=`mpv://--http-header-fields="referer:https://www.bilibili.com/" "${e[0].url}" --audio-file="${e[1].url}"`;console.log(n),t.Toast.show(`播放`,"MPV播放"),console.log(i),console.log(o)}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return e=e.plugin})())); \ No newline at end of file +!function(o,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["video/download/mpv-output"]=e():o["video/download/mpv-output"]=e()}(globalThis,(()=>(()=>{"use strict";var o={d:(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o:(o,e)=>Object.prototype.hasOwnProperty.call(o,e)},e={};o.d(e,{plugin:()=>i});const t=coreApis.toast,i={name:"downloadVideo.outputs.mpv",displayName:"下载视频 - MPV 输出支持",author:{name:"diannaojiang",link:"https://github.com/diannaojiang"},description:"为下载视频增加 MPV 输出支持, 配置方式请参考 [Bilibili-Playin-Mpv](https://github.com/diannaojiang/Bilibili-Playin-Mpv)",setup:o=>{let{addData:e}=o;e("downloadVideo.outputs",(o=>{o.push({name:"mpv",displayName:"MPV",description:"弹一条消息显示出播放按钮,点击即可使用MPV进行播放",runAction:async o=>{const e=o.infos.flatMap((o=>o.titledFragments)),i=e.map((o=>o.url)).join("\n"),a=`mpv://--http-header-fields="referer:https://www.bilibili.com/" "${e[0].url}" --audio-file="${e[1].url}"`;console.log(a),t.Toast.show(`播放`,"MPV播放"),console.log(i),console.log(o)}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return e=e.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/download/wasm-output.js b/bb-evolved/registry/dist/plugins/video/download/wasm-output.js index e42874d6b4..969bc29561 100644 --- a/bb-evolved/registry/dist/plugins/video/download/wasm-output.js +++ b/bb-evolved/registry/dist/plugins/video/download/wasm-output.js @@ -1,4 +1,4 @@ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/download/wasm-output"]=t():e["video/download/wasm-output"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>S});const o=coreApis.toast,n=coreApis.download,a=coreApis.meta;function r(e,t,o){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t,o){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,o)}function s(e,t,o){return function(e,t,o){if(t.set)t.set.call(e,o);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=o}}(e,l(e,t,"set"),o),o}function c(e,t){return function(e,t){if(t.get)return t.get.call(e);return t.value} /* eslint-disable @typescript-eslint/naming-convention */(e,l(e,t,"get"))}function l(e,t,o){if(!t.has(e))throw new TypeError("attempted to "+o+" private field on non-instance");return t.get(e)}const u=(()=>{let e=0;return()=>e++})();var d=function(e){return e.LOAD="LOAD",e.EXEC="EXEC",e.WRITE_FILE="WRITE_FILE",e.READ_FILE="READ_FILE",e.ERROR="ERROR",e}(d||{}),p=new WeakMap,f=new WeakMap,h=new WeakMap,w=new WeakMap,m=new WeakMap;const g=coreApis.utils.formatters,y={cache:"cache"};async function b(e,t){return async function(){return new Promise(((e,t)=>{const o=unsafeWindow.indexedDB.open("bilibili-evolved-wasm-output",124);o.onerror=t,o.onupgradeneeded=()=>{const e=o.result;for(const t of e.objectStoreNames)e.deleteObjectStore(t);Object.values(y).forEach((t=>{e.createObjectStore(t)}))},o.onsuccess=()=>e(o.result)}))}().then((o=>new Promise(((n,a)=>{const r=o.transaction(e,t);n(r.objectStore(e)),r.onerror=a}))))}async function v(e,t,o){const n=await b(e).then((e=>async function(e,t){return new Promise(((o,n)=>{const a=e.get(t);a.onerror=n,a.onsuccess=()=>o(a.result)}))}(e,t)));if(n)return n;const a=await o(t);return await b(e,"readwrite").then((e=>async function(e,t,o){return new Promise(((n,a)=>{const r=e.put(t,o);r.onerror=a,r.onsuccess=()=>n(r.result)}))}(e,a,t))),a}function E(e,t){return(o,n)=>{e.message=`${t}: ${(0,g.formatFileSize)(o)}${n>0?` / ${(0,g.formatFileSize)(n)} @ ${(0,g.formatPercent)(o/n)}`:""}`}}async function F(e,t){const o=await fetch(e);if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);const n=o.body.getReader(),a=o.headers.get("Content-Encoding")?-1:parseInt(o.headers.get("Content-Length"));let r=0;const i=[]; // eslint-disable-next-line no-constant-condition -for(;;){const{done:e,value:o}=await n.read();if(e)break;i.push(o),r+=o.length,t(r,a)}const s=new Uint8Array(r);let c=0;for(const e of i)s.set(e,c),c+=e.length;return s}async function R(e,t,o){return v(y.cache,e,(async()=>F(t,o)))}function k(e,t){const o=new Blob([e],{type:t});return URL.createObjectURL(o)}const A=new class{constructor(){var e=this;i(this,p,{writable:!0,value:null}),i(this,f,{writable:!0,value:{}}),i(this,h,{writable:!0,value:{}}),r(this,"loaded",!1),i(this,w,{writable:!0,value:()=>{c(this,p)&&(c(this,p).onmessage=e=>{let{data:{id:t,type:o,data:n}}=e;switch(o){case d.LOAD:this.loaded=!0,c(this,f)[t](n);break;case d.EXEC:case d.WRITE_FILE:case d.READ_FILE:c(this,f)[t](n);break;case d.ERROR:c(this,h)[t](n)}delete c(this,f)[t],delete c(this,h)[t]})}}),i(this,m,{writable:!0,value:function(t){let{type:o,data:n}=t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;return c(e,p)?new Promise(((t,i)=>{const s=u();c(e,p)&&c(e,p).postMessage({id:s,type:o,data:n},a),c(e,f)[s]=t,c(e,h)[s]=i,r?.addEventListener("abort",(()=>{i(new DOMException(`Message # ${s} was aborted`,"AbortError"))}),{once:!0})})):Promise.reject(new Error("FFmpeg is not loaded"))}}),r(this,"load",((e,t)=>(c(this,p)||(s(this,p,new Worker(e.workerLoadURL,{type:"classic"})),c(this,w).call(this)),c(this,m).call(this,{type:d.LOAD,data:e},void 0,t)))),r(this,"exec",(function(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,n=arguments.length>2?arguments[2]:void 0;return c(e,m).call(e,{type:d.EXEC,data:{args:t,timeout:o}},void 0,n)})),r(this,"terminate",(()=>{const e=Object.keys(c(this,h));for(const t of e)c(this,h)[t](new Error("FFmpeg terminated")),delete c(this,h)[t],delete c(this,f)[t];c(this,p)&&(c(this,p).terminate(),s(this,p,null),this.loaded=!1)})),r(this,"writeFile",((e,t,o)=>{const n=[];return n.push(t.buffer),c(this,m).call(this,{type:d.WRITE_FILE,data:{path:e,data:t}},n,o)})),r(this,"readFile",((e,t)=>c(this,m).call(this,{type:d.READ_FILE,data:{path:e,encoding:"binary"}},void 0,t)))}};async function L(e,t,o,r,i){A.loaded||await async function(e){await A.load({workerLoadURL:k(await R("ffmpeg-worker",a.meta.compilationInfo.altCdn.library.ffmpeg.worker,E(e,"正在加载 FFmpeg Worker")),"text/javascript"),coreURL:k(await R("ffmpeg-core",a.meta.compilationInfo.altCdn.library.ffmpeg.core,E(e,"正在加载 FFmpeg Core")),"text/javascript"),wasmURL:k(await R("ffmpeg-wasm",a.meta.compilationInfo.altCdn.library.ffmpeg.wasm,E(e,"正在加载 FFmpeg WASM")),"application/wasm")})}(t),A.writeFile("video",await F(o,E(t,"正在下载视频流"))),A.writeFile("audio",await F(r,E(t,"正在下载音频流"))),t.message="混流中……";const s=i?"mkv":"mp4";e=i?e.replace(/.[^/.]+$/,`.${s}`):e,await A.exec(["-i","video","-i","audio","-c:v","copy","-c:a",i?"flac":"copy","-f",i?"matroska":"mp4",`output.${s}`]);const c=await A.readFile(`output.${s}`),l=new Blob([c],{type:i?"video/x-matroska":"video/mp4"});t.message="完成!",t.duration=1500,await n.DownloadPackage.single(e,l)}const j=coreApis.settings,x="WASM 混流输出",W="使用 WASM 在浏览器中下载并合并音视频",S={name:"downloadVideo.outputs.wasm",displayName:`下载视频 - ${x}`,description:W,author:{name:"WakelessSloth56",link:"https://github.com/WakelessSloth56"},setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push({name:"wasm",displayName:"WASM",description:`${W},运行过程中请勿关闭页面,初次使用或清除缓存后需要加载约 30 MB 的 WASM 文件`,runAction:async e=>{const t=e.infos.flatMap((e=>e.titledFragments)),{dashAudioExtension:n,dashFlacAudioExtension:a,dashVideoExtension:r}=(0,j.getComponentSettings)("downloadVideo").options;if(t.length>2||2===t.length&&(t[0].extension!==r||t[1].extension!==n&&t[1].extension!==a))o.Toast.error("仅支持单个视频下载",x).duration=1500;else{const e=o.Toast.info("正在加载",x);try{2===t.length?await L(t[0].title,e,t[0].url,t[1].url,t[1].extension===a):(e.type=o.ToastType.Error,e.message="仅支持 dash 格式视频下载",e.duration=1500)}catch(t){e.close(),o.Toast.error(String(t),x)}}}})}))},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return t=t.plugin})())); \ No newline at end of file +for(;;){const{done:e,value:o}=await n.read();if(e)break;i.push(o),r+=o.length,t(r,a)}const s=new Uint8Array(r);let c=0;for(const e of i)s.set(e,c),c+=e.length;return s}async function R(e,t,o){return v(y.cache,e,(async()=>F(t,o)))}function k(e,t){const o=new Blob([e],{type:t});return URL.createObjectURL(o)}const A=new class{constructor(){var e=this;i(this,p,{writable:!0,value:null}),i(this,f,{writable:!0,value:{}}),i(this,h,{writable:!0,value:{}}),r(this,"loaded",!1),i(this,w,{writable:!0,value:()=>{c(this,p)&&(c(this,p).onmessage=e=>{let{data:{id:t,type:o,data:n}}=e;switch(o){case d.LOAD:this.loaded=!0,c(this,f)[t](n);break;case d.EXEC:case d.WRITE_FILE:case d.READ_FILE:c(this,f)[t](n);break;case d.ERROR:c(this,h)[t](n)}delete c(this,f)[t],delete c(this,h)[t]})}}),i(this,m,{writable:!0,value:function(t){let{type:o,data:n}=t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;return c(e,p)?new Promise(((t,i)=>{const s=u();c(e,p)&&c(e,p).postMessage({id:s,type:o,data:n},a),c(e,f)[s]=t,c(e,h)[s]=i,r?.addEventListener("abort",(()=>{i(new DOMException(`Message # ${s} was aborted`,"AbortError"))}),{once:!0})})):Promise.reject(new Error("FFmpeg is not loaded"))}}),r(this,"load",((e,t)=>(c(this,p)||(s(this,p,new Worker(e.workerLoadURL,{type:"classic"})),c(this,w).call(this)),c(this,m).call(this,{type:d.LOAD,data:e},void 0,t)))),r(this,"exec",(function(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,n=arguments.length>2?arguments[2]:void 0;return c(e,m).call(e,{type:d.EXEC,data:{args:t,timeout:o}},void 0,n)})),r(this,"terminate",(()=>{const e=Object.keys(c(this,h));for(const t of e)c(this,h)[t](new Error("FFmpeg terminated")),delete c(this,h)[t],delete c(this,f)[t];c(this,p)&&(c(this,p).terminate(),s(this,p,null),this.loaded=!1)})),r(this,"writeFile",((e,t,o)=>{const n=[];return n.push(t.buffer),c(this,m).call(this,{type:d.WRITE_FILE,data:{path:e,data:t}},n,o)})),r(this,"readFile",((e,t)=>c(this,m).call(this,{type:d.READ_FILE,data:{path:e,encoding:"binary"}},void 0,t)))}};async function L(e,t,o,r,i){A.loaded||await async function(e){await A.load({workerLoadURL:k(await R("ffmpeg-worker",a.meta.compilationInfo.altCdn.library.ffmpeg.worker,E(e,"正在加载 FFmpeg Worker")),"text/javascript"),coreURL:k(await R("ffmpeg-core",a.meta.compilationInfo.altCdn.library.ffmpeg.core,E(e,"正在加载 FFmpeg Core")),"text/javascript"),wasmURL:k(await R("ffmpeg-wasm",a.meta.compilationInfo.altCdn.library.ffmpeg.wasm,E(e,"正在加载 FFmpeg WASM")),"application/wasm")})}(t),A.writeFile("video",await F(o,E(t,"正在下载视频流"))),A.writeFile("audio",await F(r,E(t,"正在下载音频流"))),t.message="混流中……";const s=i?"mkv":"mp4";e=i?e.replace(/.[^/.]+$/,`.${s}`):e,await A.exec(["-i","video","-i","audio","-c:v","copy","-c:a",i?"flac":"copy","-f",i?"matroska":"mp4",`output.${s}`]);const c=await A.readFile(`output.${s}`),l=new Blob([c],{type:i?"video/x-matroska":"video/mp4"});t.message="完成!",t.duration=1500,await n.DownloadPackage.single(e,l)}const j=coreApis.settings,x="WASM 混流输出",W="使用 WASM 在浏览器中下载并合并音视频",S={name:"downloadVideo.outputs.wasm",displayName:`下载视频 - ${x}`,description:W,author:{name:"WakelessSloth56",link:"https://github.com/WakelessSloth56"},setup:e=>{let{addData:t}=e;t("downloadVideo.outputs",(e=>{e.push({name:"wasm",displayName:"WASM",description:`${W},运行过程中请勿关闭页面,初次使用或清除缓存后需要加载约 30 MB 的 WASM 文件`,runAction:async e=>{const t=e.infos.flatMap((e=>e.titledFragments)),{dashAudioExtension:n,dashFlacAudioExtension:a,dashVideoExtension:r}=(0,j.getComponentSettings)("downloadVideo").options;if(t.length>2||2===t.length&&(t[0].extension!==r||t[1].extension!==n&&t[1].extension!==a))o.Toast.error("仅支持单个视频下载",x).duration=1500;else{const e=o.Toast.info("正在加载",x);try{2===t.length?await L(t[0].title,e,t[0].url,t[1].url,t[1].extension===a):(e.type=o.ToastType.Error,e.message="仅支持 dash 格式视频下载",e.duration=1500)}catch(t){e.close(),o.Toast.error(String(t),x)}}}})}))},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return t=t.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/dist/plugins/video/player/speed.js b/bb-evolved/registry/dist/plugins/video/player/speed.js index 0c65249cf0..dd5d501693 100644 --- a/bb-evolved/registry/dist/plugins/video/player/speed.js +++ b/bb-evolved/registry/dist/plugins/video/player/speed.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/speed"]=t():e["video/player/speed"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>X});const n=coreApis.toast,r=coreApis.componentApis.video.playerAgent,o=coreApis.lifeCycle,s=coreApis.observer,i=coreApis.utils,a=coreApis.utils.sort,l=coreApis.settings,c=e=>"function"==typeof e?{next:e}:e,d=e=>function e(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=!1;const s=[],i=[];let a=!1;const d=()=>{for(;s.length;)s.pop()();i.length=0,a=!0},p=e=>{a||(i.forEach((t=>{t.error?.(e),(0,l.getGeneralSettings)().devMode&&console.error(e)})),d())},u=e=>{a||i.forEach((t=>{try{t.next(e)}catch(e){p(e)}}))},h=()=>{i.forEach((e=>{e.complete?.()})),d()},b=()=>{if(o)return;const e=t?.({next:u,error:p,complete:h});e&&s.push(e),o=!0},m=e=>null==e?null:(i.push(e),()=>{lodash.pull(i,e)}),f=function(){for(var t=arguments.length,n=new Array(t),o=0;o{const t=m(c(e));return(r?.connect??b)(),t},pipe:f,next:u,error:p,complete:h,...r}:e(n[0],{subscribe:m},r||{connect:b,next:u}).pipe(...n.slice(1))};if(n){const e=t?.({subscribe:e=>n.subscribe({error:p,complete:h,...c(e)}),next:u,error:p,complete:h});e&&s.push(e)}return f()}(e),p=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:r}=e;t.forEach((e=>{n(e)})),r()}))},u=(e,t)=>d((n=>{let{next:r}=n;return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})),h=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{let{next:r}=t;e(...n,r)}))},b=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:r}=e;const o=[...t],s=()=>{const e=o.shift();e||r(),e.subscribe({next:n,complete:()=>{s()}})};s()}))},m=e=>new Promise(((t,n)=>{const r=e.subscribe({next:e=>{t(e),r()},error:()=>{n(),r()},complete:()=>{n(),r()}})})),f=e=>t=>{let{subscribe:n,next:r,complete:o,error:s}=t;n(lodash.mapValues({next:r,complete:o,error:s},(t=>e(t))))},g=e=>function(){for(var t=arguments.length,n=new Array(t),r=0;re(...n)))},v=e=>{const t=new Set;return e((e=>{lodash.castArray(e).forEach((e=>{t.add(e)}))})),()=>{t.forEach((e=>{e()}))}},y=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,error:r,complete:o}=e;return v((e=>{const s=[];let i=0;e(t.map(((e,a)=>e.pipe(f(g)).subscribe({next:e=>{s[a]=e,s.reduce((e=>e+1),0)===t.length&&n(s.slice())},complete:()=>{i++,i===t.length&&o()},error:r})))),e((()=>{s.length=0,i=0}))}))}))},x=e=>t=>{let{subscribe:n,next:r,error:o}=t;n(lodash.debounce((e=>{try{r(e)}catch(e){o(e)}}),e))},w=e=>t=>{let{subscribe:n,next:r}=t;n((t=>{e(t)&&r(t)}))},S=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,subscribe:r}=e,o=!1;r((e=>{o||t.forEach((e=>n(e))),n(e),o=!0}))}},E=coreApis.pluginApis.data,A=e=>e.split(",").map((e=>e.trim().replace(/^\./,""))).join(","),k=(e,t)=>{const n=t=>{(0,E.registerAndGetData)(e,t)[0]=t},r=(0,E.getData)(e);if(r.length)return[r[0],n];if(t){const e=t();return n(e),[e,n]}return[void 0,n]},V=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t&&1===e?"倍速":Math.trunc(e)===e?`${e}.0x`:`${e}x`},C=e=>{if("倍速"===e)return 1;const t=/([0-9]*[.]?[0-9]+)x/.exec(e);if(t)return parseFloat(t[1]);throw new Error(`unknown speed text: ${e}`)};function O(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const N=r.playerAgent.provideCustomQuery({video:{speedMenuList:".bilibili-player-video-btn-speed-menu, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".bilibili-player-video-btn-speed-menu-list, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".bilibili-player-video-btn-speed-name, .bpx-player-ctrl-playbackrate-result",speedContainer:".bilibili-player-video-btn-speed, .bpx-player-ctrl-playbackrate",active:".bilibili-player-active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"},bangumi:{speedMenuList:".squirtle-speed-select-list, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".squirtle-select-item, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".squirtle-speed-select-result, .bpx-player-ctrl-playbackrate-result",speedContainer:".squirtle-speed-wrap, .bpx-player-ctrl-playbackrate",active:".active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"}});let $=function(e){return e[e.MIN=0]="MIN",e[e.CURRENT=1]="CURRENT",e[e.MAX=2]="MAX",e}({});const T=(e,t,n)=>{const r=new MutationObserver(n);return r.observe(e,t),r},j=e=>{let[t,n]=e;if(!t)throw new Error("speed container element not found!");if(!n)throw new Error("video element not found!");const r=t.querySelector(N.custom.speedNameBtn.selector),o=t.querySelector(N.custom.speedMenuList.selector);let s,l,c;const p=d(),u=d().pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))}));u.pipe(S(void 0),(e=>{let{subscribe:t,next:n}=e;const r=[];return t((e=>{2===r.length&&r.shift(),r.push(e),2===r.length&&n(r.slice())})),()=>{r.length=0}})).subscribe((e=>{let[t,n]=e;l=t,s=n}));const h=e=>{if(e)switch(e.nodeType){case Node.TEXT_NODE:u.next(C(e.data));break;case Node.ELEMENT_NODE:u.next(C(e.innerHTML));break;default:console.warn("The target parameter of updateActiveVideoSpeed must be a Node, and the node type must be one of TEXT_NODE and ELEMENT_NODE")}},b=()=>{c=lodash([...o.children]).map((e=>lodash.attempt((()=>C(e.textContent))))).reject((e=>lodash.isError(e))).sort((0,a.ascendingSort)()).value()};h(r),b();const m=T(o,{childList:!0,attributes:!0},(e=>{const{attributes:t=[],childList:n=[]}=lodash.groupBy(e,"type");n.length&&b(),p.next({attributes:t,childList:n})})),f=T(r,{childList:!0,subtree:!0},(e=>{e.forEach((e=>{const[t]=e.addedNodes;h(t)}))}));return{containerElement:t,videoElement:n,nameBtnElement:r,menuListElement:o,query:e=>(0,i.des)(`./*[(${function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"or";return e.split(",").map(A).flat().map((e=>`contains(@class, "${e}")`)).join(` ${t} `)}(N.custom.speedMenuItem.selector)}) and normalize-space()="${V(e)}"]`,o),dispose:()=>{m.disconnect(),f.disconnect()},activeVideoSpeed$:u,menuListElementMutations$:p,getActiveVideoSpeed:()=>s,getOldActiveVideoSpeed:()=>l,getAvailableSpeedValues:()=>c}},M=e=>{const{videoElement:t,menuListElement:n}=e,r=u(n,"click").pipe((o=e=>{const{innerText:t,innerHTML:n}=e.target,r=t.trim()||n.trim();return lodash.attempt((()=>C(r)))},e=>{let{subscribe:t,next:n}=e;t((e=>{n(o(e))}))}),w((e=>!lodash.isError(e))));var o;const s=d((e=>{let{next:n}=e,r=t;do{r=Object.getPrototypeOf(r)}while(null===r||!Object.prototype.hasOwnProperty.call(r,"playbackRate"));const o=Object.getOwnPropertyDescriptor(r,"playbackRate");return Object.defineProperty(r,"playbackRate",{set(e){o.set.call(this,e),n(e)}}),()=>{Object.defineProperty(r,"playbackRate",o)}})),i=r.pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))})),a=s.pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))})),l=d((e=>{let{next:t}=e;const n=y(i,a);return n.subscribe((e=>{let[n,r]=e;n===r&&t(r)})),()=>n.complete()})).pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))}));let c;a.pipe(x(200),S(void 0),(e=>{let{subscribe:t,next:n}=e;const r=[];return t((e=>{2===r.length&&r.shift(),r.push(e),2===r.length&&n(r.slice())})),()=>{r.length=0}})).subscribe((e=>{let[t]=e;c=t}));const p={menuListElementClickSpeed$:r,menuListElementClickSpeedChange$:i,playbackRate$:s,playbackRateChange$:a,videoSpeedChange$:l};return{...e,...p,dispose:()=>{lodash.values(p).forEach((e=>{e.complete()})),e.dispose()},getOldPlaybackRate:()=>c}},[L]=k("speed.NoSuchSpeedMenuItemElementError",(()=>class extends Error{constructor(e){const t=lodash.attempt((()=>V(e))),n=lodash.isError(t)?String(e):String(t);super(`There is no such speed menu item as ${n}`),this.speed=e,O(this,"formattedSpeed",void 0),this.formattedSpeed=n}})),R=e=>{const{query:t,videoElement:n,videoSpeedChange$:r,getOldActiveVideoSpeed:o,getAvailableSpeedValues:s,getActiveVideoSpeed:i}=e,a=async function(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;const s=t(e);if(null==s)throw new L(e);s.click();const i=t=>{if((t??n.playbackRate)!==e)throw new Error(`failed to set ${V(e)} video speed.`)},a=[m(r.pipe(x(Math.max(0,o||0))))];o>0&&a.push(new Promise(((e,t)=>setTimeout((()=>setTimeout(t,o)))))),await Promise.all(a).then(i).catch(i)},l=async()=>{await a(1)},c=async(e,t)=>{if(lodash.isNil(e)&&(e=!1),"boolean"==typeof e)e||1===n.playbackRate?await a(o()):await l();else{const n=s();switch(t){case $.MIN:await a(n[e]);break;case $.MAX:await a(n[n.length-1+e]);break;case $.CURRENT:default:{const t=n.indexOf(i());if(-1===t)throw new Error("Unexpected Error: The available speed values do not include the active speed value, this should be a bug, please report the issue on github!");await a(n[t+e])}}}},d=async e=>{try{await c(e,$.CURRENT)}catch(e){if(console.warn(e),!(e instanceof L))throw e}};return Object.assign(e,{set:a,force:async e=>{n.playbackRate=e},reset:l,toggle:c,step:d,increase:async()=>{await d(1)},decrease:async()=>{await d(-1)}})},P=()=>k("speed.speedContext"),I=()=>k("speed.buildArguments$",(()=>{return d().pipe((e=e=>e.settings.enabled,t=>{let{subscribe:n,next:r}=t;const o=new Set;return n((t=>{const n=o.size;e(t)?o.add(t):o.delete(t),o.size!==n&&r([...o])})),()=>{o.clear()}}));var e})),D=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:lodash.identity;const[t,n]=P();if(t)return t;let r,i;const[a]=k("lifeCycleComponentLoaded$",(()=>u(unsafeWindow,o.LifeCycleEventTypes.ComponentsLoaded))),[l]=I(),[c]=k("speed.videoChange$",(()=>h(s.videoChange).pipe(w((e=>{let{aid:t,cid:n}=e;return t||n}))))),[f]=k("speed.speedContext$",(()=>d((t=>{let{next:n}=t;return y(c,b(p([]),l),a).subscribe((t=>{let[o,s]=t;const[a]=P();a?.dispose(),i?.("context update");const l=new Promise(((e,t)=>{r=e,i=t}));Promise.all([Promise.all([N.custom.speedContainer(),N.query.video.element()]).then(r),l]).then((e=>{let[,t]=e;return t})).then(j).then(M).then(R).then((e=>Object.assign(e,{videoIdObject:o,speedContext$:f,videoChange$:c}))).then(e(s)).then(n).catch((e=>console.error(e)))}))}))));return f.subscribe(n),m(f)},q=coreApis.utils.log,U=coreApis.pluginApis.hook;function B(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class H{constructor(e,t){this.entryContext=e,this.enabled$=t,B(this,"speedContext",void 0),B(this,"settings",void 0),B(this,"coreApis",void 0),B(this,"metadata",void 0),B(this,"options",void 0),B(this,"getVideoIdObject",void 0),B(this,"getAvailableSpeedValues",void 0),B(this,"getOldActiveVideoSpeed",void 0),B(this,"forceVideoSpeed",void 0),B(this,"getVideoSpeed",void 0),B(this,"setVideoSpeed",void 0),B(this,"resetVideoSpeed",void 0),B(this,"toggleVideoSpeed",void 0),B(this,"increaseVideoSpeed",void 0),B(this,"decreaseVideoSpeed",void 0),lodash.assign(this,e,{options:e.settings.options}),this.migrate?.(),lodash.assign(this,lodash.mapValues(H.contextMap,(e=>async function(){const t=await D(),n=lodash.get(t,e),r=lodash.isFunction(n)?await n(...arguments):n;return r})))}}B(H,"create",void 0),B(H,"contextMap",{getVideoIdObject:"videoIdObject",getAvailableSpeedValues:"getAvailableSpeedValues",getOldActiveVideoSpeed:"getOldActiveVideoSpeed",getVideoSpeed:"videoElement.playbackRate",setVideoSpeed:"set",forceVideoSpeed:"force",resetVideoSpeed:"reset",toggleVideoSpeed:"toggle",increaseVideoSpeed:"increase",decreaseVideoSpeed:"decrease"}),D((e=>t=>{const n=lodash.omit(t,"dispose"),r=e.map((e=>e.getSpeedContextMixin(n)));if(r.length>1){const e=lodash.intersection(...r.map(Object.keys));if(e.length)throw new Error(`In the registered speed component, there is an implementation of getSpeedContextMixin that causes the speed context to be mixed in ambiguous.\nThe repeated key names are ${e.join(", ")}`)}lodash.assign(n,...r);const o=[];return e.forEach((e=>{const t=lodash(e.settings.options).mapValues(((t,n)=>h(l.addComponentListener,`${e.metadata.name}.${n}`).pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))})))).mapKeys(((e,t)=>`${t}$`)).value();o.push(...lodash.values(t)),e.options=new Proxy(e.settings.options,{get:(e,n,r)=>lodash.isSymbol(n)?Reflect.get(e,n,r):!Reflect.has(e,n)&&n.endsWith("$")?t[n]:Reflect.get(e,n,r)}),e.speedContext=n,e.onSpeedContext(n),e.settings.enabled&&lodash(t).entries().forEach((t=>{let[n,r]=t;r.next(e.settings.options[n.slice(0,-1)])}))})),{...n,dispose:()=>{o.forEach((e=>e.complete())),t.dispose()}}})),H.create=function(e){const t=d().pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))}));return{...e,entry:n=>{const r=lodash.attempt((()=>new this(n,t)));if(r instanceof Error)return(0,q.logError)(r),null;const[o]=I();return t.subscribe((()=>{o.next(r)})),t.next(!0),(0,U.getHook)(`speed.component.${e.name}`).after(r),r},reload:()=>t.next(!0),unload:()=>t.next(!1)}};const X={name:"speed.keymap",displayName:"快捷键扩展 - 视频倍速",author:{name:"JLoeve",link:"https://github.com/LonelySteve"},description:"\n\n为操作视频倍速提供快捷键支持:\n\n- 提高倍速\n- 降低倍速\n- 切换倍速\n\n若添加并启用了记忆倍速组件,则还会增加一个快捷键:\n\n- 清除倍速记忆\n ",setup:e=>{let{addData:t,addHook:r}=e;const o=e=>async t=>{const n=await D();return await e(n),t.showTip(V(n.videoElement.playbackRate),"mdi-fast-forward"),!0};t("keymap.actions",(e=>{Object.assign(e,{videoSpeedIncrease:{displayName:"提高倍速",run:o((e=>{let{increase:t}=e;return t()}))},videoSpeedDecrease:{displayName:"降低倍速",run:o((e=>{let{decrease:t}=e;return t()}))},videoSpeedToggle:{displayName:"切换倍速",run:o((e=>{let{toggle:t}=e;t()}))}})})),t("keymap.presets",(e=>{e.videoSpeedIncrease="shift > 》 arrowUp",e.videoSpeedDecrease="shift < 《 arrowDown",e.videoSpeedToggle="shift ? ?"})),r("speed.component.rememberVideoSpeed",{after:e=>{t("keymap.actions",(t=>{t.videoSpeedForget={displayName:"清除倍速记忆",run:lodash.debounce(o((async()=>{e.settings.enabled?e.options.individualRemember?(e.forgetSpeed(),await e.resetVideoSpeed(),n.Toast.success("已清除当前视频倍速记忆值",e.metadata.displayName,3e3)):n.Toast.error("选项「各视频分别记忆」已禁用,不能清除当前视频倍速记忆值",e.metadata.displayName,5e3):n.Toast.error("组件已禁用,不能清除当前视频倍速记忆值",e.metadata.displayName,5e3)})),200)}})),t("keymap.presets",(e=>{e.videoSpeedForget="shift : :"}))}})},commitHash:"e998998fc03ae60938410eb104a6691b560cf563",coreVersion:"2.8.10"};return t=t.plugin})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["video/player/speed"]=t():e["video/player/speed"]=t()}(globalThis,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{plugin:()=>X});const n=coreApis.toast,r=coreApis.componentApis.video.playerAgent,o=coreApis.lifeCycle,s=coreApis.observer,i=coreApis.utils,a=coreApis.utils.sort,l=coreApis.settings,c=e=>"function"==typeof e?{next:e}:e,d=e=>function e(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=!1;const s=[],i=[];let a=!1;const d=()=>{for(;s.length;)s.pop()();i.length=0,a=!0},p=e=>{a||(i.forEach((t=>{t.error?.(e),(0,l.getGeneralSettings)().devMode&&console.error(e)})),d())},u=e=>{a||i.forEach((t=>{try{t.next(e)}catch(e){p(e)}}))},h=()=>{i.forEach((e=>{e.complete?.()})),d()},b=()=>{if(o)return;const e=t?.({next:u,error:p,complete:h});e&&s.push(e),o=!0},m=e=>null==e?null:(i.push(e),()=>{lodash.pull(i,e)}),g=function(){for(var t=arguments.length,n=new Array(t),o=0;o{const t=m(c(e));return(r?.connect??b)(),t},pipe:g,next:u,error:p,complete:h,...r}:e(n[0],{subscribe:m},r||{connect:b,next:u}).pipe(...n.slice(1))};if(n){const e=t?.({subscribe:e=>n.subscribe({error:p,complete:h,...c(e)}),next:u,error:p,complete:h});e&&s.push(e)}return g()}(e),p=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:r}=e;t.forEach((e=>{n(e)})),r()}))},u=(e,t)=>d((n=>{let{next:r}=n;return e.addEventListener(t,r),()=>e.removeEventListener(t,r)})),h=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{let{next:r}=t;e(...n,r)}))},b=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,complete:r}=e;const o=[...t],s=()=>{const e=o.shift();e||r(),e.subscribe({next:n,complete:()=>{s()}})};s()}))},m=e=>new Promise(((t,n)=>{const r=e.subscribe({next:e=>{t(e),r()},error:()=>{n(),r()},complete:()=>{n(),r()}})})),g=e=>t=>{let{subscribe:n,next:r,complete:o,error:s}=t;n(lodash.mapValues({next:r,complete:o,error:s},(t=>e(t))))},f=e=>function(){for(var t=arguments.length,n=new Array(t),r=0;re(...n)))},v=e=>{const t=new Set;return e((e=>{lodash.castArray(e).forEach((e=>{t.add(e)}))})),()=>{t.forEach((e=>{e()}))}},y=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,error:r,complete:o}=e;return v((e=>{const s=[];let i=0;e(t.map(((e,a)=>e.pipe(g(f)).subscribe({next:e=>{s[a]=e,s.reduce((e=>e+1),0)===t.length&&n(s.slice())},complete:()=>{i++,i===t.length&&o()},error:r})))),e((()=>{s.length=0,i=0}))}))}))},x=e=>t=>{let{subscribe:n,next:r,error:o}=t;n(lodash.debounce((e=>{try{r(e)}catch(e){o(e)}}),e))},w=e=>t=>{let{subscribe:n,next:r}=t;n((t=>{e(t)&&r(t)}))},S=function(){for(var e=arguments.length,t=new Array(e),n=0;n{let{next:n,subscribe:r}=e,o=!1;r((e=>{o||t.forEach((e=>n(e))),n(e),o=!0}))}},E=coreApis.pluginApis.data,A=e=>e.split(",").map((e=>e.trim().replace(/^\./,""))).join(","),k=(e,t)=>{const n=t=>{(0,E.registerAndGetData)(e,t)[0]=t},r=(0,E.getData)(e);if(r.length)return[r[0],n];if(t){const e=t();return n(e),[e,n]}return[void 0,n]},V=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t&&1===e?"倍速":Math.trunc(e)===e?`${e}.0x`:`${e}x`},C=e=>{if("倍速"===e)return 1;const t=/([0-9]*[.]?[0-9]+)x/.exec(e);if(t)return parseFloat(t[1]);throw new Error(`unknown speed text: ${e}`)};function O(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const N=r.playerAgent.provideCustomQuery({video:{speedMenuList:".bilibili-player-video-btn-speed-menu, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".bilibili-player-video-btn-speed-menu-list, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".bilibili-player-video-btn-speed-name, .bpx-player-ctrl-playbackrate-result",speedContainer:".bilibili-player-video-btn-speed, .bpx-player-ctrl-playbackrate",active:".bilibili-player-active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"},bangumi:{speedMenuList:".squirtle-speed-select-list, .bpx-player-ctrl-playbackrate-menu",speedMenuItem:".squirtle-select-item, .bpx-player-ctrl-playbackrate-menu-item",speedNameBtn:".squirtle-speed-select-result, .bpx-player-ctrl-playbackrate-result",speedContainer:".squirtle-speed-wrap, .bpx-player-ctrl-playbackrate",active:".active, .bpx-state-active",show:".bilibili-player-speed-show, .bpx-state-show"}});let $=function(e){return e[e.MIN=0]="MIN",e[e.CURRENT=1]="CURRENT",e[e.MAX=2]="MAX",e}({});const T=(e,t,n)=>{const r=new MutationObserver(n);return r.observe(e,t),r},j=e=>{let[t,n]=e;if(!t)throw new Error("speed container element not found!");if(!n)throw new Error("video element not found!");const r=t.querySelector(N.custom.speedNameBtn.selector),o=t.querySelector(N.custom.speedMenuList.selector);let s,l,c;const p=d(),u=d().pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))}));u.pipe(S(void 0),(e=>{let{subscribe:t,next:n}=e;const r=[];return t((e=>{2===r.length&&r.shift(),r.push(e),2===r.length&&n(r.slice())})),()=>{r.length=0}})).subscribe((e=>{let[t,n]=e;l=t,s=n}));const h=e=>{if(e)switch(e.nodeType){case Node.TEXT_NODE:u.next(C(e.data));break;case Node.ELEMENT_NODE:u.next(C(e.innerHTML));break;default:console.warn("The target parameter of updateActiveVideoSpeed must be a Node, and the node type must be one of TEXT_NODE and ELEMENT_NODE")}},b=()=>{c=lodash([...o.children]).map((e=>lodash.attempt((()=>C(e.textContent))))).reject((e=>lodash.isError(e))).sort((0,a.ascendingSort)()).value()};h(r),b();const m=T(o,{childList:!0,attributes:!0},(e=>{const{attributes:t=[],childList:n=[]}=lodash.groupBy(e,"type");n.length&&b(),p.next({attributes:t,childList:n})})),g=T(r,{childList:!0,subtree:!0},(e=>{e.forEach((e=>{const[t]=e.addedNodes;h(t)}))}));return{containerElement:t,videoElement:n,nameBtnElement:r,menuListElement:o,query:e=>(0,i.des)(`./*[(${function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"or";return e.split(",").map(A).flat().map((e=>`contains(@class, "${e}")`)).join(` ${t} `)}(N.custom.speedMenuItem.selector)}) and normalize-space()="${V(e)}"]`,o),dispose:()=>{m.disconnect(),g.disconnect()},activeVideoSpeed$:u,menuListElementMutations$:p,getActiveVideoSpeed:()=>s,getOldActiveVideoSpeed:()=>l,getAvailableSpeedValues:()=>c}},M=e=>{const{videoElement:t,menuListElement:n}=e,r=u(n,"click").pipe((o=e=>{const{innerText:t,innerHTML:n}=e.target,r=t.trim()||n.trim();return lodash.attempt((()=>C(r)))},e=>{let{subscribe:t,next:n}=e;t((e=>{n(o(e))}))}),w((e=>!lodash.isError(e))));var o;const s=d((e=>{let{next:n}=e,r=t;do{r=Object.getPrototypeOf(r)}while(null===r||!Object.prototype.hasOwnProperty.call(r,"playbackRate"));const o=Object.getOwnPropertyDescriptor(r,"playbackRate");return Object.defineProperty(r,"playbackRate",{set(e){o.set.call(this,e),n(e)}}),()=>{Object.defineProperty(r,"playbackRate",o)}})),i=r.pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))})),a=s.pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))})),l=d((e=>{let{next:t}=e;const n=y(i,a);return n.subscribe((e=>{let[n,r]=e;n===r&&t(r)})),()=>n.complete()})).pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))}));let c;a.pipe(x(200),S(void 0),(e=>{let{subscribe:t,next:n}=e;const r=[];return t((e=>{2===r.length&&r.shift(),r.push(e),2===r.length&&n(r.slice())})),()=>{r.length=0}})).subscribe((e=>{let[t]=e;c=t}));const p={menuListElementClickSpeed$:r,menuListElementClickSpeedChange$:i,playbackRate$:s,playbackRateChange$:a,videoSpeedChange$:l};return{...e,...p,dispose:()=>{lodash.values(p).forEach((e=>{e.complete()})),e.dispose()},getOldPlaybackRate:()=>c}},[L]=k("speed.NoSuchSpeedMenuItemElementError",(()=>class extends Error{constructor(e){const t=lodash.attempt((()=>V(e))),n=lodash.isError(t)?String(e):String(t);super(`There is no such speed menu item as ${n}`),this.speed=e,O(this,"formattedSpeed",void 0),this.formattedSpeed=n}})),R=e=>{const{query:t,videoElement:n,videoSpeedChange$:r,getOldActiveVideoSpeed:o,getAvailableSpeedValues:s,getActiveVideoSpeed:i}=e,a=async function(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;const s=t(e);if(null==s)throw new L(e);s.click();const i=t=>{if((t??n.playbackRate)!==e)throw new Error(`failed to set ${V(e)} video speed.`)},a=[m(r.pipe(x(Math.max(0,o||0))))];o>0&&a.push(new Promise(((e,t)=>setTimeout((()=>setTimeout(t,o)))))),await Promise.all(a).then(i).catch(i)},l=async()=>{await a(1)},c=async(e,t)=>{if(lodash.isNil(e)&&(e=!1),"boolean"==typeof e)e||1===n.playbackRate?await a(o()):await l();else{const n=s();switch(t){case $.MIN:await a(n[e]);break;case $.MAX:await a(n[n.length-1+e]);break;case $.CURRENT:default:{const t=n.indexOf(i());if(-1===t)throw new Error("Unexpected Error: The available speed values do not include the active speed value, this should be a bug, please report the issue on github!");await a(n[t+e])}}}},d=async e=>{try{await c(e,$.CURRENT)}catch(e){if(console.warn(e),!(e instanceof L))throw e}};return Object.assign(e,{set:a,force:async e=>{n.playbackRate=e},reset:l,toggle:c,step:d,increase:async()=>{await d(1)},decrease:async()=>{await d(-1)}})},P=()=>k("speed.speedContext"),I=()=>k("speed.buildArguments$",(()=>{return d().pipe((e=e=>e.settings.enabled,t=>{let{subscribe:n,next:r}=t;const o=new Set;return n((t=>{const n=o.size;e(t)?o.add(t):o.delete(t),o.size!==n&&r([...o])})),()=>{o.clear()}}));var e})),D=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:lodash.identity;const[t,n]=P();if(t)return t;let r,i;const[a]=k("lifeCycleComponentLoaded$",(()=>u(unsafeWindow,o.LifeCycleEventTypes.ComponentsLoaded))),[l]=I(),[c]=k("speed.videoChange$",(()=>h(s.videoChange).pipe(w((e=>{let{aid:t,cid:n}=e;return t||n}))))),[g]=k("speed.speedContext$",(()=>d((t=>{let{next:n}=t;return y(c,b(p([]),l),a).subscribe((t=>{let[o,s]=t;const[a]=P();a?.dispose(),i?.("context update");const l=new Promise(((e,t)=>{r=e,i=t}));Promise.all([Promise.all([N.custom.speedContainer(),N.query.video.element()]).then(r),l]).then((e=>{let[,t]=e;return t})).then(j).then(M).then(R).then((e=>Object.assign(e,{videoIdObject:o,speedContext$:g,videoChange$:c}))).then(e(s)).then(n).catch((e=>console.error(e)))}))}))));return g.subscribe(n),m(g)},q=coreApis.utils.log,U=coreApis.pluginApis.hook;function B(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class H{constructor(e,t){this.entryContext=e,this.enabled$=t,B(this,"speedContext",void 0),B(this,"settings",void 0),B(this,"coreApis",void 0),B(this,"metadata",void 0),B(this,"options",void 0),B(this,"getVideoIdObject",void 0),B(this,"getAvailableSpeedValues",void 0),B(this,"getOldActiveVideoSpeed",void 0),B(this,"forceVideoSpeed",void 0),B(this,"getVideoSpeed",void 0),B(this,"setVideoSpeed",void 0),B(this,"resetVideoSpeed",void 0),B(this,"toggleVideoSpeed",void 0),B(this,"increaseVideoSpeed",void 0),B(this,"decreaseVideoSpeed",void 0),lodash.assign(this,e,{options:e.settings.options}),this.migrate?.(),lodash.assign(this,lodash.mapValues(H.contextMap,(e=>async function(){const t=await D(),n=lodash.get(t,e),r=lodash.isFunction(n)?await n(...arguments):n;return r})))}}B(H,"create",void 0),B(H,"contextMap",{getVideoIdObject:"videoIdObject",getAvailableSpeedValues:"getAvailableSpeedValues",getOldActiveVideoSpeed:"getOldActiveVideoSpeed",getVideoSpeed:"videoElement.playbackRate",setVideoSpeed:"set",forceVideoSpeed:"force",resetVideoSpeed:"reset",toggleVideoSpeed:"toggle",increaseVideoSpeed:"increase",decreaseVideoSpeed:"decrease"}),D((e=>t=>{const n=lodash.omit(t,"dispose"),r=e.map((e=>e.getSpeedContextMixin(n)));if(r.length>1){const e=lodash.intersection(...r.map(Object.keys));if(e.length)throw new Error(`In the registered speed component, there is an implementation of getSpeedContextMixin that causes the speed context to be mixed in ambiguous.\nThe repeated key names are ${e.join(", ")}`)}lodash.assign(n,...r);const o=[];return e.forEach((e=>{const t=lodash(e.settings.options).mapValues(((t,n)=>h(l.addComponentListener,`${e.metadata.name}.${n}`).pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))})))).mapKeys(((e,t)=>`${t}$`)).value();o.push(...lodash.values(t)),e.options=new Proxy(e.settings.options,{get:(e,n,r)=>lodash.isSymbol(n)?Reflect.get(e,n,r):!Reflect.has(e,n)&&n.endsWith("$")?t[n]:Reflect.get(e,n,r)}),e.speedContext=n,e.onSpeedContext(n),e.settings.enabled&&lodash(t).entries().forEach((t=>{let[n,r]=t;r.next(e.settings.options[n.slice(0,-1)])}))})),{...n,dispose:()=>{o.forEach((e=>e.complete())),t.dispose()}}})),H.create=function(e){const t=d().pipe((e=>{let t,{subscribe:n,next:r}=e,o=!0;n((e=>{(o||t!==e)&&(o=!1,t=e,r(e))}))}));return{...e,entry:n=>{const r=lodash.attempt((()=>new this(n,t)));if(r instanceof Error)return(0,q.logError)(r),null;const[o]=I();return t.subscribe((()=>{o.next(r)})),t.next(!0),(0,U.getHook)(`speed.component.${e.name}`).after(r),r},reload:()=>t.next(!0),unload:()=>t.next(!1)}};const X={name:"speed.keymap",displayName:"快捷键扩展 - 视频倍速",author:{name:"JLoeve",link:"https://github.com/LonelySteve"},description:"\n\n为操作视频倍速提供快捷键支持:\n\n- 提高倍速\n- 降低倍速\n- 切换倍速\n\n若添加并启用了记忆倍速组件,则还会增加一个快捷键:\n\n- 清除倍速记忆\n ",setup:e=>{let{addData:t,addHook:r}=e;const o=e=>async t=>{const n=await D();return await e(n),t.showTip(V(n.videoElement.playbackRate),"mdi-fast-forward"),!0};t("keymap.actions",(e=>{Object.assign(e,{videoSpeedIncrease:{displayName:"提高倍速",run:o((e=>{let{increase:t}=e;return t()}))},videoSpeedDecrease:{displayName:"降低倍速",run:o((e=>{let{decrease:t}=e;return t()}))},videoSpeedToggle:{displayName:"切换倍速",run:o((e=>{let{toggle:t}=e;t()}))}})})),t("keymap.presets",(e=>{e.videoSpeedIncrease="shift > 》 arrowUp",e.videoSpeedDecrease="shift < 《 arrowDown",e.videoSpeedToggle="shift ? ?"})),r("speed.component.rememberVideoSpeed",{after:e=>{t("keymap.actions",(t=>{t.videoSpeedForget={displayName:"清除倍速记忆",run:lodash.debounce(o((async()=>{e.settings.enabled?e.options.individualRemember?(e.forgetSpeed(),await e.resetVideoSpeed(),n.Toast.success("已清除当前视频倍速记忆值",e.metadata.displayName,3e3)):n.Toast.error("选项「各视频分别记忆」已禁用,不能清除当前视频倍速记忆值",e.metadata.displayName,5e3):n.Toast.error("组件已禁用,不能清除当前视频倍速记忆值",e.metadata.displayName,5e3)})),200)}})),t("keymap.presets",(e=>{e.videoSpeedForget="shift : :"}))}})},commitHash:"66ede2a74ce88d6e7a57911497e39e10aa8eeb54",coreVersion:"2.8.11"};return t=t.plugin})())); \ No newline at end of file diff --git a/bb-evolved/registry/lib/components/utils/ip-show/index.ts b/bb-evolved/registry/lib/components/utils/ip-show/index.ts index 5cef06dff8..f8747a527f 100644 --- a/bb-evolved/registry/lib/components/utils/ip-show/index.ts +++ b/bb-evolved/registry/lib/components/utils/ip-show/index.ts @@ -4,9 +4,8 @@ import { defineComponentMetadata } from '@/components/define' import { CommentItem, CommentReplyItem } from '@/components/utils/comment-apis' // 新版评论区IP属地获取 -const getIpLocation = (element: HTMLElement) => { - const props = (element as any).__vueParentComponent?.props - const reply = props?.reply ?? props?.subReply +const getIpLocation = (item: CommentReplyItem) => { + const reply = item.vueProps return reply?.reply_control?.location ?? undefined } @@ -268,7 +267,7 @@ observer.observe(document.head, { childList: true }) const processItems = (items: CommentReplyItem[]) => { items.forEach(item => { - const location = getIpLocation(item.element) + const location = getIpLocation(item) if (location !== undefined) { const replyTime = item.element.querySelector('.reply-info>.reply-time') ?? diff --git a/bb-evolved/registry/lib/components/video/default-location/desc.md b/bb-evolved/registry/lib/components/video/default-location/desc.md index 8bfdc32bd1..70cfd15e3a 100644 --- a/bb-evolved/registry/lib/components/video/default-location/desc.md +++ b/bb-evolved/registry/lib/components/video/default-location/desc.md @@ -1,7 +1,5 @@ 打开视频/番剧时自动定位到指定位置 -
    - 位置:距离页面顶部的像素距离\ 默认位置:打开视频时自动定位到此处\ 位置测试:查看、调整当前页面所在位置 @@ -9,11 +7,3 @@ 当前版本限制默认位置的最大值为 4000。\ 若有其他希望支持的页面,请提交反馈。\ 脚本不会等待评论完全加载,因此较大的默认位置将无法正确定位。 - -
    - - diff --git a/bb-evolved/registry/lib/components/video/player/extend-speed/index.ts b/bb-evolved/registry/lib/components/video/player/extend-speed/index.ts index 025d2a7871..0ceb7dcdde 100644 --- a/bb-evolved/registry/lib/components/video/player/extend-speed/index.ts +++ b/bb-evolved/registry/lib/components/video/player/extend-speed/index.ts @@ -14,7 +14,7 @@ export const component = ExtendSpeedComponent.create({ > 扩展视频播放器的倍速菜单项,可用于突破原有播放倍数的上限或下限. -### 🔧 **选项** +#### 🔧 **选项** - \`隐藏滚动条\`:如果添加的倍速过多,倍速菜单将出现滚动条,在 Windows 下,若没有安装并启用「细滚动条」组件会显得比较挤,建议开启此选项隐藏滚动条. @@ -22,7 +22,7 @@ export const component = ExtendSpeedComponent.create({ - \`隐藏新增图标\`:如果认为顶部的新增倍速图标有些突兀,可以开启此选项隐藏. -### **新增倍速** +#### **新增倍速** 开启组件后,在默认情况下,播放器的倍速菜单就会新增 2.5x 和 3.0x 两个倍速选项. @@ -32,7 +32,7 @@ export const component = ExtendSpeedComponent.create({ **不推荐设置超高倍速(>3.0x)**:原生播放器内部没有针对超高倍速进行优化,可能导致音画不同步、播放卡顿、声音嘈杂/消失等一系列问题. -### **删除倍速** +#### **删除倍速** 将鼠标指针移到**自定义**的倍速菜单项上,其右侧将会显示一个移除图标,单击即可删除相应的倍速. diff --git a/bb-evolved/registry/lib/components/video/player/remember-speed/index.ts b/bb-evolved/registry/lib/components/video/player/remember-speed/index.ts index 6bd014be83..d2210aed9a 100644 --- a/bb-evolved/registry/lib/components/video/player/remember-speed/index.ts +++ b/bb-evolved/registry/lib/components/video/player/remember-speed/index.ts @@ -15,14 +15,14 @@ export const component = RememberSpeedComponent.create({ > 提高视频播放器的倍速记忆体验,可实现跨页共享倍速,也可以按视频分别记忆倍速. -### 🔧 **选项** +#### 🔧 **选项** - \`全局记忆倍速值\`:默认情况下,这是跨页共享的倍速值,如果启用「各视频分别记忆」,则作为从未独立记忆倍速视频的初始倍速值. - \`固定全局倍速值\`:默认情况下,全局倍速值将随着用户改变视频倍速而改变,打开此选项后,全局记忆倍速值不再受倍速调整的影响. - \`各视频分别记忆\`:打开此选项后,将按不同视频分别记忆倍速,对于从未被记忆过倍速的视频,将采用全局记忆倍速值,选项「固定全局倍速值」在此情况下强制生效. - \`弹出还原倍速提示\`:打开此选项后,每次成功还原倍速后都会弹出提示. -### 🌈 **温馨提示** +#### 🌈 **温馨提示** 「扩展倍速」和倍速相关的快捷键插件已分离为单独的组件或插件. diff --git a/bb-evolved/registry/lib/components/video/player/screenshot/VideoScreenshot.vue b/bb-evolved/registry/lib/components/video/player/screenshot/VideoScreenshot.vue index 5e7dca5496..1215d64c62 100644 --- a/bb-evolved/registry/lib/components/video/player/screenshot/VideoScreenshot.vue +++ b/bb-evolved/registry/lib/components/video/player/screenshot/VideoScreenshot.vue @@ -2,7 +2,14 @@
    - + @@ -40,7 +47,15 @@ export default Vue.extend({ this.$emit('discard') }, save() { - this.$refs.link.click() + const link = this.$refs.link as HTMLAnchorElement + link.addEventListener( + 'click', + e => { + e.stopPropagation() + }, + { capture: true, once: true }, + ) + link.click() this.discard() }, }, diff --git a/bb-evolved/src/client/common.meta.json b/bb-evolved/src/client/common.meta.json index 79de1e9bc1..285af13e06 100644 --- a/bb-evolved/src/client/common.meta.json +++ b/bb-evolved/src/client/common.meta.json @@ -1,5 +1,5 @@ { - "version": "2.8.10", + "version": "2.8.11", "author": "Grant Howard, Coulomb-G", "copyright": "[year], Grant Howard (https://github.com/the1812) & Coulomb-G (https://github.com/Coulomb-G)", "license": "MIT", diff --git a/bb-evolved/src/components/launch-bar/LaunchBar.vue b/bb-evolved/src/components/launch-bar/LaunchBar.vue index 8d0a7d145c..b1a9050df7 100644 --- a/bb-evolved/src/components/launch-bar/LaunchBar.vue +++ b/bb-evolved/src/components/launch-bar/LaunchBar.vue @@ -28,9 +28,9 @@ v-for="(a, index) of actions" :key="a.key" :action="a" - @previous-item="previousItem($event, index)" - @next-item="nextItem($event, index)" - @delete-item="onDeleteItem($event, index)" + @previous-item="previousItem()" + @next-item="nextItem()" + @delete-item="onDeleteItem()" @action=" index === actions.length - 1 && onClearHistory() onAction(a) @@ -49,12 +49,12 @@ class="suggest-item disabled" >
    @@ -66,7 +66,9 @@ import Fuse from 'fuse.js' import { VIcon, VLoading, VEmpty } from '@/ui' import { registerAndGetData } from '@/plugins/data' import { select } from '@/core/spin-query' +import { ascendingSort } from '@/core/utils/sort' import { matchUrlPattern } from '@/core/utils' +import { urlChange } from '@/core/observer' import ActionItem from './ActionItem.vue' import { LaunchBarActionProviders, @@ -75,7 +77,7 @@ import { } from './launch-bar-action' import { searchProvider, search } from './search-provider' import { historyProvider } from './history-provider' -import { ascendingSort } from '@/core/utils/sort' +import { FocusTarget } from './focus-target' const [actionProviders] = registerAndGetData(LaunchBarActionProviders, [ searchProvider, @@ -144,10 +146,12 @@ export default Vue.extend({ ActionItem, }, data() { + const focusTarget = new FocusTarget(0) return { recommended, actions: [], keyword: '', + focusTarget, noActions: false, } }, @@ -160,30 +164,35 @@ export default Vue.extend({ keyword() { this.getActions() }, + actions() { + this.focusTarget.reset(this.actions.length) + }, }, async mounted() { - this.getActions() - if (!matchUrlPattern(/^https?:\/\/search\.bilibili\.com/)) { - return + await this.getActions() + if (matchUrlPattern(/^https?:\/\/search\.bilibili\.com/)) { + await this.setupSearchPageSync() } - select('#search-keyword, .search-input-el').then((input: HTMLInputElement) => { - if (!input) { - return - } - this.keyword = input.value - document.addEventListener('change', e => { - if (!(e.target instanceof HTMLInputElement)) { - return - } - if (e.target.id === 'search-keyword') { - this.keyword = e.target.value - } - }) + this.focusTarget.addEventListener('index-change', () => { + this.handleIndexUpdate() }) }, methods: { getOnlineActions: lodash.debounce(getOnlineActions, 200), getActions, + async setupSearchPageSync() { + const selector = '#search-keyword, .search-input-el' + const input = (await select(selector)) as HTMLInputElement + if (!input) { + return + } + this.keyword = input.value + urlChange(url => { + const params = new URLSearchParams(url) + this.keyword = params.get('keyword') + }) + await this.$nextTick() + }, handleSelect() { this.$emit('close') this.getActions() @@ -211,47 +220,47 @@ export default Vue.extend({ if (e.isComposing) { return } - this.$refs.list.querySelector('.suggest-item:last-child').focus() + this.focusTarget.previous() e.preventDefault() }, handleDown(e: KeyboardEvent) { if (e.isComposing) { return } - this.$refs.list.querySelector('.suggest-item').focus() + this.focusTarget.next() e.preventDefault() }, - previousItem(element: HTMLElement, index: number) { - if (index === 0) { - this.focus() - } else { - ;(element.previousElementSibling as HTMLElement).focus() + handleIndexUpdate() { + if (!this.focusTarget.hasFocus) { + this.focusInput() + return } + this.focusSuggestItem(this.focusTarget.index + 1) }, - nextItem(element: HTMLElement, index: number) { - const lastItemIndex = this.actions.length - 1 - if (index !== lastItemIndex) { - ;(element.nextElementSibling as HTMLElement).focus() - } else { - this.focus() - } + previousItem() { + this.focusTarget.previous() + }, + nextItem() { + this.focusTarget.next() }, search, - onDeleteItem(element: HTMLElement, index: number) { - this.previousItem(element, index) + onDeleteItem() { + this.focusTarget.previous() this.getActions() }, onClearHistory() { - this.focus() + this.focusInput() this.getActions() }, onAction() { - // this.focus() this.handleSelect() }, - focus() { + focusInput() { this.$refs.input.focus() }, + focusSuggestItem(nth: number) { + this.$refs.list.querySelector(`.suggest-item:nth-child(${nth})`)?.focus() + }, }, }) diff --git a/bb-evolved/src/components/launch-bar/focus-target.ts b/bb-evolved/src/components/launch-bar/focus-target.ts new file mode 100644 index 0000000000..6207ecffd9 --- /dev/null +++ b/bb-evolved/src/components/launch-bar/focus-target.ts @@ -0,0 +1,38 @@ +export class FocusTarget extends EventTarget { + /** + * -1: Input Focus + * > -1: Item Focus + */ + private itemIndex = -1 + private itemLength = 0 + + constructor(length: number, index = -1) { + super() + this.itemLength = length + this.index = index + } + + get index() { + return this.itemIndex + } + private set index(value: number) { + this.itemIndex = lodash.clamp(value, -1, this.itemLength - 1) + this.dispatchEvent(new CustomEvent('index-change', { detail: this })) + } + get hasFocus() { + return this.itemIndex > -1 + } + + reset(length: number, index = this.index) { + this.itemLength = length + this.index = index + } + next() { + this.index += 1 + console.log(this.index) + } + previous() { + this.index -= 1 + console.log(this.index) + } +} diff --git a/bb-evolved/src/components/launch-bar/search-provider.ts b/bb-evolved/src/components/launch-bar/search-provider.ts index b7085a7416..8b6cb81126 100644 --- a/bb-evolved/src/components/launch-bar/search-provider.ts +++ b/bb-evolved/src/components/launch-bar/search-provider.ts @@ -26,11 +26,13 @@ export const searchProvider: LaunchBarActionProvider = { content: async () => Vue.extend({ render: h => { - const content = h('div', { - domProps: { - innerHTML: /* html */ `${input}`, + const content = h( + 'div', + { + class: 'suggest-highlight', }, - }) + [input], + ) return content }, }), diff --git a/bb-evolved/src/components/settings-panel/WidgetsPanel.vue b/bb-evolved/src/components/settings-panel/WidgetsPanel.vue index 228671cb80..da6c9c0783 100644 --- a/bb-evolved/src/components/settings-panel/WidgetsPanel.vue +++ b/bb-evolved/src/components/settings-panel/WidgetsPanel.vue @@ -63,6 +63,7 @@ export default Vue.extend({ }, watch: { allWidgets() { + this.widgets = [] this.allWidgets.forEach(async (w: Widget) => { const add = await widgetFilter(w) if (add) { @@ -93,22 +94,10 @@ export default Vue.extend({ @include v-center(); justify-content: flex-start; align-items: flex-start; - flex-wrap: wrap; padding: 16px; padding-right: 20px; - // background-color: #f8f8f8; - // border-radius: 0 8px 8px 0; - // border: 1px solid #e8e8e8; - // border-left-width: 0; - // box-sizing: content-box; - // overflow: auto; @include popup(); @include text-color(); - // @include shadow(); - // body.dark & { - // background-color: #1a1a1a; - // border-color: #333; - // } &-header { flex: 0 0 auto; @include h-center(); diff --git a/bb-evolved/src/components/utils/comment/areas/base.ts b/bb-evolved/src/components/utils/comment/areas/base.ts index 3130a07bbf..1535690d19 100644 --- a/bb-evolved/src/components/utils/comment/areas/base.ts +++ b/bb-evolved/src/components/utils/comment/areas/base.ts @@ -1,6 +1,6 @@ import { childListSubtree } from '@/core/observer' import type { CommentItem } from '../comment-item' -import type { CommentItemCallback } from '../types' +import type { CommentCallbackInput, CommentCallbackPair, CommentItemCallback } from '../types' import type { CommentReplyItem } from '../reply-item' import { getRandomId } from '@/core/utils' @@ -12,8 +12,7 @@ export abstract class CommentArea { items: CommentItem[] = [] /** 与之关联的 MutationObserver */ protected observer?: MutationObserver - protected itemAddedCallbacks: CommentItemCallback[] = [] - protected itemRemovedCallbacks: CommentItemCallback[] = [] + protected itemCallbacks: CommentCallbackPair[] = [] protected static replyItemClasses = ['list-item.reply-wrap', 'reply-item'] protected static replyItemSelector = CommentArea.replyItemClasses.map(c => `.${c}`).join(',') @@ -52,7 +51,7 @@ export abstract class CommentArea { this.items = elements.map(it => this.parseCommentItem(it as HTMLElement)) } this.items.forEach(item => { - this.itemAddedCallbacks.forEach(c => c(item)) + this.itemCallbacks.forEach(c => c.added?.(item)) }) ;[this.observer] = childListSubtree(this.element, records => { const observerCallId = getRandomId() @@ -77,14 +76,14 @@ export abstract class CommentArea { addedCommentElements.forEach(n => { const commentItem = this.parseCommentItem(n) this.items.push(commentItem) - this.itemAddedCallbacks.forEach(c => c(commentItem)) + this.itemCallbacks.forEach(c => c.added?.(commentItem)) }) removedCommentElements.forEach(n => { const id = this.getCommentId(n) const index = this.items.findIndex(item => item.id === id) if (index !== -1) { const [commentItem] = this.items.splice(index, 1) - this.itemRemovedCallbacks.forEach(c => c(commentItem)) + this.itemCallbacks.forEach(c => c.removed?.(commentItem)) } }) performance.mark(`observeItems subtree end ${observerCallId}`) @@ -98,14 +97,25 @@ export abstract class CommentArea { performance.measure('observeItems', 'observeItems start', 'observeItems end') } - forEachCommentItem(callbacks: { added?: CommentItemCallback; removed?: CommentItemCallback }) { - const { added, removed } = callbacks - if (added) { - this.items.forEach(item => added(item)) - this.itemAddedCallbacks.push(added) - } - if (removed) { - this.itemRemovedCallbacks.push(removed) + destroy() { + this.observer?.disconnect() + this.items.forEach(item => { + this.itemCallbacks.forEach(pair => pair.removed?.(item)) + }) + } + + static resolveCallbackPair void>( + input: CommentCallbackInput, + ): CommentCallbackPair { + if (typeof input === 'function') { + return { added: input } } + return input + } + + forEachCommentItem(input: CommentCallbackInput) { + const pair = CommentArea.resolveCallbackPair(input) + this.items.forEach(item => pair.added?.(item)) + this.itemCallbacks.push(pair) } } diff --git a/bb-evolved/src/components/utils/comment/areas/v1.ts b/bb-evolved/src/components/utils/comment/areas/v1.ts index 2e1861c874..60090ece72 100644 --- a/bb-evolved/src/components/utils/comment/areas/v1.ts +++ b/bb-evolved/src/components/utils/comment/areas/v1.ts @@ -44,6 +44,7 @@ export class CommentAreaV1 extends CommentArea { content: replyElement.querySelector('.text-con').textContent, timeText: replyElement.querySelector('.info .time, .info .time-location').textContent, likes: parseInt(replyElement.querySelector('.info .like span').textContent), + vueProps: undefined, }) } const item = new CommentItem({ @@ -55,6 +56,7 @@ export class CommentAreaV1 extends CommentArea { timeText: element.querySelector('.con .info .time, .info .time-location').textContent, likes: parseInt(element.querySelector('.con .like span').textContent), replies: [], + vueProps: undefined, }) if (dq(element, '.reply-box .view-more')) { const replyBox = dq(element, '.reply-box') as HTMLElement diff --git a/bb-evolved/src/components/utils/comment/areas/v2.ts b/bb-evolved/src/components/utils/comment/areas/v2.ts index 5401eaacd2..0df277f7a7 100644 --- a/bb-evolved/src/components/utils/comment/areas/v2.ts +++ b/bb-evolved/src/components/utils/comment/areas/v2.ts @@ -31,7 +31,7 @@ export class CommentAreaV2 extends CommentArea { } /** 获取 Vue 数据 (评论 / 回复) */ - protected getReplyFromVueData(element: HTMLElement) { + protected getReplyFromVueProps(element: HTMLElement) { const props = (element as HTMLElementWithVue)._vnode?.props return props?.reply ?? props?.subReply } @@ -39,7 +39,7 @@ export class CommentAreaV2 extends CommentArea { /** 获取回复对应的元素 */ protected getReplyItemElement(parent: HTMLElement, replyId: string) { const [replyElement] = dqa(parent, '.sub-reply-item').filter( - (it: HTMLElement) => this.getReplyFromVueData(it).rpid_str === replyId, + (it: HTMLElement) => this.getReplyFromVueProps(it).rpid_str === replyId, ) return replyElement as HTMLElement } @@ -77,15 +77,15 @@ export class CommentAreaV2 extends CommentArea { } parseCommentItem(element: HTMLElement): CommentItem { - const vueData = this.getReplyFromVueData(element) - if (!vueData) { + const vueProps = this.getReplyFromVueProps(element) + if (!vueProps) { throw new Error('Invalid comment item') } const parseReplies = () => { - if (!vueData.replies) { + if (!vueProps.replies) { return [] } - return vueData.replies.map((r: any): CommentReplyItem => { + return vueProps.replies.map((r: any): CommentReplyItem => { return new CommentReplyItem({ id: r.rpid_str, element: this.getReplyItemElement(element, r.rpid_str), @@ -94,23 +94,25 @@ export class CommentAreaV2 extends CommentArea { content: r.content.message, time: r.ctime * 1000, likes: r.like, + vueProps, }) }) } const item = new CommentItem({ - id: vueData.rpid_str, + id: vueProps.rpid_str, element, - userId: vueData.member.mid, - userName: vueData.member.uname, - content: vueData.content.message, - time: vueData.ctime * 1000, - likes: vueData.like, - pictures: vueData.content?.pictures?.map((img: any) => { + userId: vueProps.member.mid, + userName: vueProps.member.uname, + content: vueProps.content.message, + time: vueProps.ctime * 1000, + likes: vueProps.like, + pictures: vueProps.content?.pictures?.map((img: any) => { return img.img_src }), replies: parseReplies(), + vueProps, }) - if (item.replies.length < vueData.rcount) { + if (item.replies.length < vueProps.rcount) { const replyBox = dq(element, '.sub-reply-list') childList(replyBox, records => { performance.mark(`parseReplies start ${item.id}`) @@ -141,11 +143,11 @@ export class CommentAreaV2 extends CommentArea { return item } getCommentId(element: HTMLElement): string { - const vueData = this.getReplyFromVueData(element) - if (!vueData?.rpid_str) { + const vueProps = this.getReplyFromVueProps(element) + if (!vueProps?.rpid_str) { throw new Error('Invalid comment item') } - return vueData.rpid_str + return vueProps.rpid_str } static isV2Area(element: HTMLElement) { diff --git a/bb-evolved/src/components/utils/comment/comment-area-manager.ts b/bb-evolved/src/components/utils/comment/comment-area-manager.ts index 2f8a32fe51..0873659fc8 100644 --- a/bb-evolved/src/components/utils/comment/comment-area-manager.ts +++ b/bb-evolved/src/components/utils/comment/comment-area-manager.ts @@ -1,12 +1,18 @@ -import { allMutations } from '@/core/observer' +import { allMutations, childList } from '@/core/observer' import { getCommentArea } from './comment-area' -import { CommentAreaCallback, CommentItemCallback } from './types' +import { + CommentAreaCallback, + CommentCallbackInput, + CommentCallbackPair, + CommentItemCallback, +} from './types' import { CommentArea } from './areas/base' +import { deleteValue } from '@/core/utils' export class CommentAreaManager { /** 当前页面所有的评论区列表 */ commentAreas: CommentArea[] = [] - commentAreaCallbacks: CommentAreaCallback[] = [] + commentAreaCallbacks: CommentCallbackPair[] = [] protected static commentAreaClasses = ['bili-comment', 'bb-comment'] @@ -29,16 +35,29 @@ export class CommentAreaManager { const area = getCommentArea(node) this.commentAreas.push(area) area.observeItems() - this.commentAreaCallbacks.forEach(c => c(area)) + this.commentAreaCallbacks.forEach(c => c.added?.(area)) + const [observer] = childList(area.element.parentElement, records => { + records.forEach(r => { + r.removedNodes.forEach(removedNode => { + if (removedNode === area.element) { + deleteValue(this.commentAreas, a => a === area) + this.commentAreaCallbacks.forEach(c => c.removed?.(area)) + area.destroy() + observer.disconnect() + } + }) + }) + }) } } - forEachCommentArea(callback: CommentAreaCallback) { - this.commentAreas.forEach(it => callback(it)) - this.commentAreaCallbacks.push(callback) + forEachCommentArea(input: CommentCallbackInput) { + const pair = CommentArea.resolveCallbackPair(input) + this.commentAreas.forEach(it => pair.added?.(it)) + this.commentAreaCallbacks.push(pair) } - forEachCommentItem(callbacks: { added?: CommentItemCallback; removed?: CommentItemCallback }) { + forEachCommentItem(callbacks: CommentCallbackPair) { this.forEachCommentArea(area => area.forEachCommentItem(callbacks)) } } diff --git a/bb-evolved/src/components/utils/comment/reply-item.ts b/bb-evolved/src/components/utils/comment/reply-item.ts index 3f73f9f35d..c15bbc2411 100644 --- a/bb-evolved/src/components/utils/comment/reply-item.ts +++ b/bb-evolved/src/components/utils/comment/reply-item.ts @@ -16,6 +16,8 @@ export class CommentReplyItem extends EventTarget { time?: number /** 点赞数 */ likes: number + /** 对应的 Vue Props */ + vueProps: any constructor(initParams: Omit) { super() @@ -27,5 +29,6 @@ export class CommentReplyItem extends EventTarget { this.timeText = initParams.timeText this.time = initParams.time this.likes = initParams.likes + this.vueProps = initParams.vueProps } } diff --git a/bb-evolved/src/components/utils/comment/types.ts b/bb-evolved/src/components/utils/comment/types.ts index c11dddfc53..af8d781b13 100644 --- a/bb-evolved/src/components/utils/comment/types.ts +++ b/bb-evolved/src/components/utils/comment/types.ts @@ -8,3 +8,7 @@ export const RepliesUpdateEventType = 'repliesUpdate' export type RepliesUpdateEventCallback = (event: CustomEvent) => void export type CommentItemCallback = (item: CommentItem) => void export type CommentAreaCallback = (area: CommentArea) => void +export type CommentCallbackPair void> = { added?: T; removed?: T } +export type CommentCallbackInput void> = + | CommentCallbackPair + | T diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index b60e87e385..a7bcacfc4e 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -163,6 +163,9 @@ name = "arbitrary" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] [[package]] name = "arc-swap" @@ -178,7 +181,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -212,9 +215,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "9f2776ead772134d55b62dd45e59a79e21612d85d0af729b8b7d3967d601a62a" dependencies = [ "concurrent-queue", "event-listener 5.3.0", @@ -352,7 +355,7 @@ version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d" dependencies = [ - "async-channel 2.2.1", + "async-channel 2.3.0", "async-io 2.3.2", "async-lock 3.3.0", "async-signal", @@ -374,7 +377,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -409,7 +412,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -587,7 +590,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" dependencies = [ - "async-channel 2.2.1", + "async-channel 2.3.0", "async-lock 3.3.0", "async-task", "futures-io", @@ -640,9 +643,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" [[package]] name = "byteorder" @@ -835,7 +838,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -906,19 +909,26 @@ dependencies = [ "tracing-log", "tracing-subscriber", "uuid", - "warp", - "webview2-com", + "webview2-com-bridge", "which 6.0.1", "window-shadows", "window-vibrancy", - "windows 0.39.0", "windows-sys 0.52.0", "winreg 0.52.0", "wry", - "zip", + "zip 1.2.3", "zip-extensions", ] +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + [[package]] name = "cocoa" version = "0.24.1" @@ -994,7 +1004,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1012,6 +1022,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + [[package]] name = "convert_case" version = "0.4.0" @@ -1080,6 +1096,21 @@ dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" version = "1.4.0" @@ -1174,7 +1205,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1184,7 +1215,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1224,7 +1255,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1235,7 +1266,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1261,12 +1292,6 @@ dependencies = [ "parking_lot_core", ] -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - [[package]] name = "deelevate" version = "0.2.0" @@ -1281,6 +1306,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "deflate64" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83ace6c86376be0b6cdcf3fb41882e81d94b31587573d1cfa9d01cd06bba210d" + [[package]] name = "delay_timer" version = "0.11.5" @@ -1316,6 +1347,17 @@ dependencies = [ "serde", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -1433,6 +1475,17 @@ dependencies = [ "xcb", ] +[[package]] +name = "displaydoc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", +] + [[package]] name = "dlib" version = "0.5.2" @@ -1442,6 +1495,15 @@ dependencies = [ "libloading 0.8.3", ] +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", +] + [[package]] name = "downcast-rs" version = "1.2.1" @@ -1534,7 +1596,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1545,9 +1607,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1630,11 +1692,12 @@ dependencies = [ [[package]] name = "fast_image_resize" -version = "3.0.4" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d450fac8a334ad72825596173f0f7767ff04dd6e3d59c49c894c4bc2957e8b" +checksum = "02abb58c39fa9b20678cedabab49e6c4f6ecb7480d7cb5711496b9289184a875" dependencies = [ "cfg-if", + "document-features", "num-traits", "thiserror", ] @@ -1709,6 +1772,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", + "libz-ng-sys", "miniz_oxide", ] @@ -1763,7 +1827,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1887,7 +1951,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -2268,7 +2332,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http 0.2.12", + "http", "indexmap 2.2.6", "slab", "tokio", @@ -2329,30 +2393,6 @@ dependencies = [ "allocator-api2", ] -[[package]] -name = "headers" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" -dependencies = [ - "base64 0.21.7", - "bytes", - "headers-core", - "http 0.2.12", - "httpdate", - "mime", - "sha1", -] - -[[package]] -name = "headers-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" -dependencies = [ - "http 0.2.12", -] - [[package]] name = "heck" version = "0.3.3" @@ -2429,17 +2469,6 @@ dependencies = [ "itoa 1.0.11", ] -[[package]] -name = "http" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" -dependencies = [ - "bytes", - "fnv", - "itoa 1.0.11", -] - [[package]] name = "http-body" version = "0.4.6" @@ -2447,7 +2476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http 0.2.12", + "http", "pin-project-lite", ] @@ -2480,13 +2509,13 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http 0.2.12", + "http", "http-body", "httparse", "httpdate", "itoa 1.0.11", "pin-project-lite", - "socket2 0.4.10", + "socket2 0.5.7", "tokio", "tower-service", "tracing", @@ -2500,7 +2529,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http 0.2.12", + "http", "hyper", "rustls", "tokio", @@ -2718,7 +2747,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -3046,6 +3075,16 @@ dependencies = [ "libc", ] +[[package]] +name = "libz-ng-sys" +version = "1.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6409efc61b12687963e602df8ecf70e8ddacf95bc6576bcf16e3ac6328083c5" +dependencies = [ + "cmake", + "libc", +] + [[package]] name = "line-wrap" version = "0.2.0" @@ -3070,6 +3109,12 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.12" @@ -3119,6 +3164,16 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "lzma-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" +dependencies = [ + "byteorder", + "crc", +] + [[package]] name = "mac" version = "0.1.1" @@ -3240,16 +3295,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime_guess" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" -dependencies = [ - "mime", - "unicase", -] - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3283,24 +3328,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "multer" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2" -dependencies = [ - "bytes", - "encoding_rs", - "futures-util", - "http 0.2.12", - "httparse", - "log", - "memchr", - "mime", - "spin", - "version_check", -] - [[package]] name = "nanoid" version = "0.4.0" @@ -3509,7 +3536,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -3698,7 +3725,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -3883,6 +3910,16 @@ dependencies = [ "sha2 0.10.8", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -3920,7 +3957,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4058,7 +4095,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4105,7 +4142,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4122,9 +4159,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "464db0c665917b13ebb5d453ccdec4add5658ee1adc7affc7677615356a8afaf" dependencies = [ "atomic-waker", "fastrand 2.1.0", @@ -4293,7 +4330,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd" dependencies = [ "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4556,7 +4593,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4615,7 +4652,7 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http 0.2.12", + "http", "http-body", "hyper", "hyper-rustls", @@ -4770,7 +4807,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml 0.8.26", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -5029,7 +5066,7 @@ checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -5052,7 +5089,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -5103,7 +5140,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -5492,9 +5529,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.61" +version = "2.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" +checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" dependencies = [ "proc-macro2", "quote", @@ -5690,7 +5727,7 @@ dependencies = [ "glob", "gtk", "heck 0.5.0", - "http 0.2.12", + "http", "ignore", "indexmap 1.9.3", "infer 0.9.0", @@ -5731,7 +5768,7 @@ dependencies = [ "webkit2gtk", "webview2-com", "windows 0.39.0", - "zip", + "zip 0.6.6", ] [[package]] @@ -5814,7 +5851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd7ffddf36d450791018e63a3ddf54979b9581d9644c584a5fb5611e6b5f20b4" dependencies = [ "gtk", - "http 0.2.12", + "http", "http-range", "rand 0.8.5", "raw-window-handle 0.5.2", @@ -5999,7 +6036,7 @@ checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -6112,7 +6149,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -6135,18 +6172,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-tungstenite" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" -dependencies = [ - "futures-util", - "log", - "tokio", - "tungstenite", -] - [[package]] name = "tokio-util" version = "0.7.11" @@ -6251,7 +6276,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -6278,7 +6302,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -6372,23 +6396,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "tungstenite" -version = "0.21.0" +name = "typed-arena" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http 1.1.0", - "httparse", - "log", - "rand 0.8.5", - "sha1", - "thiserror", - "url", - "utf-8", -] +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "typenum" @@ -6413,15 +6424,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.15" @@ -6578,9 +6580,9 @@ dependencies = [ [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "walkdir" @@ -6601,35 +6603,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "warp" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "headers", - "http 0.2.12", - "hyper", - "log", - "mime", - "mime_guess", - "multer", - "percent-encoding", - "pin-project", - "scoped-tls", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-tungstenite", - "tokio-util", - "tower-service", - "tracing", -] - [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -6663,7 +6636,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", "wasm-bindgen-shared", ] @@ -6697,7 +6670,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6891,6 +6864,14 @@ dependencies = [ "windows-implement 0.39.0", ] +[[package]] +name = "webview2-com-bridge" +version = "0.1.0" +dependencies = [ + "webview2-com", + "windows 0.39.0", +] + [[package]] name = "webview2-com-macros" version = "0.6.0" @@ -7140,7 +7121,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -7151,7 +7132,7 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -7519,9 +7500,9 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "wry" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a04e72739ee84a218e3dbf8625888eadc874285637003ed21ab96a1bbbb538ec" +checksum = "3c689900e022bb67b0d9728fb817bbef2b9da7ebd6c79aade5f0c32fe4c18c73" dependencies = [ "base64 0.13.1", "block", @@ -7534,7 +7515,7 @@ dependencies = [ "glib", "gtk", "html5ever", - "http 0.2.12", + "http", "kuchikiki", "libc", "log", @@ -7631,9 +7612,9 @@ dependencies = [ [[package]] name = "zbus" -version = "4.2.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aea58d1af0aaa8abf87f3d9ade9b8f46bf13727e5f9fb24bc31ee9d94a9b4ad" +checksum = "e5915716dff34abef1351d2b10305b019c8ef33dcf6c72d31a6e227d5d9d7a21" dependencies = [ "async-broadcast", "async-executor", @@ -7669,9 +7650,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.2.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf2b496ec1e2d3c4a7878e351607f7a2bec1e1029b353683dfc28a22999e369" +checksum = "66fceb36d0c1c4a6b98f3ce40f410e64e5a134707ed71892e1b178abc4c695d4" dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", @@ -7708,7 +7689,27 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.63", ] [[package]] @@ -7720,15 +7721,43 @@ dependencies = [ "aes", "byteorder", "bzip2", - "constant_time_eq", + "constant_time_eq 0.1.5", "crc32fast", "crossbeam-utils", "flate2", "hmac", - "pbkdf2", + "pbkdf2 0.11.0", "sha1", "time", - "zstd", + "zstd 0.11.2+zstd.1.5.2", +] + +[[package]] +name = "zip" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c700ea425e148de30c29c580c1f9508b93ca57ad31c9f4e96b83c194c37a7a8f" +dependencies = [ + "aes", + "arbitrary", + "bzip2", + "constant_time_eq 0.3.0", + "crc32fast", + "crossbeam-utils", + "deflate64", + "displaydoc", + "flate2", + "hmac", + "indexmap 2.2.6", + "lzma-rs", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha1", + "thiserror", + "time", + "zeroize", + "zopfli", + "zstd 0.13.1", ] [[package]] @@ -7737,7 +7766,19 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cecf62554c4ff96bce01a7ef123d160c3ffe9180638820f8b4d545c65b221b8c" dependencies = [ - "zip", + "zip 0.6.6", +] + +[[package]] +name = "zopfli" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1f48f3508a3a3f2faee01629564400bc12260f6214a056d06a3aaaa6ef0736" +dependencies = [ + "crc32fast", + "log", + "simd-adler32", + "typed-arena", ] [[package]] @@ -7746,7 +7787,16 @@ version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ - "zstd-safe", + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" +dependencies = [ + "zstd-safe 7.1.0", ] [[package]] @@ -7759,6 +7809,15 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "zstd-safe" +version = "7.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" +dependencies = [ + "zstd-sys", +] + [[package]] name = "zstd-sys" version = "2.0.10+zstd.1.5.6" @@ -7795,9 +7854,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9282c6945d9e27742ba7ad7191325546636295de7b83f6735af73159b32ac7" +checksum = "877ef94e5e82b231d2a309c531f191a8152baba8241a7939ee04bd76b0171308" dependencies = [ "endi", "enumflags2", @@ -7808,9 +7867,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0142549e559746ff09d194dd43d256a554299d286cc56460a082b8ae24652aa1" +checksum = "b7ca98581cc6a8120789d8f1f0997e9053837d6aa5346cbb43454d7121be6e39" dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", diff --git a/clash-nyanpasu/backend/Cargo.toml b/clash-nyanpasu/backend/Cargo.toml index 80d1ca90ef..cc5a38b182 100644 --- a/clash-nyanpasu/backend/Cargo.toml +++ b/clash-nyanpasu/backend/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = ["tauri", "sysproxy-rs"] +members = ["tauri", "sysproxy-rs", "webview2-com-bridge"] [workspace.package] repository = "https://github.com/keiko233/clash-nyanpasu.git" diff --git a/clash-nyanpasu/backend/tauri/Cargo.toml b/clash-nyanpasu/backend/tauri/Cargo.toml index c6bacc89a3..3df307f958 100644 --- a/clash-nyanpasu/backend/tauri/Cargo.toml +++ b/clash-nyanpasu/backend/tauri/Cargo.toml @@ -15,7 +15,6 @@ serde = "1" simd-json = "0.13" [dependencies] -warp = "0.3" which = "6" anyhow = "1.0" dirs = "5.0.1" @@ -52,7 +51,7 @@ window-vibrancy = { version = "0.5.0" } window-shadows = { version = "0.2.2" } wry = { version = "0.24.6" } semver = "1.0" -zip = "0.6.6" +zip = "1.2.3" zip-extensions = "0.6.2" gunzip = { version = "0.1.0", git = "https://github.com/TechHara/gunzip.git" } tempfile = "3.9.0" @@ -84,7 +83,7 @@ single-instance = "0.3.3" tauri-plugin-deep-link = { path = "../tauri-plugin-deep-link", version = "0.1.2" } uuid = "1.7.0" image = "0.25.0" -fast_image_resize = "3.0.4" +fast_image_resize = "4" display-info = "0.5.0" # should be removed after upgrading to tauri v2 dashmap = "5.5.3" clap = { version = "4.5.4", features = ["derive"] } # add supports for commands @@ -99,8 +98,7 @@ windows-sys = { version = "0.52", features = [ "Win32_System_LibraryLoader", "Win32_System_SystemInformation", ] } -webview2-com = "0.19" -windows = "0.39" +webview2-com-bridge = { path = "../webview2-com-bridge" } [target.'cfg(windows)'.dependencies.tauri] version = "1.5.4" diff --git a/clash-nyanpasu/backend/tauri/src/cmds.rs b/clash-nyanpasu/backend/tauri/src/cmds.rs index c5b47be8b2..44114562b3 100644 --- a/clash-nyanpasu/backend/tauri/src/cmds.rs +++ b/clash-nyanpasu/backend/tauri/src/cmds.rs @@ -45,13 +45,13 @@ pub async fn enhance_profiles() -> CmdResult { #[tauri::command] pub async fn import_profile(url: String, option: Option) -> CmdResult { - let item = wrap_err!(PrfItem::from_url(&url, None, None, option).await)?; + let item = wrap_err!(ProfileItem::from_url(&url, None, None, option).await)?; wrap_err!(Config::profiles().data().append_item(item)) } #[tauri::command] -pub async fn create_profile(item: PrfItem, file_data: Option) -> CmdResult { - let item = wrap_err!(PrfItem::from(item, file_data).await)?; +pub async fn create_profile(item: ProfileItem, file_data: Option) -> CmdResult { + let item = wrap_err!(ProfileItem::duplicate(item, file_data).await)?; wrap_err!(Config::profiles().data().append_item(item)) } @@ -98,7 +98,7 @@ pub async fn patch_profiles_config(profiles: IProfiles) -> CmdResult { /// 修改某个profile item的 #[tauri::command] -pub fn patch_profile(index: String, profile: PrfItem) -> CmdResult { +pub fn patch_profile(index: String, profile: ProfileItem) -> CmdResult { wrap_err!(Config::profiles().data().patch_item(index, profile))?; ProfilesJobGuard::global().lock().refresh(); Ok(()) diff --git a/clash-nyanpasu/backend/tauri/src/config/mod.rs b/clash-nyanpasu/backend/tauri/src/config/mod.rs index 09aff15b1d..05b96b7c34 100644 --- a/clash-nyanpasu/backend/tauri/src/config/mod.rs +++ b/clash-nyanpasu/backend/tauri/src/config/mod.rs @@ -2,10 +2,14 @@ mod clash; mod core; mod draft; pub mod nyanpasu; -mod prfitem; -mod profiles; +pub mod profile; mod runtime; - -pub use self::{clash::*, core::*, draft::*, prfitem::*, profiles::*, runtime::*}; +pub use self::{ + clash::*, + core::*, + draft::*, + profile::{item::*, profiles::*}, + runtime::*, +}; pub use self::nyanpasu::IVerge; diff --git a/clash-nyanpasu/backend/tauri/src/config/prfitem.rs b/clash-nyanpasu/backend/tauri/src/config/profile/item.rs similarity index 81% rename from clash-nyanpasu/backend/tauri/src/config/prfitem.rs rename to clash-nyanpasu/backend/tauri/src/config/profile/item.rs index 6262e80cdf..0be104d5ef 100644 --- a/clash-nyanpasu/backend/tauri/src/config/prfitem.rs +++ b/clash-nyanpasu/backend/tauri/src/config/profile/item.rs @@ -1,4 +1,8 @@ -use crate::utils::{dirs, help, tmpl}; +use crate::{ + config::Config, + enhance::ScriptType, + utils::{dirs, help, tmpl}, +}; use anyhow::{bail, Context, Result}; use reqwest::StatusCode; use serde::{Deserialize, Serialize}; @@ -7,16 +11,16 @@ use std::fs; use sysproxy::Sysproxy; use tracing_attributes::instrument; -use super::Config; +use super::item_type::{ProfileItemType, ProfileUid}; -#[derive(Debug, Clone, Deserialize, Serialize, Default)] -pub struct PrfItem { +#[derive(Debug, Clone, Deserialize, Serialize)] +pub struct ProfileItem { pub uid: Option, /// profile item type /// enum value: remote | local | script | merge #[serde(rename = "type")] - pub itype: Option, + pub r#type: Option, /// profile name pub name: Option, @@ -50,6 +54,28 @@ pub struct PrfItem { /// the file data #[serde(skip)] pub file_data: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub chains: Option>, // Save the profile relates profile chains. The String should be the uid of the profile. +} + +impl Default for ProfileItem { + fn default() -> Self { + ProfileItem { + uid: None, + r#type: Some(ProfileItemType::Local), + name: None, + file: None, + desc: None, + url: None, + selected: None, + extra: None, + updated: None, + option: None, + file_data: None, + chains: None, + } + } } #[derive(Default, Debug, Clone, Deserialize, Serialize)] @@ -102,61 +128,58 @@ impl PrfOption { } } -impl PrfItem { +impl ProfileItem { /// From partial item /// must contain `itype` - pub async fn from(item: PrfItem, file_data: Option) -> Result { - if item.itype.is_none() { - bail!("type should not be null"); - } - - match item.itype.unwrap().as_str() { - "remote" => { + pub async fn duplicate(item: ProfileItem, file_data: Option) -> Result { + match item.r#type { + Some(ProfileItemType::Remote) => { if item.url.is_none() { bail!("url should not be null"); } let url = item.url.as_ref().unwrap().as_str(); - let name = item.name; - let desc = item.desc; - PrfItem::from_url(url, name, desc, item.option).await + let name = item.name.unwrap_or("Remote File".into()); + let desc = item.desc.unwrap_or("".into()); + ProfileItem::from_url(url, Some(name), Some(desc), item.option).await } - "local" => { + Some(ProfileItemType::Local) => { let name = item.name.unwrap_or("Local File".into()); let desc = item.desc.unwrap_or("".into()); - PrfItem::from_local(name, desc, file_data) + ProfileItem::from_local(name, desc, file_data) } - "merge" => { + Some(ProfileItemType::Merge) => { let name = item.name.unwrap_or("Merge".into()); let desc = item.desc.unwrap_or("".into()); - PrfItem::from_merge(name, desc) + ProfileItem::from_merge(name, desc) } - "script" => { + Some(ProfileItemType::Script(script_type)) => { let name = item.name.unwrap_or("Script".into()); let desc = item.desc.unwrap_or("".into()); - PrfItem::from_script(name, desc) + ProfileItem::from_script(name, desc, script_type) } - typ => bail!("invalid profile item type \"{typ}\""), + None => bail!("could not find the item type"), } } /// ## Local type /// create a new item from name/desc - pub fn from_local(name: String, desc: String, file_data: Option) -> Result { + pub fn from_local( + name: String, + desc: String, + file_data: Option, + ) -> Result { let uid = help::get_uid("l"); let file = format!("{uid}.yaml"); - Ok(PrfItem { + Ok(ProfileItem { uid: Some(uid), - itype: Some("local".into()), + r#type: Some(ProfileItemType::Local), name: Some(name), desc: Some(desc), file: Some(file), - url: None, - selected: None, - extra: None, - option: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(file_data.unwrap_or(tmpl::ITEM_LOCAL.into())), + ..Default::default() }) } @@ -168,7 +191,7 @@ impl PrfItem { name: Option, desc: Option, option: Option, - ) -> Result { + ) -> Result { let opt_ref = option.as_ref(); let with_proxy = opt_ref.map_or(false, |o| o.with_proxy.unwrap_or(false)); let self_proxy = opt_ref.map_or(false, |o| o.self_proxy.unwrap_or(false)); @@ -307,60 +330,57 @@ impl PrfItem { bail!("profile does not contain `proxies` or `proxy-providers`"); } - Ok(PrfItem { + Ok(ProfileItem { uid: Some(uid), - itype: Some("remote".into()), + r#type: Some(ProfileItemType::Remote), name: Some(name), desc, file: Some(file), url: Some(url.into()), - selected: None, extra, option, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(data.into()), + ..Default::default() }) } /// ## Merge type (enhance) /// create the enhanced item by using `merge` rule - pub fn from_merge(name: String, desc: String) -> Result { + pub fn from_merge(name: String, desc: String) -> Result { let uid = help::get_uid("m"); let file = format!("{uid}.yaml"); - Ok(PrfItem { + Ok(ProfileItem { uid: Some(uid), - itype: Some("merge".into()), + r#type: Some(ProfileItemType::Merge), name: Some(name), desc: Some(desc), file: Some(file), - url: None, - selected: None, - extra: None, - option: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(tmpl::ITEM_MERGE.into()), + ..Default::default() }) } /// ## Script type (enhance) /// create the enhanced item by using javascript quick.js - pub fn from_script(name: String, desc: String) -> Result { + pub fn from_script(name: String, desc: String, script_type: ScriptType) -> Result { let uid = help::get_uid("s"); - let file = format!("{uid}.js"); // js ext + let file = match script_type { + ScriptType::JavaScript => format!("{uid}.js"), // js ext + ScriptType::Lua => format!("{uid}.lua"), // lua ext + }; // js ext - Ok(PrfItem { + Ok(ProfileItem { uid: Some(uid), - itype: Some("script".into()), + r#type: Some(ProfileItemType::Script(script_type)), name: Some(name), desc: Some(desc), file: Some(file), - url: None, - selected: None, - extra: None, - option: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(tmpl::ITEM_SCRIPT.into()), + ..Default::default() }) } diff --git a/clash-nyanpasu/backend/tauri/src/config/profile/item_type.rs b/clash-nyanpasu/backend/tauri/src/config/profile/item_type.rs new file mode 100644 index 0000000000..17ba11fa8f --- /dev/null +++ b/clash-nyanpasu/backend/tauri/src/config/profile/item_type.rs @@ -0,0 +1,17 @@ +use crate::enhance::ScriptType; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +pub enum ProfileItemType { + #[serde(rename = "remote")] + Remote, + #[serde(rename = "local")] + #[default] + Local, + #[serde(rename = "script")] + Script(ScriptType), + #[serde(rename = "merge")] + Merge, +} + +pub type ProfileUid = String; diff --git a/clash-nyanpasu/backend/tauri/src/config/profile/mod.rs b/clash-nyanpasu/backend/tauri/src/config/profile/mod.rs new file mode 100644 index 0000000000..3b9995c5fe --- /dev/null +++ b/clash-nyanpasu/backend/tauri/src/config/profile/mod.rs @@ -0,0 +1,3 @@ +pub mod item; +pub mod item_type; +pub mod profiles; diff --git a/clash-nyanpasu/backend/tauri/src/config/profiles.rs b/clash-nyanpasu/backend/tauri/src/config/profile/profiles.rs similarity index 93% rename from clash-nyanpasu/backend/tauri/src/config/profiles.rs rename to clash-nyanpasu/backend/tauri/src/config/profile/profiles.rs index 8f882fc96c..2f48b3a560 100644 --- a/clash-nyanpasu/backend/tauri/src/config/profiles.rs +++ b/clash-nyanpasu/backend/tauri/src/config/profile/profiles.rs @@ -1,4 +1,4 @@ -use super::prfitem::PrfItem; +use super::{item::ProfileItem, item_type::ProfileUid}; use crate::utils::{dirs, help}; use anyhow::{bail, Context, Result}; use serde::{Deserialize, Serialize}; @@ -9,16 +9,16 @@ use std::{fs, io::Write}; #[derive(Default, Debug, Clone, Deserialize, Serialize)] pub struct IProfiles { /// same as PrfConfig.current - pub current: Option, + pub current: Option, /// same as PrfConfig.chain - pub chain: Option>, + pub chain: Option>, /// record valid fields for clash - pub valid: Option>, + pub valid: Option>, /// profile list - pub items: Option>, + pub items: Option>, } macro_rules! patch { @@ -104,12 +104,12 @@ impl IProfiles { } /// get items ref - pub fn get_items(&self) -> Option<&Vec> { + pub fn get_items(&self) -> Option<&Vec> { self.items.as_ref() } /// find the item by the uid - pub fn get_item(&self, uid: &String) -> Result<&PrfItem> { + pub fn get_item(&self, uid: &String) -> Result<&ProfileItem> { if let Some(items) = self.items.as_ref() { let some_uid = Some(uid.clone()); @@ -126,7 +126,7 @@ impl IProfiles { /// append new item /// if the file_data is some /// then should save the data to file - pub fn append_item(&mut self, mut item: PrfItem) -> Result<()> { + pub fn append_item(&mut self, mut item: ProfileItem) -> Result<()> { if item.uid.is_none() { bail!("the uid should not be null"); } @@ -182,12 +182,12 @@ impl IProfiles { } /// update the item value - pub fn patch_item(&mut self, uid: String, item: PrfItem) -> Result<()> { + pub fn patch_item(&mut self, uid: String, item: ProfileItem) -> Result<()> { let mut items = self.items.take().unwrap_or_default(); for each in items.iter_mut() { if each.uid == Some(uid.clone()) { - patch!(each, item, itype); + patch!(each, item, r#type); patch!(each, item, name); patch!(each, item, desc); patch!(each, item, file); @@ -208,7 +208,7 @@ impl IProfiles { /// be used to update the remote item /// only patch `updated` `extra` `file_data` - pub fn update_item(&mut self, uid: String, mut item: PrfItem) -> Result<()> { + pub fn update_item(&mut self, uid: String, mut item: ProfileItem) -> Result<()> { if self.items.is_none() { self.items = Some(vec![]); } diff --git a/clash-nyanpasu/backend/tauri/src/core/tasks/storage.rs b/clash-nyanpasu/backend/tauri/src/core/tasks/storage.rs index 6655b38eb7..881f15e10f 100644 --- a/clash-nyanpasu/backend/tauri/src/core/tasks/storage.rs +++ b/clash-nyanpasu/backend/tauri/src/core/tasks/storage.rs @@ -75,10 +75,7 @@ impl EventsGuard { /// add_event add a new event to the storage pub fn add_event(&self, event: &TaskEvent) -> Result<()> { - let mut event_ids = match self.get_event_ids(event.task_id)? { - Some(value) => value, - None => Vec::new(), - }; + let mut event_ids = (self.get_event_ids(event.task_id)?).unwrap_or_default(); event_ids.push(event.id); let db = Storage::global().get_instance(); diff --git a/clash-nyanpasu/backend/tauri/src/enhance/chain.rs b/clash-nyanpasu/backend/tauri/src/enhance/chain.rs index 8f03133399..22a4285c42 100644 --- a/clash-nyanpasu/backend/tauri/src/enhance/chain.rs +++ b/clash-nyanpasu/backend/tauri/src/enhance/chain.rs @@ -1,20 +1,105 @@ use crate::{ - config::{nyanpasu::ClashCore, PrfItem}, + config::{nyanpasu::ClashCore, profile::item_type::ProfileItemType, ProfileItem}, utils::{dirs, help}, }; +use serde::{Deserialize, Serialize}; use serde_yaml::Mapping; use std::fs; #[derive(Debug, Clone)] pub struct ChainItem { pub uid: String, - pub data: ChainType, + pub data: ChainTypeWrapper, } #[derive(Debug, Clone)] -pub enum ChainType { +pub enum ChainTypeWrapper { Merge(Mapping), - Script(String), + Script(ScriptWrapper), +} + +impl ChainTypeWrapper { + pub fn new_js(data: Data) -> Self { + Self::Script(ScriptWrapper(ScriptType::JavaScript, data)) + } + + pub fn new_lua(data: Data) -> Self { + Self::Script(ScriptWrapper(ScriptType::Lua, data)) + } + + pub fn new_merge(data: Mapping) -> Self { + Self::Merge(data) + } +} + +impl TryFrom<&ProfileItem> for ChainTypeWrapper { + type Error = anyhow::Error; + + fn try_from(item: &ProfileItem) -> Result { + use anyhow::Context; + let r#type = item.r#type.as_ref().context("type is required")?; + let file = item.file.clone().context("file is required")?; + let path = dirs::app_profiles_dir() + .context("profiles dir not found")? + .join(file); + + if !path.exists() { + anyhow::bail!("file not found: {:?}", path); + } + + match r#type { + ProfileItemType::Script(ScriptType::JavaScript) => Ok(ChainTypeWrapper::Script( + ScriptWrapper(ScriptType::JavaScript, fs::read_to_string(path)?), + )), + ProfileItemType::Script(ScriptType::Lua) => Ok(ChainTypeWrapper::Script( + ScriptWrapper(ScriptType::Lua, fs::read_to_string(path)?), + )), + ProfileItemType::Merge => Ok(ChainTypeWrapper::Merge(help::read_merge_mapping(&path)?)), + _ => anyhow::bail!("unsupported type: {:?}", r#type), + } + } +} + +impl TryFrom<&ProfileItem> for ChainItem { + type Error = anyhow::Error; + + fn try_from(item: &ProfileItem) -> Result { + let uid = item.uid.clone().unwrap_or("".into()); + let data = ChainTypeWrapper::try_from(item)?; + Ok(Self { uid, data }) + } +} + +impl From<&ProfileItem> for Option { + fn from(item: &ProfileItem) -> Self { + let uid = item.uid.clone().unwrap_or("".into()); + let data = ChainTypeWrapper::try_from(item); + match data { + Err(_) => None, + Ok(data) => Some(ChainItem { uid, data }), + } + } +} + +type Data = String; +#[derive(Debug, Clone)] +pub struct ScriptWrapper(pub ScriptType, pub Data); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum ChainType { + #[serde(rename = "merge")] + Merge, + #[serde(rename = "script")] + Script(ScriptType), +} + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +pub enum ScriptType { + #[default] + #[serde(rename = "javascript")] + JavaScript, + #[serde(rename = "lua")] + Lua, } #[derive(Debug, Clone)] @@ -25,41 +110,20 @@ pub enum ChainSupport { All, } -impl From<&PrfItem> for Option { - fn from(item: &PrfItem) -> Self { - let itype = item.itype.as_ref()?.as_str(); - let file = item.file.clone()?; - let uid = item.uid.clone().unwrap_or("".into()); - let path = dirs::app_profiles_dir().ok()?.join(file); - - if !path.exists() { - return None; - } - - match itype { - "script" => Some(ChainItem { - uid, - data: ChainType::Script(fs::read_to_string(path).ok()?), - }), - "merge" => Some(ChainItem { - uid, - data: ChainType::Merge(help::read_merge_mapping(&path).ok()?), - }), - _ => None, - } - } -} - impl ChainItem { /// 内建支持一些脚本 pub fn builtin() -> Vec<(ChainSupport, ChainItem)> { // meta 的一些处理 - let meta_guard = - ChainItem::to_script("verge_meta_guard", include_str!("./builtin/meta_guard.js")); + let meta_guard = ChainItem::to_script( + "verge_meta_guard", + ChainTypeWrapper::new_js(include_str!("./builtin/meta_guard.js").to_string()), + ); // meta 1.13.2 alpn string 转 数组 - let hy_alpn = - ChainItem::to_script("verge_hy_alpn", include_str!("./builtin/meta_hy_alpn.js")); + let hy_alpn = ChainItem::to_script( + "verge_hy_alpn", + ChainTypeWrapper::new_js(include_str!("./builtin/meta_hy_alpn.js").to_string()), + ); vec![ (ChainSupport::Mihomo, hy_alpn), @@ -67,10 +131,10 @@ impl ChainItem { ] } - pub fn to_script, D: Into>(uid: U, data: D) -> Self { + pub fn to_script, D: Into>(uid: U, data: D) -> Self { Self { uid: uid.into(), - data: ChainType::Script(data.into()), + data: data.into(), } } } diff --git a/clash-nyanpasu/backend/tauri/src/enhance/mod.rs b/clash-nyanpasu/backend/tauri/src/enhance/mod.rs index a92446bfb7..db11de6c71 100644 --- a/clash-nyanpasu/backend/tauri/src/enhance/mod.rs +++ b/clash-nyanpasu/backend/tauri/src/enhance/mod.rs @@ -3,10 +3,10 @@ mod field; mod merge; mod script; mod tun; +mod utils; -use self::field::*; - -use self::{chain::*, merge::*, script::*, tun::*}; +pub use self::chain::ScriptType; +use self::{chain::*, field::*, merge::*, script::*, tun::*}; use crate::config::Config; use serde_yaml::Mapping; use std::collections::{HashMap, HashSet}; @@ -31,24 +31,29 @@ pub fn enhance() -> (Mapping, Vec, HashMap) { }; // 从profiles里拿东西 - let (mut config, chain, valid) = { + let (mut config, chains, valid) = { let profiles = Config::profiles(); let profiles = profiles.latest(); - let current = profiles.current_mapping().unwrap_or_default(); + let current_profile = profiles.get_current().unwrap_or_default(); + let current_profile = profiles.get_item(¤t_profile).unwrap(); + let mut profile_spec_chains = match ¤t_profile.chains { + Some(chains) => utils::convert_uids_to_scripts(&profiles, chains), + None => vec![], + }; + + let current_mapping = profiles.current_mapping().unwrap_or_default(); let chain = match profiles.chain.as_ref() { - Some(chain) => chain - .iter() - .filter_map(|uid| profiles.get_item(uid).ok()) - .filter_map(>::from) - .collect::>(), + Some(chain) => utils::convert_uids_to_scripts(&profiles, chain), None => vec![], }; let valid = profiles.valid.clone().unwrap_or_default(); - (current, chain, valid) + profile_spec_chains.extend(chain); // Profile 里的 Chain -> 全局 Chain + + (current_mapping, profile_spec_chains, valid) }; let mut result_map = HashMap::new(); // 保存脚本日志 @@ -58,13 +63,13 @@ pub fn enhance() -> (Mapping, Vec, HashMap) { config = use_filter(config, &valid, enable_filter); // 处理用户的profile - chain.into_iter().for_each(|item| match item.data { - ChainType::Merge(merge) => { + chains.into_iter().for_each(|item| match item.data { + ChainTypeWrapper::Merge(merge) => { exists_keys.extend(use_keys(&merge)); config = use_merge(merge, config.to_owned()); config = use_filter(config.to_owned(), &valid, enable_filter); } - ChainType::Script(script) => { + ChainTypeWrapper::Script(script) => { let mut logs = vec![]; match use_script(script, config.to_owned()) { @@ -100,7 +105,7 @@ pub fn enhance() -> (Mapping, Vec, HashMap) { .for_each(|item| { log::debug!(target: "app", "run builtin script {}", item.uid); - if let ChainType::Script(script) = item.data { + if let ChainTypeWrapper::Script(script) = item.data { match use_script(script, config.to_owned()) { Ok((res_config, _)) => { config = use_filter(res_config, &clash_fields, enable_filter); diff --git a/clash-nyanpasu/backend/tauri/src/enhance/script.rs b/clash-nyanpasu/backend/tauri/src/enhance/script.rs index 30a922f676..5785e3d8ae 100644 --- a/clash-nyanpasu/backend/tauri/src/enhance/script.rs +++ b/clash-nyanpasu/backend/tauri/src/enhance/script.rs @@ -1,8 +1,8 @@ -use super::use_lowercase; +use super::{use_lowercase, ScriptType, ScriptWrapper}; use anyhow::Result; use serde_yaml::Mapping; -pub fn use_script(script: String, config: Mapping) -> Result<(Mapping, Vec<(String, String)>)> { +pub fn process_js(script: String, config: Mapping) -> Result<(Mapping, Vec<(String, String)>)> { use rquickjs::{function::Func, Context, Runtime}; use std::sync::{Arc, Mutex}; @@ -60,6 +60,16 @@ pub fn use_script(script: String, config: Mapping) -> Result<(Mapping, Vec<(Stri } } +pub fn use_script( + script: ScriptWrapper, + config: Mapping, +) -> Result<(Mapping, Vec<(String, String)>)> { + match script.0 { + ScriptType::JavaScript => process_js(script.1, config), + _ => unimplemented!("unsupported script type"), + } +} + #[test] fn test_script() { let script = r#" @@ -84,7 +94,7 @@ fn test_script() { "#; let config = serde_yaml::from_str(config).unwrap(); - let (config, results) = use_script(script.into(), config).unwrap(); + let (config, results) = process_js(script.into(), config).unwrap(); let config_str = serde_yaml::to_string(&config).unwrap(); diff --git a/clash-nyanpasu/backend/tauri/src/enhance/utils.rs b/clash-nyanpasu/backend/tauri/src/enhance/utils.rs new file mode 100644 index 0000000000..fddc2111ed --- /dev/null +++ b/clash-nyanpasu/backend/tauri/src/enhance/utils.rs @@ -0,0 +1,10 @@ +use crate::config::profile::{item_type::ProfileUid, profiles::IProfiles}; + +use super::ChainItem; + +pub fn convert_uids_to_scripts(profiles: &IProfiles, uids: &[ProfileUid]) -> Vec { + uids.iter() + .filter_map(|uid| profiles.get_item(uid).ok()) + .filter_map(>::from) + .collect::>() +} diff --git a/clash-nyanpasu/backend/tauri/src/feat.rs b/clash-nyanpasu/backend/tauri/src/feat.rs index c2c788c7e0..d2000550ad 100644 --- a/clash-nyanpasu/backend/tauri/src/feat.rs +++ b/clash-nyanpasu/backend/tauri/src/feat.rs @@ -348,7 +348,9 @@ pub async fn update_profile(uid: String, option: Option) -> Result<() let profiles = Config::profiles(); let profiles = profiles.latest(); let item = profiles.get_item(&uid)?; - let is_remote = item.itype.as_ref().map_or(false, |s| s == "remote"); + let is_remote = item.r#type.as_ref().map_or(false, |s| { + matches!(s, profile::item_type::ProfileItemType::Remote) + }); if !is_remote { None // 直接更新 @@ -362,7 +364,7 @@ pub async fn update_profile(uid: String, option: Option) -> Result<() let should_update = match url_opt { Some((url, opt)) => { let merged_opt = PrfOption::merge(opt, option); - let item = PrfItem::from_url(&url, None, None, merged_opt).await?; + let item = ProfileItem::from_url(&url, None, None, merged_opt).await?; let profiles = Config::profiles(); let mut profiles = profiles.latest(); diff --git a/clash-nyanpasu/backend/tauri/src/utils/candy.rs b/clash-nyanpasu/backend/tauri/src/utils/candy.rs index e6d5e2de26..937025e2ef 100644 --- a/clash-nyanpasu/backend/tauri/src/utils/candy.rs +++ b/clash-nyanpasu/backend/tauri/src/utils/candy.rs @@ -3,12 +3,12 @@ use anyhow::Result; use chrono::Local; use glob::glob; use std::path::Path; -use zip::ZipWriter; +use zip::{write::SimpleFileOptions, ZipWriter}; pub fn collect_logs(target_path: &Path) -> Result<()> { let logs_dir = app_logs_dir()?; let now = Local::now().format("%Y-%m-%d"); - let globstr = format!("{}/{}-*.log", logs_dir.to_str().unwrap(), now); + let globstr = format!("{}/*.{}.app.log", logs_dir.to_str().unwrap(), now); let mut paths = Vec::new(); for entry in glob(&globstr)? { match entry { @@ -20,7 +20,7 @@ pub fn collect_logs(target_path: &Path) -> Result<()> { let mut zip = ZipWriter::new(file); for path in paths { let file_name = path.file_name().unwrap().to_str().unwrap(); - zip.start_file(file_name, Default::default())?; + zip.start_file(file_name, SimpleFileOptions::default())?; let mut file = std::fs::File::open(path)?; std::io::copy(&mut file, &mut zip)?; } diff --git a/clash-nyanpasu/backend/tauri/src/utils/help.rs b/clash-nyanpasu/backend/tauri/src/utils/help.rs index 0d4c317693..78c98eb94e 100644 --- a/clash-nyanpasu/backend/tauri/src/utils/help.rs +++ b/clash-nyanpasu/backend/tauri/src/utils/help.rs @@ -1,7 +1,10 @@ use crate::config::nyanpasu::ExternalControllerPortStrategy; use anyhow::{anyhow, bail, Context, Result}; use display_info::DisplayInfo; -use fast_image_resize as fr; +use fast_image_resize::{ + images::{Image, ImageRef}, + FilterType, PixelType, ResizeAlg, ResizeOptions, Resizer, +}; use image::{codecs::png::PngEncoder, io::Reader as ImageReader, ColorType, ImageEncoder}; use nanoid::nanoid; use serde::{de::DeserializeOwned, Serialize}; @@ -9,7 +12,6 @@ use serde_yaml::{Mapping, Value}; use std::{ fs, io::{BufWriter, Cursor}, - num::NonZeroU32, path::PathBuf, str::FromStr, }; @@ -155,47 +157,41 @@ pub fn resize_tray_image(img: &[u8], scale_factor: f64) -> Result> { let img = ImageReader::new(Cursor::new(img)) .with_guessed_format()? .decode()?; - let width = NonZeroU32::new(img.width()).unwrap_or(NonZeroU32::new(16).unwrap()); - let height = NonZeroU32::new(img.height()).unwrap_or(NonZeroU32::new(16).unwrap()); - let mut src_image = fr::Image::from_vec_u8( - width, - height, - img.to_rgba8().into_raw(), - fr::PixelType::U8x4, - ) - .context("failed to parse image")?; - // Multiple RGB channels of source image by alpha channel - let alpha_mul_div = fr::MulDiv::default(); - alpha_mul_div - .multiply_alpha_inplace(&mut src_image.view_mut()) - .context("failed to multiply alpha")?; + let width = img.width(); + let height = img.height(); + let src_pixels = img.into_rgba8().into_raw(); + let src_image = ImageRef::new(width, height, &src_pixels, PixelType::U8x4) + .context("failed to parse image")?; + // Create container for data of destination image let size = (32_f64 * scale_factor).round() as u32; // 32px is the base tray size as the dpi is 96 - let dst_width = NonZeroU32::new(size).unwrap(); - let dst_height = NonZeroU32::new(size).unwrap(); - let mut dst_image = fr::Image::new(dst_width, dst_height, src_image.pixel_type()); - - // Get mutable view of destination image data - let mut dst_view = dst_image.view_mut(); + let dst_width = size; + let dst_height = size; + let mut dst_image = Image::new(dst_width, dst_height, src_image.pixel_type()); // Create Resizer instance and resize source image // into buffer of destination image - let mut resizer = fr::Resizer::new(fr::ResizeAlg::Convolution(fr::FilterType::Lanczos3)); + let mut resizer = Resizer::new(); + let resizer_options = ResizeOptions { + algorithm: ResizeAlg::Convolution(FilterType::Lanczos3), + ..Default::default() + }; resizer - .resize(&src_image.view(), &mut dst_view) + .resize(&src_image, &mut dst_image, &resizer_options) .context("failed to resize image")?; - // Divide RGB channels of destination image by alpha - alpha_mul_div.divide_alpha_inplace(&mut dst_view).unwrap(); + + // Extract raw pixel data from the destination image + let dst_image_data = dst_image.buffer().to_vec(); // Write destination image as PNG-file let mut result_buf = BufWriter::new(Vec::new()); PngEncoder::new(&mut result_buf).write_image( - dst_image.buffer(), - dst_width.get(), - dst_height.get(), + &dst_image_data, + dst_width, + dst_height, ColorType::Rgba8.into(), )?; - Ok(result_buf.buffer().to_vec()) + Ok(result_buf.into_inner()?) } #[instrument] diff --git a/clash-nyanpasu/backend/tauri/src/utils/resolve.rs b/clash-nyanpasu/backend/tauri/src/utils/resolve.rs index 33fa7872ae..559e5684ed 100644 --- a/clash-nyanpasu/backend/tauri/src/utils/resolve.rs +++ b/clash-nyanpasu/backend/tauri/src/utils/resolve.rs @@ -17,11 +17,6 @@ use serde_yaml::Mapping; use std::net::TcpListener; use tauri::{api::process::Command, App, AppHandle, Manager, PhysicalPosition, PhysicalSize}; -#[cfg(target_os = "windows")] -use webview2_com::Microsoft::Web::WebView2::Win32::ICoreWebView2Settings6; -#[cfg(target_os = "windows")] -use windows::core::Interface; - pub fn find_unused_port() -> Result { match TcpListener::bind("127.0.0.1:0") { Ok(listener) => { @@ -270,21 +265,27 @@ pub fn create_window(app_handle: &AppHandle) { crate::log_err!(builder.decorations(true).transparent(false).build()); #[cfg(target_os = "windows")] - app_handle - .get_window("main") - .unwrap() - .with_webview(|webview| unsafe { - let settings = webview - .controller() - .CoreWebView2() - .unwrap() - .Settings() - .unwrap(); - let settings: ICoreWebView2Settings6 = - settings.cast::().unwrap(); - settings.SetIsSwipeNavigationEnabled(false).unwrap(); - }) - .unwrap(); + { + use webview2_com_bridge::{ + webview2_com::Microsoft::Web::WebView2::Win32::ICoreWebView2Settings6, + windows::core::Interface, + }; + app_handle + .get_window("main") + .unwrap() + .with_webview(|webview| unsafe { + let settings = webview + .controller() + .CoreWebView2() + .unwrap() + .Settings() + .unwrap(); + let settings: ICoreWebView2Settings6 = + settings.cast::().unwrap(); + settings.SetIsSwipeNavigationEnabled(false).unwrap(); + }) + .unwrap(); + } } /// close main window diff --git a/clash-nyanpasu/backend/webview2-com-bridge/Cargo.toml b/clash-nyanpasu/backend/webview2-com-bridge/Cargo.toml new file mode 100644 index 0000000000..57323a5605 --- /dev/null +++ b/clash-nyanpasu/backend/webview2-com-bridge/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "webview2-com-bridge" +version = "0.1.0" +repository.workspace = true +edition.workspace = true +license.workspace = true +authors.workspace = true + +[dependencies] +webview2-com = "0.19" +windows = "0.39" diff --git a/clash-nyanpasu/backend/webview2-com-bridge/src/lib.rs b/clash-nyanpasu/backend/webview2-com-bridge/src/lib.rs new file mode 100644 index 0000000000..c0ff402805 --- /dev/null +++ b/clash-nyanpasu/backend/webview2-com-bridge/src/lib.rs @@ -0,0 +1,2 @@ +pub use webview2_com; +pub use windows; diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 40ca474ef3..a8d6692b91 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -26,7 +26,7 @@ "ahooks": "3.7.11", "axios": "1.6.8", "dayjs": "1.11.11", - "framer-motion": "11.1.9", + "framer-motion": "11.2.0", "i18next": "23.11.4", "jotai": "2.8.0", "monaco-editor": "0.48.0", @@ -52,8 +52,8 @@ "@types/react": "18.3.2", "@types/react-dom": "18.3.0", "@types/react-transition-group": "4.4.10", - "@typescript-eslint/eslint-plugin": "7.8.0", - "@typescript-eslint/parser": "7.8.0", + "@typescript-eslint/eslint-plugin": "7.9.0", + "@typescript-eslint/parser": "7.9.0", "@vitejs/plugin-react": "4.2.1", "sass": "1.77.1", "shiki": "1.5.1", diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/layout/animated-logo.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/layout/animated-logo.tsx index b1e0416d3f..530d715706 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/layout/animated-logo.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/layout/animated-logo.tsx @@ -12,7 +12,7 @@ export default function AnimatedLogo() { const constraintsRef = useRef(null); return ( -
    +
    = 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} - '@tauri-apps/cli-darwin-arm64@1.5.13': - resolution: {integrity: sha512-wXsBp6FIsQ1yoAEJ8dao7BkVdOp5xlfgGyAbJVCFKU3LTUqKw4A+ayxO6CV2lFfSaOdzdU86z+eJsl38nzmoSg==} + '@tauri-apps/cli-darwin-arm64@1.5.14': + resolution: {integrity: sha512-lxoSOp3KKSqzHJa7iT32dukPGMlfsTuja1xXSgwR8o/fqzpYJY7FY/3ZxesP8HR66FcK+vtqa//HNqeOQ0mHkA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tauri-apps/cli-darwin-x64@1.5.13': - resolution: {integrity: sha512-1I/8Q8ogr1P1iQhjsXw0DSPjb8r2ggx2h52X1NXODhBknWIG7Y3rPDnRSXg1qoauRi19728BmP/CSW6MugidwQ==} + '@tauri-apps/cli-darwin-x64@1.5.14': + resolution: {integrity: sha512-EXSwN1n5spfG8FoXuyc90ACtmDJXzaZ1gxyENaq9xEpQoo7j/Q1vb6qXxmr6azKr8zmqY4h08ZFbv3exh93xJg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tauri-apps/cli-linux-arm-gnueabihf@1.5.13': - resolution: {integrity: sha512-IHtE8YGZ4KV0fX8w6a8lftFGLsDCr/kbikKIgvUQdypImToCr4MKbyKQ6guwSGPlCExtHpD7+LOtFoRocLCtBw==} + '@tauri-apps/cli-linux-arm-gnueabihf@1.5.14': + resolution: {integrity: sha512-Yb8BH/KYR7Tl+de40sZPfrqbhcU3Jlu+UPIrnXt05sjn48xqIps74Xjz8zzVp0TuHxUp8FmIGtCVhQgsbrsvvg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tauri-apps/cli-linux-arm64-gnu@1.5.13': - resolution: {integrity: sha512-U01Jvr0YoBwqRJ1lf+lzFRrNwhfdP4HF/3p1ahFzSoQ6CuYk0pL1jYmsYA7PigKmmovu8ctNq9E9quSdquOIeQ==} + '@tauri-apps/cli-linux-arm64-gnu@1.5.14': + resolution: {integrity: sha512-QrKHP4gRaHiup478rPBZ+BmNd88yze9jMmheoNy9mN1K/aECRmTHO+tWhsxv5moFHZzRhO0QDWxxvTtiaPXaGg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] - '@tauri-apps/cli-linux-arm64-musl@1.5.13': - resolution: {integrity: sha512-+UVxc5yQavLWnsFCDYXp4HxDxhyuDt+V2IOdy+ClO/xJ8ii5vFz1QYQBm9s1ofXWPXn5BYyBVNhGuPstAYcO9A==} + '@tauri-apps/cli-linux-arm64-musl@1.5.14': + resolution: {integrity: sha512-Hb1C1VMxmUcyGjW/K/INKF87zzzgLEVRmWZZnQd7M1P4uue4xPyIwUELSdX12Z2jREPgmLW4AXPD0m6wsNu7iw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] - '@tauri-apps/cli-linux-x64-gnu@1.5.13': - resolution: {integrity: sha512-QDIkbpMprEe08V9Yn+XMbQa2ErY9Cj6TlvcSGLzida4gAVHwf42AMxBBFSvjpdMyB7D5lJMsDSq5xhEeRPs/HQ==} + '@tauri-apps/cli-linux-x64-gnu@1.5.14': + resolution: {integrity: sha512-kD9v/UwPDuhIgq2TJj/s2/7rqk+vmExVV6xHPKI8vVbIvlNAOZqmx3fpxjej1241vhJ/piGd/m6q6YMWGsL0oQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] - '@tauri-apps/cli-linux-x64-musl@1.5.13': - resolution: {integrity: sha512-7JHNrF0b8Y7R693SG8JWhWmt/3d6vhyswEu26NUxQG2IYQlVY51sDPkub7S1cynh4++7CMV5sNK0EUr6hLrR9A==} + '@tauri-apps/cli-linux-x64-musl@1.5.14': + resolution: {integrity: sha512-204Drgg9Zx0+THKndqASz4+iPCwqA3gQVF9C0CDIArNXrjPyJjVvW8VP5CHiZYaTNWxlz/ltyxluM6UFWbXNFw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] - '@tauri-apps/cli-win32-arm64-msvc@1.5.13': - resolution: {integrity: sha512-p+j3IcrPnQ7/iaMlrdDBGT2SlB6MzjTbSdLo1jNE3DAeO98jByIJZyNme07Fv87280+2LXVB5XtusCsgTwIHCw==} + '@tauri-apps/cli-win32-arm64-msvc@1.5.14': + resolution: {integrity: sha512-sqPSni2MnWNCm+8YZnLdWCclxfSHaYqKuPFSz8q7Tn1G1m/cA9gyPoC1G0esHftY7bu/ZM5lB4kM3I4U0KlLiA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tauri-apps/cli-win32-ia32-msvc@1.5.13': - resolution: {integrity: sha512-ypxRAGd8QYOCaBUmqzvHvrzj64OgfhzZQS/TSQlKWeJ9X1oQzQDNUrifsdaZZvZBf9yqSRf8lMYoN5qFjrHZfA==} + '@tauri-apps/cli-win32-ia32-msvc@1.5.14': + resolution: {integrity: sha512-8xN8W0zTs8oFsQmvYLxHFeqhzVI7oTaPK1xQMc5gbpFP45jN41c21aCXfjnvzT+h90EfCHUF9EWj2HTEJSb7Iw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@tauri-apps/cli-win32-x64-msvc@1.5.13': - resolution: {integrity: sha512-B3YDAyZb8f6zKqZj/ydL/cQVkT/KxNyumXsX+UL4oM5E2DM89OD5BxMgqGr7zwmJSaRNRHkXRK+BMluvZjHG9w==} + '@tauri-apps/cli-win32-x64-msvc@1.5.14': + resolution: {integrity: sha512-U0slee5tNM2PYECBpPHavLSwkT3szGMZ+qhcikQQbDan84bQdLn/kHWjyXOgLJs4KSve4+KxcrN+AVqj0VyHnw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tauri-apps/cli@1.5.13': - resolution: {integrity: sha512-wULOJNb/Dxc/E+Z0+7MkaqKYAmdjGJEFpZ5xcNhvC3BVX1O6MbhHjXGfwfu4mgIGhVqY1KJaKoXx7EDZAlk7Pw==} + '@tauri-apps/cli@1.5.14': + resolution: {integrity: sha512-JOSMKymlg116UdEXSj69eg5p1OtZnQkUE0qIGbtNDO1sk3X/KgBN6+oHBW0BzPStp/W0AjBgrMWCqjHPwEpOug==} engines: {node: '>= 10'} + hasBin: true '@telegraf/types@7.1.0': resolution: {integrity: sha512-kGevOIbpMcIlCDeorKGpwZmdH7kHbqlk/Yj6dEpJMKEQw5lk0KVQY0OLXaCswy8GqlIVLd5625OB+rAntP9xVw==} @@ -1573,9 +1570,6 @@ packages: '@types/js-cookie@3.0.6': resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==} - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -1603,8 +1597,8 @@ packages: '@types/node@20.12.10': resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} - '@types/node@20.12.11': - resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} + '@types/node@20.12.12': + resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1624,9 +1618,6 @@ packages: '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} @@ -1636,8 +1627,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@7.8.0': - resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} + '@typescript-eslint/eslint-plugin@7.9.0': + resolution: {integrity: sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1647,8 +1638,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.8.0': - resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} + '@typescript-eslint/parser@7.9.0': + resolution: {integrity: sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1657,12 +1648,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.8.0': - resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} + '@typescript-eslint/scope-manager@7.9.0': + resolution: {integrity: sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.8.0': - resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} + '@typescript-eslint/type-utils@7.9.0': + resolution: {integrity: sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1671,12 +1662,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.8.0': - resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} + '@typescript-eslint/types@7.9.0': + resolution: {integrity: sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.8.0': - resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} + '@typescript-eslint/typescript-estree@7.9.0': + resolution: {integrity: sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1684,14 +1675,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.8.0': - resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} + '@typescript-eslint/utils@7.9.0': + resolution: {integrity: sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.8.0': - resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} + '@typescript-eslint/visitor-keys@7.9.0': + resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==} engines: {node: ^18.18.0 || >=20.0.0} '@ungap/structured-clone@1.2.0': @@ -2635,8 +2626,8 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.1.9: - resolution: {integrity: sha512-flECDIPV4QDNcOrDafVFiIazp8X01HFpzc01eDKJsdNH/wrATcYydJSH9JbPWMS8UD5lZlw+J1sK8LG2kICgqw==} + framer-motion@11.2.0: + resolution: {integrity: sha512-LRfLVPEwtO9IXJCAsWvtj3XZxrdZDcTxNNkZEq30aQ8p7/wimfUkDy67TDWdtzPiyKDkqOHDhaQC6XVrQ4Fh7A==} peerDependencies: '@emotion/is-prop-valid': '*' react: npm:react@beta @@ -3746,8 +3737,8 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -4902,7 +4893,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/compat-data@7.24.4': {} @@ -4994,7 +4985,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/parser@7.24.5': dependencies: @@ -5041,11 +5032,11 @@ snapshots: '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 - '@commitlint/cli@19.3.0(@types/node@20.12.11)(typescript@5.4.5)': + '@commitlint/cli@19.3.0(@types/node@20.12.12)(typescript@5.4.5)': dependencies: '@commitlint/format': 19.3.0 '@commitlint/lint': 19.2.2 - '@commitlint/load': 19.2.0(@types/node@20.12.11)(typescript@5.4.5) + '@commitlint/load': 19.2.0(@types/node@20.12.12)(typescript@5.4.5) '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 execa: 8.0.1 @@ -5092,7 +5083,7 @@ snapshots: '@commitlint/rules': 19.0.3 '@commitlint/types': 19.0.3 - '@commitlint/load@19.2.0(@types/node@20.12.11)(typescript@5.4.5)': + '@commitlint/load@19.2.0(@types/node@20.12.12)(typescript@5.4.5)': dependencies: '@commitlint/config-validator': 19.0.3 '@commitlint/execute-rule': 19.0.0 @@ -5100,7 +5091,7 @@ snapshots: '@commitlint/types': 19.0.3 chalk: 5.3.0 cosmiconfig: 9.0.0(typescript@5.4.5) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.11)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.12)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -5467,13 +5458,13 @@ snapshots: '@floating-ui/utils@0.2.2': {} - '@generouted/react-router@1.19.4(react-router-dom@6.23.1(react-dom@19.0.0-beta-04b058868c-20240508(react@19.0.0-beta-04b058868c-20240508))(react@19.0.0-beta-04b058868c-20240508))(react@19.0.0-beta-04b058868c-20240508)(vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0))': + '@generouted/react-router@1.19.4(react-router-dom@6.23.1(react-dom@19.0.0-beta-04b058868c-20240508(react@19.0.0-beta-04b058868c-20240508))(react@19.0.0-beta-04b058868c-20240508))(react@19.0.0-beta-04b058868c-20240508)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0))': dependencies: fast-glob: 3.3.2 - generouted: 1.19.4(vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)) + generouted: 1.19.4(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)) react: 19.0.0-beta-04b058868c-20240508 react-router-dom: 6.23.1(react-dom@19.0.0-beta-04b058868c-20240508(react@19.0.0-beta-04b058868c-20240508))(react@19.0.0-beta-04b058868c-20240508) - vite: 5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) + vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) '@humanwhocodes/config-array@0.11.14': dependencies: @@ -5895,48 +5886,48 @@ snapshots: '@tauri-apps/api@1.5.5': {} - '@tauri-apps/cli-darwin-arm64@1.5.13': + '@tauri-apps/cli-darwin-arm64@1.5.14': optional: true - '@tauri-apps/cli-darwin-x64@1.5.13': + '@tauri-apps/cli-darwin-x64@1.5.14': optional: true - '@tauri-apps/cli-linux-arm-gnueabihf@1.5.13': + '@tauri-apps/cli-linux-arm-gnueabihf@1.5.14': optional: true - '@tauri-apps/cli-linux-arm64-gnu@1.5.13': + '@tauri-apps/cli-linux-arm64-gnu@1.5.14': optional: true - '@tauri-apps/cli-linux-arm64-musl@1.5.13': + '@tauri-apps/cli-linux-arm64-musl@1.5.14': optional: true - '@tauri-apps/cli-linux-x64-gnu@1.5.13': + '@tauri-apps/cli-linux-x64-gnu@1.5.14': optional: true - '@tauri-apps/cli-linux-x64-musl@1.5.13': + '@tauri-apps/cli-linux-x64-musl@1.5.14': optional: true - '@tauri-apps/cli-win32-arm64-msvc@1.5.13': + '@tauri-apps/cli-win32-arm64-msvc@1.5.14': optional: true - '@tauri-apps/cli-win32-ia32-msvc@1.5.13': + '@tauri-apps/cli-win32-ia32-msvc@1.5.14': optional: true - '@tauri-apps/cli-win32-x64-msvc@1.5.13': + '@tauri-apps/cli-win32-x64-msvc@1.5.14': optional: true - '@tauri-apps/cli@1.5.13': + '@tauri-apps/cli@1.5.14': optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 1.5.13 - '@tauri-apps/cli-darwin-x64': 1.5.13 - '@tauri-apps/cli-linux-arm-gnueabihf': 1.5.13 - '@tauri-apps/cli-linux-arm64-gnu': 1.5.13 - '@tauri-apps/cli-linux-arm64-musl': 1.5.13 - '@tauri-apps/cli-linux-x64-gnu': 1.5.13 - '@tauri-apps/cli-linux-x64-musl': 1.5.13 - '@tauri-apps/cli-win32-arm64-msvc': 1.5.13 - '@tauri-apps/cli-win32-ia32-msvc': 1.5.13 - '@tauri-apps/cli-win32-x64-msvc': 1.5.13 + '@tauri-apps/cli-darwin-arm64': 1.5.14 + '@tauri-apps/cli-darwin-x64': 1.5.14 + '@tauri-apps/cli-linux-arm-gnueabihf': 1.5.14 + '@tauri-apps/cli-linux-arm64-gnu': 1.5.14 + '@tauri-apps/cli-linux-arm64-musl': 1.5.14 + '@tauri-apps/cli-linux-x64-gnu': 1.5.14 + '@tauri-apps/cli-linux-x64-musl': 1.5.14 + '@tauri-apps/cli-win32-arm64-msvc': 1.5.14 + '@tauri-apps/cli-win32-ia32-msvc': 1.5.14 + '@tauri-apps/cli-win32-x64-msvc': 1.5.14 '@telegraf/types@7.1.0': {} @@ -5969,12 +5960,12 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/responselike': 1.0.3 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/debug@4.1.12': dependencies: @@ -5989,7 +5980,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/hast@3.0.4': dependencies: @@ -5999,17 +5990,15 @@ snapshots: '@types/js-cookie@3.0.6': {} - '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} '@types/jsonfile@6.1.4': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/keyv@3.1.4': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 '@types/lodash-es@4.17.12': dependencies: @@ -6029,7 +6018,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.12.11': + '@types/node@20.12.12': dependencies: undici-types: 5.26.5 @@ -6051,9 +6040,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.12.11 - - '@types/semver@7.5.8': {} + '@types/node': 20.12.12 '@types/unist@2.0.10': {} @@ -6061,35 +6048,33 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 optional: true - '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.8.0 - debug: 4.3.4 + '@typescript-eslint/parser': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/type-utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.9.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.1 ts-api-utils: 1.3.0(typescript@5.4.5) optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/parser@7.9.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.9.0 debug: 4.3.4 eslint: 8.57.0 optionalDependencies: @@ -6097,15 +6082,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.8.0': + '@typescript-eslint/scope-manager@7.9.0': dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/visitor-keys': 7.9.0 - '@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@7.9.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) @@ -6114,12 +6099,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.8.0': {} + '@typescript-eslint/types@7.9.0': {} - '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/visitor-keys': 7.9.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6131,35 +6116,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/utils@7.9.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.8.0 - '@typescript-eslint/types': 7.8.0 - '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.9.0 + '@typescript-eslint/types': 7.9.0 + '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) eslint: 8.57.0 - semver: 7.6.1 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.8.0': + '@typescript-eslint/visitor-keys@7.9.0': dependencies: - '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/types': 7.9.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.2.1(vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0))': + '@vitejs/plugin-react@4.2.1(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0))': dependencies: '@babel/core': 7.24.5 '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) + vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) transitivePeerDependencies: - supports-color @@ -6332,7 +6314,7 @@ snapshots: caniuse-lite: 1.0.30001616 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-value-parser: 4.2.0 @@ -6581,9 +6563,9 @@ snapshots: dependencies: is-what: 3.14.1 - cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.11)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5): + cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.12)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5): dependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.0 typescript: 5.4.5 @@ -7293,7 +7275,7 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.1.9(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-beta-04b058868c-20240508(react@19.0.0-beta-04b058868c-20240508))(react@19.0.0-beta-04b058868c-20240508): + framer-motion@11.2.0(@emotion/is-prop-valid@1.2.2)(react-dom@19.0.0-beta-04b058868c-20240508(react@19.0.0-beta-04b058868c-20240508))(react@19.0.0-beta-04b058868c-20240508): dependencies: tslib: 2.6.2 optionalDependencies: @@ -7329,9 +7311,9 @@ snapshots: functions-have-names@1.2.3: {} - generouted@1.19.4(vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): + generouted@1.19.4(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): dependencies: - vite: 5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) + vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) gensync@1.0.0-beta.2: {} @@ -8513,7 +8495,7 @@ snapshots: pend@1.2.0: {} - picocolors@1.0.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -8621,7 +8603,7 @@ snapshots: postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 prelude-ls@1.2.1: {} @@ -9218,7 +9200,7 @@ snapshots: meow: 13.2.0 micromatch: 4.0.5 normalize-path: 3.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-resolve-nested-selector: 0.1.1 postcss-safe-parser: 7.0.0(postcss@8.4.38) @@ -9316,7 +9298,7 @@ snapshots: micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) @@ -9553,7 +9535,7 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 update-notifier@2.5.0: dependencies: @@ -9603,43 +9585,43 @@ snapshots: esbuild: 0.19.12 monaco-editor: 0.48.0 - vite-plugin-sass-dts@1.3.22(postcss@8.4.38)(prettier@3.2.5)(sass@1.77.1)(vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): + vite-plugin-sass-dts@1.3.22(postcss@8.4.38)(prettier@3.2.5)(sass@1.77.1)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): dependencies: postcss: 8.4.38 postcss-js: 4.0.1(postcss@8.4.38) prettier: 3.2.5 sass: 1.77.1 - vite: 5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) + vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) - vite-plugin-svgr@4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): + vite-plugin-svgr@4.2.0(rollup@4.17.2)(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.17.2) '@svgr/core': 8.1.0(typescript@5.4.5) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.4.5)) - vite: 5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) + vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): + vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0)): dependencies: debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.4.5) optionalDependencies: - vite: 5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) + vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0) transitivePeerDependencies: - supports-color - typescript - vite@5.2.11(@types/node@20.12.11)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0): + vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.1)(stylus@0.62.0): dependencies: esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.17.2 optionalDependencies: - '@types/node': 20.12.11 + '@types/node': 20.12.12 fsevents: 2.3.3 less: 4.2.0 sass: 1.77.1 diff --git a/clash-nyanpasu/rust-toolchain b/clash-nyanpasu/rust-toolchain deleted file mode 100644 index 870bbe4e50..0000000000 --- a/clash-nyanpasu/rust-toolchain +++ /dev/null @@ -1 +0,0 @@ -stable \ No newline at end of file diff --git a/clash-nyanpasu/rust-toolchain.toml b/clash-nyanpasu/rust-toolchain.toml new file mode 100644 index 0000000000..292fe499e3 --- /dev/null +++ b/clash-nyanpasu/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "stable" diff --git a/clash-nyanpasu/scripts/package.json b/clash-nyanpasu/scripts/package.json index 3e89bcce3e..feb0518382 100644 --- a/clash-nyanpasu/scripts/package.json +++ b/clash-nyanpasu/scripts/package.json @@ -13,6 +13,6 @@ "fs-extra": "11.2.0", "https-proxy-agent": "7.0.4", "node-fetch": "3.3.2", - "picocolors": "1.0.0" + "picocolors": "1.0.1" } } diff --git a/clash-verge-rev/src/assets/image/icon_dark.png b/clash-verge-rev/src/assets/image/icon_dark.png deleted file mode 100644 index 8fe55e7224..0000000000 Binary files a/clash-verge-rev/src/assets/image/icon_dark.png and /dev/null differ diff --git a/clash-verge-rev/src/assets/image/icon_dark.svg b/clash-verge-rev/src/assets/image/icon_dark.svg new file mode 100644 index 0000000000..bd1371bd28 --- /dev/null +++ b/clash-verge-rev/src/assets/image/icon_dark.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/clash-verge-rev/src/assets/image/icon_light.png b/clash-verge-rev/src/assets/image/icon_light.png deleted file mode 100644 index 727b0fec6c..0000000000 Binary files a/clash-verge-rev/src/assets/image/icon_light.png and /dev/null differ diff --git a/clash-verge-rev/src/assets/image/icon_light.svg b/clash-verge-rev/src/assets/image/icon_light.svg new file mode 100644 index 0000000000..0951115797 --- /dev/null +++ b/clash-verge-rev/src/assets/image/icon_light.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/clash-verge-rev/src/components/profile/editor-viewer.tsx b/clash-verge-rev/src/components/profile/editor-viewer.tsx index 7824c8e4b3..c234b255f4 100644 --- a/clash-verge-rev/src/components/profile/editor-viewer.tsx +++ b/clash-verge-rev/src/components/profile/editor-viewer.tsx @@ -95,6 +95,8 @@ export const EditorViewer = (props: Props) => { padding: { top: 33, // 顶部padding防止遮挡snippets }, + fontFamily: + "Fira Code, Roboto Mono, Source Code Pro, Menlo, Monaco, Consolas, Courier New, monospace", }); }); diff --git a/clash-verge-rev/src/components/setting/mods/config-viewer.tsx b/clash-verge-rev/src/components/setting/mods/config-viewer.tsx index 6e432a905c..d758a0febe 100644 --- a/clash-verge-rev/src/components/setting/mods/config-viewer.tsx +++ b/clash-verge-rev/src/components/setting/mods/config-viewer.tsx @@ -60,6 +60,11 @@ export const ConfigViewer = forwardRef((props, ref) => { mouseWheelZoom: true, // Ctrl+滚轮调节缩放 readOnly: true, // 只读 readOnlyMessage: { value: t("ReadOnlyMessage") }, + padding: { + top: 33, // 顶部padding防止遮挡snippets + }, + fontFamily: + "Fira Code, Roboto Mono, Source Code Pro, Menlo, Monaco, Consolas, Courier New, monospace", }); }); }, diff --git a/clash-verge-rev/src/pages/_layout.tsx b/clash-verge-rev/src/pages/_layout.tsx index a083b1a6ab..196bc43a07 100644 --- a/clash-verge-rev/src/pages/_layout.tsx +++ b/clash-verge-rev/src/pages/_layout.tsx @@ -5,15 +5,15 @@ import { SWRConfig, mutate } from "swr"; import { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { useLocation, useRoutes } from "react-router-dom"; -import { List, Paper, ThemeProvider } from "@mui/material"; +import { List, Paper, ThemeProvider, SvgIcon } from "@mui/material"; import { listen } from "@tauri-apps/api/event"; import { appWindow } from "@tauri-apps/api/window"; import { routers } from "./_routers"; import { getAxios } from "@/services/api"; import { useVerge } from "@/hooks/use-verge"; import LogoSvg from "@/assets/image/logo.svg?react"; -import iconLight from "@/assets/image/icon_light.png"; -import iconDark from "@/assets/image/icon_dark.png"; +import iconLight from "@/assets/image/icon_light.svg?react"; +import iconDark from "@/assets/image/icon_dark.svg?react"; import { atomThemeMode } from "@/services/states"; import { useRecoilState } from "recoil"; import { Notice } from "@/components/base"; @@ -145,16 +145,16 @@ const Layout = () => { justifyContent: "space-between", }} > -
    diff --git a/clash-verge-rev/src/pages/settings.tsx b/clash-verge-rev/src/pages/settings.tsx index f8b9e6737c..d89cf14402 100644 --- a/clash-verge-rev/src/pages/settings.tsx +++ b/clash-verge-rev/src/pages/settings.tsx @@ -1,15 +1,14 @@ -import { Box, Grid, IconButton, Paper } from "@mui/material"; +import { Box, ButtonGroup, Grid, IconButton } from "@mui/material"; import { useLockFn } from "ahooks"; import { useTranslation } from "react-i18next"; import { BasePage, Notice } from "@/components/base"; -import { GitHub } from "@mui/icons-material"; +import { GitHub, HelpOutlineSharp } from "@mui/icons-material"; import { openWebUrl } from "@/services/cmds"; import SettingVerge from "@/components/setting/setting-verge"; import SettingClash from "@/components/setting/setting-clash"; import SettingSystem from "@/components/setting/setting-system"; import { atomThemeMode } from "@/services/states"; import { useRecoilState } from "recoil"; -import { useCustomTheme } from "@/components/layout/use-custom-theme"; const SettingPage = () => { const { t } = useTranslation(); @@ -22,22 +21,35 @@ const SettingPage = () => { return openWebUrl("https://github.com/clash-verge-rev/clash-verge-rev"); }); + const toGithubDoc = useLockFn(() => { + return openWebUrl("https://clash-verge-rev.github.io/guide/log.html"); + }); + const [mode] = useRecoilState(atomThemeMode); const isDark = mode === "light" ? false : true; - const { theme } = useCustomTheme(); return ( - - + + + + + + + + } > diff --git a/juicity/CHANGELOGS.md b/juicity/CHANGELOGS.md index 88aafe0e8d..13f18ef5bb 100644 --- a/juicity/CHANGELOGS.md +++ b/juicity/CHANGELOGS.md @@ -12,7 +12,8 @@ curl --silent "https://api.github.com/repos/juicity/juicity/releases" | jq -r '. -- [v0.4.2 (Latest)](#v042-latest) +- [v0.4.3 (Latest)](#v043-latest) +- [v0.4.2](#v042) - [v0.4.1](#v041) - [v0.4.0](#v040) - [v0.3.0](#v030) @@ -24,7 +25,17 @@ curl --silent "https://api.github.com/repos/juicity/juicity/releases" | jq -r '. - [v0.1.0](#v010) -### v0.4.2 (Latest) +### v0.4.3 (Latest) + +> Release date: 2024/05/14 + +#### Bug Fixes + +- fix: disable gso on client by default in [#165](https://github.com/juicity/juicity/pull/165) by (@mzz2017) + +**Full Changelog**: https://github.com/juicity/juicity/compare/v0.4.2...v0.4.3 + +### v0.4.2 > Release date: 2024/04/19 diff --git a/juicity/cmd/client/run.go b/juicity/cmd/client/run.go index 56340ca0c4..f7133e59e5 100644 --- a/juicity/cmd/client/run.go +++ b/juicity/cmd/client/run.go @@ -37,6 +37,10 @@ var ( Use: "run", Short: "To run juicity-client in the foreground.", Run: func(cmd *cobra.Command, args []string) { + // TODO: Some users reported that enabling GSO on the client would affect the performance of watching YouTube, so we disabled it by default. + if _, ok := os.LookupEnv("QUIC_GO_DISABLE_GSO"); !ok { + os.Setenv("QUIC_GO_DISABLE_GSO", "1") + } arguments := shared.GetArguments() // Config. conf, err := arguments.GetConfig() diff --git a/mieru/Makefile b/mieru/Makefile index 8b9c98b74a..a6be7ed48c 100644 --- a/mieru/Makefile +++ b/mieru/Makefile @@ -32,7 +32,7 @@ PROJECT_NAME=$(shell basename "${ROOT}") # - pkg/version/current.go # # Use `tools/bump_version.sh` script to change all those files at one shot. -VERSION="3.0.0" +VERSION="3.0.1" # Build binaries and installation packages. .PHONY: build diff --git a/mieru/build/package/mieru/amd64/debian/DEBIAN/control b/mieru/build/package/mieru/amd64/debian/DEBIAN/control index db7fe8aa3e..df8b222d7c 100755 --- a/mieru/build/package/mieru/amd64/debian/DEBIAN/control +++ b/mieru/build/package/mieru/amd64/debian/DEBIAN/control @@ -1,5 +1,5 @@ Package: mieru -Version: 3.0.0 +Version: 3.0.1 Section: net Priority: optional Architecture: amd64 diff --git a/mieru/build/package/mieru/amd64/rpm/mieru.spec b/mieru/build/package/mieru/amd64/rpm/mieru.spec index cf9b399bf2..322bd56ed8 100644 --- a/mieru/build/package/mieru/amd64/rpm/mieru.spec +++ b/mieru/build/package/mieru/amd64/rpm/mieru.spec @@ -1,5 +1,5 @@ Name: mieru -Version: 3.0.0 +Version: 3.0.1 Release: 1%{?dist} Summary: Mieru proxy client License: GPLv3+ diff --git a/mieru/build/package/mieru/arm64/debian/DEBIAN/control b/mieru/build/package/mieru/arm64/debian/DEBIAN/control index 23eca5b2ae..7be8d11f2f 100755 --- a/mieru/build/package/mieru/arm64/debian/DEBIAN/control +++ b/mieru/build/package/mieru/arm64/debian/DEBIAN/control @@ -1,5 +1,5 @@ Package: mieru -Version: 3.0.0 +Version: 3.0.1 Section: net Priority: optional Architecture: arm64 diff --git a/mieru/build/package/mieru/arm64/rpm/mieru.spec b/mieru/build/package/mieru/arm64/rpm/mieru.spec index cf9b399bf2..322bd56ed8 100644 --- a/mieru/build/package/mieru/arm64/rpm/mieru.spec +++ b/mieru/build/package/mieru/arm64/rpm/mieru.spec @@ -1,5 +1,5 @@ Name: mieru -Version: 3.0.0 +Version: 3.0.1 Release: 1%{?dist} Summary: Mieru proxy client License: GPLv3+ diff --git a/mieru/build/package/mita/amd64/debian/DEBIAN/control b/mieru/build/package/mita/amd64/debian/DEBIAN/control index 0bd6015f0a..eb0ac7267a 100755 --- a/mieru/build/package/mita/amd64/debian/DEBIAN/control +++ b/mieru/build/package/mita/amd64/debian/DEBIAN/control @@ -1,5 +1,5 @@ Package: mita -Version: 3.0.0 +Version: 3.0.1 Section: net Priority: optional Architecture: amd64 diff --git a/mieru/build/package/mita/amd64/rpm/mita.spec b/mieru/build/package/mita/amd64/rpm/mita.spec index 3065ab1a08..3a1a00def1 100644 --- a/mieru/build/package/mita/amd64/rpm/mita.spec +++ b/mieru/build/package/mita/amd64/rpm/mita.spec @@ -1,5 +1,5 @@ Name: mita -Version: 3.0.0 +Version: 3.0.1 Release: 1%{?dist} Summary: Mieru proxy server License: GPLv3+ diff --git a/mieru/build/package/mita/arm64/debian/DEBIAN/control b/mieru/build/package/mita/arm64/debian/DEBIAN/control index dd4217a267..59d43493ef 100755 --- a/mieru/build/package/mita/arm64/debian/DEBIAN/control +++ b/mieru/build/package/mita/arm64/debian/DEBIAN/control @@ -1,5 +1,5 @@ Package: mita -Version: 3.0.0 +Version: 3.0.1 Section: net Priority: optional Architecture: arm64 diff --git a/mieru/build/package/mita/arm64/rpm/mita.spec b/mieru/build/package/mita/arm64/rpm/mita.spec index 530867560f..cdbf5639d0 100644 --- a/mieru/build/package/mita/arm64/rpm/mita.spec +++ b/mieru/build/package/mita/arm64/rpm/mita.spec @@ -1,5 +1,5 @@ Name: mita -Version: 3.0.0 +Version: 3.0.1 Release: 1%{?dist} Summary: Mieru proxy server License: GPLv3+ diff --git a/mieru/docs/server-install.md b/mieru/docs/server-install.md index cc1f9fd30f..4542a71108 100644 --- a/mieru/docs/server-install.md +++ b/mieru/docs/server-install.md @@ -8,32 +8,32 @@ Before installation and configuration, connect to the server via SSH and then ex ```sh # Debian / Ubuntu - X86_64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita_3.0.0_amd64.deb +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita_3.0.1_amd64.deb # Debian / Ubuntu - ARM 64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita_3.0.0_arm64.deb +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita_3.0.1_arm64.deb # RedHat / CentOS / Rocky Linux - X86_64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita-3.0.0-1.x86_64.rpm +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita-3.0.1-1.x86_64.rpm # RedHat / CentOS / Rocky Linux - ARM 64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita-3.0.0-1.aarch64.rpm +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita-3.0.1-1.aarch64.rpm ``` ## Install mita package ```sh # Debian / Ubuntu - X86_64 -sudo dpkg -i mita_3.0.0_amd64.deb +sudo dpkg -i mita_3.0.1_amd64.deb # Debian / Ubuntu - ARM 64 -sudo dpkg -i mita_3.0.0_arm64.deb +sudo dpkg -i mita_3.0.1_arm64.deb # RedHat / CentOS / Rocky Linux - X86_64 -sudo rpm -Uvh --force mita-3.0.0-1.x86_64.rpm +sudo rpm -Uvh --force mita-3.0.1-1.x86_64.rpm # RedHat / CentOS / Rocky Linux - ARM 64 -sudo rpm -Uvh --force mita-3.0.0-1.aarch64.rpm +sudo rpm -Uvh --force mita-3.0.1-1.aarch64.rpm ``` Those instructions can also be used to upgrade the version of mita software package. diff --git a/mieru/docs/server-install.zh_CN.md b/mieru/docs/server-install.zh_CN.md index 3b8dff95ed..4e8b42fd9c 100644 --- a/mieru/docs/server-install.zh_CN.md +++ b/mieru/docs/server-install.zh_CN.md @@ -8,32 +8,32 @@ ```sh # Debian / Ubuntu - X86_64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita_3.0.0_amd64.deb +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita_3.0.1_amd64.deb # Debian / Ubuntu - ARM 64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita_3.0.0_arm64.deb +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita_3.0.1_arm64.deb # RedHat / CentOS / Rocky Linux - X86_64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita-3.0.0-1.x86_64.rpm +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita-3.0.1-1.x86_64.rpm # RedHat / CentOS / Rocky Linux - ARM 64 -curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.0/mita-3.0.0-1.aarch64.rpm +curl -LSO https://github.com/enfein/mieru/releases/download/v3.0.1/mita-3.0.1-1.aarch64.rpm ``` ## 安装 mita 软件包 ```sh # Debian / Ubuntu - X86_64 -sudo dpkg -i mita_3.0.0_amd64.deb +sudo dpkg -i mita_3.0.1_amd64.deb # Debian / Ubuntu - ARM 64 -sudo dpkg -i mita_3.0.0_arm64.deb +sudo dpkg -i mita_3.0.1_arm64.deb # RedHat / CentOS / Rocky Linux - X86_64 -sudo rpm -Uvh --force mita-3.0.0-1.x86_64.rpm +sudo rpm -Uvh --force mita-3.0.1-1.x86_64.rpm # RedHat / CentOS / Rocky Linux - ARM 64 -sudo rpm -Uvh --force mita-3.0.0-1.aarch64.rpm +sudo rpm -Uvh --force mita-3.0.1-1.aarch64.rpm ``` 上述指令也可以用来升级 mita 软件包的版本。 diff --git a/mieru/pkg/version/current.go b/mieru/pkg/version/current.go index c62fede634..0d2df57320 100644 --- a/mieru/pkg/version/current.go +++ b/mieru/pkg/version/current.go @@ -16,5 +16,5 @@ package version const ( - AppVersion = "3.0.0" + AppVersion = "3.0.1" ) diff --git a/naiveproxy/.github/workflows/build.yml b/naiveproxy/.github/workflows/build.yml index 681dde4f2c..47c15a1a07 100644 --- a/naiveproxy/.github/workflows/build.yml +++ b/naiveproxy/.github/workflows/build.yml @@ -79,7 +79,7 @@ jobs: unzip ninja-win.zip -d ~/bin fi cache-toolchains-mac: - runs-on: macos-11 + runs-on: macos-13 steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 @@ -320,7 +320,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} mac: needs: cache-toolchains-mac - runs-on: macos-11 + runs-on: macos-13 strategy: fail-fast: false matrix: @@ -373,7 +373,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ios: needs: cache-toolchains-mac - runs-on: macos-11 + runs-on: macos-13 strategy: fail-fast: false matrix: diff --git a/ryujinx/Directory.Packages.props b/ryujinx/Directory.Packages.props index ef274125a4..d04e237e04 100644 --- a/ryujinx/Directory.Packages.props +++ b/ryujinx/Directory.Packages.props @@ -8,8 +8,8 @@ - - + + diff --git a/ryujinx/README.md b/ryujinx/README.md index f2f3cb001e..7f2294d311 100644 --- a/ryujinx/README.md +++ b/ryujinx/README.md @@ -36,8 +36,8 @@ ## Compatibility -As of October 2023, Ryujinx has been tested on approximately 4,200 titles; -over 4,150 boot past menus and into gameplay, with roughly 3,500 of those being considered playable. +As of May 2024, Ryujinx has been tested on approximately 4,300 titles; +over 4,100 boot past menus and into gameplay, with roughly 3,550 of those being considered playable. You can check out the compatibility list [here](https://github.com/Ryujinx/Ryujinx-Games-List/issues). diff --git a/ryujinx/Ryujinx.sln.DotSettings b/ryujinx/Ryujinx.sln.DotSettings index 049bdaf69d..ed7f3e9118 100644 --- a/ryujinx/Ryujinx.sln.DotSettings +++ b/ryujinx/Ryujinx.sln.DotSettings @@ -4,6 +4,8 @@ UseExplicitType UseExplicitType <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="I" Suffix="" Style="AaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Types and namespaces"><ElementKinds><Kind Name="NAMESPACE" /><Kind Name="CLASS" /><Kind Name="STRUCT" /><Kind Name="ENUM" /><Kind Name="DELEGATE" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="I" Suffix="" Style="AaBb" /></Policy></Policy> + True True True True diff --git a/ryujinx/src/Ryujinx.Graphics.GAL/Capabilities.cs b/ryujinx/src/Ryujinx.Graphics.GAL/Capabilities.cs index 70736fbd61..779ce5b5dc 100644 --- a/ryujinx/src/Ryujinx.Graphics.GAL/Capabilities.cs +++ b/ryujinx/src/Ryujinx.Graphics.GAL/Capabilities.cs @@ -36,6 +36,7 @@ namespace Ryujinx.Graphics.GAL public readonly bool SupportsMismatchingViewFormat; public readonly bool SupportsCubemapView; public readonly bool SupportsNonConstantTextureOffset; + public readonly bool SupportsQuads; public readonly bool SupportsSeparateSampler; public readonly bool SupportsShaderBallot; public readonly bool SupportsShaderBarrierDivergence; @@ -93,6 +94,7 @@ namespace Ryujinx.Graphics.GAL bool supportsMismatchingViewFormat, bool supportsCubemapView, bool supportsNonConstantTextureOffset, + bool supportsQuads, bool supportsSeparateSampler, bool supportsShaderBallot, bool supportsShaderBarrierDivergence, @@ -146,6 +148,7 @@ namespace Ryujinx.Graphics.GAL SupportsMismatchingViewFormat = supportsMismatchingViewFormat; SupportsCubemapView = supportsCubemapView; SupportsNonConstantTextureOffset = supportsNonConstantTextureOffset; + SupportsQuads = supportsQuads; SupportsSeparateSampler = supportsSeparateSampler; SupportsShaderBallot = supportsShaderBallot; SupportsShaderBarrierDivergence = supportsShaderBarrierDivergence; diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/Texture.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/Texture.cs index e67caea81f..dde28dbd77 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/Texture.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/Texture.cs @@ -390,7 +390,7 @@ namespace Ryujinx.Graphics.Gpu.Image { _views.Remove(texture); - Group.RemoveView(texture); + Group.RemoveView(_views, texture); texture._viewStorage = texture; diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs index 5743c89c0d..b9ff060e25 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureCache.cs @@ -8,6 +8,7 @@ using Ryujinx.Graphics.Texture; using Ryujinx.Memory.Range; using System; using System.Collections.Generic; +using System.Threading; namespace Ryujinx.Graphics.Gpu.Image { @@ -39,6 +40,8 @@ namespace Ryujinx.Graphics.Gpu.Image private readonly MultiRangeList _textures; private readonly HashSet _partiallyMappedTextures; + private readonly ReaderWriterLockSlim _texturesLock; + private Texture[] _textureOverlaps; private OverlapInfo[] _overlapInfo; @@ -57,6 +60,8 @@ namespace Ryujinx.Graphics.Gpu.Image _textures = new MultiRangeList(); _partiallyMappedTextures = new HashSet(); + _texturesLock = new ReaderWriterLockSlim(); + _textureOverlaps = new Texture[OverlapsBufferInitialCapacity]; _overlapInfo = new OverlapInfo[OverlapsBufferInitialCapacity]; @@ -75,10 +80,16 @@ namespace Ryujinx.Graphics.Gpu.Image MultiRange unmapped = ((MemoryManager)sender).GetPhysicalRegions(e.Address, e.Size); - lock (_textures) + _texturesLock.EnterReadLock(); + + try { overlapCount = _textures.FindOverlaps(unmapped, ref overlaps); } + finally + { + _texturesLock.ExitReadLock(); + } if (overlapCount > 0) { @@ -217,7 +228,18 @@ namespace Ryujinx.Graphics.Gpu.Image public bool UpdateMapping(Texture texture, MultiRange range) { // There cannot be an existing texture compatible with this mapping in the texture cache already. - int overlapCount = _textures.FindOverlaps(range, ref _textureOverlaps); + int overlapCount; + + _texturesLock.EnterReadLock(); + + try + { + overlapCount = _textures.FindOverlaps(range, ref _textureOverlaps); + } + finally + { + _texturesLock.ExitReadLock(); + } for (int i = 0; i < overlapCount; i++) { @@ -231,11 +253,20 @@ namespace Ryujinx.Graphics.Gpu.Image } } - _textures.Remove(texture); + _texturesLock.EnterWriteLock(); - texture.ReplaceRange(range); + try + { + _textures.Remove(texture); - _textures.Add(texture); + texture.ReplaceRange(range); + + _textures.Add(texture); + } + finally + { + _texturesLock.ExitWriteLock(); + } return true; } @@ -611,11 +642,17 @@ namespace Ryujinx.Graphics.Gpu.Image int sameAddressOverlapsCount; - lock (_textures) + _texturesLock.EnterReadLock(); + + try { // Try to find a perfect texture match, with the same address and parameters. sameAddressOverlapsCount = _textures.FindOverlaps(address, ref _textureOverlaps); } + finally + { + _texturesLock.ExitReadLock(); + } Texture texture = null; @@ -698,10 +735,16 @@ namespace Ryujinx.Graphics.Gpu.Image if (info.Target != Target.TextureBuffer) { - lock (_textures) + _texturesLock.EnterReadLock(); + + try { overlapsCount = _textures.FindOverlaps(range.Value, ref _textureOverlaps); } + finally + { + _texturesLock.ExitReadLock(); + } } if (_overlapInfo.Length != _textureOverlaps.Length) @@ -1025,10 +1068,16 @@ namespace Ryujinx.Graphics.Gpu.Image _cache.Add(texture); } - lock (_textures) + _texturesLock.EnterWriteLock(); + + try { _textures.Add(texture); } + finally + { + _texturesLock.ExitWriteLock(); + } if (partiallyMapped) { @@ -1091,7 +1140,19 @@ namespace Ryujinx.Graphics.Gpu.Image return null; } - int addressMatches = _textures.FindOverlaps(address, ref _textureOverlaps); + int addressMatches; + + _texturesLock.EnterReadLock(); + + try + { + addressMatches = _textures.FindOverlaps(address, ref _textureOverlaps); + } + finally + { + _texturesLock.ExitReadLock(); + } + Texture textureMatch = null; for (int i = 0; i < addressMatches; i++) @@ -1232,10 +1293,16 @@ namespace Ryujinx.Graphics.Gpu.Image /// The texture to be removed public void RemoveTextureFromCache(Texture texture) { - lock (_textures) + _texturesLock.EnterWriteLock(); + + try { _textures.Remove(texture); } + finally + { + _texturesLock.ExitWriteLock(); + } lock (_partiallyMappedTextures) { @@ -1324,13 +1391,19 @@ namespace Ryujinx.Graphics.Gpu.Image /// public void Dispose() { - lock (_textures) + _texturesLock.EnterReadLock(); + + try { foreach (Texture texture in _textures) { texture.Dispose(); } } + finally + { + _texturesLock.ExitReadLock(); + } } } } diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs index de9c47c976..4e1133d1af 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroup.cs @@ -88,9 +88,9 @@ namespace Ryujinx.Graphics.Gpu.Image private MultiRange TextureRange => Storage.Range; /// - /// The views list from the storage texture. + /// The views array from the storage texture. /// - private List _views; + private Texture[] _views; private TextureGroupHandle[] _handles; private bool[] _loadNeeded; @@ -1074,7 +1074,7 @@ namespace Ryujinx.Graphics.Gpu.Image public void UpdateViews(List views, Texture texture) { // This is saved to calculate overlapping views for each handle. - _views = views; + _views = views.ToArray(); bool layerViews = _hasLayerViews; bool mipViews = _hasMipViews; @@ -1136,9 +1136,13 @@ namespace Ryujinx.Graphics.Gpu.Image /// /// Removes a view from the group, removing it from all overlap lists. /// + /// The views list of the storage texture /// View to remove from the group - public void RemoveView(Texture view) + public void RemoveView(List views, Texture view) { + // This is saved to calculate overlapping views for each handle. + _views = views.ToArray(); + int offset = FindOffset(view); foreach (TextureGroupHandle handle in _handles) @@ -1605,9 +1609,11 @@ namespace Ryujinx.Graphics.Gpu.Image Storage.SignalModifiedDirty(); - if (_views != null) + Texture[] views = _views; + + if (views != null) { - foreach (Texture texture in _views) + foreach (Texture texture in views) { texture.SignalModifiedDirty(); } diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs index 0af6b7ca83..860922d592 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Image/TextureGroupHandle.cs @@ -121,7 +121,7 @@ namespace Ryujinx.Graphics.Gpu.Image public TextureGroupHandle(TextureGroup group, int offset, ulong size, - List views, + IEnumerable views, int firstLayer, int firstLevel, int baseSlice, @@ -201,8 +201,8 @@ namespace Ryujinx.Graphics.Gpu.Image /// Calculate a list of which views overlap this handle. /// /// The parent texture group, used to find a view's base CPU VA offset - /// The list of views to search for overlaps - public void RecalculateOverlaps(TextureGroup group, List views) + /// The views to search for overlaps + public void RecalculateOverlaps(TextureGroup group, IEnumerable views) { // Overlaps can be accessed from the memory tracking signal handler, so access must be atomic. lock (Overlaps) diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheGpuAccessor.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheGpuAccessor.cs index 45f32e2d39..3c7664b77a 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheGpuAccessor.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheGpuAccessor.cs @@ -18,6 +18,8 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache private readonly ShaderSpecializationState _newSpecState; private readonly int _stageIndex; private readonly bool _isVulkan; + private readonly bool _hasGeometryShader; + private readonly bool _supportsQuads; /// /// Creates a new instance of the cached GPU state accessor for shader translation. @@ -29,6 +31,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache /// Shader specialization state of the recompiled shader /// Resource counts shared across all shader stages /// Shader stage index + /// Indicates if a geometry shader is present public DiskCacheGpuAccessor( GpuContext context, ReadOnlyMemory data, @@ -36,7 +39,8 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache ShaderSpecializationState oldSpecState, ShaderSpecializationState newSpecState, ResourceCounts counts, - int stageIndex) : base(context, counts, stageIndex) + int stageIndex, + bool hasGeometryShader) : base(context, counts, stageIndex) { _data = data; _cb1Data = cb1Data; @@ -44,6 +48,8 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache _newSpecState = newSpecState; _stageIndex = stageIndex; _isVulkan = context.Capabilities.Api == TargetApi.Vulkan; + _hasGeometryShader = hasGeometryShader; + _supportsQuads = context.Capabilities.SupportsQuads; if (stageIndex == (int)ShaderStage.Geometry - 1) { @@ -100,7 +106,11 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache /// public GpuGraphicsState QueryGraphicsState() { - return _oldSpecState.GraphicsState.CreateShaderGraphicsState(!_isVulkan, _isVulkan || _oldSpecState.GraphicsState.YNegateEnabled); + return _oldSpecState.GraphicsState.CreateShaderGraphicsState( + !_isVulkan, + _supportsQuads, + _hasGeometryShader, + _isVulkan || _oldSpecState.GraphicsState.YNegateEnabled); } /// diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs index 2c19cc4b98..ea54049c2a 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs @@ -22,7 +22,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache private const ushort FileFormatVersionMajor = 1; private const ushort FileFormatVersionMinor = 2; private const uint FileFormatVersionPacked = ((uint)FileFormatVersionMajor << 16) | FileFormatVersionMinor; - private const uint CodeGenVersion = 6577; + private const uint CodeGenVersion = 5936; private const string SharedTocFileName = "shared.toc"; private const string SharedDataFileName = "shared.data"; diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs index 153fc44276..20f96462ea 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/ParallelDiskCacheLoader.cs @@ -601,6 +601,8 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache TargetApi api = _context.Capabilities.Api; + bool hasCachedGs = guestShaders[4].HasValue; + for (int stageIndex = Constants.ShaderStages - 1; stageIndex >= 0; stageIndex--) { if (guestShaders[stageIndex + 1].HasValue) @@ -610,7 +612,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache byte[] guestCode = shader.Code; byte[] cb1Data = shader.Cb1Data; - DiskCacheGpuAccessor gpuAccessor = new(_context, guestCode, cb1Data, specState, newSpecState, counts, stageIndex); + DiskCacheGpuAccessor gpuAccessor = new(_context, guestCode, cb1Data, specState, newSpecState, counts, stageIndex, hasCachedGs); TranslatorContext currentStage = DecodeGraphicsShader(gpuAccessor, api, DefaultFlags, 0); if (nextStage != null) @@ -623,7 +625,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache byte[] guestCodeA = guestShaders[0].Value.Code; byte[] cb1DataA = guestShaders[0].Value.Cb1Data; - DiskCacheGpuAccessor gpuAccessorA = new(_context, guestCodeA, cb1DataA, specState, newSpecState, counts, 0); + DiskCacheGpuAccessor gpuAccessorA = new(_context, guestCodeA, cb1DataA, specState, newSpecState, counts, 0, hasCachedGs); translatorContexts[0] = DecodeGraphicsShader(gpuAccessorA, api, DefaultFlags | TranslationFlags.VertexA, 0); } @@ -711,7 +713,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache GuestCodeAndCbData shader = guestShaders[0].Value; ResourceCounts counts = new(); ShaderSpecializationState newSpecState = new(ref specState.ComputeState); - DiskCacheGpuAccessor gpuAccessor = new(_context, shader.Code, shader.Cb1Data, specState, newSpecState, counts, 0); + DiskCacheGpuAccessor gpuAccessor = new(_context, shader.Code, shader.Cb1Data, specState, newSpecState, counts, 0, false); gpuAccessor.InitializeReservedCounts(tfEnabled: false, vertexAsCompute: false); TranslatorContext translatorContext = DecodeComputeShader(gpuAccessor, _context.Capabilities.Api, 0); diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs index 04949690a2..1be75f242b 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessor.cs @@ -17,6 +17,8 @@ namespace Ryujinx.Graphics.Gpu.Shader private readonly int _stageIndex; private readonly bool _compute; private readonly bool _isVulkan; + private readonly bool _hasGeometryShader; + private readonly bool _supportsQuads; /// /// Creates a new instance of the GPU state accessor for graphics shader translation. @@ -25,12 +27,20 @@ namespace Ryujinx.Graphics.Gpu.Shader /// GPU channel /// Current GPU state /// Graphics shader stage index (0 = Vertex, 4 = Fragment) - public GpuAccessor(GpuContext context, GpuChannel channel, GpuAccessorState state, int stageIndex) : base(context, state.ResourceCounts, stageIndex) + /// Indicates if a geometry shader is present + public GpuAccessor( + GpuContext context, + GpuChannel channel, + GpuAccessorState state, + int stageIndex, + bool hasGeometryShader) : base(context, state.ResourceCounts, stageIndex) { - _isVulkan = context.Capabilities.Api == TargetApi.Vulkan; _channel = channel; _state = state; _stageIndex = stageIndex; + _isVulkan = context.Capabilities.Api == TargetApi.Vulkan; + _hasGeometryShader = hasGeometryShader; + _supportsQuads = context.Capabilities.SupportsQuads; if (stageIndex == (int)ShaderStage.Geometry - 1) { @@ -105,7 +115,11 @@ namespace Ryujinx.Graphics.Gpu.Shader /// public GpuGraphicsState QueryGraphicsState() { - return _state.GraphicsState.CreateShaderGraphicsState(!_isVulkan, _isVulkan || _state.GraphicsState.YNegateEnabled); + return _state.GraphicsState.CreateShaderGraphicsState( + !_isVulkan, + _supportsQuads, + _hasGeometryShader, + _isVulkan || _state.GraphicsState.YNegateEnabled); } /// diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs index b5bc4df3c0..765bef7d4a 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/GpuChannelGraphicsState.cs @@ -106,8 +106,11 @@ namespace Ryujinx.Graphics.Gpu.Shader /// Creates a new graphics state from this state that can be used for shader generation. /// /// Indicates if the host API supports alpha test operations + /// Indicates if the host API supports quad primitives + /// Indicates if a geometry shader is used + /// If true, indicates that the fragment origin is the upper left corner of the viewport, otherwise it is the lower left corner /// GPU graphics state that can be used for shader translation - public readonly GpuGraphicsState CreateShaderGraphicsState(bool hostSupportsAlphaTest, bool originUpperLeft) + public readonly GpuGraphicsState CreateShaderGraphicsState(bool hostSupportsAlphaTest, bool hostSupportsQuads, bool hasGeometryShader, bool originUpperLeft) { AlphaTestOp alphaTestOp; @@ -130,6 +133,9 @@ namespace Ryujinx.Graphics.Gpu.Shader }; } + bool isQuad = Topology == PrimitiveTopology.Quads || Topology == PrimitiveTopology.QuadStrip; + bool halvePrimitiveId = !hostSupportsQuads && !hasGeometryShader && isQuad; + return new GpuGraphicsState( EarlyZForce, ConvertToInputTopology(Topology, TessellationMode), @@ -149,7 +155,8 @@ namespace Ryujinx.Graphics.Gpu.Shader in FragmentOutputTypes, DualSourceBlendEnable, YNegateEnabled, - originUpperLeft); + originUpperLeft, + halvePrimitiveId); } /// diff --git a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs index 31cc94a25c..4fc66c4c06 100644 --- a/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs +++ b/ryujinx/src/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs @@ -339,7 +339,7 @@ namespace Ryujinx.Graphics.Gpu.Shader if (gpuVa != 0) { - GpuAccessor gpuAccessor = new(_context, channel, gpuAccessorState, stageIndex); + GpuAccessor gpuAccessor = new(_context, channel, gpuAccessorState, stageIndex, addresses.Geometry != 0); TranslatorContext currentStage = DecodeGraphicsShader(gpuAccessor, api, DefaultFlags, gpuVa); if (nextStage != null) diff --git a/ryujinx/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs b/ryujinx/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs index d56c40af46..2a39ae446f 100644 --- a/ryujinx/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs +++ b/ryujinx/src/Ryujinx.Graphics.OpenGL/OpenGLRenderer.cs @@ -161,6 +161,7 @@ namespace Ryujinx.Graphics.OpenGL supportsBgraFormat: false, supportsR4G4Format: false, supportsR4G4B4A4Format: true, + supportsScaledVertexFormats: true, supportsSnormBufferTextureFormat: false, supports5BitComponentFormat: true, supportsSparseBuffer: false, @@ -175,7 +176,7 @@ namespace Ryujinx.Graphics.OpenGL supportsMismatchingViewFormat: HwCapabilities.SupportsMismatchingViewFormat, supportsCubemapView: true, supportsNonConstantTextureOffset: HwCapabilities.SupportsNonConstantTextureOffset, - supportsScaledVertexFormats: true, + supportsQuads: HwCapabilities.SupportsQuads, supportsSeparateSampler: false, supportsShaderBallot: HwCapabilities.SupportsShaderBallot, supportsShaderBarrierDivergence: !(intelWindows || intelUnix), diff --git a/ryujinx/src/Ryujinx.Graphics.Shader/GpuGraphicsState.cs b/ryujinx/src/Ryujinx.Graphics.Shader/GpuGraphicsState.cs index f16c71d559..38684002c2 100644 --- a/ryujinx/src/Ryujinx.Graphics.Shader/GpuGraphicsState.cs +++ b/ryujinx/src/Ryujinx.Graphics.Shader/GpuGraphicsState.cs @@ -102,6 +102,11 @@ namespace Ryujinx.Graphics.Shader /// public readonly bool OriginUpperLeft; + /// + /// Indicates that the primitive ID values on the shader should be halved due to quad to triangles conversion. + /// + public readonly bool HalvePrimitiveId; + /// /// Creates a new GPU graphics state. /// @@ -124,6 +129,7 @@ namespace Ryujinx.Graphics.Shader /// Indicates whether dual source blend is enabled /// Indicates if negation of the viewport Y axis is enabled /// If true, indicates that the fragment origin is the upper left corner of the viewport, otherwise it is the lower left corner + /// Indicates that the primitive ID values on the shader should be halved due to quad to triangles conversion public GpuGraphicsState( bool earlyZForce, InputTopology topology, @@ -143,7 +149,8 @@ namespace Ryujinx.Graphics.Shader in Array8 fragmentOutputTypes, bool dualSourceBlendEnable, bool yNegateEnabled, - bool originUpperLeft) + bool originUpperLeft, + bool halvePrimitiveId) { EarlyZForce = earlyZForce; Topology = topology; @@ -164,6 +171,7 @@ namespace Ryujinx.Graphics.Shader DualSourceBlendEnable = dualSourceBlendEnable; YNegateEnabled = yNegateEnabled; OriginUpperLeft = originUpperLeft; + HalvePrimitiveId = halvePrimitiveId; } } } diff --git a/ryujinx/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs b/ryujinx/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs index b1a9f9f842..3dc4ad907b 100644 --- a/ryujinx/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs +++ b/ryujinx/src/Ryujinx.Graphics.Shader/IGpuAccessor.cs @@ -135,6 +135,7 @@ namespace Ryujinx.Graphics.Shader default, false, false, + false, false); } diff --git a/ryujinx/src/Ryujinx.Graphics.Shader/Instructions/InstEmitAttribute.cs b/ryujinx/src/Ryujinx.Graphics.Shader/Instructions/InstEmitAttribute.cs index 63ce38e251..c704156bcb 100644 --- a/ryujinx/src/Ryujinx.Graphics.Shader/Instructions/InstEmitAttribute.cs +++ b/ryujinx/src/Ryujinx.Graphics.Shader/Instructions/InstEmitAttribute.cs @@ -84,6 +84,10 @@ namespace Ryujinx.Graphics.Shader.Instructions value = context.IConvertU32ToFP32(value); } } + else if (offset == AttributeConsts.PrimitiveId && context.TranslatorContext.Definitions.HalvePrimitiveId) + { + value = context.ShiftRightS32(value, Const(1)); + } context.Copy(Register(rd), value); } @@ -187,6 +191,12 @@ namespace Ryujinx.Graphics.Shader.Instructions } } } + else if (op.Imm10 == AttributeConsts.PrimitiveId && context.TranslatorContext.Definitions.HalvePrimitiveId) + { + // If quads are used, but the host does not support them, they need to be converted to triangles. + // Since each quad becomes 2 triangles, we need to compensate here and divide primitive ID by 2. + res = context.ShiftRightS32(res, Const(1)); + } else if (op.Imm10 == AttributeConsts.FrontFacing && context.TranslatorContext.GpuAccessor.QueryHostHasFrontFacingBug()) { // gl_FrontFacing sometimes has incorrect (flipped) values depending how it is accessed on Intel GPUs. diff --git a/ryujinx/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs b/ryujinx/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs index 223215439f..4128af241b 100644 --- a/ryujinx/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs +++ b/ryujinx/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs @@ -66,9 +66,9 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations if (nvHandle.AsgOp is not Operation handleOp || handleOp.Inst != Instruction.Load || - handleOp.StorageKind != StorageKind.Input) + (handleOp.StorageKind != StorageKind.Input && handleOp.StorageKind != StorageKind.StorageBuffer)) { - // Right now, we only allow bindless access when the handle comes from a shader input. + // Right now, we only allow bindless access when the handle comes from a shader input or storage buffer. // This is an artificial limitation to prevent it from being used in cases where it // would have a large performance impact of loading all textures in the pool. // It might be removed in the future, if we can mitigate the performance impact. diff --git a/ryujinx/src/Ryujinx.Graphics.Shader/Translation/ShaderDefinitions.cs b/ryujinx/src/Ryujinx.Graphics.Shader/Translation/ShaderDefinitions.cs index 3246e25940..f831ec940c 100644 --- a/ryujinx/src/Ryujinx.Graphics.Shader/Translation/ShaderDefinitions.cs +++ b/ryujinx/src/Ryujinx.Graphics.Shader/Translation/ShaderDefinitions.cs @@ -45,6 +45,8 @@ namespace Ryujinx.Graphics.Shader.Translation public bool YNegateEnabled => _graphicsState.YNegateEnabled; public bool OriginUpperLeft => _graphicsState.OriginUpperLeft; + public bool HalvePrimitiveId => _graphicsState.HalvePrimitiveId; + public ImapPixelType[] ImapTypes { get; } public bool IaIndexing { get; private set; } public bool OaIndexing { get; private set; } diff --git a/ryujinx/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/ryujinx/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index b46ba9c461..8ef05de36c 100644 --- a/ryujinx/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/ryujinx/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -691,6 +691,7 @@ namespace Ryujinx.Graphics.Vulkan supportsBgraFormat: true, supportsR4G4Format: false, supportsR4G4B4A4Format: supportsR4G4B4A4Format, + supportsScaledVertexFormats: FormatCapabilities.SupportsScaledVertexFormats(), supportsSnormBufferTextureFormat: true, supports5BitComponentFormat: supports5BitComponentFormat, supportsSparseBuffer: features2.Features.SparseBinding && mainQueueProperties.QueueFlags.HasFlag(QueueFlags.SparseBindingBit), @@ -705,7 +706,7 @@ namespace Ryujinx.Graphics.Vulkan supportsMismatchingViewFormat: true, supportsCubemapView: !IsAmdGcn, supportsNonConstantTextureOffset: false, - supportsScaledVertexFormats: FormatCapabilities.SupportsScaledVertexFormats(), + supportsQuads: false, supportsSeparateSampler: true, supportsShaderBallot: false, supportsShaderBarrierDivergence: Vendor != Vendor.Intel, diff --git a/ryujinx/src/Ryujinx.Gtk3/Input/GTK3/GTK3KeyboardDriver.cs b/ryujinx/src/Ryujinx.Gtk3/Input/GTK3/GTK3KeyboardDriver.cs index e502254be1..bd71c7933f 100644 --- a/ryujinx/src/Ryujinx.Gtk3/Input/GTK3/GTK3KeyboardDriver.cs +++ b/ryujinx/src/Ryujinx.Gtk3/Input/GTK3/GTK3KeyboardDriver.cs @@ -81,6 +81,11 @@ namespace Ryujinx.Input.GTK3 return _pressedKeys.Contains(nativeKey); } + public void Clear() + { + _pressedKeys.Clear(); + } + public IGamepad GetGamepad(string id) { if (!_keyboardIdentifers[0].Equals(id)) diff --git a/ryujinx/src/Ryujinx.Gtk3/Program.cs b/ryujinx/src/Ryujinx.Gtk3/Program.cs index 1845c512e4..f699343135 100644 --- a/ryujinx/src/Ryujinx.Gtk3/Program.cs +++ b/ryujinx/src/Ryujinx.Gtk3/Program.cs @@ -75,7 +75,7 @@ namespace Ryujinx if (OperatingSystem.IsWindows() && !OperatingSystem.IsWindowsVersionAtLeast(10, 0, 17134)) { - MessageBoxA(IntPtr.Zero, "You are running an outdated version of Windows.\n\nStarting on June 1st 2022, Ryujinx will only support Windows 10 1803 and newer.\n", $"Ryujinx {Version}", MbIconWarning); + MessageBoxA(IntPtr.Zero, "You are running an outdated version of Windows.\n\nRyujinx supports Windows 10 version 1803 and newer.\n", $"Ryujinx {Version}", MbIconWarning); } // Parse arguments diff --git a/ryujinx/src/Ryujinx.Gtk3/Ryujinx.Gtk3.csproj b/ryujinx/src/Ryujinx.Gtk3/Ryujinx.Gtk3.csproj index 68bf98981e..b4453f9d79 100644 --- a/ryujinx/src/Ryujinx.Gtk3/Ryujinx.Gtk3.csproj +++ b/ryujinx/src/Ryujinx.Gtk3/Ryujinx.Gtk3.csproj @@ -63,7 +63,7 @@ - + Always diff --git a/ryujinx/src/Ryujinx.Gtk3/UI/Applet/GtkHostUIHandler.cs b/ryujinx/src/Ryujinx.Gtk3/UI/Applet/GtkHostUIHandler.cs index 1d918d21b6..b3f509a090 100644 --- a/ryujinx/src/Ryujinx.Gtk3/UI/Applet/GtkHostUIHandler.cs +++ b/ryujinx/src/Ryujinx.Gtk3/UI/Applet/GtkHostUIHandler.cs @@ -107,6 +107,8 @@ namespace Ryujinx.UI.Applet swkbdDialog.SetInputLengthValidation(args.StringLengthMin, args.StringLengthMax); swkbdDialog.SetInputValidation(args.KeyboardMode); + ((MainWindow)_parent).RendererWidget.NpadManager.BlockInputUpdates(); + if (swkbdDialog.Run() == (int)ResponseType.Ok) { inputText = swkbdDialog.InputEntry.Text; @@ -128,6 +130,7 @@ namespace Ryujinx.UI.Applet }); dialogCloseEvent.WaitOne(); + ((MainWindow)_parent).RendererWidget.NpadManager.UnblockInputUpdates(); userText = error ? null : inputText; diff --git a/ryujinx/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs b/ryujinx/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs index bcc87f53bf..e3f505f371 100644 --- a/ryujinx/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs +++ b/ryujinx/src/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs @@ -22,6 +22,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid private bool _sixAxisSensorFusionEnabled; private bool _unintendedHomeButtonInputProtectionEnabled; + private bool _npadAnalogStickCenterClampEnabled; private bool _vibrationPermitted; private bool _usbFullKeyControllerEnabled; private readonly bool _isFirmwareUpdateAvailableForSixAxisSensor; @@ -1107,6 +1108,19 @@ namespace Ryujinx.HLE.HOS.Services.Hid // If not, it returns nothing. } + [CommandCmif(134)] // 6.1.0+ + // SetNpadUseAnalogStickUseCenterClamp(bool Enable, nn::applet::AppletResourceUserId) + public ResultCode SetNpadUseAnalogStickUseCenterClamp(ServiceCtx context) + { + ulong pid = context.RequestData.ReadUInt64(); + _npadAnalogStickCenterClampEnabled = context.RequestData.ReadUInt32() != 0; + long appletResourceUserId = context.RequestData.ReadInt64(); + + Logger.Stub?.PrintStub(LogClass.ServiceHid, new { pid, appletResourceUserId, _npadAnalogStickCenterClampEnabled }); + + return ResultCode.Success; + } + [CommandCmif(200)] // GetVibrationDeviceInfo(nn::hid::VibrationDeviceHandle) -> nn::hid::VibrationDeviceInfo public ResultCode GetVibrationDeviceInfo(ServiceCtx context) diff --git a/ryujinx/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj b/ryujinx/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj index cc5a365183..6102295444 100644 --- a/ryujinx/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj +++ b/ryujinx/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj @@ -48,7 +48,7 @@ - + Always diff --git a/ryujinx/src/Ryujinx.Input/HLE/NpadManager.cs b/ryujinx/src/Ryujinx.Input/HLE/NpadManager.cs index 4c7bb8b7a4..2409ecf22c 100644 --- a/ryujinx/src/Ryujinx.Input/HLE/NpadManager.cs +++ b/ryujinx/src/Ryujinx.Input/HLE/NpadManager.cs @@ -174,6 +174,11 @@ namespace Ryujinx.Input.HLE { lock (_lock) { + foreach (InputConfig inputConfig in _inputConfig) + { + _controllers[(int)inputConfig.PlayerIndex].GamepadDriver.Clear(); + } + _blockInputUpdates = false; } } diff --git a/ryujinx/src/Ryujinx.Input/IGamepadDriver.cs b/ryujinx/src/Ryujinx.Input/IGamepadDriver.cs index 67b01c26ca..ff4d36993c 100644 --- a/ryujinx/src/Ryujinx.Input/IGamepadDriver.cs +++ b/ryujinx/src/Ryujinx.Input/IGamepadDriver.cs @@ -33,5 +33,11 @@ namespace Ryujinx.Input /// The unique id of the gamepad /// An instance of associated to the gamepad id given or null if not found IGamepad GetGamepad(string id); + + /// + /// Flush the internal state of the driver. + /// + /// Does nothing by default. + void Clear() { } } } diff --git a/ryujinx/src/Ryujinx.UI.Common/DiscordIntegrationModule.cs b/ryujinx/src/Ryujinx.UI.Common/DiscordIntegrationModule.cs index bbece1e1d5..fb07195d08 100644 --- a/ryujinx/src/Ryujinx.UI.Common/DiscordIntegrationModule.cs +++ b/ryujinx/src/Ryujinx.UI.Common/DiscordIntegrationModule.cs @@ -1,6 +1,7 @@ using DiscordRPC; using Ryujinx.Common; using Ryujinx.UI.Common.Configuration; +using System.Text; namespace Ryujinx.UI.Common { @@ -9,6 +10,9 @@ namespace Ryujinx.UI.Common private const string Description = "A simple, experimental Nintendo Switch emulator."; private const string ApplicationId = "1216775165866807456"; + private const int ApplicationByteLimit = 128; + private const string Ellipsis = "…"; + private static DiscordRpcClient _discordClient; private static RichPresence _discordPresenceMain; @@ -60,18 +64,18 @@ namespace Ryujinx.UI.Common } } - public static void SwitchToPlayingState(string titleId, string titleName) + public static void SwitchToPlayingState(string titleId, string applicationName) { _discordClient?.SetPresence(new RichPresence { Assets = new Assets { LargeImageKey = "game", - LargeImageText = titleName, + LargeImageText = TruncateToByteLength(applicationName, ApplicationByteLimit), SmallImageKey = "ryujinx", SmallImageText = Description, }, - Details = $"Playing {titleName}", + Details = TruncateToByteLength($"Playing {applicationName}", ApplicationByteLimit), State = (titleId == "0000000000000000") ? "Homebrew" : titleId.ToUpper(), Timestamps = Timestamps.Now, Buttons = @@ -90,6 +94,28 @@ namespace Ryujinx.UI.Common _discordClient?.SetPresence(_discordPresenceMain); } + private static string TruncateToByteLength(string input, int byteLimit) + { + if (Encoding.UTF8.GetByteCount(input) <= byteLimit) + { + return input; + } + + // Find the length to trim the string to guarantee we have space for the trailing ellipsis. + int trimLimit = byteLimit - Encoding.UTF8.GetByteCount(Ellipsis); + + // Basic trim to best case scenario of 1 byte characters. + input = input[..trimLimit]; + + while (Encoding.UTF8.GetByteCount(input) > trimLimit) + { + // Remove one character from the end of the string at a time. + input = input[..^1]; + } + + return input.TrimEnd() + Ellipsis; + } + public static void Exit() { _discordClient?.Dispose(); diff --git a/ryujinx/src/Ryujinx/App.axaml.cs b/ryujinx/src/Ryujinx/App.axaml.cs index 387a6dc145..24d8a70a17 100644 --- a/ryujinx/src/Ryujinx/App.axaml.cs +++ b/ryujinx/src/Ryujinx/App.axaml.cs @@ -1,8 +1,10 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; +using Avalonia.Platform; using Avalonia.Styling; using Avalonia.Threading; +using Ryujinx.Ava.Common; using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Windows; @@ -84,7 +86,7 @@ namespace Ryujinx.Ava ApplyConfiguredTheme(); } - private void ApplyConfiguredTheme() + public void ApplyConfiguredTheme() { try { @@ -92,13 +94,18 @@ namespace Ryujinx.Ava if (string.IsNullOrWhiteSpace(baseStyle)) { - ConfigurationState.Instance.UI.BaseStyle.Value = "Dark"; + ConfigurationState.Instance.UI.BaseStyle.Value = "Auto"; baseStyle = ConfigurationState.Instance.UI.BaseStyle; } + ThemeVariant systemTheme = DetectSystemTheme(); + + ThemeManager.OnThemeChanged(); + RequestedThemeVariant = baseStyle switch { + "Auto" => systemTheme, "Light" => ThemeVariant.Light, "Dark" => ThemeVariant.Dark, _ => ThemeVariant.Default, @@ -111,5 +118,28 @@ namespace Ryujinx.Ava ShowRestartDialog(); } } + + /// + /// Converts a PlatformThemeVariant value to the corresponding ThemeVariant value. + /// + public static ThemeVariant ConvertThemeVariant(PlatformThemeVariant platformThemeVariant) => + platformThemeVariant switch + { + PlatformThemeVariant.Dark => ThemeVariant.Dark, + PlatformThemeVariant.Light => ThemeVariant.Light, + _ => ThemeVariant.Default, + }; + + public static ThemeVariant DetectSystemTheme() + { + if (Application.Current is App app) + { + var colorValues = app.PlatformSettings.GetColorValues(); + + return ConvertThemeVariant(colorValues.ThemeVariant); + } + + return ThemeVariant.Default; + } } } diff --git a/ryujinx/src/Ryujinx/Assets/Locales/ar_SA.json b/ryujinx/src/Ryujinx/Assets/Locales/ar_SA.json index 51df3a0522..73e55633bb 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/ar_SA.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/ar_SA.json @@ -1,38 +1,42 @@ { - "Language": "العربية", - "MenuBarFileOpenApplet": "فتح التطبيق المُصغَّر", - "MenuBarFileOpenAppletOpenMiiAppletToolTip": "افتح تطبيق محرر الـMii المُصغَّر في الوضع المستقل", + "Language": "اَلْعَرَبِيَّةُ", + "MenuBarFileOpenApplet": "فتح التطبيق المصغر", + "MenuBarFileOpenAppletOpenMiiAppletToolTip": "‫افتح تطبيق تحرير Mii في الوضع المستقل", "SettingsTabInputDirectMouseAccess": "الوصول المباشر للفأرة", "SettingsTabSystemMemoryManagerMode": "وضع إدارة الذاكرة:", "SettingsTabSystemMemoryManagerModeSoftware": "البرنامج", "SettingsTabSystemMemoryManagerModeHost": "المُضيف (سريع)", - "SettingsTabSystemMemoryManagerModeHostUnchecked": "المضيف غير محدد (سريع، غير آمن)", - "SettingsTabSystemUseHypervisor": "استخدم الهايبرڤايزور", + "SettingsTabSystemMemoryManagerModeHostUnchecked": "المضيف (غير مفحوص) (أسرع، غير آمن)", + "SettingsTabSystemUseHypervisor": "استخدم مراقب الأجهزة الافتراضية", "MenuBarFile": "_ملف", "MenuBarFileOpenFromFile": "_تحميل تطبيق من ملف", - "MenuBarFileOpenUnpacked": "تحميل لعبه غير محزومه", - "MenuBarFileOpenEmuFolder": "فتح مجلد Ryujinx", + "MenuBarFileOpenUnpacked": "تحميل لُعْبَة غير محزومة", + "MenuBarFileOpenEmuFolder": "‫فتح مجلد Ryujinx", "MenuBarFileOpenLogsFolder": "فتح مجلد السجلات", "MenuBarFileExit": "_خروج", "MenuBarOptions": "_خيارات", - "MenuBarOptionsToggleFullscreen": "وضع ملء الشاشة", + "MenuBarOptionsToggleFullscreen": "التبديل إلى وضع ملء الشاشة", "MenuBarOptionsStartGamesInFullscreen": "ابدأ الألعاب في وضع ملء الشاشة", "MenuBarOptionsStopEmulation": "إيقاف المحاكاة", - "MenuBarOptionsSettings": "الإعدادات", - "MenuBarOptionsManageUserProfiles": "إدارة الملفات الشخصية للمستخدم", - "MenuBarActions": "الإجراءات", + "MenuBarOptionsSettings": "_الإعدادات", + "MenuBarOptionsManageUserProfiles": "_إدارة الملفات الشخصية للمستخدم", + "MenuBarActions": "_الإجراءات", "MenuBarOptionsSimulateWakeUpMessage": "محاكاة رسالة الاستيقاظ", - "MenuBarActionsScanAmiibo": "فحص Amiibo", - "MenuBarTools": "الأدوات", - "MenuBarToolsInstallFirmware": "تثبيت البرامج الثابتة", - "MenuBarFileToolsInstallFirmwareFromFile": "تثبيت البرنامج الثابت من XCI أو ZIP", + "MenuBarActionsScanAmiibo": "‫فحص Amiibo", + "MenuBarTools": "_الأدوات", + "MenuBarToolsInstallFirmware": "تثبيت البرنامج الثابت", + "MenuBarFileToolsInstallFirmwareFromFile": "تثبيت برنامج ثابت من XCI أو ZIP", "MenuBarFileToolsInstallFirmwareFromDirectory": "تثبيت برنامج ثابت من مجلد", "MenuBarToolsManageFileTypes": "إدارة أنواع الملفات", "MenuBarToolsInstallFileTypes": "تثبيت أنواع الملفات", "MenuBarToolsUninstallFileTypes": "إزالة أنواع الملفات", + "MenuBarView": "_عرض", + "MenuBarViewWindow": "حجم النافذة", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_مساعدة", "MenuBarHelpCheckForUpdates": "تحقق من التحديثات", - "MenuBarHelpAbout": "عن البرنامج", + "MenuBarHelpAbout": "حول", "MenuSearch": "بحث...", "GameListHeaderFavorite": "مفضلة", "GameListHeaderIcon": "الأيقونة", @@ -40,62 +44,63 @@ "GameListHeaderDeveloper": "المطور", "GameListHeaderVersion": "الإصدار", "GameListHeaderTimePlayed": "وقت اللعب", - "GameListHeaderLastPlayed": "اخر تشغيل", - "GameListHeaderFileExtension": "امتداد الملف", + "GameListHeaderLastPlayed": "آخر مرة لُعبت", + "GameListHeaderFileExtension": "صيغة الملف", "GameListHeaderFileSize": "حجم الملف", "GameListHeaderPath": "المسار", "GameListContextMenuOpenUserSaveDirectory": "فتح مجلد حفظ المستخدم", "GameListContextMenuOpenUserSaveDirectoryToolTip": "يفتح المجلد الذي يحتوي على حفظ المستخدم للتطبيق", "GameListContextMenuOpenDeviceSaveDirectory": "فتح مجلد حفظ الجهاز", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "يفتح المجلد الذي يحتوي على حفظ الجهاز للتطبيق", - "GameListContextMenuOpenBcatSaveDirectory": "فتح مجلد حفظ الـBCAT", - "GameListContextMenuOpenBcatSaveDirectoryToolTip": "يفتح المجلد الذي يحتوي على حفظ الـBCAT للتطبيق", - "GameListContextMenuManageTitleUpdates": "إدارة تحديثات العنوان", - "GameListContextMenuManageTitleUpdatesToolTip": "يفتح نافذة إدارة تحديث العنوان", + "GameListContextMenuOpenBcatSaveDirectory": "‫فتح مجلد حفظ الـBCAT", + "GameListContextMenuOpenBcatSaveDirectoryToolTip": "‫يفتح المجلد الذي يحتوي على حفظ الـBCAT للتطبيق", + "GameListContextMenuManageTitleUpdates": "إدارة تحديثات اللُعبة", + "GameListContextMenuManageTitleUpdatesToolTip": "يفتح نافذة إدارة تحديث اللُعبة", "GameListContextMenuManageDlc": "إدارة المحتوي الإضافي", "GameListContextMenuManageDlcToolTip": "يفتح نافذة إدارة المحتوي الإضافي", "GameListContextMenuCacheManagement": "إدارة ذاكرة التخزين المؤقت", - "GameListContextMenuCacheManagementPurgePptc": "إعادة بناء PPTC في قائمة الانتظار", - "GameListContextMenuCacheManagementPurgePptcToolTip": "تنشيط PPTC لإعادة البناء في وقت التمهيد عند بدء تشغيل اللعبة التالية", - "GameListContextMenuCacheManagementPurgeShaderCache": "إزالة ذاكرة التشغيل المؤقتة للمظللات ", - "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "حذف الذاكرة المؤقتة للمظللات الخاصة بالتطبيق", - "GameListContextMenuCacheManagementOpenPptcDirectory": "فتح مجلد PPTC", - "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "يفتح المجلد الذي يحتوي على الـPPTC للتطبيق", - "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "فتح مجلد الذاكرة المؤقتة للمظللات ", - "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "يفتح المجلد الذي يحتوي على ذاكرة التشغيل المؤقتة للمظللات الخاصة بالتطبيق", - "GameListContextMenuExtractData": "إستخراج البيانات", + "GameListContextMenuCacheManagementPurgePptc": "قائمة انتظار إعادة بناء الـ‫PPTC", + "GameListContextMenuCacheManagementPurgePptcToolTip": "تنشيط ‫PPTC لإعادة البناء في وقت الإقلاع عند بدء تشغيل اللعبة التالي", + "GameListContextMenuCacheManagementPurgeShaderCache": "تنظيف ذاكرة مرشحات الفيديو المؤقتة", + "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "يحذف ذاكرة مرشحات الفيديو المؤقتة الخاصة بالتطبيق", + "GameListContextMenuCacheManagementOpenPptcDirectory": "‫فتح مجلد PPTC", + "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "‫‫يفتح المجلد الذي يحتوي على ذاكرة التخزين المؤقت للترجمة المستمرة (PPTC) للتطبيق", + "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "فتح مجلد الذاكرة المؤقتة لمرشحات الفيديو ", + "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "يفتح المجلد الذي يحتوي على ذاكرة المظللات المؤقتة للتطبيق", + "GameListContextMenuExtractData": "استخراج البيانات", "GameListContextMenuExtractDataExeFS": "ExeFS", - "GameListContextMenuExtractDataExeFSToolTip": "إستخراج قسم ExeFS من التكوين الحالي للتطبيقات (بما في ذلك التحديثات)", + "GameListContextMenuExtractDataExeFSToolTip": "‫‫ استخراج قسم نظام الملفات القابل للتنفيذ (ExeFS) من الإعدادات الحالية للتطبيقات (يتضمن التحديثات)", "GameListContextMenuExtractDataRomFS": "RomFS", - "GameListContextMenuExtractDataRomFSToolTip": "استخراج قسم RomFS من التكوين الحالي للتطبيقات (بما في ذلك التحديثات)", + "GameListContextMenuExtractDataRomFSToolTip": "استخراج قسم RomFS من الإعدادات الحالية للتطبيقات (يتضمن التحديثات)", "GameListContextMenuExtractDataLogo": "شعار", - "GameListContextMenuExtractDataLogoToolTip": "استخراج قسم الشعار من التكوين الحالي للتطبيقات (بما في ذلك التحديثات)", + "GameListContextMenuExtractDataLogoToolTip": "استخراج قسم الشعار من الإعدادات الحالية للتطبيقات (يتضمن التحديثات)", "GameListContextMenuCreateShortcut": "إنشاء اختصار للتطبيق", - "GameListContextMenuCreateShortcutToolTip": "قم بإنشاء اختصار لسطح المكتب لتشغيل التطبيق المحدد", - "GameListContextMenuCreateShortcutToolTipMacOS": "قم بإنشاء اختصار في مجلد تطبيقات نظام التشغيل MacOS الذي يقوم بتشغيل التطبيق المحدد", - "GameListContextMenuOpenModsDirectory": "فتح مجلد التعديلات", - "GameListContextMenuOpenModsDirectoryToolTip": "يفتح المجلد الذي يحتوي على تعديلات التطبيق", - "GameListContextMenuOpenSdModsDirectory": "فتح مجلد تعديلات Atmosphere", - "GameListContextMenuOpenSdModsDirectoryToolTip": "يفتح دليل Atmosphere لبطاقة SD البديلة الذي يحتوي على تعديلات التطبيق. مفيد للتعديلات التي تم تعبئتها للأجهزة الحقيقية.", - "StatusBarGamesLoaded": "{0}/{1} الألعاب التي تم تحميلها", + "GameListContextMenuCreateShortcutToolTip": "أنشئ اختصار سطح مكتب لتشغيل التطبيق المحدد", + "GameListContextMenuCreateShortcutToolTipMacOS": "أنشئ اختصار يُشغل التطبيق المحدد في مجلد تطبيقات ‫macOS", + "GameListContextMenuOpenModsDirectory": "‫فتح مجلد التعديلات (Mods)", + "GameListContextMenuOpenModsDirectoryToolTip": "يفتح المجلد الذي يحتوي على تعديلات‫(mods) التطبيق", + "GameListContextMenuOpenSdModsDirectory": "فتح مجلد تعديلات‫(mods) أتموسفير", + "GameListContextMenuOpenSdModsDirectoryToolTip": "يفتح مجلد أتموسفير لبطاقة SD البديلة الذي يحتوي على تعديلات التطبيق. مفيد للتعديلات التي تم تعبئتها للأجهزة الحقيقية.", + "StatusBarGamesLoaded": "{0}/{1} لعبة تم تحميلها", "StatusBarSystemVersion": "إصدار النظام: {0}", "LinuxVmMaxMapCountDialogTitle": "الحد الأدنى لتعيينات الذاكرة المكتشفة", "LinuxVmMaxMapCountDialogTextPrimary": "هل ترغب في زيادة قيمة vm.max_map_count إلى {0}", - "LinuxVmMaxMapCountDialogTextSecondary": "قد تحاول بعض الألعاب إنشاء المزيد من تعيينات الذاكرة أكثر مما هو مسموح به حاليا. سيتحطم Ryujinx بمجرد تجاوز هذا الحد.", + "LinuxVmMaxMapCountDialogTextSecondary": "قد تحاول بعض الألعاب إنشاء المزيد من تعيينات الذاكرة أكثر مما هو مسموح به حاليا. سيغلق ريوجينكس بمجرد تجاوز هذا الحد.", "LinuxVmMaxMapCountDialogButtonUntilRestart": "نعم، حتى إعادة التشغيل التالية", - "LinuxVmMaxMapCountDialogButtonPersistent": "نعم، بشكل دائم", + "LinuxVmMaxMapCountDialogButtonPersistent": "نعم، دائمًا", "LinuxVmMaxMapCountWarningTextPrimary": "الحد الأقصى لمقدار تعيينات الذاكرة أقل من الموصى به.", - "LinuxVmMaxMapCountWarningTextSecondary": "القيمة الحالية لـ vm.max_map_count ({0}) أقل من {1}. قد تحاول بعض الألعاب إنشاء المزيد من تعيينات الذاكرة أكثر مما هو مسموح به حاليا. سيتحطم Ryujinx بمجرد تجاوز هذا الحد.\n\nقد ترغب في زيادة الحد اليدوي أو تثبيت pkexec، مما يسمح لـ Ryujinx بالمساعدة في ذلك.", + "LinuxVmMaxMapCountWarningTextSecondary": "القيمة الحالية لـ vm.max_map_count ({0}) أقل من {1}. قد تحاول بعض الألعاب إنشاء المزيد من تعيينات الذاكرة أكثر مما هو مسموح به حاليا. سيغلق ريوجينكس بمجرد تجاوز هذا الحد.\n\nقد ترغب إما في زيادة الحد يدويا أو تثبيت pkexec، مما يسمح لـ ريوجينكس بالمساعدة في ذلك.", "Settings": "إعدادات", "SettingsTabGeneral": "واجهة المستخدم", - "SettingsTabGeneralGeneral": "العامة", + "SettingsTabGeneralGeneral": "عام", "SettingsTabGeneralEnableDiscordRichPresence": "تمكين وجود ديسكورد الغني", "SettingsTabGeneralCheckUpdatesOnLaunch": "التحقق من وجود تحديثات عند التشغيل", "SettingsTabGeneralShowConfirmExitDialog": "إظهار مربع حوار \"تأكيد الخروج\"", + "SettingsTabGeneralRememberWindowState": "تذكر حجم/موضع النافذة", "SettingsTabGeneralHideCursor": "إخفاء المؤشر:", - "SettingsTabGeneralHideCursorNever": "مطلقاً", + "SettingsTabGeneralHideCursorNever": "مطلقا", "SettingsTabGeneralHideCursorOnIdle": "عند الخمول", - "SettingsTabGeneralHideCursorAlways": "دائماً", + "SettingsTabGeneralHideCursorAlways": "دائما", "SettingsTabGeneralGameDirectories": "مجلدات الألعاب", "SettingsTabGeneralAdd": "إضافة", "SettingsTabGeneralRemove": "إزالة", @@ -127,24 +132,24 @@ "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "إسبانية أمريكا اللاتينية", "SettingsTabSystemSystemLanguageSimplifiedChinese": "الصينية المبسطة", "SettingsTabSystemSystemLanguageTraditionalChinese": "الصينية التقليدية", - "SettingsTabSystemSystemTimeZone": "نظام التوقيت للنظام:", + "SettingsTabSystemSystemTimeZone": "النطاق الزمني للنظام:", "SettingsTabSystemSystemTime": "توقيت النظام:", "SettingsTabSystemEnableVsync": "VSync", - "SettingsTabSystemEnablePptc": "PPTC (Profiled Persistent Translation Cache)", - "SettingsTabSystemEnableFsIntegrityChecks": "FS Integrity Checks", + "SettingsTabSystemEnablePptc": "PPTC (ذاكرة التخزين المؤقت للترجمة المستمرة)", + "SettingsTabSystemEnableFsIntegrityChecks": "التحقق من سلامة نظام الملفات", "SettingsTabSystemAudioBackend": "خلفية الصوت:", "SettingsTabSystemAudioBackendDummy": "زائف", "SettingsTabSystemAudioBackendOpenAL": "OpenAL", "SettingsTabSystemAudioBackendSoundIO": "SoundIO", "SettingsTabSystemAudioBackendSDL2": "SDL2", - "SettingsTabSystemHacks": "الاختراقات", + "SettingsTabSystemHacks": "هاكات", "SettingsTabSystemHacksNote": "قد يتسبب في عدم الاستقرار", "SettingsTabSystemExpandDramSize": "استخدام تخطيط الذاكرة البديل (المطورين)", "SettingsTabSystemIgnoreMissingServices": "تجاهل الخدمات المفقودة", "SettingsTabGraphics": "الرسومات", - "SettingsTabGraphicsAPI": "الرسومات API", + "SettingsTabGraphicsAPI": "API الرسومات ", "SettingsTabGraphicsEnableShaderCache": "تفعيل ذاكرة المظللات المؤقتة", - "SettingsTabGraphicsAnisotropicFiltering": "تصفية متباين الخواص:", + "SettingsTabGraphicsAnisotropicFiltering": "تصفية:", "SettingsTabGraphicsAnisotropicFilteringAuto": "تلقائي", "SettingsTabGraphicsAnisotropicFiltering2x": "2x", "SettingsTabGraphicsAnisotropicFiltering4x": "4×", @@ -152,7 +157,7 @@ "SettingsTabGraphicsAnisotropicFiltering16x": "16x", "SettingsTabGraphicsResolutionScale": "مقياس الدقة", "SettingsTabGraphicsResolutionScaleCustom": "مخصص (لا ينصح به)", - "SettingsTabGraphicsResolutionScaleNative": "الأصل (720p/1080p)", + "SettingsTabGraphicsResolutionScaleNative": "الأصل ‫(720p/1080p)", "SettingsTabGraphicsResolutionScale2x": "2x (1440p/2160p)", "SettingsTabGraphicsResolutionScale3x": "3x (2160p/3240p)", "SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p) (لا ينصح به)", @@ -162,11 +167,11 @@ "SettingsTabGraphicsAspectRatio16x10": "16:10", "SettingsTabGraphicsAspectRatio21x9": "21:9", "SettingsTabGraphicsAspectRatio32x9": "32:9", - "SettingsTabGraphicsAspectRatioStretch": "تمدد لتلائم حجم النافذة", + "SettingsTabGraphicsAspectRatioStretch": "تمديد لتناسب النافذة", "SettingsTabGraphicsDeveloperOptions": "خيارات المطور", - "SettingsTabGraphicsShaderDumpPath": "مسار تفريغ الرسومات:", - "SettingsTabLogging": "التسجيل", - "SettingsTabLoggingLogging": "التسجيل", + "SettingsTabGraphicsShaderDumpPath": "مسار تفريغ المظللات:", + "SettingsTabLogging": "تسجيل", + "SettingsTabLoggingLogging": "تسجيل", "SettingsTabLoggingEnableLoggingToFile": "تفعيل التسجيل إلى ملف", "SettingsTabLoggingEnableStubLogs": "تفعيل سجلات الـStub", "SettingsTabLoggingEnableInfoLogs": "تفعيل سجلات المعلومات", @@ -174,8 +179,8 @@ "SettingsTabLoggingEnableErrorLogs": "تفعيل سجلات الأخطاء", "SettingsTabLoggingEnableTraceLogs": "تفعيل سجلات التتبع", "SettingsTabLoggingEnableGuestLogs": "تفعيل سجلات الضيوف", - "SettingsTabLoggingEnableFsAccessLogs": "تمكين سجلات الوصول لـ Fs", - "SettingsTabLoggingFsGlobalAccessLogMode": "وضع سجل وصول عالمي Fs :", + "SettingsTabLoggingEnableFsAccessLogs": "تمكين سجلات الوصول إلى نظام الملفات", + "SettingsTabLoggingFsGlobalAccessLogMode": "وضع سجل الوصول العالمي لنظام الملفات:", "SettingsTabLoggingDeveloperOptions": "خيارات المطور", "SettingsTabLoggingDeveloperOptionsNote": "تحذير: سوف يقلل من الأداء", "SettingsTabLoggingGraphicsBackendLogLevel": "مستوى سجل خلفية الرسومات:", @@ -185,15 +190,15 @@ "SettingsTabLoggingGraphicsBackendLogLevelAll": "الكل", "SettingsTabLoggingEnableDebugLogs": "تمكين سجلات التصحيح", "SettingsTabInput": "الإدخال", - "SettingsTabInputEnableDockedMode": "مركب بالمنصة", - "SettingsTabInputDirectKeyboardAccess": "الوصول المباشر إلى لوحة المفاتيح", + "SettingsTabInputEnableDockedMode": "تركيب بالمنصة", + "SettingsTabInputDirectKeyboardAccess": "الوصول المباشر للوحة المفاتيح", "SettingsButtonSave": "حفظ", "SettingsButtonClose": "إغلاق", "SettingsButtonOk": "موافق", "SettingsButtonCancel": "إلغاء", "SettingsButtonApply": "تطبيق", "ControllerSettingsPlayer": "اللاعب", - "ControllerSettingsPlayer1": "اللاعب ١", + "ControllerSettingsPlayer1": "اللاعب 1", "ControllerSettingsPlayer2": "اللاعب 2", "ControllerSettingsPlayer3": "اللاعب 3", "ControllerSettingsPlayer4": "اللاعب 4", @@ -205,12 +210,12 @@ "ControllerSettingsInputDevice": "جهاز الإدخال", "ControllerSettingsRefresh": "تحديث", "ControllerSettingsDeviceDisabled": "معطل", - "ControllerSettingsControllerType": "نوع ذراع التحكم", + "ControllerSettingsControllerType": "نوع وحدة التحكم", "ControllerSettingsControllerTypeHandheld": "محمول", - "ControllerSettingsControllerTypeProController": "Pro Controller", - "ControllerSettingsControllerTypeJoyConPair": "اقتران جوي كون", - "ControllerSettingsControllerTypeJoyConLeft": "يسار جوي كون", - "ControllerSettingsControllerTypeJoyConRight": "يمين جوي كون", + "ControllerSettingsControllerTypeProController": "وحدة تحكم برو", + "ControllerSettingsControllerTypeJoyConPair": "زوج جوي كون", + "ControllerSettingsControllerTypeJoyConLeft": "جوي كون اليسار ", + "ControllerSettingsControllerTypeJoyConRight": " جوي كون اليمين", "ControllerSettingsProfile": "الملف الشخصي", "ControllerSettingsProfileDefault": "افتراضي", "ControllerSettingsLoad": "تحميل", @@ -223,13 +228,13 @@ "ControllerSettingsButtonY": "Y", "ControllerSettingsButtonPlus": "+", "ControllerSettingsButtonMinus": "-", - "ControllerSettingsDPad": "لوحة الاتجاه", + "ControllerSettingsDPad": "أسهم الاتجاهات", "ControllerSettingsDPadUp": "اعلى", "ControllerSettingsDPadDown": "أسفل", "ControllerSettingsDPadLeft": "يسار", "ControllerSettingsDPadRight": "يمين", "ControllerSettingsStickButton": "زر", - "ControllerSettingsStickUp": "اعلى", + "ControllerSettingsStickUp": "فوق", "ControllerSettingsStickDown": "أسفل", "ControllerSettingsStickLeft": "يسار", "ControllerSettingsStickRight": "يمين", @@ -239,11 +244,11 @@ "ControllerSettingsStickDeadzone": "المنطقة الميتة:", "ControllerSettingsLStick": "العصا اليسرى", "ControllerSettingsRStick": "العصا اليمنى", - "ControllerSettingsTriggersLeft": "المحفزات اليسرى", - "ControllerSettingsTriggersRight": "المحفزات اليمني", - "ControllerSettingsTriggersButtonsLeft": "أزرار التحفيز اليسرى", - "ControllerSettingsTriggersButtonsRight": "أزرار التحفيز اليمنى", - "ControllerSettingsTriggers": "المحفزات", + "ControllerSettingsTriggersLeft": "الأزندة اليسرى", + "ControllerSettingsTriggersRight": "الأزندة اليمني", + "ControllerSettingsTriggersButtonsLeft": "أزرار الزناد اليسرى", + "ControllerSettingsTriggersButtonsRight": "أزرار الزناد اليمنى", + "ControllerSettingsTriggers": "أزندة", "ControllerSettingsTriggerL": "L", "ControllerSettingsTriggerR": "R", "ControllerSettingsTriggerZL": "ZL", @@ -258,27 +263,128 @@ "ControllerSettingsTriggerThreshold": "قوة التحفيز:", "ControllerSettingsMotion": "الحركة", "ControllerSettingsMotionUseCemuhookCompatibleMotion": "استخدام الحركة المتوافقة مع CemuHook", - "ControllerSettingsMotionControllerSlot": "خانة ذراع التحكم:", + "ControllerSettingsMotionControllerSlot": "خانة وحدة التحكم:", "ControllerSettingsMotionMirrorInput": "إعادة الإدخال", - "ControllerSettingsMotionRightJoyConSlot": "خانة اليمين JoyCon :", + "ControllerSettingsMotionRightJoyConSlot": "خانة جويكون اليمين :", "ControllerSettingsMotionServerHost": "مضيف الخادم:", - "ControllerSettingsMotionGyroSensitivity": "حساسية الغيرو:", - "ControllerSettingsMotionGyroDeadzone": "منطقة الغيرو الميتة:", + "ControllerSettingsMotionGyroSensitivity": "حساسية مستشعر الحركة:", + "ControllerSettingsMotionGyroDeadzone": "منطقة مستشعر الحركة الميتة:", "ControllerSettingsSave": "حفظ", "ControllerSettingsClose": "إغلاق", + "KeyUnknown": "مجهول", + "KeyShiftLeft": "زر ‫Shift الأيسر", + "KeyShiftRight": "زر ‫Shift الأيمن", + "KeyControlLeft": "زر ‫Ctrl الأيسر", + "KeyMacControlLeft": "زر ⌃ الأيسر", + "KeyControlRight": "زر ‫Ctrl الأيمن", + "KeyMacControlRight": "زر ⌃ الأيمن", + "KeyAltLeft": "زر ‫Alt الأيسر", + "KeyMacAltLeft": "زر ⌥ الأيسر", + "KeyAltRight": "زر ‫Alt الأيمن", + "KeyMacAltRight": "زر ⌥ الأيمن", + "KeyWinLeft": "زر ⊞ الأيسر", + "KeyMacWinLeft": "زر ⌘ الأيسر", + "KeyWinRight": "زر ⊞ الأيمن", + "KeyMacWinRight": "زر ⌘ الأيمن", + "KeyMenu": "زر القائمة", + "KeyUp": "فوق", + "KeyDown": "اسفل", + "KeyLeft": "يسار", + "KeyRight": "يمين", + "KeyEnter": "مفتاح الإدخال", + "KeyEscape": "زر ‫Escape", + "KeySpace": "مسافة", + "KeyTab": "زر ‫Tab", + "KeyBackSpace": "زر المسح للخلف", + "KeyInsert": "زر Insert", + "KeyDelete": "زر الحذف", + "KeyPageUp": "زر ‫Page Up", + "KeyPageDown": "زر ‫Page Down", + "KeyHome": "زر ‫Home", + "KeyEnd": "زر ‫End", + "KeyCapsLock": "زر الحروف الكبيرة", + "KeyScrollLock": "زر ‫Scroll Lock", + "KeyPrintScreen": "زر ‫Print Screen", + "KeyPause": "زر Pause", + "KeyNumLock": "زر Num Lock", + "KeyClear": "زر Clear", + "KeyKeypad0": "لوحة الأرقام 0", + "KeyKeypad1": "لوحة الأرقام 1", + "KeyKeypad2": "لوحة الأرقام 2", + "KeyKeypad3": "لوحة الأرقام 3", + "KeyKeypad4": "لوحة الأرقام 4", + "KeyKeypad5": "لوحة الأرقام 5", + "KeyKeypad6": "لوحة الأرقام 6", + "KeyKeypad7": "لوحة الأرقام 7", + "KeyKeypad8": "لوحة الأرقام 8", + "KeyKeypad9": "لوحة الأرقام 9", + "KeyKeypadDivide": "لوحة الأرقام علامة القسمة", + "KeyKeypadMultiply": "لوحة الأرقام علامة الضرب", + "KeyKeypadSubtract": "لوحة الأرقام علامة الطرح\n", + "KeyKeypadAdd": "لوحة الأرقام علامة الزائد", + "KeyKeypadDecimal": "لوحة الأرقام الفاصلة العشرية", + "KeyKeypadEnter": "لوحة الأرقام زر الإدخال", + "KeyNumber0": "٠", + "KeyNumber1": "١", + "KeyNumber2": "٢", + "KeyNumber3": "٣", + "KeyNumber4": "٤", + "KeyNumber5": "٥", + "KeyNumber6": "٦", + "KeyNumber7": "٧", + "KeyNumber8": "٨", + "KeyNumber9": "٩", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "غير مرتبط", + "GamepadLeftStick": "زر عصا التحكم اليسرى", + "GamepadRightStick": "زر عصا التحكم اليمنى", + "GamepadLeftShoulder": "زر الكتف الأيسر‫ L", + "GamepadRightShoulder": "زر الكتف الأيمن‫ R", + "GamepadLeftTrigger": "زر الزناد الأيسر‫ (ZL)", + "GamepadRightTrigger": "زر الزناد الأيمن‫ (ZR)", + "GamepadDpadUp": "فوق", + "GamepadDpadDown": "اسفل", + "GamepadDpadLeft": "يسار", + "GamepadDpadRight": "يمين", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "دليل", + "GamepadMisc1": "متنوع", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "لوحة اللمس", + "GamepadSingleLeftTrigger0": "زر الزناد الأيسر 0", + "GamepadSingleRightTrigger0": "زر الزناد الأيمن 0", + "GamepadSingleLeftTrigger1": "زر الزناد الأيسر 1", + "GamepadSingleRightTrigger1": "زر الزناد الأيمن 1", + "StickLeft": "عصا التحكم اليسرى", + "StickRight": "عصا التحكم اليمنى", "UserProfilesSelectedUserProfile": "الملف الشخصي المحدد للمستخدم:", "UserProfilesSaveProfileName": "حفظ اسم الملف الشخصي", "UserProfilesChangeProfileImage": "تغيير صورة الملف الشخصي", "UserProfilesAvailableUserProfiles": "الملفات الشخصية للمستخدم المتاحة:", - "UserProfilesAddNewProfile": "أنشئ ملف شخصي", + "UserProfilesAddNewProfile": "إنشاء ملف الشخصي", "UserProfilesDelete": "حذف", "UserProfilesClose": "إغلاق", "ProfileNameSelectionWatermark": "اختر اسم مستعار", "ProfileImageSelectionTitle": "تحديد صورة الملف الشخصي", "ProfileImageSelectionHeader": "اختر صورة الملف الشخصي", - "ProfileImageSelectionNote": "يمكنك استيراد صورة ملف تعريف مخصصة، أو تحديد صورة رمزية من البرامج الثابتة للنظام", + "ProfileImageSelectionNote": "يمكنك استيراد صورة ملف شخصي مخصصة، أو تحديد صورة رمزية من البرامج الثابتة للنظام", "ProfileImageSelectionImportImage": "استيراد ملف الصورة", - "ProfileImageSelectionSelectAvatar": "حدد الصورة الرمزية للبرنامج الثابت", + "ProfileImageSelectionSelectAvatar": "حدد الصورة الرمزية من البرنامج الثابتة", "InputDialogTitle": "حوار الإدخال", "InputDialogOk": "موافق", "InputDialogCancel": "إلغاء", @@ -289,13 +395,13 @@ "AvatarSetBackgroundColor": "تعيين لون الخلفية", "AvatarClose": "إغلاق", "ControllerSettingsLoadProfileToolTip": "تحميل الملف الشخصي", - "ControllerSettingsAddProfileToolTip": "إضافة ملف تعريف", - "ControllerSettingsRemoveProfileToolTip": "إزالة ملف التعريف", - "ControllerSettingsSaveProfileToolTip": "حفظ ملف التعريف", + "ControllerSettingsAddProfileToolTip": "إضافة ملف شخصي", + "ControllerSettingsRemoveProfileToolTip": "إزالة الملف الشخصي", + "ControllerSettingsSaveProfileToolTip": "حفظ الملف الشخصي", "MenuBarFileToolsTakeScreenshot": "أخذ لقطة للشاشة", "MenuBarFileToolsHideUi": "إخفاء واجهة المستخدم", "GameListContextMenuRunApplication": "تشغيل التطبيق", - "GameListContextMenuToggleFavorite": "تبديل المفضلة", + "GameListContextMenuToggleFavorite": "تعيين كمفضل", "GameListContextMenuToggleFavoriteToolTip": "تبديل الحالة المفضلة للعبة", "SettingsTabGeneralTheme": "السمة:", "SettingsTabGeneralThemeDark": "داكن", @@ -304,44 +410,44 @@ "ControllerSettingsRumble": "الاهتزاز", "ControllerSettingsRumbleStrongMultiplier": "مضاعف اهتزاز قوي", "ControllerSettingsRumbleWeakMultiplier": "مضاعف اهتزاز ضعيف", - "DialogMessageSaveNotAvailableMessage": "لا يوجد حفظ لـ {0} [{1:x16}]", - "DialogMessageSaveNotAvailableCreateSaveMessage": "هل ترغب في إنشاء حفظ لهذه اللعبة؟", - "DialogConfirmationTitle": "Ryujinx - تأكيد", - "DialogUpdaterTitle": "تحديث Ryujinx", - "DialogErrorTitle": "Ryujinx - خطأ", - "DialogWarningTitle": "Ryujinx - تحذير", - "DialogExitTitle": "Ryujinx - الخروج", - "DialogErrorMessage": "واجه Ryujinx خطأ", - "DialogExitMessage": "هل أنت متأكد من أنك تريد إغلاق Ryujinx؟", + "DialogMessageSaveNotAvailableMessage": "لا توجد بيانات الحفظ لـ {0} [{1:x16}]", + "DialogMessageSaveNotAvailableCreateSaveMessage": "هل ترغب في إنشاء بيانات الحفظ لهذه اللعبة؟", + "DialogConfirmationTitle": "ريوجينكس - تأكيد", + "DialogUpdaterTitle": "ريوجينكس - المحدث", + "DialogErrorTitle": "ريوجينكس - خطأ", + "DialogWarningTitle": "ريوجينكس - تحذير", + "DialogExitTitle": "ريوجينكس - الخروج", + "DialogErrorMessage": "واجه ريوجينكس خطأ", + "DialogExitMessage": "هل أنت متأكد من أنك تريد إغلاق ريوجينكس؟", "DialogExitSubMessage": "سيتم فقدان كافة البيانات غير المحفوظة!", - "DialogMessageCreateSaveErrorMessage": "حدث خطأ أثناء إنشاء المحفوظة المحددة: {0}", - "DialogMessageFindSaveErrorMessage": "حدث خطأ أثناء البحث عن البيانات المحفوظة المحددة: {0}", + "DialogMessageCreateSaveErrorMessage": "حدث خطأ أثناء إنشاء بيانات الحفظ المحددة: {0}", + "DialogMessageFindSaveErrorMessage": "حدث خطأ أثناء البحث عن بيانات الحفظ المحددة: {0}", "FolderDialogExtractTitle": "اختر المجلد الذي تريد الاستخراج إليه", "DialogNcaExtractionMessage": "استخراج قسم {0} من {1}...", - "DialogNcaExtractionTitle": "Ryujinx - مستخرج قسم NCA", - "DialogNcaExtractionMainNcaNotFoundErrorMessage": "فشل الاستخراج. لم يكن NCA الرئيسي موجودًا في الملف المحدد.", - "DialogNcaExtractionCheckLogErrorMessage": "فشل الاستخراج. اقرأ ملف السجل لمزيد من المعلومات.", + "DialogNcaExtractionTitle": "ريوجينكس - مستخرج قسم NCA", + "DialogNcaExtractionMainNcaNotFoundErrorMessage": "فشل الاستخراج. لم يكن NCA الرئيسي موجودا في الملف المحدد.", + "DialogNcaExtractionCheckLogErrorMessage": "فشل الاستخراج. اقرأ ملف التسجيل لمزيد من المعلومات.", "DialogNcaExtractionSuccessMessage": "تم الاستخراج بنجاح.", - "DialogUpdaterConvertFailedMessage": "فشل تحويل إصدار Ryujinx الحالي.", + "DialogUpdaterConvertFailedMessage": "فشل تحويل إصدار ريوجينكس الحالي.", "DialogUpdaterCancelUpdateMessage": "إلغاء التحديث", - "DialogUpdaterAlreadyOnLatestVersionMessage": "أنت تستخدم بالفعل أحدث إصدار من Ryujinx!", - "DialogUpdaterFailedToGetVersionMessage": "حدث خطأ أثناء محاولة الحصول على معلومات الإصدار من إصدار GitHub. يمكن أن يحدث هذا إذا تم تجميع إصدار جديد بواسطة GitHub Actions. جرب مجددا بعد دقائق.", - "DialogUpdaterConvertFailedGithubMessage": "فشل تحويل إصدار Ryujinx المستلم من إصدار Github.", - "DialogUpdaterDownloadingMessage": "تحميل التحديث...", - "DialogUpdaterExtractionMessage": "استخراج التحديث...", + "DialogUpdaterAlreadyOnLatestVersionMessage": "أنت تستخدم بالفعل أحدث إصدار من ريوجينكس!", + "DialogUpdaterFailedToGetVersionMessage": "حدث خطأ أثناء محاولة الحصول على معلومات الإصدار من إصدار غيت هاب. يمكن أن يحدث هذا إذا تم تجميع إصدار جديد بواسطة إجراءات غيت هاب. جرب مجددا بعد دقائق.", + "DialogUpdaterConvertFailedGithubMessage": "فشل تحويل إصدار ريوجينكس المستلم من إصدار غيت هاب.", + "DialogUpdaterDownloadingMessage": "جاري تنزيل التحديث...", + "DialogUpdaterExtractionMessage": "جاري استخراج التحديث...", "DialogUpdaterRenamingMessage": "إعادة تسمية التحديث...", "DialogUpdaterAddingFilesMessage": "إضافة تحديث جديد...", "DialogUpdaterCompleteMessage": "اكتمل التحديث", - "DialogUpdaterRestartMessage": "هل تريد إعادة تشغيل Ryujinx الآن؟", + "DialogUpdaterRestartMessage": "هل تريد إعادة تشغيل ريوجينكس الآن؟", "DialogUpdaterNoInternetMessage": "أنت غير متصل بالإنترنت.", "DialogUpdaterNoInternetSubMessage": "يرجى التحقق من أن لديك اتصال إنترنت فعال!", - "DialogUpdaterDirtyBuildMessage": "لا يمكنك تحديث البناء القذر من Ryujinx!", - "DialogUpdaterDirtyBuildSubMessage": "الرجاء تحميل Ryujinx على https://ryujinx.org/ إذا كنت تبحث عن إصدار مدعوم.", + "DialogUpdaterDirtyBuildMessage": "لا يمكنك تحديث نسخة القذرة من ريوجينكس!", + "DialogUpdaterDirtyBuildSubMessage": "الرجاء تحميل ريوجينكس من https://ryujinx.org إذا كنت تبحث عن إصدار مدعوم.", "DialogRestartRequiredMessage": "يتطلب إعادة التشغيل", "DialogThemeRestartMessage": "تم حفظ السمة. إعادة التشغيل مطلوبة لتطبيق السمة.", "DialogThemeRestartSubMessage": "هل تريد إعادة التشغيل", "DialogFirmwareInstallEmbeddedMessage": "هل ترغب في تثبيت البرنامج الثابت المدمج في هذه اللعبة؟ (البرنامج الثابت {0})", - "DialogFirmwareInstallEmbeddedSuccessMessage": "لم يتم العثور على أي برنامج ثابت مثبت ولكن Ryujinx كان قادراً على تثبيت البرنامج الثابت {0} من اللعبة المقدمة.\nسيبدأ المحاكي الآن.", + "DialogFirmwareInstallEmbeddedSuccessMessage": "لم يتم العثور على أي برنامج ثابت مثبت ولكن ريوجينكس كان قادرا على تثبيت البرنامج الثابت {0} من اللعبة المقدمة.\nسيبدأ المحاكي الآن.", "DialogFirmwareNoFirmwareInstalledMessage": "لا يوجد برنامج ثابت مثبت", "DialogFirmwareInstalledMessage": "تم تثبيت البرنامج الثابت {0}", "DialogInstallFileTypesSuccessMessage": "تم تثبيت أنواع الملفات بنجاح!", @@ -349,38 +455,38 @@ "DialogUninstallFileTypesSuccessMessage": "تم إلغاء تثبيت أنواع الملفات بنجاح!", "DialogUninstallFileTypesErrorMessage": "فشل إلغاء تثبيت أنواع الملفات.", "DialogOpenSettingsWindowLabel": "فتح نافذة الإعدادات", - "DialogControllerAppletTitle": "برنامج التحكم", + "DialogControllerAppletTitle": "تطبيق وحدة التحكم المصغر", "DialogMessageDialogErrorExceptionMessage": "خطأ في عرض مربع حوار الرسالة: {0}", "DialogSoftwareKeyboardErrorExceptionMessage": "خطأ في عرض لوحة مفاتيح البرامج: {0}", - "DialogErrorAppletErrorExceptionMessage": "Error displaying ErrorApplet Dialog: {0}", + "DialogErrorAppletErrorExceptionMessage": "خطأ في عرض مربع حوار خطأ التطبيق المصغر: {0}", "DialogUserErrorDialogMessage": "{0}: {1}", "DialogUserErrorDialogInfoMessage": "لمزيد من المعلومات حول كيفية إصلاح هذا الخطأ، اتبع دليل الإعداد الخاص بنا.", "DialogUserErrorDialogTitle": "خطأ ريوجينكس ({0})", "DialogAmiiboApiTitle": "أميبو API", - "DialogAmiiboApiFailFetchMessage": "حدث خطأ أثناء جلب المعلومات من واجهة برمجة التطبيقات.", - "DialogAmiiboApiConnectErrorMessage": "غير قادر على الاتصال بخادم API Amiibo. قد تكون الخدمة متوقفة أو قد تحتاج إلى التحقق من اتصال الإنترنت الخاص بك على الإنترنت.", + "DialogAmiiboApiFailFetchMessage": "حدث خطأ أثناء جلب المعلومات من API.", + "DialogAmiiboApiConnectErrorMessage": "غير قادر على الاتصال بخادم API أميبو. قد تكون الخدمة معطلة أو قد تحتاج إلى التحقق من اتصالك بالإنترنت.", "DialogProfileInvalidProfileErrorMessage": "الملف الشخصي {0} غير متوافق مع نظام تكوين الإدخال الحالي.", "DialogProfileDefaultProfileOverwriteErrorMessage": "لا يمكن الكتابة فوق الملف الشخصي الافتراضي", - "DialogProfileDeleteProfileTitle": "حذف ملف التعريف", + "DialogProfileDeleteProfileTitle": "حذف الملف الشخصي", "DialogProfileDeleteProfileMessage": "هذا الإجراء لا رجعة فيه، هل أنت متأكد من أنك تريد المتابعة؟", "DialogWarning": "تحذير", - "DialogPPTCDeletionMessage": "أنت على وشك الإنتظار لإعادة بناء PTC على التمهيد التالي :\n\n{0}\n\nهل أنت متأكد من أنك تريد المتابعة؟", - "DialogPPTCDeletionErrorMessage": "خطأ في إزالة ذاكرة التخزين المؤقت PPTC في {0}: {1}", - "DialogShaderDeletionMessage": "أنت على وشك حذف ذاكرة التخزين المؤقت لـ Shader من أجل:\n\n{0}\n\nهل انت متأكد انك تريد المتابعة؟", - "DialogShaderDeletionErrorMessage": "Error purging Shader cache at {0}: {1}", - "DialogRyujinxErrorMessage": "واجه Ryujinx خطأ", + "DialogPPTCDeletionMessage": "أنت على وشك الإنتظار لإعادة بناء ذاكرة التخزين المؤقت للترجمة المستمرة (PPTC) عند الإقلاع التالي لـ:\n\n{0}\n\nأمتأكد من رغبتك في المتابعة؟", + "DialogPPTCDeletionErrorMessage": "خطأ خلال تنظيف ذاكرة التخزين المؤقت للترجمة المستمرة (PPTC) في {0}: {1}", + "DialogShaderDeletionMessage": "أنت على وشك حذف ذاكرة المظللات المؤقتة ل:\n\n{0}\n\nهل انت متأكد انك تريد المتابعة؟", + "DialogShaderDeletionErrorMessage": "حدث خطأ أثناء تنظيف ذاكرة المظللات المؤقتة في {0}: {1}", + "DialogRyujinxErrorMessage": "واجه ريوجينكس خطأ", "DialogInvalidTitleIdErrorMessage": "خطأ في واجهة المستخدم: اللعبة المحددة لم يكن لديها معرف عنوان صالح", - "DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "لم يتم العثور على فريموير للنظام صالح في {0}.", + "DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "لم يتم العثور على برنامج ثابت للنظام صالح في {0}.", "DialogFirmwareInstallerFirmwareInstallTitle": "تثبيت البرنامج الثابت {0}", "DialogFirmwareInstallerFirmwareInstallMessage": "سيتم تثبيت إصدار النظام {0}.", "DialogFirmwareInstallerFirmwareInstallSubMessage": "\n\nهذا سيحل محل إصدار النظام الحالي {0}.", "DialogFirmwareInstallerFirmwareInstallConfirmMessage": "\nهل تريد المتابعة؟", "DialogFirmwareInstallerFirmwareInstallWaitMessage": "تثبيت البرنامج الثابت...", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "تم تثبيت إصدار النظام {0} بنجاح.", - "DialogUserProfileDeletionWarningMessage": "لن تكون هناك ملفات تعريف أخرى لفتحها إذا تم حذف الملف الشخصي المحدد", + "DialogUserProfileDeletionWarningMessage": "لن تكون هناك ملفات الشخصية أخرى لفتحها إذا تم حذف الملف الشخصي المحدد", "DialogUserProfileDeletionConfirmMessage": "هل تريد حذف الملف الشخصي المحدد", - "DialogUserProfileUnsavedChangesTitle": "تحذير - التغييرات غير المحفوظة", - "DialogUserProfileUnsavedChangesMessage": "لقد قمت بإجراء تغييرات على ملف تعريف المستخدم هذا ولم يتم حفظها.", + "DialogUserProfileUnsavedChangesTitle": "تحذير - التغييرات غير محفوظة", + "DialogUserProfileUnsavedChangesMessage": "لقد قمت بإجراء تغييرات على الملف الشخصي لهذا المستخدم هذا ولم يتم حفظها.", "DialogUserProfileUnsavedChangesSubMessage": "هل تريد تجاهل التغييرات؟", "DialogControllerSettingsModifiedConfirmMessage": "تم تحديث إعدادات وحدة التحكم الحالية.", "DialogControllerSettingsModifiedConfirmSubMessage": "هل تريد الحفظ ؟", @@ -388,29 +494,29 @@ "DialogModAlreadyExistsMessage": "التعديل موجود بالفعل", "DialogModInvalidMessage": "المجلد المحدد لا يحتوي على تعديل!", "DialogModDeleteNoParentMessage": "فشل الحذف: لم يمكن العثور على المجلد الرئيسي للتعديل\"{0}\"!", - "DialogDlcNoDlcErrorMessage": "الملف المحدد لا يحتوي على DLC للعنوان المحدد!", + "DialogDlcNoDlcErrorMessage": "الملف المحدد لا يحتوي على محتوى إضافي للعنوان المحدد!", "DialogPerformanceCheckLoggingEnabledMessage": "لقد تم تمكين تسجيل التتبع، والذي تم تصميمه ليتم استخدامه من قبل المطورين فقط.", "DialogPerformanceCheckLoggingEnabledConfirmMessage": "للحصول على الأداء الأمثل، يوصى بتعطيل تسجيل التتبع. هل ترغب في تعطيل تسجيل التتبع الآن؟", - "DialogPerformanceCheckShaderDumpEnabledMessage": "لقد قمت بتمكين تفريغ التظليل، والذي تم تصميمه ليستخدمه المطورون فقط.", - "DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "For optimal performance, it's recommended to disable shader dumping. Would you like to disable shader dumping now?", + "DialogPerformanceCheckShaderDumpEnabledMessage": "لقد قمت بتمكين تفريغ المظللات، والذي تم تصميمه ليستخدمه المطورون فقط.", + "DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "للحصول على الأداء الأمثل، يوصى بتعطيل تفريغ المظللات. هل ترغب في تعطيل تفريغ المظللات الآن؟", "DialogLoadAppGameAlreadyLoadedMessage": "تم تحميل لعبة بالفعل", "DialogLoadAppGameAlreadyLoadedSubMessage": "الرجاء إيقاف المحاكاة أو إغلاق المحاكي قبل بدء لعبة أخرى.", - "DialogUpdateAddUpdateErrorMessage": "الملف المحدد لا يحتوي على تحديث للملف المحدد!", - "DialogSettingsBackendThreadingWarningTitle": "Warning - Backend Threading", - "DialogSettingsBackendThreadingWarningMessage": "Ryujinx must be restarted after changing this option for it to apply fully. Depending on your platform, you may need to manually disable your driver's own multithreading when using Ryujinx's.", + "DialogUpdateAddUpdateErrorMessage": "الملف المحدد لا يحتوي على تحديث للعنوان المحدد!", + "DialogSettingsBackendThreadingWarningTitle": "تحذير - خلفية متعددة المسارات", + "DialogSettingsBackendThreadingWarningMessage": "يجب إعادة تشغيل ريوجينكس بعد تغيير هذا الخيار حتى يتم تطبيقه بالكامل. اعتمادا على النظام الأساسي الخاص بك، قد تحتاج إلى تعطيل تعدد المسارات الخاص ببرنامج الرسومات التشغيل الخاص بك يدويًا عند استخدام الخاص بريوجينكس.", "DialogModManagerDeletionWarningMessage": "أنت على وشك حذف التعديل: {0}\n\nهل انت متأكد انك تريد المتابعة؟", "DialogModManagerDeletionAllWarningMessage": "أنت على وشك حذف كافة التعديلات لهذا العنوان.\n\nهل انت متأكد انك تريد المتابعة؟", "SettingsTabGraphicsFeaturesOptions": "المميزات", - "SettingsTabGraphicsBackendMultithreading": "Graphics Backend Multithreading:", + "SettingsTabGraphicsBackendMultithreading": "تعدد المسارات لخلفية الرسومات:", "CommonAuto": "تلقائي", - "CommonOff": "إيقاف", + "CommonOff": "معطل", "CommonOn": "تشغيل", "InputDialogYes": "نعم", "InputDialogNo": "لا", "DialogProfileInvalidProfileNameErrorMessage": "يحتوي اسم الملف على أحرف غير صالحة. يرجى المحاولة مرة أخرى.", "MenuBarOptionsPauseEmulation": "إيقاف مؤقت", "MenuBarOptionsResumeEmulation": "استئناف", - "AboutUrlTooltipMessage": "انقر لفتح موقع Ryujinx في متصفحك الافتراضي.", + "AboutUrlTooltipMessage": "انقر لفتح موقع ريوجينكس في متصفحك الافتراضي.", "AboutDisclaimerMessage": "ريوجينكس لا ينتمي إلى نينتندو™،\nأو أي من شركائها بأي شكل من الأشكال.", "AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) يتم \nاستخدامه في محاكاة أمبيو لدينا.", "AboutPatreonUrlTooltipMessage": "انقر لفتح صفحة ريوجينكس في باتريون في متصفحك الافتراضي.", @@ -419,18 +525,18 @@ "AboutTwitterUrlTooltipMessage": "انقر لفتح صفحة ريوجينكس في تويتر في متصفحك الافتراضي.", "AboutRyujinxAboutTitle": "حول:", "AboutRyujinxAboutContent": "ريوجينكس هو محاكي لجهاز نينتندو سويتش™.\nمن فضلك ادعمنا على باتريون.\nاحصل على آخر الأخبار على تويتر أو ديسكورد.\nيمكن للمطورين المهتمين بالمساهمة معرفة المزيد على غيت هاب أو ديسكورد.", - "AboutRyujinxMaintainersTitle": "تم إصلاحها بواسطة:", + "AboutRyujinxMaintainersTitle": "تتم صيانته بواسطة:", "AboutRyujinxMaintainersContentTooltipMessage": "انقر لفتح صفحة المساهمين في متصفحك الافتراضي.", "AboutRyujinxSupprtersTitle": "مدعوم على باتريون بواسطة:", "AmiiboSeriesLabel": "مجموعة أميبو", "AmiiboCharacterLabel": "شخصية", "AmiiboScanButtonLabel": "فحصه", "AmiiboOptionsShowAllLabel": "إظهار كل أميبو", - "AmiiboOptionsUsRandomTagLabel": "Hack: Use Random tag Uuid", + "AmiiboOptionsUsRandomTagLabel": "هاك: استخدم علامة Uuid عشوائية ", "DlcManagerTableHeadingEnabledLabel": "مفعل", "DlcManagerTableHeadingTitleIdLabel": "معرف العنوان", "DlcManagerTableHeadingContainerPathLabel": "مسار الحاوية", - "DlcManagerTableHeadingFullPathLabel": "المسار كاملاً", + "DlcManagerTableHeadingFullPathLabel": "المسار كاملا", "DlcManagerRemoveAllButton": "حذف الكل", "DlcManagerEnableAllButton": "تشغيل الكل", "DlcManagerDisableAllButton": "تعطيل الكل", @@ -440,100 +546,100 @@ "CommonSort": "فرز", "CommonShowNames": "عرض الأسماء", "CommonFavorite": "المفضلة", - "OrderAscending": "ترتيب تصاعدي", - "OrderDescending": "ترتيب تنازلي", + "OrderAscending": "تصاعدي", + "OrderDescending": "تنازلي", "SettingsTabGraphicsFeatures": "الميزات والتحسينات", "ErrorWindowTitle": "نافذة الخطأ", - "ToggleDiscordTooltip": "اختر ما إذا كنت تريد عرض ريوجينكس في نشاط ديسكورد \"يتم تشغيله حاليًا\" أم لا", - "AddGameDirBoxTooltip": "أدخل دليل اللعبة لإضافته إلى القائمة", - "AddGameDirTooltip": "إضافة دليل اللعبة إلى القائمة", - "RemoveGameDirTooltip": "إزالة دليل اللعبة المحدد", + "ToggleDiscordTooltip": "اختر ما إذا كنت تريد عرض ريوجينكس في نشاط ديسكورد \"يتم تشغيله حاليا\" أم لا", + "AddGameDirBoxTooltip": "أدخل مجلد اللعبة لإضافته إلى القائمة", + "AddGameDirTooltip": "إضافة مجلد اللعبة إلى القائمة", + "RemoveGameDirTooltip": "إزالة مجلد اللعبة المحدد", "CustomThemeCheckTooltip": "استخدم سمة أفالونيا المخصصة لواجهة المستخدم الرسومية لتغيير مظهر قوائم المحاكي", "CustomThemePathTooltip": "مسار سمة واجهة المستخدم المخصصة", "CustomThemeBrowseTooltip": "تصفح للحصول على سمة واجهة المستخدم المخصصة", - "DockModeToggleTooltip": "يجعل وضع الإرساء النظام الذي تمت محاكاته بمثابة جهاز نينتندو سويتش الذي تم إرساءه. يؤدي هذا إلى تحسين الدقة الرسومية في معظم الألعاب. على العكس من ذلك، سيؤدي تعطيل هذا إلى جعل النظام الذي تمت محاكاته يعمل كجهاز نينتندو سويتش محمول، مما يقلل من جودة الرسومات.\n\nقم بتكوين عناصر تحكم اللاعب 1 إذا كنت تخطط لاستخدام وضع الإرساء؛ قم بتكوين عناصر التحكم المحمولة إذا كنت تخطط لاستخدام الوضع المحمول.\n\nاتركه مشغل إذا لم تكن متأكدًا.", - "DirectKeyboardTooltip": "دعم الوصول المباشر إلى لوحة المفاتيح (HID). يوفر وصول الألعاب إلى لوحة المفاتيح الخاصة بك كجهاز لإدخال النص.\n\nيعمل فقط مع الألعاب التي تدعم استخدام لوحة المفاتيح في الأصل على أجهزة سويتش.\n\nاتركه معطلا إذا كنت غير متأكد.", - "DirectMouseTooltip": "دعم الوصول المباشر إلى لوحة المفاتيح (HID). يوفر وصول الألعاب إلى لوحة المفاتيح الخاصة بك كجهاز لإدخال النص.\n\nيعمل فقط مع الألعاب التي تدعم استخدام لوحة المفاتيح في الأصل على أجهزة سويتش.\n\nاتركه معطلا إذا كنت غير متأكد.", + "DockModeToggleTooltip": "يجعل وضع تركيب بالمنصة النظام الذي تمت محاكاته بمثابة جهاز نينتندو سويتش الذي تم تركيبه بالمنصة. يؤدي هذا إلى تحسين الدقة الرسومية في معظم الألعاب. على العكس من ذلك، سيؤدي تعطيل هذا إلى جعل النظام الذي تمت محاكاته يعمل كجهاز نينتندو سويتش محمول، مما يقلل من جودة الرسومات.\n\nقم بتكوين عناصر تحكم اللاعب 1 إذا كنت تخطط لاستخدام وضع تركيب بالمنصة؛ قم بتكوين عناصر التحكم المحمولة إذا كنت تخطط لاستخدام الوضع المحمول.\n\nاتركه مشغل إذا لم تكن متأكدا.", + "DirectKeyboardTooltip": "دعم الوصول المباشر للوحة المفاتيح (HID). يوفر وصول الألعاب إلى لوحة المفاتيح الخاصة بك كجهاز لإدخال النص.\n\nيعمل فقط مع الألعاب التي تدعم استخدام لوحة المفاتيح في الأصل على أجهزة سويتش.\n\nاتركه معطلا إذا كنت غير متأكد.", + "DirectMouseTooltip": "دعم الوصول المباشر للوحة المفاتيح (HID). يوفر وصول الألعاب إلى لوحة المفاتيح الخاصة بك كجهاز لإدخال النص.\n\nيعمل فقط مع الألعاب التي تدعم استخدام لوحة المفاتيح في الأصل على أجهزة سويتش.\n\nاتركه معطلا إذا كنت غير متأكد.", "RegionTooltip": "تغيير منطقة النظام", "LanguageTooltip": "تغيير لغة النظام", - "TimezoneTooltip": "تغيير المنطقة الزمنية للنظام", + "TimezoneTooltip": "تغيير النطاق الزمني للنظام", "TimeTooltip": "تغيير وقت النظام", - "VSyncToggleTooltip": "Emulated console's Vertical Sync. Essentially a frame-limiter for the majority of games; disabling it may cause games to run at higher speed or make loading screens take longer or get stuck.\n\nCan be toggled in-game with a hotkey of your preference (F1 by default). We recommend doing this if you plan on disabling it.\n\nLeave ON if unsure.", - "PptcToggleTooltip": "Saves translated JIT functions so that they do not need to be translated every time the game loads.\n\nReduces stuttering and significantly speeds up boot times after the first boot of a game.\n\nLeave ON if unsure.", + "VSyncToggleTooltip": "محاكاة المزامنة العمودية للجهاز. في الأساس محدد الإطار لغالبية الألعاب؛ قد يؤدي تعطيله إلى تشغيل الألعاب بسرعة أعلى أو جعل شاشات التحميل تستغرق وقتا أطول أو تتعطل.\n\nيمكن تبديله داخل اللعبة باستخدام مفتاح التشغيل السريع الذي تفضله (F1 افتراضيا). نوصي بالقيام بذلك إذا كنت تخطط لتعطيله.\n\nاتركه ممكنا إذا لم تكن متأكدا.", + "PptcToggleTooltip": "يحفظ وظائف JIT المترجمة بحيث لا تحتاج إلى ترجمتها في كل مرة يتم فيها تحميل اللعبة.\n\nيقلل من التقطيع ويسرع بشكل ملحوظ أوقات التشغيل بعد التشغيل الأول للعبة.\n\nاتركه ممكنا إذا لم تكن متأكدا.", "FsIntegrityToggleTooltip": "يتحقق من وجود ملفات تالفة عند تشغيل لعبة ما، وإذا تم اكتشاف ملفات تالفة، فسيتم عرض خطأ تجزئة في السجل.\n\nليس له أي تأثير على الأداء ويهدف إلى المساعدة في استكشاف الأخطاء وإصلاحها.\n\nاتركه مفعلا إذا كنت غير متأكد.", - "AudioBackendTooltip": "Changes the backend used to render audio.\n\nSDL2 is the preferred one, while OpenAL and SoundIO are used as fallbacks. Dummy will have no sound.\n\nSet to SDL2 if unsure.", - "MemoryManagerTooltip": "Change how guest memory is mapped and accessed. Greatly affects emulated CPU performance.\n\nSet to HOST UNCHECKED if unsure.", + "AudioBackendTooltip": "يغير الواجهة الخلفية المستخدمة لتقديم الصوت.\n\nSDL2 هو الخيار المفضل، بينما يتم استخدام OpenAL وSoundIO كبديلين. زائف لن يكون لها صوت.\n\nاضبط على SDL2 إذا لم تكن متأكدا.", + "MemoryManagerTooltip": "تغيير كيفية تعيين ذاكرة الضيف والوصول إليها. يؤثر بشكل كبير على أداء وحدة المعالجة المركزية التي تمت محاكاتها.\n\nاضبط على المضيف غير محدد إذا لم تكن متأكدا.", "MemoryManagerSoftwareTooltip": "استخدام جدول الصفحات البرمجي لترجمة العناوين. أعلى دقة ولكن أبطأ أداء.", - "MemoryManagerHostTooltip": "Directly map memory in the host address space. Much faster JIT compilation and execution.", - "MemoryManagerUnsafeTooltip": "Directly map memory, but do not mask the address within the guest address space before access. Faster, but at the cost of safety. The guest application can access memory from anywhere in Ryujinx, so only run programs you trust with this mode.", - "UseHypervisorTooltip": "Use Hypervisor instead of JIT. Greatly improves performance when available, but can be unstable in its current state.", - "DRamTooltip": "Utilizes an alternative MemoryMode layout to mimic a Switch development model.\n\nThis is only useful for higher-resolution texture packs or 4k resolution mods. Does NOT improve performance.\n\nLeave OFF if unsure.", + "MemoryManagerHostTooltip": "تعيين الذاكرة مباشرة في مساحة عنوان المضيف. تجميع وتنفيذ JIT أسرع بكثير.", + "MemoryManagerUnsafeTooltip": "تعيين الذاكرة مباشرة، ولكن لا تخفي العنوان داخل مساحة عنوان الضيف قبل الوصول. أسرع، ولكن على حساب السلامة. يمكن لتطبيق الضيف الوصول إلى الذاكرة من أي مكان في ريوجينكس، لذا قم بتشغيل البرامج التي تثق بها فقط مع هذا الوضع.", + "UseHypervisorTooltip": "استخدم هايبرڤايزور بدلا من JIT. يعمل على تحسين الأداء بشكل كبير عند توفره، ولكنه قد يكون غير مستقر في حالته الحالية.", + "DRamTooltip": "يستخدم تخطيط وضع الذاكرة البديل لتقليد نموذج سويتش المطورين.\n\nيعد هذا مفيدا فقط لحزم النسيج عالية الدقة أو تعديلات دقة 4K. لا يحسن الأداء.\n\nاتركه معطلا إذا لم تكن متأكدا.", "IgnoreMissingServicesTooltip": "يتجاهل خدمات نظام هوريزون غير المنفذة. قد يساعد هذا في تجاوز الأعطال عند تشغيل ألعاب معينة.\n\nاتركه معطلا إذا كنت غير متأكد.", - "GraphicsBackendThreadingTooltip": "Executes graphics backend commands on a second thread.\n\nSpeeds up shader compilation, reduces stuttering, and improves performance on GPU drivers without multithreading support of their own. Slightly better performance on drivers with multithreading.\n\nSet to AUTO if unsure.", - "GalThreadingTooltip": "Executes graphics backend commands on a second thread.\n\nSpeeds up shader compilation, reduces stuttering, and improves performance on GPU drivers without multithreading support of their own. Slightly better performance on drivers with multithreading.\n\nSet to AUTO if unsure.", - "ShaderCacheToggleTooltip": "Saves a disk shader cache which reduces stuttering in subsequent runs.\n\nLeave ON if unsure.", - "ResolutionScaleTooltip": "يضاعف دقة عرض اللعبة.\n\nقد لا تعمل بعض الألعاب مع هذا وتبدو منقطة حتى عند زيادة الدقة؛ بالنسبة لهذه الألعاب، قد تحتاج إلى العثور على تعديلات تزيل الصقل أو تزيد من دقة العرض الداخلي. لاستخدام الأخير، من المحتمل أن ترغب في تحديد أصلي.\n\nيمكن تغيير هذا الخيار أثناء تشغيل اللعبة بالنقر فوق \"تطبيق\" أدناه؛ يمكنك ببساطة تحريك نافذة الإعدادات جانبًا والتجربة حتى تجد المظهر المفضل للعبة.\n\nضع في اعتبارك أن 4x مبالغة في أي إعداد تقريبًا.", + "GraphicsBackendThreadingTooltip": "ينفذ أوامر الواجهة الخلفية للرسومات على مسار ثاني.\n\nيعمل على تسريع عملية تجميع المظللات وتقليل التقطيع وتحسين الأداء على برامج تشغيل وحدة الرسوميات دون دعم المسارات المتعددة الخاصة بهم. أداء أفضل قليلا على برامج التشغيل ذات المسارات المتعددة.\n\nاضبط على تلقائي إذا لم تكن متأكدا.", + "GalThreadingTooltip": "ينفذ أوامر الواجهة الخلفية للرسومات على مسار ثاني.\n\nيعمل على تسريع عملية تجميع المظللات وتقليل التقطيع وتحسين الأداء على برامج تشغيل وحدة الرسوميات دون دعم المسارات المتعددة الخاصة بهم. أداء أفضل قليلا على برامج التشغيل ذات المسارات المتعددة.\n\nاضبط على تلقائي إذا لم تكن متأكدا.", + "ShaderCacheToggleTooltip": "يحفظ ذاكرة المظللات المؤقتة على القرص مما يقلل من التقطيع في عمليات التشغيل اللاحقة.\n\nاتركه مفعلا إذا لم تكن متأكدا.", + "ResolutionScaleTooltip": "يضاعف دقة عرض اللعبة.\n\nقد لا تعمل بعض الألعاب مع هذا وتبدو منقطة حتى عند زيادة الدقة؛ بالنسبة لهذه الألعاب، قد تحتاج إلى العثور على تعديلات تزيل تنعيم الحواف أو تزيد من دقة العرض الداخلي. لاستخدام الأخير، من المحتمل أن ترغب في تحديد أصلي.\n\nيمكن تغيير هذا الخيار أثناء تشغيل اللعبة بالنقر فوق \"تطبيق\" أدناه؛ يمكنك ببساطة تحريك نافذة الإعدادات جانبًا والتجربة حتى تجد المظهر المفضل للعبة.\n\nضع في اعتبارك أن 4x مبالغة في أي إعداد تقريبًا.", "ResolutionScaleEntryTooltip": "مقياس دقة النقطة العائمة، مثل 1.5. من المرجح أن تتسبب المقاييس غير المتكاملة في حدوث مشكلات أو تعطل.", - "AnisotropyTooltip": "مستوى تصفية متباين الخواص. اضبط على تلقائي لاستخدام القيمة التي تطلبها اللعبة.", - "AspectRatioTooltip": "يتم تطبيق نسبة العرض إلى الارتفاع على نافذة العارض.\n\nقم بتغيير هذا فقط إذا كنت تستخدم تعديل نسبة العرض إلى الارتفاع للعبتك، وإلا سيتم تمديد الرسومات.\n\nاتركه على 16:9 إذا لم تكن متأكدًا.", - "ShaderDumpPathTooltip": "Graphics Shaders Dump Path", + "AnisotropyTooltip": "مستوى تصفية. اضبط على تلقائي لاستخدام القيمة التي تطلبها اللعبة.", + "AspectRatioTooltip": "يتم تطبيق نسبة العرض إلى الارتفاع على نافذة العارض.\n\nقم بتغيير هذا فقط إذا كنت تستخدم تعديل نسبة العرض إلى الارتفاع للعبتك، وإلا سيتم تمديد الرسومات.\n\nاتركه16:9 إذا لم تكن متأكدا.", + "ShaderDumpPathTooltip": "مسار تفريغ المظللات", "FileLogTooltip": "حفظ تسجيل وحدة التحكم إلى ملف سجل على القرص. لا يؤثر على الأداء.", - "StubLogTooltip": "Prints stub log messages in the console. Does not affect performance.", - "InfoLogTooltip": "Prints info log messages in the console. Does not affect performance.", + "StubLogTooltip": "طباعة رسائل سجل stub في وحدة التحكم. لا يؤثر على الأداء.", + "InfoLogTooltip": "طباعة رسائل سجل المعلومات في وحدة التحكم. لا يؤثر على الأداء.", "WarnLogTooltip": "طباعة رسائل سجل التحذير في وحدة التحكم. لا يؤثر على الأداء.", "ErrorLogTooltip": "طباعة رسائل سجل الأخطاء في وحدة التحكم. لا يؤثر على الأداء.", "TraceLogTooltip": "طباعة رسائل سجل التتبع في وحدة التحكم. لا يؤثر على الأداء.", "GuestLogTooltip": "طباعة رسائل سجل الضيف في وحدة التحكم. لا يؤثر على الأداء.", "FileAccessLogTooltip": "طباعة رسائل سجل الوصول إلى الملفات في وحدة التحكم.", - "FSAccessLogModeTooltip": "Enables FS access log output to the console. Possible modes are 0-3", + "FSAccessLogModeTooltip": "تمكين إخراج سجل الوصول إلى نظام الملفات إلى وحدة التحكم. الأوضاع الممكنة هي 0-3", "DeveloperOptionTooltip": "استخدمه بعناية", "OpenGlLogLevel": "يتطلب تمكين مستويات السجل المناسبة", "DebugLogTooltip": "طباعة رسائل سجل التصحيح في وحدة التحكم.\n\nاستخدم هذا فقط إذا طلب منك أحد الموظفين تحديدًا ذلك، لأنه سيجعل من الصعب قراءة السجلات وسيؤدي إلى تدهور أداء المحاكي.", - "LoadApplicationFileTooltip": "افتح مستكشف الملفات لاختيار ملف متوافق مع Switch لتحميله", - "LoadApplicationFolderTooltip": "افتح مستكشف الملفات لاختيار تطبيق متوافق مع Switch للتحميل", - "OpenRyujinxFolderTooltip": "فتح مجلد نظام ملفات Ryujinx", + "LoadApplicationFileTooltip": "افتح مستكشف الملفات لاختيار ملف متوافق مع سويتش لتحميله", + "LoadApplicationFolderTooltip": "افتح مستكشف الملفات لاختيار تطبيق متوافق مع سويتش للتحميل", + "OpenRyujinxFolderTooltip": "فتح مجلد نظام ملفات ريوجينكس", "OpenRyujinxLogsTooltip": "يفتح المجلد الذي تتم كتابة السجلات إليه", - "ExitTooltip": "الخروج من Ryujinx", + "ExitTooltip": "الخروج من ريوجينكس", "OpenSettingsTooltip": "فتح نافذة الإعدادات", - "OpenProfileManagerTooltip": "فتح نافذة إدارة ملفات تعريف المستخدمين", + "OpenProfileManagerTooltip": "فتح نافذة إدارة الملفات الشخصية للمستخدمين", "StopEmulationTooltip": "إيقاف محاكاة اللعبة الحالية والعودة إلى اختيار اللعبة", - "CheckUpdatesTooltip": "التحقق من وجود تحديثات لـ Ryujinx", + "CheckUpdatesTooltip": "التحقق من وجود تحديثات لريوجينكس", "OpenAboutTooltip": "فتح حول النافذة", "GridSize": "حجم الشبكة", "GridSizeTooltip": "تغيير حجم عناصر الشبكة", "SettingsTabSystemSystemLanguageBrazilianPortuguese": "البرتغالية البرازيلية", "AboutRyujinxContributorsButtonHeader": "رؤية جميع المساهمين", - "SettingsTabSystemAudioVolume": "الحجم:", + "SettingsTabSystemAudioVolume": "مستوى الصوت:", "AudioVolumeTooltip": "تغيير مستوى الصوت", "SettingsTabSystemEnableInternetAccess": "الوصول إلى إنترنت كضيف/وضع LAN", - "EnableInternetAccessTooltip": "للسماح للتطبيق المحاكي بالاتصال بالإنترنت.\n\nالألعاب ذات وضع الشبكة المحلية يمكن الاتصال ببعضها البعض عندما يتم تمكين هذا النظام وتكون الأنظمة متصلة بنفس نقطة الوصول. هذا يشمل وحدات التحكم الحقيقية أيضًا.\n\nلا يسمح بالاتصال بخوادم Nintendo. قد يسبب الانهيار في بعض الألعاب التي تحاول الاتصال بالإنترنت.\n\nاتركه متوقفا إن لم يكن مؤكدا.", + "EnableInternetAccessTooltip": "للسماح للتطبيق الذي تمت محاكاته بالاتصال بالإنترنت.\n\nيمكن للألعاب التي تحتوي على وضع LAN الاتصال ببعضها البعض عند تمكين ذلك وتوصيل الأنظمة بنفس نقطة الوصول. وهذا يشمل الأجهزة الحقيقية أيضا.\n\nلا يسمح بالاتصال بخوادم نينتندو. قد يتسبب في حدوث عطل في بعض الألعاب التي تحاول الاتصال بالإنترنت.\n\nاتركه معطلا إذا لم تكن متأكدا.", "GameListContextMenuManageCheatToolTip": "إدارة الغش", "GameListContextMenuManageCheat": "إدارة الغش", "GameListContextMenuManageModToolTip": "إدارة التعديلات", "GameListContextMenuManageMod": "إدارة التعديلات", "ControllerSettingsStickRange": "نطاق:", - "DialogStopEmulationTitle": "Ryujinx - إيقاف المحاكاة", + "DialogStopEmulationTitle": "ريوجينكس - إيقاف المحاكاة", "DialogStopEmulationMessage": "هل أنت متأكد أنك تريد إيقاف المحاكاة؟", - "SettingsTabCpu": "CPU", + "SettingsTabCpu": "المعالج", "SettingsTabAudio": "الصوت", "SettingsTabNetwork": "الشبكة", "SettingsTabNetworkConnection": "اتصال الشبكة", "SettingsTabCpuCache": "ذاكرة المعالج المؤقت", "SettingsTabCpuMemory": "وضع المعالج", - "DialogUpdaterFlatpakNotSupportedMessage": "الرجاء تحديث Ryujinx عبر FlatHub.", - "UpdaterDisabledWarningTitle": "التحديث معطل!", + "DialogUpdaterFlatpakNotSupportedMessage": "الرجاء تحديث ريوجينكس عبر فلات هاب.", + "UpdaterDisabledWarningTitle": "المحدث معطل!", "ControllerSettingsRotate90": "تدوير 90 درجة في اتجاه عقارب الساعة", "IconSize": "حجم الأيقونة", "IconSizeTooltip": "تغيير حجم أيقونات اللعبة", "MenuBarOptionsShowConsole": "عرض وحدة التحكم", - "ShaderCachePurgeError": "Error purging shader cache at {0}: {1}", + "ShaderCachePurgeError": "حدث خطأ أثناء تنظيف ذاكرة المظللات المؤقتة في {0}: {1}", "UserErrorNoKeys": "المفاتيح غير موجودة", "UserErrorNoFirmware": "لم يتم العثور على البرنامج الثابت", "UserErrorFirmwareParsingFailed": "خطأ في تحليل البرنامج الثابت", "UserErrorApplicationNotFound": "التطبيق غير موجود", "UserErrorUnknown": "خطأ غير معروف", "UserErrorUndefined": "خطأ غير محدد", - "UserErrorNoKeysDescription": "لم يتمكن Ryujinx من العثور على ملف 'prod.keys' الخاص بك", + "UserErrorNoKeysDescription": "لم يتمكن ريوجينكس من العثور على ملف 'prod.keys' الخاص بك", "UserErrorNoFirmwareDescription": "لم يتمكن ريوجينكس من العثور على أية برامج ثابتة مثبتة", "UserErrorFirmwareParsingFailedDescription": "لم يتمكن ريوجينكس من تحليل البرامج الثابتة المتوفرة. يحدث هذا عادة بسبب المفاتيح القديمة.", "UserErrorApplicationNotFoundDescription": "تعذر على ريوجينكس العثور على تطبيق صالح في المسار المحدد.", @@ -542,72 +648,73 @@ "OpenSetupGuideMessage": "فتح دليل الإعداد", "NoUpdate": "لا يوجد تحديث", "TitleUpdateVersionLabel": "الإصدار: {0}", - "RyujinxInfo": "Ryujinx - معلومات", - "RyujinxConfirm": "Ryujinx - تأكيد", + "RyujinxInfo": "ريوجينكس - معلومات", + "RyujinxConfirm": "ريوجينكس - تأكيد", "FileDialogAllTypes": "كل الأنواع", - "Never": "مطلقاً", - "SwkbdMinCharacters": "يجب أن يبلغ طوله {0} حرفًا على الأقل", - "SwkbdMinRangeCharacters": "يجب أن يتكون من {0}-{1} حرفًا", + "Never": "مطلقا", + "SwkbdMinCharacters": "يجب أن يبلغ طوله {0} حرفا على الأقل", + "SwkbdMinRangeCharacters": "يجب أن يتكون من {0}-{1} حرفا", "SoftwareKeyboard": "لوحة المفاتيح البرمجية", "SoftwareKeyboardModeNumeric": "يجب أن يكون 0-9 أو '.' فقط", "SoftwareKeyboardModeAlphabet": "يجب أن تكون الأحرف غير CJK فقط", "SoftwareKeyboardModeASCII": "يجب أن يكون نص ASCII فقط", - "ControllerAppletControllers": "ذراع التحكم المدعومة:", + "ControllerAppletControllers": "وحدات التحكم المدعومة:", "ControllerAppletPlayers": "اللاعبين:", "ControllerAppletDescription": "الإعدادات الحالية غير صالحة. افتح الإعدادات وأعد تكوين المدخلات الخاصة بك.", - "ControllerAppletDocked": "Docked mode set. Handheld control should be disabled.", + "ControllerAppletDocked": "تم ضبط وضع تركيب بالمنصة. يجب تعطيل التحكم المحمول.", "UpdaterRenaming": "إعادة تسمية الملفات القديمة...", - "UpdaterRenameFailed": "التحديث غير قادر على إعادة تسمية الملف: {0}", + "UpdaterRenameFailed": "المحدث غير قادر على إعادة تسمية الملف: {0}", "UpdaterAddingFiles": "إضافة ملفات جديدة...", "UpdaterExtracting": "استخراج التحديث...", "UpdaterDownloading": "تحميل التحديث...", "Game": "لعبة", - "Docked": "مركب بالمنصة", + "Docked": "تركيب بالمنصة", "Handheld": "محمول", "ConnectionError": "خطأ في الاتصال", "AboutPageDeveloperListMore": "{0} والمزيد...", "ApiError": "خطأ في API.", - "LoadingHeading": "جارٍ تحميل {0}", - "CompilingPPTC": "تجميع الـ PTC", - "CompilingShaders": "تجميع الظلال", + "LoadingHeading": "جاري تحميل {0}", + "CompilingPPTC": "تجميع الـ‫(PPTC)", + "CompilingShaders": "تجميع المظللات", "AllKeyboards": "كل لوحات المفاتيح", "OpenFileDialogTitle": "حدد ملف مدعوم لفتحه", - "OpenFolderDialogTitle": "حدد مجلدًا يحتوي على لعبة غير مضغوطة", + "OpenFolderDialogTitle": "حدد مجلدا يحتوي على لعبة غير مضغوطة", "AllSupportedFormats": "كل التنسيقات المدعومة", - "RyujinxUpdater": "تحديث Ryujinx", + "RyujinxUpdater": "محدث ريوجينكس", "SettingsTabHotkeys": "مفاتيح الاختصار في لوحة المفاتيح", "SettingsTabHotkeysHotkeys": "مفاتيح الاختصار في لوحة المفاتيح", - "SettingsTabHotkeysToggleVsyncHotkey": "تبديل VSync:", + "SettingsTabHotkeysToggleVsyncHotkey": "تبديل المزامنة العمودية:", "SettingsTabHotkeysScreenshotHotkey": "لقطة الشاشة:", "SettingsTabHotkeysShowUiHotkey": "عرض واجهة المستخدم:", "SettingsTabHotkeysPauseHotkey": "إيقاف مؤقت:", - "SettingsTabHotkeysToggleMuteHotkey": "كتم الصوت:", + "SettingsTabHotkeysToggleMuteHotkey": "كتم:", "ControllerMotionTitle": "إعدادات التحكم بالحركة", "ControllerRumbleTitle": "إعدادات الهزاز", "SettingsSelectThemeFileDialogTitle": "حدد ملف السمة", - "SettingsXamlThemeFile": "Xaml Theme File", + "SettingsXamlThemeFile": "ملف سمة Xaml", "AvatarWindowTitle": "إدارة الحسابات - الصورة الرمزية", "Amiibo": "أميبو", "Unknown": "غير معروف", "Usage": "الاستخدام", "Writable": "قابل للكتابة", - "SelectDlcDialogTitle": "حدد ملفات DLC", + "SelectDlcDialogTitle": "حدد ملفات المحتوي الإضافي", "SelectUpdateDialogTitle": "حدد ملفات التحديث", "SelectModDialogTitle": "حدد مجلد التعديل", - "UserProfileWindowTitle": "مدير ملفات تعريف المستخدمين", + "UserProfileWindowTitle": "مدير الملفات الشخصية للمستخدمين", "CheatWindowTitle": "مدير الغش", "DlcWindowTitle": "إدارة المحتوى القابل للتنزيل لـ {0} ({1})", + "ModWindowTitle": "إدارة التعديلات لـ {0} ({1})", "UpdateWindowTitle": "مدير تحديث العنوان", "CheatWindowHeading": "الغش متوفر لـ {0} [{1}]", "BuildId": "معرف البناء:", "DlcWindowHeading": "المحتويات القابلة للتنزيل {0}", "ModWindowHeading": "{0} تعديل", - "UserProfilesEditProfile": "تعديل المحددة", + "UserProfilesEditProfile": "تعديل المحدد", "Cancel": "إلغاء", "Save": "حفظ", "Discard": "تجاهل", "Paused": "متوقف مؤقتا", - "UserProfilesSetProfileImage": "تعيين صورة ملف التعريف", + "UserProfilesSetProfileImage": "تعيين صورة الملف الشخصي", "UserProfileEmptyNameError": "الاسم مطلوب", "UserProfileNoImageError": "يجب تعيين صورة الملف الشخصي", "GameUpdateWindowHeading": "إدارة التحديثات لـ {0} ({1})", @@ -616,22 +723,22 @@ "UserProfilesName": "الاسم:", "UserProfilesUserId": "معرف المستخدم:", "SettingsTabGraphicsBackend": "خلفية الرسومات", - "SettingsTabGraphicsBackendTooltip": "Select the graphics backend that will be used in the emulator.\n\nVulkan is overall better for all modern graphics cards, as long as their drivers are up to date. Vulkan also features faster shader compilation (less stuttering) on all GPU vendors.\n\nOpenGL may achieve better results on old Nvidia GPUs, on old AMD GPUs on Linux, or on GPUs with lower VRAM, though shader compilation stutters will be greater.\n\nSet to Vulkan if unsure. Set to OpenGL if your GPU does not support Vulkan even with the latest graphics drivers.", + "SettingsTabGraphicsBackendTooltip": "حدد الواجهة الخلفية للرسومات التي سيتم استخدامها في المحاكي.\n\nيعد برنامج فولكان أفضل بشكل عام لجميع بطاقات الرسومات الحديثة، طالما أن برامج التشغيل الخاصة بها محدثة. يتميز فولكان أيضا بتجميع مظللات أسرع (أقل تقطيعا) على جميع بائعي وحدات معالجة الرسومات.\n\nقد يحقق أوبن جي أل نتائج أفضل على وحدات معالجة الرسومات إنفيديا القديمة، أو على وحدات معالجة الرسومات إي إم دي القديمة على لينكس، أو على وحدات معالجة الرسومات ذات ذاكرة الوصول العشوائي للفيديوالأقل، على الرغم من أن تعثرات تجميع المظللات ستكون أكبر.\n\nاضبط على فولكان إذا لم تكن متأكدا. اضبط على أوبن جي أل إذا كانت وحدة معالجة الرسومات الخاصة بك لا تدعم فولكان حتى مع أحدث برامج تشغيل الرسومات.", "SettingsEnableTextureRecompression": "تمكين إعادة ضغط التكستر", - "SettingsEnableTextureRecompressionTooltip": "Compresses ASTC textures in order to reduce VRAM usage.\n\nGames using this texture format include Astral Chain, Bayonetta 3, Fire Emblem Engage, Metroid Prime Remastered, Super Mario Bros. Wonder and The Legend of Zelda: Tears of the Kingdom.\n\nGraphics cards with 4GiB VRAM or less will likely crash at some point while running these games.\n\nEnable only if you're running out of VRAM on the aforementioned games. Leave OFF if unsure.", - "SettingsTabGraphicsPreferredGpu": "GPU المفضل", - "SettingsTabGraphicsPreferredGpuTooltip": "Select the graphics card that will be used with the Vulkan graphics backend.\n\nDoes not affect the GPU that OpenGL will use.\n\nSet to the GPU flagged as \"dGPU\" if unsure. If there isn't one, leave untouched.", - "SettingsAppRequiredRestartMessage": "مطلوب إعادة تشغيل Ryujinx", - "SettingsGpuBackendRestartMessage": "Graphics Backend or GPU settings have been modified. This will require a restart to be applied", + "SettingsEnableTextureRecompressionTooltip": "يضغط تكستر ASTC من أجل تقليل استخدام ذاكرة الوصول العشوائي للفيديو.\n\nتتضمن الألعاب التي تستخدم تنسيق النسيج هذا Astral Chain وBayonetta 3 وFire Emblem Engage وMetroid Prime Remastered وSuper Mario Bros. Wonder وThe Legend of Zelda: Tears of the Kingdom.\n\nمن المحتمل أن تتعطل بطاقات الرسومات التي تحتوي على 4 جيجا بايت من ذاكرة الوصول العشوائي للفيديو أو أقل في مرحلة ما أثناء تشغيل هذه الألعاب.\n\nقم بالتمكين فقط في حالة نفاد ذاكرة الوصول العشوائي للفيديو في الألعاب المذكورة أعلاه. اتركه معطلا إذا لم تكن متأكدا.", + "SettingsTabGraphicsPreferredGpu": "وحدة معالجة الرسوميات المفضلة", + "SettingsTabGraphicsPreferredGpuTooltip": "حدد بطاقة الرسومات التي سيتم استخدامها مع الواجهة الخلفية لرسومات فولكان.\n\nلا يؤثر على وحدة معالجة الرسومات التي سيستخدمها أوبن جي أل.\n\nاضبط على وحدة معالجة الرسومات التي تم وضع علامة عليها كـ \"dGPU\" إذا لم تكن متأكدًا. إذا لم يكن هناك واحد، اتركه.", + "SettingsAppRequiredRestartMessage": "مطلوب إعادة تشغيل ريوجينكس", + "SettingsGpuBackendRestartMessage": "تم تعديل إعدادات الواجهة الخلفية للرسومات أو وحدة معالجة الرسومات. سيتطلب هذا إعادة التشغيل ليتم تطبيقه", "SettingsGpuBackendRestartSubMessage": "\n\nهل تريد إعادة التشغيل الآن؟", - "RyujinxUpdaterMessage": "هل تريد تحديث Ryujinx إلى أحدث إصدار؟", + "RyujinxUpdaterMessage": "هل تريد تحديث ريوجينكس إلى أحدث إصدار؟", "SettingsTabHotkeysVolumeUpHotkey": "زيادة مستوى الصوت:", "SettingsTabHotkeysVolumeDownHotkey": "خفض مستوى الصوت:", - "SettingsEnableMacroHLE": "Enable Macro HLE", - "SettingsEnableMacroHLETooltip": "High-level emulation of GPU Macro code.\n\nImproves performance, but may cause graphical glitches in some games.\n\nLeave ON if unsure.", - "SettingsEnableColorSpacePassthrough": "Color Space Passthrough", - "SettingsEnableColorSpacePassthroughTooltip": "Directs the Vulkan backend to pass through color information without specifying a color space. For users with wide gamut displays, this may result in more vibrant colors, at the cost of color correctness.", - "VolumeShort": "الحجم", + "SettingsEnableMacroHLE": "تمكين Maro HLE", + "SettingsEnableMacroHLETooltip": "محاكاة عالية المستوى لكود مايكرو وحدة معالجة الرسوميات.\n\nيعمل على تحسين الأداء، ولكنه قد يسبب خللا رسوميا في بعض الألعاب.\n\nاتركه مفعلا إذا لم تكن متأكدا.", + "SettingsEnableColorSpacePassthrough": "عبور مساحة اللون", + "SettingsEnableColorSpacePassthroughTooltip": "يوجه واجهة فولكان الخلفية لتمرير معلومات الألوان دون تحديد مساحة اللون. بالنسبة للمستخدمين الذين لديهم شاشات ذات نطاق واسع، قد يؤدي ذلك إلى الحصول على ألوان أكثر حيوية، على حساب صحة الألوان.", + "VolumeShort": "مستوى", "UserProfilesManageSaves": "إدارة الحفظ", "DeleteUserSave": "هل تريد حذف حفظ المستخدم لهذه اللعبة؟", "IrreversibleActionNote": "هذا الإجراء لا يمكن التراجع عنه.", @@ -642,12 +749,12 @@ "Search": "بحث", "UserProfilesRecoverLostAccounts": "استعادة الحسابات المفقودة", "Recover": "استعادة", - "UserProfilesRecoverHeading": "تم العثور على الحفظ للحسابات التالية", - "UserProfilesRecoverEmptyList": "لا توجد ملفات تعريف لاستردادها", - "GraphicsAATooltip": "Applies anti-aliasing to the game render.\n\nFXAA will blur most of the image, while SMAA will attempt to find jagged edges and smooth them out.\n\nNot recommended to use in conjunction with the FSR scaling filter.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on NONE if unsure.", + "UserProfilesRecoverHeading": "تم العثور على حفظ للحسابات التالية", + "UserProfilesRecoverEmptyList": "لا توجد ملفات شخصية لاستردادها", + "GraphicsAATooltip": "يتم تطبيق تنعيم الحواف على عرض اللعبة.\n\nسوف يقوم FXAA بتعتيم معظم الصورة، بينما سيحاول SMAA العثور على حواف خشنة وتنعيمها.\n\nلا ينصح باستخدامه مع فلتر FSR لتكبير.\n\nيمكن تغيير هذا الخيار أثناء تشغيل اللعبة بالنقر فوق \"تطبيق\" أدناه؛ يمكنك ببساطة تحريك نافذة الإعدادات جانبا والتجربة حتى تجد المظهر المفضل للعبة.\n\nاتركه على لا شيء إذا لم تكن متأكدا.", "GraphicsAALabel": "تنعيم الحواف:", "GraphicsScalingFilterLabel": "فلتر التكبير:", - "GraphicsScalingFilterTooltip": "Choose the scaling filter that will be applied when using resolution scale.\n\nBilinear works well for 3D games and is a safe default option.\n\nNearest is recommended for pixel art games.\n\nFSR 1.0 is merely a sharpening filter, not recommended for use with FXAA or SMAA.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on BILINEAR if unsure.", + "GraphicsScalingFilterTooltip": "اختر فلتر التكبير الذي سيتم تطبيقه عند استخدام مقياس الدقة.\n\nيعمل Bilinear بشكل جيد مع الألعاب ثلاثية الأبعاد وهو خيار افتراضي آمن.\n\nيوصى باستخدام Nearest لألعاب البكسل الفنية.\n\nFSR 1.0 هو مجرد مرشح توضيحي، ولا ينصح باستخدامه مع FXAA أو SMAA.\n\nيمكن تغيير هذا الخيار أثناء تشغيل اللعبة بالنقر فوق \"تطبيق\" أدناه؛ يمكنك ببساطة تحريك نافذة الإعدادات جانبا والتجربة حتى تجد المظهر المفضل للعبة.\n\nاتركه على Bilinear إذا لم تكن متأكدا.", "GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterFsr": "FSR", @@ -660,14 +767,14 @@ "UserEditorTitle": "تعديل المستخدم", "UserEditorTitleCreate": "إنشاء مستخدم", "SettingsTabNetworkInterface": "واجهة الشبكة:", - "NetworkInterfaceTooltip": "The network interface used for LAN/LDN features.\n\nIn conjunction with a VPN or XLink Kai and a game with LAN support, can be used to spoof a same-network connection over the Internet.\n\nLeave on DEFAULT if unsure.", + "NetworkInterfaceTooltip": "واجهة الشبكة مستخدمة لميزات LAN/LDN.\n\nبالاشتراك مع VPN أو XLink Kai ولعبة تدعم LAN، يمكن استخدامها لتزييف اتصال الشبكة نفسها عبر الإنترنت.\n\nاتركه على الافتراضي إذا لم تكن متأكدا.", "NetworkInterfaceDefault": "افتراضي", - "PackagingShaders": "Packaging Shaders", - "AboutChangelogButton": "عرض سجل التغييرات على GitHub", + "PackagingShaders": "تعبئة المظللات", + "AboutChangelogButton": "عرض سجل التغييرات على غيت هاب", "AboutChangelogButtonTooltipMessage": "انقر لفتح سجل التغيير لهذا الإصدار في متصفحك الافتراضي.", "SettingsTabNetworkMultiplayer": "لعب جماعي", - "MultiplayerMode": "النمط:", - "MultiplayerModeTooltip": "Change LDN multiplayer mode.\n\nLdnMitm will modify local wireless/local play functionality in games to function as if it were LAN, allowing for local, same-network connections with other Ryujinx instances and hacked Nintendo Switch consoles that have the ldn_mitm module installed.\n\nMultiplayer requires all players to be on the same game version (i.e. Super Smash Bros. Ultimate v13.0.1 can't connect to v13.0.0).\n\nLeave DISABLED if unsure.", + "MultiplayerMode": "الوضع:", + "MultiplayerModeTooltip": "تغيير وضع LDN متعدد اللاعبين.\n\nسوف يقوم LdnMitm بتعديل وظيفة اللعب المحلية/اللاسلكية المحلية في الألعاب لتعمل كما لو كانت شبكة LAN، مما يسمح باتصالات الشبكة المحلية نفسها مع محاكيات ريوجينكس الأخرى وأجهزة نينتندو سويتش المخترقة التي تم تثبيت وحدة ldn_mitm عليها.\n\nيتطلب وضع اللاعبين المتعددين أن يكون جميع اللاعبين على نفس إصدار اللعبة (على سبيل المثال، يتعذر على الإصدار 13.0.1 من سوبر سماش برذرز ألتميت الاتصال بالإصدار 13.0.0).\n\nاتركه معطلا إذا لم تكن متأكدا.", "MultiplayerModeDisabled": "معطل", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/ryujinx/src/Ryujinx/Assets/Locales/de_DE.json b/ryujinx/src/Ryujinx/Assets/Locales/de_DE.json index 71af4f3feb..4012931985 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/de_DE.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/de_DE.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Dateitypen verwalten", "MenuBarToolsInstallFileTypes": "Dateitypen installieren", "MenuBarToolsUninstallFileTypes": "Dateitypen deinstallieren", + "MenuBarView": "_Ansicht", + "MenuBarViewWindow": "Fenstergröße", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Hilfe", "MenuBarHelpCheckForUpdates": "Nach Updates suchen", "MenuBarHelpAbout": "Über Ryujinx", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Aktiviere die Statusanzeige für Discord", "SettingsTabGeneralCheckUpdatesOnLaunch": "Beim Start nach Updates suchen", "SettingsTabGeneralShowConfirmExitDialog": "Zeige den \"Beenden bestätigen\"-Dialog", + "SettingsTabGeneralRememberWindowState": "Fenstergröße/-position merken", "SettingsTabGeneralHideCursor": "Mauszeiger ausblenden", "SettingsTabGeneralHideCursorNever": "Niemals", "SettingsTabGeneralHideCursorOnIdle": "Mauszeiger bei Inaktivität ausblenden", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Gyro-Deadzone:", "ControllerSettingsSave": "Speichern", "ControllerSettingsClose": "Schließen", + "KeyUnknown": "Unbekannt", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "Ausgewähltes Profil:", "UserProfilesSaveProfileName": "Profilname speichern", "UserProfilesChangeProfileImage": "Profilbild ändern", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Benutzerprofile verwalten", "CheatWindowTitle": "Spiel-Cheats verwalten", "DlcWindowTitle": "Spiel-DLC verwalten", + "ModWindowTitle": "Manage Mods for {0} ({1})", "UpdateWindowTitle": "Spiel-Updates verwalten", "CheatWindowHeading": "Cheats verfügbar für {0} [{1}]", "BuildId": "BuildId:", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/el_GR.json b/ryujinx/src/Ryujinx/Assets/Locales/el_GR.json index ba5c7078c6..ccdf6e0e41 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/el_GR.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/el_GR.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Διαχείριση τύπων αρχείων", "MenuBarToolsInstallFileTypes": "Εγκαταστήσετε τύπους αρχείων.", "MenuBarToolsUninstallFileTypes": "Απεγκαταστήσετε τύπους αρχείων", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Βοήθεια", "MenuBarHelpCheckForUpdates": "Έλεγχος για Ενημερώσεις", "MenuBarHelpAbout": "Σχετικά με", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Ενεργοποίηση Εμπλουτισμένης Παρουσίας Discord", "SettingsTabGeneralCheckUpdatesOnLaunch": "Έλεγχος για Ενημερώσεις στην Εκκίνηση", "SettingsTabGeneralShowConfirmExitDialog": "Εμφάνιση διαλόγου \"Επιβεβαίωση Εξόδου\".", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "Απόκρυψη Κέρσορα:", "SettingsTabGeneralHideCursorNever": "Ποτέ", "SettingsTabGeneralHideCursorOnIdle": "Απόκρυψη Δρομέα στην Αδράνεια", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Νεκρή Ζώνη Γυροσκοπίου:", "ControllerSettingsSave": "Αποθήκευση", "ControllerSettingsClose": "Κλείσιμο", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "Επιλεγμένο Προφίλ Χρήστη:", "UserProfilesSaveProfileName": "Αποθήκευση Ονόματος Προφίλ", "UserProfilesChangeProfileImage": "Αλλαγή Εικόνας Προφίλ", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Διαχειριστής Προφίλ Χρήστη", "CheatWindowTitle": "Διαχειριστής των Cheats", "DlcWindowTitle": "Downloadable Content Manager", + "ModWindowTitle": "Manage Mods for {0} ({1})", "UpdateWindowTitle": "Διαχειριστής Ενημερώσεων Τίτλου", "CheatWindowHeading": "Διαθέσιμα Cheats για {0} [{1}]", "BuildId": "BuildId:", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/en_US.json b/ryujinx/src/Ryujinx/Assets/Locales/en_US.json index 2299d9e665..8df0f96a14 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/en_US.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/en_US.json @@ -404,6 +404,7 @@ "GameListContextMenuToggleFavorite": "Toggle Favorite", "GameListContextMenuToggleFavoriteToolTip": "Toggle Favorite status of Game", "SettingsTabGeneralTheme": "Theme:", + "SettingsTabGeneralThemeAuto": "Auto", "SettingsTabGeneralThemeDark": "Dark", "SettingsTabGeneralThemeLight": "Light", "ControllerSettingsConfigureGeneral": "Configure", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/es_ES.json b/ryujinx/src/Ryujinx/Assets/Locales/es_ES.json index 38499c046f..e58fa5dcf8 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/es_ES.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/es_ES.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Administrar tipos de archivo", "MenuBarToolsInstallFileTypes": "Instalar tipos de archivo", "MenuBarToolsUninstallFileTypes": "Desinstalar tipos de archivo", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Ayuda", "MenuBarHelpCheckForUpdates": "Buscar actualizaciones", "MenuBarHelpAbout": "Acerca de", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Habilitar estado en Discord", "SettingsTabGeneralCheckUpdatesOnLaunch": "Buscar actualizaciones al iniciar", "SettingsTabGeneralShowConfirmExitDialog": "Mostrar diálogo de confirmación al cerrar", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "Esconder el cursor:", "SettingsTabGeneralHideCursorNever": "Nunca", "SettingsTabGeneralHideCursorOnIdle": "Ocultar cursor cuando esté inactivo", @@ -155,7 +160,7 @@ "SettingsTabGraphicsResolutionScaleNative": "Nativa (720p/1080p)", "SettingsTabGraphicsResolutionScale2x": "x2 (1440p/2160p)", "SettingsTabGraphicsResolutionScale3x": "x3 (2160p/3240p)", - "SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p) (Not recommended)", + "SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p) (no recomendado)", "SettingsTabGraphicsAspectRatio": "Relación de aspecto:", "SettingsTabGraphicsAspectRatio4x3": "4:3", "SettingsTabGraphicsAspectRatio16x9": "16:9", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Zona muerta de Gyro:", "ControllerSettingsSave": "Guardar", "ControllerSettingsClose": "Cerrar", + "KeyUnknown": "Desconocido", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "Perfil de usuario seleccionado:", "UserProfilesSaveProfileName": "Guardar nombre de perfil", "UserProfilesChangeProfileImage": "Cambiar imagen de perfil", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Administrar perfiles de usuario", "CheatWindowTitle": "Administrar cheats", "DlcWindowTitle": "Administrar contenido descargable", + "ModWindowTitle": "Manage Mods for {0} ({1})", "UpdateWindowTitle": "Administrar actualizaciones", "CheatWindowHeading": "Cheats disponibles para {0} [{1}]", "BuildId": "Id de compilación:", @@ -647,12 +754,12 @@ "GraphicsAATooltip": "Applies anti-aliasing to the game render.\n\nFXAA will blur most of the image, while SMAA will attempt to find jagged edges and smooth them out.\n\nNot recommended to use in conjunction with the FSR scaling filter.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on NONE if unsure.", "GraphicsAALabel": "Suavizado de bordes:", "GraphicsScalingFilterLabel": "Filtro de escalado:", - "GraphicsScalingFilterTooltip": "Choose the scaling filter that will be applied when using resolution scale.\n\nBilinear works well for 3D games and is a safe default option.\n\nNearest is recommended for pixel art games.\n\nFSR 1.0 is merely a sharpening filter, not recommended for use with FXAA or SMAA.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on BILINEAR if unsure.", - "GraphicsScalingFilterBilinear": "Bilinear", - "GraphicsScalingFilterNearest": "Nearest", + "GraphicsScalingFilterTooltip": "Elija el filtro de escala que se aplicará al utilizar la escala de resolución.\n\nBilinear funciona bien para juegos 3D y es una opción predeterminada segura.\n\nSe recomienda el bilinear para juegos de pixel art.\n\nFSR 1.0 es simplemente un filtro de afilado, no se recomienda su uso con FXAA o SMAA.\n\nEsta opción se puede cambiar mientras se ejecuta un juego haciendo clic en \"Aplicar\" a continuación; simplemente puedes mover la ventana de configuración a un lado y experimentar hasta que encuentres tu estilo preferido para un juego.\n\nDéjelo en BILINEAR si no está seguro.", + "GraphicsScalingFilterBilinear": "Bilinear\n", + "GraphicsScalingFilterNearest": "Cercano", "GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterLevelLabel": "Nivel", - "GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.", + "GraphicsScalingFilterLevelTooltip": "Ajuste el nivel de nitidez FSR 1.0. Mayor es más nítido.", "SmaaLow": "SMAA Bajo", "SmaaMedium": "SMAA Medio", "SmaaHigh": "SMAA Alto", @@ -660,14 +767,14 @@ "UserEditorTitle": "Editar usuario", "UserEditorTitleCreate": "Crear Usuario", "SettingsTabNetworkInterface": "Interfaz de Red", - "NetworkInterfaceTooltip": "The network interface used for LAN/LDN features.\n\nIn conjunction with a VPN or XLink Kai and a game with LAN support, can be used to spoof a same-network connection over the Internet.\n\nLeave on DEFAULT if unsure.", + "NetworkInterfaceTooltip": "Interfaz de red usada para características LAN/LDN.\n\njunto con una VPN o XLink Kai y un juego con soporte LAN, puede usarse para suplantar una conexión de la misma red a través de Internet.\n\nDeje en DEFAULT si no está seguro.", "NetworkInterfaceDefault": "Predeterminado", "PackagingShaders": "Empaquetando sombreadores", "AboutChangelogButton": "Ver registro de cambios en GitHub", "AboutChangelogButtonTooltipMessage": "Haga clic para abrir el registro de cambios para esta versión en su navegador predeterminado.", "SettingsTabNetworkMultiplayer": "Multijugador", "MultiplayerMode": "Modo:", - "MultiplayerModeTooltip": "Change LDN multiplayer mode.\n\nLdnMitm will modify local wireless/local play functionality in games to function as if it were LAN, allowing for local, same-network connections with other Ryujinx instances and hacked Nintendo Switch consoles that have the ldn_mitm module installed.\n\nMultiplayer requires all players to be on the same game version (i.e. Super Smash Bros. Ultimate v13.0.1 can't connect to v13.0.0).\n\nLeave DISABLED if unsure.", - "MultiplayerModeDisabled": "Disabled", + "MultiplayerModeTooltip": "Cambiar modo LDN multijugador.\n\nLdnMitm modificará la funcionalidad local de juego inalámbrico para funcionar como si fuera LAN, permitiendo locales conexiones de la misma red con otras instancias de Ryujinx y consolas hackeadas de Nintendo Switch que tienen instalado el módulo ldn_mitm.\n\nMultijugador requiere que todos los jugadores estén en la misma versión del juego (por ejemplo, Super Smash Bros. Ultimate v13.0.1 no se puede conectar a v13.0.0).\n\nDejar DESACTIVADO si no está seguro.", + "MultiplayerModeDisabled": "Deshabilitar", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/ryujinx/src/Ryujinx/Assets/Locales/fr_FR.json b/ryujinx/src/Ryujinx/Assets/Locales/fr_FR.json index bb2864cf2c..99a060650c 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/fr_FR.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/fr_FR.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Gérer les types de fichiers", "MenuBarToolsInstallFileTypes": "Installer les types de fichiers", "MenuBarToolsUninstallFileTypes": "Désinstaller les types de fichiers", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Aide", "MenuBarHelpCheckForUpdates": "Vérifier les mises à jour", "MenuBarHelpAbout": "À propos", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Activer Discord Rich Presence", "SettingsTabGeneralCheckUpdatesOnLaunch": "Vérifier les mises à jour au démarrage", "SettingsTabGeneralShowConfirmExitDialog": "Afficher le message de \"Confirmation de sortie\"", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "Masquer le Curseur :", "SettingsTabGeneralHideCursorNever": "Jamais", "SettingsTabGeneralHideCursorOnIdle": "Masquer le curseur si inactif", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Zone morte du gyroscope:", "ControllerSettingsSave": "Enregistrer", "ControllerSettingsClose": "Fermer", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "Profil utilisateur sélectionné :", "UserProfilesSaveProfileName": "Enregistrer le nom du profil", "UserProfilesChangeProfileImage": "Changer l'image du profil", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Gestionnaire de profils utilisateur", "CheatWindowTitle": "Gestionnaire de triches", "DlcWindowTitle": "Gérer le contenu téléchargeable pour {0} ({1})", + "ModWindowTitle": "Gérer les mods pour {0} ({1})", "UpdateWindowTitle": "Gestionnaire de mises à jour", "CheatWindowHeading": "Cheats disponibles pour {0} [{1}]", "BuildId": "BuildId:", @@ -648,8 +755,8 @@ "GraphicsAALabel": "Anticrénelage :", "GraphicsScalingFilterLabel": "Filtre de mise à l'échelle :", "GraphicsScalingFilterTooltip": "Choisissez le filtre de mise à l'échelle qui sera appliqué lors de l'utilisation de la mise à l'échelle de la résolution.\n\nLe filtre bilinéaire fonctionne bien pour les jeux en 3D et constitue une option par défaut sûre.\n\nLe filtre le plus proche est recommandé pour les jeux de pixel art.\n\nFSR 1.0 est simplement un filtre de netteté, non recommandé pour une utilisation avec FXAA ou SMAA.\n\nCette option peut être modifiée pendant qu'un jeu est en cours d'exécution en cliquant sur \"Appliquer\" ci-dessous ; vous pouvez simplement déplacer la fenêtre des paramètres de côté et expérimenter jusqu'à ce que vous trouviez l'aspect souhaité pour un jeu.\n\nLaissez sur BILINEAR si vous n'êtes pas sûr.", - "GraphicsScalingFilterBilinear": "Bilinear", - "GraphicsScalingFilterNearest": "Nearest", + "GraphicsScalingFilterBilinear": "Bilinéaire", + "GraphicsScalingFilterNearest": "Le plus proche", "GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterLevelLabel": "Niveau ", "GraphicsScalingFilterLevelTooltip": "Définissez le niveau de netteté FSR 1.0. Plus élevé signifie plus net.", @@ -668,6 +775,6 @@ "SettingsTabNetworkMultiplayer": "Multijoueur", "MultiplayerMode": "Mode :", "MultiplayerModeTooltip": "Changer le mode multijoueur LDN.\n\nLdnMitm modifiera la fonctionnalité de jeu sans fil local/jeu local dans les jeux pour fonctionner comme s'il s'agissait d'un LAN, permettant des connexions locales sur le même réseau avec d'autres instances de Ryujinx et des consoles Nintendo Switch piratées ayant le module ldn_mitm installé.\n\nLe multijoueur nécessite que tous les joueurs soient sur la même version du jeu (par exemple, Super Smash Bros. Ultimate v13.0.1 ne peut pas se connecter à v13.0.0).\n\nLaissez DÉSACTIVÉ si vous n'êtes pas sûr.", - "MultiplayerModeDisabled": "Disabled", + "MultiplayerModeDisabled": "Désactivé", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/ryujinx/src/Ryujinx/Assets/Locales/he_IL.json b/ryujinx/src/Ryujinx/Assets/Locales/he_IL.json index 16d68b775c..848f780809 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/he_IL.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/he_IL.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "ניהול סוגי קבצים", "MenuBarToolsInstallFileTypes": "סוגי קבצי התקנה", "MenuBarToolsUninstallFileTypes": "סוגי קבצי הסרה", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_עזרה", "MenuBarHelpCheckForUpdates": "חפש עדכונים", "MenuBarHelpAbout": "אודות", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "הפעלת תצוגה עשירה בדיסקורד", "SettingsTabGeneralCheckUpdatesOnLaunch": "בדוק אם קיימים עדכונים בהפעלה", "SettingsTabGeneralShowConfirmExitDialog": "הראה דיאלוג \"אשר יציאה\"", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "הסתר את הסמן", "SettingsTabGeneralHideCursorNever": "אף פעם", "SettingsTabGeneralHideCursorOnIdle": "במצב סרק", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "שטח מת של הג'ירוסקופ:", "ControllerSettingsSave": "שמירה", "ControllerSettingsClose": "סגירה", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "פרופיל המשתמש הנבחר:", "UserProfilesSaveProfileName": "שמור שם פרופיל", "UserProfilesChangeProfileImage": "שנה תמונת פרופיל", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "ניהול פרופילי משתמש", "CheatWindowTitle": "נהל צ'יטים למשחק", "DlcWindowTitle": "נהל הרחבות משחק עבור {0} ({1})", + "ModWindowTitle": "Manage Mods for {0} ({1})", "UpdateWindowTitle": "נהל עדכוני משחקים", "CheatWindowHeading": "צ'יטים זמינים עבור {0} [{1}]", "BuildId": "מזהה בניה:", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/it_IT.json b/ryujinx/src/Ryujinx/Assets/Locales/it_IT.json index 0e832ffb6c..280ebd880b 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/it_IT.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/it_IT.json @@ -2,7 +2,7 @@ "Language": "Italiano", "MenuBarFileOpenApplet": "Apri applet", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Apri l'applet Mii Editor in modalità Standalone", - "SettingsTabInputDirectMouseAccess": "Accesso diretto mouse", + "SettingsTabInputDirectMouseAccess": "Accesso diretto al mouse", "SettingsTabSystemMemoryManagerMode": "Modalità di gestione della memoria:", "SettingsTabSystemMemoryManagerModeSoftware": "Software", "SettingsTabSystemMemoryManagerModeHost": "Host (veloce)", @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Gestisci i tipi di file", "MenuBarToolsInstallFileTypes": "Installa i tipi di file", "MenuBarToolsUninstallFileTypes": "Disinstalla i tipi di file", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Aiuto", "MenuBarHelpCheckForUpdates": "Controlla aggiornamenti", "MenuBarHelpAbout": "Informazioni", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Attiva Discord Rich Presence", "SettingsTabGeneralCheckUpdatesOnLaunch": "Controlla aggiornamenti all'avvio", "SettingsTabGeneralShowConfirmExitDialog": "Mostra dialogo \"Conferma Uscita\"", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "Nascondi il cursore:", "SettingsTabGeneralHideCursorNever": "Mai", "SettingsTabGeneralHideCursorOnIdle": "Quando è inattivo", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Zona morta del giroscopio:", "ControllerSettingsSave": "Salva", "ControllerSettingsClose": "Chiudi", + "KeyUnknown": "Sconosciuto", + "KeyShiftLeft": "Maiusc sinistro", + "KeyShiftRight": "Maiusc destro", + "KeyControlLeft": "Ctrl sinistro", + "KeyMacControlLeft": "⌃ sinistro", + "KeyControlRight": "Ctrl destro", + "KeyMacControlRight": "⌃ destro", + "KeyAltLeft": "Alt sinistro", + "KeyMacAltLeft": "⌥ sinistro", + "KeyAltRight": "Alt destro", + "KeyMacAltRight": "⌥ destro", + "KeyWinLeft": "⊞ sinistro", + "KeyMacWinLeft": "⌘ sinistro", + "KeyWinRight": "⊞ destro", + "KeyMacWinRight": "⌘ destro", + "KeyMenu": "Menù", + "KeyUp": "Su", + "KeyDown": "Giù", + "KeyLeft": "Sinistra", + "KeyRight": "Destra", + "KeyEnter": "Invio", + "KeyEscape": "Esc", + "KeySpace": "Spazio", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Ins", + "KeyDelete": "Canc", + "KeyPageUp": "Pag. Su", + "KeyPageDown": "Pag. Giù", + "KeyHome": "Inizio", + "KeyEnd": "Fine", + "KeyCapsLock": "Bloc Maiusc", + "KeyScrollLock": "Bloc Scorr", + "KeyPrintScreen": "Stamp", + "KeyPause": "Pausa", + "KeyNumLock": "Bloc Num", + "KeyClear": "Clear", + "KeyKeypad0": "Tast. num. 0", + "KeyKeypad1": "Tast. num. 1", + "KeyKeypad2": "Tast. num. 2", + "KeyKeypad3": "Tast. num. 3", + "KeyKeypad4": "Tast. num. 4", + "KeyKeypad5": "Tast. num. 5", + "KeyKeypad6": "Tast. num. 6", + "KeyKeypad7": "Tast. num. 7", + "KeyKeypad8": "Tast. num. 8", + "KeyKeypad9": "Tast. num. 9", + "KeyKeypadDivide": "Tast. num. /", + "KeyKeypadMultiply": "Tast. num. *", + "KeyKeypadSubtract": "Tast. num. -", + "KeyKeypadAdd": "Tast. num. +", + "KeyKeypadDecimal": "Tast. num. sep. decimale", + "KeyKeypadEnter": "Tast. num. Invio", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "ò", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "'", + "KeyBracketRight": "ì", + "KeySemicolon": "è", + "KeyQuote": "à", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "ù", + "KeyBackSlash": "<", + "KeyUnbound": "Non assegnato", + "GamepadLeftStick": "Pulsante levetta sinistra", + "GamepadRightStick": "Pulsante levetta destra", + "GamepadLeftShoulder": "Pulsante dorsale sinistro", + "GamepadRightShoulder": "Pulsante dorsale destro", + "GamepadLeftTrigger": "Grilletto sinistro", + "GamepadRightTrigger": "Grilletto destro", + "GamepadDpadUp": "Su", + "GamepadDpadDown": "Giù", + "GamepadDpadLeft": "Sinistra", + "GamepadDpadRight": "Destra", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Grilletto sinistro 0", + "GamepadSingleRightTrigger0": "Grilletto destro 0", + "GamepadSingleLeftTrigger1": "Grilletto sinistro 1", + "GamepadSingleRightTrigger1": "Grilletto destro 1", + "StickLeft": "Levetta sinistra", + "StickRight": "Levetta destra", "UserProfilesSelectedUserProfile": "Profilo utente selezionato:", "UserProfilesSaveProfileName": "Salva nome del profilo", "UserProfilesChangeProfileImage": "Cambia immagine profilo", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Gestione profili utente", "CheatWindowTitle": "Gestione trucchi", "DlcWindowTitle": "Gestisci DLC per {0} ({1})", + "ModWindowTitle": "Gestisci mod per {0} ({1})", "UpdateWindowTitle": "Gestione aggiornamenti", "CheatWindowHeading": "Trucchi disponibili per {0} [{1}]", "BuildId": "ID Build", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/ja_JP.json b/ryujinx/src/Ryujinx/Assets/Locales/ja_JP.json index 8790135e01..61e9632581 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/ja_JP.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/ja_JP.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "ファイル形式を管理", "MenuBarToolsInstallFileTypes": "ファイル形式をインストール", "MenuBarToolsUninstallFileTypes": "ファイル形式をアンインストール", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "ヘルプ(_H)", "MenuBarHelpCheckForUpdates": "アップデートを確認", "MenuBarHelpAbout": "Ryujinx について", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Discord リッチプレゼンスを有効にする", "SettingsTabGeneralCheckUpdatesOnLaunch": "起動時にアップデートを確認する", "SettingsTabGeneralShowConfirmExitDialog": "\"終了を確認\" ダイアログを表示する", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "マウスカーソルを非表示", "SettingsTabGeneralHideCursorNever": "決して", "SettingsTabGeneralHideCursorOnIdle": "アイドル時", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "ジャイロ遊び:", "ControllerSettingsSave": "セーブ", "ControllerSettingsClose": "閉じる", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "選択されたユーザプロファイル:", "UserProfilesSaveProfileName": "プロファイル名をセーブ", "UserProfilesChangeProfileImage": "プロファイル画像を変更", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "ユーザプロファイルを管理", "CheatWindowTitle": "チート管理", "DlcWindowTitle": "DLC 管理", + "ModWindowTitle": "Manage Mods for {0} ({1})", "UpdateWindowTitle": "アップデート管理", "CheatWindowHeading": "利用可能なチート {0} [{1}]", "BuildId": "ビルドID:", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/ko_KR.json b/ryujinx/src/Ryujinx/Assets/Locales/ko_KR.json index 0cd054cab2..a92d084e01 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/ko_KR.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/ko_KR.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "파일 형식 관리", "MenuBarToolsInstallFileTypes": "파일 형식 설치", "MenuBarToolsUninstallFileTypes": "파일 형식 설치 제거", + "MenuBarView": "_보기", + "MenuBarViewWindow": "창 크기", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "도움말(_H)", "MenuBarHelpCheckForUpdates": "업데이트 확인", "MenuBarHelpAbout": "정보", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "디스코드 활동 상태 활성화", "SettingsTabGeneralCheckUpdatesOnLaunch": "시작 시, 업데이트 확인", "SettingsTabGeneralShowConfirmExitDialog": "\"종료 확인\" 대화 상자 표시", + "SettingsTabGeneralRememberWindowState": "창 크기/위치 기억", "SettingsTabGeneralHideCursor": "마우스 커서 숨기기", "SettingsTabGeneralHideCursorNever": "절대 안 함", "SettingsTabGeneralHideCursorOnIdle": "유휴 상태", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "자이로 사각지대 :", "ControllerSettingsSave": "저장", "ControllerSettingsClose": "닫기", + "KeyUnknown": "알 수 없음", + "KeyShiftLeft": "왼쪽 Shift", + "KeyShiftRight": "오른쪽 Shift", + "KeyControlLeft": "왼쪽 Ctrl", + "KeyMacControlLeft": "왼쪽 ^", + "KeyControlRight": "오른쪽 Ctrl", + "KeyMacControlRight": "오른쪽 ^", + "KeyAltLeft": "왼쪽 Alt", + "KeyMacAltLeft": "왼쪽 ⌥", + "KeyAltRight": "오른쪽 Alt", + "KeyMacAltRight": "오른쪽 ⌥", + "KeyWinLeft": "왼쪽 ⊞", + "KeyMacWinLeft": "왼쪽 ⌘", + "KeyWinRight": "오른쪽 ⊞", + "KeyMacWinRight": "오른쪽 ⌘", + "KeyMenu": "메뉴", + "KeyUp": "↑", + "KeyDown": "↓", + "KeyLeft": "←", + "KeyRight": "→", + "KeyEnter": "엔터", + "KeyEscape": "이스케이프", + "KeySpace": "스페이스", + "KeyTab": "탭", + "KeyBackSpace": "백스페이스", + "KeyInsert": "Ins", + "KeyDelete": "Del", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "프린트 스크린", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "지우기", + "KeyKeypad0": "키패드 0", + "KeyKeypad1": "키패드 1", + "KeyKeypad2": "키패드 2", + "KeyKeypad3": "키패드 3", + "KeyKeypad4": "키패드 4", + "KeyKeypad5": "키패드 5", + "KeyKeypad6": "키패드 6", + "KeyKeypad7": "키패드 7", + "KeyKeypad8": "키패드 8", + "KeyKeypad9": "키패드 9", + "KeyKeypadDivide": "키패드 분할", + "KeyKeypadMultiply": "키패드 멀티플", + "KeyKeypadSubtract": "키패드 빼기", + "KeyKeypadAdd": "키패드 추가", + "KeyKeypadDecimal": "숫자 키패드", + "KeyKeypadEnter": "키패드 엔터", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "바인딩 해제", + "GamepadLeftStick": "L 스틱 버튼", + "GamepadRightStick": "R 스틱 버튼", + "GamepadLeftShoulder": "좌측 숄더", + "GamepadRightShoulder": "우측 숄더", + "GamepadLeftTrigger": "좌측 트리거", + "GamepadRightTrigger": "우측 트리거", + "GamepadDpadUp": "↑", + "GamepadDpadDown": "↓", + "GamepadDpadLeft": "←", + "GamepadDpadRight": "→", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "안내", + "GamepadMisc1": "기타", + "GamepadPaddle1": "패들 1", + "GamepadPaddle2": "패들 2", + "GamepadPaddle3": "패들 3", + "GamepadPaddle4": "패들 4", + "GamepadTouchpad": "터치패드", + "GamepadSingleLeftTrigger0": "왼쪽 트리거 0", + "GamepadSingleRightTrigger0": "오른쪽 트리거 0", + "GamepadSingleLeftTrigger1": "왼쪽 트리거 1", + "GamepadSingleRightTrigger1": "오른쪽 트리거 1", + "StickLeft": "좌측 스틱", + "StickRight": "우측 스틱", "UserProfilesSelectedUserProfile": "선택한 사용자 프로필 :", "UserProfilesSaveProfileName": "프로필 이름 저장", "UserProfilesChangeProfileImage": "프로필 이미지 변경", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "사용자 프로파일 관리자", "CheatWindowTitle": "치트 관리자", "DlcWindowTitle": "{0} ({1})의 다운로드 가능한 콘텐츠 관리", + "ModWindowTitle": "{0} ({1})의 Mod 관리", "UpdateWindowTitle": "타이틀 업데이트 관리자", "CheatWindowHeading": "{0} [{1}]에 사용할 수 있는 치트", "BuildId": "빌드ID :", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/pl_PL.json b/ryujinx/src/Ryujinx/Assets/Locales/pl_PL.json index 94096dd7b4..9d1bd7b447 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/pl_PL.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/pl_PL.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Zarządzaj rodzajami plików", "MenuBarToolsInstallFileTypes": "Typy plików instalacyjnych", "MenuBarToolsUninstallFileTypes": "Typy plików dezinstalacyjnych", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Pomoc", "MenuBarHelpCheckForUpdates": "Sprawdź aktualizacje", "MenuBarHelpAbout": "O programie", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Włącz Bogatą Obecność Discord", "SettingsTabGeneralCheckUpdatesOnLaunch": "Sprawdzaj aktualizacje przy uruchomieniu", "SettingsTabGeneralShowConfirmExitDialog": "Pokazuj okno dialogowe \"Potwierdź wyjście\"", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "Ukryj kursor:", "SettingsTabGeneralHideCursorNever": "Nigdy", "SettingsTabGeneralHideCursorOnIdle": "Gdy bezczynny", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Deadzone Żyroskopu:", "ControllerSettingsSave": "Zapisz", "ControllerSettingsClose": "Zamknij", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "Wybrany profil użytkownika:", "UserProfilesSaveProfileName": "Zapisz nazwę profilu", "UserProfilesChangeProfileImage": "Zmień obrazek profilu", @@ -341,7 +447,7 @@ "DialogThemeRestartMessage": "Motyw został zapisany. Aby zastosować motyw, konieczne jest ponowne uruchomienie.", "DialogThemeRestartSubMessage": "Czy chcesz uruchomić ponownie?", "DialogFirmwareInstallEmbeddedMessage": "Czy chcesz zainstalować firmware wbudowany w tę grę? (Firmware {0})", - "DialogFirmwareInstallEmbeddedSuccessMessage": "No installed firmware was found but Ryujinx was able to install firmware {0} from the provided game.\nThe emulator will now start.", + "DialogFirmwareInstallEmbeddedSuccessMessage": "Nie znaleziono zainstalowanego oprogramowania, ale Ryujinx był w stanie zainstalować oprogramowanie {0} z dostarczonej gry.\n\nEmulator uruchomi się teraz.", "DialogFirmwareNoFirmwareInstalledMessage": "Brak Zainstalowanego Firmware'u", "DialogFirmwareInstalledMessage": "Firmware {0} został zainstalowany", "DialogInstallFileTypesSuccessMessage": "Pomyślnie zainstalowano typy plików!", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Menedżer Profili Użytkowników", "CheatWindowTitle": "Menedżer Kodów", "DlcWindowTitle": "Menedżer Zawartości do Pobrania", + "ModWindowTitle": "Zarządzaj modami dla {0} ({1})", "UpdateWindowTitle": "Menedżer Aktualizacji Tytułu", "CheatWindowHeading": "Kody Dostępne dla {0} [{1}]", "BuildId": "Identyfikator wersji:", @@ -648,11 +755,11 @@ "GraphicsAALabel": "Antyaliasing:", "GraphicsScalingFilterLabel": "Filtr skalowania:", "GraphicsScalingFilterTooltip": "Choose the scaling filter that will be applied when using resolution scale.\n\nBilinear works well for 3D games and is a safe default option.\n\nNearest is recommended for pixel art games.\n\nFSR 1.0 is merely a sharpening filter, not recommended for use with FXAA or SMAA.\n\nThis option can be changed while a game is running by clicking \"Apply\" below; you can simply move the settings window aside and experiment until you find your preferred look for a game.\n\nLeave on BILINEAR if unsure.", - "GraphicsScalingFilterBilinear": "Bilinear", - "GraphicsScalingFilterNearest": "Nearest", + "GraphicsScalingFilterBilinear": "Dwuliniowe", + "GraphicsScalingFilterNearest": "Najbliższe", "GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterLevelLabel": "Poziom", - "GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.", + "GraphicsScalingFilterLevelTooltip": "Ustaw poziom ostrzeżenia FSR 1.0. Wyższy jest ostrzejszy.", "SmaaLow": "SMAA Niskie", "SmaaMedium": "SMAA Średnie", "SmaaHigh": "SMAA Wysokie", @@ -660,7 +767,7 @@ "UserEditorTitle": "Edytuj użytkownika", "UserEditorTitleCreate": "Utwórz użytkownika", "SettingsTabNetworkInterface": "Interfejs sieci:", - "NetworkInterfaceTooltip": "The network interface used for LAN/LDN features.\n\nIn conjunction with a VPN or XLink Kai and a game with LAN support, can be used to spoof a same-network connection over the Internet.\n\nLeave on DEFAULT if unsure.", + "NetworkInterfaceTooltip": "Interfejs sieciowy używany dla funkcji LAN/LDN.\n\nw połączeniu z VPN lub XLink Kai i grą z obsługą sieci LAN, może być użyty do spoofowania połączenia z tą samą siecią przez Internet.\n\nZostaw DOMYŚLNE, jeśli nie ma pewności.", "NetworkInterfaceDefault": "Domyślny", "PackagingShaders": "Pakuje Shadery ", "AboutChangelogButton": "Zobacz listę zmian na GitHubie", @@ -668,6 +775,6 @@ "SettingsTabNetworkMultiplayer": "Gra Wieloosobowa", "MultiplayerMode": "Tryb:", "MultiplayerModeTooltip": "Change LDN multiplayer mode.\n\nLdnMitm will modify local wireless/local play functionality in games to function as if it were LAN, allowing for local, same-network connections with other Ryujinx instances and hacked Nintendo Switch consoles that have the ldn_mitm module installed.\n\nMultiplayer requires all players to be on the same game version (i.e. Super Smash Bros. Ultimate v13.0.1 can't connect to v13.0.0).\n\nLeave DISABLED if unsure.", - "MultiplayerModeDisabled": "Disabled", + "MultiplayerModeDisabled": "Wyłączone", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/ryujinx/src/Ryujinx/Assets/Locales/pt_BR.json b/ryujinx/src/Ryujinx/Assets/Locales/pt_BR.json index fb48bd5937..a8c244b650 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/pt_BR.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/pt_BR.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Gerenciar tipos de arquivo", "MenuBarToolsInstallFileTypes": "Instalar tipos de arquivo", "MenuBarToolsUninstallFileTypes": "Desinstalar tipos de arquivos", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Ajuda", "MenuBarHelpCheckForUpdates": "_Verificar se há atualizações", "MenuBarHelpAbout": "_Sobre", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Habilitar Rich Presence do Discord", "SettingsTabGeneralCheckUpdatesOnLaunch": "Verificar se há atualizações ao iniciar", "SettingsTabGeneralShowConfirmExitDialog": "Exibir diálogo de confirmação ao sair", + "SettingsTabGeneralRememberWindowState": "Lembrar tamanho/posição da Janela", "SettingsTabGeneralHideCursor": "Esconder o cursor do mouse:", "SettingsTabGeneralHideCursorNever": "Nunca", "SettingsTabGeneralHideCursorOnIdle": "Esconder o cursor quando ocioso", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Zona morta do giroscópio:", "ControllerSettingsSave": "Salvar", "ControllerSettingsClose": "Fechar", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "Perfil de usuário selecionado:", "UserProfilesSaveProfileName": "Salvar nome de perfil", "UserProfilesChangeProfileImage": "Mudar imagem de perfil", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Gerenciador de perfis de usuário", "CheatWindowTitle": "Gerenciador de Cheats", "DlcWindowTitle": "Gerenciador de DLC", + "ModWindowTitle": "Manage Mods for {0} ({1})", "UpdateWindowTitle": "Gerenciador de atualizações", "CheatWindowHeading": "Cheats disponíveis para {0} [{1}]", "BuildId": "ID da Build", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/ru_RU.json b/ryujinx/src/Ryujinx/Assets/Locales/ru_RU.json index 284b8e2b4a..75fd4fe129 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/ru_RU.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/ru_RU.json @@ -1,9 +1,9 @@ { "Language": "Русский (RU)", "MenuBarFileOpenApplet": "Открыть апплет", - "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Открыть апплет Mii Editor в автономном режиме", + "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Открывает апплет Mii Editor в автономном режиме", "SettingsTabInputDirectMouseAccess": "Прямой ввод мыши", - "SettingsTabSystemMemoryManagerMode": "Режим диспетчера памяти:", + "SettingsTabSystemMemoryManagerMode": "Режим менеджера памяти:", "SettingsTabSystemMemoryManagerModeSoftware": "Программное обеспечение", "SettingsTabSystemMemoryManagerModeHost": "Хост (быстро)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Хост не установлен (самый быстрый, небезопасный)", @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Управление типами файлов", "MenuBarToolsInstallFileTypes": "Установить типы файлов", "MenuBarToolsUninstallFileTypes": "Удалить типы файлов", + "MenuBarView": "_Вид", + "MenuBarViewWindow": "Размер окна", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Помощь", "MenuBarHelpCheckForUpdates": "Проверить наличие обновлений", "MenuBarHelpAbout": "О программе", @@ -40,7 +44,7 @@ "GameListHeaderDeveloper": "Разработчик", "GameListHeaderVersion": "Версия", "GameListHeaderTimePlayed": "Время в игре", - "GameListHeaderLastPlayed": "Последняя игра", + "GameListHeaderLastPlayed": "Последний запуск", "GameListHeaderFileExtension": "Расширение файла", "GameListHeaderFileSize": "Размер файла", "GameListHeaderPath": "Путь", @@ -80,7 +84,7 @@ "StatusBarGamesLoaded": "{0}/{1} игр загружено", "StatusBarSystemVersion": "Версия прошивки: {0}", "LinuxVmMaxMapCountDialogTitle": "Обнаружен низкий лимит разметки памяти", - "LinuxVmMaxMapCountDialogTextPrimary": "Вы хотите увеличить значение vm.max_map_count до {0}", + "LinuxVmMaxMapCountDialogTextPrimary": "Хотите увеличить значение vm.max_map_count до {0}", "LinuxVmMaxMapCountDialogTextSecondary": "Некоторые игры могут создавать большую разметку памяти, чем разрешено на данный момент по умолчанию. Ryujinx вылетит при превышении этого лимита.", "LinuxVmMaxMapCountDialogButtonUntilRestart": "Да, до следующего перезапуска", "LinuxVmMaxMapCountDialogButtonPersistent": "Да, постоянно", @@ -89,12 +93,13 @@ "Settings": "Параметры", "SettingsTabGeneral": "Интерфейс", "SettingsTabGeneralGeneral": "Общее", - "SettingsTabGeneralEnableDiscordRichPresence": "Включить статус активности в Discord", + "SettingsTabGeneralEnableDiscordRichPresence": "Статус активности в Discord", "SettingsTabGeneralCheckUpdatesOnLaunch": "Проверять наличие обновлений при запуске", "SettingsTabGeneralShowConfirmExitDialog": "Подтверждать выход из приложения", + "SettingsTabGeneralRememberWindowState": "Запомнить размер/положение окна", "SettingsTabGeneralHideCursor": "Скрывать курсор", "SettingsTabGeneralHideCursorNever": "Никогда", - "SettingsTabGeneralHideCursorOnIdle": "В режиме ожидания", + "SettingsTabGeneralHideCursorOnIdle": "В простое", "SettingsTabGeneralHideCursorAlways": "Всегда", "SettingsTabGeneralGameDirectories": "Папки с играми", "SettingsTabGeneralAdd": "Добавить", @@ -125,13 +130,13 @@ "SettingsTabSystemSystemLanguageBritishEnglish": "Английский (Британия)", "SettingsTabSystemSystemLanguageCanadianFrench": "Французский (Канада)", "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "Испанский (Латинская Америка)", - "SettingsTabSystemSystemLanguageSimplifiedChinese": "Китайский упрощённый", - "SettingsTabSystemSystemLanguageTraditionalChinese": "Китайский традиционный", + "SettingsTabSystemSystemLanguageSimplifiedChinese": "Китайский (упрощённый)", + "SettingsTabSystemSystemLanguageTraditionalChinese": "Китайский (традиционный)", "SettingsTabSystemSystemTimeZone": "Часовой пояс прошивки:", - "SettingsTabSystemSystemTime": "Время в прошивке:", - "SettingsTabSystemEnableVsync": "Включить вертикальную синхронизацию", - "SettingsTabSystemEnablePptc": "Включить PPTC (Profiled Persistent Translation Cache)", - "SettingsTabSystemEnableFsIntegrityChecks": "Включить проверку целостности файловой системы", + "SettingsTabSystemSystemTime": "Системное время в прошивке:", + "SettingsTabSystemEnableVsync": "Вертикальная синхронизация", + "SettingsTabSystemEnablePptc": "Использовать PPTC (Profiled Persistent Translation Cache)", + "SettingsTabSystemEnableFsIntegrityChecks": "Проверка целостности файловой системы", "SettingsTabSystemAudioBackend": "Аудио бэкенд:", "SettingsTabSystemAudioBackendDummy": "Без звука", "SettingsTabSystemAudioBackendOpenAL": "OpenAL", @@ -143,7 +148,7 @@ "SettingsTabSystemIgnoreMissingServices": "Игнорировать отсутствующие службы", "SettingsTabGraphics": "Графика", "SettingsTabGraphicsAPI": "Графические API", - "SettingsTabGraphicsEnableShaderCache": "Включить кэш шейдеров", + "SettingsTabGraphicsEnableShaderCache": "Кэшировать шейдеры", "SettingsTabGraphicsAnisotropicFiltering": "Анизотропная фильтрация:", "SettingsTabGraphicsAnisotropicFilteringAuto": "Автоматически", "SettingsTabGraphicsAnisotropicFiltering2x": "2x", @@ -164,7 +169,7 @@ "SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatioStretch": "Растянуть до размеров окна", "SettingsTabGraphicsDeveloperOptions": "Параметры разработчика", - "SettingsTabGraphicsShaderDumpPath": "Путь дампа графического шейдера:", + "SettingsTabGraphicsShaderDumpPath": "Путь дампа графических шейдеров", "SettingsTabLogging": "Журналирование", "SettingsTabLoggingLogging": "Журналирование", "SettingsTabLoggingEnableLoggingToFile": "Включить запись в файл", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Мертвая зона гироскопа:", "ControllerSettingsSave": "Сохранить", "ControllerSettingsClose": "Закрыть", + "KeyUnknown": "Неизвестно", + "KeyShiftLeft": "Левый Shift", + "KeyShiftRight": "Правый Shift", + "KeyControlLeft": "Левый Ctrl", + "KeyMacControlLeft": "Левый ⌃", + "KeyControlRight": "Правый Ctrl", + "KeyMacControlRight": "Правый ⌃", + "KeyAltLeft": "Левый Alt", + "KeyMacAltLeft": "Левый ⌥", + "KeyAltRight": "Правый Alt", + "KeyMacAltRight": "Правый ⌥", + "KeyWinLeft": "Левый ⊞", + "KeyMacWinLeft": "Левый ⌘", + "KeyWinRight": "Правый ⊞", + "KeyMacWinRight": "Правый ⌘", + "KeyMenu": "Меню", + "KeyUp": "Вверх", + "KeyDown": "Вниз", + "KeyLeft": "Влево", + "KeyRight": "Вправо", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Пробел", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Очистить", + "KeyKeypad0": "Блок цифр 0", + "KeyKeypad1": "Блок цифр 1", + "KeyKeypad2": "Блок цифр 2", + "KeyKeypad3": "Блок цифр 3", + "KeyKeypad4": "Блок цифр 4", + "KeyKeypad5": "Блок цифр 5", + "KeyKeypad6": "Блок цифр 6", + "KeyKeypad7": "Блок цифр 7", + "KeyKeypad8": "Блок цифр 8", + "KeyKeypad9": "Блок цифр 9", + "KeyKeypadDivide": "/ (блок цифр)", + "KeyKeypadMultiply": "* (блок цифр)", + "KeyKeypadSubtract": "- (блок цифр)", + "KeyKeypadAdd": "+ (блок цифр)", + "KeyKeypadDecimal": ". (блок цифр)", + "KeyKeypadEnter": "Enter (блок цифр)", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Не привязано", + "GamepadLeftStick": "Кнопка лев. стика", + "GamepadRightStick": "Кнопка пр. стика", + "GamepadLeftShoulder": "Левый бампер", + "GamepadRightShoulder": "Правый бампер", + "GamepadLeftTrigger": "Левый триггер", + "GamepadRightTrigger": "Правый триггер", + "GamepadDpadUp": "Вверх", + "GamepadDpadDown": "Вниз", + "GamepadDpadLeft": "Влево", + "GamepadDpadRight": "Вправо", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Кнопка Xbox", + "GamepadMisc1": "Прочее", + "GamepadPaddle1": "Доп.кнопка 1", + "GamepadPaddle2": "Доп.кнопка 2", + "GamepadPaddle3": "Доп.кнопка 3", + "GamepadPaddle4": "Доп.кнопка 4", + "GamepadTouchpad": "Тачпад", + "GamepadSingleLeftTrigger0": "Левый триггер 0", + "GamepadSingleRightTrigger0": "Правый триггер 0", + "GamepadSingleLeftTrigger1": "Левый триггер 1", + "GamepadSingleRightTrigger1": "Правый триггер 1", + "StickLeft": "Левый стик", + "StickRight": "Правый стик", "UserProfilesSelectedUserProfile": "Выбранный пользовательский профиль:", "UserProfilesSaveProfileName": "Сохранить пользовательский профиль", "UserProfilesChangeProfileImage": "Изменить аватар", @@ -273,17 +379,17 @@ "UserProfilesAddNewProfile": "Добавить новый профиль", "UserProfilesDelete": "Удалить", "UserProfilesClose": "Закрыть", - "ProfileNameSelectionWatermark": "Выберите никнейм", + "ProfileNameSelectionWatermark": "Укажите никнейм", "ProfileImageSelectionTitle": "Выбор изображения профиля", - "ProfileImageSelectionHeader": "Выберите аватар", + "ProfileImageSelectionHeader": "Выбор аватара", "ProfileImageSelectionNote": "Вы можете импортировать собственное изображение или выбрать аватар из системной прошивки.", "ProfileImageSelectionImportImage": "Импорт изображения", "ProfileImageSelectionSelectAvatar": "Встроенные аватары", "InputDialogTitle": "Диалоговое окно ввода", "InputDialogOk": "ОК", "InputDialogCancel": "Отмена", - "InputDialogAddNewProfileTitle": "Выберите имя профиля", - "InputDialogAddNewProfileHeader": "Пожалуйста, введите имя профиля", + "InputDialogAddNewProfileTitle": "Выберите никнейм", + "InputDialogAddNewProfileHeader": "Пожалуйста, введите никнейм", "InputDialogAddNewProfileSubtext": "(Максимальная длина: {0})", "AvatarChoose": "Выбрать аватар", "AvatarSetBackgroundColor": "Установить цвет фона", @@ -312,7 +418,7 @@ "DialogWarningTitle": "Ryujinx - Предупреждение", "DialogExitTitle": "Ryujinx - Выход", "DialogErrorMessage": "Ryujinx обнаружил ошибку", - "DialogExitMessage": "Вы уверены, что хотите закрыть Ryujinx?", + "DialogExitMessage": "Вы уверены, что хотите выйти из Ryujinx?", "DialogExitSubMessage": "Все несохраненные данные будут потеряны", "DialogMessageCreateSaveErrorMessage": "Произошла ошибка при создании указанных данных сохранения: {0}", "DialogMessageFindSaveErrorMessage": "Произошла ошибка при поиске указанных данных сохранения: {0}", @@ -324,7 +430,7 @@ "DialogNcaExtractionSuccessMessage": "Извлечение завершено успешно.", "DialogUpdaterConvertFailedMessage": "Не удалось преобразовать текущую версию Ryujinx.", "DialogUpdaterCancelUpdateMessage": "Отмена обновления...", - "DialogUpdaterAlreadyOnLatestVersionMessage": "Вы уже используете самую последнюю версию Ryujinx", + "DialogUpdaterAlreadyOnLatestVersionMessage": "Вы используете самую последнюю версию Ryujinx", "DialogUpdaterFailedToGetVersionMessage": "Произошла ошибка при попытке получить информацию о выпуске от GitHub Release. Это может быть вызвано тем, что в данный момент в GitHub Actions компилируется новый релиз. Повторите попытку позже.", "DialogUpdaterConvertFailedGithubMessage": "Не удалось преобразовать полученную версию Ryujinx из Github Release.", "DialogUpdaterDownloadingMessage": "Загрузка обновления...", @@ -332,14 +438,14 @@ "DialogUpdaterRenamingMessage": "Переименование обновления...", "DialogUpdaterAddingFilesMessage": "Добавление нового обновления...", "DialogUpdaterCompleteMessage": "Обновление завершено", - "DialogUpdaterRestartMessage": "Вы хотите перезапустить Ryujinx сейчас?", + "DialogUpdaterRestartMessage": "Перезапустить Ryujinx?", "DialogUpdaterNoInternetMessage": "Вы не подключены к интернету", "DialogUpdaterNoInternetSubMessage": "Убедитесь, что у вас работает подключение к интернету", "DialogUpdaterDirtyBuildMessage": "Вы не можете обновлять Dirty Build", "DialogUpdaterDirtyBuildSubMessage": "Загрузите Ryujinx по адресу https://ryujinx.org/ если вам нужна поддерживаемая версия.", "DialogRestartRequiredMessage": "Требуется перезагрузка", "DialogThemeRestartMessage": "Тема сохранена. Для применения темы требуется перезапуск.", - "DialogThemeRestartSubMessage": "Вы хотите перезапустить?", + "DialogThemeRestartSubMessage": "Хотите перезапустить", "DialogFirmwareInstallEmbeddedMessage": "Хотите установить прошивку, встроенную в эту игру? (Прошивка {0})", "DialogFirmwareInstallEmbeddedSuccessMessage": "Установленная прошивка не была найдена, но Ryujinx удалось установить прошивку {0} из предоставленной игры.\nТеперь эмулятор запустится.", "DialogFirmwareNoFirmwareInstalledMessage": "Прошивка не установлена", @@ -348,7 +454,7 @@ "DialogInstallFileTypesErrorMessage": "Не удалось установить типы файлов.", "DialogUninstallFileTypesSuccessMessage": "Типы файлов успешно удалены", "DialogUninstallFileTypesErrorMessage": "Не удалось удалить типы файлов.", - "DialogOpenSettingsWindowLabel": "Открыть окно параметров", + "DialogOpenSettingsWindowLabel": "Открывает окно параметров", "DialogControllerAppletTitle": "Апплет контроллера", "DialogMessageDialogErrorExceptionMessage": "Ошибка отображения сообщения: {0}", "DialogSoftwareKeyboardErrorExceptionMessage": "Ошибка отображения программной клавиатуры: {0}", @@ -364,7 +470,7 @@ "DialogProfileDeleteProfileTitle": "Удаление профиля", "DialogProfileDeleteProfileMessage": "Это действие необратимо. Вы уверены, что хотите продолжить?", "DialogWarning": "Внимание", - "DialogPPTCDeletionMessage": "Вы собираетесь удалить кэш PPTC для:\n\n{0}\n\nВы уверены, что хотите продолжить?", + "DialogPPTCDeletionMessage": "Вы собираетесь перестроить кэш PPTC при следующем запуске для:\n\n{0}\n\nВы уверены, что хотите продолжить?", "DialogPPTCDeletionErrorMessage": "Ошибка очистки кэша PPTC в {0}: {1}", "DialogShaderDeletionMessage": "Вы собираетесь удалить кэш шейдеров для:\n\n{0}\n\nВы уверены, что хотите продолжить?", "DialogShaderDeletionErrorMessage": "Ошибка очистки кэша шейдеров в {0}: {1}", @@ -378,10 +484,10 @@ "DialogFirmwareInstallerFirmwareInstallWaitMessage": "Установка прошивки...", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Прошивка версии {0} успешно установлена.", "DialogUserProfileDeletionWarningMessage": "Если выбранный профиль будет удален, другие профили не будут открываться.", - "DialogUserProfileDeletionConfirmMessage": "Вы хотите удалить выбранный профиль", + "DialogUserProfileDeletionConfirmMessage": "Удалить выбранный профиль?", "DialogUserProfileUnsavedChangesTitle": "Внимание - Несохраненные изменения", - "DialogUserProfileUnsavedChangesMessage": "Вы внесли изменения в этот профиль пользователя которые не были сохранены.", - "DialogUserProfileUnsavedChangesSubMessage": "Вы хотите отменить изменения?", + "DialogUserProfileUnsavedChangesMessage": "В эту учетную запись внесены изменения, которые не были сохранены.", + "DialogUserProfileUnsavedChangesSubMessage": "Отменить изменения?", "DialogControllerSettingsModifiedConfirmMessage": "Текущие настройки управления обновлены.", "DialogControllerSettingsModifiedConfirmSubMessage": "Сохранить?", "DialogLoadFileErrorMessage": "{0}. Файл с ошибкой: {1}", @@ -444,40 +550,40 @@ "OrderDescending": "По убыванию", "SettingsTabGraphicsFeatures": "Функции", "ErrorWindowTitle": "Окно ошибки", - "ToggleDiscordTooltip": "Включает или отключает отображение в Discord статуса \"Сейчас играет\"", - "AddGameDirBoxTooltip": "Введите папку игры для добавления в список", + "ToggleDiscordTooltip": "Включает или отключает отображение статуса \"Играет в игру\" в Discord", + "AddGameDirBoxTooltip": "Введите путь к папке с играми для добавления ее в список выше", "AddGameDirTooltip": "Добавить папку с играми в список", "RemoveGameDirTooltip": "Удалить выбранную папку игры", "CustomThemeCheckTooltip": "Включить или отключить пользовательские темы", "CustomThemePathTooltip": "Путь к пользовательской теме для интерфейса", "CustomThemeBrowseTooltip": "Просмотр пользовательской темы интерфейса", - "DockModeToggleTooltip": "\"Стационарный\" режим запускает эмулятор, как если бы Nintendo Switch находилась в доке, что улучшает графику и разрешение в большинстве игр. И наоборот, при отключении этого режима эмулятор будет запускать игры в \"Портативном\" режиме, снижая качество графики.\n\nНастройте управление для Игрока 1 если планируете использовать в \"Стационарном\" режиме; настройте портативное управление если планируете использовать эмулятор в \"Портативном\" режиме.\n\nОставьте включенным если не уверены.", + "DockModeToggleTooltip": "\"Стационарный\" режим запускает эмулятор, как если бы Nintendo Switch находилась в доке, что улучшает графику и разрешение в большинстве игр. И наоборот, при отключении этого режима эмулятор будет запускать игры в \"Портативном\" режиме, снижая качество графики.\n\nНастройте управление для Игрока 1 если планируете использовать в \"Стационарном\" режиме; настройте портативное управление если планируете использовать эмулятор в \"Портативном\" режиме.\n\nРекомендуется оставить включенным.", "DirectKeyboardTooltip": "Поддержка прямого ввода с клавиатуры (HID). Предоставляет игре прямой доступ к клавиатуре в качестве устройства ввода текста.\nРаботает только с играми, которые изначально поддерживают использование клавиатуры с Switch.\nРекомендуется оставить выключенным.", "DirectMouseTooltip": "Поддержка прямого ввода мыши (HID). Предоставляет игре прямой доступ к мыши в качестве указывающего устройства.\nРаботает только с играми, которые изначально поддерживают использование мыши совместно с железом Switch.\nРекомендуется оставить выключенным.", - "RegionTooltip": "Изменение региона прошивки", - "LanguageTooltip": "Изменение языка прошивки", - "TimezoneTooltip": "Изменение часового пояса прошивки", - "TimeTooltip": "Изменение системного времени", + "RegionTooltip": "Сменяет регион прошивки", + "LanguageTooltip": "Меняет язык прошивки", + "TimezoneTooltip": "Меняет часовой пояс прошивки", + "TimeTooltip": "Меняет системное время прошивки", "VSyncToggleTooltip": "Эмуляция вертикальной синхронизации консоли, которая ограничивает количество кадров в секунду в большинстве игр; отключение может привести к тому, что игры будут запущены с более высокой частотой кадров, но загрузка игры может занять больше времени, либо игра не запустится вообще.\n\nМожно включать и выключать эту настройку непосредственно в игре с помощью горячих клавиш (F1 по умолчанию). Если планируете отключить вертикальную синхронизацию, рекомендуем настроить горячие клавиши.\n\nРекомендуется оставить включенным.", - "PptcToggleTooltip": "Сохранение преобразованных JIT-функций для того, чтобы не преобразовывать их по новой каждый раз при запуске игры.\n\nУменьшает статтеры и значительно ускоряет последующую загрузку игр.\n\nРекомендуется оставить включенным.", - "FsIntegrityToggleTooltip": "Проверяет поврежденные файлы при загрузке игры и если поврежденные файлы обнаружены, отображает ошибку о поврежденном хэше в журнале.\n\nНе влияет на производительность и необходим для помощи в устранении неполадок.\n\nРекомендуется оставить включенным.", - "AudioBackendTooltip": "Изменяет используемый аудио-бэкенд для рендера звука.\n\nSDL2 является предпочтительным, в то время как OpenAL и SoundIO используются в качестве резервных. \n\nРекомендуется использование SDL2.", - "MemoryManagerTooltip": "Изменение разметки и доступа к гостевой памяти. Значительно влияет на производительность процессора.\n\nРекомендуется оставить \"Хост не установлен\"", - "MemoryManagerSoftwareTooltip": "Использует таблицу страниц для преобразования адресов. Самая высокая точность, но самая низкая производительность.", - "MemoryManagerHostTooltip": "Прямая разметка памяти в адресном пространстве хоста. Значительно более быстрая JIT-компиляция и запуск.", - "MemoryManagerUnsafeTooltip": "Производит прямую разметку памяти, но не маскирует адрес в гостевом адресном пространстве перед получением доступа. Быстро, но небезопасно. Гостевое приложение может получить доступ к памяти из Ryujinx, поэтому в этом режиме рекомендуется запускать только те программы, которым вы доверяете.", + "PptcToggleTooltip": "Сохраняет скомпилированные JIT-функции для того, чтобы не преобразовывать их по новой каждый раз при запуске игры.\n\nУменьшает статтеры и значительно ускоряет последующую загрузку игр.\n\nРекомендуется оставить включенным.", + "FsIntegrityToggleTooltip": "Проверяет файлы при загрузке игры и если обнаружены поврежденные файлы, выводит сообщение о поврежденном хэше в журнале.\n\nНе влияет на производительность и необходим для помощи в устранении неполадок.\n\nРекомендуется оставить включенным.", + "AudioBackendTooltip": "Изменяет используемый аудио бэкенд для рендера звука.\n\nSDL2 является предпочтительным вариантом, в то время как OpenAL и SoundIO используются в качестве резервных.\n\nРекомендуется использование SDL2.", + "MemoryManagerTooltip": "Меняет разметку и доступ к гостевой памяти. Значительно влияет на производительность процессора.\n\nРекомендуется оставить \"Хост не установлен\"", + "MemoryManagerSoftwareTooltip": "Использует таблицу страниц для преобразования адресов. \nСамая высокая точность, но самая низкая производительность.", + "MemoryManagerHostTooltip": "Прямая разметка памяти в адресном пространстве хоста. \nЗначительно более быстрые запуск и компиляция JIT.", + "MemoryManagerUnsafeTooltip": "Производит прямую разметку памяти, но не маскирует адрес в гостевом адресном пространстве перед получением доступа. \nБыстро, но небезопасно. Гостевое приложение может получить доступ к памяти из Ryujinx, поэтому в этом режиме рекомендуется запускать только те программы, которым вы доверяете.", "UseHypervisorTooltip": "Использует Hypervisor вместо JIT. Значительно увеличивает производительность, но может работать нестабильно.", "DRamTooltip": "Использует альтернативный макет MemoryMode для имитации использования Nintendo Switch в режиме разработчика.\n\nПолезно только для пакетов текстур с высоким разрешением или модов добавляющих разрешение 4К. Не улучшает производительность.\n\nРекомендуется оставить выключенным.", "IgnoreMissingServicesTooltip": "Игнорирует нереализованные сервисы Horizon в новых прошивках. Эта настройка поможет избежать вылеты при запуске определенных игр.\n\nРекомендуется оставить выключенным.", - "GraphicsBackendThreadingTooltip": "Выполняет команды графического бэкенда на втором потоке.\n\nУскоряет компиляцию шейдеров, уменьшает статтеры и повышает производительность на драйверах GPU без поддержки многопоточности. Производительность на драйверах с многопоточностью немного выше.\n\nРекомендуется оставить Автоматически.", - "GalThreadingTooltip": "Выполняет команды графического бэкенда на втором потоке.\n\nУскоряет компиляцию шейдеров, уменьшает статтеры и повышает производительность на драйверах GPU без поддержки многопоточности. Производительность на драйверах с многопоточностью немного выше.\n\nРекомендуется оставить в Авто.", + "GraphicsBackendThreadingTooltip": "Выполняет команды графического бэкенда на втором потоке.\n\nУскоряет компиляцию шейдеров, уменьшает статтеры и повышает производительность на драйверах видеоадаптера без поддержки многопоточности. Производительность на драйверах с многопоточностью немного выше.\n\nРекомендуется оставить Автоматически.", + "GalThreadingTooltip": "Выполняет команды графического бэкенда на втором потоке.\n\nУскоряет компиляцию шейдеров, уменьшает статтеры и повышает производительность на драйверах видеоадаптера без поддержки многопоточности. Производительность на драйверах с многопоточностью немного выше.\n\nРекомендуется оставить Автоматически.", "ShaderCacheToggleTooltip": "Сохраняет кэш шейдеров на диске, для уменьшения статтеров при последующих запусках.\n\nРекомендуется оставить включенным.", - "ResolutionScaleTooltip": "Увеличивает разрешение рендера игры.\n\nНекоторые игры могут не работать с этой настройкой и выглядеть смазано даже когда разрешение увеличено; Для таких игр вам может потребоваться установить моды, которые убирают сглаживание или увеличивают разрешение рендеринга. Для использования последнего, вам нужно будет выбрать опцию \"Нативное\".\n\nЭта опция может быть изменена во время игры по нажатию кнопки \"Применить\" ниже; Вы можете просто переместить окно настроек в сторону и поэкспериментировать, пока не подберете подходящие настройки для конкретной игры.\n\nИмейте в виду, что \"4x\" является излишеством.", + "ResolutionScaleTooltip": "Увеличивает разрешение рендера игры.\n\nНекоторые игры могут не работать с этой настройкой и выглядеть смазано даже когда разрешение увеличено. Для таких игр может потребоваться установка модов, которые убирают сглаживание или увеличивают разрешение рендеринга. \nДля использования последнего, вам нужно будет выбрать опцию \"Нативное\".\n\nЭта опция может быть изменена во время игры по нажатию кнопки \"Применить\" ниже. Вы можете просто переместить окно настроек в сторону и поэкспериментировать, пока не подберете подходящие настройки для конкретной игры.\n\nИмейте в виду, что \"4x\" является излишеством.", "ResolutionScaleEntryTooltip": "Масштабирование разрешения с плавающей запятой, например 1,5. Неинтегральное масштабирование с большой вероятностью вызовет сбои в работе.", - "AnisotropyTooltip": "Уровень анизотропной фильтрации. Установите значение «Авто», чтобы использовать в игре значение по умолчанию игре.", + "AnisotropyTooltip": "Уровень анизотропной фильтрации. \n\nУстановите значение Автоматически, чтобы использовать значение по умолчанию игры.", "AspectRatioTooltip": "Соотношение сторон окна рендерера.\n\nИзмените эту настройку только если вы используете мод для соотношения сторон, иначе изображение будет растянуто.\n\nРекомендуется настройка 16:9.", "ShaderDumpPathTooltip": "Путь с дампами графических шейдеров", - "FileLogTooltip": "Включает или отключает ведение журнала в файл на диске. Не влияет на производительность.", + "FileLogTooltip": "Включает ведение журнала в файл на диске. Не влияет на производительность.", "StubLogTooltip": "Включает ведение журнала-заглушки. Не влияет на производительность.", "InfoLogTooltip": "Включает вывод сообщений информационного журнала в консоль. Не влияет на производительность.", "WarnLogTooltip": "Включает вывод сообщений журнала предупреждений в консоль. Не влияет на производительность.", @@ -489,42 +595,42 @@ "DeveloperOptionTooltip": "Используйте с осторожностью", "OpenGlLogLevel": "Требует включения соответствующих уровней ведения журнала", "DebugLogTooltip": "Выводит журнал сообщений отладки в консоли.\n\nИспользуйте только в случае просьбы разработчика, так как включение этой функции затруднит чтение журналов и ухудшит работу эмулятора.", - "LoadApplicationFileTooltip": "Открыть файловый менеджер для выбора файла, совместимого с Nintendo Switch.", - "LoadApplicationFolderTooltip": "Открыть файловый менеджер для выбора распакованного приложения, совместимого с Nintendo Switch.", + "LoadApplicationFileTooltip": "Открывает файловый менеджер для выбора файла, совместимого с Nintendo Switch.", + "LoadApplicationFolderTooltip": "Открывает файловый менеджер для выбора распакованного приложения, совместимого с Nintendo Switch.", "OpenRyujinxFolderTooltip": "Открывает папку с файлами Ryujinx. ", "OpenRyujinxLogsTooltip": "Открывает папку в которую записываются логи", "ExitTooltip": "Выйти из Ryujinx", - "OpenSettingsTooltip": "Открыть окно параметров", + "OpenSettingsTooltip": "Открывает окно параметров", "OpenProfileManagerTooltip": "Открыть менеджер учетных записей", "StopEmulationTooltip": "Остановка эмуляции текущей игры и возврат к списку игр", - "CheckUpdatesTooltip": "Проверка наличия обновления Ryujinx", - "OpenAboutTooltip": "Открыть окно «О программе»", + "CheckUpdatesTooltip": "Проверяет наличие обновлений для Ryujinx", + "OpenAboutTooltip": "Открывает окно «О программе»", "GridSize": "Размер сетки", - "GridSizeTooltip": "Изменение размера элементов сетки", + "GridSizeTooltip": "Меняет размер сетки элементов", "SettingsTabSystemSystemLanguageBrazilianPortuguese": "Португальский язык (Бразилия)", "AboutRyujinxContributorsButtonHeader": "Посмотреть всех участников", "SettingsTabSystemAudioVolume": "Громкость: ", "AudioVolumeTooltip": "Изменяет громкость звука", - "SettingsTabSystemEnableInternetAccess": "Включить гостевой доступ в Интернет/сетевой режим", + "SettingsTabSystemEnableInternetAccess": "Гостевой доступ в интернет/сетевой режим", "EnableInternetAccessTooltip": "Позволяет эмулированному приложению подключаться к Интернету.\n\nПри включении этой функции игры с возможностью сетевой игры могут подключаться друг к другу, если все эмуляторы (или реальные консоли) подключены к одной и той же точке доступа.\n\nНЕ разрешает подключение к серверам Nintendo. Может вызвать сбой в некоторых играх, которые пытаются подключиться к Интернету.\n\nРекомендутеся оставить выключенным.", - "GameListContextMenuManageCheatToolTip": "Управление читами", + "GameListContextMenuManageCheatToolTip": "Открывает окно управления читами", "GameListContextMenuManageCheat": "Управление читами", - "GameListContextMenuManageModToolTip": "Управление модами", + "GameListContextMenuManageModToolTip": "Открывает окно управления модами", "GameListContextMenuManageMod": "Управление модами", "ControllerSettingsStickRange": "Диапазон:", - "DialogStopEmulationTitle": "Ryujinx - Остановить эмуляцию", + "DialogStopEmulationTitle": "Ryujinx - Остановка эмуляции", "DialogStopEmulationMessage": "Вы уверены, что хотите остановить эмуляцию?", - "SettingsTabCpu": "ЦП", + "SettingsTabCpu": "Процессор", "SettingsTabAudio": "Аудио", "SettingsTabNetwork": "Сеть", "SettingsTabNetworkConnection": "Подключение к сети", - "SettingsTabCpuCache": "Кэш ЦП", - "SettingsTabCpuMemory": "Память ЦП", + "SettingsTabCpuCache": "Кэш процессора", + "SettingsTabCpuMemory": "Режим процессора", "DialogUpdaterFlatpakNotSupportedMessage": "Пожалуйста, обновите Ryujinx через FlatHub.", "UpdaterDisabledWarningTitle": "Средство обновления отключено", "ControllerSettingsRotate90": "Повернуть на 90° по часовой стрелке", "IconSize": "Размер обложек", - "IconSizeTooltip": "Изменить размер обложек", + "IconSizeTooltip": "Меняет размер обложек", "MenuBarOptionsShowConsole": "Показать консоль", "ShaderCachePurgeError": "Ошибка очистки кэша шейдеров в {0}: {1}", "UserErrorNoKeys": "Ключи не найдены", @@ -578,7 +684,7 @@ "SettingsTabHotkeys": "Горячие клавиши", "SettingsTabHotkeysHotkeys": "Горячие клавиши", "SettingsTabHotkeysToggleVsyncHotkey": "Вертикальная синхронизация:", - "SettingsTabHotkeysScreenshotHotkey": "Скриншот:", + "SettingsTabHotkeysScreenshotHotkey": "Сделать скриншот:", "SettingsTabHotkeysShowUiHotkey": "Показать интерфейс:", "SettingsTabHotkeysPauseHotkey": "Пауза эмуляции:", "SettingsTabHotkeysToggleMuteHotkey": "Выключить звук:", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Менеджер учетных записей", "CheatWindowTitle": "Менеджер читов", "DlcWindowTitle": "Управление DLC для {0} ({1})", + "ModWindowTitle": "Управление модами для {0} ({1})", "UpdateWindowTitle": "Менеджер обновлений игр", "CheatWindowHeading": "Доступные читы для {0} [{1}]", "BuildId": "ID версии:", @@ -607,33 +714,33 @@ "Save": "Сохранить", "Discard": "Отменить", "Paused": "Приостановлено", - "UserProfilesSetProfileImage": "Установить аватар профиля", - "UserProfileEmptyNameError": "Имя обязательно", + "UserProfilesSetProfileImage": "Установить аватар", + "UserProfileEmptyNameError": "Необходимо ввести никнейм", "UserProfileNoImageError": "Необходимо установить аватар", "GameUpdateWindowHeading": "Доступные обновления для {0} ({1})", "SettingsTabHotkeysResScaleUpHotkey": "Увеличить разрешение:", "SettingsTabHotkeysResScaleDownHotkey": "Уменьшить разрешение:", - "UserProfilesName": "Имя:", + "UserProfilesName": "Никнейм:", "UserProfilesUserId": "ID пользователя:", "SettingsTabGraphicsBackend": "Графический бэкенд", - "SettingsTabGraphicsBackendTooltip": "Выберите бэкенд, который будет использован в эмуляторе.\n\nVulkan является лучшим выбором для всех современных графических карт с актуальными драйверами. В Vulkan также включена более быстрая компиляция шейдеров (меньше статтеров) для всех GPU.\n\nOpenGL может достичь лучших результатов на старых GPU Nvidia, на старых GPU AMD на Linux или на GPU с небольшим количеством VRAM, хотя статтеров при компиляции шейдеров будет больше.\n\nРекомендуется использовать Vulkan. Используйте OpenGL, если ваш GPU не поддерживает Vulkan даже с актуальными драйверами.", - "SettingsEnableTextureRecompression": "Включить пережатие текстур", - "SettingsEnableTextureRecompressionTooltip": "Сжатие ASTC текстур для уменьшения использования VRAM. \n\nИгры, использующие этот формат текстур: Astral Chain, Bayonetta 3, Fire Emblem Engage, Metroid Prime Remastered, Super Mario Bros. Wonder и The Legend of Zelda: Tears of the Kingdom. \n\nНа GPU с 4GiB VRAM или менее возможны вылеты при запуске этих игр. \n\nВключите, только если у вас заканчивается VRAM в вышеупомянутых играх. Рекомендуется оставить выключенным.", - "SettingsTabGraphicsPreferredGpu": "Предпочтительный GPU", - "SettingsTabGraphicsPreferredGpuTooltip": "Выберите GPU, который будет использоваться с графическим бэкендом Vulkan.\n\nЭта настройка не влияет на GPU, который будет использовать OpenGL.\n\nЕсли вы не уверены что нужно выбрать, используйте графический процессор, помеченный как \"dGPU\". Если его нет, оставьте выбор по умолчанию.", + "SettingsTabGraphicsBackendTooltip": "Выберает бэкенд, который будет использован в эмуляторе.\n\nVulkan является лучшим выбором для всех современных графических карт с актуальными драйверами. В Vulkan также включена более быстрая компиляция шейдеров (меньше статтеров) для всех видеоадаптеров.\n\nПри использовании OpenGL можно достичь лучших результатов на старых видеоадаптерах Nvidia и AMD в Linux или на видеоадаптерах с небольшим количеством видеопамяти, хотя статтеров при компиляции шейдеров будет больше.\n\nРекомендуется использовать Vulkan. Используйте OpenGL, если ваш видеоадаптер не поддерживает Vulkan даже с актуальными драйверами.", + "SettingsEnableTextureRecompression": "Пережимать текстуры", + "SettingsEnableTextureRecompressionTooltip": "Сжатие ASTC текстур для уменьшения использования VRAM. \n\nИгры, использующие этот формат текстур: Astral Chain, Bayonetta 3, Fire Emblem Engage, Metroid Prime Remastered, Super Mario Bros. Wonder и The Legend of Zelda: Tears of the Kingdom. \nНа видеоадаптерах с 4GiB видеопамяти или менее возможны вылеты при запуске этих игр. \n\nВключите, только если у вас заканчивается видеопамять в вышеупомянутых играх. \n\nРекомендуется оставить выключенным.", + "SettingsTabGraphicsPreferredGpu": "Предпочтительный видеоадаптер", + "SettingsTabGraphicsPreferredGpuTooltip": "Выберает видеоадаптер, который будет использоваться графическим бэкендом Vulkan.\n\nЭта настройка не влияет на видеоадаптер, который будет использоваться с OpenGL.\n\nЕсли вы не уверены что нужно выбрать, используйте графический процессор, помеченный как \"dGPU\". Если его нет, оставьте выбор по умолчанию.", "SettingsAppRequiredRestartMessage": "Требуется перезапуск Ryujinx", "SettingsGpuBackendRestartMessage": "Графический бэкенд или настройки графического процессора были изменены. Требуется перезапуск для вступления в силу изменений.", "SettingsGpuBackendRestartSubMessage": "Перезапустить сейчас?", - "RyujinxUpdaterMessage": "Вы хотите обновить Ryujinx до последней версии?", + "RyujinxUpdaterMessage": "Обновить Ryujinx до последней версии?", "SettingsTabHotkeysVolumeUpHotkey": "Увеличить громкость:", "SettingsTabHotkeysVolumeDownHotkey": "Уменьшить громкость:", - "SettingsEnableMacroHLE": "Включить Macro HLE", - "SettingsEnableMacroHLETooltip": "Высокоуровневая эмуляции макроса GPU.\n\nПовышает производительность, но может вызывать графические сбои в некоторых играх.\n\nРекомендуется оставить включенным.", - "SettingsEnableColorSpacePassthrough": "Пропуск цветового пространства", + "SettingsEnableMacroHLE": "Использовать макрос высокоуровневой эмуляции видеоадаптера", + "SettingsEnableMacroHLETooltip": "Высокоуровневая эмуляции макрокода видеоадаптера.\n\nПовышает производительность, но может вызывать графические артефакты в некоторых играх.\n\nРекомендуется оставить включенным.", + "SettingsEnableColorSpacePassthrough": "Пропускать цветовое пространство", "SettingsEnableColorSpacePassthroughTooltip": "Направляет бэкенд Vulkan на передачу информации о цвете без указания цветового пространства. Для пользователей с экранами с расширенной гаммой данная настройка приводит к получению более ярких цветов за счет снижения корректности цветопередачи.", "VolumeShort": "Громкость", "UserProfilesManageSaves": "Управление сохранениями", - "DeleteUserSave": "Вы хотите удалить сохранения для этой игры?", + "DeleteUserSave": "Удалить сохранения для этой игры?", "IrreversibleActionNote": "Данное действие является необратимым.", "SaveManagerHeading": "Редактирование сохранений для {0} ({1})", "SaveManagerTitle": "Менеджер сохранений", @@ -644,10 +751,10 @@ "Recover": "Восстановление", "UserProfilesRecoverHeading": "Были найдены сохранения для следующих аккаунтов", "UserProfilesRecoverEmptyList": "Нет учетных записей для восстановления", - "GraphicsAATooltip": "Применимое сглаживание для рендера.\n\nFXAA размывает большую часть изображения, SMAA попытается найти \"зазубренные\" края и сгладить их.\n\nНе рекомендуется использовать вместе с масштабирующим фильтром FSR.\n\nЭта опция может быть изменена во время игры по нажатию \"Применить\" ниже; Вы можете просто переместить окно настроек в сторону и поэкспериментировать, пока не найдёте подходящую настройку игры.\n\nРекомендуется использовать \"Нет\".", + "GraphicsAATooltip": "Применимое сглаживание для рендера.\n\nFXAA размывает большую часть изображения, SMAA попытается найти \"зазубренные\" края и сгладить их.\n\nНе рекомендуется использовать вместе с масштабирующим фильтром FSR.\n\nЭта опция может быть изменена во время игры по нажатию \"Применить\" ниже; \nВы можете просто переместить окно настроек в сторону и поэкспериментировать, пока не найдёте подходящую настройку игры.\n\nРекомендуется использовать \"Нет\".", "GraphicsAALabel": "Сглаживание:", "GraphicsScalingFilterLabel": "Интерполяция:", - "GraphicsScalingFilterTooltip": "Выберите фильтрацию, которая будет применяться при масштабировании.\n\n\"Билинейная\" хорошо работает для 3D-игр и является настройкой по умолчанию.\n\n\"Ступенчатая\" рекомендуется для пиксельных игр.\n\n\"FSR\" это фильтр резкости, который не рекомендуется использовать с FXAA или SMAA.\n\nЭта опция может быть изменена во время игры по нажатию кнопки \"Применить\" ниже; Вы можете просто переместить окно настроек в сторону и поэкспериментировать, пока не подберете подходящие настройки для конкретной игры.\n\nРекомендуется использовать \"Билинейная\".", + "GraphicsScalingFilterTooltip": "Фильтрация текстур, которая будет применяться при масштабировании.\n\nБилинейная хорошо работает для 3D-игр и является настройкой по умолчанию.\n\nСтупенчатая рекомендуется для пиксельных игр.\n\nFSR это фильтр резкости, который не рекомендуется использовать с FXAA или SMAA.\n\nЭта опция может быть изменена во время игры по нажатию кнопки \"Применить\" ниже; \nВы можете просто переместить окно настроек в сторону и поэкспериментировать, пока не подберете подходящие настройки для конкретной игры.\n\nРекомендуется использовать \"Билинейная\".", "GraphicsScalingFilterBilinear": "Билинейная", "GraphicsScalingFilterNearest": "Ступенчатая", "GraphicsScalingFilterFsr": "FSR", @@ -667,7 +774,7 @@ "AboutChangelogButtonTooltipMessage": "Нажмите, чтобы открыть список изменений для этой версии", "SettingsTabNetworkMultiplayer": "Мультиплеер", "MultiplayerMode": "Режим:", - "MultiplayerModeTooltip": "Изменение многопользовательского режима LDN.\n\nLdnMitm модифицирует функциональность локальной беспроводной/игры на одном устройстве в играх, позволяя играть с другими пользователями Ryujinx или взломанными консолями Nintendo Switch с установленным модулем ldn_mitm, находящимися в одной локальной сети друг с другом.\n\nМногопользовательская игра требует наличия у всех игроков одной и той же версии игры (т.е. Super Smash Bros. Ultimate v13.0.1 не может подключиться к v13.0.0).\n\nРекомендуется оставить отключенным.", + "MultiplayerModeTooltip": "Меняет многопользовательский режим LDN.\n\nLdnMitm модифицирует функциональность локальной беспроводной/игры на одном устройстве в играх, позволяя играть с другими пользователями Ryujinx или взломанными консолями Nintendo Switch с установленным модулем ldn_mitm, находящимися в одной локальной сети друг с другом.\n\nМногопользовательская игра требует наличия у всех игроков одной и той же версии игры (т.е. Super Smash Bros. Ultimate v13.0.1 не может подключиться к v13.0.0).\n\nРекомендуется оставить отключенным.", "MultiplayerModeDisabled": "Отключено", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/ryujinx/src/Ryujinx/Assets/Locales/th_TH.json b/ryujinx/src/Ryujinx/Assets/Locales/th_TH.json index 23745ad94c..6294422695 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/th_TH.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/th_TH.json @@ -11,27 +11,31 @@ "MenuBarFile": "ไฟล์", "MenuBarFileOpenFromFile": "โหลดแอปพลิเคชั่นจากไฟล์", "MenuBarFileOpenUnpacked": "โหลดเกมที่คลายแพ็กแล้ว", - "MenuBarFileOpenEmuFolder": "เปิดโฟลเดอร์ รียูจินซ์", + "MenuBarFileOpenEmuFolder": "เปิดโฟลเดอร์ Ryujinx", "MenuBarFileOpenLogsFolder": "เปิดโฟลเดอร์ Logs", - "MenuBarFileExit": "ออก", + "MenuBarFileExit": "_ออก", "MenuBarOptions": "_ตัวเลือก", "MenuBarOptionsToggleFullscreen": "สลับการแสดงผลแบบเต็มหน้าจอ", "MenuBarOptionsStartGamesInFullscreen": "เริ่มเกมในโหมดเต็มหน้าจอ", "MenuBarOptionsStopEmulation": "หยุดการจำลอง", - "MenuBarOptionsSettings": "การตั้งค่า", - "MenuBarOptionsManageUserProfiles": "จัดการโปรไฟล์ผู้ใช้งาน", + "MenuBarOptionsSettings": "_ตั้งค่า", + "MenuBarOptionsManageUserProfiles": "_จัดการโปรไฟล์ผู้ใช้งาน", "MenuBarActions": "การดำเนินการ", "MenuBarOptionsSimulateWakeUpMessage": "จำลองข้อความปลุก", - "MenuBarActionsScanAmiibo": "สแกนหา อะมิโบ", + "MenuBarActionsScanAmiibo": "สแกนหา Amiibo", "MenuBarTools": "_เครื่องมือ", "MenuBarToolsInstallFirmware": "ติดตั้งเฟิร์มแวร์", "MenuBarFileToolsInstallFirmwareFromFile": "ติดตั้งเฟิร์มแวร์จาก ไฟล์ XCI หรือ ไฟล์ ZIP", "MenuBarFileToolsInstallFirmwareFromDirectory": "ติดตั้งเฟิร์มแวร์จากไดเร็กทอรี", "MenuBarToolsManageFileTypes": "จัดการประเภทไฟล์", - "MenuBarToolsInstallFileTypes": "ติดตั้งประเภทไฟล์", - "MenuBarToolsUninstallFileTypes": "ถอนการติดตั้งประเภทไฟล์", + "MenuBarToolsInstallFileTypes": "ติดตั้งตามประเภทของไฟล์", + "MenuBarToolsUninstallFileTypes": "ถอนการติดตั้งตามประเภทของไฟล์", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_ช่วยเหลือ", - "MenuBarHelpCheckForUpdates": "ตรวจหาการอัพเดต", + "MenuBarHelpCheckForUpdates": "ตรวจสอบอัปเดต", "MenuBarHelpAbout": "เกี่ยวกับ", "MenuSearch": "กำลังค้นหา...", "GameListHeaderFavorite": "ชื่นชอบ", @@ -39,31 +43,31 @@ "GameListHeaderApplication": "ชื่อ", "GameListHeaderDeveloper": "ผู้พัฒนา", "GameListHeaderVersion": "เวอร์ชั่น", - "GameListHeaderTimePlayed": "เวลาที่เล่นไปแล้ว", + "GameListHeaderTimePlayed": "เล่นไปแล้ว", "GameListHeaderLastPlayed": "เล่นล่าสุด", "GameListHeaderFileExtension": "นามสกุลไฟล์", "GameListHeaderFileSize": "ขนาดไฟล์", - "GameListHeaderPath": "ที่เก็บไฟล์", + "GameListHeaderPath": "ที่อยู่ไฟล์", "GameListContextMenuOpenUserSaveDirectory": "เปิดไดเร็กทอรี่บันทึกของผู้ใช้", "GameListContextMenuOpenUserSaveDirectoryToolTip": "เปิดไดเร็กทอรี่ซึ่งมีการบันทึกผู้ใช้ของแอปพลิเคชัน", - "GameListContextMenuOpenDeviceSaveDirectory": "เปิดไดเร็กทอรีบันทึกของอุปกรณ์", + "GameListContextMenuOpenDeviceSaveDirectory": "เปิดไดเร็กทอรี่บันทึกของอุปกรณ์", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "เปิดไดเรกทอรี่ซึ่งมีบันทึกอุปกรณ์ของแอปพลิเคชัน", - "GameListContextMenuOpenBcatSaveDirectory": "เปิดไดเรกทอรีบันทึก BCAT", + "GameListContextMenuOpenBcatSaveDirectory": "เปิดไดเรกทอรี่บันทึก BCAT", "GameListContextMenuOpenBcatSaveDirectoryToolTip": "เปิดไดเรกทอรี่ซึ่งมีการบันทึก BCAT ของแอปพลิเคชัน", - "GameListContextMenuManageTitleUpdates": "จัดการ การอัปเดตหัวข้อ", + "GameListContextMenuManageTitleUpdates": "จัดการอัปเดตตามหัวข้อ", "GameListContextMenuManageTitleUpdatesToolTip": "เปิดหน้าต่างการจัดการการอัพเดตหัวข้อ", "GameListContextMenuManageDlc": "จัดการ DLC", - "GameListContextMenuManageDlcToolTip": "เปิดหน้าต่างการจัดการ DLC", - "GameListContextMenuCacheManagement": "การบริหารจัดการแคช", + "GameListContextMenuManageDlcToolTip": "เปิดหน้าต่างจัดการ DLC", + "GameListContextMenuCacheManagement": "จัดการ แคช", "GameListContextMenuCacheManagementPurgePptc": "เพิ่มเข้าคิวงาน PPTC ที่สร้างใหม่", "GameListContextMenuCacheManagementPurgePptcToolTip": "ทริกเกอร์ PPTC ให้สร้างใหม่ในเวลาบูตเมื่อเปิดตัวเกมครั้งถัดไป", - "GameListContextMenuCacheManagementPurgeShaderCache": "ล้าง เชเดอร์แคช", - "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "ลบ เชเดอร์แคช ของแอปพลิเคชัน", - "GameListContextMenuCacheManagementOpenPptcDirectory": "เปิดไดเรกทอรี่่ PPTC", - "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "เปิดไดเร็กทอรีที่มี PPTC แคช ของแอปพลิเคชัน", - "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "เปิดไดเรกทอรี่ เชเดอร์แคช", - "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "เปิดไดเรกทอรี่ที่มี แคชเชเดอร์ ของแอปพลิเคชัน", - "GameListContextMenuExtractData": "แยกข้อมูล", + "GameListContextMenuCacheManagementPurgeShaderCache": "ล้างแคช พื้นผิวและแสงเงา", + "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "ลบแคช พื้นผิวและแสงเงา ของแอปพลิเคชัน", + "GameListContextMenuCacheManagementOpenPptcDirectory": "เปิดไดเรกทอรี่ PPTC", + "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "เปิดไดเร็กทอรี่ PPTC แคช ของแอปพลิเคชัน", + "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "เปิดไดเรกทอรี่ แคช พื้นผิวและแสงเงา", + "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "เปิดไดเรกทอรี่ แคช พื้นผิวและแสงเงา ของแอปพลิเคชัน", + "GameListContextMenuExtractData": "แยกส่วนข้อมูล", "GameListContextMenuExtractDataExeFS": "ExeFS", "GameListContextMenuExtractDataExeFSToolTip": "แยกส่วน ExeFS ออกจากการกำหนดค่าปัจจุบันของแอปพลิเคชัน (รวมถึงการอัปเดต)", "GameListContextMenuExtractDataRomFS": "RomFS", @@ -73,28 +77,29 @@ "GameListContextMenuCreateShortcut": "สร้างทางลัดของแอปพลิเคชัน", "GameListContextMenuCreateShortcutToolTip": "สร้างทางลัดบนเดสก์ท็อปที่เรียกใช้แอปพลิเคชันที่เลือก", "GameListContextMenuCreateShortcutToolTipMacOS": "สร้างทางลัดในโฟลเดอร์ Applications ของ macOS ที่เรียกใช้ Application ที่เลือก", - "GameListContextMenuOpenModsDirectory": "เปิดไดเรกทอรี่ Mods", - "GameListContextMenuOpenModsDirectoryToolTip": "เปิดไดเร็กทอรีซึ่งมี Mods ของแอปพลิเคชัน", - "GameListContextMenuOpenSdModsDirectory": "เปิดไดเร็กทอรี Mods Atmosphere", - "GameListContextMenuOpenSdModsDirectoryToolTip": "เปิดไดเร็กทอรี Atmosphere ของการ์ด SD สำรองซึ่งมี Mods ของแอปพลิเคชัน มีประโยชน์สำหรับ mods ที่บรรจุมากับฮาร์ดแวร์จริง", + "GameListContextMenuOpenModsDirectory": "เปิดไดเร็กทอรี่ Mods", + "GameListContextMenuOpenModsDirectoryToolTip": "เปิดไดเร็กทอรี่ Mods ของแอปพลิเคชัน", + "GameListContextMenuOpenSdModsDirectory": "เปิดไดเร็กทอรี่ Mods Atmosphere", + "GameListContextMenuOpenSdModsDirectoryToolTip": "เปิดไดเร็กทอรี่ Atmosphere ของการ์ด SD สำรองซึ่งมี Mods ของแอปพลิเคชัน มีประโยชน์สำหรับ Mods ที่บรรจุมากับฮาร์ดแวร์จริง", "StatusBarGamesLoaded": "เกมส์โหลดแล้ว {0}/{1}", "StatusBarSystemVersion": "เวอร์ชั่นของระบบ: {0}", - "LinuxVmMaxMapCountDialogTitle": "ตรวจพบขีดจำกัดต่ำสุดสำหรับการแมปหน่วยความจำ", + "LinuxVmMaxMapCountDialogTitle": "ตรวจพบขีดจำกัดต่ำสุด สำหรับการแมปหน่วยความจำ", "LinuxVmMaxMapCountDialogTextPrimary": "คุณต้องการที่จะเพิ่มค่า vm.max_map_count ไปยัง {0}", "LinuxVmMaxMapCountDialogTextSecondary": "บางเกมอาจพยายามสร้างการแมปหน่วยความจำมากกว่าที่ได้รับอนุญาตในปัจจุบัน รียูจินซ์ จะปิดตัวลงเมื่อเกินขีดจำกัดนี้", "LinuxVmMaxMapCountDialogButtonUntilRestart": "ใช่, จนกว่าจะรีสตาร์ทครั้งถัดไป", "LinuxVmMaxMapCountDialogButtonPersistent": "ใช่, อย่างถาวร", "LinuxVmMaxMapCountWarningTextPrimary": "จำนวนสูงสุดของการแม็ปหน่วยความจำ ต่ำกว่าที่แนะนำ", "LinuxVmMaxMapCountWarningTextSecondary": "ค่าปัจจุบันของ vm.max_map_count ({0}) มีค่าต่ำกว่า {1} บางเกมอาจพยายามสร้างการแมปหน่วยความจำมากกว่าที่ได้รับอนุญาตในปัจจุบัน รียูจินซ์ จะปิดตัวลงเมื่อเกินขีดจำกัดนี้\n\nคุณอาจต้องการเพิ่มขีดจำกัดด้วยตนเองหรือติดตั้ง pkexec ซึ่งอนุญาตให้ ริวจินซ์ เพื่อช่วยเหลือคุณได้", - "Settings": "การตั้งค่า", + "Settings": "ตั้งค่า", "SettingsTabGeneral": "หน้าจอผู้ใช้", "SettingsTabGeneralGeneral": "ทั่วไป", "SettingsTabGeneralEnableDiscordRichPresence": "เปิดใช้งาน Discord Rich Presence", "SettingsTabGeneralCheckUpdatesOnLaunch": "ตรวจหาการอัปเดตเมื่อเปิดโปรแกรม", "SettingsTabGeneralShowConfirmExitDialog": "แสดง \"ยืนยันการออก\" กล่องข้อความโต้ตอบ", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "ซ่อน เคอร์เซอร์:", "SettingsTabGeneralHideCursorNever": "ไม่มี", - "SettingsTabGeneralHideCursorOnIdle": "ซ่อนอัตโนมัติ", + "SettingsTabGeneralHideCursorOnIdle": "เมื่อไม่ได้ใช้", "SettingsTabGeneralHideCursorAlways": "ตลอดเวลา", "SettingsTabGeneralGameDirectories": "ไดเรกทอรี่ของเกม", "SettingsTabGeneralAdd": "เพิ่ม", @@ -127,13 +132,13 @@ "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "สเปน (ลาตินอเมริกา)", "SettingsTabSystemSystemLanguageSimplifiedChinese": "จีน (ตัวย่อ)", "SettingsTabSystemSystemLanguageTraditionalChinese": "จีน (ดั้งเดิม)", - "SettingsTabSystemSystemTimeZone": "โซนเวลาของระบบ:", + "SettingsTabSystemSystemTimeZone": "เขตเวลาของระบบ:", "SettingsTabSystemSystemTime": "เวลาของระบบ:", "SettingsTabSystemEnableVsync": "VSync", - "SettingsTabSystemEnablePptc": "PPTC (แคชการแปลแบบถาวรที่มีโปรไฟล์)", - "SettingsTabSystemEnableFsIntegrityChecks": "การตรวจสอบความถูกต้องของ FS", - "SettingsTabSystemAudioBackend": "แบ็กเอนด์เสียง:", - "SettingsTabSystemAudioBackendDummy": "ดัมมี่", + "SettingsTabSystemEnablePptc": "PPTC (แคชโปรไฟล์การแปลแบบถาวร)", + "SettingsTabSystemEnableFsIntegrityChecks": "ตรวจสอบความถูกต้องของ FS", + "SettingsTabSystemAudioBackend": "ระบบเสียงเบื้องหลัง:", + "SettingsTabSystemAudioBackendDummy": "Dummy", "SettingsTabSystemAudioBackendOpenAL": "OpenAL", "SettingsTabSystemAudioBackendSoundIO": "SoundIO", "SettingsTabSystemAudioBackendSDL2": "SDL2", @@ -142,9 +147,9 @@ "SettingsTabSystemExpandDramSize": "ใช้รูปแบบหน่วยความจำสำรอง (โหมดนักพัฒนา)", "SettingsTabSystemIgnoreMissingServices": "ไม่สนใจบริการที่ขาดหายไป", "SettingsTabGraphics": "กราฟิก", - "SettingsTabGraphicsAPI": "เอพีไอของกราฟิก", - "SettingsTabGraphicsEnableShaderCache": "เปิดใช้งาน เชเดอร์ แคช", - "SettingsTabGraphicsAnisotropicFiltering": "ตัวกรองแบบ แอนไอโซทรอปิก:", + "SettingsTabGraphicsAPI": "กราฟฟิก API", + "SettingsTabGraphicsEnableShaderCache": "เปิดใช้งาน แคชพื้นผิวและแสงเงา", + "SettingsTabGraphicsAnisotropicFiltering": "ตัวกรองแบบ Anisotropic:", "SettingsTabGraphicsAnisotropicFilteringAuto": "อัตโนมัติ", "SettingsTabGraphicsAnisotropicFiltering2x": "2x", "SettingsTabGraphicsAnisotropicFiltering4x": "4x", @@ -164,26 +169,26 @@ "SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatioStretch": "ยืดภาพเพื่อให้พอดีกับหน้าต่าง", "SettingsTabGraphicsDeveloperOptions": "ตัวเลือกนักพัฒนา", - "SettingsTabGraphicsShaderDumpPath": "ที่เก็บไฟล์ดัมพ์ของ เชเดอร์กราฟิก:", - "SettingsTabLogging": "การบันทึก", - "SettingsTabLoggingLogging": "การบันทึก", - "SettingsTabLoggingEnableLoggingToFile": "เปิดใช้งาน การบันทึกไปยังไฟล์", - "SettingsTabLoggingEnableStubLogs": "เปิดใช้งาน บันทึกของต้นขั้ว", - "SettingsTabLoggingEnableInfoLogs": "เปิดใช้งาน บันทึกของข้อมูล", - "SettingsTabLoggingEnableWarningLogs": "เปิดใช้งาน บันทึกคำเตือน", - "SettingsTabLoggingEnableErrorLogs": "เปิดใช้งาน บันทึกข้อผิดพลาด", - "SettingsTabLoggingEnableTraceLogs": "เปิดใช้งาน บันทึกการติดตาม", + "SettingsTabGraphicsShaderDumpPath": "ที่เก็บ ดัมพ์ไฟล์ พื้นผิวและแสงเงา:", + "SettingsTabLogging": "ประวัติ", + "SettingsTabLoggingLogging": "ประวัติ", + "SettingsTabLoggingEnableLoggingToFile": "เปิดใช้งาน ประวัติ ไปยังไฟล์", + "SettingsTabLoggingEnableStubLogs": "เปิดใช้งาน ประวัติ", + "SettingsTabLoggingEnableInfoLogs": "เปิดใช้งาน ประวัติการใช้งาน", + "SettingsTabLoggingEnableWarningLogs": "เปิดใช้งาน ประวัติคำเตือน", + "SettingsTabLoggingEnableErrorLogs": "เปิดใช้งาน ประวัติข้อผิดพลาด", + "SettingsTabLoggingEnableTraceLogs": "เปิดใช้งาน ประวัติการติดตาม", "SettingsTabLoggingEnableGuestLogs": "เปิดใช้งาน บันทึกของผู้เยี่ยมชม", - "SettingsTabLoggingEnableFsAccessLogs": "เปิดใช้งาน บันทึกการเข้าถึง Fs", - "SettingsTabLoggingFsGlobalAccessLogMode": "โหมดบันทึกการเข้าถึงส่วนกลาง:", + "SettingsTabLoggingEnableFsAccessLogs": "เปิดใช้งาน ประวัติการเข้าถึง Fs", + "SettingsTabLoggingFsGlobalAccessLogMode": "โหมด ประวัติการเข้าถึงส่วนกลาง:", "SettingsTabLoggingDeveloperOptions": "ตัวเลือกนักพัฒนา", "SettingsTabLoggingDeveloperOptionsNote": "คำเตือน: จะทำให้ประสิทธิภาพลดลง", - "SettingsTabLoggingGraphicsBackendLogLevel": "ระดับการบันทึก แบ็กเอนด์กราฟิก:", + "SettingsTabLoggingGraphicsBackendLogLevel": "ระดับการบันทึกประวัติ กราฟิกเบื้องหลัง:", "SettingsTabLoggingGraphicsBackendLogLevelNone": "ไม่มี", "SettingsTabLoggingGraphicsBackendLogLevelError": "ผิดพลาด", - "SettingsTabLoggingGraphicsBackendLogLevelPerformance": "ชะลอตัว", + "SettingsTabLoggingGraphicsBackendLogLevelPerformance": "ช้าลง", "SettingsTabLoggingGraphicsBackendLogLevelAll": "ทั้งหมด", - "SettingsTabLoggingEnableDebugLogs": "เปิดใช้งานบันทึกการแก้ไขข้อบกพร่อง", + "SettingsTabLoggingEnableDebugLogs": "เปิดใช้งาน ประวัติแก้ไขข้อบกพร่อง", "SettingsTabInput": "ป้อนข้อมูล", "SettingsTabInputEnableDockedMode": "ด็อกโหมด", "SettingsTabInputDirectKeyboardAccess": "เข้าถึงคีย์บอร์ดโดยตรง", @@ -261,11 +266,112 @@ "ControllerSettingsMotionControllerSlot": "ช่องเสียบ คอนโทรลเลอร์:", "ControllerSettingsMotionMirrorInput": "นำเข้าการสะท้อน การควบคุม", "ControllerSettingsMotionRightJoyConSlot": "ช่องเสียบ จอยคอน ด้านขวา:", - "ControllerSettingsMotionServerHost": "เซิร์ฟเวอร์โฮสต์:", + "ControllerSettingsMotionServerHost": "เจ้าของเซิร์ฟเวอร์:", "ControllerSettingsMotionGyroSensitivity": "ความไวของไจโร:", - "ControllerSettingsMotionGyroDeadzone": "โซนที่ไม่ทำงานของไจโร:", + "ControllerSettingsMotionGyroDeadzone": "ส่วนไม่ทำงานของไจโร:", "ControllerSettingsSave": "บันทึก", "ControllerSettingsClose": "ปิด", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "โปรไฟล์ผู้ใช้งานที่เลือก:", "UserProfilesSaveProfileName": "บันทึกชื่อโปรไฟล์", "UserProfilesChangeProfileImage": "เปลี่ยนรูปโปรไฟล์", @@ -273,25 +379,25 @@ "UserProfilesAddNewProfile": "สร้างโปรไฟล์ใหม่", "UserProfilesDelete": "ลบ", "UserProfilesClose": "ปิด", - "ProfileNameSelectionWatermark": "เลือกชื่อเล่น", - "ProfileImageSelectionTitle": "เลือกรูปโปรไฟล์ของคุณ", - "ProfileImageSelectionHeader": "เลือกรูปโปรไฟล์", - "ProfileImageSelectionNote": "คุณสามารถนำเข้ารูปโปรไฟล์ที่กำหนดเอง หรือเลือกอวาต้าจากเฟิร์มแวร์ระบบได้", - "ProfileImageSelectionImportImage": "นำเข้าไฟล์รูปภาพ", - "ProfileImageSelectionSelectAvatar": "เลือกรูปอวาต้าเฟิร์มแวร์", + "ProfileNameSelectionWatermark": "เลือก ชื่อเล่น", + "ProfileImageSelectionTitle": "เลือก รูปโปรไฟล์ ของคุณ", + "ProfileImageSelectionHeader": "เลือก รูปโปรไฟล์", + "ProfileImageSelectionNote": "คุณสามารถนำเข้ารูปโปรไฟล์ที่กำหนดเอง หรือ เลือกอวาต้าจากเฟิร์มแวร์ระบบได้", + "ProfileImageSelectionImportImage": "นำเข้า ไฟล์รูปภาพ", + "ProfileImageSelectionSelectAvatar": "เลือก รูปอวาต้า เฟิร์มแวร์", "InputDialogTitle": "กล่องโต้ตอบการป้อนข้อมูล", "InputDialogOk": "ตกลง", "InputDialogCancel": "ยกเลิก", - "InputDialogAddNewProfileTitle": "เลือกชื่อโปรไฟล์", + "InputDialogAddNewProfileTitle": "เลือก ชื่อโปรไฟล์", "InputDialogAddNewProfileHeader": "กรุณาใส่ชื่อโปรไฟล์", "InputDialogAddNewProfileSubtext": "(ความยาวสูงสุด: {0})", - "AvatarChoose": "เลือกรูปอวาต้าของคุณ", + "AvatarChoose": "เลือก รูปอวาต้า ของคุณ", "AvatarSetBackgroundColor": "ตั้งค่าสีพื้นหลัง", "AvatarClose": "ปิด", - "ControllerSettingsLoadProfileToolTip": "โหลดโปรไฟล์", - "ControllerSettingsAddProfileToolTip": "เพิ่มโปรไฟล์", - "ControllerSettingsRemoveProfileToolTip": "ลบโปรไฟล์", - "ControllerSettingsSaveProfileToolTip": "บันทึกโปรไฟล์", + "ControllerSettingsLoadProfileToolTip": "โหลด โปรไฟล์", + "ControllerSettingsAddProfileToolTip": "เพิ่ม โปรไฟล์", + "ControllerSettingsRemoveProfileToolTip": "ลบ โปรไฟล์", + "ControllerSettingsSaveProfileToolTip": "บันทึก โปรไฟล์", "MenuBarFileToolsTakeScreenshot": "ถ่ายภาพหน้าจอ", "MenuBarFileToolsHideUi": "ซ่อน UI", "GameListContextMenuRunApplication": "เรียกใช้แอปพลิเคชัน", @@ -343,11 +449,11 @@ "DialogFirmwareInstallEmbeddedMessage": "คุณต้องการติดตั้งเฟิร์มแวร์ที่ฝังอยู่ในเกมนี้หรือไม่? (เฟิร์มแวร์ {0})", "DialogFirmwareInstallEmbeddedSuccessMessage": "ไม่พบเฟิร์มแวร์ที่ติดตั้งไว้ แต่ รียูจินซ์ สามารถติดตั้งเฟิร์มแวร์ได้ {0} จากเกมที่ให้มา\nตอนนี้โปรแกรมจำลองจะเริ่มทำงาน", "DialogFirmwareNoFirmwareInstalledMessage": "ไม่มีการติดตั้งเฟิร์มแวร์", - "DialogFirmwareInstalledMessage": "เฟิร์มแวร์ทำการติดตั้งแล้ว {0}", - "DialogInstallFileTypesSuccessMessage": "ติดตั้งประเภทไฟล์สำเร็จแล้ว!", - "DialogInstallFileTypesErrorMessage": "ติดตั้งประเภทไฟล์ไม่สำเร็จ", - "DialogUninstallFileTypesSuccessMessage": "ถอนการติดตั้งประเภทไฟล์สำเร็จแล้ว!", - "DialogUninstallFileTypesErrorMessage": "ไม่สามารถถอนการติดตั้งประเภทไฟล์ได้", + "DialogFirmwareInstalledMessage": "เฟิร์มแวร์ติดตั้งแล้ว {0}", + "DialogInstallFileTypesSuccessMessage": "ติดตั้งตามประเภทของไฟล์สำเร็จแล้ว!", + "DialogInstallFileTypesErrorMessage": "ติดตั้งตามประเภทของไฟล์ไม่สำเร็จ", + "DialogUninstallFileTypesSuccessMessage": "ถอนการติดตั้งตามประเภทของไฟล์สำเร็จแล้ว!", + "DialogUninstallFileTypesErrorMessage": "ไม่สามารถถอนการติดตั้งตามประเภทของไฟล์ได้", "DialogOpenSettingsWindowLabel": "เปิดหน้าต่างการตั้งค่า", "DialogControllerAppletTitle": "แอพเพล็ตคอนโทรลเลอร์", "DialogMessageDialogErrorExceptionMessage": "เกิดข้อผิดพลาดในการแสดงกล่องโต้ตอบข้อความ: {0}", @@ -369,7 +475,7 @@ "DialogShaderDeletionMessage": "คุณกำลังจะลบ เชเดอร์แคช:\n\n{0}\n\nคุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อหรือไม่?", "DialogShaderDeletionErrorMessage": "เกิดข้อผิดพลาดในการล้าง เชเดอร์แคช {0}: {1}", "DialogRyujinxErrorMessage": "รียูจินซ์ พบข้อผิดพลาด", - "DialogInvalidTitleIdErrorMessage": "ข้อผิดพลาดของ ยูไอ: เกมที่เลือกไม่มีชื่อ ID ที่ถูกต้อง", + "DialogInvalidTitleIdErrorMessage": "ข้อผิดพลาดของ UI: เกมที่เลือกไม่มีชื่อ ID ที่ถูกต้อง", "DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "ไม่พบเฟิร์มแวร์ของระบบที่ถูกต้อง {0}.", "DialogFirmwareInstallerFirmwareInstallTitle": "ติดตั้งเฟิร์มแวร์ {0}", "DialogFirmwareInstallerFirmwareInstallMessage": "นี่คื่อเวอร์ชั่นของระบบ {0} ที่ได้รับการติดตั้งเมื่อเร็วๆ นี้", @@ -401,7 +507,7 @@ "DialogModManagerDeletionWarningMessage": "คุณกำลังจะลบ ม็อด: {0}\n\nคุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", "DialogModManagerDeletionAllWarningMessage": "คุณกำลังจะลบม็อดทั้งหมดสำหรับชื่อนี้\n\nคุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", "SettingsTabGraphicsFeaturesOptions": "คุณสมบัติ", - "SettingsTabGraphicsBackendMultithreading": "มัลติเธรด แบ็กเอนด์กราฟิก:", + "SettingsTabGraphicsBackendMultithreading": "มัลติเธรด กราฟิกเบื้องหลัง:", "CommonAuto": "อัตโนมัติ", "CommonOff": "ปิดการใช้งาน", "CommonOn": "เปิดใช้งาน", @@ -421,7 +527,7 @@ "AboutRyujinxAboutContent": "รียูจินซ์ เป็นอีมูเลเตอร์สำหรับ Nintendo Switch™\nโปรดสนับสนุนเราบน เพทรีออน\nรับข่าวสารล่าสุดทั้งหมดบน ทวิตเตอร์ หรือ ดิสคอร์ด ของเรา\nนักพัฒนาที่สนใจจะมีส่วนร่วมสามารถดูข้อมูลเพิ่มเติมได้ที่ กิตฮับ หรือ ดิสคอร์ด ของเรา", "AboutRyujinxMaintainersTitle": "ได้รับการดูแลรักษาโดย:", "AboutRyujinxMaintainersContentTooltipMessage": "คลิกเพื่อเปิดหน้าผู้ร่วมให้ข้อมูลในเบราว์เซอร์เริ่มต้นของคุณ", - "AboutRyujinxSupprtersTitle": "สนับสนุนบน เพทรีออน โดย:", + "AboutRyujinxSupprtersTitle": "ลายนามผู้สนับสนุนบน เพทรีออน:", "AmiiboSeriesLabel": "อะมิโบซีรีส์", "AmiiboCharacterLabel": "ตัวละคร", "AmiiboScanButtonLabel": "สแกนเลย", @@ -451,7 +557,7 @@ "CustomThemeCheckTooltip": "ใช้ธีม Avalonia แบบกำหนดเองสำหรับ GUI เพื่อเปลี่ยนรูปลักษณ์ของเมนูโปรแกรมจำลอง", "CustomThemePathTooltip": "ไปยังที่เก็บไฟล์ธีม GUI แบบกำหนดเอง", "CustomThemeBrowseTooltip": "เรียกดูธีม GUI ที่กำหนดเอง", - "DockModeToggleTooltip": "ด็อกโหมดทำให้ระบบจำลองการทำงานเสมือน Nintendo ที่กำลังเชื่อมต่ออยู่ด็อก สิ่งนี้จะปรับปรุงความเสถียรภาพของกราฟิกในเกมส่วนใหญ่ ในทางกลับกัน การปิดใช้จะทำให้ระบบจำลองทำงานเหมือนกับ Nintendo Switch แบบพกพา ส่งผลให้คุณภาพกราฟิกลดลง\n\nกำหนดค่าส่วนควบคุมของผู้เล่น 1 หากวางแผนที่จะใช้ด็อกโหมด กำหนดค่าการควบคุมแบบ แฮนด์เฮลด์ หากวางแผนที่จะใช้โหมดแฮนด์เฮลด์\n\nเปิดทิ้งไว้หากคุณไม่แน่ใจ", + "DockModeToggleTooltip": "ด็อกโหมด ทำให้ระบบจำลองการทำงานเสมือน Nintendo ที่กำลังเชื่อมต่ออยู่ด็อก สิ่งนี้จะปรับปรุงความเสถียรภาพของกราฟิกในเกมส่วนใหญ่ ในทางกลับกัน การปิดใช้จะทำให้ระบบจำลองทำงานเหมือนกับ Nintendo Switch แบบพกพา ส่งผลให้คุณภาพกราฟิกลดลง\n\nกำหนดค่าส่วนควบคุมของผู้เล่น 1 หากวางแผนที่จะใช้ด็อกโหมด กำหนดค่าการควบคุมแบบ แฮนด์เฮลด์ หากวางแผนที่จะใช้โหมดแฮนด์เฮลด์\n\nเปิดทิ้งไว้หากคุณไม่แน่ใจ", "DirectKeyboardTooltip": "รองรับการเข้าถึงแป้นพิมพ์โดยตรง (HID) ให้เกมเข้าถึงคีย์บอร์ดของคุณเป็นอุปกรณ์ป้อนข้อความ\n\nใช้งานได้กับเกมที่รองรับการใช้งานคีย์บอร์ดบนฮาร์ดแวร์ของ Switch เท่านั้น\n\nหากคุณไม่แน่ใจปล่อยให้ปิดอย่างนั้น", "DirectMouseTooltip": "รองรับการเข้าถึงเมาส์โดยตรง (HID) ให้เกมเข้าถึงเมาส์ของคุณเป็นอุปกรณ์ชี้ตำแหน่ง\n\nใช้งานได้เฉพาะกับเกมที่รองรับการควบคุมเมาส์บนฮาร์ดแวร์ของ Switch เท่านั้น ซึ่งมีอยู่ไม่มากนัก\n\nเมื่อเปิดใช้งาน ฟังก์ชั่นหน้าจอสัมผัสอาจไม่ทำงาน\n\nหากคุณไม่แน่ใจปล่อยให้ปิดอย่างนั้น", "RegionTooltip": "เปลี่ยนภูมิภาคของระบบ", @@ -476,27 +582,27 @@ "ResolutionScaleEntryTooltip": "สเกลความละเอียดจุดทศนิยม เช่น 1.5 ไม่ใช่จำนวนเต็มของสเกล มีแนวโน้มที่จะก่อให้เกิดปัญหาหรือความผิดพลาดได้", "AnisotropyTooltip": "ระดับของการกรองแบบ Anisotropic ตั้งค่าเป็นอัตโนมัติเพื่อใช้ค่าที่เกมร้องขอ", "AspectRatioTooltip": "อัตราส่วนภาพที่ใช้กับหน้าต่างตัวแสดงภาพ\n\nเปลี่ยนสิ่งนี้หากคุณใช้ตัวดัดแปลงอัตราส่วนกว้างยาวสำหรับเกมของคุณ ไม่เช่นนั้นกราฟิกจะถูกยืดออก\n\nทิ้งไว้ที่ 16:9 หากไม่แน่ใจ", - "ShaderDumpPathTooltip": "ที่เก็บ ดัมพ์ไฟล์ของ เชเดอร์กราฟิก", - "FileLogTooltip": "บันทึกการบันทึกคอนโซลลงในไฟล์บันทึกบนดิสก์ จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", - "StubLogTooltip": "พิมพ์ข้อความบันทึกต้นขั้วในคอนโซล จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", + "ShaderDumpPathTooltip": "ที่เก็บ ดัมพ์ไฟล์ พื้นผิวและแสงเงา", + "FileLogTooltip": "บันทึก ประวัติคอนโซลลงในไฟล์บันทึกบนดิสก์ จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", + "StubLogTooltip": "พิมพ์ข้อความประวัติในคอนโซล จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", "InfoLogTooltip": "พิมพ์ข้อความบันทึกข้อมูลในคอนโซล จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", - "WarnLogTooltip": "พิมพ์ข้อความบันทึกแจ้งตือนในคอนโซล จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", + "WarnLogTooltip": "พิมพ์ข้อความประวัติแจ้งตือนในคอนโซล จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", "ErrorLogTooltip": "พิมพ์ข้อความบันทึกข้อผิดพลาดในคอนโซล จะไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", - "TraceLogTooltip": "พิมพ์ข้อความบันทึกการติดตามในคอนโซล ไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", - "GuestLogTooltip": "พิมพ์ข้อความบันทึกของผู้เยี่ยมชมในคอนโซล ไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", + "TraceLogTooltip": "พิมพ์ข้อความประวัติการติดตามในคอนโซล ไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", + "GuestLogTooltip": "พิมพ์ข้อความประวัติของผู้เยี่ยมชมในคอนโซล ไม่ส่งผลกระทบต่อประสิทธิภาพการทำงาน", "FileAccessLogTooltip": "พิมพ์ข้อความบันทึกการเข้าถึงไฟล์ในคอนโซล", - "FSAccessLogModeTooltip": "เปิดใช้งานเอาต์พุตบันทึกการเข้าถึง FS ไปยังคอนโซล โหมดที่เป็นไปได้คือ 0-3", + "FSAccessLogModeTooltip": "เปิดใช้งาน เอาต์พุตประวัติการเข้าถึง FS ไปยังคอนโซล โหมดที่เป็นไปได้คือ 0-3", "DeveloperOptionTooltip": "โปรดใช้ด้วยความระมัดระวัง", "OpenGlLogLevel": "จำเป็นต้องเปิดใช้งานระดับบันทึกที่เหมาะสม", - "DebugLogTooltip": "พิมพ์ข้อความบันทึกการแก้ไขข้อบกพร่องในคอนโซล\n\nใช้สิ่งนี้เฉพาะเมื่อได้รับคำแนะนำจากเจ้าหน้าที่โดยเฉพาะเท่านั้น เนื่องจากจะทำให้บันทึกอ่านยากและทำให้ประสิทธิภาพของโปรแกรมจำลองแย่ลง", + "DebugLogTooltip": "พิมพ์ข้อความประวัติการแก้ไขข้อบกพร่องในคอนโซล\n\nใช้สิ่งนี้เฉพาะเมื่อได้รับคำแนะนำจากเจ้าหน้าที่โดยเฉพาะเท่านั้น เนื่องจากจะทำให้บันทึกอ่านยากและทำให้ประสิทธิภาพของโปรแกรมจำลองแย่ลง", "LoadApplicationFileTooltip": "เปิด File Explorer เพื่อเลือกไฟล์ที่เข้ากันได้กับ Switch ที่จะโหลด", "LoadApplicationFolderTooltip": "เปิดตัวสำรวจไฟล์เพื่อเลือกไฟล์ที่เข้ากันได้กับ Switch ที่จะโหลด", - "OpenRyujinxFolderTooltip": "เปิดโฟลเดอร์ระบบไฟล์ รียูจินซ์", - "OpenRyujinxLogsTooltip": "เปิดโฟลเดอร์ที่มีการเขียนบันทึก", + "OpenRyujinxFolderTooltip": "เปิดโฟลเดอร์ระบบไฟล์ Ryujinx", + "OpenRyujinxLogsTooltip": "เปิดโฟลเดอร์ ที่เก็บไฟล์ประวัติ", "ExitTooltip": "ออกจากโปรแกรม รียูจินซ์", "OpenSettingsTooltip": "เปิดหน้าต่างการตั้งค่า", "OpenProfileManagerTooltip": "เปิดหน้าต่างตัวจัดการโปรไฟล์ผู้ใช้", - "StopEmulationTooltip": "หยุดการจำลองเกมปัจจุบันและกลับไปยังการเลือกเกม", + "StopEmulationTooltip": "หยุดการจำลองของเกมที่เปิดอยู่ในปัจจุบันและกลับไปยังการเลือกเกม", "CheckUpdatesTooltip": "ตรวจสอบการอัปเดตของ รียูจินซ์", "OpenAboutTooltip": "เปิดหน้าต่าง เกี่ยวกับ", "GridSize": "ขนาดตาราง", @@ -519,7 +625,7 @@ "SettingsTabNetwork": "เครือข่าย", "SettingsTabNetworkConnection": "การเชื่อมต่อเครือข่าย", "SettingsTabCpuCache": "ซีพียู แคช", - "SettingsTabCpuMemory": "ซีพียูเมมโมรี่ แคช", + "SettingsTabCpuMemory": "โหมดซีพียู", "DialogUpdaterFlatpakNotSupportedMessage": "โปรดอัปเดต รียูจินซ์ ผ่านช่องทาง FlatHub", "UpdaterDisabledWarningTitle": "ปิดใช้งานการอัปเดตแล้ว!", "ControllerSettingsRotate90": "หมุน 90 องศา ตามเข็มนาฬิกา", @@ -527,20 +633,20 @@ "IconSizeTooltip": "เปลี่ยนขนาดของไอคอนเกม", "MenuBarOptionsShowConsole": "แสดง คอนโซล", "ShaderCachePurgeError": "เกิดข้อผิดพลาดในการล้างแคชเชเดอร์ {0}: {1}", - "UserErrorNoKeys": "ไม่พบคีย์", - "UserErrorNoFirmware": "ไม่พบเฟิร์มแวร์", - "UserErrorFirmwareParsingFailed": "เกิดข้อผิดพลาดในการแยกวิเคราะห์เฟิร์มแวร์", - "UserErrorApplicationNotFound": "ไม่พบแอปพลิเคชัน", + "UserErrorNoKeys": "ไม่พบ คีย์", + "UserErrorNoFirmware": "ไม่พบ เฟิร์มแวร์", + "UserErrorFirmwareParsingFailed": "เกิดข้อผิดพลาดในการวิเคราะห์เฟิร์มแวร์", + "UserErrorApplicationNotFound": "ไม่พบ แอปพลิเคชัน", "UserErrorUnknown": "ข้อผิดพลาดที่ไม่รู้จัก", "UserErrorUndefined": "ข้อผิดพลาดที่ไม่ได้ระบุ", - "UserErrorNoKeysDescription": "รียูจินซ์ ไม่พบไฟล์ 'prod.keys' ของคุณ", - "UserErrorNoFirmwareDescription": "รียูจินซ์ ไม่พบเฟิร์มแวร์ที่ติดตั้งไว้", - "UserErrorFirmwareParsingFailedDescription": "รียูจินซ์ ไม่สามารถแยกวิเคราะห์เฟิร์มแวร์ที่ให้มาได้ ซึ่งมักมีสาเหตุมาจากคีย์ที่ล้าสมัย", + "UserErrorNoKeysDescription": "รียูจินซ์ ไม่พบไฟล์ 'prod.keys' ในเครื่องของคุณ", + "UserErrorNoFirmwareDescription": "รียูจินซ์ ไม่พบ เฟิร์มแวร์ที่ติดตั้งไว้ในเครื่องของคุณ", + "UserErrorFirmwareParsingFailedDescription": "รียูจินซ์ ไม่สามารถวิเคราะห์เฟิร์มแวร์ที่ให้มาได้ ซึ่งมักมีสาเหตุมาจากคีย์ที่ล้าสมัย", "UserErrorApplicationNotFoundDescription": "รียูจินซ์ ไม่พบแอปพลิเคชันที่ถูกต้องในที่เก็บไฟล์ที่กำหนด", - "UserErrorUnknownDescription": "เกิดข้อผิดพลาดที่ไม่รู้จักเกิดขึ้น!", + "UserErrorUnknownDescription": "เกิดข้อผิดพลาดที่ไม่รู้จัก!", "UserErrorUndefinedDescription": "เกิดข้อผิดพลาดที่ไม่สามารถระบุได้! สิ่งนี้ไม่ควรเกิดขึ้น โปรดติดต่อผู้พัฒนา!", "OpenSetupGuideMessage": "เปิดคู่มือการตั้งค่า", - "NoUpdate": "ไม่มีการอัพเดต", + "NoUpdate": "ไม่มีการอัปเดต", "TitleUpdateVersionLabel": "เวอร์ชั่น {0}", "RyujinxInfo": "รียูจินซ์ – ข้อมูล", "RyujinxConfirm": "รียูจินซ์ - ยืนยัน", @@ -565,16 +671,16 @@ "Docked": "ด็อก", "Handheld": "แฮนด์เฮลด์", "ConnectionError": "การเชื่อมต่อล้มเหลว", - "AboutPageDeveloperListMore": "{0} และอื่น ๆ...", + "AboutPageDeveloperListMore": "{0} และอื่นๆ ...", "ApiError": "ข้อผิดพลาดของ API", "LoadingHeading": "กำลังโหลด {0}", "CompilingPPTC": "กำลังคอมไพล์ PTC", - "CompilingShaders": "กำลังคอมไพล์ เชเดอร์", + "CompilingShaders": "กำลังคอมไพล์ พื้นผิวและแสงเงา", "AllKeyboards": "คีย์บอร์ดทั้งหมด", "OpenFileDialogTitle": "เลือกไฟล์ที่สนับสนุนเพื่อเปิด", "OpenFolderDialogTitle": "เลือกโฟลเดอร์ที่มีเกมที่แตกไฟล์แล้ว", "AllSupportedFormats": "รูปแบบที่รองรับทั้งหมด", - "RyujinxUpdater": "อัพเดต รียูจินซ์", + "RyujinxUpdater": "อัปเดต รียูจินซ์", "SettingsTabHotkeys": "ปุ่มลัดของคีย์บอร์ด", "SettingsTabHotkeysHotkeys": "ปุ่มลัดของคีย์บอร์ด", "SettingsTabHotkeysToggleVsyncHotkey": "สลับเป็น VSync:", @@ -582,7 +688,7 @@ "SettingsTabHotkeysShowUiHotkey": "แสดง UI:", "SettingsTabHotkeysPauseHotkey": "หยุดชั่วคราว:", "SettingsTabHotkeysToggleMuteHotkey": "ปิดเสียง:", - "ControllerMotionTitle": "การตั้งค่าการควบคุมการเคลื่อนไหว", + "ControllerMotionTitle": "ตั้งค่าควบคุมการเคลื่อนไหว", "ControllerRumbleTitle": "ตั้งค่าการสั่นไหว", "SettingsSelectThemeFileDialogTitle": "เลือกไฟล์ธีม", "SettingsXamlThemeFile": "ไฟล์ธีมรูปแบบ XAML", @@ -593,11 +699,12 @@ "Writable": "สามารถเขียนได้", "SelectDlcDialogTitle": "เลือกไฟล์ DLC", "SelectUpdateDialogTitle": "เลือกไฟล์อัพเดต", - "SelectModDialogTitle": "เลือกไดเรกทอรี ม็อด", + "SelectModDialogTitle": "เลือกไดเรกทอรี Mods", "UserProfileWindowTitle": "จัดการโปรไฟล์ผู้ใช้", "CheatWindowTitle": "จัดการสูตรโกง", "DlcWindowTitle": "จัดการเนื้อหาที่ดาวน์โหลดได้สำหรับ {0} ({1})", - "UpdateWindowTitle": "จัดการการอัพเดตชื่อเรื่อง", + "ModWindowTitle": "Manage Mods for {0} ({1})", + "UpdateWindowTitle": "จัดการอัปเดตหัวข้อ", "CheatWindowHeading": "สูตรโกงมีให้สำหรับ {0} [{1}]", "BuildId": "รหัสบิวด์:", "DlcWindowHeading": "{0} เนื้อหาที่สามารถดาวน์โหลดได้", @@ -608,21 +715,21 @@ "Discard": "ละทิ้ง", "Paused": "หยุดชั่วคราว", "UserProfilesSetProfileImage": "ตั้งค่ารูปโปรไฟล์", - "UserProfileEmptyNameError": "จำเป็นต้องมีการระบุชื่อ", + "UserProfileEmptyNameError": "จำเป็นต้องระบุชื่อ", "UserProfileNoImageError": "จำเป็นต้องตั้งค่ารูปโปรไฟล์", "GameUpdateWindowHeading": "จัดการอัพเดตสำหรับ {0} ({1})", "SettingsTabHotkeysResScaleUpHotkey": "เพิ่มความละเอียด:", "SettingsTabHotkeysResScaleDownHotkey": "ลดความละเอียด:", "UserProfilesName": "ชื่อ:", "UserProfilesUserId": "รหัสผู้ใช้:", - "SettingsTabGraphicsBackend": "แบ็กเอนด์กราฟิก", - "SettingsTabGraphicsBackendTooltip": "เลือกแบ็กเอนด์กราฟิกที่จะใช้ในโปรแกรมจำลอง\n\nโดยรวมแล้ว Vulkan นั้นดีกว่าสำหรับกราฟิกการ์ดรุ่นใหม่ทั้งหมด ตราบใดที่ไดรเวอร์ยังอัพเดทอยู่เสมอ Vulkan ยังมีคุณสมบัติการคอมไพล์เชเดอร์ที่เร็วขึ้น (ลดอาการกระตุก) ของผู้จำหน่าย GPU ทุกรายอยู่แล้ว\n\nOpenGL อาจได้รับผลลัพธ์ที่ดีกว่าบน Nvidia GPU รุ่นเก่า, AMD GPU รุ่นเก่าบน Linux หรือบน GPU ที่มี VRAM ต่ำกว่า แม้ว่าการคอมไพล์เชเดอร์จะสะดุดมากขึ้นก็ตาม\n\nตั้งค่าเป็น Vulkan หากไม่แน่ใจ ตั้งค่าเป็น OpenGL หาก GPU ของคุณไม่รองรับ Vulkan แม้จะมีไดรเวอร์กราฟิกล่าสุดก็ตาม", - "SettingsEnableTextureRecompression": "เปิดใช้งานการบีบอัดพื้นผิวอีกครั้ง", + "SettingsTabGraphicsBackend": "กราฟิกเบื้องหลัง", + "SettingsTabGraphicsBackendTooltip": "เลือกกราฟิกเบื้องหลังที่จะใช้ในโปรแกรมจำลอง\n\nโดยรวมแล้ว Vulkan นั้นดีกว่าสำหรับกราฟิกการ์ดรุ่นใหม่ทั้งหมด ตราบใดที่ไดรเวอร์ยังอัพเดทอยู่เสมอ Vulkan ยังมีคุณสมบัติการคอมไพล์เชเดอร์ที่เร็วขึ้น (ลดอาการกระตุก) ของผู้จำหน่าย GPU ทุกราย\n\nOpenGL อาจได้รับผลลัพธ์ที่ดีกว่าบน Nvidia GPU รุ่นเก่า, AMD GPU รุ่นเก่าบน Linux หรือบน GPU ที่มี VRAM ต่ำกว่า แม้ว่าการคอมไพล์เชเดอร์ จะทำให้อาการกระตุกมากขึ้นก็ตาม\n\nตั้งค่าเป็น Vulkan หากไม่แน่ใจ ตั้งค่าเป็น OpenGL หาก GPU ของคุณไม่รองรับ Vulkan แม้จะมีไดรเวอร์กราฟิกล่าสุดก็ตาม", + "SettingsEnableTextureRecompression": "เปิดใช้งาน การบีบอัดพื้นผิวอีกครั้ง", "SettingsEnableTextureRecompressionTooltip": "บีบอัดพื้นผิว ASTC เพื่อลดการใช้งาน VRAM\n\nเกมที่ใช้รูปแบบพื้นผิวนี้ ได้แก่ Astral Chain, Bayonetta 3, Fire Emblem Engage, Metroid Prime Remastered, Super Mario Bros. Wonder และ The Legend of Zelda: Tears of the Kingdom\n\nกราฟิกการ์ดที่มี 4 กิกะไบต์ VRAM หรือน้อยกว่ามีแนวโน้มที่จะให้แคชในบางจุดขณะเล่นเกมเหล่านี้\n\nเปิดใช้งานเฉพาะในกรณีที่ VRAM ของคุณใกล้หมดในเกมที่กล่าวมาข้างต้น ปล่อยให้ปิดหากไม่แน่ใจ", "SettingsTabGraphicsPreferredGpu": "GPU ที่ต้องการ", "SettingsTabGraphicsPreferredGpuTooltip": "เลือกกราฟิกการ์ดที่จะใช้กับแบ็กเอนด์กราฟิก Vulkan\n\nไม่ส่งผลต่อ GPU ที่ OpenGL จะใช้\n\nตั้งค่าเป็น GPU ที่ถูกตั้งค่าสถานะเป็น \"dGPU\" หากคุณไม่แน่ใจ หากไม่มีก็ปล่อยทิ้งไว้โดยไม่มีใครแตะต้องมัน", "SettingsAppRequiredRestartMessage": "จำเป็นต้องรีสตาร์ท รียูจินซ์", - "SettingsGpuBackendRestartMessage": "การตั้งค่ากราฟิกแบ็กเอนด์หรือ GPU ได้รับการแก้ไขแล้ว สิ่งนี้จะต้องมีการรีสตาร์ทจึงจะสามารถใช้งานได้", + "SettingsGpuBackendRestartMessage": "การตั้งค่ากราฟิกเบื้องหลังหรือ GPU ได้รับการแก้ไขแล้ว สิ่งนี้จะต้องมีการรีสตาร์ทจึงจะสามารถใช้งานได้", "SettingsGpuBackendRestartSubMessage": "คุณต้องการรีสตาร์ทตอนนี้หรือไม่?", "RyujinxUpdaterMessage": "คุณต้องการอัพเดต รียูจินซ์ เป็นเวอร์ชั่นล่าสุดหรือไม่?", "SettingsTabHotkeysVolumeUpHotkey": "เพิ่มระดับเสียง:", @@ -662,9 +769,9 @@ "SettingsTabNetworkInterface": "เชื่อมต่อเครือข่าย:", "NetworkInterfaceTooltip": "อินเทอร์เฟซเครือข่ายที่ใช้สำหรับคุณสมบัติ LAN/LDN\n\nเมื่อใช้ร่วมกับ VPN หรือ XLink Kai และเกมที่รองรับ LAN สามารถใช้เพื่อปลอมการเชื่อมต่อเครือข่ายเดียวกันผ่านทางอินเทอร์เน็ต\n\nปล่อยให้เป็น ค่าเริ่มต้น หากคุณไม่แน่ใจ", "NetworkInterfaceDefault": "ค่าเริ่มต้น", - "PackagingShaders": "แพ็คเชเดอร์ไฟล์", - "AboutChangelogButton": "ดูบันทึกการเปลี่ยนแปลงบน GitHub", - "AboutChangelogButtonTooltipMessage": "คลิกเพื่อเปิดบันทึกการเปลี่ยนแปลงสำหรับเวอร์ชั่นนี้ บนเบราว์เซอร์เริ่มต้นของคุณ", + "PackagingShaders": "รวม Shaders เข้าด้วยกัน", + "AboutChangelogButton": "ดูประวัติการเปลี่ยนแปลงบน GitHub", + "AboutChangelogButtonTooltipMessage": "คลิกเพื่อเปิดประวัติการเปลี่ยนแปลงสำหรับเวอร์ชั่นนี้ บนเบราว์เซอร์เริ่มต้นของคุณ", "SettingsTabNetworkMultiplayer": "ผู้เล่นหลายคน", "MultiplayerMode": "โหมด:", "MultiplayerModeTooltip": "เปลี่ยนโหมดผู้เล่นหลายคนของ LDN\n\nLdnMitm จะปรับเปลี่ยนฟังก์ชันการเล่นแบบไร้สาย/ภายใน จะให้เกมทำงานเหมือนกับว่าเป็น LAN ช่วยให้สามารถเชื่อมต่อภายในเครือข่ายเดียวกันกับอินสแตนซ์ Ryujinx อื่น ๆ และคอนโซล Nintendo Switch ที่ถูกแฮ็กซึ่งมีโมดูล ldn_mitm ติดตั้งอยู่\n\nผู้เล่นหลายคนต้องการให้ผู้เล่นทุกคนอยู่ในเกมเวอร์ชันเดียวกัน (เช่น Super Smash Bros. Ultimate v13.0.1 ไม่สามารถเชื่อมต่อกับ v13.0.0)\n\nปล่อยให้ปิดการใช้งานหากไม่แน่ใจ", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/tr_TR.json b/ryujinx/src/Ryujinx/Assets/Locales/tr_TR.json index bfb5cb53a2..f74baaa182 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/tr_TR.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/tr_TR.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Dosya uzantılarını yönet", "MenuBarToolsInstallFileTypes": "Dosya uzantılarını yükle", "MenuBarToolsUninstallFileTypes": "Dosya uzantılarını kaldır", + "MenuBarView": "_Görüntüle", + "MenuBarViewWindow": "Pencere Boyutu", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Yardım", "MenuBarHelpCheckForUpdates": "Güncellemeleri Denetle", "MenuBarHelpAbout": "Hakkında", @@ -73,7 +77,7 @@ "GameListContextMenuCreateShortcut": "Uygulama Kısayolu Oluştur", "GameListContextMenuCreateShortcutToolTip": "Seçilmiş uygulamayı çalıştıracak bir masaüstü kısayolu oluştur", "GameListContextMenuCreateShortcutToolTipMacOS": "Create a shortcut in macOS's Applications folder that launches the selected Application", - "GameListContextMenuOpenModsDirectory": "Open Mods Directory", + "GameListContextMenuOpenModsDirectory": "Mod Dizinini Aç", "GameListContextMenuOpenModsDirectoryToolTip": "Opens the directory which contains Application's Mods", "GameListContextMenuOpenSdModsDirectory": "Open Atmosphere Mods Directory", "GameListContextMenuOpenSdModsDirectoryToolTip": "Opens the alternative SD card Atmosphere directory which contains Application's Mods. Useful for mods that are packaged for real hardware.", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Discord Zengin İçerik'i Etkinleştir", "SettingsTabGeneralCheckUpdatesOnLaunch": "Her Açılışta Güncellemeleri Denetle", "SettingsTabGeneralShowConfirmExitDialog": "\"Çıkışı Onayla\" Diyaloğunu Göster", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "İşaretçiyi Gizle:", "SettingsTabGeneralHideCursorNever": "Hiçbir Zaman", "SettingsTabGeneralHideCursorOnIdle": "Hareketsiz Durumda", @@ -155,7 +160,7 @@ "SettingsTabGraphicsResolutionScaleNative": "Yerel (720p/1080p)", "SettingsTabGraphicsResolutionScale2x": "2x (1440p/2160p)", "SettingsTabGraphicsResolutionScale3x": "3x (2160p/3240p)", - "SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p) (Not recommended)", + "SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p) (Tavsiye Edilmez)", "SettingsTabGraphicsAspectRatio": "En-Boy Oranı:", "SettingsTabGraphicsAspectRatio4x3": "4:3", "SettingsTabGraphicsAspectRatio16x9": "16:9", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Gyro Ölü Bölgesi:", "ControllerSettingsSave": "Kaydet", "ControllerSettingsClose": "Kapat", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Sol Shift", + "KeyShiftRight": "Sağ Shift", + "KeyControlLeft": "Sol Ctrl", + "KeyMacControlLeft": "⌃ Sol", + "KeyControlRight": "Sağ Control", + "KeyMacControlRight": "⌃ Sağ", + "KeyAltLeft": "Sol Alt", + "KeyMacAltLeft": "⌥ Sol", + "KeyAltRight": "Sağ Alt", + "KeyMacAltRight": "⌥ Sağ", + "KeyWinLeft": "⊞ Sol", + "KeyMacWinLeft": "⌘ Sol", + "KeyWinRight": "⊞ Sağ", + "KeyMacWinRight": "⌘ Sağ", + "KeyMenu": "Menü", + "KeyUp": "Yukarı", + "KeyDown": "Aşağı", + "KeyLeft": "Sol", + "KeyRight": "Sağ", + "KeyEnter": "Enter", + "KeyEscape": "Esc", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Geri tuşu", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Sağ", + "GamepadMinus": "-", + "GamepadPlus": "4", + "GamepadGuide": "Rehber", + "GamepadMisc1": "Diğer", + "GamepadPaddle1": "Pedal 1", + "GamepadPaddle2": "Pedal 2", + "GamepadPaddle3": "Pedal 3", + "GamepadPaddle4": "Pedal 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Sol Tetik 0", + "GamepadSingleRightTrigger0": "Sağ Tetik 0", + "GamepadSingleLeftTrigger1": "Sol Tetik 1", + "GamepadSingleRightTrigger1": "Sağ Tetik 1", + "StickLeft": "Sol Çubuk", + "StickRight": "Sağ çubuk", "UserProfilesSelectedUserProfile": "Seçili Kullanıcı Profili:", "UserProfilesSaveProfileName": "Profil İsmini Kaydet", "UserProfilesChangeProfileImage": "Profil Resmini Değiştir", @@ -297,9 +403,9 @@ "GameListContextMenuRunApplication": "Uygulamayı Çalıştır", "GameListContextMenuToggleFavorite": "Favori Ayarla", "GameListContextMenuToggleFavoriteToolTip": "Oyunu Favorilere Ekle/Çıkar", - "SettingsTabGeneralTheme": "Theme:", - "SettingsTabGeneralThemeDark": "Dark", - "SettingsTabGeneralThemeLight": "Light", + "SettingsTabGeneralTheme": "Tema:", + "SettingsTabGeneralThemeDark": "Karanlık", + "SettingsTabGeneralThemeLight": "Aydınlık", "ControllerSettingsConfigureGeneral": "Ayarla", "ControllerSettingsRumble": "Titreşim", "ControllerSettingsRumbleStrongMultiplier": "Güçlü Titreşim Çoklayıcı", @@ -384,10 +490,10 @@ "DialogUserProfileUnsavedChangesSubMessage": "Yaptığınız değişiklikleri iptal etmek istediğinize emin misiniz?", "DialogControllerSettingsModifiedConfirmMessage": "Geçerli kumanda seçenekleri güncellendi.", "DialogControllerSettingsModifiedConfirmSubMessage": "Kaydetmek istiyor musunuz?", - "DialogLoadFileErrorMessage": "{0}. Errored File: {1}", - "DialogModAlreadyExistsMessage": "Mod already exists", + "DialogLoadFileErrorMessage": "{0}. Hatalı Dosya: {1}", + "DialogModAlreadyExistsMessage": "Mod zaten var", "DialogModInvalidMessage": "The specified directory does not contain a mod!", - "DialogModDeleteNoParentMessage": "Failed to Delete: Could not find the parent directory for mod \"{0}\"!", + "DialogModDeleteNoParentMessage": "Silme Başarısız: \"{0}\" Modu için üst dizin bulunamadı! ", "DialogDlcNoDlcErrorMessage": "Belirtilen dosya seçilen oyun için DLC içermiyor!", "DialogPerformanceCheckLoggingEnabledMessage": "Sadece geliştiriler için dizayn edilen Trace Loglama seçeneği etkin.", "DialogPerformanceCheckLoggingEnabledConfirmMessage": "En iyi performans için trace loglama'nın devre dışı bırakılması tavsiye edilir. Trace loglama seçeneğini şimdi devre dışı bırakmak ister misiniz?", @@ -434,7 +540,7 @@ "DlcManagerRemoveAllButton": "Tümünü kaldır", "DlcManagerEnableAllButton": "Tümünü Aktif Et", "DlcManagerDisableAllButton": "Tümünü Devre Dışı Bırak", - "ModManagerDeleteAllButton": "Delete All", + "ModManagerDeleteAllButton": "Hepsini Sil", "MenuBarOptionsChangeLanguage": "Dili Değiştir", "MenuBarShowFileTypes": "Dosya Uzantılarını Göster", "CommonSort": "Sırala", @@ -509,8 +615,8 @@ "EnableInternetAccessTooltip": "Emüle edilen uygulamanın internete bağlanmasını sağlar.\n\nLAN modu bulunan oyunlar bu seçenek ile birbirine bağlanabilir ve sistemler aynı access point'e bağlanır. Bu gerçek konsolları da kapsar.\n\nNintendo sunucularına bağlanmayı sağlaMAZ. Internete bağlanmaya çalışan baz oyunların çökmesine sebep olabilr.\n\nEmin değilseniz devre dışı bırakın.", "GameListContextMenuManageCheatToolTip": "Hileleri yönetmeyi sağlar", "GameListContextMenuManageCheat": "Hileleri Yönet", - "GameListContextMenuManageModToolTip": "Manage Mods", - "GameListContextMenuManageMod": "Manage Mods", + "GameListContextMenuManageModToolTip": "Modları Yönet", + "GameListContextMenuManageMod": "Modları Yönet", "ControllerSettingsStickRange": "Menzil:", "DialogStopEmulationTitle": "Ryujinx - Emülasyonu Durdur", "DialogStopEmulationMessage": "Emülasyonu durdurmak istediğinizden emin misiniz?", @@ -593,15 +699,16 @@ "Writable": "Yazılabilir", "SelectDlcDialogTitle": "DLC dosyalarını seç", "SelectUpdateDialogTitle": "Güncelleme dosyalarını seç", - "SelectModDialogTitle": "Select mod directory", + "SelectModDialogTitle": "Mod Dizinini Seç", "UserProfileWindowTitle": "Kullanıcı Profillerini Yönet", "CheatWindowTitle": "Oyun Hilelerini Yönet", "DlcWindowTitle": "Oyun DLC'lerini Yönet", + "ModWindowTitle": "Manage Mods for {0} ({1})", "UpdateWindowTitle": "Oyun Güncellemelerini Yönet", "CheatWindowHeading": "{0} için Hile mevcut [{1}]", "BuildId": "BuildId:", "DlcWindowHeading": "{0} için DLC mevcut [{1}]", - "ModWindowHeading": "{0} Mod(s)", + "ModWindowHeading": "{0} Mod(lar)", "UserProfilesEditProfile": "Seçiliyi Düzenle", "Cancel": "İptal", "Save": "Kaydet", @@ -668,6 +775,6 @@ "SettingsTabNetworkMultiplayer": "Çok Oyunculu", "MultiplayerMode": "Mod:", "MultiplayerModeTooltip": "Change LDN multiplayer mode.\n\nLdnMitm will modify local wireless/local play functionality in games to function as if it were LAN, allowing for local, same-network connections with other Ryujinx instances and hacked Nintendo Switch consoles that have the ldn_mitm module installed.\n\nMultiplayer requires all players to be on the same game version (i.e. Super Smash Bros. Ultimate v13.0.1 can't connect to v13.0.0).\n\nLeave DISABLED if unsure.", - "MultiplayerModeDisabled": "Disabled", + "MultiplayerModeDisabled": "Devre Dışı", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/ryujinx/src/Ryujinx/Assets/Locales/uk_UA.json b/ryujinx/src/Ryujinx/Assets/Locales/uk_UA.json index dcf85eae9e..976edfb1b3 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/uk_UA.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/uk_UA.json @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "Керувати типами файлів", "MenuBarToolsInstallFileTypes": "Установити типи файлів", "MenuBarToolsUninstallFileTypes": "Видалити типи файлів", + "MenuBarView": "_View", + "MenuBarViewWindow": "Window Size", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "_Допомога", "MenuBarHelpCheckForUpdates": "Перевірити оновлення", "MenuBarHelpAbout": "Про застосунок", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "Увімкнути розширену присутність Discord", "SettingsTabGeneralCheckUpdatesOnLaunch": "Перевіряти наявність оновлень під час запуску", "SettingsTabGeneralShowConfirmExitDialog": "Показати діалогове вікно «Підтвердити вихід».", + "SettingsTabGeneralRememberWindowState": "Remember Window Size/Position", "SettingsTabGeneralHideCursor": "Сховати вказівник:", "SettingsTabGeneralHideCursorNever": "Ніколи", "SettingsTabGeneralHideCursorOnIdle": "Сховати у режимі очікування", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "Мертва зона гіроскопа:", "ControllerSettingsSave": "Зберегти", "ControllerSettingsClose": "Закрити", + "KeyUnknown": "Unknown", + "KeyShiftLeft": "Shift Left", + "KeyShiftRight": "Shift Right", + "KeyControlLeft": "Ctrl Left", + "KeyMacControlLeft": "⌃ Left", + "KeyControlRight": "Ctrl Right", + "KeyMacControlRight": "⌃ Right", + "KeyAltLeft": "Alt Left", + "KeyMacAltLeft": "⌥ Left", + "KeyAltRight": "Alt Right", + "KeyMacAltRight": "⌥ Right", + "KeyWinLeft": "⊞ Left", + "KeyMacWinLeft": "⌘ Left", + "KeyWinRight": "⊞ Right", + "KeyMacWinRight": "⌘ Right", + "KeyMenu": "Menu", + "KeyUp": "Up", + "KeyDown": "Down", + "KeyLeft": "Left", + "KeyRight": "Right", + "KeyEnter": "Enter", + "KeyEscape": "Escape", + "KeySpace": "Space", + "KeyTab": "Tab", + "KeyBackSpace": "Backspace", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "Clear", + "KeyKeypad0": "Keypad 0", + "KeyKeypad1": "Keypad 1", + "KeyKeypad2": "Keypad 2", + "KeyKeypad3": "Keypad 3", + "KeyKeypad4": "Keypad 4", + "KeyKeypad5": "Keypad 5", + "KeyKeypad6": "Keypad 6", + "KeyKeypad7": "Keypad 7", + "KeyKeypad8": "Keypad 8", + "KeyKeypad9": "Keypad 9", + "KeyKeypadDivide": "Keypad Divide", + "KeyKeypadMultiply": "Keypad Multiply", + "KeyKeypadSubtract": "Keypad Subtract", + "KeyKeypadAdd": "Keypad Add", + "KeyKeypadDecimal": "Keypad Decimal", + "KeyKeypadEnter": "Keypad Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "Unbound", + "GamepadLeftStick": "L Stick Button", + "GamepadRightStick": "R Stick Button", + "GamepadLeftShoulder": "Left Shoulder", + "GamepadRightShoulder": "Right Shoulder", + "GamepadLeftTrigger": "Left Trigger", + "GamepadRightTrigger": "Right Trigger", + "GamepadDpadUp": "Up", + "GamepadDpadDown": "Down", + "GamepadDpadLeft": "Left", + "GamepadDpadRight": "Right", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "Guide", + "GamepadMisc1": "Misc", + "GamepadPaddle1": "Paddle 1", + "GamepadPaddle2": "Paddle 2", + "GamepadPaddle3": "Paddle 3", + "GamepadPaddle4": "Paddle 4", + "GamepadTouchpad": "Touchpad", + "GamepadSingleLeftTrigger0": "Left Trigger 0", + "GamepadSingleRightTrigger0": "Right Trigger 0", + "GamepadSingleLeftTrigger1": "Left Trigger 1", + "GamepadSingleRightTrigger1": "Right Trigger 1", + "StickLeft": "Left Stick", + "StickRight": "Right Stick", "UserProfilesSelectedUserProfile": "Вибраний профіль користувача:", "UserProfilesSaveProfileName": "Зберегти ім'я профілю", "UserProfilesChangeProfileImage": "Змінити зображення профілю", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "Менеджер профілів користувачів", "CheatWindowTitle": "Менеджер читів", "DlcWindowTitle": "Менеджер вмісту для завантаження", + "ModWindowTitle": "Керувати модами для {0} ({1})", "UpdateWindowTitle": "Менеджер оновлення назв", "CheatWindowHeading": "Коди доступні для {0} [{1}]", "BuildId": "ID збірки:", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/zh_CN.json b/ryujinx/src/Ryujinx/Assets/Locales/zh_CN.json index cc1d583e10..66f59ecd04 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/zh_CN.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/zh_CN.json @@ -8,29 +8,33 @@ "SettingsTabSystemMemoryManagerModeHost": "本机映射 (较快)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "跳过检查的本机映射 (最快,但不安全)", "SettingsTabSystemUseHypervisor": "使用 Hypervisor 虚拟化", - "MenuBarFile": "文件", - "MenuBarFileOpenFromFile": "加载游戏文件", - "MenuBarFileOpenUnpacked": "加载解包后的游戏", + "MenuBarFile": "文件(_F)", + "MenuBarFileOpenFromFile": "加载游戏文件(_L)", + "MenuBarFileOpenUnpacked": "加载解包后的游戏(_U)", "MenuBarFileOpenEmuFolder": "打开 Ryujinx 系统目录", "MenuBarFileOpenLogsFolder": "打开日志目录", - "MenuBarFileExit": "退出", - "MenuBarOptions": "选项", + "MenuBarFileExit": "退出(_E)", + "MenuBarOptions": "选项(_O)", "MenuBarOptionsToggleFullscreen": "切换全屏", "MenuBarOptionsStartGamesInFullscreen": "全屏模式启动游戏", "MenuBarOptionsStopEmulation": "停止模拟", - "MenuBarOptionsSettings": "设置", - "MenuBarOptionsManageUserProfiles": "管理用户账户", - "MenuBarActions": "操作", + "MenuBarOptionsSettings": "设置(_S)", + "MenuBarOptionsManageUserProfiles": "管理用户账户(_M)", + "MenuBarActions": "操作(_A)", "MenuBarOptionsSimulateWakeUpMessage": "模拟唤醒消息", "MenuBarActionsScanAmiibo": "扫描 Amiibo", - "MenuBarTools": "工具", + "MenuBarTools": "工具(_T)", "MenuBarToolsInstallFirmware": "安装系统固件", "MenuBarFileToolsInstallFirmwareFromFile": "从 XCI 或 ZIP 文件中安装系统固件", "MenuBarFileToolsInstallFirmwareFromDirectory": "从文件夹中安装系统固件", "MenuBarToolsManageFileTypes": "管理文件扩展名", "MenuBarToolsInstallFileTypes": "关联文件扩展名", "MenuBarToolsUninstallFileTypes": "取消关联扩展名", - "MenuBarHelp": "帮助", + "MenuBarView": "视图(_V)", + "MenuBarViewWindow": "窗口大小", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", + "MenuBarHelp": "帮助(_H)", "MenuBarHelpCheckForUpdates": "检查更新", "MenuBarHelpAbout": "关于", "MenuSearch": "搜索…", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "启用 Discord 在线状态展示", "SettingsTabGeneralCheckUpdatesOnLaunch": "启动时检查更新", "SettingsTabGeneralShowConfirmExitDialog": "退出游戏时需要确认", + "SettingsTabGeneralRememberWindowState": "记住窗口大小和位置", "SettingsTabGeneralHideCursor": "隐藏鼠标指针:", "SettingsTabGeneralHideCursorNever": "从不隐藏", "SettingsTabGeneralHideCursorOnIdle": "自动隐藏", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "陀螺仪死区:", "ControllerSettingsSave": "保存", "ControllerSettingsClose": "关闭", + "KeyUnknown": "未知", + "KeyShiftLeft": "左侧Shift", + "KeyShiftRight": "右侧Shift", + "KeyControlLeft": "左侧Ctrl", + "KeyMacControlLeft": "左侧⌃", + "KeyControlRight": "右侧Ctrl", + "KeyMacControlRight": "右侧⌃", + "KeyAltLeft": "左侧Alt", + "KeyMacAltLeft": "左侧⌥", + "KeyAltRight": "右侧Alt", + "KeyMacAltRight": "右侧⌥", + "KeyWinLeft": "左侧⊞", + "KeyMacWinLeft": "左侧⌘", + "KeyWinRight": "右侧⊞", + "KeyMacWinRight": "右侧⌘", + "KeyMenu": "菜单键", + "KeyUp": "上", + "KeyDown": "下", + "KeyLeft": "左", + "KeyRight": "右", + "KeyEnter": "回车键", + "KeyEscape": "Esc", + "KeySpace": "空格键", + "KeyTab": "Tab", + "KeyBackSpace": "退格键", + "KeyInsert": "Insert", + "KeyDelete": "Delete", + "KeyPageUp": "Page Up", + "KeyPageDown": "Page Down", + "KeyHome": "Home", + "KeyEnd": "End", + "KeyCapsLock": "Caps Lock", + "KeyScrollLock": "Scroll Lock", + "KeyPrintScreen": "Print Screen", + "KeyPause": "Pause", + "KeyNumLock": "Num Lock", + "KeyClear": "清除键", + "KeyKeypad0": "小键盘0", + "KeyKeypad1": "小键盘1", + "KeyKeypad2": "小键盘2", + "KeyKeypad3": "小键盘3", + "KeyKeypad4": "小键盘4", + "KeyKeypad5": "小键盘5", + "KeyKeypad6": "小键盘6", + "KeyKeypad7": "小键盘7", + "KeyKeypad8": "小键盘8", + "KeyKeypad9": "小键盘9", + "KeyKeypadDivide": "小键盘/", + "KeyKeypadMultiply": "小键盘*", + "KeyKeypadSubtract": "小键盘-", + "KeyKeypadAdd": "小键盘+", + "KeyKeypadDecimal": "小键盘.", + "KeyKeypadEnter": "小键盘回车键", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "未分配", + "GamepadLeftStick": "左摇杆按键", + "GamepadRightStick": "右摇杆按键", + "GamepadLeftShoulder": "左肩键L", + "GamepadRightShoulder": "右肩键R", + "GamepadLeftTrigger": "左扳机键ZL", + "GamepadRightTrigger": "右扳机键ZR", + "GamepadDpadUp": "上键", + "GamepadDpadDown": "下键", + "GamepadDpadLeft": "左键", + "GamepadDpadRight": "右键", + "GamepadMinus": "-键", + "GamepadPlus": "+键", + "GamepadGuide": "主页键", + "GamepadMisc1": "截图键", + "GamepadPaddle1": "其他按键1", + "GamepadPaddle2": "其他按键2", + "GamepadPaddle3": "其他按键3", + "GamepadPaddle4": "其他按键4", + "GamepadTouchpad": "触摸板", + "GamepadSingleLeftTrigger0": "左扳机0", + "GamepadSingleRightTrigger0": "右扳机0", + "GamepadSingleLeftTrigger1": "左扳机1", + "GamepadSingleRightTrigger1": "右扳机1", + "StickLeft": "左摇杆", + "StickRight": "右摇杆", "UserProfilesSelectedUserProfile": "选定的用户账户:", "UserProfilesSaveProfileName": "保存名称", "UserProfilesChangeProfileImage": "更换头像", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "管理用户账户", "CheatWindowTitle": "金手指管理器", "DlcWindowTitle": "管理 {0} ({1}) 的 DLC", + "ModWindowTitle": "管理 {0} ({1}) 的 MOD", "UpdateWindowTitle": "游戏更新管理器", "CheatWindowHeading": "适用于 {0} [{1}] 的金手指", "BuildId": "游戏版本 ID:", diff --git a/ryujinx/src/Ryujinx/Assets/Locales/zh_TW.json b/ryujinx/src/Ryujinx/Assets/Locales/zh_TW.json index 301a558560..fc838d2510 100644 --- a/ryujinx/src/Ryujinx/Assets/Locales/zh_TW.json +++ b/ryujinx/src/Ryujinx/Assets/Locales/zh_TW.json @@ -10,7 +10,7 @@ "SettingsTabSystemUseHypervisor": "使用 Hypervisor", "MenuBarFile": "檔案(_F)", "MenuBarFileOpenFromFile": "從檔案載入應用程式(_L)", - "MenuBarFileOpenUnpacked": "載入解開封裝的遊戲(_U)", + "MenuBarFileOpenUnpacked": "載入未封裝的遊戲(_U)", "MenuBarFileOpenEmuFolder": "開啟 Ryujinx 資料夾", "MenuBarFileOpenLogsFolder": "開啟日誌資料夾", "MenuBarFileExit": "結束(_E)", @@ -30,6 +30,10 @@ "MenuBarToolsManageFileTypes": "管理檔案類型", "MenuBarToolsInstallFileTypes": "安裝檔案類型", "MenuBarToolsUninstallFileTypes": "移除檔案類型", + "MenuBarView": "檢視(_V)", + "MenuBarViewWindow": "視窗大小", + "MenuBarViewWindow720": "720p", + "MenuBarViewWindow1080": "1080p", "MenuBarHelp": "說明(_H)", "MenuBarHelpCheckForUpdates": "檢查更新", "MenuBarHelpAbout": "關於", @@ -92,6 +96,7 @@ "SettingsTabGeneralEnableDiscordRichPresence": "啟用 Discord 動態狀態展示", "SettingsTabGeneralCheckUpdatesOnLaunch": "啟動時檢查更新", "SettingsTabGeneralShowConfirmExitDialog": "顯示「確認結束」對話方塊", + "SettingsTabGeneralRememberWindowState": "記住視窗大小/位置", "SettingsTabGeneralHideCursor": "隱藏滑鼠游標:", "SettingsTabGeneralHideCursorNever": "從不", "SettingsTabGeneralHideCursorOnIdle": "閒置時", @@ -144,13 +149,13 @@ "SettingsTabGraphics": "圖形", "SettingsTabGraphicsAPI": "圖形 API", "SettingsTabGraphicsEnableShaderCache": "啟用著色器快取", - "SettingsTabGraphicsAnisotropicFiltering": "各向異性過濾:", + "SettingsTabGraphicsAnisotropicFiltering": "各向異性過濾:", "SettingsTabGraphicsAnisotropicFilteringAuto": "自動", "SettingsTabGraphicsAnisotropicFiltering2x": "2 倍", "SettingsTabGraphicsAnisotropicFiltering4x": "4 倍", "SettingsTabGraphicsAnisotropicFiltering8x": "8 倍", "SettingsTabGraphicsAnisotropicFiltering16x": "16 倍", - "SettingsTabGraphicsResolutionScale": "解析度比例:", + "SettingsTabGraphicsResolutionScale": "解析度比例:", "SettingsTabGraphicsResolutionScaleCustom": "自訂 (不建議使用)", "SettingsTabGraphicsResolutionScaleNative": "原生 (720p/1080p)", "SettingsTabGraphicsResolutionScale2x": "2 倍 (1440p/2160p)", @@ -164,7 +169,7 @@ "SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatioStretch": "拉伸以適應視窗", "SettingsTabGraphicsDeveloperOptions": "開發者選項", - "SettingsTabGraphicsShaderDumpPath": "圖形著色器傾印路徑:", + "SettingsTabGraphicsShaderDumpPath": "圖形著色器傾印路徑:", "SettingsTabLogging": "日誌", "SettingsTabLoggingLogging": "日誌", "SettingsTabLoggingEnableLoggingToFile": "啟用日誌到檔案", @@ -252,8 +257,8 @@ "ControllerSettingsLeftSR": "SR", "ControllerSettingsRightSL": "SL", "ControllerSettingsRightSR": "SR", - "ControllerSettingsExtraButtonsLeft": "左按鍵", - "ControllerSettingsExtraButtonsRight": "右按鍵", + "ControllerSettingsExtraButtonsLeft": "左背鍵", + "ControllerSettingsExtraButtonsRight": "右背鍵", "ControllerSettingsMisc": "其他", "ControllerSettingsTriggerThreshold": "扳機閾值:", "ControllerSettingsMotion": "體感", @@ -266,6 +271,107 @@ "ControllerSettingsMotionGyroDeadzone": "陀螺儀無感帶:", "ControllerSettingsSave": "儲存", "ControllerSettingsClose": "關閉", + "KeyUnknown": "未知", + "KeyShiftLeft": "左 Shift", + "KeyShiftRight": "右 Shift", + "KeyControlLeft": "左 Ctrl", + "KeyMacControlLeft": "左 ⌃", + "KeyControlRight": "右 Ctrl", + "KeyMacControlRight": "右 ⌃", + "KeyAltLeft": "左 Alt", + "KeyMacAltLeft": "左 ⌥", + "KeyAltRight": "右 Alt", + "KeyMacAltRight": "右 ⌥", + "KeyWinLeft": "左 ⊞", + "KeyMacWinLeft": "左 ⌘", + "KeyWinRight": "右 ⊞", + "KeyMacWinRight": "右 ⌘", + "KeyMenu": "功能表", + "KeyUp": "上", + "KeyDown": "下", + "KeyLeft": "左", + "KeyRight": "右", + "KeyEnter": "Enter 鍵", + "KeyEscape": "Esc 鍵", + "KeySpace": "空白鍵", + "KeyTab": "Tab 鍵", + "KeyBackSpace": "Backspace 鍵", + "KeyInsert": "Insert 鍵", + "KeyDelete": "Delete 鍵", + "KeyPageUp": "向上捲頁鍵", + "KeyPageDown": "向下捲頁鍵", + "KeyHome": "Home 鍵", + "KeyEnd": "End 鍵", + "KeyCapsLock": "Caps Lock 鍵", + "KeyScrollLock": "Scroll Lock 鍵", + "KeyPrintScreen": "Print Screen 鍵", + "KeyPause": "Pause 鍵", + "KeyNumLock": "Num Lock 鍵", + "KeyClear": "清除", + "KeyKeypad0": "數字鍵 0", + "KeyKeypad1": "數字鍵 1", + "KeyKeypad2": "數字鍵 2", + "KeyKeypad3": "數字鍵 3", + "KeyKeypad4": "數字鍵 4", + "KeyKeypad5": "數字鍵 5", + "KeyKeypad6": "數字鍵 6", + "KeyKeypad7": "數字鍵 7", + "KeyKeypad8": "數字鍵 8", + "KeyKeypad9": "數字鍵 9", + "KeyKeypadDivide": "數字鍵除號", + "KeyKeypadMultiply": "數字鍵乘號", + "KeyKeypadSubtract": "數字鍵減號", + "KeyKeypadAdd": "數字鍵加號", + "KeyKeypadDecimal": "數字鍵小數點", + "KeyKeypadEnter": "數字鍵 Enter", + "KeyNumber0": "0", + "KeyNumber1": "1", + "KeyNumber2": "2", + "KeyNumber3": "3", + "KeyNumber4": "4", + "KeyNumber5": "5", + "KeyNumber6": "6", + "KeyNumber7": "7", + "KeyNumber8": "8", + "KeyNumber9": "9", + "KeyTilde": "~", + "KeyGrave": "`", + "KeyMinus": "-", + "KeyPlus": "+", + "KeyBracketLeft": "[", + "KeyBracketRight": "]", + "KeySemicolon": ";", + "KeyQuote": "\"", + "KeyComma": ",", + "KeyPeriod": ".", + "KeySlash": "/", + "KeyBackSlash": "\\", + "KeyUnbound": "未分配", + "GamepadLeftStick": "左搖桿按鍵", + "GamepadRightStick": "右搖桿按鍵", + "GamepadLeftShoulder": "左肩鍵", + "GamepadRightShoulder": "右肩鍵", + "GamepadLeftTrigger": "左扳機", + "GamepadRightTrigger": "右扳機", + "GamepadDpadUp": "上", + "GamepadDpadDown": "下", + "GamepadDpadLeft": "左", + "GamepadDpadRight": "右", + "GamepadMinus": "-", + "GamepadPlus": "+", + "GamepadGuide": "快顯功能表鍵", + "GamepadMisc1": "其他按鍵", + "GamepadPaddle1": "其他按鍵 1", + "GamepadPaddle2": "其他按鍵 2", + "GamepadPaddle3": "其他按鍵 3", + "GamepadPaddle4": "其他按鍵 4", + "GamepadTouchpad": "觸控板", + "GamepadSingleLeftTrigger0": "左扳機 0", + "GamepadSingleRightTrigger0": "右扳機 0", + "GamepadSingleLeftTrigger1": "左扳機 1", + "GamepadSingleRightTrigger1": "右扳機 1", + "StickLeft": "左搖桿", + "StickRight": "右搖桿", "UserProfilesSelectedUserProfile": "選取的使用者設定檔:", "UserProfilesSaveProfileName": "儲存設定檔名稱", "UserProfilesChangeProfileImage": "變更設定檔圖像", @@ -490,7 +596,7 @@ "OpenGlLogLevel": "需要啟用適當的日誌等級", "DebugLogTooltip": "在控制台中輸出偵錯日誌訊息。\n\n只有在人員特別指示的情況下才能使用,因為這會導致日誌難以閱讀,並降低模擬器效能。", "LoadApplicationFileTooltip": "開啟檔案總管,選擇與 Switch 相容的檔案來載入", - "LoadApplicationFolderTooltip": "開啟檔案總管,選擇與 Switch 相容且解開封裝的應用程式來載入", + "LoadApplicationFolderTooltip": "開啟檔案總管,選擇與 Switch 相容且未封裝的應用程式來載入", "OpenRyujinxFolderTooltip": "開啟 Ryujinx 檔案系統資料夾", "OpenRyujinxLogsTooltip": "開啟日誌被寫入的資料夾", "ExitTooltip": "結束 Ryujinx", @@ -550,7 +656,7 @@ "SwkbdMinRangeCharacters": "長度必須為 {0} 到 {1} 個字元", "SoftwareKeyboard": "軟體鍵盤", "SoftwareKeyboardModeNumeric": "必須是 0 到 9 或「.」", - "SoftwareKeyboardModeAlphabet": "必須是非「中日韓字元」 (non CJK)", + "SoftwareKeyboardModeAlphabet": "必須是「非中日韓字元」 (non CJK)", "SoftwareKeyboardModeASCII": "必須是 ASCII 文字", "ControllerAppletControllers": "支援的控制器:", "ControllerAppletPlayers": "玩家:", @@ -572,7 +678,7 @@ "CompilingShaders": "正在編譯著色器", "AllKeyboards": "所有鍵盤", "OpenFileDialogTitle": "選取支援的檔案格式", - "OpenFolderDialogTitle": "選取解開封裝遊戲的資料夾", + "OpenFolderDialogTitle": "選取未封裝遊戲的資料夾", "AllSupportedFormats": "所有支援的格式", "RyujinxUpdater": "Ryujinx 更新程式", "SettingsTabHotkeys": "鍵盤快速鍵", @@ -597,6 +703,7 @@ "UserProfileWindowTitle": "使用者設定檔管理員", "CheatWindowTitle": "密技管理員", "DlcWindowTitle": "管理 {0} 的可下載內容 ({1})", + "ModWindowTitle": "管理 {0} 的模組 ({1})", "UpdateWindowTitle": "遊戲更新管理員", "CheatWindowHeading": "可用於 {0} [{1}] 的密技", "BuildId": "組建識別碼:", @@ -610,7 +717,7 @@ "UserProfilesSetProfileImage": "設定設定檔圖像", "UserProfileEmptyNameError": "名稱為必填", "UserProfileNoImageError": "必須設定設定檔圖像", - "GameUpdateWindowHeading": "可用於 {0} ({1}) 的更新", + "GameUpdateWindowHeading": "管理 {0} 的更新 ({1})", "SettingsTabHotkeysResScaleUpHotkey": "提高解析度:", "SettingsTabHotkeysResScaleDownHotkey": "降低解析度:", "UserProfilesName": "名稱:", @@ -635,7 +742,7 @@ "UserProfilesManageSaves": "管理存檔", "DeleteUserSave": "您想刪除此遊戲的使用者存檔嗎?", "IrreversibleActionNote": "此動作將無法復原。", - "SaveManagerHeading": "管理 {0} 的存檔", + "SaveManagerHeading": "管理 {0} 的存檔 ({1})", "SaveManagerTitle": "存檔管理員", "Name": "名稱", "Size": "大小", @@ -647,9 +754,9 @@ "GraphicsAATooltip": "對遊戲繪製進行反鋸齒處理。\n\nFXAA 會模糊大部分圖像,而 SMAA 則會嘗試找出鋸齒邊緣並將其平滑化。\n\n不建議與 FSR 縮放濾鏡一起使用。\n\n此選項可在遊戲執行時透過點選下方的「套用」進行變更;您只需將設定視窗移到一旁,然後進行試驗,直到找到您喜歡的遊戲效果。\n\n如果不確定,請選擇無狀態。", "GraphicsAALabel": "反鋸齒:", "GraphicsScalingFilterLabel": "縮放過濾器:", - "GraphicsScalingFilterTooltip": "選擇使用解析度縮放時套用的縮放過濾器。\n\nBilinear (雙線性) 濾鏡適用於 3D 遊戲,是一個安全的預設選項。\n\n建議像素美術遊戲使用 Nearest (最近性) 濾鏡。\n\nFSR 1.0 只是一個銳化濾鏡,不建議與 FXAA 或 SMAA 一起使用。\n\n此選項可在遊戲執行時透過點選下方的「套用」進行變更;您只需將設定視窗移到一旁,然後進行試驗,直到找到您喜歡的遊戲效果。\n\n如果不確定,請保持 Bilinear (雙線) 狀態。", - "GraphicsScalingFilterBilinear": "Bilinear", - "GraphicsScalingFilterNearest": "Nearest", + "GraphicsScalingFilterTooltip": "選擇使用解析度縮放時套用的縮放過濾器。\n\n雙線性 (Bilinear) 濾鏡適用於 3D 遊戲,是一個安全的預設選項。\n\n建議像素美術遊戲使用近鄰性 (Nearest) 濾鏡。\n\nFSR 1.0 只是一個銳化濾鏡,不建議與 FXAA 或 SMAA 一起使用。\n\n此選項可在遊戲執行時透過點選下方的「套用」進行變更;您只需將設定視窗移到一旁,然後進行試驗,直到找到您喜歡的遊戲效果。\n\n如果不確定,請保持雙線性 (Bilinear) 狀態。", + "GraphicsScalingFilterBilinear": "雙線性 (Bilinear)", + "GraphicsScalingFilterNearest": "近鄰性 (Nearest)", "GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterLevelLabel": "日誌等級", "GraphicsScalingFilterLevelTooltip": "設定 FSR 1.0 銳化等級。越高越清晰。", @@ -662,12 +769,12 @@ "SettingsTabNetworkInterface": "網路介面:", "NetworkInterfaceTooltip": "用於 LAN/LDN 功能的網路介面。\n\n與 VPN 或 XLink Kai 以及支援區域網路的遊戲配合使用,可用於在網路上偽造同網際網路連線。\n\n如果不確定,請保持預設狀態。", "NetworkInterfaceDefault": "預設", - "PackagingShaders": "著色器封裝", + "PackagingShaders": "封裝著色器", "AboutChangelogButton": "在 GitHub 上檢視更新日誌", "AboutChangelogButtonTooltipMessage": "在預設瀏覽器中開啟此版本的更新日誌。", "SettingsTabNetworkMultiplayer": "多人遊戲", "MultiplayerMode": "模式:", "MultiplayerModeTooltip": "變更 LDN 多人遊戲模式。\n\nLdnMitm 將修改遊戲中的本機無線/本機遊戲功能,使其如同區域網路一樣執行,允許與其他安裝了 ldn_mitm 模組的 Ryujinx 實例和已破解的 Nintendo Switch 遊戲機進行本機同網路連線。\n\n多人遊戲要求所有玩家使用相同的遊戲版本 (例如,Super Smash Bros. Ultimate v13.0.1 無法連接 v13.0.0)。\n\n如果不確定,請保持 Disabled (停用) 狀態。", - "MultiplayerModeDisabled": "Disabled", + "MultiplayerModeDisabled": "已停用", "MultiplayerModeLdnMitm": "ldn_mitm" } diff --git a/ryujinx/src/Ryujinx/Common/ThemeManager.cs b/ryujinx/src/Ryujinx/Common/ThemeManager.cs new file mode 100644 index 0000000000..8c52c2a66a --- /dev/null +++ b/ryujinx/src/Ryujinx/Common/ThemeManager.cs @@ -0,0 +1,14 @@ +using System; + +namespace Ryujinx.Ava.Common +{ + public static class ThemeManager + { + public static event EventHandler ThemeChanged; + + public static void OnThemeChanged() + { + ThemeChanged?.Invoke(null, EventArgs.Empty); + } + } +} diff --git a/ryujinx/src/Ryujinx/Input/AvaloniaKeyboard.cs b/ryujinx/src/Ryujinx/Input/AvaloniaKeyboard.cs index fbaaaabab8..ff88de79e4 100644 --- a/ryujinx/src/Ryujinx/Input/AvaloniaKeyboard.cs +++ b/ryujinx/src/Ryujinx/Input/AvaloniaKeyboard.cs @@ -195,7 +195,7 @@ namespace Ryujinx.Ava.Input public void Clear() { - _driver?.ResetKeys(); + _driver?.Clear(); } public void Dispose() { } diff --git a/ryujinx/src/Ryujinx/Input/AvaloniaKeyboardDriver.cs b/ryujinx/src/Ryujinx/Input/AvaloniaKeyboardDriver.cs index e9e71b99bd..9f87e821ad 100644 --- a/ryujinx/src/Ryujinx/Input/AvaloniaKeyboardDriver.cs +++ b/ryujinx/src/Ryujinx/Input/AvaloniaKeyboardDriver.cs @@ -94,7 +94,7 @@ namespace Ryujinx.Ava.Input return _pressedKeys.Contains(nativeKey); } - public void ResetKeys() + public void Clear() { _pressedKeys.Clear(); } diff --git a/ryujinx/src/Ryujinx/Program.cs b/ryujinx/src/Ryujinx/Program.cs index 89e895e81b..f925ce154f 100644 --- a/ryujinx/src/Ryujinx/Program.cs +++ b/ryujinx/src/Ryujinx/Program.cs @@ -40,7 +40,7 @@ namespace Ryujinx.Ava if (OperatingSystem.IsWindows() && !OperatingSystem.IsWindowsVersionAtLeast(10, 0, 17134)) { - _ = MessageBoxA(IntPtr.Zero, "You are running an outdated version of Windows.\n\nStarting on June 1st 2022, Ryujinx will only support Windows 10 1803 and newer.\n", $"Ryujinx {Version}", MbIconwarning); + _ = MessageBoxA(IntPtr.Zero, "You are running an outdated version of Windows.\n\nRyujinx supports Windows 10 version 1803 and newer.\n", $"Ryujinx {Version}", MbIconwarning); } PreviewerDetached = true; diff --git a/ryujinx/src/Ryujinx/Ryujinx.csproj b/ryujinx/src/Ryujinx/Ryujinx.csproj index 38453f2c66..a43f50063f 100644 --- a/ryujinx/src/Ryujinx/Ryujinx.csproj +++ b/ryujinx/src/Ryujinx/Ryujinx.csproj @@ -70,7 +70,8 @@ - + @@ -88,7 +89,7 @@ - + Always diff --git a/ryujinx/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs b/ryujinx/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs index 4bcc35a7a5..4bcf8eb949 100644 --- a/ryujinx/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs +++ b/ryujinx/src/Ryujinx/UI/Applet/AvaHostUIHandler.cs @@ -122,6 +122,7 @@ namespace Ryujinx.Ava.UI.Applet { try { + _parent.ViewModel.AppHost.NpadManager.BlockInputUpdates(); var response = await SwkbdAppletDialog.ShowInputDialog(LocaleManager.Instance[LocaleKeys.SoftwareKeyboard], args); if (response.Result == UserResult.Ok) @@ -143,6 +144,7 @@ namespace Ryujinx.Ava.UI.Applet }); dialogCloseEvent.WaitOne(); + _parent.ViewModel.AppHost.NpadManager.UnblockInputUpdates(); userText = error ? null : inputText; diff --git a/ryujinx/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs b/ryujinx/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs index 5a98b16456..6b999b1f44 100644 --- a/ryujinx/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs +++ b/ryujinx/src/Ryujinx/UI/Applet/ControllerAppletDialog.axaml.cs @@ -9,7 +9,6 @@ using Ryujinx.Ava.UI.Windows; using Ryujinx.Common; using Ryujinx.HLE.HOS.Applets; using Ryujinx.HLE.HOS.Services.Hid; -using System; using System.Linq; using System.Threading.Tasks; @@ -104,9 +103,7 @@ namespace Ryujinx.Ava.UI.Applet if (!string.IsNullOrWhiteSpace(path)) { - SvgSource source = new(default(Uri)); - - source.Load(EmbeddedResources.GetStream(path)); + SvgSource source = SvgSource.LoadFromStream(EmbeddedResources.GetStream(path)); image.Source = source; } diff --git a/ryujinx/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs b/ryujinx/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs index 6020f40e0c..f8fd5b7de4 100644 --- a/ryujinx/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs +++ b/ryujinx/src/Ryujinx/UI/ViewModels/AboutWindowViewModel.cs @@ -1,6 +1,8 @@ using Avalonia.Media.Imaging; using Avalonia.Platform; +using Avalonia.Styling; using Avalonia.Threading; +using Ryujinx.Ava.Common; using Ryujinx.Ava.Common.Locale; using Ryujinx.Common.Utilities; using Ryujinx.UI.Common.Configuration; @@ -11,7 +13,7 @@ using System.Threading.Tasks; namespace Ryujinx.Ava.UI.ViewModels { - public class AboutWindowViewModel : BaseModel + public class AboutWindowViewModel : BaseModel, IDisposable { private Bitmap _githubLogo; private Bitmap _discordLogo; @@ -86,23 +88,39 @@ namespace Ryujinx.Ava.UI.ViewModels public AboutWindowViewModel() { Version = Program.Version; - - if (ConfigurationState.Instance.UI.BaseStyle.Value == "Light") - { - GithubLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_GitHub_Light.png?assembly=Ryujinx.UI.Common"))); - DiscordLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Discord_Light.png?assembly=Ryujinx.UI.Common"))); - PatreonLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Patreon_Light.png?assembly=Ryujinx.UI.Common"))); - TwitterLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Twitter_Light.png?assembly=Ryujinx.UI.Common"))); - } - else - { - GithubLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_GitHub_Dark.png?assembly=Ryujinx.UI.Common"))); - DiscordLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Discord_Dark.png?assembly=Ryujinx.UI.Common"))); - PatreonLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Patreon_Dark.png?assembly=Ryujinx.UI.Common"))); - TwitterLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.UI.Common.Resources.Logo_Twitter_Dark.png?assembly=Ryujinx.UI.Common"))); - } - + UpdateLogoTheme(ConfigurationState.Instance.UI.BaseStyle.Value); Dispatcher.UIThread.InvokeAsync(DownloadPatronsJson); + + ThemeManager.ThemeChanged += ThemeManager_ThemeChanged; + } + + private void ThemeManager_ThemeChanged(object sender, EventArgs e) + { + Dispatcher.UIThread.Post(() => UpdateLogoTheme(ConfigurationState.Instance.UI.BaseStyle.Value)); + } + + private void UpdateLogoTheme(string theme) + { + bool isDarkTheme = theme == "Dark" || (theme == "Auto" && App.DetectSystemTheme() == ThemeVariant.Dark); + + string basePath = "resm:Ryujinx.UI.Common.Resources."; + string themeSuffix = isDarkTheme ? "Dark.png" : "Light.png"; + + GithubLogo = LoadBitmap($"{basePath}Logo_GitHub_{themeSuffix}?assembly=Ryujinx.UI.Common"); + DiscordLogo = LoadBitmap($"{basePath}Logo_Discord_{themeSuffix}?assembly=Ryujinx.UI.Common"); + PatreonLogo = LoadBitmap($"{basePath}Logo_Patreon_{themeSuffix}?assembly=Ryujinx.UI.Common"); + TwitterLogo = LoadBitmap($"{basePath}Logo_Twitter_{themeSuffix}?assembly=Ryujinx.UI.Common"); + } + + private Bitmap LoadBitmap(string uri) + { + return new Bitmap(Avalonia.Platform.AssetLoader.Open(new Uri(uri))); + } + + public void Dispose() + { + ThemeManager.ThemeChanged -= ThemeManager_ThemeChanged; + GC.SuppressFinalize(this); } private async Task DownloadPatronsJson() diff --git a/ryujinx/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs b/ryujinx/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs index 74da459793..89cc6496d5 100644 --- a/ryujinx/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs +++ b/ryujinx/src/Ryujinx/UI/ViewModels/Input/InputViewModel.cs @@ -181,9 +181,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input if (!string.IsNullOrWhiteSpace(_controllerImage)) { - SvgSource source = new(default(Uri)); - - source.Load(EmbeddedResources.GetStream(_controllerImage)); + SvgSource source = SvgSource.LoadFromStream(EmbeddedResources.GetStream(_controllerImage)); image.Source = source; } diff --git a/ryujinx/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs b/ryujinx/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs index 0f43d0f7fc..70e5fa5c74 100644 --- a/ryujinx/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs +++ b/ryujinx/src/Ryujinx/UI/ViewModels/SettingsViewModel.cs @@ -397,7 +397,13 @@ namespace Ryujinx.Ava.UI.ViewModels GameDirectories.Clear(); GameDirectories.AddRange(config.UI.GameDirs.Value); - BaseStyleIndex = config.UI.BaseStyle == "Light" ? 0 : 1; + BaseStyleIndex = config.UI.BaseStyle.Value switch + { + "Auto" => 0, + "Light" => 1, + "Dark" => 2, + _ => 0 + }; // Input EnableDockedMode = config.System.EnableDockedMode; @@ -486,7 +492,13 @@ namespace Ryujinx.Ava.UI.ViewModels config.UI.GameDirs.Value = gameDirs; } - config.UI.BaseStyle.Value = BaseStyleIndex == 0 ? "Light" : "Dark"; + config.UI.BaseStyle.Value = BaseStyleIndex switch + { + 0 => "Auto", + 1 => "Light", + 2 => "Dark", + _ => "Auto" + }; // Input config.System.EnableDockedMode.Value = EnableDockedMode; diff --git a/ryujinx/src/Ryujinx/UI/Views/Settings/SettingsUIView.axaml b/ryujinx/src/Ryujinx/UI/Views/Settings/SettingsUIView.axaml index b60058fcbf..f9b9be44b2 100644 --- a/ryujinx/src/Ryujinx/UI/Views/Settings/SettingsUIView.axaml +++ b/ryujinx/src/Ryujinx/UI/Views/Settings/SettingsUIView.axaml @@ -65,6 +65,9 @@ + + + diff --git a/ryujinx/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/ryujinx/src/Ryujinx/UI/Windows/MainWindow.axaml.cs index b1b7a4853d..7de8a49a0c 100644 --- a/ryujinx/src/Ryujinx/UI/Windows/MainWindow.axaml.cs +++ b/ryujinx/src/Ryujinx/UI/Windows/MainWindow.axaml.cs @@ -2,6 +2,7 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; +using Avalonia.Platform; using Avalonia.Threading; using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common; @@ -92,6 +93,29 @@ namespace Ryujinx.Ava.UI.Windows } } + /// + /// Event handler for detecting OS theme change when using "Follow OS theme" option + /// + private void OnPlatformColorValuesChanged(object sender, PlatformColorValues e) + { + if (Application.Current is App app) + { + app.ApplyConfiguredTheme(); + } + } + + protected override void OnClosed(EventArgs e) + { + base.OnClosed(e); + if (PlatformSettings != null) + { + /// + /// Unsubscribe to the ColorValuesChanged event + /// + PlatformSettings.ColorValuesChanged -= OnPlatformColorValuesChanged; + } + } + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); @@ -390,6 +414,11 @@ namespace Ryujinx.Ava.UI.Windows Initialize(); + /// + /// Subscribe to the ColorValuesChanged event + /// + PlatformSettings.ColorValuesChanged += OnPlatformColorValuesChanged; + ViewModel.Initialize( ContentManager, StorageProvider, diff --git a/v2rayn/v2rayN/v2rayN/Global.cs b/v2rayn/v2rayN/v2rayN/Global.cs index d5033de2d3..ec89420453 100644 --- a/v2rayn/v2rayN/v2rayN/Global.cs +++ b/v2rayn/v2rayN/v2rayN/Global.cs @@ -175,6 +175,7 @@ namespace v2rayN public static readonly List LogLevels = new() { "debug", "info", "warning", "error", "none" }; public static readonly List InboundTags = new() { "socks", "http", "socks2", "http2" }; public static readonly List RuleProtocols = new() { "http", "tls", "bittorrent" }; + public static readonly List destOverrideProtocols = ["http", "tls", "quic", "fakedns", "fakedns+others"]; public static readonly List TunMtus = new() { "1280", "1408", "1500", "9000" }; public static readonly List TunStacks = new() { "gvisor", "system" }; public static readonly List PresetMsgFilters = new() { "proxy", "direct", "block", "" }; diff --git a/v2rayn/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs b/v2rayn/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs index c07d16d085..c2cd926c8f 100644 --- a/v2rayn/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs +++ b/v2rayn/v2rayN/v2rayN/Handler/CoreConfigSingbox.cs @@ -111,7 +111,8 @@ namespace v2rayN.Handler { try { - singboxConfig.inbounds.Clear(); + var listen = "::"; + singboxConfig.inbounds = []; if (!_config.tunModeItem.enableTun || (_config.tunModeItem.enableTun && _config.tunModeItem.enableExInbound)) { @@ -146,11 +147,11 @@ namespace v2rayN.Handler if (_config.inbound[0].newPort4LAN) { var inbound3 = GetInbound(inbound, EInboundProtocol.socks2, true); - inbound3.listen = "::"; + inbound3.listen = listen; singboxConfig.inbounds.Add(inbound3); var inbound4 = GetInbound(inbound, EInboundProtocol.http2, false); - inbound4.listen = "::"; + inbound4.listen = listen; singboxConfig.inbounds.Add(inbound4); //auth @@ -162,8 +163,8 @@ namespace v2rayN.Handler } else { - inbound.listen = "::"; - inbound2.listen = "::"; + inbound.listen = listen; + inbound2.listen = listen; } } } diff --git a/v2rayn/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs b/v2rayn/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs index 64e8e4da73..8ca96e9513 100644 --- a/v2rayn/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs +++ b/v2rayn/v2rayN/v2rayN/Handler/CoreConfigV2ray.cs @@ -98,7 +98,8 @@ namespace v2rayN.Handler { try { - v2rayConfig.inbounds = new List(); + var listen = "0.0.0.0"; + v2rayConfig.inbounds = []; Inbounds4Ray? inbound = GetInbound(_config.inbound[0], EInboundProtocol.socks, true); v2rayConfig.inbounds.Add(inbound); @@ -112,11 +113,11 @@ namespace v2rayN.Handler if (_config.inbound[0].newPort4LAN) { var inbound3 = GetInbound(_config.inbound[0], EInboundProtocol.socks2, true); - inbound3.listen = "0.0.0.0"; + inbound3.listen = listen; v2rayConfig.inbounds.Add(inbound3); var inbound4 = GetInbound(_config.inbound[0], EInboundProtocol.http2, false); - inbound4.listen = "0.0.0.0"; + inbound4.listen = listen; v2rayConfig.inbounds.Add(inbound4); //auth @@ -131,8 +132,8 @@ namespace v2rayN.Handler } else { - inbound.listen = "0.0.0.0"; - inbound2.listen = "0.0.0.0"; + inbound.listen = listen; + inbound2.listen = listen; } } } @@ -143,24 +144,25 @@ namespace v2rayN.Handler return 0; } - private Inbounds4Ray? GetInbound(InItem inItem, EInboundProtocol protocol, bool bSocks) + private Inbounds4Ray GetInbound(InItem inItem, EInboundProtocol protocol, bool bSocks) { string result = Utils.GetEmbedText(Global.V2raySampleInbound); if (Utils.IsNullOrEmpty(result)) { - return null; + return new(); } var inbound = JsonUtils.Deserialize(result); if (inbound == null) { - return null; + return new(); } inbound.tag = protocol.ToString(); inbound.port = inItem.localPort + (int)protocol; inbound.protocol = bSocks ? EInboundProtocol.socks.ToString() : EInboundProtocol.http.ToString(); inbound.settings.udp = inItem.udpEnabled; inbound.sniffing.enabled = inItem.sniffingEnabled; + inbound.sniffing.destOverride = inItem.destOverride; inbound.sniffing.routeOnly = inItem.routeOnly; return inbound; diff --git a/v2rayn/v2rayN/v2rayN/Models/ConfigItems.cs b/v2rayn/v2rayN/v2rayN/Models/ConfigItems.cs index 7b1ff7797f..af768b498d 100644 --- a/v2rayn/v2rayN/v2rayN/Models/ConfigItems.cs +++ b/v2rayn/v2rayN/v2rayN/Models/ConfigItems.cs @@ -47,8 +47,8 @@ namespace v2rayN.Models public bool udpEnabled { get; set; } public bool sniffingEnabled { get; set; } = true; + public List? destOverride { get; set; } = ["http", "tls"]; public bool routeOnly { get; set; } - public bool allowLANConn { get; set; } public bool newPort4LAN { get; set; } diff --git a/v2rayn/v2rayN/v2rayN/Models/V2rayConfig.cs b/v2rayn/v2rayN/v2rayN/Models/V2rayConfig.cs index 73259a9700..459f3b830e 100644 --- a/v2rayn/v2rayN/v2rayN/Models/V2rayConfig.cs +++ b/v2rayn/v2rayN/v2rayN/Models/V2rayConfig.cs @@ -195,7 +195,7 @@ namespace v2rayN.Models public class Sniffing4Ray { public bool enabled { get; set; } - public List destOverride { get; set; } + public List? destOverride { get; set; } public bool routeOnly { get; set; } } diff --git a/v2rayn/v2rayN/v2rayN/Sample/SampleClientConfig b/v2rayn/v2rayN/v2rayN/Sample/SampleClientConfig index a33d9bd69c..98c58e0e65 100644 --- a/v2rayn/v2rayN/v2rayN/Sample/SampleClientConfig +++ b/v2rayn/v2rayN/v2rayN/Sample/SampleClientConfig @@ -4,56 +4,7 @@ "error": "Verror.log", "loglevel": "warning" }, - "inbounds": [{ - "tag": "tag1", - "port": 10808, - "protocol": "socks", - "listen": "127.0.0.1", - "settings": { - "auth": "noauth", - "udp": true - }, - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - } - }, - { - "tag": "tag2", - "port": 10809, - "protocol": "http", - "listen": "127.0.0.1", - "settings": { - "allowTransparent": false - }, - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - } - }, - { - "tag": "tag3", - "port": 10809, - "protocol": "http", - "listen": "127.0.0.1", - "settings": { - "allowTransparent": false - }, - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - } - } - ], + "inbounds": [], "outbounds": [{ "tag": "proxy", "protocol": "vmess", diff --git a/v2rayn/v2rayN/v2rayN/Sample/SingboxSampleClientConfig b/v2rayn/v2rayN/v2rayN/Sample/SingboxSampleClientConfig index 8e34738f11..f88422a12b 100644 --- a/v2rayn/v2rayN/v2rayN/Sample/SingboxSampleClientConfig +++ b/v2rayn/v2rayN/v2rayN/Sample/SingboxSampleClientConfig @@ -3,14 +3,7 @@ "level": "debug", "timestamp": true }, - "inbounds": [ - { - "type": "socks", - "tag": "socks", - "listen": "127.0.0.1", - "listen_port": 10000 - } - ], + "inbounds": [], "outbounds": [ { "type": "vless", diff --git a/v2rayn/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs b/v2rayn/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs index 77746f6037..e0987cdae2 100644 --- a/v2rayn/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs +++ b/v2rayn/v2rayN/v2rayN/ViewModels/OptionSettingViewModel.cs @@ -20,6 +20,7 @@ namespace v2rayN.ViewModels [Reactive] public int localPort { get; set; } [Reactive] public bool udpEnabled { get; set; } [Reactive] public bool sniffingEnabled { get; set; } + public IList destOverride { get; set; } [Reactive] public bool routeOnly { get; set; } [Reactive] public bool allowLANConn { get; set; } [Reactive] public bool newPort4LAN { get; set; } @@ -279,6 +280,7 @@ namespace v2rayN.ViewModels _config.inbound[0].localPort = localPort; _config.inbound[0].udpEnabled = udpEnabled; _config.inbound[0].sniffingEnabled = sniffingEnabled; + _config.inbound[0].destOverride = destOverride?.ToList(); _config.inbound[0].routeOnly = routeOnly; _config.inbound[0].allowLANConn = allowLANConn; _config.inbound[0].newPort4LAN = newPort4LAN; diff --git a/v2rayn/v2rayN/v2rayN/Views/DNSSettingWindow.xaml.cs b/v2rayn/v2rayN/v2rayN/Views/DNSSettingWindow.xaml.cs index 7226aa9350..fc224e9684 100644 --- a/v2rayn/v2rayN/v2rayN/Views/DNSSettingWindow.xaml.cs +++ b/v2rayn/v2rayN/v2rayN/Views/DNSSettingWindow.xaml.cs @@ -51,7 +51,7 @@ namespace v2rayN.Views private void linkDnsObjectDoc_Click(object sender, RoutedEventArgs e) { - Utils.ProcessStart("https://www.v2fly.org/config/dns.html#dnsobject"); + Utils.ProcessStart("https://xtls.github.io/config/dns.html#dnsobject"); } private void linkDnsSingboxObjectDoc_Click(object sender, RoutedEventArgs e) diff --git a/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml b/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml index 201a985d59..1c10ca0d0b 100644 --- a/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml +++ b/v2rayn/v2rayN/v2rayN/Views/OptionSettingWindow.xaml @@ -119,12 +119,22 @@ VerticalAlignment="Center" Style="{StaticResource ToolbarTextBlock}" Text="{x:Static resx:ResUI.TbSettingsSniffingEnabled}" /> - + Grid.ColumnSpan="2" + Orientation="Horizontal"> + + + + { + clbdestOverride.Items.Add(it); + }); + _config.inbound[0].destOverride?.ForEach(it => + { + clbdestOverride.SelectedItems.Add(it); + }); Global.IEProxyProtocols.ForEach(it => { cmbsystemProxyAdvancedProtocol.Items.Add(it); @@ -213,5 +222,10 @@ namespace v2rayN.Views } return lstFonts; } + + private void ClbdestOverride_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) + { + ViewModel.destOverride = clbdestOverride.SelectedItems.Cast().ToList(); + } } } \ No newline at end of file diff --git a/v2rayn/v2rayN/v2rayN/Views/RoutingRuleDetailsWindow.xaml.cs b/v2rayn/v2rayN/v2rayN/Views/RoutingRuleDetailsWindow.xaml.cs index 94198939a0..e174995d1b 100644 --- a/v2rayn/v2rayN/v2rayN/Views/RoutingRuleDetailsWindow.xaml.cs +++ b/v2rayn/v2rayN/v2rayN/Views/RoutingRuleDetailsWindow.xaml.cs @@ -83,7 +83,7 @@ namespace v2rayN.Views private void linkRuleobjectDoc_Click(object sender, RoutedEventArgs e) { - Utils.ProcessStart("https://www.v2fly.org/config/routing.html#ruleobject"); + Utils.ProcessStart("https://xtls.github.io/config/routing.html#ruleobject"); } } } \ No newline at end of file diff --git a/v2rayn/v2rayN/v2rayN/Views/RoutingSettingWindow.xaml.cs b/v2rayn/v2rayN/v2rayN/Views/RoutingSettingWindow.xaml.cs index 7ff49a5a55..0673b09096 100644 --- a/v2rayn/v2rayN/v2rayN/Views/RoutingSettingWindow.xaml.cs +++ b/v2rayn/v2rayN/v2rayN/Views/RoutingSettingWindow.xaml.cs @@ -127,7 +127,7 @@ namespace v2rayN.Views private void linkdomainStrategy_Click(object sender, System.Windows.RoutedEventArgs e) { - Utils.ProcessStart("https://www.v2fly.org/config/routing.html"); + Utils.ProcessStart("https://xtls.github.io/config/routing.html"); } private void linkdomainStrategy4Singbox_Click(object sender, RoutedEventArgs e) diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt index f423a224c9..cf2cb3404f 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt @@ -99,7 +99,7 @@ object AppConfig { const val PromotionUrl = "aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=" const val GeoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/" const val TgChannelUrl = "https://t.me/github_2dust" - const val DelayTestUrl = "https://www.google.com/generate_204" + const val DelayTestUrl = "https://www.gstatic.com/generate_204" const val DNS_PROXY = "1.1.1.1" const val DNS_DIRECT = "223.5.5.5" diff --git a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt index 1adfda653e..eec615732c 100644 --- a/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt +++ b/v2rayng/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt @@ -102,9 +102,7 @@ object SpeedtestUtil { var conn: HttpURLConnection? = null try { - val url = URL("https", - "www.google.com", - "/generate_204") + val url = URL(Utils.getDelayTestUrl()) conn = url.openConnection( Proxy(Proxy.Type.HTTP, diff --git a/xray-core/app/dispatcher/default.go b/xray-core/app/dispatcher/default.go index b8131b8f89..26019bbe9e 100644 --- a/xray-core/app/dispatcher/default.go +++ b/xray-core/app/dispatcher/default.go @@ -218,11 +218,12 @@ func (d *DefaultDispatcher) Dispatch(ctx context.Context, destination net.Destin if !destination.IsValid() { panic("Dispatcher: Invalid destination.") } - ob := session.OutboundFromContext(ctx) - if ob == nil { - ob = &session.Outbound{} - ctx = session.ContextWithOutbound(ctx, ob) + outbounds := session.OutboundsFromContext(ctx) + if len(outbounds) == 0 { + outbounds = []*session.Outbound{{}} + ctx = session.ContextWithOutbounds(ctx, outbounds) } + ob := outbounds[len(outbounds) - 1] ob.OriginalTarget = destination ob.Target = destination content := session.ContentFromContext(ctx) @@ -274,11 +275,12 @@ func (d *DefaultDispatcher) DispatchLink(ctx context.Context, destination net.De if !destination.IsValid() { return newError("Dispatcher: Invalid destination.") } - ob := session.OutboundFromContext(ctx) - if ob == nil { - ob = &session.Outbound{} - ctx = session.ContextWithOutbound(ctx, ob) + outbounds := session.OutboundsFromContext(ctx) + if len(outbounds) == 0 { + outbounds = []*session.Outbound{{}} + ctx = session.ContextWithOutbounds(ctx, outbounds) } + ob := outbounds[len(outbounds) - 1] ob.OriginalTarget = destination ob.Target = destination content := session.ContentFromContext(ctx) @@ -368,7 +370,8 @@ func sniffer(ctx context.Context, cReader *cachedReader, metadataOnly bool, netw return contentResult, contentErr } func (d *DefaultDispatcher) routedDispatch(ctx context.Context, link *transport.Link, destination net.Destination) { - ob := session.OutboundFromContext(ctx) + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] if hosts, ok := d.dns.(dns.HostsLookup); ok && destination.Address.Family().IsDomain() { proxied := hosts.LookupHosts(ob.Target.String()) if proxied != nil { @@ -425,6 +428,7 @@ func (d *DefaultDispatcher) routedDispatch(ctx context.Context, link *transport. return } + ob.Tag = handler.Tag() if accessMessage := log.AccessMessageFromContext(ctx); accessMessage != nil { if tag := handler.Tag(); tag != "" { if inTag == "" { diff --git a/xray-core/app/dispatcher/fakednssniffer.go b/xray-core/app/dispatcher/fakednssniffer.go index ad879daf5d..8d0804de14 100644 --- a/xray-core/app/dispatcher/fakednssniffer.go +++ b/xray-core/app/dispatcher/fakednssniffer.go @@ -26,11 +26,12 @@ func newFakeDNSSniffer(ctx context.Context) (protocolSnifferWithMetadata, error) return protocolSnifferWithMetadata{}, errNotInit } return protocolSnifferWithMetadata{protocolSniffer: func(ctx context.Context, bytes []byte) (SniffResult, error) { - Target := session.OutboundFromContext(ctx).Target - if Target.Network == net.Network_TCP || Target.Network == net.Network_UDP { - domainFromFakeDNS := fakeDNSEngine.GetDomainFromFakeDNS(Target.Address) + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if ob.Target.Network == net.Network_TCP || ob.Target.Network == net.Network_UDP { + domainFromFakeDNS := fakeDNSEngine.GetDomainFromFakeDNS(ob.Target.Address) if domainFromFakeDNS != "" { - newError("fake dns got domain: ", domainFromFakeDNS, " for ip: ", Target.Address.String()).WriteToLog(session.ExportIDToError(ctx)) + newError("fake dns got domain: ", domainFromFakeDNS, " for ip: ", ob.Target.Address.String()).WriteToLog(session.ExportIDToError(ctx)) return &fakeDNSSniffResult{domainName: domainFromFakeDNS}, nil } } @@ -38,7 +39,7 @@ func newFakeDNSSniffer(ctx context.Context) (protocolSnifferWithMetadata, error) if ipAddressInRangeValueI := ctx.Value(ipAddressInRange); ipAddressInRangeValueI != nil { ipAddressInRangeValue := ipAddressInRangeValueI.(*ipAddressInRangeOpt) if fkr0, ok := fakeDNSEngine.(dns.FakeDNSEngineRev0); ok { - inPool := fkr0.IsIPInIPPool(Target.Address) + inPool := fkr0.IsIPInIPPool(ob.Target.Address) ipAddressInRangeValue.addressInRange = &inPool } } diff --git a/xray-core/app/proxyman/inbound/worker.go b/xray-core/app/proxyman/inbound/worker.go index 1fe8665529..9a6499f129 100644 --- a/xray-core/app/proxyman/inbound/worker.go +++ b/xray-core/app/proxyman/inbound/worker.go @@ -60,7 +60,7 @@ func (w *tcpWorker) callback(conn stat.Connection) { sid := session.NewID() ctx = session.ContextWithID(ctx, sid) - var outbound = &session.Outbound{} + outbounds := []*session.Outbound{{}} if w.recvOrigDest { var dest net.Destination switch getTProxyType(w.stream) { @@ -75,10 +75,10 @@ func (w *tcpWorker) callback(conn stat.Connection) { dest = net.DestinationFromAddr(conn.LocalAddr()) } if dest.IsValid() { - outbound.Target = dest + outbounds[0].Target = dest } } - ctx = session.ContextWithOutbound(ctx, outbound) + ctx = session.ContextWithOutbounds(ctx, outbounds) if w.uplinkCounter != nil || w.downlinkCounter != nil { conn = &stat.CounterConnection{ @@ -309,9 +309,10 @@ func (w *udpWorker) callback(b *buf.Buffer, source net.Destination, originalDest ctx = session.ContextWithID(ctx, sid) if originalDest.IsValid() { - ctx = session.ContextWithOutbound(ctx, &session.Outbound{ + outbounds := []*session.Outbound{{ Target: originalDest, - }) + }} + ctx = session.ContextWithOutbounds(ctx, outbounds) } ctx = session.ContextWithInbound(ctx, &session.Inbound{ Source: source, diff --git a/xray-core/app/proxyman/outbound/handler.go b/xray-core/app/proxyman/outbound/handler.go index 792ac24971..4262c76a5e 100644 --- a/xray-core/app/proxyman/outbound/handler.go +++ b/xray-core/app/proxyman/outbound/handler.go @@ -169,10 +169,11 @@ func (h *Handler) Tag() string { // Dispatch implements proxy.Outbound.Dispatch. func (h *Handler) Dispatch(ctx context.Context, link *transport.Link) { - outbound := session.OutboundFromContext(ctx) - if outbound.Target.Network == net.Network_UDP && outbound.OriginalTarget.Address != nil && outbound.OriginalTarget.Address != outbound.Target.Address { - link.Reader = &buf.EndpointOverrideReader{Reader: link.Reader, Dest: outbound.Target.Address, OriginalDest: outbound.OriginalTarget.Address} - link.Writer = &buf.EndpointOverrideWriter{Writer: link.Writer, Dest: outbound.Target.Address, OriginalDest: outbound.OriginalTarget.Address} + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if ob.Target.Network == net.Network_UDP && ob.OriginalTarget.Address != nil && ob.OriginalTarget.Address != ob.Target.Address { + link.Reader = &buf.EndpointOverrideReader{Reader: link.Reader, Dest: ob.Target.Address, OriginalDest: ob.OriginalTarget.Address} + link.Writer = &buf.EndpointOverrideWriter{Writer: link.Writer, Dest: ob.Target.Address, OriginalDest: ob.OriginalTarget.Address} } if h.mux != nil { test := func(err error) { @@ -183,7 +184,7 @@ func (h *Handler) Dispatch(ctx context.Context, link *transport.Link) { common.Interrupt(link.Writer) } } - if outbound.Target.Network == net.Network_UDP && outbound.Target.Port == 443 { + if ob.Target.Network == net.Network_UDP && ob.Target.Port == 443 { switch h.udp443 { case "reject": test(newError("XUDP rejected UDP/443 traffic").AtInfo()) @@ -192,7 +193,7 @@ func (h *Handler) Dispatch(ctx context.Context, link *transport.Link) { goto out } } - if h.xudp != nil && outbound.Target.Network == net.Network_UDP { + if h.xudp != nil && ob.Target.Network == net.Network_UDP { if !h.xudp.Enabled { goto out } @@ -243,10 +244,11 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (stat.Connecti handler := h.outboundManager.GetHandler(tag) if handler != nil { newError("proxying to ", tag, " for dest ", dest).AtDebug().WriteToLog(session.ExportIDToError(ctx)) - ctx = session.ContextWithOutbound(ctx, &session.Outbound{ + outbounds := session.OutboundsFromContext(ctx) + ctx = session.ContextWithOutbounds(ctx, append(outbounds, &session.Outbound{ Target: dest, - }) - + Tag: tag, + })) // add another outbound in session ctx opts := pipe.OptionsFromContext(ctx) uplinkReader, uplinkWriter := pipe.New(opts...) downlinkReader, downlinkWriter := pipe.New(opts...) @@ -266,15 +268,12 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (stat.Connecti } if h.senderSettings.Via != nil { - outbound := session.OutboundFromContext(ctx) - if outbound == nil { - outbound = new(session.Outbound) - ctx = session.ContextWithOutbound(ctx, outbound) - } + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] if h.senderSettings.ViaCidr == "" { - outbound.Gateway = h.senderSettings.Via.AsAddress() + ob.Gateway = h.senderSettings.Via.AsAddress() } else { //Get a random address. - outbound.Gateway = ParseRandomIPv6(h.senderSettings.Via.AsAddress(), h.senderSettings.ViaCidr) + ob.Gateway = ParseRandomIPv6(h.senderSettings.Via.AsAddress(), h.senderSettings.ViaCidr) } } } @@ -285,10 +284,9 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (stat.Connecti conn, err := internet.Dial(ctx, dest, h.streamSettings) conn = h.getStatCouterConnection(conn) - outbound := session.OutboundFromContext(ctx) - if outbound != nil { - outbound.Conn = conn - } + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + ob.Conn = conn return conn, err } diff --git a/xray-core/app/proxyman/outbound/handler_test.go b/xray-core/app/proxyman/outbound/handler_test.go index e5b67308cc..3f7ef28e07 100644 --- a/xray-core/app/proxyman/outbound/handler_test.go +++ b/xray-core/app/proxyman/outbound/handler_test.go @@ -14,6 +14,7 @@ import ( "github.com/xtls/xray-core/app/stats" "github.com/xtls/xray-core/common/net" "github.com/xtls/xray-core/common/serial" + "github.com/xtls/xray-core/common/session" core "github.com/xtls/xray-core/core" "github.com/xtls/xray-core/features/outbound" "github.com/xtls/xray-core/proxy/freedom" @@ -44,6 +45,7 @@ func TestOutboundWithoutStatCounter(t *testing.T) { v, _ := core.New(config) v.AddFeature((outbound.Manager)(new(Manager))) ctx := context.WithValue(context.Background(), xrayKey, v) + ctx = session.ContextWithOutbounds(ctx, []*session.Outbound{{}}) h, _ := NewHandler(ctx, &core.OutboundHandlerConfig{ Tag: "tag", ProxySettings: serial.ToTypedMessage(&freedom.Config{}), @@ -73,6 +75,7 @@ func TestOutboundWithStatCounter(t *testing.T) { v, _ := core.New(config) v.AddFeature((outbound.Manager)(new(Manager))) ctx := context.WithValue(context.Background(), xrayKey, v) + ctx = session.ContextWithOutbounds(ctx, []*session.Outbound{{}}) h, _ := NewHandler(ctx, &core.OutboundHandlerConfig{ Tag: "tag", ProxySettings: serial.ToTypedMessage(&freedom.Config{}), diff --git a/xray-core/app/reverse/portal.go b/xray-core/app/reverse/portal.go index fb0b693002..456de550db 100644 --- a/xray-core/app/reverse/portal.go +++ b/xray-core/app/reverse/portal.go @@ -62,12 +62,13 @@ func (p *Portal) Close() error { } func (p *Portal) HandleConnection(ctx context.Context, link *transport.Link) error { - outboundMeta := session.OutboundFromContext(ctx) - if outboundMeta == nil { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if ob == nil { return newError("outbound metadata not found").AtError() } - if isDomain(outboundMeta.Target, p.domain) { + if isDomain(ob.Target, p.domain) { muxClient, err := mux.NewClientWorker(*link, mux.ClientStrategy{}) if err != nil { return newError("failed to create mux client worker").Base(err).AtWarning() @@ -206,9 +207,10 @@ func NewPortalWorker(client *mux.ClientWorker) (*PortalWorker, error) { downlinkReader, downlinkWriter := pipe.New(opt...) ctx := context.Background() - ctx = session.ContextWithOutbound(ctx, &session.Outbound{ + outbounds := []*session.Outbound{{ Target: net.UDPDestination(net.DomainAddress(internalDomain), 0), - }) + }} + ctx = session.ContextWithOutbounds(ctx, outbounds) f := client.Dispatch(ctx, &transport.Link{ Reader: uplinkReader, Writer: downlinkWriter, diff --git a/xray-core/app/router/router_test.go b/xray-core/app/router/router_test.go index 4c6bfc63f2..2c33aae1c6 100644 --- a/xray-core/app/router/router_test.go +++ b/xray-core/app/router/router_test.go @@ -45,7 +45,9 @@ func TestSimpleRouter(t *testing.T) { HandlerSelector: mockHs, }, nil)) - ctx := session.ContextWithOutbound(context.Background(), &session.Outbound{Target: net.TCPDestination(net.DomainAddress("example.com"), 80)}) + ctx := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{ + Target: net.TCPDestination(net.DomainAddress("example.com"), 80), + }}) route, err := r.PickRoute(routing_session.AsRoutingContext(ctx)) common.Must(err) if tag := route.GetOutboundTag(); tag != "test" { @@ -86,7 +88,9 @@ func TestSimpleBalancer(t *testing.T) { HandlerSelector: mockHs, }, nil)) - ctx := session.ContextWithOutbound(context.Background(), &session.Outbound{Target: net.TCPDestination(net.DomainAddress("example.com"), 80)}) + ctx := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{ + Target: net.TCPDestination(net.DomainAddress("example.com"), 80), + }}) route, err := r.PickRoute(routing_session.AsRoutingContext(ctx)) common.Must(err) if tag := route.GetOutboundTag(); tag != "test" { @@ -174,7 +178,9 @@ func TestIPOnDemand(t *testing.T) { r := new(Router) common.Must(r.Init(context.TODO(), config, mockDNS, nil, nil)) - ctx := session.ContextWithOutbound(context.Background(), &session.Outbound{Target: net.TCPDestination(net.DomainAddress("example.com"), 80)}) + ctx := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{ + Target: net.TCPDestination(net.DomainAddress("example.com"), 80), + }}) route, err := r.PickRoute(routing_session.AsRoutingContext(ctx)) common.Must(err) if tag := route.GetOutboundTag(); tag != "test" { @@ -213,7 +219,9 @@ func TestIPIfNonMatchDomain(t *testing.T) { r := new(Router) common.Must(r.Init(context.TODO(), config, mockDNS, nil, nil)) - ctx := session.ContextWithOutbound(context.Background(), &session.Outbound{Target: net.TCPDestination(net.DomainAddress("example.com"), 80)}) + ctx := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{ + Target: net.TCPDestination(net.DomainAddress("example.com"), 80), + }}) route, err := r.PickRoute(routing_session.AsRoutingContext(ctx)) common.Must(err) if tag := route.GetOutboundTag(); tag != "test" { @@ -247,7 +255,9 @@ func TestIPIfNonMatchIP(t *testing.T) { r := new(Router) common.Must(r.Init(context.TODO(), config, mockDNS, nil, nil)) - ctx := session.ContextWithOutbound(context.Background(), &session.Outbound{Target: net.TCPDestination(net.LocalHostIP, 80)}) + ctx := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{ + Target: net.TCPDestination(net.LocalHostIP, 80), + }}) route, err := r.PickRoute(routing_session.AsRoutingContext(ctx)) common.Must(err) if tag := route.GetOutboundTag(); tag != "test" { diff --git a/xray-core/common/mux/client.go b/xray-core/common/mux/client.go index 88621be0f0..2537f02b6d 100644 --- a/xray-core/common/mux/client.go +++ b/xray-core/common/mux/client.go @@ -148,9 +148,10 @@ func (f *DialingWorkerFactory) Create() (*ClientWorker, error) { } go func(p proxy.Outbound, d internet.Dialer, c common.Closable) { - ctx := session.ContextWithOutbound(context.Background(), &session.Outbound{ + outbounds := []*session.Outbound{{ Target: net.TCPDestination(muxCoolAddress, muxCoolPort), - }) + }} + ctx := session.ContextWithOutbounds(context.Background(), outbounds) ctx, cancel := context.WithCancel(ctx) if err := p.Process(ctx, &transport.Link{Reader: uplinkReader, Writer: downlinkWriter}, d); err != nil { @@ -242,17 +243,18 @@ func writeFirstPayload(reader buf.Reader, writer *Writer) error { } func fetchInput(ctx context.Context, s *Session, output buf.Writer) { - dest := session.OutboundFromContext(ctx).Target + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] transferType := protocol.TransferTypeStream - if dest.Network == net.Network_UDP { + if ob.Target.Network == net.Network_UDP { transferType = protocol.TransferTypePacket } s.transferType = transferType - writer := NewWriter(s.ID, dest, output, transferType, xudp.GetGlobalID(ctx)) + writer := NewWriter(s.ID, ob.Target, output, transferType, xudp.GetGlobalID(ctx)) defer s.Close(false) defer writer.Close() - newError("dispatching request to ", dest).WriteToLog(session.ExportIDToError(ctx)) + newError("dispatching request to ", ob.Target).WriteToLog(session.ExportIDToError(ctx)) if err := writeFirstPayload(s.input, writer); err != nil { newError("failed to write first payload").Base(err).WriteToLog(session.ExportIDToError(ctx)) writer.hasError = true diff --git a/xray-core/common/mux/client_test.go b/xray-core/common/mux/client_test.go index 7837a86e70..9626e2a276 100644 --- a/xray-core/common/mux/client_test.go +++ b/xray-core/common/mux/client_test.go @@ -86,9 +86,9 @@ func TestClientWorkerClose(t *testing.T) { } tr1, tw1 := pipe.New(pipe.WithoutSizeLimit()) - ctx1 := session.ContextWithOutbound(context.Background(), &session.Outbound{ + ctx1 := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{ Target: net.TCPDestination(net.DomainAddress("www.example.com"), 80), - }) + }}) common.Must(manager.Dispatch(ctx1, &transport.Link{ Reader: tr1, Writer: tw1, @@ -103,9 +103,9 @@ func TestClientWorkerClose(t *testing.T) { } tr2, tw2 := pipe.New(pipe.WithoutSizeLimit()) - ctx2 := session.ContextWithOutbound(context.Background(), &session.Outbound{ + ctx2 := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{ Target: net.TCPDestination(net.DomainAddress("www.example.com"), 80), - }) + }}) common.Must(manager.Dispatch(ctx2, &transport.Link{ Reader: tr2, Writer: tw2, diff --git a/xray-core/common/session/context.go b/xray-core/common/session/context.go index 87586169e6..fc37bd72e0 100644 --- a/xray-core/common/session/context.go +++ b/xray-core/common/session/context.go @@ -51,13 +51,13 @@ func InboundFromContext(ctx context.Context) *Inbound { return nil } -func ContextWithOutbound(ctx context.Context, outbound *Outbound) context.Context { - return context.WithValue(ctx, outboundSessionKey, outbound) +func ContextWithOutbounds(ctx context.Context, outbounds []*Outbound) context.Context { + return context.WithValue(ctx, outboundSessionKey, outbounds) } -func OutboundFromContext(ctx context.Context) *Outbound { - if outbound, ok := ctx.Value(outboundSessionKey).(*Outbound); ok { - return outbound +func OutboundsFromContext(ctx context.Context) []*Outbound { + if outbounds, ok := ctx.Value(outboundSessionKey).([]*Outbound); ok { + return outbounds } return nil } diff --git a/xray-core/common/session/session.go b/xray-core/common/session/session.go index 38ffa7bda8..d8ab1ec423 100644 --- a/xray-core/common/session/session.go +++ b/xray-core/common/session/session.go @@ -50,18 +50,11 @@ type Inbound struct { Conn net.Conn // Timer of the inbound buf copier. May be nil. Timer *signal.ActivityTimer - // CanSpliceCopy is a property for this connection, set by both inbound and outbound + // CanSpliceCopy is a property for this connection // 1 = can, 2 = after processing protocol info should be able to, 3 = cannot CanSpliceCopy int } -func(i *Inbound) SetCanSpliceCopy(canSpliceCopy int) int { - if canSpliceCopy > i.CanSpliceCopy { - i.CanSpliceCopy = canSpliceCopy - } - return i.CanSpliceCopy -} - // Outbound is the metadata of an outbound connection. type Outbound struct { // Target address of the outbound connection. @@ -70,10 +63,15 @@ type Outbound struct { RouteTarget net.Destination // Gateway address Gateway net.Address + // Tag of the outbound proxy that handles the connection. + Tag string // Name of the outbound proxy that handles the connection. Name string // Conn is actually internet.Connection. May be nil. It is currently nil for outbound with proxySettings Conn net.Conn + // CanSpliceCopy is a property for this connection + // 1 = can, 2 = after processing protocol info should be able to, 3 = cannot + CanSpliceCopy int } // SniffingRequest controls the behavior of content sniffing. diff --git a/xray-core/common/singbridge/dialer.go b/xray-core/common/singbridge/dialer.go index 896c97fee5..6be83036e8 100644 --- a/xray-core/common/singbridge/dialer.go +++ b/xray-core/common/singbridge/dialer.go @@ -43,9 +43,14 @@ func NewOutboundDialer(outbound proxy.Outbound, dialer internet.Dialer) *XrayOut } func (d *XrayOutboundDialer) DialContext(ctx context.Context, network string, destination M.Socksaddr) (net.Conn, error) { - ctx = session.ContextWithOutbound(ctx, &session.Outbound{ - Target: ToDestination(destination, ToNetwork(network)), - }) + outbounds := session.OutboundsFromContext(ctx) + if len(outbounds) == 0 { + outbounds = []*session.Outbound{{}} + ctx = session.ContextWithOutbounds(ctx, outbounds) + } + ob := outbounds[len(outbounds) - 1] + ob.Target = ToDestination(destination, ToNetwork(network)) + opts := []pipe.Option{pipe.WithSizeLimit(64 * 1024)} uplinkReader, uplinkWriter := pipe.New(opts...) downlinkReader, downlinkWriter := pipe.New(opts...) diff --git a/xray-core/features/routing/session/context.go b/xray-core/features/routing/session/context.go index c900219dc4..3c9764b3f9 100644 --- a/xray-core/features/routing/session/context.go +++ b/xray-core/features/routing/session/context.go @@ -124,9 +124,11 @@ func (ctx *Context) GetSkipDNSResolve() bool { // AsRoutingContext creates a context from context.context with session info. func AsRoutingContext(ctx context.Context) routing.Context { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] return &Context{ Inbound: session.InboundFromContext(ctx), - Outbound: session.OutboundFromContext(ctx), + Outbound: ob, Content: session.ContentFromContext(ctx), } } diff --git a/xray-core/proxy/blackhole/blackhole.go b/xray-core/proxy/blackhole/blackhole.go index 4b8194172e..23c9c2919d 100644 --- a/xray-core/proxy/blackhole/blackhole.go +++ b/xray-core/proxy/blackhole/blackhole.go @@ -31,10 +31,9 @@ func New(ctx context.Context, config *Config) (*Handler, error) { // Process implements OutboundHandler.Dispatch(). func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound != nil { - outbound.Name = "blackhole" - } + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + ob.Name = "blackhole" nBytes := h.response.WriteTo(link.Writer) if nBytes > 0 { diff --git a/xray-core/proxy/blackhole/blackhole_test.go b/xray-core/proxy/blackhole/blackhole_test.go index 8e487e0c10..6a9cb8e84e 100644 --- a/xray-core/proxy/blackhole/blackhole_test.go +++ b/xray-core/proxy/blackhole/blackhole_test.go @@ -7,13 +7,15 @@ import ( "github.com/xtls/xray-core/common" "github.com/xtls/xray-core/common/buf" "github.com/xtls/xray-core/common/serial" + "github.com/xtls/xray-core/common/session" "github.com/xtls/xray-core/proxy/blackhole" "github.com/xtls/xray-core/transport" "github.com/xtls/xray-core/transport/pipe" ) func TestBlackholeHTTPResponse(t *testing.T) { - handler, err := blackhole.New(context.Background(), &blackhole.Config{ + ctx := session.ContextWithOutbounds(context.Background(), []*session.Outbound{{}}) + handler, err := blackhole.New(ctx, &blackhole.Config{ Response: serial.ToTypedMessage(&blackhole.HTTPResponse{}), }) common.Must(err) @@ -32,7 +34,7 @@ func TestBlackholeHTTPResponse(t *testing.T) { Reader: reader, Writer: writer, } - common.Must(handler.Process(context.Background(), &link, nil)) + common.Must(handler.Process(ctx, &link, nil)) common.Must(rerr) if mb.IsEmpty() { t.Error("expect http response, but nothing") diff --git a/xray-core/proxy/dns/dns.go b/xray-core/proxy/dns/dns.go index 2cf21a429f..86790f7674 100644 --- a/xray-core/proxy/dns/dns.go +++ b/xray-core/proxy/dns/dns.go @@ -96,15 +96,16 @@ func parseIPQuery(b []byte) (r bool, domain string, id uint16, qType dnsmessage. // Process implements proxy.Outbound. func (h *Handler) Process(ctx context.Context, link *transport.Link, d internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("invalid outbound") } - outbound.Name = "dns" + ob.Name = "dns" - srcNetwork := outbound.Target.Network + srcNetwork := ob.Target.Network - dest := outbound.Target + dest := ob.Target if h.server.Network != net.Network_Unknown { dest.Network = h.server.Network } diff --git a/xray-core/proxy/dokodemo/dokodemo.go b/xray-core/proxy/dokodemo/dokodemo.go index 1c59fe6231..5a07df5cbe 100644 --- a/xray-core/proxy/dokodemo/dokodemo.go +++ b/xray-core/proxy/dokodemo/dokodemo.go @@ -86,10 +86,15 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn st destinationOverridden := false if d.config.FollowRedirect { - if outbound := session.OutboundFromContext(ctx); outbound != nil && outbound.Target.IsValid() { - dest = outbound.Target - destinationOverridden = true - } else if handshake, ok := conn.(hasHandshakeAddressContext); ok { + outbounds := session.OutboundsFromContext(ctx) + if len(outbounds) > 0 { + ob := outbounds[len(outbounds) - 1] + if ob.Target.IsValid() { + dest = ob.Target + destinationOverridden = true + } + } + if handshake, ok := conn.(hasHandshakeAddressContext); ok && !destinationOverridden { addr := handshake.HandshakeAddressContext(ctx) if addr != nil { dest.Address = addr @@ -103,7 +108,7 @@ func (d *DokodemoDoor) Process(ctx context.Context, network net.Network, conn st inbound := session.InboundFromContext(ctx) inbound.Name = "dokodemo-door" - inbound.SetCanSpliceCopy(1) + inbound.CanSpliceCopy = 1 inbound.User = &protocol.MemoryUser{ Level: d.config.UserLevel, } diff --git a/xray-core/proxy/freedom/freedom.go b/xray-core/proxy/freedom/freedom.go index 0176929cc4..9e6afc9d1a 100644 --- a/xray-core/proxy/freedom/freedom.go +++ b/xray-core/proxy/freedom/freedom.go @@ -106,16 +106,16 @@ func isValidAddress(addr *net.IPOrDomain) bool { // Process implements proxy.Outbound. func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified.") } - outbound.Name = "freedom" + ob.Name = "freedom" + ob.CanSpliceCopy = 1 inbound := session.InboundFromContext(ctx) - if inbound != nil { - inbound.SetCanSpliceCopy(1) - } - destination := outbound.Target + + destination := ob.Target UDPOverride := net.UDPDestination(nil, 0) if h.config.DestinationOverride != nil { server := h.config.DestinationOverride.Server diff --git a/xray-core/proxy/http/client.go b/xray-core/proxy/http/client.go index 72060c4d22..80a0328a76 100644 --- a/xray-core/proxy/http/client.go +++ b/xray-core/proxy/http/client.go @@ -69,16 +69,14 @@ func NewClient(ctx context.Context, config *ClientConfig) (*Client, error) { // Process implements proxy.Outbound.Process. We first create a socket tunnel via HTTP CONNECT method, then redirect all inbound traffic to that tunnel. func (c *Client) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified.") } - outbound.Name = "http" - inbound := session.InboundFromContext(ctx) - if inbound != nil { - inbound.SetCanSpliceCopy(2) - } - target := outbound.Target + ob.Name = "http" + ob.CanSpliceCopy = 2 + target := ob.Target targetAddr := target.NetAddr() if target.Network == net.Network_UDP { @@ -175,9 +173,10 @@ func fillRequestHeader(ctx context.Context, header []*Header) ([]*Header, error) } inbound := session.InboundFromContext(ctx) - outbound := session.OutboundFromContext(ctx) + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] - if inbound == nil || outbound == nil { + if inbound == nil || ob == nil { return nil, newError("missing inbound or outbound metadata from context") } @@ -186,7 +185,7 @@ func fillRequestHeader(ctx context.Context, header []*Header) ([]*Header, error) Target net.Destination }{ Source: inbound.Source, - Target: outbound.Target, + Target: ob.Target, } filled := make([]*Header, len(header)) diff --git a/xray-core/proxy/http/server.go b/xray-core/proxy/http/server.go index 511d9b08c3..a7df317dc0 100644 --- a/xray-core/proxy/http/server.go +++ b/xray-core/proxy/http/server.go @@ -85,7 +85,7 @@ type readerOnly struct { func (s *Server) Process(ctx context.Context, network net.Network, conn stat.Connection, dispatcher routing.Dispatcher) error { inbound := session.InboundFromContext(ctx) inbound.Name = "http" - inbound.SetCanSpliceCopy(2) + inbound.CanSpliceCopy = 2 inbound.User = &protocol.MemoryUser{ Level: s.config.UserLevel, } diff --git a/xray-core/proxy/loopback/loopback.go b/xray-core/proxy/loopback/loopback.go index 30c39bd964..f3be5a95d7 100644 --- a/xray-core/proxy/loopback/loopback.go +++ b/xray-core/proxy/loopback/loopback.go @@ -22,12 +22,13 @@ type Loopback struct { } func (l *Loopback) Process(ctx context.Context, link *transport.Link, _ internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified.") } - outbound.Name = "loopback" - destination := outbound.Target + ob.Name = "loopback" + destination := ob.Target newError("opening connection to ", destination).WriteToLog(session.ExportIDToError(ctx)) diff --git a/xray-core/proxy/proxy.go b/xray-core/proxy/proxy.go index 6a5a1798a3..2507d02962 100644 --- a/xray-core/proxy/proxy.go +++ b/xray-core/proxy/proxy.go @@ -474,45 +474,73 @@ func CopyRawConnIfExist(ctx context.Context, readerConn net.Conn, writerConn net readerConn, readCounter, _ := UnwrapRawConn(readerConn) writerConn, _, writeCounter := UnwrapRawConn(writerConn) reader := buf.NewReader(readerConn) - if inbound := session.InboundFromContext(ctx); inbound != nil { - if tc, ok := writerConn.(*net.TCPConn); ok && readerConn != nil && writerConn != nil && (runtime.GOOS == "linux" || runtime.GOOS == "android") { - for inbound.CanSpliceCopy != 3 { - if inbound.CanSpliceCopy == 1 { - newError("CopyRawConn splice").WriteToLog(session.ExportIDToError(ctx)) - statWriter, _ := writer.(*dispatcher.SizeStatWriter) - //runtime.Gosched() // necessary - time.Sleep(time.Millisecond) // without this, there will be a rare ssl error for freedom splice - w, err := tc.ReadFrom(readerConn) - if readCounter != nil { - readCounter.Add(w) // outbound stats - } - if writeCounter != nil { - writeCounter.Add(w) // inbound stats - } - if statWriter != nil { - statWriter.Counter.Add(w) // user stats - } - if err != nil && errors.Cause(err) != io.EOF { - return err - } - return nil - } - buffer, err := reader.ReadMultiBuffer() - if !buffer.IsEmpty() { - if readCounter != nil { - readCounter.Add(int64(buffer.Len())) - } - timer.Update() - if werr := writer.WriteMultiBuffer(buffer); werr != nil { - return werr - } - } - if err != nil { - return err - } - } + if runtime.GOOS != "linux" && runtime.GOOS != "android" { + return readV(ctx, reader, writer, timer, readCounter) + } + tc, ok := writerConn.(*net.TCPConn) + if !ok || readerConn == nil || writerConn == nil { + return readV(ctx, reader, writer, timer, readCounter) + } + inbound := session.InboundFromContext(ctx) + if inbound == nil || inbound.CanSpliceCopy == 3 { + return readV(ctx, reader, writer, timer, readCounter) + } + outbounds := session.OutboundsFromContext(ctx) + if len(outbounds) == 0 { + return readV(ctx, reader, writer, timer, readCounter) + } + for _, ob := range outbounds { + if ob.CanSpliceCopy == 3 { + return readV(ctx, reader, writer, timer, readCounter) } } + + for { + inbound := session.InboundFromContext(ctx) + outbounds := session.OutboundsFromContext(ctx) + var splice = inbound.CanSpliceCopy == 1 + for _, ob := range outbounds { + if ob.CanSpliceCopy != 1 { + splice = false + } + } + if splice { + newError("CopyRawConn splice").WriteToLog(session.ExportIDToError(ctx)) + statWriter, _ := writer.(*dispatcher.SizeStatWriter) + //runtime.Gosched() // necessary + time.Sleep(time.Millisecond) // without this, there will be a rare ssl error for freedom splice + w, err := tc.ReadFrom(readerConn) + if readCounter != nil { + readCounter.Add(w) // outbound stats + } + if writeCounter != nil { + writeCounter.Add(w) // inbound stats + } + if statWriter != nil { + statWriter.Counter.Add(w) // user stats + } + if err != nil && errors.Cause(err) != io.EOF { + return err + } + return nil + } + buffer, err := reader.ReadMultiBuffer() + if !buffer.IsEmpty() { + if readCounter != nil { + readCounter.Add(int64(buffer.Len())) + } + timer.Update() + if werr := writer.WriteMultiBuffer(buffer); werr != nil { + return werr + } + } + if err != nil { + return err + } + } +} + +func readV(ctx context.Context, reader buf.Reader, writer buf.Writer, timer signal.ActivityUpdater, readCounter stats.Counter) error { newError("CopyRawConn readv").WriteToLog(session.ExportIDToError(ctx)) if err := buf.Copy(reader, writer, buf.UpdateActivity(timer), buf.AddToStatCounter(readCounter)); err != nil { return newError("failed to process response").Base(err) diff --git a/xray-core/proxy/shadowsocks/client.go b/xray-core/proxy/shadowsocks/client.go index 57d8f81c7c..8ebe7631b7 100644 --- a/xray-core/proxy/shadowsocks/client.go +++ b/xray-core/proxy/shadowsocks/client.go @@ -49,16 +49,14 @@ func NewClient(ctx context.Context, config *ClientConfig) (*Client, error) { // Process implements OutboundHandler.Process(). func (c *Client) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified") } - outbound.Name = "shadowsocks" - inbound := session.InboundFromContext(ctx) - if inbound != nil { - inbound.SetCanSpliceCopy(3) - } - destination := outbound.Target + ob.Name = "shadowsocks" + ob.CanSpliceCopy = 3 + destination := ob.Target network := destination.Network var server *protocol.ServerSpec diff --git a/xray-core/proxy/shadowsocks/server.go b/xray-core/proxy/shadowsocks/server.go index 2975ba70ae..8253506a6f 100644 --- a/xray-core/proxy/shadowsocks/server.go +++ b/xray-core/proxy/shadowsocks/server.go @@ -73,7 +73,7 @@ func (s *Server) Network() []net.Network { func (s *Server) Process(ctx context.Context, network net.Network, conn stat.Connection, dispatcher routing.Dispatcher) error { inbound := session.InboundFromContext(ctx) inbound.Name = "shadowsocks" - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 switch network { case net.Network_TCP: diff --git a/xray-core/proxy/shadowsocks_2022/inbound.go b/xray-core/proxy/shadowsocks_2022/inbound.go index 00314c90ec..f1eb76a5a2 100644 --- a/xray-core/proxy/shadowsocks_2022/inbound.go +++ b/xray-core/proxy/shadowsocks_2022/inbound.go @@ -66,7 +66,7 @@ func (i *Inbound) Network() []net.Network { func (i *Inbound) Process(ctx context.Context, network net.Network, connection stat.Connection, dispatcher routing.Dispatcher) error { inbound := session.InboundFromContext(ctx) inbound.Name = "shadowsocks-2022" - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 var metadata M.Metadata if inbound.Source.IsValid() { diff --git a/xray-core/proxy/shadowsocks_2022/inbound_multi.go b/xray-core/proxy/shadowsocks_2022/inbound_multi.go index df837894d8..f80ec6d11b 100644 --- a/xray-core/proxy/shadowsocks_2022/inbound_multi.go +++ b/xray-core/proxy/shadowsocks_2022/inbound_multi.go @@ -155,7 +155,7 @@ func (i *MultiUserInbound) Network() []net.Network { func (i *MultiUserInbound) Process(ctx context.Context, network net.Network, connection stat.Connection, dispatcher routing.Dispatcher) error { inbound := session.InboundFromContext(ctx) inbound.Name = "shadowsocks-2022-multi" - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 var metadata M.Metadata if inbound.Source.IsValid() { diff --git a/xray-core/proxy/shadowsocks_2022/inbound_relay.go b/xray-core/proxy/shadowsocks_2022/inbound_relay.go index 7317f8dd27..1c4b824870 100644 --- a/xray-core/proxy/shadowsocks_2022/inbound_relay.go +++ b/xray-core/proxy/shadowsocks_2022/inbound_relay.go @@ -87,7 +87,7 @@ func (i *RelayInbound) Network() []net.Network { func (i *RelayInbound) Process(ctx context.Context, network net.Network, connection stat.Connection, dispatcher routing.Dispatcher) error { inbound := session.InboundFromContext(ctx) inbound.Name = "shadowsocks-2022-relay" - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 var metadata M.Metadata if inbound.Source.IsValid() { diff --git a/xray-core/proxy/shadowsocks_2022/outbound.go b/xray-core/proxy/shadowsocks_2022/outbound.go index bc1eb556f0..cac9a91bbb 100644 --- a/xray-core/proxy/shadowsocks_2022/outbound.go +++ b/xray-core/proxy/shadowsocks_2022/outbound.go @@ -65,15 +65,16 @@ func (o *Outbound) Process(ctx context.Context, link *transport.Link, dialer int inbound := session.InboundFromContext(ctx) if inbound != nil { inboundConn = inbound.Conn - inbound.SetCanSpliceCopy(3) } - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified") } - outbound.Name = "shadowsocks-2022" - destination := outbound.Target + ob.Name = "shadowsocks-2022" + ob.CanSpliceCopy = 3 + destination := ob.Target network := destination.Network newError("tunneling request to ", destination, " via ", o.server.NetAddr()).WriteToLog(session.ExportIDToError(ctx)) diff --git a/xray-core/proxy/socks/client.go b/xray-core/proxy/socks/client.go index 82591be432..b283eb6506 100644 --- a/xray-core/proxy/socks/client.go +++ b/xray-core/proxy/socks/client.go @@ -57,17 +57,15 @@ func NewClient(ctx context.Context, config *ClientConfig) (*Client, error) { // Process implements proxy.Outbound.Process. func (c *Client) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified.") } - outbound.Name = "socks" - inbound := session.InboundFromContext(ctx) - if inbound != nil { - inbound.SetCanSpliceCopy(2) - } + ob.Name = "socks" + ob.CanSpliceCopy = 2 // Destination of the inner request. - destination := outbound.Target + destination := ob.Target // Outbound server. var server *protocol.ServerSpec diff --git a/xray-core/proxy/socks/server.go b/xray-core/proxy/socks/server.go index 2f7897572b..0109d5b422 100644 --- a/xray-core/proxy/socks/server.go +++ b/xray-core/proxy/socks/server.go @@ -65,7 +65,7 @@ func (s *Server) Network() []net.Network { func (s *Server) Process(ctx context.Context, network net.Network, conn stat.Connection, dispatcher routing.Dispatcher) error { inbound := session.InboundFromContext(ctx) inbound.Name = "socks" - inbound.SetCanSpliceCopy(2) + inbound.CanSpliceCopy = 2 inbound.User = &protocol.MemoryUser{ Level: s.config.UserLevel, } diff --git a/xray-core/proxy/trojan/client.go b/xray-core/proxy/trojan/client.go index d6b95fc0b1..3a4d838ae5 100644 --- a/xray-core/proxy/trojan/client.go +++ b/xray-core/proxy/trojan/client.go @@ -50,16 +50,14 @@ func NewClient(ctx context.Context, config *ClientConfig) (*Client, error) { // Process implements OutboundHandler.Process(). func (c *Client) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified") } - outbound.Name = "trojan" - inbound := session.InboundFromContext(ctx) - if inbound != nil { - inbound.SetCanSpliceCopy(3) - } - destination := outbound.Target + ob.Name = "trojan" + ob.CanSpliceCopy = 3 + destination := ob.Target network := destination.Network var server *protocol.ServerSpec diff --git a/xray-core/proxy/trojan/server.go b/xray-core/proxy/trojan/server.go index 5c3fcd9113..bc52c2b146 100644 --- a/xray-core/proxy/trojan/server.go +++ b/xray-core/proxy/trojan/server.go @@ -215,7 +215,7 @@ func (s *Server) Process(ctx context.Context, network net.Network, conn stat.Con inbound := session.InboundFromContext(ctx) inbound.Name = "trojan" - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 inbound.User = user sessionPolicy = s.policyManager.ForLevel(user.Level) diff --git a/xray-core/proxy/vless/encoding/encoding.go b/xray-core/proxy/vless/encoding/encoding.go index 5956389af7..2976be749a 100644 --- a/xray-core/proxy/vless/encoding/encoding.go +++ b/xray-core/proxy/vless/encoding/encoding.go @@ -174,15 +174,18 @@ func DecodeResponseHeader(reader io.Reader, request *protocol.RequestHeader) (*A } // XtlsRead filter and read xtls protocol -func XtlsRead(reader buf.Reader, writer buf.Writer, timer signal.ActivityUpdater, conn net.Conn, input *bytes.Reader, rawInput *bytes.Buffer, trafficState *proxy.TrafficState, ctx context.Context) error { +func XtlsRead(reader buf.Reader, writer buf.Writer, timer signal.ActivityUpdater, conn net.Conn, input *bytes.Reader, rawInput *bytes.Buffer, trafficState *proxy.TrafficState, ob *session.Outbound, ctx context.Context) error { err := func() error { for { if trafficState.ReaderSwitchToDirectCopy { var writerConn net.Conn - if inbound := session.InboundFromContext(ctx); inbound != nil && inbound.Conn != nil { + if inbound := session.InboundFromContext(ctx); inbound != nil && inbound.Conn != nil && ob != nil { writerConn = inbound.Conn if inbound.CanSpliceCopy == 2 { - inbound.CanSpliceCopy = 1 // force the value to 1, don't use setter + inbound.CanSpliceCopy = 1 + } + if ob.CanSpliceCopy == 2 { // ob need to be passed in due to context can change + ob.CanSpliceCopy = 1 } } return proxy.CopyRawConnIfExist(ctx, conn, writerConn, writer, timer) @@ -219,14 +222,19 @@ func XtlsRead(reader buf.Reader, writer buf.Writer, timer signal.ActivityUpdater } // XtlsWrite filter and write xtls protocol -func XtlsWrite(reader buf.Reader, writer buf.Writer, timer signal.ActivityUpdater, conn net.Conn, trafficState *proxy.TrafficState, ctx context.Context) error { +func XtlsWrite(reader buf.Reader, writer buf.Writer, timer signal.ActivityUpdater, conn net.Conn, trafficState *proxy.TrafficState, ob *session.Outbound, ctx context.Context) error { err := func() error { var ct stats.Counter for { buffer, err := reader.ReadMultiBuffer() if trafficState.WriterSwitchToDirectCopy { - if inbound := session.InboundFromContext(ctx); inbound != nil && inbound.CanSpliceCopy == 2 { - inbound.CanSpliceCopy = 1 // force the value to 1, don't use setter + if inbound := session.InboundFromContext(ctx); inbound != nil && ob != nil { + if inbound.CanSpliceCopy == 2 { + inbound.CanSpliceCopy = 1 + } + if ob.CanSpliceCopy == 2 { + ob.CanSpliceCopy = 1 + } } rawConn, _, writerCounter := proxy.UnwrapRawConn(conn) writer = buf.NewWriter(rawConn) diff --git a/xray-core/proxy/vless/inbound/inbound.go b/xray-core/proxy/vless/inbound/inbound.go index 0ffa61d2ae..7d2dd50718 100644 --- a/xray-core/proxy/vless/inbound/inbound.go +++ b/xray-core/proxy/vless/inbound/inbound.go @@ -449,7 +449,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s switch requestAddons.Flow { case vless.XRV: if account.Flow == requestAddons.Flow { - inbound.SetCanSpliceCopy(2) + inbound.CanSpliceCopy = 2 switch request.Command { case protocol.RequestCommandUDP: return newError(requestAddons.Flow + " doesn't support UDP").AtWarning() @@ -479,7 +479,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s return newError(account.ID.String() + " is not able to use " + requestAddons.Flow).AtWarning() } case "": - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 if account.Flow == vless.XRV && (request.Command == protocol.RequestCommandTCP || isMuxAndNotXUDP(request, first)) { return newError(account.ID.String() + " is not able to use \"\". Note that the pure TLS proxy has certain TLS in TLS characters.").AtWarning() } @@ -523,7 +523,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s if requestAddons.Flow == vless.XRV { ctx1 := session.ContextWithInbound(ctx, nil) // TODO enable splice clientReader = proxy.NewVisionReader(clientReader, trafficState, ctx1) - err = encoding.XtlsRead(clientReader, serverWriter, timer, connection, input, rawInput, trafficState, ctx1) + err = encoding.XtlsRead(clientReader, serverWriter, timer, connection, input, rawInput, trafficState, nil, ctx1) } else { // from clientReader.ReadMultiBuffer to serverWriter.WriteMultiBufer err = buf.Copy(clientReader, serverWriter, buf.UpdateActivity(timer)) @@ -560,7 +560,9 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s var err error if requestAddons.Flow == vless.XRV { - err = encoding.XtlsWrite(serverReader, clientWriter, timer, connection, trafficState, ctx) + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + err = encoding.XtlsWrite(serverReader, clientWriter, timer, connection, trafficState, ob, ctx) } else { // from serverReader.ReadMultiBuffer to clientWriter.WriteMultiBufer err = buf.Copy(serverReader, clientWriter, buf.UpdateActivity(timer)) diff --git a/xray-core/proxy/vless/outbound/outbound.go b/xray-core/proxy/vless/outbound/outbound.go index a93688139b..bf98253b45 100644 --- a/xray-core/proxy/vless/outbound/outbound.go +++ b/xray-core/proxy/vless/outbound/outbound.go @@ -70,12 +70,12 @@ func New(ctx context.Context, config *Config) (*Handler, error) { // Process implements proxy.Outbound.Process(). func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified").AtError() } - outbound.Name = "vless" - inbound := session.InboundFromContext(ctx) + ob.Name = "vless" var rec *protocol.ServerSpec var conn stat.Connection @@ -96,7 +96,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte if statConn, ok := iConn.(*stat.CounterConnection); ok { iConn = statConn.Connection } - target := outbound.Target + target := ob.Target newError("tunneling request to ", target, " via ", rec.Destination().NetAddr()).AtInfo().WriteToLog(session.ExportIDToError(ctx)) command := protocol.RequestCommandTCP @@ -130,9 +130,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte requestAddons.Flow = requestAddons.Flow[:16] fallthrough case vless.XRV: - if inbound != nil { - inbound.SetCanSpliceCopy(2) - } + ob.CanSpliceCopy = 2 switch request.Command { case protocol.RequestCommandUDP: if !allowUDP443 && request.Port == 443 { @@ -161,9 +159,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte rawInput = (*bytes.Buffer)(unsafe.Pointer(p + r.Offset)) } default: - if inbound != nil { - inbound.SetCanSpliceCopy(3) - } + ob.CanSpliceCopy = 3 } var newCtx context.Context @@ -238,8 +234,8 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte return newError(`failed to use `+requestAddons.Flow+`, found outer tls version `, utlsConn.ConnectionState().Version).AtWarning() } } - ctx1 := session.ContextWithOutbound(ctx, nil) // TODO enable splice - err = encoding.XtlsWrite(clientReader, serverWriter, timer, conn, trafficState, ctx1) + ctx1 := session.ContextWithInbound(ctx, nil) // TODO enable splice + err = encoding.XtlsWrite(clientReader, serverWriter, timer, conn, trafficState, ob, ctx1) } else { // from clientReader.ReadMultiBuffer to serverWriter.WriteMultiBufer err = buf.Copy(clientReader, serverWriter, buf.UpdateActivity(timer)) @@ -277,7 +273,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte } if requestAddons.Flow == vless.XRV { - err = encoding.XtlsRead(serverReader, clientWriter, timer, conn, input, rawInput, trafficState, ctx) + err = encoding.XtlsRead(serverReader, clientWriter, timer, conn, input, rawInput, trafficState, ob, ctx) } else { // from serverReader.ReadMultiBuffer to clientWriter.WriteMultiBufer err = buf.Copy(serverReader, clientWriter, buf.UpdateActivity(timer)) diff --git a/xray-core/proxy/vmess/inbound/inbound.go b/xray-core/proxy/vmess/inbound/inbound.go index 679ea5da68..f5340f20c4 100644 --- a/xray-core/proxy/vmess/inbound/inbound.go +++ b/xray-core/proxy/vmess/inbound/inbound.go @@ -257,7 +257,7 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection s inbound := session.InboundFromContext(ctx) inbound.Name = "vmess" - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 inbound.User = request.User sessionPolicy = h.policyManager.ForLevel(request.User.Level) diff --git a/xray-core/proxy/vmess/outbound/outbound.go b/xray-core/proxy/vmess/outbound/outbound.go index c3c55d956f..8f102dbb11 100644 --- a/xray-core/proxy/vmess/outbound/outbound.go +++ b/xray-core/proxy/vmess/outbound/outbound.go @@ -60,15 +60,13 @@ func New(ctx context.Context, config *Config) (*Handler, error) { // Process implements proxy.Outbound.Process(). func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified").AtError() } - outbound.Name = "vmess" - inbound := session.InboundFromContext(ctx) - if inbound != nil { - inbound.SetCanSpliceCopy(3) - } + ob.Name = "vmess" + ob.CanSpliceCopy = 3 var rec *protocol.ServerSpec var conn stat.Connection @@ -87,7 +85,7 @@ func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer inte } defer conn.Close() - target := outbound.Target + target := ob.Target newError("tunneling request to ", target, " via ", rec.Destination().NetAddr()).WriteToLog(session.ExportIDToError(ctx)) command := protocol.RequestCommandTCP diff --git a/xray-core/proxy/wireguard/client.go b/xray-core/proxy/wireguard/client.go index 4136525e69..00a6fa51a7 100644 --- a/xray-core/proxy/wireguard/client.go +++ b/xray-core/proxy/wireguard/client.go @@ -127,22 +127,20 @@ func (h *Handler) processWireGuard(dialer internet.Dialer) (err error) { // Process implements OutboundHandler.Dispatch(). func (h *Handler) Process(ctx context.Context, link *transport.Link, dialer internet.Dialer) error { - outbound := session.OutboundFromContext(ctx) - if outbound == nil || !outbound.Target.IsValid() { + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] + if !ob.Target.IsValid() { return newError("target not specified") } - outbound.Name = "wireguard" - inbound := session.InboundFromContext(ctx) - if inbound != nil { - inbound.SetCanSpliceCopy(3) - } + ob.Name = "wireguard" + ob.CanSpliceCopy = 3 if err := h.processWireGuard(dialer); err != nil { return err } // Destination of the inner request. - destination := outbound.Target + destination := ob.Target command := protocol.RequestCommandTCP if destination.Network == net.Network_UDP { command = protocol.RequestCommandUDP diff --git a/xray-core/proxy/wireguard/server.go b/xray-core/proxy/wireguard/server.go index bdb4e8018c..3d3b584cec 100644 --- a/xray-core/proxy/wireguard/server.go +++ b/xray-core/proxy/wireguard/server.go @@ -79,13 +79,15 @@ func (*Server) Network() []net.Network { func (s *Server) Process(ctx context.Context, network net.Network, conn stat.Connection, dispatcher routing.Dispatcher) error { inbound := session.InboundFromContext(ctx) inbound.Name = "wireguard" - inbound.SetCanSpliceCopy(3) + inbound.CanSpliceCopy = 3 + outbounds := session.OutboundsFromContext(ctx) + ob := outbounds[len(outbounds) - 1] s.info = routingInfo{ ctx: core.ToBackgroundDetachedContext(ctx), dispatcher: dispatcher, inboundTag: session.InboundFromContext(ctx), - outboundTag: session.OutboundFromContext(ctx), + outboundTag: ob, contentTag: session.ContentFromContext(ctx), } @@ -145,7 +147,7 @@ func (s *Server) forwardConnection(dest net.Destination, conn net.Conn) { ctx = session.ContextWithInbound(ctx, s.info.inboundTag) } if s.info.outboundTag != nil { - ctx = session.ContextWithOutbound(ctx, s.info.outboundTag) + ctx = session.ContextWithOutbounds(ctx, []*session.Outbound{s.info.outboundTag}) } if s.info.contentTag != nil { ctx = session.ContextWithContent(ctx, s.info.contentTag) diff --git a/xray-core/transport/internet/dialer.go b/xray-core/transport/internet/dialer.go index 3d5d046f7a..ffa868a303 100644 --- a/xray-core/transport/internet/dialer.go +++ b/xray-core/transport/internet/dialer.go @@ -112,7 +112,12 @@ func canLookupIP(ctx context.Context, dst net.Destination, sockopt *SocketConfig func redirect(ctx context.Context, dst net.Destination, obt string) net.Conn { newError("redirecting request " + dst.String() + " to " + obt).WriteToLog(session.ExportIDToError(ctx)) h := obm.GetHandler(obt) - ctx = session.ContextWithOutbound(ctx, &session.Outbound{Target: dst, Gateway: nil}) + outbounds := session.OutboundsFromContext(ctx) + ctx = session.ContextWithOutbounds(ctx, append(outbounds, &session.Outbound{ + Target: dst, + Gateway: nil, + Tag: obt, + })) // add another outbound in session ctx if h != nil { ur, uw := pipe.New(pipe.OptionsFromContext(ctx)...) dr, dw := pipe.New(pipe.OptionsFromContext(ctx)...) @@ -131,8 +136,10 @@ func redirect(ctx context.Context, dst net.Destination, obt string) net.Conn { // DialSystem calls system dialer to create a network connection. func DialSystem(ctx context.Context, dest net.Destination, sockopt *SocketConfig) (net.Conn, error) { var src net.Address - if outbound := session.OutboundFromContext(ctx); outbound != nil { - src = outbound.Gateway + outbounds := session.OutboundsFromContext(ctx) + if len(outbounds) > 0 { + ob := outbounds[len(outbounds) - 1] + src = ob.Gateway } if sockopt == nil { return effectiveSystemDialer.Dial(ctx, src, dest, sockopt) diff --git a/xray-core/transport/internet/grpc/dial.go b/xray-core/transport/internet/grpc/dial.go index 5d5789b477..a4b03cedc8 100644 --- a/xray-core/transport/internet/grpc/dial.go +++ b/xray-core/transport/internet/grpc/dial.go @@ -118,7 +118,7 @@ func getGrpcClient(ctx context.Context, dest net.Destination, streamSettings *in address := net.ParseAddress(rawHost) gctx = session.ContextWithID(gctx, session.IDFromContext(ctx)) - gctx = session.ContextWithOutbound(gctx, session.OutboundFromContext(ctx)) + gctx = session.ContextWithOutbounds(gctx, session.OutboundsFromContext(ctx)) gctx = session.ContextWithTimeoutOnly(gctx, true) c, err := internet.DialSystem(gctx, net.TCPDestination(address, port), sockopt) diff --git a/xray-core/transport/internet/http/dialer.go b/xray-core/transport/internet/http/dialer.go index acccd0b72a..0148658c5b 100644 --- a/xray-core/transport/internet/http/dialer.go +++ b/xray-core/transport/internet/http/dialer.go @@ -68,7 +68,7 @@ func getHTTPClient(ctx context.Context, dest net.Destination, streamSettings *in address := net.ParseAddress(rawHost) hctx = session.ContextWithID(hctx, session.IDFromContext(ctx)) - hctx = session.ContextWithOutbound(hctx, session.OutboundFromContext(ctx)) + hctx = session.ContextWithOutbounds(hctx, session.OutboundsFromContext(ctx)) hctx = session.ContextWithTimeoutOnly(hctx, true) pconn, err := internet.DialSystem(hctx, net.TCPDestination(address, port), sockopt) diff --git a/yass/debian/changelog b/yass/debian/changelog index 4db98aae3a..6d73ab54b6 100644 --- a/yass/debian/changelog +++ b/yass/debian/changelog @@ -214,207 +214,207 @@ yass (1.5.0-1) UNRELEASED; urgency=low * New major release. - -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 + -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 yass (1.4.12-1) UNRELEASED; urgency=medium * Fix bad F_SETFD calls. * gtk: update desktop database. - -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 + -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 yass (1.4.11-1) UNRELEASED; urgency=medium * Bump Clang. * Fix use cached configuration issue. * Fix crash in resume from previous failure. - -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 + -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 yass (1.4.10-1) UNRELEASED; urgency=medium * Bump Clang and Abseil-Cpp. * Use tcmalloc be default. * Misc fixes. - -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 + -- Chilledheart Sat, 2 Dec 2023 15:47:47 +0800 yass (1.4.9-1) UNRELEASED; urgency=medium * Fix startup failure on the first try since version 1.4.5. - -- Chilledheart Thu, 16 Nov 2023 13:47:59 +0800 + -- Chilledheart Thu, 16 Nov 2023 13:47:59 +0800 yass (1.4.8-1) UNRELEASED; urgency=low * Some trivial changes. - -- Chilledheart Thu, 16 Nov 2023 11:27:25 +0800 + -- Chilledheart Thu, 16 Nov 2023 11:27:25 +0800 yass (1.4.7-1) UNRELEASED; urgency=low * Bump to chromium 120 dependents. - -- Chilledheart Mon, 6 Nov 2023 09:58:00 +0800 + -- Chilledheart Mon, 6 Nov 2023 09:58:00 +0800 yass (1.4.6-1) UNRELEASED; urgency=low * Better handling with SIGTERM signal. * Bump to chromium 119 dependents. - -- Chilledheart Mon, 23 Oct 2023 10:04:17 +0800 + -- Chilledheart Mon, 23 Oct 2023 10:04:17 +0800 yass (1.4.5-1) UNRELEASED; urgency=low * Some trivial changes. - -- Chilledheart Thu, 5 Oct 2023 17:08:33 +0800 + -- Chilledheart Thu, 5 Oct 2023 17:08:33 +0800 yass (1.4.4-1) UNRELEASED; urgency=low * Add chinese translation (GTK4). - -- Chilledheart Wed, 20 Sep 2023 11:34:16 +0800 + -- Chilledheart Wed, 20 Sep 2023 11:34:16 +0800 yass (1.4.3-1) UNRELEASED; urgency=low * Add chinese translation. - -- Chilledheart Mon, 18 Sep 2023 11:18:19 +0800 + -- Chilledheart Mon, 18 Sep 2023 11:18:19 +0800 yass (1.4.2-1) UNRELEASED; urgency=low * New minor release. - -- Chilledheart Fri, 15 Sep 2023 09:43:56 +0800 + -- Chilledheart Fri, 15 Sep 2023 09:43:56 +0800 yass (1.4.1-1) UNRELEASED; urgency=low * Bump to chromium 118 dependents. - -- Chilledheart Thu, 14 Sep 2023 03:45:58 +0800 + -- Chilledheart Thu, 14 Sep 2023 03:45:58 +0800 yass (1.4.0-1) UNRELEASED; urgency=low * New major release. - -- Chilledheart Thu, 24 Aug 2023 15:08:06 +0800 + -- Chilledheart Thu, 24 Aug 2023 15:08:06 +0800 yass (1.3.15-1) UNRELEASED; urgency=low * Add support for legacy shadowsocks stream ciphers. * Bump to chromium 117 dependents. - -- Chilledheart Thu, 24 Aug 2023 15:08:06 +0800 + -- Chilledheart Thu, 24 Aug 2023 15:08:06 +0800 yass (1.3.14-1) UNRELEASED; urgency=low * Prepare for downstream build. - -- Chilledheart Fri, 11 Aug 2023 13:56:41 +0800 + -- Chilledheart Fri, 11 Aug 2023 13:56:41 +0800 yass (1.3.13-1) UNRELEASED; urgency=low * Prepare for downstream build. - -- Chilledheart Wed, 9 Aug 2023 20:10:05 +0800 + -- Chilledheart Wed, 9 Aug 2023 20:10:05 +0800 yass (1.3.12-1) UNRELEASED; urgency=low * Prepare for downstream build. - -- Chilledheart Wed, 9 Aug 2023 19:50:27 +0800 + -- Chilledheart Wed, 9 Aug 2023 19:50:27 +0800 yass (1.3.11-1) UNRELEASED; urgency=medium * Add system proxy support. - -- Chilledheart Sat, 5 Aug 2023 16:57:20 +0800 + -- Chilledheart Sat, 5 Aug 2023 16:57:20 +0800 yass (1.3.10-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Sun, 30 Jul 2023 16:33:43 +0800 + -- Chilledheart Sun, 30 Jul 2023 16:33:43 +0800 yass (1.3.9-1) UNRELEASED; urgency=medium * Bump to chromium 116 dependents. * server: fix crash in hostname tlsext handling. - -- Chilledheart Sat, 22 Jul 2023 20:16:25 +0800 + -- Chilledheart Sat, 22 Jul 2023 20:16:25 +0800 yass (1.3.8-1) UNRELEASED; urgency=high * CVE/http: Fix memory leak in nghttp2 codec. - -- Chilledheart Sun, 16 Jul 2023 17:03:45 +0800 + -- Chilledheart Sun, 16 Jul 2023 17:03:45 +0800 yass (1.3.7-1) UNRELEASED; urgency=low * More complete IPv6 support. - -- Chilledheart Thu, 13 Jul 2023 11:06:45 +0800 + -- Chilledheart Thu, 13 Jul 2023 11:06:45 +0800 yass (1.3.6-1) UNRELEASED; urgency=low * Improvement of performance over http2 (client). - -- Chilledheart Tue, 4 Jul 2023 18:20:16 +0800 + -- Chilledheart Tue, 4 Jul 2023 18:20:16 +0800 yass (1.3.5-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Sun, 2 Jul 2023 16:31:01 +0800 + -- Chilledheart Sun, 2 Jul 2023 16:31:01 +0800 yass (1.3.4-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Fri, 26 May 2023 10:01:20 +0800 + -- Chilledheart Fri, 26 May 2023 10:01:20 +0800 yass (1.3.3-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Fri, 26 May 2023 10:01:20 +0800 + -- Chilledheart Fri, 26 May 2023 10:01:20 +0800 yass (1.3.2-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Wed, 26 Apr 2023 13:39:13 +0800 + -- Chilledheart Wed, 26 Apr 2023 13:39:13 +0800 yass (1.3.1-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Sun, 2 Apr 2023 19:36:43 +0800 + -- Chilledheart Sun, 2 Apr 2023 19:36:43 +0800 yass (1.3.0-1) UNRELEASED; urgency=low * New HTTP TLS Implementation. - -- Chilledheart Mon, 13 Mar 2023 10:04:58 +0800 + -- Chilledheart Mon, 13 Mar 2023 10:04:58 +0800 yass (1.2.7-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Wed, 8 Mar 2023 14:13:06 +0800 + -- Chilledheart Wed, 8 Mar 2023 14:13:06 +0800 yass (1.2.6-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Wed, 1 Mar 2023 13:40:19 +0800 + -- Chilledheart Wed, 1 Mar 2023 13:40:19 +0800 yass (1.2.5-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Thu, 16 Feb 2023 11:09:50 +0800 + -- Chilledheart Thu, 16 Feb 2023 11:09:50 +0800 yass (1.2.4-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Sat, 11 Feb 2023 14:48:54 +0800 + -- Chilledheart Sat, 11 Feb 2023 14:48:54 +0800 yass (1.2.3-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Fri, 10 Feb 2023 13:54:29 +0800 + -- Chilledheart Fri, 10 Feb 2023 13:54:29 +0800 yass (1.2.2-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Wed, 8 Feb 2023 10:33:09 +0800 + -- Chilledheart Wed, 8 Feb 2023 10:33:09 +0800 yass (1.2.1-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Fri, 3 Feb 2023 21:14:30 +0800 + -- Chilledheart Fri, 3 Feb 2023 21:14:30 +0800 yass (1.2.0-1) UNRELEASED; urgency=medium * New HTTP2 Tunnel Proxy Support. - -- Chilledheart Sun, 29 Jan 2023 20:52:02 +0800 + -- Chilledheart Sun, 29 Jan 2023 20:52:02 +0800 yass (1.1.0-1) UNRELEASED; urgency=low * New bug-fix release. - -- Chilledheart Tue, 10 Jan 2023 12:52:07 +0800 + -- Chilledheart Tue, 10 Jan 2023 12:52:07 +0800 yass (1.0.0-1) UNRELEASED; urgency=medium * Initial release. (Closes: #4) - -- Chilledheart Thu, 20 Jan 2022 22:13:08 -0500 + -- Chilledheart Thu, 20 Jan 2022 22:13:08 -0500 diff --git a/yass/debian/control b/yass/debian/control index f43ddf4157..b56d2ecc9a 100644 --- a/yass/debian/control +++ b/yass/debian/control @@ -1,5 +1,5 @@ Source: yass -Maintainer: Chilledheart +Maintainer: Chilledheart Section: net Priority: optional Standards-Version: 3.9.2 diff --git a/yass/debian/copyright b/yass/debian/copyright index 7a4a592765..ad0f285065 100644 --- a/yass/debian/copyright +++ b/yass/debian/copyright @@ -1,10 +1,10 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: yass -Upstream-Contact: Chilledheart +Upstream-Contact: Chilledheart Source: https://github.com/Chilledheart/yass Files: * -Copyright: 2019-2023, Chilledheart +Copyright: 2019-2024, Chilledheart License: GPL-2 Files: third_party/chromium/* @@ -12,7 +12,7 @@ Copyright: 2015 The Chromium Authors License: BSD-3-clause Files: debian/* -Copyright: 2019-2022, Chilledheart +Copyright: 2019-2024, Chilledheart License: GPL-2 License: GPL-2 diff --git a/yass/openwrt/Makefile.tmpl b/yass/openwrt/Makefile.tmpl index 4a9120e4a6..73aa29cfd2 100644 --- a/yass/openwrt/Makefile.tmpl +++ b/yass/openwrt/Makefile.tmpl @@ -6,7 +6,7 @@ PKG_RELEASE:=1 PKG_LICENSE:=GPLv2 PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Chilledheart +PKG_MAINTAINER:=Chilledheart PKG_SOURCE:=yass_cli-$(PKG_VERSION).tgz PKG_SOURCE_URL:=file://%%PKG_DIR%% PKG_HASH:=%%PKG_SHA256SUM%% diff --git a/yass/src/cli/cli_connection.cpp b/yass/src/cli/cli_connection.cpp index 9ccd3c80ad..6384629d03 100644 --- a/yass/src/cli/cli_connection.cpp +++ b/yass/src/cli/cli_connection.cpp @@ -299,9 +299,11 @@ bool CliConnection::OnEndStream(StreamId stream_id) { bool CliConnection::OnCloseStream(StreamId stream_id, http2::adapter::Http2ErrorCode error_code) { if (stream_id == 0 || stream_id == stream_id_) { +#ifdef HAVE_NGHTTP2 if (stream_id_) { adapter_->RemoveStream(stream_id_); } +#endif data_frame_ = nullptr; stream_id_ = 0; } diff --git a/yass/src/gtk/.gitignore b/yass/src/gtk/.gitignore new file mode 100644 index 0000000000..3c7783e3f2 --- /dev/null +++ b/yass/src/gtk/.gitignore @@ -0,0 +1,2 @@ +/messages.po +/messages.po.tmp diff --git a/yass/src/gtk/Makefile b/yass/src/gtk/Makefile new file mode 100644 index 0000000000..b83c08dd86 --- /dev/null +++ b/yass/src/gtk/Makefile @@ -0,0 +1,21 @@ +SRC := $(wildcard *.cpp) +TMP := messages.po +MERGED_TMP := messages.po.tmp + +all: yass_en.po yass_zh_CN.po + +$(TMP): $(SRC) + xgettext -k_ -o $@ $^ + sed -i s/CHARSET/UTF-8/g $@ + +yass_en.po: $(TMP) + msgmerge -N --previous $@ $< > $(MERGED_TMP) + mv -f $(MERGED_TMP) $@ + +yass_zh_CN.po: $(TMP) + msgmerge -N --previous $@ $< > $(MERGED_TMP) + mv -f $(MERGED_TMP) $@ + +.PHONY: clean +clean: + -rm -f $(TMP) $(MERGED_TMP) diff --git a/yass/src/gtk/README.md b/yass/src/gtk/README.md deleted file mode 100644 index a0b84071d5..0000000000 --- a/yass/src/gtk/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update po files -xgettext -k_ -o yass.po option_dialog.cpp yass_window.cpp yass.cpp diff --git a/yass/src/gtk/yass_en.po b/yass/src/gtk/yass_en.po index 431c953cba..6c8f8b05c2 100644 --- a/yass/src/gtk/yass_en.po +++ b/yass/src/gtk/yass_en.po @@ -1,174 +1,174 @@ # Yet Another Shadow Socket. -# Copyright (C) 2023 Chilledheart +# Copyright (C) 2023-2024 Chilledheart # This file is distributed under the same license as the yass package. -# Keyue Hu , 2023. +# Chilledheart , 2024. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-24 14:35+0800\n" +"POT-Creation-Date: 2024-05-14 11:18+0800\n" "PO-Revision-Date: 2023-09-15 11:18+0800\n" -"Last-Translator: Keyue Hu \n" -"Language-Team: Keyue Hu \n" +"Last-Translator: Chilledheart \n" +"Language-Team: Chilledheart \n" "Language: English\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: option_dialog.cpp:33 +#: option_dialog.cpp:30 msgid "TCP keep alive" msgstr "TCP keep alive" -#: option_dialog.cpp:34 +#: option_dialog.cpp:31 msgid "The number of TCP keep-alive probes" msgstr "The number of TCP keep-alive probes" -#: option_dialog.cpp:35 +#: option_dialog.cpp:32 msgid "TCP keep alive after idle" msgstr "TCP keep alive after idle" -#: option_dialog.cpp:36 +#: option_dialog.cpp:33 msgid "TCP keep alive interval" msgstr "TCP keep alive interval" -#: option_dialog.ui:50 +#: option_dialog.cpp:35 msgid "Kyber post-quantum key agreement for TLS" msgstr "Kyber post-quantum key agreement for TLS" -#: option_dialog.cpp:54 +#: option_dialog.cpp:56 msgid "Okay" msgstr "Okay" -#: option_dialog.cpp:57 +#: option_dialog.cpp:59 msgid "Cancel" msgstr "Cancel" -#: yass_window.cpp:78 -msgid "File" -msgstr "File" - -#: yass_window.cpp:79 -msgid "Option..." -msgstr "Option..." - -#: yass_window.cpp:80 -msgid "Exit" -msgstr "Exit" - -#: yass_window.cpp:99 -msgid "Help" -msgstr "Help" - -#: yass_window.cpp:100 -msgid "About..." -msgstr "About..." - -#: yass_window.cpp:113 -msgid "Start" -msgstr "Start" - -#: yass_window.cpp:121 -msgid "Stop" -msgstr "Stop" - -#: yass_window.cpp:149 -msgid "Server Host" -msgstr "Server Host" - -#: yass_window.cpp:149 -msgid "Server SNI" -msgstr "Server SNI" - -#: yass_window.cpp:150 -msgid "Server Port" -msgstr "Server Port" - -#: yass_window.cpp:151 -msgid "Username" -msgstr "Username" - -#: yass_window.cpp:152 -msgid "Password" -msgstr "Password" - -#: yass_window.cpp:153 -msgid "Cipher/Method" -msgstr "Cipher/Method" - -#: yass_window.cpp:154 -msgid "Local Host" -msgstr "Local Host" - -#: yass_window.cpp:155 -msgid "Local Port" -msgstr "Local Port" - -#: yass_window.cpp:156 -msgid "DNS over HTTPS URL" -msgstr "DNS over HTTPS URL" - -#: yass_window.cpp:156 -msgid "DNS over TLS Host" -msgstr "DNS over TLS Host" - -#: yass_window.cpp:156 -msgid "Timeout" -msgstr "Timeout" - -#: yass_window.cpp:157 -msgid "Auto Start" -msgstr "Auto Start" - -#: yass_window.cpp:158 -msgid "System Proxy" -msgstr "System Proxy" - -#: yass_window.cpp:235 -msgid "READY" -msgstr "READY" - -#: yass_window.cpp:330 -msgid " tx rate: " -msgstr " tx rate: " - -#: yass_window.cpp:333 -msgid " rx rate: " -msgstr " rx rate: " - -#: yass_window.cpp:428 -msgid "YASS Option" -msgstr "YASS Option" - -#: yass_window.cpp:439 -msgid "Last Change: " -msgstr "Last Change: " - -#: yass_window.cpp:448 -msgid "Enabled Feature: " -msgstr "Enabled Feature: " - -#: yass_window.cpp:446 -msgid "official-site" -msgstr "official-site" - -#: yass.cpp:253 -msgid "Connecting" -msgstr "Connecting" - -#: yass.cpp:173 +#: yass.cpp:202 msgid "Connected with conns: " msgstr "Connected with conns: " -#: yass.cpp:175 +#: yass.cpp:204 +msgid "Connecting" +msgstr "Connecting" + +#: yass.cpp:206 msgid "Failed to connect due to " msgstr "Failed to connect due to " -#: yass.cpp:253 +#: yass.cpp:208 msgid "Disconnecting" msgstr "Disconnecting" -#: yass.cpp:177 +#: yass.cpp:210 msgid "Disconnected with " msgstr "Disconnected with " + +#: yass_window.cpp:59 +msgid "File" +msgstr "File" + +#: yass_window.cpp:60 +msgid "Option..." +msgstr "Option..." + +#: yass_window.cpp:61 +msgid "Exit" +msgstr "Exit" + +#: yass_window.cpp:78 +msgid "Help" +msgstr "Help" + +#: yass_window.cpp:79 +msgid "About..." +msgstr "About..." + +#: yass_window.cpp:91 +msgid "Start" +msgstr "Start" + +#: yass_window.cpp:99 +msgid "Stop" +msgstr "Stop" + +#: yass_window.cpp:125 +msgid "Server Host" +msgstr "Server Host" + +#: yass_window.cpp:126 +msgid "Server SNI" +msgstr "Server SNI" + +#: yass_window.cpp:127 +msgid "Server Port" +msgstr "Server Port" + +#: yass_window.cpp:128 +msgid "Username" +msgstr "Username" + +#: yass_window.cpp:129 +msgid "Password" +msgstr "Password" + +#: yass_window.cpp:130 +msgid "Cipher/Method" +msgstr "Cipher/Method" + +#: yass_window.cpp:131 +msgid "Local Host" +msgstr "Local Host" + +#: yass_window.cpp:132 +msgid "Local Port" +msgstr "Local Port" + +#: yass_window.cpp:133 +msgid "DNS over HTTPS URL" +msgstr "DNS over HTTPS URL" + +#: yass_window.cpp:134 +msgid "DNS over TLS Host" +msgstr "DNS over TLS Host" + +#: yass_window.cpp:135 +msgid "Timeout" +msgstr "Timeout" + +#: yass_window.cpp:136 +msgid "Auto Start" +msgstr "Auto Start" + +#: yass_window.cpp:137 +msgid "System Proxy" +msgstr "System Proxy" + +#: yass_window.cpp:218 +msgid "READY" +msgstr "READY" + +#: yass_window.cpp:341 +msgid " tx rate: " +msgstr " tx rate: " + +#: yass_window.cpp:344 +msgid " rx rate: " +msgstr " rx rate: " + +#: yass_window.cpp:451 +msgid "YASS Option" +msgstr "YASS Option" + +#: yass_window.cpp:462 +msgid "Last Change: " +msgstr "Last Change: " + +#: yass_window.cpp:465 +msgid "Enabled Feature: " +msgstr "Enabled Feature: " + +#: yass_window.cpp:474 +msgid "official-site" +msgstr "official-site" diff --git a/yass/src/gtk/yass_zh_CN.po b/yass/src/gtk/yass_zh_CN.po index 3411971e4d..d2d9175799 100644 --- a/yass/src/gtk/yass_zh_CN.po +++ b/yass/src/gtk/yass_zh_CN.po @@ -1,175 +1,175 @@ # Yet Another Shadow Socket. -# Copyright (C) 2023 Chilledheart +# Copyright (C) 2023-2024 Chilledheart # This file is distributed under the same license as the yass package. -# Keyue Hu , 2023. +# Chilledheart , 2024. # msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-24 14:35+0800\n" +"POT-Creation-Date: 2024-05-14 11:18+0800\n" "PO-Revision-Date: 2023-09-15 11:26+0800\n" -"Language-Team: Keyue Hu \n" +"Last-Translator: Chilledheart \n" +"Language-Team: Chilledheart \n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.2.4\n" -"Last-Translator: \n" "Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_CN\n" -#: option_dialog.cpp:33 +#: option_dialog.cpp:30 msgid "TCP keep alive" msgstr "TCP 保活" -#: option_dialog.cpp:34 +#: option_dialog.cpp:31 msgid "The number of TCP keep-alive probes" msgstr "TCP 保活测量数" -#: option_dialog.cpp:35 +#: option_dialog.cpp:32 msgid "TCP keep alive after idle" msgstr "TCP 在闲置以后的保活次数" -#: option_dialog.cpp:36 +#: option_dialog.cpp:33 msgid "TCP keep alive interval" msgstr "TCP 保活间隔" -#: option_dialog.ui:50 +#: option_dialog.cpp:35 msgid "Kyber post-quantum key agreement for TLS" msgstr "TLS的Kyber后量子密钥协商" -#: option_dialog.cpp:54 +#: option_dialog.cpp:56 msgid "Okay" msgstr "确认" -#: option_dialog.cpp:57 +#: option_dialog.cpp:59 msgid "Cancel" msgstr "取消" -#: yass_window.cpp:78 -msgid "File" -msgstr "文件" - -#: yass_window.cpp:79 -msgid "Option..." -msgstr "选项..." - -#: yass_window.cpp:80 -msgid "Exit" -msgstr "退出" - -#: yass_window.cpp:99 -msgid "Help" -msgstr "帮助" - -#: yass_window.cpp:100 -msgid "About..." -msgstr "关于..." - -#: yass_window.cpp:113 -msgid "Start" -msgstr "启动" - -#: yass_window.cpp:121 -msgid "Stop" -msgstr "停止" - -#: yass_window.cpp:149 -msgid "Server Host" -msgstr "服务器域名" - -#: yass_window.cpp:149 -msgid "Server SNI" -msgstr "服务器名称指示" - -#: yass_window.cpp:150 -msgid "Server Port" -msgstr "服务器端口号" - -#: yass_window.cpp:151 -msgid "Username" -msgstr "用户名" - -#: yass_window.cpp:152 -msgid "Password" -msgstr "密码" - -#: yass_window.cpp:153 -msgid "Cipher/Method" -msgstr "加密方式" - -#: yass_window.cpp:154 -msgid "Local Host" -msgstr "本地域名" - -#: yass_window.cpp:155 -msgid "Local Port" -msgstr "本地端口号" - -#: yass_window.cpp:156 -msgid "DNS over HTTPS URL" -msgstr "基于 HTTPS 的 DNS (DoH) URL" - -#: yass_window.cpp:156 -msgid "DNS over TLS Host" -msgstr "基于 TLS 的 DNS (DoT) 域名" - -#: yass_window.cpp:156 -msgid "Timeout" -msgstr "超时时间" - -#: yass_window.cpp:157 -msgid "Auto Start" -msgstr "随系统自启动" - -#: yass_window.cpp:158 -msgid "System Proxy" -msgstr "系统代理" - -#: yass_window.cpp:235 -msgid "READY" -msgstr "就绪" - -#: yass_window.cpp:330 -msgid " tx rate: " -msgstr " 上传速率: " - -#: yass_window.cpp:333 -msgid " rx rate: " -msgstr " 下载速率: " - -#: yass_window.cpp:428 -msgid "YASS Option" -msgstr "YASS 选项" - -#: yass_window.cpp:439 -msgid "Last Change: " -msgstr "最后改动: " - -#: yass_window.cpp:448 -msgid "Enabled Feature: " -msgstr "启用功能: " - -#: yass_window.cpp:446 -msgid "official-site" -msgstr "官方网站" - -#: yass.cpp:253 -msgid "Connecting" -msgstr "连接中" - -#: yass.cpp:173 +#: yass.cpp:202 msgid "Connected with conns: " msgstr "已产生连接: " -#: yass.cpp:175 +#: yass.cpp:204 +msgid "Connecting" +msgstr "连接中" + +#: yass.cpp:206 msgid "Failed to connect due to " msgstr "无法连接因为 " -#: yass.cpp:253 +#: yass.cpp:208 msgid "Disconnecting" msgstr "断开连接中" -#: yass.cpp:177 +#: yass.cpp:210 msgid "Disconnected with " msgstr "断开连接于服务器 " + +#: yass_window.cpp:59 +msgid "File" +msgstr "文件" + +#: yass_window.cpp:60 +msgid "Option..." +msgstr "选项..." + +#: yass_window.cpp:61 +msgid "Exit" +msgstr "退出" + +#: yass_window.cpp:78 +msgid "Help" +msgstr "帮助" + +#: yass_window.cpp:79 +msgid "About..." +msgstr "关于..." + +#: yass_window.cpp:91 +msgid "Start" +msgstr "启动" + +#: yass_window.cpp:99 +msgid "Stop" +msgstr "停止" + +#: yass_window.cpp:125 +msgid "Server Host" +msgstr "服务器域名" + +#: yass_window.cpp:126 +msgid "Server SNI" +msgstr "服务器名称指示" + +#: yass_window.cpp:127 +msgid "Server Port" +msgstr "服务器端口号" + +#: yass_window.cpp:128 +msgid "Username" +msgstr "用户名" + +#: yass_window.cpp:129 +msgid "Password" +msgstr "密码" + +#: yass_window.cpp:130 +msgid "Cipher/Method" +msgstr "加密方式" + +#: yass_window.cpp:131 +msgid "Local Host" +msgstr "本地域名" + +#: yass_window.cpp:132 +msgid "Local Port" +msgstr "本地端口号" + +#: yass_window.cpp:133 +msgid "DNS over HTTPS URL" +msgstr "基于 HTTPS 的 DNS (DoH) URL" + +#: yass_window.cpp:134 +msgid "DNS over TLS Host" +msgstr "基于 TLS 的 DNS (DoT) 域名" + +#: yass_window.cpp:135 +msgid "Timeout" +msgstr "超时时间" + +#: yass_window.cpp:136 +msgid "Auto Start" +msgstr "随系统自启动" + +#: yass_window.cpp:137 +msgid "System Proxy" +msgstr "系统代理" + +#: yass_window.cpp:218 +msgid "READY" +msgstr "就绪" + +#: yass_window.cpp:341 +msgid " tx rate: " +msgstr " 上传速率: " + +#: yass_window.cpp:344 +msgid " rx rate: " +msgstr " 下载速率: " + +#: yass_window.cpp:451 +msgid "YASS Option" +msgstr "YASS 选项" + +#: yass_window.cpp:462 +msgid "Last Change: " +msgstr "最后改动: " + +#: yass_window.cpp:465 +msgid "Enabled Feature: " +msgstr "启用功能: " + +#: yass_window.cpp:474 +msgid "official-site" +msgstr "官方网站" diff --git a/yass/src/gtk4/.gitignore b/yass/src/gtk4/.gitignore new file mode 100644 index 0000000000..3c7783e3f2 --- /dev/null +++ b/yass/src/gtk4/.gitignore @@ -0,0 +1,2 @@ +/messages.po +/messages.po.tmp diff --git a/yass/src/gtk4/Makefile b/yass/src/gtk4/Makefile new file mode 100644 index 0000000000..3b43aed9d9 --- /dev/null +++ b/yass/src/gtk4/Makefile @@ -0,0 +1,21 @@ +SRC := $(wildcard *.cpp) $(wildcard *.ui) +TMP := messages.po +MERGED_TMP := messages.po.tmp + +all: yass_en.po yass_zh_CN.po + +$(TMP): $(SRC) + xgettext -k_ -o $@ $^ + sed -i s/CHARSET/UTF-8/g $@ + +yass_en.po: $(TMP) + msgmerge -N --previous $@ $< > $(MERGED_TMP) + mv -f $(MERGED_TMP) $@ + +yass_zh_CN.po: $(TMP) + msgmerge -N --previous $@ $< > $(MERGED_TMP) + mv -f $(MERGED_TMP) $@ + +.PHONY: clean +clean: + -rm -f $(TMP) $(MERGED_TMP) diff --git a/yass/src/gtk4/README.md b/yass/src/gtk4/README.md deleted file mode 100644 index 90a63cf2bf..0000000000 --- a/yass/src/gtk4/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Update po files -xgettext -k_ -o yass.po option_dialog.ui yass_window.ui menu.ui yass.cpp yass_window.cpp option_dialog.cpp diff --git a/yass/src/gtk4/yass.cpp b/yass/src/gtk4/yass.cpp index cb7ed69d41..c11f4daa2c 100644 --- a/yass/src/gtk4/yass.cpp +++ b/yass/src/gtk4/yass.cpp @@ -362,7 +362,7 @@ void YASSApp::OnAbout() { gtk_about_dialog_set_authors(about_dialog, authors); std::string comments = _("Last Change: "); comments += YASS_APP_LAST_CHANGE; - comments += _("\n"); + comments += "\n"; comments += _("Enabled Feature: "); comments += YASS_APP_FEATURES; gtk_about_dialog_set_comments(about_dialog, comments.c_str()); diff --git a/yass/src/gtk4/yass_en.po b/yass/src/gtk4/yass_en.po index b261ef7543..73d72042bd 100644 --- a/yass/src/gtk4/yass_en.po +++ b/yass/src/gtk4/yass_en.po @@ -1,22 +1,90 @@ # Yet Another Shadow Socket. -# Copyright (C) 2023 Chilledheart +# Copyright (C) 2023-2024 Chilledheart # This file is distributed under the same license as the yass package. -# Keyue Hu , 2023. +# Chilledheart , 2024. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-24 14:35+0800\n" +"POT-Creation-Date: 2024-05-14 11:19+0800\n" "PO-Revision-Date: 2023-05-24 14:35+0800\n" -"Last-Translator: Keyue Hu \n" -"Language-Team: Keyue Hu \n" +"Last-Translator: Chilledheart \n" +"Language-Team: Chilledheart \n" "Language: English\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: yass.cpp:245 +msgid "Connected with conns: " +msgstr "Connected with conns: " + +#: yass.cpp:247 +msgid "Connecting" +msgstr "Connecting" + +#: yass.cpp:249 +msgid "Failed to connect due to " +msgstr "Failed to connect due to " + +#: yass.cpp:251 +msgid "Disconnecting" +msgstr "Disconnecting" + +#: yass.cpp:253 +msgid "Disconnected with " +msgstr "Disconnected with " + +#: yass.cpp:363 +msgid "Last Change: " +msgstr "Last Change: " + +#: yass.cpp:366 +msgid "Enabled Feature: " +msgstr "Enabled Feature: " + +#: yass.cpp:375 +msgid "official-site" +msgstr "official-site" + +#: yass.cpp:381 +msgid "YASS Option" +msgstr "YASS Option" + +#: yass_window.cpp:145 +msgid "READY" +msgstr "READY" + +#: yass_window.cpp:258 +msgid " tx rate: " +msgstr " tx rate: " + +#: yass_window.cpp:261 +msgid " rx rate: " +msgstr " rx rate: " + +#: yass_window.cpp:295 +msgid "Start Failed" +msgstr "Start Failed" + +#: yass_window.cpp:296 +msgid "OK" +msgstr "OK" + +#: menu.ui:6 +msgid "_Option" +msgstr "Option" + +#: menu.ui:12 +msgid "_About" +msgstr "About" + +#: menu.ui:18 +msgid "_Quit" +msgstr "Quit" + #: option_dialog.ui:4 msgid "Option" msgstr "Option" @@ -37,15 +105,15 @@ msgstr "TCP keep alive after idle:" msgid "TCP keep alive interval:" msgstr "TCP keep alive interval:" -#: option_dialog.ui:50 +#: option_dialog.ui:60 msgid "Kyber post-quantum key agreement for TLS:" msgstr "Kyber post-quantum key agreement for TLS:" -#: option_dialog.ui:92 +#: option_dialog.ui:110 msgid "Okay" msgstr "Okay" -#: option_dialog.ui:101 +#: option_dialog.ui:119 msgid "Cancel" msgstr "Cancel" @@ -57,126 +125,58 @@ msgstr "Yet Another Shadow Socket" msgid "Server Host:" msgstr "Server Host:" -#: yass_window.ui:31 +#: yass_window.ui:41 msgid "Server SNI:" msgstr "Server SNI:" -#: yass_window.ui:41 +#: yass_window.ui:51 msgid "Server Port:" msgstr "Server Port:" -#: yass_window.ui:51 +#: yass_window.ui:61 msgid "Username:" msgstr "Username:" -#: yass_window.ui:61 +#: yass_window.ui:71 msgid "Password:" msgstr "Password:" -#: yass_window.ui:71 +#: yass_window.ui:81 msgid "Cipher/Method:" msgstr "Cipher/Method:" -#: yass_window.ui:81 +#: yass_window.ui:91 msgid "Local Host:" msgstr "Local Host:" -#: yass_window.ui:91 +#: yass_window.ui:101 msgid "Local Port:" msgstr "Local Port:" -#: yass_window.ui:101 +#: yass_window.ui:111 msgid "DNS over HTTPS URL:" msgstr "DNS over HTTPS URL:" -#: yass_window.cpp:156 +#: yass_window.ui:121 msgid "DNS over TLS Host:" msgstr "DNS over TLS Host:" -#: yass_window.cpp:298 -msgid "Start Failed" -msgstr "Start Failed" - -#: yass_window.cpp:298 -msgid "OK" -msgstr "OK" - -#: yass_window.ui:101 +#: yass_window.ui:131 msgid "Timeout:" msgstr "Timeout:" -#: yass_window.ui:111 +#: yass_window.ui:141 msgid "Auto Start:" msgstr "Auto Start:" -#: yass_window.ui:121 +#: yass_window.ui:151 msgid "System Proxy:" msgstr "System Proxy:" -#: yass_window.ui:211 +#: yass_window.ui:265 msgid "Start" msgstr "Start" -#: yass_window.ui:220 +#: yass_window.ui:274 msgid "Stop" msgstr "Stop" - -#: menu.ui:6 -msgid "_Option" -msgstr "Option" - -#: menu.ui:12 -msgid "_About" -msgstr "About" - -#: menu.ui:18 -msgid "_Quit" -msgstr "Quit" - -#: yass.cpp:253 -msgid "Connecting" -msgstr "Connecting" - -#: yass.cpp:253 -msgid "Connected with conns: " -msgstr "Connected with conns: " - -#: yass.cpp:255 -msgid "Failed to connect due to " -msgstr "Failed to connect due to " - -#: yass.cpp:253 -msgid "Disconnecting" -msgstr "Disconnecting" - -#: yass.cpp:257 -msgid "Disconnected with " -msgstr "Disconnected with " - -#: yass.cpp:374 -msgid "Last Change: " -msgstr "Last Change: " - -#: yass.cpp:392 -msgid "Enabled Feature: " -msgstr "Enabled Feature: " - -#: yass.cpp:383 -msgid "official-site" -msgstr "official-site" - -#: yass.cpp:389 -msgid "YASS Option" -msgstr "YASS Option" - -#: yass_window.cpp:169 -msgid "READY" -msgstr "READY" - -#: yass_window.cpp:261 -msgid " tx rate: " -msgstr " tx rate: " - -#: yass_window.cpp:264 -msgid " rx rate: " -msgstr " rx rate: " diff --git a/yass/src/gtk4/yass_zh_CN.po b/yass/src/gtk4/yass_zh_CN.po index b64abbb29d..84270feca9 100644 --- a/yass/src/gtk4/yass_zh_CN.po +++ b/yass/src/gtk4/yass_zh_CN.po @@ -1,22 +1,90 @@ # Yet Another Shadow Socket. -# Copyright (C) 2023 Chilledheart +# Copyright (C) 2023-2024 Chilledheart # This file is distributed under the same license as the yass package. -# Keyue Hu , 2023. +# Chilledheart , 2024. # msgid "" msgstr "" "Project-Id-Version: 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-24 14:35+0800\n" +"POT-Creation-Date: 2024-05-14 11:19+0800\n" "PO-Revision-Date: 2023-09-15 11:28+0800\n" -"Language-Team: Keyue Hu \n" +"Last-Translator: Chilledheart \n" +"Language-Team: Chilledheart \n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.2.4\n" -"Last-Translator: \n" "Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_CN\n" + +#: yass.cpp:245 +msgid "Connected with conns: " +msgstr "已产生连接: " + +#: yass.cpp:247 +msgid "Connecting" +msgstr "连接中" + +#: yass.cpp:249 +msgid "Failed to connect due to " +msgstr "无法连接因为 " + +#: yass.cpp:251 +msgid "Disconnecting" +msgstr "断开连接中" + +#: yass.cpp:253 +msgid "Disconnected with " +msgstr "断开连接于服务器 " + +#: yass.cpp:363 +msgid "Last Change: " +msgstr "最后改动: " + +#: yass.cpp:366 +msgid "Enabled Feature: " +msgstr "启用功能: " + +#: yass.cpp:375 +msgid "official-site" +msgstr "官方网站" + +#: yass.cpp:381 +msgid "YASS Option" +msgstr "YASS 选项" + +#: yass_window.cpp:145 +msgid "READY" +msgstr "就绪" + +#: yass_window.cpp:258 +msgid " tx rate: " +msgstr " 上传速率: " + +#: yass_window.cpp:261 +msgid " rx rate: " +msgstr " 下载速率: " + +#: yass_window.cpp:295 +msgid "Start Failed" +msgstr "启动失败" + +#: yass_window.cpp:296 +msgid "OK" +msgstr "确认" + +#: menu.ui:6 +msgid "_Option" +msgstr "选项" + +#: menu.ui:12 +msgid "_About" +msgstr "关于" + +#: menu.ui:18 +msgid "_Quit" +msgstr "退出" #: option_dialog.ui:4 msgid "Option" @@ -38,15 +106,15 @@ msgstr "TCP 在闲置以后的保活次数:" msgid "TCP keep alive interval:" msgstr "TCP 保活间隔:" -#: option_dialog.ui:50 +#: option_dialog.ui:60 msgid "Kyber post-quantum key agreement for TLS:" msgstr "TLS的Kyber后量子密钥协商:" -#: option_dialog.ui:92 +#: option_dialog.ui:110 msgid "Okay" msgstr "确认" -#: option_dialog.ui:101 +#: option_dialog.ui:119 msgid "Cancel" msgstr "取消" @@ -58,126 +126,58 @@ msgstr "YASS" msgid "Server Host:" msgstr "服务器域名:" -#: yass_window.ui:31 +#: yass_window.ui:41 msgid "Server SNI:" msgstr "服务器名称指示:" -#: yass_window.ui:41 +#: yass_window.ui:51 msgid "Server Port:" msgstr "服务器端口号:" -#: yass_window.ui:51 +#: yass_window.ui:61 msgid "Username:" msgstr "用户名:" -#: yass_window.ui:61 +#: yass_window.ui:71 msgid "Password:" msgstr "密码:" -#: yass_window.ui:71 +#: yass_window.ui:81 msgid "Cipher/Method:" msgstr "加密方式:" -#: yass_window.ui:81 +#: yass_window.ui:91 msgid "Local Host:" msgstr "本地域名:" -#: yass_window.ui:91 +#: yass_window.ui:101 msgid "Local Port:" msgstr "本地端口号:" -#: yass_window.ui:101 +#: yass_window.ui:111 msgid "DNS over HTTPS URL:" msgstr "基于 HTTPS 的 DNS (DoH) URL:" -#: yass_window.cpp:156 +#: yass_window.ui:121 msgid "DNS over TLS Host:" msgstr "基于 TLS 的 DNS (DoT) 域名:" -#: yass_window.cpp:298 -msgid "Start Failed" -msgstr "启动失败" - -#: yass_window.cpp:298 -msgid "OK" -msgstr "确认" - -#: yass_window.ui:101 +#: yass_window.ui:131 msgid "Timeout:" msgstr "超时时间:" -#: yass_window.ui:111 +#: yass_window.ui:141 msgid "Auto Start:" msgstr "随系统自启动:" -#: yass_window.ui:121 +#: yass_window.ui:151 msgid "System Proxy:" msgstr "系统代理:" -#: yass_window.ui:211 +#: yass_window.ui:265 msgid "Start" msgstr "启动" -#: yass_window.ui:220 +#: yass_window.ui:274 msgid "Stop" msgstr "停止" - -#: menu.ui:6 -msgid "_Option" -msgstr "选项" - -#: menu.ui:12 -msgid "_About" -msgstr "关于" - -#: menu.ui:18 -msgid "_Quit" -msgstr "退出" - -#: yass.cpp:253 -msgid "Connecting" -msgstr "连接中" - -#: yass.cpp:253 -msgid "Connected with conns: " -msgstr "已产生连接: " - -#: yass.cpp:255 -msgid "Failed to connect due to " -msgstr "无法连接因为 " - -#: yass.cpp:253 -msgid "Disconnecting" -msgstr "断开连接中" - -#: yass.cpp:257 -msgid "Disconnected with " -msgstr "断开连接于服务器 " - -#: yass.cpp:374 -msgid "Last Change: " -msgstr "最后改动: " - -#: yass.cpp:392 -msgid "Enabled Feature: " -msgstr "启用功能: " - -#: yass.cpp:383 -msgid "official-site" -msgstr "官方网站" - -#: yass.cpp:389 -msgid "YASS Option" -msgstr "YASS 选项" - -#: yass_window.cpp:169 -msgid "READY" -msgstr "就绪" - -#: yass_window.cpp:261 -msgid " tx rate: " -msgstr " 上传速率: " - -#: yass_window.cpp:264 -msgid " rx rate: " -msgstr " 下载速率: " diff --git a/yass/src/server/server_connection.cpp b/yass/src/server/server_connection.cpp index 4186806ba8..68fd25a795 100644 --- a/yass/src/server/server_connection.cpp +++ b/yass/src/server/server_connection.cpp @@ -383,9 +383,11 @@ bool ServerConnection::OnEndStream(StreamId stream_id) { bool ServerConnection::OnCloseStream(StreamId stream_id, http2::adapter::Http2ErrorCode error_code) { if (stream_id == 0 || stream_id == stream_id_) { +#ifdef HAVE_NGHTTP2 if (stream_id_) { adapter_->RemoveStream(stream_id_); } +#endif data_frame_ = nullptr; stream_id_ = 0; } diff --git a/yass/third_party/googletest/googletest/include/gtest/gtest-death-test.h b/yass/third_party/googletest/googletest/include/gtest/gtest-death-test.h index 08fef8c7d3..3c61909726 100644 --- a/yass/third_party/googletest/googletest/include/gtest/gtest-death-test.h +++ b/yass/third_party/googletest/googletest/include/gtest/gtest-death-test.h @@ -293,8 +293,8 @@ class GTEST_API_ KilledBySignal { // statement is compiled but not executed, to ensure that // EXPECT_DEATH_IF_SUPPORTED compiles with a certain // parameter if and only if EXPECT_DEATH compiles with it. -// regex - A regex that a macro such as EXPECT_DEATH would use to test -// the output of statement. This parameter has to be +// regex_or_matcher - A regex that a macro such as EXPECT_DEATH would use +// to test the output of statement. This parameter has to be // compiled but not evaluated by this macro, to ensure that // this macro only accepts expressions that a macro such as // EXPECT_DEATH would accept. @@ -311,13 +311,13 @@ class GTEST_API_ KilledBySignal { // statement unconditionally returns or throws. The Message constructor at // the end allows the syntax of streaming additional messages into the // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. -#define GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, terminator) \ +#define GTEST_UNSUPPORTED_DEATH_TEST(statement, regex_or_matcher, terminator) \ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ if (::testing::internal::AlwaysTrue()) { \ GTEST_LOG_(WARNING) << "Death tests are not supported on this platform.\n" \ << "Statement '" #statement "' cannot be verified."; \ } else if (::testing::internal::AlwaysFalse()) { \ - ::testing::internal::RE::PartialMatch(".*", (regex)); \ + ::testing::internal::MakeDeathTestMatcher(regex_or_matcher); \ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ terminator; \ } else \ diff --git a/yass/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h b/yass/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h index 3925e36baf..b363259ec6 100644 --- a/yass/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +++ b/yass/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h @@ -46,6 +46,7 @@ #include "gtest/gtest-matchers.h" #include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-port.h" GTEST_DECLARE_string_(internal_run_death_test); @@ -55,6 +56,28 @@ namespace internal { // Name of the flag (needed for parsing Google Test flag). const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; +// A string passed to EXPECT_DEATH (etc.) is caught by one of these overloads +// and interpreted as a regex (rather than an Eq matcher) for legacy +// compatibility. +inline Matcher MakeDeathTestMatcher( + ::testing::internal::RE regex) { + return ContainsRegex(regex.pattern()); +} +inline Matcher MakeDeathTestMatcher(const char* regex) { + return ContainsRegex(regex); +} +inline Matcher MakeDeathTestMatcher( + const ::std::string& regex) { + return ContainsRegex(regex); +} + +// If a Matcher is passed to EXPECT_DEATH (etc.), it's +// used directly. +inline Matcher MakeDeathTestMatcher( + Matcher matcher) { + return matcher; +} + #ifdef GTEST_HAS_DEATH_TEST GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251 \ @@ -168,28 +191,6 @@ class DefaultDeathTestFactory : public DeathTestFactory { // by a signal, or exited normally with a nonzero exit code. GTEST_API_ bool ExitedUnsuccessfully(int exit_status); -// A string passed to EXPECT_DEATH (etc.) is caught by one of these overloads -// and interpreted as a regex (rather than an Eq matcher) for legacy -// compatibility. -inline Matcher MakeDeathTestMatcher( - ::testing::internal::RE regex) { - return ContainsRegex(regex.pattern()); -} -inline Matcher MakeDeathTestMatcher(const char* regex) { - return ContainsRegex(regex); -} -inline Matcher MakeDeathTestMatcher( - const ::std::string& regex) { - return ContainsRegex(regex); -} - -// If a Matcher is passed to EXPECT_DEATH (etc.), it's -// used directly. -inline Matcher MakeDeathTestMatcher( - Matcher matcher) { - return matcher; -} - // Traps C++ exceptions escaping statement and reports them as test // failures. Note that trapping SEH exceptions is not implemented here. #if GTEST_HAS_EXCEPTIONS diff --git a/yass/third_party/nghttp2/.github/workflows/build.yml b/yass/third_party/nghttp2/.github/workflows/build.yml index 7728f0b722..2b2127354c 100644 --- a/yass/third_party/nghttp2/.github/workflows/build.yml +++ b/yass/third_party/nghttp2/.github/workflows/build.yml @@ -8,16 +8,16 @@ env: LIBBPF_VERSION: v1.3.0 OPENSSL1_VERSION: 1_1_1w+quic OPENSSL3_VERSION: 3.1.5+quic - BORINGSSL_VERSION: fae0964b3d44e94ca2a2d21f86e61dabe683d130 - AWSLC_VERSION: v1.23.0 - NGHTTP3_VERSION: v1.2.0 - NGTCP2_VERSION: v1.4.0 + BORINGSSL_VERSION: 6ab7c1482bf4cdc91c87bc512aaf68ffb18975ec + AWSLC_VERSION: v1.26.0 + NGHTTP3_VERSION: v1.3.0 + NGTCP2_VERSION: v1.5.0 jobs: build-cache: strategy: matrix: - os: [ubuntu-22.04, macos-12] + os: [ubuntu-22.04, macos-13, macos-14] runs-on: ${{ matrix.os }} @@ -30,19 +30,19 @@ jobs: if: runner.os == 'Linux' with: path: libbpf/build - key: ${{ runner.os }}-libbpf-${{ env.LIBBPF_VERSION }} + key: ${{ matrix.os }}-libbpf-${{ env.LIBBPF_VERSION }} - name: Restore OpenSSL v1.1.1 cache id: cache-openssl1 uses: actions/cache@v4 with: path: openssl1/build - key: ${{ runner.os }}-openssl-${{ env.OPENSSL1_VERSION }} + key: ${{ matrix.os }}-openssl-${{ env.OPENSSL1_VERSION }} - name: Restore OpenSSL v3.x cache id: cache-openssl3 uses: actions/cache@v4 with: path: openssl3/build - key: ${{ runner.os }}-openssl-${{ env.OPENSSL3_VERSION }} + key: ${{ matrix.os }}-openssl-${{ env.OPENSSL3_VERSION }} - name: Restore BoringSSL cache id: cache-boringssl uses: actions/cache@v4 @@ -51,7 +51,7 @@ jobs: boringssl/build/crypto/libcrypto.a boringssl/build/ssl/libssl.a boringssl/include - key: ${{ runner.os }}-boringssl-${{ env.BORINGSSL_VERSION }} + key: ${{ matrix.os }}-boringssl-${{ env.BORINGSSL_VERSION }} - name: Restore aws-lc cache id: cache-awslc uses: actions/cache@v4 @@ -60,25 +60,25 @@ jobs: aws-lc/build/crypto/libcrypto.a aws-lc/build/ssl/libssl.a aws-lc/include - key: ${{ runner.os }}-awslc-${{ env.AWSLC_VERSION }} + key: ${{ matrix.os }}-awslc-${{ env.AWSLC_VERSION }} - name: Restore nghttp3 cache id: cache-nghttp3 uses: actions/cache@v4 with: path: nghttp3/build - key: ${{ runner.os }}-nghttp3-${{ env.NGHTTP3_VERSION }} + key: ${{ matrix.os }}-nghttp3-${{ env.NGHTTP3_VERSION }} - name: Restore ngtcp2 + quictls/openssl v1.1.1 cache id: cache-ngtcp2-openssl1 uses: actions/cache@v4 with: path: ngtcp2-openssl1/build - key: ${{ runner.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL1_VERSION }} + key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL1_VERSION }} - name: Restore ngtcp2 + quictls/openssl v3.x cache id: cache-ngtcp2-openssl3 uses: actions/cache@v4 with: path: ngtcp2-openssl3/build - key: ${{ runner.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL3_VERSION }} + key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL3_VERSION }} - id: settings if: | (steps.cache-libbpf.outputs.cache-hit != 'true' && runner.os == 'Linux') || @@ -198,33 +198,50 @@ jobs: strategy: matrix: - os: [ubuntu-22.04, macos-12] + os: [ubuntu-22.04, macos-13, macos-14] compiler: [gcc, clang] buildtool: [autotools, cmake] http3: [http3, no-http3] openssl: [openssl1, openssl3, boringssl, awslc] exclude: - - os: macos-12 + - os: macos-13 + openssl: openssl3 + - os: macos-14 openssl: openssl3 - http3: no-http3 openssl: openssl3 - - os: macos-12 + - os: macos-13 + compiler: gcc + - os: macos-14 compiler: gcc - # disable macos cmake because of include path issue - os: macos-12 + os: macos-13 buildtool: cmake - - os: macos-12 + - # disable macos cmake because of include path issue + os: macos-14 + buildtool: cmake + - os: macos-13 + openssl: boringssl + - os: macos-14 openssl: boringssl - openssl: boringssl buildtool: cmake - openssl: boringssl compiler: gcc - - os: macos-12 + - os: macos-13 + openssl: awslc + - os: macos-14 openssl: awslc - openssl: awslc buildtool: cmake - openssl: awslc compiler: gcc + include: + - os: ubuntu-22.04 + compiler: clang + buildtool: distcheck + http3: http3 + openssl: awslc runs-on: ${{ matrix.os }} @@ -294,6 +311,8 @@ jobs: run: | echo 'CC=gcc-12' >> $GITHUB_ENV echo 'CXX=g++-12' >> $GITHUB_ENV + # g++-12 is known to produce false positive warnings. + echo 'CXXFLAGS=-Wno-restrict' >> $GITHUB_ENV - name: Setup gcc (MacOS) if: runner.os == 'macOS' && matrix.compiler == 'gcc' run: | @@ -304,7 +323,7 @@ jobs: if: matrix.http3 == 'http3' && matrix.compiler == 'clang' && runner.os == 'Linux' with: path: libbpf/build - key: ${{ runner.os }}-libbpf-${{ env.LIBBPF_VERSION }} + key: ${{ matrix.os }}-libbpf-${{ env.LIBBPF_VERSION }} fail-on-cache-miss: true - name: Set libbpf variables if: matrix.http3 == 'http3' && matrix.compiler == 'clang' && runner.os == 'Linux' @@ -316,19 +335,27 @@ jobs: echo 'EXTRA_AUTOTOOLS_OPTS='"$EXTRA_AUTOTOOLS_OPTS" >> $GITHUB_ENV echo 'EXTRA_CMAKE_OPTS='"$EXTRA_CMAKE_OPTS" >> $GITHUB_ENV + - name: Setup libev variables + if: matrix.os == 'macos-14' + run: | + LIBEV_CFLAGS="-I/opt/homebrew/Cellar/libev/4.33/include" + LIBEV_LIBS="-L/opt/homebrew/Cellar/libev/4.33/lib -lev" + + echo 'LIBEV_CFLAGS='"$LIBEV_CFLAGS" >> $GITHUB_ENV + echo 'LIBEV_LIBS='"$LIBEV_LIBS" >> $GITHUB_ENV - name: Restore quictls/openssl v1.1.1 cache uses: actions/cache/restore@v4 - if: matrix.http3 == 'http3' && matrix.openssl == 'openssl1' + if: matrix.openssl == 'openssl1' with: path: openssl1/build - key: ${{ runner.os }}-openssl-${{ env.OPENSSL1_VERSION }} + key: ${{ matrix.os }}-openssl-${{ env.OPENSSL1_VERSION }} fail-on-cache-miss: true - name: Restore quictls/openssl v3.x cache uses: actions/cache/restore@v4 - if: matrix.http3 == 'http3' && matrix.openssl == 'openssl3' + if: matrix.openssl == 'openssl3' with: path: openssl3/build - key: ${{ runner.os }}-openssl-${{ env.OPENSSL3_VERSION }} + key: ${{ matrix.os }}-openssl-${{ env.OPENSSL3_VERSION }} fail-on-cache-miss: true - name: Restore BoringSSL cache uses: actions/cache/restore@v4 @@ -338,7 +365,7 @@ jobs: boringssl/build/crypto/libcrypto.a boringssl/build/ssl/libssl.a boringssl/include - key: ${{ runner.os }}-boringssl-${{ env.BORINGSSL_VERSION }} + key: ${{ matrix.os }}-boringssl-${{ env.BORINGSSL_VERSION }} fail-on-cache-miss: true - name: Restore aws-lc cache uses: actions/cache/restore@v4 @@ -348,7 +375,7 @@ jobs: aws-lc/build/crypto/libcrypto.a aws-lc/build/ssl/libssl.a aws-lc/include - key: ${{ runner.os }}-awslc-${{ env.AWSLC_VERSION }} + key: ${{ matrix.os }}-awslc-${{ env.AWSLC_VERSION }} fail-on-cache-miss: true - name: Set BoringSSL variables if: matrix.openssl == 'boringssl' @@ -383,22 +410,30 @@ jobs: if: matrix.http3 == 'http3' with: path: nghttp3/build - key: ${{ runner.os }}-nghttp3-${{ env.NGHTTP3_VERSION }} + key: ${{ matrix.os }}-nghttp3-${{ env.NGHTTP3_VERSION }} fail-on-cache-miss: true - name: Restore ngtcp2 + quictls/openssl v1.1.1 cache + BoringSSL uses: actions/cache/restore@v4 if: matrix.http3 == 'http3' && (matrix.openssl == 'openssl1' || matrix.openssl == 'boringssl') with: path: ngtcp2-openssl1/build - key: ${{ runner.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL1_VERSION }} + key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL1_VERSION }} fail-on-cache-miss: true - name: Restore ngtcp2 + quictls/openssl v3.x cache + aws-lc uses: actions/cache/restore@v4 if: matrix.http3 == 'http3' && (matrix.openssl == 'openssl3' || matrix.openssl == 'awslc') with: path: ngtcp2-openssl3/build - key: ${{ runner.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL3_VERSION }} + key: ${{ matrix.os }}-ngtcp2-${{ env.NGTCP2_VERSION }}-openssl-${{ env.OPENSSL3_VERSION }} fail-on-cache-miss: true + - name: Setup extra environment variables + if: matrix.http3 == 'no-http3' + run: | + PKG_CONFIG_PATH="$PWD/openssl1/build/lib/pkgconfig:$PWD/openssl3/build/lib/pkgconfig" + LDFLAGS="$LDFLAGS -Wl,-rpath,$PWD/openssl1/build/lib -Wl,-rpath,$PWD/openssl3/build/lib" + + echo 'PKG_CONFIG_PATH='"$PKG_CONFIG_PATH" >> $GITHUB_ENV + echo 'LDFLAGS='"$LDFLAGS" >> $GITHUB_ENV - name: Setup extra environment variables for HTTP/3 if: matrix.http3 == 'http3' run: | @@ -415,55 +450,64 @@ jobs: run: | autoreconf -i ./configure - - name: Configure cmake (Linux) - if: matrix.buildtool == 'cmake' && runner.os == 'Linux' + - name: Make distribution and unpack + if: matrix.buildtool != 'distcheck' run: | make dist VERSION=$(grep PACKAGE_VERSION config.h | cut -d' ' -f3 | tr -d '"') tar xf nghttp2-$VERSION.tar.gz cd nghttp2-$VERSION - echo 'NGHTTP2_CMAKE_DIR='"$PWD" >> $GITHUB_ENV + echo 'NGHTTP2_BUILD_DIR='"$PWD" >> $GITHUB_ENV + - name: Configure cmake (Linux) + if: matrix.buildtool == 'cmake' && runner.os == 'Linux' + run: | + cd $NGHTTP2_BUILD_DIR cmake -DENABLE_WERROR=1 -DWITH_MRUBY=1 -DWITH_NEVERBLEED=1 -DENABLE_APP=1 $EXTRA_CMAKE_OPTS -DCPPFLAGS="$CPPFLAGS" -DLDFLAGS="$LDFLAGS" -DBUILD_STATIC_LIBS=ON -DBUILD_TESTING=ON . - name: Configure cmake (MacOS) if: matrix.buildtool == 'cmake' && runner.os == 'macOS' run: | - make dist - VERSION=$(grep PACKAGE_VERSION config.h | cut -d' ' -f3 | tr -d '"') - tar xf nghttp2-$VERSION.tar.gz - cd nghttp2-$VERSION - echo 'NGHTTP2_CMAKE_DIR='"$PWD" >> $GITHUB_ENV - # This fixes infamous 'stdio.h not found' error. echo 'SDKROOT='"$(xcrun --sdk macosx --show-sdk-path)" >> $GITHUB_ENV + cd $NGHTTP2_BUILD_DIR + cmake -DENABLE_WERROR=1 -DWITH_MRUBY=1 -DENABLE_APP=1 $EXTRA_CMAKE_OPTS -DCPPFLAGS="$CPPFLAGS" -DLDFLAGS="$LDFLAGS" -DBUILD_STATIC_LIBS=ON -DBUILD_TESTING=ON . - name: Build nghttp2 with autotools (Linux) if: matrix.buildtool == 'autotools' && runner.os == 'Linux' run: | - make -j"$(nproc)" distcheck \ - DISTCHECK_CONFIGURE_FLAGS="--with-mruby --with-neverbleed --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS CPPFLAGS=\"$CPPFLAGS\" LDFLAGS=\"$LDFLAGS\"" + cd $NGHTTP2_BUILD_DIR + + ./configure --with-mruby --with-neverbleed --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS + make -j"$(nproc)" check - name: Build nghttp2 with autotools (MacOS) if: matrix.buildtool == 'autotools' && runner.os == 'macOS' run: | - make -j"$(sysctl -n hw.ncpu)" distcheck \ - DISTCHECK_CONFIGURE_FLAGS="--with-mruby --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS CPPFLAGS=\"$CPPFLAGS\" LDFLAGS=\"$LDFLAGS\"" + cd $NGHTTP2_BUILD_DIR + + ./configure --with-mruby --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS + make -j"$(sysctl -n hw.ncpu)" check + - name: Build nghttp2 with autotools (distcheck) + if: matrix.buildtool == 'distcheck' + run: | + make -j"$(nproc)" distcheck \ + DISTCHECK_CONFIGURE_FLAGS="--with-mruby --with-neverbleed --with-libev --with-libbrotlienc --with-libbrotlidec --enable-werror $EXTRA_AUTOTOOLS_OPTS CPPFLAGS=\"$CPPFLAGS\" LDFLAGS=\"$LDFLAGS\"" - name: Build nghttp2 with cmake if: matrix.buildtool == 'cmake' run: | - cd $NGHTTP2_CMAKE_DIR + cd $NGHTTP2_BUILD_DIR make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)" check - uses: actions/setup-go@v5 - if: matrix.buildtool == 'cmake' + if: matrix.buildtool != 'distcheck' with: go-version-file: go.mod - name: Integration test # Integration tests for nghttpx; autotools erases build # artifacts. - if: matrix.buildtool == 'cmake' + if: matrix.buildtool != 'distcheck' run: | - cd $NGHTTP2_CMAKE_DIR/integration-tests + cd $NGHTTP2_BUILD_DIR/integration-tests make it build-cross: diff --git a/yass/third_party/nghttp2/AUTHORS b/yass/third_party/nghttp2/AUTHORS index de4be6d76f..2a361e1acb 100644 --- a/yass/third_party/nghttp2/AUTHORS +++ b/yass/third_party/nghttp2/AUTHORS @@ -20,6 +20,7 @@ Alex Nalivko Alexandr Vlasov Alexandros Konstantinakis-Karmis Alexis La Goutte +Alyssa Ross Amir Livneh Amir Pakdel Anders Bakken @@ -45,6 +46,7 @@ Dave Reisner David Beitey David Korczynski David Weekly +Deel Dimitris Apostolou Dmitri Tikhonov Dmitriy Vetutnev diff --git a/yass/third_party/nghttp2/CMakeLists.txt b/yass/third_party/nghttp2/CMakeLists.txt index 9b3c01b0e9..321a0b2a06 100644 --- a/yass/third_party/nghttp2/CMakeLists.txt +++ b/yass/third_party/nghttp2/CMakeLists.txt @@ -24,12 +24,12 @@ cmake_minimum_required(VERSION 3.14) # XXX using 1.8.90 instead of 1.9.0-DEV -project(nghttp2 VERSION 1.61.0) +project(nghttp2 VERSION 1.62.0) # See versioning rule: # https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html set(LT_CURRENT 42) -set(LT_REVISION 0) +set(LT_REVISION 1) set(LT_AGE 28) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) @@ -129,7 +129,7 @@ else() endif() include(ExtractValidFlags) -foreach(_cxx1x_flag -std=c++14) +foreach(_cxx1x_flag -std=c++20) extract_valid_cxx_flags(_cxx1x_flag_supported ${_cxx1x_flag}) if(_cxx1x_flag_supported) set(CXX1XCXXFLAGS ${_cxx1x_flag}) diff --git a/yass/third_party/nghttp2/README.rst b/yass/third_party/nghttp2/README.rst index fc81c03979..b54e85c613 100644 --- a/yass/third_party/nghttp2/README.rst +++ b/yass/third_party/nghttp2/README.rst @@ -127,7 +127,7 @@ following libraries are required: `_; or LibreSSL (does not support 0RTT); or aws-lc; or `BoringSSL `_ (commit - fae0964b3d44e94ca2a2d21f86e61dabe683d130) + 6ab7c1482bf4cdc91c87bc512aaf68ffb18975ec) * `ngtcp2 `_ >= 1.4.0 * `nghttp3 `_ >= 1.1.0 @@ -149,9 +149,9 @@ requires eBPF program for reloading its configuration and hot swapping its executable. Compiling libnghttp2 C source code requires a C99 compiler. gcc 4.8 -is known to be adequate. In order to compile the C++ source code, gcc ->= 6.0 or clang >= 6.0 is required. C++ source code requires C++14 -language features. +is known to be adequate. In order to compile the C++ source code, +C++20 compliant compiler is required. At least g++ >= 1.12 and +clang++ >= 1.15 are known to work. .. note:: @@ -341,7 +341,7 @@ Build aws-lc: .. code-block:: text - $ git clone --depth 1 -b v1.23.0 https://github.com/aws/aws-lc + $ git clone --depth 1 -b v1.26.0 https://github.com/aws/aws-lc $ cd aws-lc $ cmake -B build -DDISABLE_GO=ON --install-prefix=$PWD/opt $ make -j$(nproc) -C build @@ -352,7 +352,7 @@ Build nghttp3: .. code-block:: text - $ git clone --depth 1 -b v1.2.0 https://github.com/ngtcp2/nghttp3 + $ git clone --depth 1 -b v1.3.0 https://github.com/ngtcp2/nghttp3 $ cd nghttp3 $ git submodule update --init --depth 1 $ autoreconf -i @@ -365,7 +365,7 @@ Build ngtcp2: .. code-block:: text - $ git clone --depth 1 -b v1.4.0 https://github.com/ngtcp2/ngtcp2 + $ git clone --depth 1 -b v1.5.0 https://github.com/ngtcp2/ngtcp2 $ cd ngtcp2 $ git submodule update --init --depth 1 $ autoreconf -i diff --git a/yass/third_party/nghttp2/configure.ac b/yass/third_party/nghttp2/configure.ac index 5f9fe43a8b..b7913d49d6 100644 --- a/yass/third_party/nghttp2/configure.ac +++ b/yass/third_party/nghttp2/configure.ac @@ -25,7 +25,7 @@ dnl Do not change user variables! dnl https://www.gnu.org/software/automake/manual/html_node/Flag-Variables-Ordering.html AC_PREREQ(2.61) -AC_INIT([nghttp2], [1.61.0], [t-tujikawa@users.sourceforge.net]) +AC_INIT([nghttp2], [1.62.0], [t-tujikawa@users.sourceforge.net]) AC_CONFIG_AUX_DIR([.]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) @@ -45,7 +45,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) dnl See versioning rule: dnl https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html AC_SUBST(LT_CURRENT, 42) -AC_SUBST(LT_REVISION, 0) +AC_SUBST(LT_REVISION, 1) AC_SUBST(LT_AGE, 28) major=`echo $PACKAGE_VERSION |cut -d. -f1 | sed -e "s/[^0-9]//g"` @@ -238,7 +238,7 @@ fi save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= -AX_CXX_COMPILE_STDCXX([14], [], [optional]) +AX_CXX_COMPILE_STDCXX([20], [], [optional]) CXX1XCXXFLAGS="$CXXFLAGS" CXXFLAGS="$save_CXXFLAGS" @@ -283,21 +283,20 @@ std::map().emplace(1, 2); [have_std_map_emplace=no AC_MSG_RESULT([no])]) -# Check that std::atomic_* overloads for std::shared_ptr are -# available. -AC_MSG_CHECKING([whether std::atomic_* overloads for std::shared_ptr are available]) +# Check that std::atomic> is supported. +AC_MSG_CHECKING([whether std::atomic> is supported]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include ]], [[ -auto a = std::make_shared(1000000007); -auto p = std::atomic_load(&a); +auto a = std::atomic>(std::make_shared(1000000007)); +auto p = a.load(); ++*p; -std::atomic_store(&a, p); +a.store(p); ]])], [AC_DEFINE([HAVE_ATOMIC_STD_SHARED_PTR], [1], - [Define to 1 if you have the std::atomic_* overloads for std::shared_ptr.]) + [Define to 1 if you have the std::atomic> is supported.]) have_atomic_std_shared_ptr=yes AC_MSG_RESULT([yes])], [have_atomic_std_shared_ptr=no @@ -466,7 +465,7 @@ fi # c-ares (for src) have_libcares=no if test "x${request_libcares}" != "xno"; then - PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.7.5], [have_libcares=yes], + PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.16.0], [have_libcares=yes], [have_libcares=no]) if test "x${have_libcares}" = "xno"; then AC_MSG_NOTICE($LIBCARES_PKG_ERRORS) diff --git a/yass/third_party/nghttp2/doc/h2load.1 b/yass/third_party/nghttp2/doc/h2load.1 index 79f6e8a3eb..8d032f9241 100644 --- a/yass/third_party/nghttp2/doc/h2load.1 +++ b/yass/third_party/nghttp2/doc/h2load.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "H2LOAD" "1" "Apr 04, 2024" "1.61.0" "nghttp2" +.TH "H2LOAD" "1" "May 13, 2024" "1.62.0" "nghttp2" .SH NAME h2load \- HTTP/2 benchmarking tool .SH SYNOPSIS diff --git a/yass/third_party/nghttp2/doc/nghttp.1 b/yass/third_party/nghttp2/doc/nghttp.1 index 0709cc9b8b..78c41ae95a 100644 --- a/yass/third_party/nghttp2/doc/nghttp.1 +++ b/yass/third_party/nghttp2/doc/nghttp.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NGHTTP" "1" "Apr 04, 2024" "1.61.0" "nghttp2" +.TH "NGHTTP" "1" "May 13, 2024" "1.62.0" "nghttp2" .SH NAME nghttp \- HTTP/2 client .SH SYNOPSIS diff --git a/yass/third_party/nghttp2/doc/nghttpd.1 b/yass/third_party/nghttp2/doc/nghttpd.1 index 57a46f2f18..b055bc2bd5 100644 --- a/yass/third_party/nghttp2/doc/nghttpd.1 +++ b/yass/third_party/nghttp2/doc/nghttpd.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NGHTTPD" "1" "Apr 04, 2024" "1.61.0" "nghttp2" +.TH "NGHTTPD" "1" "May 13, 2024" "1.62.0" "nghttp2" .SH NAME nghttpd \- HTTP/2 server .SH SYNOPSIS diff --git a/yass/third_party/nghttp2/doc/nghttpx.1 b/yass/third_party/nghttp2/doc/nghttpx.1 index 6b9f54ba62..a6cb9ed55f 100644 --- a/yass/third_party/nghttp2/doc/nghttpx.1 +++ b/yass/third_party/nghttp2/doc/nghttpx.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "NGHTTPX" "1" "Apr 04, 2024" "1.61.0" "nghttp2" +.TH "NGHTTPX" "1" "May 13, 2024" "1.62.0" "nghttp2" .SH NAME nghttpx \- HTTP/2 proxy .SH SYNOPSIS @@ -371,7 +371,7 @@ Default: \fBauto\fP .TP .B \-\-backend\-http\-proxy\-uri= Specify proxy URI in the form -\fI\%http:/\fP/[:@]:. If a proxy +\X'tty: link http:/'\fI\%http:/\fP\X'tty: link'/[:@]:. If a proxy requires authentication, specify and . Note that they must be properly percent\-encoded. This proxy is used when the backend connection is HTTP/2. @@ -1057,7 +1057,7 @@ Default: \fB1s\fP .B \-\-no\-http2\-cipher\-block\-list Allow block listed cipher suite on frontend HTTP/2 connection. See -\fI\%https://tools.ietf.org/html/rfc7540#appendix\-A\fP for the +\X'tty: link https://tools.ietf.org/html/rfc7540#appendix-A'\fI\%https://tools.ietf.org/html/rfc7540#appendix\-A\fP\X'tty: link' for the complete HTTP/2 cipher suites block list. .UNINDENT .INDENT 0.0 @@ -1065,7 +1065,7 @@ complete HTTP/2 cipher suites block list. .B \-\-client\-no\-http2\-cipher\-block\-list Allow block listed cipher suite on backend HTTP/2 connection. See -\fI\%https://tools.ietf.org/html/rfc7540#appendix\-A\fP for the +\X'tty: link https://tools.ietf.org/html/rfc7540#appendix-A'\fI\%https://tools.ietf.org/html/rfc7540#appendix\-A\fP\X'tty: link' for the complete HTTP/2 cipher suites block list. .UNINDENT .INDENT 0.0 @@ -2116,9 +2116,9 @@ than main process. .SH SERVER PUSH .sp nghttpx supports HTTP/2 server push in default mode with Link header -field. nghttpx looks for Link header field (\fI\%RFC 5988\fP) in response headers from +field. nghttpx looks for Link header field (\X'tty: link http://tools.ietf.org/html/rfc5988'\fI\%RFC 5988\fP\X'tty: link') in response headers from backend server and extracts URI\-reference with parameter -\fBrel=preload\fP (see \fI\%preload\fP) +\fBrel=preload\fP (see \X'tty: link http://w3c.github.io/preload/#interoperability-with-http-link-header'\fI\%preload\fP\X'tty: link') and pushes those URIs to the frontend client. Here is a sample Link header field to initiate server push: .INDENT 0.0 @@ -2164,7 +2164,7 @@ delete the socket and continues to use it. .sp OCSP query is done using external Python script \fBfetch\-ocsp\-response\fP, which has been originally developed in Perl -as part of h2o project (\fI\%https://github.com/h2o/h2o\fP), and was +as part of h2o project (\X'tty: link https://github.com/h2o/h2o'\fI\%https://github.com/h2o/h2o\fP\X'tty: link'), and was translated into Python. .sp The script file is usually installed under @@ -2260,15 +2260,15 @@ automatically. To rotate key, one has to restart nghttpx (see SIGNALS). .SH CERTIFICATE TRANSPARENCY .sp -nghttpx supports TLS \fBsigned_certificate_timestamp\fP extension (\fI\%RFC -6962\fP). The relevant options +nghttpx supports TLS \fBsigned_certificate_timestamp\fP extension (\X'tty: link https://tools.ietf.org/html/rfc6962'\fI\%RFC +6962\fP\X'tty: link'). The relevant options are \fI\%\-\-tls\-sct\-dir\fP and \fBsct\-dir\fP parameter in \fI\%\-\-subcert\fP\&. They takes a directory, and nghttpx reads all files whose extension is \fB\&.sct\fP under the directory. The \fB*.sct\fP files are encoded as \fBSignedCertificateTimestamp\fP struct described -in \fI\%section 3.2 of RFC 69662\fP\&. This format is -the same one used by \fI\%nginx\-ct\fP and \fI\%mod_ssl_ct\fP\&. -\fI\%ct\-submit\fP can be +in \X'tty: link https://tools.ietf.org/html/rfc6962#section-3.2'\fI\%section 3.2 of RFC 69662\fP\X'tty: link'\&. This format is +the same one used by \X'tty: link https://github.com/grahamedgecombe/nginx-ct'\fI\%nginx\-ct\fP\X'tty: link' and \X'tty: link https://httpd.apache.org/docs/trunk/mod/mod_ssl_ct.html'\fI\%mod_ssl_ct\fP\X'tty: link'\&. +\X'tty: link https://github.com/grahamedgecombe/ct-submit'\fI\%ct\-submit\fP\X'tty: link' can be used to submit certificates to log servers, and obtain the \fBSignedCertificateTimestamp\fP struct which can be used with nghttpx. .SH MRUBY SCRIPTING @@ -2512,7 +2512,7 @@ On assignment, copy of given value is assigned. The path does not include authority component of URI. This may include query component. nghttpx makes certain normalization for path. It decodes percent\-encoding for unreserved characters -(see \fI\%https://tools.ietf.org/html/rfc3986#section\-2.3\fP), and +(see \X'tty: link https://tools.ietf.org/html/rfc3986#section-2.3'\fI\%https://tools.ietf.org/html/rfc3986#section\-2.3\fP\X'tty: link'), and resolves \(dq..\(dq and \(dq.\(dq. But it may leave characters which should be percent\-encoded as is. So be careful when comparing path against desired string. diff --git a/yass/third_party/nghttp2/docker/Dockerfile b/yass/third_party/nghttp2/docker/Dockerfile index cdec4eecf6..960c815e2e 100644 --- a/yass/third_party/nghttp2/docker/Dockerfile +++ b/yass/third_party/nghttp2/docker/Dockerfile @@ -9,7 +9,7 @@ RUN apt-get update && \ zlib1g-dev libev-dev libjemalloc-dev ruby-dev libc-ares-dev bison \ libelf-dev libbrotli-dev -RUN git clone --recursive --depth 1 -b v1.23.0 https://github.com/aws/aws-lc && \ +RUN git clone --recursive --depth 1 -b v1.26.0 https://github.com/aws/aws-lc && \ cd aws-lc && \ cmake -B build -DDISABLE_GO=ON && \ make -j$(nproc) -C build && \ @@ -17,7 +17,7 @@ RUN git clone --recursive --depth 1 -b v1.23.0 https://github.com/aws/aws-lc && cd .. && \ rm -rf aws-lc -RUN git clone --recursive --depth 1 -b v1.2.0 https://github.com/ngtcp2/nghttp3 && \ +RUN git clone --recursive --depth 1 -b v1.3.0 https://github.com/ngtcp2/nghttp3 && \ cd nghttp3 && \ autoreconf -i && \ ./configure --enable-lib-only && \ @@ -26,7 +26,7 @@ RUN git clone --recursive --depth 1 -b v1.2.0 https://github.com/ngtcp2/nghttp3 cd .. && \ rm -rf nghttp3 -RUN git clone --recursive --depth 1 -b v1.4.0 https://github.com/ngtcp2/ngtcp2 && \ +RUN git clone --recursive --depth 1 -b v1.5.0 https://github.com/ngtcp2/ngtcp2 && \ cd ngtcp2 && \ autoreconf -i && \ ./configure --enable-lib-only --with-boringssl \ diff --git a/yass/third_party/nghttp2/gennghttpxfun.py b/yass/third_party/nghttp2/gennghttpxfun.py index 80058e0ac4..6cb660389d 100755 --- a/yass/third_party/nghttp2/gennghttpxfun.py +++ b/yass/third_party/nghttp2/gennghttpxfun.py @@ -241,5 +241,5 @@ LOGVARS = [ ] if __name__ == '__main__': - gentokenlookup(OPTIONS, 'SHRPX_OPTID_', value_type='char', comp_fun='util::strieq_l') - gentokenlookup(LOGVARS, 'LogFragmentType::', value_type='char', comp_fun='util::strieq_l', return_type='LogFragmentType', fail_value='LogFragmentType::NONE') + gentokenlookup(OPTIONS, 'SHRPX_OPTID_', comp_fun='util::strieq') + gentokenlookup(LOGVARS, 'LogFragmentType::', comp_fun='util::strieq', return_type='LogFragmentType', fail_value='LogFragmentType::NONE') diff --git a/yass/third_party/nghttp2/gentokenlookup.py b/yass/third_party/nghttp2/gentokenlookup.py index 82778580cc..f23426aab9 100644 --- a/yass/third_party/nghttp2/gentokenlookup.py +++ b/yass/third_party/nghttp2/gentokenlookup.py @@ -33,10 +33,10 @@ enum {''') {}MAXIDX, }};'''.format(prefix)) -def gen_index_header(tokens, prefix, value_type, comp_fun, return_type, fail_value): +def gen_index_header(tokens, prefix, comp_fun, return_type, fail_value): print('''\ -{} lookup_token(const {} *name, size_t namelen) {{ - switch (namelen) {{'''.format(return_type, value_type)) +{} lookup_token(const StringRef &name) {{ + switch (name.size()) {{'''.format(return_type)) b = build_header(tokens) for size in sorted(b.keys()): ents = b[size] @@ -50,7 +50,7 @@ def gen_index_header(tokens, prefix, value_type, comp_fun, return_type, fail_val case '{}':'''.format(c)) for k in headers: print('''\ - if ({}("{}", name, {})) {{ + if ({}("{}"_sr, name, {})) {{ return {}; }}'''.format(comp_fun, k[:-1], size - 1, to_enum_hd(k, prefix))) print('''\ @@ -63,7 +63,7 @@ def gen_index_header(tokens, prefix, value_type, comp_fun, return_type, fail_val return {}; }}'''.format(fail_value)) -def gentokenlookup(tokens, prefix, value_type='uint8_t', comp_fun='util::streq_l', return_type='int', fail_value='-1'): +def gentokenlookup(tokens, prefix, comp_fun='util::streq', return_type='int', fail_value='-1'): gen_enum(tokens, prefix) print() - gen_index_header(tokens, prefix, value_type, comp_fun, return_type, fail_value) + gen_index_header(tokens, prefix, comp_fun, return_type, fail_value) diff --git a/yass/third_party/nghttp2/go.mod b/yass/third_party/nghttp2/go.mod index fb00b322cf..34425153bf 100644 --- a/yass/third_party/nghttp2/go.mod +++ b/yass/third_party/nghttp2/go.mod @@ -4,9 +4,9 @@ go 1.21.1 require ( github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 - github.com/quic-go/quic-go v0.42.0 + github.com/quic-go/quic-go v0.43.1 github.com/tatsuhiro-t/go-nghttp2 v0.0.0-20240121064059-46ccb0a462a8 - golang.org/x/net v0.22.0 + golang.org/x/net v0.24.0 ) require ( @@ -15,10 +15,10 @@ require ( github.com/onsi/ginkgo/v2 v2.9.5 // indirect github.com/quic-go/qpack v0.4.0 // indirect go.uber.org/mock v0.4.0 // indirect - golang.org/x/crypto v0.21.0 // indirect + golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20221205204356-47842c84f3db // indirect golang.org/x/mod v0.11.0 // indirect - golang.org/x/sys v0.18.0 // indirect + golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.9.1 // indirect ) diff --git a/yass/third_party/nghttp2/go.sum b/yass/third_party/nghttp2/go.sum index 43011ec840..35b06d059e 100644 --- a/yass/third_party/nghttp2/go.sum +++ b/yass/third_party/nghttp2/go.sum @@ -25,8 +25,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= -github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= +github.com/quic-go/quic-go v0.43.1 h1:fLiMNfQVe9q2JvSsiXo4fXOEguXHGGl9+6gLp4RPeZQ= +github.com/quic-go/quic-go v0.43.1/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -34,17 +34,17 @@ github.com/tatsuhiro-t/go-nghttp2 v0.0.0-20240121064059-46ccb0a462a8 h1:zKJxuRe+ github.com/tatsuhiro-t/go-nghttp2 v0.0.0-20240121064059-46ccb0a462a8/go.mod h1:gTqc3Q4boc+cKRlSFywTYdX9t6VGRcsThlNIWwaL3Dc= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20221205204356-47842c84f3db h1:D/cFflL63o2KSLJIwjlcIt8PR064j/xsmdEJL/YvY/o= golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= diff --git a/yass/third_party/nghttp2/integration-tests/setenv.in b/yass/third_party/nghttp2/integration-tests/setenv.in index 7177200e9e..17e320ce18 100644 --- a/yass/third_party/nghttp2/integration-tests/setenv.in +++ b/yass/third_party/nghttp2/integration-tests/setenv.in @@ -9,5 +9,6 @@ export CGO_CFLAGS="-I@abs_top_srcdir@/lib/includes -I@abs_top_builddir@/lib/incl export CGO_CPPFLAGS="@CPPFLAGS@" export CGO_LDFLAGS="-L$libdir @LDFLAGS@" export LD_LIBRARY_PATH="$libdir" +export DYLD_LIBRARY_PATH="$libdir" export GODEBUG=cgocheck=0 "$@" diff --git a/yass/third_party/nghttp2/lib/nghttp2_buf.c b/yass/third_party/nghttp2/lib/nghttp2_buf.c index 101035f923..15cd674a65 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_buf.c +++ b/yass/third_party/nghttp2/lib/nghttp2_buf.c @@ -61,7 +61,7 @@ int nghttp2_buf_reserve(nghttp2_buf *buf, size_t new_cap, nghttp2_mem *mem) { return 0; } - new_cap = nghttp2_max(new_cap, cap * 2); + new_cap = nghttp2_max_size(new_cap, cap * 2); ptr = nghttp2_mem_realloc(mem, buf->begin, new_cap); if (ptr == NULL) { @@ -343,7 +343,7 @@ int nghttp2_bufs_add(nghttp2_bufs *bufs, const void *data, size_t len) { while (len) { buf = &bufs->cur->buf; - nwrite = nghttp2_min(nghttp2_buf_avail(buf), len); + nwrite = nghttp2_min_size(nghttp2_buf_avail(buf), len); if (nwrite == 0) { rv = bufs_alloc_chain(bufs); if (rv != 0) { diff --git a/yass/third_party/nghttp2/lib/nghttp2_hd.c b/yass/third_party/nghttp2/lib/nghttp2_hd.c index 1b0c71331a..cab6ec8fc7 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_hd.c +++ b/yass/third_party/nghttp2/lib/nghttp2_hd.c @@ -1245,13 +1245,13 @@ static void hd_context_shrink_table_size(nghttp2_hd_context *context, int nghttp2_hd_deflate_change_table_size( nghttp2_hd_deflater *deflater, size_t settings_max_dynamic_table_size) { - size_t next_bufsize = nghttp2_min(settings_max_dynamic_table_size, - deflater->deflate_hd_table_bufsize_max); + size_t next_bufsize = nghttp2_min_size( + settings_max_dynamic_table_size, deflater->deflate_hd_table_bufsize_max); deflater->ctx.hd_table_bufsize_max = next_bufsize; deflater->min_hd_table_bufsize_max = - nghttp2_min(deflater->min_hd_table_bufsize_max, next_bufsize); + nghttp2_min_size(deflater->min_hd_table_bufsize_max, next_bufsize); deflater->notify_table_size_change = 1; @@ -1738,7 +1738,7 @@ static nghttp2_ssize hd_inflate_read_huff(nghttp2_hd_inflater *inflater, static nghttp2_ssize hd_inflate_read(nghttp2_hd_inflater *inflater, nghttp2_buf *buf, const uint8_t *in, const uint8_t *last) { - size_t len = nghttp2_min((size_t)(last - in), inflater->left); + size_t len = nghttp2_min_size((size_t)(last - in), inflater->left); buf->last = nghttp2_cpymem(buf->last, in, len); @@ -1962,8 +1962,8 @@ nghttp2_ssize nghttp2_hd_inflate_hd_nv(nghttp2_hd_inflater *inflater, rfin = 0; rv = hd_inflate_read_len( inflater, &rfin, in, last, 5, - nghttp2_min(inflater->min_hd_table_bufsize_max, - inflater->settings_hd_table_bufsize_max)); + nghttp2_min_size(inflater->min_hd_table_bufsize_max, + inflater->settings_hd_table_bufsize_max)); if (rv < 0) { goto fail; } diff --git a/yass/third_party/nghttp2/lib/nghttp2_hd_huffman.c b/yass/third_party/nghttp2/lib/nghttp2_hd_huffman.c index 959053f774..f848f3690b 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_hd_huffman.c +++ b/yass/third_party/nghttp2/lib/nghttp2_hd_huffman.c @@ -116,7 +116,9 @@ nghttp2_ssize nghttp2_hd_huff_decode(nghttp2_hd_huff_decode_context *ctx, uint8_t c; /* We use the decoding algorithm described in - http://graphics.ics.uci.edu/pub/Prefix.pdf */ + - http://graphics.ics.uci.edu/pub/Prefix.pdf [!!! NO LONGER VALID !!!] + - https://ics.uci.edu/~dan/pubs/Prefix.pdf + - https://github.com/nghttp2/nghttp2/files/15141264/Prefix.pdf */ for (; src != end;) { c = *src++; t = &huff_decode_table[t->fstate & 0x1ff][c >> 4]; diff --git a/yass/third_party/nghttp2/lib/nghttp2_helper.c b/yass/third_party/nghttp2/lib/nghttp2_helper.c index b3563d98e0..9a2407ab6f 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_helper.c +++ b/yass/third_party/nghttp2/lib/nghttp2_helper.c @@ -160,7 +160,7 @@ int nghttp2_adjust_local_window_size(int32_t *local_window_size_ptr, int32_t recv_reduction_delta; int32_t delta; int32_t new_recv_window_size = - nghttp2_max(0, *recv_window_size_ptr) - *delta_ptr; + nghttp2_max_int32(0, *recv_window_size_ptr) - *delta_ptr; if (new_recv_window_size >= 0) { *recv_window_size_ptr = new_recv_window_size; @@ -177,7 +177,7 @@ int nghttp2_adjust_local_window_size(int32_t *local_window_size_ptr, *local_window_size_ptr += delta; /* If there is recv_reduction due to earlier window_size reduction, we have to adjust it too. */ - recv_reduction_delta = nghttp2_min(*recv_reduction_ptr, delta); + recv_reduction_delta = nghttp2_min_int32(*recv_reduction_ptr, delta); *recv_reduction_ptr -= recv_reduction_delta; if (*recv_window_size_ptr < 0) { *recv_window_size_ptr += recv_reduction_delta; @@ -233,7 +233,7 @@ int nghttp2_increase_local_window_size(int32_t *local_window_size_ptr, *local_window_size_ptr += delta; /* If there is recv_reduction due to earlier window_size reduction, we have to adjust it too. */ - recv_reduction_delta = nghttp2_min(*recv_reduction_ptr, delta); + recv_reduction_delta = nghttp2_min_int32(*recv_reduction_ptr, delta); *recv_reduction_ptr -= recv_reduction_delta; *recv_window_size_ptr += recv_reduction_delta; diff --git a/yass/third_party/nghttp2/lib/nghttp2_helper.h b/yass/third_party/nghttp2/lib/nghttp2_helper.h index b1f18ce541..01b85c44ed 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_helper.h +++ b/yass/third_party/nghttp2/lib/nghttp2_helper.h @@ -35,8 +35,31 @@ #include #include "nghttp2_mem.h" -#define nghttp2_min(A, B) ((A) < (B) ? (A) : (B)) -#define nghttp2_max(A, B) ((A) > (B) ? (A) : (B)) +#define nghttp2_max_def(SUFFIX, T) \ + static inline T nghttp2_max_##SUFFIX(T a, T b) { return a < b ? b : a; } + +nghttp2_max_def(int8, int8_t); +nghttp2_max_def(int16, int16_t); +nghttp2_max_def(int32, int32_t); +nghttp2_max_def(int64, int64_t); +nghttp2_max_def(uint8, uint8_t); +nghttp2_max_def(uint16, uint16_t); +nghttp2_max_def(uint32, uint32_t); +nghttp2_max_def(uint64, uint64_t); +nghttp2_max_def(size, size_t); + +#define nghttp2_min_def(SUFFIX, T) \ + static inline T nghttp2_min_##SUFFIX(T a, T b) { return a < b ? a : b; } + +nghttp2_min_def(int8, int8_t); +nghttp2_min_def(int16, int16_t); +nghttp2_min_def(int32, int32_t); +nghttp2_min_def(int64, int64_t); +nghttp2_min_def(uint8, uint8_t); +nghttp2_min_def(uint16, uint16_t); +nghttp2_min_def(uint32, uint32_t); +nghttp2_min_def(uint64, uint64_t); +nghttp2_min_def(size, size_t); #define lstreq(A, B, N) ((sizeof((A)) - 1) == (N) && memcmp((A), (B), (N)) == 0) diff --git a/yass/third_party/nghttp2/lib/nghttp2_pq.c b/yass/third_party/nghttp2/lib/nghttp2_pq.c index 64353acc96..e79ba8365e 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_pq.c +++ b/yass/third_party/nghttp2/lib/nghttp2_pq.c @@ -69,7 +69,7 @@ int nghttp2_pq_push(nghttp2_pq *pq, nghttp2_pq_entry *item) { void *nq; size_t ncapacity; - ncapacity = nghttp2_max(4, (pq->capacity * 2)); + ncapacity = nghttp2_max_size(4, (pq->capacity * 2)); nq = nghttp2_mem_realloc(pq->mem, pq->q, ncapacity * sizeof(nghttp2_pq_entry *)); diff --git a/yass/third_party/nghttp2/lib/nghttp2_ratelim.c b/yass/third_party/nghttp2/lib/nghttp2_ratelim.c index 7011655b00..604ac0801a 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_ratelim.c +++ b/yass/third_party/nghttp2/lib/nghttp2_ratelim.c @@ -61,7 +61,7 @@ void nghttp2_ratelim_update(nghttp2_ratelim *rl, uint64_t tstamp) { } rl->val += gain; - rl->val = nghttp2_min(rl->val, rl->burst); + rl->val = nghttp2_min_uint64(rl->val, rl->burst); } int nghttp2_ratelim_drain(nghttp2_ratelim *rl, uint64_t n) { diff --git a/yass/third_party/nghttp2/lib/nghttp2_session.c b/yass/third_party/nghttp2/lib/nghttp2_session.c index 2a2ec4e6a0..a560b407ee 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_session.c +++ b/yass/third_party/nghttp2/lib/nghttp2_session.c @@ -1700,10 +1700,11 @@ int nghttp2_session_adjust_idle_stream(nghttp2_session *session) { /* Make minimum number of idle streams 16, and maximum 100, which are arbitrary chosen numbers. */ - max = nghttp2_min( - 100, nghttp2_max( - 16, nghttp2_min(session->local_settings.max_concurrent_streams, - session->pending_local_max_concurrent_stream))); + max = nghttp2_min_uint32( + 100, nghttp2_max_uint32( + 16, nghttp2_min_uint32( + session->local_settings.max_concurrent_streams, + session->pending_local_max_concurrent_stream))); DEBUGF("stream: adjusting kept idle streams num_idle_streams=%zu, max=%zu\n", session->num_idle_streams, max); @@ -2131,10 +2132,11 @@ static nghttp2_ssize nghttp2_session_enforce_flow_control_limits( session->remote_window_size, session->remote_settings.max_frame_size, stream->stream_id, stream->remote_window_size); - return nghttp2_min(nghttp2_min(nghttp2_min(requested_window_size, - stream->remote_window_size), - session->remote_window_size), - (int32_t)session->remote_settings.max_frame_size); + return nghttp2_min_int32( + nghttp2_min_int32(nghttp2_min_int32((int32_t)requested_window_size, + stream->remote_window_size), + session->remote_window_size), + (int32_t)session->remote_settings.max_frame_size); } /* @@ -2218,7 +2220,7 @@ static nghttp2_ssize session_call_select_padding(nghttp2_session *session, } max_paddedlen = - nghttp2_min(frame->hd.length + NGHTTP2_MAX_PADLEN, max_payloadlen); + nghttp2_min_size(frame->hd.length + NGHTTP2_MAX_PADLEN, max_payloadlen); if (session->callbacks.select_padding_callback2) { rv = session->callbacks.select_padding_callback2( @@ -2248,8 +2250,8 @@ static int session_headers_add_pad(nghttp2_session *session, aob = &session->aob; framebufs = &aob->framebufs; - max_payloadlen = nghttp2_min(NGHTTP2_MAX_PAYLOADLEN, - frame->hd.length + NGHTTP2_MAX_PADLEN); + max_payloadlen = nghttp2_min_size(NGHTTP2_MAX_PAYLOADLEN, + frame->hd.length + NGHTTP2_MAX_PADLEN); padded_payloadlen = session_call_select_padding(session, frame, max_payloadlen); @@ -2289,7 +2291,7 @@ static int session_pack_extension(nghttp2_session *session, nghttp2_bufs *bufs, session->callbacks.pack_extension_callback); buf = &bufs->head->buf; - buflen = nghttp2_min(nghttp2_buf_avail(buf), NGHTTP2_MAX_PAYLOADLEN); + buflen = nghttp2_min_size(nghttp2_buf_avail(buf), NGHTTP2_MAX_PAYLOADLEN); if (session->callbacks.pack_extension_callback2) { rv = session->callbacks.pack_extension_callback2(session, buf->last, buflen, @@ -4708,7 +4710,8 @@ int nghttp2_session_update_local_settings(nghttp2_session *session, case NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: header_table_size_seen = 1; header_table_size = iv[i].value; - min_header_table_size = nghttp2_min(min_header_table_size, iv[i].value); + min_header_table_size = + nghttp2_min_uint32(min_header_table_size, iv[i].value); break; case NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: new_initial_window_size = (int32_t)iv[i].value; @@ -5603,7 +5606,7 @@ static int session_update_consumed_size(nghttp2_session *session, /* recv_window_size may be smaller than consumed_size, because it may be decreased by negative value with nghttp2_submit_window_update(). */ - recv_size = nghttp2_min(*consumed_size_ptr, *recv_window_size_ptr); + recv_size = nghttp2_min_int32(*consumed_size_ptr, *recv_window_size_ptr); if (nghttp2_should_send_window_update(local_window_size, recv_size)) { rv = nghttp2_session_add_window_update(session, NGHTTP2_FLAG_NONE, @@ -5726,7 +5729,7 @@ fail: static size_t inbound_frame_payload_readlen(nghttp2_inbound_frame *iframe, const uint8_t *in, const uint8_t *last) { - return nghttp2_min((size_t)(last - in), iframe->payloadleft); + return nghttp2_min_size((size_t)(last - in), iframe->payloadleft); } /* @@ -5741,8 +5744,8 @@ static size_t inbound_frame_buf_read(nghttp2_inbound_frame *iframe, const uint8_t *in, const uint8_t *last) { size_t readlen; - readlen = - nghttp2_min((size_t)(last - in), nghttp2_buf_mark_avail(&iframe->sbuf)); + readlen = nghttp2_min_size((size_t)(last - in), + nghttp2_buf_mark_avail(&iframe->sbuf)); iframe->sbuf.last = nghttp2_cpymem(iframe->sbuf.last, in, readlen); @@ -5909,7 +5912,7 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session, for (;;) { switch (iframe->state) { case NGHTTP2_IB_READ_CLIENT_MAGIC: - readlen = nghttp2_min(inlen, iframe->payloadleft); + readlen = nghttp2_min_size(inlen, iframe->payloadleft); if (memcmp(&NGHTTP2_CLIENT_MAGIC[NGHTTP2_CLIENT_MAGIC_LEN - iframe->payloadleft], @@ -7518,7 +7521,8 @@ int nghttp2_session_add_goaway(nghttp2_session *session, int32_t last_stream_id, /* last_stream_id must not be increased from the value previously sent */ - last_stream_id = nghttp2_min(last_stream_id, session->local_last_stream_id); + last_stream_id = + nghttp2_min_int32(last_stream_id, session->local_last_stream_id); nghttp2_frame_goaway_init(&frame->goaway, last_stream_id, error_code, opaque_data_copy, opaque_data_len); @@ -7832,7 +7836,8 @@ int nghttp2_session_pack_data(nghttp2_session *session, nghttp2_bufs *bufs, frame->hd.length = (size_t)payloadlen; frame->data.padlen = 0; - max_payloadlen = nghttp2_min(datamax, frame->hd.length + NGHTTP2_MAX_PADLEN); + max_payloadlen = + nghttp2_min_size(datamax, frame->hd.length + NGHTTP2_MAX_PADLEN); padded_payloadlen = session_call_select_padding(session, frame, max_payloadlen); @@ -8006,7 +8011,7 @@ int32_t nghttp2_session_get_stream_remote_window_size(nghttp2_session *session, /* stream->remote_window_size can be negative when SETTINGS_INITIAL_WINDOW_SIZE is changed. */ - return nghttp2_max(0, stream->remote_window_size); + return nghttp2_max_int32(0, stream->remote_window_size); } int32_t nghttp2_session_get_remote_window_size(nghttp2_session *session) { diff --git a/yass/third_party/nghttp2/lib/nghttp2_stream.c b/yass/third_party/nghttp2/lib/nghttp2_stream.c index f1951f879d..bf8b8c39e2 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_stream.c +++ b/yass/third_party/nghttp2/lib/nghttp2_stream.c @@ -312,7 +312,7 @@ int32_t nghttp2_stream_dep_distributed_weight(nghttp2_stream *stream, int32_t weight) { weight = stream->weight * weight / stream->sum_dep_weight; - return nghttp2_max(1, weight); + return nghttp2_max_int32(1, weight); } #ifdef STREAM_DEP_DEBUG diff --git a/yass/third_party/nghttp2/lib/nghttp2_submit.c b/yass/third_party/nghttp2/lib/nghttp2_submit.c index f947969cd9..72e6588ffb 100644 --- a/yass/third_party/nghttp2/lib/nghttp2_submit.c +++ b/yass/third_party/nghttp2/lib/nghttp2_submit.c @@ -411,10 +411,10 @@ int nghttp2_submit_window_update(nghttp2_session *session, uint8_t flags, if (window_size_increment > 0) { if (stream_id == 0) { session->consumed_size = - nghttp2_max(0, session->consumed_size - window_size_increment); + nghttp2_max_int32(0, session->consumed_size - window_size_increment); } else { stream->consumed_size = - nghttp2_max(0, stream->consumed_size - window_size_increment); + nghttp2_max_int32(0, stream->consumed_size - window_size_increment); } return nghttp2_session_add_window_update(session, 0, stream_id, diff --git a/yass/third_party/nghttp2/src/HtmlParser.cc b/yass/third_party/nghttp2/src/HtmlParser.cc index 591c4c7e02..a420c93be9 100644 --- a/yass/third_party/nghttp2/src/HtmlParser.cc +++ b/yass/third_party/nghttp2/src/HtmlParser.cc @@ -58,11 +58,11 @@ StringRef get_attr(const xmlChar **attrs, const StringRef &name) { namespace { ResourceType get_resource_type_for_preload_as(const StringRef &attribute_value) { - if (util::strieq_l("image", attribute_value)) { + if (util::strieq("image"_sr, attribute_value)) { return REQ_IMG; - } else if (util::strieq_l("style", attribute_value)) { + } else if (util::strieq("style"_sr, attribute_value)) { return REQ_CSS; - } else if (util::strieq_l("script", attribute_value)) { + } else if (util::strieq("script"_sr, attribute_value)) { return REQ_UNBLOCK_JS; } else { return REQ_OTHERS; @@ -74,7 +74,7 @@ namespace { void add_link(ParserData *parser_data, const StringRef &uri, ResourceType res_type) { auto u = xmlBuildURI( - reinterpret_cast(uri.c_str()), + reinterpret_cast(uri.data()), reinterpret_cast(parser_data->base_uri.c_str())); if (u) { parser_data->links.push_back( @@ -90,35 +90,35 @@ void start_element_func(void *user_data, const xmlChar *src_name, auto parser_data = static_cast(user_data); auto name = StringRef{src_name, strlen(reinterpret_cast(src_name))}; - if (util::strieq_l("head", name)) { + if (util::strieq("head"_sr, name)) { ++parser_data->inside_head; } - if (util::strieq_l("link", name)) { - auto rel_attr = get_attr(attrs, StringRef::from_lit("rel")); - auto href_attr = get_attr(attrs, StringRef::from_lit("href")); + if (util::strieq("link"_sr, name)) { + auto rel_attr = get_attr(attrs, "rel"_sr); + auto href_attr = get_attr(attrs, "href"_sr); if (rel_attr.empty() || href_attr.empty()) { return; } - if (util::strieq_l("shortcut icon", rel_attr)) { + if (util::strieq("shortcut icon"_sr, rel_attr)) { add_link(parser_data, href_attr, REQ_OTHERS); - } else if (util::strieq_l("stylesheet", rel_attr)) { + } else if (util::strieq("stylesheet"_sr, rel_attr)) { add_link(parser_data, href_attr, REQ_CSS); - } else if (util::strieq_l("preload", rel_attr)) { - auto as_attr = get_attr(attrs, StringRef::from_lit("as")); + } else if (util::strieq("preload"_sr, rel_attr)) { + auto as_attr = get_attr(attrs, "as"_sr); if (as_attr.empty()) { return; } add_link(parser_data, href_attr, get_resource_type_for_preload_as(as_attr)); } - } else if (util::strieq_l("img", name)) { - auto src_attr = get_attr(attrs, StringRef::from_lit("src")); + } else if (util::strieq("img"_sr, name)) { + auto src_attr = get_attr(attrs, "src"_sr); if (src_attr.empty()) { return; } add_link(parser_data, src_attr, REQ_IMG); - } else if (util::strieq_l("script", name)) { - auto src_attr = get_attr(attrs, StringRef::from_lit("src")); + } else if (util::strieq("script"_sr, name)) { + auto src_attr = get_attr(attrs, "src"_sr); if (src_attr.empty()) { return; } @@ -134,8 +134,8 @@ void start_element_func(void *user_data, const xmlChar *src_name, namespace { void end_element_func(void *user_data, const xmlChar *name) { auto parser_data = static_cast(user_data); - if (util::strieq_l( - "head", + if (util::strieq( + "head"_sr, StringRef{name, strlen(reinterpret_cast(name))})) { --parser_data->inside_head; } diff --git a/yass/third_party/nghttp2/src/HttpServer.cc b/yass/third_party/nghttp2/src/HttpServer.cc index 6b28d1be89..fb7b1dbf39 100644 --- a/yass/third_party/nghttp2/src/HttpServer.cc +++ b/yass/third_party/nghttp2/src/HttpServer.cc @@ -78,9 +78,8 @@ namespace nghttp2 { namespace { // TODO could be constexpr -constexpr auto DEFAULT_HTML = StringRef::from_lit("index.html"); -constexpr auto NGHTTPD_SERVER = - StringRef::from_lit("nghttpd nghttp2/" NGHTTP2_VERSION); +constexpr auto DEFAULT_HTML = "index.html"_sr; +constexpr auto NGHTTPD_SERVER = "nghttpd nghttp2/" NGHTTP2_VERSION ""_sr; } // namespace namespace { @@ -925,28 +924,32 @@ int Http2Handler::submit_file_response(const StringRef &status, Stream *stream, const std::string *content_type, nghttp2_data_provider2 *data_prd) { std::string last_modified_str; - auto nva = make_array(http2::make_nv_ls_nocopy(":status", status), - http2::make_nv_ls_nocopy("server", NGHTTPD_SERVER), - http2::make_nv_ll("cache-control", "max-age=3600"), - http2::make_nv_ls("date", sessions_->get_cached_date()), - http2::make_nv_ll("", ""), http2::make_nv_ll("", ""), - http2::make_nv_ll("", ""), http2::make_nv_ll("", "")); + auto nva = std::to_array({ + http2::make_field(":status"_sr, status), + http2::make_field("server"_sr, NGHTTPD_SERVER), + http2::make_field("cache-control"_sr, "max-age=3600"_sr), + http2::make_field_v("date"_sr, sessions_->get_cached_date()), + {}, + {}, + {}, + {}, + }); size_t nvlen = 4; if (!get_config()->no_content_length) { - nva[nvlen++] = http2::make_nv_ls_nocopy( - "content-length", + nva[nvlen++] = http2::make_field( + "content-length"_sr, util::make_string_ref_uint(stream->balloc, file_length)); } if (last_modified != 0) { last_modified_str = util::http_date(last_modified); - nva[nvlen++] = http2::make_nv_ls("last-modified", last_modified_str); + nva[nvlen++] = http2::make_field_v("last-modified"_sr, last_modified_str); } if (content_type) { - nva[nvlen++] = http2::make_nv_ls("content-type", *content_type); + nva[nvlen++] = http2::make_field_v("content-type"_sr, *content_type); } auto &trailer_names = get_config()->trailer_names; if (!trailer_names.empty()) { - nva[nvlen++] = http2::make_nv_ls_nocopy("trailer", trailer_names); + nva[nvlen++] = http2::make_field("trailer"_sr, trailer_names); } return nghttp2_submit_response2(session_, stream->stream_id, nva.data(), nvlen, data_prd); @@ -957,19 +960,20 @@ int Http2Handler::submit_response(const StringRef &status, int32_t stream_id, nghttp2_data_provider2 *data_prd) { auto nva = std::vector(); nva.reserve(4 + headers.size()); - nva.push_back(http2::make_nv_ls_nocopy(":status", status)); - nva.push_back(http2::make_nv_ls_nocopy("server", NGHTTPD_SERVER)); - nva.push_back(http2::make_nv_ls("date", sessions_->get_cached_date())); + nva.push_back(http2::make_field(":status"_sr, status)); + nva.push_back(http2::make_field("server"_sr, NGHTTPD_SERVER)); + nva.push_back(http2::make_field_v("date"_sr, sessions_->get_cached_date())); if (data_prd) { auto &trailer_names = get_config()->trailer_names; if (!trailer_names.empty()) { - nva.push_back(http2::make_nv_ls_nocopy("trailer", trailer_names)); + nva.push_back(http2::make_field("trailer"_sr, trailer_names)); } } for (auto &nv : headers) { - nva.push_back(http2::make_nv_nocopy(nv.name, nv.value, nv.no_index)); + nva.push_back( + http2::make_field(nv.name, nv.value, http2::no_index(nv.no_index))); } int r = nghttp2_submit_response2(session_, stream_id, nva.data(), nva.size(), data_prd); @@ -978,16 +982,18 @@ int Http2Handler::submit_response(const StringRef &status, int32_t stream_id, int Http2Handler::submit_response(const StringRef &status, int32_t stream_id, nghttp2_data_provider2 *data_prd) { - auto nva = make_array(http2::make_nv_ls_nocopy(":status", status), - http2::make_nv_ls_nocopy("server", NGHTTPD_SERVER), - http2::make_nv_ls("date", sessions_->get_cached_date()), - http2::make_nv_ll("", "")); + auto nva = std::to_array({ + http2::make_field(":status"_sr, status), + http2::make_field("server"_sr, NGHTTPD_SERVER), + http2::make_field_v("date"_sr, sessions_->get_cached_date()), + {}, + }); size_t nvlen = 3; if (data_prd) { auto &trailer_names = get_config()->trailer_names; if (!trailer_names.empty()) { - nva[nvlen++] = http2::make_nv_ls_nocopy("trailer", trailer_names); + nva[nvlen++] = http2::make_field("trailer"_sr, trailer_names); } } @@ -997,7 +1003,7 @@ int Http2Handler::submit_response(const StringRef &status, int32_t stream_id, int Http2Handler::submit_non_final_response(const std::string &status, int32_t stream_id) { - auto nva = make_array(http2::make_nv_ls(":status", status)); + auto nva = std::to_array({http2::make_field_v(":status"_sr, status)}); return nghttp2_submit_headers(session_, NGHTTP2_FLAG_NONE, stream_id, nullptr, nva.data(), nva.size(), nullptr); } @@ -1010,13 +1016,12 @@ int Http2Handler::submit_push_promise(Stream *stream, authority = stream->header.host; } - auto scheme = get_config()->no_tls ? StringRef::from_lit("http") - : StringRef::from_lit("https"); + auto scheme = get_config()->no_tls ? "http"_sr : "https"_sr; - auto nva = make_array(http2::make_nv_ll(":method", "GET"), - http2::make_nv_ls_nocopy(":path", push_path), - http2::make_nv_ls_nocopy(":scheme", scheme), - http2::make_nv_ls_nocopy(":authority", authority)); + auto nva = std::to_array({http2::make_field(":method"_sr, "GET"_sr), + http2::make_field(":path"_sr, push_path), + http2::make_field(":scheme"_sr, scheme), + http2::make_field(":authority"_sr, authority)}); auto promised_stream_id = nghttp2_submit_push_promise( session_, NGHTTP2_FLAG_END_HEADERS, stream->stream_id, nva.data(), @@ -1029,7 +1034,7 @@ int Http2Handler::submit_push_promise(Stream *stream, auto promised_stream = std::make_unique(this, promised_stream_id); auto &promised_header = promised_stream->header; - promised_header.method = StringRef::from_lit("GET"); + promised_header.method = "GET"_sr; promised_header.path = push_path; promised_header.scheme = scheme; promised_header.authority = @@ -1103,7 +1108,8 @@ nghttp2_ssize file_read_callback(nghttp2_session *session, int32_t stream_id, std::vector nva; nva.reserve(config->trailer.size()); for (auto &kv : config->trailer) { - nva.push_back(http2::make_nv(kv.name, kv.value, kv.no_index)); + nva.push_back(http2::make_field_nv(kv.name, kv.value, + http2::no_index(kv.no_index))); } rv = nghttp2_submit_trailer(session, stream_id, nva.data(), nva.size()); if (rv != 0) { @@ -1140,10 +1146,9 @@ void prepare_status_response(Stream *stream, Http2Handler *hd, int status) { HeaderRefs headers; headers.reserve(2); - headers.emplace_back(StringRef::from_lit("content-type"), - StringRef::from_lit("text/html; charset=UTF-8")); + headers.emplace_back("content-type"_sr, "text/html; charset=UTF-8"_sr); headers.emplace_back( - StringRef::from_lit("content-length"), + "content-length"_sr, util::make_string_ref_uint(stream->balloc, file_ent->length)); hd->submit_response(StringRef{status_page->status}, stream->stream_id, headers, &data_prd); @@ -1167,15 +1172,13 @@ void prepare_echo_response(Stream *stream, Http2Handler *hd) { data_prd.read_callback = file_read_callback; HeaderRefs headers; - headers.emplace_back(StringRef::from_lit("nghttpd-response"), - StringRef::from_lit("echo")); + headers.emplace_back("nghttpd-response"_sr, "echo"_sr); if (!hd->get_config()->no_content_length) { - headers.emplace_back(StringRef::from_lit("content-length"), + headers.emplace_back("content-length"_sr, util::make_string_ref_uint(stream->balloc, length)); } - hd->submit_response(StringRef::from_lit("200"), stream->stream_id, headers, - &data_prd); + hd->submit_response("200"_sr, stream->stream_id, headers, &data_prd); } } // namespace @@ -1209,10 +1212,10 @@ void prepare_redirect_response(Stream *stream, Http2Handler *hd, authority = stream->header.host; } - auto location = concat_string_ref( - stream->balloc, scheme, StringRef::from_lit("://"), authority, path); + auto location = + concat_string_ref(stream->balloc, scheme, "://"_sr, authority, path); - auto headers = HeaderRefs{{StringRef::from_lit("location"), location}}; + auto headers = HeaderRefs{{"location"_sr, location}}; auto sessions = hd->get_sessions(); auto status_page = sessions->get_server()->get_status_page(status); @@ -1245,8 +1248,8 @@ void prepare_response(Stream *stream, Http2Handler *hd, auto query_pos = std::find(std::begin(reqpath), std::end(reqpath), '?'); if (query_pos != std::end(reqpath)) { // Do not response to this request to allow clients to test timeouts. - if (util::streq_l("nghttpd_do_not_respond_to_req=yes", - StringRef{query_pos, std::end(reqpath)})) { + if ("nghttpd_do_not_respond_to_req=yes"_sr == + StringRef{query_pos, std::end(reqpath)}) { return; } raw_path = StringRef{std::begin(reqpath), query_pos}; @@ -1278,7 +1281,7 @@ void prepare_response(Stream *stream, Http2Handler *hd, } if (!hd->get_config()->push.empty()) { - auto push_itr = hd->get_config()->push.find(path.str()); + auto push_itr = hd->get_config()->push.find(std::string{path}); if (allow_push && push_itr != std::end(hd->get_config()->push)) { for (auto &push_path : (*push_itr).second) { rv = hd->submit_push_promise(stream, StringRef{push_path}); @@ -1339,8 +1342,8 @@ void prepare_response(Stream *stream, Http2Handler *hd, if (buf.st_mode & S_IFDIR) { close(file); - auto reqpath = concat_string_ref(stream->balloc, raw_path, - StringRef::from_lit("/"), raw_query); + auto reqpath = + concat_string_ref(stream->balloc, raw_path, "/"_sr, raw_query); prepare_redirect_response(stream, hd, reqpath, 301); @@ -1370,16 +1373,15 @@ void prepare_response(Stream *stream, Http2Handler *hd, stream->file_ent = file_ent; if (last_mod_found && file_ent->mtime <= last_mod) { - hd->submit_response(StringRef::from_lit("304"), stream->stream_id, nullptr); + hd->submit_response("304"_sr, stream->stream_id, nullptr); return; } auto method = stream->header.method; - if (method == StringRef::from_lit("HEAD")) { - hd->submit_file_response(StringRef::from_lit("200"), stream, - file_ent->mtime, file_ent->length, - file_ent->content_type, nullptr); + if (method == "HEAD"_sr) { + hd->submit_file_response("200"_sr, stream, file_ent->mtime, + file_ent->length, file_ent->content_type, nullptr); return; } @@ -1390,8 +1392,8 @@ void prepare_response(Stream *stream, Http2Handler *hd, data_prd.source.fd = file_ent->fd; data_prd.read_callback = file_read_callback; - hd->submit_file_response(StringRef::from_lit("200"), stream, file_ent->mtime, - file_ent->length, file_ent->content_type, &data_prd); + hd->submit_file_response("200"_sr, stream, file_ent->mtime, file_ent->length, + file_ent->content_type, &data_prd); } } // namespace @@ -1425,7 +1427,7 @@ int on_header_callback2(nghttp2_session *session, const nghttp2_frame *frame, stream->header_buffer_size += namebuf.len + valuebuf.len; - auto token = http2::lookup_token(namebuf.base, namebuf.len); + auto token = http2::lookup_token(StringRef{namebuf.base, namebuf.len}); auto &header = stream->header; @@ -1528,14 +1530,13 @@ int hd_on_frame_recv_callback(nghttp2_session *session, auto expect100 = stream->header.expect; - if (util::strieq_l("100-continue", expect100)) { + if (util::strieq("100-continue"_sr, expect100)) { hd->submit_non_final_response("100", frame->hd.stream_id); } auto method = stream->header.method; if (hd->get_config()->echo_upload && - (method == StringRef::from_lit("POST") || - method == StringRef::from_lit("PUT"))) { + (method == "POST"_sr || method == "PUT"_sr)) { if (!prepare_upload_temp_store(stream, hd)) { hd->submit_rst_stream(stream, NGHTTP2_INTERNAL_ERROR); return 0; @@ -2129,7 +2130,8 @@ int HttpServer::run() { return -1; } - if (SSL_CTX_set_cipher_list(ssl_ctx, tls::DEFAULT_CIPHER_LIST) == 0) { + if (SSL_CTX_set_cipher_list(ssl_ctx, tls::DEFAULT_CIPHER_LIST.data()) == + 0) { std::cerr << ERR_error_string(ERR_get_error(), nullptr) << std::endl; return -1; } diff --git a/yass/third_party/nghttp2/src/HttpServer.h b/yass/third_party/nghttp2/src/HttpServer.h index 00fd6bf2b7..348f85af91 100644 --- a/yass/third_party/nghttp2/src/HttpServer.h +++ b/yass/third_party/nghttp2/src/HttpServer.h @@ -245,9 +245,10 @@ private: const Config *config_; }; -ssize_t file_read_callback(nghttp2_session *session, int32_t stream_id, - uint8_t *buf, size_t length, uint32_t *data_flags, - nghttp2_data_source *source, void *user_data); +nghttp2_ssize file_read_callback(nghttp2_session *session, int32_t stream_id, + uint8_t *buf, size_t length, + uint32_t *data_flags, + nghttp2_data_source *source, void *user_data); } // namespace nghttp2 diff --git a/yass/third_party/nghttp2/src/allocator.h b/yass/third_party/nghttp2/src/allocator.h index 363ee916ac..b4dee5a091 100644 --- a/yass/third_party/nghttp2/src/allocator.h +++ b/yass/third_party/nghttp2/src/allocator.h @@ -33,6 +33,7 @@ #include #include +#include #include "template.h" @@ -48,6 +49,18 @@ struct MemBlock { uint8_t *begin, *last, *end; }; +static_assert((sizeof(MemBlock) & 0xf) == 0); + +struct ChunkHead { + union { + size_t size; + uint64_t pad1; + }; + uint64_t pad2; +}; + +static_assert(sizeof(ChunkHead) == 16); + // BlockAllocator allocates memory block with given size at once, and // cuts the region from it when allocation is requested. If the // requested size is larger than given threshold (plus small internal @@ -88,7 +101,7 @@ struct BlockAllocator { void reset() { for (auto mb = retain; mb;) { auto next = mb->next; - delete[] reinterpret_cast(mb); + operator delete[](reinterpret_cast(mb), std::align_val_t(16)); mb = next; } @@ -97,36 +110,40 @@ struct BlockAllocator { } MemBlock *alloc_mem_block(size_t size) { - auto block = new uint8_t[sizeof(MemBlock) + size]; + auto block = new (std::align_val_t(16)) uint8_t[sizeof(MemBlock) + size]; auto mb = reinterpret_cast(block); mb->next = retain; - mb->begin = mb->last = block + sizeof(MemBlock); + mb->begin = mb->last = reinterpret_cast( + (reinterpret_cast(block + sizeof(MemBlock)) + 0xf) & ~0xf); mb->end = mb->begin + size; retain = mb; return mb; } + constexpr size_t alloc_unit(size_t size) { return sizeof(ChunkHead) + size; } + void *alloc(size_t size) { - if (size + sizeof(size_t) >= isolation_threshold) { - auto len = std::max(static_cast(16), size); + auto au = alloc_unit(size); + + if (au >= isolation_threshold) { + size = std::max(static_cast(16), size); // We will store the allocated size in size_t field. - auto mb = alloc_mem_block(len + sizeof(size_t)); - auto sp = reinterpret_cast(mb->begin); - *sp = len; + auto mb = alloc_mem_block(alloc_unit(size)); + auto ch = reinterpret_cast(mb->begin); + ch->size = size; mb->last = mb->end; - return mb->begin + sizeof(size_t); + return mb->begin + sizeof(ChunkHead); } - if (!head || - static_cast(head->end - head->last) < size + sizeof(size_t)) { + if (!head || static_cast(head->end - head->last) < au) { head = alloc_mem_block(block_size); } // We will store the allocated size in size_t field. - auto res = head->last + sizeof(size_t); - auto sp = reinterpret_cast(head->last); - *sp = size; + auto res = head->last + sizeof(ChunkHead); + auto ch = reinterpret_cast(head->last); + ch->size = size; head->last = reinterpret_cast( (reinterpret_cast(res + size) + 0xf) & ~0xf); @@ -137,8 +154,9 @@ struct BlockAllocator { // Returns allocated size for memory pointed by |ptr|. We assume // that |ptr| was returned from alloc() or realloc(). size_t get_alloc_length(void *ptr) { - return *reinterpret_cast(static_cast(ptr) - - sizeof(size_t)); + return reinterpret_cast(static_cast(ptr) - + sizeof(ChunkHead)) + ->size; } // Allocates memory of at least |size| bytes. If |ptr| is nullptr, @@ -253,19 +271,10 @@ StringRef realloc_concat_string_ref(BlockAllocator &alloc, return StringRef{dst, len}; } -struct ByteRef { - // The pointer to the beginning of the buffer. - uint8_t *base; - // The length of the buffer. - size_t len; -}; - -// Makes a buffer with given size. The resulting byte string might -// not be NULL-terminated. +// Makes an uninitialized buffer with given size. template -ByteRef make_byte_ref(BlockAllocator &alloc, size_t size) { - auto dst = static_cast(alloc.alloc(size)); - return {dst, size}; +std::span make_byte_ref(BlockAllocator &alloc, size_t size) { + return {static_cast(alloc.alloc(size)), size}; } } // namespace nghttp2 diff --git a/yass/third_party/nghttp2/src/app_helper.cc b/yass/third_party/nghttp2/src/app_helper.cc index 666d16cd7d..2ccecbeaf6 100644 --- a/yass/third_party/nghttp2/src/app_helper.cc +++ b/yass/third_party/nghttp2/src/app_helper.cc @@ -115,7 +115,7 @@ std::string strframetype(uint8_t type) { } std::string s = "extension(0x"; - s += util::format_hex(&type, 1); + s += util::format_hex(std::span{&type, 1}); s += ')'; return s; @@ -329,7 +329,7 @@ void print_frame(print_type ptype, const nghttp2_frame *frame) { case NGHTTP2_PING: print_frame_attr_indent(); fprintf(outfile, "(opaque_data=%s)\n", - util::format_hex(frame->ping.opaque_data, 8).c_str()); + util::format_hex(frame->ping.opaque_data).c_str()); break; case NGHTTP2_GOAWAY: print_frame_attr_indent(); diff --git a/yass/third_party/nghttp2/src/base64.h b/yass/third_party/nghttp2/src/base64.h index 1bd51afa1d..8789427876 100644 --- a/yass/third_party/nghttp2/src/base64.h +++ b/yass/third_party/nghttp2/src/base64.h @@ -204,18 +204,19 @@ template std::string decode(InputIt first, InputIt last) { } template -StringRef decode(BlockAllocator &balloc, InputIt first, InputIt last) { +std::span decode(BlockAllocator &balloc, InputIt first, + InputIt last) { auto len = std::distance(first, last); if (len % 4 != 0) { - return StringRef::from_lit(""); + return {}; } auto iov = make_byte_ref(balloc, len / 4 * 3 + 1); - auto p = iov.base; + auto p = std::begin(iov); p = decode(first, last, p); *p = '\0'; - return StringRef{iov.base, p}; + return {std::begin(iov), p}; } } // namespace base64 diff --git a/yass/third_party/nghttp2/src/base64_test.cc b/yass/third_party/nghttp2/src/base64_test.cc index 9ab770fb85..0aeadf7d39 100644 --- a/yass/third_party/nghttp2/src/base64_test.cc +++ b/yass/third_party/nghttp2/src/base64_test.cc @@ -33,6 +33,8 @@ #include "base64.h" +using namespace std::literals; + namespace nghttp2 { namespace { @@ -73,67 +75,68 @@ void test_base64_encode(void) { void test_base64_decode(void) { BlockAllocator balloc(4096, 4096); { - std::string in = "/w=="; + auto in = "/w=="sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("\xff", out); - assert_stdstring_equal( - "\xff", base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal("\xff"sv, out); + assert_stdsv_equal("\xff"sv, StringRef{base64::decode( + balloc, std::begin(in), std::end(in))}); } { - std::string in = "//4="; + auto in = "//4="sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("\xff\xfe", out); - assert_stdstring_equal( - "\xff\xfe", base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal("\xff\xfe"sv, out); + assert_stdsv_equal( + "\xff\xfe"sv, + StringRef{base64::decode(balloc, std::begin(in), std::end(in))}); } { - std::string in = "//79"; + auto in = "//79"sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("\xff\xfe\xfd", out); - assert_stdstring_equal( - "\xff\xfe\xfd", - base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal("\xff\xfe\xfd"sv, out); + assert_stdsv_equal( + "\xff\xfe\xfd"sv, + StringRef{base64::decode(balloc, std::begin(in), std::end(in))}); } { - std::string in = "//79/A=="; + auto in = "//79/A=="sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("\xff\xfe\xfd\xfc", out); - assert_stdstring_equal( - "\xff\xfe\xfd\xfc", - base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal("\xff\xfe\xfd\xfc"sv, out); + assert_stdsv_equal( + "\xff\xfe\xfd\xfc"sv, + StringRef{base64::decode(balloc, std::begin(in), std::end(in))}); } { // we check the number of valid input must be multiples of 4 - std::string in = "//79="; + auto in = "//79="sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("", out); - assert_stdstring_equal( - "", base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal(""sv, out); + assert_stdsv_equal( + ""sv, StringRef{base64::decode(balloc, std::begin(in), std::end(in))}); } { // ending invalid character at the boundary of multiples of 4 is // bad - std::string in = "bmdodHRw\n"; + auto in = "bmdodHRw\n"sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("", out); - assert_stdstring_equal( - "", base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal("", out); + assert_stdsv_equal( + ""sv, StringRef{base64::decode(balloc, std::begin(in), std::end(in))}); } { // after seeing '=', subsequent input must be also '='. - std::string in = "//79/A=A"; + auto in = "//79/A=A"sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("", out); - assert_stdstring_equal( - "", base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal(""sv, out); + assert_stdsv_equal( + ""sv, StringRef{base64::decode(balloc, std::begin(in), std::end(in))}); } { // additional '=' at the end is bad - std::string in = "//79/A======"; + auto in = "//79/A======"sv; auto out = base64::decode(std::begin(in), std::end(in)); - assert_stdstring_equal("", out); - assert_stdstring_equal( - "", base64::decode(balloc, std::begin(in), std::end(in)).str()); + assert_stdsv_equal(""sv, out); + assert_stdsv_equal( + ""sv, StringRef{base64::decode(balloc, std::begin(in), std::end(in))}); } } diff --git a/yass/third_party/nghttp2/src/deflatehd.cc b/yass/third_party/nghttp2/src/deflatehd.cc index ad472de2f8..e51bab1678 100644 --- a/yass/third_party/nghttp2/src/deflatehd.cc +++ b/yass/third_party/nghttp2/src/deflatehd.cc @@ -403,21 +403,21 @@ int main(int argc, char **argv) { case 's': { // --table-size auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { fprintf(stderr, "-s: Bad option value\n"); exit(EXIT_FAILURE); } - config.table_size = n; + config.table_size = *n; break; } case 'S': { // --deflate-table-size auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { fprintf(stderr, "-S: Bad option value\n"); exit(EXIT_FAILURE); } - config.deflate_table_size = n; + config.deflate_table_size = *n; break; } case 'd': diff --git a/yass/third_party/nghttp2/src/h2load.cc b/yass/third_party/nghttp2/src/h2load.cc index 4f9f00e0ac..43931f9d9e 100644 --- a/yass/third_party/nghttp2/src/h2load.cc +++ b/yass/third_party/nghttp2/src/h2load.cc @@ -47,6 +47,7 @@ #include #include #include +#include #include @@ -826,6 +827,7 @@ void Client::process_request_failure() { << std::endl; } +#ifndef NGHTTP2_OPENSSL_IS_BORINGSSL namespace { void print_server_tmp_key(SSL *ssl) { EVP_PKEY *key; @@ -847,7 +849,7 @@ void print_server_tmp_key(SSL *ssl) { std::cout << "DH " << EVP_PKEY_bits(key) << " bits" << std::endl; break; case EVP_PKEY_EC: { -#if OPENSSL_3_0_0_API +# if OPENSSL_3_0_0_API std::array curve_name; const char *cname; if (!EVP_PKEY_get_utf8_string_param(key, "group", curve_name.data(), @@ -856,7 +858,7 @@ void print_server_tmp_key(SSL *ssl) { } else { cname = curve_name.data(); } -#else // !OPENSSL_3_0_0_API +# else // !OPENSSL_3_0_0_API auto ec = EVP_PKEY_get1_EC_KEY(key); auto ec_del = defer(EC_KEY_free, ec); auto nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec)); @@ -864,7 +866,7 @@ void print_server_tmp_key(SSL *ssl) { if (!cname) { cname = OBJ_nid2sn(nid); } -#endif // !OPENSSL_3_0_0_API +# endif // !OPENSSL_3_0_0_API std::cout << "ECDH " << cname << " " << EVP_PKEY_bits(key) << " bits" << std::endl; @@ -877,6 +879,7 @@ void print_server_tmp_key(SSL *ssl) { } } } // namespace +#endif // !NGHTTP2_OPENSSL_IS_BORINGSSL void Client::report_tls_info() { if (worker->id == 0 && !worker->tls_info_report_done) { @@ -884,7 +887,9 @@ void Client::report_tls_info() { auto cipher = SSL_get_current_cipher(ssl); std::cout << "TLS Protocol: " << tls::get_tls_protocol(ssl) << "\n" << "Cipher: " << SSL_CIPHER_get_name(cipher) << std::endl; +#ifndef NGHTTP2_OPENSSL_IS_BORINGSSL print_server_tmp_key(ssl); +#endif // !NGHTTP2_OPENSSL_IS_BORINGSSL } } @@ -927,7 +932,7 @@ void Client::on_header(int32_t stream_id, const uint8_t *name, size_t namelen, } if (stream.status_success == -1 && namelen == 7 && - util::streq_l(":status", name, namelen)) { + ":status"_sr == StringRef{name, namelen}) { int status = 0; for (size_t i = 0; i < valuelen; ++i) { if ('0' <= value[i] && value[i] <= '9') { @@ -1101,20 +1106,19 @@ int Client::connection_made() { if (config.is_quic()) { #ifdef ENABLE_HTTP3 assert(session); - if (!util::streq(StringRef{&NGHTTP3_ALPN_H3[1]}, proto) && - !util::streq_l("h3-29", proto)) { + if ("h3"_sr != proto && "h3-29"_sr != proto) { return -1; } #endif // ENABLE_HTTP3 } else if (util::check_h2_is_selected(proto)) { session = std::make_unique(this); - } else if (util::streq(NGHTTP2_H1_1, proto)) { + } else if (NGHTTP2_H1_1 == proto) { session = std::make_unique(this); } // Just assign next_proto to selected_proto anyway to show the // negotiation result. - selected_proto = proto.str(); + selected_proto = proto; } else if (config.is_quic()) { std::cerr << "QUIC requires ALPN negotiation" << std::endl; return -1; @@ -1123,11 +1127,11 @@ int Client::connection_made() { << std::endl; for (const auto &proto : config.alpn_list) { - if (util::streq(NGHTTP2_H1_1_ALPN, StringRef{proto})) { + if (NGHTTP2_H1_1_ALPN == proto) { std::cout << "Server does not support ALPN. Falling back to HTTP/1.1." << std::endl; session = std::make_unique(this); - selected_proto = NGHTTP2_H1_1.str(); + selected_proto = NGHTTP2_H1_1; break; } } @@ -1155,7 +1159,7 @@ int Client::connection_made() { break; case Config::PROTO_HTTP1_1: session = std::make_unique(this); - selected_proto = NGHTTP2_H1_1.str(); + selected_proto = NGHTTP2_H1_1; break; default: // unreachable @@ -1861,7 +1865,7 @@ std::string get_reqline(const char *uri, const http_parser_url &u) { std::string reqline; if (util::has_uri_field(u, UF_PATH)) { - reqline = util::get_uri_field(uri, u, UF_PATH).str(); + reqline = util::get_uri_field(uri, u, UF_PATH); } else { reqline = "/"; } @@ -1876,20 +1880,20 @@ std::string get_reqline(const char *uri, const http_parser_url &u) { } // namespace namespace { -constexpr char UNIX_PATH_PREFIX[] = "unix:"; +constexpr auto UNIX_PATH_PREFIX = "unix:"_sr; } // namespace namespace { bool parse_base_uri(const StringRef &base_uri) { http_parser_url u{}; - if (http_parser_parse_url(base_uri.c_str(), base_uri.size(), 0, &u) != 0 || + if (http_parser_parse_url(base_uri.data(), base_uri.size(), 0, &u) != 0 || !util::has_uri_field(u, UF_SCHEMA) || !util::has_uri_field(u, UF_HOST)) { return false; } - config.scheme = util::get_uri_field(base_uri.c_str(), u, UF_SCHEMA).str(); - config.host = util::get_uri_field(base_uri.c_str(), u, UF_HOST).str(); - config.default_port = util::get_default_port(base_uri.c_str(), u); + config.scheme = util::get_uri_field(base_uri.data(), u, UF_SCHEMA); + config.host = util::get_uri_field(base_uri.data(), u, UF_HOST); + config.default_port = util::get_default_port(base_uri.data(), u); if (util::has_uri_field(u, UF_PORT)) { config.port = u.port; } else { @@ -2033,7 +2037,7 @@ namespace { int parse_header_table_size(uint32_t &dst, const char *opt, const char *optarg) { auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { std::cerr << "--" << opt << ": Bad option value: " << optarg << std::endl; return -1; } @@ -2044,7 +2048,7 @@ int parse_header_table_size(uint32_t &dst, const char *opt, return -1; } - dst = n; + dst = *n; return 0; } @@ -2086,7 +2090,7 @@ benchmarking tool for HTTP/2 server)" } // namespace namespace { -constexpr char DEFAULT_ALPN_LIST[] = "h2,h2-16,h2-14,http/1.1"; +constexpr auto DEFAULT_ALPN_LIST = "h2,h2-16,h2-14,http/1.1"_sr; } // namespace namespace { @@ -2373,21 +2377,21 @@ int main(int argc, char **argv) { switch (c) { case 'n': { auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-n: bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.nreqs = n; + config.nreqs = *n; nreqs_set_manually = true; break; } case 'c': { auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-c: bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.nclients = n; + config.nclients = *n; break; } case 'd': @@ -2399,55 +2403,55 @@ int main(int argc, char **argv) { << "no threads created." << std::endl; #else auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-t: bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.nthreads = n; + config.nthreads = *n; #endif // NOTHREADS break; } case 'm': { auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-m: bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.max_concurrent_streams = n; + config.max_concurrent_streams = *n; break; } case 'w': case 'W': { auto n = util::parse_uint(optarg); - if (n == -1 || n > 30) { + if (!n || n > 30) { std::cerr << "-" << static_cast(c) << ": specify the integer in the range [0, 30], inclusive" << std::endl; exit(EXIT_FAILURE); } if (c == 'w') { - config.window_bits = n; + config.window_bits = *n; } else { - config.connection_window_bits = n; + config.connection_window_bits = *n; } break; } case 'f': { auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { std::cerr << "--max-frame-size: bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - if (static_cast(n) < 16_k) { + if (static_cast(*n) < 16_k) { std::cerr << "--max-frame-size: minimum 16384" << std::endl; exit(EXIT_FAILURE); } - if (static_cast(n) > 16_m - 1) { + if (static_cast(*n) > 16_m - 1) { std::cerr << "--max-frame-size: maximum 16777215" << std::endl; exit(EXIT_FAILURE); } - config.max_frame_size = n; + config.max_frame_size = *n; break; } case 'H': { @@ -2481,8 +2485,7 @@ int main(int argc, char **argv) { break; case 'p': { auto proto = StringRef{optarg}; - if (util::strieq(StringRef::from_lit(NGHTTP2_CLEARTEXT_PROTO_VERSION_ID), - proto)) { + if (util::strieq(NGHTTP2_CLEARTEXT_PROTO_VERSION_ID ""_sr, proto)) { config.no_tls_proto = Config::PROTO_HTTP2; } else if (util::strieq(NGHTTP2_H1_1, proto)) { config.no_tls_proto = Config::PROTO_HTTP1_1; @@ -2494,7 +2497,7 @@ int main(int argc, char **argv) { } case 'r': { auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-r: bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } @@ -2503,36 +2506,40 @@ int main(int argc, char **argv) { << "must be positive." << std::endl; exit(EXIT_FAILURE); } - config.rate = n; + config.rate = *n; break; } - case 'T': - config.conn_active_timeout = util::parse_duration_with_unit(optarg); - if (!std::isfinite(config.conn_active_timeout)) { + case 'T': { + auto d = util::parse_duration_with_unit(optarg); + if (!d) { std::cerr << "-T: bad value for the conn_active_timeout wait time: " << optarg << std::endl; exit(EXIT_FAILURE); } + config.conn_active_timeout = *d; break; - case 'N': - config.conn_inactivity_timeout = util::parse_duration_with_unit(optarg); - if (!std::isfinite(config.conn_inactivity_timeout)) { + } + case 'N': { + auto d = util::parse_duration_with_unit(optarg); + if (!d) { std::cerr << "-N: bad value for the conn_inactivity_timeout wait time: " << optarg << std::endl; exit(EXIT_FAILURE); } + config.conn_inactivity_timeout = *d; break; + } case 'B': { auto arg = StringRef{optarg}; config.base_uri = ""; config.base_uri_unix = false; - if (util::istarts_with_l(arg, UNIX_PATH_PREFIX)) { + if (util::istarts_with(arg, UNIX_PATH_PREFIX)) { // UNIX domain socket path sockaddr_un un; - auto path = StringRef{std::begin(arg) + str_size(UNIX_PATH_PREFIX), - std::end(arg)}; + auto path = + StringRef{std::begin(arg) + UNIX_PATH_PREFIX.size(), std::end(arg)}; if (path.size() == 0 || path.size() + 1 > sizeof(un.sun_path)) { std::cerr << "--base-uri: invalid UNIX domain socket path: " << arg @@ -2555,16 +2562,18 @@ int main(int argc, char **argv) { exit(EXIT_FAILURE); } - config.base_uri = arg.str(); + config.base_uri = arg; break; } - case 'D': - config.duration = util::parse_duration_with_unit(optarg); - if (!std::isfinite(config.duration)) { + case 'D': { + auto d = util::parse_duration_with_unit(optarg); + if (!d) { std::cerr << "-D: value error " << optarg << std::endl; exit(EXIT_FAILURE); } + config.duration = *d; break; + } case 'v': config.verbose = true; break; @@ -2589,18 +2598,19 @@ int main(int argc, char **argv) { config.ifile = optarg; config.timing_script = true; break; - case 5: + case 5: { // rate-period - config.rate_period = util::parse_duration_with_unit(optarg); - if (!std::isfinite(config.rate_period)) { + auto d = util::parse_duration_with_unit(optarg); + if (!d) { std::cerr << "--rate-period: value error " << optarg << std::endl; exit(EXIT_FAILURE); } + config.rate_period = *d; break; + } case 6: // --h1 - config.alpn_list = - util::parse_config_str_list(StringRef::from_lit("http/1.1")); + config.alpn_list = util::parse_config_str_list("http/1.1"_sr); config.no_tls_proto = Config::PROTO_HTTP1_1; break; case 7: @@ -2617,14 +2627,16 @@ int main(int argc, char **argv) { exit(EXIT_FAILURE); } break; - case 9: + case 9: { // --warm-up-time - config.warm_up_time = util::parse_duration_with_unit(optarg); - if (!std::isfinite(config.warm_up_time)) { + auto d = util::parse_duration_with_unit(optarg); + if (!d) { std::cerr << "--warm-up-time: value error " << optarg << std::endl; exit(EXIT_FAILURE); } + config.warm_up_time = *d; break; + } case 10: // --log-file logfile = optarg; @@ -2634,11 +2646,12 @@ int main(int argc, char **argv) { auto p = util::split_hostport(StringRef{optarg}); int64_t port = 0; if (p.first.empty() || - (!p.second.empty() && (port = util::parse_uint(p.second)) == -1)) { + (!p.second.empty() && + (port = util::parse_uint(p.second).value_or(-1)) == -1)) { std::cerr << "--connect-to: Invalid value " << optarg << std::endl; exit(EXIT_FAILURE); } - config.connect_to_host = p.first.str(); + config.connect_to_host = p.first; config.connect_to_port = port; break; } @@ -2672,17 +2685,17 @@ int main(int argc, char **argv) { case 17: { // --max-udp-payload-size auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { std::cerr << "--max-udp-payload-size: bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - if (static_cast(n) > 64_k) { + if (static_cast(*n) > 64_k) { std::cerr << "--max-udp-payload-size: must not exceed 65536" << std::endl; exit(EXIT_FAILURE); } - config.max_udp_payload_size = n; + config.max_udp_payload_size = *n; break; } case 18: @@ -2723,8 +2736,7 @@ int main(int argc, char **argv) { } if (config.alpn_list.empty()) { - config.alpn_list = - util::parse_config_str_list(StringRef::from_lit(DEFAULT_ALPN_LIST)); + config.alpn_list = util::parse_config_str_list(DEFAULT_ALPN_LIST); } // serialize the APLN tokens @@ -2991,8 +3003,8 @@ int main(int argc, char **argv) { shared_nva.emplace_back("user-agent", user_agent); // list header fields that can be overridden. - auto override_hdrs = make_array(":authority", "host", ":method", - ":scheme", "user-agent"); + auto override_hdrs = std::to_array( + {":authority", "host", ":method", ":scheme", "user-agent"}); for (auto &kv : config.custom_headers) { if (std::find(std::begin(override_hdrs), std::end(override_hdrs), @@ -3059,15 +3071,15 @@ int main(int argc, char **argv) { // 2 for :path, and possible content-length nva.reserve(2 + shared_nva.size()); - nva.push_back(http2::make_nv_ls(":path", req)); + nva.push_back(http2::make_field_v(":path"_sr, req)); for (auto &nv : shared_nva) { - nva.push_back(http2::make_nv(nv.name, nv.value, false)); + nva.push_back(http2::make_field_nv(nv.name, nv.value)); } if (!content_length_str.empty()) { - nva.push_back(http2::make_nv(StringRef::from_lit("content-length"), - StringRef{content_length_str})); + nva.push_back( + http2::make_field_nv("content-length"_sr, content_length_str)); } config.nva.push_back(std::move(nva)); diff --git a/yass/third_party/nghttp2/src/h2load_quic.cc b/yass/third_party/nghttp2/src/h2load_quic.cc index 8b3c552fb8..5187ca093c 100644 --- a/yass/third_party/nghttp2/src/h2load_quic.cc +++ b/yass/third_party/nghttp2/src/h2load_quic.cc @@ -646,17 +646,13 @@ int Client::write_quic() { } std::array vec; - size_t pktcnt = 0; auto max_udp_payload_size = ngtcp2_conn_get_max_tx_udp_payload_size(quic.conn); -#ifdef UDP_SEGMENT auto path_max_udp_payload_size = ngtcp2_conn_get_path_max_tx_udp_payload_size(quic.conn); -#endif // UDP_SEGMENT - auto max_pktcnt = - std::max(ngtcp2_conn_get_send_quantum(quic.conn) / max_udp_payload_size, - static_cast(1)); uint8_t *bufpos = quic.tx.data.get(); + auto bufleft = std::max(ngtcp2_conn_get_send_quantum(quic.conn), + path_max_udp_payload_size); ngtcp2_path_storage ps; size_t gso_size = 0; @@ -686,9 +682,11 @@ int Client::write_quic() { flags |= NGTCP2_WRITE_STREAM_FLAG_FIN; } + auto buflen = bufleft >= max_udp_payload_size ? max_udp_payload_size + : path_max_udp_payload_size; auto nwrite = ngtcp2_conn_writev_stream( - quic.conn, &ps.path, nullptr, bufpos, max_udp_payload_size, &ndatalen, - flags, stream_id, reinterpret_cast(v), vcnt, ts); + quic.conn, &ps.path, nullptr, bufpos, buflen, &ndatalen, flags, + stream_id, reinterpret_cast(v), vcnt, ts); if (nwrite < 0) { switch (nwrite) { case NGTCP2_ERR_STREAM_DATA_BLOCKED: @@ -730,7 +728,11 @@ int Client::write_quic() { return 0; } + auto first_pkt = bufpos == quic.tx.data.get(); + (void)first_pkt; + bufpos += nwrite; + bufleft -= nwrite; #ifdef UDP_SEGMENT if (worker->config->no_udp_gso) { @@ -745,7 +747,7 @@ int Client::write_quic() { return 0; } - if (++pktcnt == max_pktcnt) { + if (bufleft < path_max_udp_payload_size) { signal_write(); return 0; } @@ -758,7 +760,7 @@ int Client::write_quic() { #endif // UDP_SEGMENT #ifdef UDP_SEGMENT - if (pktcnt == 0) { + if (first_pkt) { gso_size = nwrite; } else if (static_cast(nwrite) > gso_size || (gso_size > path_max_udp_payload_size && @@ -784,7 +786,8 @@ int Client::write_quic() { } // Assume that the path does not change. - if (++pktcnt == max_pktcnt || static_cast(nwrite) < gso_size) { + if (bufleft < path_max_udp_payload_size || + static_cast(nwrite) < gso_size) { auto data = quic.tx.data.get(); auto datalen = bufpos - quic.tx.data.get(); rv = write_udp(ps.path.remote.addr, ps.path.remote.addrlen, data, datalen, diff --git a/yass/third_party/nghttp2/src/http2.cc b/yass/third_party/nghttp2/src/http2.cc index 661c4c91dc..28152299cf 100644 --- a/yass/third_party/nghttp2/src/http2.cc +++ b/yass/third_party/nghttp2/src/http2.cc @@ -35,107 +35,107 @@ namespace http2 { StringRef get_reason_phrase(unsigned int status_code) { switch (status_code) { case 100: - return StringRef::from_lit("Continue"); + return "Continue"_sr; case 101: - return StringRef::from_lit("Switching Protocols"); + return "Switching Protocols"_sr; case 103: - return StringRef::from_lit("Early Hints"); + return "Early Hints"_sr; case 200: - return StringRef::from_lit("OK"); + return "OK"_sr; case 201: - return StringRef::from_lit("Created"); + return "Created"_sr; case 202: - return StringRef::from_lit("Accepted"); + return "Accepted"_sr; case 203: - return StringRef::from_lit("Non-Authoritative Information"); + return "Non-Authoritative Information"_sr; case 204: - return StringRef::from_lit("No Content"); + return "No Content"_sr; case 205: - return StringRef::from_lit("Reset Content"); + return "Reset Content"_sr; case 206: - return StringRef::from_lit("Partial Content"); + return "Partial Content"_sr; case 300: - return StringRef::from_lit("Multiple Choices"); + return "Multiple Choices"_sr; case 301: - return StringRef::from_lit("Moved Permanently"); + return "Moved Permanently"_sr; case 302: - return StringRef::from_lit("Found"); + return "Found"_sr; case 303: - return StringRef::from_lit("See Other"); + return "See Other"_sr; case 304: - return StringRef::from_lit("Not Modified"); + return "Not Modified"_sr; case 305: - return StringRef::from_lit("Use Proxy"); - // case 306: return StringRef::from_lit("(Unused)"); + return "Use Proxy"_sr; + // case 306: return "(Unused)"_sr; case 307: - return StringRef::from_lit("Temporary Redirect"); + return "Temporary Redirect"_sr; case 308: - return StringRef::from_lit("Permanent Redirect"); + return "Permanent Redirect"_sr; case 400: - return StringRef::from_lit("Bad Request"); + return "Bad Request"_sr; case 401: - return StringRef::from_lit("Unauthorized"); + return "Unauthorized"_sr; case 402: - return StringRef::from_lit("Payment Required"); + return "Payment Required"_sr; case 403: - return StringRef::from_lit("Forbidden"); + return "Forbidden"_sr; case 404: - return StringRef::from_lit("Not Found"); + return "Not Found"_sr; case 405: - return StringRef::from_lit("Method Not Allowed"); + return "Method Not Allowed"_sr; case 406: - return StringRef::from_lit("Not Acceptable"); + return "Not Acceptable"_sr; case 407: - return StringRef::from_lit("Proxy Authentication Required"); + return "Proxy Authentication Required"_sr; case 408: - return StringRef::from_lit("Request Timeout"); + return "Request Timeout"_sr; case 409: - return StringRef::from_lit("Conflict"); + return "Conflict"_sr; case 410: - return StringRef::from_lit("Gone"); + return "Gone"_sr; case 411: - return StringRef::from_lit("Length Required"); + return "Length Required"_sr; case 412: - return StringRef::from_lit("Precondition Failed"); + return "Precondition Failed"_sr; case 413: - return StringRef::from_lit("Payload Too Large"); + return "Payload Too Large"_sr; case 414: - return StringRef::from_lit("URI Too Long"); + return "URI Too Long"_sr; case 415: - return StringRef::from_lit("Unsupported Media Type"); + return "Unsupported Media Type"_sr; case 416: - return StringRef::from_lit("Requested Range Not Satisfiable"); + return "Requested Range Not Satisfiable"_sr; case 417: - return StringRef::from_lit("Expectation Failed"); + return "Expectation Failed"_sr; case 421: - return StringRef::from_lit("Misdirected Request"); + return "Misdirected Request"_sr; case 425: // https://tools.ietf.org/html/rfc8470 - return StringRef::from_lit("Too Early"); + return "Too Early"_sr; case 426: - return StringRef::from_lit("Upgrade Required"); + return "Upgrade Required"_sr; case 428: - return StringRef::from_lit("Precondition Required"); + return "Precondition Required"_sr; case 429: - return StringRef::from_lit("Too Many Requests"); + return "Too Many Requests"_sr; case 431: - return StringRef::from_lit("Request Header Fields Too Large"); + return "Request Header Fields Too Large"_sr; case 451: - return StringRef::from_lit("Unavailable For Legal Reasons"); + return "Unavailable For Legal Reasons"_sr; case 500: - return StringRef::from_lit("Internal Server Error"); + return "Internal Server Error"_sr; case 501: - return StringRef::from_lit("Not Implemented"); + return "Not Implemented"_sr; case 502: - return StringRef::from_lit("Bad Gateway"); + return "Bad Gateway"_sr; case 503: - return StringRef::from_lit("Service Unavailable"); + return "Service Unavailable"_sr; case 504: - return StringRef::from_lit("Gateway Timeout"); + return "Gateway Timeout"_sr; case 505: - return StringRef::from_lit("HTTP Version Not Supported"); + return "HTTP Version Not Supported"_sr; case 511: - return StringRef::from_lit("Network Authentication Required"); + return "Network Authentication Required"_sr; default: return StringRef{}; } @@ -144,104 +144,104 @@ StringRef get_reason_phrase(unsigned int status_code) { StringRef stringify_status(BlockAllocator &balloc, unsigned int status_code) { switch (status_code) { case 100: - return StringRef::from_lit("100"); + return "100"_sr; case 101: - return StringRef::from_lit("101"); + return "101"_sr; case 103: - return StringRef::from_lit("103"); + return "103"_sr; case 200: - return StringRef::from_lit("200"); + return "200"_sr; case 201: - return StringRef::from_lit("201"); + return "201"_sr; case 202: - return StringRef::from_lit("202"); + return "202"_sr; case 203: - return StringRef::from_lit("203"); + return "203"_sr; case 204: - return StringRef::from_lit("204"); + return "204"_sr; case 205: - return StringRef::from_lit("205"); + return "205"_sr; case 206: - return StringRef::from_lit("206"); + return "206"_sr; case 300: - return StringRef::from_lit("300"); + return "300"_sr; case 301: - return StringRef::from_lit("301"); + return "301"_sr; case 302: - return StringRef::from_lit("302"); + return "302"_sr; case 303: - return StringRef::from_lit("303"); + return "303"_sr; case 304: - return StringRef::from_lit("304"); + return "304"_sr; case 305: - return StringRef::from_lit("305"); - // case 306: return StringRef::from_lit("306"); + return "305"_sr; + // case 306: return "306"_sr; case 307: - return StringRef::from_lit("307"); + return "307"_sr; case 308: - return StringRef::from_lit("308"); + return "308"_sr; case 400: - return StringRef::from_lit("400"); + return "400"_sr; case 401: - return StringRef::from_lit("401"); + return "401"_sr; case 402: - return StringRef::from_lit("402"); + return "402"_sr; case 403: - return StringRef::from_lit("403"); + return "403"_sr; case 404: - return StringRef::from_lit("404"); + return "404"_sr; case 405: - return StringRef::from_lit("405"); + return "405"_sr; case 406: - return StringRef::from_lit("406"); + return "406"_sr; case 407: - return StringRef::from_lit("407"); + return "407"_sr; case 408: - return StringRef::from_lit("408"); + return "408"_sr; case 409: - return StringRef::from_lit("409"); + return "409"_sr; case 410: - return StringRef::from_lit("410"); + return "410"_sr; case 411: - return StringRef::from_lit("411"); + return "411"_sr; case 412: - return StringRef::from_lit("412"); + return "412"_sr; case 413: - return StringRef::from_lit("413"); + return "413"_sr; case 414: - return StringRef::from_lit("414"); + return "414"_sr; case 415: - return StringRef::from_lit("415"); + return "415"_sr; case 416: - return StringRef::from_lit("416"); + return "416"_sr; case 417: - return StringRef::from_lit("417"); + return "417"_sr; case 421: - return StringRef::from_lit("421"); + return "421"_sr; case 426: - return StringRef::from_lit("426"); + return "426"_sr; case 428: - return StringRef::from_lit("428"); + return "428"_sr; case 429: - return StringRef::from_lit("429"); + return "429"_sr; case 431: - return StringRef::from_lit("431"); + return "431"_sr; case 451: - return StringRef::from_lit("451"); + return "451"_sr; case 500: - return StringRef::from_lit("500"); + return "500"_sr; case 501: - return StringRef::from_lit("501"); + return "501"_sr; case 502: - return StringRef::from_lit("502"); + return "502"_sr; case 503: - return StringRef::from_lit("503"); + return "503"_sr; case 504: - return StringRef::from_lit("504"); + return "504"_sr; case 505: - return StringRef::from_lit("505"); + return "505"_sr; case 511: - return StringRef::from_lit("511"); + return "511"_sr; default: return util::make_string_ref_uint(balloc, status_code); } @@ -278,27 +278,16 @@ void copy_url_component(std::string &dest, const http_parser_url *u, int field, } } -Headers::value_type to_header(const uint8_t *name, size_t namelen, - const uint8_t *value, size_t valuelen, +Headers::value_type to_header(const StringRef &name, const StringRef &value, bool no_index, int32_t token) { - return Header(std::string(reinterpret_cast(name), namelen), - std::string(reinterpret_cast(value), valuelen), - no_index, token); + return Header(std::string{std::begin(name), std::end(name)}, + std::string{std::begin(value), std::end(value)}, no_index, + token); } -void add_header(Headers &nva, const uint8_t *name, size_t namelen, - const uint8_t *value, size_t valuelen, bool no_index, - int32_t token) { - if (valuelen > 0) { - size_t i, j; - for (i = 0; i < valuelen && (value[i] == ' ' || value[i] == '\t'); ++i) - ; - for (j = valuelen - 1; j > i && (value[j] == ' ' || value[j] == '\t'); --j) - ; - value += i; - valuelen -= i + (valuelen - j - 1); - } - nva.push_back(to_header(name, namelen, value, valuelen, no_index, token)); +void add_header(Headers &nva, const StringRef &name, const StringRef &value, + bool no_index, int32_t token) { + nva.push_back(to_header(name, value, no_index, token)); } const Headers::value_type *get_header(const Headers &nva, const char *name) { @@ -315,56 +304,6 @@ bool non_empty_value(const HeaderRefs::value_type *nv) { return nv && !nv->value.empty(); } -namespace { -nghttp2_nv make_nv_internal(const std::string &name, const std::string &value, - bool no_index, uint8_t nv_flags) { - uint8_t flags; - - flags = - nv_flags | (no_index ? NGHTTP2_NV_FLAG_NO_INDEX : NGHTTP2_NV_FLAG_NONE); - - return {(uint8_t *)name.c_str(), (uint8_t *)value.c_str(), name.size(), - value.size(), flags}; -} -} // namespace - -namespace { -nghttp2_nv make_nv_internal(const StringRef &name, const StringRef &value, - bool no_index, uint8_t nv_flags) { - uint8_t flags; - - flags = - nv_flags | (no_index ? NGHTTP2_NV_FLAG_NO_INDEX : NGHTTP2_NV_FLAG_NONE); - - return {(uint8_t *)name.c_str(), (uint8_t *)value.c_str(), name.size(), - value.size(), flags}; -} -} // namespace - -nghttp2_nv make_nv(const std::string &name, const std::string &value, - bool no_index) { - return make_nv_internal(name, value, no_index, NGHTTP2_NV_FLAG_NONE); -} - -nghttp2_nv make_nv(const StringRef &name, const StringRef &value, - bool no_index) { - return make_nv_internal(name, value, no_index, NGHTTP2_NV_FLAG_NONE); -} - -nghttp2_nv make_nv_nocopy(const std::string &name, const std::string &value, - bool no_index) { - return make_nv_internal(name, value, no_index, - NGHTTP2_NV_FLAG_NO_COPY_NAME | - NGHTTP2_NV_FLAG_NO_COPY_VALUE); -} - -nghttp2_nv make_nv_nocopy(const StringRef &name, const StringRef &value, - bool no_index) { - return make_nv_internal(name, value, no_index, - NGHTTP2_NV_FLAG_NO_COPY_NAME | - NGHTTP2_NV_FLAG_NO_COPY_VALUE); -} - namespace { void copy_headers_to_nva_internal(std::vector &nva, const HeaderRefs &headers, uint8_t nv_flags, @@ -459,8 +398,8 @@ void copy_headers_to_nva_internal(std::vector &nva, it_via = it; break; } - nva.push_back( - make_nv_internal(kv->name, kv->value, kv->no_index, nv_flags)); + nva.push_back(make_field_flags(kv->name, kv->value, + nv_flags | no_index(kv->no_index))); } } } // namespace @@ -617,7 +556,7 @@ void dump_nv(FILE *out, const Headers &nva) { void dump_nv(FILE *out, const HeaderRefs &nva) { for (auto &nv : nva) { - fprintf(out, "%s: %s\n", nv.name.c_str(), nv.value.c_str()); + fprintf(out, "%s: %s\n", nv.name.data(), nv.value.data()); } fputc('\n', out); fflush(out); @@ -665,7 +604,7 @@ StringRef rewrite_location_uri(BlockAllocator &balloc, const StringRef &uri, } auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; + auto p = std::begin(iov); if (!request_authority.empty()) { p = std::copy(std::begin(upstream_scheme), std::end(upstream_scheme), p); @@ -690,7 +629,7 @@ StringRef rewrite_location_uri(BlockAllocator &balloc, const StringRef &uri, *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } int parse_http_status_code(const StringRef &src) { @@ -714,18 +653,14 @@ int parse_http_status_code(const StringRef &src) { return status; } -int lookup_token(const StringRef &name) { - return lookup_token(name.byte(), name.size()); -} - // This function was generated by genheaderfunc.py. Inspired by h2o // header lookup. https://github.com/h2o/h2o -int lookup_token(const uint8_t *name, size_t namelen) { - switch (namelen) { +int lookup_token(const StringRef &name) { + switch (name.size()) { case 2: switch (name[1]) { case 'e': - if (util::streq_l("t", name, 1)) { + if (util::streq("t"_sr, name, 1)) { return HD_TE; } break; @@ -734,7 +669,7 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 3: switch (name[2]) { case 'a': - if (util::streq_l("vi", name, 2)) { + if (util::streq("vi"_sr, name, 2)) { return HD_VIA; } break; @@ -743,17 +678,17 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 4: switch (name[3]) { case 'e': - if (util::streq_l("dat", name, 3)) { + if (util::streq("dat"_sr, name, 3)) { return HD_DATE; } break; case 'k': - if (util::streq_l("lin", name, 3)) { + if (util::streq("lin"_sr, name, 3)) { return HD_LINK; } break; case 't': - if (util::streq_l("hos", name, 3)) { + if (util::streq("hos"_sr, name, 3)) { return HD_HOST; } break; @@ -762,12 +697,12 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 5: switch (name[4]) { case 'h': - if (util::streq_l(":pat", name, 4)) { + if (util::streq(":pat"_sr, name, 4)) { return HD__PATH; } break; case 't': - if (util::streq_l(":hos", name, 4)) { + if (util::streq(":hos"_sr, name, 4)) { return HD__HOST; } break; @@ -776,17 +711,17 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 6: switch (name[5]) { case 'e': - if (util::streq_l("cooki", name, 5)) { + if (util::streq("cooki"_sr, name, 5)) { return HD_COOKIE; } break; case 'r': - if (util::streq_l("serve", name, 5)) { + if (util::streq("serve"_sr, name, 5)) { return HD_SERVER; } break; case 't': - if (util::streq_l("expec", name, 5)) { + if (util::streq("expec"_sr, name, 5)) { return HD_EXPECT; } break; @@ -795,30 +730,30 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 7: switch (name[6]) { case 'c': - if (util::streq_l("alt-sv", name, 6)) { + if (util::streq("alt-sv"_sr, name, 6)) { return HD_ALT_SVC; } break; case 'd': - if (util::streq_l(":metho", name, 6)) { + if (util::streq(":metho"_sr, name, 6)) { return HD__METHOD; } break; case 'e': - if (util::streq_l(":schem", name, 6)) { + if (util::streq(":schem"_sr, name, 6)) { return HD__SCHEME; } - if (util::streq_l("upgrad", name, 6)) { + if (util::streq("upgrad"_sr, name, 6)) { return HD_UPGRADE; } break; case 'r': - if (util::streq_l("traile", name, 6)) { + if (util::streq("traile"_sr, name, 6)) { return HD_TRAILER; } break; case 's': - if (util::streq_l(":statu", name, 6)) { + if (util::streq(":statu"_sr, name, 6)) { return HD__STATUS; } break; @@ -827,12 +762,12 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 8: switch (name[7]) { case 'n': - if (util::streq_l("locatio", name, 7)) { + if (util::streq("locatio"_sr, name, 7)) { return HD_LOCATION; } break; case 'y': - if (util::streq_l("priorit", name, 7)) { + if (util::streq("priorit"_sr, name, 7)) { return HD_PRIORITY; } break; @@ -841,12 +776,12 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 9: switch (name[8]) { case 'd': - if (util::streq_l("forwarde", name, 8)) { + if (util::streq("forwarde"_sr, name, 8)) { return HD_FORWARDED; } break; case 'l': - if (util::streq_l(":protoco", name, 8)) { + if (util::streq(":protoco"_sr, name, 8)) { return HD__PROTOCOL; } break; @@ -855,27 +790,27 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 10: switch (name[9]) { case 'a': - if (util::streq_l("early-dat", name, 9)) { + if (util::streq("early-dat"_sr, name, 9)) { return HD_EARLY_DATA; } break; case 'e': - if (util::streq_l("keep-aliv", name, 9)) { + if (util::streq("keep-aliv"_sr, name, 9)) { return HD_KEEP_ALIVE; } break; case 'n': - if (util::streq_l("connectio", name, 9)) { + if (util::streq("connectio"_sr, name, 9)) { return HD_CONNECTION; } break; case 't': - if (util::streq_l("user-agen", name, 9)) { + if (util::streq("user-agen"_sr, name, 9)) { return HD_USER_AGENT; } break; case 'y': - if (util::streq_l(":authorit", name, 9)) { + if (util::streq(":authorit"_sr, name, 9)) { return HD__AUTHORITY; } break; @@ -884,7 +819,7 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 12: switch (name[11]) { case 'e': - if (util::streq_l("content-typ", name, 11)) { + if (util::streq("content-typ"_sr, name, 11)) { return HD_CONTENT_TYPE; } break; @@ -893,7 +828,7 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 13: switch (name[12]) { case 'l': - if (util::streq_l("cache-contro", name, 12)) { + if (util::streq("cache-contro"_sr, name, 12)) { return HD_CACHE_CONTROL; } break; @@ -902,12 +837,12 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 14: switch (name[13]) { case 'h': - if (util::streq_l("content-lengt", name, 13)) { + if (util::streq("content-lengt"_sr, name, 13)) { return HD_CONTENT_LENGTH; } break; case 's': - if (util::streq_l("http2-setting", name, 13)) { + if (util::streq("http2-setting"_sr, name, 13)) { return HD_HTTP2_SETTINGS; } break; @@ -916,17 +851,17 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 15: switch (name[14]) { case 'e': - if (util::streq_l("accept-languag", name, 14)) { + if (util::streq("accept-languag"_sr, name, 14)) { return HD_ACCEPT_LANGUAGE; } break; case 'g': - if (util::streq_l("accept-encodin", name, 14)) { + if (util::streq("accept-encodin"_sr, name, 14)) { return HD_ACCEPT_ENCODING; } break; case 'r': - if (util::streq_l("x-forwarded-fo", name, 14)) { + if (util::streq("x-forwarded-fo"_sr, name, 14)) { return HD_X_FORWARDED_FOR; } break; @@ -935,7 +870,7 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 16: switch (name[15]) { case 'n': - if (util::streq_l("proxy-connectio", name, 15)) { + if (util::streq("proxy-connectio"_sr, name, 15)) { return HD_PROXY_CONNECTION; } break; @@ -944,22 +879,22 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 17: switch (name[16]) { case 'e': - if (util::streq_l("if-modified-sinc", name, 16)) { + if (util::streq("if-modified-sinc"_sr, name, 16)) { return HD_IF_MODIFIED_SINCE; } break; case 'g': - if (util::streq_l("transfer-encodin", name, 16)) { + if (util::streq("transfer-encodin"_sr, name, 16)) { return HD_TRANSFER_ENCODING; } break; case 'o': - if (util::streq_l("x-forwarded-prot", name, 16)) { + if (util::streq("x-forwarded-prot"_sr, name, 16)) { return HD_X_FORWARDED_PROTO; } break; case 'y': - if (util::streq_l("sec-websocket-ke", name, 16)) { + if (util::streq("sec-websocket-ke"_sr, name, 16)) { return HD_SEC_WEBSOCKET_KEY; } break; @@ -968,7 +903,7 @@ int lookup_token(const uint8_t *name, size_t namelen) { case 20: switch (name[19]) { case 't': - if (util::streq_l("sec-websocket-accep", name, 19)) { + if (util::streq("sec-websocket-accep"_sr, name, 19)) { return HD_SEC_WEBSOCKET_ACCEPT; } break; @@ -1384,7 +1319,8 @@ std::string path_join(const StringRef &base_path, const StringRef &base_query, const StringRef &rel_path, const StringRef &rel_query) { BlockAllocator balloc(1024, 1024); - return path_join(balloc, base_path, base_query, rel_path, rel_query).str(); + return std::string{ + path_join(balloc, base_path, base_query, rel_path, rel_query)}; } bool expect_response_body(int status_code) { @@ -1400,25 +1336,21 @@ bool expect_response_body(int method_token, int status_code) { return method_token != HTTP_HEAD && expect_response_body(status_code); } -int lookup_method_token(const StringRef &name) { - return lookup_method_token(name.byte(), name.size()); -} - // This function was generated by genmethodfunc.py. -int lookup_method_token(const uint8_t *name, size_t namelen) { - switch (namelen) { +int lookup_method_token(const StringRef &name) { + switch (name.size()) { case 3: switch (name[2]) { case 'L': - if (util::streq_l("AC", name, 2)) { + if (util::streq("AC"_sr, name, 2)) { return HTTP_ACL; } break; case 'T': - if (util::streq_l("GE", name, 2)) { + if (util::streq("GE"_sr, name, 2)) { return HTTP_GET; } - if (util::streq_l("PU", name, 2)) { + if (util::streq("PU"_sr, name, 2)) { return HTTP_PUT; } break; @@ -1427,33 +1359,33 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 4: switch (name[3]) { case 'D': - if (util::streq_l("BIN", name, 3)) { + if (util::streq("BIN"_sr, name, 3)) { return HTTP_BIND; } - if (util::streq_l("HEA", name, 3)) { + if (util::streq("HEA"_sr, name, 3)) { return HTTP_HEAD; } break; case 'E': - if (util::streq_l("MOV", name, 3)) { + if (util::streq("MOV"_sr, name, 3)) { return HTTP_MOVE; } break; case 'K': - if (util::streq_l("LIN", name, 3)) { + if (util::streq("LIN"_sr, name, 3)) { return HTTP_LINK; } - if (util::streq_l("LOC", name, 3)) { + if (util::streq("LOC"_sr, name, 3)) { return HTTP_LOCK; } break; case 'T': - if (util::streq_l("POS", name, 3)) { + if (util::streq("POS"_sr, name, 3)) { return HTTP_POST; } break; case 'Y': - if (util::streq_l("COP", name, 3)) { + if (util::streq("COP"_sr, name, 3)) { return HTTP_COPY; } break; @@ -1462,23 +1394,23 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 5: switch (name[4]) { case 'E': - if (util::streq_l("MERG", name, 4)) { + if (util::streq("MERG"_sr, name, 4)) { return HTTP_MERGE; } - if (util::streq_l("PURG", name, 4)) { + if (util::streq("PURG"_sr, name, 4)) { return HTTP_PURGE; } - if (util::streq_l("TRAC", name, 4)) { + if (util::streq("TRAC"_sr, name, 4)) { return HTTP_TRACE; } break; case 'H': - if (util::streq_l("PATC", name, 4)) { + if (util::streq("PATC"_sr, name, 4)) { return HTTP_PATCH; } break; case 'L': - if (util::streq_l("MKCO", name, 4)) { + if (util::streq("MKCO"_sr, name, 4)) { return HTTP_MKCOL; } break; @@ -1487,41 +1419,41 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 6: switch (name[5]) { case 'D': - if (util::streq_l("REBIN", name, 5)) { + if (util::streq("REBIN"_sr, name, 5)) { return HTTP_REBIND; } - if (util::streq_l("UNBIN", name, 5)) { + if (util::streq("UNBIN"_sr, name, 5)) { return HTTP_UNBIND; } break; case 'E': - if (util::streq_l("DELET", name, 5)) { + if (util::streq("DELET"_sr, name, 5)) { return HTTP_DELETE; } - if (util::streq_l("SOURC", name, 5)) { + if (util::streq("SOURC"_sr, name, 5)) { return HTTP_SOURCE; } break; case 'H': - if (util::streq_l("SEARC", name, 5)) { + if (util::streq("SEARC"_sr, name, 5)) { return HTTP_SEARCH; } break; case 'K': - if (util::streq_l("UNLIN", name, 5)) { + if (util::streq("UNLIN"_sr, name, 5)) { return HTTP_UNLINK; } - if (util::streq_l("UNLOC", name, 5)) { + if (util::streq("UNLOC"_sr, name, 5)) { return HTTP_UNLOCK; } break; case 'T': - if (util::streq_l("REPOR", name, 5)) { + if (util::streq("REPOR"_sr, name, 5)) { return HTTP_REPORT; } break; case 'Y': - if (util::streq_l("NOTIF", name, 5)) { + if (util::streq("NOTIF"_sr, name, 5)) { return HTTP_NOTIFY; } break; @@ -1530,17 +1462,17 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 7: switch (name[6]) { case 'H': - if (util::streq_l("MSEARC", name, 6)) { + if (util::streq("MSEARC"_sr, name, 6)) { return HTTP_MSEARCH; } break; case 'S': - if (util::streq_l("OPTION", name, 6)) { + if (util::streq("OPTION"_sr, name, 6)) { return HTTP_OPTIONS; } break; case 'T': - if (util::streq_l("CONNEC", name, 6)) { + if (util::streq("CONNEC"_sr, name, 6)) { return HTTP_CONNECT; } break; @@ -1549,12 +1481,12 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 8: switch (name[7]) { case 'D': - if (util::streq_l("PROPFIN", name, 7)) { + if (util::streq("PROPFIN"_sr, name, 7)) { return HTTP_PROPFIND; } break; case 'T': - if (util::streq_l("CHECKOU", name, 7)) { + if (util::streq("CHECKOU"_sr, name, 7)) { return HTTP_CHECKOUT; } break; @@ -1563,12 +1495,12 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 9: switch (name[8]) { case 'E': - if (util::streq_l("SUBSCRIB", name, 8)) { + if (util::streq("SUBSCRIB"_sr, name, 8)) { return HTTP_SUBSCRIBE; } break; case 'H': - if (util::streq_l("PROPPATC", name, 8)) { + if (util::streq("PROPPATC"_sr, name, 8)) { return HTTP_PROPPATCH; } break; @@ -1577,12 +1509,12 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 10: switch (name[9]) { case 'R': - if (util::streq_l("MKCALENDA", name, 9)) { + if (util::streq("MKCALENDA"_sr, name, 9)) { return HTTP_MKCALENDAR; } break; case 'Y': - if (util::streq_l("MKACTIVIT", name, 9)) { + if (util::streq("MKACTIVIT"_sr, name, 9)) { return HTTP_MKACTIVITY; } break; @@ -1591,7 +1523,7 @@ int lookup_method_token(const uint8_t *name, size_t namelen) { case 11: switch (name[10]) { case 'E': - if (util::streq_l("UNSUBSCRIB", name, 10)) { + if (util::streq("UNSUBSCRIB"_sr, name, 10)) { return HTTP_UNSUBSCRIBE; } break; @@ -1611,17 +1543,17 @@ StringRef get_pure_path_component(const StringRef &uri) { int rv; http_parser_url u{}; - rv = http_parser_parse_url(uri.c_str(), uri.size(), 0, &u); + rv = http_parser_parse_url(uri.data(), uri.size(), 0, &u); if (rv != 0) { return StringRef{}; } if (u.field_set & (1 << UF_PATH)) { auto &f = u.field_data[UF_PATH]; - return StringRef{uri.c_str() + f.off, f.len}; + return StringRef{uri.data() + f.off, f.len}; } - return StringRef::from_lit("/"); + return "/"_sr; } int construct_push_component(BlockAllocator &balloc, StringRef &scheme, @@ -1636,7 +1568,7 @@ int construct_push_component(BlockAllocator &balloc, StringRef &scheme, http_parser_url u{}; - rv = http_parser_parse_url(uri.c_str(), uri.size(), 0, &u); + rv = http_parser_parse_url(uri.data(), uri.size(), 0, &u); if (rv != 0) { if (uri[0] == '/') { @@ -1653,18 +1585,18 @@ int construct_push_component(BlockAllocator &balloc, StringRef &scheme, } } else { if (u.field_set & (1 << UF_SCHEMA)) { - scheme = util::get_uri_field(uri.c_str(), u, UF_SCHEMA); + scheme = util::get_uri_field(uri.data(), u, UF_SCHEMA); } if (u.field_set & (1 << UF_HOST)) { - auto auth = util::get_uri_field(uri.c_str(), u, UF_HOST); + auto auth = util::get_uri_field(uri.data(), u, UF_HOST); auto len = auth.size(); auto port_exists = u.field_set & (1 << UF_PORT); if (port_exists) { len += 1 + str_size("65535"); } auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; + auto p = std::begin(iov); p = std::copy(std::begin(auth), std::end(auth), p); if (port_exists) { *p++ = ':'; @@ -1672,23 +1604,23 @@ int construct_push_component(BlockAllocator &balloc, StringRef &scheme, } *p = '\0'; - authority = StringRef{iov.base, p}; + authority = StringRef{std::span{std::begin(iov), p}}; } if (u.field_set & (1 << UF_PATH)) { auto &f = u.field_data[UF_PATH]; - rel = StringRef{uri.c_str() + f.off, f.len}; + rel = StringRef{uri.data() + f.off, f.len}; } else { - rel = StringRef::from_lit("/"); + rel = "/"_sr; } if (u.field_set & (1 << UF_QUERY)) { auto &f = u.field_data[UF_QUERY]; - relq = StringRef{uri.c_str() + f.off, f.len}; + relq = StringRef{uri.data() + f.off, f.len}; } } - path = http2::path_join(balloc, base, StringRef{}, rel, relq); + path = path_join(balloc, base, StringRef{}, rel, relq); return 0; } @@ -1737,7 +1669,7 @@ StringRef path_join(BlockAllocator &balloc, const StringRef &base_path, balloc, std::max(static_cast(1), base_path.size()) + rel_path.size() + 1 + std::max(base_query.size(), rel_query.size()) + 1); - auto p = res.base; + auto p = std::begin(res); if (rel_path.empty()) { if (base_path.empty()) { @@ -1751,12 +1683,12 @@ StringRef path_join(BlockAllocator &balloc, const StringRef &base_path, p = std::copy(std::begin(base_query), std::end(base_query), p); } *p = '\0'; - return StringRef{res.base, p}; + return StringRef{std::span{std::begin(res), p}}; } *p++ = '?'; p = std::copy(std::begin(rel_query), std::end(rel_query), p); *p = '\0'; - return StringRef{res.base, p}; + return StringRef{std::span{std::begin(res), p}}; } auto first = std::begin(rel_path); @@ -1777,31 +1709,31 @@ StringRef path_join(BlockAllocator &balloc, const StringRef &base_path, if (*first == '.') { if (first + 1 == last) { if (*(p - 1) != '/') { - p = eat_file(res.base, p); + p = eat_file(std::begin(res), p); } break; } if (*(first + 1) == '/') { if (*(p - 1) != '/') { - p = eat_file(res.base, p); + p = eat_file(std::begin(res), p); } first += 2; continue; } if (*(first + 1) == '.') { if (first + 2 == last) { - p = eat_dir(res.base, p); + p = eat_dir(std::begin(res), p); break; } if (*(first + 2) == '/') { - p = eat_dir(res.base, p); + p = eat_dir(std::begin(res), p); first += 3; continue; } } } if (*(p - 1) != '/') { - p = eat_file(res.base, p); + p = eat_file(std::begin(res), p); } auto slash = std::find(first, last, '/'); if (slash == last) { @@ -1818,7 +1750,7 @@ StringRef path_join(BlockAllocator &balloc, const StringRef &base_path, p = std::copy(std::begin(rel_query), std::end(rel_query), p); } *p = '\0'; - return StringRef{res.base, p}; + return StringRef{std::span{std::begin(res), p}}; } StringRef normalize_path(BlockAllocator &balloc, const StringRef &path, @@ -1834,7 +1766,7 @@ StringRef normalize_path(BlockAllocator &balloc, const StringRef &path, // includes last terminal NULL. auto result = make_byte_ref(balloc, path.size() + 1); - auto p = result.base; + auto p = std::begin(result); auto it = std::begin(path); for (; it + 2 < std::end(path);) { @@ -1864,8 +1796,8 @@ StringRef normalize_path(BlockAllocator &balloc, const StringRef &path, p = std::copy(it, std::end(path), p); *p = '\0'; - return path_join(balloc, StringRef{}, StringRef{}, StringRef{result.base, p}, - query); + return path_join(balloc, StringRef{}, StringRef{}, + StringRef{std::span{std::begin(result), p}}, query); } StringRef normalize_path_colon(BlockAllocator &balloc, const StringRef &path, @@ -1881,7 +1813,7 @@ StringRef normalize_path_colon(BlockAllocator &balloc, const StringRef &path, // includes last terminal NULL. auto result = make_byte_ref(balloc, path.size() + 1); - auto p = result.base; + auto p = std::begin(result); auto it = std::begin(path); for (; it + 2 < std::end(path);) { @@ -1911,14 +1843,14 @@ StringRef normalize_path_colon(BlockAllocator &balloc, const StringRef &path, p = std::copy(it, std::end(path), p); *p = '\0'; - return path_join(balloc, StringRef{}, StringRef{}, StringRef{result.base, p}, - query); + return path_join(balloc, StringRef{}, StringRef{}, + StringRef{std::span{std::begin(result), p}}, query); } std::string normalize_path(const StringRef &path, const StringRef &query) { BlockAllocator balloc(1024, 1024); - return normalize_path(balloc, path, query).str(); + return std::string{normalize_path(balloc, path, query)}; } StringRef rewrite_clean_path(BlockAllocator &balloc, const StringRef &src) { @@ -1938,15 +1870,15 @@ StringRef rewrite_clean_path(BlockAllocator &balloc, const StringRef &src) { StringRef copy_lower(BlockAllocator &balloc, const StringRef &src) { auto iov = make_byte_ref(balloc, src.size() + 1); - auto p = iov.base; + auto p = std::begin(iov); p = std::copy(std::begin(src), std::end(src), p); *p = '\0'; - util::inp_strlower(iov.base, p); - return StringRef{iov.base, p}; + util::inp_strlower(std::begin(iov), p); + return StringRef{std::span{std::begin(iov), p}}; } bool contains_trailers(const StringRef &s) { - constexpr auto trailers = StringRef::from_lit("trailers"); + constexpr auto trailers = "trailers"_sr; for (auto p = std::begin(s), end = std::end(s);; ++p) { p = std::find_if(p, end, [](char c) { return c != ' ' && c != '\t'; }); @@ -1971,18 +1903,18 @@ bool contains_trailers(const StringRef &s) { } StringRef make_websocket_accept_token(uint8_t *dest, const StringRef &key) { - static constexpr uint8_t magic[] = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; - std::array s; + static constexpr char magic[] = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + std::array s; auto p = std::copy(std::begin(key), std::end(key), std::begin(s)); std::copy_n(magic, str_size(magic), p); std::array h; - if (util::sha1(h.data(), StringRef{std::begin(s), std::end(s)}) != 0) { + if (util::sha1(h.data(), StringRef{s}) != 0) { return StringRef{}; } auto end = base64::encode(std::begin(h), std::end(h), dest); - return StringRef{dest, end}; + return StringRef{std::span{dest, end}}; } bool legacy_http1(int major, int minor) { diff --git a/yass/third_party/nghttp2/src/http2.h b/yass/third_party/nghttp2/src/http2.h index 7cfe46193f..df7f18701e 100644 --- a/yass/third_party/nghttp2/src/http2.h +++ b/yass/third_party/nghttp2/src/http2.h @@ -113,16 +113,14 @@ bool lws(const char *value); void copy_url_component(std::string &dest, const http_parser_url *u, int field, const char *url); -Headers::value_type to_header(const uint8_t *name, size_t namelen, - const uint8_t *value, size_t valuelen, +Headers::value_type to_header(const StringRef &name, const StringRef &value, bool no_index, int32_t token); // Add name/value pairs to |nva|. If |no_index| is true, this // name/value pair won't be indexed when it is forwarded to the next -// hop. This function strips white spaces around |value|. -void add_header(Headers &nva, const uint8_t *name, size_t namelen, - const uint8_t *value, size_t valuelen, bool no_index, - int32_t token); +// hop. +void add_header(Headers &nva, const StringRef &name, const StringRef &value, + bool no_index, int32_t token); // Returns pointer to the entry in |nva| which has name |name|. If // more than one entries which have the name |name|, last occurrence @@ -132,60 +130,48 @@ const Headers::value_type *get_header(const Headers &nva, const char *name); // Returns true if the value of |nv| is not empty. bool non_empty_value(const HeaderRefs::value_type *nv); -// Creates nghttp2_nv using |name| and |value| and returns it. The -// returned value only references the data pointer to name.c_str() and -// value.c_str(). If |no_index| is true, nghttp2_nv flags member has -// NGHTTP2_NV_FLAG_NO_INDEX flag set. -nghttp2_nv make_nv(const std::string &name, const std::string &value, - bool no_index = false); +// Create nghttp2_nv from |name|, |value| and |flags|. +inline nghttp2_nv make_field_flags(const StringRef &name, + const StringRef &value, + uint8_t flags = NGHTTP2_NV_FLAG_NONE) { + auto ns = as_uint8_span(std::span{name}); + auto vs = as_uint8_span(std::span{value}); -nghttp2_nv make_nv(const StringRef &name, const StringRef &value, - bool no_index = false); - -nghttp2_nv make_nv_nocopy(const std::string &name, const std::string &value, - bool no_index = false); - -nghttp2_nv make_nv_nocopy(const StringRef &name, const StringRef &value, - bool no_index = false); - -// Create nghttp2_nv from string literal |name| and |value|. -template -constexpr nghttp2_nv make_nv_ll(const char (&name)[N], const char (&value)[M]) { - return {(uint8_t *)name, (uint8_t *)value, N - 1, M - 1, - NGHTTP2_NV_FLAG_NO_COPY_NAME | NGHTTP2_NV_FLAG_NO_COPY_VALUE}; + return {const_cast(ns.data()), const_cast(vs.data()), + ns.size(), vs.size(), flags}; } -// Create nghttp2_nv from string literal |name| and c-string |value|. -template -nghttp2_nv make_nv_lc(const char (&name)[N], const char *value) { - return {(uint8_t *)name, (uint8_t *)value, N - 1, strlen(value), - NGHTTP2_NV_FLAG_NO_COPY_NAME}; +// Creates nghttp2_nv from |name|, |value| and |flags|. nghttp2 +// library does not copy them. +inline nghttp2_nv make_field(const StringRef &name, const StringRef &value, + uint8_t flags = NGHTTP2_NV_FLAG_NONE) { + return make_field_flags(name, value, + static_cast(NGHTTP2_NV_FLAG_NO_COPY_NAME | + NGHTTP2_NV_FLAG_NO_COPY_VALUE | + flags)); } -template -nghttp2_nv make_nv_lc_nocopy(const char (&name)[N], const char *value) { - return {(uint8_t *)name, (uint8_t *)value, N - 1, strlen(value), - NGHTTP2_NV_FLAG_NO_COPY_NAME | NGHTTP2_NV_FLAG_NO_COPY_VALUE}; +// Creates nghttp2_nv from |name|, |value| and |flags|. nghttp2 +// library copies |value| unless |flags| includes +// NGHTTP2_NV_FLAG_NO_COPY_VALUE. +inline nghttp2_nv make_field_v(const StringRef &name, const StringRef &value, + uint8_t flags = NGHTTP2_NV_FLAG_NONE) { + return make_field_flags( + name, value, static_cast(NGHTTP2_NV_FLAG_NO_COPY_NAME | flags)); } -// Create nghttp2_nv from string literal |name| and std::string -// |value|. -template -nghttp2_nv make_nv_ls(const char (&name)[N], const std::string &value) { - return {(uint8_t *)name, (uint8_t *)value.c_str(), N - 1, value.size(), - NGHTTP2_NV_FLAG_NO_COPY_NAME}; +// Creates nghttp2_nv from |name|, |value| and |flags|. nghttp2 +// library copies |name| and |value| unless |flags| includes +// NGHTTP2_NV_FLAG_NO_COPY_NAME or NGHTTP2_NV_FLAG_NO_COPY_VALUE. +inline nghttp2_nv make_field_nv(const StringRef &name, const StringRef &value, + uint8_t flags = NGHTTP2_NV_FLAG_NONE) { + return make_field_flags(name, value, flags); } -template -nghttp2_nv make_nv_ls_nocopy(const char (&name)[N], const std::string &value) { - return {(uint8_t *)name, (uint8_t *)value.c_str(), N - 1, value.size(), - NGHTTP2_NV_FLAG_NO_COPY_NAME | NGHTTP2_NV_FLAG_NO_COPY_VALUE}; -} - -template -nghttp2_nv make_nv_ls_nocopy(const char (&name)[N], const StringRef &value) { - return {(uint8_t *)name, (uint8_t *)value.c_str(), N - 1, value.size(), - NGHTTP2_NV_FLAG_NO_COPY_NAME | NGHTTP2_NV_FLAG_NO_COPY_VALUE}; +// Returns NGHTTP2_NV_FLAG_NO_INDEX if |no_index| is true, otherwise +// NGHTTP2_NV_FLAG_NONE. +inline uint8_t no_index(bool no_index) { + return no_index ? NGHTTP2_NV_FLAG_NO_INDEX : NGHTTP2_NV_FLAG_NONE; } enum HeaderBuildOp { @@ -340,10 +326,9 @@ enum { using HeaderIndex = std::array; -// Looks up header token for header name |name| of length |namelen|. -// Only headers we are interested in are tokenized. If header name -// cannot be tokenized, returns -1. -int lookup_token(const uint8_t *name, size_t namelen); +// Looks up header token for header name |name|. Only headers we are +// interested in are tokenized. If header name cannot be tokenized, +// returns -1. int lookup_token(const StringRef &name); // Initializes |hdidx|, header index. The |hdidx| must point to the @@ -390,10 +375,9 @@ bool expect_response_body(int method_token, int status_code); // true if response has body, taking into account status code only. bool expect_response_body(int status_code); -// Looks up method token for method name |name| of length |namelen|. -// Only methods defined in llhttp.h (llhttp_method) are tokenized. If -// method name cannot be tokenized, returns -1. -int lookup_method_token(const uint8_t *name, size_t namelen); +// Looks up method token for method name |name|. Only methods defined +// in llhttp.h (llhttp_method) are tokenized. If method name cannot +// be tokenized, returns -1. int lookup_method_token(const StringRef &name); // Returns string representation of |method_token|. This is wrapper diff --git a/yass/third_party/nghttp2/src/http2_test.cc b/yass/third_party/nghttp2/src/http2_test.cc index 3cb0b71484..304f350564 100644 --- a/yass/third_party/nghttp2/src/http2_test.cc +++ b/yass/third_party/nghttp2/src/http2_test.cc @@ -36,6 +36,7 @@ #include "util.h" using namespace nghttp2; +using namespace std::literals; #define MAKE_NV(K, V) \ { \ @@ -76,60 +77,32 @@ namespace { void check_nv(const HeaderRef &a, const nghttp2_nv *b) { assert_size(a.name.size(), ==, b->namelen); assert_size(a.value.size(), ==, b->valuelen); - assert_memory_equal(b->namelen, a.name.c_str(), b->name); - assert_memory_equal(b->valuelen, a.value.c_str(), b->value); + assert_memory_equal(b->namelen, a.name.data(), b->name); + assert_memory_equal(b->valuelen, a.value.data(), b->value); } } // namespace void test_http2_add_header(void) { auto nva = Headers(); - http2::add_header(nva, (const uint8_t *)"alpha", 5, (const uint8_t *)"123", 3, - false, -1); + http2::add_header(nva, "alpha"_sr, "123"_sr, false, -1); assert_true(Headers::value_type("alpha", "123") == nva[0]); assert_false(nva[0].no_index); nva.clear(); - http2::add_header(nva, (const uint8_t *)"alpha", 5, (const uint8_t *)"", 0, - true, -1); + http2::add_header(nva, "alpha"_sr, ""_sr, true, -1); assert_true(Headers::value_type("alpha", "") == nva[0]); assert_true(nva[0].no_index); nva.clear(); - http2::add_header(nva, (const uint8_t *)"a", 1, (const uint8_t *)" b", 2, - false, -1); + http2::add_header(nva, "a"_sr, "b"_sr, false, -1); assert_true(Headers::value_type("a", "b") == nva[0]); nva.clear(); - http2::add_header(nva, (const uint8_t *)"a", 1, (const uint8_t *)"b ", 2, - false, -1); - assert_true(Headers::value_type("a", "b") == nva[0]); - - nva.clear(); - - http2::add_header(nva, (const uint8_t *)"a", 1, (const uint8_t *)" b ", 5, - false, -1); - assert_true(Headers::value_type("a", "b") == nva[0]); - - nva.clear(); - - http2::add_header(nva, (const uint8_t *)"a", 1, (const uint8_t *)" bravo ", - 9, false, -1); - assert_true(Headers::value_type("a", "bravo") == nva[0]); - - nva.clear(); - - http2::add_header(nva, (const uint8_t *)"a", 1, (const uint8_t *)" ", 4, - false, -1); - assert_true(Headers::value_type("a", "") == nva[0]); - - nva.clear(); - - http2::add_header(nva, (const uint8_t *)"te", 2, (const uint8_t *)"trailers", - 8, false, http2::HD_TE); + http2::add_header(nva, "te"_sr, "trailers"_sr, false, http2::HD_TE); assert_int32(http2::HD_TE, ==, nva[0].token); } @@ -158,43 +131,31 @@ void test_http2_get_header(void) { namespace { auto headers = HeaderRefs{ - {StringRef::from_lit("alpha"), StringRef::from_lit("0"), true}, - {StringRef::from_lit("bravo"), StringRef::from_lit("1")}, - {StringRef::from_lit("connection"), StringRef::from_lit("2"), false, - http2::HD_CONNECTION}, - {StringRef::from_lit("connection"), StringRef::from_lit("3"), false, - http2::HD_CONNECTION}, - {StringRef::from_lit("delta"), StringRef::from_lit("4")}, - {StringRef::from_lit("expect"), StringRef::from_lit("5")}, - {StringRef::from_lit("foxtrot"), StringRef::from_lit("6")}, - {StringRef::from_lit("tango"), StringRef::from_lit("7")}, - {StringRef::from_lit("te"), StringRef::from_lit("8"), false, http2::HD_TE}, - {StringRef::from_lit("te"), StringRef::from_lit("9"), false, http2::HD_TE}, - {StringRef::from_lit("x-forwarded-proto"), StringRef::from_lit("10"), false, - http2::HD_X_FORWARDED_FOR}, - {StringRef::from_lit("x-forwarded-proto"), StringRef::from_lit("11"), false, - http2::HD_X_FORWARDED_FOR}, - {StringRef::from_lit("zulu"), StringRef::from_lit("12")}}; + {"alpha"_sr, "0"_sr, true}, + {"bravo"_sr, "1"_sr}, + {"connection"_sr, "2"_sr, false, http2::HD_CONNECTION}, + {"connection"_sr, "3"_sr, false, http2::HD_CONNECTION}, + {"delta"_sr, "4"_sr}, + {"expect"_sr, "5"_sr}, + {"foxtrot"_sr, "6"_sr}, + {"tango"_sr, "7"_sr}, + {"te"_sr, "8"_sr, false, http2::HD_TE}, + {"te"_sr, "9"_sr, false, http2::HD_TE}, + {"x-forwarded-proto"_sr, "10"_sr, false, http2::HD_X_FORWARDED_FOR}, + {"x-forwarded-proto"_sr, "11"_sr, false, http2::HD_X_FORWARDED_FOR}, + {"zulu"_sr, "12"_sr}}; } // namespace namespace { auto headers2 = HeaderRefs{ - {StringRef::from_lit("x-forwarded-for"), StringRef::from_lit("xff1"), false, - http2::HD_X_FORWARDED_FOR}, - {StringRef::from_lit("x-forwarded-for"), StringRef::from_lit("xff2"), false, - http2::HD_X_FORWARDED_FOR}, - {StringRef::from_lit("x-forwarded-proto"), StringRef::from_lit("xfp1"), - false, http2::HD_X_FORWARDED_PROTO}, - {StringRef::from_lit("x-forwarded-proto"), StringRef::from_lit("xfp2"), - false, http2::HD_X_FORWARDED_PROTO}, - {StringRef::from_lit("forwarded"), StringRef::from_lit("fwd1"), false, - http2::HD_FORWARDED}, - {StringRef::from_lit("forwarded"), StringRef::from_lit("fwd2"), false, - http2::HD_FORWARDED}, - {StringRef::from_lit("via"), StringRef::from_lit("via1"), false, - http2::HD_VIA}, - {StringRef::from_lit("via"), StringRef::from_lit("via2"), false, - http2::HD_VIA}, + {"x-forwarded-for"_sr, "xff1"_sr, false, http2::HD_X_FORWARDED_FOR}, + {"x-forwarded-for"_sr, "xff2"_sr, false, http2::HD_X_FORWARDED_FOR}, + {"x-forwarded-proto"_sr, "xfp1"_sr, false, http2::HD_X_FORWARDED_PROTO}, + {"x-forwarded-proto"_sr, "xfp2"_sr, false, http2::HD_X_FORWARDED_PROTO}, + {"forwarded"_sr, "fwd1"_sr, false, http2::HD_FORWARDED}, + {"forwarded"_sr, "fwd2"_sr, false, http2::HD_FORWARDED}, + {"via"_sr, "via1"_sr, false, http2::HD_VIA}, + {"via"_sr, "via2"_sr, false, http2::HD_VIA}, }; } // namespace @@ -298,7 +259,7 @@ void check_rewrite_location_uri(const std::string &want, const std::string &uri, auto got = http2::rewrite_location_uri( balloc, StringRef{uri}, u, StringRef{match_host}, StringRef{req_authority}, StringRef{upstream_scheme}); - assert_stdstring_equal(want, got.str()); + assert_stdsv_equal(want, got); } } // namespace @@ -330,14 +291,12 @@ void test_http2_rewrite_location_uri(void) { } void test_http2_parse_http_status_code(void) { - assert_int(200, ==, - http2::parse_http_status_code(StringRef::from_lit("200"))); - assert_int(102, ==, - http2::parse_http_status_code(StringRef::from_lit("102"))); - assert_int(-1, ==, http2::parse_http_status_code(StringRef::from_lit("099"))); - assert_int(-1, ==, http2::parse_http_status_code(StringRef::from_lit("99"))); - assert_int(-1, ==, http2::parse_http_status_code(StringRef::from_lit("-1"))); - assert_int(-1, ==, http2::parse_http_status_code(StringRef::from_lit("20a"))); + assert_int(200, ==, http2::parse_http_status_code("200"_sr)); + assert_int(102, ==, http2::parse_http_status_code("102"_sr)); + assert_int(-1, ==, http2::parse_http_status_code("099"_sr)); + assert_int(-1, ==, http2::parse_http_status_code("99"_sr)); + assert_int(-1, ==, http2::parse_http_status_code("-1"_sr)); + assert_int(-1, ==, http2::parse_http_status_code("20a"_sr)); assert_int(-1, ==, http2::parse_http_status_code(StringRef{})); } @@ -352,536 +311,491 @@ void test_http2_index_header(void) { } void test_http2_lookup_token(void) { - assert_int(http2::HD__AUTHORITY, ==, - http2::lookup_token(StringRef::from_lit(":authority"))); - assert_int(-1, ==, http2::lookup_token(StringRef::from_lit(":authorit"))); - assert_int(-1, ==, http2::lookup_token(StringRef::from_lit(":Authority"))); - assert_int(http2::HD_EXPECT, ==, - http2::lookup_token(StringRef::from_lit("expect"))); + assert_int(http2::HD__AUTHORITY, ==, http2::lookup_token(":authority"_sr)); + assert_int(-1, ==, http2::lookup_token(":authorit"_sr)); + assert_int(-1, ==, http2::lookup_token(":Authority"_sr)); + assert_int(http2::HD_EXPECT, ==, http2::lookup_token("expect"_sr)); } void test_http2_parse_link_header(void) { { // only URI appears; we don't extract URI unless it bears rel=preload - auto res = http2::parse_link_header(StringRef::from_lit("")); + auto res = http2::parse_link_header(""_sr); assert_size(0, ==, res.size()); } { // URI url should be extracted + auto res = http2::parse_link_header("; rel=preload"_sr); + assert_size(1, ==, res.size()); + assert_stdsv_equal("url"sv, res[0].uri); + } + { + // With extra link-param. URI url should be extracted + auto res = http2::parse_link_header("; rel=preload; as=file"_sr); + assert_size(1, ==, res.size()); + assert_stdsv_equal("url"sv, res[0].uri); + } + { + // With extra link-param. URI url should be extracted + auto res = http2::parse_link_header("; as=file; rel=preload"_sr); + assert_size(1, ==, res.size()); + assert_stdsv_equal("url"sv, res[0].uri); + } + { + // With extra link-param and quote-string. URI url should be + // extracted auto res = - http2::parse_link_header(StringRef::from_lit("; rel=preload")); + http2::parse_link_header(R"(; rel=preload; title="foo,bar")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); - } - { - // With extra link-param. URI url should be extracted - auto res = http2::parse_link_header( - StringRef::from_lit("; rel=preload; as=file")); - assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); - } - { - // With extra link-param. URI url should be extracted - auto res = http2::parse_link_header( - StringRef::from_lit("; as=file; rel=preload")); - assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // With extra link-param and quote-string. URI url should be // extracted - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=preload; title="foo,bar")")); + auto res = + http2::parse_link_header(R"(; title="foo,bar"; rel=preload)"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); - } - { - // With extra link-param and quote-string. URI url should be - // extracted - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; title="foo,bar"; rel=preload)")); - assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // ',' after quote-string auto res = http2::parse_link_header( - StringRef::from_lit(R"(; title="foo,bar", ; rel=preload)")); + R"(; title="foo,bar", ; rel=preload)"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url2", res[0].uri.str()); + assert_stdsv_equal("url2"sv, res[0].uri); } { // Only first URI should be extracted. - auto res = http2::parse_link_header( - StringRef::from_lit("; rel=preload, ")); + auto res = http2::parse_link_header("; rel=preload, "_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // Both have rel=preload, so both urls should be extracted - auto res = http2::parse_link_header( - StringRef::from_lit("; rel=preload, ; rel=preload")); + auto res = + http2::parse_link_header("; rel=preload, ; rel=preload"_sr); assert_size(2, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); - assert_stdstring_equal("url2", res[1].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); + assert_stdsv_equal("url2"sv, res[1].uri); } { // Second URI uri should be extracted. - auto res = http2::parse_link_header( - StringRef::from_lit(", ;rel=preload")); + auto res = http2::parse_link_header(", ;rel=preload"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url2", res[0].uri.str()); + assert_stdsv_equal("url2"sv, res[0].uri); } { // Error if input ends with ';' - auto res = - http2::parse_link_header(StringRef::from_lit(";rel=preload;")); + auto res = http2::parse_link_header(";rel=preload;"_sr); assert_size(0, ==, res.size()); } { // Error if link header ends with ';' - auto res = http2::parse_link_header( - StringRef::from_lit(";rel=preload;, ")); + auto res = http2::parse_link_header(";rel=preload;, "_sr); assert_size(0, ==, res.size()); } { // OK if input ends with ',' - auto res = - http2::parse_link_header(StringRef::from_lit(";rel=preload,")); + auto res = http2::parse_link_header(";rel=preload,"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // Multiple repeated ','s between fields is OK - auto res = http2::parse_link_header( - StringRef::from_lit(",,,;rel=preload")); + auto res = http2::parse_link_header(",,,;rel=preload"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url2", res[0].uri.str()); + assert_stdsv_equal("url2"sv, res[0].uri); } { // Error if url is not enclosed by <> - auto res = - http2::parse_link_header(StringRef::from_lit("url>;rel=preload")); + auto res = http2::parse_link_header("url>;rel=preload"_sr); assert_size(0, ==, res.size()); } { // Error if url is not enclosed by <> - auto res = - http2::parse_link_header(StringRef::from_lit(";rel=preload; as=")); + auto res = http2::parse_link_header(";rel=preload; as="_sr); assert_size(0, ==, res.size()); } { // Empty parameter value is not allowed - auto res = - http2::parse_link_header(StringRef::from_lit(";as=;rel=preload")); + auto res = http2::parse_link_header(";as=;rel=preload"_sr); assert_size(0, ==, res.size()); } { // Empty parameter value is not allowed - auto res = http2::parse_link_header( - StringRef::from_lit(";as=, ;rel=preload")); + auto res = http2::parse_link_header(";as=, ;rel=preload"_sr); assert_size(0, ==, res.size()); } { // Empty parameter name is not allowed - auto res = http2::parse_link_header( - StringRef::from_lit("; =file; rel=preload")); + auto res = http2::parse_link_header("; =file; rel=preload"_sr); assert_size(0, ==, res.size()); } { // Without whitespaces auto res = http2::parse_link_header( - StringRef::from_lit(";as=file;rel=preload,;rel=preload")); + ";as=file;rel=preload,;rel=preload"_sr); assert_size(2, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); - assert_stdstring_equal("url2", res[1].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); + assert_stdsv_equal("url2"sv, res[1].uri); } { // link-extension may have no value - auto res = - http2::parse_link_header(StringRef::from_lit("; as; rel=preload")); + auto res = http2::parse_link_header("; as; rel=preload"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // ext-name-star - auto res = http2::parse_link_header( - StringRef::from_lit("; foo*=bar; rel=preload")); + auto res = http2::parse_link_header("; foo*=bar; rel=preload"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // '*' is not allowed expect for trailing one - auto res = http2::parse_link_header( - StringRef::from_lit("; *=bar; rel=preload")); + auto res = http2::parse_link_header("; *=bar; rel=preload"_sr); assert_size(0, ==, res.size()); } { // '*' is not allowed expect for trailing one - auto res = http2::parse_link_header( - StringRef::from_lit("; foo*bar=buzz; rel=preload")); + auto res = http2::parse_link_header("; foo*bar=buzz; rel=preload"_sr); assert_size(0, ==, res.size()); } { // ext-name-star must be followed by '=' - auto res = http2::parse_link_header( - StringRef::from_lit("; foo*; rel=preload")); + auto res = http2::parse_link_header("; foo*; rel=preload"_sr); assert_size(0, ==, res.size()); } { // '>' is not followed by ';' - auto res = - http2::parse_link_header(StringRef::from_lit(" rel=preload")); + auto res = http2::parse_link_header(" rel=preload"_sr); assert_size(0, ==, res.size()); } { // Starting with whitespace is no problem. - auto res = - http2::parse_link_header(StringRef::from_lit(" ; rel=preload")); + auto res = http2::parse_link_header(" ; rel=preload"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload is a prefix of bogus rel parameter value - auto res = - http2::parse_link_header(StringRef::from_lit("; rel=preloadx")); + auto res = http2::parse_link_header("; rel=preloadx"_sr); assert_size(0, ==, res.size()); } { // preload in relation-types list - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload")")); + auto res = http2::parse_link_header(R"(; rel="preload")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload in relation-types list followed by another parameter - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload foo")")); + auto res = http2::parse_link_header(R"(; rel="preload foo")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload in relation-types list following another parameter - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="foo preload")")); + auto res = http2::parse_link_header(R"(; rel="foo preload")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload in relation-types list between other parameters - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="foo preload bar")")); + auto res = http2::parse_link_header(R"(; rel="foo preload bar")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload in relation-types list between other parameters - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="foo preload bar")")); + auto res = + http2::parse_link_header(R"(; rel="foo preload bar")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // no preload in relation-types list - auto res = - http2::parse_link_header(StringRef::from_lit(R"(; rel="foo")")); + auto res = http2::parse_link_header(R"(; rel="foo")"_sr); assert_size(0, ==, res.size()); } { // no preload in relation-types list, multiple unrelated elements. - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="foo bar")")); + auto res = http2::parse_link_header(R"(; rel="foo bar")"_sr); assert_size(0, ==, res.size()); } { // preload in relation-types list, followed by another link-value. - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload", )")); + auto res = http2::parse_link_header(R"(; rel="preload", )"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload in relation-types list, following another link-value. - auto res = http2::parse_link_header( - StringRef::from_lit(R"(, ; rel="preload")")); + auto res = http2::parse_link_header(R"(, ; rel="preload")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url2", res[0].uri.str()); + assert_stdsv_equal("url2"sv, res[0].uri); } { // preload in relation-types list, followed by another link-param. - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload"; as="font")")); + auto res = + http2::parse_link_header(R"(; rel="preload"; as="font")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload in relation-types list, followed by character other // than ';' or ',' - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload".)")); + auto res = http2::parse_link_header(R"(; rel="preload".)"_sr); assert_size(0, ==, res.size()); } { // preload in relation-types list, followed by ';' but it // terminates input - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload";)")); + auto res = http2::parse_link_header(R"(; rel="preload";)"_sr); assert_size(0, ==, res.size()); } { // preload in relation-types list, followed by ',' but it // terminates input - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload",)")); + auto res = http2::parse_link_header(R"(; rel="preload",)"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // preload in relation-types list but there is preceding white // space. - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=" preload")")); + auto res = http2::parse_link_header(R"(; rel=" preload")"_sr); assert_size(0, ==, res.size()); } { // preload in relation-types list but there is trailing white // space. - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel="preload ")")); + auto res = http2::parse_link_header(R"(; rel="preload ")"_sr); assert_size(0, ==, res.size()); } { // backslash escaped characters in quoted-string auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=preload; title="foo\"baz\"bar")")); + R"(; rel=preload; title="foo\"baz\"bar")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // anchor="" is acceptable - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=preload; anchor="")")); + auto res = http2::parse_link_header(R"(; rel=preload; anchor="")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // With anchor="#foo", url should be ignored - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=preload; anchor="#foo")")); + auto res = + http2::parse_link_header(R"(; rel=preload; anchor="#foo")"_sr); assert_size(0, ==, res.size()); } { // With anchor=f, url should be ignored - auto res = http2::parse_link_header( - StringRef::from_lit("; rel=preload; anchor=f")); + auto res = http2::parse_link_header("; rel=preload; anchor=f"_sr); assert_size(0, ==, res.size()); } { // First url is ignored With anchor="#foo", but url should be // accepted. - auto res = http2::parse_link_header(StringRef::from_lit( - R"(; rel=preload; anchor="#foo", ; rel=preload)")); + auto res = http2::parse_link_header( + R"(; rel=preload; anchor="#foo", ; rel=preload)"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url2", res[0].uri.str()); + assert_stdsv_equal("url2"sv, res[0].uri); } { // With loadpolicy="next", url should be ignored - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=preload; loadpolicy="next")")); + auto res = + http2::parse_link_header(R"(; rel=preload; loadpolicy="next")"_sr); assert_size(0, ==, res.size()); } { // url should be picked up if empty loadpolicy is specified - auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=preload; loadpolicy="")")); + auto res = + http2::parse_link_header(R"(; rel=preload; loadpolicy="")"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // case-insensitive match auto res = http2::parse_link_header( - StringRef::from_lit(R"(; rel=preload; ANCHOR="#foo", ; )" - R"(REL=PRELOAD, ; REL="foo PRELOAD bar")")); + R"(; rel=preload; ANCHOR="#foo", ; )" + R"(REL=PRELOAD, ; REL="foo PRELOAD bar")"_sr); assert_size(2, ==, res.size()); - assert_stdstring_equal("url2", res[0].uri.str()); - assert_stdstring_equal("url3", res[1].uri.str()); + assert_stdsv_equal("url2"sv, res[0].uri); + assert_stdsv_equal("url3"sv, res[1].uri); } { // nopush at the end of input - auto res = http2::parse_link_header( - StringRef::from_lit("; rel=preload; nopush")); + auto res = http2::parse_link_header("; rel=preload; nopush"_sr); assert_size(0, ==, res.size()); } { // nopush followed by ';' - auto res = http2::parse_link_header( - StringRef::from_lit("; rel=preload; nopush; foo")); + auto res = http2::parse_link_header("; rel=preload; nopush; foo"_sr); assert_size(0, ==, res.size()); } { // nopush followed by ',' - auto res = http2::parse_link_header( - StringRef::from_lit("; nopush; rel=preload")); + auto res = http2::parse_link_header("; nopush; rel=preload"_sr); assert_size(0, ==, res.size()); } { // string whose prefix is nopush - auto res = http2::parse_link_header( - StringRef::from_lit("; nopushyes; rel=preload")); + auto res = http2::parse_link_header("; nopushyes; rel=preload"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } { // rel=preload twice - auto res = http2::parse_link_header( - StringRef::from_lit("; rel=preload; rel=preload")); + auto res = http2::parse_link_header("; rel=preload; rel=preload"_sr); assert_size(1, ==, res.size()); - assert_stdstring_equal("url", res[0].uri.str()); + assert_stdsv_equal("url"sv, res[0].uri); } } void test_http2_path_join(void) { { - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("/"); + auto base = "/"_sr; + auto rel = "/"_sr; assert_stdstring_equal( "/", http2::path_join(base, StringRef{}, rel, StringRef{})); } { - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("/alpha"); + auto base = "/"_sr; + auto rel = "/alpha"_sr; assert_stdstring_equal( "/alpha", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // rel ends with trailing '/' - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("/alpha/"); + auto base = "/"_sr; + auto rel = "/alpha/"_sr; assert_stdstring_equal( "/alpha/", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // rel contains multiple components - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("/alpha/bravo"); + auto base = "/"_sr; + auto rel = "/alpha/bravo"_sr; assert_stdstring_equal( "/alpha/bravo", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // rel is relative - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("alpha/bravo"); + auto base = "/"_sr; + auto rel = "alpha/bravo"_sr; assert_stdstring_equal( "/alpha/bravo", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // rel is relative and base ends without /, which means it refers // to file. - auto base = StringRef::from_lit("/alpha"); - auto rel = StringRef::from_lit("bravo/charlie"); + auto base = "/alpha"_sr; + auto rel = "bravo/charlie"_sr; assert_stdstring_equal( "/bravo/charlie", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // rel contains repeated '/'s - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("/alpha/////bravo/////"); + auto base = "/"_sr; + auto rel = "/alpha/////bravo/////"_sr; assert_stdstring_equal( "/alpha/bravo/", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // base ends with '/', so '..' eats 'bravo' - auto base = StringRef::from_lit("/alpha/bravo/"); - auto rel = StringRef::from_lit("../charlie/delta"); + auto base = "/alpha/bravo/"_sr; + auto rel = "../charlie/delta"_sr; assert_stdstring_equal( "/alpha/charlie/delta", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // base does not end with '/', so '..' eats 'alpha/bravo' - auto base = StringRef::from_lit("/alpha/bravo"); - auto rel = StringRef::from_lit("../charlie"); + auto base = "/alpha/bravo"_sr; + auto rel = "../charlie"_sr; assert_stdstring_equal( "/charlie", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // 'charlie' is eaten by following '..' - auto base = StringRef::from_lit("/alpha/bravo/"); - auto rel = StringRef::from_lit("../charlie/../delta"); + auto base = "/alpha/bravo/"_sr; + auto rel = "../charlie/../delta"_sr; assert_stdstring_equal( "/alpha/delta", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // excessive '..' results in '/' - auto base = StringRef::from_lit("/alpha/bravo/"); - auto rel = StringRef::from_lit("../../../"); + auto base = "/alpha/bravo/"_sr; + auto rel = "../../../"_sr; assert_stdstring_equal( "/", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // excessive '..' and path component - auto base = StringRef::from_lit("/alpha/bravo/"); - auto rel = StringRef::from_lit("../../../charlie"); + auto base = "/alpha/bravo/"_sr; + auto rel = "../../../charlie"_sr; assert_stdstring_equal( "/charlie", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // rel ends with '..' - auto base = StringRef::from_lit("/alpha/bravo/"); - auto rel = StringRef::from_lit("charlie/.."); + auto base = "/alpha/bravo/"_sr; + auto rel = "charlie/.."_sr; assert_stdstring_equal( "/alpha/bravo/", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // base empty and rel contains '..' auto base = StringRef{}; - auto rel = StringRef::from_lit("charlie/.."); + auto rel = "charlie/.."_sr; assert_stdstring_equal( "/", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // '.' is ignored - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("charlie/././././delta"); + auto base = "/"_sr; + auto rel = "charlie/././././delta"_sr; assert_stdstring_equal( "/charlie/delta", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // trailing '.' is ignored - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("charlie/."); + auto base = "/"_sr; + auto rel = "charlie/."_sr; assert_stdstring_equal( "/charlie/", http2::path_join(base, StringRef{}, rel, StringRef{})); } { // query - auto base = StringRef::from_lit("/"); - auto rel = StringRef::from_lit("/"); - auto relq = StringRef::from_lit("q"); + auto base = "/"_sr; + auto rel = "/"_sr; + auto relq = "q"_sr; assert_stdstring_equal("/?q", http2::path_join(base, StringRef{}, rel, relq)); } { // empty rel and query - auto base = StringRef::from_lit("/alpha"); + auto base = "/alpha"_sr; auto rel = StringRef{}; - auto relq = StringRef::from_lit("q"); + auto relq = "q"_sr; assert_stdstring_equal("/alpha?q", http2::path_join(base, StringRef{}, rel, relq)); } { // both rel and query are empty - auto base = StringRef::from_lit("/alpha"); - auto baseq = StringRef::from_lit("r"); + auto base = "/alpha"_sr; + auto baseq = "r"_sr; auto rel = StringRef{}; auto relq = StringRef{}; assert_stdstring_equal("/alpha?r", @@ -890,7 +804,7 @@ void test_http2_path_join(void) { { // empty base auto base = StringRef{}; - auto rel = StringRef::from_lit("/alpha"); + auto rel = "/alpha"_sr; assert_stdstring_equal( "/alpha", http2::path_join(base, StringRef{}, rel, StringRef{})); } @@ -902,7 +816,7 @@ void test_http2_path_join(void) { { // only baseq is not empty auto base = StringRef{}; - auto baseq = StringRef::from_lit("r"); + auto baseq = "r"_sr; auto rel = StringRef{}; assert_stdstring_equal("/?r", http2::path_join(base, baseq, rel, StringRef{})); @@ -911,60 +825,60 @@ void test_http2_path_join(void) { // path starts with multiple '/'s. auto base = StringRef{}; auto baseq = StringRef{}; - auto rel = StringRef::from_lit("//alpha//bravo"); - auto relq = StringRef::from_lit("charlie"); + auto rel = "//alpha//bravo"_sr; + auto relq = "charlie"_sr; assert_stdstring_equal("/alpha/bravo?charlie", http2::path_join(base, baseq, rel, relq)); } // Test cases from RFC 3986, section 5.4. - constexpr auto base = StringRef::from_lit("/b/c/d;p"); - constexpr auto baseq = StringRef::from_lit("q"); + constexpr auto base = "/b/c/d;p"_sr; + constexpr auto baseq = "q"_sr; { - auto rel = StringRef::from_lit("g"); + auto rel = "g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("./g"); + auto rel = "./g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g/"); + auto rel = "g/"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("/g"); + auto rel = "/g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/g", http2::path_join(base, baseq, rel, relq)); } { auto rel = StringRef{}; - auto relq = StringRef::from_lit("y"); + auto relq = "y"_sr; assert_stdstring_equal("/b/c/d;p?y", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g"); - auto relq = StringRef::from_lit("y"); + auto rel = "g"_sr; + auto relq = "y"_sr; assert_stdstring_equal("/b/c/g?y", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit(";x"); + auto rel = ";x"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/;x", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g;x"); + auto rel = "g;x"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g;x", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g;x"); - auto relq = StringRef::from_lit("y"); + auto rel = "g;x"_sr; + auto relq = "y"_sr; assert_stdstring_equal("/b/c/g;x?y", http2::path_join(base, baseq, rel, relq)); } @@ -975,116 +889,116 @@ void test_http2_path_join(void) { http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("."); + auto rel = "."_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("./"); + auto rel = "./"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit(".."); + auto rel = ".."_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("../"); + auto rel = "../"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("../g"); + auto rel = "../g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("../.."); + auto rel = "../.."_sr; auto relq = StringRef{}; assert_stdstring_equal("/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("../../"); + auto rel = "../../"_sr; auto relq = StringRef{}; assert_stdstring_equal("/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("../../g"); + auto rel = "../../g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("../../../g"); + auto rel = "../../../g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("../../../../g"); + auto rel = "../../../../g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("/./g"); + auto rel = "/./g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("/../g"); + auto rel = "/../g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g."); + auto rel = "g."_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g.", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit(".g"); + auto rel = ".g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/.g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g.."); + auto rel = "g.."_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g..", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("..g"); + auto rel = "..g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/..g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("./../g"); + auto rel = "./../g"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/g", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("./g/."); + auto rel = "./g/."_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g/", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g/./h"); + auto rel = "g/./h"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g/h", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g/../h"); + auto rel = "g/../h"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/h", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g;x=1/./y"); + auto rel = "g;x=1/./y"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/g;x=1/y", http2::path_join(base, baseq, rel, relq)); } { - auto rel = StringRef::from_lit("g;x=1/../y"); + auto rel = "g;x=1/../y"_sr; auto relq = StringRef{}; assert_stdstring_equal("/b/c/y", http2::path_join(base, baseq, rel, relq)); } @@ -1093,95 +1007,67 @@ void test_http2_path_join(void) { void test_http2_normalize_path(void) { assert_stdstring_equal( "/alpha/charlie", - http2::normalize_path(StringRef::from_lit("/alpha/bravo/../charlie"), - StringRef{})); + http2::normalize_path("/alpha/bravo/../charlie"_sr, StringRef{})); assert_stdstring_equal( - "/alpha", http2::normalize_path(StringRef::from_lit("/a%6c%70%68%61"), - StringRef{})); + "/alpha", http2::normalize_path("/a%6c%70%68%61"_sr, StringRef{})); - assert_stdstring_equal( - "/alpha%2F%3A", - http2::normalize_path(StringRef::from_lit("/alpha%2f%3a"), StringRef{})); + assert_stdstring_equal("/alpha%2F%3A", + http2::normalize_path("/alpha%2f%3a"_sr, StringRef{})); - assert_stdstring_equal( - "/%2F", http2::normalize_path(StringRef::from_lit("%2f"), StringRef{})); + assert_stdstring_equal("/%2F", http2::normalize_path("%2f"_sr, StringRef{})); - assert_stdstring_equal( - "/%f", http2::normalize_path(StringRef::from_lit("%f"), StringRef{})); + assert_stdstring_equal("/%f", http2::normalize_path("%f"_sr, StringRef{})); - assert_stdstring_equal( - "/%", http2::normalize_path(StringRef::from_lit("%"), StringRef{})); + assert_stdstring_equal("/%", http2::normalize_path("%"_sr, StringRef{})); assert_stdstring_equal("/", http2::normalize_path(StringRef{}, StringRef{})); assert_stdstring_equal("/alpha?bravo", - http2::normalize_path(StringRef::from_lit("/alpha"), - StringRef::from_lit("bravo"))); + http2::normalize_path("/alpha"_sr, "bravo"_sr)); } void test_http2_rewrite_clean_path(void) { BlockAllocator balloc(4096, 4096); // unreserved characters - assert_stdstring_equal( - "/alpha/bravo/", - http2::rewrite_clean_path(balloc, StringRef::from_lit("/alpha/%62ravo/")) - .str()); + assert_stdsv_equal("/alpha/bravo/"sv, + http2::rewrite_clean_path(balloc, "/alpha/%62ravo/"_sr)); // percent-encoding is converted to upper case. - assert_stdstring_equal( - "/delta%3A", - http2::rewrite_clean_path(balloc, StringRef::from_lit("/delta%3a")) - .str()); + assert_stdsv_equal("/delta%3A"sv, + http2::rewrite_clean_path(balloc, "/delta%3a"_sr)); // path component is normalized before matching - assert_stdstring_equal( - "/alpha/bravo/", - http2::rewrite_clean_path( - balloc, StringRef::from_lit("/alpha/charlie/%2e././bravo/delta/..")) - .str()); + assert_stdsv_equal("/alpha/bravo/"sv, + http2::rewrite_clean_path( + balloc, "/alpha/charlie/%2e././bravo/delta/.."_sr)); - assert_stdstring_equal( - "alpha%3a", - http2::rewrite_clean_path(balloc, StringRef::from_lit("alpha%3a")).str()); + assert_stdsv_equal("alpha%3a"sv, + http2::rewrite_clean_path(balloc, "alpha%3a"_sr)); - assert_stdstring_equal("", - http2::rewrite_clean_path(balloc, StringRef{}).str()); + assert_stdsv_equal(""sv, http2::rewrite_clean_path(balloc, StringRef{})); - assert_stdstring_equal( - "/alpha?bravo", - http2::rewrite_clean_path(balloc, StringRef::from_lit("//alpha?bravo")) - .str()); + assert_stdsv_equal("/alpha?bravo"sv, + http2::rewrite_clean_path(balloc, "//alpha?bravo"_sr)); } void test_http2_get_pure_path_component(void) { - assert_stdstring_equal( - "/", http2::get_pure_path_component(StringRef::from_lit("/")).str()); + assert_stdsv_equal("/"sv, http2::get_pure_path_component("/"_sr)); - assert_stdstring_equal( - "/foo", - http2::get_pure_path_component(StringRef::from_lit("/foo")).str()); + assert_stdsv_equal("/foo"sv, http2::get_pure_path_component("/foo"_sr)); - assert_stdstring_equal("/bar", - http2::get_pure_path_component( - StringRef::from_lit("https://example.org/bar")) - .str()); + assert_stdsv_equal( + "/bar"sv, http2::get_pure_path_component("https://example.org/bar"_sr)); - assert_stdstring_equal( - "/alpha", http2::get_pure_path_component( - StringRef::from_lit("https://example.org/alpha?q=a")) - .str()); + assert_stdsv_equal("/alpha"sv, http2::get_pure_path_component( + "https://example.org/alpha?q=a"_sr)); - assert_stdstring_equal( - "/bravo", - http2::get_pure_path_component( - StringRef::from_lit("https://example.org/bravo?q=a#fragment")) - .str()); + assert_stdsv_equal("/bravo"sv, + http2::get_pure_path_component( + "https://example.org/bravo?q=a#fragment"_sr)); - assert_stdstring_equal( - "", - http2::get_pure_path_component(StringRef::from_lit("\x01\x02")).str()); + assert_stdsv_equal(""sv, http2::get_pure_path_component("\x01\x02"_sr)); } void test_http2_construct_push_component(void) { @@ -1189,41 +1075,41 @@ void test_http2_construct_push_component(void) { StringRef base, uri; StringRef scheme, authority, path; - base = StringRef::from_lit("/b/"); - uri = StringRef::from_lit("https://example.org/foo"); + base = "/b/"_sr; + uri = "https://example.org/foo"_sr; assert_int(0, ==, http2::construct_push_component(balloc, scheme, authority, path, base, uri)); - assert_stdstring_equal("https", scheme.str()); - assert_stdstring_equal("example.org", authority.str()); - assert_stdstring_equal("/foo", path.str()); + assert_stdsv_equal("https"sv, scheme); + assert_stdsv_equal("example.org"sv, authority); + assert_stdsv_equal("/foo"sv, path); scheme = StringRef{}; authority = StringRef{}; path = StringRef{}; - uri = StringRef::from_lit("/foo/bar?q=a"); + uri = "/foo/bar?q=a"_sr; assert_int(0, ==, http2::construct_push_component(balloc, scheme, authority, path, base, uri)); - assert_stdstring_equal("", scheme.str()); - assert_stdstring_equal("", authority.str()); - assert_stdstring_equal("/foo/bar?q=a", path.str()); + assert_stdsv_equal(""sv, scheme); + assert_stdsv_equal(""sv, authority); + assert_stdsv_equal("/foo/bar?q=a"sv, path); scheme = StringRef{}; authority = StringRef{}; path = StringRef{}; - uri = StringRef::from_lit("foo/../bar?q=a"); + uri = "foo/../bar?q=a"_sr; assert_int(0, ==, http2::construct_push_component(balloc, scheme, authority, path, base, uri)); - assert_stdstring_equal("", scheme.str()); - assert_stdstring_equal("", authority.str()); - assert_stdstring_equal("/b/bar?q=a", path.str()); + assert_stdsv_equal(""sv, scheme); + assert_stdsv_equal(""sv, authority); + assert_stdsv_equal("/b/bar?q=a"sv, path); scheme = StringRef{}; authority = StringRef{}; @@ -1238,91 +1124,69 @@ void test_http2_construct_push_component(void) { authority = StringRef{}; path = StringRef{}; - uri = StringRef::from_lit("?q=a"); + uri = "?q=a"_sr; assert_int(0, ==, http2::construct_push_component(balloc, scheme, authority, path, base, uri)); - assert_stdstring_equal("", scheme.str()); - assert_stdstring_equal("", authority.str()); - assert_stdstring_equal("/b/?q=a", path.str()); + assert_stdsv_equal(""sv, scheme); + assert_stdsv_equal(""sv, authority); + assert_stdsv_equal("/b/?q=a"sv, path); } void test_http2_contains_trailers(void) { - assert_false(http2::contains_trailers(StringRef::from_lit(""))); - assert_true(http2::contains_trailers(StringRef::from_lit("trailers"))); + assert_false(http2::contains_trailers(""_sr)); + assert_true(http2::contains_trailers("trailers"_sr)); // Match must be case-insensitive. - assert_true(http2::contains_trailers(StringRef::from_lit("TRAILERS"))); - assert_false(http2::contains_trailers(StringRef::from_lit("trailer"))); - assert_false(http2::contains_trailers(StringRef::from_lit("trailers 3"))); - assert_true(http2::contains_trailers(StringRef::from_lit("trailers,"))); - assert_true(http2::contains_trailers(StringRef::from_lit("trailers,foo"))); - assert_true(http2::contains_trailers(StringRef::from_lit("foo,trailers"))); - assert_true( - http2::contains_trailers(StringRef::from_lit("foo,trailers,bar"))); - assert_true( - http2::contains_trailers(StringRef::from_lit("foo, trailers ,bar"))); - assert_true(http2::contains_trailers(StringRef::from_lit(",trailers"))); + assert_true(http2::contains_trailers("TRAILERS"_sr)); + assert_false(http2::contains_trailers("trailer"_sr)); + assert_false(http2::contains_trailers("trailers 3"_sr)); + assert_true(http2::contains_trailers("trailers,"_sr)); + assert_true(http2::contains_trailers("trailers,foo"_sr)); + assert_true(http2::contains_trailers("foo,trailers"_sr)); + assert_true(http2::contains_trailers("foo,trailers,bar"_sr)); + assert_true(http2::contains_trailers("foo, trailers ,bar"_sr)); + assert_true(http2::contains_trailers(",trailers"_sr)); } void test_http2_check_transfer_encoding(void) { - assert_true(http2::check_transfer_encoding(StringRef::from_lit("chunked"))); + assert_true(http2::check_transfer_encoding("chunked"_sr)); + assert_true(http2::check_transfer_encoding("foo,chunked"_sr)); + assert_true(http2::check_transfer_encoding("foo, chunked"_sr)); + assert_true(http2::check_transfer_encoding("foo , chunked"_sr)); + assert_true(http2::check_transfer_encoding("chunked;foo=bar"_sr)); + assert_true(http2::check_transfer_encoding("chunked ; foo=bar"_sr)); + assert_true(http2::check_transfer_encoding(R"(chunked;foo="bar")"_sr)); assert_true( - http2::check_transfer_encoding(StringRef::from_lit("foo,chunked"))); - assert_true( - http2::check_transfer_encoding(StringRef::from_lit("foo, chunked"))); - assert_true( - http2::check_transfer_encoding(StringRef::from_lit("foo , chunked"))); - assert_true( - http2::check_transfer_encoding(StringRef::from_lit("chunked;foo=bar"))); - assert_true( - http2::check_transfer_encoding(StringRef::from_lit("chunked ; foo=bar"))); - assert_true(http2::check_transfer_encoding( - StringRef::from_lit(R"(chunked;foo="bar")"))); - assert_true(http2::check_transfer_encoding( - StringRef::from_lit(R"(chunked;foo="\bar\"";FOO=BAR)"))); - assert_true( - http2::check_transfer_encoding(StringRef::from_lit(R"(chunked;foo="")"))); - assert_true(http2::check_transfer_encoding( - StringRef::from_lit(R"(chunked;foo="bar" , gzip)"))); + http2::check_transfer_encoding(R"(chunked;foo="\bar\"";FOO=BAR)"_sr)); + assert_true(http2::check_transfer_encoding(R"(chunked;foo="")"_sr)); + assert_true(http2::check_transfer_encoding(R"(chunked;foo="bar" , gzip)"_sr)); assert_false(http2::check_transfer_encoding(StringRef{})); - assert_false(http2::check_transfer_encoding(StringRef::from_lit(",chunked"))); - assert_false(http2::check_transfer_encoding(StringRef::from_lit("chunked,"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit("chunked, "))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit("foo,,chunked"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit("chunked;foo"))); - assert_false(http2::check_transfer_encoding(StringRef::from_lit("chunked;"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit("chunked;foo=bar;"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit("chunked;?=bar"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit("chunked;=bar"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit("chunked;;"))); - assert_false(http2::check_transfer_encoding(StringRef::from_lit("chunked?"))); - assert_false(http2::check_transfer_encoding(StringRef::from_lit(","))); - assert_false(http2::check_transfer_encoding(StringRef::from_lit(" "))); - assert_false(http2::check_transfer_encoding(StringRef::from_lit(";"))); - assert_false(http2::check_transfer_encoding(StringRef::from_lit("\""))); - assert_false(http2::check_transfer_encoding( - StringRef::from_lit(R"(chunked;foo="bar)"))); - assert_false(http2::check_transfer_encoding( - StringRef::from_lit(R"(chunked;foo="bar\)"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit(R"(chunked;foo="bar\)" - "\x0a" - R"(")"))); - assert_false( - http2::check_transfer_encoding(StringRef::from_lit(R"(chunked;foo=")" - "\x0a" - R"(")"))); - assert_false(http2::check_transfer_encoding( - StringRef::from_lit(R"(chunked;foo="bar",,gzip)"))); + assert_false(http2::check_transfer_encoding(",chunked"_sr)); + assert_false(http2::check_transfer_encoding("chunked,"_sr)); + assert_false(http2::check_transfer_encoding("chunked, "_sr)); + assert_false(http2::check_transfer_encoding("foo,,chunked"_sr)); + assert_false(http2::check_transfer_encoding("chunked;foo"_sr)); + assert_false(http2::check_transfer_encoding("chunked;"_sr)); + assert_false(http2::check_transfer_encoding("chunked;foo=bar;"_sr)); + assert_false(http2::check_transfer_encoding("chunked;?=bar"_sr)); + assert_false(http2::check_transfer_encoding("chunked;=bar"_sr)); + assert_false(http2::check_transfer_encoding("chunked;;"_sr)); + assert_false(http2::check_transfer_encoding("chunked?"_sr)); + assert_false(http2::check_transfer_encoding(","_sr)); + assert_false(http2::check_transfer_encoding(" "_sr)); + assert_false(http2::check_transfer_encoding(";"_sr)); + assert_false(http2::check_transfer_encoding("\""_sr)); + assert_false(http2::check_transfer_encoding(R"(chunked;foo="bar)"_sr)); + assert_false(http2::check_transfer_encoding(R"(chunked;foo="bar\)"_sr)); + assert_false(http2::check_transfer_encoding(R"(chunked;foo="bar\)" + "\x0a" + R"(")"_sr)); + assert_false(http2::check_transfer_encoding(R"(chunked;foo=")" + "\x0a" + R"(")"_sr)); + assert_false(http2::check_transfer_encoding(R"(chunked;foo="bar",,gzip)"_sr)); } } // namespace shrpx diff --git a/yass/third_party/nghttp2/src/http3.cc b/yass/third_party/nghttp2/src/http3.cc index 61134ad74d..9bf33de28e 100644 --- a/yass/third_party/nghttp2/src/http3.cc +++ b/yass/third_party/nghttp2/src/http3.cc @@ -28,56 +28,6 @@ namespace nghttp2 { namespace http3 { -namespace { -nghttp3_nv make_nv_internal(const std::string &name, const std::string &value, - bool never_index, uint8_t nv_flags) { - uint8_t flags; - - flags = nv_flags | - (never_index ? NGHTTP3_NV_FLAG_NEVER_INDEX : NGHTTP3_NV_FLAG_NONE); - - return {(uint8_t *)name.c_str(), (uint8_t *)value.c_str(), name.size(), - value.size(), flags}; -} -} // namespace - -namespace { -nghttp3_nv make_nv_internal(const StringRef &name, const StringRef &value, - bool never_index, uint8_t nv_flags) { - uint8_t flags; - - flags = nv_flags | - (never_index ? NGHTTP3_NV_FLAG_NEVER_INDEX : NGHTTP3_NV_FLAG_NONE); - - return {(uint8_t *)name.c_str(), (uint8_t *)value.c_str(), name.size(), - value.size(), flags}; -} -} // namespace - -nghttp3_nv make_nv(const std::string &name, const std::string &value, - bool never_index) { - return make_nv_internal(name, value, never_index, NGHTTP3_NV_FLAG_NONE); -} - -nghttp3_nv make_nv(const StringRef &name, const StringRef &value, - bool never_index) { - return make_nv_internal(name, value, never_index, NGHTTP3_NV_FLAG_NONE); -} - -nghttp3_nv make_nv_nocopy(const std::string &name, const std::string &value, - bool never_index) { - return make_nv_internal(name, value, never_index, - NGHTTP3_NV_FLAG_NO_COPY_NAME | - NGHTTP3_NV_FLAG_NO_COPY_VALUE); -} - -nghttp3_nv make_nv_nocopy(const StringRef &name, const StringRef &value, - bool never_index) { - return make_nv_internal(name, value, never_index, - NGHTTP3_NV_FLAG_NO_COPY_NAME | - NGHTTP3_NV_FLAG_NO_COPY_VALUE); -} - namespace { void copy_headers_to_nva_internal(std::vector &nva, const HeaderRefs &headers, uint8_t nv_flags, @@ -172,17 +122,12 @@ void copy_headers_to_nva_internal(std::vector &nva, it_via = it; break; } - nva.push_back( - make_nv_internal(kv->name, kv->value, kv->no_index, nv_flags)); + nva.push_back(make_field_flags(kv->name, kv->value, + nv_flags | never_index(kv->no_index))); } } } // namespace -void copy_headers_to_nva(std::vector &nva, - const HeaderRefs &headers, uint32_t flags) { - copy_headers_to_nva_internal(nva, headers, NGHTTP3_NV_FLAG_NONE, flags); -} - void copy_headers_to_nva_nocopy(std::vector &nva, const HeaderRefs &headers, uint32_t flags) { copy_headers_to_nva_internal( @@ -190,17 +135,6 @@ void copy_headers_to_nva_nocopy(std::vector &nva, NGHTTP3_NV_FLAG_NO_COPY_NAME | NGHTTP3_NV_FLAG_NO_COPY_VALUE, flags); } -int check_nv(const uint8_t *name, size_t namelen, const uint8_t *value, - size_t valuelen) { - if (!nghttp3_check_header_name(name, namelen)) { - return 0; - } - if (!nghttp3_check_header_value(value, valuelen)) { - return 0; - } - return 1; -} - } // namespace http3 } // namespace nghttp2 diff --git a/yass/third_party/nghttp2/src/http3.h b/yass/third_party/nghttp2/src/http3.h index 81ee0d732d..cd68922f2e 100644 --- a/yass/third_party/nghttp2/src/http3.h +++ b/yass/third_party/nghttp2/src/http3.h @@ -40,82 +40,38 @@ namespace nghttp2 { namespace http3 { -// Creates nghttp3_nv using |name| and |value| and returns it. The -// returned value only references the data pointer to name.c_str() and -// value.c_str(). If |no_index| is true, nghttp3_nv flags member has -// NGHTTP3_NV_FLAG_NEVER_INDEX flag set. -nghttp3_nv make_nv(const std::string &name, const std::string &value, - bool never_index = false); +// Create nghttp3_nv from |name|, |value| and |flags|. +inline nghttp3_nv make_field_flags(const StringRef &name, + const StringRef &value, + uint8_t flags = NGHTTP3_NV_FLAG_NONE) { + auto ns = as_uint8_span(std::span{name}); + auto vs = as_uint8_span(std::span{value}); -nghttp3_nv make_nv(const StringRef &name, const StringRef &value, - bool never_index = false); - -nghttp3_nv make_nv_nocopy(const std::string &name, const std::string &value, - bool never_index = false); - -nghttp3_nv make_nv_nocopy(const StringRef &name, const StringRef &value, - bool never_index = false); - -// Create nghttp3_nv from string literal |name| and |value|. -template -constexpr nghttp3_nv make_nv_ll(const char (&name)[N], const char (&value)[M]) { - return {(uint8_t *)name, (uint8_t *)value, N - 1, M - 1, - NGHTTP3_NV_FLAG_NO_COPY_NAME | NGHTTP3_NV_FLAG_NO_COPY_VALUE}; + return {const_cast(ns.data()), const_cast(vs.data()), + ns.size(), vs.size(), flags}; } -// Create nghttp3_nv from string literal |name| and c-string |value|. -template -nghttp3_nv make_nv_lc(const char (&name)[N], const char *value) { - return {(uint8_t *)name, (uint8_t *)value, N - 1, strlen(value), - NGHTTP3_NV_FLAG_NO_COPY_NAME}; +// Creates nghttp3_nv from |name|, |value| and |flags|. nghttp3 +// library does not copy them. +inline nghttp3_nv make_field(const StringRef &name, const StringRef &value, + uint8_t flags = NGHTTP3_NV_FLAG_NONE) { + return make_field_flags(name, value, + static_cast(NGHTTP3_NV_FLAG_NO_COPY_NAME | + NGHTTP3_NV_FLAG_NO_COPY_VALUE | + flags)); } -template -nghttp3_nv make_nv_lc_nocopy(const char (&name)[N], const char *value) { - return {(uint8_t *)name, (uint8_t *)value, N - 1, strlen(value), - NGHTTP3_NV_FLAG_NO_COPY_NAME | NGHTTP3_NV_FLAG_NO_COPY_VALUE}; +// Returns NGHTTP3_NV_FLAG_NEVER_INDEX if |never_index| is true, +// otherwise NGHTTP3_NV_FLAG_NONE. +inline uint8_t never_index(bool never_index) { + return never_index ? NGHTTP3_NV_FLAG_NEVER_INDEX : NGHTTP3_NV_FLAG_NONE; } -// Create nghttp3_nv from string literal |name| and std::string -// |value|. -template -nghttp3_nv make_nv_ls(const char (&name)[N], const std::string &value) { - return {(uint8_t *)name, (uint8_t *)value.c_str(), N - 1, value.size(), - NGHTTP3_NV_FLAG_NO_COPY_NAME}; -} - -template -nghttp3_nv make_nv_ls_nocopy(const char (&name)[N], const std::string &value) { - return {(uint8_t *)name, (uint8_t *)value.c_str(), N - 1, value.size(), - NGHTTP3_NV_FLAG_NO_COPY_NAME | NGHTTP3_NV_FLAG_NO_COPY_VALUE}; -} - -template -nghttp3_nv make_nv_ls_nocopy(const char (&name)[N], const StringRef &value) { - return {(uint8_t *)name, (uint8_t *)value.c_str(), N - 1, value.size(), - NGHTTP3_NV_FLAG_NO_COPY_NAME | NGHTTP3_NV_FLAG_NO_COPY_VALUE}; -} - -// Appends headers in |headers| to |nv|. |headers| must be indexed -// before this call (its element's token field is assigned). Certain -// headers, including disallowed headers in HTTP/3 spec and headers -// which require special handling (i.e. via), are not copied. |flags| -// is one or more of HeaderBuildOp flags. They tell function that -// certain header fields should not be added. -void copy_headers_to_nva(std::vector &nva, - const HeaderRefs &headers, uint32_t flags); - // Just like copy_headers_to_nva(), but this adds // NGHTTP3_NV_FLAG_NO_COPY_NAME and NGHTTP3_NV_FLAG_NO_COPY_VALUE. void copy_headers_to_nva_nocopy(std::vector &nva, const HeaderRefs &headers, uint32_t flags); -// Checks the header name/value pair using nghttp3_check_header_name() -// and nghttp3_check_header_value(). If both function returns nonzero, -// this function returns nonzero. -int check_nv(const uint8_t *name, size_t namelen, const uint8_t *value, - size_t valuelen); - } // namespace http3 } // namespace nghttp2 diff --git a/yass/third_party/nghttp2/src/memchunk.h b/yass/third_party/nghttp2/src/memchunk.h index 7a7f2e9b05..7026184a42 100644 --- a/yass/third_party/nghttp2/src/memchunk.h +++ b/yass/third_party/nghttp2/src/memchunk.h @@ -199,7 +199,7 @@ template struct Memchunks { return append(s, N - 1); } size_t append(const std::string &s) { return append(s.c_str(), s.size()); } - size_t append(const StringRef &s) { return append(s.c_str(), s.size()); } + size_t append(const StringRef &s) { return append(s.data(), s.size()); } size_t append(const ImmutableString &s) { return append(s.c_str(), s.size()); } diff --git a/yass/third_party/nghttp2/src/nghttp.cc b/yass/third_party/nghttp2/src/nghttp.cc index 66843743d2..8ca37bbc94 100644 --- a/yass/third_party/nghttp2/src/nghttp.cc +++ b/yass/third_party/nghttp2/src/nghttp.cc @@ -89,13 +89,13 @@ enum { }; namespace { -constexpr auto anchors = std::array{{ +constexpr auto anchors = std::to_array({ {3, 0, 201}, {5, 0, 101}, {7, 0, 1}, {9, 7, 1}, {11, 3, 1}, -}}; +}); } // namespace Config::Config() @@ -201,9 +201,9 @@ StringRef Request::get_real_host() const { uint16_t Request::get_real_port() const { auto scheme = get_real_scheme(); return config.host_override.empty() ? util::has_uri_field(u, UF_PORT) ? u.port - : scheme == "https" ? 443 + : scheme == "https"_sr ? 443 : 80 - : config.port_override == 0 ? scheme == "https" ? 443 : 80 + : config.port_override == 0 ? scheme == "https"_sr ? 443 : 80 : config.port_override; } @@ -215,7 +215,7 @@ void Request::init_html_parser() { auto ipv6_lit = std::find(std::begin(host), std::end(host), ':') != std::end(host); - auto base_uri = scheme.str(); + auto base_uri = std::string{scheme}; base_uri += "://"; if (ipv6_lit) { base_uri += '['; @@ -224,8 +224,8 @@ void Request::init_html_parser() { if (ipv6_lit) { base_uri += ']'; } - if (!((scheme == "https" && port == 443) || - (scheme == "http" && port == 80))) { + if (!((scheme == "https"_sr && port == 443) || + (scheme == "http"_sr && port == 80))) { base_uri += ':'; base_uri += util::utos(port); } @@ -247,9 +247,9 @@ int Request::update_html_parser(const uint8_t *data, size_t len, int fin) { } std::string Request::make_reqpath() const { - std::string path = util::has_uri_field(u, UF_PATH) - ? util::get_uri_field(uri.c_str(), u, UF_PATH).str() - : "/"; + auto path = util::has_uri_field(u, UF_PATH) + ? std::string{util::get_uri_field(uri.c_str(), u, UF_PATH)} + : "/"s; if (util::has_uri_field(u, UF_QUERY)) { path += '?'; path.append(uri.c_str() + u.field_data[UF_QUERY].off, @@ -266,15 +266,15 @@ std::string decode_host(const StringRef &host) { if (zone_start == std::end(host) || !util::ipv6_numeric_addr( std::string(std::begin(host), zone_start).c_str())) { - return host.str(); + return std::string{host}; } // case: ::1% if (zone_start + 1 == std::end(host)) { - return StringRef{host.c_str(), host.size() - 1}.str(); + return {host.data(), host.size() - 1}; } // case: ::1%12 or ::1%1 if (zone_start + 3 >= std::end(host)) { - return host.str(); + return std::string{host}; } // If we see "%25", followed by more characters, then decode %25 as // '%'. @@ -454,7 +454,7 @@ int submit_request(HttpClient *client, const Headers &headers, Request *req) { auto scheme = util::get_uri_field(req->uri.c_str(), req->u, UF_SCHEMA); auto build_headers = Headers{{":method", req->data_prd ? "POST" : "GET"}, {":path", req->make_reqpath()}, - {":scheme", scheme.str()}, + {":scheme", std::string{scheme}}, {":authority", client->hostport}, {"accept", "*/*"}, {"accept-encoding", "gzip, deflate"}, @@ -500,7 +500,8 @@ int submit_request(HttpClient *client, const Headers &headers, Request *req) { nva.reserve(build_headers.size()); for (auto &kv : build_headers) { - nva.push_back(http2::make_nv(kv.name, kv.value, kv.no_index)); + nva.push_back( + http2::make_field_nv(kv.name, kv.value, http2::no_index(kv.no_index))); } auto method = http2::get_header(build_headers, ":method"); @@ -515,7 +516,7 @@ int submit_request(HttpClient *client, const Headers &headers, Request *req) { trailer_names += ", "; trailer_names += config.trailer[i].name; } - nva.push_back(http2::make_nv_ls("trailer", trailer_names)); + nva.push_back(http2::make_field_v("trailer"_sr, trailer_names)); } int32_t stream_id; @@ -975,9 +976,9 @@ int HttpClient::on_upgrade_connect() { // If the request contains upload data, use OPTIONS * to upgrade req = "OPTIONS *"; } else { - auto meth = std::find_if( - std::begin(config.headers), std::end(config.headers), - [](const Header &kv) { return util::streq_l(":method", kv.name); }); + auto meth = + std::find_if(std::begin(config.headers), std::end(config.headers), + [](const auto &kv) { return ":method"_sr == kv.name; }); if (meth == std::end(config.headers)) { req = "GET "; @@ -1424,8 +1425,7 @@ void HttpClient::update_hostport() { if (reqvec.empty()) { return; } - scheme = util::get_uri_field(reqvec[0]->uri.c_str(), reqvec[0]->u, UF_SCHEMA) - .str(); + scheme = util::get_uri_field(reqvec[0]->uri.c_str(), reqvec[0]->u, UF_SCHEMA); std::stringstream ss; if (reqvec[0]->is_ipv6_literal_addr()) { // we may have zone ID, which must start with "%25", or "%". RFC @@ -1435,7 +1435,7 @@ void HttpClient::update_hostport() { util::get_uri_field(reqvec[0]->uri.c_str(), reqvec[0]->u, UF_HOST); auto end = std::find(std::begin(host), std::end(host), '%'); ss << "["; - ss.write(host.c_str(), end - std::begin(host)); + ss.write(host.data(), end - std::begin(host)); ss << "]"; } else { util::write_uri_field(ss, reqvec[0]->uri.c_str(), reqvec[0]->u, UF_HOST); @@ -1688,7 +1688,7 @@ void update_html_parser(HttpClient *client, Request *req, const uint8_t *data, } auto link_port = util::has_uri_field(u, UF_PORT) ? u.port - : scheme == "https" ? 443 + : scheme == "https"_sr ? 443 : 80; if (port != link_port) { @@ -1800,8 +1800,8 @@ void check_response_header(nghttp2_session *session, Request *req) { for (auto &nv : req->res_nva) { if ("content-encoding" == nv.name) { - gzip = util::strieq_l("gzip", nv.value) || - util::strieq_l("deflate", nv.value); + gzip = util::strieq("gzip"_sr, nv.value) || + util::strieq("deflate"_sr, nv.value); continue; } } @@ -1915,10 +1915,12 @@ int on_header_callback(nghttp2_session *session, const nghttp2_frame *frame, req->header_buffer_size += namelen + valuelen; - auto token = http2::lookup_token(name, namelen); + auto nameref = StringRef{name, namelen}; + auto valueref = StringRef{value, valuelen}; + auto token = http2::lookup_token(nameref); http2::index_header(req->res_hdidx, token, req->res_nva.size()); - http2::add_header(req->res_nva, name, namelen, value, valuelen, + http2::add_header(req->res_nva, nameref, valueref, flags & NGHTTP2_NV_FLAG_NO_INDEX, token); break; } @@ -1939,10 +1941,12 @@ int on_header_callback(nghttp2_session *session, const nghttp2_frame *frame, req->header_buffer_size += namelen + valuelen; - auto token = http2::lookup_token(name, namelen); + auto nameref = StringRef{name, namelen}; + auto valueref = StringRef{value, valuelen}; + auto token = http2::lookup_token(nameref); http2::index_header(req->req_hdidx, token, req->req_nva.size()); - http2::add_header(req->req_nva, name, namelen, value, valuelen, + http2::add_header(req->req_nva, nameref, valueref, flags & NGHTTP2_NV_FLAG_NO_INDEX, token); break; } @@ -2283,7 +2287,8 @@ int communicate( goto fin; } - if (SSL_CTX_set_cipher_list(ssl_ctx, tls::DEFAULT_CIPHER_LIST) == 0) { + if (SSL_CTX_set_cipher_list(ssl_ctx, tls::DEFAULT_CIPHER_LIST.data()) == + 0) { std::cerr << "[ERROR] " << ERR_error_string(ERR_get_error(), nullptr) << std::endl; result = -1; @@ -2437,7 +2442,8 @@ nghttp2_ssize file_read_callback(nghttp2_session *session, int32_t stream_id, std::vector nva; nva.reserve(config.trailer.size()); for (auto &kv : config.trailer) { - nva.push_back(http2::make_nv(kv.name, kv.value, kv.no_index)); + nva.push_back(http2::make_field_nv(kv.name, kv.value, + http2::no_index(kv.no_index))); } rv = nghttp2_submit_trailer(session, stream_id, nva.data(), nva.size()); if (rv != 0) { @@ -2609,7 +2615,7 @@ int run(char **uris, int n) { } requests.clear(); } - prev_scheme = util::get_uri_field(uri.c_str(), u, UF_SCHEMA).str(); + prev_scheme = util::get_uri_field(uri.c_str(), u, UF_SCHEMA); prev_host = std::move(host); prev_port = port; } @@ -2818,11 +2824,11 @@ int main(int argc, char **argv) { case 'M': { // peer-max-concurrent-streams option auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-M: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.peer_max_concurrent_streams = n; + config.peer_max_concurrent_streams = *n; break; } case 'O': @@ -2833,11 +2839,11 @@ int main(int argc, char **argv) { exit(EXIT_SUCCESS); case 'b': { auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-b: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.padding = n; + config.padding = *n; break; } case 'n': @@ -2845,13 +2851,13 @@ int main(int argc, char **argv) { break; case 'p': { auto n = util::parse_uint(optarg); - if (n == -1 || NGHTTP2_MIN_WEIGHT > n || n > NGHTTP2_MAX_WEIGHT) { + if (!n || NGHTTP2_MIN_WEIGHT > n || n > NGHTTP2_MAX_WEIGHT) { std::cerr << "-p: specify the integer in the range [" << NGHTTP2_MIN_WEIGHT << ", " << NGHTTP2_MAX_WEIGHT << "], inclusive" << std::endl; exit(EXIT_FAILURE); } - config.weight.push_back(n); + config.weight.push_back(*n); break; } case 'r': @@ -2865,29 +2871,31 @@ int main(int argc, char **argv) { case 'v': ++config.verbose; break; - case 't': - config.timeout = util::parse_duration_with_unit(optarg); - if (config.timeout == std::numeric_limits::infinity()) { + case 't': { + auto d = util::parse_duration_with_unit(optarg); + if (!d) { std::cerr << "-t: bad timeout value: " << optarg << std::endl; exit(EXIT_FAILURE); } + config.timeout = *d; break; + } case 'u': config.upgrade = true; break; case 'w': case 'W': { auto n = util::parse_uint(optarg); - if (n == -1 || n > 30) { + if (!n || n > 30) { std::cerr << "-" << static_cast(c) << ": specify the integer in the range [0, 30], inclusive" << std::endl; exit(EXIT_FAILURE); } if (c == 'w') { - config.window_bits = n; + config.window_bits = *n; } else { - config.connection_window_bits = n; + config.connection_window_bits = *n; } break; } @@ -2931,16 +2939,16 @@ int main(int argc, char **argv) { break; case 'm': { auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-m: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.multiply = n; + config.multiply = *n; break; } case 'c': { auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { std::cerr << "-c: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } @@ -2949,8 +2957,8 @@ int main(int argc, char **argv) { << std::numeric_limits::max() << std::endl; exit(EXIT_FAILURE); } - config.header_table_size = n; - config.min_header_table_size = std::min(config.min_header_table_size, n); + config.header_table_size = *n; + config.min_header_table_size = std::min(config.min_header_table_size, *n); break; } case 'y': @@ -3024,12 +3032,12 @@ int main(int argc, char **argv) { case 12: { // max-concurrent-streams option auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "--max-concurrent-streams: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.max_concurrent_streams = n; + config.max_concurrent_streams = *n; break; } case 13: @@ -3039,7 +3047,7 @@ int main(int argc, char **argv) { case 14: { // encoder-header-table-size option auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { std::cerr << "--encoder-header-table-size: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); @@ -3050,7 +3058,7 @@ int main(int argc, char **argv) { << std::numeric_limits::max() << std::endl; exit(EXIT_FAILURE); } - config.encoder_header_table_size = n; + config.encoder_header_table_size = *n; break; } case 15: @@ -3105,7 +3113,7 @@ int main(int argc, char **argv) { exit(EXIT_FAILURE); } - config.host_override = util::get_uri_field(uri.c_str(), u, UF_HOST).str(); + config.host_override = util::get_uri_field(uri.c_str(), u, UF_HOST); if (util::has_uri_field(u, UF_PORT)) { config.port_override = u.port; } diff --git a/yass/third_party/nghttp2/src/nghttpd.cc b/yass/third_party/nghttp2/src/nghttpd.cc index 9cad874ff4..de62953c8d 100644 --- a/yass/third_party/nghttp2/src/nghttpd.cc +++ b/yass/third_party/nghttp2/src/nghttpd.cc @@ -246,11 +246,11 @@ int main(int argc, char **argv) { break; case 'b': { auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-b: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.padding = n; + config.padding = *n; break; } case 'd': @@ -262,11 +262,11 @@ int main(int argc, char **argv) { case 'm': { // max-concurrent-streams option auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-m: invalid argument: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.max_concurrent_streams = n; + config.max_concurrent_streams = *n; break; } case 'n': { @@ -275,11 +275,11 @@ int main(int argc, char **argv) { << "no threads created." << std::endl; #else auto n = util::parse_uint(optarg); - if (n == -1) { + if (!n) { std::cerr << "-n: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } - config.num_worker = n; + config.num_worker = *n; #endif // NOTHREADS break; } @@ -291,7 +291,7 @@ int main(int argc, char **argv) { break; case 'c': { auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { std::cerr << "-c: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); } @@ -300,7 +300,7 @@ int main(int argc, char **argv) { << std::numeric_limits::max() << std::endl; exit(EXIT_FAILURE); } - config.header_table_size = n; + config.header_table_size = *n; break; } case 'p': @@ -311,7 +311,7 @@ int main(int argc, char **argv) { case 'w': case 'W': { auto n = util::parse_uint(optarg); - if (n == -1 || n > 30) { + if (!n || n > 30) { std::cerr << "-" << static_cast(c) << ": specify the integer in the range [0, 30], inclusive" << std::endl; @@ -319,9 +319,9 @@ int main(int argc, char **argv) { } if (c == 'w') { - config.window_bits = n; + config.window_bits = *n; } else { - config.connection_window_bits = n; + config.connection_window_bits = *n; } break; @@ -395,7 +395,7 @@ int main(int argc, char **argv) { case 11: { // encoder-header-table-size option auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { std::cerr << "--encoder-header-table-size: Bad option value: " << optarg << std::endl; exit(EXIT_FAILURE); @@ -406,7 +406,7 @@ int main(int argc, char **argv) { << std::numeric_limits::max() << std::endl; exit(EXIT_FAILURE); } - config.encoder_header_table_size = n; + config.encoder_header_table_size = *n; break; } case 12: @@ -432,11 +432,11 @@ int main(int argc, char **argv) { { auto portStr = argv[optind++]; auto n = util::parse_uint(portStr); - if (n == -1 || n > std::numeric_limits::max()) { + if (!n || n > std::numeric_limits::max()) { std::cerr << ": Bad value: " << portStr << std::endl; exit(EXIT_FAILURE); } - config.port = n; + config.port = *n; } if (!config.no_tls) { diff --git a/yass/third_party/nghttp2/src/shrpx.cc b/yass/third_party/nghttp2/src/shrpx.cc index 89a77877e3..86d00dcc91 100644 --- a/yass/third_party/nghttp2/src/shrpx.cc +++ b/yass/third_party/nghttp2/src/shrpx.cc @@ -71,6 +71,7 @@ #include #include #include +#include #include #include @@ -112,19 +113,19 @@ namespace shrpx { // Deprecated: Environment variables to tell new binary the listening // socket's file descriptors. They are not close-on-exec. -constexpr auto ENV_LISTENER4_FD = StringRef::from_lit("NGHTTPX_LISTENER4_FD"); -constexpr auto ENV_LISTENER6_FD = StringRef::from_lit("NGHTTPX_LISTENER6_FD"); +constexpr auto ENV_LISTENER4_FD = "NGHTTPX_LISTENER4_FD"_sr; +constexpr auto ENV_LISTENER6_FD = "NGHTTPX_LISTENER6_FD"_sr; // Deprecated: Environment variable to tell new binary the port number // the current binary is listening to. -constexpr auto ENV_PORT = StringRef::from_lit("NGHTTPX_PORT"); +constexpr auto ENV_PORT = "NGHTTPX_PORT"_sr; // Deprecated: Environment variable to tell new binary the listening // socket's file descriptor if frontend listens UNIX domain socket. -constexpr auto ENV_UNIX_FD = StringRef::from_lit("NGHTTP2_UNIX_FD"); +constexpr auto ENV_UNIX_FD = "NGHTTP2_UNIX_FD"_sr; // Deprecated: Environment variable to tell new binary the UNIX domain // socket path. -constexpr auto ENV_UNIX_PATH = StringRef::from_lit("NGHTTP2_UNIX_PATH"); +constexpr auto ENV_UNIX_PATH = "NGHTTP2_UNIX_PATH"_sr; // Prefix of environment variables to tell new binary the listening // socket's file descriptor. They are not close-on-exec. For TCP @@ -132,13 +133,13 @@ constexpr auto ENV_UNIX_PATH = StringRef::from_lit("NGHTTP2_UNIX_PATH"); // is file descriptor. For UNIX domain socket, the value must be // comma separated 3 parameters: unix,,. is file // descriptor. is a path to UNIX domain socket. -constexpr auto ENV_ACCEPT_PREFIX = StringRef::from_lit("NGHTTPX_ACCEPT_"); +constexpr auto ENV_ACCEPT_PREFIX = "NGHTTPX_ACCEPT_"_sr; // This environment variable contains PID of the original main // process, assuming that it created this main process as a result of // SIGUSR2. The new main process is expected to send QUIT signal to // the original main process to shut it down gracefully. -constexpr auto ENV_ORIG_PID = StringRef::from_lit("NGHTTPX_ORIG_PID"); +constexpr auto ENV_ORIG_PID = "NGHTTPX_ORIG_PID"_sr; // Prefix of environment variables to tell new binary the QUIC IPC // file descriptor and Worker ID of the lingering worker process. The @@ -149,7 +150,7 @@ constexpr auto ENV_ORIG_PID = StringRef::from_lit("NGHTTPX_ORIG_PID"); // is the file descriptor. is the I-th Worker ID // in hex encoded string. constexpr auto ENV_QUIC_WORKER_PROCESS_PREFIX = - StringRef::from_lit("NGHTTPX_QUIC_WORKER_PROCESS_"); + "NGHTTPX_QUIC_WORKER_PROCESS_"_sr; #ifndef _KERNEL_FASTOPEN # define _KERNEL_FASTOPEN @@ -398,7 +399,7 @@ int save_pid() { std::array errbuf; auto config = get_config(); - constexpr auto SUFFIX = StringRef::from_lit(".XXXXXX"); + constexpr auto SUFFIX = ".XXXXXX"_sr; auto &pid_file = config->pid_file; auto len = config->pid_file.size() + SUFFIX.size(); @@ -437,7 +438,7 @@ int save_pid() { close(fd); - if (rename(temp_path, pid_file.c_str()) == -1) { + if (rename(temp_path, pid_file.data()) == -1) { auto error = errno; LOG(ERROR) << "Could not save PID to file " << pid_file << ": " << xsi_strerror(error, errbuf.data(), errbuf.size()); @@ -448,7 +449,7 @@ int save_pid() { } if (config->uid != 0) { - if (chown(pid_file.c_str(), config->uid, config->gid) == -1) { + if (chown(pid_file.data(), config->uid, config->gid) == -1) { auto error = errno; LOG(WARN) << "Changing owner of pid file " << pid_file << " failed: " << xsi_strerror(error, errbuf.data(), errbuf.size()); @@ -558,7 +559,7 @@ void exec_binary() { std::vector fd_envs; for (size_t i = 0; i < listenerconf.addrs.size(); ++i) { auto &addr = listenerconf.addrs[i]; - auto s = ENV_ACCEPT_PREFIX.str(); + auto s = std::string{ENV_ACCEPT_PREFIX}; s += util::utos(i + 1); s += '='; if (addr.host_unix) { @@ -575,7 +576,7 @@ void exec_binary() { envp[envidx++] = const_cast(fd_envs.back().c_str()); } - auto ipc_fd_str = ENV_ORIG_PID.str(); + auto ipc_fd_str = std::string{ENV_ORIG_PID}; ipc_fd_str += '='; ipc_fd_str += util::utos(config->pid); envp[envidx++] = const_cast(ipc_fd_str.c_str()); @@ -584,14 +585,13 @@ void exec_binary() { std::vector quic_lwps; for (size_t i = 0; i < worker_processes.size(); ++i) { auto &wp = worker_processes[i]; - auto s = ENV_QUIC_WORKER_PROCESS_PREFIX.str(); + auto s = std::string{ENV_QUIC_WORKER_PROCESS_PREFIX}; s += util::utos(i + 1); s += '='; s += util::utos(wp->quic_ipc_fd); for (auto &wid : wp->worker_ids) { s += ','; - s += util::format_hex(reinterpret_cast(&wid), - sizeof(wid)); + s += util::format_hex(std::span{&wid, 1}); } quic_lwps.emplace_back(s); @@ -741,7 +741,7 @@ int create_unix_domain_server_socket(UpstreamAddr &faddr, << (faddr.tls ? ", tls" : ""); (*found).used = true; faddr.fd = (*found).fd; - faddr.hostport = StringRef::from_lit("localhost"); + faddr.hostport = "localhost"_sr; return 0; } @@ -783,10 +783,10 @@ int create_unix_domain_server_socket(UpstreamAddr &faddr, return -1; } // copy path including terminal NULL - std::copy_n(faddr.host.c_str(), faddr.host.size() + 1, addr.un.sun_path); + std::copy_n(faddr.host.data(), faddr.host.size() + 1, addr.un.sun_path); // unlink (remove) already existing UNIX domain socket path - unlink(faddr.host.c_str()); + unlink(faddr.host.data()); if (bind(fd, &addr.sa, sizeof(addr.un)) != 0) { auto error = errno; @@ -810,7 +810,7 @@ int create_unix_domain_server_socket(UpstreamAddr &faddr, << (faddr.tls ? ", tls" : ""); faddr.fd = fd; - faddr.hostport = StringRef::from_lit("localhost"); + faddr.hostport = "localhost"_sr; return 0; } @@ -834,8 +834,7 @@ int create_tcp_server_socket(UpstreamAddr &faddr, hints.ai_flags |= AI_ADDRCONFIG; #endif // AI_ADDRCONFIG - auto node = - faddr.host == StringRef::from_lit("*") ? nullptr : faddr.host.c_str(); + auto node = faddr.host == "*"_sr ? nullptr : faddr.host.data(); addrinfo *res, *rp; rv = getaddrinfo(node, service.c_str(), &hints, &res); @@ -867,10 +866,12 @@ int create_tcp_server_socket(UpstreamAddr &faddr, continue; } + auto host_sr = StringRef{host.data()}; + auto found = std::find_if(std::begin(iaddrs), std::end(iaddrs), - [&host, &faddr](const InheritedAddr &ia) { + [&host_sr, &faddr](const InheritedAddr &ia) { return !ia.used && !ia.host_unix && - ia.host == host.data() && + ia.host == host_sr && ia.port == faddr.port; }); @@ -1056,13 +1057,13 @@ std::vector get_inherited_addr_from_env(Config *config) { { // Upgrade from 1.7.0 or earlier - auto portenv = getenv(ENV_PORT.c_str()); + auto portenv = getenv(ENV_PORT.data()); if (portenv) { size_t i = 1; for (const auto &env_name : {ENV_LISTENER4_FD, ENV_LISTENER6_FD}) { - auto fdenv = getenv(env_name.c_str()); + auto fdenv = getenv(env_name.data()); if (fdenv) { - auto name = ENV_ACCEPT_PREFIX.str(); + auto name = std::string{ENV_ACCEPT_PREFIX}; name += util::utos(i); std::string value = "tcp,"; value += fdenv; @@ -1072,20 +1073,20 @@ std::vector get_inherited_addr_from_env(Config *config) { } } else { // The return value of getenv may be allocated statically. - if (getenv(ENV_UNIX_PATH.c_str()) && getenv(ENV_UNIX_FD.c_str())) { - auto name = ENV_ACCEPT_PREFIX.str(); + if (getenv(ENV_UNIX_PATH.data()) && getenv(ENV_UNIX_FD.data())) { + auto name = std::string{ENV_ACCEPT_PREFIX}; name += '1'; std::string value = "unix,"; - value += getenv(ENV_UNIX_FD.c_str()); + value += getenv(ENV_UNIX_FD.data()); value += ','; - value += getenv(ENV_UNIX_PATH.c_str()); + value += getenv(ENV_UNIX_PATH.data()); setenv(name.c_str(), value.c_str(), 0); } } } for (size_t i = 1;; ++i) { - auto name = ENV_ACCEPT_PREFIX.str(); + auto name = std::string{ENV_ACCEPT_PREFIX}; name += util::utos(i); auto env = getenv(name.c_str()); if (!env) { @@ -1104,14 +1105,13 @@ std::vector get_inherited_addr_from_env(Config *config) { auto type = StringRef(env, end_type); auto value = end_type + 1; - if (type == StringRef::from_lit("unix")) { + if (type == "unix"_sr) { auto endfd = strchr(value, ','); if (!endfd) { continue; } - auto fd = util::parse_uint(reinterpret_cast(value), - endfd - value); - if (fd == -1) { + auto fd = util::parse_uint(StringRef{value, endfd}); + if (!fd) { LOG(WARN) << "Could not parse file descriptor from " << std::string(value, endfd - value); continue; @@ -1119,26 +1119,26 @@ std::vector get_inherited_addr_from_env(Config *config) { auto path = endfd + 1; if (strlen(path) == 0) { - LOG(WARN) << "Empty UNIX domain socket path (fd=" << fd << ")"; - close(fd); + LOG(WARN) << "Empty UNIX domain socket path (fd=" << *fd << ")"; + close(*fd); continue; } if (LOG_ENABLED(INFO)) { - LOG(INFO) << "Inherit UNIX domain socket fd=" << fd + LOG(INFO) << "Inherit UNIX domain socket fd=" << *fd << ", path=" << path; } InheritedAddr addr{}; addr.host = make_string_ref(config->balloc, StringRef{path}); addr.host_unix = true; - addr.fd = static_cast(fd); + addr.fd = static_cast(*fd); iaddrs.push_back(std::move(addr)); } - if (type == StringRef::from_lit("tcp")) { + if (type == "tcp"_sr) { auto fd = util::parse_uint(value); - if (fd == -1) { + if (!fd) { LOG(WARN) << "Could not parse file descriptor from " << value; continue; } @@ -1146,11 +1146,11 @@ std::vector get_inherited_addr_from_env(Config *config) { sockaddr_union su; socklen_t salen = sizeof(su); - if (getsockname(fd, &su.sa, &salen) != 0) { + if (getsockname(*fd, &su.sa, &salen) != 0) { auto error = errno; - LOG(WARN) << "getsockname() syscall failed (fd=" << fd + LOG(WARN) << "getsockname() syscall failed (fd=" << *fd << "): " << xsi_strerror(error, errbuf.data(), errbuf.size()); - close(fd); + close(*fd); continue; } @@ -1164,7 +1164,7 @@ std::vector get_inherited_addr_from_env(Config *config) { port = ntohs(su.in6.sin6_port); break; default: - close(fd); + close(*fd); continue; } @@ -1172,21 +1172,21 @@ std::vector get_inherited_addr_from_env(Config *config) { rv = getnameinfo(&su.sa, salen, host.data(), host.size(), nullptr, 0, NI_NUMERICHOST); if (rv != 0) { - LOG(WARN) << "getnameinfo() failed (fd=" << fd + LOG(WARN) << "getnameinfo() failed (fd=" << *fd << "): " << gai_strerror(rv); - close(fd); + close(*fd); continue; } if (LOG_ENABLED(INFO)) { - LOG(INFO) << "Inherit TCP socket fd=" << fd + LOG(INFO) << "Inherit TCP socket fd=" << *fd << ", address=" << host.data() << ", port=" << port; } InheritedAddr addr{}; addr.host = make_string_ref(config->balloc, StringRef{host.data()}); addr.port = static_cast(port); - addr.fd = static_cast(fd); + addr.fd = static_cast(*fd); iaddrs.push_back(std::move(addr)); continue; } @@ -1213,11 +1213,11 @@ namespace { // Returns the PID of the original main process from environment // variable ENV_ORIG_PID. pid_t get_orig_pid_from_env() { - auto s = getenv(ENV_ORIG_PID.c_str()); + auto s = getenv(ENV_ORIG_PID.data()); if (s == nullptr) { return -1; } - return util::parse_uint(s); + return util::parse_uint(s).value_or(-1); } } // namespace @@ -1233,7 +1233,7 @@ get_inherited_quic_lingering_worker_process_from_env() { std::vector lwps; for (size_t i = 1;; ++i) { - auto name = ENV_QUIC_WORKER_PROCESS_PREFIX.str(); + auto name = std::string{ENV_QUIC_WORKER_PROCESS_PREFIX}; name += util::utos(i); auto env = getenv(name.c_str()); if (!env) { @@ -1251,19 +1251,18 @@ get_inherited_quic_lingering_worker_process_from_env() { continue; } - auto fd = - util::parse_uint(reinterpret_cast(env), end_fd - env); - if (fd == -1) { + auto fd = util::parse_uint(StringRef{env, end_fd}); + if (!fd) { LOG(WARN) << "Could not parse file descriptor from " << StringRef{env, static_cast(end_fd - env)}; continue; } if (LOG_ENABLED(INFO)) { - LOG(INFO) << "Inherit worker process QUIC IPC socket fd=" << fd; + LOG(INFO) << "Inherit worker process QUIC IPC socket fd=" << *fd; } - util::make_socket_closeonexec(fd); + util::make_socket_closeonexec(*fd); std::vector worker_ids; @@ -1294,7 +1293,7 @@ get_inherited_quic_lingering_worker_process_from_env() { p = end + 1; } - lwps.emplace_back(std::move(worker_ids), fd); + lwps.emplace_back(std::move(worker_ids), *fd); } if (!lwps.empty()) { @@ -1326,7 +1325,7 @@ int create_acceptor_socket(Config *config, std::vector &iaddrs) { if (config->uid != 0) { // fd is not associated to inode, so we cannot use fchown(2) // here. https://lkml.org/lkml/2004/11/1/84 - if (chown(addr.host.c_str(), config->uid, config->gid) == -1) { + if (chown(addr.host.data(), config->uid, config->gid) == -1) { auto error = errno; LOG(WARN) << "Changing owner of UNIX domain socket " << addr.host << " failed: " @@ -1367,7 +1366,7 @@ namespace { // communication is unidirectional; that is main process sends // messages to the worker process. On success, ipc_fd[0] is for // reading, and ipc_fd[1] for writing, just like pipe(2). -int create_ipc_socket(std::array &ipc_fd) { +int create_ipc_socket(std::span ipc_fd) { std::array errbuf; int rv; @@ -1379,8 +1378,7 @@ int create_ipc_socket(std::array &ipc_fd) { return -1; } - for (int i = 0; i < 2; ++i) { - auto fd = ipc_fd[i]; + for (auto fd : ipc_fd) { util::make_socket_nonblocking(fd); util::make_socket_closeonexec(fd); } @@ -1390,7 +1388,7 @@ int create_ipc_socket(std::array &ipc_fd) { } // namespace namespace { -int create_worker_process_ready_ipc_socket(std::array &ipc_fd) { +int create_worker_process_ready_ipc_socket(std::span ipc_fd) { std::array errbuf; int rv; @@ -1415,7 +1413,7 @@ int create_worker_process_ready_ipc_socket(std::array &ipc_fd) { #ifdef ENABLE_HTTP3 namespace { -int create_quic_ipc_socket(std::array &quic_ipc_fd) { +int create_quic_ipc_socket(std::span quic_ipc_fd) { std::array errbuf; int rv; @@ -1929,30 +1927,29 @@ bool conf_exists(const char *path) { } // namespace namespace { -constexpr auto DEFAULT_ALPN_LIST = - StringRef::from_lit("h2,h2-16,h2-14,http/1.1"); +constexpr auto DEFAULT_ALPN_LIST = "h2,h2-16,h2-14,http/1.1"_sr; } // namespace namespace { -constexpr auto DEFAULT_TLS_MIN_PROTO_VERSION = StringRef::from_lit("TLSv1.2"); +constexpr auto DEFAULT_TLS_MIN_PROTO_VERSION = "TLSv1.2"_sr; #ifdef TLS1_3_VERSION -constexpr auto DEFAULT_TLS_MAX_PROTO_VERSION = StringRef::from_lit("TLSv1.3"); +constexpr auto DEFAULT_TLS_MAX_PROTO_VERSION = "TLSv1.3"_sr; #else // !TLS1_3_VERSION -constexpr auto DEFAULT_TLS_MAX_PROTO_VERSION = StringRef::from_lit("TLSv1.2"); +constexpr auto DEFAULT_TLS_MAX_PROTO_VERSION = "TLSv1.2"_sr; #endif // !TLS1_3_VERSION } // namespace namespace { constexpr auto DEFAULT_ACCESSLOG_FORMAT = - StringRef::from_lit(R"($remote_addr - - [$time_local] )" - R"("$request" $status $body_bytes_sent )" - R"("$http_referer" "$http_user_agent")"); + R"($remote_addr - - [$time_local] )" + R"("$request" $status $body_bytes_sent )" + R"("$http_referer" "$http_user_agent")"_sr; } // namespace namespace { void fill_default_config(Config *config) { config->num_worker = 1; - config->conf_path = StringRef::from_lit("/etc/nghttpx/nghttpx.conf"); + config->conf_path = "/etc/nghttpx/nghttpx.conf"_sr; config->pid = getpid(); #ifdef NOTHREADS @@ -1987,8 +1984,7 @@ void fill_default_config(Config *config) { auto &ocspconf = tlsconf.ocsp; // ocsp update interval = 14400 secs = 4 hours, borrowed from h2o ocspconf.update_interval = 4_h; - ocspconf.fetch_ocsp_response_file = - StringRef::from_lit(PKGDATADIR "/fetch-ocsp-response"); + ocspconf.fetch_ocsp_response_file = PKGDATADIR "/fetch-ocsp-response"_sr; } { @@ -1998,28 +1994,26 @@ void fill_default_config(Config *config) { } tlsconf.session_timeout = std::chrono::hours(12); - tlsconf.ciphers = StringRef::from_lit(nghttp2::tls::DEFAULT_CIPHER_LIST); - tlsconf.tls13_ciphers = - StringRef::from_lit(nghttp2::tls::DEFAULT_TLS13_CIPHER_LIST); - tlsconf.client.ciphers = - StringRef::from_lit(nghttp2::tls::DEFAULT_CIPHER_LIST); + tlsconf.ciphers = StringRef{nghttp2::tls::DEFAULT_CIPHER_LIST}; + tlsconf.tls13_ciphers = StringRef{nghttp2::tls::DEFAULT_TLS13_CIPHER_LIST}; + tlsconf.client.ciphers = StringRef{nghttp2::tls::DEFAULT_CIPHER_LIST}; tlsconf.client.tls13_ciphers = - StringRef::from_lit(nghttp2::tls::DEFAULT_TLS13_CIPHER_LIST); + StringRef{nghttp2::tls::DEFAULT_TLS13_CIPHER_LIST}; tlsconf.min_proto_version = tls::proto_version_from_string(DEFAULT_TLS_MIN_PROTO_VERSION); tlsconf.max_proto_version = tls::proto_version_from_string(DEFAULT_TLS_MAX_PROTO_VERSION); tlsconf.max_early_data = 16_k; - tlsconf.ecdh_curves = StringRef::from_lit("X25519:P-256:P-384:P-521"); + tlsconf.ecdh_curves = "X25519:P-256:P-384:P-521"_sr; auto &httpconf = config->http; - httpconf.server_name = StringRef::from_lit("nghttpx"); + httpconf.server_name = "nghttpx"_sr; httpconf.no_host_rewrite = true; httpconf.request_header_field_buffer = 64_k; httpconf.max_request_header_fields = 100; httpconf.response_header_field_buffer = 64_k; httpconf.max_response_header_fields = 500; - httpconf.redirect_https_port = StringRef::from_lit("443"); + httpconf.redirect_https_port = "443"_sr; httpconf.max_requests = std::numeric_limits::max(); httpconf.xfp.add = true; httpconf.xfp.strip_incoming = true; @@ -2099,7 +2093,7 @@ void fill_default_config(Config *config) { } auto &bpfconf = quicconf.bpf; - bpfconf.prog_file = StringRef::from_lit(PKGLIBDIR "/reuseport_kern.o"); + bpfconf.prog_file = PKGLIBDIR "/reuseport_kern.o"_sr; upstreamconf.congestion_controller = NGTCP2_CC_ALGO_CUBIC; @@ -2132,7 +2126,7 @@ void fill_default_config(Config *config) { parse_log_format(config->balloc, DEFAULT_ACCESSLOG_FORMAT); auto &errorconf = loggingconf.error; - errorconf.file = StringRef::from_lit("/dev/stderr"); + errorconf.file = "/dev/stderr"_sr; } loggingconf.syslog_facility = LOG_DAEMON; @@ -3659,10 +3653,10 @@ int process_options(Config *config, std::vector> &cmdcfgs) { std::array errbuf; std::map pattern_addr_indexer; - if (conf_exists(config->conf_path.c_str())) { + if (conf_exists(config->conf_path.data())) { LOG(NOTICE) << "Loading configuration from " << config->conf_path; std::set include_set; - if (load_config(config, config->conf_path.c_str(), include_set, + if (load_config(config, config->conf_path.data(), include_set, pattern_addr_indexer) == -1) { LOG(FATAL) << "Failed to load configuration from " << config->conf_path; return -1; @@ -3728,7 +3722,7 @@ int process_options(Config *config, auto &dumpconf = http2conf.upstream.debug.dump; if (!dumpconf.request_header_file.empty()) { - auto path = dumpconf.request_header_file.c_str(); + auto path = dumpconf.request_header_file.data(); auto f = open_file_for_write(path); if (f == nullptr) { @@ -3750,7 +3744,7 @@ int process_options(Config *config, } if (!dumpconf.response_header_file.empty()) { - auto path = dumpconf.response_header_file.c_str(); + auto path = dumpconf.response_header_file.data(); auto f = open_file_for_write(path); if (f == nullptr) { @@ -3801,7 +3795,7 @@ int process_options(Config *config, if (listenerconf.addrs.empty()) { UpstreamAddr addr{}; - addr.host = StringRef::from_lit("*"); + addr.host = "*"_sr; addr.port = 3000; addr.tls = true; addr.family = AF_INET; @@ -3826,7 +3820,7 @@ int process_options(Config *config, if (tls::upstream_tls_enabled(config->conn) && !tlsconf.ocsp.disabled) { struct stat buf; - if (stat(tlsconf.ocsp.fetch_ocsp_response_file.c_str(), &buf) != 0) { + if (stat(tlsconf.ocsp.fetch_ocsp_response_file.data(), &buf) != 0) { tlsconf.ocsp.disabled = true; LOG(WARN) << "--fetch-ocsp-response-file: " << tlsconf.ocsp.fetch_ocsp_response_file @@ -3845,7 +3839,7 @@ int process_options(Config *config, if (!proxy.host.empty()) { auto hostport = util::make_hostport(std::begin(hostport_buf), StringRef{proxy.host}, proxy.port); - if (resolve_hostname(&proxy.addr, proxy.host.c_str(), proxy.port, + if (resolve_hostname(&proxy.addr, proxy.host.data(), proxy.port, AF_UNSPEC) == -1) { LOG(FATAL) << "Resolving backend HTTP proxy address failed: " << hostport; return -1; @@ -3860,7 +3854,7 @@ int process_options(Config *config, auto hostport = util::make_hostport(std::begin(hostport_buf), StringRef{memcachedconf.host}, memcachedconf.port); - if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.c_str(), + if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.data(), memcachedconf.port, memcachedconf.family) == -1) { LOG(FATAL) << "Resolving memcached address for TLS session cache failed: " @@ -3882,7 +3876,7 @@ int process_options(Config *config, auto hostport = util::make_hostport(std::begin(hostport_buf), StringRef{memcachedconf.host}, memcachedconf.port); - if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.c_str(), + if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.data(), memcachedconf.port, memcachedconf.family) == -1) { LOG(FATAL) << "Resolving memcached address for TLS ticket key failed: " << hostport; @@ -3925,12 +3919,12 @@ int process_options(Config *config, fwdconf.by_obfuscated.empty()) { // 2 for '_' and terminal NULL auto iov = make_byte_ref(config->balloc, SHRPX_OBFUSCATED_NODE_LENGTH + 2); - auto p = iov.base; + auto p = std::begin(iov); *p++ = '_'; auto gen = util::make_mt19937(); p = util::random_alpha_digit(p, p + SHRPX_OBFUSCATED_NODE_LENGTH, gen); *p = '\0'; - fwdconf.by_obfuscated = StringRef{iov.base, p}; + fwdconf.by_obfuscated = StringRef{std::span{std::begin(iov), p}}; } if (config->http2.upstream.debug.frame_debug) { @@ -4124,292 +4118,285 @@ int main(int argc, char **argv) { while (1) { static int flag = 0; static constexpr option long_options[] = { - {SHRPX_OPT_DAEMON.c_str(), no_argument, nullptr, 'D'}, - {SHRPX_OPT_LOG_LEVEL.c_str(), required_argument, nullptr, 'L'}, - {SHRPX_OPT_BACKEND.c_str(), required_argument, nullptr, 'b'}, - {SHRPX_OPT_HTTP2_MAX_CONCURRENT_STREAMS.c_str(), required_argument, + {SHRPX_OPT_DAEMON.data(), no_argument, nullptr, 'D'}, + {SHRPX_OPT_LOG_LEVEL.data(), required_argument, nullptr, 'L'}, + {SHRPX_OPT_BACKEND.data(), required_argument, nullptr, 'b'}, + {SHRPX_OPT_HTTP2_MAX_CONCURRENT_STREAMS.data(), required_argument, nullptr, 'c'}, - {SHRPX_OPT_FRONTEND.c_str(), required_argument, nullptr, 'f'}, + {SHRPX_OPT_FRONTEND.data(), required_argument, nullptr, 'f'}, {"help", no_argument, nullptr, 'h'}, - {SHRPX_OPT_INSECURE.c_str(), no_argument, nullptr, 'k'}, - {SHRPX_OPT_WORKERS.c_str(), required_argument, nullptr, 'n'}, - {SHRPX_OPT_CLIENT_PROXY.c_str(), no_argument, nullptr, 'p'}, - {SHRPX_OPT_HTTP2_PROXY.c_str(), no_argument, nullptr, 's'}, + {SHRPX_OPT_INSECURE.data(), no_argument, nullptr, 'k'}, + {SHRPX_OPT_WORKERS.data(), required_argument, nullptr, 'n'}, + {SHRPX_OPT_CLIENT_PROXY.data(), no_argument, nullptr, 'p'}, + {SHRPX_OPT_HTTP2_PROXY.data(), no_argument, nullptr, 's'}, {"version", no_argument, nullptr, 'v'}, - {SHRPX_OPT_FRONTEND_FRAME_DEBUG.c_str(), no_argument, nullptr, 'o'}, - {SHRPX_OPT_ADD_X_FORWARDED_FOR.c_str(), no_argument, &flag, 1}, - {SHRPX_OPT_FRONTEND_HTTP2_READ_TIMEOUT.c_str(), required_argument, - &flag, 2}, - {SHRPX_OPT_FRONTEND_READ_TIMEOUT.c_str(), required_argument, &flag, 3}, - {SHRPX_OPT_FRONTEND_WRITE_TIMEOUT.c_str(), required_argument, &flag, 4}, - {SHRPX_OPT_BACKEND_READ_TIMEOUT.c_str(), required_argument, &flag, 5}, - {SHRPX_OPT_BACKEND_WRITE_TIMEOUT.c_str(), required_argument, &flag, 6}, - {SHRPX_OPT_ACCESSLOG_FILE.c_str(), required_argument, &flag, 7}, - {SHRPX_OPT_BACKEND_KEEP_ALIVE_TIMEOUT.c_str(), required_argument, &flag, + {SHRPX_OPT_FRONTEND_FRAME_DEBUG.data(), no_argument, nullptr, 'o'}, + {SHRPX_OPT_ADD_X_FORWARDED_FOR.data(), no_argument, &flag, 1}, + {SHRPX_OPT_FRONTEND_HTTP2_READ_TIMEOUT.data(), required_argument, &flag, + 2}, + {SHRPX_OPT_FRONTEND_READ_TIMEOUT.data(), required_argument, &flag, 3}, + {SHRPX_OPT_FRONTEND_WRITE_TIMEOUT.data(), required_argument, &flag, 4}, + {SHRPX_OPT_BACKEND_READ_TIMEOUT.data(), required_argument, &flag, 5}, + {SHRPX_OPT_BACKEND_WRITE_TIMEOUT.data(), required_argument, &flag, 6}, + {SHRPX_OPT_ACCESSLOG_FILE.data(), required_argument, &flag, 7}, + {SHRPX_OPT_BACKEND_KEEP_ALIVE_TIMEOUT.data(), required_argument, &flag, 8}, - {SHRPX_OPT_FRONTEND_HTTP2_WINDOW_BITS.c_str(), required_argument, &flag, + {SHRPX_OPT_FRONTEND_HTTP2_WINDOW_BITS.data(), required_argument, &flag, 9}, - {SHRPX_OPT_PID_FILE.c_str(), required_argument, &flag, 10}, - {SHRPX_OPT_USER.c_str(), required_argument, &flag, 11}, + {SHRPX_OPT_PID_FILE.data(), required_argument, &flag, 10}, + {SHRPX_OPT_USER.data(), required_argument, &flag, 11}, {"conf", required_argument, &flag, 12}, - {SHRPX_OPT_SYSLOG_FACILITY.c_str(), required_argument, &flag, 14}, - {SHRPX_OPT_BACKLOG.c_str(), required_argument, &flag, 15}, - {SHRPX_OPT_CIPHERS.c_str(), required_argument, &flag, 16}, - {SHRPX_OPT_CLIENT.c_str(), no_argument, &flag, 17}, - {SHRPX_OPT_BACKEND_HTTP2_WINDOW_BITS.c_str(), required_argument, &flag, + {SHRPX_OPT_SYSLOG_FACILITY.data(), required_argument, &flag, 14}, + {SHRPX_OPT_BACKLOG.data(), required_argument, &flag, 15}, + {SHRPX_OPT_CIPHERS.data(), required_argument, &flag, 16}, + {SHRPX_OPT_CLIENT.data(), no_argument, &flag, 17}, + {SHRPX_OPT_BACKEND_HTTP2_WINDOW_BITS.data(), required_argument, &flag, 18}, - {SHRPX_OPT_CACERT.c_str(), required_argument, &flag, 19}, - {SHRPX_OPT_BACKEND_IPV4.c_str(), no_argument, &flag, 20}, - {SHRPX_OPT_BACKEND_IPV6.c_str(), no_argument, &flag, 21}, - {SHRPX_OPT_PRIVATE_KEY_PASSWD_FILE.c_str(), required_argument, &flag, + {SHRPX_OPT_CACERT.data(), required_argument, &flag, 19}, + {SHRPX_OPT_BACKEND_IPV4.data(), no_argument, &flag, 20}, + {SHRPX_OPT_BACKEND_IPV6.data(), no_argument, &flag, 21}, + {SHRPX_OPT_PRIVATE_KEY_PASSWD_FILE.data(), required_argument, &flag, 22}, - {SHRPX_OPT_NO_VIA.c_str(), no_argument, &flag, 23}, - {SHRPX_OPT_SUBCERT.c_str(), required_argument, &flag, 24}, - {SHRPX_OPT_HTTP2_BRIDGE.c_str(), no_argument, &flag, 25}, - {SHRPX_OPT_BACKEND_HTTP_PROXY_URI.c_str(), required_argument, &flag, - 26}, - {SHRPX_OPT_BACKEND_NO_TLS.c_str(), no_argument, &flag, 27}, - {SHRPX_OPT_OCSP_STARTUP.c_str(), no_argument, &flag, 28}, - {SHRPX_OPT_FRONTEND_NO_TLS.c_str(), no_argument, &flag, 29}, - {SHRPX_OPT_NO_VERIFY_OCSP.c_str(), no_argument, &flag, 30}, - {SHRPX_OPT_BACKEND_TLS_SNI_FIELD.c_str(), required_argument, &flag, 31}, - {SHRPX_OPT_DH_PARAM_FILE.c_str(), required_argument, &flag, 33}, - {SHRPX_OPT_READ_RATE.c_str(), required_argument, &flag, 34}, - {SHRPX_OPT_READ_BURST.c_str(), required_argument, &flag, 35}, - {SHRPX_OPT_WRITE_RATE.c_str(), required_argument, &flag, 36}, - {SHRPX_OPT_WRITE_BURST.c_str(), required_argument, &flag, 37}, - {SHRPX_OPT_NPN_LIST.c_str(), required_argument, &flag, 38}, - {SHRPX_OPT_VERIFY_CLIENT.c_str(), no_argument, &flag, 39}, - {SHRPX_OPT_VERIFY_CLIENT_CACERT.c_str(), required_argument, &flag, 40}, - {SHRPX_OPT_CLIENT_PRIVATE_KEY_FILE.c_str(), required_argument, &flag, + {SHRPX_OPT_NO_VIA.data(), no_argument, &flag, 23}, + {SHRPX_OPT_SUBCERT.data(), required_argument, &flag, 24}, + {SHRPX_OPT_HTTP2_BRIDGE.data(), no_argument, &flag, 25}, + {SHRPX_OPT_BACKEND_HTTP_PROXY_URI.data(), required_argument, &flag, 26}, + {SHRPX_OPT_BACKEND_NO_TLS.data(), no_argument, &flag, 27}, + {SHRPX_OPT_OCSP_STARTUP.data(), no_argument, &flag, 28}, + {SHRPX_OPT_FRONTEND_NO_TLS.data(), no_argument, &flag, 29}, + {SHRPX_OPT_NO_VERIFY_OCSP.data(), no_argument, &flag, 30}, + {SHRPX_OPT_BACKEND_TLS_SNI_FIELD.data(), required_argument, &flag, 31}, + {SHRPX_OPT_DH_PARAM_FILE.data(), required_argument, &flag, 33}, + {SHRPX_OPT_READ_RATE.data(), required_argument, &flag, 34}, + {SHRPX_OPT_READ_BURST.data(), required_argument, &flag, 35}, + {SHRPX_OPT_WRITE_RATE.data(), required_argument, &flag, 36}, + {SHRPX_OPT_WRITE_BURST.data(), required_argument, &flag, 37}, + {SHRPX_OPT_NPN_LIST.data(), required_argument, &flag, 38}, + {SHRPX_OPT_VERIFY_CLIENT.data(), no_argument, &flag, 39}, + {SHRPX_OPT_VERIFY_CLIENT_CACERT.data(), required_argument, &flag, 40}, + {SHRPX_OPT_CLIENT_PRIVATE_KEY_FILE.data(), required_argument, &flag, 41}, - {SHRPX_OPT_CLIENT_CERT_FILE.c_str(), required_argument, &flag, 42}, - {SHRPX_OPT_FRONTEND_HTTP2_DUMP_REQUEST_HEADER.c_str(), - required_argument, &flag, 43}, - {SHRPX_OPT_FRONTEND_HTTP2_DUMP_RESPONSE_HEADER.c_str(), + {SHRPX_OPT_CLIENT_CERT_FILE.data(), required_argument, &flag, 42}, + {SHRPX_OPT_FRONTEND_HTTP2_DUMP_REQUEST_HEADER.data(), required_argument, + &flag, 43}, + {SHRPX_OPT_FRONTEND_HTTP2_DUMP_RESPONSE_HEADER.data(), required_argument, &flag, 44}, - {SHRPX_OPT_HTTP2_NO_COOKIE_CRUMBLING.c_str(), no_argument, &flag, 45}, - {SHRPX_OPT_FRONTEND_HTTP2_CONNECTION_WINDOW_BITS.c_str(), + {SHRPX_OPT_HTTP2_NO_COOKIE_CRUMBLING.data(), no_argument, &flag, 45}, + {SHRPX_OPT_FRONTEND_HTTP2_CONNECTION_WINDOW_BITS.data(), required_argument, &flag, 46}, - {SHRPX_OPT_BACKEND_HTTP2_CONNECTION_WINDOW_BITS.c_str(), + {SHRPX_OPT_BACKEND_HTTP2_CONNECTION_WINDOW_BITS.data(), required_argument, &flag, 47}, - {SHRPX_OPT_TLS_PROTO_LIST.c_str(), required_argument, &flag, 48}, - {SHRPX_OPT_PADDING.c_str(), required_argument, &flag, 49}, - {SHRPX_OPT_WORKER_READ_RATE.c_str(), required_argument, &flag, 50}, - {SHRPX_OPT_WORKER_READ_BURST.c_str(), required_argument, &flag, 51}, - {SHRPX_OPT_WORKER_WRITE_RATE.c_str(), required_argument, &flag, 52}, - {SHRPX_OPT_WORKER_WRITE_BURST.c_str(), required_argument, &flag, 53}, - {SHRPX_OPT_ALTSVC.c_str(), required_argument, &flag, 54}, - {SHRPX_OPT_ADD_RESPONSE_HEADER.c_str(), required_argument, &flag, 55}, - {SHRPX_OPT_WORKER_FRONTEND_CONNECTIONS.c_str(), required_argument, - &flag, 56}, - {SHRPX_OPT_ACCESSLOG_SYSLOG.c_str(), no_argument, &flag, 57}, - {SHRPX_OPT_ERRORLOG_FILE.c_str(), required_argument, &flag, 58}, - {SHRPX_OPT_ERRORLOG_SYSLOG.c_str(), no_argument, &flag, 59}, - {SHRPX_OPT_STREAM_READ_TIMEOUT.c_str(), required_argument, &flag, 60}, - {SHRPX_OPT_STREAM_WRITE_TIMEOUT.c_str(), required_argument, &flag, 61}, - {SHRPX_OPT_NO_LOCATION_REWRITE.c_str(), no_argument, &flag, 62}, - {SHRPX_OPT_BACKEND_HTTP1_CONNECTIONS_PER_HOST.c_str(), - required_argument, &flag, 63}, - {SHRPX_OPT_LISTENER_DISABLE_TIMEOUT.c_str(), required_argument, &flag, + {SHRPX_OPT_TLS_PROTO_LIST.data(), required_argument, &flag, 48}, + {SHRPX_OPT_PADDING.data(), required_argument, &flag, 49}, + {SHRPX_OPT_WORKER_READ_RATE.data(), required_argument, &flag, 50}, + {SHRPX_OPT_WORKER_READ_BURST.data(), required_argument, &flag, 51}, + {SHRPX_OPT_WORKER_WRITE_RATE.data(), required_argument, &flag, 52}, + {SHRPX_OPT_WORKER_WRITE_BURST.data(), required_argument, &flag, 53}, + {SHRPX_OPT_ALTSVC.data(), required_argument, &flag, 54}, + {SHRPX_OPT_ADD_RESPONSE_HEADER.data(), required_argument, &flag, 55}, + {SHRPX_OPT_WORKER_FRONTEND_CONNECTIONS.data(), required_argument, &flag, + 56}, + {SHRPX_OPT_ACCESSLOG_SYSLOG.data(), no_argument, &flag, 57}, + {SHRPX_OPT_ERRORLOG_FILE.data(), required_argument, &flag, 58}, + {SHRPX_OPT_ERRORLOG_SYSLOG.data(), no_argument, &flag, 59}, + {SHRPX_OPT_STREAM_READ_TIMEOUT.data(), required_argument, &flag, 60}, + {SHRPX_OPT_STREAM_WRITE_TIMEOUT.data(), required_argument, &flag, 61}, + {SHRPX_OPT_NO_LOCATION_REWRITE.data(), no_argument, &flag, 62}, + {SHRPX_OPT_BACKEND_HTTP1_CONNECTIONS_PER_HOST.data(), required_argument, + &flag, 63}, + {SHRPX_OPT_LISTENER_DISABLE_TIMEOUT.data(), required_argument, &flag, 64}, - {SHRPX_OPT_STRIP_INCOMING_X_FORWARDED_FOR.c_str(), no_argument, &flag, + {SHRPX_OPT_STRIP_INCOMING_X_FORWARDED_FOR.data(), no_argument, &flag, 65}, - {SHRPX_OPT_ACCESSLOG_FORMAT.c_str(), required_argument, &flag, 66}, - {SHRPX_OPT_BACKEND_HTTP1_CONNECTIONS_PER_FRONTEND.c_str(), + {SHRPX_OPT_ACCESSLOG_FORMAT.data(), required_argument, &flag, 66}, + {SHRPX_OPT_BACKEND_HTTP1_CONNECTIONS_PER_FRONTEND.data(), required_argument, &flag, 67}, - {SHRPX_OPT_TLS_TICKET_KEY_FILE.c_str(), required_argument, &flag, 68}, - {SHRPX_OPT_RLIMIT_NOFILE.c_str(), required_argument, &flag, 69}, - {SHRPX_OPT_BACKEND_RESPONSE_BUFFER.c_str(), required_argument, &flag, + {SHRPX_OPT_TLS_TICKET_KEY_FILE.data(), required_argument, &flag, 68}, + {SHRPX_OPT_RLIMIT_NOFILE.data(), required_argument, &flag, 69}, + {SHRPX_OPT_BACKEND_RESPONSE_BUFFER.data(), required_argument, &flag, 71}, - {SHRPX_OPT_BACKEND_REQUEST_BUFFER.c_str(), required_argument, &flag, - 72}, - {SHRPX_OPT_NO_HOST_REWRITE.c_str(), no_argument, &flag, 73}, - {SHRPX_OPT_NO_SERVER_PUSH.c_str(), no_argument, &flag, 74}, - {SHRPX_OPT_BACKEND_HTTP2_CONNECTIONS_PER_WORKER.c_str(), + {SHRPX_OPT_BACKEND_REQUEST_BUFFER.data(), required_argument, &flag, 72}, + {SHRPX_OPT_NO_HOST_REWRITE.data(), no_argument, &flag, 73}, + {SHRPX_OPT_NO_SERVER_PUSH.data(), no_argument, &flag, 74}, + {SHRPX_OPT_BACKEND_HTTP2_CONNECTIONS_PER_WORKER.data(), required_argument, &flag, 76}, - {SHRPX_OPT_FETCH_OCSP_RESPONSE_FILE.c_str(), required_argument, &flag, + {SHRPX_OPT_FETCH_OCSP_RESPONSE_FILE.data(), required_argument, &flag, 77}, - {SHRPX_OPT_OCSP_UPDATE_INTERVAL.c_str(), required_argument, &flag, 78}, - {SHRPX_OPT_NO_OCSP.c_str(), no_argument, &flag, 79}, - {SHRPX_OPT_HEADER_FIELD_BUFFER.c_str(), required_argument, &flag, 80}, - {SHRPX_OPT_MAX_HEADER_FIELDS.c_str(), required_argument, &flag, 81}, - {SHRPX_OPT_ADD_REQUEST_HEADER.c_str(), required_argument, &flag, 82}, - {SHRPX_OPT_INCLUDE.c_str(), required_argument, &flag, 83}, - {SHRPX_OPT_TLS_TICKET_KEY_CIPHER.c_str(), required_argument, &flag, 84}, - {SHRPX_OPT_HOST_REWRITE.c_str(), no_argument, &flag, 85}, - {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED.c_str(), required_argument, - &flag, 86}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED.c_str(), required_argument, &flag, + {SHRPX_OPT_OCSP_UPDATE_INTERVAL.data(), required_argument, &flag, 78}, + {SHRPX_OPT_NO_OCSP.data(), no_argument, &flag, 79}, + {SHRPX_OPT_HEADER_FIELD_BUFFER.data(), required_argument, &flag, 80}, + {SHRPX_OPT_MAX_HEADER_FIELDS.data(), required_argument, &flag, 81}, + {SHRPX_OPT_ADD_REQUEST_HEADER.data(), required_argument, &flag, 82}, + {SHRPX_OPT_INCLUDE.data(), required_argument, &flag, 83}, + {SHRPX_OPT_TLS_TICKET_KEY_CIPHER.data(), required_argument, &flag, 84}, + {SHRPX_OPT_HOST_REWRITE.data(), no_argument, &flag, 85}, + {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED.data(), required_argument, &flag, + 86}, + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED.data(), required_argument, &flag, 87}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_INTERVAL.c_str(), required_argument, + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_INTERVAL.data(), required_argument, &flag, 88}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_MAX_RETRY.c_str(), - required_argument, &flag, 89}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_MAX_FAIL.c_str(), required_argument, + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_MAX_RETRY.data(), required_argument, + &flag, 89}, + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_MAX_FAIL.data(), required_argument, &flag, 90}, - {SHRPX_OPT_MRUBY_FILE.c_str(), required_argument, &flag, 91}, - {SHRPX_OPT_ACCEPT_PROXY_PROTOCOL.c_str(), no_argument, &flag, 93}, - {SHRPX_OPT_FASTOPEN.c_str(), required_argument, &flag, 94}, - {SHRPX_OPT_TLS_DYN_REC_WARMUP_THRESHOLD.c_str(), required_argument, + {SHRPX_OPT_MRUBY_FILE.data(), required_argument, &flag, 91}, + {SHRPX_OPT_ACCEPT_PROXY_PROTOCOL.data(), no_argument, &flag, 93}, + {SHRPX_OPT_FASTOPEN.data(), required_argument, &flag, 94}, + {SHRPX_OPT_TLS_DYN_REC_WARMUP_THRESHOLD.data(), required_argument, &flag, 95}, - {SHRPX_OPT_TLS_DYN_REC_IDLE_TIMEOUT.c_str(), required_argument, &flag, + {SHRPX_OPT_TLS_DYN_REC_IDLE_TIMEOUT.data(), required_argument, &flag, 96}, - {SHRPX_OPT_ADD_FORWARDED.c_str(), required_argument, &flag, 97}, - {SHRPX_OPT_STRIP_INCOMING_FORWARDED.c_str(), no_argument, &flag, 98}, - {SHRPX_OPT_FORWARDED_BY.c_str(), required_argument, &flag, 99}, - {SHRPX_OPT_FORWARDED_FOR.c_str(), required_argument, &flag, 100}, - {SHRPX_OPT_RESPONSE_HEADER_FIELD_BUFFER.c_str(), required_argument, + {SHRPX_OPT_ADD_FORWARDED.data(), required_argument, &flag, 97}, + {SHRPX_OPT_STRIP_INCOMING_FORWARDED.data(), no_argument, &flag, 98}, + {SHRPX_OPT_FORWARDED_BY.data(), required_argument, &flag, 99}, + {SHRPX_OPT_FORWARDED_FOR.data(), required_argument, &flag, 100}, + {SHRPX_OPT_RESPONSE_HEADER_FIELD_BUFFER.data(), required_argument, &flag, 101}, - {SHRPX_OPT_MAX_RESPONSE_HEADER_FIELDS.c_str(), required_argument, &flag, + {SHRPX_OPT_MAX_RESPONSE_HEADER_FIELDS.data(), required_argument, &flag, 102}, - {SHRPX_OPT_NO_HTTP2_CIPHER_BLACK_LIST.c_str(), no_argument, &flag, 103}, - {SHRPX_OPT_REQUEST_HEADER_FIELD_BUFFER.c_str(), required_argument, - &flag, 104}, - {SHRPX_OPT_MAX_REQUEST_HEADER_FIELDS.c_str(), required_argument, &flag, + {SHRPX_OPT_NO_HTTP2_CIPHER_BLACK_LIST.data(), no_argument, &flag, 103}, + {SHRPX_OPT_REQUEST_HEADER_FIELD_BUFFER.data(), required_argument, &flag, + 104}, + {SHRPX_OPT_MAX_REQUEST_HEADER_FIELDS.data(), required_argument, &flag, 105}, - {SHRPX_OPT_BACKEND_HTTP1_TLS.c_str(), no_argument, &flag, 106}, - {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_TLS.c_str(), no_argument, &flag, + {SHRPX_OPT_BACKEND_HTTP1_TLS.data(), no_argument, &flag, 106}, + {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_TLS.data(), no_argument, &flag, 108}, - {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_CERT_FILE.c_str(), + {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_CERT_FILE.data(), required_argument, &flag, 109}, - {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_PRIVATE_KEY_FILE.c_str(), + {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_PRIVATE_KEY_FILE.data(), required_argument, &flag, 110}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_TLS.c_str(), no_argument, &flag, + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_TLS.data(), no_argument, &flag, 111}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_CERT_FILE.c_str(), - required_argument, &flag, 112}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_PRIVATE_KEY_FILE.c_str(), + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_CERT_FILE.data(), required_argument, + &flag, 112}, + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_PRIVATE_KEY_FILE.data(), required_argument, &flag, 113}, - {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_ADDRESS_FAMILY.c_str(), + {SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_ADDRESS_FAMILY.data(), required_argument, &flag, 114}, - {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_ADDRESS_FAMILY.c_str(), + {SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_ADDRESS_FAMILY.data(), required_argument, &flag, 115}, - {SHRPX_OPT_BACKEND_ADDRESS_FAMILY.c_str(), required_argument, &flag, + {SHRPX_OPT_BACKEND_ADDRESS_FAMILY.data(), required_argument, &flag, 116}, - {SHRPX_OPT_FRONTEND_HTTP2_MAX_CONCURRENT_STREAMS.c_str(), + {SHRPX_OPT_FRONTEND_HTTP2_MAX_CONCURRENT_STREAMS.data(), required_argument, &flag, 117}, - {SHRPX_OPT_BACKEND_HTTP2_MAX_CONCURRENT_STREAMS.c_str(), + {SHRPX_OPT_BACKEND_HTTP2_MAX_CONCURRENT_STREAMS.data(), required_argument, &flag, 118}, - {SHRPX_OPT_BACKEND_CONNECTIONS_PER_FRONTEND.c_str(), required_argument, + {SHRPX_OPT_BACKEND_CONNECTIONS_PER_FRONTEND.data(), required_argument, &flag, 119}, - {SHRPX_OPT_BACKEND_TLS.c_str(), no_argument, &flag, 120}, - {SHRPX_OPT_BACKEND_CONNECTIONS_PER_HOST.c_str(), required_argument, + {SHRPX_OPT_BACKEND_TLS.data(), no_argument, &flag, 120}, + {SHRPX_OPT_BACKEND_CONNECTIONS_PER_HOST.data(), required_argument, &flag, 121}, - {SHRPX_OPT_ERROR_PAGE.c_str(), required_argument, &flag, 122}, - {SHRPX_OPT_NO_KQUEUE.c_str(), no_argument, &flag, 123}, - {SHRPX_OPT_FRONTEND_HTTP2_SETTINGS_TIMEOUT.c_str(), required_argument, + {SHRPX_OPT_ERROR_PAGE.data(), required_argument, &flag, 122}, + {SHRPX_OPT_NO_KQUEUE.data(), no_argument, &flag, 123}, + {SHRPX_OPT_FRONTEND_HTTP2_SETTINGS_TIMEOUT.data(), required_argument, &flag, 124}, - {SHRPX_OPT_BACKEND_HTTP2_SETTINGS_TIMEOUT.c_str(), required_argument, + {SHRPX_OPT_BACKEND_HTTP2_SETTINGS_TIMEOUT.data(), required_argument, &flag, 125}, - {SHRPX_OPT_API_MAX_REQUEST_BODY.c_str(), required_argument, &flag, 126}, - {SHRPX_OPT_BACKEND_MAX_BACKOFF.c_str(), required_argument, &flag, 127}, - {SHRPX_OPT_SERVER_NAME.c_str(), required_argument, &flag, 128}, - {SHRPX_OPT_NO_SERVER_REWRITE.c_str(), no_argument, &flag, 129}, - {SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WRITE_BUFFER_SIZE.c_str(), + {SHRPX_OPT_API_MAX_REQUEST_BODY.data(), required_argument, &flag, 126}, + {SHRPX_OPT_BACKEND_MAX_BACKOFF.data(), required_argument, &flag, 127}, + {SHRPX_OPT_SERVER_NAME.data(), required_argument, &flag, 128}, + {SHRPX_OPT_NO_SERVER_REWRITE.data(), no_argument, &flag, 129}, + {SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WRITE_BUFFER_SIZE.data(), no_argument, &flag, 130}, - {SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WINDOW_SIZE.c_str(), no_argument, + {SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WINDOW_SIZE.data(), no_argument, &flag, 131}, - {SHRPX_OPT_FRONTEND_HTTP2_WINDOW_SIZE.c_str(), required_argument, &flag, + {SHRPX_OPT_FRONTEND_HTTP2_WINDOW_SIZE.data(), required_argument, &flag, 132}, - {SHRPX_OPT_FRONTEND_HTTP2_CONNECTION_WINDOW_SIZE.c_str(), + {SHRPX_OPT_FRONTEND_HTTP2_CONNECTION_WINDOW_SIZE.data(), required_argument, &flag, 133}, - {SHRPX_OPT_BACKEND_HTTP2_WINDOW_SIZE.c_str(), required_argument, &flag, + {SHRPX_OPT_BACKEND_HTTP2_WINDOW_SIZE.data(), required_argument, &flag, 134}, - {SHRPX_OPT_BACKEND_HTTP2_CONNECTION_WINDOW_SIZE.c_str(), + {SHRPX_OPT_BACKEND_HTTP2_CONNECTION_WINDOW_SIZE.data(), required_argument, &flag, 135}, - {SHRPX_OPT_FRONTEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE.c_str(), + {SHRPX_OPT_FRONTEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE.data(), required_argument, &flag, 136}, - {SHRPX_OPT_FRONTEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE.c_str(), + {SHRPX_OPT_FRONTEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE.data(), required_argument, &flag, 137}, - {SHRPX_OPT_BACKEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE.c_str(), + {SHRPX_OPT_BACKEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE.data(), required_argument, &flag, 138}, - {SHRPX_OPT_BACKEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE.c_str(), + {SHRPX_OPT_BACKEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE.data(), required_argument, &flag, 139}, - {SHRPX_OPT_ECDH_CURVES.c_str(), required_argument, &flag, 140}, - {SHRPX_OPT_TLS_SCT_DIR.c_str(), required_argument, &flag, 141}, - {SHRPX_OPT_BACKEND_CONNECT_TIMEOUT.c_str(), required_argument, &flag, + {SHRPX_OPT_ECDH_CURVES.data(), required_argument, &flag, 140}, + {SHRPX_OPT_TLS_SCT_DIR.data(), required_argument, &flag, 141}, + {SHRPX_OPT_BACKEND_CONNECT_TIMEOUT.data(), required_argument, &flag, 142}, - {SHRPX_OPT_DNS_CACHE_TIMEOUT.c_str(), required_argument, &flag, 143}, - {SHRPX_OPT_DNS_LOOKUP_TIMEOUT.c_str(), required_argument, &flag, 144}, - {SHRPX_OPT_DNS_MAX_TRY.c_str(), required_argument, &flag, 145}, - {SHRPX_OPT_FRONTEND_KEEP_ALIVE_TIMEOUT.c_str(), required_argument, - &flag, 146}, - {SHRPX_OPT_PSK_SECRETS.c_str(), required_argument, &flag, 147}, - {SHRPX_OPT_CLIENT_PSK_SECRETS.c_str(), required_argument, &flag, 148}, - {SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLACK_LIST.c_str(), no_argument, - &flag, 149}, - {SHRPX_OPT_CLIENT_CIPHERS.c_str(), required_argument, &flag, 150}, - {SHRPX_OPT_ACCESSLOG_WRITE_EARLY.c_str(), no_argument, &flag, 151}, - {SHRPX_OPT_TLS_MIN_PROTO_VERSION.c_str(), required_argument, &flag, - 152}, - {SHRPX_OPT_TLS_MAX_PROTO_VERSION.c_str(), required_argument, &flag, - 153}, - {SHRPX_OPT_REDIRECT_HTTPS_PORT.c_str(), required_argument, &flag, 154}, - {SHRPX_OPT_FRONTEND_MAX_REQUESTS.c_str(), required_argument, &flag, - 155}, - {SHRPX_OPT_SINGLE_THREAD.c_str(), no_argument, &flag, 156}, - {SHRPX_OPT_NO_ADD_X_FORWARDED_PROTO.c_str(), no_argument, &flag, 157}, - {SHRPX_OPT_NO_STRIP_INCOMING_X_FORWARDED_PROTO.c_str(), no_argument, + {SHRPX_OPT_DNS_CACHE_TIMEOUT.data(), required_argument, &flag, 143}, + {SHRPX_OPT_DNS_LOOKUP_TIMEOUT.data(), required_argument, &flag, 144}, + {SHRPX_OPT_DNS_MAX_TRY.data(), required_argument, &flag, 145}, + {SHRPX_OPT_FRONTEND_KEEP_ALIVE_TIMEOUT.data(), required_argument, &flag, + 146}, + {SHRPX_OPT_PSK_SECRETS.data(), required_argument, &flag, 147}, + {SHRPX_OPT_CLIENT_PSK_SECRETS.data(), required_argument, &flag, 148}, + {SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLACK_LIST.data(), no_argument, &flag, + 149}, + {SHRPX_OPT_CLIENT_CIPHERS.data(), required_argument, &flag, 150}, + {SHRPX_OPT_ACCESSLOG_WRITE_EARLY.data(), no_argument, &flag, 151}, + {SHRPX_OPT_TLS_MIN_PROTO_VERSION.data(), required_argument, &flag, 152}, + {SHRPX_OPT_TLS_MAX_PROTO_VERSION.data(), required_argument, &flag, 153}, + {SHRPX_OPT_REDIRECT_HTTPS_PORT.data(), required_argument, &flag, 154}, + {SHRPX_OPT_FRONTEND_MAX_REQUESTS.data(), required_argument, &flag, 155}, + {SHRPX_OPT_SINGLE_THREAD.data(), no_argument, &flag, 156}, + {SHRPX_OPT_NO_ADD_X_FORWARDED_PROTO.data(), no_argument, &flag, 157}, + {SHRPX_OPT_NO_STRIP_INCOMING_X_FORWARDED_PROTO.data(), no_argument, &flag, 158}, - {SHRPX_OPT_SINGLE_PROCESS.c_str(), no_argument, &flag, 159}, - {SHRPX_OPT_VERIFY_CLIENT_TOLERATE_EXPIRED.c_str(), no_argument, &flag, + {SHRPX_OPT_SINGLE_PROCESS.data(), no_argument, &flag, 159}, + {SHRPX_OPT_VERIFY_CLIENT_TOLERATE_EXPIRED.data(), no_argument, &flag, 160}, - {SHRPX_OPT_IGNORE_PER_PATTERN_MRUBY_ERROR.c_str(), no_argument, &flag, + {SHRPX_OPT_IGNORE_PER_PATTERN_MRUBY_ERROR.data(), no_argument, &flag, 161}, - {SHRPX_OPT_TLS_NO_POSTPONE_EARLY_DATA.c_str(), no_argument, &flag, 162}, - {SHRPX_OPT_TLS_MAX_EARLY_DATA.c_str(), required_argument, &flag, 163}, - {SHRPX_OPT_TLS13_CIPHERS.c_str(), required_argument, &flag, 164}, - {SHRPX_OPT_TLS13_CLIENT_CIPHERS.c_str(), required_argument, &flag, 165}, - {SHRPX_OPT_NO_STRIP_INCOMING_EARLY_DATA.c_str(), no_argument, &flag, + {SHRPX_OPT_TLS_NO_POSTPONE_EARLY_DATA.data(), no_argument, &flag, 162}, + {SHRPX_OPT_TLS_MAX_EARLY_DATA.data(), required_argument, &flag, 163}, + {SHRPX_OPT_TLS13_CIPHERS.data(), required_argument, &flag, 164}, + {SHRPX_OPT_TLS13_CLIENT_CIPHERS.data(), required_argument, &flag, 165}, + {SHRPX_OPT_NO_STRIP_INCOMING_EARLY_DATA.data(), no_argument, &flag, 166}, - {SHRPX_OPT_NO_HTTP2_CIPHER_BLOCK_LIST.c_str(), no_argument, &flag, 167}, - {SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLOCK_LIST.c_str(), no_argument, - &flag, 168}, - {SHRPX_OPT_QUIC_BPF_PROGRAM_FILE.c_str(), required_argument, &flag, - 169}, - {SHRPX_OPT_NO_QUIC_BPF.c_str(), no_argument, &flag, 170}, - {SHRPX_OPT_HTTP2_ALTSVC.c_str(), required_argument, &flag, 171}, - {SHRPX_OPT_FRONTEND_HTTP3_READ_TIMEOUT.c_str(), required_argument, - &flag, 172}, - {SHRPX_OPT_FRONTEND_QUIC_IDLE_TIMEOUT.c_str(), required_argument, &flag, + {SHRPX_OPT_NO_HTTP2_CIPHER_BLOCK_LIST.data(), no_argument, &flag, 167}, + {SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLOCK_LIST.data(), no_argument, &flag, + 168}, + {SHRPX_OPT_QUIC_BPF_PROGRAM_FILE.data(), required_argument, &flag, 169}, + {SHRPX_OPT_NO_QUIC_BPF.data(), no_argument, &flag, 170}, + {SHRPX_OPT_HTTP2_ALTSVC.data(), required_argument, &flag, 171}, + {SHRPX_OPT_FRONTEND_HTTP3_READ_TIMEOUT.data(), required_argument, &flag, + 172}, + {SHRPX_OPT_FRONTEND_QUIC_IDLE_TIMEOUT.data(), required_argument, &flag, 173}, - {SHRPX_OPT_FRONTEND_QUIC_DEBUG_LOG.c_str(), no_argument, &flag, 174}, - {SHRPX_OPT_FRONTEND_HTTP3_WINDOW_SIZE.c_str(), required_argument, &flag, + {SHRPX_OPT_FRONTEND_QUIC_DEBUG_LOG.data(), no_argument, &flag, 174}, + {SHRPX_OPT_FRONTEND_HTTP3_WINDOW_SIZE.data(), required_argument, &flag, 175}, - {SHRPX_OPT_FRONTEND_HTTP3_CONNECTION_WINDOW_SIZE.c_str(), + {SHRPX_OPT_FRONTEND_HTTP3_CONNECTION_WINDOW_SIZE.data(), required_argument, &flag, 176}, - {SHRPX_OPT_FRONTEND_HTTP3_MAX_WINDOW_SIZE.c_str(), required_argument, + {SHRPX_OPT_FRONTEND_HTTP3_MAX_WINDOW_SIZE.data(), required_argument, &flag, 177}, - {SHRPX_OPT_FRONTEND_HTTP3_MAX_CONNECTION_WINDOW_SIZE.c_str(), + {SHRPX_OPT_FRONTEND_HTTP3_MAX_CONNECTION_WINDOW_SIZE.data(), required_argument, &flag, 178}, - {SHRPX_OPT_FRONTEND_HTTP3_MAX_CONCURRENT_STREAMS.c_str(), + {SHRPX_OPT_FRONTEND_HTTP3_MAX_CONCURRENT_STREAMS.data(), required_argument, &flag, 179}, - {SHRPX_OPT_FRONTEND_QUIC_EARLY_DATA.c_str(), no_argument, &flag, 180}, - {SHRPX_OPT_FRONTEND_QUIC_QLOG_DIR.c_str(), required_argument, &flag, + {SHRPX_OPT_FRONTEND_QUIC_EARLY_DATA.data(), no_argument, &flag, 180}, + {SHRPX_OPT_FRONTEND_QUIC_QLOG_DIR.data(), required_argument, &flag, 181}, - {SHRPX_OPT_FRONTEND_QUIC_REQUIRE_TOKEN.c_str(), no_argument, &flag, - 182}, - {SHRPX_OPT_FRONTEND_QUIC_CONGESTION_CONTROLLER.c_str(), + {SHRPX_OPT_FRONTEND_QUIC_REQUIRE_TOKEN.data(), no_argument, &flag, 182}, + {SHRPX_OPT_FRONTEND_QUIC_CONGESTION_CONTROLLER.data(), required_argument, &flag, 183}, - {SHRPX_OPT_QUIC_SERVER_ID.c_str(), required_argument, &flag, 185}, - {SHRPX_OPT_FRONTEND_QUIC_SECRET_FILE.c_str(), required_argument, &flag, + {SHRPX_OPT_QUIC_SERVER_ID.data(), required_argument, &flag, 185}, + {SHRPX_OPT_FRONTEND_QUIC_SECRET_FILE.data(), required_argument, &flag, 186}, - {SHRPX_OPT_RLIMIT_MEMLOCK.c_str(), required_argument, &flag, 187}, - {SHRPX_OPT_MAX_WORKER_PROCESSES.c_str(), required_argument, &flag, 188}, - {SHRPX_OPT_WORKER_PROCESS_GRACE_SHUTDOWN_PERIOD.c_str(), + {SHRPX_OPT_RLIMIT_MEMLOCK.data(), required_argument, &flag, 187}, + {SHRPX_OPT_MAX_WORKER_PROCESSES.data(), required_argument, &flag, 188}, + {SHRPX_OPT_WORKER_PROCESS_GRACE_SHUTDOWN_PERIOD.data(), required_argument, &flag, 189}, - {SHRPX_OPT_FRONTEND_QUIC_INITIAL_RTT.c_str(), required_argument, &flag, + {SHRPX_OPT_FRONTEND_QUIC_INITIAL_RTT.data(), required_argument, &flag, 190}, - {SHRPX_OPT_REQUIRE_HTTP_SCHEME.c_str(), no_argument, &flag, 191}, - {SHRPX_OPT_TLS_KTLS.c_str(), no_argument, &flag, 192}, - {SHRPX_OPT_ALPN_LIST.c_str(), required_argument, &flag, 193}, - {SHRPX_OPT_FRONTEND_HEADER_TIMEOUT.c_str(), required_argument, &flag, + {SHRPX_OPT_REQUIRE_HTTP_SCHEME.data(), no_argument, &flag, 191}, + {SHRPX_OPT_TLS_KTLS.data(), no_argument, &flag, 192}, + {SHRPX_OPT_ALPN_LIST.data(), required_argument, &flag, 193}, + {SHRPX_OPT_FRONTEND_HEADER_TIMEOUT.data(), required_argument, &flag, 194}, - {SHRPX_OPT_FRONTEND_HTTP2_IDLE_TIMEOUT.c_str(), required_argument, - &flag, 195}, - {SHRPX_OPT_FRONTEND_HTTP3_IDLE_TIMEOUT.c_str(), required_argument, - &flag, 196}, + {SHRPX_OPT_FRONTEND_HTTP2_IDLE_TIMEOUT.data(), required_argument, &flag, + 195}, + {SHRPX_OPT_FRONTEND_HTTP3_IDLE_TIMEOUT.data(), required_argument, &flag, + 196}, {nullptr, 0, nullptr, 0}}; int option_index = 0; @@ -4420,7 +4407,7 @@ int main(int argc, char **argv) { } switch (c) { case 'D': - cmdcfgs.emplace_back(SHRPX_OPT_DAEMON, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_DAEMON, "yes"_sr); break; case 'L': cmdcfgs.emplace_back(SHRPX_OPT_LOG_LEVEL, StringRef{optarg}); @@ -4439,20 +4426,19 @@ int main(int argc, char **argv) { print_help(std::cout); exit(EXIT_SUCCESS); case 'k': - cmdcfgs.emplace_back(SHRPX_OPT_INSECURE, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_INSECURE, "yes"_sr); break; case 'n': cmdcfgs.emplace_back(SHRPX_OPT_WORKERS, StringRef{optarg}); break; case 'o': - cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_FRAME_DEBUG, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_FRAME_DEBUG, "yes"_sr); break; case 'p': - cmdcfgs.emplace_back(SHRPX_OPT_CLIENT_PROXY, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_CLIENT_PROXY, "yes"_sr); break; case 's': - cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_PROXY, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_PROXY, "yes"_sr); break; case 'v': print_version(std::cout); @@ -4464,8 +4450,7 @@ int main(int argc, char **argv) { switch (flag) { case 1: // --add-x-forwarded-for - cmdcfgs.emplace_back(SHRPX_OPT_ADD_X_FORWARDED_FOR, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_ADD_X_FORWARDED_FOR, "yes"_sr); break; case 2: // --frontend-http2-read-timeout @@ -4529,7 +4514,7 @@ int main(int argc, char **argv) { break; case 17: // --client - cmdcfgs.emplace_back(SHRPX_OPT_CLIENT, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_CLIENT, "yes"_sr); break; case 18: // --backend-http2-window-bits @@ -4542,13 +4527,11 @@ int main(int argc, char **argv) { break; case 20: // --backend-ipv4 - cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_IPV4, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_IPV4, "yes"_sr); break; case 21: // --backend-ipv6 - cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_IPV6, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_IPV6, "yes"_sr); break; case 22: // --private-key-passwd-file @@ -4557,7 +4540,7 @@ int main(int argc, char **argv) { break; case 23: // --no-via - cmdcfgs.emplace_back(SHRPX_OPT_NO_VIA, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_VIA, "yes"_sr); break; case 24: // --subcert @@ -4565,8 +4548,7 @@ int main(int argc, char **argv) { break; case 25: // --http2-bridge - cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_BRIDGE, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_BRIDGE, "yes"_sr); break; case 26: // --backend-http-proxy-uri @@ -4575,23 +4557,19 @@ int main(int argc, char **argv) { break; case 27: // --backend-no-tls - cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_NO_TLS, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_NO_TLS, "yes"_sr); break; case 28: // --ocsp-startup - cmdcfgs.emplace_back(SHRPX_OPT_OCSP_STARTUP, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_OCSP_STARTUP, "yes"_sr); break; case 29: // --frontend-no-tls - cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_NO_TLS, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_NO_TLS, "yes"_sr); break; case 30: // --no-verify-ocsp - cmdcfgs.emplace_back(SHRPX_OPT_NO_VERIFY_OCSP, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_VERIFY_OCSP, "yes"_sr); break; case 31: // --backend-tls-sni-field @@ -4624,8 +4602,7 @@ int main(int argc, char **argv) { break; case 39: // --verify-client - cmdcfgs.emplace_back(SHRPX_OPT_VERIFY_CLIENT, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_VERIFY_CLIENT, "yes"_sr); break; case 40: // --verify-client-cacert @@ -4652,8 +4629,7 @@ int main(int argc, char **argv) { break; case 45: // --http2-no-cookie-crumbling - cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_NO_COOKIE_CRUMBLING, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_HTTP2_NO_COOKIE_CRUMBLING, "yes"_sr); break; case 46: // --frontend-http2-connection-window-bits @@ -4704,8 +4680,7 @@ int main(int argc, char **argv) { break; case 57: // --accesslog-syslog - cmdcfgs.emplace_back(SHRPX_OPT_ACCESSLOG_SYSLOG, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_ACCESSLOG_SYSLOG, "yes"_sr); break; case 58: // --errorlog-file @@ -4713,8 +4688,7 @@ int main(int argc, char **argv) { break; case 59: // --errorlog-syslog - cmdcfgs.emplace_back(SHRPX_OPT_ERRORLOG_SYSLOG, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_ERRORLOG_SYSLOG, "yes"_sr); break; case 60: // --stream-read-timeout @@ -4726,8 +4700,7 @@ int main(int argc, char **argv) { break; case 62: // --no-location-rewrite - cmdcfgs.emplace_back(SHRPX_OPT_NO_LOCATION_REWRITE, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_LOCATION_REWRITE, "yes"_sr); break; case 63: // --backend-http1-connections-per-host @@ -4742,7 +4715,7 @@ int main(int argc, char **argv) { case 65: // --strip-incoming-x-forwarded-for cmdcfgs.emplace_back(SHRPX_OPT_STRIP_INCOMING_X_FORWARDED_FOR, - StringRef::from_lit("yes")); + "yes"_sr); break; case 66: // --accesslog-format @@ -4773,13 +4746,11 @@ int main(int argc, char **argv) { break; case 73: // --no-host-rewrite - cmdcfgs.emplace_back(SHRPX_OPT_NO_HOST_REWRITE, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_HOST_REWRITE, "yes"_sr); break; case 74: // --no-server-push - cmdcfgs.emplace_back(SHRPX_OPT_NO_SERVER_PUSH, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_SERVER_PUSH, "yes"_sr); break; case 76: // --backend-http2-connections-per-worker @@ -4797,7 +4768,7 @@ int main(int argc, char **argv) { break; case 79: // --no-ocsp - cmdcfgs.emplace_back(SHRPX_OPT_NO_OCSP, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_OCSP, "yes"_sr); break; case 80: // --header-field-buffer @@ -4822,8 +4793,7 @@ int main(int argc, char **argv) { break; case 85: // --host-rewrite - cmdcfgs.emplace_back(SHRPX_OPT_HOST_REWRITE, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_HOST_REWRITE, "yes"_sr); break; case 86: // --tls-session-cache-memcached @@ -4856,8 +4826,7 @@ int main(int argc, char **argv) { break; case 93: // --accept-proxy-protocol - cmdcfgs.emplace_back(SHRPX_OPT_ACCEPT_PROXY_PROTOCOL, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_ACCEPT_PROXY_PROTOCOL, "yes"_sr); break; case 94: // --fastopen @@ -4879,8 +4848,7 @@ int main(int argc, char **argv) { break; case 98: // --strip-incoming-forwarded - cmdcfgs.emplace_back(SHRPX_OPT_STRIP_INCOMING_FORWARDED, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_STRIP_INCOMING_FORWARDED, "yes"_sr); break; case 99: // --forwarded-by @@ -4902,8 +4870,7 @@ int main(int argc, char **argv) { break; case 103: // --no-http2-cipher-black-list - cmdcfgs.emplace_back(SHRPX_OPT_NO_HTTP2_CIPHER_BLACK_LIST, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_HTTP2_CIPHER_BLACK_LIST, "yes"_sr); break; case 104: // --request-header-field-buffer @@ -4917,13 +4884,12 @@ int main(int argc, char **argv) { break; case 106: // --backend-http1-tls - cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_HTTP1_TLS, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_HTTP1_TLS, "yes"_sr); break; case 108: // --tls-session-cache-memcached-tls cmdcfgs.emplace_back(SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_TLS, - StringRef::from_lit("yes")); + "yes"_sr); break; case 109: // --tls-session-cache-memcached-cert-file @@ -4938,8 +4904,7 @@ int main(int argc, char **argv) { break; case 111: // --tls-ticket-key-memcached-tls - cmdcfgs.emplace_back(SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_TLS, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_TLS, "yes"_sr); break; case 112: // --tls-ticket-key-memcached-cert-file @@ -4985,7 +4950,7 @@ int main(int argc, char **argv) { break; case 120: // --backend-tls - cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_TLS, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_BACKEND_TLS, "yes"_sr); break; case 121: // --backend-connections-per-host @@ -4998,7 +4963,7 @@ int main(int argc, char **argv) { break; case 123: // --no-kqueue - cmdcfgs.emplace_back(SHRPX_OPT_NO_KQUEUE, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_KQUEUE, "yes"_sr); break; case 124: // --frontend-http2-settings-timeout @@ -5024,19 +4989,17 @@ int main(int argc, char **argv) { break; case 129: // --no-server-rewrite - cmdcfgs.emplace_back(SHRPX_OPT_NO_SERVER_REWRITE, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_SERVER_REWRITE, "yes"_sr); break; case 130: // --frontend-http2-optimize-write-buffer-size cmdcfgs.emplace_back( - SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WRITE_BUFFER_SIZE, - StringRef::from_lit("yes")); + SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WRITE_BUFFER_SIZE, "yes"_sr); break; case 131: // --frontend-http2-optimize-window-size cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WINDOW_SIZE, - StringRef::from_lit("yes")); + "yes"_sr); break; case 132: // --frontend-http2-window-size @@ -5121,7 +5084,7 @@ int main(int argc, char **argv) { case 149: // --client-no-http2-cipher-black-list cmdcfgs.emplace_back(SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLACK_LIST, - StringRef::from_lit("yes")); + "yes"_sr); break; case 150: // --client-ciphers @@ -5129,8 +5092,7 @@ int main(int argc, char **argv) { break; case 151: // --accesslog-write-early - cmdcfgs.emplace_back(SHRPX_OPT_ACCESSLOG_WRITE_EARLY, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_ACCESSLOG_WRITE_EARLY, "yes"_sr); break; case 152: // --tls-min-proto-version @@ -5153,38 +5115,34 @@ int main(int argc, char **argv) { break; case 156: // --single-thread - cmdcfgs.emplace_back(SHRPX_OPT_SINGLE_THREAD, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_SINGLE_THREAD, "yes"_sr); break; case 157: // --no-add-x-forwarded-proto - cmdcfgs.emplace_back(SHRPX_OPT_NO_ADD_X_FORWARDED_PROTO, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_ADD_X_FORWARDED_PROTO, "yes"_sr); break; case 158: // --no-strip-incoming-x-forwarded-proto cmdcfgs.emplace_back(SHRPX_OPT_NO_STRIP_INCOMING_X_FORWARDED_PROTO, - StringRef::from_lit("yes")); + "yes"_sr); break; case 159: // --single-process - cmdcfgs.emplace_back(SHRPX_OPT_SINGLE_PROCESS, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_SINGLE_PROCESS, "yes"_sr); break; case 160: // --verify-client-tolerate-expired cmdcfgs.emplace_back(SHRPX_OPT_VERIFY_CLIENT_TOLERATE_EXPIRED, - StringRef::from_lit("yes")); + "yes"_sr); break; case 161: // --ignore-per-pattern-mruby-error cmdcfgs.emplace_back(SHRPX_OPT_IGNORE_PER_PATTERN_MRUBY_ERROR, - StringRef::from_lit("yes")); + "yes"_sr); break; case 162: // --tls-no-postpone-early-data - cmdcfgs.emplace_back(SHRPX_OPT_TLS_NO_POSTPONE_EARLY_DATA, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_TLS_NO_POSTPONE_EARLY_DATA, "yes"_sr); break; case 163: // --tls-max-early-data @@ -5200,18 +5158,16 @@ int main(int argc, char **argv) { break; case 166: // --no-strip-incoming-early-data - cmdcfgs.emplace_back(SHRPX_OPT_NO_STRIP_INCOMING_EARLY_DATA, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_STRIP_INCOMING_EARLY_DATA, "yes"_sr); break; case 167: // --no-http2-cipher-block-list - cmdcfgs.emplace_back(SHRPX_OPT_NO_HTTP2_CIPHER_BLOCK_LIST, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_HTTP2_CIPHER_BLOCK_LIST, "yes"_sr); break; case 168: // --client-no-http2-cipher-block-list cmdcfgs.emplace_back(SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLOCK_LIST, - StringRef::from_lit("yes")); + "yes"_sr); break; case 169: // --quic-bpf-program-file @@ -5220,7 +5176,7 @@ int main(int argc, char **argv) { break; case 170: // --no-quic-bpf - cmdcfgs.emplace_back(SHRPX_OPT_NO_QUIC_BPF, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_NO_QUIC_BPF, "yes"_sr); break; case 171: // --http2-altsvc @@ -5238,8 +5194,7 @@ int main(int argc, char **argv) { break; case 174: // --frontend-quic-debug-log - cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_QUIC_DEBUG_LOG, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_QUIC_DEBUG_LOG, "yes"_sr); break; case 175: // --frontend-http3-window-size @@ -5269,8 +5224,7 @@ int main(int argc, char **argv) { break; case 180: // --frontend-quic-early-data - cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_QUIC_EARLY_DATA, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_QUIC_EARLY_DATA, "yes"_sr); break; case 181: // --frontend-quic-qlog-dir @@ -5279,8 +5233,7 @@ int main(int argc, char **argv) { break; case 182: // --frontend-quic-require-token - cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_QUIC_REQUIRE_TOKEN, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_FRONTEND_QUIC_REQUIRE_TOKEN, "yes"_sr); break; case 183: // --frontend-quic-congestion-controller @@ -5316,12 +5269,11 @@ int main(int argc, char **argv) { break; case 191: // --require-http-scheme - cmdcfgs.emplace_back(SHRPX_OPT_REQUIRE_HTTP_SCHEME, - StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_REQUIRE_HTTP_SCHEME, "yes"_sr); break; case 192: // --tls-ktls - cmdcfgs.emplace_back(SHRPX_OPT_TLS_KTLS, StringRef::from_lit("yes")); + cmdcfgs.emplace_back(SHRPX_OPT_TLS_KTLS, "yes"_sr); break; case 193: // --alpn-list diff --git a/yass/third_party/nghttp2/src/shrpx_api_downstream_connection.cc b/yass/third_party/nghttp2/src/shrpx_api_downstream_connection.cc index 254ab59e2b..13ebac6df3 100644 --- a/yass/third_party/nghttp2/src/shrpx_api_downstream_connection.cc +++ b/yass/third_party/nghttp2/src/shrpx_api_downstream_connection.cc @@ -39,33 +39,27 @@ namespace shrpx { namespace { -// List of API endpoints -const std::array &apis() { - static const auto apis = new std::array{ - APIEndpoint{ - StringRef::from_lit("/api/v1beta1/backendconfig"), - true, - (1 << API_METHOD_POST) | (1 << API_METHOD_PUT), - &APIDownstreamConnection::handle_backendconfig, - }, - APIEndpoint{ - StringRef::from_lit("/api/v1beta1/configrevision"), - true, - (1 << API_METHOD_GET), - &APIDownstreamConnection::handle_configrevision, - }, - }; +const auto backendconfig_endpoint = APIEndpoint{ + "/api/v1beta1/backendconfig"_sr, + true, + (1 << API_METHOD_POST) | (1 << API_METHOD_PUT), + &APIDownstreamConnection::handle_backendconfig, +}; - return *apis; -} +const auto configrevision_endpoint = APIEndpoint{ + "/api/v1beta1/configrevision"_sr, + true, + (1 << API_METHOD_GET), + &APIDownstreamConnection::handle_configrevision, +}; } // namespace namespace { // The method string. This must be same order of APIMethod. constexpr StringRef API_METHOD_STRING[] = { - StringRef::from_lit("GET"), - StringRef::from_lit("POST"), - StringRef::from_lit("PUT"), + "GET"_sr, + "POST"_sr, + "PUT"_sr, }; } // namespace @@ -112,18 +106,18 @@ int APIDownstreamConnection::send_reply(unsigned int http_status, switch (api_status) { case APIStatusCode::SUCCESS: - api_status_str = StringRef::from_lit("Success"); + api_status_str = "Success"_sr; break; case APIStatusCode::FAILURE: - api_status_str = StringRef::from_lit("Failure"); + api_status_str = "Failure"_sr; break; default: assert(0); } - constexpr auto M1 = StringRef::from_lit("{\"status\":\""); - constexpr auto M2 = StringRef::from_lit("\",\"code\":"); - constexpr auto M3 = StringRef::from_lit("}"); + constexpr auto M1 = "{\"status\":\""_sr; + constexpr auto M2 = "\",\"code\":"_sr; + constexpr auto M3 = "}"_sr; // 3 is the number of digits in http_status, assuming it is 3 digits // number. @@ -131,7 +125,7 @@ int APIDownstreamConnection::send_reply(unsigned int http_status, api_status_str.size() + 3; auto buf = make_byte_ref(balloc, buflen); - auto p = buf.base; + auto p = std::begin(buf); p = std::copy(std::begin(M1), std::end(M1), p); p = std::copy(std::begin(api_status_str), std::end(api_status_str), p); @@ -140,24 +134,23 @@ int APIDownstreamConnection::send_reply(unsigned int http_status, p = std::copy(std::begin(data), std::end(data), p); p = std::copy(std::begin(M3), std::end(M3), p); - buf.len = p - buf.base; + buf = buf.subspan(0, p - std::begin(buf)); - auto content_length = util::make_string_ref_uint(balloc, buf.len); + auto content_length = util::make_string_ref_uint(balloc, buf.size()); - resp.fs.add_header_token(StringRef::from_lit("content-length"), - content_length, false, http2::HD_CONTENT_LENGTH); + resp.fs.add_header_token("content-length"_sr, content_length, false, + http2::HD_CONTENT_LENGTH); switch (http_status) { case 400: case 405: case 413: - resp.fs.add_header_token(StringRef::from_lit("connection"), - StringRef::from_lit("close"), false, + resp.fs.add_header_token("connection"_sr, "close"_sr, false, http2::HD_CONNECTION); break; } - if (upstream->send_reply(downstream_, buf.base, buf.len) != 0) { + if (upstream->send_reply(downstream_, buf.data(), buf.size()) != 0) { return -1; } @@ -170,8 +163,8 @@ const APIEndpoint *lookup_api(const StringRef &path) { case 26: switch (path[25]) { case 'g': - if (util::streq_l("/api/v1beta1/backendconfi", std::begin(path), 25)) { - return &apis()[0]; + if (util::streq("/api/v1beta1/backendconfi"_sr, path, 25)) { + return &backendconfig_endpoint; } break; } @@ -179,8 +172,8 @@ const APIEndpoint *lookup_api(const StringRef &path) { case 27: switch (path[26]) { case 'n': - if (util::streq_l("/api/v1beta1/configrevisio", std::begin(path), 26)) { - return &apis()[1]; + if (util::streq("/api/v1beta1/configrevisio"_sr, path, 26)) { + return &configrevision_endpoint; } break; } @@ -283,7 +276,7 @@ int APIDownstreamConnection::error_method_not_allowed() { auto &balloc = downstream_->get_block_allocator(); auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; + auto p = std::begin(iov); for (uint8_t i = 0; i < API_METHOD_MAX; ++i) { if (api_->allowed_methods & (1 << i)) { auto &s = API_METHOD_STRING[i]; @@ -295,7 +288,7 @@ int APIDownstreamConnection::error_method_not_allowed() { p -= 2; *p = '\0'; - resp.fs.add_header_token(StringRef::from_lit("allow"), StringRef{iov.base, p}, + resp.fs.add_header_token("allow"_sr, StringRef{std::span{std::begin(iov), p}}, false, -1); return send_reply(405, APIStatusCode::FAILURE); } @@ -394,10 +387,10 @@ int APIDownstreamConnection::handle_backendconfig() { return 0; } - auto opt = StringRef{first, eq}; - auto optval = StringRef{eq + 1, eol}; + auto opt = StringRef{std::span{first, eq}}; + auto optval = StringRef{std::span{eq + 1, eol}}; - auto optid = option_lookup_token(opt.c_str(), opt.size()); + auto optid = option_lookup_token(opt); switch (optid) { case SHRPX_OPTID_BACKEND: @@ -442,9 +435,8 @@ int APIDownstreamConnection::handle_configrevision() { // "configRevision": N // } auto data = concat_string_ref( - balloc, StringRef::from_lit(R"(,"data":{"configRevision":)"), - util::make_string_ref_uint(balloc, config->config_revision), - StringRef::from_lit("}")); + balloc, R"(,"data":{"configRevision":)"_sr, + util::make_string_ref_uint(balloc, config->config_revision), "}"_sr); send_reply(200, APIStatusCode::SUCCESS, data); diff --git a/yass/third_party/nghttp2/src/shrpx_client_handler.cc b/yass/third_party/nghttp2/src/shrpx_client_handler.cc index a78b00a184..70f0d955b7 100644 --- a/yass/third_party/nghttp2/src/shrpx_client_handler.cc +++ b/yass/third_party/nghttp2/src/shrpx_client_handler.cc @@ -322,11 +322,11 @@ int ClientHandler::write_tls() { int ClientHandler::read_quic(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, - const ngtcp2_pkt_info &pi, const uint8_t *data, - size_t datalen) { + const ngtcp2_pkt_info &pi, + std::span data) { auto upstream = static_cast(upstream_.get()); - return upstream->on_read(faddr, remote_addr, local_addr, pi, data, datalen); + return upstream->on_read(faddr, remote_addr, local_addr, pi, data); } int ClientHandler::write_quic() { return upstream_->on_write(); } @@ -492,13 +492,13 @@ ClientHandler::ClientHandler(Worker *worker, int fd, SSL *ssl, auto len = SHRPX_OBFUSCATED_NODE_LENGTH + 1; // 1 for terminating NUL. auto buf = make_byte_ref(balloc_, len + 1); - auto p = buf.base; + auto p = std::begin(buf); *p++ = '_'; p = util::random_alpha_digit(p, p + SHRPX_OBFUSCATED_NODE_LENGTH, worker_->get_randgen()); *p = '\0'; - forwarded_for_ = StringRef{buf.base, p}; + forwarded_for_ = StringRef{std::span{std::begin(buf), p}}; } else { init_forwarded_for(family, ipaddr_); } @@ -511,13 +511,13 @@ void ClientHandler::init_forwarded_for(int family, const StringRef &ipaddr) { auto len = 2 + ipaddr.size(); // 1 for terminating NUL. auto buf = make_byte_ref(balloc_, len + 1); - auto p = buf.base; + auto p = std::begin(buf); *p++ = '['; p = std::copy(std::begin(ipaddr), std::end(ipaddr), p); *p++ = ']'; *p = '\0'; - forwarded_for_ = StringRef{buf.base, p}; + forwarded_for_ = StringRef{std::span{std::begin(buf), p}}; } else { // family == AF_INET or family == AF_UNIX forwarded_for_ = ipaddr; @@ -535,7 +535,7 @@ void ClientHandler::setup_upstream_io_callback() { // upgraded to HTTP/2 through HTTP Upgrade or direct HTTP/2 // connection. upstream_ = std::make_unique(this); - alpn_ = StringRef::from_lit("http/1.1"); + alpn_ = "http/1.1"_sr; read_ = &ClientHandler::read_clear; write_ = &ClientHandler::write_clear; on_read_ = &ClientHandler::upstream_http1_connhd_read; @@ -629,7 +629,7 @@ int ClientHandler::validate_next_proto() { CLOG(INFO, this) << "No protocol negotiated. Fallback to HTTP/1.1"; } - proto = StringRef::from_lit("http/1.1"); + proto = "http/1.1"_sr; } if (!tls::in_proto_list(get_config()->tls.alpn_list, proto)) { @@ -657,9 +657,9 @@ int ClientHandler::validate_next_proto() { return 0; } - if (proto == StringRef::from_lit("http/1.1")) { + if (proto == "http/1.1"_sr) { upstream_ = std::make_unique(this); - alpn_ = StringRef::from_lit("http/1.1"); + alpn_ = "http/1.1"_sr; // At this point, input buffer is already filled with some bytes. // The read callback is not called until new data come. So consume @@ -802,8 +802,7 @@ uint32_t ClientHandler::get_affinity_cookie(Downstream *downstream, auto d = std::uniform_int_distribution(1); auto rh = d(worker_->get_randgen()); - h = util::hash32(StringRef{reinterpret_cast(&rh), - reinterpret_cast(&rh) + sizeof(rh)}); + h = util::hash32(StringRef{reinterpret_cast(&rh), sizeof(rh)}); downstream->renew_affinity_cookie(h); @@ -963,8 +962,7 @@ DownstreamAddr *ClientHandler::get_downstream_addr_strict_affinity( } else { auto d = std::uniform_int_distribution(1); auto rh = d(worker_->get_randgen()); - h = util::hash32(StringRef{reinterpret_cast(&rh), - reinterpret_cast(&rh) + sizeof(rh)}); + h = util::hash32(StringRef{reinterpret_cast(&rh), sizeof(rh)}); } // Client is not bound to a particular backend, or the bound backend @@ -1148,7 +1146,7 @@ SSL *ClientHandler::get_ssl() const { return conn_.tls.ssl; } void ClientHandler::direct_http2_upgrade() { upstream_ = std::make_unique(this); - alpn_ = StringRef::from_lit(NGHTTP2_CLEARTEXT_PROTO_VERSION_ID); + alpn_ = NGHTTP2_CLEARTEXT_PROTO_VERSION_ID ""_sr; on_read_ = &ClientHandler::upstream_read; write_ = &ClientHandler::write_clear; } @@ -1173,17 +1171,16 @@ int ClientHandler::perform_http2_upgrade(HttpsUpstream *http) { upstream_.release(); // TODO We might get other version id in HTTP2-settings, if we // support aliasing for h2, but we just use library default for now. - alpn_ = StringRef::from_lit(NGHTTP2_CLEARTEXT_PROTO_VERSION_ID); + alpn_ = NGHTTP2_CLEARTEXT_PROTO_VERSION_ID ""_sr; on_read_ = &ClientHandler::upstream_http2_connhd_read; write_ = &ClientHandler::write_clear; input->remove(*output, input->rleft()); - constexpr auto res = - StringRef::from_lit("HTTP/1.1 101 Switching Protocols\r\n" - "Connection: Upgrade\r\n" - "Upgrade: " NGHTTP2_CLEARTEXT_PROTO_VERSION_ID "\r\n" - "\r\n"); + constexpr auto res = "HTTP/1.1 101 Switching Protocols\r\n" + "Connection: Upgrade\r\n" + "Upgrade: " NGHTTP2_CLEARTEXT_PROTO_VERSION_ID "\r\n" + "\r\n"_sr; output->append(res); upstream_ = std::move(upstream); @@ -1196,9 +1193,9 @@ bool ClientHandler::get_http2_upgrade_allowed() const { return !conn_.tls.ssl; } StringRef ClientHandler::get_upstream_scheme() const { if (conn_.tls.ssl) { - return StringRef::from_lit("https"); + return "https"_sr; } else { - return StringRef::from_lit("http"); + return "http"_sr; } } @@ -1324,7 +1321,7 @@ int ClientHandler::proxy_protocol_read() { // NULL character really destroys functions which expects NULL // terminated string. We won't expect it in PROXY protocol line, so // find it here. - auto chrs = std::array{'\n', '\0'}; + auto chrs = std::to_array({'\n', '\0'}); constexpr size_t MAX_PROXY_LINELEN = 107; @@ -1342,7 +1339,7 @@ int ClientHandler::proxy_protocol_read() { --end; - constexpr auto HEADER = StringRef::from_lit("PROXY "); + constexpr auto HEADER = "PROXY "_sr; if (static_cast(end - rb_.pos()) < HEADER.size()) { if (LOG_ENABLED(INFO)) { @@ -1351,7 +1348,7 @@ int ClientHandler::proxy_protocol_read() { return -1; } - if (!util::streq(HEADER, StringRef{rb_.pos(), HEADER.size()})) { + if (HEADER != StringRef{rb_.pos(), HEADER.size()}) { if (LOG_ENABLED(INFO)) { CLOG(INFO, this) << "PROXY-protocol-v1: Bad PROXY protocol version 1 ID"; } @@ -1399,7 +1396,7 @@ int ClientHandler::proxy_protocol_read() { } return -1; } - if (!util::streq_l("UNKNOWN", rb_.pos(), 7)) { + if ("UNKNOWN"_sr != StringRef{rb_.pos(), 7}) { if (LOG_ENABLED(INFO)) { CLOG(INFO, this) << "PROXY-protocol-v1: Unknown INET protocol family"; } @@ -1482,9 +1479,10 @@ int ClientHandler::proxy_protocol_read() { rb_.drain(end + 2 - rb_.pos()); - ipaddr_ = - make_string_ref(balloc_, StringRef{src_addr, src_addr + src_addrlen}); - port_ = make_string_ref(balloc_, StringRef{src_port, src_port + src_portlen}); + ipaddr_ = make_string_ref( + balloc_, StringRef{src_addr, static_cast(src_addrlen)}); + port_ = make_string_ref( + balloc_, StringRef{src_port, static_cast(src_portlen)}); if (LOG_ENABLED(INFO)) { CLOG(INFO, this) << "PROXY-protocol-v1: Finished, " << (rb_.pos() - first) diff --git a/yass/third_party/nghttp2/src/shrpx_client_handler.h b/yass/third_party/nghttp2/src/shrpx_client_handler.h index 511dd9108e..1bb3552e70 100644 --- a/yass/third_party/nghttp2/src/shrpx_client_handler.h +++ b/yass/third_party/nghttp2/src/shrpx_client_handler.h @@ -153,7 +153,7 @@ public: void setup_http3_upstream(std::unique_ptr &&upstream); int read_quic(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen); + std::span data); int write_quic(); #endif // ENABLE_HTTP3 diff --git a/yass/third_party/nghttp2/src/shrpx_config.cc b/yass/third_party/nghttp2/src/shrpx_config.cc index d856c95477..a74b79e85b 100644 --- a/yass/third_party/nghttp2/src/shrpx_config.cc +++ b/yass/third_party/nghttp2/src/shrpx_config.cc @@ -76,7 +76,7 @@ namespace { Config *config; } // namespace -constexpr auto SHRPX_UNIX_PATH_PREFIX = StringRef::from_lit("unix:"); +constexpr auto SHRPX_UNIX_PATH_PREFIX = "unix:"_sr; const Config *get_config() { return config; } @@ -139,8 +139,8 @@ int split_host_port(char *host, size_t hostlen, uint16_t *port_ptr, auto portstr = StringRef{sep + 1, std::end(hostport)}; auto d = util::parse_uint(portstr); - if (1 <= d && d <= std::numeric_limits::max()) { - *port_ptr = d; + if (d && 1 <= d && d <= std::numeric_limits::max()) { + *port_ptr = *d; return 0; } @@ -152,7 +152,7 @@ int split_host_port(char *host, size_t hostlen, uint16_t *port_ptr, namespace { bool is_secure(const StringRef &filename) { struct stat buf; - int rv = stat(filename.c_str(), &buf); + int rv = stat(filename.data(), &buf); if (rv == 0) { if ((buf.st_mode & S_IRWXU) && !(buf.st_mode & S_IRWXG) && !(buf.st_mode & S_IRWXO)) { @@ -185,7 +185,7 @@ read_tls_ticket_key_file(const std::vector &files, for (auto &file : files) { struct stat fst {}; - if (stat(file.c_str(), &fst) == -1) { + if (stat(file.data(), &fst) == -1) { auto error = errno; LOG(ERROR) << "tls-ticket-key-file: could not stat file " << file << ", errno=" << error; @@ -198,7 +198,7 @@ read_tls_ticket_key_file(const std::vector &files, return nullptr; } - std::ifstream f(file.c_str()); + std::ifstream f(file.data()); if (!f) { LOG(ERROR) << "tls-ticket-key-file: could not open file " << file; return nullptr; @@ -245,7 +245,7 @@ read_quic_secret_file(const StringRef &path) { auto qkms = std::make_shared(); auto &kms = qkms->keying_materials; - std::ifstream f(path.c_str()); + std::ifstream f(path.data()); if (!f) { LOG(ERROR) << "frontend-quic-secret-file: could not open file " << path; return nullptr; @@ -350,7 +350,7 @@ std::string read_passwd_from_file(const StringRef &opt, return line; } - std::ifstream in(filename.c_str(), std::ios::binary); + std::ifstream in(filename.data(), std::ios::binary); if (!in) { LOG(ERROR) << opt << ": Could not open key passwd file " << filename; return line; @@ -375,13 +375,12 @@ HeaderRefs::value_type parse_header(BlockAllocator &balloc, auto name_iov = make_byte_ref(balloc, std::distance(std::begin(optarg), colon) + 1); - auto p = name_iov.base; - p = std::copy(std::begin(optarg), colon, p); - util::inp_strlower(name_iov.base, p); + auto p = std::copy(std::begin(optarg), colon, std::begin(name_iov)); + util::inp_strlower(std::begin(name_iov), p); *p = '\0'; auto nv = - HeaderRef(StringRef{name_iov.base, p}, + HeaderRef(StringRef{std::span{std::begin(name_iov), p}}, make_string_ref(balloc, StringRef{value, std::end(optarg)})); if (!nghttp2_check_header_name(nv.name.byte(), nv.name.size()) || @@ -395,12 +394,12 @@ HeaderRefs::value_type parse_header(BlockAllocator &balloc, template int parse_uint(T *dest, const StringRef &opt, const StringRef &optarg) { auto val = util::parse_uint(optarg); - if (val == -1) { + if (!val) { LOG(ERROR) << opt << ": bad value. Specify an integer >= 0."; return -1; } - *dest = val; + *dest = *val; return 0; } @@ -410,20 +409,20 @@ template int parse_uint_with_unit(T *dest, const StringRef &opt, const StringRef &optarg) { auto n = util::parse_uint_with_unit(optarg); - if (n == -1) { + if (!n) { LOG(ERROR) << opt << ": bad value: '" << optarg << "'"; return -1; } if (static_cast(std::numeric_limits::max()) < - static_cast(n)) { + static_cast(*n)) { LOG(ERROR) << opt << ": too large. The value should be less than or equal to " << std::numeric_limits::max(); return -1; } - *dest = n; + *dest = *n; return 0; } @@ -482,12 +481,12 @@ int parse_altsvc(AltSvc &altsvc, const StringRef &opt, namespace { // generated by gennghttpxfun.py -LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { - switch (namelen) { +LogFragmentType log_var_lookup_token(const StringRef &name) { + switch (name.size()) { case 3: switch (name[2]) { case 'd': - if (util::strieq_l("pi", name, 2)) { + if (util::strieq("pi"_sr, name, 2)) { return LogFragmentType::PID; } break; @@ -496,12 +495,12 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 4: switch (name[3]) { case 'h': - if (util::strieq_l("pat", name, 3)) { + if (util::strieq("pat"_sr, name, 3)) { return LogFragmentType::PATH; } break; case 'n': - if (util::strieq_l("alp", name, 3)) { + if (util::strieq("alp"_sr, name, 3)) { return LogFragmentType::ALPN; } break; @@ -510,12 +509,12 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 6: switch (name[5]) { case 'd': - if (util::strieq_l("metho", name, 5)) { + if (util::strieq("metho"_sr, name, 5)) { return LogFragmentType::METHOD; } break; case 's': - if (util::strieq_l("statu", name, 5)) { + if (util::strieq("statu"_sr, name, 5)) { return LogFragmentType::STATUS; } break; @@ -524,12 +523,12 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 7: switch (name[6]) { case 'i': - if (util::strieq_l("tls_sn", name, 6)) { + if (util::strieq("tls_sn"_sr, name, 6)) { return LogFragmentType::TLS_SNI; } break; case 't': - if (util::strieq_l("reques", name, 6)) { + if (util::strieq("reques"_sr, name, 6)) { return LogFragmentType::REQUEST; } break; @@ -538,15 +537,15 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 10: switch (name[9]) { case 'l': - if (util::strieq_l("time_loca", name, 9)) { + if (util::strieq("time_loca"_sr, name, 9)) { return LogFragmentType::TIME_LOCAL; } break; case 'r': - if (util::strieq_l("ssl_ciphe", name, 9)) { + if (util::strieq("ssl_ciphe"_sr, name, 9)) { return LogFragmentType::SSL_CIPHER; } - if (util::strieq_l("tls_ciphe", name, 9)) { + if (util::strieq("tls_ciphe"_sr, name, 9)) { return LogFragmentType::TLS_CIPHER; } break; @@ -555,15 +554,15 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 11: switch (name[10]) { case 'r': - if (util::strieq_l("remote_add", name, 10)) { + if (util::strieq("remote_add"_sr, name, 10)) { return LogFragmentType::REMOTE_ADDR; } break; case 't': - if (util::strieq_l("remote_por", name, 10)) { + if (util::strieq("remote_por"_sr, name, 10)) { return LogFragmentType::REMOTE_PORT; } - if (util::strieq_l("server_por", name, 10)) { + if (util::strieq("server_por"_sr, name, 10)) { return LogFragmentType::SERVER_PORT; } break; @@ -572,28 +571,28 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 12: switch (name[11]) { case '1': - if (util::strieq_l("time_iso860", name, 11)) { + if (util::strieq("time_iso860"_sr, name, 11)) { return LogFragmentType::TIME_ISO8601; } break; case 'e': - if (util::strieq_l("request_tim", name, 11)) { + if (util::strieq("request_tim"_sr, name, 11)) { return LogFragmentType::REQUEST_TIME; } break; case 'l': - if (util::strieq_l("ssl_protoco", name, 11)) { + if (util::strieq("ssl_protoco"_sr, name, 11)) { return LogFragmentType::SSL_PROTOCOL; } - if (util::strieq_l("tls_protoco", name, 11)) { + if (util::strieq("tls_protoco"_sr, name, 11)) { return LogFragmentType::TLS_PROTOCOL; } break; case 't': - if (util::strieq_l("backend_hos", name, 11)) { + if (util::strieq("backend_hos"_sr, name, 11)) { return LogFragmentType::BACKEND_HOST; } - if (util::strieq_l("backend_por", name, 11)) { + if (util::strieq("backend_por"_sr, name, 11)) { return LogFragmentType::BACKEND_PORT; } break; @@ -602,10 +601,10 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 14: switch (name[13]) { case 'd': - if (util::strieq_l("ssl_session_i", name, 13)) { + if (util::strieq("ssl_session_i"_sr, name, 13)) { return LogFragmentType::SSL_SESSION_ID; } - if (util::strieq_l("tls_session_i", name, 13)) { + if (util::strieq("tls_session_i"_sr, name, 13)) { return LogFragmentType::TLS_SESSION_ID; } break; @@ -614,7 +613,7 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 15: switch (name[14]) { case 't': - if (util::strieq_l("body_bytes_sen", name, 14)) { + if (util::strieq("body_bytes_sen"_sr, name, 14)) { return LogFragmentType::BODY_BYTES_SENT; } break; @@ -623,7 +622,7 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 16: switch (name[15]) { case 'n': - if (util::strieq_l("protocol_versio", name, 15)) { + if (util::strieq("protocol_versio"_sr, name, 15)) { return LogFragmentType::PROTOCOL_VERSION; } break; @@ -632,7 +631,7 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 17: switch (name[16]) { case 'l': - if (util::strieq_l("tls_client_seria", name, 16)) { + if (util::strieq("tls_client_seria"_sr, name, 16)) { return LogFragmentType::TLS_CLIENT_SERIAL; } break; @@ -641,15 +640,15 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 18: switch (name[17]) { case 'd': - if (util::strieq_l("ssl_session_reuse", name, 17)) { + if (util::strieq("ssl_session_reuse"_sr, name, 17)) { return LogFragmentType::SSL_SESSION_REUSED; } - if (util::strieq_l("tls_session_reuse", name, 17)) { + if (util::strieq("tls_session_reuse"_sr, name, 17)) { return LogFragmentType::TLS_SESSION_REUSED; } break; case 'y': - if (util::strieq_l("path_without_quer", name, 17)) { + if (util::strieq("path_without_quer"_sr, name, 17)) { return LogFragmentType::PATH_WITHOUT_QUERY; } break; @@ -658,7 +657,7 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 22: switch (name[21]) { case 'e': - if (util::strieq_l("tls_client_issuer_nam", name, 21)) { + if (util::strieq("tls_client_issuer_nam"_sr, name, 21)) { return LogFragmentType::TLS_CLIENT_ISSUER_NAME; } break; @@ -667,7 +666,7 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 23: switch (name[22]) { case 'e': - if (util::strieq_l("tls_client_subject_nam", name, 22)) { + if (util::strieq("tls_client_subject_nam"_sr, name, 22)) { return LogFragmentType::TLS_CLIENT_SUBJECT_NAME; } break; @@ -676,7 +675,7 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 27: switch (name[26]) { case '1': - if (util::strieq_l("tls_client_fingerprint_sha", name, 26)) { + if (util::strieq("tls_client_fingerprint_sha"_sr, name, 26)) { return LogFragmentType::TLS_CLIENT_FINGERPRINT_SHA1; } break; @@ -685,7 +684,7 @@ LogFragmentType log_var_lookup_token(const char *name, size_t namelen) { case 29: switch (name[28]) { case '6': - if (util::strieq_l("tls_client_fingerprint_sha25", name, 28)) { + if (util::strieq("tls_client_fingerprint_sha25"_sr, name, 28)) { return LogFragmentType::TLS_CLIENT_FINGERPRINT_SHA256; } break; @@ -720,10 +719,9 @@ std::vector parse_log_format(BlockAllocator &balloc, ++p; - const char *var_name; - size_t var_namelen; + StringRef var_name; if (p != eop && *p == '{') { - var_name = ++p; + auto var_name_start = ++p; for (; p != eop && var_token(*p); ++p) ; @@ -732,35 +730,33 @@ std::vector parse_log_format(BlockAllocator &balloc, continue; } - var_namelen = p - var_name; + var_name = StringRef{var_name_start, p}; ++p; } else { - var_name = p; + auto var_name_start = p; for (; p != eop && var_token(*p); ++p) ; - var_namelen = p - var_name; + var_name = StringRef{var_name_start, p}; } - const char *value = nullptr; + auto value = std::begin(var_name); - auto type = log_var_lookup_token(var_name, var_namelen); + auto type = log_var_lookup_token(var_name); if (type == LogFragmentType::NONE) { - if (util::istarts_with_l(StringRef{var_name, var_namelen}, "http_")) { - if (util::streq_l("host", StringRef{var_name + str_size("http_"), - var_namelen - str_size("http_")})) { + if (util::istarts_with(var_name, "http_"_sr)) { + if ("host"_sr == var_name.substr(str_size("http_"))) { // Special handling of host header field. We will use // :authority header field if host header is missing. This // is a typical case in HTTP/2. type = LogFragmentType::AUTHORITY; } else { type = LogFragmentType::HTTP; - value = var_name + str_size("http_"); + value += str_size("http_"); } } else { - LOG(WARN) << "Unrecognized log format variable: " - << StringRef{var_name, var_namelen}; + LOG(WARN) << "Unrecognized log format variable: " << var_name; continue; } } @@ -773,23 +769,19 @@ std::vector parse_log_format(BlockAllocator &balloc, literal_start = p; - if (value == nullptr) { + if (value == std::begin(var_name)) { res.emplace_back(type); continue; } { - auto iov = make_byte_ref( - balloc, std::distance(value, var_name + var_namelen) + 1); - auto p = iov.base; - p = std::copy(value, var_name + var_namelen, p); - for (auto cp = iov.base; cp != p; ++cp) { - if (*cp == '_') { - *cp = '-'; - } - } + auto iov = + make_byte_ref(balloc, std::distance(value, std::end(var_name)) + 1); + auto p = std::copy(value, std::end(var_name), std::begin(iov)); + std::transform(std::begin(iov), p, std::begin(iov), + [](auto c) { return c == '_' ? '-' : c; }); *p = '\0'; - res.emplace_back(type, StringRef{iov.base, p}); + res.emplace_back(type, StringRef{std::span{std::begin(iov), p}}); } } @@ -804,15 +796,15 @@ std::vector parse_log_format(BlockAllocator &balloc, namespace { int parse_address_family(int *dest, const StringRef &opt, const StringRef &optarg) { - if (util::strieq_l("auto", optarg)) { + if (util::strieq("auto"_sr, optarg)) { *dest = AF_UNSPEC; return 0; } - if (util::strieq_l("IPv4", optarg)) { + if (util::strieq("IPv4"_sr, optarg)) { *dest = AF_INET; return 0; } - if (util::strieq_l("IPv6", optarg)) { + if (util::strieq("IPv6"_sr, optarg)) { *dest = AF_INET6; return 0; } @@ -826,12 +818,12 @@ namespace { int parse_duration(ev_tstamp *dest, const StringRef &opt, const StringRef &optarg) { auto t = util::parse_duration_with_unit(optarg); - if (t == std::numeric_limits::infinity()) { + if (!t) { LOG(ERROR) << opt << ": bad value: '" << optarg << "'"; return -1; } - *dest = t; + *dest = *t; return 0; } @@ -868,9 +860,9 @@ int parse_memcached_connection_params(MemcachedConnectionParams &out, auto end = std::find(first, last, ';'); auto param = StringRef{first, end}; - if (util::strieq_l("tls", param)) { + if (util::strieq("tls"_sr, param)) { out.tls = true; - } else if (util::strieq_l("no-tls", param)) { + } else if (util::strieq("no-tls"_sr, param)) { out.tls = false; } else if (!param.empty()) { LOG(ERROR) << opt << ": " << param << ": unknown keyword"; @@ -906,29 +898,29 @@ int parse_upstream_params(UpstreamParams &out, const StringRef &src_params) { auto end = std::find(first, last, ';'); auto param = StringRef{first, end}; - if (util::strieq_l("tls", param)) { + if (util::strieq("tls"_sr, param)) { out.tls = true; - } else if (util::strieq_l("sni-fwd", param)) { + } else if (util::strieq("sni-fwd"_sr, param)) { out.sni_fwd = true; - } else if (util::strieq_l("no-tls", param)) { + } else if (util::strieq("no-tls"_sr, param)) { out.tls = false; - } else if (util::strieq_l("api", param)) { + } else if (util::strieq("api"_sr, param)) { if (out.alt_mode != UpstreamAltMode::NONE && out.alt_mode != UpstreamAltMode::API) { LOG(ERROR) << "frontend: api and healthmon are mutually exclusive"; return -1; } out.alt_mode = UpstreamAltMode::API; - } else if (util::strieq_l("healthmon", param)) { + } else if (util::strieq("healthmon"_sr, param)) { if (out.alt_mode != UpstreamAltMode::NONE && out.alt_mode != UpstreamAltMode::HEALTHMON) { LOG(ERROR) << "frontend: api and healthmon are mutually exclusive"; return -1; } out.alt_mode = UpstreamAltMode::HEALTHMON; - } else if (util::strieq_l("proxyproto", param)) { + } else if (util::strieq("proxyproto"_sr, param)) { out.proxyproto = true; - } else if (util::strieq_l("quic", param)) { + } else if (util::strieq("quic"_sr, param)) { #ifdef ENABLE_HTTP3 out.quic = true; #else // !ENABLE_HTTP3 @@ -977,11 +969,11 @@ namespace { int parse_downstream_param_duration(ev_tstamp &dest, const StringRef &name, const StringRef &value) { auto t = util::parse_duration_with_unit(value); - if (t == std::numeric_limits::infinity()) { + if (!t) { LOG(ERROR) << "backend: " << name << ": bad value: '" << value << "'"; return -1; } - dest = t; + dest = *t; return 0; } } // namespace @@ -997,23 +989,22 @@ int parse_downstream_params(DownstreamParams &out, auto end = std::find(first, last, ';'); auto param = StringRef{first, end}; - if (util::istarts_with_l(param, "proto=")) { + if (util::istarts_with(param, "proto="_sr)) { auto protostr = StringRef{first + str_size("proto="), end}; if (protostr.empty()) { LOG(ERROR) << "backend: proto: protocol is empty"; return -1; } - if (util::streq_l("h2", std::begin(protostr), protostr.size())) { + if ("h2"_sr == protostr) { out.proto = Proto::HTTP2; - } else if (util::streq_l("http/1.1", std::begin(protostr), - protostr.size())) { + } else if ("http/1.1"_sr == protostr) { out.proto = Proto::HTTP1; } else { LOG(ERROR) << "backend: proto: unknown protocol " << protostr; return -1; } - } else if (util::istarts_with_l(param, "fall=")) { + } else if (util::istarts_with(param, "fall="_sr)) { auto valstr = StringRef{first + str_size("fall="), end}; if (valstr.empty()) { LOG(ERROR) << "backend: fall: non-negative integer is expected"; @@ -1021,13 +1012,13 @@ int parse_downstream_params(DownstreamParams &out, } auto n = util::parse_uint(valstr); - if (n == -1) { + if (!n) { LOG(ERROR) << "backend: fall: non-negative integer is expected"; return -1; } - out.fall = n; - } else if (util::istarts_with_l(param, "rise=")) { + out.fall = *n; + } else if (util::istarts_with(param, "rise="_sr)) { auto valstr = StringRef{first + str_size("rise="), end}; if (valstr.empty()) { LOG(ERROR) << "backend: rise: non-negative integer is expected"; @@ -1035,32 +1026,32 @@ int parse_downstream_params(DownstreamParams &out, } auto n = util::parse_uint(valstr); - if (n == -1) { + if (!n) { LOG(ERROR) << "backend: rise: non-negative integer is expected"; return -1; } - out.rise = n; - } else if (util::strieq_l("tls", param)) { + out.rise = *n; + } else if (util::strieq("tls"_sr, param)) { out.tls = true; - } else if (util::strieq_l("no-tls", param)) { + } else if (util::strieq("no-tls"_sr, param)) { out.tls = false; - } else if (util::istarts_with_l(param, "sni=")) { + } else if (util::istarts_with(param, "sni="_sr)) { out.sni = StringRef{first + str_size("sni="), end}; - } else if (util::istarts_with_l(param, "affinity=")) { + } else if (util::istarts_with(param, "affinity="_sr)) { auto valstr = StringRef{first + str_size("affinity="), end}; - if (util::strieq_l("none", valstr)) { + if (util::strieq("none"_sr, valstr)) { out.affinity.type = SessionAffinity::NONE; - } else if (util::strieq_l("ip", valstr)) { + } else if (util::strieq("ip"_sr, valstr)) { out.affinity.type = SessionAffinity::IP; - } else if (util::strieq_l("cookie", valstr)) { + } else if (util::strieq("cookie"_sr, valstr)) { out.affinity.type = SessionAffinity::COOKIE; } else { LOG(ERROR) << "backend: affinity: value must be one of none, ip, and cookie"; return -1; } - } else if (util::istarts_with_l(param, "affinity-cookie-name=")) { + } else if (util::istarts_with(param, "affinity-cookie-name="_sr)) { auto val = StringRef{first + str_size("affinity-cookie-name="), end}; if (val.empty()) { LOG(ERROR) @@ -1068,28 +1059,28 @@ int parse_downstream_params(DownstreamParams &out, return -1; } out.affinity.cookie.name = val; - } else if (util::istarts_with_l(param, "affinity-cookie-path=")) { + } else if (util::istarts_with(param, "affinity-cookie-path="_sr)) { out.affinity.cookie.path = StringRef{first + str_size("affinity-cookie-path="), end}; - } else if (util::istarts_with_l(param, "affinity-cookie-secure=")) { + } else if (util::istarts_with(param, "affinity-cookie-secure="_sr)) { auto valstr = StringRef{first + str_size("affinity-cookie-secure="), end}; - if (util::strieq_l("auto", valstr)) { + if (util::strieq("auto"_sr, valstr)) { out.affinity.cookie.secure = SessionAffinityCookieSecure::AUTO; - } else if (util::strieq_l("yes", valstr)) { + } else if (util::strieq("yes"_sr, valstr)) { out.affinity.cookie.secure = SessionAffinityCookieSecure::YES; - } else if (util::strieq_l("no", valstr)) { + } else if (util::strieq("no"_sr, valstr)) { out.affinity.cookie.secure = SessionAffinityCookieSecure::NO; } else { LOG(ERROR) << "backend: affinity-cookie-secure: value must be one of " "auto, yes, and no"; return -1; } - } else if (util::istarts_with_l(param, "affinity-cookie-stickiness=")) { + } else if (util::istarts_with(param, "affinity-cookie-stickiness="_sr)) { auto valstr = StringRef{first + str_size("affinity-cookie-stickiness="), end}; - if (util::strieq_l("loose", valstr)) { + if (util::strieq("loose"_sr, valstr)) { out.affinity.cookie.stickiness = SessionAffinityCookieStickiness::LOOSE; - } else if (util::strieq_l("strict", valstr)) { + } else if (util::strieq("strict"_sr, valstr)) { out.affinity.cookie.stickiness = SessionAffinityCookieStickiness::STRICT; } else { @@ -1097,28 +1088,28 @@ int parse_downstream_params(DownstreamParams &out, "either loose or strict"; return -1; } - } else if (util::strieq_l("dns", param)) { + } else if (util::strieq("dns"_sr, param)) { out.dns = true; - } else if (util::strieq_l("redirect-if-not-tls", param)) { + } else if (util::strieq("redirect-if-not-tls"_sr, param)) { out.redirect_if_not_tls = true; - } else if (util::strieq_l("upgrade-scheme", param)) { + } else if (util::strieq("upgrade-scheme"_sr, param)) { out.upgrade_scheme = true; - } else if (util::istarts_with_l(param, "mruby=")) { + } else if (util::istarts_with(param, "mruby="_sr)) { auto valstr = StringRef{first + str_size("mruby="), end}; out.mruby = valstr; - } else if (util::istarts_with_l(param, "read-timeout=")) { + } else if (util::istarts_with(param, "read-timeout="_sr)) { if (parse_downstream_param_duration( - out.read_timeout, StringRef::from_lit("read-timeout"), + out.read_timeout, "read-timeout"_sr, StringRef{first + str_size("read-timeout="), end}) == -1) { return -1; } - } else if (util::istarts_with_l(param, "write-timeout=")) { + } else if (util::istarts_with(param, "write-timeout="_sr)) { if (parse_downstream_param_duration( - out.write_timeout, StringRef::from_lit("write-timeout"), + out.write_timeout, "write-timeout"_sr, StringRef{first + str_size("write-timeout="), end}) == -1) { return -1; } - } else if (util::istarts_with_l(param, "weight=")) { + } else if (util::istarts_with(param, "weight="_sr)) { auto valstr = StringRef{first + str_size("weight="), end}; if (valstr.empty()) { LOG(ERROR) @@ -1127,20 +1118,20 @@ int parse_downstream_params(DownstreamParams &out, } auto n = util::parse_uint(valstr); - if (n < 1 || n > 256) { + if (!n || (n < 1 || n > 256)) { LOG(ERROR) << "backend: weight: non-negative integer [1, 256] is expected"; return -1; } - out.weight = n; - } else if (util::istarts_with_l(param, "group=")) { + out.weight = *n; + } else if (util::istarts_with(param, "group="_sr)) { auto valstr = StringRef{first + str_size("group="), end}; if (valstr.empty()) { LOG(ERROR) << "backend: group: empty string is not allowed"; return -1; } out.group = valstr; - } else if (util::istarts_with_l(param, "group-weight=")) { + } else if (util::istarts_with(param, "group-weight="_sr)) { auto valstr = StringRef{first + str_size("group-weight="), end}; if (valstr.empty()) { LOG(ERROR) << "backend: group-weight: non-negative integer [1, 256] is " @@ -1149,13 +1140,13 @@ int parse_downstream_params(DownstreamParams &out, } auto n = util::parse_uint(valstr); - if (n < 1 || n > 256) { + if (!n || (n < 1 || n > 256)) { LOG(ERROR) << "backend: group-weight: non-negative integer [1, 256] is " "expected"; return -1; } - out.group_weight = n; - } else if (util::strieq_l("dnf", param)) { + out.group_weight = *n; + } else if (util::strieq("dnf"_sr, param)) { out.dnf = true; } else if (!param.empty()) { LOG(ERROR) << "backend: " << param << ": unknown keyword"; @@ -1235,12 +1226,12 @@ int parse_mapping(Config *config, DownstreamAddrConfig &addr, // This effectively makes empty pattern to "/". 2 for '/' and // terminal NULL character. auto iov = make_byte_ref(downstreamconf.balloc, raw_pattern.size() + 2); - auto p = iov.base; - p = std::copy(std::begin(raw_pattern), std::end(raw_pattern), p); - util::inp_strlower(iov.base, p); + auto p = std::copy(std::begin(raw_pattern), std::end(raw_pattern), + std::begin(iov)); + util::inp_strlower(std::begin(iov), p); *p++ = '/'; *p = '\0'; - pattern = StringRef{iov.base, p}; + pattern = StringRef{std::span{std::begin(iov), p}}; } else { auto path = http2::normalize_path_colon( downstreamconf.balloc, StringRef{slash, std::end(raw_pattern)}, @@ -1248,12 +1239,11 @@ int parse_mapping(Config *config, DownstreamAddrConfig &addr, auto iov = make_byte_ref(downstreamconf.balloc, std::distance(std::begin(raw_pattern), slash) + path.size() + 1); - auto p = iov.base; - p = std::copy(std::begin(raw_pattern), slash, p); - util::inp_strlower(iov.base, p); + auto p = std::copy(std::begin(raw_pattern), slash, std::begin(iov)); + util::inp_strlower(std::begin(iov), p); p = std::copy(std::begin(path), std::end(path), p); *p = '\0'; - pattern = StringRef{iov.base, p}; + pattern = StringRef{std::span{std::begin(iov), p}}; } auto it = pattern_addr_indexer.find(pattern); if (it != std::end(pattern_addr_indexer)) { @@ -1385,10 +1375,10 @@ int parse_mapping(Config *config, DownstreamAddrConfig &addr, router.add_route(path, idx, path_is_wildcard); auto iov = make_byte_ref(downstreamconf.balloc, host.size() + 1); - auto p = iov.base; - p = std::reverse_copy(std::begin(host), std::end(host), p); + auto p = std::reverse_copy(std::begin(host), std::end(host), + std::begin(iov)); *p = '\0'; - auto rev_host = StringRef{iov.base, p}; + auto rev_host = StringRef{std::span{std::begin(iov), p}}; rw_router.add_route(rev_host, wildcard_patterns.size() - 1); } else { @@ -1413,11 +1403,11 @@ int parse_mapping(Config *config, DownstreamAddrConfig &addr, namespace { ForwardedNode parse_forwarded_node_type(const StringRef &optarg) { - if (util::strieq_l("obfuscated", optarg)) { + if (util::strieq("obfuscated"_sr, optarg)) { return ForwardedNode::OBFUSCATED; } - if (util::strieq_l("ip", optarg)) { + if (util::strieq("ip"_sr, optarg)) { return ForwardedNode::IP; } @@ -1450,23 +1440,23 @@ int parse_error_page(std::vector &error_pages, const StringRef &opt, auto codestr = StringRef{std::begin(optarg), eq}; unsigned int code; - if (codestr == StringRef::from_lit("*")) { + if (codestr == "*"_sr) { code = 0; } else { auto n = util::parse_uint(codestr); - if (n == -1 || n < 400 || n > 599) { + if (!n || n < 400 || n > 599) { LOG(ERROR) << opt << ": bad code: '" << codestr << "'"; return -1; } - code = static_cast(n); + code = static_cast(*n); } auto path = StringRef{eq + 1, std::end(optarg)}; std::vector content; - auto fd = open(path.c_str(), O_RDONLY); + auto fd = open(path.data(), O_RDONLY); if (fd == -1) { auto error = errno; LOG(ERROR) << opt << ": " << optarg << ": " @@ -1515,7 +1505,7 @@ int parse_subcert_params(SubcertParams &out, const StringRef &src_params) { auto end = std::find(first, last, ';'); auto param = StringRef{first, end}; - if (util::istarts_with_l(param, "sct-dir=")) { + if (util::istarts_with(param, "sct-dir="_sr)) { #if defined(NGHTTP2_GENUINE_OPENSSL) || defined(NGHTTP2_OPENSSL_IS_BORINGSSL) auto sct_dir = StringRef{std::begin(param) + str_size("sct-dir="), std::end(param)}; @@ -1551,7 +1541,7 @@ int read_tls_sct_from_dir(std::vector &dst, const StringRef &opt, const StringRef &dir_path) { std::array errbuf; - auto dir = opendir(dir_path.c_str()); + auto dir = opendir(dir_path.data()); if (dir == nullptr) { auto error = errno; LOG(ERROR) << opt << ": " << dir_path << ": " @@ -1580,7 +1570,7 @@ int read_tls_sct_from_dir(std::vector &dst, const StringRef &opt, auto name = StringRef{ent->d_name}; - if (name[0] == '.' || !util::iends_with_l(name, ".sct")) { + if (name[0] == '.' || !util::iends_with(name, ".sct"_sr)) { continue; } @@ -1667,7 +1657,7 @@ namespace { int parse_psk_secrets(Config *config, const StringRef &path) { auto &tlsconf = config->tls; - std::ifstream f(path.c_str(), std::ios::binary); + std::ifstream f(path.data(), std::ios::binary); if (!f) { LOG(ERROR) << SHRPX_OPT_PSK_SECRETS << ": could not open file " << path; return -1; @@ -1733,7 +1723,7 @@ namespace { int parse_client_psk_secrets(Config *config, const StringRef &path) { auto &tlsconf = config->tls; - std::ifstream f(path.c_str(), std::ios::binary); + std::ifstream f(path.data(), std::ios::binary); if (!f) { LOG(ERROR) << SHRPX_OPT_CLIENT_PSK_SECRETS << ": could not open file " << path; @@ -1776,8 +1766,8 @@ int parse_client_psk_secrets(Config *config, const StringRef &path) { tlsconf.client.psk.identity = make_string_ref(config->balloc, StringRef{std::begin(line), sep_it}); - tlsconf.client.psk.secret = - util::decode_hex(config->balloc, StringRef{sep_it + 1, std::end(line)}); + tlsconf.client.psk.secret = StringRef{util::decode_hex( + config->balloc, StringRef{sep_it + 1, std::end(line)})}; return 0; } @@ -1788,17 +1778,17 @@ int parse_client_psk_secrets(Config *config, const StringRef &path) { #endif // !OPENSSL_NO_PSK // generated by gennghttpxfun.py -int option_lookup_token(const char *name, size_t namelen) { - switch (namelen) { +int option_lookup_token(const StringRef &name) { + switch (name.size()) { case 4: switch (name[3]) { case 'f': - if (util::strieq_l("con", name, 3)) { + if (util::strieq("con"_sr, name, 3)) { return SHRPX_OPTID_CONF; } break; case 'r': - if (util::strieq_l("use", name, 3)) { + if (util::strieq("use"_sr, name, 3)) { return SHRPX_OPTID_USER; } break; @@ -1807,25 +1797,25 @@ int option_lookup_token(const char *name, size_t namelen) { case 6: switch (name[5]) { case 'a': - if (util::strieq_l("no-vi", name, 5)) { + if (util::strieq("no-vi"_sr, name, 5)) { return SHRPX_OPTID_NO_VIA; } break; case 'c': - if (util::strieq_l("altsv", name, 5)) { + if (util::strieq("altsv"_sr, name, 5)) { return SHRPX_OPTID_ALTSVC; } break; case 'n': - if (util::strieq_l("daemo", name, 5)) { + if (util::strieq("daemo"_sr, name, 5)) { return SHRPX_OPTID_DAEMON; } break; case 't': - if (util::strieq_l("cacer", name, 5)) { + if (util::strieq("cacer"_sr, name, 5)) { return SHRPX_OPTID_CACERT; } - if (util::strieq_l("clien", name, 5)) { + if (util::strieq("clien"_sr, name, 5)) { return SHRPX_OPTID_CLIENT; } break; @@ -1834,38 +1824,38 @@ int option_lookup_token(const char *name, size_t namelen) { case 7: switch (name[6]) { case 'd': - if (util::strieq_l("backen", name, 6)) { + if (util::strieq("backen"_sr, name, 6)) { return SHRPX_OPTID_BACKEND; } break; case 'e': - if (util::strieq_l("includ", name, 6)) { + if (util::strieq("includ"_sr, name, 6)) { return SHRPX_OPTID_INCLUDE; } break; case 'g': - if (util::strieq_l("backlo", name, 6)) { + if (util::strieq("backlo"_sr, name, 6)) { return SHRPX_OPTID_BACKLOG; } - if (util::strieq_l("paddin", name, 6)) { + if (util::strieq("paddin"_sr, name, 6)) { return SHRPX_OPTID_PADDING; } break; case 'p': - if (util::strieq_l("no-ocs", name, 6)) { + if (util::strieq("no-ocs"_sr, name, 6)) { return SHRPX_OPTID_NO_OCSP; } break; case 's': - if (util::strieq_l("cipher", name, 6)) { + if (util::strieq("cipher"_sr, name, 6)) { return SHRPX_OPTID_CIPHERS; } - if (util::strieq_l("worker", name, 6)) { + if (util::strieq("worker"_sr, name, 6)) { return SHRPX_OPTID_WORKERS; } break; case 't': - if (util::strieq_l("subcer", name, 6)) { + if (util::strieq("subcer"_sr, name, 6)) { return SHRPX_OPTID_SUBCERT; } break; @@ -1874,30 +1864,30 @@ int option_lookup_token(const char *name, size_t namelen) { case 8: switch (name[7]) { case 'd': - if (util::strieq_l("fronten", name, 7)) { + if (util::strieq("fronten"_sr, name, 7)) { return SHRPX_OPTID_FRONTEND; } break; case 'e': - if (util::strieq_l("insecur", name, 7)) { + if (util::strieq("insecur"_sr, name, 7)) { return SHRPX_OPTID_INSECURE; } - if (util::strieq_l("pid-fil", name, 7)) { + if (util::strieq("pid-fil"_sr, name, 7)) { return SHRPX_OPTID_PID_FILE; } break; case 'n': - if (util::strieq_l("fastope", name, 7)) { + if (util::strieq("fastope"_sr, name, 7)) { return SHRPX_OPTID_FASTOPEN; } break; case 's': - if (util::strieq_l("tls-ktl", name, 7)) { + if (util::strieq("tls-ktl"_sr, name, 7)) { return SHRPX_OPTID_TLS_KTLS; } break; case 't': - if (util::strieq_l("npn-lis", name, 7)) { + if (util::strieq("npn-lis"_sr, name, 7)) { return SHRPX_OPTID_NPN_LIST; } break; @@ -1906,20 +1896,20 @@ int option_lookup_token(const char *name, size_t namelen) { case 9: switch (name[8]) { case 'e': - if (util::strieq_l("no-kqueu", name, 8)) { + if (util::strieq("no-kqueu"_sr, name, 8)) { return SHRPX_OPTID_NO_KQUEUE; } - if (util::strieq_l("read-rat", name, 8)) { + if (util::strieq("read-rat"_sr, name, 8)) { return SHRPX_OPTID_READ_RATE; } break; case 'l': - if (util::strieq_l("log-leve", name, 8)) { + if (util::strieq("log-leve"_sr, name, 8)) { return SHRPX_OPTID_LOG_LEVEL; } break; case 't': - if (util::strieq_l("alpn-lis", name, 8)) { + if (util::strieq("alpn-lis"_sr, name, 8)) { return SHRPX_OPTID_ALPN_LIST; } break; @@ -1928,18 +1918,18 @@ int option_lookup_token(const char *name, size_t namelen) { case 10: switch (name[9]) { case 'e': - if (util::strieq_l("error-pag", name, 9)) { + if (util::strieq("error-pag"_sr, name, 9)) { return SHRPX_OPTID_ERROR_PAGE; } - if (util::strieq_l("mruby-fil", name, 9)) { + if (util::strieq("mruby-fil"_sr, name, 9)) { return SHRPX_OPTID_MRUBY_FILE; } - if (util::strieq_l("write-rat", name, 9)) { + if (util::strieq("write-rat"_sr, name, 9)) { return SHRPX_OPTID_WRITE_RATE; } break; case 't': - if (util::strieq_l("read-burs", name, 9)) { + if (util::strieq("read-burs"_sr, name, 9)) { return SHRPX_OPTID_READ_BURST; } break; @@ -1948,41 +1938,41 @@ int option_lookup_token(const char *name, size_t namelen) { case 11: switch (name[10]) { case 'e': - if (util::strieq_l("server-nam", name, 10)) { + if (util::strieq("server-nam"_sr, name, 10)) { return SHRPX_OPTID_SERVER_NAME; } break; case 'f': - if (util::strieq_l("no-quic-bp", name, 10)) { + if (util::strieq("no-quic-bp"_sr, name, 10)) { return SHRPX_OPTID_NO_QUIC_BPF; } break; case 'r': - if (util::strieq_l("tls-sct-di", name, 10)) { + if (util::strieq("tls-sct-di"_sr, name, 10)) { return SHRPX_OPTID_TLS_SCT_DIR; } break; case 's': - if (util::strieq_l("backend-tl", name, 10)) { + if (util::strieq("backend-tl"_sr, name, 10)) { return SHRPX_OPTID_BACKEND_TLS; } - if (util::strieq_l("ecdh-curve", name, 10)) { + if (util::strieq("ecdh-curve"_sr, name, 10)) { return SHRPX_OPTID_ECDH_CURVES; } - if (util::strieq_l("psk-secret", name, 10)) { + if (util::strieq("psk-secret"_sr, name, 10)) { return SHRPX_OPTID_PSK_SECRETS; } break; case 't': - if (util::strieq_l("write-burs", name, 10)) { + if (util::strieq("write-burs"_sr, name, 10)) { return SHRPX_OPTID_WRITE_BURST; } break; case 'y': - if (util::strieq_l("dns-max-tr", name, 10)) { + if (util::strieq("dns-max-tr"_sr, name, 10)) { return SHRPX_OPTID_DNS_MAX_TRY; } - if (util::strieq_l("http2-prox", name, 10)) { + if (util::strieq("http2-prox"_sr, name, 10)) { return SHRPX_OPTID_HTTP2_PROXY; } break; @@ -1991,38 +1981,38 @@ int option_lookup_token(const char *name, size_t namelen) { case 12: switch (name[11]) { case '4': - if (util::strieq_l("backend-ipv", name, 11)) { + if (util::strieq("backend-ipv"_sr, name, 11)) { return SHRPX_OPTID_BACKEND_IPV4; } break; case '6': - if (util::strieq_l("backend-ipv", name, 11)) { + if (util::strieq("backend-ipv"_sr, name, 11)) { return SHRPX_OPTID_BACKEND_IPV6; } break; case 'c': - if (util::strieq_l("http2-altsv", name, 11)) { + if (util::strieq("http2-altsv"_sr, name, 11)) { return SHRPX_OPTID_HTTP2_ALTSVC; } break; case 'e': - if (util::strieq_l("host-rewrit", name, 11)) { + if (util::strieq("host-rewrit"_sr, name, 11)) { return SHRPX_OPTID_HOST_REWRITE; } - if (util::strieq_l("http2-bridg", name, 11)) { + if (util::strieq("http2-bridg"_sr, name, 11)) { return SHRPX_OPTID_HTTP2_BRIDGE; } break; case 'p': - if (util::strieq_l("ocsp-startu", name, 11)) { + if (util::strieq("ocsp-startu"_sr, name, 11)) { return SHRPX_OPTID_OCSP_STARTUP; } break; case 'y': - if (util::strieq_l("client-prox", name, 11)) { + if (util::strieq("client-prox"_sr, name, 11)) { return SHRPX_OPTID_CLIENT_PROXY; } - if (util::strieq_l("forwarded-b", name, 11)) { + if (util::strieq("forwarded-b"_sr, name, 11)) { return SHRPX_OPTID_FORWARDED_BY; } break; @@ -2031,36 +2021,36 @@ int option_lookup_token(const char *name, size_t namelen) { case 13: switch (name[12]) { case 'd': - if (util::strieq_l("add-forwarde", name, 12)) { + if (util::strieq("add-forwarde"_sr, name, 12)) { return SHRPX_OPTID_ADD_FORWARDED; } - if (util::strieq_l("single-threa", name, 12)) { + if (util::strieq("single-threa"_sr, name, 12)) { return SHRPX_OPTID_SINGLE_THREAD; } break; case 'e': - if (util::strieq_l("dh-param-fil", name, 12)) { + if (util::strieq("dh-param-fil"_sr, name, 12)) { return SHRPX_OPTID_DH_PARAM_FILE; } - if (util::strieq_l("errorlog-fil", name, 12)) { + if (util::strieq("errorlog-fil"_sr, name, 12)) { return SHRPX_OPTID_ERRORLOG_FILE; } - if (util::strieq_l("rlimit-nofil", name, 12)) { + if (util::strieq("rlimit-nofil"_sr, name, 12)) { return SHRPX_OPTID_RLIMIT_NOFILE; } break; case 'r': - if (util::strieq_l("forwarded-fo", name, 12)) { + if (util::strieq("forwarded-fo"_sr, name, 12)) { return SHRPX_OPTID_FORWARDED_FOR; } break; case 's': - if (util::strieq_l("tls13-cipher", name, 12)) { + if (util::strieq("tls13-cipher"_sr, name, 12)) { return SHRPX_OPTID_TLS13_CIPHERS; } break; case 't': - if (util::strieq_l("verify-clien", name, 12)) { + if (util::strieq("verify-clien"_sr, name, 12)) { return SHRPX_OPTID_VERIFY_CLIENT; } break; @@ -2069,43 +2059,43 @@ int option_lookup_token(const char *name, size_t namelen) { case 14: switch (name[13]) { case 'd': - if (util::strieq_l("quic-server-i", name, 13)) { + if (util::strieq("quic-server-i"_sr, name, 13)) { return SHRPX_OPTID_QUIC_SERVER_ID; } break; case 'e': - if (util::strieq_l("accesslog-fil", name, 13)) { + if (util::strieq("accesslog-fil"_sr, name, 13)) { return SHRPX_OPTID_ACCESSLOG_FILE; } break; case 'h': - if (util::strieq_l("no-server-pus", name, 13)) { + if (util::strieq("no-server-pus"_sr, name, 13)) { return SHRPX_OPTID_NO_SERVER_PUSH; } break; case 'k': - if (util::strieq_l("rlimit-memloc", name, 13)) { + if (util::strieq("rlimit-memloc"_sr, name, 13)) { return SHRPX_OPTID_RLIMIT_MEMLOCK; } break; case 'p': - if (util::strieq_l("no-verify-ocs", name, 13)) { + if (util::strieq("no-verify-ocs"_sr, name, 13)) { return SHRPX_OPTID_NO_VERIFY_OCSP; } break; case 's': - if (util::strieq_l("backend-no-tl", name, 13)) { + if (util::strieq("backend-no-tl"_sr, name, 13)) { return SHRPX_OPTID_BACKEND_NO_TLS; } - if (util::strieq_l("client-cipher", name, 13)) { + if (util::strieq("client-cipher"_sr, name, 13)) { return SHRPX_OPTID_CLIENT_CIPHERS; } - if (util::strieq_l("single-proces", name, 13)) { + if (util::strieq("single-proces"_sr, name, 13)) { return SHRPX_OPTID_SINGLE_PROCESS; } break; case 't': - if (util::strieq_l("tls-proto-lis", name, 13)) { + if (util::strieq("tls-proto-lis"_sr, name, 13)) { return SHRPX_OPTID_TLS_PROTO_LIST; } break; @@ -2114,22 +2104,22 @@ int option_lookup_token(const char *name, size_t namelen) { case 15: switch (name[14]) { case 'e': - if (util::strieq_l("no-host-rewrit", name, 14)) { + if (util::strieq("no-host-rewrit"_sr, name, 14)) { return SHRPX_OPTID_NO_HOST_REWRITE; } break; case 'g': - if (util::strieq_l("errorlog-syslo", name, 14)) { + if (util::strieq("errorlog-syslo"_sr, name, 14)) { return SHRPX_OPTID_ERRORLOG_SYSLOG; } break; case 's': - if (util::strieq_l("frontend-no-tl", name, 14)) { + if (util::strieq("frontend-no-tl"_sr, name, 14)) { return SHRPX_OPTID_FRONTEND_NO_TLS; } break; case 'y': - if (util::strieq_l("syslog-facilit", name, 14)) { + if (util::strieq("syslog-facilit"_sr, name, 14)) { return SHRPX_OPTID_SYSLOG_FACILITY; } break; @@ -2138,26 +2128,26 @@ int option_lookup_token(const char *name, size_t namelen) { case 16: switch (name[15]) { case 'e': - if (util::strieq_l("certificate-fil", name, 15)) { + if (util::strieq("certificate-fil"_sr, name, 15)) { return SHRPX_OPTID_CERTIFICATE_FILE; } - if (util::strieq_l("client-cert-fil", name, 15)) { + if (util::strieq("client-cert-fil"_sr, name, 15)) { return SHRPX_OPTID_CLIENT_CERT_FILE; } - if (util::strieq_l("private-key-fil", name, 15)) { + if (util::strieq("private-key-fil"_sr, name, 15)) { return SHRPX_OPTID_PRIVATE_KEY_FILE; } - if (util::strieq_l("worker-read-rat", name, 15)) { + if (util::strieq("worker-read-rat"_sr, name, 15)) { return SHRPX_OPTID_WORKER_READ_RATE; } break; case 'g': - if (util::strieq_l("accesslog-syslo", name, 15)) { + if (util::strieq("accesslog-syslo"_sr, name, 15)) { return SHRPX_OPTID_ACCESSLOG_SYSLOG; } break; case 't': - if (util::strieq_l("accesslog-forma", name, 15)) { + if (util::strieq("accesslog-forma"_sr, name, 15)) { return SHRPX_OPTID_ACCESSLOG_FORMAT; } break; @@ -2166,26 +2156,26 @@ int option_lookup_token(const char *name, size_t namelen) { case 17: switch (name[16]) { case 'e': - if (util::strieq_l("no-server-rewrit", name, 16)) { + if (util::strieq("no-server-rewrit"_sr, name, 16)) { return SHRPX_OPTID_NO_SERVER_REWRITE; } - if (util::strieq_l("worker-write-rat", name, 16)) { + if (util::strieq("worker-write-rat"_sr, name, 16)) { return SHRPX_OPTID_WORKER_WRITE_RATE; } break; case 's': - if (util::strieq_l("backend-http1-tl", name, 16)) { + if (util::strieq("backend-http1-tl"_sr, name, 16)) { return SHRPX_OPTID_BACKEND_HTTP1_TLS; } - if (util::strieq_l("max-header-field", name, 16)) { + if (util::strieq("max-header-field"_sr, name, 16)) { return SHRPX_OPTID_MAX_HEADER_FIELDS; } break; case 't': - if (util::strieq_l("dns-cache-timeou", name, 16)) { + if (util::strieq("dns-cache-timeou"_sr, name, 16)) { return SHRPX_OPTID_DNS_CACHE_TIMEOUT; } - if (util::strieq_l("worker-read-burs", name, 16)) { + if (util::strieq("worker-read-burs"_sr, name, 16)) { return SHRPX_OPTID_WORKER_READ_BURST; } break; @@ -2194,25 +2184,25 @@ int option_lookup_token(const char *name, size_t namelen) { case 18: switch (name[17]) { case 'a': - if (util::strieq_l("tls-max-early-dat", name, 17)) { + if (util::strieq("tls-max-early-dat"_sr, name, 17)) { return SHRPX_OPTID_TLS_MAX_EARLY_DATA; } break; case 'r': - if (util::strieq_l("add-request-heade", name, 17)) { + if (util::strieq("add-request-heade"_sr, name, 17)) { return SHRPX_OPTID_ADD_REQUEST_HEADER; } break; case 's': - if (util::strieq_l("client-psk-secret", name, 17)) { + if (util::strieq("client-psk-secret"_sr, name, 17)) { return SHRPX_OPTID_CLIENT_PSK_SECRETS; } break; case 't': - if (util::strieq_l("dns-lookup-timeou", name, 17)) { + if (util::strieq("dns-lookup-timeou"_sr, name, 17)) { return SHRPX_OPTID_DNS_LOOKUP_TIMEOUT; } - if (util::strieq_l("worker-write-burs", name, 17)) { + if (util::strieq("worker-write-burs"_sr, name, 17)) { return SHRPX_OPTID_WORKER_WRITE_BURST; } break; @@ -2221,37 +2211,37 @@ int option_lookup_token(const char *name, size_t namelen) { case 19: switch (name[18]) { case 'e': - if (util::strieq_l("no-location-rewrit", name, 18)) { + if (util::strieq("no-location-rewrit"_sr, name, 18)) { return SHRPX_OPTID_NO_LOCATION_REWRITE; } - if (util::strieq_l("require-http-schem", name, 18)) { + if (util::strieq("require-http-schem"_sr, name, 18)) { return SHRPX_OPTID_REQUIRE_HTTP_SCHEME; } - if (util::strieq_l("tls-ticket-key-fil", name, 18)) { + if (util::strieq("tls-ticket-key-fil"_sr, name, 18)) { return SHRPX_OPTID_TLS_TICKET_KEY_FILE; } break; case 'f': - if (util::strieq_l("backend-max-backof", name, 18)) { + if (util::strieq("backend-max-backof"_sr, name, 18)) { return SHRPX_OPTID_BACKEND_MAX_BACKOFF; } break; case 'r': - if (util::strieq_l("add-response-heade", name, 18)) { + if (util::strieq("add-response-heade"_sr, name, 18)) { return SHRPX_OPTID_ADD_RESPONSE_HEADER; } - if (util::strieq_l("add-x-forwarded-fo", name, 18)) { + if (util::strieq("add-x-forwarded-fo"_sr, name, 18)) { return SHRPX_OPTID_ADD_X_FORWARDED_FOR; } - if (util::strieq_l("header-field-buffe", name, 18)) { + if (util::strieq("header-field-buffe"_sr, name, 18)) { return SHRPX_OPTID_HEADER_FIELD_BUFFER; } break; case 't': - if (util::strieq_l("redirect-https-por", name, 18)) { + if (util::strieq("redirect-https-por"_sr, name, 18)) { return SHRPX_OPTID_REDIRECT_HTTPS_PORT; } - if (util::strieq_l("stream-read-timeou", name, 18)) { + if (util::strieq("stream-read-timeou"_sr, name, 18)) { return SHRPX_OPTID_STREAM_READ_TIMEOUT; } break; @@ -2260,36 +2250,36 @@ int option_lookup_token(const char *name, size_t namelen) { case 20: switch (name[19]) { case 'g': - if (util::strieq_l("frontend-frame-debu", name, 19)) { + if (util::strieq("frontend-frame-debu"_sr, name, 19)) { return SHRPX_OPTID_FRONTEND_FRAME_DEBUG; } break; case 'l': - if (util::strieq_l("ocsp-update-interva", name, 19)) { + if (util::strieq("ocsp-update-interva"_sr, name, 19)) { return SHRPX_OPTID_OCSP_UPDATE_INTERVAL; } break; case 's': - if (util::strieq_l("max-worker-processe", name, 19)) { + if (util::strieq("max-worker-processe"_sr, name, 19)) { return SHRPX_OPTID_MAX_WORKER_PROCESSES; } - if (util::strieq_l("tls13-client-cipher", name, 19)) { + if (util::strieq("tls13-client-cipher"_sr, name, 19)) { return SHRPX_OPTID_TLS13_CLIENT_CIPHERS; } break; case 't': - if (util::strieq_l("backend-read-timeou", name, 19)) { + if (util::strieq("backend-read-timeou"_sr, name, 19)) { return SHRPX_OPTID_BACKEND_READ_TIMEOUT; } - if (util::strieq_l("stream-write-timeou", name, 19)) { + if (util::strieq("stream-write-timeou"_sr, name, 19)) { return SHRPX_OPTID_STREAM_WRITE_TIMEOUT; } - if (util::strieq_l("verify-client-cacer", name, 19)) { + if (util::strieq("verify-client-cacer"_sr, name, 19)) { return SHRPX_OPTID_VERIFY_CLIENT_CACERT; } break; case 'y': - if (util::strieq_l("api-max-request-bod", name, 19)) { + if (util::strieq("api-max-request-bod"_sr, name, 19)) { return SHRPX_OPTID_API_MAX_REQUEST_BODY; } break; @@ -2298,48 +2288,48 @@ int option_lookup_token(const char *name, size_t namelen) { case 21: switch (name[20]) { case 'd': - if (util::strieq_l("backend-tls-sni-fiel", name, 20)) { + if (util::strieq("backend-tls-sni-fiel"_sr, name, 20)) { return SHRPX_OPTID_BACKEND_TLS_SNI_FIELD; } break; case 'e': - if (util::strieq_l("quic-bpf-program-fil", name, 20)) { + if (util::strieq("quic-bpf-program-fil"_sr, name, 20)) { return SHRPX_OPTID_QUIC_BPF_PROGRAM_FILE; } break; case 'l': - if (util::strieq_l("accept-proxy-protoco", name, 20)) { + if (util::strieq("accept-proxy-protoco"_sr, name, 20)) { return SHRPX_OPTID_ACCEPT_PROXY_PROTOCOL; } break; case 'n': - if (util::strieq_l("tls-max-proto-versio", name, 20)) { + if (util::strieq("tls-max-proto-versio"_sr, name, 20)) { return SHRPX_OPTID_TLS_MAX_PROTO_VERSION; } - if (util::strieq_l("tls-min-proto-versio", name, 20)) { + if (util::strieq("tls-min-proto-versio"_sr, name, 20)) { return SHRPX_OPTID_TLS_MIN_PROTO_VERSION; } break; case 'r': - if (util::strieq_l("tls-ticket-key-ciphe", name, 20)) { + if (util::strieq("tls-ticket-key-ciphe"_sr, name, 20)) { return SHRPX_OPTID_TLS_TICKET_KEY_CIPHER; } break; case 's': - if (util::strieq_l("frontend-max-request", name, 20)) { + if (util::strieq("frontend-max-request"_sr, name, 20)) { return SHRPX_OPTID_FRONTEND_MAX_REQUESTS; } break; case 't': - if (util::strieq_l("backend-write-timeou", name, 20)) { + if (util::strieq("backend-write-timeou"_sr, name, 20)) { return SHRPX_OPTID_BACKEND_WRITE_TIMEOUT; } - if (util::strieq_l("frontend-read-timeou", name, 20)) { + if (util::strieq("frontend-read-timeou"_sr, name, 20)) { return SHRPX_OPTID_FRONTEND_READ_TIMEOUT; } break; case 'y': - if (util::strieq_l("accesslog-write-earl", name, 20)) { + if (util::strieq("accesslog-write-earl"_sr, name, 20)) { return SHRPX_OPTID_ACCESSLOG_WRITE_EARLY; } break; @@ -2348,25 +2338,25 @@ int option_lookup_token(const char *name, size_t namelen) { case 22: switch (name[21]) { case 'i': - if (util::strieq_l("backend-http-proxy-ur", name, 21)) { + if (util::strieq("backend-http-proxy-ur"_sr, name, 21)) { return SHRPX_OPTID_BACKEND_HTTP_PROXY_URI; } break; case 'r': - if (util::strieq_l("backend-request-buffe", name, 21)) { + if (util::strieq("backend-request-buffe"_sr, name, 21)) { return SHRPX_OPTID_BACKEND_REQUEST_BUFFER; } - if (util::strieq_l("frontend-quic-qlog-di", name, 21)) { + if (util::strieq("frontend-quic-qlog-di"_sr, name, 21)) { return SHRPX_OPTID_FRONTEND_QUIC_QLOG_DIR; } break; case 't': - if (util::strieq_l("frontend-write-timeou", name, 21)) { + if (util::strieq("frontend-write-timeou"_sr, name, 21)) { return SHRPX_OPTID_FRONTEND_WRITE_TIMEOUT; } break; case 'y': - if (util::strieq_l("backend-address-famil", name, 21)) { + if (util::strieq("backend-address-famil"_sr, name, 21)) { return SHRPX_OPTID_BACKEND_ADDRESS_FAMILY; } break; @@ -2375,28 +2365,28 @@ int option_lookup_token(const char *name, size_t namelen) { case 23: switch (name[22]) { case 'e': - if (util::strieq_l("client-private-key-fil", name, 22)) { + if (util::strieq("client-private-key-fil"_sr, name, 22)) { return SHRPX_OPTID_CLIENT_PRIVATE_KEY_FILE; } - if (util::strieq_l("private-key-passwd-fil", name, 22)) { + if (util::strieq("private-key-passwd-fil"_sr, name, 22)) { return SHRPX_OPTID_PRIVATE_KEY_PASSWD_FILE; } break; case 'g': - if (util::strieq_l("frontend-quic-debug-lo", name, 22)) { + if (util::strieq("frontend-quic-debug-lo"_sr, name, 22)) { return SHRPX_OPTID_FRONTEND_QUIC_DEBUG_LOG; } break; case 'r': - if (util::strieq_l("backend-response-buffe", name, 22)) { + if (util::strieq("backend-response-buffe"_sr, name, 22)) { return SHRPX_OPTID_BACKEND_RESPONSE_BUFFER; } break; case 't': - if (util::strieq_l("backend-connect-timeou", name, 22)) { + if (util::strieq("backend-connect-timeou"_sr, name, 22)) { return SHRPX_OPTID_BACKEND_CONNECT_TIMEOUT; } - if (util::strieq_l("frontend-header-timeou", name, 22)) { + if (util::strieq("frontend-header-timeou"_sr, name, 22)) { return SHRPX_OPTID_FRONTEND_HEADER_TIMEOUT; } break; @@ -2405,33 +2395,33 @@ int option_lookup_token(const char *name, size_t namelen) { case 24: switch (name[23]) { case 'a': - if (util::strieq_l("frontend-quic-early-dat", name, 23)) { + if (util::strieq("frontend-quic-early-dat"_sr, name, 23)) { return SHRPX_OPTID_FRONTEND_QUIC_EARLY_DATA; } break; case 'd': - if (util::strieq_l("strip-incoming-forwarde", name, 23)) { + if (util::strieq("strip-incoming-forwarde"_sr, name, 23)) { return SHRPX_OPTID_STRIP_INCOMING_FORWARDED; } - if (util::strieq_l("tls-ticket-key-memcache", name, 23)) { + if (util::strieq("tls-ticket-key-memcache"_sr, name, 23)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED; } break; case 'e': - if (util::strieq_l("fetch-ocsp-response-fil", name, 23)) { + if (util::strieq("fetch-ocsp-response-fil"_sr, name, 23)) { return SHRPX_OPTID_FETCH_OCSP_RESPONSE_FILE; } break; case 'o': - if (util::strieq_l("no-add-x-forwarded-prot", name, 23)) { + if (util::strieq("no-add-x-forwarded-prot"_sr, name, 23)) { return SHRPX_OPTID_NO_ADD_X_FORWARDED_PROTO; } break; case 't': - if (util::strieq_l("listener-disable-timeou", name, 23)) { + if (util::strieq("listener-disable-timeou"_sr, name, 23)) { return SHRPX_OPTID_LISTENER_DISABLE_TIMEOUT; } - if (util::strieq_l("tls-dyn-rec-idle-timeou", name, 23)) { + if (util::strieq("tls-dyn-rec-idle-timeou"_sr, name, 23)) { return SHRPX_OPTID_TLS_DYN_REC_IDLE_TIMEOUT; } break; @@ -2440,28 +2430,28 @@ int option_lookup_token(const char *name, size_t namelen) { case 25: switch (name[24]) { case 'e': - if (util::strieq_l("backend-http2-window-siz", name, 24)) { + if (util::strieq("backend-http2-window-siz"_sr, name, 24)) { return SHRPX_OPTID_BACKEND_HTTP2_WINDOW_SIZE; } - if (util::strieq_l("frontend-quic-secret-fil", name, 24)) { + if (util::strieq("frontend-quic-secret-fil"_sr, name, 24)) { return SHRPX_OPTID_FRONTEND_QUIC_SECRET_FILE; } break; case 'g': - if (util::strieq_l("http2-no-cookie-crumblin", name, 24)) { + if (util::strieq("http2-no-cookie-crumblin"_sr, name, 24)) { return SHRPX_OPTID_HTTP2_NO_COOKIE_CRUMBLING; } break; case 's': - if (util::strieq_l("backend-http2-window-bit", name, 24)) { + if (util::strieq("backend-http2-window-bit"_sr, name, 24)) { return SHRPX_OPTID_BACKEND_HTTP2_WINDOW_BITS; } - if (util::strieq_l("max-request-header-field", name, 24)) { + if (util::strieq("max-request-header-field"_sr, name, 24)) { return SHRPX_OPTID_MAX_REQUEST_HEADER_FIELDS; } break; case 't': - if (util::strieq_l("frontend-quic-initial-rt", name, 24)) { + if (util::strieq("frontend-quic-initial-rt"_sr, name, 24)) { return SHRPX_OPTID_FRONTEND_QUIC_INITIAL_RTT; } break; @@ -2470,37 +2460,37 @@ int option_lookup_token(const char *name, size_t namelen) { case 26: switch (name[25]) { case 'a': - if (util::strieq_l("tls-no-postpone-early-dat", name, 25)) { + if (util::strieq("tls-no-postpone-early-dat"_sr, name, 25)) { return SHRPX_OPTID_TLS_NO_POSTPONE_EARLY_DATA; } break; case 'e': - if (util::strieq_l("frontend-http2-window-siz", name, 25)) { + if (util::strieq("frontend-http2-window-siz"_sr, name, 25)) { return SHRPX_OPTID_FRONTEND_HTTP2_WINDOW_SIZE; } - if (util::strieq_l("frontend-http3-window-siz", name, 25)) { + if (util::strieq("frontend-http3-window-siz"_sr, name, 25)) { return SHRPX_OPTID_FRONTEND_HTTP3_WINDOW_SIZE; } break; case 's': - if (util::strieq_l("frontend-http2-window-bit", name, 25)) { + if (util::strieq("frontend-http2-window-bit"_sr, name, 25)) { return SHRPX_OPTID_FRONTEND_HTTP2_WINDOW_BITS; } - if (util::strieq_l("max-response-header-field", name, 25)) { + if (util::strieq("max-response-header-field"_sr, name, 25)) { return SHRPX_OPTID_MAX_RESPONSE_HEADER_FIELDS; } break; case 't': - if (util::strieq_l("backend-keep-alive-timeou", name, 25)) { + if (util::strieq("backend-keep-alive-timeou"_sr, name, 25)) { return SHRPX_OPTID_BACKEND_KEEP_ALIVE_TIMEOUT; } - if (util::strieq_l("frontend-quic-idle-timeou", name, 25)) { + if (util::strieq("frontend-quic-idle-timeou"_sr, name, 25)) { return SHRPX_OPTID_FRONTEND_QUIC_IDLE_TIMEOUT; } - if (util::strieq_l("no-http2-cipher-black-lis", name, 25)) { + if (util::strieq("no-http2-cipher-black-lis"_sr, name, 25)) { return SHRPX_OPTID_NO_HTTP2_CIPHER_BLACK_LIST; } - if (util::strieq_l("no-http2-cipher-block-lis", name, 25)) { + if (util::strieq("no-http2-cipher-block-lis"_sr, name, 25)) { return SHRPX_OPTID_NO_HTTP2_CIPHER_BLOCK_LIST; } break; @@ -2509,39 +2499,39 @@ int option_lookup_token(const char *name, size_t namelen) { case 27: switch (name[26]) { case 'd': - if (util::strieq_l("tls-session-cache-memcache", name, 26)) { + if (util::strieq("tls-session-cache-memcache"_sr, name, 26)) { return SHRPX_OPTID_TLS_SESSION_CACHE_MEMCACHED; } break; case 'n': - if (util::strieq_l("frontend-quic-require-toke", name, 26)) { + if (util::strieq("frontend-quic-require-toke"_sr, name, 26)) { return SHRPX_OPTID_FRONTEND_QUIC_REQUIRE_TOKEN; } break; case 'r': - if (util::strieq_l("request-header-field-buffe", name, 26)) { + if (util::strieq("request-header-field-buffe"_sr, name, 26)) { return SHRPX_OPTID_REQUEST_HEADER_FIELD_BUFFER; } break; case 's': - if (util::strieq_l("worker-frontend-connection", name, 26)) { + if (util::strieq("worker-frontend-connection"_sr, name, 26)) { return SHRPX_OPTID_WORKER_FRONTEND_CONNECTIONS; } break; case 't': - if (util::strieq_l("frontend-http2-idle-timeou", name, 26)) { + if (util::strieq("frontend-http2-idle-timeou"_sr, name, 26)) { return SHRPX_OPTID_FRONTEND_HTTP2_IDLE_TIMEOUT; } - if (util::strieq_l("frontend-http2-read-timeou", name, 26)) { + if (util::strieq("frontend-http2-read-timeou"_sr, name, 26)) { return SHRPX_OPTID_FRONTEND_HTTP2_READ_TIMEOUT; } - if (util::strieq_l("frontend-http3-idle-timeou", name, 26)) { + if (util::strieq("frontend-http3-idle-timeou"_sr, name, 26)) { return SHRPX_OPTID_FRONTEND_HTTP3_IDLE_TIMEOUT; } - if (util::strieq_l("frontend-http3-read-timeou", name, 26)) { + if (util::strieq("frontend-http3-read-timeou"_sr, name, 26)) { return SHRPX_OPTID_FRONTEND_HTTP3_READ_TIMEOUT; } - if (util::strieq_l("frontend-keep-alive-timeou", name, 26)) { + if (util::strieq("frontend-keep-alive-timeou"_sr, name, 26)) { return SHRPX_OPTID_FRONTEND_KEEP_ALIVE_TIMEOUT; } break; @@ -2550,30 +2540,30 @@ int option_lookup_token(const char *name, size_t namelen) { case 28: switch (name[27]) { case 'a': - if (util::strieq_l("no-strip-incoming-early-dat", name, 27)) { + if (util::strieq("no-strip-incoming-early-dat"_sr, name, 27)) { return SHRPX_OPTID_NO_STRIP_INCOMING_EARLY_DATA; } break; case 'd': - if (util::strieq_l("tls-dyn-rec-warmup-threshol", name, 27)) { + if (util::strieq("tls-dyn-rec-warmup-threshol"_sr, name, 27)) { return SHRPX_OPTID_TLS_DYN_REC_WARMUP_THRESHOLD; } break; case 'r': - if (util::strieq_l("response-header-field-buffe", name, 27)) { + if (util::strieq("response-header-field-buffe"_sr, name, 27)) { return SHRPX_OPTID_RESPONSE_HEADER_FIELD_BUFFER; } break; case 's': - if (util::strieq_l("http2-max-concurrent-stream", name, 27)) { + if (util::strieq("http2-max-concurrent-stream"_sr, name, 27)) { return SHRPX_OPTID_HTTP2_MAX_CONCURRENT_STREAMS; } - if (util::strieq_l("tls-ticket-key-memcached-tl", name, 27)) { + if (util::strieq("tls-ticket-key-memcached-tl"_sr, name, 27)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED_TLS; } break; case 't': - if (util::strieq_l("backend-connections-per-hos", name, 27)) { + if (util::strieq("backend-connections-per-hos"_sr, name, 27)) { return SHRPX_OPTID_BACKEND_CONNECTIONS_PER_HOST; } break; @@ -2582,25 +2572,25 @@ int option_lookup_token(const char *name, size_t namelen) { case 30: switch (name[29]) { case 'd': - if (util::strieq_l("verify-client-tolerate-expire", name, 29)) { + if (util::strieq("verify-client-tolerate-expire"_sr, name, 29)) { return SHRPX_OPTID_VERIFY_CLIENT_TOLERATE_EXPIRED; } break; case 'e': - if (util::strieq_l("frontend-http3-max-window-siz", name, 29)) { + if (util::strieq("frontend-http3-max-window-siz"_sr, name, 29)) { return SHRPX_OPTID_FRONTEND_HTTP3_MAX_WINDOW_SIZE; } break; case 'r': - if (util::strieq_l("ignore-per-pattern-mruby-erro", name, 29)) { + if (util::strieq("ignore-per-pattern-mruby-erro"_sr, name, 29)) { return SHRPX_OPTID_IGNORE_PER_PATTERN_MRUBY_ERROR; } - if (util::strieq_l("strip-incoming-x-forwarded-fo", name, 29)) { + if (util::strieq("strip-incoming-x-forwarded-fo"_sr, name, 29)) { return SHRPX_OPTID_STRIP_INCOMING_X_FORWARDED_FOR; } break; case 't': - if (util::strieq_l("backend-http2-settings-timeou", name, 29)) { + if (util::strieq("backend-http2-settings-timeou"_sr, name, 29)) { return SHRPX_OPTID_BACKEND_HTTP2_SETTINGS_TIMEOUT; } break; @@ -2609,12 +2599,12 @@ int option_lookup_token(const char *name, size_t namelen) { case 31: switch (name[30]) { case 's': - if (util::strieq_l("tls-session-cache-memcached-tl", name, 30)) { + if (util::strieq("tls-session-cache-memcached-tl"_sr, name, 30)) { return SHRPX_OPTID_TLS_SESSION_CACHE_MEMCACHED_TLS; } break; case 't': - if (util::strieq_l("frontend-http2-settings-timeou", name, 30)) { + if (util::strieq("frontend-http2-settings-timeou"_sr, name, 30)) { return SHRPX_OPTID_FRONTEND_HTTP2_SETTINGS_TIMEOUT; } break; @@ -2623,7 +2613,7 @@ int option_lookup_token(const char *name, size_t namelen) { case 32: switch (name[31]) { case 'd': - if (util::strieq_l("backend-connections-per-fronten", name, 31)) { + if (util::strieq("backend-connections-per-fronten"_sr, name, 31)) { return SHRPX_OPTID_BACKEND_CONNECTIONS_PER_FRONTEND; } break; @@ -2632,18 +2622,18 @@ int option_lookup_token(const char *name, size_t namelen) { case 33: switch (name[32]) { case 'l': - if (util::strieq_l("tls-ticket-key-memcached-interva", name, 32)) { + if (util::strieq("tls-ticket-key-memcached-interva"_sr, name, 32)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED_INTERVAL; } - if (util::strieq_l("tls-ticket-key-memcached-max-fai", name, 32)) { + if (util::strieq("tls-ticket-key-memcached-max-fai"_sr, name, 32)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED_MAX_FAIL; } break; case 't': - if (util::strieq_l("client-no-http2-cipher-black-lis", name, 32)) { + if (util::strieq("client-no-http2-cipher-black-lis"_sr, name, 32)) { return SHRPX_OPTID_CLIENT_NO_HTTP2_CIPHER_BLACK_LIST; } - if (util::strieq_l("client-no-http2-cipher-block-lis", name, 32)) { + if (util::strieq("client-no-http2-cipher-block-lis"_sr, name, 32)) { return SHRPX_OPTID_CLIENT_NO_HTTP2_CIPHER_BLOCK_LIST; } break; @@ -2652,22 +2642,22 @@ int option_lookup_token(const char *name, size_t namelen) { case 34: switch (name[33]) { case 'e': - if (util::strieq_l("tls-ticket-key-memcached-cert-fil", name, 33)) { + if (util::strieq("tls-ticket-key-memcached-cert-fil"_sr, name, 33)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED_CERT_FILE; } break; case 'r': - if (util::strieq_l("frontend-http2-dump-request-heade", name, 33)) { + if (util::strieq("frontend-http2-dump-request-heade"_sr, name, 33)) { return SHRPX_OPTID_FRONTEND_HTTP2_DUMP_REQUEST_HEADER; } break; case 't': - if (util::strieq_l("backend-http1-connections-per-hos", name, 33)) { + if (util::strieq("backend-http1-connections-per-hos"_sr, name, 33)) { return SHRPX_OPTID_BACKEND_HTTP1_CONNECTIONS_PER_HOST; } break; case 'y': - if (util::strieq_l("tls-ticket-key-memcached-max-retr", name, 33)) { + if (util::strieq("tls-ticket-key-memcached-max-retr"_sr, name, 33)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED_MAX_RETRY; } break; @@ -2676,20 +2666,20 @@ int option_lookup_token(const char *name, size_t namelen) { case 35: switch (name[34]) { case 'e': - if (util::strieq_l("frontend-http2-optimize-window-siz", name, 34)) { + if (util::strieq("frontend-http2-optimize-window-siz"_sr, name, 34)) { return SHRPX_OPTID_FRONTEND_HTTP2_OPTIMIZE_WINDOW_SIZE; } break; case 'o': - if (util::strieq_l("no-strip-incoming-x-forwarded-prot", name, 34)) { + if (util::strieq("no-strip-incoming-x-forwarded-prot"_sr, name, 34)) { return SHRPX_OPTID_NO_STRIP_INCOMING_X_FORWARDED_PROTO; } break; case 'r': - if (util::strieq_l("frontend-http2-dump-response-heade", name, 34)) { + if (util::strieq("frontend-http2-dump-response-heade"_sr, name, 34)) { return SHRPX_OPTID_FRONTEND_HTTP2_DUMP_RESPONSE_HEADER; } - if (util::strieq_l("frontend-quic-congestion-controlle", name, 34)) { + if (util::strieq("frontend-quic-congestion-controlle"_sr, name, 34)) { return SHRPX_OPTID_FRONTEND_QUIC_CONGESTION_CONTROLLER; } break; @@ -2698,25 +2688,25 @@ int option_lookup_token(const char *name, size_t namelen) { case 36: switch (name[35]) { case 'd': - if (util::strieq_l("worker-process-grace-shutdown-perio", name, 35)) { + if (util::strieq("worker-process-grace-shutdown-perio"_sr, name, 35)) { return SHRPX_OPTID_WORKER_PROCESS_GRACE_SHUTDOWN_PERIOD; } break; case 'e': - if (util::strieq_l("backend-http2-connection-window-siz", name, 35)) { + if (util::strieq("backend-http2-connection-window-siz"_sr, name, 35)) { return SHRPX_OPTID_BACKEND_HTTP2_CONNECTION_WINDOW_SIZE; } break; case 'r': - if (util::strieq_l("backend-http2-connections-per-worke", name, 35)) { + if (util::strieq("backend-http2-connections-per-worke"_sr, name, 35)) { return SHRPX_OPTID_BACKEND_HTTP2_CONNECTIONS_PER_WORKER; } break; case 's': - if (util::strieq_l("backend-http2-connection-window-bit", name, 35)) { + if (util::strieq("backend-http2-connection-window-bit"_sr, name, 35)) { return SHRPX_OPTID_BACKEND_HTTP2_CONNECTION_WINDOW_BITS; } - if (util::strieq_l("backend-http2-max-concurrent-stream", name, 35)) { + if (util::strieq("backend-http2-max-concurrent-stream"_sr, name, 35)) { return SHRPX_OPTID_BACKEND_HTTP2_MAX_CONCURRENT_STREAMS; } break; @@ -2725,24 +2715,24 @@ int option_lookup_token(const char *name, size_t namelen) { case 37: switch (name[36]) { case 'e': - if (util::strieq_l("frontend-http2-connection-window-siz", name, 36)) { + if (util::strieq("frontend-http2-connection-window-siz"_sr, name, 36)) { return SHRPX_OPTID_FRONTEND_HTTP2_CONNECTION_WINDOW_SIZE; } - if (util::strieq_l("frontend-http3-connection-window-siz", name, 36)) { + if (util::strieq("frontend-http3-connection-window-siz"_sr, name, 36)) { return SHRPX_OPTID_FRONTEND_HTTP3_CONNECTION_WINDOW_SIZE; } - if (util::strieq_l("tls-session-cache-memcached-cert-fil", name, 36)) { + if (util::strieq("tls-session-cache-memcached-cert-fil"_sr, name, 36)) { return SHRPX_OPTID_TLS_SESSION_CACHE_MEMCACHED_CERT_FILE; } break; case 's': - if (util::strieq_l("frontend-http2-connection-window-bit", name, 36)) { + if (util::strieq("frontend-http2-connection-window-bit"_sr, name, 36)) { return SHRPX_OPTID_FRONTEND_HTTP2_CONNECTION_WINDOW_BITS; } - if (util::strieq_l("frontend-http2-max-concurrent-stream", name, 36)) { + if (util::strieq("frontend-http2-max-concurrent-stream"_sr, name, 36)) { return SHRPX_OPTID_FRONTEND_HTTP2_MAX_CONCURRENT_STREAMS; } - if (util::strieq_l("frontend-http3-max-concurrent-stream", name, 36)) { + if (util::strieq("frontend-http3-max-concurrent-stream"_sr, name, 36)) { return SHRPX_OPTID_FRONTEND_HTTP3_MAX_CONCURRENT_STREAMS; } break; @@ -2751,7 +2741,7 @@ int option_lookup_token(const char *name, size_t namelen) { case 38: switch (name[37]) { case 'd': - if (util::strieq_l("backend-http1-connections-per-fronten", name, 37)) { + if (util::strieq("backend-http1-connections-per-fronten"_sr, name, 37)) { return SHRPX_OPTID_BACKEND_HTTP1_CONNECTIONS_PER_FRONTEND; } break; @@ -2760,7 +2750,7 @@ int option_lookup_token(const char *name, size_t namelen) { case 39: switch (name[38]) { case 'y': - if (util::strieq_l("tls-ticket-key-memcached-address-famil", name, 38)) { + if (util::strieq("tls-ticket-key-memcached-address-famil"_sr, name, 38)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED_ADDRESS_FAMILY; } break; @@ -2769,10 +2759,12 @@ int option_lookup_token(const char *name, size_t namelen) { case 40: switch (name[39]) { case 'e': - if (util::strieq_l("backend-http2-decoder-dynamic-table-siz", name, 39)) { + if (util::strieq("backend-http2-decoder-dynamic-table-siz"_sr, name, + 39)) { return SHRPX_OPTID_BACKEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE; } - if (util::strieq_l("backend-http2-encoder-dynamic-table-siz", name, 39)) { + if (util::strieq("backend-http2-encoder-dynamic-table-siz"_sr, name, + 39)) { return SHRPX_OPTID_BACKEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE; } break; @@ -2781,24 +2773,24 @@ int option_lookup_token(const char *name, size_t namelen) { case 41: switch (name[40]) { case 'e': - if (util::strieq_l("frontend-http2-decoder-dynamic-table-siz", name, - 40)) { + if (util::strieq("frontend-http2-decoder-dynamic-table-siz"_sr, name, + 40)) { return SHRPX_OPTID_FRONTEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE; } - if (util::strieq_l("frontend-http2-encoder-dynamic-table-siz", name, - 40)) { + if (util::strieq("frontend-http2-encoder-dynamic-table-siz"_sr, name, + 40)) { return SHRPX_OPTID_FRONTEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE; } - if (util::strieq_l("frontend-http2-optimize-write-buffer-siz", name, - 40)) { + if (util::strieq("frontend-http2-optimize-write-buffer-siz"_sr, name, + 40)) { return SHRPX_OPTID_FRONTEND_HTTP2_OPTIMIZE_WRITE_BUFFER_SIZE; } - if (util::strieq_l("frontend-http3-max-connection-window-siz", name, - 40)) { + if (util::strieq("frontend-http3-max-connection-window-siz"_sr, name, + 40)) { return SHRPX_OPTID_FRONTEND_HTTP3_MAX_CONNECTION_WINDOW_SIZE; } - if (util::strieq_l("tls-ticket-key-memcached-private-key-fil", name, - 40)) { + if (util::strieq("tls-ticket-key-memcached-private-key-fil"_sr, name, + 40)) { return SHRPX_OPTID_TLS_TICKET_KEY_MEMCACHED_PRIVATE_KEY_FILE; } break; @@ -2807,8 +2799,8 @@ int option_lookup_token(const char *name, size_t namelen) { case 42: switch (name[41]) { case 'y': - if (util::strieq_l("tls-session-cache-memcached-address-famil", name, - 41)) { + if (util::strieq("tls-session-cache-memcached-address-famil"_sr, name, + 41)) { return SHRPX_OPTID_TLS_SESSION_CACHE_MEMCACHED_ADDRESS_FAMILY; } break; @@ -2817,8 +2809,8 @@ int option_lookup_token(const char *name, size_t namelen) { case 44: switch (name[43]) { case 'e': - if (util::strieq_l("tls-session-cache-memcached-private-key-fil", name, - 43)) { + if (util::strieq("tls-session-cache-memcached-private-key-fil"_sr, name, + 43)) { return SHRPX_OPTID_TLS_SESSION_CACHE_MEMCACHED_PRIVATE_KEY_FILE; } break; @@ -2831,7 +2823,7 @@ int option_lookup_token(const char *name, size_t namelen) { int parse_config(Config *config, const StringRef &opt, const StringRef &optarg, std::set &included_set, std::map &pattern_addr_indexer) { - auto optid = option_lookup_token(opt.c_str(), opt.size()); + auto optid = option_lookup_token(opt); return parse_config(config, optid, opt, optarg, included_set, pattern_addr_indexer); } @@ -3022,11 +3014,11 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; } case SHRPX_OPTID_DAEMON: - config->daemon = util::strieq_l("yes", optarg); + config->daemon = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_HTTP2_PROXY: - config->http2_proxy = util::strieq_l("yes", optarg); + config->http2_proxy = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_HTTP2_BRIDGE: @@ -3040,15 +3032,15 @@ int parse_config(Config *config, int optid, const StringRef &opt, "and backend=,;;proto=h2;tls"; return -1; case SHRPX_OPTID_ADD_X_FORWARDED_FOR: - config->http.xff.add = util::strieq_l("yes", optarg); + config->http.xff.add = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_STRIP_INCOMING_X_FORWARDED_FOR: - config->http.xff.strip_incoming = util::strieq_l("yes", optarg); + config->http.xff.strip_incoming = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_NO_VIA: - config->http.no_via = util::strieq_l("yes", optarg); + config->http.no_via = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_FRONTEND_HTTP2_READ_TIMEOUT: @@ -3081,7 +3073,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_ACCESSLOG_SYSLOG: - config->logging.access.syslog = util::strieq_l("yes", optarg); + config->logging.access.syslog = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_ACCESSLOG_FORMAT: @@ -3093,7 +3085,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_ERRORLOG_SYSLOG: - config->logging.error.syslog = util::strieq_l("yes", optarg); + config->logging.error.syslog = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_FASTOPEN: @@ -3191,7 +3183,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_USER: { - auto pwd = getpwnam(optarg.c_str()); + auto pwd = getpwnam(optarg.data()); if (!pwd) { LOG(ERROR) << opt << ": failed to get uid from " << optarg << ": " << xsi_strerror(errno, errbuf.data(), errbuf.size()); @@ -3240,7 +3232,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, if (!params.sct_dir.empty()) { // Make sure that dir_path is NULL terminated string. if (read_tls_sct_from_dir(sct_data, opt, - StringRef{params.sct_dir.str()}) != 0) { + StringRef{std::string{params.sct_dir}}) != 0) { return -1; } } @@ -3301,7 +3293,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, "backend=,;;proto=h2;tls"; return -1; case SHRPX_OPTID_INSECURE: - config->tls.insecure = util::strieq_l("yes", optarg); + config->tls.insecure = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_CACERT: @@ -3329,10 +3321,10 @@ int parse_config(Config *config, int optid, const StringRef &opt, proxy = {}; // parse URI and get hostname, port and optionally userinfo. http_parser_url u{}; - int rv = http_parser_parse_url(optarg.c_str(), optarg.size(), 0, &u); + int rv = http_parser_parse_url(optarg.data(), optarg.size(), 0, &u); if (rv == 0) { if (u.field_set & UF_USERINFO) { - auto uf = util::get_uri_field(optarg.c_str(), u, UF_USERINFO); + auto uf = util::get_uri_field(optarg.data(), u, UF_USERINFO); // Surprisingly, u.field_set & UF_USERINFO is nonzero even if // userinfo component is empty string. if (!uf.empty()) { @@ -3341,7 +3333,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, } if (u.field_set & UF_HOST) { proxy.host = make_string_ref( - config->balloc, util::get_uri_field(optarg.c_str(), u, UF_HOST)); + config->balloc, util::get_uri_field(optarg.data(), u, UF_HOST)); } else { LOG(ERROR) << opt << ": no hostname specified"; return -1; @@ -3396,7 +3388,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; } case SHRPX_OPTID_VERIFY_CLIENT: - config->tls.client_verify.enabled = util::strieq_l("yes", optarg); + config->tls.client_verify.enabled = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_VERIFY_CLIENT_CACERT: @@ -3423,11 +3415,11 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_HTTP2_NO_COOKIE_CRUMBLING: - config->http2.no_cookie_crumbling = util::strieq_l("yes", optarg); + config->http2.no_cookie_crumbling = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_FRONTEND_FRAME_DEBUG: - config->http2.upstream.debug.frame_debug = util::strieq_l("yes", optarg); + config->http2.upstream.debug.frame_debug = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_PADDING: @@ -3460,7 +3452,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, case SHRPX_OPTID_WORKER_FRONTEND_CONNECTIONS: return parse_uint(&config->conn.upstream.worker_connections, opt, optarg); case SHRPX_OPTID_NO_LOCATION_REWRITE: - config->http.no_location_rewrite = util::strieq_l("yes", optarg); + config->http.no_location_rewrite = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_NO_HOST_REWRITE: @@ -3544,7 +3536,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, } case SHRPX_OPTID_NO_SERVER_PUSH: - config->http2.no_server_push = util::strieq_l("yes", optarg); + config->http2.no_server_push = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_BACKEND_HTTP2_CONNECTIONS_PER_WORKER: @@ -3558,7 +3550,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, case SHRPX_OPTID_OCSP_UPDATE_INTERVAL: return parse_duration(&config->tls.ocsp.update_interval, opt, optarg); case SHRPX_OPTID_NO_OCSP: - config->tls.ocsp.disabled = util::strieq_l("yes", optarg); + config->tls.ocsp.disabled = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_HEADER_FIELD_BUFFER: @@ -3586,7 +3578,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, included_set.insert(optarg); auto rv = - load_config(config, optarg.c_str(), included_set, pattern_addr_indexer); + load_config(config, optarg.data(), included_set, pattern_addr_indexer); included_set.erase(optarg); if (rv != 0) { @@ -3596,9 +3588,9 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; } case SHRPX_OPTID_TLS_TICKET_KEY_CIPHER: - if (util::strieq_l("aes-128-cbc", optarg)) { + if (util::strieq("aes-128-cbc"_sr, optarg)) { config->tls.ticket.cipher = EVP_aes_128_cbc(); - } else if (util::strieq_l("aes-256-cbc", optarg)) { + } else if (util::strieq("aes-256-cbc"_sr, optarg)) { config->tls.ticket.cipher = EVP_aes_256_cbc(); } else { LOG(ERROR) << opt @@ -3609,7 +3601,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_HOST_REWRITE: - config->http.no_host_rewrite = !util::strieq_l("yes", optarg); + config->http.no_host_rewrite = !util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_TLS_SESSION_CACHE_MEMCACHED: @@ -3690,26 +3682,27 @@ int parse_config(Config *config, int optid, const StringRef &opt, case SHRPX_OPTID_ACCEPT_PROXY_PROTOCOL: LOG(WARN) << opt << ": deprecated. Use proxyproto keyword in " << SHRPX_OPT_FRONTEND << " instead."; - config->conn.upstream.accept_proxy_protocol = util::strieq_l("yes", optarg); + config->conn.upstream.accept_proxy_protocol = + util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_ADD_FORWARDED: { auto &fwdconf = config->http.forwarded; fwdconf.params = FORWARDED_NONE; for (const auto ¶m : util::split_str(optarg, ',')) { - if (util::strieq_l("by", param)) { + if (util::strieq("by"_sr, param)) { fwdconf.params |= FORWARDED_BY; continue; } - if (util::strieq_l("for", param)) { + if (util::strieq("for"_sr, param)) { fwdconf.params |= FORWARDED_FOR; continue; } - if (util::strieq_l("host", param)) { + if (util::strieq("host"_sr, param)) { fwdconf.params |= FORWARDED_HOST; continue; } - if (util::strieq_l("proto", param)) { + if (util::strieq("proto"_sr, param)) { fwdconf.params |= FORWARDED_PROTO; continue; } @@ -3722,7 +3715,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; } case SHRPX_OPTID_STRIP_INCOMING_FORWARDED: - config->http.forwarded.strip_incoming = util::strieq_l("yes", optarg); + config->http.forwarded.strip_incoming = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_FORWARDED_BY: @@ -3744,7 +3737,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, if (optarg[0] == '_') { fwdconf.by_obfuscated = make_string_ref(config->balloc, optarg); } else { - fwdconf.by_obfuscated = StringRef::from_lit(""); + fwdconf.by_obfuscated = ""_sr; } break; case SHRPX_OPTID_FORWARDED_FOR: @@ -3759,7 +3752,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, << SHRPX_OPT_NO_HTTP2_CIPHER_BLOCK_LIST << " instead."; // fall through case SHRPX_OPTID_NO_HTTP2_CIPHER_BLOCK_LIST: - config->tls.no_http2_cipher_block_list = util::strieq_l("yes", optarg); + config->tls.no_http2_cipher_block_list = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_BACKEND_HTTP1_TLS: case SHRPX_OPTID_BACKEND_TLS: @@ -3835,16 +3828,17 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_NO_SERVER_REWRITE: - config->http.no_server_rewrite = util::strieq_l("yes", optarg); + config->http.no_server_rewrite = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_FRONTEND_HTTP2_OPTIMIZE_WRITE_BUFFER_SIZE: config->http2.upstream.optimize_write_buffer_size = - util::strieq_l("yes", optarg); + util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_FRONTEND_HTTP2_OPTIMIZE_WINDOW_SIZE: - config->http2.upstream.optimize_window_size = util::strieq_l("yes", optarg); + config->http2.upstream.optimize_window_size = + util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_FRONTEND_HTTP2_WINDOW_SIZE: @@ -3963,7 +3957,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, // fall through case SHRPX_OPTID_CLIENT_NO_HTTP2_CIPHER_BLOCK_LIST: config->tls.client.no_http2_cipher_block_list = - util::strieq_l("yes", optarg); + util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_CLIENT_CIPHERS: @@ -3975,7 +3969,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_ACCESSLOG_WRITE_EARLY: - config->logging.access.write_early = util::strieq_l("yes", optarg); + config->logging.access.write_early = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_TLS_MIN_PROTO_VERSION: @@ -3984,7 +3978,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return parse_tls_proto_version(config->tls.max_proto_version, opt, optarg); case SHRPX_OPTID_REDIRECT_HTTPS_PORT: { auto n = util::parse_uint(optarg); - if (n == -1 || n < 0 || n > 65535) { + if (!n || n < 0 || n > 65535) { LOG(ERROR) << opt << ": bad value. Specify an integer in the range [0, " "65535], inclusive"; @@ -3996,46 +3990,46 @@ int parse_config(Config *config, int optid, const StringRef &opt, case SHRPX_OPTID_FRONTEND_MAX_REQUESTS: return parse_uint(&config->http.max_requests, opt, optarg); case SHRPX_OPTID_SINGLE_THREAD: - config->single_thread = util::strieq_l("yes", optarg); + config->single_thread = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_SINGLE_PROCESS: - config->single_process = util::strieq_l("yes", optarg); + config->single_process = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_NO_ADD_X_FORWARDED_PROTO: - config->http.xfp.add = !util::strieq_l("yes", optarg); + config->http.xfp.add = !util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_NO_STRIP_INCOMING_X_FORWARDED_PROTO: - config->http.xfp.strip_incoming = !util::strieq_l("yes", optarg); + config->http.xfp.strip_incoming = !util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_OCSP_STARTUP: - config->tls.ocsp.startup = util::strieq_l("yes", optarg); + config->tls.ocsp.startup = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_NO_VERIFY_OCSP: - config->tls.ocsp.no_verify = util::strieq_l("yes", optarg); + config->tls.ocsp.no_verify = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_VERIFY_CLIENT_TOLERATE_EXPIRED: - config->tls.client_verify.tolerate_expired = util::strieq_l("yes", optarg); + config->tls.client_verify.tolerate_expired = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_IGNORE_PER_PATTERN_MRUBY_ERROR: - config->ignore_per_pattern_mruby_error = util::strieq_l("yes", optarg); + config->ignore_per_pattern_mruby_error = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_TLS_NO_POSTPONE_EARLY_DATA: - config->tls.no_postpone_early_data = util::strieq_l("yes", optarg); + config->tls.no_postpone_early_data = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_TLS_MAX_EARLY_DATA: { return parse_uint_with_unit(&config->tls.max_early_data, opt, optarg); } case SHRPX_OPTID_NO_STRIP_INCOMING_EARLY_DATA: - config->http.early_data.strip_incoming = !util::strieq_l("yes", optarg); + config->http.early_data.strip_incoming = !util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_QUIC_BPF_PROGRAM_FILE: @@ -4046,7 +4040,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_NO_QUIC_BPF: #ifdef ENABLE_HTTP3 - config->quic.bpf.disabled = util::strieq_l("yes", optarg); + config->quic.bpf.disabled = util::strieq("yes"_sr, optarg); #endif // ENABLE_HTTP3 return 0; @@ -4079,7 +4073,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, #endif // !ENABLE_HTTP3 case SHRPX_OPTID_FRONTEND_QUIC_DEBUG_LOG: #ifdef ENABLE_HTTP3 - config->quic.upstream.debug.log = util::strieq_l("yes", optarg); + config->quic.upstream.debug.log = util::strieq("yes"_sr, optarg); #endif // ENABLE_HTTP3 return 0; @@ -4128,7 +4122,7 @@ int parse_config(Config *config, int optid, const StringRef &opt, #endif // !ENABLE_HTTP3 case SHRPX_OPTID_FRONTEND_QUIC_EARLY_DATA: #ifdef ENABLE_HTTP3 - config->quic.upstream.early_data = util::strieq_l("yes", optarg); + config->quic.upstream.early_data = util::strieq("yes"_sr, optarg); #endif // ENABLE_HTTP3 return 0; @@ -4140,15 +4134,15 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; case SHRPX_OPTID_FRONTEND_QUIC_REQUIRE_TOKEN: #ifdef ENABLE_HTTP3 - config->quic.upstream.require_token = util::strieq_l("yes", optarg); + config->quic.upstream.require_token = util::strieq("yes"_sr, optarg); #endif // ENABLE_HTTP3 return 0; case SHRPX_OPTID_FRONTEND_QUIC_CONGESTION_CONTROLLER: #ifdef ENABLE_HTTP3 - if (util::strieq_l("cubic", optarg)) { + if (util::strieq("cubic"_sr, optarg)) { config->quic.upstream.congestion_controller = NGTCP2_CC_ALGO_CUBIC; - } else if (util::strieq_l("bbr", optarg)) { + } else if (util::strieq("bbr"_sr, optarg)) { config->quic.upstream.congestion_controller = NGTCP2_CC_ALGO_BBR; } else { LOG(ERROR) << opt << ": must be either cubic or bbr"; @@ -4205,10 +4199,10 @@ int parse_config(Config *config, int optid, const StringRef &opt, return 0; } case SHRPX_OPTID_REQUIRE_HTTP_SCHEME: - config->http.require_http_scheme = util::strieq_l("yes", optarg); + config->http.require_http_scheme = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_TLS_KTLS: - config->tls.ktls = util::strieq_l("yes", optarg); + config->tls.ktls = util::strieq("yes"_sr, optarg); return 0; case SHRPX_OPTID_NPN_LIST: LOG(WARN) << opt << ": deprecated. Use alpn-list instead."; @@ -4268,134 +4262,134 @@ int load_config(Config *config, const char *filename, StringRef str_syslog_facility(int facility) { switch (facility) { case (LOG_AUTH): - return StringRef::from_lit("auth"); + return "auth"_sr; #ifdef LOG_AUTHPRIV case (LOG_AUTHPRIV): - return StringRef::from_lit("authpriv"); + return "authpriv"_sr; #endif // LOG_AUTHPRIV case (LOG_CRON): - return StringRef::from_lit("cron"); + return "cron"_sr; case (LOG_DAEMON): - return StringRef::from_lit("daemon"); + return "daemon"_sr; #ifdef LOG_FTP case (LOG_FTP): - return StringRef::from_lit("ftp"); + return "ftp"_sr; #endif // LOG_FTP case (LOG_KERN): - return StringRef::from_lit("kern"); + return "kern"_sr; case (LOG_LOCAL0): - return StringRef::from_lit("local0"); + return "local0"_sr; case (LOG_LOCAL1): - return StringRef::from_lit("local1"); + return "local1"_sr; case (LOG_LOCAL2): - return StringRef::from_lit("local2"); + return "local2"_sr; case (LOG_LOCAL3): - return StringRef::from_lit("local3"); + return "local3"_sr; case (LOG_LOCAL4): - return StringRef::from_lit("local4"); + return "local4"_sr; case (LOG_LOCAL5): - return StringRef::from_lit("local5"); + return "local5"_sr; case (LOG_LOCAL6): - return StringRef::from_lit("local6"); + return "local6"_sr; case (LOG_LOCAL7): - return StringRef::from_lit("local7"); + return "local7"_sr; case (LOG_LPR): - return StringRef::from_lit("lpr"); + return "lpr"_sr; case (LOG_MAIL): - return StringRef::from_lit("mail"); + return "mail"_sr; case (LOG_SYSLOG): - return StringRef::from_lit("syslog"); + return "syslog"_sr; case (LOG_USER): - return StringRef::from_lit("user"); + return "user"_sr; case (LOG_UUCP): - return StringRef::from_lit("uucp"); + return "uucp"_sr; default: - return StringRef::from_lit("(unknown)"); + return "(unknown)"_sr; } } int int_syslog_facility(const StringRef &strfacility) { - if (util::strieq_l("auth", strfacility)) { + if (util::strieq("auth"_sr, strfacility)) { return LOG_AUTH; } #ifdef LOG_AUTHPRIV - if (util::strieq_l("authpriv", strfacility)) { + if (util::strieq("authpriv"_sr, strfacility)) { return LOG_AUTHPRIV; } #endif // LOG_AUTHPRIV - if (util::strieq_l("cron", strfacility)) { + if (util::strieq("cron"_sr, strfacility)) { return LOG_CRON; } - if (util::strieq_l("daemon", strfacility)) { + if (util::strieq("daemon"_sr, strfacility)) { return LOG_DAEMON; } #ifdef LOG_FTP - if (util::strieq_l("ftp", strfacility)) { + if (util::strieq("ftp"_sr, strfacility)) { return LOG_FTP; } #endif // LOG_FTP - if (util::strieq_l("kern", strfacility)) { + if (util::strieq("kern"_sr, strfacility)) { return LOG_KERN; } - if (util::strieq_l("local0", strfacility)) { + if (util::strieq("local0"_sr, strfacility)) { return LOG_LOCAL0; } - if (util::strieq_l("local1", strfacility)) { + if (util::strieq("local1"_sr, strfacility)) { return LOG_LOCAL1; } - if (util::strieq_l("local2", strfacility)) { + if (util::strieq("local2"_sr, strfacility)) { return LOG_LOCAL2; } - if (util::strieq_l("local3", strfacility)) { + if (util::strieq("local3"_sr, strfacility)) { return LOG_LOCAL3; } - if (util::strieq_l("local4", strfacility)) { + if (util::strieq("local4"_sr, strfacility)) { return LOG_LOCAL4; } - if (util::strieq_l("local5", strfacility)) { + if (util::strieq("local5"_sr, strfacility)) { return LOG_LOCAL5; } - if (util::strieq_l("local6", strfacility)) { + if (util::strieq("local6"_sr, strfacility)) { return LOG_LOCAL6; } - if (util::strieq_l("local7", strfacility)) { + if (util::strieq("local7"_sr, strfacility)) { return LOG_LOCAL7; } - if (util::strieq_l("lpr", strfacility)) { + if (util::strieq("lpr"_sr, strfacility)) { return LOG_LPR; } - if (util::strieq_l("mail", strfacility)) { + if (util::strieq("mail"_sr, strfacility)) { return LOG_MAIL; } - if (util::strieq_l("news", strfacility)) { + if (util::strieq("news"_sr, strfacility)) { return LOG_NEWS; } - if (util::strieq_l("syslog", strfacility)) { + if (util::strieq("syslog"_sr, strfacility)) { return LOG_SYSLOG; } - if (util::strieq_l("user", strfacility)) { + if (util::strieq("user"_sr, strfacility)) { return LOG_USER; } - if (util::strieq_l("uucp", strfacility)) { + if (util::strieq("uucp"_sr, strfacility)) { return LOG_UUCP; } @@ -4405,15 +4399,15 @@ int int_syslog_facility(const StringRef &strfacility) { StringRef strproto(Proto proto) { switch (proto) { case Proto::NONE: - return StringRef::from_lit("none"); + return "none"_sr; case Proto::HTTP1: - return StringRef::from_lit("http/1.1"); + return "http/1.1"_sr; case Proto::HTTP2: - return StringRef::from_lit("h2"); + return "h2"_sr; case Proto::HTTP3: - return StringRef::from_lit("h3"); + return "h3"_sr; case Proto::MEMCACHED: - return StringRef::from_lit("memcached"); + return "memcached"_sr; } // gcc needs this. @@ -4436,7 +4430,7 @@ int compute_affinity_hash(std::vector &res, size_t idx, std::array buf; for (auto i = 0; i < 20; ++i) { - auto t = s.str(); + auto t = std::string{s}; t += i; rv = util::sha256(buf.data(), StringRef{t}); @@ -4473,13 +4467,13 @@ int configure_downstream_group(Config *config, bool http2_proxy, if (addr_groups.empty()) { DownstreamAddrConfig addr{}; - addr.host = StringRef::from_lit(DEFAULT_DOWNSTREAM_HOST); + addr.host = DEFAULT_DOWNSTREAM_HOST; addr.port = DEFAULT_DOWNSTREAM_PORT; addr.proto = Proto::HTTP1; addr.weight = 1; addr.group_weight = 1; - DownstreamAddrGroupConfig g(StringRef::from_lit("/")); + DownstreamAddrGroupConfig g("/"_sr); g.addrs.push_back(std::move(addr)); router.add_route(g.pattern, addr_groups.size()); addr_groups.push_back(std::move(g)); @@ -4503,14 +4497,14 @@ int configure_downstream_group(Config *config, bool http2_proxy, ssize_t catch_all_group = -1; for (size_t i = 0; i < addr_groups.size(); ++i) { auto &g = addr_groups[i]; - if (g.pattern == StringRef::from_lit("/")) { + if (g.pattern == "/"_sr) { catch_all_group = i; } if (LOG_ENABLED(INFO)) { LOG(INFO) << "Host-path pattern: group " << i << ": '" << g.pattern << "'"; for (auto &addr : g.addrs) { - LOG(INFO) << "group " << i << " -> " << addr.host.c_str() + LOG(INFO) << "group " << i << " -> " << addr.host.data() << (addr.host_unix ? "" : ":" + util::utos(addr.port)) << ", proto=" << strproto(addr.proto) << (addr.tls ? ", tls" : ""); @@ -4575,9 +4569,9 @@ int configure_downstream_group(Config *config, bool http2_proxy, // for AF_UNIX socket, we use "localhost" as host for backend // hostport. This is used as Host header field to backend and // not going to be passed to any syscalls. - addr.hostport = StringRef::from_lit("localhost"); + addr.hostport = "localhost"_sr; - auto path = addr.host.c_str(); + auto path = addr.host.data(); auto pathlen = addr.host.size(); if (pathlen + 1 > sizeof(addr.addr.su.un.sun_path)) { @@ -4606,7 +4600,7 @@ int configure_downstream_group(Config *config, bool http2_proxy, util::make_hostport(std::begin(hostport_buf), addr.host, addr.port); if (!addr.dns) { - if (resolve_hostname(&addr.addr, addr.host.c_str(), addr.port, + if (resolve_hostname(&addr.addr, addr.host.data(), addr.port, downstreamconf.family, resolve_flags) == -1) { LOG(FATAL) << "Resolving backend address failed: " << hostport; return -1; diff --git a/yass/third_party/nghttp2/src/shrpx_config.h b/yass/third_party/nghttp2/src/shrpx_config.h index f264b6a6c7..b0225d1b81 100644 --- a/yass/third_party/nghttp2/src/shrpx_config.h +++ b/yass/third_party/nghttp2/src/shrpx_config.h @@ -51,6 +51,7 @@ #include +#include "shrpx_log.h" #include "shrpx_router.h" #if ENABLE_HTTP3 # include "shrpx_quic.h" @@ -74,348 +75,289 @@ class CertLookupTree; } // namespace tls -constexpr auto SHRPX_OPT_PRIVATE_KEY_FILE = - StringRef::from_lit("private-key-file"); -constexpr auto SHRPX_OPT_PRIVATE_KEY_PASSWD_FILE = - StringRef::from_lit("private-key-passwd-file"); -constexpr auto SHRPX_OPT_CERTIFICATE_FILE = - StringRef::from_lit("certificate-file"); -constexpr auto SHRPX_OPT_DH_PARAM_FILE = StringRef::from_lit("dh-param-file"); -constexpr auto SHRPX_OPT_SUBCERT = StringRef::from_lit("subcert"); -constexpr auto SHRPX_OPT_BACKEND = StringRef::from_lit("backend"); -constexpr auto SHRPX_OPT_FRONTEND = StringRef::from_lit("frontend"); -constexpr auto SHRPX_OPT_WORKERS = StringRef::from_lit("workers"); +constexpr auto SHRPX_OPT_PRIVATE_KEY_FILE = "private-key-file"_sr; +constexpr auto SHRPX_OPT_PRIVATE_KEY_PASSWD_FILE = "private-key-passwd-file"_sr; +constexpr auto SHRPX_OPT_CERTIFICATE_FILE = "certificate-file"_sr; +constexpr auto SHRPX_OPT_DH_PARAM_FILE = "dh-param-file"_sr; +constexpr auto SHRPX_OPT_SUBCERT = "subcert"_sr; +constexpr auto SHRPX_OPT_BACKEND = "backend"_sr; +constexpr auto SHRPX_OPT_FRONTEND = "frontend"_sr; +constexpr auto SHRPX_OPT_WORKERS = "workers"_sr; constexpr auto SHRPX_OPT_HTTP2_MAX_CONCURRENT_STREAMS = - StringRef::from_lit("http2-max-concurrent-streams"); -constexpr auto SHRPX_OPT_LOG_LEVEL = StringRef::from_lit("log-level"); -constexpr auto SHRPX_OPT_DAEMON = StringRef::from_lit("daemon"); -constexpr auto SHRPX_OPT_HTTP2_PROXY = StringRef::from_lit("http2-proxy"); -constexpr auto SHRPX_OPT_HTTP2_BRIDGE = StringRef::from_lit("http2-bridge"); -constexpr auto SHRPX_OPT_CLIENT_PROXY = StringRef::from_lit("client-proxy"); -constexpr auto SHRPX_OPT_ADD_X_FORWARDED_FOR = - StringRef::from_lit("add-x-forwarded-for"); + "http2-max-concurrent-streams"_sr; +constexpr auto SHRPX_OPT_LOG_LEVEL = "log-level"_sr; +constexpr auto SHRPX_OPT_DAEMON = "daemon"_sr; +constexpr auto SHRPX_OPT_HTTP2_PROXY = "http2-proxy"_sr; +constexpr auto SHRPX_OPT_HTTP2_BRIDGE = "http2-bridge"_sr; +constexpr auto SHRPX_OPT_CLIENT_PROXY = "client-proxy"_sr; +constexpr auto SHRPX_OPT_ADD_X_FORWARDED_FOR = "add-x-forwarded-for"_sr; constexpr auto SHRPX_OPT_STRIP_INCOMING_X_FORWARDED_FOR = - StringRef::from_lit("strip-incoming-x-forwarded-for"); -constexpr auto SHRPX_OPT_NO_VIA = StringRef::from_lit("no-via"); + "strip-incoming-x-forwarded-for"_sr; +constexpr auto SHRPX_OPT_NO_VIA = "no-via"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_READ_TIMEOUT = - StringRef::from_lit("frontend-http2-read-timeout"); -constexpr auto SHRPX_OPT_FRONTEND_READ_TIMEOUT = - StringRef::from_lit("frontend-read-timeout"); -constexpr auto SHRPX_OPT_FRONTEND_WRITE_TIMEOUT = - StringRef::from_lit("frontend-write-timeout"); -constexpr auto SHRPX_OPT_BACKEND_READ_TIMEOUT = - StringRef::from_lit("backend-read-timeout"); -constexpr auto SHRPX_OPT_BACKEND_WRITE_TIMEOUT = - StringRef::from_lit("backend-write-timeout"); -constexpr auto SHRPX_OPT_STREAM_READ_TIMEOUT = - StringRef::from_lit("stream-read-timeout"); -constexpr auto SHRPX_OPT_STREAM_WRITE_TIMEOUT = - StringRef::from_lit("stream-write-timeout"); -constexpr auto SHRPX_OPT_ACCESSLOG_FILE = StringRef::from_lit("accesslog-file"); -constexpr auto SHRPX_OPT_ACCESSLOG_SYSLOG = - StringRef::from_lit("accesslog-syslog"); -constexpr auto SHRPX_OPT_ACCESSLOG_FORMAT = - StringRef::from_lit("accesslog-format"); -constexpr auto SHRPX_OPT_ERRORLOG_FILE = StringRef::from_lit("errorlog-file"); -constexpr auto SHRPX_OPT_ERRORLOG_SYSLOG = - StringRef::from_lit("errorlog-syslog"); + "frontend-http2-read-timeout"_sr; +constexpr auto SHRPX_OPT_FRONTEND_READ_TIMEOUT = "frontend-read-timeout"_sr; +constexpr auto SHRPX_OPT_FRONTEND_WRITE_TIMEOUT = "frontend-write-timeout"_sr; +constexpr auto SHRPX_OPT_BACKEND_READ_TIMEOUT = "backend-read-timeout"_sr; +constexpr auto SHRPX_OPT_BACKEND_WRITE_TIMEOUT = "backend-write-timeout"_sr; +constexpr auto SHRPX_OPT_STREAM_READ_TIMEOUT = "stream-read-timeout"_sr; +constexpr auto SHRPX_OPT_STREAM_WRITE_TIMEOUT = "stream-write-timeout"_sr; +constexpr auto SHRPX_OPT_ACCESSLOG_FILE = "accesslog-file"_sr; +constexpr auto SHRPX_OPT_ACCESSLOG_SYSLOG = "accesslog-syslog"_sr; +constexpr auto SHRPX_OPT_ACCESSLOG_FORMAT = "accesslog-format"_sr; +constexpr auto SHRPX_OPT_ERRORLOG_FILE = "errorlog-file"_sr; +constexpr auto SHRPX_OPT_ERRORLOG_SYSLOG = "errorlog-syslog"_sr; constexpr auto SHRPX_OPT_BACKEND_KEEP_ALIVE_TIMEOUT = - StringRef::from_lit("backend-keep-alive-timeout"); + "backend-keep-alive-timeout"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_WINDOW_BITS = - StringRef::from_lit("frontend-http2-window-bits"); + "frontend-http2-window-bits"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_WINDOW_BITS = - StringRef::from_lit("backend-http2-window-bits"); + "backend-http2-window-bits"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_CONNECTION_WINDOW_BITS = - StringRef::from_lit("frontend-http2-connection-window-bits"); + "frontend-http2-connection-window-bits"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_CONNECTION_WINDOW_BITS = - StringRef::from_lit("backend-http2-connection-window-bits"); -constexpr auto SHRPX_OPT_FRONTEND_NO_TLS = - StringRef::from_lit("frontend-no-tls"); -constexpr auto SHRPX_OPT_BACKEND_NO_TLS = StringRef::from_lit("backend-no-tls"); -constexpr auto SHRPX_OPT_BACKEND_TLS_SNI_FIELD = - StringRef::from_lit("backend-tls-sni-field"); -constexpr auto SHRPX_OPT_PID_FILE = StringRef::from_lit("pid-file"); -constexpr auto SHRPX_OPT_USER = StringRef::from_lit("user"); -constexpr auto SHRPX_OPT_SYSLOG_FACILITY = - StringRef::from_lit("syslog-facility"); -constexpr auto SHRPX_OPT_BACKLOG = StringRef::from_lit("backlog"); -constexpr auto SHRPX_OPT_CIPHERS = StringRef::from_lit("ciphers"); -constexpr auto SHRPX_OPT_CLIENT = StringRef::from_lit("client"); -constexpr auto SHRPX_OPT_INSECURE = StringRef::from_lit("insecure"); -constexpr auto SHRPX_OPT_CACERT = StringRef::from_lit("cacert"); -constexpr auto SHRPX_OPT_BACKEND_IPV4 = StringRef::from_lit("backend-ipv4"); -constexpr auto SHRPX_OPT_BACKEND_IPV6 = StringRef::from_lit("backend-ipv6"); -constexpr auto SHRPX_OPT_BACKEND_HTTP_PROXY_URI = - StringRef::from_lit("backend-http-proxy-uri"); -constexpr auto SHRPX_OPT_READ_RATE = StringRef::from_lit("read-rate"); -constexpr auto SHRPX_OPT_READ_BURST = StringRef::from_lit("read-burst"); -constexpr auto SHRPX_OPT_WRITE_RATE = StringRef::from_lit("write-rate"); -constexpr auto SHRPX_OPT_WRITE_BURST = StringRef::from_lit("write-burst"); -constexpr auto SHRPX_OPT_WORKER_READ_RATE = - StringRef::from_lit("worker-read-rate"); -constexpr auto SHRPX_OPT_WORKER_READ_BURST = - StringRef::from_lit("worker-read-burst"); -constexpr auto SHRPX_OPT_WORKER_WRITE_RATE = - StringRef::from_lit("worker-write-rate"); -constexpr auto SHRPX_OPT_WORKER_WRITE_BURST = - StringRef::from_lit("worker-write-burst"); -constexpr auto SHRPX_OPT_NPN_LIST = StringRef::from_lit("npn-list"); -constexpr auto SHRPX_OPT_TLS_PROTO_LIST = StringRef::from_lit("tls-proto-list"); -constexpr auto SHRPX_OPT_VERIFY_CLIENT = StringRef::from_lit("verify-client"); -constexpr auto SHRPX_OPT_VERIFY_CLIENT_CACERT = - StringRef::from_lit("verify-client-cacert"); -constexpr auto SHRPX_OPT_CLIENT_PRIVATE_KEY_FILE = - StringRef::from_lit("client-private-key-file"); -constexpr auto SHRPX_OPT_CLIENT_CERT_FILE = - StringRef::from_lit("client-cert-file"); + "backend-http2-connection-window-bits"_sr; +constexpr auto SHRPX_OPT_FRONTEND_NO_TLS = "frontend-no-tls"_sr; +constexpr auto SHRPX_OPT_BACKEND_NO_TLS = "backend-no-tls"_sr; +constexpr auto SHRPX_OPT_BACKEND_TLS_SNI_FIELD = "backend-tls-sni-field"_sr; +constexpr auto SHRPX_OPT_PID_FILE = "pid-file"_sr; +constexpr auto SHRPX_OPT_USER = "user"_sr; +constexpr auto SHRPX_OPT_SYSLOG_FACILITY = "syslog-facility"_sr; +constexpr auto SHRPX_OPT_BACKLOG = "backlog"_sr; +constexpr auto SHRPX_OPT_CIPHERS = "ciphers"_sr; +constexpr auto SHRPX_OPT_CLIENT = "client"_sr; +constexpr auto SHRPX_OPT_INSECURE = "insecure"_sr; +constexpr auto SHRPX_OPT_CACERT = "cacert"_sr; +constexpr auto SHRPX_OPT_BACKEND_IPV4 = "backend-ipv4"_sr; +constexpr auto SHRPX_OPT_BACKEND_IPV6 = "backend-ipv6"_sr; +constexpr auto SHRPX_OPT_BACKEND_HTTP_PROXY_URI = "backend-http-proxy-uri"_sr; +constexpr auto SHRPX_OPT_READ_RATE = "read-rate"_sr; +constexpr auto SHRPX_OPT_READ_BURST = "read-burst"_sr; +constexpr auto SHRPX_OPT_WRITE_RATE = "write-rate"_sr; +constexpr auto SHRPX_OPT_WRITE_BURST = "write-burst"_sr; +constexpr auto SHRPX_OPT_WORKER_READ_RATE = "worker-read-rate"_sr; +constexpr auto SHRPX_OPT_WORKER_READ_BURST = "worker-read-burst"_sr; +constexpr auto SHRPX_OPT_WORKER_WRITE_RATE = "worker-write-rate"_sr; +constexpr auto SHRPX_OPT_WORKER_WRITE_BURST = "worker-write-burst"_sr; +constexpr auto SHRPX_OPT_NPN_LIST = "npn-list"_sr; +constexpr auto SHRPX_OPT_TLS_PROTO_LIST = "tls-proto-list"_sr; +constexpr auto SHRPX_OPT_VERIFY_CLIENT = "verify-client"_sr; +constexpr auto SHRPX_OPT_VERIFY_CLIENT_CACERT = "verify-client-cacert"_sr; +constexpr auto SHRPX_OPT_CLIENT_PRIVATE_KEY_FILE = "client-private-key-file"_sr; +constexpr auto SHRPX_OPT_CLIENT_CERT_FILE = "client-cert-file"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_DUMP_REQUEST_HEADER = - StringRef::from_lit("frontend-http2-dump-request-header"); + "frontend-http2-dump-request-header"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_DUMP_RESPONSE_HEADER = - StringRef::from_lit("frontend-http2-dump-response-header"); + "frontend-http2-dump-response-header"_sr; constexpr auto SHRPX_OPT_HTTP2_NO_COOKIE_CRUMBLING = - StringRef::from_lit("http2-no-cookie-crumbling"); -constexpr auto SHRPX_OPT_FRONTEND_FRAME_DEBUG = - StringRef::from_lit("frontend-frame-debug"); -constexpr auto SHRPX_OPT_PADDING = StringRef::from_lit("padding"); -constexpr auto SHRPX_OPT_ALTSVC = StringRef::from_lit("altsvc"); -constexpr auto SHRPX_OPT_ADD_REQUEST_HEADER = - StringRef::from_lit("add-request-header"); -constexpr auto SHRPX_OPT_ADD_RESPONSE_HEADER = - StringRef::from_lit("add-response-header"); + "http2-no-cookie-crumbling"_sr; +constexpr auto SHRPX_OPT_FRONTEND_FRAME_DEBUG = "frontend-frame-debug"_sr; +constexpr auto SHRPX_OPT_PADDING = "padding"_sr; +constexpr auto SHRPX_OPT_ALTSVC = "altsvc"_sr; +constexpr auto SHRPX_OPT_ADD_REQUEST_HEADER = "add-request-header"_sr; +constexpr auto SHRPX_OPT_ADD_RESPONSE_HEADER = "add-response-header"_sr; constexpr auto SHRPX_OPT_WORKER_FRONTEND_CONNECTIONS = - StringRef::from_lit("worker-frontend-connections"); -constexpr auto SHRPX_OPT_NO_LOCATION_REWRITE = - StringRef::from_lit("no-location-rewrite"); -constexpr auto SHRPX_OPT_NO_HOST_REWRITE = - StringRef::from_lit("no-host-rewrite"); + "worker-frontend-connections"_sr; +constexpr auto SHRPX_OPT_NO_LOCATION_REWRITE = "no-location-rewrite"_sr; +constexpr auto SHRPX_OPT_NO_HOST_REWRITE = "no-host-rewrite"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP1_CONNECTIONS_PER_HOST = - StringRef::from_lit("backend-http1-connections-per-host"); + "backend-http1-connections-per-host"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP1_CONNECTIONS_PER_FRONTEND = - StringRef::from_lit("backend-http1-connections-per-frontend"); + "backend-http1-connections-per-frontend"_sr; constexpr auto SHRPX_OPT_LISTENER_DISABLE_TIMEOUT = - StringRef::from_lit("listener-disable-timeout"); -constexpr auto SHRPX_OPT_TLS_TICKET_KEY_FILE = - StringRef::from_lit("tls-ticket-key-file"); -constexpr auto SHRPX_OPT_RLIMIT_NOFILE = StringRef::from_lit("rlimit-nofile"); -constexpr auto SHRPX_OPT_BACKEND_REQUEST_BUFFER = - StringRef::from_lit("backend-request-buffer"); -constexpr auto SHRPX_OPT_BACKEND_RESPONSE_BUFFER = - StringRef::from_lit("backend-response-buffer"); -constexpr auto SHRPX_OPT_NO_SERVER_PUSH = StringRef::from_lit("no-server-push"); + "listener-disable-timeout"_sr; +constexpr auto SHRPX_OPT_TLS_TICKET_KEY_FILE = "tls-ticket-key-file"_sr; +constexpr auto SHRPX_OPT_RLIMIT_NOFILE = "rlimit-nofile"_sr; +constexpr auto SHRPX_OPT_BACKEND_REQUEST_BUFFER = "backend-request-buffer"_sr; +constexpr auto SHRPX_OPT_BACKEND_RESPONSE_BUFFER = "backend-response-buffer"_sr; +constexpr auto SHRPX_OPT_NO_SERVER_PUSH = "no-server-push"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_CONNECTIONS_PER_WORKER = - StringRef::from_lit("backend-http2-connections-per-worker"); + "backend-http2-connections-per-worker"_sr; constexpr auto SHRPX_OPT_FETCH_OCSP_RESPONSE_FILE = - StringRef::from_lit("fetch-ocsp-response-file"); -constexpr auto SHRPX_OPT_OCSP_UPDATE_INTERVAL = - StringRef::from_lit("ocsp-update-interval"); -constexpr auto SHRPX_OPT_NO_OCSP = StringRef::from_lit("no-ocsp"); -constexpr auto SHRPX_OPT_HEADER_FIELD_BUFFER = - StringRef::from_lit("header-field-buffer"); -constexpr auto SHRPX_OPT_MAX_HEADER_FIELDS = - StringRef::from_lit("max-header-fields"); -constexpr auto SHRPX_OPT_INCLUDE = StringRef::from_lit("include"); -constexpr auto SHRPX_OPT_TLS_TICKET_KEY_CIPHER = - StringRef::from_lit("tls-ticket-key-cipher"); -constexpr auto SHRPX_OPT_HOST_REWRITE = StringRef::from_lit("host-rewrite"); + "fetch-ocsp-response-file"_sr; +constexpr auto SHRPX_OPT_OCSP_UPDATE_INTERVAL = "ocsp-update-interval"_sr; +constexpr auto SHRPX_OPT_NO_OCSP = "no-ocsp"_sr; +constexpr auto SHRPX_OPT_HEADER_FIELD_BUFFER = "header-field-buffer"_sr; +constexpr auto SHRPX_OPT_MAX_HEADER_FIELDS = "max-header-fields"_sr; +constexpr auto SHRPX_OPT_INCLUDE = "include"_sr; +constexpr auto SHRPX_OPT_TLS_TICKET_KEY_CIPHER = "tls-ticket-key-cipher"_sr; +constexpr auto SHRPX_OPT_HOST_REWRITE = "host-rewrite"_sr; constexpr auto SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED = - StringRef::from_lit("tls-session-cache-memcached"); + "tls-session-cache-memcached"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED = - StringRef::from_lit("tls-ticket-key-memcached"); + "tls-ticket-key-memcached"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_INTERVAL = - StringRef::from_lit("tls-ticket-key-memcached-interval"); + "tls-ticket-key-memcached-interval"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_MAX_RETRY = - StringRef::from_lit("tls-ticket-key-memcached-max-retry"); + "tls-ticket-key-memcached-max-retry"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_MAX_FAIL = - StringRef::from_lit("tls-ticket-key-memcached-max-fail"); -constexpr auto SHRPX_OPT_MRUBY_FILE = StringRef::from_lit("mruby-file"); -constexpr auto SHRPX_OPT_ACCEPT_PROXY_PROTOCOL = - StringRef::from_lit("accept-proxy-protocol"); -constexpr auto SHRPX_OPT_FASTOPEN = StringRef::from_lit("fastopen"); + "tls-ticket-key-memcached-max-fail"_sr; +constexpr auto SHRPX_OPT_MRUBY_FILE = "mruby-file"_sr; +constexpr auto SHRPX_OPT_ACCEPT_PROXY_PROTOCOL = "accept-proxy-protocol"_sr; +constexpr auto SHRPX_OPT_FASTOPEN = "fastopen"_sr; constexpr auto SHRPX_OPT_TLS_DYN_REC_WARMUP_THRESHOLD = - StringRef::from_lit("tls-dyn-rec-warmup-threshold"); + "tls-dyn-rec-warmup-threshold"_sr; constexpr auto SHRPX_OPT_TLS_DYN_REC_IDLE_TIMEOUT = - StringRef::from_lit("tls-dyn-rec-idle-timeout"); -constexpr auto SHRPX_OPT_ADD_FORWARDED = StringRef::from_lit("add-forwarded"); + "tls-dyn-rec-idle-timeout"_sr; +constexpr auto SHRPX_OPT_ADD_FORWARDED = "add-forwarded"_sr; constexpr auto SHRPX_OPT_STRIP_INCOMING_FORWARDED = - StringRef::from_lit("strip-incoming-forwarded"); -constexpr auto SHRPX_OPT_FORWARDED_BY = StringRef::from_lit("forwarded-by"); -constexpr auto SHRPX_OPT_FORWARDED_FOR = StringRef::from_lit("forwarded-for"); + "strip-incoming-forwarded"_sr; +constexpr auto SHRPX_OPT_FORWARDED_BY = "forwarded-by"_sr; +constexpr auto SHRPX_OPT_FORWARDED_FOR = "forwarded-for"_sr; constexpr auto SHRPX_OPT_REQUEST_HEADER_FIELD_BUFFER = - StringRef::from_lit("request-header-field-buffer"); + "request-header-field-buffer"_sr; constexpr auto SHRPX_OPT_MAX_REQUEST_HEADER_FIELDS = - StringRef::from_lit("max-request-header-fields"); + "max-request-header-fields"_sr; constexpr auto SHRPX_OPT_RESPONSE_HEADER_FIELD_BUFFER = - StringRef::from_lit("response-header-field-buffer"); + "response-header-field-buffer"_sr; constexpr auto SHRPX_OPT_MAX_RESPONSE_HEADER_FIELDS = - StringRef::from_lit("max-response-header-fields"); + "max-response-header-fields"_sr; constexpr auto SHRPX_OPT_NO_HTTP2_CIPHER_BLOCK_LIST = - StringRef::from_lit("no-http2-cipher-block-list"); + "no-http2-cipher-block-list"_sr; constexpr auto SHRPX_OPT_NO_HTTP2_CIPHER_BLACK_LIST = - StringRef::from_lit("no-http2-cipher-black-list"); -constexpr auto SHRPX_OPT_BACKEND_HTTP1_TLS = - StringRef::from_lit("backend-http1-tls"); + "no-http2-cipher-black-list"_sr; +constexpr auto SHRPX_OPT_BACKEND_HTTP1_TLS = "backend-http1-tls"_sr; constexpr auto SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_TLS = - StringRef::from_lit("tls-session-cache-memcached-tls"); + "tls-session-cache-memcached-tls"_sr; constexpr auto SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_CERT_FILE = - StringRef::from_lit("tls-session-cache-memcached-cert-file"); + "tls-session-cache-memcached-cert-file"_sr; constexpr auto SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_PRIVATE_KEY_FILE = - StringRef::from_lit("tls-session-cache-memcached-private-key-file"); + "tls-session-cache-memcached-private-key-file"_sr; constexpr auto SHRPX_OPT_TLS_SESSION_CACHE_MEMCACHED_ADDRESS_FAMILY = - StringRef::from_lit("tls-session-cache-memcached-address-family"); + "tls-session-cache-memcached-address-family"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_TLS = - StringRef::from_lit("tls-ticket-key-memcached-tls"); + "tls-ticket-key-memcached-tls"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_CERT_FILE = - StringRef::from_lit("tls-ticket-key-memcached-cert-file"); + "tls-ticket-key-memcached-cert-file"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_PRIVATE_KEY_FILE = - StringRef::from_lit("tls-ticket-key-memcached-private-key-file"); + "tls-ticket-key-memcached-private-key-file"_sr; constexpr auto SHRPX_OPT_TLS_TICKET_KEY_MEMCACHED_ADDRESS_FAMILY = - StringRef::from_lit("tls-ticket-key-memcached-address-family"); -constexpr auto SHRPX_OPT_BACKEND_ADDRESS_FAMILY = - StringRef::from_lit("backend-address-family"); + "tls-ticket-key-memcached-address-family"_sr; +constexpr auto SHRPX_OPT_BACKEND_ADDRESS_FAMILY = "backend-address-family"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_MAX_CONCURRENT_STREAMS = - StringRef::from_lit("frontend-http2-max-concurrent-streams"); + "frontend-http2-max-concurrent-streams"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_MAX_CONCURRENT_STREAMS = - StringRef::from_lit("backend-http2-max-concurrent-streams"); + "backend-http2-max-concurrent-streams"_sr; constexpr auto SHRPX_OPT_BACKEND_CONNECTIONS_PER_FRONTEND = - StringRef::from_lit("backend-connections-per-frontend"); -constexpr auto SHRPX_OPT_BACKEND_TLS = StringRef::from_lit("backend-tls"); + "backend-connections-per-frontend"_sr; +constexpr auto SHRPX_OPT_BACKEND_TLS = "backend-tls"_sr; constexpr auto SHRPX_OPT_BACKEND_CONNECTIONS_PER_HOST = - StringRef::from_lit("backend-connections-per-host"); -constexpr auto SHRPX_OPT_ERROR_PAGE = StringRef::from_lit("error-page"); -constexpr auto SHRPX_OPT_NO_KQUEUE = StringRef::from_lit("no-kqueue"); + "backend-connections-per-host"_sr; +constexpr auto SHRPX_OPT_ERROR_PAGE = "error-page"_sr; +constexpr auto SHRPX_OPT_NO_KQUEUE = "no-kqueue"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_SETTINGS_TIMEOUT = - StringRef::from_lit("frontend-http2-settings-timeout"); + "frontend-http2-settings-timeout"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_SETTINGS_TIMEOUT = - StringRef::from_lit("backend-http2-settings-timeout"); -constexpr auto SHRPX_OPT_API_MAX_REQUEST_BODY = - StringRef::from_lit("api-max-request-body"); -constexpr auto SHRPX_OPT_BACKEND_MAX_BACKOFF = - StringRef::from_lit("backend-max-backoff"); -constexpr auto SHRPX_OPT_SERVER_NAME = StringRef::from_lit("server-name"); -constexpr auto SHRPX_OPT_NO_SERVER_REWRITE = - StringRef::from_lit("no-server-rewrite"); + "backend-http2-settings-timeout"_sr; +constexpr auto SHRPX_OPT_API_MAX_REQUEST_BODY = "api-max-request-body"_sr; +constexpr auto SHRPX_OPT_BACKEND_MAX_BACKOFF = "backend-max-backoff"_sr; +constexpr auto SHRPX_OPT_SERVER_NAME = "server-name"_sr; +constexpr auto SHRPX_OPT_NO_SERVER_REWRITE = "no-server-rewrite"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WRITE_BUFFER_SIZE = - StringRef::from_lit("frontend-http2-optimize-write-buffer-size"); + "frontend-http2-optimize-write-buffer-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_OPTIMIZE_WINDOW_SIZE = - StringRef::from_lit("frontend-http2-optimize-window-size"); + "frontend-http2-optimize-window-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_WINDOW_SIZE = - StringRef::from_lit("frontend-http2-window-size"); + "frontend-http2-window-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_CONNECTION_WINDOW_SIZE = - StringRef::from_lit("frontend-http2-connection-window-size"); + "frontend-http2-connection-window-size"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_WINDOW_SIZE = - StringRef::from_lit("backend-http2-window-size"); + "backend-http2-window-size"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_CONNECTION_WINDOW_SIZE = - StringRef::from_lit("backend-http2-connection-window-size"); + "backend-http2-connection-window-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE = - StringRef::from_lit("frontend-http2-encoder-dynamic-table-size"); + "frontend-http2-encoder-dynamic-table-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE = - StringRef::from_lit("frontend-http2-decoder-dynamic-table-size"); + "frontend-http2-decoder-dynamic-table-size"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_ENCODER_DYNAMIC_TABLE_SIZE = - StringRef::from_lit("backend-http2-encoder-dynamic-table-size"); + "backend-http2-encoder-dynamic-table-size"_sr; constexpr auto SHRPX_OPT_BACKEND_HTTP2_DECODER_DYNAMIC_TABLE_SIZE = - StringRef::from_lit("backend-http2-decoder-dynamic-table-size"); -constexpr auto SHRPX_OPT_ECDH_CURVES = StringRef::from_lit("ecdh-curves"); -constexpr auto SHRPX_OPT_TLS_SCT_DIR = StringRef::from_lit("tls-sct-dir"); -constexpr auto SHRPX_OPT_BACKEND_CONNECT_TIMEOUT = - StringRef::from_lit("backend-connect-timeout"); -constexpr auto SHRPX_OPT_DNS_CACHE_TIMEOUT = - StringRef::from_lit("dns-cache-timeout"); -constexpr auto SHRPX_OPT_DNS_LOOKUP_TIMEOUT = - StringRef::from_lit("dns-lookup-timeout"); -constexpr auto SHRPX_OPT_DNS_MAX_TRY = StringRef::from_lit("dns-max-try"); + "backend-http2-decoder-dynamic-table-size"_sr; +constexpr auto SHRPX_OPT_ECDH_CURVES = "ecdh-curves"_sr; +constexpr auto SHRPX_OPT_TLS_SCT_DIR = "tls-sct-dir"_sr; +constexpr auto SHRPX_OPT_BACKEND_CONNECT_TIMEOUT = "backend-connect-timeout"_sr; +constexpr auto SHRPX_OPT_DNS_CACHE_TIMEOUT = "dns-cache-timeout"_sr; +constexpr auto SHRPX_OPT_DNS_LOOKUP_TIMEOUT = "dns-lookup-timeout"_sr; +constexpr auto SHRPX_OPT_DNS_MAX_TRY = "dns-max-try"_sr; constexpr auto SHRPX_OPT_FRONTEND_KEEP_ALIVE_TIMEOUT = - StringRef::from_lit("frontend-keep-alive-timeout"); -constexpr auto SHRPX_OPT_PSK_SECRETS = StringRef::from_lit("psk-secrets"); -constexpr auto SHRPX_OPT_CLIENT_PSK_SECRETS = - StringRef::from_lit("client-psk-secrets"); + "frontend-keep-alive-timeout"_sr; +constexpr auto SHRPX_OPT_PSK_SECRETS = "psk-secrets"_sr; +constexpr auto SHRPX_OPT_CLIENT_PSK_SECRETS = "client-psk-secrets"_sr; constexpr auto SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLOCK_LIST = - StringRef::from_lit("client-no-http2-cipher-block-list"); + "client-no-http2-cipher-block-list"_sr; constexpr auto SHRPX_OPT_CLIENT_NO_HTTP2_CIPHER_BLACK_LIST = - StringRef::from_lit("client-no-http2-cipher-black-list"); -constexpr auto SHRPX_OPT_CLIENT_CIPHERS = StringRef::from_lit("client-ciphers"); -constexpr auto SHRPX_OPT_ACCESSLOG_WRITE_EARLY = - StringRef::from_lit("accesslog-write-early"); -constexpr auto SHRPX_OPT_TLS_MIN_PROTO_VERSION = - StringRef::from_lit("tls-min-proto-version"); -constexpr auto SHRPX_OPT_TLS_MAX_PROTO_VERSION = - StringRef::from_lit("tls-max-proto-version"); -constexpr auto SHRPX_OPT_REDIRECT_HTTPS_PORT = - StringRef::from_lit("redirect-https-port"); -constexpr auto SHRPX_OPT_FRONTEND_MAX_REQUESTS = - StringRef::from_lit("frontend-max-requests"); -constexpr auto SHRPX_OPT_SINGLE_THREAD = StringRef::from_lit("single-thread"); -constexpr auto SHRPX_OPT_SINGLE_PROCESS = StringRef::from_lit("single-process"); + "client-no-http2-cipher-black-list"_sr; +constexpr auto SHRPX_OPT_CLIENT_CIPHERS = "client-ciphers"_sr; +constexpr auto SHRPX_OPT_ACCESSLOG_WRITE_EARLY = "accesslog-write-early"_sr; +constexpr auto SHRPX_OPT_TLS_MIN_PROTO_VERSION = "tls-min-proto-version"_sr; +constexpr auto SHRPX_OPT_TLS_MAX_PROTO_VERSION = "tls-max-proto-version"_sr; +constexpr auto SHRPX_OPT_REDIRECT_HTTPS_PORT = "redirect-https-port"_sr; +constexpr auto SHRPX_OPT_FRONTEND_MAX_REQUESTS = "frontend-max-requests"_sr; +constexpr auto SHRPX_OPT_SINGLE_THREAD = "single-thread"_sr; +constexpr auto SHRPX_OPT_SINGLE_PROCESS = "single-process"_sr; constexpr auto SHRPX_OPT_NO_ADD_X_FORWARDED_PROTO = - StringRef::from_lit("no-add-x-forwarded-proto"); + "no-add-x-forwarded-proto"_sr; constexpr auto SHRPX_OPT_NO_STRIP_INCOMING_X_FORWARDED_PROTO = - StringRef::from_lit("no-strip-incoming-x-forwarded-proto"); -constexpr auto SHRPX_OPT_OCSP_STARTUP = StringRef::from_lit("ocsp-startup"); -constexpr auto SHRPX_OPT_NO_VERIFY_OCSP = StringRef::from_lit("no-verify-ocsp"); + "no-strip-incoming-x-forwarded-proto"_sr; +constexpr auto SHRPX_OPT_OCSP_STARTUP = "ocsp-startup"_sr; +constexpr auto SHRPX_OPT_NO_VERIFY_OCSP = "no-verify-ocsp"_sr; constexpr auto SHRPX_OPT_VERIFY_CLIENT_TOLERATE_EXPIRED = - StringRef::from_lit("verify-client-tolerate-expired"); + "verify-client-tolerate-expired"_sr; constexpr auto SHRPX_OPT_IGNORE_PER_PATTERN_MRUBY_ERROR = - StringRef::from_lit("ignore-per-pattern-mruby-error"); + "ignore-per-pattern-mruby-error"_sr; constexpr auto SHRPX_OPT_TLS_NO_POSTPONE_EARLY_DATA = - StringRef::from_lit("tls-no-postpone-early-data"); -constexpr auto SHRPX_OPT_TLS_MAX_EARLY_DATA = - StringRef::from_lit("tls-max-early-data"); -constexpr auto SHRPX_OPT_TLS13_CIPHERS = StringRef::from_lit("tls13-ciphers"); -constexpr auto SHRPX_OPT_TLS13_CLIENT_CIPHERS = - StringRef::from_lit("tls13-client-ciphers"); + "tls-no-postpone-early-data"_sr; +constexpr auto SHRPX_OPT_TLS_MAX_EARLY_DATA = "tls-max-early-data"_sr; +constexpr auto SHRPX_OPT_TLS13_CIPHERS = "tls13-ciphers"_sr; +constexpr auto SHRPX_OPT_TLS13_CLIENT_CIPHERS = "tls13-client-ciphers"_sr; constexpr auto SHRPX_OPT_NO_STRIP_INCOMING_EARLY_DATA = - StringRef::from_lit("no-strip-incoming-early-data"); -constexpr auto SHRPX_OPT_QUIC_BPF_PROGRAM_FILE = - StringRef::from_lit("quic-bpf-program-file"); -constexpr auto SHRPX_OPT_NO_QUIC_BPF = StringRef::from_lit("no-quic-bpf"); -constexpr auto SHRPX_OPT_HTTP2_ALTSVC = StringRef::from_lit("http2-altsvc"); + "no-strip-incoming-early-data"_sr; +constexpr auto SHRPX_OPT_QUIC_BPF_PROGRAM_FILE = "quic-bpf-program-file"_sr; +constexpr auto SHRPX_OPT_NO_QUIC_BPF = "no-quic-bpf"_sr; +constexpr auto SHRPX_OPT_HTTP2_ALTSVC = "http2-altsvc"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP3_READ_TIMEOUT = - StringRef::from_lit("frontend-http3-read-timeout"); + "frontend-http3-read-timeout"_sr; constexpr auto SHRPX_OPT_FRONTEND_QUIC_IDLE_TIMEOUT = - StringRef::from_lit("frontend-quic-idle-timeout"); -constexpr auto SHRPX_OPT_FRONTEND_QUIC_DEBUG_LOG = - StringRef::from_lit("frontend-quic-debug-log"); + "frontend-quic-idle-timeout"_sr; +constexpr auto SHRPX_OPT_FRONTEND_QUIC_DEBUG_LOG = "frontend-quic-debug-log"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP3_WINDOW_SIZE = - StringRef::from_lit("frontend-http3-window-size"); + "frontend-http3-window-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP3_CONNECTION_WINDOW_SIZE = - StringRef::from_lit("frontend-http3-connection-window-size"); + "frontend-http3-connection-window-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP3_MAX_WINDOW_SIZE = - StringRef::from_lit("frontend-http3-max-window-size"); + "frontend-http3-max-window-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP3_MAX_CONNECTION_WINDOW_SIZE = - StringRef::from_lit("frontend-http3-max-connection-window-size"); + "frontend-http3-max-connection-window-size"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP3_MAX_CONCURRENT_STREAMS = - StringRef::from_lit("frontend-http3-max-concurrent-streams"); + "frontend-http3-max-concurrent-streams"_sr; constexpr auto SHRPX_OPT_FRONTEND_QUIC_EARLY_DATA = - StringRef::from_lit("frontend-quic-early-data"); -constexpr auto SHRPX_OPT_FRONTEND_QUIC_QLOG_DIR = - StringRef::from_lit("frontend-quic-qlog-dir"); + "frontend-quic-early-data"_sr; +constexpr auto SHRPX_OPT_FRONTEND_QUIC_QLOG_DIR = "frontend-quic-qlog-dir"_sr; constexpr auto SHRPX_OPT_FRONTEND_QUIC_REQUIRE_TOKEN = - StringRef::from_lit("frontend-quic-require-token"); + "frontend-quic-require-token"_sr; constexpr auto SHRPX_OPT_FRONTEND_QUIC_CONGESTION_CONTROLLER = - StringRef::from_lit("frontend-quic-congestion-controller"); -constexpr auto SHRPX_OPT_QUIC_SERVER_ID = StringRef::from_lit("quic-server-id"); + "frontend-quic-congestion-controller"_sr; +constexpr auto SHRPX_OPT_QUIC_SERVER_ID = "quic-server-id"_sr; constexpr auto SHRPX_OPT_FRONTEND_QUIC_SECRET_FILE = - StringRef::from_lit("frontend-quic-secret-file"); -constexpr auto SHRPX_OPT_RLIMIT_MEMLOCK = StringRef::from_lit("rlimit-memlock"); -constexpr auto SHRPX_OPT_MAX_WORKER_PROCESSES = - StringRef::from_lit("max-worker-processes"); + "frontend-quic-secret-file"_sr; +constexpr auto SHRPX_OPT_RLIMIT_MEMLOCK = "rlimit-memlock"_sr; +constexpr auto SHRPX_OPT_MAX_WORKER_PROCESSES = "max-worker-processes"_sr; constexpr auto SHRPX_OPT_WORKER_PROCESS_GRACE_SHUTDOWN_PERIOD = - StringRef::from_lit("worker-process-grace-shutdown-period"); + "worker-process-grace-shutdown-period"_sr; constexpr auto SHRPX_OPT_FRONTEND_QUIC_INITIAL_RTT = - StringRef::from_lit("frontend-quic-initial-rtt"); -constexpr auto SHRPX_OPT_REQUIRE_HTTP_SCHEME = - StringRef::from_lit("require-http-scheme"); -constexpr auto SHRPX_OPT_TLS_KTLS = StringRef::from_lit("tls-ktls"); -constexpr auto SHRPX_OPT_ALPN_LIST = StringRef::from_lit("alpn-list"); -constexpr auto SHRPX_OPT_FRONTEND_HEADER_TIMEOUT = - StringRef::from_lit("frontend-header-timeout"); + "frontend-quic-initial-rtt"_sr; +constexpr auto SHRPX_OPT_REQUIRE_HTTP_SCHEME = "require-http-scheme"_sr; +constexpr auto SHRPX_OPT_TLS_KTLS = "tls-ktls"_sr; +constexpr auto SHRPX_OPT_ALPN_LIST = "alpn-list"_sr; +constexpr auto SHRPX_OPT_FRONTEND_HEADER_TIMEOUT = "frontend-header-timeout"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP2_IDLE_TIMEOUT = - StringRef::from_lit("frontend-http2-idle-timeout"); + "frontend-http2-idle-timeout"_sr; constexpr auto SHRPX_OPT_FRONTEND_HTTP3_IDLE_TIMEOUT = - StringRef::from_lit("frontend-http3-idle-timeout"); + "frontend-http3-idle-timeout"_sr; constexpr size_t SHRPX_OBFUSCATED_NODE_LENGTH = 8; -constexpr char DEFAULT_DOWNSTREAM_HOST[] = "127.0.0.1"; +constexpr auto DEFAULT_DOWNSTREAM_HOST = "127.0.0.1"_sr; constexpr int16_t DEFAULT_DOWNSTREAM_PORT = 80; enum class Proto { @@ -1393,8 +1335,8 @@ enum { SHRPX_OPTID_MAXIDX, }; -// Looks up token for given option name |name| of length |namelen|. -int option_lookup_token(const char *name, size_t namelen); +// Looks up token for given option name |name|. +int option_lookup_token(const StringRef &name); // Parses option name |opt| and value |optarg|. The results are // stored into the object pointed by |config|. This function returns 0 diff --git a/yass/third_party/nghttp2/src/shrpx_config_test.cc b/yass/third_party/nghttp2/src/shrpx_config_test.cc index 068f185df8..9e08f81df3 100644 --- a/yass/third_party/nghttp2/src/shrpx_config_test.cc +++ b/yass/third_party/nghttp2/src/shrpx_config_test.cc @@ -35,6 +35,8 @@ #include "shrpx_config.h" #include "shrpx_log.h" +using namespace std::literals; + namespace shrpx { namespace { @@ -54,32 +56,32 @@ const MunitSuite config_suite{ void test_shrpx_config_parse_header(void) { BlockAllocator balloc(4096, 4096); - auto p = parse_header(balloc, StringRef::from_lit("a: b")); - assert_stdstring_equal("a", p.name.str()); - assert_stdstring_equal("b", p.value.str()); + auto p = parse_header(balloc, "a: b"_sr); + assert_stdsv_equal("a"sv, p.name); + assert_stdsv_equal("b"sv, p.value); - p = parse_header(balloc, StringRef::from_lit("a: b")); - assert_stdstring_equal("a", p.name.str()); - assert_stdstring_equal("b", p.value.str()); + p = parse_header(balloc, "a: b"_sr); + assert_stdsv_equal("a"sv, p.name); + assert_stdsv_equal("b"sv, p.value); - p = parse_header(balloc, StringRef::from_lit(":a: b")); + p = parse_header(balloc, ":a: b"_sr); assert_true(p.name.empty()); - p = parse_header(balloc, StringRef::from_lit("a: :b")); - assert_stdstring_equal("a", p.name.str()); - assert_stdstring_equal(":b", p.value.str()); + p = parse_header(balloc, "a: :b"_sr); + assert_stdsv_equal("a"sv, p.name); + assert_stdsv_equal(":b"sv, p.value); - p = parse_header(balloc, StringRef::from_lit(": b")); + p = parse_header(balloc, ": b"_sr); assert_true(p.name.empty()); - p = parse_header(balloc, StringRef::from_lit("alpha: bravo charlie")); - assert_stdstring_equal("alpha", p.name.str()); - assert_stdstring_equal("bravo charlie", p.value.str()); + p = parse_header(balloc, "alpha: bravo charlie"_sr); + assert_stdsv_equal("alpha", p.name); + assert_stdsv_equal("bravo charlie", p.value); - p = parse_header(balloc, StringRef::from_lit("a,: b")); + p = parse_header(balloc, "a,: b"_sr); assert_true(p.name.empty()); - p = parse_header(balloc, StringRef::from_lit("a: b\x0a")); + p = parse_header(balloc, "a: b\x0a"_sr); assert_true(p.name.empty()); } @@ -87,91 +89,90 @@ void test_shrpx_config_parse_log_format(void) { BlockAllocator balloc(4096, 4096); auto res = parse_log_format( - balloc, StringRef::from_lit( - R"($remote_addr - $remote_user [$time_local] )" - R"("$request" $status $body_bytes_sent )" - R"("${http_referer}" $http_host "$http_user_agent")")); + balloc, R"($remote_addr - $remote_user [$time_local] )" + R"("$request" $status $body_bytes_sent )" + R"("${http_referer}" $http_host "$http_user_agent")"_sr); assert_size(16, ==, res.size()); assert_enum_class(LogFragmentType::REMOTE_ADDR, ==, res[0].type); assert_enum_class(LogFragmentType::LITERAL, ==, res[1].type); - assert_stdstring_equal(" - $remote_user [", res[1].value.str()); + assert_stdsv_equal(" - $remote_user ["sv, res[1].value); assert_enum_class(LogFragmentType::TIME_LOCAL, ==, res[2].type); assert_enum_class(LogFragmentType::LITERAL, ==, res[3].type); - assert_stdstring_equal("] \"", res[3].value.str()); + assert_stdsv_equal("] \""sv, res[3].value); assert_enum_class(LogFragmentType::REQUEST, ==, res[4].type); assert_enum_class(LogFragmentType::LITERAL, ==, res[5].type); - assert_stdstring_equal("\" ", res[5].value.str()); + assert_stdsv_equal("\" "sv, res[5].value); assert_enum_class(LogFragmentType::STATUS, ==, res[6].type); assert_enum_class(LogFragmentType::LITERAL, ==, res[7].type); - assert_stdstring_equal(" ", res[7].value.str()); + assert_stdsv_equal(" "sv, res[7].value); assert_enum_class(LogFragmentType::BODY_BYTES_SENT, ==, res[8].type); assert_enum_class(LogFragmentType::LITERAL, ==, res[9].type); - assert_stdstring_equal(" \"", res[9].value.str()); + assert_stdsv_equal(" \""sv, res[9].value); assert_enum_class(LogFragmentType::HTTP, ==, res[10].type); - assert_stdstring_equal("referer", res[10].value.str()); + assert_stdsv_equal("referer"sv, res[10].value); assert_enum_class(LogFragmentType::LITERAL, ==, res[11].type); - assert_stdstring_equal("\" ", res[11].value.str()); + assert_stdsv_equal("\" "sv, res[11].value); assert_enum_class(LogFragmentType::AUTHORITY, ==, res[12].type); assert_enum_class(LogFragmentType::LITERAL, ==, res[13].type); - assert_stdstring_equal(" \"", res[13].value.str()); + assert_stdsv_equal(" \""sv, res[13].value); assert_enum_class(LogFragmentType::HTTP, ==, res[14].type); - assert_stdstring_equal("user-agent", res[14].value.str()); + assert_stdsv_equal("user-agent"sv, res[14].value); assert_enum_class(LogFragmentType::LITERAL, ==, res[15].type); - assert_stdstring_equal("\"", res[15].value.str()); + assert_stdsv_equal("\""sv, res[15].value); - res = parse_log_format(balloc, StringRef::from_lit("$")); + res = parse_log_format(balloc, "$"_sr); assert_size(1, ==, res.size()); assert_enum_class(LogFragmentType::LITERAL, ==, res[0].type); - assert_stdstring_equal("$", res[0].value.str()); + assert_stdsv_equal("$"sv, res[0].value); - res = parse_log_format(balloc, StringRef::from_lit("${")); + res = parse_log_format(balloc, "${"_sr); assert_size(1, ==, res.size()); assert_enum_class(LogFragmentType::LITERAL, ==, res[0].type); - assert_stdstring_equal("${", res[0].value.str()); + assert_stdsv_equal("${"sv, res[0].value); - res = parse_log_format(balloc, StringRef::from_lit("${a")); + res = parse_log_format(balloc, "${a"_sr); assert_size(1, ==, res.size()); assert_enum_class(LogFragmentType::LITERAL, ==, res[0].type); - assert_stdstring_equal("${a", res[0].value.str()); + assert_stdsv_equal("${a"sv, res[0].value); - res = parse_log_format(balloc, StringRef::from_lit("${a ")); + res = parse_log_format(balloc, "${a "_sr); assert_size(1, ==, res.size()); assert_enum_class(LogFragmentType::LITERAL, ==, res[0].type); - assert_stdstring_equal("${a ", res[0].value.str()); + assert_stdsv_equal("${a "sv, res[0].value); - res = parse_log_format(balloc, StringRef::from_lit("$$remote_addr")); + res = parse_log_format(balloc, "$$remote_addr"_sr); assert_size(2, ==, res.size()); assert_enum_class(LogFragmentType::LITERAL, ==, res[0].type); - assert_stdstring_equal("$", res[0].value.str()); + assert_stdsv_equal("$"sv, res[0].value); assert_enum_class(LogFragmentType::REMOTE_ADDR, ==, res[1].type); - assert_stdstring_equal("", res[1].value.str()); + assert_stdsv_equal(""sv, res[1].value); } void test_shrpx_config_read_tls_ticket_key_file(void) { diff --git a/yass/third_party/nghttp2/src/shrpx_connection.cc b/yass/third_party/nghttp2/src/shrpx_connection.cc index d863284fb2..972faf4ed7 100644 --- a/yass/third_party/nghttp2/src/shrpx_connection.cc +++ b/yass/third_party/nghttp2/src/shrpx_connection.cc @@ -782,8 +782,8 @@ int Connection::write_tls_pending_handshake() { << " protocol=" << tls_info.protocol << " resumption=" << (tls_info.session_reused ? "yes" : "no") << " session_id=" - << util::format_hex(tls_info.session_id, - tls_info.session_id_length); + << util::format_hex(std::span{tls_info.session_id, + tls_info.session_id_length}); } } diff --git a/yass/third_party/nghttp2/src/shrpx_connection_handler.cc b/yass/third_party/nghttp2/src/shrpx_connection_handler.cc index b29ce9a56c..ad88aa6b29 100644 --- a/yass/third_party/nghttp2/src/shrpx_connection_handler.cc +++ b/yass/third_party/nghttp2/src/shrpx_connection_handler.cc @@ -647,7 +647,7 @@ int ConnectionHandler::start_ocsp_update(const char *cert_file) { char *const argv[] = { const_cast( - get_config()->tls.ocsp.fetch_ocsp_response_file.c_str()), + get_config()->tls.ocsp.fetch_ocsp_response_file.data()), const_cast(cert_file), nullptr}; Process proc; @@ -740,8 +740,7 @@ void ConnectionHandler::handle_ocsp_complete() { auto quic_tls_ctx_data = static_cast( SSL_CTX_get_app_data(quic_ssl_ctx)); # ifdef HAVE_ATOMIC_STD_SHARED_PTR - std::atomic_store_explicit( - &quic_tls_ctx_data->ocsp_data, + quic_tls_ctx_data->ocsp_data.store( std::make_shared>(ocsp_.resp), std::memory_order_release); # else // !HAVE_ATOMIC_STD_SHARED_PTR @@ -753,8 +752,7 @@ void ConnectionHandler::handle_ocsp_complete() { #endif // ENABLE_HTTP3 #ifdef HAVE_ATOMIC_STD_SHARED_PTR - std::atomic_store_explicit( - &tls_ctx_data->ocsp_data, + tls_ctx_data->ocsp_data.store( std::make_shared>(std::move(ocsp_.resp)), std::memory_order_release); #else // !HAVE_ATOMIC_STD_SHARED_PTR @@ -1004,10 +1002,12 @@ void ConnectionHandler::set_enable_acceptor_on_ocsp_completion(bool f) { } #ifdef ENABLE_HTTP3 -int ConnectionHandler::forward_quic_packet( - const UpstreamAddr *faddr, const Address &remote_addr, - const Address &local_addr, const ngtcp2_pkt_info &pi, const WorkerID &wid, - const uint8_t *data, size_t datalen) { +int ConnectionHandler::forward_quic_packet(const UpstreamAddr *faddr, + const Address &remote_addr, + const Address &local_addr, + const ngtcp2_pkt_info &pi, + const WorkerID &wid, + std::span data) { assert(!get_config()->single_thread); auto worker = find_worker(wid); @@ -1018,7 +1018,7 @@ int ConnectionHandler::forward_quic_packet( WorkerEvent wev{}; wev.type = WorkerEventType::QUIC_PKT_FORWARD; wev.quic_pkt = std::make_unique(faddr->index, remote_addr, - local_addr, pi, data, datalen); + local_addr, pi, data); worker->send(std::move(wev)); @@ -1104,8 +1104,8 @@ void ConnectionHandler::set_quic_lingering_worker_processes( int ConnectionHandler::forward_quic_packet_to_lingering_worker_process( QUICLingeringWorkerProcess *quic_lwp, const Address &remote_addr, - const Address &local_addr, const ngtcp2_pkt_info &pi, const uint8_t *data, - size_t datalen) { + const Address &local_addr, const ngtcp2_pkt_info &pi, + std::span data) { std::array header; assert(header.size() >= 1 + 1 + 1 + 1 + sizeof(sockaddr_storage) * 2); @@ -1129,8 +1129,8 @@ int ConnectionHandler::forward_quic_packet_to_lingering_worker_process( .iov_len = static_cast(p - header.data()), }, { - .iov_base = const_cast(data), - .iov_len = datalen, + .iov_base = const_cast(data.data()), + .iov_len = data.size(), }, }; @@ -1279,8 +1279,7 @@ int ConnectionHandler::quic_ipc_read() { // Ignore return value quic_conn_handler->handle_packet(faddr, pkt->remote_addr, pkt->local_addr, - pkt->pi, pkt->data.data(), - pkt->data.size()); + pkt->pi, pkt->data); return 0; } diff --git a/yass/third_party/nghttp2/src/shrpx_connection_handler.h b/yass/third_party/nghttp2/src/shrpx_connection_handler.h index 47ec209aec..16e56e0a08 100644 --- a/yass/third_party/nghttp2/src/shrpx_connection_handler.h +++ b/yass/third_party/nghttp2/src/shrpx_connection_handler.h @@ -195,8 +195,7 @@ public: int forward_quic_packet(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const WorkerID &wid, const uint8_t *data, - size_t datalen); + const WorkerID &wid, std::span data); void set_quic_keying_materials(std::shared_ptr qkms); const std::shared_ptr &get_quic_keying_materials() const; @@ -215,8 +214,8 @@ public: int forward_quic_packet_to_lingering_worker_process( QUICLingeringWorkerProcess *quic_lwp, const Address &remote_addr, - const Address &local_addr, const ngtcp2_pkt_info &pi, const uint8_t *data, - size_t datalen); + const Address &local_addr, const ngtcp2_pkt_info &pi, + std::span data); void set_quic_ipc_fd(int fd); diff --git a/yass/third_party/nghttp2/src/shrpx_dns_resolver.cc b/yass/third_party/nghttp2/src/shrpx_dns_resolver.cc index 8253942691..ceda61220d 100644 --- a/yass/third_party/nghttp2/src/shrpx_dns_resolver.cc +++ b/yass/third_party/nghttp2/src/shrpx_dns_resolver.cc @@ -178,7 +178,7 @@ int DNSResolver::resolve(const StringRef &name, int family) { ares_addrinfo_hints hints{}; hints.ai_family = family_; - ares_getaddrinfo(channel_, name_.c_str(), nullptr, &hints, addrinfo_cb, this); + ares_getaddrinfo(channel_, name_.data(), nullptr, &hints, addrinfo_cb, this); reset_timeout(); return 0; diff --git a/yass/third_party/nghttp2/src/shrpx_downstream.cc b/yass/third_party/nghttp2/src/shrpx_downstream.cc index 5fd717e9e2..73d7f11309 100644 --- a/yass/third_party/nghttp2/src/shrpx_downstream.cc +++ b/yass/third_party/nghttp2/src/shrpx_downstream.cc @@ -344,7 +344,7 @@ StringRef Downstream::assemble_request_cookie() { } auto iov = make_byte_ref(balloc_, len + 1); - auto p = iov.base; + auto p = std::begin(iov); for (auto &kv : req_.fs.headers()) { if (kv.token != http2::HD_COOKIE || kv.value.empty()) { @@ -367,11 +367,11 @@ StringRef Downstream::assemble_request_cookie() { } // cut trailing "; " - if (p - iov.base >= 2) { + if (p - std::begin(iov) >= 2) { p -= 2; } - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } uint32_t Downstream::find_affinity_cookie(const StringRef &name) { @@ -391,7 +391,7 @@ uint32_t Downstream::find_affinity_cookie(const StringRef &name) { return 0; } - if (!util::streq(name, StringRef{it, end})) { + if (name != StringRef{it, end}) { it = std::find(it, std::end(kv.value), ';'); continue; } @@ -474,12 +474,11 @@ void add_header(size_t &sum, HeaderRefs &headers, const StringRef &name, namespace { StringRef alloc_header_name(BlockAllocator &balloc, const StringRef &name) { auto iov = make_byte_ref(balloc, name.size() + 1); - auto p = iov.base; - p = std::copy(std::begin(name), std::end(name), p); - util::inp_strlower(iov.base, p); + auto p = std::copy(std::begin(name), std::end(name), std::begin(iov)); + util::inp_strlower(std::begin(iov), p); *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } } // namespace @@ -521,13 +520,13 @@ int FieldStore::parse_content_length() { } auto len = util::parse_uint(kv.value); - if (len == -1) { + if (!len) { return -1; } if (content_length != -1) { return -1; } - content_length = len; + content_length = *len; } return 0; } @@ -732,7 +731,7 @@ void Downstream::rewrite_location_response_header( } http_parser_url u{}; - auto rv = http_parser_parse_url(hd->value.c_str(), hd->value.size(), 0, &u); + auto rv = http_parser_parse_url(hd->value.data(), hd->value.size(), 0, &u); if (rv != 0) { return; } @@ -841,7 +840,7 @@ void Downstream::check_upgrade_fulfilled_http1() { auto expected = http2::make_websocket_accept_token(accept_buf.data(), ws_key_); - upgraded_ = expected != "" && expected == accept->value; + upgraded_ = !expected.empty() && expected == accept->value; } else { upgraded_ = resp_.http_status / 100 == 2; } @@ -871,15 +870,14 @@ void Downstream::inspect_http1_request() { if (upgrade) { const auto &val = upgrade->value; // TODO Perform more strict checking for upgrade headers - if (util::streq_l(NGHTTP2_CLEARTEXT_PROTO_VERSION_ID, val.c_str(), - val.size())) { + if (NGHTTP2_CLEARTEXT_PROTO_VERSION_ID ""_sr == val) { req_.http2_upgrade_seen = true; } else { req_.upgrade_request = true; // TODO Should we check Sec-WebSocket-Key, and // Sec-WebSocket-Version as well? - if (util::strieq_l("websocket", val)) { + if (util::strieq("websocket"_sr, val)) { req_.connect_proto = ConnectProto::WEBSOCKET; } } @@ -892,8 +890,7 @@ void Downstream::inspect_http1_request() { auto expect = req_.fs.header(http2::HD_EXPECT); expect_100_continue_ = - expect && - util::strieq(expect->value, StringRef::from_lit("100-continue")); + expect && util::strieq(expect->value, "100-continue"_sr); } void Downstream::inspect_http1_response() { diff --git a/yass/third_party/nghttp2/src/shrpx_downstream_test.cc b/yass/third_party/nghttp2/src/shrpx_downstream_test.cc index 46db9b7e27..bbccea80db 100644 --- a/yass/third_party/nghttp2/src/shrpx_downstream_test.cc +++ b/yass/third_party/nghttp2/src/shrpx_downstream_test.cc @@ -30,6 +30,8 @@ #include "shrpx_downstream.h" +using namespace std::literals; + namespace shrpx { namespace { @@ -52,40 +54,35 @@ const MunitSuite downstream_suite{ void test_downstream_field_store_append_last_header(void) { BlockAllocator balloc(16, 16); FieldStore fs(balloc, 0); - fs.alloc_add_header_name(StringRef::from_lit("alpha")); - auto bravo = StringRef::from_lit("BRAVO"); - fs.append_last_header_key(bravo.c_str(), bravo.size()); + fs.alloc_add_header_name("alpha"_sr); + auto bravo = "BRAVO"_sr; + fs.append_last_header_key(bravo.data(), bravo.size()); // Add more characters so that relloc occurs - auto golf = StringRef::from_lit("golF0123456789"); - fs.append_last_header_key(golf.c_str(), golf.size()); + auto golf = "golF0123456789"_sr; + fs.append_last_header_key(golf.data(), golf.size()); - auto charlie = StringRef::from_lit("Charlie"); - fs.append_last_header_value(charlie.c_str(), charlie.size()); - auto delta = StringRef::from_lit("deltA"); - fs.append_last_header_value(delta.c_str(), delta.size()); + auto charlie = "Charlie"_sr; + fs.append_last_header_value(charlie.data(), charlie.size()); + auto delta = "deltA"_sr; + fs.append_last_header_value(delta.data(), delta.size()); // Add more characters so that relloc occurs - auto echo = StringRef::from_lit("echo0123456789"); - fs.append_last_header_value(echo.c_str(), echo.size()); + auto echo = "echo0123456789"_sr; + fs.append_last_header_value(echo.data(), echo.size()); - fs.add_header_token(StringRef::from_lit("echo"), - StringRef::from_lit("foxtrot"), false, -1); + fs.add_header_token("echo"_sr, "foxtrot"_sr, false, -1); - auto ans = - HeaderRefs{{StringRef::from_lit("alphabravogolf0123456789"), - StringRef::from_lit("CharliedeltAecho0123456789")}, - {StringRef::from_lit("echo"), StringRef::from_lit("foxtrot")}}; + auto ans = HeaderRefs{ + {"alphabravogolf0123456789"_sr, "CharliedeltAecho0123456789"_sr}, + {"echo"_sr, "foxtrot"_sr}}; assert_true(ans == fs.headers()); } void test_downstream_field_store_header(void) { BlockAllocator balloc(16, 16); FieldStore fs(balloc, 0); - fs.add_header_token(StringRef::from_lit("alpha"), StringRef::from_lit("0"), - false, -1); - fs.add_header_token(StringRef::from_lit(":authority"), - StringRef::from_lit("1"), false, http2::HD__AUTHORITY); - fs.add_header_token(StringRef::from_lit("content-length"), - StringRef::from_lit("2"), false, + fs.add_header_token("alpha"_sr, "0"_sr, false, -1); + fs.add_header_token(":authority"_sr, "1"_sr, false, http2::HD__AUTHORITY); + fs.add_header_token("content-length"_sr, "2"_sr, false, http2::HD_CONTENT_LENGTH); // By token @@ -95,25 +92,19 @@ void test_downstream_field_store_header(void) { // By name assert_true(HeaderRef(StringRef{"alpha"}, StringRef{"0"}) == - *fs.header(StringRef::from_lit("alpha"))); - assert_null(fs.header(StringRef::from_lit("bravo"))); + *fs.header("alpha"_sr)); + assert_null(fs.header("bravo"_sr)); } void test_downstream_crumble_request_cookie(void) { Downstream d(nullptr, nullptr, 0); auto &req = d.request(); - req.fs.add_header_token(StringRef::from_lit(":method"), - StringRef::from_lit("get"), false, -1); - req.fs.add_header_token(StringRef::from_lit(":path"), - StringRef::from_lit("/"), false, -1); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("alpha; bravo; ; ;; charlie;;"), - true, http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit(";delta"), false, + req.fs.add_header_token(":method"_sr, "get"_sr, false, -1); + req.fs.add_header_token(":path"_sr, "/"_sr, false, -1); + req.fs.add_header_token("cookie"_sr, "alpha; bravo; ; ;; charlie;;"_sr, true, http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("echo"), false, http2::HD_COOKIE); + req.fs.add_header_token("cookie"_sr, ";delta"_sr, false, http2::HD_COOKIE); + req.fs.add_header_token("cookie"_sr, "echo"_sr, false, http2::HD_COOKIE); std::vector nva; d.crumble_request_cookie(nva); @@ -131,12 +122,11 @@ void test_downstream_crumble_request_cookie(void) { nv.flags & NGHTTP2_NV_FLAG_NO_INDEX); }); - HeaderRefs ans = { - {StringRef::from_lit("cookie"), StringRef::from_lit("alpha")}, - {StringRef::from_lit("cookie"), StringRef::from_lit("bravo")}, - {StringRef::from_lit("cookie"), StringRef::from_lit("charlie")}, - {StringRef::from_lit("cookie"), StringRef::from_lit("delta")}, - {StringRef::from_lit("cookie"), StringRef::from_lit("echo")}}; + HeaderRefs ans = {{"cookie"_sr, "alpha"_sr}, + {"cookie"_sr, "bravo"_sr}, + {"cookie"_sr, "charlie"_sr}, + {"cookie"_sr, "delta"_sr}, + {"cookie"_sr, "echo"_sr}}; assert_true(ans == cookies); assert_true(cookies[0].no_index); @@ -148,38 +138,27 @@ void test_downstream_assemble_request_cookie(void) { Downstream d(nullptr, nullptr, 0); auto &req = d.request(); - req.fs.add_header_token(StringRef::from_lit(":method"), - StringRef::from_lit("get"), false, -1); - req.fs.add_header_token(StringRef::from_lit(":path"), - StringRef::from_lit("/"), false, -1); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("alpha"), false, - http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("bravo;"), false, - http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("charlie; "), false, - http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("delta;;"), false, - http2::HD_COOKIE); - assert_stdstring_equal("alpha; bravo; charlie; delta", - d.assemble_request_cookie().str()); + req.fs.add_header_token(":method"_sr, "get"_sr, false, -1); + req.fs.add_header_token(":path"_sr, "/"_sr, false, -1); + req.fs.add_header_token("cookie"_sr, "alpha"_sr, false, http2::HD_COOKIE); + req.fs.add_header_token("cookie"_sr, "bravo;"_sr, false, http2::HD_COOKIE); + req.fs.add_header_token("cookie"_sr, "charlie; "_sr, false, http2::HD_COOKIE); + req.fs.add_header_token("cookie"_sr, "delta;;"_sr, false, http2::HD_COOKIE); + assert_stdsv_equal("alpha; bravo; charlie; delta"sv, + d.assemble_request_cookie()); } void test_downstream_rewrite_location_response_header(void) { Downstream d(nullptr, nullptr, 0); auto &req = d.request(); auto &resp = d.response(); - d.set_request_downstream_host(StringRef::from_lit("localhost2")); - req.authority = StringRef::from_lit("localhost:8443"); - resp.fs.add_header_token(StringRef::from_lit("location"), - StringRef::from_lit("http://localhost2:3000/"), - false, http2::HD_LOCATION); - d.rewrite_location_response_header(StringRef::from_lit("https")); + d.set_request_downstream_host("localhost2"_sr); + req.authority = "localhost:8443"_sr; + resp.fs.add_header_token("location"_sr, "http://localhost2:3000/"_sr, false, + http2::HD_LOCATION); + d.rewrite_location_response_header("https"_sr); auto location = resp.fs.header(http2::HD_LOCATION); - assert_stdstring_equal("https://localhost:8443/", (*location).value.str()); + assert_stdsv_equal("https://localhost:8443/"sv, (*location).value); } void test_downstream_supports_non_final_response(void) { @@ -216,32 +195,26 @@ void test_downstream_find_affinity_cookie(void) { Downstream d(nullptr, nullptr, 0); auto &req = d.request(); - req.fs.add_header_token(StringRef::from_lit("cookie"), StringRef{}, false, - http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("a=b;;c=d"), false, - http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("content-length"), - StringRef::from_lit("599"), false, + req.fs.add_header_token("cookie"_sr, StringRef{}, false, http2::HD_COOKIE); + req.fs.add_header_token("cookie"_sr, "a=b;;c=d"_sr, false, http2::HD_COOKIE); + req.fs.add_header_token("content-length"_sr, "599"_sr, false, http2::HD_CONTENT_LENGTH); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("lb=deadbeef;LB=f1f2f3f4"), false, + req.fs.add_header_token("cookie"_sr, "lb=deadbeef;LB=f1f2f3f4"_sr, false, http2::HD_COOKIE); - req.fs.add_header_token(StringRef::from_lit("cookie"), - StringRef::from_lit("short=e1e2e3e"), false, + req.fs.add_header_token("cookie"_sr, "short=e1e2e3e"_sr, false, http2::HD_COOKIE); uint32_t aff; - aff = d.find_affinity_cookie(StringRef::from_lit("lb")); + aff = d.find_affinity_cookie("lb"_sr); assert_uint32(0xdeadbeef, ==, aff); - aff = d.find_affinity_cookie(StringRef::from_lit("LB")); + aff = d.find_affinity_cookie("LB"_sr); assert_uint32(0xf1f2f3f4, ==, aff); - aff = d.find_affinity_cookie(StringRef::from_lit("short")); + aff = d.find_affinity_cookie("short"_sr); assert_uint32(0, ==, aff); } diff --git a/yass/third_party/nghttp2/src/shrpx_health_monitor_downstream_connection.cc b/yass/third_party/nghttp2/src/shrpx_health_monitor_downstream_connection.cc index 89e539630a..710de96b6a 100644 --- a/yass/third_party/nghttp2/src/shrpx_health_monitor_downstream_connection.cc +++ b/yass/third_party/nghttp2/src/shrpx_health_monitor_downstream_connection.cc @@ -74,8 +74,7 @@ int HealthMonitorDownstreamConnection::end_upload_data() { resp.http_status = 200; - resp.fs.add_header_token(StringRef::from_lit("content-length"), - StringRef::from_lit("0"), false, + resp.fs.add_header_token("content-length"_sr, "0"_sr, false, http2::HD_CONTENT_LENGTH); if (upstream->send_reply(downstream_, nullptr, 0) != 0) { diff --git a/yass/third_party/nghttp2/src/shrpx_http.cc b/yass/third_party/nghttp2/src/shrpx_http.cc index 475050093f..cd7e14b89b 100644 --- a/yass/third_party/nghttp2/src/shrpx_http.cc +++ b/yass/third_party/nghttp2/src/shrpx_http.cc @@ -41,7 +41,7 @@ StringRef create_error_html(BlockAllocator &balloc, unsigned int http_status) { const auto &error_pages = httpconf.error_pages; for (const auto &page : error_pages) { if (page.http_status == 0 || page.http_status == http_status) { - return StringRef{std::begin(page.content), std::end(page.content)}; + return StringRef{std::span{page.content}}; } } @@ -49,12 +49,10 @@ StringRef create_error_html(BlockAllocator &balloc, unsigned int http_status) { auto reason_phrase = http2::get_reason_phrase(http_status); return concat_string_ref( - balloc, StringRef::from_lit(R"()"), - status_string, StringRef::from_lit(" "), reason_phrase, - StringRef::from_lit("

    "), status_string, - StringRef::from_lit(" "), reason_phrase, - StringRef::from_lit("

    "), httpconf.server_name, - StringRef::from_lit("
    ")); + balloc, R"()"_sr, status_string, + " "_sr, reason_phrase, "

    "_sr, status_string, " "_sr, + reason_phrase, "

    "_sr, httpconf.server_name, + "
    "_sr); } StringRef create_forwarded(BlockAllocator &balloc, int params, @@ -75,7 +73,7 @@ StringRef create_forwarded(BlockAllocator &balloc, int params, } auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; + auto p = std::begin(iov); if ((params & FORWARDED_BY) && !node_by.empty()) { // This must be quoted-string unless it is obfuscated version @@ -118,14 +116,14 @@ StringRef create_forwarded(BlockAllocator &balloc, int params, *p++ = ';'; } - if (iov.base == p) { + if (std::begin(iov) == p) { return StringRef{}; } --p; *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } std::string colorizeHeaders(const char *hdrs) { @@ -146,7 +144,7 @@ std::string colorizeHeaders(const char *hdrs) { nhdrs += TTY_HTTP_HD; nhdrs.append(p, np); nhdrs += TTY_RST; - auto redact = util::strieq_l("authorization", StringRef{p, np}); + auto redact = util::strieq("authorization"_sr, StringRef{p, np}); p = np; np = strchr(p, '\n'); if (!np) { @@ -176,8 +174,8 @@ nghttp2_ssize select_padding_callback(nghttp2_session *session, StringRef create_affinity_cookie(BlockAllocator &balloc, const StringRef &name, uint32_t affinity_cookie, const StringRef &path, bool secure) { - static constexpr auto PATH_PREFIX = StringRef::from_lit("; Path="); - static constexpr auto SECURE = StringRef::from_lit("; Secure"); + static constexpr auto PATH_PREFIX = "; Path="_sr; + static constexpr auto SECURE = "; Secure"_sr; // =[; Path=][; Secure] size_t len = name.size() + 1 + 8; @@ -189,14 +187,10 @@ StringRef create_affinity_cookie(BlockAllocator &balloc, const StringRef &name, } auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; - p = std::copy(std::begin(name), std::end(name), p); + auto p = std::copy(std::begin(name), std::end(name), std::begin(iov)); *p++ = '='; affinity_cookie = htonl(affinity_cookie); - p = util::format_hex(p, - StringRef{reinterpret_cast(&affinity_cookie), - reinterpret_cast(&affinity_cookie) + - sizeof(affinity_cookie)}); + p = util::format_hex(p, std::span{&affinity_cookie, 1}); if (!path.empty()) { p = std::copy(std::begin(PATH_PREFIX), std::end(PATH_PREFIX), p); p = std::copy(std::begin(path), std::end(path), p); @@ -205,14 +199,14 @@ StringRef create_affinity_cookie(BlockAllocator &balloc, const StringRef &name, p = std::copy(std::begin(SECURE), std::end(SECURE), p); } *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } bool require_cookie_secure_attribute(SessionAffinityCookieSecure secure, const StringRef &scheme) { switch (secure) { case SessionAffinityCookieSecure::AUTO: - return scheme == "https"; + return scheme == "https"_sr; case SessionAffinityCookieSecure::YES: return true; default: @@ -247,7 +241,7 @@ StringRef create_altsvc_header_value(BlockAllocator &balloc, // We will write additional ", " at the end, and cut it later. auto iov = make_byte_ref(balloc, len + 2); - auto p = iov.base; + auto p = std::begin(iov); for (auto &altsvc : altsvcs) { p = util::percent_encode_token(p, altsvc.protocol_id); @@ -266,13 +260,13 @@ StringRef create_altsvc_header_value(BlockAllocator &balloc, p -= 2; *p = '\0'; - assert(static_cast(p - iov.base) == len); + assert(static_cast(p - std::begin(iov)) == len); - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } bool check_http_scheme(const StringRef &scheme, bool encrypted) { - return encrypted ? scheme == "https" : scheme == "http"; + return encrypted ? scheme == "https"_sr : scheme == "http"_sr; } } // namespace http diff --git a/yass/third_party/nghttp2/src/shrpx_http2_downstream_connection.cc b/yass/third_party/nghttp2/src/shrpx_http2_downstream_connection.cc index a6c9d53aee..dadf10a93b 100644 --- a/yass/third_party/nghttp2/src/shrpx_http2_downstream_connection.cc +++ b/yass/third_party/nghttp2/src/shrpx_http2_downstream_connection.cc @@ -295,11 +295,11 @@ int Http2DownstreamConnection::push_request_headers() { httpconf.add_request_headers.size()); if (req.connect_proto == ConnectProto::WEBSOCKET) { - nva.push_back(http2::make_nv_ll(":method", "CONNECT")); - nva.push_back(http2::make_nv_ll(":protocol", "websocket")); + nva.push_back(http2::make_field(":method"_sr, "CONNECT"_sr)); + nva.push_back(http2::make_field(":protocol"_sr, "websocket"_sr)); } else { - nva.push_back(http2::make_nv_ls_nocopy( - ":method", http2::to_method_string(req.method))); + nva.push_back( + http2::make_field(":method"_sr, http2::to_method_string(req.method))); } if (!req.regular_connect_method()) { @@ -308,25 +308,25 @@ int Http2DownstreamConnection::push_request_headers() { auto addr = http2session_->get_addr(); assert(addr); // We will handle more protocol scheme upgrade in the future. - if (addr->tls && addr->upgrade_scheme && req.scheme == "http") { - nva.push_back(http2::make_nv_ll(":scheme", "https")); + if (addr->tls && addr->upgrade_scheme && req.scheme == "http"_sr) { + nva.push_back(http2::make_field(":scheme"_sr, "https"_sr)); } else { - nva.push_back(http2::make_nv_ls_nocopy(":scheme", req.scheme)); + nva.push_back(http2::make_field(":scheme"_sr, req.scheme)); } if (req.method == HTTP_OPTIONS && req.path.empty()) { - nva.push_back(http2::make_nv_ll(":path", "*")); + nva.push_back(http2::make_field(":path"_sr, "*"_sr)); } else { - nva.push_back(http2::make_nv_ls_nocopy(":path", req.path)); + nva.push_back(http2::make_field(":path"_sr, req.path)); } if (!req.no_authority || req.connect_proto != ConnectProto::NONE) { - nva.push_back(http2::make_nv_ls_nocopy(":authority", authority)); + nva.push_back(http2::make_field(":authority"_sr, authority)); } else { - nva.push_back(http2::make_nv_ls_nocopy("host", authority)); + nva.push_back(http2::make_field("host"_sr, authority)); } } else { - nva.push_back(http2::make_nv_ls_nocopy(":authority", authority)); + nva.push_back(http2::make_field(":authority"_sr, authority)); } auto &fwdconf = httpconf.forwarded; @@ -354,7 +354,7 @@ int Http2DownstreamConnection::push_request_headers() { auto conn = handler->get_connection(); if (conn->tls.ssl && !SSL_is_init_finished(conn->tls.ssl)) { - nva.push_back(http2::make_nv_ll("early-data", "1")); + nva.push_back(http2::make_field("early-data"_sr, "1"_sr)); } #endif // NGHTTP2_GENUINE_OPENSSL || NGHTTP2_OPENSSL_IS_BORINGSSL @@ -377,15 +377,14 @@ int Http2DownstreamConnection::push_request_headers() { if (value.empty()) { value = fwd->value; } else { - value = concat_string_ref(balloc, fwd->value, - StringRef::from_lit(", "), value); + value = concat_string_ref(balloc, fwd->value, ", "_sr, value); } } - nva.push_back(http2::make_nv_ls_nocopy("forwarded", value)); + nva.push_back(http2::make_field("forwarded"_sr, value)); } } else if (fwd) { - nva.push_back(http2::make_nv_ls_nocopy("forwarded", fwd->value)); + nva.push_back(http2::make_field("forwarded"_sr, fwd->value)); } auto xff = xffconf.strip_incoming ? nullptr @@ -395,14 +394,13 @@ int Http2DownstreamConnection::push_request_headers() { StringRef xff_value; const auto &addr = upstream->get_client_handler()->get_ipaddr(); if (xff) { - xff_value = concat_string_ref(balloc, xff->value, - StringRef::from_lit(", "), addr); + xff_value = concat_string_ref(balloc, xff->value, ", "_sr, addr); } else { xff_value = addr; } - nva.push_back(http2::make_nv_ls_nocopy("x-forwarded-for", xff_value)); + nva.push_back(http2::make_field("x-forwarded-for"_sr, xff_value)); } else if (xff) { - nva.push_back(http2::make_nv_ls_nocopy("x-forwarded-for", xff->value)); + nva.push_back(http2::make_field("x-forwarded-for"_sr, xff->value)); } if (!config->http2_proxy && !req.regular_connect_method()) { @@ -414,21 +412,20 @@ int Http2DownstreamConnection::push_request_headers() { StringRef xfp_value; // We use same protocol with :scheme header field if (xfp) { - xfp_value = concat_string_ref(balloc, xfp->value, - StringRef::from_lit(", "), req.scheme); + xfp_value = concat_string_ref(balloc, xfp->value, ", "_sr, req.scheme); } else { xfp_value = req.scheme; } - nva.push_back(http2::make_nv_ls_nocopy("x-forwarded-proto", xfp_value)); + nva.push_back(http2::make_field("x-forwarded-proto"_sr, xfp_value)); } else if (xfp) { - nva.push_back(http2::make_nv_ls_nocopy("x-forwarded-proto", xfp->value)); + nva.push_back(http2::make_field("x-forwarded-proto"_sr, xfp->value)); } } auto via = req.fs.header(http2::HD_VIA); if (httpconf.no_via) { if (via) { - nva.push_back(http2::make_nv_ls_nocopy("via", (*via).value)); + nva.push_back(http2::make_field("via"_sr, (*via).value)); } } else { size_t vialen = 16; @@ -437,7 +434,7 @@ int Http2DownstreamConnection::push_request_headers() { } auto iov = make_byte_ref(balloc, vialen + 1); - auto p = iov.base; + auto p = std::begin(iov); if (via) { p = std::copy(std::begin(via->value), std::end(via->value), p); @@ -446,7 +443,8 @@ int Http2DownstreamConnection::push_request_headers() { p = http::create_via_header_value(p, req.http_major, req.http_minor); *p = '\0'; - nva.push_back(http2::make_nv_ls_nocopy("via", StringRef{iov.base, p})); + nva.push_back( + http2::make_field("via"_sr, StringRef{std::span{std::begin(iov), p}})); } auto te = req.fs.header(http2::HD_TE); @@ -454,22 +452,23 @@ int Http2DownstreamConnection::push_request_headers() { // "trailers". We just forward "trailers". // TODO more strict handling required here. if (te && http2::contains_trailers(te->value)) { - nva.push_back(http2::make_nv_ll("te", "trailers")); + nva.push_back(http2::make_field("te"_sr, "trailers"_sr)); } for (auto &p : httpconf.add_request_headers) { - nva.push_back(http2::make_nv_nocopy(p.name, p.value)); + nva.push_back(http2::make_field(p.name, p.value)); } if (LOG_ENABLED(INFO)) { std::stringstream ss; for (auto &nv : nva) { - if (util::streq_l("authorization", nv.name, nv.namelen)) { - ss << TTY_HTTP_HD << StringRef{nv.name, nv.namelen} << TTY_RST - << ": \n"; + auto name = StringRef{nv.name, nv.namelen}; + + if ("authorization"_sr == name) { + ss << TTY_HTTP_HD << name << TTY_RST << ": \n"; continue; } - ss << TTY_HTTP_HD << StringRef{nv.name, nv.namelen} << TTY_RST << ": " + ss << TTY_HTTP_HD << name << TTY_RST << ": " << StringRef{nv.value, nv.valuelen} << "\n"; } DCLOG(INFO, this) << "HTTP request headers\n" << ss.str(); diff --git a/yass/third_party/nghttp2/src/shrpx_http2_session.cc b/yass/third_party/nghttp2/src/shrpx_http2_session.cc index dccdae4b50..4fc73ba262 100644 --- a/yass/third_party/nghttp2/src/shrpx_http2_session.cc +++ b/yass/third_party/nghttp2/src/shrpx_http2_session.cc @@ -468,11 +468,11 @@ int Http2Session::initiate_connection() { auto sni_name = addr_->sni.empty() ? StringRef{addr_->host} : StringRef{addr_->sni}; - if (!util::numeric_host(sni_name.c_str())) { + if (!util::numeric_host(sni_name.data())) { // TLS extensions: SNI. There is no documentation about the return // code for this function (actually this is macro wrapping SSL_ctrl // at the time of this writing). - SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name.c_str()); + SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name.data()); } auto tls_session = tls::reuse_tls_session(addr_->tls_session_cache); @@ -693,7 +693,7 @@ int Http2Session::downstream_connect_proxy() { } std::string req = "CONNECT "; - req.append(addr_->hostport.c_str(), addr_->hostport.size()); + req.append(addr_->hostport.data(), addr_->hostport.size()); if (addr_->port == 80 || addr_->port == 443) { req += ':'; req += util::utos(addr_->port); @@ -939,7 +939,9 @@ int on_header_callback2(nghttp2_session *session, const nghttp2_frame *frame, return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; } - auto token = http2::lookup_token(namebuf.base, namebuf.len); + auto nameref = StringRef{namebuf.base, namebuf.len}; + auto valueref = StringRef{valuebuf.base, valuebuf.len}; + auto token = http2::lookup_token(nameref); auto no_index = flags & NGHTTP2_NV_FLAG_NO_INDEX; downstream->add_rcbuf(name); @@ -947,15 +949,11 @@ int on_header_callback2(nghttp2_session *session, const nghttp2_frame *frame, if (trailer) { // just store header fields for trailer part - resp.fs.add_trailer_token(StringRef{namebuf.base, namebuf.len}, - StringRef{valuebuf.base, valuebuf.len}, - no_index, token); + resp.fs.add_trailer_token(nameref, valueref, no_index, token); return 0; } - resp.fs.add_header_token(StringRef{namebuf.base, namebuf.len}, - StringRef{valuebuf.base, valuebuf.len}, no_index, - token); + resp.fs.add_header_token(nameref, valueref, no_index, token); return 0; } case NGHTTP2_PUSH_PROMISE: { @@ -993,9 +991,10 @@ int on_header_callback2(nghttp2_session *session, const nghttp2_frame *frame, promised_downstream->add_rcbuf(name); promised_downstream->add_rcbuf(value); - auto token = http2::lookup_token(namebuf.base, namebuf.len); - promised_req.fs.add_header_token(StringRef{namebuf.base, namebuf.len}, - StringRef{valuebuf.base, valuebuf.len}, + auto nameref = StringRef{namebuf.base, namebuf.len}; + auto valueref = StringRef{valuebuf.base, valuebuf.len}; + auto token = http2::lookup_token(nameref); + promised_req.fs.add_header_token(nameref, valueref, flags & NGHTTP2_NV_FLAG_NO_INDEX, token); return 0; @@ -1171,7 +1170,8 @@ int on_response_headers(Http2Session *http2session, Downstream *downstream, auto content_length = resp.fs.header(http2::HD_CONTENT_LENGTH); if (content_length) { // libnghttp2 guarantees this can be parsed - resp.fs.content_length = util::parse_uint(content_length->value); + resp.fs.content_length = + util::parse_uint(content_length->value).value_or(-1); } if (resp.fs.content_length == -1 && downstream->expect_response_body()) { @@ -1184,8 +1184,7 @@ int on_response_headers(Http2Session *http2session, Downstream *downstream, // Otherwise, use chunked encoding to keep upstream connection // open. In HTTP2, we are supposed not to receive // transfer-encoding. - resp.fs.add_header_token(StringRef::from_lit("transfer-encoding"), - StringRef::from_lit("chunked"), false, + resp.fs.add_header_token("transfer-encoding"_sr, "chunked"_sr, false, http2::HD_TRANSFER_ENCODING); downstream->set_chunked_response(true); } @@ -2279,7 +2278,7 @@ int Http2Session::handle_downstream_push_promise_complete( } // For server-wide OPTIONS request, path is empty. - if (method_token != HTTP_OPTIONS || path->value != "*") { + if (method_token != HTTP_OPTIONS || path->value != "*"_sr) { promised_req.path = http2::rewrite_clean_path(promised_balloc, path->value); } diff --git a/yass/third_party/nghttp2/src/shrpx_http2_upstream.cc b/yass/third_party/nghttp2/src/shrpx_http2_upstream.cc index 7816f5f0cc..4c59ddc5e9 100644 --- a/yass/third_party/nghttp2/src/shrpx_http2_upstream.cc +++ b/yass/third_party/nghttp2/src/shrpx_http2_upstream.cc @@ -118,7 +118,7 @@ int Http2Upstream::upgrade_upstream(HttpsUpstream *http) { std::end(http2_settings)); rv = nghttp2_session_upgrade2( - session_, settings_payload.byte(), settings_payload.size(), + session_, settings_payload.data(), settings_payload.size(), http->get_downstream()->request().method == HTTP_HEAD, nullptr); if (rv != 0) { if (LOG_ENABLED(INFO)) { @@ -209,7 +209,9 @@ int on_header_callback2(nghttp2_session *session, const nghttp2_frame *frame, return 0; } - auto token = http2::lookup_token(namebuf.base, namebuf.len); + auto nameref = StringRef{namebuf.base, namebuf.len}; + auto valueref = StringRef{valuebuf.base, valuebuf.len}; + auto token = http2::lookup_token(nameref); auto no_index = flags & NGHTTP2_NV_FLAG_NO_INDEX; downstream->add_rcbuf(name); @@ -217,15 +219,11 @@ int on_header_callback2(nghttp2_session *session, const nghttp2_frame *frame, if (frame->headers.cat == NGHTTP2_HCAT_HEADERS) { // just store header fields for trailer part - req.fs.add_trailer_token(StringRef{namebuf.base, namebuf.len}, - StringRef{valuebuf.base, valuebuf.len}, no_index, - token); + req.fs.add_trailer_token(nameref, valueref, no_index, token); return 0; } - req.fs.add_header_token(StringRef{namebuf.base, namebuf.len}, - StringRef{valuebuf.base, valuebuf.len}, no_index, - token); + req.fs.add_header_token(nameref, valueref, no_index, token); return 0; } } // namespace @@ -322,7 +320,7 @@ int Http2Upstream::on_request_headers(Downstream *downstream, if (LOG_ENABLED(INFO)) { std::stringstream ss; for (auto &nv : nva) { - if (nv.name == "authorization") { + if (nv.name == "authorization"_sr) { ss << TTY_HTTP_HD << nv.name << TTY_RST << ": \n"; continue; } @@ -343,7 +341,8 @@ int Http2Upstream::on_request_headers(Downstream *downstream, auto content_length = req.fs.header(http2::HD_CONTENT_LENGTH); if (content_length) { // libnghttp2 guarantees this can be parsed - req.fs.content_length = util::parse_uint(content_length->value); + req.fs.content_length = + util::parse_uint(content_length->value).value_or(-1); } // presence of mandatory header fields are guaranteed by libnghttp2. @@ -385,8 +384,7 @@ int Http2Upstream::on_request_headers(Downstream *downstream, } if (path) { - if (method_token == HTTP_OPTIONS && - path->value == StringRef::from_lit("*")) { + if (method_token == HTTP_OPTIONS && path->value == "*"_sr) { // Server-wide OPTIONS request. Path is empty. } else if (config->http2_proxy && faddr->alt_mode == UpstreamAltMode::NONE) { @@ -399,7 +397,7 @@ int Http2Upstream::on_request_headers(Downstream *downstream, auto connect_proto = req.fs.header(http2::HD__PROTOCOL); if (connect_proto) { - if (connect_proto->value != "websocket") { + if (connect_proto->value != "websocket"_sr) { if (error_reply(downstream, 400) != 0) { return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; } @@ -744,7 +742,7 @@ int on_frame_send_callback(nghttp2_session *session, const nghttp2_frame *frame, auto value = make_string_ref(promised_balloc, StringRef{nv.value, nv.valuelen}); - auto token = http2::lookup_token(nv.name, nv.namelen); + auto token = http2::lookup_token(name); switch (token) { case http2::HD__METHOD: req.method = http2::lookup_method_token(value); @@ -1510,10 +1508,16 @@ int Http2Upstream::send_reply(Downstream *downstream, const uint8_t *body, nghttp2_data_provider2 data_prd, *data_prd_ptr = nullptr; - if (bodylen) { + const auto &req = downstream->request(); + + if (req.method != HTTP_HEAD && bodylen) { data_prd.source.ptr = downstream; data_prd.read_callback = downstream_data_read_callback; data_prd_ptr = &data_prd; + + auto buf = downstream->get_response_buf(); + + buf->append(body, bodylen); } const auto &resp = downstream->response(); @@ -1529,7 +1533,7 @@ int Http2Upstream::send_reply(Downstream *downstream, const uint8_t *body, auto response_status = http2::stringify_status(balloc, resp.http_status); - nva.push_back(http2::make_nv_ls_nocopy(":status", response_status)); + nva.push_back(http2::make_field(":status"_sr, response_status)); for (auto &kv : headers) { if (kv.name.empty() || kv.name[0] == ':') { @@ -1544,15 +1548,16 @@ int Http2Upstream::send_reply(Downstream *downstream, const uint8_t *body, case http2::HD_UPGRADE: continue; } - nva.push_back(http2::make_nv_nocopy(kv.name, kv.value, kv.no_index)); + nva.push_back( + http2::make_field(kv.name, kv.value, http2::no_index(kv.no_index))); } if (!resp.fs.header(http2::HD_SERVER)) { - nva.push_back(http2::make_nv_ls_nocopy("server", config->http.server_name)); + nva.push_back(http2::make_field("server"_sr, config->http.server_name)); } for (auto &p : httpconf.add_response_headers) { - nva.push_back(http2::make_nv_nocopy(p.name, p.value)); + nva.push_back(http2::make_field(p.name, p.value)); } rv = nghttp2_submit_response2(session_, downstream->get_stream_id(), @@ -1563,10 +1568,6 @@ int Http2Upstream::send_reply(Downstream *downstream, const uint8_t *body, return -1; } - auto buf = downstream->get_response_buf(); - - buf->append(body, bodylen); - downstream->set_response_state(DownstreamState::MSG_COMPLETE); if (data_prd_ptr) { @@ -1585,13 +1586,22 @@ int Http2Upstream::error_reply(Downstream *downstream, auto html = http::create_error_html(balloc, status_code); resp.http_status = status_code; - auto body = downstream->get_response_buf(); - body->append(html); - downstream->set_response_state(DownstreamState::MSG_COMPLETE); - nghttp2_data_provider2 data_prd; - data_prd.source.ptr = downstream; - data_prd.read_callback = downstream_data_read_callback; + nghttp2_data_provider2 data_prd, *data_prd_ptr = nullptr; + + const auto &req = downstream->request(); + + if (req.method != HTTP_HEAD) { + data_prd.source.ptr = downstream; + data_prd.read_callback = downstream_data_read_callback; + data_prd_ptr = &data_prd; + + auto body = downstream->get_response_buf(); + + body->append(html); + } + + downstream->set_response_state(DownstreamState::MSG_COMPLETE); auto lgconf = log_config(); lgconf->update_tstamp(std::chrono::system_clock::now()); @@ -1600,15 +1610,15 @@ int Http2Upstream::error_reply(Downstream *downstream, auto content_length = util::make_string_ref_uint(balloc, html.size()); auto date = make_string_ref(balloc, lgconf->tstamp->time_http); - auto nva = std::array{ - {http2::make_nv_ls_nocopy(":status", response_status), - http2::make_nv_ll("content-type", "text/html; charset=UTF-8"), - http2::make_nv_ls_nocopy("server", get_config()->http.server_name), - http2::make_nv_ls_nocopy("content-length", content_length), - http2::make_nv_ls_nocopy("date", date)}}; + auto nva = std::to_array( + {http2::make_field(":status"_sr, response_status), + http2::make_field("content-type"_sr, "text/html; charset=UTF-8"_sr), + http2::make_field("server"_sr, get_config()->http.server_name), + http2::make_field("content-length"_sr, content_length), + http2::make_field("date"_sr, date)}); rv = nghttp2_submit_response2(session_, downstream->get_stream_id(), - nva.data(), nva.size(), &data_prd); + nva.data(), nva.size(), data_prd_ptr); if (rv < NGHTTP2_ERR_FATAL) { ULOG(FATAL, this) << "nghttp2_submit_response2() failed: " << nghttp2_strerror(rv); @@ -1747,7 +1757,7 @@ int Http2Upstream::on_downstream_header_complete(Downstream *downstream) { if (downstream->get_non_final_response()) { auto response_status = http2::stringify_status(balloc, resp.http_status); - nva.push_back(http2::make_nv_ls_nocopy(":status", response_status)); + nva.push_back(http2::make_field(":status"_sr, response_status)); http2::copy_headers_to_nva_nocopy(nva, resp.fs.headers(), http2::HDOP_STRIP_ALL); @@ -1780,16 +1790,16 @@ int Http2Upstream::on_downstream_header_complete(Downstream *downstream) { response_status = http2::stringify_status(balloc, resp.http_status); } - nva.push_back(http2::make_nv_ls_nocopy(":status", response_status)); + nva.push_back(http2::make_field(":status"_sr, response_status)); http2::copy_headers_to_nva_nocopy(nva, resp.fs.headers(), striphd_flags); if (!config->http2_proxy && !httpconf.no_server_rewrite) { - nva.push_back(http2::make_nv_ls_nocopy("server", httpconf.server_name)); + nva.push_back(http2::make_field("server"_sr, httpconf.server_name)); } else { auto server = resp.fs.header(http2::HD_SERVER); if (server) { - nva.push_back(http2::make_nv_ls_nocopy("server", (*server).value)); + nva.push_back(http2::make_field("server"_sr, (*server).value)); } } @@ -1805,22 +1815,22 @@ int Http2Upstream::on_downstream_header_complete(Downstream *downstream) { http::require_cookie_secure_attribute(cookieconf.secure, req.scheme); auto cookie_str = http::create_affinity_cookie( balloc, cookieconf.name, affinity_cookie, cookieconf.path, secure); - nva.push_back(http2::make_nv_ls_nocopy("set-cookie", cookie_str)); + nva.push_back(http2::make_field("set-cookie"_sr, cookie_str)); } } if (!resp.fs.header(http2::HD_ALT_SVC)) { // We won't change or alter alt-svc from backend for now if (!httpconf.http2_altsvc_header_value.empty()) { - nva.push_back(http2::make_nv_ls_nocopy( - "alt-svc", httpconf.http2_altsvc_header_value)); + nva.push_back( + http2::make_field("alt-svc"_sr, httpconf.http2_altsvc_header_value)); } } auto via = resp.fs.header(http2::HD_VIA); if (httpconf.no_via) { if (via) { - nva.push_back(http2::make_nv_ls_nocopy("via", (*via).value)); + nva.push_back(http2::make_field("via"_sr, (*via).value)); } } else { // we don't create more than 16 bytes in @@ -1831,7 +1841,7 @@ int Http2Upstream::on_downstream_header_complete(Downstream *downstream) { } auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; + auto p = std::begin(iov); if (via) { p = std::copy(std::begin(via->value), std::end(via->value), p); p = util::copy_lit(p, ", "); @@ -1839,17 +1849,18 @@ int Http2Upstream::on_downstream_header_complete(Downstream *downstream) { p = http::create_via_header_value(p, resp.http_major, resp.http_minor); *p = '\0'; - nva.push_back(http2::make_nv_ls_nocopy("via", StringRef{iov.base, p})); + nva.push_back( + http2::make_field("via"_sr, StringRef{std::span{std::begin(iov), p}})); } for (auto &p : httpconf.add_response_headers) { - nva.push_back(http2::make_nv_nocopy(p.name, p.value)); + nva.push_back(http2::make_field(p.name, p.value)); } if (downstream->get_stream_id() % 2 == 0) { // This header field is basically for human on client side to // figure out that the resource is pushed. - nva.push_back(http2::make_nv_ll("x-http2-push", "1")); + nva.push_back(http2::make_field("x-http2-push"_sr, "1"_sr)); } if (LOG_ENABLED(INFO)) { @@ -1993,7 +2004,7 @@ int Http2Upstream::on_downstream_abort_request_with_https_redirect( int Http2Upstream::redirect_to_https(Downstream *downstream) { auto &req = downstream->request(); - if (req.regular_connect_method() || req.scheme != "http") { + if (req.regular_connect_method() || req.scheme != "http"_sr) { return error_reply(downstream, 400); } @@ -2007,19 +2018,16 @@ int Http2Upstream::redirect_to_https(Downstream *downstream) { auto &httpconf = config->http; StringRef loc; - if (httpconf.redirect_https_port == StringRef::from_lit("443")) { - loc = concat_string_ref(balloc, StringRef::from_lit("https://"), authority, - req.path); + if (httpconf.redirect_https_port == "443"_sr) { + loc = concat_string_ref(balloc, "https://"_sr, authority, req.path); } else { - loc = concat_string_ref(balloc, StringRef::from_lit("https://"), authority, - StringRef::from_lit(":"), + loc = concat_string_ref(balloc, "https://"_sr, authority, ":"_sr, httpconf.redirect_https_port, req.path); } auto &resp = downstream->response(); resp.http_status = 308; - resp.fs.add_header_token(StringRef::from_lit("location"), loc, false, - http2::HD_LOCATION); + resp.fs.add_header_token("location"_sr, loc, false, http2::HD_LOCATION); return send_reply(downstream, nullptr, 0); } @@ -2216,10 +2224,10 @@ int Http2Upstream::submit_push_promise(const StringRef &scheme, nva.reserve(4 + req.fs.headers().size()); // just use "GET" for now - nva.push_back(http2::make_nv_ll(":method", "GET")); - nva.push_back(http2::make_nv_ls_nocopy(":scheme", scheme)); - nva.push_back(http2::make_nv_ls_nocopy(":path", path)); - nva.push_back(http2::make_nv_ls_nocopy(":authority", authority)); + nva.push_back(http2::make_field(":method"_sr, "GET"_sr)); + nva.push_back(http2::make_field(":scheme"_sr, scheme)); + nva.push_back(http2::make_field(":path"_sr, path)); + nva.push_back(http2::make_field(":authority"_sr, authority)); for (auto &kv : req.fs.headers()) { switch (kv.token) { @@ -2234,7 +2242,8 @@ int Http2Upstream::submit_push_promise(const StringRef &scheme, case http2::HD_CACHE_CONTROL: case http2::HD_HOST: case http2::HD_USER_AGENT: - nva.push_back(http2::make_nv_nocopy(kv.name, kv.value, kv.no_index)); + nva.push_back( + http2::make_field(kv.name, kv.value, http2::no_index(kv.no_index))); break; } } @@ -2378,7 +2387,8 @@ int Http2Upstream::on_downstream_push_promise_complete( nva.reserve(headers.size()); for (auto &kv : headers) { - nva.push_back(http2::make_nv(kv.name, kv.value, kv.no_index)); + nva.push_back( + http2::make_field_nv(kv.name, kv.value, http2::no_index(kv.no_index))); } auto promised_stream_id = nghttp2_submit_push_promise( diff --git a/yass/third_party/nghttp2/src/shrpx_http3_upstream.cc b/yass/third_party/nghttp2/src/shrpx_http3_upstream.cc index d12d2da1c8..0be846d09f 100644 --- a/yass/third_party/nghttp2/src/shrpx_http3_upstream.cc +++ b/yass/third_party/nghttp2/src/shrpx_http3_upstream.cc @@ -120,6 +120,9 @@ Http3Upstream::Http3Upstream(ClientHandler *handler) !get_config()->http2_proxy}, tx_{ .data = std::unique_ptr(new uint8_t[64_k]), +#ifndef UDP_SEGMENT + .no_gso = true, +#endif // UDP_SEGMENT } { auto conn = handler_->get_connection(); conn->conn_ref.get_conn = shrpx::get_conn; @@ -273,7 +276,7 @@ int recv_stream_data(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id, void *user_data, void *stream_user_data) { auto upstream = static_cast(user_data); - if (upstream->recv_stream_data(flags, stream_id, data, datalen) != 0) { + if (upstream->recv_stream_data(flags, stream_id, {data, datalen}) != 0) { return NGTCP2_ERR_CALLBACK_FAILURE; } @@ -282,11 +285,12 @@ int recv_stream_data(ngtcp2_conn *conn, uint32_t flags, int64_t stream_id, } // namespace int Http3Upstream::recv_stream_data(uint32_t flags, int64_t stream_id, - const uint8_t *data, size_t datalen) { + std::span data) { assert(httpconn_); - auto nconsumed = nghttp3_conn_read_stream( - httpconn_, stream_id, data, datalen, flags & NGTCP2_STREAM_DATA_FLAG_FIN); + auto nconsumed = + nghttp3_conn_read_stream(httpconn_, stream_id, data.data(), data.size(), + flags & NGTCP2_STREAM_DATA_FLAG_FIN); if (nconsumed < 0) { ULOG(ERROR, this) << "nghttp3_conn_read_stream: " << nghttp3_strerror(nconsumed); @@ -506,25 +510,22 @@ int path_validation(ngtcp2_conn *conn, uint32_t flags, const ngtcp2_path *path, } // namespace int Http3Upstream::send_new_token(const ngtcp2_addr *remote_addr) { - std::array token; - size_t tokenlen; - auto worker = handler_->get_worker(); auto conn_handler = worker->get_connection_handler(); auto &qkms = conn_handler->get_quic_keying_materials(); auto &qkm = qkms->keying_materials.front(); - if (generate_token(token.data(), tokenlen, remote_addr->addr, - remote_addr->addrlen, qkm.secret.data(), - qkm.secret.size()) != 0) { + std::array tokenbuf; + + auto token = generate_token(tokenbuf, remote_addr->addr, remote_addr->addrlen, + qkm.secret, qkm.id); + if (!token) { return -1; } - assert(tokenlen == NGTCP2_CRYPTO_MAX_REGULAR_TOKENLEN); + assert(token->size() == NGTCP2_CRYPTO_MAX_REGULAR_TOKENLEN + 1); - token[tokenlen++] = qkm.id; - - auto rv = ngtcp2_conn_submit_new_token(conn_, token.data(), tokenlen); + auto rv = ngtcp2_conn_submit_new_token(conn_, token->data(), token->size()); if (rv != 0) { ULOG(ERROR, this) << "ngtcp2_conn_submit_new_token: " << ngtcp2_strerror(rv); @@ -553,8 +554,8 @@ int recv_tx_key(ngtcp2_conn *conn, ngtcp2_encryption_level level, int Http3Upstream::init(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_hd &initial_hd, - const ngtcp2_cid *odcid, const uint8_t *token, - size_t tokenlen, ngtcp2_token_type token_type) { + const ngtcp2_cid *odcid, std::span token, + ngtcp2_token_type token_type) { int rv; auto worker = handler_->get_worker(); @@ -637,8 +638,8 @@ int Http3Upstream::init(const UpstreamAddr *faddr, const Address &remote_addr, settings.max_window = http3conf.upstream.max_connection_window_size; settings.max_stream_window = http3conf.upstream.max_window_size; settings.rand_ctx.native_handle = &worker->get_randgen(); - settings.token = token; - settings.tokenlen = tokenlen; + settings.token = token.data(); + settings.tokenlen = token.size(); settings.token_type = token_type; settings.initial_pkt_num = std::uniform_int_distribution( 0, std::numeric_limits::max())(worker->get_randgen()); @@ -779,17 +780,14 @@ int Http3Upstream::on_write() { int Http3Upstream::write_streams() { std::array vec; auto max_udp_payload_size = ngtcp2_conn_get_max_tx_udp_payload_size(conn_); -#ifdef UDP_SEGMENT auto path_max_udp_payload_size = ngtcp2_conn_get_path_max_tx_udp_payload_size(conn_); -#endif // UDP_SEGMENT - auto max_pktcnt = - std::max(ngtcp2_conn_get_send_quantum(conn_) / max_udp_payload_size, - static_cast(1)); ngtcp2_pkt_info pi, prev_pi; - uint8_t *bufpos = tx_.data.get(); + auto txbuf = + std::span{tx_.data.get(), std::max(ngtcp2_conn_get_send_quantum(conn_), + path_max_udp_payload_size)}; + auto buf = txbuf; ngtcp2_path_storage ps, prev_ps; - size_t pktcnt = 0; int rv; size_t gso_size = 0; auto ts = quic_timestamp(); @@ -824,9 +822,12 @@ int Http3Upstream::write_streams() { flags |= NGTCP2_WRITE_STREAM_FLAG_FIN; } + auto buflen = buf.size() >= max_udp_payload_size + ? max_udp_payload_size + : path_max_udp_payload_size; auto nwrite = ngtcp2_conn_writev_stream( - conn_, &ps.path, &pi, bufpos, max_udp_payload_size, &ndatalen, flags, - stream_id, reinterpret_cast(v), vcnt, ts); + conn_, &ps.path, &pi, buf.data(), buflen, &ndatalen, flags, stream_id, + reinterpret_cast(v), vcnt, ts); if (nwrite < 0) { switch (nwrite) { case NGTCP2_ERR_STREAM_DATA_BLOCKED: @@ -872,18 +873,17 @@ int Http3Upstream::write_streams() { } if (nwrite == 0) { - if (bufpos - tx_.data.get()) { + auto data = std::span{std::begin(txbuf), std::begin(buf)}; + if (!data.empty()) { auto faddr = static_cast(prev_ps.path.user_data); - auto data = tx_.data.get(); - auto datalen = bufpos - data; - rv = send_packet(faddr, prev_ps.path.remote.addr, - prev_ps.path.remote.addrlen, prev_ps.path.local.addr, - prev_ps.path.local.addrlen, prev_pi, data, datalen, - gso_size); + auto [rest, rv] = + send_packet(faddr, prev_ps.path.remote.addr, + prev_ps.path.remote.addrlen, prev_ps.path.local.addr, + prev_ps.path.local.addrlen, prev_pi, data, gso_size); if (rv == SHRPX_ERR_SEND_BLOCKED) { on_send_blocked(faddr, prev_ps.path.remote, prev_ps.path.local, - prev_pi, data, datalen, gso_size); + prev_pi, rest, gso_size); signal_write_upstream_addr(faddr); } @@ -894,10 +894,11 @@ int Http3Upstream::write_streams() { return 0; } - bufpos += nwrite; + auto last_pkt = std::begin(buf); -#ifdef UDP_SEGMENT - if (pktcnt == 0) { + buf = buf.subspan(nwrite); + + if (last_pkt == std::begin(txbuf)) { ngtcp2_path_copy(&prev_ps.path, &ps.path); prev_pi = pi; gso_size = nwrite; @@ -907,35 +908,36 @@ int Http3Upstream::write_streams() { (gso_size > path_max_udp_payload_size && static_cast(nwrite) != gso_size)) { auto faddr = static_cast(prev_ps.path.user_data); - auto data = tx_.data.get(); - auto datalen = bufpos - data - nwrite; + auto data = std::span{std::begin(txbuf), last_pkt}; - rv = send_packet(faddr, prev_ps.path.remote.addr, - prev_ps.path.remote.addrlen, prev_ps.path.local.addr, - prev_ps.path.local.addrlen, prev_pi, data, datalen, - gso_size); + auto [rest, rv] = + send_packet(faddr, prev_ps.path.remote.addr, + prev_ps.path.remote.addrlen, prev_ps.path.local.addr, + prev_ps.path.local.addrlen, prev_pi, data, gso_size); switch (rv) { case SHRPX_ERR_SEND_BLOCKED: on_send_blocked(faddr, prev_ps.path.remote, prev_ps.path.local, prev_pi, - data, datalen, gso_size); + rest, gso_size); + data = std::span{last_pkt, std::begin(buf)}; on_send_blocked(static_cast(ps.path.user_data), - ps.path.remote, ps.path.local, pi, bufpos - nwrite, - nwrite, 0); + ps.path.remote, ps.path.local, pi, data, data.size()); signal_write_upstream_addr(faddr); break; default: { auto faddr = static_cast(ps.path.user_data); - auto data = bufpos - nwrite; + auto data = std::span{last_pkt, std::begin(buf)}; - rv = send_packet(faddr, ps.path.remote.addr, ps.path.remote.addrlen, - ps.path.local.addr, ps.path.local.addrlen, pi, data, - nwrite, 0); + auto [rest, rv] = send_packet( + faddr, ps.path.remote.addr, ps.path.remote.addrlen, + ps.path.local.addr, ps.path.local.addrlen, pi, data, data.size()); if (rv == SHRPX_ERR_SEND_BLOCKED) { - on_send_blocked(faddr, ps.path.remote, ps.path.local, pi, data, - nwrite, 0); + assert(rest.size() == data.size()); + + on_send_blocked(faddr, ps.path.remote, ps.path.local, pi, rest, + rest.size()); signal_write_upstream_addr(faddr); } @@ -947,16 +949,16 @@ int Http3Upstream::write_streams() { return 0; } - if (++pktcnt == max_pktcnt || static_cast(nwrite) < gso_size) { + if (buf.size() < path_max_udp_payload_size || + static_cast(nwrite) < gso_size) { auto faddr = static_cast(ps.path.user_data); - auto data = tx_.data.get(); - auto datalen = bufpos - data; + auto data = std::span{std::begin(txbuf), std::begin(buf)}; - rv = send_packet(faddr, ps.path.remote.addr, ps.path.remote.addrlen, - ps.path.local.addr, ps.path.local.addrlen, pi, data, - datalen, gso_size); + auto [rest, rv] = send_packet(faddr, ps.path.remote.addr, + ps.path.remote.addrlen, ps.path.local.addr, + ps.path.local.addrlen, pi, data, gso_size); if (rv == SHRPX_ERR_SEND_BLOCKED) { - on_send_blocked(faddr, ps.path.remote, ps.path.local, pi, data, datalen, + on_send_blocked(faddr, ps.path.remote, ps.path.local, pi, rest, gso_size); signal_write_upstream_addr(faddr); @@ -966,33 +968,6 @@ int Http3Upstream::write_streams() { return 0; } -#else // !UDP_SEGMENT - auto faddr = static_cast(ps.path.user_data); - auto data = tx_.data.get(); - auto datalen = bufpos - data; - - rv = send_packet(faddr, ps.path.remote.addr, ps.path.remote.addrlen, - ps.path.local.addr, ps.path.local.addrlen, pi, data, - datalen, 0); - if (rv == SHRPX_ERR_SEND_BLOCKED) { - on_send_blocked(faddr, ps.path.remote, ps.path.local, pi, data, datalen, - 0); - - ngtcp2_conn_update_pkt_tx_time(conn_, ts); - - signal_write_upstream_addr(faddr); - - return 0; - } - - if (++pktcnt == max_pktcnt) { - ngtcp2_conn_update_pkt_tx_time(conn_, ts); - - return 0; - } - - bufpos = tx_.data.get(); -#endif // !UDP_SEGMENT } return 0; @@ -1329,7 +1304,7 @@ int Http3Upstream::on_downstream_header_complete(Downstream *downstream) { if (downstream->get_non_final_response()) { auto response_status = http2::stringify_status(balloc, resp.http_status); - nva.push_back(http3::make_nv_ls_nocopy(":status", response_status)); + nva.push_back(http3::make_field(":status"_sr, response_status)); http3::copy_headers_to_nva_nocopy(nva, resp.fs.headers(), http2::HDOP_STRIP_ALL); @@ -1361,16 +1336,16 @@ int Http3Upstream::on_downstream_header_complete(Downstream *downstream) { response_status = http2::stringify_status(balloc, resp.http_status); } - nva.push_back(http3::make_nv_ls_nocopy(":status", response_status)); + nva.push_back(http3::make_field(":status"_sr, response_status)); http3::copy_headers_to_nva_nocopy(nva, resp.fs.headers(), striphd_flags); if (!config->http2_proxy && !httpconf.no_server_rewrite) { - nva.push_back(http3::make_nv_ls_nocopy("server", httpconf.server_name)); + nva.push_back(http3::make_field("server"_sr, httpconf.server_name)); } else { auto server = resp.fs.header(http2::HD_SERVER); if (server) { - nva.push_back(http3::make_nv_ls_nocopy("server", (*server).value)); + nva.push_back(http3::make_field("server"_sr, (*server).value)); } } @@ -1386,14 +1361,14 @@ int Http3Upstream::on_downstream_header_complete(Downstream *downstream) { http::require_cookie_secure_attribute(cookieconf.secure, req.scheme); auto cookie_str = http::create_affinity_cookie( balloc, cookieconf.name, affinity_cookie, cookieconf.path, secure); - nva.push_back(http3::make_nv_ls_nocopy("set-cookie", cookie_str)); + nva.push_back(http3::make_field("set-cookie"_sr, cookie_str)); } } auto via = resp.fs.header(http2::HD_VIA); if (httpconf.no_via) { if (via) { - nva.push_back(http3::make_nv_ls_nocopy("via", (*via).value)); + nva.push_back(http3::make_field("via"_sr, (*via).value)); } } else { // we don't create more than 16 bytes in @@ -1404,7 +1379,7 @@ int Http3Upstream::on_downstream_header_complete(Downstream *downstream) { } auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; + auto p = std::begin(iov); if (via) { p = std::copy(std::begin(via->value), std::end(via->value), p); p = util::copy_lit(p, ", "); @@ -1412,11 +1387,12 @@ int Http3Upstream::on_downstream_header_complete(Downstream *downstream) { p = http::create_via_header_value(p, resp.http_major, resp.http_minor); *p = '\0'; - nva.push_back(http3::make_nv_ls_nocopy("via", StringRef{iov.base, p})); + nva.push_back( + http3::make_field("via"_sr, StringRef{std::span{std::begin(iov), p}})); } for (auto &p : httpconf.add_response_headers) { - nva.push_back(http3::make_nv_nocopy(p.name, p.value)); + nva.push_back(http3::make_field(p.name, p.value)); } if (LOG_ENABLED(INFO)) { @@ -1582,7 +1558,7 @@ void Http3Upstream::on_handler_delete() { send_packet(static_cast(ps.path.user_data), ps.path.remote.addr, ps.path.remote.addrlen, ps.path.local.addr, - ps.path.local.addrlen, pi, conn_close_.data(), nwrite, 0); + ps.path.local.addrlen, pi, conn_close_, conn_close_.size()); } auto d = @@ -1700,9 +1676,15 @@ int Http3Upstream::send_reply(Downstream *downstream, const uint8_t *body, nghttp3_data_reader data_read, *data_read_ptr = nullptr; - if (bodylen) { + const auto &req = downstream->request(); + + if (req.method != HTTP_HEAD && bodylen) { data_read.read_data = downstream_read_data_callback; data_read_ptr = &data_read; + + auto buf = downstream->get_response_buf(); + + buf->append(body, bodylen); } const auto &resp = downstream->response(); @@ -1718,7 +1700,7 @@ int Http3Upstream::send_reply(Downstream *downstream, const uint8_t *body, auto response_status = http2::stringify_status(balloc, resp.http_status); - nva.push_back(http3::make_nv_ls_nocopy(":status", response_status)); + nva.push_back(http3::make_field(":status"_sr, response_status)); for (auto &kv : headers) { if (kv.name.empty() || kv.name[0] == ':') { @@ -1733,15 +1715,16 @@ int Http3Upstream::send_reply(Downstream *downstream, const uint8_t *body, case http2::HD_UPGRADE: continue; } - nva.push_back(http3::make_nv_nocopy(kv.name, kv.value, kv.no_index)); + nva.push_back( + http3::make_field(kv.name, kv.value, http3::never_index(kv.no_index))); } if (!resp.fs.header(http2::HD_SERVER)) { - nva.push_back(http3::make_nv_ls_nocopy("server", config->http.server_name)); + nva.push_back(http3::make_field("server"_sr, config->http.server_name)); } for (auto &p : httpconf.add_response_headers) { - nva.push_back(http3::make_nv_nocopy(p.name, p.value)); + nva.push_back(http3::make_field(p.name, p.value)); } rv = nghttp3_conn_submit_response(httpconn_, downstream->get_stream_id(), @@ -1752,10 +1735,6 @@ int Http3Upstream::send_reply(Downstream *downstream, const uint8_t *body, return -1; } - auto buf = downstream->get_response_buf(); - - buf->append(body, bodylen); - downstream->set_response_state(DownstreamState::MSG_COMPLETE); if (data_read_ptr) { @@ -1801,7 +1780,7 @@ void Http3Upstream::cancel_premature_downstream( int Http3Upstream::on_read(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen) { + std::span data) { int rv; auto path = ngtcp2_path{ @@ -1816,7 +1795,8 @@ int Http3Upstream::on_read(const UpstreamAddr *faddr, const_cast(faddr), }; - rv = ngtcp2_conn_read_pkt(conn_, &path, &pi, data, datalen, quic_timestamp()); + rv = ngtcp2_conn_read_pkt(conn_, &path, &pi, data.data(), data.size(), + quic_timestamp()); if (rv != 0) { switch (rv) { case NGTCP2_ERR_DRAINING: @@ -1834,8 +1814,8 @@ int Http3Upstream::on_read(const UpstreamAddr *faddr, ngtcp2_version_cid vc; - rv = - ngtcp2_pkt_decode_version_cid(&vc, data, datalen, SHRPX_QUIC_SCIDLEN); + rv = ngtcp2_pkt_decode_version_cid(&vc, data.data(), data.size(), + SHRPX_QUIC_SCIDLEN); if (rv != 0) { return -1; } @@ -1843,9 +1823,9 @@ int Http3Upstream::on_read(const UpstreamAddr *faddr, // Overwrite error if any is set ngtcp2_ccerr_set_liberr(&last_error_, rv, nullptr, 0); - quic_conn_handler->send_retry(handler_->get_upstream_addr(), vc.version, - vc.dcid, vc.dcidlen, vc.scid, vc.scidlen, - remote_addr, local_addr, datalen * 3); + quic_conn_handler->send_retry( + handler_->get_upstream_addr(), vc.version, {vc.dcid, vc.dcidlen}, + {vc.scid, vc.scidlen}, remote_addr, local_addr, data.size() * 3); return -1; } @@ -1874,16 +1854,40 @@ int Http3Upstream::on_read(const UpstreamAddr *faddr, return 0; } -int Http3Upstream::send_packet(const UpstreamAddr *faddr, - const sockaddr *remote_sa, size_t remote_salen, - const sockaddr *local_sa, size_t local_salen, - const ngtcp2_pkt_info &pi, const uint8_t *data, - size_t datalen, size_t gso_size) { +std::pair, int> +Http3Upstream::send_packet(const UpstreamAddr *faddr, const sockaddr *remote_sa, + size_t remote_salen, const sockaddr *local_sa, + size_t local_salen, const ngtcp2_pkt_info &pi, + std::span data, size_t gso_size) { + if (tx_.no_gso) { + for (; !data.empty();) { + auto len = std::min(gso_size, data.size()); + auto rv = + quic_send_packet(faddr, remote_sa, remote_salen, local_sa, + local_salen, pi, {std::begin(data), len}, gso_size); + if (rv != 0) { + switch (rv) { + case -EAGAIN: +#if EAGAIN != EWOULDBLOCK + case -EWOULDBLOCK: +#endif // EAGAIN != EWOULDBLOCK + return {data, SHRPX_ERR_SEND_BLOCKED}; + default: + return {data, -1}; + } + } + + data = data.subspan(len); + } + + return {{}, 0}; + } + auto rv = quic_send_packet(faddr, remote_sa, remote_salen, local_sa, - local_salen, pi, data, datalen, gso_size); + local_salen, pi, data, gso_size); switch (rv) { case 0: - return 0; + return {{}, 0}; // With GSO, sendmsg may fail with EINVAL if UDP payload is too // large. case -EINVAL: @@ -1894,22 +1898,32 @@ int Http3Upstream::send_packet(const UpstreamAddr *faddr, #if EAGAIN != EWOULDBLOCK case -EWOULDBLOCK: #endif // EAGAIN != EWOULDBLOCK - return SHRPX_ERR_SEND_BLOCKED; + return {data, SHRPX_ERR_SEND_BLOCKED}; + case -EIO: + if (tx_.no_gso) { + break; + } + + tx_.no_gso = true; + + return send_packet(faddr, remote_sa, remote_salen, local_sa, local_salen, + pi, data, gso_size); default: break; } - return -1; + return {{}, -1}; } void Http3Upstream::on_send_blocked(const UpstreamAddr *faddr, const ngtcp2_addr &remote_addr, const ngtcp2_addr &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen, + std::span data, size_t gso_size) { assert(tx_.num_blocked || !tx_.send_blocked); assert(tx_.num_blocked < 2); + assert(gso_size); tx_.send_blocked = true; @@ -1923,22 +1937,21 @@ void Http3Upstream::on_send_blocked(const UpstreamAddr *faddr, p.faddr = faddr; p.pi = pi; p.data = data; - p.datalen = datalen; p.gso_size = gso_size; } int Http3Upstream::send_blocked_packet() { - int rv; - assert(tx_.send_blocked); for (; tx_.num_blocked_sent < tx_.num_blocked; ++tx_.num_blocked_sent) { auto &p = tx_.blocked[tx_.num_blocked_sent]; - rv = send_packet(p.faddr, &p.remote_addr.su.sa, p.remote_addr.len, - &p.local_addr.su.sa, p.local_addr.len, p.pi, p.data, - p.datalen, p.gso_size); + auto [rest, rv] = send_packet(p.faddr, &p.remote_addr.su.sa, + p.remote_addr.len, &p.local_addr.su.sa, + p.local_addr.len, p.pi, p.data, p.gso_size); if (rv == SHRPX_ERR_SEND_BLOCKED) { + p.data = rest; + signal_write_upstream_addr(p.faddr); return 0; @@ -1998,7 +2011,7 @@ int Http3Upstream::handle_error() { send_packet(static_cast(ps.path.user_data), ps.path.remote.addr, ps.path.remote.addrlen, ps.path.local.addr, - ps.path.local.addrlen, pi, conn_close_.data(), nwrite, 0); + ps.path.local.addrlen, pi, conn_close_, conn_close_.size()); return -1; } @@ -2185,22 +2198,20 @@ int Http3Upstream::http_recv_request_header(Downstream *downstream, return 0; } - auto token = http2::lookup_token(namebuf.base, namebuf.len); + auto nameref = StringRef{namebuf.base, namebuf.len}; + auto valueref = StringRef{valuebuf.base, valuebuf.len}; + auto token = http2::lookup_token(nameref); auto no_index = flags & NGHTTP3_NV_FLAG_NEVER_INDEX; downstream->add_rcbuf(name); downstream->add_rcbuf(value); if (trailer) { - req.fs.add_trailer_token(StringRef{namebuf.base, namebuf.len}, - StringRef{valuebuf.base, valuebuf.len}, no_index, - token); + req.fs.add_trailer_token(nameref, valueref, no_index, token); return 0; } - req.fs.add_header_token(StringRef{namebuf.base, namebuf.len}, - StringRef{valuebuf.base, valuebuf.len}, no_index, - token); + req.fs.add_header_token(nameref, valueref, no_index, token); return 0; } @@ -2240,7 +2251,7 @@ int Http3Upstream::http_end_request_headers(Downstream *downstream, int fin) { if (LOG_ENABLED(INFO)) { std::stringstream ss; for (auto &nv : nva) { - if (nv.name == "authorization") { + if (nv.name == "authorization"_sr) { ss << TTY_HTTP_HD << nv.name << TTY_RST << ": \n"; continue; } @@ -2254,7 +2265,8 @@ int Http3Upstream::http_end_request_headers(Downstream *downstream, int fin) { auto content_length = req.fs.header(http2::HD_CONTENT_LENGTH); if (content_length) { // libnghttp3 guarantees this can be parsed - req.fs.content_length = util::parse_uint(content_length->value); + req.fs.content_length = + util::parse_uint(content_length->value).value_or(-1); } // presence of mandatory header fields are guaranteed by libnghttp3. @@ -2298,8 +2310,7 @@ int Http3Upstream::http_end_request_headers(Downstream *downstream, int fin) { } if (path) { - if (method_token == HTTP_OPTIONS && - path->value == StringRef::from_lit("*")) { + if (method_token == HTTP_OPTIONS && path->value == "*"_sr) { // Server-wide OPTIONS request. Path is empty. } else if (config->http2_proxy && faddr->alt_mode == UpstreamAltMode::NONE) { @@ -2312,7 +2323,7 @@ int Http3Upstream::http_end_request_headers(Downstream *downstream, int fin) { auto connect_proto = req.fs.header(http2::HD__PROTOCOL); if (connect_proto) { - if (connect_proto->value != "websocket") { + if (connect_proto->value != "websocket"_sr) { if (error_reply(downstream, 400) != 0) { return -1; } @@ -2452,7 +2463,7 @@ int http_recv_data(nghttp3_conn *conn, int64_t stream_id, const uint8_t *data, auto upstream = static_cast(user_data); auto downstream = static_cast(stream_user_data); - if (upstream->http_recv_data(downstream, data, datalen) != 0) { + if (upstream->http_recv_data(downstream, {data, datalen}) != 0) { return NGHTTP3_ERR_CALLBACK_FAILURE; } @@ -2460,16 +2471,16 @@ int http_recv_data(nghttp3_conn *conn, int64_t stream_id, const uint8_t *data, } } // namespace -int Http3Upstream::http_recv_data(Downstream *downstream, const uint8_t *data, - size_t datalen) { +int Http3Upstream::http_recv_data(Downstream *downstream, + std::span data) { downstream->reset_upstream_rtimer(); - if (downstream->push_upload_data_chunk(data, datalen) != 0) { + if (downstream->push_upload_data_chunk(data.data(), data.size()) != 0) { if (downstream->get_response_state() != DownstreamState::MSG_COMPLETE) { shutdown_stream(downstream, NGHTTP3_H3_INTERNAL_ERROR); } - consume(downstream->get_stream_id(), datalen); + consume(downstream->get_stream_id(), data.size()); return 0; } @@ -2724,12 +2735,21 @@ int Http3Upstream::error_reply(Downstream *downstream, auto html = http::create_error_html(balloc, status_code); resp.http_status = status_code; - auto body = downstream->get_response_buf(); - body->append(html); - downstream->set_response_state(DownstreamState::MSG_COMPLETE); - nghttp3_data_reader data_read; - data_read.read_data = downstream_read_data_callback; + nghttp3_data_reader data_read, *data_read_ptr = nullptr; + + const auto &req = downstream->request(); + + if (req.method != HTTP_HEAD) { + data_read.read_data = downstream_read_data_callback; + data_read_ptr = &data_read; + + auto body = downstream->get_response_buf(); + + body->append(html); + } + + downstream->set_response_state(DownstreamState::MSG_COMPLETE); auto lgconf = log_config(); lgconf->update_tstamp(std::chrono::system_clock::now()); @@ -2738,15 +2758,15 @@ int Http3Upstream::error_reply(Downstream *downstream, auto content_length = util::make_string_ref_uint(balloc, html.size()); auto date = make_string_ref(balloc, lgconf->tstamp->time_http); - auto nva = std::array{ - {http3::make_nv_ls_nocopy(":status", response_status), - http3::make_nv_ll("content-type", "text/html; charset=UTF-8"), - http3::make_nv_ls_nocopy("server", get_config()->http.server_name), - http3::make_nv_ls_nocopy("content-length", content_length), - http3::make_nv_ls_nocopy("date", date)}}; + auto nva = std::to_array( + {http3::make_field(":status"_sr, response_status), + http3::make_field("content-type"_sr, "text/html; charset=UTF-8"_sr), + http3::make_field("server"_sr, get_config()->http.server_name), + http3::make_field("content-length"_sr, content_length), + http3::make_field("date"_sr, date)}); rv = nghttp3_conn_submit_response(httpconn_, downstream->get_stream_id(), - nva.data(), nva.size(), &data_read); + nva.data(), nva.size(), data_read_ptr); if (nghttp3_err_is_fatal(rv)) { ULOG(FATAL, this) << "nghttp3_conn_submit_response() failed: " << nghttp3_strerror(rv); @@ -2891,12 +2911,12 @@ int Http3Upstream::open_qlog_file(const StringRef &dir, const ngtcp2_cid &scid) const { std::array buf; - auto path = dir.str(); + auto path = std::string{dir}; path += '/'; path += util::format_iso8601_basic(buf.data(), std::chrono::system_clock::now()); path += '-'; - path += util::format_hex(scid.data, scid.datalen); + path += util::format_hex(std::span{scid.data, scid.datalen}); path += ".sqlog"; int fd; diff --git a/yass/third_party/nghttp2/src/shrpx_http3_upstream.h b/yass/third_party/nghttp2/src/shrpx_http3_upstream.h index 53c73ae723..ef0fcb4213 100644 --- a/yass/third_party/nghttp2/src/shrpx_http3_upstream.h +++ b/yass/third_party/nghttp2/src/shrpx_http3_upstream.h @@ -89,12 +89,12 @@ public: int init(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_hd &initial_hd, - const ngtcp2_cid *odcid, const uint8_t *token, size_t tokenlen, + const ngtcp2_cid *odcid, std::span token, ngtcp2_token_type token_type); int on_read(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen); + std::span data); int write_streams(); @@ -105,8 +105,8 @@ public: int setup_httpconn(); void add_pending_downstream(std::unique_ptr downstream); - int recv_stream_data(uint32_t flags, int64_t stream_id, const uint8_t *data, - size_t datalen); + int recv_stream_data(uint32_t flags, int64_t stream_id, + std::span data); int acked_stream_data_offset(int64_t stream_id, uint64_t datalen); int extend_max_stream_data(int64_t stream_id); void extend_max_remote_streams_bidi(uint64_t max_streams); @@ -131,16 +131,16 @@ public: int http_shutdown_stream_read(int64_t stream_id); int http_reset_stream(int64_t stream_id, uint64_t app_error_code); int http_stop_sending(int64_t stream_id, uint64_t app_error_code); - int http_recv_data(Downstream *downstream, const uint8_t *data, - size_t datalen); + int http_recv_data(Downstream *downstream, std::span data); int handshake_completed(); int check_shutdown(); int start_graceful_shutdown(); int submit_goaway(); - int send_packet(const UpstreamAddr *faddr, const sockaddr *remote_sa, - size_t remote_salen, const sockaddr *local_sa, - size_t local_salen, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen, size_t gso_size); + std::pair, int> + send_packet(const UpstreamAddr *faddr, const sockaddr *remote_sa, + size_t remote_salen, const sockaddr *local_sa, size_t local_salen, + const ngtcp2_pkt_info &pi, std::span data, + size_t gso_size); void qlog_write(const void *data, size_t datalen, bool fin); int open_qlog_file(const StringRef &dir, const ngtcp2_cid &scid) const; @@ -148,7 +148,7 @@ public: void on_send_blocked(const UpstreamAddr *faddr, const ngtcp2_addr &remote_addr, const ngtcp2_addr &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen, size_t gso_size); + std::span data, size_t gso_size); int send_blocked_packet(); void signal_write_upstream_addr(const UpstreamAddr *faddr); @@ -179,11 +179,11 @@ private: Address local_addr; Address remote_addr; ngtcp2_pkt_info pi; - const uint8_t *data; - size_t datalen; + std::span data; size_t gso_size; } blocked[2]; std::unique_ptr data; + bool no_gso; } tx_; }; diff --git a/yass/third_party/nghttp2/src/shrpx_http_downstream_connection.cc b/yass/third_party/nghttp2/src/shrpx_http_downstream_connection.cc index 4164b8b4d9..8031098089 100644 --- a/yass/third_party/nghttp2/src/shrpx_http_downstream_connection.cc +++ b/yass/third_party/nghttp2/src/shrpx_http_downstream_connection.cc @@ -425,8 +425,8 @@ int HttpDownstreamConnection::initiate_connection() { auto sni_name = addr_->sni.empty() ? StringRef{addr_->host} : StringRef{addr_->sni}; - if (!util::numeric_host(sni_name.c_str())) { - SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name.c_str()); + if (!util::numeric_host(sni_name.data())) { + SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name.data()); } auto session = tls::reuse_tls_session(addr_->tls_session_cache); @@ -564,9 +564,10 @@ int HttpDownstreamConnection::push_request_headers() { return -1; } auto iov = make_byte_ref(balloc, base64::encode_length(nonce.size()) + 1); - auto p = base64::encode(std::begin(nonce), std::end(nonce), iov.base); + auto p = + base64::encode(std::begin(nonce), std::end(nonce), std::begin(iov)); *p = '\0'; - auto key = StringRef{iov.base, p}; + auto key = StringRef{std::span{std::begin(iov), p}}; downstream_->set_ws_key(key); buf->append("Sec-Websocket-Key: "); diff --git a/yass/third_party/nghttp2/src/shrpx_http_test.cc b/yass/third_party/nghttp2/src/shrpx_http_test.cc index f753ec8d5a..8bc3e2e354 100644 --- a/yass/third_party/nghttp2/src/shrpx_http_test.cc +++ b/yass/third_party/nghttp2/src/shrpx_http_test.cc @@ -36,6 +36,8 @@ #include "shrpx_config.h" #include "shrpx_log.h" +using namespace std::literals; + namespace shrpx { namespace { @@ -56,47 +58,34 @@ const MunitSuite http_suite{ void test_shrpx_http_create_forwarded(void) { BlockAllocator balloc(1024, 1024); - assert_stdstring_equal( + assert_stdsv_equal( "by=\"example.com:3000\";for=\"[::1]\";host=\"www.example.com\";" - "proto=https", + "proto=https"sv, http::create_forwarded( balloc, FORWARDED_BY | FORWARDED_FOR | FORWARDED_HOST | FORWARDED_PROTO, - StringRef::from_lit("example.com:3000"), StringRef::from_lit("[::1]"), - StringRef::from_lit("www.example.com"), StringRef::from_lit("https")) - .str()); + "example.com:3000"_sr, "[::1]"_sr, "www.example.com"_sr, "https"_sr)); - assert_stdstring_equal( - "for=192.168.0.1", - http::create_forwarded( - balloc, FORWARDED_FOR, StringRef::from_lit("alpha"), - StringRef::from_lit("192.168.0.1"), StringRef::from_lit("bravo"), - StringRef::from_lit("charlie")) - .str()); + assert_stdsv_equal("for=192.168.0.1"sv, + http::create_forwarded(balloc, FORWARDED_FOR, "alpha"_sr, + "192.168.0.1"_sr, "bravo"_sr, + "charlie"_sr)); - assert_stdstring_equal( - "by=_hidden;for=\"[::1]\"", - http::create_forwarded(balloc, FORWARDED_BY | FORWARDED_FOR, - StringRef::from_lit("_hidden"), - StringRef::from_lit("[::1]"), - StringRef::from_lit(""), StringRef::from_lit("")) - .str()); + assert_stdsv_equal( + "by=_hidden;for=\"[::1]\""sv, + http::create_forwarded(balloc, FORWARDED_BY | FORWARDED_FOR, "_hidden"_sr, + "[::1]"_sr, ""_sr, ""_sr)); - assert_stdstring_equal( - "by=\"[::1]\";for=_hidden", - http::create_forwarded(balloc, FORWARDED_BY | FORWARDED_FOR, - StringRef::from_lit("[::1]"), - StringRef::from_lit("_hidden"), - StringRef::from_lit(""), StringRef::from_lit("")) - .str()); + assert_stdsv_equal( + "by=\"[::1]\";for=_hidden"sv, + http::create_forwarded(balloc, FORWARDED_BY | FORWARDED_FOR, "[::1]"_sr, + "_hidden"_sr, ""_sr, ""_sr)); - assert_stdstring_equal( - "", http::create_forwarded( - balloc, - FORWARDED_BY | FORWARDED_FOR | FORWARDED_HOST | FORWARDED_PROTO, - StringRef::from_lit(""), StringRef::from_lit(""), - StringRef::from_lit(""), StringRef::from_lit("")) - .str()); + assert_stdsv_equal(""sv, http::create_forwarded(balloc, + FORWARDED_BY | FORWARDED_FOR | + FORWARDED_HOST | + FORWARDED_PROTO, + ""_sr, ""_sr, ""_sr, ""_sr)); } void test_shrpx_http_create_via_header_value(void) { @@ -117,27 +106,25 @@ void test_shrpx_http_create_affinity_cookie(void) { BlockAllocator balloc(1024, 1024); StringRef c; - c = http::create_affinity_cookie(balloc, StringRef::from_lit("cookie-val"), - 0xf1e2d3c4u, StringRef{}, false); + c = http::create_affinity_cookie(balloc, "cookie-val"_sr, 0xf1e2d3c4u, + StringRef{}, false); - assert_stdstring_equal("cookie-val=f1e2d3c4", c.str()); + assert_stdsv_equal("cookie-val=f1e2d3c4"sv, c); - c = http::create_affinity_cookie(balloc, StringRef::from_lit("alpha"), - 0x00000000u, StringRef{}, true); - - assert_stdstring_equal("alpha=00000000; Secure", c.str()); - - c = http::create_affinity_cookie(balloc, StringRef::from_lit("bravo"), - 0x01111111u, StringRef::from_lit("bar"), - false); - - assert_stdstring_equal("bravo=01111111; Path=bar", c.str()); - - c = http::create_affinity_cookie(balloc, StringRef::from_lit("charlie"), - 0x01111111u, StringRef::from_lit("bar"), + c = http::create_affinity_cookie(balloc, "alpha"_sr, 0x00000000u, StringRef{}, true); - assert_stdstring_equal("charlie=01111111; Path=bar; Secure", c.str()); + assert_stdsv_equal("alpha=00000000; Secure"sv, c); + + c = http::create_affinity_cookie(balloc, "bravo"_sr, 0x01111111u, "bar"_sr, + false); + + assert_stdsv_equal("bravo=01111111; Path=bar"sv, c); + + c = http::create_affinity_cookie(balloc, "charlie"_sr, 0x01111111u, "bar"_sr, + true); + + assert_stdsv_equal("charlie=01111111; Path=bar; Secure"sv, c); } void test_shrpx_http_create_altsvc_header_value(void) { @@ -145,46 +132,44 @@ void test_shrpx_http_create_altsvc_header_value(void) { BlockAllocator balloc(1024, 1024); std::vector altsvcs{ AltSvc{ - .protocol_id = StringRef::from_lit("h3"), - .host = StringRef::from_lit("127.0.0.1"), - .service = StringRef::from_lit("443"), - .params = StringRef::from_lit("ma=3600"), + .protocol_id = "h3"_sr, + .host = "127.0.0.1"_sr, + .service = "443"_sr, + .params = "ma=3600"_sr, }, }; - assert_stdstring_equal( - R"(h3="127.0.0.1:443"; ma=3600)", - http::create_altsvc_header_value(balloc, altsvcs).str()); + assert_stdsv_equal(R"(h3="127.0.0.1:443"; ma=3600)"sv, + http::create_altsvc_header_value(balloc, altsvcs)); } { BlockAllocator balloc(1024, 1024); std::vector altsvcs{ AltSvc{ - .protocol_id = StringRef::from_lit("h3"), - .service = StringRef::from_lit("443"), - .params = StringRef::from_lit("ma=3600"), + .protocol_id = "h3"_sr, + .service = "443"_sr, + .params = "ma=3600"_sr, }, AltSvc{ - .protocol_id = StringRef::from_lit("h3%"), - .host = StringRef::from_lit("\"foo\""), - .service = StringRef::from_lit("4433"), + .protocol_id = "h3%"_sr, + .host = "\"foo\""_sr, + .service = "4433"_sr, }, }; - assert_stdstring_equal( - R"(h3=":443"; ma=3600, h3%25="\"foo\":4433")", - http::create_altsvc_header_value(balloc, altsvcs).str()); + assert_stdsv_equal(R"(h3=":443"; ma=3600, h3%25="\"foo\":4433")"sv, + http::create_altsvc_header_value(balloc, altsvcs)); } } void test_shrpx_http_check_http_scheme(void) { - assert_true(http::check_http_scheme(StringRef::from_lit("https"), true)); - assert_false(http::check_http_scheme(StringRef::from_lit("https"), false)); - assert_false(http::check_http_scheme(StringRef::from_lit("http"), true)); - assert_true(http::check_http_scheme(StringRef::from_lit("http"), false)); - assert_false(http::check_http_scheme(StringRef::from_lit("foo"), true)); - assert_false(http::check_http_scheme(StringRef::from_lit("foo"), false)); + assert_true(http::check_http_scheme("https"_sr, true)); + assert_false(http::check_http_scheme("https"_sr, false)); + assert_false(http::check_http_scheme("http"_sr, true)); + assert_true(http::check_http_scheme("http"_sr, false)); + assert_false(http::check_http_scheme("foo"_sr, true)); + assert_false(http::check_http_scheme("foo"_sr, false)); assert_false(http::check_http_scheme(StringRef{}, true)); assert_false(http::check_http_scheme(StringRef{}, false)); } diff --git a/yass/third_party/nghttp2/src/shrpx_https_upstream.cc b/yass/third_party/nghttp2/src/shrpx_https_upstream.cc index 04123847f3..aa54eb909a 100644 --- a/yass/third_party/nghttp2/src/shrpx_https_upstream.cc +++ b/yass/third_party/nghttp2/src/shrpx_https_upstream.cc @@ -258,7 +258,7 @@ void rewrite_request_host_path_from_uri(BlockAllocator &balloc, Request &req, // As per https://tools.ietf.org/html/rfc7230#section-5.4, we // rewrite host header field with authority component. - auto authority = util::get_uri_field(uri.c_str(), u, UF_HOST); + auto authority = util::get_uri_field(uri.data(), u, UF_HOST); // TODO properly check IPv6 numeric address auto ipv6 = std::find(std::begin(authority), std::end(authority), ':') != std::end(authority); @@ -271,7 +271,7 @@ void rewrite_request_host_path_from_uri(BlockAllocator &balloc, Request &req, } if (authoritylen > authority.size()) { auto iovec = make_byte_ref(balloc, authoritylen + 1); - auto p = iovec.base; + auto p = std::begin(iovec); if (ipv6) { *p++ = '['; } @@ -286,16 +286,16 @@ void rewrite_request_host_path_from_uri(BlockAllocator &balloc, Request &req, } *p = '\0'; - req.authority = StringRef{iovec.base, p}; + req.authority = StringRef{std::span{std::begin(iovec), p}}; } else { req.authority = authority; } - req.scheme = util::get_uri_field(uri.c_str(), u, UF_SCHEMA); + req.scheme = util::get_uri_field(uri.data(), u, UF_SCHEMA); StringRef path; if (u.field_set & (1 << UF_PATH)) { - path = util::get_uri_field(uri.c_str(), u, UF_PATH); + path = util::get_uri_field(uri.data(), u, UF_PATH); } else if (req.method == HTTP_OPTIONS) { // Server-wide OPTIONS takes following form in proxy request: // @@ -303,21 +303,21 @@ void rewrite_request_host_path_from_uri(BlockAllocator &balloc, Request &req, // // Notice that no slash after authority. See // http://tools.ietf.org/html/rfc7230#section-5.3.4 - req.path = StringRef::from_lit(""); + req.path = ""_sr; // we ignore query component here return; } else { - path = StringRef::from_lit("/"); + path = "/"_sr; } if (u.field_set & (1 << UF_QUERY)) { auto &fdata = u.field_data[UF_QUERY]; if (u.field_set & (1 << UF_PATH)) { - auto q = util::get_uri_field(uri.c_str(), u, UF_QUERY); + auto q = util::get_uri_field(uri.data(), u, UF_QUERY); path = StringRef{std::begin(path), std::end(q)}; } else { - path = concat_string_ref(balloc, path, StringRef::from_lit("?"), + path = concat_string_ref(balloc, path, "?"_sr, StringRef{&uri[fdata.off], fdata.len}); } } @@ -369,7 +369,7 @@ int htp_hdrs_completecb(llhttp_t *htp) { << "HTTP/" << req.http_major << "." << req.http_minor << "\n"; for (const auto &kv : req.fs.headers()) { - if (kv.name == "authorization") { + if (kv.name == "authorization"_sr) { ss << TTY_HTTP_HD << kv.name << TTY_RST << ": \n"; continue; } @@ -431,7 +431,7 @@ int htp_hdrs_completecb(llhttp_t *htp) { if (method != HTTP_CONNECT) { http_parser_url u{}; - rv = http_parser_parse_url(req.path.c_str(), req.path.size(), 0, &u); + rv = http_parser_parse_url(req.path.data(), req.path.size(), 0, &u); if (rv != 0) { // Expect to respond with 400 bad request return -1; @@ -440,7 +440,7 @@ int htp_hdrs_completecb(llhttp_t *htp) { if (!(u.field_set & (1 << UF_SCHEMA)) || !(u.field_set & (1 << UF_HOST))) { req.no_authority = true; - if (method == HTTP_OPTIONS && req.path == StringRef::from_lit("*")) { + if (method == HTTP_OPTIONS && req.path == "*"_sr) { req.path = StringRef{}; } else { req.path = http2::rewrite_clean_path(balloc, req.path); @@ -451,9 +451,9 @@ int htp_hdrs_completecb(llhttp_t *htp) { } if (handler->get_ssl()) { - req.scheme = StringRef::from_lit("https"); + req.scheme = "https"_sr; } else { - req.scheme = StringRef::from_lit("http"); + req.scheme = "http"_sr; } } else { rewrite_request_host_path_from_uri(balloc, req, req.path, u); @@ -544,7 +544,7 @@ int htp_hdrs_completecb(llhttp_t *htp) { // Continue here to make the client happy. if (downstream->get_expect_100_continue()) { auto output = downstream->get_response_buf(); - constexpr auto res = StringRef::from_lit("HTTP/1.1 100 Continue\r\n\r\n"); + constexpr auto res = "HTTP/1.1 100 Continue\r\n\r\n"_sr; output->append(res); handler->signal_write(); } @@ -982,8 +982,7 @@ int HttpsUpstream::send_reply(Downstream *downstream, const uint8_t *body, if (httpconf.max_requests <= num_requests_ || worker->get_graceful_shutdown()) { - resp.fs.add_header_token(StringRef::from_lit("connection"), - StringRef::from_lit("close"), false, + resp.fs.add_header_token("connection"_sr, "close"_sr, false, http2::HD_CONNECTION); connection_close = true; } else if (req.http_major <= 0 || @@ -991,7 +990,7 @@ int HttpsUpstream::send_reply(Downstream *downstream, const uint8_t *body, connection_close = true; } else { auto c = resp.fs.header(http2::HD_CONNECTION); - if (c && util::strieq_l("close", c->value)) { + if (c && util::strieq("close"_sr, c->value)) { connection_close = true; } } @@ -1034,9 +1033,12 @@ int HttpsUpstream::send_reply(Downstream *downstream, const uint8_t *body, output->append("\r\n"); - output->append(body, bodylen); + if (req.method != HTTP_HEAD) { + output->append(body, bodylen); + + downstream->response_sent_body_length += bodylen; + } - downstream->response_sent_body_length += bodylen; downstream->set_response_state(DownstreamState::MSG_COMPLETE); return 0; @@ -1071,7 +1073,7 @@ void HttpsUpstream::error_reply(unsigned int status_code) { output->append("\r\nServer: "); output->append(get_config()->http.server_name); output->append("\r\nContent-Length: "); - std::array intbuf; + std::array intbuf; output->append(StringRef{std::begin(intbuf), util::utos(std::begin(intbuf), html.size())}); output->append("\r\nDate: "); @@ -1080,9 +1082,15 @@ void HttpsUpstream::error_reply(unsigned int status_code) { output->append(lgconf->tstamp->time_http); output->append("\r\nContent-Type: text/html; " "charset=UTF-8\r\nConnection: close\r\n\r\n"); - output->append(html); - downstream->response_sent_body_length += html.size(); + const auto &req = downstream->request(); + + if (req.method != HTTP_HEAD) { + output->append(html); + + downstream->response_sent_body_length += html.size(); + } + downstream->set_response_state(DownstreamState::MSG_COMPLETE); } @@ -1403,7 +1411,7 @@ int HttpsUpstream::on_downstream_abort_request_with_https_redirect( int HttpsUpstream::redirect_to_https(Downstream *downstream) { auto &req = downstream->request(); - if (req.method == HTTP_CONNECT || req.scheme != "http" || + if (req.method == HTTP_CONNECT || req.scheme != "http"_sr || req.authority.empty()) { error_reply(400); return 0; @@ -1420,21 +1428,17 @@ int HttpsUpstream::redirect_to_https(Downstream *downstream) { auto &httpconf = config->http; StringRef loc; - if (httpconf.redirect_https_port == StringRef::from_lit("443")) { - loc = concat_string_ref(balloc, StringRef::from_lit("https://"), authority, - req.path); + if (httpconf.redirect_https_port == "443"_sr) { + loc = concat_string_ref(balloc, "https://"_sr, authority, req.path); } else { - loc = concat_string_ref(balloc, StringRef::from_lit("https://"), authority, - StringRef::from_lit(":"), + loc = concat_string_ref(balloc, "https://"_sr, authority, ":"_sr, httpconf.redirect_https_port, req.path); } auto &resp = downstream->response(); resp.http_status = 308; - resp.fs.add_header_token(StringRef::from_lit("location"), loc, false, - http2::HD_LOCATION); - resp.fs.add_header_token(StringRef::from_lit("connection"), - StringRef::from_lit("close"), false, + resp.fs.add_header_token("location"_sr, loc, false, http2::HD_LOCATION); + resp.fs.add_header_token("connection"_sr, "close"_sr, false, http2::HD_CONNECTION); return send_reply(downstream, nullptr, 0); diff --git a/yass/third_party/nghttp2/src/shrpx_live_check.cc b/yass/third_party/nghttp2/src/shrpx_live_check.cc index 8e8d316a0a..e59df5a58b 100644 --- a/yass/third_party/nghttp2/src/shrpx_live_check.cc +++ b/yass/third_party/nghttp2/src/shrpx_live_check.cc @@ -299,8 +299,8 @@ int LiveCheck::initiate_connection() { if (addr_->tls) { auto sni_name = addr_->sni.empty() ? StringRef{addr_->host} : StringRef{addr_->sni}; - if (!util::numeric_host(sni_name.c_str())) { - SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name.c_str()); + if (!util::numeric_host(sni_name.data())) { + SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name.data()); } auto session = tls::reuse_tls_session(addr_->tls_session_cache); @@ -411,7 +411,7 @@ int LiveCheck::tls_handshake() { switch (addr_->proto) { case Proto::HTTP1: - if (proto.empty() || proto == StringRef::from_lit("http/1.1")) { + if (proto.empty() || proto == "http/1.1"_sr) { break; } return -1; diff --git a/yass/third_party/nghttp2/src/shrpx_log.cc b/yass/third_party/nghttp2/src/shrpx_log.cc index de5e09fa15..386b33f2b1 100644 --- a/yass/third_party/nghttp2/src/shrpx_log.cc +++ b/yass/third_party/nghttp2/src/shrpx_log.cc @@ -58,10 +58,8 @@ using namespace nghttp2; namespace shrpx { namespace { -constexpr StringRef SEVERITY_STR[] = { - StringRef::from_lit("INFO"), StringRef::from_lit("NOTICE"), - StringRef::from_lit("WARN"), StringRef::from_lit("ERROR"), - StringRef::from_lit("FATAL")}; +constexpr StringRef SEVERITY_STR[] = {"INFO"_sr, "NOTICE"_sr, "WARN"_sr, + "ERROR"_sr, "FATAL"_sr}; } // namespace namespace { @@ -173,11 +171,10 @@ Log::~Log() { if (errorconf.syslog) { if (severity_ == NOTICE) { syslog(severity_to_syslog_level(severity_), "[%s] %.*s", - SEVERITY_STR[severity_].c_str(), static_cast(rleft()), - begin_); + SEVERITY_STR[severity_].data(), static_cast(rleft()), begin_); } else { syslog(severity_to_syslog_level(severity_), "[%s] %.*s (%s:%d)", - SEVERITY_STR[severity_].c_str(), static_cast(rleft()), begin_, + SEVERITY_STR[severity_].data(), static_cast(rleft()), begin_, filename_, linenum_); } @@ -192,10 +189,10 @@ Log::~Log() { // Error log format: // (:) rv = snprintf(buf, sizeof(buf), "%s %d %d %s %s%s%s (%s:%d) %.*s\n", - lgconf->tstamp->time_iso8601.c_str(), config->pid, lgconf->pid, + lgconf->tstamp->time_iso8601.data(), config->pid, lgconf->pid, lgconf->thread_id.c_str(), tty ? SEVERITY_COLOR[severity_] : "", - SEVERITY_STR[severity_].c_str(), tty ? "\033[0m" : "", - filename_, linenum_, static_cast(rleft()), begin_); + SEVERITY_STR[severity_].data(), tty ? "\033[0m" : "", filename_, + linenum_, static_cast(rleft()), begin_); if (rv < 0) { return; @@ -380,7 +377,7 @@ namespace { template std::pair copy(const StringRef &src, OutputIterator d_first, OutputIterator d_last) { - return copy(src.c_str(), src.size(), d_first, d_last); + return copy(src.data(), src.size(), d_first, d_last); } } // namespace @@ -531,7 +528,7 @@ template std::pair copy_escape(const StringRef &src, OutputIterator d_first, OutputIterator d_last) { - return copy_escape(src.c_str(), src.size(), d_first, d_last); + return copy_escape(src.data(), src.size(), d_first, d_last); } } // namespace @@ -555,7 +552,7 @@ StringRef construct_absolute_request_uri(BlockAllocator &balloc, } auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; + auto p = std::begin(iov); if (req.scheme.empty()) { // We may have to log the request which lacks scheme (e.g., @@ -569,7 +566,7 @@ StringRef construct_absolute_request_uri(BlockAllocator &balloc, p = std::copy(std::begin(req.path), std::end(req.path), p); *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } } // namespace @@ -593,14 +590,13 @@ void upstream_accesslog(const std::vector &lfv, auto &balloc = downstream->get_block_allocator(); auto downstream_addr = downstream->get_addr(); - auto method = req.method == -1 ? StringRef::from_lit("") - : http2::to_method_string(req.method); - auto path = - req.method == HTTP_CONNECT ? req.authority - : config->http2_proxy ? construct_absolute_request_uri(balloc, req) - : req.path.empty() ? req.method == HTTP_OPTIONS ? StringRef::from_lit("*") - : StringRef::from_lit("-") - : req.path; + auto method = + req.method == -1 ? ""_sr : http2::to_method_string(req.method); + auto path = req.method == HTTP_CONNECT ? req.authority + : config->http2_proxy + ? construct_absolute_request_uri(balloc, req) + : req.path.empty() ? req.method == HTTP_OPTIONS ? "*"_sr : "-"_sr + : req.path; auto path_without_query = req.method == HTTP_CONNECT ? path @@ -880,7 +876,7 @@ int reopen_log_files(const LoggingConfig &loggingconf) { auto &errorconf = loggingconf.error; if (!accessconf.syslog && !accessconf.file.empty()) { - new_accesslog_fd = open_log_file(accessconf.file.c_str()); + new_accesslog_fd = open_log_file(accessconf.file.data()); if (new_accesslog_fd == -1) { LOG(ERROR) << "Failed to open accesslog file " << accessconf.file; @@ -889,7 +885,7 @@ int reopen_log_files(const LoggingConfig &loggingconf) { } if (!errorconf.syslog && !errorconf.file.empty()) { - new_errorlog_fd = open_log_file(errorconf.file.c_str()); + new_errorlog_fd = open_log_file(errorconf.file.data()); if (new_errorlog_fd == -1) { if (lgconf->errorlog_fd != -1) { diff --git a/yass/third_party/nghttp2/src/shrpx_log.h b/yass/third_party/nghttp2/src/shrpx_log.h index bc30097c67..7a334ca54c 100644 --- a/yass/third_party/nghttp2/src/shrpx_log.h +++ b/yass/third_party/nghttp2/src/shrpx_log.h @@ -33,7 +33,6 @@ #include #include -#include "shrpx_config.h" #include "shrpx_log_config.h" #include "tls.h" #include "template.h" @@ -97,6 +96,7 @@ namespace shrpx { class Downstream; struct DownstreamAddr; +struct LoggingConfig; enum SeverityLevel { INFO, NOTICE, WARN, ERROR, FATAL }; @@ -266,7 +266,7 @@ enum class LogFragmentType { }; struct LogFragment { - LogFragment(LogFragmentType type, StringRef value = StringRef::from_lit("")) + LogFragment(LogFragmentType type, StringRef value = ""_sr) : type(type), value(std::move(value)) {} LogFragmentType type; StringRef value; diff --git a/yass/third_party/nghttp2/src/shrpx_log_config.cc b/yass/third_party/nghttp2/src/shrpx_log_config.cc index 92eb055916..9d066f2f42 100644 --- a/yass/third_party/nghttp2/src/shrpx_log_config.cc +++ b/yass/third_party/nghttp2/src/shrpx_log_config.cc @@ -50,10 +50,8 @@ LogConfig::LogConfig() errorlog_tty(false) { auto tid = std::this_thread::get_id(); auto tid_hash = - util::hash32(StringRef{reinterpret_cast(&tid), - reinterpret_cast(&tid) + sizeof(tid)}); - thread_id = util::format_hex(reinterpret_cast(&tid_hash), - sizeof(tid_hash)); + util::hash32(StringRef{reinterpret_cast(&tid), sizeof(tid)}); + thread_id = util::format_hex(std::span{&tid_hash, 1}); } #ifndef NOTHREADS diff --git a/yass/third_party/nghttp2/src/shrpx_memcached_connection.cc b/yass/third_party/nghttp2/src/shrpx_memcached_connection.cc index f72cb111c7..472df43070 100644 --- a/yass/third_party/nghttp2/src/shrpx_memcached_connection.cc +++ b/yass/third_party/nghttp2/src/shrpx_memcached_connection.cc @@ -182,8 +182,8 @@ int MemcachedConnection::initiate_connection() { } if (ssl_ctx_) { - if (!util::numeric_host(sni_name_.c_str())) { - SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name_.c_str()); + if (!util::numeric_host(sni_name_.data())) { + SSL_set_tlsext_host_name(conn_.tls.ssl, sni_name_.data()); } auto session = tls::reuse_tls_session(tls_session_cache_); diff --git a/yass/third_party/nghttp2/src/shrpx_mruby.cc b/yass/third_party/nghttp2/src/shrpx_mruby.cc index 4d412ef378..cfa10fda63 100644 --- a/yass/third_party/nghttp2/src/shrpx_mruby.cc +++ b/yass/third_party/nghttp2/src/shrpx_mruby.cc @@ -144,7 +144,7 @@ RProc *compile(mrb_state *mrb, const StringRef &filename) { return nullptr; } - auto infile = fopen(filename.c_str(), "rb"); + auto infile = fopen(filename.data(), "rb"); if (infile == nullptr) { LOG(ERROR) << "Could not open mruby file " << filename; return nullptr; diff --git a/yass/third_party/nghttp2/src/shrpx_mruby_module.cc b/yass/third_party/nghttp2/src/shrpx_mruby_module.cc index 27b7769c6d..0159ba2f5f 100644 --- a/yass/third_party/nghttp2/src/shrpx_mruby_module.cc +++ b/yass/third_party/nghttp2/src/shrpx_mruby_module.cc @@ -94,13 +94,13 @@ mrb_value create_headers_hash(mrb_state *mrb, const HeaderRefs &headers) { } auto ai = mrb_gc_arena_save(mrb); - auto key = mrb_str_new(mrb, hd.name.c_str(), hd.name.size()); + auto key = mrb_str_new(mrb, hd.name.data(), hd.name.size()); auto ary = mrb_hash_get(mrb, hash, key); if (mrb_nil_p(ary)) { ary = mrb_ary_new(mrb); mrb_hash_set(mrb, hash, key, ary); } - mrb_ary_push(mrb, ary, mrb_str_new(mrb, hd.value.c_str(), hd.value.size())); + mrb_ary_push(mrb, ary, mrb_str_new(mrb, hd.value.data(), hd.value.size())); mrb_gc_arena_restore(mrb, ai); } diff --git a/yass/third_party/nghttp2/src/shrpx_mruby_module_env.cc b/yass/third_party/nghttp2/src/shrpx_mruby_module_env.cc index 5ebd9c053a..9b63c5189b 100644 --- a/yass/third_party/nghttp2/src/shrpx_mruby_module_env.cc +++ b/yass/third_party/nghttp2/src/shrpx_mruby_module_env.cc @@ -90,7 +90,7 @@ mrb_value env_get_remote_addr(mrb_state *mrb, mrb_value self) { auto &ipaddr = handler->get_ipaddr(); - return mrb_str_new(mrb, ipaddr.c_str(), ipaddr.size()); + return mrb_str_new(mrb, ipaddr.data(), ipaddr.size()); } } // namespace @@ -114,7 +114,7 @@ mrb_value env_get_server_addr(mrb_state *mrb, mrb_value self) { auto handler = upstream->get_client_handler(); auto faddr = handler->get_upstream_addr(); - return mrb_str_new(mrb, faddr->host.c_str(), faddr->host.size()); + return mrb_str_new(mrb, faddr->host.data(), faddr->host.size()); } } // namespace @@ -137,7 +137,7 @@ mrb_value env_get_tls_sni(mrb_state *mrb, mrb_value self) { auto handler = upstream->get_client_handler(); auto sni = handler->get_tls_sni(); - return mrb_str_new(mrb, sni.c_str(), sni.size()); + return mrb_str_new(mrb, sni.data(), sni.size()); } } // namespace @@ -172,11 +172,10 @@ mrb_value env_get_tls_client_fingerprint_md(mrb_state *mrb, const EVP_MD *md) { mrb_raise(mrb, E_RUNTIME_ERROR, "could not compute client fingerprint"); } - // TODO Use template version of format_hex auto &balloc = downstream->get_block_allocator(); auto f = util::format_hex(balloc, - StringRef{std::begin(buf), std::begin(buf) + slen}); - return mrb_str_new(mrb, f.c_str(), f.size()); + std::span{buf.data(), static_cast(slen)}); + return mrb_str_new(mrb, f.data(), f.size()); } } // namespace @@ -219,7 +218,7 @@ mrb_value env_get_tls_client_subject_name(mrb_state *mrb, mrb_value self) { #if !OPENSSL_3_0_0_API X509_free(x); #endif // !OPENSSL_3_0_0_API - return mrb_str_new(mrb, name.c_str(), name.size()); + return mrb_str_new(mrb, name.data(), name.size()); } } // namespace @@ -249,7 +248,7 @@ mrb_value env_get_tls_client_issuer_name(mrb_state *mrb, mrb_value self) { #if !OPENSSL_3_0_0_API X509_free(x); #endif // !OPENSSL_3_0_0_API - return mrb_str_new(mrb, name.c_str(), name.size()); + return mrb_str_new(mrb, name.data(), name.size()); } } // namespace @@ -279,7 +278,7 @@ mrb_value env_get_tls_client_serial(mrb_state *mrb, mrb_value self) { #if !OPENSSL_3_0_0_API X509_free(x); #endif // !OPENSSL_3_0_0_API - return mrb_str_new(mrb, sn.c_str(), sn.size()); + return mrb_str_new(mrb, sn.data(), sn.size()); } } // namespace @@ -403,10 +402,9 @@ mrb_value env_get_tls_session_id(mrb_state *mrb, mrb_value self) { unsigned int session_id_length = 0; auto session_id = SSL_SESSION_get_id(session, &session_id_length); - // TODO Use template version of util::format_hex. auto &balloc = downstream->get_block_allocator(); - auto id = util::format_hex(balloc, StringRef{session_id, session_id_length}); - return mrb_str_new(mrb, id.c_str(), id.size()); + auto id = util::format_hex(balloc, std::span{session_id, session_id_length}); + return mrb_str_new(mrb, id.data(), id.size()); } } // namespace @@ -433,7 +431,7 @@ mrb_value env_get_alpn(mrb_state *mrb, mrb_value self) { auto upstream = downstream->get_upstream(); auto handler = upstream->get_client_handler(); auto alpn = handler->get_alpn(); - return mrb_str_new(mrb, alpn.c_str(), alpn.size()); + return mrb_str_new(mrb, alpn.data(), alpn.size()); } } // namespace diff --git a/yass/third_party/nghttp2/src/shrpx_mruby_module_request.cc b/yass/third_party/nghttp2/src/shrpx_mruby_module_request.cc index 1ed3aa90fa..84b39fa8e6 100644 --- a/yass/third_party/nghttp2/src/shrpx_mruby_module_request.cc +++ b/yass/third_party/nghttp2/src/shrpx_mruby_module_request.cc @@ -71,7 +71,7 @@ mrb_value request_get_method(mrb_state *mrb, mrb_value self) { const auto &req = downstream->request(); auto method = http2::to_method_string(req.method); - return mrb_str_new(mrb, method.c_str(), method.size()); + return mrb_str_new(mrb, method.data(), method.size()); } } // namespace @@ -90,7 +90,7 @@ mrb_value request_set_method(mrb_state *mrb, mrb_value self) { mrb_raise(mrb, E_RUNTIME_ERROR, "method must not be empty string"); } auto token = - http2::lookup_method_token(reinterpret_cast(method), n); + http2::lookup_method_token(StringRef{method, static_cast(n)}); if (token == -1) { mrb_raise(mrb, E_RUNTIME_ERROR, "method not supported"); } @@ -107,7 +107,7 @@ mrb_value request_get_authority(mrb_state *mrb, mrb_value self) { auto downstream = data->downstream; const auto &req = downstream->request(); - return mrb_str_new(mrb, req.authority.c_str(), req.authority.size()); + return mrb_str_new(mrb, req.authority.data(), req.authority.size()); } } // namespace @@ -141,7 +141,7 @@ mrb_value request_get_scheme(mrb_state *mrb, mrb_value self) { auto downstream = data->downstream; const auto &req = downstream->request(); - return mrb_str_new(mrb, req.scheme.c_str(), req.scheme.size()); + return mrb_str_new(mrb, req.scheme.data(), req.scheme.size()); } } // namespace @@ -175,7 +175,7 @@ mrb_value request_get_path(mrb_state *mrb, mrb_value self) { auto downstream = data->downstream; const auto &req = downstream->request(); - return mrb_str_new(mrb, req.path.c_str(), req.path.size()); + return mrb_str_new(mrb, req.path.data(), req.path.size()); } } // namespace @@ -235,7 +235,7 @@ mrb_value request_mod_header(mrb_state *mrb, mrb_value self, bool repl) { mrb_gc_arena_restore(mrb, ai); - auto token = http2::lookup_token(keyref.byte(), keyref.size()); + auto token = http2::lookup_token(keyref); if (repl) { size_t p = 0; diff --git a/yass/third_party/nghttp2/src/shrpx_mruby_module_response.cc b/yass/third_party/nghttp2/src/shrpx_mruby_module_response.cc index 1de1d5f07f..5d02d831cc 100644 --- a/yass/third_party/nghttp2/src/shrpx_mruby_module_response.cc +++ b/yass/third_party/nghttp2/src/shrpx_mruby_module_response.cc @@ -127,7 +127,7 @@ mrb_value response_mod_header(mrb_state *mrb, mrb_value self, bool repl) { mrb_gc_arena_restore(mrb, ai); - auto token = http2::lookup_token(keyref.byte(), keyref.size()); + auto token = http2::lookup_token(keyref); if (repl) { size_t p = 0; @@ -245,8 +245,8 @@ mrb_value response_return(mrb_state *mrb, mrb_value self) { if (cl) { cl->value = content_length; } else { - resp.fs.add_header_token(StringRef::from_lit("content-length"), - content_length, false, http2::HD_CONTENT_LENGTH); + resp.fs.add_header_token("content-length"_sr, content_length, false, + http2::HD_CONTENT_LENGTH); } resp.fs.content_length = vallen; @@ -256,7 +256,7 @@ mrb_value response_return(mrb_state *mrb, mrb_value self) { if (!date) { auto lgconf = log_config(); lgconf->update_tstamp(std::chrono::system_clock::now()); - resp.fs.add_header_token(StringRef::from_lit("date"), + resp.fs.add_header_token("date"_sr, make_string_ref(balloc, lgconf->tstamp->time_http), false, http2::HD_DATE); } @@ -319,7 +319,7 @@ mrb_value response_send_info(mrb_state *mrb, mrb_value self) { mrb_gc_arena_restore(mrb, ai); - auto token = http2::lookup_token(keyref.byte(), keyref.size()); + auto token = http2::lookup_token(keyref); if (mrb_array_p(values)) { auto n = RARRAY_LEN(values); diff --git a/yass/third_party/nghttp2/src/shrpx_quic.cc b/yass/third_party/nghttp2/src/shrpx_quic.cc index c52eee46a5..1ffd21792e 100644 --- a/yass/third_party/nghttp2/src/shrpx_quic.cc +++ b/yass/third_party/nghttp2/src/shrpx_quic.cc @@ -58,8 +58,10 @@ ngtcp2_tstamp quic_timestamp() { int quic_send_packet(const UpstreamAddr *faddr, const sockaddr *remote_sa, size_t remote_salen, const sockaddr *local_sa, size_t local_salen, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen, size_t gso_size) { - iovec msg_iov = {const_cast(data), datalen}; + std::span data, size_t gso_size) { + assert(gso_size); + + iovec msg_iov = {const_cast(data.data()), data.size()}; msghdr msg{}; msg.msg_name = const_cast(remote_sa); msg.msg_namelen = remote_salen; @@ -113,7 +115,7 @@ int quic_send_packet(const UpstreamAddr *faddr, const sockaddr *remote_sa, } #ifdef UDP_SEGMENT - if (gso_size && datalen > gso_size) { + if (data.size() > gso_size) { controllen += CMSG_SPACE(sizeof(uint16_t)); cm = CMSG_NXTHDR(&msg, cm); cm->cmsg_level = SOL_UDP; @@ -170,6 +172,8 @@ int quic_send_packet(const UpstreamAddr *faddr, const sockaddr *remote_sa, << " bytes"; } + assert(static_cast(nwrite) == data.size()); + return 0; } @@ -267,87 +271,90 @@ int generate_quic_stateless_reset_token(uint8_t *token, const ngtcp2_cid &cid, return 0; } -int generate_retry_token(uint8_t *token, size_t &tokenlen, uint32_t version, - const sockaddr *sa, socklen_t salen, - const ngtcp2_cid &retry_scid, const ngtcp2_cid &odcid, - const uint8_t *secret, size_t secretlen) { +std::optional> +generate_retry_token(std::span token, uint32_t version, + const sockaddr *sa, socklen_t salen, + const ngtcp2_cid &retry_scid, const ngtcp2_cid &odcid, + std::span secret) { auto t = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()) .count(); - auto stokenlen = ngtcp2_crypto_generate_retry_token( - token, secret, secretlen, version, sa, salen, &retry_scid, &odcid, t); - if (stokenlen < 0) { - return -1; + auto tokenlen = ngtcp2_crypto_generate_retry_token( + token.data(), secret.data(), secret.size(), version, sa, salen, + &retry_scid, &odcid, t); + if (tokenlen < 0) { + return {}; } - tokenlen = stokenlen; - - return 0; + return {{std::begin(token), static_cast(tokenlen)}}; } -int verify_retry_token(ngtcp2_cid &odcid, const uint8_t *token, size_t tokenlen, +int verify_retry_token(ngtcp2_cid &odcid, std::span token, uint32_t version, const ngtcp2_cid &dcid, const sockaddr *sa, socklen_t salen, - const uint8_t *secret, size_t secretlen) { - + std::span secret) { auto t = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()) .count(); - if (ngtcp2_crypto_verify_retry_token(&odcid, token, tokenlen, secret, - secretlen, version, sa, salen, &dcid, - 10 * NGTCP2_SECONDS, t) != 0) { + if (ngtcp2_crypto_verify_retry_token( + &odcid, token.data(), token.size(), secret.data(), secret.size(), + version, sa, salen, &dcid, 10 * NGTCP2_SECONDS, t) != 0) { return -1; } return 0; } -int generate_token(uint8_t *token, size_t &tokenlen, const sockaddr *sa, - size_t salen, const uint8_t *secret, size_t secretlen) { +std::optional> +generate_token(std::span token, const sockaddr *sa, size_t salen, + std::span secret, uint8_t km_id) { auto t = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()) .count(); - auto stokenlen = ngtcp2_crypto_generate_regular_token( - token, secret, secretlen, sa, salen, t); - if (stokenlen < 0) { + auto tokenlen = ngtcp2_crypto_generate_regular_token( + token.data(), secret.data(), secret.size(), sa, salen, t); + if (tokenlen < 0) { + return {}; + } + + token[tokenlen++] = km_id; + + return {{std::begin(token), static_cast(tokenlen)}}; +} + +int verify_token(std::span token, const sockaddr *sa, + socklen_t salen, std::span secret) { + if (token.empty()) { return -1; } - tokenlen = stokenlen; - - return 0; -} - -int verify_token(const uint8_t *token, size_t tokenlen, const sockaddr *sa, - socklen_t salen, const uint8_t *secret, size_t secretlen) { auto t = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()) .count(); - if (ngtcp2_crypto_verify_regular_token(token, tokenlen, secret, secretlen, sa, - salen, 3600 * NGTCP2_SECONDS, - t) != 0) { + if (ngtcp2_crypto_verify_regular_token( + token.data(), token.size() - 1, secret.data(), secret.size(), sa, + salen, 3600 * NGTCP2_SECONDS, t) != 0) { return -1; } return 0; } -int generate_quic_connection_id_encryption_key(uint8_t *key, size_t keylen, - const uint8_t *secret, - size_t secretlen, - const uint8_t *salt, - size_t saltlen) { +int generate_quic_connection_id_encryption_key(std::span key, + std::span secret, + std::span salt) { constexpr uint8_t info[] = "connection id encryption key"; ngtcp2_crypto_md sha256; ngtcp2_crypto_md_init( &sha256, reinterpret_cast(const_cast(EVP_sha256()))); - if (ngtcp2_crypto_hkdf(key, keylen, &sha256, secret, secretlen, salt, saltlen, - info, str_size(info)) != 0) { + if (ngtcp2_crypto_hkdf(key.data(), key.size(), &sha256, secret.data(), + secret.size(), salt.data(), salt.size(), info, + str_size(info)) != 0) { return -1; } diff --git a/yass/third_party/nghttp2/src/shrpx_quic.h b/yass/third_party/nghttp2/src/shrpx_quic.h index dae6e31132..bc7f729438 100644 --- a/yass/third_party/nghttp2/src/shrpx_quic.h +++ b/yass/third_party/nghttp2/src/shrpx_quic.h @@ -30,6 +30,8 @@ #include #include +#include +#include #include @@ -115,7 +117,7 @@ ngtcp2_tstamp quic_timestamp(); int quic_send_packet(const UpstreamAddr *faddr, const sockaddr *remote_sa, size_t remote_salen, const sockaddr *local_sa, size_t local_salen, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen, size_t gso_size); + std::span data, size_t gso_size); int generate_quic_retry_connection_id(ngtcp2_cid &cid, uint32_t server_id, uint8_t km_id, EVP_CIPHER_CTX *ctx); @@ -138,27 +140,27 @@ int generate_quic_stateless_reset_token(uint8_t *token, const ngtcp2_cid &cid, const uint8_t *secret, size_t secretlen); -int generate_retry_token(uint8_t *token, size_t &tokenlen, uint32_t version, - const sockaddr *sa, socklen_t salen, - const ngtcp2_cid &retry_scid, const ngtcp2_cid &odcid, - const uint8_t *secret, size_t secretlen); +std::optional> +generate_retry_token(std::span token, uint32_t version, + const sockaddr *sa, socklen_t salen, + const ngtcp2_cid &retry_scid, const ngtcp2_cid &odcid, + std::span secret); -int verify_retry_token(ngtcp2_cid &odcid, const uint8_t *token, size_t tokenlen, +int verify_retry_token(ngtcp2_cid &odcid, std::span token, uint32_t version, const ngtcp2_cid &dcid, const sockaddr *sa, socklen_t salen, - const uint8_t *secret, size_t secretlen); + std::span secret); -int generate_token(uint8_t *token, size_t &tokenlen, const sockaddr *sa, - size_t salen, const uint8_t *secret, size_t secretlen); +std::optional> +generate_token(std::span token, const sockaddr *sa, size_t salen, + std::span secret, uint8_t km_id); -int verify_token(const uint8_t *token, size_t tokenlen, const sockaddr *sa, - socklen_t salen, const uint8_t *secret, size_t secretlen); +int verify_token(std::span token, const sockaddr *sa, + socklen_t salen, std::span secret); -int generate_quic_connection_id_encryption_key(uint8_t *key, size_t keylen, - const uint8_t *secret, - size_t secretlen, - const uint8_t *salt, - size_t saltlen); +int generate_quic_connection_id_encryption_key(std::span key, + std::span secret, + std::span salt); const QUICKeyingMaterial * select_quic_keying_material(const QUICKeyingMaterials &qkms, uint8_t km_id); diff --git a/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.cc b/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.cc index b810aa68ae..f10cc83bc3 100644 --- a/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.cc +++ b/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.cc @@ -63,17 +63,18 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen) { + std::span data) { int rv; ngtcp2_version_cid vc; - rv = ngtcp2_pkt_decode_version_cid(&vc, data, datalen, SHRPX_QUIC_SCIDLEN); + rv = ngtcp2_pkt_decode_version_cid(&vc, data.data(), data.size(), + SHRPX_QUIC_SCIDLEN); switch (rv) { case 0: break; case NGTCP2_ERR_VERSION_NEGOTIATION: - send_version_negotiation(faddr, vc.version, vc.dcid, vc.dcidlen, vc.scid, - vc.scidlen, remote_addr, local_addr); + send_version_negotiation(faddr, vc.version, {vc.dcid, vc.dcidlen}, + {vc.scid, vc.scidlen}, remote_addr, local_addr); return 0; default: @@ -97,7 +98,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, if (cwit != std::end(close_waits_)) { auto cw = (*cwit).second; - cw->handle_packet(faddr, remote_addr, local_addr, pi, data, datalen); + cw->handle_packet(faddr, remote_addr, local_addr, pi, data); return 0; } @@ -114,7 +115,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, if (cwit != std::end(close_waits_)) { auto cw = (*cwit).second; - cw->handle_packet(faddr, remote_addr, local_addr, pi, data, datalen); + cw->handle_packet(faddr, remote_addr, local_addr, pi, data); return 0; } @@ -145,7 +146,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, decrypted_dcid.worker); if (quic_lwp) { if (conn_handler->forward_quic_packet_to_lingering_worker_process( - quic_lwp, remote_addr, local_addr, pi, data, datalen) == 0) { + quic_lwp, remote_addr, local_addr, pi, data) == 0) { return 0; } @@ -169,11 +170,10 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, ngtcp2_pkt_hd hd; ngtcp2_cid odcid, *podcid = nullptr; - const uint8_t *token = nullptr; - size_t tokenlen = 0; + std::span token; ngtcp2_token_type token_type = NGTCP2_TOKEN_TYPE_UNKNOWN; - switch (ngtcp2_accept(&hd, data, datalen)) { + switch (ngtcp2_accept(&hd, data.data(), data.size())) { case 0: { // If we get Initial and it has the Worker ID of this worker, it // is likely that client is intentionally use the prefix. Just @@ -197,14 +197,15 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, if (worker_->get_graceful_shutdown()) { send_connection_close(faddr, hd.version, hd.dcid, hd.scid, remote_addr, local_addr, NGTCP2_CONNECTION_REFUSED, - datalen * 3); + data.size() * 3); return 0; } if (hd.tokenlen == 0) { if (quicconf.upstream.require_token) { - send_retry(faddr, vc.version, vc.dcid, vc.dcidlen, vc.scid, - vc.scidlen, remote_addr, local_addr, datalen * 3); + send_retry(faddr, vc.version, {vc.dcid, vc.dcidlen}, + {vc.scid, vc.scidlen}, remote_addr, local_addr, + data.size() * 3); return 0; } @@ -223,9 +224,9 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, auto qkm = select_quic_keying_material( *qkms.get(), vc.dcid[0] & SHRPX_QUIC_DCID_KM_ID_MASK); - if (verify_retry_token(odcid, hd.token, hd.tokenlen, hd.version, + if (verify_retry_token(odcid, {hd.token, hd.tokenlen}, hd.version, hd.dcid, &remote_addr.su.sa, remote_addr.len, - qkm->secret.data(), qkm->secret.size()) != 0) { + qkm->secret) != 0) { if (LOG_ENABLED(INFO)) { LOG(INFO) << "Failed to validate Retry token from remote=" << util::to_numeric_addr(&remote_addr); @@ -235,7 +236,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, // with INVALID_TOKEN. send_connection_close(faddr, hd.version, hd.dcid, hd.scid, remote_addr, local_addr, NGTCP2_INVALID_TOKEN, - datalen * 3); + data.size() * 3); return 0; } @@ -245,8 +246,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, } podcid = &odcid; - token = hd.token; - tokenlen = hd.tokenlen; + token = {hd.token, hd.tokenlen}; token_type = NGTCP2_TOKEN_TYPE_RETRY; break; @@ -265,8 +265,9 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, } if (quicconf.upstream.require_token) { - send_retry(faddr, vc.version, vc.dcid, vc.dcidlen, vc.scid, - vc.scidlen, remote_addr, local_addr, datalen * 3); + send_retry(faddr, vc.version, {vc.dcid, vc.dcidlen}, + {vc.scid, vc.scidlen}, remote_addr, local_addr, + data.size() * 3); return 0; } @@ -277,17 +278,17 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, auto qkm = select_quic_keying_material( *qkms.get(), hd.token[NGTCP2_CRYPTO_MAX_REGULAR_TOKENLEN]); - if (verify_token(hd.token, hd.tokenlen - 1, &remote_addr.su.sa, - remote_addr.len, qkm->secret.data(), - qkm->secret.size()) != 0) { + if (verify_token({hd.token, hd.tokenlen}, &remote_addr.su.sa, + remote_addr.len, qkm->secret) != 0) { if (LOG_ENABLED(INFO)) { LOG(INFO) << "Failed to validate token from remote=" << util::to_numeric_addr(&remote_addr); } if (quicconf.upstream.require_token) { - send_retry(faddr, vc.version, vc.dcid, vc.dcidlen, vc.scid, - vc.scidlen, remote_addr, local_addr, datalen * 3); + send_retry(faddr, vc.version, {vc.dcid, vc.dcidlen}, + {vc.scid, vc.scidlen}, remote_addr, local_addr, + data.size() * 3); return 0; } @@ -300,16 +301,16 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, << util::to_numeric_addr(&remote_addr); } - token = hd.token; - tokenlen = hd.tokenlen; + token = {hd.token, hd.tokenlen}; token_type = NGTCP2_TOKEN_TYPE_NEW_TOKEN; break; } default: if (quicconf.upstream.require_token) { - send_retry(faddr, vc.version, vc.dcid, vc.dcidlen, vc.scid, - vc.scidlen, remote_addr, local_addr, datalen * 3); + send_retry(faddr, vc.version, {vc.dcid, vc.dcidlen}, + {vc.scid, vc.scidlen}, remote_addr, local_addr, + data.size() * 3); return 0; } @@ -322,16 +323,15 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, default: if (!(data[0] & 0x80) && vc.dcidlen == SHRPX_QUIC_SCIDLEN && decrypted_dcid.worker != worker_->get_worker_id()) { - if (!config->single_thread && - conn_handler->forward_quic_packet(faddr, remote_addr, local_addr, - pi, decrypted_dcid.worker, data, - datalen) == 0) { + if (!config->single_thread && conn_handler->forward_quic_packet( + faddr, remote_addr, local_addr, pi, + decrypted_dcid.worker, data) == 0) { return 0; } - if (datalen >= SHRPX_QUIC_SCIDLEN + 22) { - send_stateless_reset(faddr, datalen, vc.dcid, vc.dcidlen, remote_addr, - local_addr); + if (data.size() >= SHRPX_QUIC_SCIDLEN + 22) { + send_stateless_reset(faddr, data.size(), {vc.dcid, vc.dcidlen}, + remote_addr, local_addr); } } @@ -339,7 +339,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, } handler = handle_new_connection(faddr, remote_addr, local_addr, hd, podcid, - token, tokenlen, token_type); + token, token_type); if (handler == nullptr) { return 0; } @@ -347,8 +347,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, handler = (*it).second; } - if (handler->read_quic(faddr, remote_addr, local_addr, pi, data, datalen) != - 0) { + if (handler->read_quic(faddr, remote_addr, local_addr, pi, data) != 0) { delete handler; return 0; } @@ -361,7 +360,7 @@ int QUICConnectionHandler::handle_packet(const UpstreamAddr *faddr, ClientHandler *QUICConnectionHandler::handle_new_connection( const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_hd &hd, const ngtcp2_cid *odcid, - const uint8_t *token, size_t tokenlen, ngtcp2_token_type token_type) { + std::span token, ngtcp2_token_type token_type) { std::array host; std::array service; int rv; @@ -412,7 +411,7 @@ ClientHandler *QUICConnectionHandler::handle_new_connection( StringRef{service.data()}, remote_addr.su.sa.sa_family, faddr); auto upstream = std::make_unique(handler.get()); - if (upstream->init(faddr, remote_addr, local_addr, hd, odcid, token, tokenlen, + if (upstream->init(faddr, remote_addr, local_addr, hd, odcid, token, token_type) != 0) { return nullptr; } @@ -450,8 +449,8 @@ uint32_t generate_reserved_version(const Address &addr, uint32_t version) { } // namespace int QUICConnectionHandler::send_retry( - const UpstreamAddr *faddr, uint32_t version, const uint8_t *ini_dcid, - size_t ini_dcidlen, const uint8_t *ini_scid, size_t ini_scidlen, + const UpstreamAddr *faddr, uint32_t version, + std::span ini_dcid, std::span ini_scid, const Address &remote_addr, const Address &local_addr, size_t max_pktlen) { std::array host; std::array port; @@ -476,25 +475,25 @@ int QUICConnectionHandler::send_retry( return -1; } - std::array token; - size_t tokenlen; - ngtcp2_cid idcid, iscid; - ngtcp2_cid_init(&idcid, ini_dcid, ini_dcidlen); - ngtcp2_cid_init(&iscid, ini_scid, ini_scidlen); + ngtcp2_cid_init(&idcid, ini_dcid.data(), ini_dcid.size()); + ngtcp2_cid_init(&iscid, ini_scid.data(), ini_scid.size()); - if (generate_retry_token(token.data(), tokenlen, version, &remote_addr.su.sa, - remote_addr.len, retry_scid, idcid, - qkm.secret.data(), qkm.secret.size()) != 0) { + std::array tokenbuf; + + auto token = + generate_retry_token(tokenbuf, version, &remote_addr.su.sa, + remote_addr.len, retry_scid, idcid, qkm.secret); + if (!token) { return -1; } std::vector buf; buf.resize(std::min(max_pktlen, static_cast(256))); - auto nwrite = - ngtcp2_crypto_write_retry(buf.data(), buf.size(), version, &iscid, - &retry_scid, &idcid, token.data(), tokenlen); + auto nwrite = ngtcp2_crypto_write_retry(buf.data(), buf.size(), version, + &iscid, &retry_scid, &idcid, + token->data(), token->size()); if (nwrite < 0) { LOG(ERROR) << "ngtcp2_crypto_write_retry: " << ngtcp2_strerror(nwrite); return -1; @@ -503,8 +502,8 @@ int QUICConnectionHandler::send_retry( buf.resize(nwrite); quic_send_packet(faddr, &remote_addr.su.sa, remote_addr.len, - &local_addr.su.sa, local_addr.len, ngtcp2_pkt_info{}, - buf.data(), buf.size(), 0); + &local_addr.su.sa, local_addr.len, ngtcp2_pkt_info{}, buf, + buf.size()); if (generate_quic_hashed_connection_id(idcid, remote_addr, local_addr, idcid) != 0) { @@ -528,13 +527,13 @@ int QUICConnectionHandler::send_retry( } int QUICConnectionHandler::send_version_negotiation( - const UpstreamAddr *faddr, uint32_t version, const uint8_t *ini_dcid, - size_t ini_dcidlen, const uint8_t *ini_scid, size_t ini_scidlen, + const UpstreamAddr *faddr, uint32_t version, + std::span ini_dcid, std::span ini_scid, const Address &remote_addr, const Address &local_addr) { - std::array sv{ + auto sv = std::to_array({ generate_reserved_version(remote_addr, version), NGTCP2_PROTO_VER_V1, - }; + }); std::array buf; @@ -542,22 +541,25 @@ int QUICConnectionHandler::send_version_negotiation( util::random_bytes(&rand_byte, &rand_byte + 1, worker_->get_randgen()); auto nwrite = ngtcp2_pkt_write_version_negotiation( - buf.data(), buf.size(), rand_byte, ini_scid, ini_scidlen, ini_dcid, - ini_dcidlen, sv.data(), sv.size()); + buf.data(), buf.size(), rand_byte, ini_scid.data(), ini_scid.size(), + ini_dcid.data(), ini_dcid.size(), sv.data(), sv.size()); if (nwrite < 0) { LOG(ERROR) << "ngtcp2_pkt_write_version_negotiation: " << ngtcp2_strerror(nwrite); return -1; } + auto pkt = std::span{std::begin(buf), static_cast(nwrite)}; return quic_send_packet(faddr, &remote_addr.su.sa, remote_addr.len, &local_addr.su.sa, local_addr.len, ngtcp2_pkt_info{}, - buf.data(), nwrite, 0); + pkt, pkt.size()); } -int QUICConnectionHandler::send_stateless_reset( - const UpstreamAddr *faddr, size_t pktlen, const uint8_t *dcid, - size_t dcidlen, const Address &remote_addr, const Address &local_addr) { +int QUICConnectionHandler::send_stateless_reset(const UpstreamAddr *faddr, + size_t pktlen, + std::span dcid, + const Address &remote_addr, + const Address &local_addr) { if (stateless_reset_bucket_ == 0) { if (LOG_ENABLED(INFO)) { LOG(INFO) << "Stateless Reset bucket has been depleted"; @@ -572,25 +574,24 @@ int QUICConnectionHandler::send_stateless_reset( ev_timer_again(worker_->get_loop(), &stateless_reset_bucket_regen_timer_); } - int rv; std::array token; ngtcp2_cid cid; - ngtcp2_cid_init(&cid, dcid, dcidlen); + ngtcp2_cid_init(&cid, dcid.data(), dcid.size()); auto conn_handler = worker_->get_connection_handler(); auto &qkms = conn_handler->get_quic_keying_materials(); auto &qkm = qkms->keying_materials.front(); - rv = generate_quic_stateless_reset_token(token.data(), cid, qkm.secret.data(), - qkm.secret.size()); - if (rv != 0) { + if (auto rv = generate_quic_stateless_reset_token( + token.data(), cid, qkm.secret.data(), qkm.secret.size()); + rv != 0) { return -1; } // SCID + minimum expansion - NGTCP2_STATELESS_RESET_TOKENLEN constexpr size_t max_rand_byteslen = - SHRPX_QUIC_SCIDLEN + 22 - NGTCP2_STATELESS_RESET_TOKENLEN; + NGTCP2_MAX_CIDLEN + 22 - NGTCP2_STATELESS_RESET_TOKENLEN; size_t rand_byteslen; @@ -621,12 +622,13 @@ int QUICConnectionHandler::send_stateless_reset( if (LOG_ENABLED(INFO)) { LOG(INFO) << "Send stateless_reset to remote=" << util::to_numeric_addr(&remote_addr) - << " dcid=" << util::format_hex(dcid, dcidlen); + << " dcid=" << util::format_hex(dcid); } + auto pkt = std::span{std::begin(buf), static_cast(nwrite)}; return quic_send_packet(faddr, &remote_addr.su.sa, remote_addr.len, &local_addr.su.sa, local_addr.len, ngtcp2_pkt_info{}, - buf.data(), nwrite, 0); + pkt, pkt.size()); } int QUICConnectionHandler::send_connection_close( @@ -649,13 +651,16 @@ int QUICConnectionHandler::send_connection_close( LOG(INFO) << "Send Initial CONNECTION_CLOSE with error_code=" << log::hex << error_code << log::dec << " to remote=" << util::to_numeric_addr(&remote_addr) - << " dcid=" << util::format_hex(ini_scid.data, ini_scid.datalen) - << " scid=" << util::format_hex(ini_dcid.data, ini_dcid.datalen); + << " dcid=" + << util::format_hex(std::span{ini_scid.data, ini_scid.datalen}) + << " scid=" + << util::format_hex(std::span{ini_dcid.data, ini_dcid.datalen}); } + auto pkt = std::span{std::begin(buf), static_cast(nwrite)}; return quic_send_packet(faddr, &remote_addr.su.sa, remote_addr.len, &local_addr.su.sa, local_addr.len, ngtcp2_pkt_info{}, - buf.data(), nwrite, 0); + pkt, pkt.size()); } void QUICConnectionHandler::add_connection_id(const ngtcp2_cid &cid, @@ -735,23 +740,24 @@ CloseWait::~CloseWait() { int CloseWait::handle_packet(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, - const ngtcp2_pkt_info &pi, const uint8_t *data, - size_t datalen) { + const ngtcp2_pkt_info &pi, + std::span data) { if (pkt.empty()) { return 0; } ++num_pkts_recv; - bytes_recv += datalen; + bytes_recv += data.size(); if (bytes_sent + pkt.size() > 3 * bytes_recv || next_pkts_recv > num_pkts_recv) { return 0; } - if (quic_send_packet(faddr, &remote_addr.su.sa, remote_addr.len, - &local_addr.su.sa, local_addr.len, ngtcp2_pkt_info{}, - pkt.data(), pkt.size(), 0) != 0) { + auto rv = quic_send_packet(faddr, &remote_addr.su.sa, remote_addr.len, + &local_addr.su.sa, local_addr.len, + ngtcp2_pkt_info{}, pkt, pkt.size()); + if (rv != 0) { return -1; } diff --git a/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.h b/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.h index 7f65370de0..374d84bf0b 100644 --- a/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.h +++ b/yass/third_party/nghttp2/src/shrpx_quic_connection_handler.h @@ -56,7 +56,7 @@ struct CloseWait { int handle_packet(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen); + std::span data); Worker *worker; // Source Connection IDs of the connection. @@ -83,28 +83,25 @@ public: ~QUICConnectionHandler(); int handle_packet(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen); + std::span data); // Send Retry packet. |ini_dcid| is the destination Connection ID - // which appeared in Client Initial packet and its length is - // |dcidlen|. |ini_scid| is the source Connection ID which appeared - // in Client Initial packet and its length is |scidlen|. + // which appeared in Client Initial packet. |ini_scid| is the + // source Connection ID which appeared in Client Initial packet. int send_retry(const UpstreamAddr *faddr, uint32_t version, - const uint8_t *ini_dcid, size_t ini_dcidlen, - const uint8_t *ini_scid, size_t ini_scidlen, - const Address &remote_addr, const Address &local_addr, - size_t max_pktlen); + std::span ini_dcid, + std::span ini_scid, const Address &remote_addr, + const Address &local_addr, size_t max_pktlen); // Send Version Negotiation packet. |ini_dcid| is the destination - // Connection ID which appeared in Client Initial packet and its - // length is |dcidlen|. |ini_scid| is the source Connection ID - // which appeared in Client Initial packet and its length is - // |scidlen|. + // Connection ID which appeared in Client Initial packet. + // |ini_scid| is the source Connection ID which appeared in Client + // Initial packet. int send_version_negotiation(const UpstreamAddr *faddr, uint32_t version, - const uint8_t *ini_dcid, size_t ini_dcidlen, - const uint8_t *ini_scid, size_t ini_scidlen, + std::span ini_dcid, + std::span ini_scid, const Address &remote_addr, const Address &local_addr); int send_stateless_reset(const UpstreamAddr *faddr, size_t pktlen, - const uint8_t *dcid, size_t dcidlen, + std::span dcid, const Address &remote_addr, const Address &local_addr); // Send Initial CONNECTION_CLOSE. |ini_dcid| is the destination @@ -120,8 +117,8 @@ public: ClientHandler * handle_new_connection(const UpstreamAddr *faddr, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_hd &hd, - const ngtcp2_cid *odcid, const uint8_t *token, - size_t tokenlen, ngtcp2_token_type token_type); + const ngtcp2_cid *odcid, std::span token, + ngtcp2_token_type token_type); void add_connection_id(const ngtcp2_cid &cid, ClientHandler *handler); void remove_connection_id(const ngtcp2_cid &cid); diff --git a/yass/third_party/nghttp2/src/shrpx_quic_listener.cc b/yass/third_party/nghttp2/src/shrpx_quic_listener.cc index 681f6058c1..8e804100b0 100644 --- a/yass/third_party/nghttp2/src/shrpx_quic_listener.cc +++ b/yass/third_party/nghttp2/src/shrpx_quic_listener.cc @@ -106,10 +106,10 @@ void QUICListener::on_read() { gso_size = static_cast(nread); } - auto data = buf.data(); + auto data = std::span{std::begin(buf), static_cast(nread)}; for (;;) { - auto datalen = std::min(static_cast(nread), gso_size); + auto datalen = std::min(data.size(), gso_size); ++pktcnt; @@ -131,14 +131,12 @@ void QUICListener::on_read() { remote_addr.len = msg.msg_namelen; quic_conn_handler->handle_packet(faddr_, remote_addr, local_addr, pi, - data, datalen); + {std::begin(data), datalen}); - nread -= datalen; - if (nread == 0) { + data = data.subspan(datalen); + if (data.empty() == 0) { break; } - - data += datalen; } } } diff --git a/yass/third_party/nghttp2/src/shrpx_router.cc b/yass/third_party/nghttp2/src/shrpx_router.cc index d3565db891..559b236aa5 100644 --- a/yass/third_party/nghttp2/src/shrpx_router.cc +++ b/yass/third_party/nghttp2/src/shrpx_router.cc @@ -67,7 +67,7 @@ void Router::add_node(RNode *node, const char *pattern, size_t patlen, ssize_t index, ssize_t wildcard_index) { auto pat = make_string_ref(balloc_, StringRef{pattern, patlen}); auto new_node = - std::make_unique(pat.c_str(), pat.size(), index, wildcard_index); + std::make_unique(pat.data(), pat.size(), index, wildcard_index); add_next_node(node, std::move(new_node)); } @@ -85,7 +85,7 @@ size_t Router::add_route(const StringRef &pattern, size_t idx, bool wildcard) { for (;;) { auto next_node = find_next_node(node, pattern[i]); if (next_node == nullptr) { - add_node(node, pattern.c_str() + i, pattern.size() - i, index, + add_node(node, pattern.data() + i, pattern.size() - i, index, wildcard_index); return idx; } @@ -93,7 +93,7 @@ size_t Router::add_route(const StringRef &pattern, size_t idx, bool wildcard) { node = next_node; auto slen = pattern.size() - i; - auto s = pattern.c_str() + i; + auto s = pattern.data() + i; auto n = std::min(node->len, slen); size_t j; for (j = 0; j < n && node->s[j] == s[j]; ++j) @@ -151,7 +151,7 @@ size_t Router::add_route(const StringRef &pattern, size_t idx, bool wildcard) { i += j; assert(pattern.size() > i); - add_node(node, pattern.c_str() + i, pattern.size() - i, index, + add_node(node, pattern.data() + i, pattern.size() - i, index, wildcard_index); return idx; diff --git a/yass/third_party/nghttp2/src/shrpx_router_test.cc b/yass/third_party/nghttp2/src/shrpx_router_test.cc index a9625a0ae8..0fc4a3a0b6 100644 --- a/yass/third_party/nghttp2/src/shrpx_router_test.cc +++ b/yass/third_party/nghttp2/src/shrpx_router_test.cc @@ -51,16 +51,16 @@ struct Pattern { void test_shrpx_router_match(void) { auto patterns = std::vector{ - {StringRef::from_lit("nghttp2.org/"), 0}, - {StringRef::from_lit("nghttp2.org/alpha"), 1}, - {StringRef::from_lit("nghttp2.org/alpha/"), 2}, - {StringRef::from_lit("nghttp2.org/alpha/bravo/"), 3}, - {StringRef::from_lit("www.nghttp2.org/alpha/"), 4}, - {StringRef::from_lit("/alpha"), 5}, - {StringRef::from_lit("example.com/alpha/"), 6}, - {StringRef::from_lit("nghttp2.org/alpha/bravo2/"), 7}, - {StringRef::from_lit("www2.nghttp2.org/alpha/"), 8}, - {StringRef::from_lit("www2.nghttp2.org/alpha2/"), 9}, + {"nghttp2.org/"_sr, 0}, + {"nghttp2.org/alpha"_sr, 1}, + {"nghttp2.org/alpha/"_sr, 2}, + {"nghttp2.org/alpha/bravo/"_sr, 3}, + {"www.nghttp2.org/alpha/"_sr, 4}, + {"/alpha"_sr, 5}, + {"example.com/alpha/"_sr, 6}, + {"nghttp2.org/alpha/bravo2/"_sr, 7}, + {"www2.nghttp2.org/alpha/"_sr, 8}, + {"www2.nghttp2.org/alpha2/"_sr, 9}, }; Router router; @@ -71,56 +71,49 @@ void test_shrpx_router_match(void) { ssize_t idx; - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/")); + idx = router.match("nghttp2.org"_sr, "/"_sr); assert_ssize(0, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha")); + idx = router.match("nghttp2.org"_sr, "/alpha"_sr); assert_ssize(1, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/")); + idx = router.match("nghttp2.org"_sr, "/alpha/"_sr); assert_ssize(2, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/charlie")); + idx = router.match("nghttp2.org"_sr, "/alpha/charlie"_sr); assert_ssize(2, ==, idx); - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo/")); + idx = router.match("nghttp2.org"_sr, "/alpha/bravo/"_sr); assert_ssize(3, ==, idx); // matches pattern when last '/' is missing in path - idx = router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo")); + idx = router.match("nghttp2.org"_sr, "/alpha/bravo"_sr); assert_ssize(3, ==, idx); - idx = router.match(StringRef::from_lit("www2.nghttp2.org"), - StringRef::from_lit("/alpha")); + idx = router.match("www2.nghttp2.org"_sr, "/alpha"_sr); assert_ssize(8, ==, idx); - idx = router.match(StringRef{}, StringRef::from_lit("/alpha")); + idx = router.match(StringRef{}, "/alpha"_sr); assert_ssize(5, ==, idx); } void test_shrpx_router_match_wildcard(void) { - constexpr auto patterns = std::array{{ - {StringRef::from_lit("nghttp2.org/"), 0}, - {StringRef::from_lit("nghttp2.org/"), 1, true}, - {StringRef::from_lit("nghttp2.org/alpha/"), 2}, - {StringRef::from_lit("nghttp2.org/alpha/"), 3, true}, - {StringRef::from_lit("nghttp2.org/bravo"), 4}, - {StringRef::from_lit("nghttp2.org/bravo"), 5, true}, - }}; + constexpr auto patterns = std::to_array({ + {"nghttp2.org/"_sr, 0}, + {"nghttp2.org/"_sr, 1, true}, + {"nghttp2.org/alpha/"_sr, 2}, + {"nghttp2.org/alpha/"_sr, 3, true}, + {"nghttp2.org/bravo"_sr, 4}, + {"nghttp2.org/bravo"_sr, 5, true}, + }); Router router; @@ -128,49 +121,31 @@ void test_shrpx_router_match_wildcard(void) { router.add_route(p.pattern, p.idx, p.wildcard); } - assert_ssize(0, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/"))); + assert_ssize(0, ==, router.match("nghttp2.org"_sr, "/"_sr)); - assert_ssize(1, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/a"))); + assert_ssize(1, ==, router.match("nghttp2.org"_sr, "/a"_sr)); - assert_ssize(1, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/charlie"))); + assert_ssize(1, ==, router.match("nghttp2.org"_sr, "/charlie"_sr)); - assert_ssize(2, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha"))); + assert_ssize(2, ==, router.match("nghttp2.org"_sr, "/alpha"_sr)); - assert_ssize(2, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/"))); + assert_ssize(2, ==, router.match("nghttp2.org"_sr, "/alpha/"_sr)); - assert_ssize(3, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/b"))); + assert_ssize(3, ==, router.match("nghttp2.org"_sr, "/alpha/b"_sr)); - assert_ssize(4, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/bravo"))); + assert_ssize(4, ==, router.match("nghttp2.org"_sr, "/bravo"_sr)); - assert_ssize(5, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/bravocharlie"))); + assert_ssize(5, ==, router.match("nghttp2.org"_sr, "/bravocharlie"_sr)); - assert_ssize(5, ==, - router.match(StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/bravo/"))); + assert_ssize(5, ==, router.match("nghttp2.org"_sr, "/bravo/"_sr)); } void test_shrpx_router_match_prefix(void) { auto patterns = std::vector{ - {StringRef::from_lit("gro.2ptthgn."), 0}, - {StringRef::from_lit("gro.2ptthgn.www."), 1}, - {StringRef::from_lit("gro.2ptthgn.gmi."), 2}, - {StringRef::from_lit("gro.2ptthgn.gmi.ahpla."), 3}, + {"gro.2ptthgn."_sr, 0}, + {"gro.2ptthgn.www."_sr, 1}, + {"gro.2ptthgn.gmi."_sr, 2}, + {"gro.2ptthgn.gmi.ahpla."_sr, 3}, }; Router router; @@ -185,19 +160,17 @@ void test_shrpx_router_match_prefix(void) { node = nullptr; - idx = router.match_prefix(&nread, &node, - StringRef::from_lit("gro.2ptthgn.gmi.ahpla.ovarb")); + idx = router.match_prefix(&nread, &node, "gro.2ptthgn.gmi.ahpla.ovarb"_sr); assert_ssize(0, ==, idx); assert_size(12, ==, nread); - idx = router.match_prefix(&nread, &node, - StringRef::from_lit("gmi.ahpla.ovarb")); + idx = router.match_prefix(&nread, &node, "gmi.ahpla.ovarb"_sr); assert_ssize(2, ==, idx); assert_size(4, ==, nread); - idx = router.match_prefix(&nread, &node, StringRef::from_lit("ahpla.ovarb")); + idx = router.match_prefix(&nread, &node, "ahpla.ovarb"_sr); assert_ssize(3, ==, idx); assert_ssize(6, ==, nread); diff --git a/yass/third_party/nghttp2/src/shrpx_signal.cc b/yass/third_party/nghttp2/src/shrpx_signal.cc index 63fcc07760..cfc4fc1614 100644 --- a/yass/third_party/nghttp2/src/shrpx_signal.cc +++ b/yass/third_party/nghttp2/src/shrpx_signal.cc @@ -110,13 +110,13 @@ int signal_set_handler(void (*handler)(int), Signals &&sigs) { } // namespace namespace { -constexpr auto main_proc_ign_signals = std::array{SIGPIPE}; +constexpr auto main_proc_ign_signals = std::to_array({SIGPIPE}); } // namespace namespace { constexpr auto worker_proc_ign_signals = - std::array{REOPEN_LOG_SIGNAL, EXEC_BINARY_SIGNAL, - GRACEFUL_SHUTDOWN_SIGNAL, RELOAD_SIGNAL, SIGPIPE}; + std::to_array({REOPEN_LOG_SIGNAL, EXEC_BINARY_SIGNAL, + GRACEFUL_SHUTDOWN_SIGNAL, RELOAD_SIGNAL, SIGPIPE}); } // namespace int shrpx_signal_set_main_proc_ign_handler() { diff --git a/yass/third_party/nghttp2/src/shrpx_tls.cc b/yass/third_party/nghttp2/src/shrpx_tls.cc index 10bbbf293c..00cf1ca90e 100644 --- a/yass/third_party/nghttp2/src/shrpx_tls.cc +++ b/yass/third_party/nghttp2/src/shrpx_tls.cc @@ -157,7 +157,7 @@ int ssl_pem_passwd_cb(char *buf, int size, int rwflag, void *user_data) { return 0; } // Copy string including last '\0'. - memcpy(buf, config->tls.private_key_passwd.c_str(), len + 1); + memcpy(buf, config->tls.private_key_passwd.data(), len + 1); return len; } } // namespace @@ -166,8 +166,7 @@ namespace { std::shared_ptr> get_ocsp_data(TLSContextData *tls_ctx_data) { #ifdef HAVE_ATOMIC_STD_SHARED_PTR - return std::atomic_load_explicit(&tls_ctx_data->ocsp_data, - std::memory_order_acquire); + return tls_ctx_data->ocsp_data.load(std::memory_order_acquire); #else // !HAVE_ATOMIC_STD_SHARED_PTR std::lock_guard g(tls_ctx_data->mu); return tls_ctx_data->ocsp_data; @@ -214,7 +213,7 @@ int servername_callback(SSL *ssl, int *al, void *arg) { return SSL_TLSEXT_ERR_NOACK; } - std::array buf; + std::array buf; auto end_buf = std::copy_n(rawhost, len, std::begin(buf)); @@ -366,7 +365,7 @@ int ocsp_resp_cb(SSL *ssl, void *arg) { #endif // NGHTTP2_OPENSSL_IS_BORINGSSL constexpr auto MEMCACHED_SESSION_CACHE_KEY_PREFIX = - StringRef::from_lit("nghttpx:tls-session-cache:"); + "nghttpx:tls-session-cache:"_sr; namespace { int tls_session_client_new_cb(SSL *ssl, SSL_SESSION *session) { @@ -402,14 +401,15 @@ int tls_session_new_cb(SSL *ssl, SSL_SESSION *session) { id = SSL_SESSION_get_id(session, &idlen); if (LOG_ENABLED(INFO)) { - LOG(INFO) << "Memcached: cache session, id=" << util::format_hex(id, idlen); + LOG(INFO) << "Memcached: cache session, id=" + << util::format_hex(std::span{id, idlen}); } auto req = std::make_unique(); req->op = MemcachedOp::ADD; - req->key = MEMCACHED_SESSION_CACHE_KEY_PREFIX.str(); + req->key = MEMCACHED_SESSION_CACHE_KEY_PREFIX; req->key += - util::format_hex(balloc, StringRef{id, static_cast(idlen)}); + util::format_hex(balloc, std::span{id, static_cast(idlen)}); auto sessionlen = i2d_SSL_SESSION(session, nullptr); req->value.resize(sessionlen); @@ -454,7 +454,7 @@ SSL_SESSION *tls_session_get_cb(SSL *ssl, const unsigned char *id, int idlen, if (conn->tls.cached_session) { if (LOG_ENABLED(INFO)) { LOG(INFO) << "Memcached: found cached session, id=" - << util::format_hex(id, idlen); + << util::format_hex(std::span{id, static_cast(idlen)}); } // This is required, without this, memory leak occurs. @@ -467,14 +467,14 @@ SSL_SESSION *tls_session_get_cb(SSL *ssl, const unsigned char *id, int idlen, if (LOG_ENABLED(INFO)) { LOG(INFO) << "Memcached: get cached session, id=" - << util::format_hex(id, idlen); + << util::format_hex(std::span{id, static_cast(idlen)}); } auto req = std::make_unique(); req->op = MemcachedOp::GET; - req->key = MEMCACHED_SESSION_CACHE_KEY_PREFIX.str(); + req->key = MEMCACHED_SESSION_CACHE_KEY_PREFIX; req->key += - util::format_hex(balloc, StringRef{id, static_cast(idlen)}); + util::format_hex(balloc, std::span{id, static_cast(idlen)}); req->cb = [conn](MemcachedRequest *, MemcachedResult res) { if (LOG_ENABLED(INFO)) { LOG(INFO) << "Memcached: returned status code " @@ -560,14 +560,14 @@ int ticket_key_cb(SSL *ssl, unsigned char *key_name, unsigned char *iv, EVP_EncryptInit_ex(ctx, get_config()->tls.ticket.cipher, nullptr, key.data.enc_key.data(), iv); #if OPENSSL_3_0_0_API - std::array params{ + auto params = std::to_array({ OSSL_PARAM_construct_octet_string( OSSL_MAC_PARAM_KEY, key.data.hmac_key.data(), key.hmac_keylen), OSSL_PARAM_construct_utf8_string( OSSL_MAC_PARAM_DIGEST, const_cast(EVP_MD_get0_name(key.hmac)), 0), OSSL_PARAM_construct_end(), - }; + }); if (!EVP_MAC_CTX_set_params(hctx, params.data())) { if (LOG_ENABLED(INFO)) { CLOG(INFO, handler) << "EVP_MAC_CTX_set_params failed"; @@ -593,26 +593,27 @@ int ticket_key_cb(SSL *ssl, unsigned char *key_name, unsigned char *iv, if (i == keys.size()) { if (LOG_ENABLED(INFO)) { CLOG(INFO, handler) << "session ticket key " - << util::format_hex(key_name, 16) << " not found"; + << util::format_hex(std::span{key_name, 16}) + << " not found"; } return 0; } if (LOG_ENABLED(INFO)) { CLOG(INFO, handler) << "decrypt session ticket key: " - << util::format_hex(key_name, 16); + << util::format_hex(std::span{key_name, 16}); } auto &key = keys[i]; #if OPENSSL_3_0_0_API - std::array params{ + auto params = std::to_array({ OSSL_PARAM_construct_octet_string( OSSL_MAC_PARAM_KEY, key.data.hmac_key.data(), key.hmac_keylen), OSSL_PARAM_construct_utf8_string( OSSL_MAC_PARAM_DIGEST, const_cast(EVP_MD_get0_name(key.hmac)), 0), OSSL_PARAM_construct_end(), - }; + }); if (!EVP_MAC_CTX_set_params(hctx, params.data())) { if (LOG_ENABLED(INFO)) { CLOG(INFO, handler) << "EVP_MAC_CTX_set_params failed"; @@ -676,7 +677,7 @@ int alpn_select_proto_cb(SSL *ssl, const unsigned char **out, auto proto_len = *p; if (proto_id + proto_len <= end && - util::streq(target_proto_id, StringRef{proto_id, proto_len})) { + target_proto_id == StringRef{proto_id, proto_len}) { *out = reinterpret_cast(proto_id); *outlen = proto_len; @@ -698,8 +699,8 @@ int quic_alpn_select_proto_cb(SSL *ssl, const unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg) { constexpr StringRef alpnlist[] = { - StringRef::from_lit("h3"), - StringRef::from_lit("h3-29"), + "h3"_sr, + "h3-29"_sr, }; for (auto &alpn : alpnlist) { @@ -929,9 +930,9 @@ struct TLSProtocol { }; constexpr TLSProtocol TLS_PROTOS[] = { - TLSProtocol{StringRef::from_lit("TLSv1.2"), SSL_OP_NO_TLSv1_2}, - TLSProtocol{StringRef::from_lit("TLSv1.1"), SSL_OP_NO_TLSv1_1}, - TLSProtocol{StringRef::from_lit("TLSv1.0"), SSL_OP_NO_TLSv1}}; + TLSProtocol{"TLSv1.2"_sr, SSL_OP_NO_TLSv1_2}, + TLSProtocol{"TLSv1.1"_sr, SSL_OP_NO_TLSv1_1}, + TLSProtocol{"TLSv1.0"_sr, SSL_OP_NO_TLSv1}}; long int create_tls_proto_mask(const std::vector &tls_proto_list) { long int res = 0; @@ -1008,14 +1009,14 @@ SSL_CTX *create_ssl_context(const char *private_key_file, const char *cert_file, SSL_CTX_set_timeout(ssl_ctx, tlsconf.session_timeout.count()); - if (SSL_CTX_set_cipher_list(ssl_ctx, tlsconf.ciphers.c_str()) == 0) { + if (SSL_CTX_set_cipher_list(ssl_ctx, tlsconf.ciphers.data()) == 0) { LOG(FATAL) << "SSL_CTX_set_cipher_list " << tlsconf.ciphers << " failed: " << ERR_error_string(ERR_get_error(), nullptr); DIE(); } #if defined(NGHTTP2_GENUINE_OPENSSL) || defined(NGHTTP2_OPENSSL_IS_LIBRESSL) - if (SSL_CTX_set_ciphersuites(ssl_ctx, tlsconf.tls13_ciphers.c_str()) == 0) { + if (SSL_CTX_set_ciphersuites(ssl_ctx, tlsconf.tls13_ciphers.data()) == 0) { LOG(FATAL) << "SSL_CTX_set_ciphersuites " << tlsconf.tls13_ciphers << " failed: " << ERR_error_string(ERR_get_error(), nullptr); DIE(); @@ -1023,7 +1024,7 @@ SSL_CTX *create_ssl_context(const char *private_key_file, const char *cert_file, #endif // NGHTTP2_GENUINE_OPENSSL || NGHTTP2_OPENSSL_IS_LIBRESSL #ifndef OPENSSL_NO_EC - if (SSL_CTX_set1_curves_list(ssl_ctx, tlsconf.ecdh_curves.c_str()) != 1) { + if (SSL_CTX_set1_curves_list(ssl_ctx, tlsconf.ecdh_curves.data()) != 1) { LOG(FATAL) << "SSL_CTX_set1_curves_list " << tlsconf.ecdh_curves << " failed"; DIE(); @@ -1032,7 +1033,7 @@ SSL_CTX *create_ssl_context(const char *private_key_file, const char *cert_file, if (!tlsconf.dh_param_file.empty()) { // Read DH parameters from file - auto bio = BIO_new_file(tlsconf.dh_param_file.c_str(), "rb"); + auto bio = BIO_new_file(tlsconf.dh_param_file.data(), "rb"); if (bio == nullptr) { LOG(FATAL) << "BIO_new_file() failed: " << ERR_error_string(ERR_get_error(), nullptr); @@ -1076,7 +1077,7 @@ SSL_CTX *create_ssl_context(const char *private_key_file, const char *cert_file, } if (!tlsconf.cacert.empty()) { - if (SSL_CTX_load_verify_locations(ssl_ctx, tlsconf.cacert.c_str(), + if (SSL_CTX_load_verify_locations(ssl_ctx, tlsconf.cacert.data(), nullptr) != 1) { LOG(FATAL) << "Could not load trusted ca certificates from " << tlsconf.cacert << ": " @@ -1119,7 +1120,7 @@ SSL_CTX *create_ssl_context(const char *private_key_file, const char *cert_file, if (tlsconf.client_verify.enabled) { if (!tlsconf.client_verify.cacert.empty()) { if (SSL_CTX_load_verify_locations( - ssl_ctx, tlsconf.client_verify.cacert.c_str(), nullptr) != 1) { + ssl_ctx, tlsconf.client_verify.cacert.data(), nullptr) != 1) { LOG(FATAL) << "Could not load trusted ca certificates from " << tlsconf.client_verify.cacert << ": " @@ -1130,7 +1131,7 @@ SSL_CTX *create_ssl_context(const char *private_key_file, const char *cert_file, // error even though it returns success. See // http://forum.nginx.org/read.php?29,242540 ERR_clear_error(); - auto list = SSL_load_client_CA_file(tlsconf.client_verify.cacert.c_str()); + auto list = SSL_load_client_CA_file(tlsconf.client_verify.cacert.data()); if (!list) { LOG(FATAL) << "Could not load ca certificates from " << tlsconf.client_verify.cacert << ": " @@ -1282,14 +1283,14 @@ SSL_CTX *create_quic_ssl_context(const char *private_key_file, SSL_CTX_set_timeout(ssl_ctx, tlsconf.session_timeout.count()); - if (SSL_CTX_set_cipher_list(ssl_ctx, tlsconf.ciphers.c_str()) == 0) { + if (SSL_CTX_set_cipher_list(ssl_ctx, tlsconf.ciphers.data()) == 0) { LOG(FATAL) << "SSL_CTX_set_cipher_list " << tlsconf.ciphers << " failed: " << ERR_error_string(ERR_get_error(), nullptr); DIE(); } # if defined(NGHTTP2_GENUINE_OPENSSL) || defined(NGHTTP2_OPENSSL_IS_LIBRESSL) - if (SSL_CTX_set_ciphersuites(ssl_ctx, tlsconf.tls13_ciphers.c_str()) == 0) { + if (SSL_CTX_set_ciphersuites(ssl_ctx, tlsconf.tls13_ciphers.data()) == 0) { LOG(FATAL) << "SSL_CTX_set_ciphersuites " << tlsconf.tls13_ciphers << " failed: " << ERR_error_string(ERR_get_error(), nullptr); DIE(); @@ -1297,7 +1298,7 @@ SSL_CTX *create_quic_ssl_context(const char *private_key_file, # endif // NGHTTP2_GENUINE_OPENSSL || NGHTTP2_OPENSSL_IS_LIBRESSL # ifndef OPENSSL_NO_EC - if (SSL_CTX_set1_curves_list(ssl_ctx, tlsconf.ecdh_curves.c_str()) != 1) { + if (SSL_CTX_set1_curves_list(ssl_ctx, tlsconf.ecdh_curves.data()) != 1) { LOG(FATAL) << "SSL_CTX_set1_curves_list " << tlsconf.ecdh_curves << " failed"; DIE(); @@ -1306,7 +1307,7 @@ SSL_CTX *create_quic_ssl_context(const char *private_key_file, if (!tlsconf.dh_param_file.empty()) { // Read DH parameters from file - auto bio = BIO_new_file(tlsconf.dh_param_file.c_str(), "rb"); + auto bio = BIO_new_file(tlsconf.dh_param_file.data(), "rb"); if (bio == nullptr) { LOG(FATAL) << "BIO_new_file() failed: " << ERR_error_string(ERR_get_error(), nullptr); @@ -1350,7 +1351,7 @@ SSL_CTX *create_quic_ssl_context(const char *private_key_file, } if (!tlsconf.cacert.empty()) { - if (SSL_CTX_load_verify_locations(ssl_ctx, tlsconf.cacert.c_str(), + if (SSL_CTX_load_verify_locations(ssl_ctx, tlsconf.cacert.data(), nullptr) != 1) { LOG(FATAL) << "Could not load trusted ca certificates from " << tlsconf.cacert << ": " @@ -1393,7 +1394,7 @@ SSL_CTX *create_quic_ssl_context(const char *private_key_file, if (tlsconf.client_verify.enabled) { if (!tlsconf.client_verify.cacert.empty()) { if (SSL_CTX_load_verify_locations( - ssl_ctx, tlsconf.client_verify.cacert.c_str(), nullptr) != 1) { + ssl_ctx, tlsconf.client_verify.cacert.data(), nullptr) != 1) { LOG(FATAL) << "Could not load trusted ca certificates from " << tlsconf.client_verify.cacert << ": " @@ -1404,7 +1405,7 @@ SSL_CTX *create_quic_ssl_context(const char *private_key_file, // error even though it returns success. See // http://forum.nginx.org/read.php?29,242540 ERR_clear_error(); - auto list = SSL_load_client_CA_file(tlsconf.client_verify.cacert.c_str()); + auto list = SSL_load_client_CA_file(tlsconf.client_verify.cacert.data()); if (!list) { LOG(FATAL) << "Could not load ca certificates from " << tlsconf.client_verify.cacert << ": " @@ -1533,14 +1534,14 @@ SSL_CTX *create_ssl_client_context( DIE(); } - if (SSL_CTX_set_cipher_list(ssl_ctx, tlsconf.client.ciphers.c_str()) == 0) { + if (SSL_CTX_set_cipher_list(ssl_ctx, tlsconf.client.ciphers.data()) == 0) { LOG(FATAL) << "SSL_CTX_set_cipher_list " << tlsconf.client.ciphers << " failed: " << ERR_error_string(ERR_get_error(), nullptr); DIE(); } #if defined(NGHTTP2_GENUINE_OPENSSL) || defined(NGHTTP2_OPENSSL_IS_LIBRESSL) - if (SSL_CTX_set_ciphersuites(ssl_ctx, tlsconf.client.tls13_ciphers.c_str()) == + if (SSL_CTX_set_ciphersuites(ssl_ctx, tlsconf.client.tls13_ciphers.data()) == 0) { LOG(FATAL) << "SSL_CTX_set_ciphersuites " << tlsconf.client.tls13_ciphers << " failed: " << ERR_error_string(ERR_get_error(), nullptr); @@ -1556,7 +1557,7 @@ SSL_CTX *create_ssl_client_context( } if (!cacert.empty()) { - if (SSL_CTX_load_verify_locations(ssl_ctx, cacert.c_str(), nullptr) != 1) { + if (SSL_CTX_load_verify_locations(ssl_ctx, cacert.data(), nullptr) != 1) { LOG(FATAL) << "Could not load trusted ca certificates from " << cacert << ": " << ERR_error_string(ERR_get_error(), nullptr); @@ -1569,7 +1570,7 @@ SSL_CTX *create_ssl_client_context( } if (!cert_file.empty()) { - if (SSL_CTX_use_certificate_chain_file(ssl_ctx, cert_file.c_str()) != 1) { + if (SSL_CTX_use_certificate_chain_file(ssl_ctx, cert_file.data()) != 1) { LOG(FATAL) << "Could not load client certificate from " << cert_file << ": " << ERR_error_string(ERR_get_error(), nullptr); @@ -1579,7 +1580,7 @@ SSL_CTX *create_ssl_client_context( if (!private_key_file.empty()) { #ifndef HAVE_NEVERBLEED - if (SSL_CTX_use_PrivateKey_file(ssl_ctx, private_key_file.c_str(), + if (SSL_CTX_use_PrivateKey_file(ssl_ctx, private_key_file.data(), SSL_FILETYPE_PEM) != 1) { LOG(FATAL) << "Could not load client private key from " << private_key_file << ": " @@ -1588,7 +1589,7 @@ SSL_CTX *create_ssl_client_context( } #else // HAVE_NEVERBLEED std::array errbuf; - if (neverbleed_load_private_key_file(nb, ssl_ctx, private_key_file.c_str(), + if (neverbleed_load_private_key_file(nb, ssl_ctx, private_key_file.data(), errbuf.data()) != 1) { LOG(FATAL) << "neverbleed_load_private_key_file: could not load client " "private key from " @@ -1684,7 +1685,7 @@ bool tls_hostname_match(const StringRef &pattern, const StringRef &hostname) { if (ptLeftLabelEnd == std::end(pattern) || std::find(ptLeftLabelEnd + 1, std::end(pattern), '.') == std::end(pattern) || - ptLeftLabelEnd < ptWildcard || util::istarts_with_l(pattern, "xn--")) { + ptLeftLabelEnd < ptWildcard || util::istarts_with(pattern, "xn--"_sr)) { wildcardEnabled = false; } @@ -1801,8 +1802,8 @@ int verify_numeric_hostname(X509 *cert, const StringRef &hostname, } // cn is not NULL terminated - auto rv = util::streq(hostname, cn); - OPENSSL_free(const_cast(cn.c_str())); + auto rv = hostname == cn; + OPENSSL_free(const_cast(cn.data())); if (rv) { return 0; @@ -1867,15 +1868,15 @@ int verify_dns_hostname(X509 *cert, const StringRef &hostname) { if (cn[cn.size() - 1] == '.') { if (cn.size() == 1) { - OPENSSL_free(const_cast(cn.c_str())); + OPENSSL_free(const_cast(cn.data())); return -1; } - cn = StringRef{cn.c_str(), cn.size() - 1}; + cn = StringRef{cn.data(), cn.size() - 1}; } auto rv = tls_hostname_match(cn, hostname); - OPENSSL_free(const_cast(cn.c_str())); + OPENSSL_free(const_cast(cn.data())); return rv ? 0 : -1; } @@ -1883,7 +1884,7 @@ int verify_dns_hostname(X509 *cert, const StringRef &hostname) { namespace { int verify_hostname(X509 *cert, const StringRef &hostname, const Address *addr) { - if (util::numeric_host(hostname.c_str())) { + if (util::numeric_host(hostname.data())) { return verify_numeric_hostname(cert, hostname, addr); } @@ -1923,7 +1924,7 @@ int check_cert(SSL *ssl, const DownstreamAddr *addr, const Address *raddr) { CertLookupTree::CertLookupTree() {} ssize_t CertLookupTree::add_cert(const StringRef &hostname, size_t idx) { - std::array buf; + std::array buf; // NI_MAXHOST includes terminal NULL byte if (hostname.empty() || hostname.size() + 1 > buf.size()) { @@ -1975,7 +1976,7 @@ ssize_t CertLookupTree::add_cert(const StringRef &hostname, size_t idx) { } ssize_t CertLookupTree::lookup(const StringRef &hostname) { - std::array buf; + std::array buf; // NI_MAXHOST includes terminal NULL byte if (hostname.empty() || hostname.size() + 1 > buf.size()) { @@ -2024,9 +2025,7 @@ ssize_t CertLookupTree::lookup(const StringRef &hostname) { continue; } - auto prefixlen = - wprefix.prefix.size() + - (reinterpret_cast(&rev_host[0]) - &buf[0]); + auto prefixlen = wprefix.prefix.size() + (&rev_host[0] - &buf[0]); // Breaking a tie with longer suffix if (prefixlen < best_prefixlen) { @@ -2049,7 +2048,7 @@ void CertLookupTree::dump() const { int cert_lookup_tree_add_ssl_ctx( CertLookupTree *lt, std::vector> &indexed_ssl_ctx, SSL_CTX *ssl_ctx) { - std::array buf; + std::array buf; auto cert = SSL_CTX_get0_certificate(ssl_ctx); auto altnames = static_cast( @@ -2121,17 +2120,17 @@ int cert_lookup_tree_add_ssl_ctx( if (cn[cn.size() - 1] == '.') { if (cn.size() == 1) { - OPENSSL_free(const_cast(cn.c_str())); + OPENSSL_free(const_cast(cn.data())); return 0; } - cn = StringRef{cn.c_str(), cn.size() - 1}; + cn = StringRef{cn.data(), cn.size() - 1}; } auto end_buf = std::copy(std::begin(cn), std::end(cn), std::begin(buf)); - OPENSSL_free(const_cast(cn.c_str())); + OPENSSL_free(const_cast(cn.data())); util::inp_strlower(std::begin(buf), end_buf); @@ -2154,7 +2153,7 @@ int cert_lookup_tree_add_ssl_ctx( bool in_proto_list(const std::vector &protos, const StringRef &needle) { for (auto &proto : protos) { - if (util::streq(proto, needle)) { + if (proto == needle) { return true; } } @@ -2210,8 +2209,8 @@ setup_server_ssl_context(std::vector &all_ssl_ctx, auto &tlsconf = config->tls; - auto ssl_ctx = create_ssl_context(tlsconf.private_key_file.c_str(), - tlsconf.cert_file.c_str(), tlsconf.sct_data + auto ssl_ctx = create_ssl_context(tlsconf.private_key_file.data(), + tlsconf.cert_file.data(), tlsconf.sct_data #ifdef HAVE_NEVERBLEED , nb @@ -2228,8 +2227,8 @@ setup_server_ssl_context(std::vector &all_ssl_ctx, } for (auto &c : tlsconf.subcerts) { - auto ssl_ctx = create_ssl_context(c.private_key_file.c_str(), - c.cert_file.c_str(), c.sct_data + auto ssl_ctx = create_ssl_context(c.private_key_file.data(), + c.cert_file.data(), c.sct_data #ifdef HAVE_NEVERBLEED , nb @@ -2266,8 +2265,8 @@ SSL_CTX *setup_quic_server_ssl_context( auto &tlsconf = config->tls; auto ssl_ctx = - create_quic_ssl_context(tlsconf.private_key_file.c_str(), - tlsconf.cert_file.c_str(), tlsconf.sct_data + create_quic_ssl_context(tlsconf.private_key_file.data(), + tlsconf.cert_file.data(), tlsconf.sct_data # ifdef HAVE_NEVERBLEED , nb @@ -2284,8 +2283,8 @@ SSL_CTX *setup_quic_server_ssl_context( } for (auto &c : tlsconf.subcerts) { - auto ssl_ctx = create_quic_ssl_context(c.private_key_file.c_str(), - c.cert_file.c_str(), c.sct_data + auto ssl_ctx = create_quic_ssl_context(c.private_key_file.data(), + c.cert_file.data(), c.sct_data # ifdef HAVE_NEVERBLEED , nb @@ -2378,17 +2377,17 @@ SSL_SESSION *reuse_tls_session(const TLSSessionCache &cache) { int proto_version_from_string(const StringRef &v) { #ifdef TLS1_3_VERSION - if (util::strieq_l("TLSv1.3", v)) { + if (util::strieq("TLSv1.3"_sr, v)) { return TLS1_3_VERSION; } #endif // TLS1_3_VERSION - if (util::strieq_l("TLSv1.2", v)) { + if (util::strieq("TLSv1.2"_sr, v)) { return TLS1_2_VERSION; } - if (util::strieq_l("TLSv1.1", v)) { + if (util::strieq("TLSv1.1"_sr, v)) { return TLS1_1_VERSION; } - if (util::strieq_l("TLSv1.0", v)) { + if (util::strieq("TLSv1.0"_sr, v)) { return TLS1_VERSION; } return -1; @@ -2500,9 +2499,9 @@ StringRef get_x509_name(BlockAllocator &balloc, X509_NAME *nm) { } auto iov = make_byte_ref(balloc, slen + 1); - BIO_read(b, iov.base, slen); - iov.base[slen] = '\0'; - return StringRef{iov.base, static_cast(slen)}; + BIO_read(b, iov.data(), slen); + iov[slen] = '\0'; + return StringRef{iov.data(), static_cast(slen)}; } } // namespace @@ -2526,7 +2525,7 @@ StringRef get_x509_serial(BlockAllocator &balloc, X509 *x) { auto n = BN_bn2bin(bn, b.data()); assert(n <= 20); - return util::format_hex(balloc, StringRef{b.data(), static_cast(n)}); + return util::format_hex(balloc, std::span{b.data(), static_cast(n)}); } namespace { diff --git a/yass/third_party/nghttp2/src/shrpx_tls.h b/yass/third_party/nghttp2/src/shrpx_tls.h index f740507b72..8ca165c352 100644 --- a/yass/third_party/nghttp2/src/shrpx_tls.h +++ b/yass/third_party/nghttp2/src/shrpx_tls.h @@ -72,7 +72,11 @@ struct TLSContextData { std::mutex mu; #endif // !HAVE_ATOMIC_STD_SHARED_PTR // OCSP response +#ifdef HAVE_ATOMIC_STD_SHARED_PTR + std::atomic>> ocsp_data; +#else // !HAVE_ATOMIC_STD_SHARED_PTR std::shared_ptr> ocsp_data; +#endif // !HAVE_ATOMIC_STD_SHARED_PTR // Path to certificate file const char *cert_file; diff --git a/yass/third_party/nghttp2/src/shrpx_tls_test.cc b/yass/third_party/nghttp2/src/shrpx_tls_test.cc index 04d16daa3b..013c3474c3 100644 --- a/yass/third_party/nghttp2/src/shrpx_tls_test.cc +++ b/yass/third_party/nghttp2/src/shrpx_tls_test.cc @@ -54,16 +54,16 @@ void test_shrpx_tls_create_lookup_tree(void) { auto tree = std::make_unique(); constexpr StringRef hostnames[] = { - StringRef::from_lit("example.com"), // 0 - StringRef::from_lit("www.example.org"), // 1 - StringRef::from_lit("*www.example.org"), // 2 - StringRef::from_lit("xy*.host.domain"), // 3 - StringRef::from_lit("*yy.host.domain"), // 4 - StringRef::from_lit("nghttp2.sourceforge.net"), // 5 - StringRef::from_lit("sourceforge.net"), // 6 - StringRef::from_lit("sourceforge.net"), // 7, duplicate - StringRef::from_lit("*.foo.bar"), // 8, oo.bar is suffix of *.foo.bar - StringRef::from_lit("oo.bar") // 9 + "example.com"_sr, // 0 + "www.example.org"_sr, // 1 + "*www.example.org"_sr, // 2 + "xy*.host.domain"_sr, // 3 + "*yy.host.domain"_sr, // 4 + "nghttp2.sourceforge.net"_sr, // 5 + "sourceforge.net"_sr, // 6 + "sourceforge.net"_sr, // 7, duplicate + "*.foo.bar"_sr, // 8, oo.bar is suffix of *.foo.bar + "oo.bar"_sr // 9 }; auto num = array_size(hostnames); @@ -75,13 +75,13 @@ void test_shrpx_tls_create_lookup_tree(void) { assert_ssize(0, ==, tree->lookup(hostnames[0])); assert_ssize(1, ==, tree->lookup(hostnames[1])); - assert_ssize(2, ==, tree->lookup(StringRef::from_lit("2www.example.org"))); - assert_ssize(-1, ==, tree->lookup(StringRef::from_lit("www2.example.org"))); - assert_ssize(3, ==, tree->lookup(StringRef::from_lit("xy1.host.domain"))); + assert_ssize(2, ==, tree->lookup("2www.example.org"_sr)); + assert_ssize(-1, ==, tree->lookup("www2.example.org"_sr)); + assert_ssize(3, ==, tree->lookup("xy1.host.domain"_sr)); // Does not match *yy.host.domain, because * must match at least 1 // character. - assert_ssize(-1, ==, tree->lookup(StringRef::from_lit("yy.host.domain"))); - assert_ssize(4, ==, tree->lookup(StringRef::from_lit("xyy.host.domain"))); + assert_ssize(-1, ==, tree->lookup("yy.host.domain"_sr)); + assert_ssize(4, ==, tree->lookup("xyy.host.domain"_sr)); assert_ssize(-1, ==, tree->lookup(StringRef{})); assert_ssize(5, ==, tree->lookup(hostnames[5])); assert_ssize(6, ==, tree->lookup(hostnames[6])); @@ -89,14 +89,14 @@ void test_shrpx_tls_create_lookup_tree(void) { for (int i = 0; i < 7; ++i) { assert_ssize(-1, ==, tree->lookup(StringRef{h6 + i, str_size(h6) - i})); } - assert_ssize(8, ==, tree->lookup(StringRef::from_lit("x.foo.bar"))); + assert_ssize(8, ==, tree->lookup("x.foo.bar"_sr)); assert_ssize(9, ==, tree->lookup(hostnames[9])); constexpr StringRef names[] = { - StringRef::from_lit("rab"), // 1 - StringRef::from_lit("zab"), // 2 - StringRef::from_lit("zzub"), // 3 - StringRef::from_lit("ab") // 4 + "rab"_sr, // 1 + "zab"_sr, // 2 + "zzub"_sr, // 3 + "ab"_sr // 4 }; num = array_size(names); @@ -169,12 +169,11 @@ void test_shrpx_tls_cert_lookup_tree_add_ssl_ctx(void) { assert_int(0, ==, rv); - assert_ssize(-1, ==, - tree.lookup(StringRef::from_lit("not-used.nghttp2.org"))); - assert_ssize(0, ==, tree.lookup(StringRef::from_lit("test.nghttp2.org"))); - assert_ssize(1, ==, tree.lookup(StringRef::from_lit("w.test.nghttp2.org"))); - assert_ssize(2, ==, tree.lookup(StringRef::from_lit("www.test.nghttp2.org"))); - assert_ssize(3, ==, tree.lookup(StringRef::from_lit("test.example.com"))); + assert_ssize(-1, ==, tree.lookup("not-used.nghttp2.org"_sr)); + assert_ssize(0, ==, tree.lookup("test.nghttp2.org"_sr)); + assert_ssize(1, ==, tree.lookup("w.test.nghttp2.org"_sr)); + assert_ssize(2, ==, tree.lookup("www.test.nghttp2.org"_sr)); + assert_ssize(3, ==, tree.lookup("test.example.com"_sr)); } template @@ -249,11 +248,10 @@ static Address parse_addr(const char *ipaddr) { void test_shrpx_tls_verify_numeric_hostname(void) { { // Successful IPv4 address match in SAN - static constexpr char ipaddr[] = "127.0.0.1"; + static constexpr auto ipaddr = "127.0.0.1"_sr; auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/verify_hostname.crt"); - auto addr = parse_addr(ipaddr); - auto rv = - tls::verify_numeric_hostname(cert, StringRef::from_lit(ipaddr), &addr); + auto addr = parse_addr(ipaddr.data()); + auto rv = tls::verify_numeric_hostname(cert, ipaddr, &addr); assert_int(0, ==, rv); @@ -262,11 +260,10 @@ void test_shrpx_tls_verify_numeric_hostname(void) { { // Successful IPv6 address match in SAN - static constexpr char ipaddr[] = "::1"; + static constexpr auto ipaddr = "::1"_sr; auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/verify_hostname.crt"); - auto addr = parse_addr(ipaddr); - auto rv = - tls::verify_numeric_hostname(cert, StringRef::from_lit(ipaddr), &addr); + auto addr = parse_addr(ipaddr.data()); + auto rv = tls::verify_numeric_hostname(cert, ipaddr, &addr); assert_int(0, ==, rv); @@ -275,11 +272,10 @@ void test_shrpx_tls_verify_numeric_hostname(void) { { // Unsuccessful IPv4 address match in SAN - static constexpr char ipaddr[] = "192.168.0.127"; + static constexpr auto ipaddr = "192.168.0.127"_sr; auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/verify_hostname.crt"); - auto addr = parse_addr(ipaddr); - auto rv = - tls::verify_numeric_hostname(cert, StringRef::from_lit(ipaddr), &addr); + auto addr = parse_addr(ipaddr.data()); + auto rv = tls::verify_numeric_hostname(cert, ipaddr, &addr); assert_int(-1, ==, rv); @@ -288,11 +284,10 @@ void test_shrpx_tls_verify_numeric_hostname(void) { { // CommonName is not used if SAN is available - static constexpr char ipaddr[] = "192.168.0.1"; + static constexpr auto ipaddr = "192.168.0.1"_sr; auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/ipaddr.crt"); - auto addr = parse_addr(ipaddr); - auto rv = - tls::verify_numeric_hostname(cert, StringRef::from_lit(ipaddr), &addr); + auto addr = parse_addr(ipaddr.data()); + auto rv = tls::verify_numeric_hostname(cert, ipaddr, &addr); assert_int(-1, ==, rv); @@ -301,11 +296,10 @@ void test_shrpx_tls_verify_numeric_hostname(void) { { // Successful IPv4 address match in CommonName - static constexpr char ipaddr[] = "127.0.0.1"; + static constexpr auto ipaddr = "127.0.0.1"_sr; auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/nosan_ip.crt"); - auto addr = parse_addr(ipaddr); - auto rv = - tls::verify_numeric_hostname(cert, StringRef::from_lit(ipaddr), &addr); + auto addr = parse_addr(ipaddr.data()); + auto rv = tls::verify_numeric_hostname(cert, ipaddr, &addr); assert_int(0, ==, rv); @@ -317,8 +311,7 @@ void test_shrpx_tls_verify_dns_hostname(void) { { // Successful exact DNS name match in SAN auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/verify_hostname.crt"); - auto rv = tls::verify_dns_hostname( - cert, StringRef::from_lit("nghttp2.example.com")); + auto rv = tls::verify_dns_hostname(cert, "nghttp2.example.com"_sr); assert_int(0, ==, rv); @@ -328,8 +321,7 @@ void test_shrpx_tls_verify_dns_hostname(void) { { // Successful wildcard DNS name match in SAN auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/verify_hostname.crt"); - auto rv = tls::verify_dns_hostname( - cert, StringRef::from_lit("www.nghttp2.example.com")); + auto rv = tls::verify_dns_hostname(cert, "www.nghttp2.example.com"_sr); assert_int(0, ==, rv); @@ -339,7 +331,7 @@ void test_shrpx_tls_verify_dns_hostname(void) { { // CommonName is not used if SAN is available. auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/verify_hostname.crt"); - auto rv = tls::verify_dns_hostname(cert, StringRef::from_lit("localhost")); + auto rv = tls::verify_dns_hostname(cert, "localhost"_sr); assert_int(-1, ==, rv); @@ -349,7 +341,7 @@ void test_shrpx_tls_verify_dns_hostname(void) { { // Successful DNS name match in CommonName auto cert = load_cert(NGHTTP2_SRC_DIR "/testdata/nosan.crt"); - auto rv = tls::verify_dns_hostname(cert, StringRef::from_lit("localhost")); + auto rv = tls::verify_dns_hostname(cert, "localhost"_sr); assert_int(0, ==, rv); diff --git a/yass/third_party/nghttp2/src/shrpx_worker.cc b/yass/third_party/nghttp2/src/shrpx_worker.cc index 9f5911fdae..3a585f6420 100644 --- a/yass/third_party/nghttp2/src/shrpx_worker.cc +++ b/yass/third_party/nghttp2/src/shrpx_worker.cc @@ -555,9 +555,9 @@ void Worker::process_events() { faddr = &quic_upstream_addrs_[wev.quic_pkt->upstream_addr_index]; } - quic_conn_handler_.handle_packet( - faddr, wev.quic_pkt->remote_addr, wev.quic_pkt->local_addr, - wev.quic_pkt->pi, wev.quic_pkt->data.data(), wev.quic_pkt->data.size()); + quic_conn_handler_.handle_packet(faddr, wev.quic_pkt->remote_addr, + wev.quic_pkt->local_addr, wev.quic_pkt->pi, + wev.quic_pkt->data); break; } @@ -579,7 +579,7 @@ tls::CertLookupTree *Worker::get_quic_cert_lookup_tree() const { std::shared_ptr Worker::get_ticket_keys() { #ifdef HAVE_ATOMIC_STD_SHARED_PTR - return std::atomic_load_explicit(&ticket_keys_, std::memory_order_acquire); + return ticket_keys_.load(std::memory_order_acquire); #else // !HAVE_ATOMIC_STD_SHARED_PTR std::lock_guard g(ticket_keys_m_); return ticket_keys_; @@ -589,8 +589,7 @@ std::shared_ptr Worker::get_ticket_keys() { void Worker::set_ticket_keys(std::shared_ptr ticket_keys) { #ifdef HAVE_ATOMIC_STD_SHARED_PTR // This is single writer - std::atomic_store_explicit(&ticket_keys_, std::move(ticket_keys), - std::memory_order_release); + ticket_keys_.store(std::move(ticket_keys), std::memory_order_release); #else // !HAVE_ATOMIC_STD_SHARED_PTR std::lock_guard g(ticket_keys_m_); ticket_keys_ = std::move(ticket_keys); @@ -855,8 +854,7 @@ int Worker::create_quic_server_socket(UpstreamAddr &faddr) { hints.ai_flags |= AI_ADDRCONFIG; # endif // AI_ADDRCONFIG - auto node = - faddr.host == StringRef::from_lit("*") ? nullptr : faddr.host.c_str(); + auto node = faddr.host == "*"_sr ? nullptr : faddr.host.data(); addrinfo *res, *rp; rv = getaddrinfo(node, service.c_str(), &hints, &res); @@ -1027,7 +1025,7 @@ int Worker::create_quic_server_socket(UpstreamAddr &faddr) { if (should_attach_bpf()) { auto &bpfconf = config->quic.bpf; - auto obj = bpf_object__open_file(bpfconf.prog_file.c_str(), nullptr); + auto obj = bpf_object__open_file(bpfconf.prog_file.data(), nullptr); if (!obj) { auto error = errno; LOG(FATAL) << "Failed to open bpf object file: " @@ -1231,13 +1229,13 @@ const UpstreamAddr *Worker::find_quic_upstream_addr(const Address &local_addr) { if (faddr.port == 443 || faddr.port == 80) { switch (faddr.family) { case AF_INET: - if (util::streq(faddr.hostport, StringRef::from_lit("0.0.0.0"))) { + if (faddr.hostport == "0.0.0.0"_sr) { fallback_faddr = &faddr; } break; case AF_INET6: - if (util::streq(faddr.hostport, StringRef::from_lit("[::]"))) { + if (faddr.hostport == "[::]"_sr) { fallback_faddr = &faddr; } @@ -1248,14 +1246,13 @@ const UpstreamAddr *Worker::find_quic_upstream_addr(const Address &local_addr) { } else { switch (faddr.family) { case AF_INET: - if (util::starts_with(faddr.hostport, - StringRef::from_lit("0.0.0.0:"))) { + if (util::starts_with(faddr.hostport, "0.0.0.0:"_sr)) { fallback_faddr = &faddr; } break; case AF_INET6: - if (util::starts_with(faddr.hostport, StringRef::from_lit("[::]:"))) { + if (util::starts_with(faddr.hostport, "[::]:"_sr)) { fallback_faddr = &faddr; } @@ -1297,10 +1294,10 @@ size_t match_downstream_addr_group_host( if (!wildcard_patterns.empty() && !host.empty()) { auto rev_host_src = make_byte_ref(balloc, host.size() - 1); - auto ep = - std::copy(std::begin(host) + 1, std::end(host), rev_host_src.base); - std::reverse(rev_host_src.base, ep); - auto rev_host = StringRef{rev_host_src.base, ep}; + auto ep = std::copy(std::begin(host) + 1, std::end(host), + std::begin(rev_host_src)); + std::reverse(std::begin(rev_host_src), ep); + auto rev_host = StringRef{std::span{std::begin(rev_host_src), ep}}; ssize_t best_group = -1; const RNode *last_node = nullptr; @@ -1334,7 +1331,7 @@ size_t match_downstream_addr_group_host( } } - group = router.match(StringRef::from_lit(""), path); + group = router.match(""_sr, path); if (group != -1) { if (LOG_ENABLED(INFO)) { LOG(INFO) << "Found pattern with query " << path @@ -1367,7 +1364,7 @@ size_t match_downstream_addr_group( auto path = StringRef{std::begin(raw_path), query}; if (path.empty() || path[0] != '/') { - path = StringRef::from_lit("/"); + path = "/"_sr; } if (hostport.empty()) { @@ -1398,10 +1395,10 @@ size_t match_downstream_addr_group( return 'A' <= c || c <= 'Z'; }) != std::end(host)) { auto low_host = make_byte_ref(balloc, host.size() + 1); - auto ep = std::copy(std::begin(host), std::end(host), low_host.base); + auto ep = std::copy(std::begin(host), std::end(host), std::begin(low_host)); *ep = '\0'; - util::inp_strlower(low_host.base, ep); - host = StringRef{low_host.base, ep}; + util::inp_strlower(std::begin(low_host), ep); + host = StringRef{std::span{std::begin(low_host), ep}}; } return match_downstream_addr_group_host(routerconf, host, path, groups, catch_all, balloc); diff --git a/yass/third_party/nghttp2/src/shrpx_worker.h b/yass/third_party/nghttp2/src/shrpx_worker.h index f8a2d84d76..346e764817 100644 --- a/yass/third_party/nghttp2/src/shrpx_worker.h +++ b/yass/third_party/nghttp2/src/shrpx_worker.h @@ -265,12 +265,12 @@ struct WorkerStat { struct QUICPacket { QUICPacket(size_t upstream_addr_index, const Address &remote_addr, const Address &local_addr, const ngtcp2_pkt_info &pi, - const uint8_t *data, size_t datalen) + std::span data) : upstream_addr_index{upstream_addr_index}, remote_addr{remote_addr}, local_addr{local_addr}, pi{pi}, - data{data, data + datalen} {} + data{std::begin(data), std::end(data)} {} QUICPacket() : upstream_addr_index{}, remote_addr{}, local_addr{}, pi{} {} size_t upstream_addr_index; Address remote_addr; @@ -439,10 +439,12 @@ private: QUICConnectionHandler quic_conn_handler_; #endif // ENABLE_HTTP3 -#ifndef HAVE_ATOMIC_STD_SHARED_PTR +#ifdef HAVE_ATOMIC_STD_SHARED_PTR + std::atomic> ticket_keys_; +#else // !HAVE_ATOMIC_STD_SHARED_PTR std::mutex ticket_keys_m_; -#endif // !HAVE_ATOMIC_STD_SHARED_PTR std::shared_ptr ticket_keys_; +#endif // !HAVE_ATOMIC_STD_SHARED_PTR std::vector> downstream_addr_groups_; // Worker level blocker for downstream connection. For example, // this is used when file descriptor is exhausted. diff --git a/yass/third_party/nghttp2/src/shrpx_worker_process.cc b/yass/third_party/nghttp2/src/shrpx_worker_process.cc index 6591e9bd7d..14040b4653 100644 --- a/yass/third_party/nghttp2/src/shrpx_worker_process.cc +++ b/yass/third_party/nghttp2/src/shrpx_worker_process.cc @@ -74,11 +74,11 @@ void drop_privileges( if (getuid() == 0 && config->uid != 0) { #ifdef HAVE_NEVERBLEED if (nb) { - neverbleed_setuidgid(nb, config->user.c_str(), 1); + neverbleed_setuidgid(nb, config->user.data(), 1); } #endif // HAVE_NEVERBLEED - if (initgroups(config->user.c_str(), config->gid) != 0) { + if (initgroups(config->user.data(), config->gid) != 0) { auto error = errno; LOG(FATAL) << "Could not change supplementary groups: " << xsi_strerror(error, errbuf.data(), errbuf.size()); @@ -576,10 +576,8 @@ int worker_process_event_loop(WorkerProcessConfig *wpconf) { } for (auto &qkm : qkms->keying_materials) { - if (generate_quic_connection_id_encryption_key( - qkm.cid_encryption_key.data(), qkm.cid_encryption_key.size(), - qkm.secret.data(), qkm.secret.size(), qkm.salt.data(), - qkm.salt.size()) != 0) { + if (generate_quic_connection_id_encryption_key(qkm.cid_encryption_key, + qkm.secret, qkm.salt) != 0) { LOG(ERROR) << "Failed to generate QUIC Connection ID encryption key"; return -1; } diff --git a/yass/third_party/nghttp2/src/shrpx_worker_test.cc b/yass/third_party/nghttp2/src/shrpx_worker_test.cc index 4b4b7a6461..9372a2c177 100644 --- a/yass/third_party/nghttp2/src/shrpx_worker_test.cc +++ b/yass/third_party/nghttp2/src/shrpx_worker_test.cc @@ -74,154 +74,134 @@ void test_shrpx_worker_match_downstream_addr_group(void) { } assert_size(0, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, "/"_sr, + groups, 255, balloc)); // port is removed assert_size(0, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org:8080"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org:8080"_sr, + "/"_sr, groups, 255, balloc)); // host is case-insensitive assert_size(4, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("WWW.nghttp2.org"), - StringRef::from_lit("/alpha"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "WWW.nghttp2.org"_sr, + "/alpha"_sr, groups, 255, balloc)); assert_size(1, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/alpha/bravo/"_sr, groups, 255, + balloc)); // /alpha/bravo also matches /alpha/bravo/ assert_size(1, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/alpha/bravo"_sr, groups, 255, + balloc)); // path part is case-sensitive assert_size(0, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/Alpha/bravo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/Alpha/bravo"_sr, groups, 255, + balloc)); assert_size(1, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo/charlie"), groups, 255, - balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/alpha/bravo/charlie"_sr, groups, + 255, balloc)); assert_size(2, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/charlie"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/alpha/charlie"_sr, groups, 255, + balloc)); // pattern which does not end with '/' must match its entirely. So // this matches to group 0, not group 2. assert_size(0, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/charlie/"), groups, 255, balloc)); - - assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("example.org"), - StringRef::from_lit("/"), groups, 255, balloc)); - - assert_size(255, ==, - match_downstream_addr_group(routerconf, StringRef::from_lit(""), - StringRef::from_lit("/"), groups, 255, + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/alpha/charlie/"_sr, groups, 255, balloc)); assert_size(255, ==, - match_downstream_addr_group(routerconf, StringRef::from_lit(""), - StringRef::from_lit("alpha"), groups, + match_downstream_addr_group(routerconf, "example.org"_sr, "/"_sr, + groups, 255, balloc)); + + assert_size(255, ==, + match_downstream_addr_group(routerconf, ""_sr, "/"_sr, groups, 255, balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("foo/bar"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, ""_sr, "alpha"_sr, groups, + 255, balloc)); - // If path is StringRef::from_lit("*", only match with host + "/"). + assert_size(255, ==, + match_downstream_addr_group(routerconf, "foo/bar"_sr, "/"_sr, + groups, 255, balloc)); + + // If path is "*", only match with host + "/"). assert_size(0, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("*"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, "*"_sr, + groups, 255, balloc)); assert_size(5, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("[::1]"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "[::1]"_sr, "/"_sr, + groups, 255, balloc)); assert_size(5, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("[::1]:8080"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "[::1]:8080"_sr, "/"_sr, + groups, 255, balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("[::1"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "[::1"_sr, "/"_sr, groups, + 255, balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("[::1]8000"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "[::1]8000"_sr, "/"_sr, + groups, 255, balloc)); // Check the case where adding route extends tree assert_size(6, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo/delta"), groups, 255, - balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/alpha/bravo/delta"_sr, groups, 255, + balloc)); assert_size(1, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/alpha/bravo/delta/"), groups, 255, - balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/alpha/bravo/delta/"_sr, groups, 255, + balloc)); // Check the case where query is done in a single node assert_size(7, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("example.com"), - StringRef::from_lit("/alpha/bravo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "example.com"_sr, + "/alpha/bravo"_sr, groups, 255, + balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("example.com"), - StringRef::from_lit("/alpha/bravo/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "example.com"_sr, + "/alpha/bravo/"_sr, groups, 255, + balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("example.com"), - StringRef::from_lit("/alpha"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "example.com"_sr, + "/alpha"_sr, groups, 255, balloc)); // Check the case where quey is done in a single node assert_size(8, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("192.168.0.1"), - StringRef::from_lit("/alpha"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "192.168.0.1"_sr, + "/alpha"_sr, groups, 255, balloc)); assert_size(8, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("192.168.0.1"), - StringRef::from_lit("/alpha/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "192.168.0.1"_sr, + "/alpha/"_sr, groups, 255, balloc)); assert_size(8, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("192.168.0.1"), - StringRef::from_lit("/alpha/bravo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "192.168.0.1"_sr, + "/alpha/bravo"_sr, groups, 255, + balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("192.168.0.1"), - StringRef::from_lit("/alph"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "192.168.0.1"_sr, + "/alph"_sr, groups, 255, balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("192.168.0.1"), - StringRef::from_lit("/"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "192.168.0.1"_sr, "/"_sr, + groups, 255, balloc)); // Test for wildcard hosts auto g1 = std::make_shared(); @@ -236,52 +216,46 @@ void test_shrpx_worker_match_downstream_addr_group(void) { g3->pattern = ImmutableString::from_lit(".local"); groups.push_back(std::move(g3)); - wp.emplace_back(StringRef::from_lit("git.nghttp2.org")); - wcrouter.add_route(StringRef::from_lit("gro.2ptthgn.tig"), 0); - wp.back().router.add_route(StringRef::from_lit("/echo/"), 10); + wp.emplace_back("git.nghttp2.org"_sr); + wcrouter.add_route("gro.2ptthgn.tig"_sr, 0); + wp.back().router.add_route("/echo/"_sr, 10); - wp.emplace_back(StringRef::from_lit(".nghttp2.org")); - wcrouter.add_route(StringRef::from_lit("gro.2ptthgn."), 1); - wp.back().router.add_route(StringRef::from_lit("/echo/"), 11); - wp.back().router.add_route(StringRef::from_lit("/echo/foxtrot"), 12); + wp.emplace_back(".nghttp2.org"_sr); + wcrouter.add_route("gro.2ptthgn."_sr, 1); + wp.back().router.add_route("/echo/"_sr, 11); + wp.back().router.add_route("/echo/foxtrot"_sr, 12); - wp.emplace_back(StringRef::from_lit(".local")); - wcrouter.add_route(StringRef::from_lit("lacol."), 2); - wp.back().router.add_route(StringRef::from_lit("/"), 13); + wp.emplace_back(".local"_sr); + wcrouter.add_route("lacol."_sr, 2); + wp.back().router.add_route("/"_sr, 13); assert_size(11, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("git.nghttp2.org"), - StringRef::from_lit("/echo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "git.nghttp2.org"_sr, + "/echo"_sr, groups, 255, balloc)); assert_size(10, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("0git.nghttp2.org"), - StringRef::from_lit("/echo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "0git.nghttp2.org"_sr, + "/echo"_sr, groups, 255, balloc)); assert_size(11, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("it.nghttp2.org"), - StringRef::from_lit("/echo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "it.nghttp2.org"_sr, + "/echo"_sr, groups, 255, balloc)); assert_size(255, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit(".nghttp2.org"), - StringRef::from_lit("/echo/foxtrot"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, ".nghttp2.org"_sr, + "/echo/foxtrot"_sr, groups, 255, + balloc)); assert_size(9, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("alpha.nghttp2.org"), - StringRef::from_lit("/golf"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "alpha.nghttp2.org"_sr, + "/golf"_sr, groups, 255, balloc)); assert_size(0, ==, - match_downstream_addr_group( - routerconf, StringRef::from_lit("nghttp2.org"), - StringRef::from_lit("/echo"), groups, 255, balloc)); + match_downstream_addr_group(routerconf, "nghttp2.org"_sr, + "/echo"_sr, groups, 255, balloc)); assert_size(13, ==, - match_downstream_addr_group(routerconf, - StringRef::from_lit("test.local"), + match_downstream_addr_group(routerconf, "test.local"_sr, StringRef{}, groups, 255, balloc)); } diff --git a/yass/third_party/nghttp2/src/template.h b/yass/third_party/nghttp2/src/template.h index 530a1d1333..3ab36770c8 100644 --- a/yass/third_party/nghttp2/src/template.h +++ b/yass/third_party/nghttp2/src/template.h @@ -37,20 +37,11 @@ #include #include #include +#include +#include namespace nghttp2 { -// std::forward is constexpr since C++14 -template -constexpr std::array< - typename std::decay::type>::type, - sizeof...(T)> -make_array(T &&...t) { - return std::array< - typename std::decay::type>::type, - sizeof...(T)>{{std::forward(t)...}}; -} - template constexpr size_t array_size(T (&)[N]) { return N; } @@ -67,8 +58,7 @@ template struct Defer { Defer(Defer &&o) noexcept : f(std::move(o.f)) {} ~Defer() { f(); } - using ResultType = typename std::result_of::type( - typename std::decay::type...)>::type; + using ResultType = std::invoke_result_t; std::function f; }; @@ -234,27 +224,27 @@ public: using const_iterator = const_pointer; using const_reverse_iterator = std::reverse_iterator; - ImmutableString() : len(0), base("") {} - ImmutableString(const char *s, size_t slen) + constexpr ImmutableString() : len(0), base("") {} + constexpr ImmutableString(const char *s, size_t slen) : len(slen), base(copystr(s, s + len)) {} - explicit ImmutableString(const char *s) - : len(strlen(s)), base(copystr(s, s + len)) {} - explicit ImmutableString(const std::string &s) + constexpr explicit ImmutableString(const char *s) + : len(traits_type::length(s)), base(copystr(s, s + len)) {} + constexpr explicit ImmutableString(const std::string &s) : len(s.size()), base(copystr(std::begin(s), std::end(s))) {} template - ImmutableString(InputIt first, InputIt last) + constexpr ImmutableString(InputIt first, InputIt last) : len(std::distance(first, last)), base(copystr(first, last)) {} - ImmutableString(const ImmutableString &other) + constexpr ImmutableString(const ImmutableString &other) : len(other.len), base(copystr(std::begin(other), std::end(other))) {} - ImmutableString(ImmutableString &&other) noexcept + constexpr ImmutableString(ImmutableString &&other) noexcept : len{std::exchange(other.len, 0)}, base{std::exchange(other.base, "")} {} - ~ImmutableString() { + constexpr ~ImmutableString() { if (len) { delete[] base; } } - ImmutableString &operator=(const ImmutableString &other) { + constexpr ImmutableString &operator=(const ImmutableString &other) { if (this == &other) { return *this; } @@ -265,7 +255,7 @@ public: base = copystr(std::begin(other), std::end(other)); return *this; } - ImmutableString &operator=(ImmutableString &&other) noexcept { + constexpr ImmutableString &operator=(ImmutableString &&other) noexcept { if (this == &other) { return *this; } @@ -277,33 +267,41 @@ public: return *this; } - template static ImmutableString from_lit(const char (&s)[N]) { + template + static constexpr ImmutableString from_lit(const char (&s)[N]) { return ImmutableString(s, N - 1); } - const_iterator begin() const { return base; }; - const_iterator cbegin() const { return base; }; + constexpr const_iterator begin() const noexcept { return base; }; + constexpr const_iterator cbegin() const noexcept { return base; }; - const_iterator end() const { return base + len; }; - const_iterator cend() const { return base + len; }; + constexpr const_iterator end() const noexcept { return base + len; }; + constexpr const_iterator cend() const noexcept { return base + len; }; - const_reverse_iterator rbegin() const { + constexpr const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator{base + len}; } - const_reverse_iterator crbegin() const { + constexpr const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator{base + len}; } - const_reverse_iterator rend() const { return const_reverse_iterator{base}; } - const_reverse_iterator crend() const { return const_reverse_iterator{base}; } + constexpr const_reverse_iterator rend() const noexcept { + return const_reverse_iterator{base}; + } + constexpr const_reverse_iterator crend() const noexcept { + return const_reverse_iterator{base}; + } - const char *c_str() const { return base; } - size_type size() const { return len; } - bool empty() const { return len == 0; } - const_reference operator[](size_type pos) const { return *(base + pos); } + constexpr const char *c_str() const noexcept { return base; } + constexpr size_type size() const noexcept { return len; } + constexpr bool empty() const noexcept { return len == 0; } + constexpr const_reference operator[](size_type pos) const noexcept { + return *(base + pos); + } private: - template const char *copystr(InputIt first, InputIt last) { + template + constexpr const char *copystr(InputIt first, InputIt last) { if (first == last) { return ""; } @@ -316,49 +314,23 @@ private: const char *base; }; -inline bool operator==(const ImmutableString &lhs, const ImmutableString &rhs) { +inline constexpr bool operator==(const ImmutableString &lhs, + const ImmutableString &rhs) { return lhs.size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs)); } -inline bool operator==(const ImmutableString &lhs, const std::string &rhs) { +inline constexpr bool operator==(const ImmutableString &lhs, + const std::string &rhs) { return lhs.size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs)); } -inline bool operator==(const std::string &lhs, const ImmutableString &rhs) { - return rhs == lhs; -} - -inline bool operator==(const ImmutableString &lhs, const char *rhs) { - return lhs.size() == strlen(rhs) && +inline constexpr bool operator==(const ImmutableString &lhs, const char *rhs) { + return lhs.size() == std::char_traits::length(rhs) && std::equal(std::begin(lhs), std::end(lhs), rhs); } -inline bool operator==(const char *lhs, const ImmutableString &rhs) { - return rhs == lhs; -} - -inline bool operator!=(const ImmutableString &lhs, const ImmutableString &rhs) { - return !(lhs == rhs); -} - -inline bool operator!=(const ImmutableString &lhs, const std::string &rhs) { - return !(lhs == rhs); -} - -inline bool operator!=(const std::string &lhs, const ImmutableString &rhs) { - return !(rhs == lhs); -} - -inline bool operator!=(const ImmutableString &lhs, const char *rhs) { - return !(lhs == rhs); -} - -inline bool operator!=(const char *lhs, const ImmutableString &rhs) { - return !(rhs == lhs); -} - inline std::ostream &operator<<(std::ostream &o, const ImmutableString &s) { return o.write(s.c_str(), s.size()); } @@ -371,8 +343,7 @@ inline std::string &operator+=(std::string &lhs, const ImmutableString &rhs) { // StringRef is a reference to a string owned by something else. So // it behaves like simple string, but it does not own pointer. When // it is default constructed, it has empty string. You can freely -// copy or move around this struct, but never free its pointer. str() -// function can be used to export the content as std::string. +// copy or move around this struct, but never free its pointer. class StringRef { public: using traits_type = std::char_traits; @@ -386,28 +357,28 @@ public: using const_iterator = const_pointer; using const_reverse_iterator = std::reverse_iterator; - constexpr StringRef() : base(""), len(0) {} - explicit StringRef(const std::string &s) : base(s.c_str()), len(s.size()) {} - explicit StringRef(const ImmutableString &s) + constexpr StringRef() noexcept : base(""), len(0) {} + constexpr StringRef(const StringRef &other) noexcept = default; + constexpr StringRef(std::nullptr_t) = delete; + constexpr StringRef(const std::string &s) : base(s.c_str()), len(s.size()) {} + constexpr explicit StringRef(const std::string_view &s) + : base(s.data()), len(s.size()) {} + constexpr explicit StringRef(const ImmutableString &s) : base(s.c_str()), len(s.size()) {} - explicit StringRef(const char *s) : base(s), len(strlen(s)) {} + constexpr StringRef(const char *s) : base(s), len(traits_type::length(s)) {} constexpr StringRef(const char *s, size_t n) : base(s), len(n) {} - template - constexpr StringRef(const CharT *s, size_t n) + explicit StringRef(const uint8_t *s, size_t n) : base(reinterpret_cast(s)), len(n) {} - template - StringRef(InputIt first, InputIt last) - : base(reinterpret_cast(&*first)), - len(std::distance(first, last)) {} - template - StringRef(InputIt *first, InputIt *last) - : base(reinterpret_cast(first)), - len(std::distance(first, last)) {} - template - constexpr static StringRef from_lit(const CharT (&s)[N]) { - return StringRef{s, N - 1}; - } - static StringRef from_maybe_nullptr(const char *s) { + template , char>>> + constexpr StringRef(InputIt first, InputIt last) + : base(std::to_address(first)), len(std::distance(first, last)) {} + constexpr StringRef(std::span s) + : base(s.data()), len(s.size_bytes()) {} + explicit StringRef(std::span s) + : base(reinterpret_cast(s.data())), len(s.size_bytes()) {} + static constexpr StringRef from_maybe_nullptr(const char *s) noexcept { if (s == nullptr) { return StringRef(); } @@ -415,105 +386,103 @@ public: return StringRef(s); } - constexpr const_iterator begin() const { return base; }; - constexpr const_iterator cbegin() const { return base; }; + constexpr StringRef &operator=(const StringRef &other) noexcept = default; - constexpr const_iterator end() const { return base + len; }; - constexpr const_iterator cend() const { return base + len; }; + constexpr const_iterator begin() const noexcept { return base; }; + constexpr const_iterator cbegin() const noexcept { return base; }; - const_reverse_iterator rbegin() const { + constexpr const_iterator end() const noexcept { return base + len; }; + constexpr const_iterator cend() const noexcept { return base + len; }; + + constexpr const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator{base + len}; } - const_reverse_iterator crbegin() const { + constexpr const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator{base + len}; } - const_reverse_iterator rend() const { return const_reverse_iterator{base}; } - const_reverse_iterator crend() const { return const_reverse_iterator{base}; } + constexpr const_reverse_iterator rend() const noexcept { + return const_reverse_iterator{base}; + } + constexpr const_reverse_iterator crend() const noexcept { + return const_reverse_iterator{base}; + } - constexpr const char *c_str() const { return base; } - constexpr size_type size() const { return len; } - constexpr bool empty() const { return len == 0; } + constexpr const_pointer data() const noexcept { return base; } + constexpr size_type size() const noexcept { return len; } + [[nodiscard]] constexpr bool empty() const noexcept { return len == 0; } constexpr const_reference operator[](size_type pos) const { return *(base + pos); } - std::string str() const { return std::string(base, len); } const uint8_t *byte() const { return reinterpret_cast(base); } + constexpr operator std::string_view() const noexcept { return {base, len}; } + + static constexpr size_type npos = size_type(-1); + + constexpr StringRef substr(size_type pos = 0, size_type count = npos) const { + return {base + pos, std::min(count, len - pos)}; + } + private: const char *base; size_type len; }; -inline bool operator==(const StringRef &lhs, const StringRef &rhs) { +inline constexpr bool operator==(const StringRef &lhs, + const StringRef &rhs) noexcept { return lhs.size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs)); } -inline bool operator==(const StringRef &lhs, const std::string &rhs) { +inline constexpr bool operator==(const StringRef &lhs, + const ImmutableString &rhs) noexcept { return lhs.size() == rhs.size() && std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs)); } -inline bool operator==(const std::string &lhs, const StringRef &rhs) { - return rhs == lhs; +#ifndef __APPLE__ +inline constexpr std::strong_ordering +operator<=>(const StringRef &lhs, const StringRef &rhs) noexcept { + return std::lexicographical_compare_three_way(std::begin(lhs), std::end(lhs), + std::begin(rhs), std::end(rhs)); } - -inline bool operator==(const StringRef &lhs, const char *rhs) { - return lhs.size() == strlen(rhs) && - std::equal(std::begin(lhs), std::end(lhs), rhs); -} - -inline bool operator==(const StringRef &lhs, const ImmutableString &rhs) { - return lhs.size() == rhs.size() && - std::equal(std::begin(lhs), std::end(lhs), std::begin(rhs)); -} - -inline bool operator==(const ImmutableString &lhs, const StringRef &rhs) { - return rhs == lhs; -} - -inline bool operator==(const char *lhs, const StringRef &rhs) { - return rhs == lhs; -} - -inline bool operator!=(const StringRef &lhs, const StringRef &rhs) { - return !(lhs == rhs); -} - -inline bool operator!=(const StringRef &lhs, const std::string &rhs) { - return !(lhs == rhs); -} - -inline bool operator!=(const std::string &lhs, const StringRef &rhs) { - return !(rhs == lhs); -} - -inline bool operator!=(const StringRef &lhs, const char *rhs) { - return !(lhs == rhs); -} - -inline bool operator!=(const char *lhs, const StringRef &rhs) { - return !(rhs == lhs); -} - -inline bool operator<(const StringRef &lhs, const StringRef &rhs) { +#else // __APPLE__ +inline constexpr bool operator<(const StringRef &lhs, + const StringRef &rhs) noexcept { return std::lexicographical_compare(std::begin(lhs), std::end(lhs), std::begin(rhs), std::end(rhs)); } +#endif // __APPLE__ inline std::ostream &operator<<(std::ostream &o, const StringRef &s) { - return o.write(s.c_str(), s.size()); + return o.write(s.data(), s.size()); } inline std::string &operator+=(std::string &lhs, const StringRef &rhs) { - lhs.append(rhs.c_str(), rhs.size()); + lhs.append(rhs.data(), rhs.size()); return lhs; } +constexpr StringRef operator""_sr(const char *str, size_t len) noexcept { + return {str, len}; +} + +template +[[nodiscard]] std::span +as_uint8_span(std::span s) noexcept { + return std::span < const uint8_t, + N == std::dynamic_extent + ? std::dynamic_extent + : N * sizeof(T) > {reinterpret_cast(s.data()), + s.size_bytes()}; +} + inline int run_app(std::function app, int argc, char **argv) { try { diff --git a/yass/third_party/nghttp2/src/template_test.cc b/yass/third_party/nghttp2/src/template_test.cc index db212d1412..99b193b4ac 100644 --- a/yass/third_party/nghttp2/src/template_test.cc +++ b/yass/third_party/nghttp2/src/template_test.cc @@ -32,12 +32,15 @@ #include "template.h" +using namespace std::literals; + namespace nghttp2 { namespace { const MunitTest tests[]{ munit_void_test(test_template_immutable_string), munit_void_test(test_template_string_ref), + munit_void_test(test_template_as_uint8_span), munit_test_end(), }; } // namespace @@ -147,7 +150,7 @@ void test_template_immutable_string(void) { void test_template_string_ref(void) { StringRef empty; - assert_stdstring_equal("", empty.str()); + assert_stdsv_equal(""sv, empty); assert_size(0, ==, empty.size()); // from std::string @@ -162,9 +165,9 @@ void test_template_string_ref(void) { assert_size(5, ==, ref.size()); // from string literal - auto from_lit = StringRef::from_lit("alpha"); + auto from_lit = "alpha"_sr; - assert_stdstring_equal("alpha", from_lit.str()); + assert_stdsv_equal("alpha"sv, from_lit); assert_size(5, ==, from_lit.size()); // from ImmutableString @@ -172,19 +175,19 @@ void test_template_string_ref(void) { StringRef imref(im); - assert_stdstring_equal("bravo", imref.str()); + assert_stdsv_equal("bravo"sv, imref); assert_size(5, ==, imref.size()); // from C-string StringRef cstrref("charlie"); - assert_stdstring_equal("charlie", cstrref.str()); + assert_stdsv_equal("charlie"sv, cstrref); assert_size(7, ==, cstrref.size()); // from C-string and its length StringRef cstrnref("delta", 5); - assert_stdstring_equal("delta", cstrnref.str()); + assert_stdsv_equal("delta"sv, cstrnref); assert_size(5, ==, cstrnref.size()); // operator[] @@ -213,4 +216,24 @@ void test_template_string_ref(void) { } } +void test_template_as_uint8_span(void) { + uint32_t a[2]; + + memcpy(&a, "\xc0\xc1\xc2\xc3\xf0\xf1\xf2\xf3", sizeof(a)); + + // dynamic extent + auto s = as_uint8_span(std::span{a, 2}); + + assert_size(sizeof(a), ==, s.size()); + assert_size(std::dynamic_extent, ==, s.extent); + assert_memory_equal(s.size(), &a, s.data()); + + // non-dynamic extent + auto t = as_uint8_span(std::span{a, 2}); + + assert_size(sizeof(a), ==, t.size()); + assert_size(sizeof(a), ==, t.extent); + assert_memory_equal(t.size(), &a, t.data()); +} + } // namespace nghttp2 diff --git a/yass/third_party/nghttp2/src/template_test.h b/yass/third_party/nghttp2/src/template_test.h index df39de9976..d52bd26774 100644 --- a/yass/third_party/nghttp2/src/template_test.h +++ b/yass/third_party/nghttp2/src/template_test.h @@ -39,6 +39,7 @@ extern const MunitSuite template_suite; munit_void_test_decl(test_template_immutable_string); munit_void_test_decl(test_template_string_ref); +munit_void_test_decl(test_template_as_uint8_span); } // namespace nghttp2 diff --git a/yass/third_party/nghttp2/src/tls.h b/yass/third_party/nghttp2/src/tls.h index c5fda32093..b969af707f 100644 --- a/yass/third_party/nghttp2/src/tls.h +++ b/yass/third_party/nghttp2/src/tls.h @@ -28,11 +28,14 @@ #include "nghttp2_config.h" #include +#include #include #include "ssl_compat.h" +using namespace std::literals; + namespace nghttp2 { namespace tls { @@ -41,19 +44,20 @@ namespace tls { // suites for TLSv1.2 by mozilla. // // https://wiki.mozilla.org/Security/Server_Side_TLS -constexpr char DEFAULT_CIPHER_LIST[] = +constexpr auto DEFAULT_CIPHER_LIST = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-" "AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-" "POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-" - "AES256-GCM-SHA384"; + "AES256-GCM-SHA384"sv; // Recommended general purpose "Modern compatibility" cipher suites // for TLSv1.3 by mozilla. // // https://wiki.mozilla.org/Security/Server_Side_TLS -constexpr char DEFAULT_TLS13_CIPHER_LIST[] = +constexpr auto DEFAULT_TLS13_CIPHER_LIST = #if defined(NGHTTP2_GENUINE_OPENSSL) || defined(NGHTTP2_OPENSSL_IS_LIBRESSL) - "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256" + "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:" + "TLS_CHACHA20_POLY1305_SHA256"sv #else // !NGHTTP2_GENUINE_OPENSSL && !NGHTTP2_OPENSSL_IS_LIBRESSL "" #endif // !NGHTTP2_GENUINE_OPENSSL && !NGHTTP2_OPENSSL_IS_LIBRESSL diff --git a/yass/third_party/nghttp2/src/util.cc b/yass/third_party/nghttp2/src/util.cc index 47151b2a63..e6c421488e 100644 --- a/yass/third_party/nghttp2/src/util.cc +++ b/yass/third_party/nghttp2/src/util.cc @@ -191,11 +191,11 @@ bool in_attr_char(char c) { StringRef percent_encode_token(BlockAllocator &balloc, const StringRef &target) { auto iov = make_byte_ref(balloc, target.size() * 3 + 1); - auto p = percent_encode_token(iov.base, target); + auto p = percent_encode_token(std::begin(iov), target); *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } size_t percent_encode_tokenlen(const StringRef &target) { @@ -237,11 +237,11 @@ StringRef quote_string(BlockAllocator &balloc, const StringRef &target) { } auto iov = make_byte_ref(balloc, target.size() + cnt + 1); - auto p = quote_string(iov.base, target); + auto p = quote_string(std::begin(iov), target); *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } size_t quote_stringlen(const StringRef &target) { @@ -465,13 +465,13 @@ time_t parse_http_date(const StringRef &s) { tm tm{}; #ifdef _WIN32 // there is no strptime - use std::get_time - std::stringstream sstr(s.str()); + std::stringstream sstr(s.data()); sstr >> std::get_time(&tm, "%a, %d %b %Y %H:%M:%S GMT"); if (sstr.fail()) { return 0; } #else // !_WIN32 - char *r = strptime(s.c_str(), "%a, %d %b %Y %H:%M:%S GMT", &tm); + char *r = strptime(s.data(), "%a, %d %b %Y %H:%M:%S GMT", &tm); if (r == 0) { return 0; } @@ -481,7 +481,7 @@ time_t parse_http_date(const StringRef &s) { time_t parse_openssl_asn1_time_print(const StringRef &s) { tm tm{}; - auto r = strptime(s.c_str(), "%b %d %H:%M:%S %Y GMT", &tm); + auto r = strptime(s.data(), "%b %d %H:%M:%S %Y GMT", &tm); if (r == nullptr) { return 0; } @@ -496,32 +496,22 @@ char upcase(char c) { } } -std::string format_hex(const unsigned char *s, size_t len) { +std::string format_hex(std::span s) { std::string res; - res.resize(len * 2); + res.resize(s.size() * 2); - for (size_t i = 0; i < len; ++i) { - unsigned char c = s[i]; + format_hex(std::begin(res), s); - res[i * 2] = LOWER_XDIGITS[c >> 4]; - res[i * 2 + 1] = LOWER_XDIGITS[c & 0x0f]; - } return res; } -StringRef format_hex(BlockAllocator &balloc, const StringRef &s) { +StringRef format_hex(BlockAllocator &balloc, std::span s) { auto iov = make_byte_ref(balloc, s.size() * 2 + 1); - auto p = iov.base; - - for (auto cc : s) { - uint8_t c = cc; - *p++ = LOWER_XDIGITS[c >> 4]; - *p++ = LOWER_XDIGITS[c & 0xf]; - } + auto p = format_hex(std::begin(iov), s); *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } void to_token68(std::string &base64str) { @@ -544,19 +534,18 @@ StringRef to_base64(BlockAllocator &balloc, const StringRef &token68str) { // At most 3 padding '=' auto len = token68str.size() + 3; auto iov = make_byte_ref(balloc, len + 1); - auto p = iov.base; - p = std::transform(std::begin(token68str), std::end(token68str), p, - [](char c) { - switch (c) { - case '-': - return '+'; - case '_': - return '/'; - default: - return c; - } - }); + auto p = std::transform(std::begin(token68str), std::end(token68str), + std::begin(iov), [](char c) { + switch (c) { + case '-': + return '+'; + case '_': + return '/'; + default: + return c; + } + }); auto rem = token68str.size() & 0x3; if (rem) { @@ -565,7 +554,7 @@ StringRef to_base64(BlockAllocator &balloc, const StringRef &token68str) { *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } namespace { @@ -878,7 +867,7 @@ bool check_path(const std::string &path) { path.find('\\') == std::string::npos && path.find("/../") == std::string::npos && path.find("/./") == std::string::npos && - !util::ends_with_l(path, "/..") && !util::ends_with_l(path, "/."); + !util::ends_with(path, "/.."_sr) && !util::ends_with(path, "/."_sr); } int64_t to_time64(const timeval &tv) { @@ -886,8 +875,8 @@ int64_t to_time64(const timeval &tv) { } bool check_h2_is_selected(const StringRef &proto) { - return streq(NGHTTP2_H2, proto) || streq(NGHTTP2_H2_16, proto) || - streq(NGHTTP2_H2_14, proto); + return NGHTTP2_H2 == proto || NGHTTP2_H2_16 == proto || + NGHTTP2_H2_14 == proto; } namespace { @@ -1148,58 +1137,63 @@ bool ipv6_numeric_addr(const char *host) { } namespace { -std::pair parse_uint_digits(const void *ss, size_t len) { - const uint8_t *s = static_cast(ss); - int64_t n = 0; - size_t i; - if (len == 0) { - return {-1, 0}; +std::optional> +parse_uint_digits(const StringRef &s) { + if (s.empty()) { + return {}; } + constexpr int64_t max = std::numeric_limits::max(); - for (i = 0; i < len; ++i) { - if ('0' <= s[i] && s[i] <= '9') { - if (n > max / 10) { - return {-1, 0}; - } - n *= 10; - if (n > max - (s[i] - '0')) { - return {-1, 0}; - } - n += s[i] - '0'; - continue; + + int64_t n = 0; + size_t i = 0; + + for (auto c : s) { + if ('0' > c || c > '9') { + break; } - break; + + if (n > max / 10) { + return {}; + } + + n *= 10; + + if (n > max - (c - '0')) { + return {}; + } + + n += c - '0'; + + ++i; } + if (i == 0) { - return {-1, 0}; + return {}; } - return {n, i}; + + return std::pair{n, s.substr(i)}; } } // namespace -int64_t parse_uint_with_unit(const char *s) { - return parse_uint_with_unit(reinterpret_cast(s), strlen(s)); -} - -int64_t parse_uint_with_unit(const StringRef &s) { - return parse_uint_with_unit(s.byte(), s.size()); -} - -int64_t parse_uint_with_unit(const uint8_t *s, size_t len) { - int64_t n; - size_t i; - std::tie(n, i) = parse_uint_digits(s, len); - if (n == -1) { - return -1; +std::optional parse_uint_with_unit(const StringRef &s) { + auto r = parse_uint_digits(s); + if (!r) { + return {}; } - if (i == len) { + + auto [n, rest] = *r; + + if (rest.empty()) { return n; } - if (i + 1 != len) { - return -1; + + if (rest.size() != 1) { + return {}; } + int mul = 1; - switch (s[i]) { + switch (rest[0]) { case 'K': case 'k': mul = 1 << 10; @@ -1213,94 +1207,81 @@ int64_t parse_uint_with_unit(const uint8_t *s, size_t len) { mul = 1 << 30; break; default: - return -1; + return {}; } + constexpr int64_t max = std::numeric_limits::max(); if (n > max / mul) { - return -1; + return {}; } + return n * mul; } -int64_t parse_uint(const char *s) { - return parse_uint(reinterpret_cast(s), strlen(s)); -} - -int64_t parse_uint(const std::string &s) { - return parse_uint(reinterpret_cast(s.c_str()), s.size()); -} - -int64_t parse_uint(const StringRef &s) { - return parse_uint(s.byte(), s.size()); -} - -int64_t parse_uint(const uint8_t *s, size_t len) { - int64_t n; - size_t i; - std::tie(n, i) = parse_uint_digits(s, len); - if (n == -1 || i != len) { - return -1; +std::optional parse_uint(const StringRef &s) { + auto r = parse_uint_digits(s); + if (!r || !(*r).second.empty()) { + return {}; } - return n; + + return (*r).first; } -double parse_duration_with_unit(const char *s) { - return parse_duration_with_unit(reinterpret_cast(s), - strlen(s)); -} - -double parse_duration_with_unit(const StringRef &s) { - return parse_duration_with_unit(s.byte(), s.size()); -} - -double parse_duration_with_unit(const uint8_t *s, size_t len) { +std::optional parse_duration_with_unit(const StringRef &s) { constexpr auto max = std::numeric_limits::max(); - int64_t n; - size_t i; - std::tie(n, i) = parse_uint_digits(s, len); - if (n == -1) { - goto fail; + auto r = parse_uint_digits(s); + if (!r) { + return {}; } - if (i == len) { + + auto [n, rest] = *r; + + if (rest.empty()) { return static_cast(n); } - switch (s[i]) { + + switch (rest[0]) { case 'S': case 's': // seconds - if (i + 1 != len) { - goto fail; + if (rest.size() != 1) { + return {}; } + return static_cast(n); case 'M': case 'm': - if (i + 1 == len) { + if (rest.size() == 1) { // minutes if (n > max / 60) { - goto fail; + return {}; } + return static_cast(n) * 60; } - if (i + 2 != len || (s[i + 1] != 's' && s[i + 1] != 'S')) { - goto fail; + if (rest.size() != 2 || (rest[1] != 's' && rest[1] != 'S')) { + return {}; } + // milliseconds return static_cast(n) / 1000.; case 'H': case 'h': // hours - if (i + 1 != len) { - goto fail; + if (rest.size() != 1) { + return {}; } + if (n > max / 3600) { - goto fail; + return {}; } + return static_cast(n) * 3600; + default: + return {}; } -fail: - return std::numeric_limits::infinity(); } std::string duration_str(double t) { @@ -1362,13 +1343,13 @@ std::string dtos(double n) { StringRef make_http_hostport(BlockAllocator &balloc, const StringRef &host, uint16_t port) { auto iov = make_byte_ref(balloc, host.size() + 2 + 1 + 5 + 1); - return make_http_hostport(iov.base, host, port); + return make_http_hostport(std::begin(iov), host, port); } StringRef make_hostport(BlockAllocator &balloc, const StringRef &host, uint16_t port) { auto iov = make_byte_ref(balloc, host.size() + 2 + 1 + 5 + 1); - return make_hostport(iov.base, host, port); + return make_hostport(std::begin(iov), host, port); } namespace { @@ -1611,7 +1592,7 @@ int read_mime_types(std::map &res, StringRef percent_decode(BlockAllocator &balloc, const StringRef &src) { auto iov = make_byte_ref(balloc, src.size() * 3 + 1); - auto p = iov.base; + auto p = std::begin(iov); for (auto first = std::begin(src); first != std::end(src); ++first) { if (*first != '%') { *p++ = *first; @@ -1628,7 +1609,7 @@ StringRef percent_decode(BlockAllocator &balloc, const StringRef &src) { *p++ = *first; } *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } // Returns x**y @@ -1669,7 +1650,7 @@ int message_digest(uint8_t *res, const EVP_MD *meth, const StringRef &s) { return -1; } - rv = EVP_DigestUpdate(ctx, s.c_str(), s.size()); + rv = EVP_DigestUpdate(ctx, s.data(), s.size()); if (rv != 1) { return -1; } @@ -1707,11 +1688,12 @@ bool is_hex_string(const StringRef &s) { return true; } -StringRef decode_hex(BlockAllocator &balloc, const StringRef &s) { +std::span decode_hex(BlockAllocator &balloc, + const StringRef &s) { auto iov = make_byte_ref(balloc, s.size() + 1); - auto p = decode_hex(iov.base, s); + auto p = decode_hex(std::begin(iov), s); *p = '\0'; - return StringRef{iov.base, p}; + return {std::begin(iov), p}; } StringRef extract_host(const StringRef &hostport) { @@ -1824,7 +1806,7 @@ StringRef rstrip(BlockAllocator &balloc, const StringRef &s) { return s; } - return make_string_ref(balloc, StringRef{s.c_str(), s.size() - len}); + return make_string_ref(balloc, StringRef{s.data(), s.size() - len}); } #ifdef ENABLE_HTTP3 diff --git a/yass/third_party/nghttp2/src/util.h b/yass/third_party/nghttp2/src/util.h index e1c0d81790..4f8ae252ba 100644 --- a/yass/third_party/nghttp2/src/util.h +++ b/yass/third_party/nghttp2/src/util.h @@ -46,6 +46,7 @@ #include #include #include +#include #ifdef HAVE_LIBEV # include @@ -59,20 +60,20 @@ namespace nghttp2 { -constexpr auto NGHTTP2_H2_ALPN = StringRef::from_lit("\x2h2"); -constexpr auto NGHTTP2_H2 = StringRef::from_lit("h2"); +constexpr auto NGHTTP2_H2_ALPN = "\x2h2"_sr; +constexpr auto NGHTTP2_H2 = "h2"_sr; // The additional HTTP/2 protocol ALPN protocol identifier we also // supports for our applications to make smooth migration into final // h2 ALPN ID. -constexpr auto NGHTTP2_H2_16_ALPN = StringRef::from_lit("\x5h2-16"); -constexpr auto NGHTTP2_H2_16 = StringRef::from_lit("h2-16"); +constexpr auto NGHTTP2_H2_16_ALPN = "\x5h2-16"_sr; +constexpr auto NGHTTP2_H2_16 = "h2-16"_sr; -constexpr auto NGHTTP2_H2_14_ALPN = StringRef::from_lit("\x5h2-14"); -constexpr auto NGHTTP2_H2_14 = StringRef::from_lit("h2-14"); +constexpr auto NGHTTP2_H2_14_ALPN = "\x5h2-14"_sr; +constexpr auto NGHTTP2_H2_14 = "h2-14"_sr; -constexpr auto NGHTTP2_H1_1_ALPN = StringRef::from_lit("\x8http/1.1"); -constexpr auto NGHTTP2_H1_1 = StringRef::from_lit("http/1.1"); +constexpr auto NGHTTP2_H1_1_ALPN = "\x8http/1.1"_sr; +constexpr auto NGHTTP2_H1_1 = "http/1.1"_sr; constexpr size_t NGHTTP2_MAX_UINT64_DIGITS = str_size("18446744073709551615"); @@ -185,24 +186,11 @@ OutputIt quote_string(OutputIt it, const StringRef &target) { // NUL byte. size_t quote_stringlen(const StringRef &target); -std::string format_hex(const unsigned char *s, size_t len); - -template std::string format_hex(const unsigned char (&s)[N]) { - return format_hex(s, N); -} - -template std::string format_hex(const std::array &s) { - return format_hex(s.data(), s.size()); -} - -StringRef format_hex(BlockAllocator &balloc, const StringRef &s); - static constexpr char LOWER_XDIGITS[] = "0123456789abcdef"; -template -OutputIt format_hex(OutputIt it, const StringRef &s) { - for (auto cc : s) { - uint8_t c = cc; +template +OutputIt format_hex(OutputIt it, std::span s) { + for (auto c : s) { *it++ = LOWER_XDIGITS[c >> 4]; *it++ = LOWER_XDIGITS[c & 0xf]; } @@ -210,10 +198,30 @@ OutputIt format_hex(OutputIt it, const StringRef &s) { return it; } +template +OutputIt format_hex(OutputIt it, std::span s) { + return format_hex(it, std::span{as_uint8_span(s)}); +} + +std::string format_hex(std::span s); + +template +std::string format_hex(std::span s) { + return format_hex(std::span{as_uint8_span(s)}); +} + +StringRef format_hex(BlockAllocator &balloc, std::span s); + +template +StringRef format_hex(BlockAllocator &balloc, std::span s) { + return format_hex(balloc, std::span{as_uint8_span(s)}); +} + // decode_hex decodes hex string |s|, returns the decoded byte string. // This function assumes |s| is hex string, that is is_hex_string(s) // == true. -StringRef decode_hex(BlockAllocator &balloc, const StringRef &s); +std::span decode_hex(BlockAllocator &balloc, const StringRef &s); template OutputIt decode_hex(OutputIt d_first, const StringRef &s) { @@ -289,14 +297,12 @@ inline char lowcase(char c) { template bool starts_with(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2) { - if (last1 - first1 < last2 - first2) { - return false; - } - return std::equal(first2, last2, first1); + return std::distance(first1, last1) >= std::distance(first2, last2) && + std::equal(first2, last2, first1); } template bool starts_with(const S &a, const T &b) { - return starts_with(a.begin(), a.end(), b.begin(), b.end()); + return starts_with(std::begin(a), std::end(a), std::begin(b), std::end(b)); } struct CaseCmp { @@ -308,107 +314,60 @@ struct CaseCmp { template bool istarts_with(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2) { - if (last1 - first1 < last2 - first2) { - return false; - } - return std::equal(first2, last2, first1, CaseCmp()); + return std::distance(first1, last1) >= std::distance(first2, last2) && + std::equal(first2, last2, first1, CaseCmp()); } template bool istarts_with(const S &a, const T &b) { - return istarts_with(a.begin(), a.end(), b.begin(), b.end()); -} - -template -bool istarts_with_l(const T &a, const CharT (&b)[N]) { - return istarts_with(a.begin(), a.end(), b, b + N - 1); + return istarts_with(std::begin(a), std::end(a), std::begin(b), std::end(b)); } template bool ends_with(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2) { - if (last1 - first1 < last2 - first2) { - return false; - } - return std::equal(first2, last2, last1 - (last2 - first2)); + auto len1 = std::distance(first1, last1); + auto len2 = std::distance(first2, last2); + + return len1 >= len2 && std::equal(first2, last2, first1 + (len1 - len2)); } template bool ends_with(const T &a, const S &b) { - return ends_with(a.begin(), a.end(), b.begin(), b.end()); -} - -template -bool ends_with_l(const T &a, const CharT (&b)[N]) { - return ends_with(a.begin(), a.end(), b, b + N - 1); + return ends_with(std::begin(a), std::end(a), std::begin(b), std::end(b)); } template bool iends_with(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2) { - if (last1 - first1 < last2 - first2) { - return false; - } - return std::equal(first2, last2, last1 - (last2 - first2), CaseCmp()); + auto len1 = std::distance(first1, last1); + auto len2 = std::distance(first2, last2); + + return len1 >= len2 && + std::equal(first2, last2, first1 + (len1 - len2), CaseCmp()); } template bool iends_with(const T &a, const S &b) { - return iends_with(a.begin(), a.end(), b.begin(), b.end()); -} - -template -bool iends_with_l(const T &a, const CharT (&b)[N]) { - return iends_with(a.begin(), a.end(), b, b + N - 1); + return iends_with(std::begin(a), std::end(a), std::begin(b), std::end(b)); } template bool strieq(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2) { - if (std::distance(first1, last1) != std::distance(first2, last2)) { - return false; - } - - return std::equal(first1, last1, first2, CaseCmp()); + return std::equal(first1, last1, first2, last2, CaseCmp()); } template bool strieq(const T &a, const S &b) { - return strieq(a.begin(), a.end(), b.begin(), b.end()); + return strieq(std::begin(a), std::end(a), std::begin(b), std::end(b)); } -template -bool strieq_l(const CharT (&a)[N], InputIt b, size_t blen) { - return strieq(a, a + (N - 1), b, b + blen); +template +bool strieq(const T &a, const S &b, size_t blen) { + return std::equal(std::begin(a), std::end(a), std::begin(b), + std::next(std::begin(b), blen), CaseCmp()); } -template -bool strieq_l(const CharT (&a)[N], const T &b) { - return strieq(a, a + (N - 1), b.begin(), b.end()); -} - -template -bool streq(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2) { - if (std::distance(first1, last1) != std::distance(first2, last2)) { - return false; - } - return std::equal(first1, last1, first2); -} - -template bool streq(const T &a, const S &b) { - return streq(a.begin(), a.end(), b.begin(), b.end()); -} - -template -bool streq_l(const CharT (&a)[N], InputIt b, size_t blen) { - return streq(a, a + (N - 1), b, b + blen); -} - -template -bool streq_l(const CharT (&a)[N], const T &b) { - return streq(a, a + (N - 1), b.begin(), b.end()); -} - -// Returns true if |a| contains |b|. If both |a| and |b| are empty, -// this function returns false. -template bool strifind(const S &a, const T &b) { - return std::search(a.begin(), a.end(), b.begin(), b.end(), CaseCmp()) != - a.end(); +template +bool streq(const T &a, const S &b, size_t blen) { + return std::equal(std::begin(a), std::end(a), std::begin(b), + std::next(std::begin(b), blen)); } template void inp_strlower(InputIt first, InputIt last) { @@ -458,10 +417,10 @@ template OutputIt utos(OutputIt dst, T n) { template StringRef make_string_ref_uint(BlockAllocator &balloc, T n) { auto iov = make_byte_ref(balloc, NGHTTP2_MAX_UINT64_DIGITS + 1); - auto p = iov.base; + auto p = std::begin(iov); p = util::utos(p, n); *p = '\0'; - return StringRef{iov.base, p}; + return StringRef{std::span{std::begin(iov), p}}; } template std::string utos_unit(T n) { @@ -735,35 +694,22 @@ int get_socket_error(int fd); // Returns true if |host| is IPv6 numeric address (e.g., ::1) bool ipv6_numeric_addr(const char *host); -// Parses NULL terminated string |s| as unsigned integer and returns -// the parsed integer. Additionally, if |s| ends with 'k', 'm', 'g' -// and its upper case characters, multiply the integer by 1024, 1024 * -// 1024 and 1024 * 1024 respectively. If there is an error, returns -// -1. -int64_t parse_uint_with_unit(const char *s); -// The following overload does not require |s| is NULL terminated. -int64_t parse_uint_with_unit(const uint8_t *s, size_t len); -int64_t parse_uint_with_unit(const StringRef &s); +// Parses |s| as unsigned integer and returns the parsed integer. +// Additionally, if |s| ends with 'k', 'm', 'g' and its upper case +// characters, multiply the integer by 1024, 1024 * 1024 and 1024 * +// 1024 respectively. If there is an error, returns no value. +std::optional parse_uint_with_unit(const StringRef &s); -// Parses NULL terminated string |s| as unsigned integer and returns -// the parsed integer. If there is an error, returns -1. -int64_t parse_uint(const char *s); -// The following overload does not require |s| is NULL terminated. -int64_t parse_uint(const uint8_t *s, size_t len); -int64_t parse_uint(const std::string &s); -int64_t parse_uint(const StringRef &s); +// Parses |s| as unsigned integer and returns the parsed integer.. +std::optional parse_uint(const StringRef &s); -// Parses NULL terminated string |s| as unsigned integer and returns -// the parsed integer casted to double. If |s| ends with "s", the -// parsed value's unit is a second. If |s| ends with "ms", the unit -// is millisecond. Similarly, it also supports 'm' and 'h' for -// minutes and hours respectively. If none of them are given, the -// unit is second. This function returns -// std::numeric_limits::infinity() if error occurs. -double parse_duration_with_unit(const char *s); -// The following overload does not require |s| is NULL terminated. -double parse_duration_with_unit(const uint8_t *s, size_t len); -double parse_duration_with_unit(const StringRef &s); +// Parses |s| as unsigned integer and returns the parsed integer +// casted to double. If |s| ends with "s", the parsed value's unit is +// a second. If |s| ends with "ms", the unit is millisecond. +// Similarly, it also supports 'm' and 'h' for minutes and hours +// respectively. If none of them are given, the unit is second. This +// function returns no value if error occurs. +std::optional parse_duration_with_unit(const StringRef &s); // Returns string representation of time duration |t|. If t has // fractional part (at least more than or equal to 1e-3), |t| is @@ -792,7 +738,7 @@ StringRef make_hostport(BlockAllocator &balloc, const StringRef &host, template StringRef make_hostport(OutputIt first, const StringRef &host, uint16_t port) { - auto ipv6 = ipv6_numeric_addr(host.c_str()); + auto ipv6 = ipv6_numeric_addr(host.data()); auto serv = utos(port); auto p = first; @@ -812,7 +758,7 @@ StringRef make_hostport(OutputIt first, const StringRef &host, uint16_t port) { *p = '\0'; - return StringRef{first, p}; + return StringRef{std::span{first, p}}; } // Creates "host:port" string using given |host| and |port|. If @@ -828,7 +774,7 @@ StringRef make_http_hostport(OutputIt first, const StringRef &host, return make_hostport(first, host, port); } - auto ipv6 = ipv6_numeric_addr(host.c_str()); + auto ipv6 = ipv6_numeric_addr(host.data()); auto p = first; if (ipv6) { @@ -843,7 +789,7 @@ StringRef make_http_hostport(OutputIt first, const StringRef &host, *p = '\0'; - return StringRef{first, p}; + return StringRef{std::span{first, p}}; } // hexdump dumps |data| of length |datalen| in the format similar to @@ -909,13 +855,13 @@ void shuffle(RandomIt first, RandomIt last, Generator &&gen, SwapFun fun) { return; } - for (unsigned int i = 0; i < static_cast(len - 1); ++i) { - auto dis = std::uniform_int_distribution(i, len - 1); - auto j = dis(gen); - if (i == j) { - continue; - } - fun(first + i, first + j); + using dist_type = std::uniform_int_distribution; + using param_type = dist_type::param_type; + + dist_type d; + + for (decltype(len) i = 0; i < len - 1; ++i) { + fun(first + i, first + d(gen, param_type(i, len - 1))); } } diff --git a/yass/third_party/nghttp2/src/util_test.cc b/yass/third_party/nghttp2/src/util_test.cc index 2e01e9d517..e65c3a8e04 100644 --- a/yass/third_party/nghttp2/src/util_test.cc +++ b/yass/third_party/nghttp2/src/util_test.cc @@ -36,6 +36,7 @@ #include "template.h" using namespace nghttp2; +using namespace std::literals; namespace shrpx { @@ -70,7 +71,6 @@ const MunitTest tests[]{ munit_void_test(test_util_parse_config_str_list), munit_void_test(test_util_make_http_hostport), munit_void_test(test_util_make_hostport), - munit_void_test(test_util_strifind), munit_void_test(test_util_random_alpha_digit), munit_void_test(test_util_format_hex), munit_void_test(test_util_is_hex_string), @@ -88,33 +88,14 @@ const MunitSuite util_suite{ }; void test_util_streq(void) { - assert_true( - util::streq(StringRef::from_lit("alpha"), StringRef::from_lit("alpha"))); - assert_false(util::streq(StringRef::from_lit("alpha"), - StringRef::from_lit("alphabravo"))); - assert_false(util::streq(StringRef::from_lit("alphabravo"), - StringRef::from_lit("alpha"))); - assert_false( - util::streq(StringRef::from_lit("alpha"), StringRef::from_lit("alphA"))); - assert_false(util::streq(StringRef{}, StringRef::from_lit("a"))); - assert_true(util::streq(StringRef{}, StringRef{})); - assert_false(util::streq(StringRef::from_lit("alpha"), StringRef{})); - - assert_false( - util::streq(StringRef::from_lit("alph"), StringRef::from_lit("alpha"))); - assert_false( - util::streq(StringRef::from_lit("alpha"), StringRef::from_lit("alph"))); - assert_false( - util::streq(StringRef::from_lit("alpha"), StringRef::from_lit("alphA"))); - - assert_true(util::streq_l("alpha", "alpha", 5)); - assert_true(util::streq_l("alpha", "alphabravo", 5)); - assert_false(util::streq_l("alpha", "alphabravo", 6)); - assert_false(util::streq_l("alphabravo", "alpha", 5)); - assert_false(util::streq_l("alpha", "alphA", 5)); - assert_false(util::streq_l("", "a", 1)); - assert_true(util::streq_l("", "", 0)); - assert_false(util::streq_l("alpha", "", 0)); + assert_true(util::streq("alpha"_sr, "alpha"_sr, 5)); + assert_true(util::streq("alpha"_sr, "alphabravo"_sr, 5)); + assert_false(util::streq("alpha"_sr, "alphabravo"_sr, 6)); + assert_false(util::streq("alphabravo"_sr, "alpha"_sr, 5)); + assert_false(util::streq("alpha"_sr, "alphA"_sr, 5)); + assert_false(util::streq(""_sr, "a"_sr, 1)); + assert_true(util::streq(""_sr, ""_sr, 0)); + assert_false(util::streq("alpha"_sr, ""_sr, 0)); } void test_util_strieq(void) { @@ -124,27 +105,16 @@ void test_util_strieq(void) { assert_false(util::strieq(std::string("alpha"), std::string("AlPhA "))); assert_false(util::strieq(std::string(), std::string("AlPhA "))); - assert_true( - util::strieq(StringRef::from_lit("alpha"), StringRef::from_lit("alpha"))); - assert_true( - util::strieq(StringRef::from_lit("alpha"), StringRef::from_lit("AlPhA"))); + assert_true(util::strieq("alpha"_sr, "alpha"_sr)); + assert_true(util::strieq("alpha"_sr, "AlPhA"_sr)); assert_true(util::strieq(StringRef{}, StringRef{})); - assert_false(util::strieq(StringRef::from_lit("alpha"), - StringRef::from_lit("AlPhA "))); - assert_false( - util::strieq(StringRef::from_lit(""), StringRef::from_lit("AlPhA "))); + assert_false(util::strieq("alpha"_sr, "AlPhA "_sr)); + assert_false(util::strieq(""_sr, "AlPhA "_sr)); - assert_true(util::strieq_l("alpha", "alpha", 5)); - assert_true(util::strieq_l("alpha", "AlPhA", 5)); - assert_true(util::strieq_l("", static_cast(nullptr), 0)); - assert_false(util::strieq_l("alpha", "AlPhA ", 6)); - assert_false(util::strieq_l("", "AlPhA ", 6)); - - assert_true(util::strieq_l("alpha", StringRef::from_lit("alpha"))); - assert_true(util::strieq_l("alpha", StringRef::from_lit("AlPhA"))); - assert_true(util::strieq_l("", StringRef{})); - assert_false(util::strieq_l("alpha", StringRef::from_lit("AlPhA "))); - assert_false(util::strieq_l("", StringRef::from_lit("AlPhA "))); + assert_true(util::strieq("alpha"_sr, "alpha"_sr, 5)); + assert_true(util::strieq("alpha"_sr, "AlPhA"_sr, 5)); + assert_false(util::strieq("alpha"_sr, "AlPhA "_sr, 6)); + assert_false(util::strieq(""_sr, "AlPhA "_sr, 6)); } void test_util_inp_strlower(void) { @@ -164,12 +134,8 @@ void test_util_inp_strlower(void) { void test_util_to_base64(void) { BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "AAA++B/=", - util::to_base64(balloc, StringRef::from_lit("AAA--B_")).str()); - assert_stdstring_equal( - "AAA++B/B", - util::to_base64(balloc, StringRef::from_lit("AAA--B_B")).str()); + assert_stdsv_equal("AAA++B/="sv, util::to_base64(balloc, "AAA--B_"_sr)); + assert_stdsv_equal("AAA++B/B"sv, util::to_base64(balloc, "AAA--B_B"_sr)); } void test_util_to_token68(void) { @@ -184,18 +150,11 @@ void test_util_to_token68(void) { void test_util_percent_encode_token(void) { BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "h2", - util::percent_encode_token(balloc, StringRef::from_lit("h2")).str()); - assert_stdstring_equal( - "h3~", - util::percent_encode_token(balloc, StringRef::from_lit("h3~")).str()); - assert_stdstring_equal( - "100%25", - util::percent_encode_token(balloc, StringRef::from_lit("100%")).str()); - assert_stdstring_equal( - "http%202", - util::percent_encode_token(balloc, StringRef::from_lit("http 2")).str()); + assert_stdsv_equal("h2"sv, util::percent_encode_token(balloc, "h2"_sr)); + assert_stdsv_equal("h3~"sv, util::percent_encode_token(balloc, "h3~"_sr)); + assert_stdsv_equal("100%25"sv, util::percent_encode_token(balloc, "100%"_sr)); + assert_stdsv_equal("http%202"sv, + util::percent_encode_token(balloc, "http 2"_sr)); } void test_util_percent_decode(void) { @@ -216,27 +175,20 @@ void test_util_percent_decode(void) { } BlockAllocator balloc(1024, 1024); - assert_stdstring_equal( - "foobar", - util::percent_decode(balloc, StringRef::from_lit("%66%6F%6f%62%61%72")) - .str()); + assert_stdsv_equal("foobar"sv, + util::percent_decode(balloc, "%66%6F%6f%62%61%72"_sr)); - assert_stdstring_equal( - "f%6", util::percent_decode(balloc, StringRef::from_lit("%66%6")).str()); + assert_stdsv_equal("f%6"sv, util::percent_decode(balloc, "%66%6"_sr)); - assert_stdstring_equal( - "f%", util::percent_decode(balloc, StringRef::from_lit("%66%")).str()); + assert_stdsv_equal("f%"sv, util::percent_decode(balloc, "%66%"_sr)); } void test_util_quote_string(void) { BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "alpha", util::quote_string(balloc, StringRef::from_lit("alpha")).str()); - assert_stdstring_equal( - "", util::quote_string(balloc, StringRef::from_lit("")).str()); - assert_stdstring_equal( - "\\\"alpha\\\"", - util::quote_string(balloc, StringRef::from_lit("\"alpha\"")).str()); + assert_stdsv_equal("alpha"sv, util::quote_string(balloc, "alpha"_sr)); + assert_stdsv_equal(""sv, util::quote_string(balloc, ""_sr)); + assert_stdsv_equal("\\\"alpha\\\""sv, + util::quote_string(balloc, "\"alpha\""_sr)); } void test_util_utox(void) { @@ -255,17 +207,15 @@ void test_util_http_date(void) { std::array http_buf; - assert_stdstring_equal( - "Thu, 01 Jan 1970 00:00:00 GMT", + assert_stdsv_equal( + "Thu, 01 Jan 1970 00:00:00 GMT"sv, util::format_http_date(http_buf.data(), - std::chrono::system_clock::time_point()) - .str()); - assert_stdstring_equal( - "Wed, 29 Feb 2012 09:15:16 GMT", + std::chrono::system_clock::time_point())); + assert_stdsv_equal( + "Wed, 29 Feb 2012 09:15:16 GMT"sv, util::format_http_date(http_buf.data(), std::chrono::system_clock::time_point( - std::chrono::seconds(1330506916))) - .str()); + std::chrono::seconds(1330506916)))); } void test_util_select_h2(void) { @@ -310,7 +260,7 @@ void test_util_select_h2(void) { // picked up because it has precedence over the other. const unsigned char t6[] = "\x5h2-14\x5h2-16"; assert_true(util::select_h2(&out, &outlen, t6, sizeof(t6) - 1)); - assert_true(util::streq(NGHTTP2_H2_16, StringRef{out, outlen})); + assert_stdsv_equal(NGHTTP2_H2_16, (StringRef{out, outlen})); } void test_util_ipv6_numeric_addr(void) { @@ -336,11 +286,11 @@ void test_util_utos(void) { void test_util_make_string_ref_uint(void) { BlockAllocator balloc(1024, 1024); - assert_stdstring_equal("0", util::make_string_ref_uint(balloc, 0).str()); - assert_stdstring_equal("123", util::make_string_ref_uint(balloc, 123).str()); - assert_stdstring_equal( - "18446744073709551615", - util::make_string_ref_uint(balloc, 18446744073709551615ULL).str()); + assert_stdsv_equal("0"sv, util::make_string_ref_uint(balloc, 0)); + assert_stdsv_equal("123"sv, util::make_string_ref_uint(balloc, 123)); + assert_stdsv_equal( + "18446744073709551615"sv, + util::make_string_ref_uint(balloc, 18446744073709551615ULL)); } void test_util_utos_unit(void) { @@ -369,65 +319,69 @@ void test_util_utos_funit(void) { } void test_util_parse_uint_with_unit(void) { - assert_int64(0, ==, util::parse_uint_with_unit("0")); - assert_int64(1023, ==, util::parse_uint_with_unit("1023")); - assert_int64(1024, ==, util::parse_uint_with_unit("1k")); - assert_int64(2048, ==, util::parse_uint_with_unit("2K")); - assert_int64(1 << 20, ==, util::parse_uint_with_unit("1m")); - assert_int64(1 << 21, ==, util::parse_uint_with_unit("2M")); - assert_int64(1 << 30, ==, util::parse_uint_with_unit("1g")); - assert_int64(1LL << 31, ==, util::parse_uint_with_unit("2G")); + assert_int64(0, ==, util::parse_uint_with_unit("0").value_or(-1)); + assert_int64(1023, ==, util::parse_uint_with_unit("1023").value_or(-1)); + assert_int64(1024, ==, util::parse_uint_with_unit("1k").value_or(-1)); + assert_int64(2048, ==, util::parse_uint_with_unit("2K").value_or(-1)); + assert_int64(1 << 20, ==, util::parse_uint_with_unit("1m").value_or(-1)); + assert_int64(1 << 21, ==, util::parse_uint_with_unit("2M").value_or(-1)); + assert_int64(1 << 30, ==, util::parse_uint_with_unit("1g").value_or(-1)); + assert_int64(1LL << 31, ==, util::parse_uint_with_unit("2G").value_or(-1)); assert_int64(9223372036854775807LL, ==, - util::parse_uint_with_unit("9223372036854775807")); + util::parse_uint_with_unit("9223372036854775807").value_or(-1)); // check overflow case - assert_int64(-1, ==, util::parse_uint_with_unit("9223372036854775808")); - assert_int64(-1, ==, util::parse_uint_with_unit("10000000000000000000")); - assert_int64(-1, ==, util::parse_uint_with_unit("9223372036854775807G")); + assert_false(util::parse_uint_with_unit("9223372036854775808")); + assert_false(util::parse_uint_with_unit("10000000000000000000")); + assert_false(util::parse_uint_with_unit("9223372036854775807G")); // bad characters - assert_int64(-1, ==, util::parse_uint_with_unit("1.1")); - assert_int64(-1, ==, util::parse_uint_with_unit("1a")); - assert_int64(-1, ==, util::parse_uint_with_unit("a1")); - assert_int64(-1, ==, util::parse_uint_with_unit("1T")); - assert_int64(-1, ==, util::parse_uint_with_unit("")); + assert_false(util::parse_uint_with_unit("1.1")); + assert_false(util::parse_uint_with_unit("1a")); + assert_false(util::parse_uint_with_unit("a1")); + assert_false(util::parse_uint_with_unit("1T")); + assert_false(util::parse_uint_with_unit("")); } void test_util_parse_uint(void) { - assert_int64(0, ==, util::parse_uint("0")); - assert_int64(1023, ==, util::parse_uint("1023")); - assert_int64(-1, ==, util::parse_uint("1k")); + assert_int64(0, ==, util::parse_uint("0").value_or(-1)); + assert_int64(1023, ==, util::parse_uint("1023").value_or(-1)); + assert_false(util::parse_uint("1k")); assert_int64(9223372036854775807LL, ==, - util::parse_uint("9223372036854775807")); + util::parse_uint("9223372036854775807").value_or(-1)); // check overflow case - assert_int64(-1, ==, util::parse_uint("9223372036854775808")); - assert_int64(-1, ==, util::parse_uint("10000000000000000000")); + assert_false(util::parse_uint("9223372036854775808")); + assert_false(util::parse_uint("10000000000000000000")); // bad characters - assert_int64(-1, ==, util::parse_uint("1.1")); - assert_int64(-1, ==, util::parse_uint("1a")); - assert_int64(-1, ==, util::parse_uint("a1")); - assert_int64(-1, ==, util::parse_uint("1T")); - assert_int64(-1, ==, util::parse_uint("")); + assert_false(util::parse_uint("1.1")); + assert_false(util::parse_uint("1a")); + assert_false(util::parse_uint("a1")); + assert_false(util::parse_uint("1T")); + assert_false(util::parse_uint("")); } void test_util_parse_duration_with_unit(void) { - assert_double(0., ==, util::parse_duration_with_unit("0")); - assert_double(123., ==, util::parse_duration_with_unit("123")); - assert_double(123., ==, util::parse_duration_with_unit("123s")); - assert_double(0.500, ==, util::parse_duration_with_unit("500ms")); - assert_double(123., ==, util::parse_duration_with_unit("123S")); - assert_double(0.500, ==, util::parse_duration_with_unit("500MS")); - assert_double(180, ==, util::parse_duration_with_unit("3m")); - assert_double(3600 * 5, ==, util::parse_duration_with_unit("5h")); + auto inf = std::numeric_limits::infinity(); + + assert_double(0., ==, util::parse_duration_with_unit("0").value_or(inf)); + assert_double(123., ==, util::parse_duration_with_unit("123").value_or(inf)); + assert_double(123., ==, util::parse_duration_with_unit("123s").value_or(inf)); + assert_double(0.500, ==, + util::parse_duration_with_unit("500ms").value_or(inf)); + assert_double(123., ==, util::parse_duration_with_unit("123S").value_or(inf)); + assert_double(0.500, ==, + util::parse_duration_with_unit("500MS").value_or(inf)); + assert_double(180, ==, util::parse_duration_with_unit("3m").value_or(inf)); + assert_double(3600 * 5, ==, + util::parse_duration_with_unit("5h").value_or(inf)); - auto err = std::numeric_limits::infinity(); // check overflow case - assert_double(err, ==, util::parse_duration_with_unit("9223372036854775808")); + assert_false(util::parse_duration_with_unit("9223372036854775808")); // bad characters - assert_double(err, ==, util::parse_duration_with_unit("0u")); - assert_double(err, ==, util::parse_duration_with_unit("0xs")); - assert_double(err, ==, util::parse_duration_with_unit("0mt")); - assert_double(err, ==, util::parse_duration_with_unit("0mss")); - assert_double(err, ==, util::parse_duration_with_unit("s")); - assert_double(err, ==, util::parse_duration_with_unit("ms")); + assert_false(util::parse_duration_with_unit("0u")); + assert_false(util::parse_duration_with_unit("0xs")); + assert_false(util::parse_duration_with_unit("0mt")); + assert_false(util::parse_duration_with_unit("0mss")); + assert_false(util::parse_duration_with_unit("s")); + assert_false(util::parse_duration_with_unit("ms")); } void test_util_duration_str(void) { @@ -469,51 +423,32 @@ void test_util_format_duration(void) { } void test_util_starts_with(void) { - assert_true(util::starts_with(StringRef::from_lit("foo"), - StringRef::from_lit("foo"))); - assert_true(util::starts_with(StringRef::from_lit("fooo"), - StringRef::from_lit("foo"))); - assert_true(util::starts_with(StringRef::from_lit("ofoo"), StringRef{})); - assert_false(util::starts_with(StringRef::from_lit("ofoo"), - StringRef::from_lit("foo"))); + assert_true(util::starts_with("foo"_sr, "foo"_sr)); + assert_true(util::starts_with("fooo"_sr, "foo"_sr)); + assert_true(util::starts_with("ofoo"_sr, StringRef{})); + assert_false(util::starts_with("ofoo"_sr, "foo"_sr)); - assert_true(util::istarts_with(StringRef::from_lit("FOO"), - StringRef::from_lit("fOO"))); - assert_true(util::istarts_with(StringRef::from_lit("ofoo"), StringRef{})); - assert_true(util::istarts_with(StringRef::from_lit("fOOo"), - StringRef::from_lit("Foo"))); - assert_false(util::istarts_with(StringRef::from_lit("ofoo"), - StringRef::from_lit("foo"))); - - assert_true(util::istarts_with_l(StringRef::from_lit("fOOo"), "Foo")); - assert_false(util::istarts_with_l(StringRef::from_lit("ofoo"), "foo")); + assert_true(util::istarts_with("FOO"_sr, "fOO"_sr)); + assert_true(util::istarts_with("ofoo"_sr, StringRef{})); + assert_true(util::istarts_with("fOOo"_sr, "Foo"_sr)); + assert_false(util::istarts_with("ofoo"_sr, "foo"_sr)); } void test_util_ends_with(void) { - assert_true( - util::ends_with(StringRef::from_lit("foo"), StringRef::from_lit("foo"))); - assert_true(util::ends_with(StringRef::from_lit("foo"), StringRef{})); - assert_true( - util::ends_with(StringRef::from_lit("ofoo"), StringRef::from_lit("foo"))); - assert_false( - util::ends_with(StringRef::from_lit("ofoo"), StringRef::from_lit("fo"))); + assert_true(util::ends_with("foo"_sr, "foo"_sr)); + assert_true(util::ends_with("foo"_sr, StringRef{})); + assert_true(util::ends_with("ofoo"_sr, "foo"_sr)); + assert_false(util::ends_with("ofoo"_sr, "fo"_sr)); - assert_true( - util::iends_with(StringRef::from_lit("fOo"), StringRef::from_lit("Foo"))); - assert_true(util::iends_with(StringRef::from_lit("foo"), StringRef{})); - assert_true(util::iends_with(StringRef::from_lit("oFoo"), - StringRef::from_lit("fOO"))); - assert_false( - util::iends_with(StringRef::from_lit("ofoo"), StringRef::from_lit("fo"))); - - assert_true(util::iends_with_l(StringRef::from_lit("oFoo"), "fOO")); - assert_false(util::iends_with_l(StringRef::from_lit("ofoo"), "fo")); + assert_true(util::iends_with("fOo"_sr, "Foo"_sr)); + assert_true(util::iends_with("foo"_sr, StringRef{})); + assert_true(util::iends_with("oFoo"_sr, "fOO"_sr)); + assert_false(util::iends_with("ofoo"_sr, "fo"_sr)); } void test_util_parse_http_date(void) { assert_int64(1001939696, ==, - util::parse_http_date( - StringRef::from_lit("Mon, 1 Oct 2001 12:34:56 GMT"))); + util::parse_http_date("Mon, 1 Oct 2001 12:34:56 GMT"_sr)); } void test_util_localtime_date(void) { @@ -535,21 +470,19 @@ void test_util_localtime_date(void) { std::array common_buf; - assert_stdstring_equal( - "02/Oct/2001:00:34:56 +1200", + assert_stdsv_equal( + "02/Oct/2001:00:34:56 +1200"sv, util::format_common_log(common_buf.data(), std::chrono::system_clock::time_point( - std::chrono::seconds(1001939696))) - .str()); + std::chrono::seconds(1001939696)))); std::array iso8601_buf; - assert_stdstring_equal( - "2001-10-02T00:34:56.123+12:00", + assert_stdsv_equal( + "2001-10-02T00:34:56.123+12:00"sv, util::format_iso8601(iso8601_buf.data(), std::chrono::system_clock::time_point( - std::chrono::milliseconds(1001939696123LL))) - .str()); + std::chrono::milliseconds(1001939696123LL)))); if (tz) { setenv("TZ", tz, 1); @@ -562,16 +495,16 @@ void test_util_localtime_date(void) { void test_util_get_uint64(void) { { - auto v = std::array{ - {0x01, 0x12, 0x34, 0x56, 0xff, 0x9a, 0xab, 0xbc}}; + auto v = std::to_array( + {0x01, 0x12, 0x34, 0x56, 0xff, 0x9a, 0xab, 0xbc}); auto n = util::get_uint64(v.data()); assert_uint64(0x01123456ff9aabbcULL, ==, n); } { - auto v = std::array{ - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}}; + auto v = std::to_array( + {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}); auto n = util::get_uint64(v.data()); @@ -580,16 +513,16 @@ void test_util_get_uint64(void) { } void test_util_parse_config_str_list(void) { - auto res = util::parse_config_str_list(StringRef::from_lit("a")); + auto res = util::parse_config_str_list("a"_sr); assert_size(1, ==, res.size()); assert_stdstring_equal("a", res[0]); - res = util::parse_config_str_list(StringRef::from_lit("a,")); + res = util::parse_config_str_list("a,"_sr); assert_size(2, ==, res.size()); assert_stdstring_equal("a", res[0]); assert_stdstring_equal("", res[1]); - res = util::parse_config_str_list(StringRef::from_lit(":a::"), ':'); + res = util::parse_config_str_list(":a::"_sr, ':'); assert_size(4, ==, res.size()); assert_stdstring_equal("", res[0]); assert_stdstring_equal("a", res[1]); @@ -600,7 +533,7 @@ void test_util_parse_config_str_list(void) { assert_size(1, ==, res.size()); assert_stdstring_equal("", res[0]); - res = util::parse_config_str_list(StringRef::from_lit("alpha,bravo,charlie")); + res = util::parse_config_str_list("alpha,bravo,charlie"_sr); assert_size(3, ==, res.size()); assert_stdstring_equal("alpha", res[0]); assert_stdstring_equal("bravo", res[1]); @@ -610,56 +543,27 @@ void test_util_parse_config_str_list(void) { void test_util_make_http_hostport(void) { BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "localhost", - util::make_http_hostport(balloc, StringRef::from_lit("localhost"), 80) - .str()); - assert_stdstring_equal( - "[::1]", - util::make_http_hostport(balloc, StringRef::from_lit("::1"), 443).str()); - assert_stdstring_equal( - "localhost:3000", - util::make_http_hostport(balloc, StringRef::from_lit("localhost"), 3000) - .str()); + assert_stdsv_equal("localhost"sv, + util::make_http_hostport(balloc, "localhost"_sr, 80)); + assert_stdsv_equal("[::1]"sv, + util::make_http_hostport(balloc, "::1"_sr, 443)); + assert_stdsv_equal("localhost:3000"sv, + util::make_http_hostport(balloc, "localhost"_sr, 3000)); } void test_util_make_hostport(void) { std::array hostport_buf; - assert_stdstring_equal( - "localhost:80", util::make_hostport(std::begin(hostport_buf), - StringRef::from_lit("localhost"), 80) - .str()); - assert_stdstring_equal("[::1]:443", - util::make_hostport(std::begin(hostport_buf), - StringRef::from_lit("::1"), 443) - .str()); + assert_stdsv_equal( + "localhost:80"sv, + util::make_hostport(std::begin(hostport_buf), "localhost"_sr, 80)); + assert_stdsv_equal( + "[::1]:443"sv, + util::make_hostport(std::begin(hostport_buf), "::1"_sr, 443)); BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "localhost:80", - util::make_hostport(balloc, StringRef::from_lit("localhost"), 80).str()); - assert_stdstring_equal( - "[::1]:443", - util::make_hostport(balloc, StringRef::from_lit("::1"), 443).str()); -} - -void test_util_strifind(void) { - assert_true(util::strifind(StringRef::from_lit("gzip, deflate, bzip2"), - StringRef::from_lit("gzip"))); - - assert_true(util::strifind(StringRef::from_lit("gzip, deflate, bzip2"), - StringRef::from_lit("dEflate"))); - - assert_true(util::strifind(StringRef::from_lit("gzip, deflate, bzip2"), - StringRef::from_lit("BZIP2"))); - - assert_true(util::strifind(StringRef::from_lit("nghttp2"), StringRef{})); - - // Be aware this fact - assert_false(util::strifind(StringRef{}, StringRef{})); - - assert_false(util::strifind(StringRef::from_lit("nghttp2"), - StringRef::from_lit("http1"))); + assert_stdsv_equal("localhost:80"sv, + util::make_hostport(balloc, "localhost"_sr, 80)); + assert_stdsv_equal("[::1]:443"sv, util::make_hostport(balloc, "::1"_sr, 443)); } void test_util_random_alpha_digit(void) { @@ -680,123 +584,121 @@ void test_util_random_alpha_digit(void) { void test_util_format_hex(void) { BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "0ff0", util::format_hex(balloc, StringRef::from_lit("\x0f\xf0")).str()); - assert_stdstring_equal( - "", util::format_hex(balloc, StringRef::from_lit("")).str()); + assert_stdsv_equal("0ff0"sv, + util::format_hex(balloc, std::span{"\x0f\xf0"_sr})); + assert_stdsv_equal(""sv, + util::format_hex(balloc, std::span{})); + + union T { + uint16_t x; + uint8_t y[2]; + }; + + auto t = T{.y = {0xbe, 0xef}}; + + assert_stdstring_equal("beef", util::format_hex(std::span{&t.x, 1})); + + std::string o; + o.resize(4); + + assert_true(std::end(o) == + util::format_hex(std::begin(o), std::span{&t.x, 1})); + assert_stdstring_equal("beef", o); + + struct S { + uint8_t x[8]; + }; + + auto s = S{{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0xf8}}; + + assert_stdstring_equal("01020304050607f8", util::format_hex(s.x)); } void test_util_is_hex_string(void) { assert_true(util::is_hex_string(StringRef{})); - assert_true(util::is_hex_string(StringRef::from_lit("0123456789abcdef"))); - assert_true(util::is_hex_string(StringRef::from_lit("0123456789ABCDEF"))); - assert_false(util::is_hex_string(StringRef::from_lit("000"))); - assert_false(util::is_hex_string(StringRef::from_lit("XX"))); + assert_true(util::is_hex_string("0123456789abcdef"_sr)); + assert_true(util::is_hex_string("0123456789ABCDEF"_sr)); + assert_false(util::is_hex_string("000"_sr)); + assert_false(util::is_hex_string("XX"_sr)); } void test_util_decode_hex(void) { BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "\x0f\xf0", util::decode_hex(balloc, StringRef::from_lit("0ff0")).str()); - assert_stdstring_equal("", util::decode_hex(balloc, StringRef{}).str()); + assert_stdsv_equal("\x0f\xf0"sv, + StringRef{util::decode_hex(balloc, "0ff0"_sr)}); + assert_stdsv_equal(""sv, StringRef{util::decode_hex(balloc, StringRef{})}); } void test_util_extract_host(void) { - assert_stdstring_equal("foo", - util::extract_host(StringRef::from_lit("foo")).str()); - assert_stdstring_equal("foo", - util::extract_host(StringRef::from_lit("foo:")).str()); - assert_stdstring_equal( - "foo", util::extract_host(StringRef::from_lit("foo:0")).str()); - assert_stdstring_equal( - "[::1]", util::extract_host(StringRef::from_lit("[::1]")).str()); - assert_stdstring_equal( - "[::1]", util::extract_host(StringRef::from_lit("[::1]:")).str()); + assert_stdsv_equal("foo"sv, util::extract_host("foo"_sr)); + assert_stdsv_equal("foo"sv, util::extract_host("foo:"_sr)); + assert_stdsv_equal("foo"sv, util::extract_host("foo:0"_sr)); + assert_stdsv_equal("[::1]"sv, util::extract_host("[::1]"_sr)); + assert_stdsv_equal("[::1]"sv, util::extract_host("[::1]:"_sr)); - assert_true(util::extract_host(StringRef::from_lit(":foo")).empty()); - assert_true(util::extract_host(StringRef::from_lit("[::1")).empty()); - assert_true(util::extract_host(StringRef::from_lit("[::1]0")).empty()); + assert_true(util::extract_host(":foo"_sr).empty()); + assert_true(util::extract_host("[::1"_sr).empty()); + assert_true(util::extract_host("[::1]0"_sr).empty()); assert_true(util::extract_host(StringRef{}).empty()); } void test_util_split_hostport(void) { - assert_true(std::make_pair(StringRef::from_lit("foo"), StringRef{}) == - util::split_hostport(StringRef::from_lit("foo"))); - assert_true( - std::make_pair(StringRef::from_lit("foo"), StringRef::from_lit("80")) == - util::split_hostport(StringRef::from_lit("foo:80"))); - assert_true( - std::make_pair(StringRef::from_lit("::1"), StringRef::from_lit("80")) == - util::split_hostport(StringRef::from_lit("[::1]:80"))); - assert_true(std::make_pair(StringRef::from_lit("::1"), StringRef{}) == - util::split_hostport(StringRef::from_lit("[::1]"))); + assert_true(std::make_pair("foo"_sr, StringRef{}) == + util::split_hostport("foo"_sr)); + assert_true(std::make_pair("foo"_sr, "80"_sr) == + util::split_hostport("foo:80"_sr)); + assert_true(std::make_pair("::1"_sr, "80"_sr) == + util::split_hostport("[::1]:80"_sr)); + assert_true(std::make_pair("::1"_sr, StringRef{}) == + util::split_hostport("[::1]"_sr)); assert_true(std::make_pair(StringRef{}, StringRef{}) == util::split_hostport(StringRef{})); assert_true(std::make_pair(StringRef{}, StringRef{}) == - util::split_hostport(StringRef::from_lit("[::1]:"))); + util::split_hostport("[::1]:"_sr)); assert_true(std::make_pair(StringRef{}, StringRef{}) == - util::split_hostport(StringRef::from_lit("foo:"))); + util::split_hostport("foo:"_sr)); assert_true(std::make_pair(StringRef{}, StringRef{}) == - util::split_hostport(StringRef::from_lit("[::1:"))); + util::split_hostport("[::1:"_sr)); assert_true(std::make_pair(StringRef{}, StringRef{}) == - util::split_hostport(StringRef::from_lit("[::1]80"))); + util::split_hostport("[::1]80"_sr)); } void test_util_split_str(void) { - assert_true(std::vector{StringRef::from_lit("")} == - util::split_str(StringRef::from_lit(""), ',')); - assert_true(std::vector{StringRef::from_lit("alpha")} == - util::split_str(StringRef::from_lit("alpha"), ',')); - assert_true((std::vector{StringRef::from_lit("alpha"), - StringRef::from_lit("")}) == - util::split_str(StringRef::from_lit("alpha,"), ',')); - assert_true((std::vector{StringRef::from_lit("alpha"), - StringRef::from_lit("bravo")}) == - util::split_str(StringRef::from_lit("alpha,bravo"), ',')); - assert_true((std::vector{StringRef::from_lit("alpha"), - StringRef::from_lit("bravo"), - StringRef::from_lit("charlie")}) == - util::split_str(StringRef::from_lit("alpha,bravo,charlie"), ',')); - assert_true( - (std::vector{StringRef::from_lit("alpha"), - StringRef::from_lit("bravo"), - StringRef::from_lit("charlie")}) == - util::split_str(StringRef::from_lit("alpha,bravo,charlie"), ',', 0)); - assert_true(std::vector{StringRef::from_lit("")} == - util::split_str(StringRef::from_lit(""), ',', 1)); - assert_true(std::vector{StringRef::from_lit("")} == - util::split_str(StringRef::from_lit(""), ',', 2)); - assert_true( - (std::vector{StringRef::from_lit("alpha"), - StringRef::from_lit("bravo,charlie")}) == - util::split_str(StringRef::from_lit("alpha,bravo,charlie"), ',', 2)); - assert_true(std::vector{StringRef::from_lit("alpha")} == - util::split_str(StringRef::from_lit("alpha"), ',', 2)); - assert_true((std::vector{StringRef::from_lit("alpha"), - StringRef::from_lit("")}) == - util::split_str(StringRef::from_lit("alpha,"), ',', 2)); - assert_true(std::vector{StringRef::from_lit("alpha")} == - util::split_str(StringRef::from_lit("alpha"), ',', 0)); - assert_true( - std::vector{StringRef::from_lit("alpha,bravo,charlie")} == - util::split_str(StringRef::from_lit("alpha,bravo,charlie"), ',', 1)); + assert_true(std::vector{""_sr} == util::split_str(""_sr, ',')); + assert_true(std::vector{"alpha"_sr} == + util::split_str("alpha"_sr, ',')); + assert_true((std::vector{"alpha"_sr, ""_sr}) == + util::split_str("alpha,"_sr, ',')); + assert_true((std::vector{"alpha"_sr, "bravo"_sr}) == + util::split_str("alpha,bravo"_sr, ',')); + assert_true((std::vector{"alpha"_sr, "bravo"_sr, "charlie"_sr}) == + util::split_str("alpha,bravo,charlie"_sr, ',')); + assert_true((std::vector{"alpha"_sr, "bravo"_sr, "charlie"_sr}) == + util::split_str("alpha,bravo,charlie"_sr, ',', 0)); + assert_true(std::vector{""_sr} == util::split_str(""_sr, ',', 1)); + assert_true(std::vector{""_sr} == util::split_str(""_sr, ',', 2)); + assert_true((std::vector{"alpha"_sr, "bravo,charlie"_sr}) == + util::split_str("alpha,bravo,charlie"_sr, ',', 2)); + assert_true(std::vector{"alpha"_sr} == + util::split_str("alpha"_sr, ',', 2)); + assert_true((std::vector{"alpha"_sr, ""_sr}) == + util::split_str("alpha,"_sr, ',', 2)); + assert_true(std::vector{"alpha"_sr} == + util::split_str("alpha"_sr, ',', 0)); + assert_true(std::vector{"alpha,bravo,charlie"_sr} == + util::split_str("alpha,bravo,charlie"_sr, ',', 1)); } void test_util_rstrip(void) { BlockAllocator balloc(4096, 4096); - assert_stdstring_equal( - "alpha", util::rstrip(balloc, StringRef::from_lit("alpha")).str()); - assert_stdstring_equal( - "alpha", util::rstrip(balloc, StringRef::from_lit("alpha ")).str()); - assert_stdstring_equal( - "alpha", util::rstrip(balloc, StringRef::from_lit("alpha \t")).str()); - assert_stdstring_equal("", - util::rstrip(balloc, StringRef::from_lit("")).str()); - assert_stdstring_equal( - "", util::rstrip(balloc, StringRef::from_lit("\t\t\t ")).str()); + assert_stdsv_equal("alpha"sv, util::rstrip(balloc, "alpha"_sr)); + assert_stdsv_equal("alpha"sv, util::rstrip(balloc, "alpha "_sr)); + assert_stdsv_equal("alpha"sv, util::rstrip(balloc, "alpha \t"_sr)); + assert_stdsv_equal(""sv, util::rstrip(balloc, ""_sr)); + assert_stdsv_equal(""sv, util::rstrip(balloc, "\t\t\t "_sr)); } } // namespace shrpx diff --git a/yass/third_party/nghttp2/src/util_test.h b/yass/third_party/nghttp2/src/util_test.h index 8b9608b5c5..39d6167a1c 100644 --- a/yass/third_party/nghttp2/src/util_test.h +++ b/yass/third_party/nghttp2/src/util_test.h @@ -66,7 +66,6 @@ munit_void_test_decl(test_util_get_uint64); munit_void_test_decl(test_util_parse_config_str_list); munit_void_test_decl(test_util_make_http_hostport); munit_void_test_decl(test_util_make_hostport); -munit_void_test_decl(test_util_strifind); munit_void_test_decl(test_util_random_alpha_digit); munit_void_test_decl(test_util_format_hex); munit_void_test_decl(test_util_is_hex_string); diff --git a/yass/third_party/nghttp2/tests/failmalloc_test.c b/yass/third_party/nghttp2/tests/failmalloc_test.c index 5b204fe44d..e68ac114ed 100644 --- a/yass/third_party/nghttp2/tests/failmalloc_test.c +++ b/yass/third_party/nghttp2/tests/failmalloc_test.c @@ -88,7 +88,7 @@ static nghttp2_ssize data_feed_recv_callback(nghttp2_session *session, int flags, void *user_data) { data_feed *df = ((my_user_data *)user_data)->df; size_t avail = (size_t)(df->datalimit - df->datamark); - size_t wlen = nghttp2_min(avail, len); + size_t wlen = nghttp2_min_size(avail, len); (void)session; (void)flags; diff --git a/yass/third_party/nghttp2/tests/munit/munitxx.h b/yass/third_party/nghttp2/tests/munit/munitxx.h index 5e509214f2..7a2ec4eb20 100644 --- a/yass/third_party/nghttp2/tests/munit/munitxx.h +++ b/yass/third_party/nghttp2/tests/munit/munitxx.h @@ -38,7 +38,7 @@ do { \ const std::string munit_tmp_a_ = a; \ const std::string munit_tmp_b_ = b; \ - if (MUNIT_UNLIKELY(a != b)) { \ + if (MUNIT_UNLIKELY(munit_tmp_a_ != munit_tmp_b_)) { \ munit_hexdump_diff(stderr, munit_tmp_a_.c_str(), munit_tmp_a_.size(), \ munit_tmp_b_.c_str(), munit_tmp_b_.size()); \ munit_errorf("assertion failed: string %s == %s (\"%s\" == \"%s\")", #a, \ @@ -52,7 +52,7 @@ do { \ const std::string_view munit_tmp_a_ = a; \ const std::string_view munit_tmp_b_ = b; \ - if (MUNIT_UNLIKELY(a != b)) { \ + if (MUNIT_UNLIKELY(munit_tmp_a_ != munit_tmp_b_)) { \ munit_hexdump_diff(stderr, munit_tmp_a_.data(), munit_tmp_a_.size(), \ munit_tmp_b_.data(), munit_tmp_b_.size()); \ munit_errorf( \ diff --git a/yass/third_party/nghttp2/tests/nghttp2_session_test.c b/yass/third_party/nghttp2/tests/nghttp2_session_test.c index bb505c261f..14b1e4b8d6 100644 --- a/yass/third_party/nghttp2/tests/nghttp2_session_test.c +++ b/yass/third_party/nghttp2/tests/nghttp2_session_test.c @@ -463,8 +463,8 @@ static nghttp2_ssize select_padding_callback(nghttp2_session *session, my_user_data *ud = (my_user_data *)user_data; (void)session; - return (nghttp2_ssize)nghttp2_min(max_payloadlen, - frame->hd.length + ud->padlen); + return (nghttp2_ssize)nghttp2_min_size(max_payloadlen, + frame->hd.length + ud->padlen); } static nghttp2_ssize too_large_data_source_length_callback( @@ -5523,8 +5523,8 @@ void test_nghttp2_submit_data_read_length_too_large(void) { buf = &framebufs->head->buf; nghttp2_frame_unpack_frame_hd(&hd, buf->pos); - payloadlen = nghttp2_min(NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE, - NGHTTP2_INITIAL_WINDOW_SIZE); + payloadlen = nghttp2_min_size(NGHTTP2_INITIAL_CONNECTION_WINDOW_SIZE, + NGHTTP2_INITIAL_WINDOW_SIZE); assert_size(NGHTTP2_FRAME_HDLEN + 1 + payloadlen, ==, (size_t)nghttp2_buf_cap(buf)); @@ -5590,7 +5590,7 @@ static nghttp2_ssize submit_data_twice_data_source_read_callback( (void)user_data; *data_flags |= NGHTTP2_DATA_FLAG_EOF; - return (nghttp2_ssize)nghttp2_min(len, 16); + return (nghttp2_ssize)nghttp2_min_size(len, 16); } static int submit_data_twice_on_frame_send_callback(nghttp2_session *session, diff --git a/yass/third_party/nghttp2/tests/nghttp2_test_helper.c b/yass/third_party/nghttp2/tests/nghttp2_test_helper.c index c1b912be85..2e2562dcd3 100644 --- a/yass/third_party/nghttp2/tests/nghttp2_test_helper.c +++ b/yass/third_party/nghttp2/tests/nghttp2_test_helper.c @@ -174,7 +174,7 @@ nghttp2_ssize inflate_hd(nghttp2_hd_inflater *inflater, nva_out *out, if (offset) { size_t n; - n = nghttp2_min(offset, nghttp2_buf_len(&bp)); + n = nghttp2_min_size(offset, nghttp2_buf_len(&bp)); bp.pos += n; offset -= n; } @@ -343,9 +343,9 @@ nghttp2_stream *open_sent_stream3(nghttp2_session *session, int32_t stream_id, stream = nghttp2_session_open_stream(session, stream_id, flags, pri_spec_in, initial_state, stream_user_data); session->last_sent_stream_id = - nghttp2_max(session->last_sent_stream_id, stream_id); + nghttp2_max_int32(session->last_sent_stream_id, stream_id); session->next_stream_id = - nghttp2_max(session->next_stream_id, (uint32_t)stream_id + 2); + nghttp2_max_uint32(session->next_stream_id, (uint32_t)stream_id + 2); return stream; } @@ -368,9 +368,9 @@ nghttp2_stream *open_sent_stream_with_dep_weight(nghttp2_session *session, stream = open_stream_with_all(session, stream_id, weight, 0, dep_stream); session->last_sent_stream_id = - nghttp2_max(session->last_sent_stream_id, stream_id); + nghttp2_max_int32(session->last_sent_stream_id, stream_id); session->next_stream_id = - nghttp2_max(session->next_stream_id, (uint32_t)stream_id + 2); + nghttp2_max_uint32(session->next_stream_id, (uint32_t)stream_id + 2); return stream; } @@ -404,7 +404,7 @@ nghttp2_stream *open_recv_stream3(nghttp2_session *session, int32_t stream_id, stream = nghttp2_session_open_stream(session, stream_id, flags, pri_spec_in, initial_state, stream_user_data); session->last_recv_stream_id = - nghttp2_max(session->last_recv_stream_id, stream_id); + nghttp2_max_int32(session->last_recv_stream_id, stream_id); return stream; } @@ -427,7 +427,7 @@ nghttp2_stream *open_recv_stream_with_dep_weight(nghttp2_session *session, stream = open_stream_with_all(session, stream_id, weight, 0, dep_stream); session->last_recv_stream_id = - nghttp2_max(session->last_recv_stream_id, stream_id); + nghttp2_max_int32(session->last_recv_stream_id, stream_id); return stream; } diff --git a/yass/third_party/nghttp2/third-party/llhttp/include/llhttp.h b/yass/third_party/nghttp2/third-party/llhttp/include/llhttp.h index 691969367a..37b7934d2e 100644 --- a/yass/third_party/nghttp2/third-party/llhttp/include/llhttp.h +++ b/yass/third_party/nghttp2/third-party/llhttp/include/llhttp.h @@ -4,7 +4,7 @@ #define LLHTTP_VERSION_MAJOR 9 #define LLHTTP_VERSION_MINOR 2 -#define LLHTTP_VERSION_PATCH 0 +#define LLHTTP_VERSION_PATCH 1 #ifndef INCLUDE_LLHTTP_ITSELF_H_ #define INCLUDE_LLHTTP_ITSELF_H_ diff --git a/yass/third_party/nghttp2/third-party/llhttp/src/llhttp.c b/yass/third_party/nghttp2/third-party/llhttp/src/llhttp.c index c08de6494f..3ef3b817f3 100644 --- a/yass/third_party/nghttp2/third-party/llhttp/src/llhttp.c +++ b/yass/third_party/nghttp2/third-party/llhttp/src/llhttp.c @@ -379,7 +379,7 @@ enum llparse_state_e { s_n_llhttp__internal__n_header_value_almost_done, s_n_llhttp__internal__n_invoke_test_lenient_flags_17, s_n_llhttp__internal__n_header_value_lenient, - s_n_llhttp__internal__n_error_53, + s_n_llhttp__internal__n_error_54, s_n_llhttp__internal__n_header_value_otherwise, s_n_llhttp__internal__n_header_value_connection_token, s_n_llhttp__internal__n_header_value_connection_ws, @@ -387,12 +387,12 @@ enum llparse_state_e { s_n_llhttp__internal__n_header_value_connection_2, s_n_llhttp__internal__n_header_value_connection_3, s_n_llhttp__internal__n_header_value_connection, - s_n_llhttp__internal__n_error_55, s_n_llhttp__internal__n_error_56, + s_n_llhttp__internal__n_error_57, s_n_llhttp__internal__n_header_value_content_length_ws, s_n_llhttp__internal__n_header_value_content_length, + s_n_llhttp__internal__n_error_59, s_n_llhttp__internal__n_error_58, - s_n_llhttp__internal__n_error_57, s_n_llhttp__internal__n_header_value_te_token_ows, s_n_llhttp__internal__n_header_value, s_n_llhttp__internal__n_header_value_te_token, @@ -425,12 +425,12 @@ enum llparse_state_e { s_n_llhttp__internal__n_req_http_complete, s_n_llhttp__internal__n_invoke_load_method_1, s_n_llhttp__internal__n_invoke_llhttp__on_version_complete, - s_n_llhttp__internal__n_error_65, - s_n_llhttp__internal__n_error_72, - s_n_llhttp__internal__n_req_http_minor, + s_n_llhttp__internal__n_error_66, s_n_llhttp__internal__n_error_73, - s_n_llhttp__internal__n_req_http_dot, + s_n_llhttp__internal__n_req_http_minor, s_n_llhttp__internal__n_error_74, + s_n_llhttp__internal__n_req_http_dot, + s_n_llhttp__internal__n_error_75, s_n_llhttp__internal__n_req_http_major, s_n_llhttp__internal__n_span_start_llhttp__on_version, s_n_llhttp__internal__n_req_http_start_1, @@ -534,7 +534,7 @@ enum llparse_state_e { s_n_llhttp__internal__n_after_start_req, s_n_llhttp__internal__n_span_start_llhttp__on_method_1, s_n_llhttp__internal__n_res_line_almost_done, - s_n_llhttp__internal__n_invoke_test_lenient_flags_29, + s_n_llhttp__internal__n_invoke_test_lenient_flags_30, s_n_llhttp__internal__n_res_status, s_n_llhttp__internal__n_span_start_llhttp__on_status, s_n_llhttp__internal__n_res_status_code_otherwise, @@ -543,12 +543,12 @@ enum llparse_state_e { s_n_llhttp__internal__n_res_status_code_digit_1, s_n_llhttp__internal__n_res_after_version, s_n_llhttp__internal__n_invoke_llhttp__on_version_complete_1, - s_n_llhttp__internal__n_error_88, - s_n_llhttp__internal__n_error_102, - s_n_llhttp__internal__n_res_http_minor, + s_n_llhttp__internal__n_error_89, s_n_llhttp__internal__n_error_103, - s_n_llhttp__internal__n_res_http_dot, + s_n_llhttp__internal__n_res_http_minor, s_n_llhttp__internal__n_error_104, + s_n_llhttp__internal__n_res_http_dot, + s_n_llhttp__internal__n_error_105, s_n_llhttp__internal__n_res_http_major, s_n_llhttp__internal__n_span_start_llhttp__on_version_1, s_n_llhttp__internal__n_start_res, @@ -887,7 +887,7 @@ int llhttp__internal__c_test_flags_4( return (state->flags & 512) == 512; } -int llhttp__internal__c_test_lenient_flags_21( +int llhttp__internal__c_test_lenient_flags_22( llhttp__internal_t* state, const unsigned char* p, const unsigned char* endp) { @@ -1018,7 +1018,7 @@ int llhttp__internal__c_test_flags_3( return (state->flags & 8) == 8; } -int llhttp__internal__c_test_lenient_flags_19( +int llhttp__internal__c_test_lenient_flags_20( llhttp__internal_t* state, const unsigned char* p, const unsigned char* endp) { @@ -1082,7 +1082,7 @@ int llhttp__internal__c_store_http_minor( return 0; } -int llhttp__internal__c_test_lenient_flags_23( +int llhttp__internal__c_test_lenient_flags_24( llhttp__internal_t* state, const unsigned char* p, const unsigned char* endp) { @@ -2198,10 +2198,10 @@ static llparse_state_t llhttp__internal__run( } switch (*p) { case 9: { - goto s_n_llhttp__internal__n_invoke_load_header_state_4; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_18; } case ' ': { - goto s_n_llhttp__internal__n_invoke_load_header_state_4; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_18; } default: { goto s_n_llhttp__internal__n_invoke_load_header_state_5; @@ -2221,7 +2221,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_header_value_lws; } default: { - goto s_n_llhttp__internal__n_error_52; + goto s_n_llhttp__internal__n_error_53; } } /* UNREACHABLE */; @@ -2258,8 +2258,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_53: - s_n_llhttp__internal__n_error_53: { + case s_n_llhttp__internal__n_error_54: + s_n_llhttp__internal__n_error_54: { state->error = 0xa; state->reason = "Invalid header value char"; state->error_pos = (const char*) p; @@ -2281,7 +2281,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_2; } default: { - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_18; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_19; } } /* UNREACHABLE */; @@ -2458,8 +2458,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_55: - s_n_llhttp__internal__n_error_55: { + case s_n_llhttp__internal__n_error_56: + s_n_llhttp__internal__n_error_56: { state->error = 0xb; state->reason = "Content-Length overflow"; state->error_pos = (const char*) p; @@ -2468,8 +2468,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_56: - s_n_llhttp__internal__n_error_56: { + case s_n_llhttp__internal__n_error_57: + s_n_llhttp__internal__n_error_57: { state->error = 0xb; state->reason = "Invalid character in Content-Length"; state->error_pos = (const char*) p; @@ -2564,8 +2564,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_58: - s_n_llhttp__internal__n_error_58: { + case s_n_llhttp__internal__n_error_59: + s_n_llhttp__internal__n_error_59: { state->error = 0xf; state->reason = "Invalid `Transfer-Encoding` header value"; state->error_pos = (const char*) p; @@ -2574,8 +2574,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_57: - s_n_llhttp__internal__n_error_57: { + case s_n_llhttp__internal__n_error_58: + s_n_llhttp__internal__n_error_58: { state->error = 0xf; state->reason = "Invalid `Transfer-Encoding` header value"; state->error_pos = (const char*) p; @@ -2829,7 +2829,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_span_end_llhttp__on_header_field_2; } default: { - goto s_n_llhttp__internal__n_error_61; + goto s_n_llhttp__internal__n_error_62; } } /* UNREACHABLE */; @@ -3230,7 +3230,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_to_http_09; } default: { - goto s_n_llhttp__internal__n_error_62; + goto s_n_llhttp__internal__n_error_63; } } /* UNREACHABLE */; @@ -3255,7 +3255,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_skip_lf_to_http09_1; } default: { - goto s_n_llhttp__internal__n_error_62; + goto s_n_llhttp__internal__n_error_63; } } /* UNREACHABLE */; @@ -3273,13 +3273,13 @@ static llparse_state_t llhttp__internal__run( switch (match_seq.status) { case kMatchComplete: { p++; - goto s_n_llhttp__internal__n_error_70; + goto s_n_llhttp__internal__n_error_71; } case kMatchPause: { return s_n_llhttp__internal__n_req_pri_upgrade; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_71; + goto s_n_llhttp__internal__n_error_72; } } /* UNREACHABLE */; @@ -3296,7 +3296,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_headers_start; } default: { - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_25; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_26; } } /* UNREACHABLE */; @@ -3310,14 +3310,14 @@ static llparse_state_t llhttp__internal__run( switch (*p) { case 10: { p++; - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_24; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_25; } case 13: { p++; goto s_n_llhttp__internal__n_req_http_complete_crlf; } default: { - goto s_n_llhttp__internal__n_error_69; + goto s_n_llhttp__internal__n_error_70; } } /* UNREACHABLE */; @@ -3342,13 +3342,13 @@ static llparse_state_t llhttp__internal__run( case 21: goto s_n_llhttp__internal__n_pause_21; default: - goto s_n_llhttp__internal__n_error_66; + goto s_n_llhttp__internal__n_error_67; } /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_65: - s_n_llhttp__internal__n_error_65: { + case s_n_llhttp__internal__n_error_66: + s_n_llhttp__internal__n_error_66: { state->error = 0x9; state->reason = "Invalid HTTP version"; state->error_pos = (const char*) p; @@ -3357,8 +3357,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_72: - s_n_llhttp__internal__n_error_72: { + case s_n_llhttp__internal__n_error_73: + s_n_llhttp__internal__n_error_73: { state->error = 0x9; state->reason = "Invalid minor version"; state->error_pos = (const char*) p; @@ -3430,8 +3430,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_73: - s_n_llhttp__internal__n_error_73: { + case s_n_llhttp__internal__n_error_74: + s_n_llhttp__internal__n_error_74: { state->error = 0x9; state->reason = "Expected dot"; state->error_pos = (const char*) p; @@ -3457,8 +3457,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_74: - s_n_llhttp__internal__n_error_74: { + case s_n_llhttp__internal__n_error_75: + s_n_llhttp__internal__n_error_75: { state->error = 0x9; state->reason = "Invalid major version"; state->error_pos = (const char*) p; @@ -3559,7 +3559,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_req_http_start_1; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_77; + goto s_n_llhttp__internal__n_error_78; } } /* UNREACHABLE */; @@ -3583,7 +3583,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_req_http_start_2; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_77; + goto s_n_llhttp__internal__n_error_78; } } /* UNREACHABLE */; @@ -3607,7 +3607,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_req_http_start_3; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_77; + goto s_n_llhttp__internal__n_error_78; } } /* UNREACHABLE */; @@ -3636,7 +3636,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_req_http_start_3; } default: { - goto s_n_llhttp__internal__n_error_77; + goto s_n_llhttp__internal__n_error_78; } } /* UNREACHABLE */; @@ -3727,7 +3727,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_fragment; } default: { - goto s_n_llhttp__internal__n_error_78; + goto s_n_llhttp__internal__n_error_79; } } /* UNREACHABLE */; @@ -3788,7 +3788,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_span_end_stub_query_3; } default: { - goto s_n_llhttp__internal__n_error_79; + goto s_n_llhttp__internal__n_error_80; } } /* UNREACHABLE */; @@ -3826,7 +3826,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_query; } default: { - goto s_n_llhttp__internal__n_error_80; + goto s_n_llhttp__internal__n_error_81; } } /* UNREACHABLE */; @@ -3951,10 +3951,10 @@ static llparse_state_t llhttp__internal__run( } case 8: { p++; - goto s_n_llhttp__internal__n_error_81; + goto s_n_llhttp__internal__n_error_82; } default: { - goto s_n_llhttp__internal__n_error_82; + goto s_n_llhttp__internal__n_error_83; } } /* UNREACHABLE */; @@ -4013,7 +4013,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_server_with_at; } default: { - goto s_n_llhttp__internal__n_error_83; + goto s_n_llhttp__internal__n_error_84; } } /* UNREACHABLE */; @@ -4030,7 +4030,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_server; } default: { - goto s_n_llhttp__internal__n_error_84; + goto s_n_llhttp__internal__n_error_85; } } /* UNREACHABLE */; @@ -4067,7 +4067,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_schema_delim_1; } default: { - goto s_n_llhttp__internal__n_error_84; + goto s_n_llhttp__internal__n_error_85; } } /* UNREACHABLE */; @@ -4119,7 +4119,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_schema; } default: { - goto s_n_llhttp__internal__n_error_85; + goto s_n_llhttp__internal__n_error_86; } } /* UNREACHABLE */; @@ -4160,7 +4160,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_url_schema; } default: { - goto s_n_llhttp__internal__n_error_86; + goto s_n_llhttp__internal__n_error_87; } } /* UNREACHABLE */; @@ -4258,7 +4258,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_req_spaces_before_url; } default: { - goto s_n_llhttp__internal__n_error_87; + goto s_n_llhttp__internal__n_error_88; } } /* UNREACHABLE */; @@ -4272,7 +4272,7 @@ static llparse_state_t llhttp__internal__run( case 21: goto s_n_llhttp__internal__n_pause_26; default: - goto s_n_llhttp__internal__n_error_106; + goto s_n_llhttp__internal__n_error_107; } /* UNREACHABLE */; abort(); @@ -4289,7 +4289,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_store_method_1; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4314,7 +4314,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_3; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4335,7 +4335,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_3; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4360,7 +4360,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_4; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4385,7 +4385,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_6; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4410,7 +4410,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_8; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4428,7 +4428,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_store_method_1; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4449,7 +4449,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_9; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4470,7 +4470,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_7; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4495,7 +4495,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_12; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4520,7 +4520,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_13; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4541,7 +4541,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_13; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4558,7 +4558,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_11; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4583,7 +4583,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_14; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4608,7 +4608,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_17; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4650,7 +4650,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_15; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4675,7 +4675,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_18; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4700,7 +4700,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_20; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4725,7 +4725,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_21; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4746,7 +4746,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_21; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4771,7 +4771,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_23; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4796,7 +4796,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_24; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4821,7 +4821,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_26; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4846,7 +4846,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_28; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4864,7 +4864,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_store_method_1; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4885,7 +4885,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_29; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4906,7 +4906,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_27; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4931,7 +4931,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_30; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4960,7 +4960,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_30; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -4985,7 +4985,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_31; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5010,7 +5010,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_32; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5035,7 +5035,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_35; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5060,7 +5060,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_36; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5081,7 +5081,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_36; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5106,7 +5106,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_37; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5131,7 +5131,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_38; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5156,7 +5156,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_42; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5181,7 +5181,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_43; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5202,7 +5202,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_43; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5219,7 +5219,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_41; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5241,7 +5241,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_40; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5266,7 +5266,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_45; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5288,7 +5288,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_store_method_1; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5321,7 +5321,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_44; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5346,7 +5346,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_46; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5371,7 +5371,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_49; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5396,7 +5396,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_50; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5421,7 +5421,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_51; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5446,7 +5446,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_52; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5475,7 +5475,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_52; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5492,7 +5492,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_48; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5517,7 +5517,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_55; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5535,7 +5535,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_store_method_1; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5560,7 +5560,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_58; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5581,7 +5581,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_58; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5602,7 +5602,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_56; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5627,7 +5627,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_59; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5652,7 +5652,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_60; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5677,7 +5677,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_60; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5702,7 +5702,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_62; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5727,7 +5727,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_63; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5748,7 +5748,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_63; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5773,7 +5773,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_66; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5798,7 +5798,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_68; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5823,7 +5823,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_69; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5844,7 +5844,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_69; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5869,7 +5869,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_after_start_req_70; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5894,7 +5894,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_70; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5911,7 +5911,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_65; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -5992,7 +5992,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_after_start_req_64; } default: { - goto s_n_llhttp__internal__n_error_107; + goto s_n_llhttp__internal__n_error_108; } } /* UNREACHABLE */; @@ -6024,19 +6024,19 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; } default: { - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_28; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_29; } } /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_invoke_test_lenient_flags_29: - s_n_llhttp__internal__n_invoke_test_lenient_flags_29: { + case s_n_llhttp__internal__n_invoke_test_lenient_flags_30: + s_n_llhttp__internal__n_invoke_test_lenient_flags_30: { switch (llhttp__internal__c_test_lenient_flags_1(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; default: - goto s_n_llhttp__internal__n_error_93; + goto s_n_llhttp__internal__n_error_94; } /* UNREACHABLE */; abort(); @@ -6080,7 +6080,7 @@ static llparse_state_t llhttp__internal__run( switch (*p) { case 10: { p++; - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_27; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_28; } case 13: { p++; @@ -6091,7 +6091,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_span_start_llhttp__on_status; } default: { - goto s_n_llhttp__internal__n_error_94; + goto s_n_llhttp__internal__n_error_95; } } /* UNREACHABLE */; @@ -6154,7 +6154,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_mul_add_status_code_2; } default: { - goto s_n_llhttp__internal__n_error_96; + goto s_n_llhttp__internal__n_error_97; } } /* UNREACHABLE */; @@ -6217,7 +6217,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_mul_add_status_code_1; } default: { - goto s_n_llhttp__internal__n_error_98; + goto s_n_llhttp__internal__n_error_99; } } /* UNREACHABLE */; @@ -6280,7 +6280,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_mul_add_status_code; } default: { - goto s_n_llhttp__internal__n_error_100; + goto s_n_llhttp__internal__n_error_101; } } /* UNREACHABLE */; @@ -6297,7 +6297,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_invoke_update_status_code; } default: { - goto s_n_llhttp__internal__n_error_101; + goto s_n_llhttp__internal__n_error_102; } } /* UNREACHABLE */; @@ -6311,13 +6311,13 @@ static llparse_state_t llhttp__internal__run( case 21: goto s_n_llhttp__internal__n_pause_25; default: - goto s_n_llhttp__internal__n_error_89; + goto s_n_llhttp__internal__n_error_90; } /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_88: - s_n_llhttp__internal__n_error_88: { + case s_n_llhttp__internal__n_error_89: + s_n_llhttp__internal__n_error_89: { state->error = 0x9; state->reason = "Invalid HTTP version"; state->error_pos = (const char*) p; @@ -6326,8 +6326,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_102: - s_n_llhttp__internal__n_error_102: { + case s_n_llhttp__internal__n_error_103: + s_n_llhttp__internal__n_error_103: { state->error = 0x9; state->reason = "Invalid minor version"; state->error_pos = (const char*) p; @@ -6399,8 +6399,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_103: - s_n_llhttp__internal__n_error_103: { + case s_n_llhttp__internal__n_error_104: + s_n_llhttp__internal__n_error_104: { state->error = 0x9; state->reason = "Expected dot"; state->error_pos = (const char*) p; @@ -6426,8 +6426,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - case s_n_llhttp__internal__n_error_104: - s_n_llhttp__internal__n_error_104: { + case s_n_llhttp__internal__n_error_105: + s_n_llhttp__internal__n_error_105: { state->error = 0x9; state->reason = "Invalid major version"; state->error_pos = (const char*) p; @@ -6528,7 +6528,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_start_res; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_108; + goto s_n_llhttp__internal__n_error_109; } } /* UNREACHABLE */; @@ -6566,7 +6566,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_req_or_res_method_2; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_105; + goto s_n_llhttp__internal__n_error_106; } } /* UNREACHABLE */; @@ -6599,7 +6599,7 @@ static llparse_state_t llhttp__internal__run( return s_n_llhttp__internal__n_req_or_res_method_3; } case kMatchMismatch: { - goto s_n_llhttp__internal__n_error_105; + goto s_n_llhttp__internal__n_error_106; } } /* UNREACHABLE */; @@ -6620,7 +6620,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_req_or_res_method_3; } default: { - goto s_n_llhttp__internal__n_error_105; + goto s_n_llhttp__internal__n_error_106; } } /* UNREACHABLE */; @@ -6637,7 +6637,7 @@ static llparse_state_t llhttp__internal__run( goto s_n_llhttp__internal__n_req_or_res_method_1; } default: { - goto s_n_llhttp__internal__n_error_105; + goto s_n_llhttp__internal__n_error_106; } } /* UNREACHABLE */; @@ -7827,7 +7827,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_59: { + s_n_llhttp__internal__n_error_60: { state->error = 0xb; state->reason = "Content-Length can't be present with Transfer-Encoding"; state->error_pos = (const char*) p; @@ -8021,6 +8021,25 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } + s_n_llhttp__internal__n_error_52: { + state->error = 0xa; + state->reason = "Unexpected whitespace after header value"; + state->error_pos = (const char*) p; + state->_current = (void*) (intptr_t) s_error; + return s_error; + /* UNREACHABLE */; + abort(); + } + s_n_llhttp__internal__n_invoke_test_lenient_flags_18: { + switch (llhttp__internal__c_test_lenient_flags(state, p, endp)) { + case 1: + goto s_n_llhttp__internal__n_invoke_load_header_state_4; + default: + goto s_n_llhttp__internal__n_error_52; + } + /* UNREACHABLE */; + abort(); + } s_n_llhttp__internal__n_invoke_update_header_state_2: { switch (llhttp__internal__c_update_header_state(state, p, endp)) { default: @@ -8077,7 +8096,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_52: { + s_n_llhttp__internal__n_error_53: { state->error = 0x3; state->reason = "Missing expected LF after header value"; state->error_pos = (const char*) p; @@ -8175,14 +8194,14 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_53; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_54; return s_error; } - goto s_n_llhttp__internal__n_error_53; + goto s_n_llhttp__internal__n_error_54; /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_18: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_19: { switch (llhttp__internal__c_test_lenient_flags(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_header_value_lenient; @@ -8290,10 +8309,10 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_55; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_56; return s_error; } - goto s_n_llhttp__internal__n_error_55; + goto s_n_llhttp__internal__n_error_56; /* UNREACHABLE */; abort(); } @@ -8325,14 +8344,14 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_56; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_57; return s_error; } - goto s_n_llhttp__internal__n_error_56; + goto s_n_llhttp__internal__n_error_57; /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_54: { + s_n_llhttp__internal__n_error_55: { state->error = 0x4; state->reason = "Duplicate Content-Length"; state->error_pos = (const char*) p; @@ -8346,7 +8365,7 @@ static llparse_state_t llhttp__internal__run( case 0: goto s_n_llhttp__internal__n_header_value_content_length; default: - goto s_n_llhttp__internal__n_error_54; + goto s_n_llhttp__internal__n_error_55; } /* UNREACHABLE */; abort(); @@ -8361,11 +8380,11 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) (p + 1); - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_58; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_59; return s_error; } p++; - goto s_n_llhttp__internal__n_error_58; + goto s_n_llhttp__internal__n_error_59; /* UNREACHABLE */; abort(); } @@ -8387,16 +8406,16 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) (p + 1); - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_57; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_58; return s_error; } p++; - goto s_n_llhttp__internal__n_error_57; + goto s_n_llhttp__internal__n_error_58; /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_19: { - switch (llhttp__internal__c_test_lenient_flags_19(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_20: { + switch (llhttp__internal__c_test_lenient_flags_20(state, p, endp)) { case 0: goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_8; default: @@ -8408,7 +8427,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_load_type_1: { switch (llhttp__internal__c_load_type(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_19; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_20; default: goto s_n_llhttp__internal__n_header_value_te_chunked; } @@ -8439,8 +8458,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_20: { - switch (llhttp__internal__c_test_lenient_flags_19(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_21: { + switch (llhttp__internal__c_test_lenient_flags_20(state, p, endp)) { case 0: goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_9; default: @@ -8452,7 +8471,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_load_type_2: { switch (llhttp__internal__c_load_type(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_20; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_21; default: goto s_n_llhttp__internal__n_invoke_or_flags_19; } @@ -8501,10 +8520,10 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_21: { - switch (llhttp__internal__c_test_lenient_flags_21(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_22: { + switch (llhttp__internal__c_test_lenient_flags_22(state, p, endp)) { case 0: - goto s_n_llhttp__internal__n_error_59; + goto s_n_llhttp__internal__n_error_60; default: goto s_n_llhttp__internal__n_header_value_discard_ws; } @@ -8514,14 +8533,14 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_test_flags_4: { switch (llhttp__internal__c_test_flags_4(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_21; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_22; default: goto s_n_llhttp__internal__n_header_value_discard_ws; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_60: { + s_n_llhttp__internal__n_error_61: { state->error = 0xf; state->reason = "Transfer-Encoding can't be present with Content-Length"; state->error_pos = (const char*) p; @@ -8530,10 +8549,10 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_22: { - switch (llhttp__internal__c_test_lenient_flags_21(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_23: { + switch (llhttp__internal__c_test_lenient_flags_22(state, p, endp)) { case 0: - goto s_n_llhttp__internal__n_error_60; + goto s_n_llhttp__internal__n_error_61; default: goto s_n_llhttp__internal__n_header_value_discard_ws; } @@ -8543,7 +8562,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_test_flags_5: { switch (llhttp__internal__c_test_flags_2(state, p, endp)) { case 1: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_22; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_23; default: goto s_n_llhttp__internal__n_header_value_discard_ws; } @@ -8604,7 +8623,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_61: { + s_n_llhttp__internal__n_error_62: { state->error = 0xa; state->reason = "Invalid header token"; state->error_pos = (const char*) p; @@ -8719,7 +8738,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_62: { + s_n_llhttp__internal__n_error_63: { state->error = 0x7; state->reason = "Expected CRLF"; state->error_pos = (const char*) p; @@ -8745,7 +8764,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_70: { + s_n_llhttp__internal__n_error_71: { state->error = 0x17; state->reason = "Pause on PRI/Upgrade"; state->error_pos = (const char*) p; @@ -8754,7 +8773,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_71: { + s_n_llhttp__internal__n_error_72: { state->error = 0x9; state->reason = "Expected HTTP/2 Connection Preface"; state->error_pos = (const char*) p; @@ -8763,7 +8782,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_68: { + s_n_llhttp__internal__n_error_69: { state->error = 0x2; state->reason = "Expected CRLF after version"; state->error_pos = (const char*) p; @@ -8772,17 +8791,17 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_25: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_26: { switch (llhttp__internal__c_test_lenient_flags_8(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_headers_start; default: - goto s_n_llhttp__internal__n_error_68; + goto s_n_llhttp__internal__n_error_69; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_67: { + s_n_llhttp__internal__n_error_68: { state->error = 0x9; state->reason = "Expected CRLF after version"; state->error_pos = (const char*) p; @@ -8791,17 +8810,17 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_24: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_25: { switch (llhttp__internal__c_test_lenient_flags_1(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_req_http_complete_crlf; default: - goto s_n_llhttp__internal__n_error_67; + goto s_n_llhttp__internal__n_error_68; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_69: { + s_n_llhttp__internal__n_error_70: { state->error = 0x9; state->reason = "Expected CRLF after version"; state->error_pos = (const char*) p; @@ -8819,7 +8838,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_66: { + s_n_llhttp__internal__n_error_67: { state->error = 0x21; state->reason = "`on_version_complete` callback error"; state->error_pos = (const char*) p; @@ -8855,10 +8874,10 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_65; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_66; return s_error; } - goto s_n_llhttp__internal__n_error_65; + goto s_n_llhttp__internal__n_error_66; /* UNREACHABLE */; abort(); } @@ -8908,8 +8927,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_23: { - switch (llhttp__internal__c_test_lenient_flags_23(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_24: { + switch (llhttp__internal__c_test_lenient_flags_24(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_span_end_llhttp__on_version_1; default: @@ -8921,7 +8940,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_store_http_minor: { switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) { default: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_23; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_24; } /* UNREACHABLE */; abort(); @@ -8936,10 +8955,10 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_72; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_73; return s_error; } - goto s_n_llhttp__internal__n_error_72; + goto s_n_llhttp__internal__n_error_73; /* UNREACHABLE */; abort(); } @@ -8953,10 +8972,10 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_73; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_74; return s_error; } - goto s_n_llhttp__internal__n_error_73; + goto s_n_llhttp__internal__n_error_74; /* UNREACHABLE */; abort(); } @@ -8978,14 +8997,14 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_74; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_75; return s_error; } - goto s_n_llhttp__internal__n_error_74; + goto s_n_llhttp__internal__n_error_75; /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_64: { + s_n_llhttp__internal__n_error_65: { state->error = 0x8; state->reason = "Invalid method for HTTP/x.x request"; state->error_pos = (const char*) p; @@ -9069,12 +9088,12 @@ static llparse_state_t llhttp__internal__run( case 46: goto s_n_llhttp__internal__n_span_start_llhttp__on_version; default: - goto s_n_llhttp__internal__n_error_64; + goto s_n_llhttp__internal__n_error_65; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_77: { + s_n_llhttp__internal__n_error_78: { state->error = 0x8; state->reason = "Expected HTTP/"; state->error_pos = (const char*) p; @@ -9083,7 +9102,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_75: { + s_n_llhttp__internal__n_error_76: { state->error = 0x8; state->reason = "Expected SOURCE method for ICE/x.x request"; state->error_pos = (const char*) p; @@ -9097,12 +9116,12 @@ static llparse_state_t llhttp__internal__run( case 33: goto s_n_llhttp__internal__n_span_start_llhttp__on_version; default: - goto s_n_llhttp__internal__n_error_75; + goto s_n_llhttp__internal__n_error_76; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_76: { + s_n_llhttp__internal__n_error_77: { state->error = 0x8; state->reason = "Invalid method for RTSP/x.x request"; state->error_pos = (const char*) p; @@ -9142,7 +9161,7 @@ static llparse_state_t llhttp__internal__run( case 45: goto s_n_llhttp__internal__n_span_start_llhttp__on_version; default: - goto s_n_llhttp__internal__n_error_76; + goto s_n_llhttp__internal__n_error_77; } /* UNREACHABLE */; abort(); @@ -9156,7 +9175,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_63: { + s_n_llhttp__internal__n_error_64: { state->error = 0x1a; state->reason = "`on_url_complete` callback error"; state->error_pos = (const char*) p; @@ -9172,7 +9191,7 @@ static llparse_state_t llhttp__internal__run( case 21: goto s_n_llhttp__internal__n_pause_22; default: - goto s_n_llhttp__internal__n_error_63; + goto s_n_llhttp__internal__n_error_64; } /* UNREACHABLE */; abort(); @@ -9245,7 +9264,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_78: { + s_n_llhttp__internal__n_error_79: { state->error = 0x7; state->reason = "Invalid char in url fragment start"; state->error_pos = (const char*) p; @@ -9305,7 +9324,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_79: { + s_n_llhttp__internal__n_error_80: { state->error = 0x7; state->reason = "Invalid char in url query"; state->error_pos = (const char*) p; @@ -9314,7 +9333,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_80: { + s_n_llhttp__internal__n_error_81: { state->error = 0x7; state->reason = "Invalid char in url path"; state->error_pos = (const char*) p; @@ -9425,18 +9444,9 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_81: { - state->error = 0x7; - state->reason = "Double @ in url"; - state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_error; - return s_error; - /* UNREACHABLE */; - abort(); - } s_n_llhttp__internal__n_error_82: { state->error = 0x7; - state->reason = "Unexpected char in url server"; + state->reason = "Double @ in url"; state->error_pos = (const char*) p; state->_current = (void*) (intptr_t) s_error; return s_error; @@ -9454,7 +9464,7 @@ static llparse_state_t llhttp__internal__run( } s_n_llhttp__internal__n_error_84: { state->error = 0x7; - state->reason = "Unexpected char in url schema"; + state->reason = "Unexpected char in url server"; state->error_pos = (const char*) p; state->_current = (void*) (intptr_t) s_error; return s_error; @@ -9471,6 +9481,15 @@ static llparse_state_t llhttp__internal__run( abort(); } s_n_llhttp__internal__n_error_86: { + state->error = 0x7; + state->reason = "Unexpected char in url schema"; + state->error_pos = (const char*) p; + state->_current = (void*) (intptr_t) s_error; + return s_error; + /* UNREACHABLE */; + abort(); + } + s_n_llhttp__internal__n_error_87: { state->error = 0x7; state->reason = "Unexpected start char in url"; state->error_pos = (const char*) p; @@ -9489,7 +9508,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_87: { + s_n_llhttp__internal__n_error_88: { state->error = 0x6; state->reason = "Expected space after method"; state->error_pos = (const char*) p; @@ -9507,7 +9526,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_106: { + s_n_llhttp__internal__n_error_107: { state->error = 0x20; state->reason = "`on_method_complete` callback error"; state->error_pos = (const char*) p; @@ -9541,7 +9560,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_107: { + s_n_llhttp__internal__n_error_108: { state->error = 0x6; state->reason = "Invalid method encountered"; state->error_pos = (const char*) p; @@ -9550,7 +9569,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_99: { + s_n_llhttp__internal__n_error_100: { state->error = 0xd; state->reason = "Invalid status code"; state->error_pos = (const char*) p; @@ -9559,7 +9578,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_97: { + s_n_llhttp__internal__n_error_98: { state->error = 0xd; state->reason = "Invalid status code"; state->error_pos = (const char*) p; @@ -9568,7 +9587,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_95: { + s_n_llhttp__internal__n_error_96: { state->error = 0xd; state->reason = "Invalid status code"; state->error_pos = (const char*) p; @@ -9586,7 +9605,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_91: { + s_n_llhttp__internal__n_error_92: { state->error = 0x1b; state->reason = "`on_status_complete` callback error"; state->error_pos = (const char*) p; @@ -9602,12 +9621,12 @@ static llparse_state_t llhttp__internal__run( case 21: goto s_n_llhttp__internal__n_pause_24; default: - goto s_n_llhttp__internal__n_error_91; + goto s_n_llhttp__internal__n_error_92; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_90: { + s_n_llhttp__internal__n_error_91: { state->error = 0xd; state->reason = "Invalid response status"; state->error_pos = (const char*) p; @@ -9616,17 +9635,17 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_27: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_28: { switch (llhttp__internal__c_test_lenient_flags_1(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; default: - goto s_n_llhttp__internal__n_error_90; + goto s_n_llhttp__internal__n_error_91; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_92: { + s_n_llhttp__internal__n_error_93: { state->error = 0x2; state->reason = "Expected LF after CR"; state->error_pos = (const char*) p; @@ -9635,17 +9654,17 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_28: { + s_n_llhttp__internal__n_invoke_test_lenient_flags_29: { switch (llhttp__internal__c_test_lenient_flags_8(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_invoke_llhttp__on_status_complete; default: - goto s_n_llhttp__internal__n_error_92; + goto s_n_llhttp__internal__n_error_93; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_93: { + s_n_llhttp__internal__n_error_94: { state->error = 0x19; state->reason = "Missing expected CR after response line"; state->error_pos = (const char*) p; @@ -9664,11 +9683,11 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) (p + 1); - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_test_lenient_flags_29; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_test_lenient_flags_30; return s_error; } p++; - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_29; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_30; /* UNREACHABLE */; abort(); } @@ -9690,7 +9709,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_94: { + s_n_llhttp__internal__n_error_95: { state->error = 0xd; state->reason = "Invalid response status"; state->error_pos = (const char*) p; @@ -9702,14 +9721,14 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_mul_add_status_code_2: { switch (llhttp__internal__c_mul_add_status_code(state, p, endp, match)) { case 1: - goto s_n_llhttp__internal__n_error_95; + goto s_n_llhttp__internal__n_error_96; default: goto s_n_llhttp__internal__n_res_status_code_otherwise; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_96: { + s_n_llhttp__internal__n_error_97: { state->error = 0xd; state->reason = "Invalid status code"; state->error_pos = (const char*) p; @@ -9721,14 +9740,14 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_mul_add_status_code_1: { switch (llhttp__internal__c_mul_add_status_code(state, p, endp, match)) { case 1: - goto s_n_llhttp__internal__n_error_97; + goto s_n_llhttp__internal__n_error_98; default: goto s_n_llhttp__internal__n_res_status_code_digit_3; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_98: { + s_n_llhttp__internal__n_error_99: { state->error = 0xd; state->reason = "Invalid status code"; state->error_pos = (const char*) p; @@ -9740,14 +9759,14 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_mul_add_status_code: { switch (llhttp__internal__c_mul_add_status_code(state, p, endp, match)) { case 1: - goto s_n_llhttp__internal__n_error_99; + goto s_n_llhttp__internal__n_error_100; default: goto s_n_llhttp__internal__n_res_status_code_digit_2; } /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_100: { + s_n_llhttp__internal__n_error_101: { state->error = 0xd; state->reason = "Invalid status code"; state->error_pos = (const char*) p; @@ -9764,7 +9783,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_101: { + s_n_llhttp__internal__n_error_102: { state->error = 0x9; state->reason = "Expected space after version"; state->error_pos = (const char*) p; @@ -9782,7 +9801,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_89: { + s_n_llhttp__internal__n_error_90: { state->error = 0x21; state->reason = "`on_version_complete` callback error"; state->error_pos = (const char*) p; @@ -9818,10 +9837,10 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_88; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_89; return s_error; } - goto s_n_llhttp__internal__n_error_88; + goto s_n_llhttp__internal__n_error_89; /* UNREACHABLE */; abort(); } @@ -9871,8 +9890,8 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_invoke_test_lenient_flags_26: { - switch (llhttp__internal__c_test_lenient_flags_23(state, p, endp)) { + s_n_llhttp__internal__n_invoke_test_lenient_flags_27: { + switch (llhttp__internal__c_test_lenient_flags_24(state, p, endp)) { case 1: goto s_n_llhttp__internal__n_span_end_llhttp__on_version_6; default: @@ -9884,7 +9903,7 @@ static llparse_state_t llhttp__internal__run( s_n_llhttp__internal__n_invoke_store_http_minor_1: { switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) { default: - goto s_n_llhttp__internal__n_invoke_test_lenient_flags_26; + goto s_n_llhttp__internal__n_invoke_test_lenient_flags_27; } /* UNREACHABLE */; abort(); @@ -9899,10 +9918,10 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_102; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_103; return s_error; } - goto s_n_llhttp__internal__n_error_102; + goto s_n_llhttp__internal__n_error_103; /* UNREACHABLE */; abort(); } @@ -9916,10 +9935,10 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_103; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_104; return s_error; } - goto s_n_llhttp__internal__n_error_103; + goto s_n_llhttp__internal__n_error_104; /* UNREACHABLE */; abort(); } @@ -9941,14 +9960,14 @@ static llparse_state_t llhttp__internal__run( if (err != 0) { state->error = err; state->error_pos = (const char*) p; - state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_104; + state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_105; return s_error; } - goto s_n_llhttp__internal__n_error_104; + goto s_n_llhttp__internal__n_error_105; /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_108: { + s_n_llhttp__internal__n_error_109: { state->error = 0x8; state->reason = "Expected HTTP/"; state->error_pos = (const char*) p; @@ -10008,7 +10027,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_105: { + s_n_llhttp__internal__n_error_106: { state->error = 0x8; state->reason = "Invalid word encountered"; state->error_pos = (const char*) p; @@ -10081,7 +10100,7 @@ static llparse_state_t llhttp__internal__run( /* UNREACHABLE */; abort(); } - s_n_llhttp__internal__n_error_109: { + s_n_llhttp__internal__n_error_110: { state->error = 0x1f; state->reason = "`on_reset` callback error"; state->error_pos = (const char*) p; @@ -10097,7 +10116,7 @@ static llparse_state_t llhttp__internal__run( case 21: goto s_n_llhttp__internal__n_pause_28; default: - goto s_n_llhttp__internal__n_error_109; + goto s_n_llhttp__internal__n_error_110; } /* UNREACHABLE */; abort(); diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_adapter_test.cc b/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_adapter_test.cc index eba07d5722..d5811dfe64 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_adapter_test.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_adapter_test.cc @@ -63,7 +63,7 @@ TEST(NgHttp2AdapterTest, ClientConstruction) { } TEST(NgHttp2AdapterTest, ClientHandlesFrames) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); int result = adapter->Send(); EXPECT_EQ(0, result); @@ -289,7 +289,7 @@ TEST(NgHttp2AdapterTest, ClientHandlesFrames) { } TEST(NgHttp2AdapterTest, QueuingWindowUpdateAffectsWindow) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); EXPECT_EQ(adapter->GetReceiveWindowSize(), kInitialFlowControlWindowSize); @@ -321,7 +321,7 @@ TEST(NgHttp2AdapterTest, QueuingWindowUpdateAffectsWindow) { } TEST(NgHttp2AdapterTest, AckOfSettingInitialWindowSizeAffectsWindow) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -400,7 +400,7 @@ TEST(NgHttp2AdapterTest, AckOfSettingInitialWindowSizeAffectsWindow) { } TEST(NgHttp2AdapterTest, ClientRejects100HeadersWithFin) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -464,7 +464,7 @@ TEST(NgHttp2AdapterTest, ClientRejects100HeadersWithFin) { } TEST(NgHttp2AdapterTest, ClientRejects100HeadersWithContent) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -525,7 +525,7 @@ TEST(NgHttp2AdapterTest, ClientRejects100HeadersWithContent) { } TEST(NgHttp2AdapterTest, ClientRejects100HeadersWithContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -595,7 +595,7 @@ TEST(NgHttp2AdapterTest, ClientRejects100HeadersWithContentLength) { } TEST(NgHttp2AdapterTest, ClientHandles204WithContent) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -686,7 +686,7 @@ TEST(NgHttp2AdapterTest, ClientHandles204WithContent) { } TEST(NgHttp2AdapterTest, ClientHandles304WithContent) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -748,7 +748,7 @@ TEST(NgHttp2AdapterTest, ClientHandles304WithContent) { } TEST(NgHttp2AdapterTest, ClientHandles304WithContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -803,7 +803,7 @@ TEST(NgHttp2AdapterTest, ClientHandles304WithContentLength) { } TEST(NgHttp2AdapterTest, ClientHandlesTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -879,7 +879,7 @@ TEST(NgHttp2AdapterTest, ClientHandlesTrailers) { } TEST(NgHttp2AdapterTest, ClientSendsTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -927,7 +927,7 @@ TEST(NgHttp2AdapterTest, ClientSendsTrailers) { } TEST(NgHttp2AdapterTest, ClientHandlesMetadata) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1007,7 +1007,7 @@ TEST(NgHttp2AdapterTest, ClientHandlesMetadata) { } TEST(NgHttp2AdapterTest, ClientHandlesMetadataWithEmptyPayload) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1068,7 +1068,7 @@ TEST(NgHttp2AdapterTest, ClientHandlesMetadataWithEmptyPayload) { } TEST(NgHttp2AdapterTest, ClientHandlesMetadataWithError) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1143,7 +1143,7 @@ TEST(NgHttp2AdapterTest, ClientHandlesMetadataWithError) { } TEST(NgHttp2AdapterTest, ClientHandlesHpackHeaderTableSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1188,7 +1188,7 @@ TEST(NgHttp2AdapterTest, ClientHandlesHpackHeaderTableSetting) { } TEST(NgHttp2AdapterTest, ClientHandlesInvalidTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1274,7 +1274,7 @@ TEST(NgHttp2AdapterTest, ClientHandlesInvalidTrailers) { } TEST(NgHttp2AdapterTest, ClientRstStreamWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1349,7 +1349,7 @@ TEST(NgHttp2AdapterTest, ClientRstStreamWhileHandlingHeaders) { } TEST(NgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1417,7 +1417,7 @@ TEST(NgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeaders) { } TEST(NgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeadersOnly) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1484,7 +1484,7 @@ TEST(NgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeadersOnly) { } TEST(NgHttp2AdapterTest, ClientRejectsHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1547,7 +1547,7 @@ TEST(NgHttp2AdapterTest, ClientRejectsHeaders) { } TEST(NgHttp2AdapterTest, ClientStartsShutdown) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -1563,7 +1563,7 @@ TEST(NgHttp2AdapterTest, ClientStartsShutdown) { } TEST(NgHttp2AdapterTest, ClientReceivesGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1644,7 +1644,7 @@ TEST(NgHttp2AdapterTest, ClientReceivesGoAway) { } TEST(NgHttp2AdapterTest, ClientReceivesMultipleGoAways) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1721,7 +1721,7 @@ TEST(NgHttp2AdapterTest, ClientReceivesMultipleGoAways) { } TEST(NgHttp2AdapterTest, ClientReceivesMultipleGoAwaysWithIncreasingStreamId) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1787,7 +1787,7 @@ TEST(NgHttp2AdapterTest, ClientReceivesMultipleGoAwaysWithIncreasingStreamId) { } TEST(NgHttp2AdapterTest, ClientReceivesGoAwayWithPendingStreams) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); int result = adapter->Send(); @@ -1900,7 +1900,7 @@ TEST(NgHttp2AdapterTest, ClientReceivesGoAwayWithPendingStreams) { } TEST(NgHttp2AdapterTest, ClientFailsOnGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -1971,7 +1971,7 @@ TEST(NgHttp2AdapterTest, ClientFailsOnGoAway) { } TEST(NgHttp2AdapterTest, ClientRejects101Response) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -2043,7 +2043,7 @@ TEST(NgHttp2AdapterTest, ClientRejects101Response) { } TEST(NgHttp2AdapterTest, ClientSubmitRequest) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); int result = adapter->Send(); EXPECT_EQ(0, result); @@ -2149,7 +2149,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitRequest) { // This is really a test of the MakeZeroCopyDataFrameSource adapter, but I // wasn't sure where else to put it. TEST(NgHttp2AdapterTest, ClientSubmitRequestWithDataProvider) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); int result = adapter->Send(); EXPECT_EQ(0, result); @@ -2216,7 +2216,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitRequestWithDataProvider) { // This test verifies how nghttp2 behaves when a data source becomes // read-blocked. TEST(NgHttp2AdapterTest, ClientSubmitRequestWithDataProviderAndReadBlock) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const absl::string_view kBody = "This is an example request body."; @@ -2274,7 +2274,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitRequestWithDataProviderAndReadBlock) { // This test verifies how nghttp2 behaves when a data source is read block, then // ends with an empty DATA frame. TEST(NgHttp2AdapterTest, ClientSubmitRequestEmptyDataWithFin) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const absl::string_view kEmptyBody = ""; @@ -2332,7 +2332,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitRequestEmptyDataWithFin) { // This test verifies how nghttp2 behaves when a connection becomes // write-blocked. TEST(NgHttp2AdapterTest, ClientSubmitRequestWithDataProviderAndWriteBlock) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const absl::string_view kBody = "This is an example request body."; @@ -2380,7 +2380,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitRequestWithDataProviderAndWriteBlock) { } TEST(NgHttp2AdapterTest, ClientReceivesDataOnClosedStream) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); int result = adapter->Send(); EXPECT_EQ(0, result); @@ -2466,7 +2466,7 @@ TEST(NgHttp2AdapterTest, ClientReceivesDataOnClosedStream) { } TEST(NgHttp2AdapterTest, ClientQueuesRequests) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -2548,7 +2548,7 @@ TEST(NgHttp2AdapterTest, ClientQueuesRequests) { } TEST(NgHttp2AdapterTest, ClientAcceptsHeadResponseWithContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const std::vector
    headers = ToHeaders({{":method", "HEAD"}, @@ -2592,7 +2592,7 @@ TEST(NgHttp2AdapterTest, ClientAcceptsHeadResponseWithContentLength) { } TEST(NgHttp2AdapterTest, SubmitMetadata) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); auto source = std::make_unique(ToHeaderBlock(ToHeaders( @@ -2615,7 +2615,7 @@ TEST(NgHttp2AdapterTest, SubmitMetadata) { } TEST(NgHttp2AdapterTest, SubmitMetadataMultipleFrames) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const auto kLargeValue = std::string(63 * 1024, 'a'); @@ -2649,7 +2649,7 @@ TEST(NgHttp2AdapterTest, SubmitMetadataMultipleFrames) { } TEST(NgHttp2AdapterTest, SubmitConnectionMetadata) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); auto source = std::make_unique(ToHeaderBlock(ToHeaders( @@ -2672,7 +2672,7 @@ TEST(NgHttp2AdapterTest, SubmitConnectionMetadata) { } TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithGoaway) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); adapter->SubmitSettings({}); @@ -2733,7 +2733,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithGoaway) { } TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithFailureBefore) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); adapter->SubmitSettings({}); @@ -2785,7 +2785,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithFailureBefore) { } TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithFailureDuring) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); adapter->SubmitSettings({}); @@ -2840,7 +2840,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithFailureDuring) { } TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithFailureSending) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); adapter->SubmitSettings({}); @@ -2893,7 +2893,7 @@ TEST(NgHttp2AdapterTest, ClientSubmitMetadataWithFailureSending) { } TEST(NgHttp2AdapterTest, ClientObeysMaxConcurrentStreams) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); int result = adapter->Send(); EXPECT_EQ(0, result); @@ -3010,7 +3010,7 @@ TEST(NgHttp2AdapterTest, ClientObeysMaxConcurrentStreams) { } TEST(NgHttp2AdapterTest, ClientReceivesInitialWindowSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const std::string initial_frames = @@ -3072,7 +3072,7 @@ TEST(NgHttp2AdapterTest, ClientReceivesInitialWindowSetting) { } TEST(NgHttp2AdapterTest, ClientReceivesInitialWindowSettingAfterStreamStart) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const std::string initial_frames = @@ -3153,7 +3153,7 @@ TEST(NgHttp2AdapterTest, ClientReceivesInitialWindowSettingAfterStreamStart) { } TEST(NgHttp2AdapterTest, InvalidInitialWindowSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const uint32_t kTooLargeInitialWindow = 1u << 31; @@ -3190,7 +3190,7 @@ TEST(NgHttp2AdapterTest, InvalidInitialWindowSetting) { } TEST(NgHttp2AdapterTest, InitialWindowSettingCausesOverflow) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); testing::InSequence s; @@ -3267,7 +3267,7 @@ TEST(NgHttp2AdapterTest, InitialWindowSettingCausesOverflow) { } TEST(NgHttp2AdapterTest, ClientForbidsPushPromise) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); adapter->SubmitSettings({{ENABLE_PUSH, 0}}); @@ -3340,7 +3340,7 @@ TEST(NgHttp2AdapterTest, ClientForbidsPushPromise) { } TEST(NgHttp2AdapterTest, ClientForbidsPushStream) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); adapter->SubmitSettings({{ENABLE_PUSH, 0}}); @@ -3413,7 +3413,7 @@ TEST(NgHttp2AdapterTest, ClientForbidsPushStream) { } TEST(NgHttp2AdapterTest, FailureSendingConnectionPreface) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); visitor.set_has_write_error(); @@ -3424,7 +3424,7 @@ TEST(NgHttp2AdapterTest, FailureSendingConnectionPreface) { } TEST(NgHttp2AdapterTest, MaxFrameSizeSettingNotAppliedBeforeAck) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const uint32_t large_frame_size = kDefaultFramePayloadSizeLimit + 42; @@ -3491,7 +3491,7 @@ TEST(NgHttp2AdapterTest, MaxFrameSizeSettingNotAppliedBeforeAck) { } TEST(NgHttp2AdapterTest, MaxFrameSizeSettingAppliedAfterAck) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateClientAdapter(visitor); const uint32_t large_frame_size = kDefaultFramePayloadSizeLimit + 42; @@ -3561,7 +3561,7 @@ TEST(NgHttp2AdapterTest, MaxFrameSizeSettingAppliedAfterAck) { } TEST(NgHttp2AdapterTest, WindowUpdateRaisesFlowControlWindowLimit) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string data_chunk(kDefaultFramePayloadSizeLimit, 'a'); @@ -3635,7 +3635,7 @@ TEST(NgHttp2AdapterTest, WindowUpdateRaisesFlowControlWindowLimit) { } TEST(NgHttp2AdapterTest, ConnectionErrorOnControlFrameSent) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = @@ -3677,7 +3677,7 @@ TEST(NgHttp2AdapterTest, ConnectionErrorOnControlFrameSent) { } TEST(NgHttp2AdapterTest, ConnectionErrorOnDataFrameSent) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -3756,7 +3756,7 @@ TEST(NgHttp2AdapterTest, ServerConstruction) { } TEST(NgHttp2AdapterTest, ServerHandlesFrames) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_EQ(0, adapter->GetHighestReceivedStreamId()); @@ -3870,7 +3870,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesFrames) { } TEST(NgHttp2AdapterTest, ServerVisitorRejectsHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -3928,7 +3928,7 @@ TEST(NgHttp2AdapterTest, ServerVisitorRejectsHeaders) { } TEST(OgHttp2AdapterTest, HeaderValuesWithObsTextAllowed) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -3963,7 +3963,7 @@ TEST(OgHttp2AdapterTest, HeaderValuesWithObsTextAllowed) { } TEST(NgHttp2AdapterTest, ServerHandlesDataWithPadding) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4020,7 +4020,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesDataWithPadding) { } TEST(NgHttp2AdapterTest, ServerHandlesHostHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4088,7 +4088,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesHostHeader) { // Tests the case where the response body is in the progress of being sent while // trailers are queued. TEST(NgHttp2AdapterTest, ServerSubmitsTrailersWhileDataDeferred) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4188,7 +4188,7 @@ TEST(NgHttp2AdapterTest, ServerSubmitsTrailersWhileDataDeferred) { } TEST(NgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStream) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = @@ -4256,7 +4256,7 @@ TEST(NgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStream) { } TEST(NgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStreamAndDeferral) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = @@ -4338,7 +4338,7 @@ TEST(NgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStreamAndDeferral) { } TEST(NgHttp2AdapterTest, ClientDisobeysConnectionFlowControl) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4399,7 +4399,7 @@ TEST(NgHttp2AdapterTest, ClientDisobeysConnectionFlowControl) { } TEST(NgHttp2AdapterTest, ClientDisobeysConnectionFlowControlWithOneDataFrame) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); // Allow the client to send a DATA frame that exceeds the connection flow @@ -4478,7 +4478,7 @@ TEST(NgHttp2AdapterTest, ClientDisobeysConnectionFlowControlWithOneDataFrame) { } TEST(NgHttp2AdapterTest, ClientDisobeysConnectionFlowControlAcrossReads) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); // Allow the client to send a DATA frame that exceeds the connection flow @@ -4574,7 +4574,7 @@ TEST(NgHttp2AdapterTest, ClientDisobeysConnectionFlowControlAcrossReads) { } TEST(NgHttp2AdapterTest, ClientDisobeysStreamFlowControl) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4654,7 +4654,7 @@ TEST(NgHttp2AdapterTest, ClientDisobeysStreamFlowControl) { } TEST(NgHttp2AdapterTest, ServerErrorWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4713,7 +4713,7 @@ TEST(NgHttp2AdapterTest, ServerErrorWhileHandlingHeaders) { } TEST(NgHttp2AdapterTest, ServerErrorWhileHandlingHeadersDropsFrames) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4808,7 +4808,7 @@ TEST(NgHttp2AdapterTest, ServerErrorWhileHandlingHeadersDropsFrames) { } TEST(NgHttp2AdapterTest, ServerConnectionErrorWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4867,7 +4867,7 @@ TEST(NgHttp2AdapterTest, ServerConnectionErrorWhileHandlingHeaders) { } TEST(NgHttp2AdapterTest, ServerErrorAfterHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4917,7 +4917,7 @@ TEST(NgHttp2AdapterTest, ServerErrorAfterHandlingHeaders) { // Exercises the case when a visitor chooses to reject a frame based solely on // the frame header, which is a fatal error for the connection. TEST(NgHttp2AdapterTest, ServerRejectsFrameHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -4960,7 +4960,7 @@ TEST(NgHttp2AdapterTest, ServerRejectsFrameHeader) { } TEST(NgHttp2AdapterTest, ServerRejectsBeginningOfData) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -5016,7 +5016,7 @@ TEST(NgHttp2AdapterTest, ServerRejectsBeginningOfData) { } TEST(NgHttp2AdapterTest, ServerRejectsStreamData) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -5072,7 +5072,7 @@ TEST(NgHttp2AdapterTest, ServerRejectsStreamData) { } TEST(NgHttp2AdapterTest, ServerReceivesTooLargeHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); // nghttp2 will accept a maximum of 64kB of huffman encoded data per header @@ -5123,7 +5123,7 @@ TEST(NgHttp2AdapterTest, ServerReceivesTooLargeHeader) { } TEST(NgHttp2AdapterTest, ServerReceivesInvalidAuthority) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -5174,7 +5174,7 @@ TEST(NgHttp2AdapterTest, ServerReceivesInvalidAuthority) { } TEST(NgHttpAdapterTest, ServerReceivesGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -5227,7 +5227,7 @@ TEST(NgHttpAdapterTest, ServerReceivesGoAway) { } TEST(NgHttp2AdapterTest, ServerSubmitResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5322,7 +5322,7 @@ TEST(NgHttp2AdapterTest, ServerSubmitResponse) { } TEST(NgHttp2AdapterTest, ServerSubmitResponseWithResetFromClient) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5399,7 +5399,7 @@ TEST(NgHttp2AdapterTest, ServerSubmitResponseWithResetFromClient) { // Should also test: client attempts shutdown, server attempts shutdown after an // explicit GOAWAY. TEST(NgHttp2AdapterTest, ServerSendsShutdown) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -5445,7 +5445,7 @@ TEST(NgHttp2AdapterTest, ServerSendsShutdown) { } TEST(NgHttp2AdapterTest, ServerSendsTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5531,7 +5531,7 @@ TEST(NgHttp2AdapterTest, ServerSendsTrailers) { } TEST(NgHttp2AdapterTest, ClientSendsContinuation) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5567,7 +5567,7 @@ TEST(NgHttp2AdapterTest, ClientSendsContinuation) { } TEST(NgHttp2AdapterTest, ClientSendsMetadataWithContinuation) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5628,7 +5628,7 @@ TEST(NgHttp2AdapterTest, ClientSendsMetadataWithContinuation) { } TEST(NgHttp2AdapterTest, RepeatedHeaderNames) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5690,7 +5690,7 @@ TEST(NgHttp2AdapterTest, RepeatedHeaderNames) { } TEST(NgHttp2AdapterTest, ServerRespondsToRequestWithTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5772,7 +5772,7 @@ TEST(NgHttp2AdapterTest, ServerRespondsToRequestWithTrailers) { } TEST(NgHttp2AdapterTest, ServerSubmitsResponseWithDataSourceError) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5836,7 +5836,7 @@ TEST(NgHttp2AdapterTest, ServerSubmitsResponseWithDataSourceError) { } TEST(NgHttp2AdapterTest, CompleteRequestWithServerResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5889,7 +5889,7 @@ TEST(NgHttp2AdapterTest, CompleteRequestWithServerResponse) { } TEST(NgHttp2AdapterTest, IncompleteRequestWithServerResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -5936,7 +5936,7 @@ TEST(NgHttp2AdapterTest, IncompleteRequestWithServerResponse) { } TEST(NgHttp2AdapterTest, ServerHandlesMultipleContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -6002,7 +6002,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesMultipleContentLength) { } TEST(NgHttp2AdapterTest, ServerSendsInvalidTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -6078,7 +6078,7 @@ TEST(NgHttp2AdapterTest, ServerSendsInvalidTrailers) { } TEST(NgHttp2AdapterTest, ServerDropsNewStreamBelowWatermark) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_EQ(0, adapter->GetHighestReceivedStreamId()); @@ -6142,7 +6142,7 @@ TEST(NgHttp2AdapterTest, ServerDropsNewStreamBelowWatermark) { TEST(NgHttp2AdapterInteractionTest, ClientServerInteractionRepeatedHeaderNames) { - DataSavingVisitor client_visitor; + TestVisitor client_visitor; auto client_adapter = NgHttp2Adapter::CreateClientAdapter(client_visitor); client_adapter->SubmitSettings({}); @@ -6166,7 +6166,7 @@ TEST(NgHttp2AdapterInteractionTest, int send_result = client_adapter->Send(); EXPECT_EQ(0, send_result); - DataSavingVisitor server_visitor; + TestVisitor server_visitor; auto server_adapter = NgHttp2Adapter::CreateServerAdapter(server_visitor); testing::InSequence s; @@ -6195,7 +6195,7 @@ TEST(NgHttp2AdapterInteractionTest, } TEST(NgHttp2AdapterInteractionTest, ClientServerInteractionWithCookies) { - DataSavingVisitor client_visitor; + TestVisitor client_visitor; auto client_adapter = NgHttp2Adapter::CreateClientAdapter(client_visitor); client_adapter->SubmitSettings({}); @@ -6223,7 +6223,7 @@ TEST(NgHttp2AdapterInteractionTest, ClientServerInteractionWithCookies) { int send_result = client_adapter->Send(); EXPECT_EQ(0, send_result); - DataSavingVisitor server_visitor; + TestVisitor server_visitor; auto server_adapter = NgHttp2Adapter::CreateServerAdapter(server_visitor); testing::InSequence s; @@ -6253,7 +6253,7 @@ TEST(NgHttp2AdapterInteractionTest, ClientServerInteractionWithCookies) { } TEST(NgHttp2AdapterTest, ServerForbidsWindowUpdateOnIdleStream) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_EQ(0, adapter->GetHighestReceivedStreamId()); @@ -6291,7 +6291,7 @@ TEST(NgHttp2AdapterTest, ServerForbidsWindowUpdateOnIdleStream) { } TEST(NgHttp2AdapterTest, ServerForbidsDataOnIdleStream) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_EQ(0, adapter->GetHighestReceivedStreamId()); @@ -6330,7 +6330,7 @@ TEST(NgHttp2AdapterTest, ServerForbidsDataOnIdleStream) { } TEST(NgHttp2AdapterTest, ServerForbidsRstStreamOnIdleStream) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_EQ(0, adapter->GetHighestReceivedStreamId()); @@ -6371,7 +6371,7 @@ TEST(NgHttp2AdapterTest, ServerForbidsRstStreamOnIdleStream) { } TEST(NgHttp2AdapterTest, ServerForbidsNewStreamAboveStreamLimit) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); adapter->SubmitSettings({{MAX_CONCURRENT_STREAMS, 1}}); @@ -6450,7 +6450,7 @@ TEST(NgHttp2AdapterTest, ServerForbidsNewStreamAboveStreamLimit) { } TEST(NgHttp2AdapterTest, ServerRstStreamsNewStreamAboveStreamLimitBeforeAck) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); adapter->SubmitSettings({{MAX_CONCURRENT_STREAMS, 1}}); @@ -6526,7 +6526,7 @@ TEST(NgHttp2AdapterTest, ServerRstStreamsNewStreamAboveStreamLimitBeforeAck) { } TEST(NgHttp2AdapterTest, AutomaticSettingsAndPingAcks) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence().ClientPreface().Ping(42).Serialize(); @@ -6560,7 +6560,7 @@ TEST(NgHttp2AdapterTest, AutomaticSettingsAndPingAcks) { } TEST(NgHttp2AdapterTest, AutomaticPingAcksDisabled) { - DataSavingVisitor visitor; + TestVisitor visitor; nghttp2_option* options; nghttp2_option_new(&options); nghttp2_option_set_no_auto_ping_ack(options, 1); @@ -6596,7 +6596,7 @@ TEST(NgHttp2AdapterTest, AutomaticPingAcksDisabled) { } TEST(NgHttp2AdapterTest, InvalidMaxFrameSizeSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = @@ -6625,7 +6625,7 @@ TEST(NgHttp2AdapterTest, InvalidMaxFrameSizeSetting) { } TEST(OgHttp2AdapterTest, InvalidPushSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = @@ -6652,7 +6652,7 @@ TEST(OgHttp2AdapterTest, InvalidPushSetting) { } TEST(NgHttp2AdapterTest, InvalidConnectProtocolSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = TestFrameSequence() @@ -6709,7 +6709,7 @@ TEST(NgHttp2AdapterTest, InvalidConnectProtocolSetting) { } TEST(NgHttp2AdapterTest, ServerForbidsProtocolPseudoheaderBeforeAck) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string initial_frames = @@ -6801,7 +6801,7 @@ TEST(NgHttp2AdapterTest, ServerForbidsProtocolPseudoheaderBeforeAck) { } TEST(NgHttp2AdapterTest, ServerAllowsProtocolPseudoheaderAfterAck) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); adapter->SubmitSettings({{ENABLE_CONNECT_PROTOCOL, 1}}); @@ -6857,7 +6857,7 @@ TEST(NgHttp2AdapterTest, ServerAllowsProtocolPseudoheaderAfterAck) { } TEST(NgHttp2AdapterTest, SkipsSendingFramesForRejectedStream) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string initial_frames = @@ -6925,7 +6925,7 @@ TEST(NgHttp2AdapterTest, SkipsSendingFramesForRejectedStream) { } TEST(NgHttp2AdapterTest, ServerQueuesMetadataWithStreamReset) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string initial_frames = @@ -7003,7 +7003,7 @@ TEST(NgHttp2AdapterTest, ServerQueuesMetadataWithStreamReset) { } TEST(NgHttp2AdapterTest, ServerStartsShutdown) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -7020,7 +7020,7 @@ TEST(NgHttp2AdapterTest, ServerStartsShutdown) { } TEST(NgHttp2AdapterTest, ServerStartsShutdownAfterGoaway) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); EXPECT_FALSE(adapter->want_write()); @@ -7044,7 +7044,7 @@ TEST(NgHttp2AdapterTest, ServerStartsShutdownAfterGoaway) { // Verifies that a connection-level processing error results in repeatedly // returning a positive value for ProcessBytes() to mark all data as consumed. TEST(NgHttp2AdapterTest, ConnectionErrorWithBlackholeSinkingData) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = @@ -7071,7 +7071,7 @@ TEST(NgHttp2AdapterTest, ConnectionErrorWithBlackholeSinkingData) { } TEST(NgHttp2AdapterTest, ServerDoesNotSendFramesAfterImmediateGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); // Submit a custom initial SETTINGS frame with one setting. @@ -7164,7 +7164,7 @@ TEST(NgHttp2AdapterTest, ServerDoesNotSendFramesAfterImmediateGoAway) { } TEST(NgHttp2AdapterTest, ServerHandlesContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); testing::InSequence s; @@ -7233,7 +7233,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesContentLength) { } TEST(NgHttp2AdapterTest, ServerHandlesContentLengthMismatch) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); testing::InSequence s; @@ -7359,7 +7359,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesContentLengthMismatch) { } TEST(NgHttp2AdapterTest, ServerHandlesAsteriskPathForOptions) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); testing::InSequence s; @@ -7398,7 +7398,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesAsteriskPathForOptions) { } TEST(NgHttp2AdapterTest, ServerHandlesInvalidPath) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); testing::InSequence s; @@ -7487,7 +7487,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesInvalidPath) { } TEST(NgHttp2AdapterTest, ServerHandlesTeHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); testing::InSequence s; @@ -7553,7 +7553,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesTeHeader) { } TEST(NgHttp2AdapterTest, ServerHandlesConnectionSpecificHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); testing::InSequence s; @@ -7697,7 +7697,7 @@ TEST(NgHttp2AdapterTest, ServerHandlesConnectionSpecificHeaders) { } TEST(OgHttp2AdapterTest, ServerConsumesDataWithPadding) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); TestFrameSequence seq = std::move(TestFrameSequence().ClientPreface().Headers( @@ -7753,7 +7753,7 @@ TEST(OgHttp2AdapterTest, ServerConsumesDataWithPadding) { } TEST(NgHttp2AdapterTest, NegativeFlowControlStreamResumption) { - DataSavingVisitor visitor; + TestVisitor visitor; auto adapter = NgHttp2Adapter::CreateServerAdapter(visitor); const std::string frames = diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_data_provider_test.cc b/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_data_provider_test.cc index 3d90855c92..981403258e 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_data_provider_test.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_data_provider_test.cc @@ -13,7 +13,7 @@ const size_t kFrameHeaderSize = 9; // correctly with nghttp2-style callbacks when the amount of data read is less // than what the source provides. TEST(DataProviderTest, ReadLessThanSourceProvides) { - DataSavingVisitor visitor; + TestVisitor visitor; TestDataFrameSource source(visitor, true); source.AppendPayload("Example payload"); source.EndData(); @@ -42,7 +42,7 @@ TEST(DataProviderTest, ReadLessThanSourceProvides) { // correctly with nghttp2-style callbacks when the amount of data read is more // than what the source provides. TEST(DataProviderTest, ReadMoreThanSourceProvides) { - DataSavingVisitor visitor; + TestVisitor visitor; const absl::string_view kPayload = "Example payload"; TestDataFrameSource source(visitor, true); source.AppendPayload(kPayload); @@ -71,7 +71,7 @@ TEST(DataProviderTest, ReadMoreThanSourceProvides) { // Verifies that a nghttp2_data_provider derived from a DataFrameSource works // correctly with nghttp2-style callbacks when the source is blocked. TEST(DataProviderTest, ReadFromBlockedSource) { - DataSavingVisitor visitor; + TestVisitor visitor; // Source has no payload, but also no fin, so it's blocked. TestDataFrameSource source(visitor, false); auto provider = MakeDataProvider(&source); @@ -89,7 +89,7 @@ TEST(DataProviderTest, ReadFromBlockedSource) { // correctly with nghttp2-style callbacks when the source provides only fin and // no data. TEST(DataProviderTest, ReadFromZeroLengthSource) { - DataSavingVisitor visitor; + TestVisitor visitor; // Empty payload and fin=true indicates the source is done. TestDataFrameSource source(visitor, true); source.EndData(); diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_session_test.cc b/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_session_test.cc index f11c490569..ab3f3378da 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_session_test.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/nghttp2_session_test.cc @@ -41,7 +41,7 @@ class NgHttp2SessionTest : public quiche::test::QuicheTest { return callbacks; } - DataSavingVisitor visitor_; + TestVisitor visitor_; nghttp2_option* options_ = nullptr; }; diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter.cc b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter.cc index 907026ed01..e232307a9e 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter.cc @@ -135,7 +135,8 @@ int32_t OgHttp2Adapter::SubmitRequest( std::unique_ptr data_source, bool end_stream, void* user_data) { QUICHE_DCHECK_EQ(end_stream, data_source == nullptr); - return session_->SubmitRequest(headers, std::move(data_source), user_data); + return session_->SubmitRequest(headers, std::move(data_source), end_stream, + user_data); } int OgHttp2Adapter::SubmitResponse(Http2StreamId stream_id, @@ -143,7 +144,8 @@ int OgHttp2Adapter::SubmitResponse(Http2StreamId stream_id, std::unique_ptr data_source, bool end_stream) { QUICHE_DCHECK_EQ(end_stream, data_source == nullptr); - return session_->SubmitResponse(stream_id, headers, std::move(data_source)); + return session_->SubmitResponse(stream_id, headers, std::move(data_source), + end_stream); } int OgHttp2Adapter::SubmitTrailer(Http2StreamId stream_id, diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_metadata_test.cc b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_metadata_test.cc index 2a37ffcc56..6928bcd6b8 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_metadata_test.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_metadata_test.cc @@ -40,7 +40,7 @@ enum FrameType { }; TEST(OgHttp2AdapterTest, ClientHandlesMetadata) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -127,7 +127,7 @@ TEST(OgHttp2AdapterTest, ClientHandlesMetadata) { } TEST(OgHttp2AdapterTest, ClientHandlesMetadataWithEmptyPayload) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -195,7 +195,7 @@ TEST(OgHttp2AdapterTest, ClientHandlesMetadataWithEmptyPayload) { } TEST(OgHttp2AdapterTest, ClientHandlesMetadataWithPayloadError) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -273,7 +273,7 @@ TEST(OgHttp2AdapterTest, ClientHandlesMetadataWithPayloadError) { } TEST(OgHttp2AdapterTest, ClientHandlesMetadataWithCompletionError) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -352,7 +352,7 @@ TEST(OgHttp2AdapterTest, ClientHandlesMetadataWithCompletionError) { } TEST(OgHttp2AdapterTest, ClientSendsMetadataAfterFlowControlBlock) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -398,7 +398,7 @@ TEST(OgHttp2AdapterTest, ClientSendsMetadataAfterFlowControlBlock) { } TEST(OgHttp2AdapterTest, ClientSendsMetadataWithContinuation) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -461,7 +461,7 @@ TEST(OgHttp2AdapterTest, ClientSendsMetadataWithContinuation) { } TEST(OgHttp2AdapterTest, SubmitMetadata) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -485,7 +485,7 @@ TEST(OgHttp2AdapterTest, SubmitMetadata) { } TEST(OgHttp2AdapterTest, SubmitMetadataMultipleFrames) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -521,7 +521,7 @@ TEST(OgHttp2AdapterTest, SubmitMetadataMultipleFrames) { } TEST(OgHttp2AdapterTest, SubmitConnectionMetadata) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -545,7 +545,7 @@ TEST(OgHttp2AdapterTest, SubmitConnectionMetadata) { } TEST(OgHttp2AdapterTest, ServerQueuesMetadataThenTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_test.cc b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_test.cc index 6ce1329a08..05d7f6de0f 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_test.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_adapter_test.cc @@ -40,7 +40,7 @@ enum FrameType { }; TEST(OgHttp2AdapterTest, IsServerSession) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -48,7 +48,7 @@ TEST(OgHttp2AdapterTest, IsServerSession) { } TEST(OgHttp2AdapterTest, ProcessBytes) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -64,7 +64,7 @@ TEST(OgHttp2AdapterTest, ProcessBytes) { } TEST(OgHttp2AdapterTest, HeaderValuesWithObsTextAllowedByDefault) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; ASSERT_TRUE(options.allow_obs_text); @@ -102,7 +102,7 @@ TEST(OgHttp2AdapterTest, HeaderValuesWithObsTextAllowedByDefault) { } TEST(OgHttp2AdapterTest, HeaderValuesWithObsTextDisallowed) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.allow_obs_text = false; options.perspective = Perspective::kServer; @@ -140,7 +140,7 @@ TEST(OgHttp2AdapterTest, HeaderValuesWithObsTextDisallowed) { } TEST(OgHttp2AdapterTest, RequestPathWithSpaceOrTab) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.allow_obs_text = false; options.perspective = Perspective::kServer; @@ -194,7 +194,7 @@ TEST(OgHttp2AdapterTest, RequestPathWithSpaceOrTab) { } TEST(OgHttp2AdapterTest, RequestPathWithSpaceOrTabNoPathValidation) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.allow_obs_text = false; options.perspective = Perspective::kServer; @@ -247,14 +247,14 @@ TEST(OgHttp2AdapterTest, RequestPathWithSpaceOrTabNoPathValidation) { } TEST(OgHttp2AdapterTest, InitialSettingsNoExtendedConnect) { - DataSavingVisitor client_visitor; + TestVisitor client_visitor; OgHttp2Adapter::Options client_options; client_options.perspective = Perspective::kClient; client_options.max_header_list_bytes = 42; client_options.allow_extended_connect = false; auto client_adapter = OgHttp2Adapter::Create(client_visitor, client_options); - DataSavingVisitor server_visitor; + TestVisitor server_visitor; OgHttp2Adapter::Options server_options; server_options.perspective = Perspective::kServer; server_options.allow_extended_connect = false; @@ -309,14 +309,14 @@ TEST(OgHttp2AdapterTest, InitialSettingsNoExtendedConnect) { } TEST(OgHttp2AdapterTest, InitialSettings) { - DataSavingVisitor client_visitor; + TestVisitor client_visitor; OgHttp2Adapter::Options client_options; client_options.perspective = Perspective::kClient; client_options.max_header_list_bytes = 42; ASSERT_TRUE(client_options.allow_extended_connect); auto client_adapter = OgHttp2Adapter::Create(client_visitor, client_options); - DataSavingVisitor server_visitor; + TestVisitor server_visitor; OgHttp2Adapter::Options server_options; server_options.perspective = Perspective::kServer; ASSERT_TRUE(server_options.allow_extended_connect); @@ -374,7 +374,7 @@ TEST(OgHttp2AdapterTest, InitialSettings) { } TEST(OgHttp2AdapterTest, AutomaticSettingsAndPingAcks) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -414,7 +414,7 @@ TEST(OgHttp2AdapterTest, AutomaticSettingsAndPingAcks) { } TEST(OgHttp2AdapterTest, AutomaticPingAcksDisabled) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.auto_ping_ack = false; @@ -452,7 +452,7 @@ TEST(OgHttp2AdapterTest, AutomaticPingAcksDisabled) { } TEST(OgHttp2AdapterTest, InvalidMaxFrameSizeSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -488,7 +488,7 @@ TEST(OgHttp2AdapterTest, InvalidMaxFrameSizeSetting) { } TEST(OgHttp2AdapterTest, InvalidPushSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -524,7 +524,7 @@ TEST(OgHttp2AdapterTest, InvalidPushSetting) { } TEST(OgHttp2AdapterTest, InvalidConnectProtocolSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -590,7 +590,7 @@ TEST(OgHttp2AdapterTest, InvalidConnectProtocolSetting) { } TEST(OgHttp2AdapterTest, ClientSetsRemoteMaxStreamOption) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; // Set a lower-than-default initial remote max_concurrent_streams. @@ -677,7 +677,7 @@ TEST(OgHttp2AdapterTest, ClientSetsRemoteMaxStreamOption) { } TEST(OgHttp2AdapterTest, ClientHandles100Headers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -758,7 +758,7 @@ TEST(OgHttp2AdapterTest, ClientHandles100Headers) { } TEST(OgHttp2AdapterTest, QueuingWindowUpdateAffectsWindow) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -796,7 +796,7 @@ TEST(OgHttp2AdapterTest, QueuingWindowUpdateAffectsWindow) { } TEST(OgHttp2AdapterTest, AckOfSettingInitialWindowSizeAffectsWindow) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -888,7 +888,7 @@ TEST(OgHttp2AdapterTest, AckOfSettingInitialWindowSizeAffectsWindow) { } TEST(OgHttp2AdapterTest, ClientRejects100HeadersWithFin) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -958,7 +958,7 @@ TEST(OgHttp2AdapterTest, ClientRejects100HeadersWithFin) { } TEST(OgHttp2AdapterTest, ClientRejects100HeadersWithContent) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1025,7 +1025,7 @@ TEST(OgHttp2AdapterTest, ClientRejects100HeadersWithContent) { } TEST(OgHttp2AdapterTest, ClientRejects100HeadersWithContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1096,7 +1096,7 @@ TEST(OgHttp2AdapterTest, ClientRejects100HeadersWithContentLength) { } TEST(OgHttp2AdapterTest, ClientHandles204WithContent) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1191,7 +1191,7 @@ TEST(OgHttp2AdapterTest, ClientHandles204WithContent) { } TEST(OgHttp2AdapterTest, ClientHandles304WithContent) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1259,7 +1259,7 @@ TEST(OgHttp2AdapterTest, ClientHandles304WithContent) { } TEST(OgHttp2AdapterTest, ClientHandles304WithContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1320,7 +1320,7 @@ TEST(OgHttp2AdapterTest, ClientHandles304WithContentLength) { } TEST(OgHttp2AdapterTest, ClientHandlesTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1403,7 +1403,7 @@ TEST(OgHttp2AdapterTest, ClientHandlesTrailers) { } TEST(OgHttp2AdapterTest, ClientSendsTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1457,7 +1457,7 @@ TEST(OgHttp2AdapterTest, ClientSendsTrailers) { } TEST(OgHttp2AdapterTest, ClientRstStreamWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1539,7 +1539,7 @@ TEST(OgHttp2AdapterTest, ClientRstStreamWhileHandlingHeaders) { } TEST(OgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1615,7 +1615,7 @@ TEST(OgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeaders) { } TEST(OgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeadersOnly) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1690,7 +1690,7 @@ TEST(OgHttp2AdapterTest, ClientConnectionErrorWhileHandlingHeadersOnly) { } TEST(OgHttp2AdapterTest, ClientRejectsHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1762,7 +1762,7 @@ TEST(OgHttp2AdapterTest, ClientRejectsHeaders) { } TEST(OgHttp2AdapterTest, ClientHandlesSmallerHpackHeaderTableSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1813,7 +1813,7 @@ TEST(OgHttp2AdapterTest, ClientHandlesSmallerHpackHeaderTableSetting) { } TEST(OgHttp2AdapterTest, ClientHandlesLargerHpackHeaderTableSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1855,7 +1855,7 @@ TEST(OgHttp2AdapterTest, ClientHandlesLargerHpackHeaderTableSetting) { } TEST(OgHttp2AdapterTest, ClientSendsHpackHeaderTableSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -1997,7 +1997,7 @@ TEST(OgHttp2AdapterTest, ClientSendsHpackHeaderTableSetting) { // invoke OnErrorDebug() with an error message for the invalid header. The // library should also invoke OnInvalidFrame() for the invalid HEADERS frame. TEST(OgHttp2AdapterTest, DISABLED_ClientHandlesInvalidTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2081,7 +2081,7 @@ TEST(OgHttp2AdapterTest, DISABLED_ClientHandlesInvalidTrailers) { } TEST(OgHttp2AdapterTest, ClientStartsShutdown) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2106,7 +2106,7 @@ TEST(OgHttp2AdapterTest, ClientStartsShutdown) { } TEST(OgHttp2AdapterTest, ClientReceivesGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2194,7 +2194,7 @@ TEST(OgHttp2AdapterTest, ClientReceivesGoAway) { } TEST(OgHttp2AdapterTest, ClientReceivesMultipleGoAways) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2279,7 +2279,7 @@ TEST(OgHttp2AdapterTest, ClientReceivesMultipleGoAways) { } TEST(OgHttp2AdapterTest, ClientReceivesMultipleGoAwaysWithIncreasingStreamId) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2351,7 +2351,7 @@ TEST(OgHttp2AdapterTest, ClientReceivesMultipleGoAwaysWithIncreasingStreamId) { } TEST(OgHttp2AdapterTest, ClientReceivesGoAwayWithPendingStreams) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2472,7 +2472,7 @@ TEST(OgHttp2AdapterTest, ClientReceivesGoAwayWithPendingStreams) { } TEST(OgHttp2AdapterTest, ClientFailsOnGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2552,7 +2552,7 @@ TEST(OgHttp2AdapterTest, ClientFailsOnGoAway) { } TEST(OgHttp2AdapterTest, ClientRejects101Response) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2627,7 +2627,7 @@ TEST(OgHttp2AdapterTest, ClientRejects101Response) { } TEST(OgHttp2AdapterTest, ClientObeysMaxConcurrentStreams) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2759,7 +2759,7 @@ TEST(OgHttp2AdapterTest, ClientObeysMaxConcurrentStreams) { } TEST(OgHttp2AdapterTest, ClientReceivesInitialWindowSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2826,7 +2826,7 @@ TEST(OgHttp2AdapterTest, ClientReceivesInitialWindowSetting) { } TEST(OgHttp2AdapterTest, ClientReceivesInitialWindowSettingAfterStreamStart) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2911,7 +2911,7 @@ TEST(OgHttp2AdapterTest, ClientReceivesInitialWindowSettingAfterStreamStart) { } TEST(OgHttp2AdapterTest, InvalidInitialWindowSetting) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -2955,7 +2955,7 @@ TEST(OgHttp2AdapterTest, InvalidInitialWindowSetting) { } TEST(OggHttp2AdapterClientTest, InitialWindowSettingCausesOverflow) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3040,7 +3040,7 @@ TEST(OggHttp2AdapterClientTest, InitialWindowSettingCausesOverflow) { } TEST(OgHttp2AdapterTest, FailureSendingConnectionPreface) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3053,7 +3053,7 @@ TEST(OgHttp2AdapterTest, FailureSendingConnectionPreface) { } TEST(OgHttp2AdapterTest, MaxFrameSizeSettingNotAppliedBeforeAck) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3126,7 +3126,7 @@ TEST(OgHttp2AdapterTest, MaxFrameSizeSettingNotAppliedBeforeAck) { } TEST(OgHttp2AdapterTest, MaxFrameSizeSettingAppliedAfterAck) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3200,7 +3200,7 @@ TEST(OgHttp2AdapterTest, MaxFrameSizeSettingAppliedAfterAck) { } TEST(OgHttp2AdapterTest, ClientForbidsPushPromise) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3277,7 +3277,7 @@ TEST(OgHttp2AdapterTest, ClientForbidsPushPromise) { } TEST(OgHttp2AdapterTest, ClientForbidsPushStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3354,7 +3354,7 @@ TEST(OgHttp2AdapterTest, ClientForbidsPushStream) { } TEST(OgHttp2AdapterTest, ClientReceivesDataOnClosedStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3449,7 +3449,7 @@ TEST(OgHttp2AdapterTest, ClientReceivesDataOnClosedStream) { } TEST(OgHttp2AdapterTest, ClientEncountersFlowControlBlock) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3532,7 +3532,7 @@ TEST(OgHttp2AdapterTest, ClientEncountersFlowControlBlock) { } TEST(OgHttp2AdapterTest, ClientSendsTrailersAfterFlowControlBlock) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3598,7 +3598,7 @@ TEST(OgHttp2AdapterTest, ClientSendsTrailersAfterFlowControlBlock) { } TEST(OgHttp2AdapterTest, ClientQueuesRequests) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3690,7 +3690,7 @@ TEST(OgHttp2AdapterTest, ClientQueuesRequests) { } TEST(OgHttp2AdapterTest, ClientAcceptsHeadResponseWithContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3743,7 +3743,7 @@ TEST(OgHttp2AdapterTest, ClientAcceptsHeadResponseWithContentLength) { } TEST(OgHttp2AdapterTest, GetSendWindowSize) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3753,7 +3753,7 @@ TEST(OgHttp2AdapterTest, GetSendWindowSize) { } TEST(OgHttp2AdapterTest, WindowUpdateZeroDelta) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3814,7 +3814,7 @@ TEST(OgHttp2AdapterTest, WindowUpdateZeroDelta) { } TEST(OgHttp2AdapterTest, WindowUpdateCausesWindowOverflow) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3880,7 +3880,7 @@ TEST(OgHttp2AdapterTest, WindowUpdateCausesWindowOverflow) { } TEST(OgHttp2AdapterTest, WindowUpdateRaisesFlowControlWindowLimit) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3958,7 +3958,7 @@ TEST(OgHttp2AdapterTest, WindowUpdateRaisesFlowControlWindowLimit) { } TEST(OgHttp2AdapterTest, MarkDataConsumedForNonexistentStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -3996,7 +3996,7 @@ TEST(OgHttp2AdapterTest, MarkDataConsumedForNonexistentStream) { } TEST(OgHttp2AdapterTest, TestSerialize) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4042,7 +4042,7 @@ TEST(OgHttp2AdapterTest, TestSerialize) { } TEST(OgHttp2AdapterTest, TestPartialSerialize) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4078,7 +4078,7 @@ TEST(OgHttp2AdapterTest, TestPartialSerialize) { } TEST(OgHttp2AdapterTest, TestStreamInitialWindowSizeUpdates) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4152,7 +4152,7 @@ TEST(OgHttp2AdapterTest, TestStreamInitialWindowSizeUpdates) { } TEST(OgHttp2AdapterTest, ConnectionErrorOnControlFrameSent) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4193,7 +4193,7 @@ TEST(OgHttp2AdapterTest, ConnectionErrorOnControlFrameSent) { } TEST(OgHttp2AdapterTest, ConnectionErrorOnDataFrameSent) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4258,7 +4258,7 @@ TEST(OgHttp2AdapterTest, ConnectionErrorOnDataFrameSent) { } TEST(OgHttp2AdapterTest, ClientSendsContinuation) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4296,7 +4296,7 @@ TEST(OgHttp2AdapterTest, ClientSendsContinuation) { } TEST(OgHttp2AdapterTest, RepeatedHeaderNames) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4362,7 +4362,7 @@ TEST(OgHttp2AdapterTest, RepeatedHeaderNames) { } TEST(OgHttp2AdapterTest, ServerRespondsToRequestWithTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4449,7 +4449,7 @@ TEST(OgHttp2AdapterTest, ServerRespondsToRequestWithTrailers) { } TEST(OgHttp2AdapterTest, ServerReceivesMoreHeaderBytesThanConfigured) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.max_header_list_bytes = 42; @@ -4503,7 +4503,7 @@ TEST(OgHttp2AdapterTest, ServerReceivesMoreHeaderBytesThanConfigured) { } TEST(OgHttp2AdapterTest, ServerVisitorRejectsHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4566,7 +4566,7 @@ TEST(OgHttp2AdapterTest, ServerVisitorRejectsHeaders) { } TEST(OgHttp2AdapterTest, ServerSubmitsResponseWithDataSourceError) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4634,7 +4634,7 @@ TEST(OgHttp2AdapterTest, ServerSubmitsResponseWithDataSourceError) { } TEST(OgHttp2AdapterTest, CompleteRequestWithServerResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4694,7 +4694,7 @@ TEST(OgHttp2AdapterTest, CompleteRequestWithServerResponse) { } TEST(OgHttp2AdapterTest, IncompleteRequestWithServerResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4748,7 +4748,7 @@ TEST(OgHttp2AdapterTest, IncompleteRequestWithServerResponse) { } TEST(OgHttp2AdapterTest, IncompleteRequestWithServerResponseRstStreamEnabled) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.rst_stream_no_error_when_incomplete = true; @@ -4806,7 +4806,7 @@ TEST(OgHttp2AdapterTest, IncompleteRequestWithServerResponseRstStreamEnabled) { } TEST(OgHttp2AdapterTest, ServerHandlesMultipleContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4863,7 +4863,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesMultipleContentLength) { } TEST(OgHttp2AdapterTest, ServerSendsInvalidTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -4945,7 +4945,7 @@ TEST(OgHttp2AdapterTest, ServerSendsInvalidTrailers) { } TEST(OgHttp2AdapterTest, ServerHandlesDataWithPadding) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5007,7 +5007,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesDataWithPadding) { } TEST(OgHttp2AdapterTest, ServerHandlesHostHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5083,7 +5083,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesHostHeader) { } TEST(OgHttp2AdapterTest, ServerHandlesHostHeaderWithLaxValidation) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.allow_different_host_and_authority = true; @@ -5158,7 +5158,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesHostHeaderWithLaxValidation) { // Tests the case where the response body is in the progress of being sent while // trailers are queued. TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWhileDataDeferred) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; for (const bool add_more_body_data : {true, false}) { @@ -5257,7 +5257,7 @@ TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWhileDataDeferred) { // control while the stream is writing. Regression test for // https://github.com/envoyproxy/envoy/issues/31710 TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWithFlowControlBlockage) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5374,7 +5374,7 @@ TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWithFlowControlBlockage) { } TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5444,7 +5444,7 @@ TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStream) { } TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStreamAndDeferral) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5528,7 +5528,7 @@ TEST(OgHttp2AdapterTest, ServerSubmitsTrailersWithDataEndStreamAndDeferral) { } TEST(OgHttp2AdapterTest, ClientDisobeysConnectionFlowControl) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5593,7 +5593,7 @@ TEST(OgHttp2AdapterTest, ClientDisobeysConnectionFlowControl) { } TEST(OgHttp2AdapterTest, ClientDisobeysConnectionFlowControlWithOneDataFrame) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5674,7 +5674,7 @@ TEST(OgHttp2AdapterTest, ClientDisobeysConnectionFlowControlWithOneDataFrame) { } TEST(OgHttp2AdapterTest, ClientDisobeysConnectionFlowControlAcrossReads) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5757,7 +5757,7 @@ TEST(OgHttp2AdapterTest, ClientDisobeysConnectionFlowControlAcrossReads) { } TEST(OgHttp2AdapterTest, ClientDisobeysStreamFlowControl) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5840,7 +5840,7 @@ TEST(OgHttp2AdapterTest, ClientDisobeysStreamFlowControl) { } TEST(OgHttp2AdapterTest, ServerErrorWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5902,7 +5902,7 @@ TEST(OgHttp2AdapterTest, ServerErrorWhileHandlingHeaders) { } TEST(OgHttp2AdapterTest, ServerErrorWhileHandlingHeadersDropsFrames) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -5991,7 +5991,7 @@ TEST(OgHttp2AdapterTest, ServerErrorWhileHandlingHeadersDropsFrames) { } TEST(OgHttp2AdapterTest, ServerConnectionErrorWhileHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6054,7 +6054,7 @@ TEST(OgHttp2AdapterTest, ServerConnectionErrorWhileHandlingHeaders) { } TEST(OgHttp2AdapterTest, ServerErrorAfterHandlingHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6110,7 +6110,7 @@ TEST(OgHttp2AdapterTest, ServerErrorAfterHandlingHeaders) { // Exercises the case when a visitor chooses to reject a frame based solely on // the frame header, which is a fatal error for the connection. TEST(OgHttp2AdapterTest, ServerRejectsFrameHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6159,7 +6159,7 @@ TEST(OgHttp2AdapterTest, ServerRejectsFrameHeader) { } TEST(OgHttp2AdapterTest, ServerRejectsBeginningOfData) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6221,7 +6221,7 @@ TEST(OgHttp2AdapterTest, ServerRejectsBeginningOfData) { } TEST(OgHttp2AdapterTest, ServerReceivesTooLargeHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.max_header_list_bytes = 64 * 1024; @@ -6294,7 +6294,7 @@ TEST(OgHttp2AdapterTest, ServerReceivesTooLargeHeader) { } TEST(OgHttp2AdapterTest, ServerReceivesInvalidAuthority) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6346,7 +6346,7 @@ TEST(OgHttp2AdapterTest, ServerReceivesInvalidAuthority) { } TEST(OgHttpAdapterTest, ServerReceivesGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6407,7 +6407,7 @@ TEST(OgHttpAdapterTest, ServerReceivesGoAway) { } TEST(OgHttp2AdapterTest, ServerSubmitResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6507,7 +6507,7 @@ TEST(OgHttp2AdapterTest, ServerSubmitResponse) { } TEST(OgHttp2AdapterTest, ServerSubmitResponseWithResetFromClient) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6586,7 +6586,7 @@ TEST(OgHttp2AdapterTest, ServerSubmitResponseWithResetFromClient) { } TEST(OgHttp2AdapterTest, ServerRejectsStreamData) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6713,7 +6713,7 @@ TEST(OgHttp2AdapterInteractionTest, ClientServerInteractionTest) { TEST(OgHttp2AdapterInteractionTest, ClientServerInteractionRepeatedHeaderNames) { - DataSavingVisitor client_visitor; + TestVisitor client_visitor; OgHttp2Adapter::Options client_options; client_options.perspective = Perspective::kClient; auto client_adapter = OgHttp2Adapter::Create(client_visitor, client_options); @@ -6741,7 +6741,7 @@ TEST(OgHttp2AdapterInteractionTest, int send_result = client_adapter->Send(); EXPECT_EQ(0, send_result); - DataSavingVisitor server_visitor; + TestVisitor server_visitor; OgHttp2Adapter::Options server_options; server_options.perspective = Perspective::kServer; auto server_adapter = OgHttp2Adapter::Create(server_visitor, server_options); @@ -6772,7 +6772,7 @@ TEST(OgHttp2AdapterInteractionTest, } TEST(OgHttp2AdapterInteractionTest, ClientServerInteractionWithCookies) { - DataSavingVisitor client_visitor; + TestVisitor client_visitor; OgHttp2Adapter::Options client_options; client_options.perspective = Perspective::kClient; auto client_adapter = OgHttp2Adapter::Create(client_visitor, client_options); @@ -6802,7 +6802,7 @@ TEST(OgHttp2AdapterInteractionTest, ClientServerInteractionWithCookies) { int send_result = client_adapter->Send(); EXPECT_EQ(0, send_result); - DataSavingVisitor server_visitor; + TestVisitor server_visitor; OgHttp2Adapter::Options server_options; server_options.perspective = Perspective::kServer; auto server_adapter = OgHttp2Adapter::Create(server_visitor, server_options); @@ -6833,7 +6833,7 @@ TEST(OgHttp2AdapterInteractionTest, ClientServerInteractionWithCookies) { } TEST(OgHttp2AdapterTest, ServerForbidsNewStreamBelowWatermark) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6898,7 +6898,7 @@ TEST(OgHttp2AdapterTest, ServerForbidsNewStreamBelowWatermark) { } TEST(OgHttp2AdapterTest, ServerForbidsWindowUpdateOnIdleStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6940,7 +6940,7 @@ TEST(OgHttp2AdapterTest, ServerForbidsWindowUpdateOnIdleStream) { } TEST(OgHttp2AdapterTest, ServerForbidsDataOnIdleStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -6984,7 +6984,7 @@ TEST(OgHttp2AdapterTest, ServerForbidsDataOnIdleStream) { } TEST(OgHttp2AdapterTest, ServerForbidsRstStreamOnIdleStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7029,7 +7029,7 @@ TEST(OgHttp2AdapterTest, ServerForbidsRstStreamOnIdleStream) { } TEST(OgHttp2AdapterTest, ServerForbidsNewStreamAboveStreamLimit) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7115,7 +7115,7 @@ TEST(OgHttp2AdapterTest, ServerForbidsNewStreamAboveStreamLimit) { } TEST(OgHttp2AdapterTest, ServerRstStreamsNewStreamAboveStreamLimitBeforeAck) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7195,7 +7195,7 @@ TEST(OgHttp2AdapterTest, ServerRstStreamsNewStreamAboveStreamLimitBeforeAck) { } TEST(OgHttp2AdapterTest, ServerForbidsProtocolPseudoheaderBeforeAck) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.allow_extended_connect = false; @@ -7294,7 +7294,7 @@ TEST(OgHttp2AdapterTest, ServerForbidsProtocolPseudoheaderBeforeAck) { } TEST(OgHttp2AdapterTest, ServerAllowsProtocolPseudoheaderAfterAck) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7353,7 +7353,7 @@ TEST(OgHttp2AdapterTest, ServerAllowsProtocolPseudoheaderAfterAck) { } TEST(OgHttp2AdapterTest, SkipsSendingFramesForRejectedStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7421,7 +7421,7 @@ TEST(OgHttp2AdapterTest, SkipsSendingFramesForRejectedStream) { } TEST(OgHttpAdapterServerTest, ServerStartsShutdown) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7443,7 +7443,7 @@ TEST(OgHttpAdapterServerTest, ServerStartsShutdown) { } TEST(OgHttp2AdapterTest, ServerStartsShutdownAfterGoaway) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7473,7 +7473,7 @@ TEST(OgHttp2AdapterTest, ServerStartsShutdownAfterGoaway) { // returning a positive value for ProcessBytes() to mark all data as consumed // when the blackhole option is enabled. TEST(OgHttp2AdapterTest, ConnectionErrorWithBlackholingData) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.blackhole_data_on_connection_error = true; @@ -7505,7 +7505,7 @@ TEST(OgHttp2AdapterTest, ConnectionErrorWithBlackholingData) { // Verifies that a connection-level processing error results in returning a // negative value for ProcessBytes() when the blackhole option is disabled. TEST(OgHttp2AdapterTest, ConnectionErrorWithoutBlackholingData) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.blackhole_data_on_connection_error = false; @@ -7535,7 +7535,7 @@ TEST(OgHttp2AdapterTest, ConnectionErrorWithoutBlackholingData) { } TEST(OgHttp2AdapterTest, ServerDoesNotSendFramesAfterImmediateGoAway) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7625,7 +7625,7 @@ TEST(OgHttp2AdapterTest, ServerDoesNotSendFramesAfterImmediateGoAway) { } TEST(OgHttp2AdapterTest, ServerHandlesContentLength) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7695,7 +7695,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesContentLength) { } TEST(OgHttp2AdapterTest, ServerHandlesContentLengthMismatch) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7830,7 +7830,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesContentLengthMismatch) { } TEST(OgHttp2AdapterTest, ServerHandlesAsteriskPathForOptions) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7874,7 +7874,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesAsteriskPathForOptions) { } TEST(OgHttp2AdapterTest, ServerHandlesInvalidPath) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -7964,7 +7964,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesInvalidPath) { } TEST(OgHttp2AdapterTest, ServerHandlesTeHeader) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -8031,7 +8031,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesTeHeader) { } TEST(OgHttp2AdapterTest, ServerHandlesConnectionSpecificHeaders) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -8161,7 +8161,7 @@ TEST(OgHttp2AdapterTest, ServerHandlesConnectionSpecificHeaders) { TEST(OgHttp2AdapterTest, ServerUsesCustomWindowUpdateStrategy) { // Test the use of a custom WINDOW_UPDATE strategy. - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.should_window_update_fn = [](int64_t /*limit*/, int64_t /*size*/, int64_t /*delta*/) { return true; }; @@ -8222,7 +8222,7 @@ TEST(OgHttp2AdapterTest, ServerUsesCustomWindowUpdateStrategy) { } TEST(OgHttp2AdapterTest, ServerConsumesDataWithPadding) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -8285,7 +8285,7 @@ TEST(OgHttp2AdapterTest, ServerConsumesDataWithPadding) { // Verifies that NoopHeaderValidator allows several header combinations that // would otherwise be invalid. TEST(OgHttp2AdapterTest, NoopHeaderValidatorTest) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; options.validate_http_headers = false; @@ -8406,7 +8406,7 @@ TEST(OgHttp2AdapterTest, NoopHeaderValidatorTest) { } TEST(OgHttp2AdapterTest, NegativeFlowControlStreamResumption) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kServer; auto adapter = OgHttp2Adapter::Create(visitor, options); @@ -8503,12 +8503,12 @@ TEST(OgHttp2AdapterTest, NegativeFlowControlStreamResumption) { // Verifies that Set-Cookie headers are not folded in either the sending or // receiving direction. TEST(OgHttp2AdapterTest, SetCookieRoundtrip) { - DataSavingVisitor client_visitor; + TestVisitor client_visitor; OgHttp2Adapter::Options options; options.perspective = Perspective::kClient; auto client_adapter = OgHttp2Adapter::Create(client_visitor, options); - DataSavingVisitor server_visitor; + TestVisitor server_visitor; options.perspective = Perspective::kServer; auto server_adapter = OgHttp2Adapter::Create(server_visitor, options); diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.cc b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.cc index 842e3fb4fb..f47385c115 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.cc @@ -654,7 +654,8 @@ Http2StreamId OgHttp2Session::GetNextReadyStream() { int32_t OgHttp2Session::SubmitRequestInternal( absl::Span headers, - std::unique_ptr data_source, void* user_data) { + std::unique_ptr data_source, bool end_stream, + void* user_data) { // TODO(birenroy): return an error for the incorrect perspective const Http2StreamId stream_id = next_stream_id_; next_stream_id_ += 2; @@ -662,26 +663,27 @@ int32_t OgHttp2Session::SubmitRequestInternal( // TODO(diannahu): There should probably be a limit to the number of allowed // pending streams. pending_streams_.insert( - {stream_id, PendingStreamState{ToHeaderBlock(headers), - std::move(data_source), user_data}}); + {stream_id, + PendingStreamState{ToHeaderBlock(headers), std::move(data_source), + user_data, end_stream}}); StartPendingStreams(); } else { StartRequest(stream_id, ToHeaderBlock(headers), std::move(data_source), - user_data); + user_data, end_stream); } return stream_id; } int OgHttp2Session::SubmitResponseInternal( Http2StreamId stream_id, absl::Span headers, - std::unique_ptr data_source) { + std::unique_ptr data_source, bool end_stream) { // TODO(birenroy): return an error for the incorrect perspective auto iter = stream_map_.find(stream_id); if (iter == stream_map_.end()) { QUICHE_LOG(ERROR) << "Unable to find stream " << stream_id; return -501; // NGHTTP2_ERR_INVALID_ARGUMENT } - const bool end_stream = data_source == nullptr; + QUICHE_DCHECK_EQ(end_stream, data_source == nullptr); if (!end_stream) { // Add data source to stream state iter->second.outbound_body = std::move(data_source); @@ -985,14 +987,18 @@ void OgHttp2Session::SerializeMetadata(Http2StreamId stream_id, int32_t OgHttp2Session::SubmitRequest( absl::Span headers, - std::unique_ptr data_source, void* user_data) { - return SubmitRequestInternal(headers, std::move(data_source), user_data); + std::unique_ptr data_source, bool end_stream, + void* user_data) { + return SubmitRequestInternal(headers, std::move(data_source), end_stream, + user_data); } -int OgHttp2Session::SubmitResponse( - Http2StreamId stream_id, absl::Span headers, - std::unique_ptr data_source) { - return SubmitResponseInternal(stream_id, headers, std::move(data_source)); +int OgHttp2Session::SubmitResponse(Http2StreamId stream_id, + absl::Span headers, + std::unique_ptr data_source, + bool end_stream) { + return SubmitResponseInternal(stream_id, headers, std::move(data_source), + end_stream); } int OgHttp2Session::SubmitTrailer(Http2StreamId stream_id, @@ -1811,7 +1817,7 @@ OgHttp2Session::StreamStateMap::iterator OgHttp2Session::CreateStream( void OgHttp2Session::StartRequest(Http2StreamId stream_id, spdy::Http2HeaderBlock headers, std::unique_ptr data_source, - void* user_data) { + void* user_data, bool end_stream) { if (received_goaway_) { // Do not start new streams after receiving a GOAWAY. goaway_rejected_streams_.insert(stream_id); @@ -1819,7 +1825,7 @@ void OgHttp2Session::StartRequest(Http2StreamId stream_id, } auto iter = CreateStream(stream_id); - const bool end_stream = data_source == nullptr; + QUICHE_DCHECK_EQ(end_stream, data_source == nullptr); if (!end_stream) { iter->second.outbound_body = std::move(data_source); write_scheduler_.MarkStreamReady(stream_id, false); @@ -1838,7 +1844,7 @@ void OgHttp2Session::StartPendingStreams() { auto& [stream_id, pending_stream] = pending_streams_.front(); StartRequest(stream_id, std::move(pending_stream.headers), std::move(pending_stream.data_source), - pending_stream.user_data); + pending_stream.user_data, pending_stream.end_stream); pending_streams_.pop_front(); } } diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.h b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.h index 5de72a8908..3f370192b7 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.h +++ b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session.h @@ -107,9 +107,10 @@ class QUICHE_EXPORT OgHttp2Session : public Http2Session, int32_t SubmitRequest(absl::Span headers, std::unique_ptr data_source, - void* user_data); + bool end_stream, void* user_data); int SubmitResponse(Http2StreamId stream_id, absl::Span headers, - std::unique_ptr data_source); + std::unique_ptr data_source, + bool end_stream); int SubmitTrailer(Http2StreamId stream_id, absl::Span trailers); void SubmitMetadata(Http2StreamId stream_id, std::unique_ptr source); @@ -261,6 +262,7 @@ class QUICHE_EXPORT OgHttp2Session : public Http2Session, spdy::Http2HeaderBlock headers; std::unique_ptr data_source; void* user_data = nullptr; + bool end_stream; }; class QUICHE_EXPORT PassthroughHeadersHandler @@ -368,10 +370,11 @@ class QUICHE_EXPORT OgHttp2Session : public Http2Session, int32_t SubmitRequestInternal(absl::Span headers, std::unique_ptr data_source, - void* user_data); + bool end_stream, void* user_data); int SubmitResponseInternal(Http2StreamId stream_id, absl::Span headers, - std::unique_ptr data_source); + std::unique_ptr data_source, + bool end_stream); // Sends the buffered connection preface or serialized frame data, if any. SendResult MaybeSendBufferedData(); @@ -410,7 +413,7 @@ class QUICHE_EXPORT OgHttp2Session : public Http2Session, // in the stream state, and sends the `headers`. void StartRequest(Http2StreamId stream_id, spdy::Http2HeaderBlock headers, std::unique_ptr data_source, - void* user_data); + void* user_data, bool end_stream); // Sends headers for pending streams as long as the stream limit allows. void StartPendingStreams(); diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session_test.cc b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session_test.cc index 1d2879e053..182168dea7 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session_test.cc +++ b/yass/third_party/quiche/src/quiche/http2/adapter/oghttp2_session_test.cc @@ -91,12 +91,12 @@ TEST(OgHttp2SessionTest, ClientHandlesFrames) { auto body1 = std::make_unique(visitor, true); body1->AppendPayload("This is an example request body."); body1->EndData(); - int stream_id = - session.SubmitRequest(ToHeaders({{":method", "POST"}, - {":scheme", "http"}, - {":authority", "example.com"}, - {":path", "/this/is/request/one"}}), - std::move(body1), const_cast(kSentinel1)); + int stream_id = session.SubmitRequest( + ToHeaders({{":method", "POST"}, + {":scheme", "http"}, + {":authority", "example.com"}, + {":path", "/this/is/request/one"}}), + std::move(body1), false, const_cast(kSentinel1)); EXPECT_EQ(stream_id, 1); // Submit another request to ensure the next stream is created. @@ -105,7 +105,7 @@ TEST(OgHttp2SessionTest, ClientHandlesFrames) { {":scheme", "http"}, {":authority", "example.com"}, {":path", "/this/is/request/two"}}), - nullptr, nullptr); + nullptr, true, nullptr); EXPECT_EQ(stream_id2, 3); const std::string stream_frames = @@ -158,7 +158,7 @@ TEST(OgHttp2SessionTest, ClientHandlesFrames) { // Verifies that a client session enqueues initial SETTINGS if Send() is called // before any frames are explicitly queued. TEST(OgHttp2SessionTest, ClientEnqueuesSettingsOnSend) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -179,7 +179,7 @@ TEST(OgHttp2SessionTest, ClientEnqueuesSettingsOnSend) { // Verifies that a client session enqueues initial SETTINGS before whatever // frame type is passed to the first invocation of EnqueueFrame(). TEST(OgHttp2SessionTest, ClientEnqueuesSettingsBeforeOtherFrame) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -205,7 +205,7 @@ TEST(OgHttp2SessionTest, ClientEnqueuesSettingsBeforeOtherFrame) { // Verifies that if the first call to EnqueueFrame() passes a SETTINGS frame, // the client session will not enqueue an additional SETTINGS frame. TEST(OgHttp2SessionTest, ClientEnqueuesSettingsOnce) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -226,7 +226,7 @@ TEST(OgHttp2SessionTest, ClientEnqueuesSettingsOnce) { } TEST(OgHttp2SessionTest, ClientSubmitRequest) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -277,12 +277,12 @@ TEST(OgHttp2SessionTest, ClientSubmitRequest) { auto body1 = std::make_unique(visitor, true); body1->AppendPayload("This is an example request body."); body1->EndData(); - int stream_id = - session.SubmitRequest(ToHeaders({{":method", "POST"}, - {":scheme", "http"}, - {":authority", "example.com"}, - {":path", "/this/is/request/one"}}), - std::move(body1), const_cast(kSentinel1)); + int stream_id = session.SubmitRequest( + ToHeaders({{":method", "POST"}, + {":scheme", "http"}, + {":authority", "example.com"}, + {":path", "/this/is/request/one"}}), + std::move(body1), false, const_cast(kSentinel1)); EXPECT_GT(stream_id, 0); EXPECT_TRUE(session.want_write()); EXPECT_EQ(kSentinel1, session.GetStreamUserData(stream_id)); @@ -313,7 +313,7 @@ TEST(OgHttp2SessionTest, ClientSubmitRequest) { {":scheme", "http"}, {":authority", "example.com"}, {":path", "/this/is/request/two"}}), - nullptr, nullptr); + nullptr, true, nullptr); EXPECT_GT(stream_id, 0); EXPECT_TRUE(session.want_write()); const char* kSentinel2 = "arbitrary pointer 2"; @@ -335,7 +335,7 @@ TEST(OgHttp2SessionTest, ClientSubmitRequest) { } TEST(OgHttp2SessionTest, ClientSubmitRequestWithLargePayload) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -393,7 +393,7 @@ TEST(OgHttp2SessionTest, ClientSubmitRequestWithLargePayload) { {":scheme", "http"}, {":authority", "example.com"}, {":path", "/this/is/request/one"}}), - std::move(body1), nullptr); + std::move(body1), false, nullptr); EXPECT_GT(stream_id, 0); EXPECT_TRUE(session.want_write()); @@ -413,7 +413,7 @@ TEST(OgHttp2SessionTest, ClientSubmitRequestWithLargePayload) { // This test exercises the case where the client request body source is read // blocked. TEST(OgHttp2SessionTest, ClientSubmitRequestWithReadBlock) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -422,12 +422,12 @@ TEST(OgHttp2SessionTest, ClientSubmitRequestWithReadBlock) { const char* kSentinel1 = "arbitrary pointer 1"; auto body1 = std::make_unique(visitor, true); TestDataFrameSource* body_ref = body1.get(); - int stream_id = - session.SubmitRequest(ToHeaders({{":method", "POST"}, - {":scheme", "http"}, - {":authority", "example.com"}, - {":path", "/this/is/request/one"}}), - std::move(body1), const_cast(kSentinel1)); + int stream_id = session.SubmitRequest( + ToHeaders({{":method", "POST"}, + {":scheme", "http"}, + {":authority", "example.com"}, + {":path", "/this/is/request/one"}}), + std::move(body1), false, const_cast(kSentinel1)); EXPECT_GT(stream_id, 0); EXPECT_TRUE(session.want_write()); EXPECT_EQ(kSentinel1, session.GetStreamUserData(stream_id)); @@ -469,7 +469,7 @@ TEST(OgHttp2SessionTest, ClientSubmitRequestWithReadBlock) { // This test exercises the case where the client request body source is read // blocked, then ends with an empty DATA frame. TEST(OgHttp2SessionTest, ClientSubmitRequestEmptyDataWithFin) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -478,12 +478,12 @@ TEST(OgHttp2SessionTest, ClientSubmitRequestEmptyDataWithFin) { const char* kSentinel1 = "arbitrary pointer 1"; auto body1 = std::make_unique(visitor, true); TestDataFrameSource* body_ref = body1.get(); - int stream_id = - session.SubmitRequest(ToHeaders({{":method", "POST"}, - {":scheme", "http"}, - {":authority", "example.com"}, - {":path", "/this/is/request/one"}}), - std::move(body1), const_cast(kSentinel1)); + int stream_id = session.SubmitRequest( + ToHeaders({{":method", "POST"}, + {":scheme", "http"}, + {":authority", "example.com"}, + {":path", "/this/is/request/one"}}), + std::move(body1), false, const_cast(kSentinel1)); EXPECT_GT(stream_id, 0); EXPECT_TRUE(session.want_write()); EXPECT_EQ(kSentinel1, session.GetStreamUserData(stream_id)); @@ -524,7 +524,7 @@ TEST(OgHttp2SessionTest, ClientSubmitRequestEmptyDataWithFin) { // This test exercises the case where the connection to the peer is write // blocked. TEST(OgHttp2SessionTest, ClientSubmitRequestWithWriteBlock) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kClient; OgHttp2Session session(visitor, options); @@ -534,12 +534,12 @@ TEST(OgHttp2SessionTest, ClientSubmitRequestWithWriteBlock) { auto body1 = std::make_unique(visitor, true); body1->AppendPayload("This is an example request body."); body1->EndData(); - int stream_id = - session.SubmitRequest(ToHeaders({{":method", "POST"}, - {":scheme", "http"}, - {":authority", "example.com"}, - {":path", "/this/is/request/one"}}), - std::move(body1), const_cast(kSentinel1)); + int stream_id = session.SubmitRequest( + ToHeaders({{":method", "POST"}, + {":scheme", "http"}, + {":authority", "example.com"}, + {":path", "/this/is/request/one"}}), + std::move(body1), false, const_cast(kSentinel1)); EXPECT_GT(stream_id, 0); EXPECT_TRUE(session.want_write()); EXPECT_EQ(kSentinel1, session.GetStreamUserData(stream_id)); @@ -583,7 +583,7 @@ TEST(OgHttp2SessionTest, ServerConstruction) { } TEST(OgHttp2SessionTest, ServerHandlesFrames) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; OgHttp2Session session(visitor, options); @@ -704,7 +704,7 @@ TEST(OgHttp2SessionTest, ServerHandlesFrames) { // Verifies that a server session enqueues initial SETTINGS before whatever // frame type is passed to the first invocation of EnqueueFrame(). TEST(OgHttp2SessionTest, ServerEnqueuesSettingsBeforeOtherFrame) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; OgHttp2Session session(visitor, options); @@ -726,7 +726,7 @@ TEST(OgHttp2SessionTest, ServerEnqueuesSettingsBeforeOtherFrame) { // Verifies that if the first call to EnqueueFrame() passes a SETTINGS frame, // the server session will not enqueue an additional SETTINGS frame. TEST(OgHttp2SessionTest, ServerEnqueuesSettingsOnce) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; OgHttp2Session session(visitor, options); @@ -743,7 +743,7 @@ TEST(OgHttp2SessionTest, ServerEnqueuesSettingsOnce) { } TEST(OgHttp2SessionTest, ServerSubmitResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; OgHttp2Session session(visitor, options); @@ -811,7 +811,7 @@ TEST(OgHttp2SessionTest, ServerSubmitResponse) { 1, ToHeaders({{":status", "404"}, {"x-comment", "I have no idea what you're talking about."}}), - std::move(body1)); + std::move(body1), false); EXPECT_EQ(submit_result, 0); EXPECT_TRUE(session.want_write()); @@ -843,7 +843,7 @@ TEST(OgHttp2SessionTest, ServerSubmitResponse) { // Tests the case where the server queues trailers after the data stream is // exhausted. TEST(OgHttp2SessionTest, ServerSendsTrailers) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; OgHttp2Session session(visitor, options); @@ -901,7 +901,7 @@ TEST(OgHttp2SessionTest, ServerSendsTrailers) { body1->EndData(); int submit_result = session.SubmitResponse( 1, ToHeaders({{":status", "200"}, {"x-comment", "Sure, sounds good."}}), - std::move(body1)); + std::move(body1), false); EXPECT_EQ(submit_result, 0); EXPECT_TRUE(session.want_write()); @@ -935,7 +935,7 @@ TEST(OgHttp2SessionTest, ServerSendsTrailers) { // Tests the case where the server queues trailers immediately after headers and // data, and before any writes have taken place. TEST(OgHttp2SessionTest, ServerQueuesTrailersWithResponse) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; OgHttp2Session session(visitor, options); @@ -993,7 +993,7 @@ TEST(OgHttp2SessionTest, ServerQueuesTrailersWithResponse) { body1->EndData(); int submit_result = session.SubmitResponse( 1, ToHeaders({{":status", "200"}, {"x-comment", "Sure, sounds good."}}), - std::move(body1)); + std::move(body1), false); EXPECT_EQ(submit_result, 0); EXPECT_TRUE(session.want_write()); // There has not been a call to Send() yet, so neither headers nor body have @@ -1020,7 +1020,7 @@ TEST(OgHttp2SessionTest, ServerQueuesTrailersWithResponse) { } TEST(OgHttp2SessionTest, ServerSeesErrorOnEndStream) { - DataSavingVisitor visitor; + TestVisitor visitor; OgHttp2Session::Options options; options.perspective = Perspective::kServer; OgHttp2Session session(visitor, options); diff --git a/yass/third_party/quiche/src/quiche/http2/adapter/test_utils.h b/yass/third_party/quiche/src/quiche/http2/adapter/test_utils.h index ee198b0f98..3d5e2ed4cf 100644 --- a/yass/third_party/quiche/src/quiche/http2/adapter/test_utils.h +++ b/yass/third_party/quiche/src/quiche/http2/adapter/test_utils.h @@ -19,7 +19,7 @@ namespace http2 { namespace adapter { namespace test { -class QUICHE_NO_EXPORT DataSavingVisitor +class QUICHE_NO_EXPORT TestVisitor : public testing::StrictMock { public: int64_t OnReadyToSend(absl::string_view data) override { diff --git a/yass/third_party/re2/re2/re2.h b/yass/third_party/re2/re2/re2.h index 7ea44e044f..13bf39fbe7 100644 --- a/yass/third_party/re2/re2/re2.h +++ b/yass/third_party/re2/re2/re2.h @@ -890,14 +890,12 @@ class RE2::Arg { re2_internal::Parse4ary::value, int>::type; -#if !defined(_MSC_VER) template using CanParseFrom = typename std::enable_if< std::is_member_function_pointer< decltype(static_cast( &T::ParseFrom))>::value, int>::type; -#endif public: Arg() : Arg(nullptr) {} @@ -909,10 +907,8 @@ class RE2::Arg { template = 0> Arg(T* ptr) : arg_(ptr), parser_(DoParse4ary) {} -#if !defined(_MSC_VER) template = 0> Arg(T* ptr) : arg_(ptr), parser_(DoParseFrom) {} -#endif typedef bool (*Parser)(const char* str, size_t n, void* dest); @@ -938,13 +934,11 @@ class RE2::Arg { return re2_internal::Parse(str, n, reinterpret_cast(dest), 10); } -#if !defined(_MSC_VER) template static bool DoParseFrom(const char* str, size_t n, void* dest) { if (dest == NULL) return true; return reinterpret_cast(dest)->ParseFrom(str, n); } -#endif void* arg_; Parser parser_; diff --git a/yass/third_party/re2/re2/testing/re2_arg_test.cc b/yass/third_party/re2/re2/testing/re2_arg_test.cc index 4b00be3589..78d4aee433 100644 --- a/yass/third_party/re2/re2/testing/re2_arg_test.cc +++ b/yass/third_party/re2/re2/testing/re2_arg_test.cc @@ -135,7 +135,6 @@ TEST(RE2ArgTest, Uint64Test) { } TEST(RE2ArgTest, ParseFromTest) { -#if !defined(_MSC_VER) struct { bool ParseFrom(const char* str, size_t n) { LOG(INFO) << "str = " << str << ", n = " << n; @@ -155,7 +154,6 @@ TEST(RE2ArgTest, ParseFromTest) { } obj2; RE2::Arg arg2(&obj2); EXPECT_FALSE(arg2.Parse("two", 3)); -#endif } TEST(RE2ArgTest, OptionalDoubleTest) { diff --git a/yass/yass.spec.in b/yass/yass.spec.in index b41a9e7156..9edacce436 100644 --- a/yass/yass.spec.in +++ b/yass/yass.spec.in @@ -362,78 +362,78 @@ for embedded devices and low end boxes. - Bump Clang and Abseil-Cpp. - Use tcmalloc be default. - Misc fixes. -* Thu Nov 16 2023 Chilledheart - 1.4.9-1 +* Thu Nov 16 2023 Chilledheart - 1.4.9-1 - Fix startup failure on the first try since version 1.4.5. -* Thu Nov 16 2023 Chilledheart - 1.4.8-1 +* Thu Nov 16 2023 Chilledheart - 1.4.8-1 - Some trivial changes. -* Mon Nov 6 2023 Chilledheart - 1.4.7-1 +* Mon Nov 6 2023 Chilledheart - 1.4.7-1 - Bump to chromium 120 dependents. -* Mon Oct 23 2023 Chilledheart - 1.4.6-1 +* Mon Oct 23 2023 Chilledheart - 1.4.6-1 - Better handling with SIGTERM signal. - Bump to chromium 119 dependents. -* Thu Oct 5 2023 Chilledheart - 1.4.5-1 +* Thu Oct 5 2023 Chilledheart - 1.4.5-1 - Some trivial changes. -* Wed Sep 20 2023 Chilledheart - 1.4.4-1 +* Wed Sep 20 2023 Chilledheart - 1.4.4-1 - Add chinese translation (GTK4). -* Mon Sep 18 2023 Chilledheart - 1.4.3-1 +* Mon Sep 18 2023 Chilledheart - 1.4.3-1 - Add chinese translation. -* Fri Sep 15 2023 Chilledheart - 1.4.2-1 +* Fri Sep 15 2023 Chilledheart - 1.4.2-1 - New minor release. -* Thu Sep 14 2023 Chilledheart - 1.4.1-1 +* Thu Sep 14 2023 Chilledheart - 1.4.1-1 - Bump to chromium 118 dependents. -* Thu Aug 24 2023 Chilledheart - 1.4.0-1 +* Thu Aug 24 2023 Chilledheart - 1.4.0-1 - New major release. -* Thu Aug 24 2023 Chilledheart - 1.3.15-1 +* Thu Aug 24 2023 Chilledheart - 1.3.15-1 - Add support for legacy shadowsocks stream ciphers. - Bump to chromium 117 dependents. -* Fri Aug 11 2023 Chilledheart - 1.3.14-1 +* Fri Aug 11 2023 Chilledheart - 1.3.14-1 - Prepare for downstream build. -* Wed Aug 9 2023 Chilledheart - 1.3.13-1 +* Wed Aug 9 2023 Chilledheart - 1.3.13-1 - Prepare for downstream build. -* Wed Aug 9 2023 Chilledheart - 1.3.12-1 +* Wed Aug 9 2023 Chilledheart - 1.3.12-1 - Prepare for downstream build. -* Sat Aug 5 2023 Chilledheart - 1.3.11-1 +* Sat Aug 5 2023 Chilledheart - 1.3.11-1 - Add system proxy support. -* Sun Jul 30 2023 Chilledheart - 1.3.10-1 +* Sun Jul 30 2023 Chilledheart - 1.3.10-1 - New bug-fix release. -* Sat Jul 22 2023 Chilledheart - 1.3.9-1 +* Sat Jul 22 2023 Chilledheart - 1.3.9-1 - Bump to chromium 116 dependents. - server: fix crash in hostname tlsext handling. -* Sun Jul 16 2023 Chilledheart - 1.3.8-1 +* Sun Jul 16 2023 Chilledheart - 1.3.8-1 - CVE/http: Fix memory leak in nghttp2 codec. -* Thu Jul 13 2023 Chilledheart - 1.3.7-1 +* Thu Jul 13 2023 Chilledheart - 1.3.7-1 - More complete IPv6 support. -* Tue Jul 4 2023 Chilledheart - 1.3.6-1 +* Tue Jul 4 2023 Chilledheart - 1.3.6-1 - Improvement of performance over http2 (client). -* Sun Jul 2 2023 Chilledheart - 1.3.5-1 +* Sun Jul 2 2023 Chilledheart - 1.3.5-1 - New bug-fix release. -* Fri May 26 2023 Chilledheart - 1.3.4-1 +* Fri May 26 2023 Chilledheart - 1.3.4-1 - New bug-fix release. -* Fri May 26 2023 Chilledheart - 1.3.3-1 +* Fri May 26 2023 Chilledheart - 1.3.3-1 - New bug-fix release. -* Wed Apr 26 2023 Chilledheart - 1.3.2-1 +* Wed Apr 26 2023 Chilledheart - 1.3.2-1 - New bug-fix release. -* Sun Apr 2 2023 Chilledheart - 1.3.1-1 +* Sun Apr 2 2023 Chilledheart - 1.3.1-1 - New bug-fix release. -* Mon Mar 13 2023 Chilledheart - 1.3.0-1 +* Mon Mar 13 2023 Chilledheart - 1.3.0-1 - New HTTP TLS Implementation. -* Wed Mar 8 2023 Chilledheart - 1.2.7-1 +* Wed Mar 8 2023 Chilledheart - 1.2.7-1 - New bug-fix release. -* Wed Mar 1 2023 Chilledheart - 1.2.6-1 +* Wed Mar 1 2023 Chilledheart - 1.2.6-1 - New bug-fix release. -* Thu Feb 16 2023 Chilledheart - 1.2.5-1 +* Thu Feb 16 2023 Chilledheart - 1.2.5-1 - New bug-fix release. -* Sat Feb 11 2023 Chilledheart - 1.2.4-1 +* Sat Feb 11 2023 Chilledheart - 1.2.4-1 - New bug-fix release. -* Fri Feb 10 2023 Chilledheart - 1.2.3-1 +* Fri Feb 10 2023 Chilledheart - 1.2.3-1 - New bug-fix release. -* Wed Feb 8 2023 Chilledheart - 1.2.2-1 +* Wed Feb 8 2023 Chilledheart - 1.2.2-1 - New bug-fix release. -* Fri Feb 3 2023 Chilledheart - 1.2.1-1 +* Fri Feb 3 2023 Chilledheart - 1.2.1-1 - New bug-fix release. -* Sun Jan 29 2023 Chilledheart - 1.2.0-1 +* Sun Jan 29 2023 Chilledheart - 1.2.0-1 - New HTTP2 Tunnel Proxy Support. -* Tue Jan 10 2023 Chilledheart - 1.1.0-1 +* Tue Jan 10 2023 Chilledheart - 1.1.0-1 - New bug-fix release. -* Sat Jan 22 2022 Chilledheart - 1.0.0-1 +* Sat Jan 22 2022 Chilledheart - 1.0.0-1 - Initial release. (Closes: #4) diff --git a/yt-dlp/yt_dlp/extractor/eplus.py b/yt-dlp/yt_dlp/extractor/eplus.py index 88a8d5a949..d2ad5b441e 100644 --- a/yt-dlp/yt_dlp/extractor/eplus.py +++ b/yt-dlp/yt_dlp/extractor/eplus.py @@ -16,13 +16,31 @@ class EplusIbIE(InfoExtractor): _VALID_URL = [r'https?://live\.eplus\.jp/ex/player\?ib=(?P(?:\w|%2B|%2F){86}%3D%3D)', r'https?://live\.eplus\.jp/(?Psample|\d+)'] _TESTS = [{ - 'url': 'https://live.eplus.jp/ex/player?ib=YEFxb3Vyc2Dombnjg7blkrLlrablnJLjgrnjgq%2Fjg7zjg6vjgqLjgqTjg4njg6vlkIzlpb3kvJpgTGllbGxhIQ%3D%3D', + 'url': 'https://live.eplus.jp/ex/player?ib=41K6Wzbr3PlcMD%2FOKHFlC%2FcZCe2Eaw7FK%2BpJS1ooUHki8d0vGSy2mYqxillQBe1dSnOxU%2B8%2FzXKls4XPBSb3vw%3D%3D', 'info_dict': { - 'id': '354502-0001-002', - 'title': 'LoveLive!Series Presents COUNTDOWN LoveLive! 2021→2022~LIVE with a smile!~【Streaming+(配信)】', + 'id': '335699-0001-006', + 'title': '少女☆歌劇 レヴュースタァライト -The LIVE 青嵐- BLUE GLITTER <定点映像配信>【Streaming+(配信)】', 'live_status': 'was_live', - 'release_date': '20211231', - 'release_timestamp': 1640952000, + 'release_date': '20201221', + 'release_timestamp': 1608544800, + }, + 'params': { + 'skip_download': True, + 'ignore_no_formats_error': True, + }, + 'expected_warnings': [ + 'This event may not be accessible', + 'No video formats found', + 'Requested format is not available', + ], + }, { + 'url': 'https://live.eplus.jp/ex/player?ib=6QSsQdyRAwOFZrEHWlhRm7vocgV%2FO0YzBZ%2BaBEBg1XR%2FmbLn0R%2F048dUoAY038%2F%2F92MJ73BsoAtvUpbV6RLtDQ%3D%3D&show_id=2371511', + 'info_dict': { + 'id': '348021-0054-001', + 'title': 'ラブライブ!スーパースター!! Liella! First LoveLive! Tour ~Starlines~【東京/DAY.1】', + 'live_status': 'was_live', + 'release_date': '20220115', + 'release_timestamp': 1642233600, 'description': str, }, 'params': { @@ -124,6 +142,10 @@ class EplusIbIE(InfoExtractor): if data_json.get('drm_mode') == 'ON': self.report_drm(video_id) + if data_json.get('is_pass_ticket') == 'YES': + raise ExtractorError( + 'This URL is for a pass ticket instead of a player page', expected=True) + delivery_status = data_json.get('delivery_status') archive_mode = data_json.get('archive_mode') release_timestamp = try_call(lambda: unified_timestamp(data_json['event_datetime']) - 32400) diff --git a/yt-dlp/yt_dlp/extractor/pornhub.py b/yt-dlp/yt_dlp/extractor/pornhub.py index 29a3e43cc1..d94f28ceb1 100644 --- a/yt-dlp/yt_dlp/extractor/pornhub.py +++ b/yt-dlp/yt_dlp/extractor/pornhub.py @@ -97,7 +97,7 @@ class PornHubBaseIE(InfoExtractor): login_form = self._hidden_inputs(login_page) login_form.update({ - 'username': username, + 'email': username, 'password': password, })