diff --git a/player/html/Menlo-Regular.ttf b/player/html/Menlo-Regular.ttf
new file mode 100644
index 0000000..033dc6d
Binary files /dev/null and b/player/html/Menlo-Regular.ttf differ
diff --git a/player/html/ass.global.min.js b/player/html/ass.global.min.js
new file mode 100644
index 0000000..dc572b4
--- /dev/null
+++ b/player/html/ass.global.min.js
@@ -0,0 +1 @@
+var ASS=function(){"use strict";function t(t){var e=t.toLowerCase().trim().split(/\s*;\s*/);return"banner"===e[0]?{name:e[0],delay:1*e[1]||0,leftToRight:1*e[2]||0,fadeAwayWidth:1*e[3]||0}:/^scroll\s/.test(e[0])?{name:e[0],y1:Math.min(1*e[1],1*e[2]),y2:Math.max(1*e[1],1*e[2]),delay:1*e[3]||0,fadeAwayHeight:1*e[4]||0}:""!==t?{name:t}:null}function e(t){return t?t.toLowerCase().replace(/([+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)/g," $1 ").replace(/([mnlbspc])/g," $1 ").trim().replace(/\s+/g," ").split(/\s(?=[mnlbspc])/).map((function(t){return t.split(" ").filter((function(t,e){return!(e&&isNaN(1*t))}))})):[]}var a=["b","i","u","s","fsp","k","K","kf","ko","kt","fe","q","p","pbo","a","an","fscx","fscy","fax","fay","frx","fry","frz","fr","be","blur","bord","xbord","ybord","shad","xshad","yshad"].map((function(t){return{name:t,regex:new RegExp("^"+t+"-?\\d")}}));function s(t){for(var r,n={},i=0;ia.length){var r=s.slice(a.length-1).join();(s=s.slice(0,a.length-1)).push(r)}for(var i,o={},l=0;l-10?1+i/10:1)*a.fs:1*i};if("K"===e)return{kf:i};if("t"===e){var b=i.t1,w=i.accel,S=i.tags,$=i.t2||1e3*(a.end-a.start),A={};return S.forEach((function(t){var e=Object.keys(t)[0];~g.indexOf(e)&&("clip"!==e||t[e].dots)&&Object.assign(A,y(t,e,a))})),{t:{t1:b,t2:$,accel:w,tag:A}}}return(n={})[e]=i,n}var m=[null,1,2,3,null,7,8,9,null,4,5,6],v=["r","a","an","pos","org","move","fade","fad","clip"];function x(t){for(var e,a,s,r,n,i,o,l=t.styles,c=t.style,d=t.parsed,f=t.start,p=t.end,u={q:l[c].tag.q},g=[],x={style:c,fragments:[]},b={},w=0;w=i.End)){e[i.Style]||(i.Style="Default");var o=e[i.Style].style,l=x({styles:e,style:i.Style,parsed:i.Text.parsed,start:i.Start,end:i.End}),c=l.alignment||o.Alignment;s=Math.min(s,i.Layer),r.push(Object.assign({layer:i.Layer,start:i.Start,end:i.End,style:i.Style,name:i.Name,margin:{left:i.MarginL||o.MarginL,right:i.MarginR||o.MarginR,vertical:i.MarginV||o.MarginV},effect:i.Effect},l,{alignment:c}))}}for(var d=0;d{const e=Math.trunc(16*Math.random());return("x"===t?e:3&e|8).toString(16)}))}function B(t,e=[]){const a=document.createElementNS("http://www.w3.org/2000/svg",t);for(let t=0;t{t[e]()}))}const _=["frx","fry","frz"],H=["fscx","fscy"],q=["fax","fay"];const I=["blur","xbord","ybord","xshad","yshad"];function P(t,e){const{name:a,delay:s,leftToRight:r}=t,n="banner"===a?"X":"Y",i={X:r?1:-1,Y:/up/.test(a)?-1:1}[n],o=-100*i;return[[{offset:0,transform:`translate${n}(${o}%)`},{offset:1,transform:`translate${n}(calc(${o}% + var(--ass-scale) * ${e/(s||1)*i}px))`}],{duration:e,fill:"forwards"}]}function V(t){return`calc(var(--ass-scale) * ${t}px)`}function D(t,e){const{x1:a,y1:s,x2:r,y2:n,t1:i,t2:o}=t,l=`translate(${V(a)}, ${V(s)})`,c=`translate(${V(r)}, ${V(n)})`,d=Math.max(o,e);return[[{offset:0,transform:l},i>0?{offset:i/d,transform:l}:null,o>0&&o1-t/255));return[[[0,i,o,l,c].map((t=>t/d)).map(((t,e)=>({offset:t,opacity:f[e>>1]}))),{duration:d,fill:"forwards"}]]}function U(t,e){if(1===e)return"linear";const a=Math.ceil(t/1e3*60);return`linear(${Array.from({length:a+1}).map(((t,s)=>(s/a)**e)).join(",")})`}function X(t,e,a){const s={...a,...e.tag};return(e.tag.t||[]).map((({t1:e,t2:a,accel:r,tag:n})=>{const i=Object.fromEntries(Object.keys(n).flatMap((t=>function(t,e,a){const s=e[a];return void 0===s||"clip"===a?[]:"a1"===a||"c1"===a?[["fill-color",R((e.a1||t.a1)+(e.c1||t.c1))]]:"a3"===a||"c3"===a?[["border-color",R((e.a3||t.a3)+(e.c3||t.c3))]]:"a4"===a||"c4"===a?[["shadow-color",R((e.a4||t.a4)+(e.c4||t.c4))]]:"fs"===a?[["real-fs",N(e.fn||t.fn,e.fs)],["tag-fs",s]]:"fscx"===a||"fscy"===a?[[`tag-${a}`,(s||100)/100]]:"xbord"===a||"ybord"===a?[["border-width",2*s]]:[[`tag-${a}`,s]]}(s,n,t))).map((([t,e])=>[`--ass-${t}`,e])).concat([["offset",1]])),o=Math.max(0,a-e);return z(t,[i],{duration:o,delay:e,fill:"forwards",easing:U(o,r)})}))}function Y(t,e,a){if(!t.dots)return"";const{x1:s,y1:r,x2:n,y2:i}=t.dots;return`polygon(evenodd, ${[[s,r],[s,i],[n,i],[n,r],[s,r]].map((([t,s])=>[t/e,s/a])).concat(t.inverse?[[0,0],[0,1],[1,1],[1,0],[0,0]]:[]).map((t=>t.map((t=>100*t+"%")).join(" "))).join(",")})`}function G(t,e){const{clip:a,animations:s}=t;if(!a)return{};const{width:r,height:n}=e.scriptRes,i=document.createElement("div");return e.box.insertBefore(i,t.$div),i.append(t.$div),i.className="ASS-clip-area",i.style.zIndex=t.$div.style.zIndex,i.style.clipPath=a.dots?Y(a,r,n):function(t,e,a,s){if(!t.drawing)return"";const r=s.scale/(1<t+e.map((({x:t,y:e})=>`${t*r},${e*r}`)).join(","))).join("");return t.inverse&&(n+=`M0,0L0,${a},${e},${a},${e},0,0,0Z`),`path(evenodd, "${n}")`}(a,r,n,e),s.push(...function(t,e,a){return e.slices.flatMap((t=>t.fragments)).flatMap((t=>t.tag.t||[])).filter((({tag:t})=>t.clip)).map((({t1:e,t2:s,accel:r,tag:n})=>{const i={offset:1,clipPath:Y(n.clip,a.scriptRes.width,a.scriptRes.height)},o=Math.max(0,s-e);return z(t,[i],{duration:o,delay:e,fill:"forwards",easing:U(o,r)})}))}(i,t,e)),{$div:i}}function J(t,e){const a=`ASS-${F()}`,s=t.xbord||t.ybord,r=t.xshad||t.yshad,n="ff"!==(t.a1||"00").toLowerCase(),i=(t.blur||t.be||0)*e,o=B("filter",[["id",a]]);o.append(B("feGaussianBlur",[["stdDeviation",s?0:i],["in","SourceGraphic"],["result","sg_b"]])),o.append(B("feFlood",[["flood-color","var(--ass-fill-color)"],["result","c1"]])),o.append(B("feComposite",[["operator","in"],["in","c1"],["in2","sg_b"],["result","main"]])),s&&(o.append(B("feMorphology",[["radius",`${t.xbord*e} ${t.ybord*e}`],["operator","dilate"],["in","SourceGraphic"],["result","dil"]])),o.append(B("feGaussianBlur",[["stdDeviation",i],["in","dil"],["result","dil_b"]])),o.append(B("feComposite",[["operator","out"],["in","dil_b"],["in2","SourceGraphic"],["result","dil_b_o"]])),o.append(B("feFlood",[["flood-color","var(--ass-border-color)"],["result","c3"]])),o.append(B("feComposite",[["operator","in"],["in","c3"],["in2","dil_b_o"],["result","border"]]))),r&&(s||n)&&(o.append(B("feOffset",[["dx",t.xshad*e],["dy",t.yshad*e],["in",s?n?"dil":"dil_b_o":"SourceGraphic"],["result","off"]])),o.append(B("feGaussianBlur",[["stdDeviation",i],["in","off"],["result","off_b"]])),n||(o.append(B("feOffset",[["dx",t.xshad*e],["dy",t.yshad*e],["in","SourceGraphic"],["result","sg_off"]])),o.append(B("feComposite",[["operator","out"],["in","off_b"],["in2","sg_off"],["result","off_b_o"]]))),o.append(B("feFlood",[["flood-color","var(--ass-shadow-color)"],["result","c4"]])),o.append(B("feComposite",[["operator","in"],["in","c4"],["in2",n?"off_b":"off_b_o"],["result","shadow"]])));const l=B("feMerge",[]);return r&&(s||n)&&l.append(B("feMergeNode",[["in","shadow"]])),s&&l.append(B("feMergeNode",[["in","border"]])),l.append(B("feMergeNode",[["in","main"]])),o.append(l),{id:a,el:o}}function K(t,e){const{styles:a}=e,s=document.createElement("div");s.className="ASS-dialogue",s.dataset.wrapStyle=t.q;const r=document.createDocumentFragment(),{align:n,slices:i}=t;[["--ass-align-h",["0%","50%","100%"][n.h]],["--ass-align-v",["100%","50%","0%"][n.v]]].forEach((([t,e])=>{s.style.setProperty(t,e)}));const o=[];return i.forEach((s=>{const n=a[s.style].tag,i=a[s.style].style.BorderStyle;s.fragments.forEach((a=>{const{text:s,drawing:l}=a,c={...n,...a.tag};let d="";const f=[];f.push(...function(t){return[["border-width",2*t.xbord],["border-color",R(`${t.a3}${t.c3}`)],["shadow-color",R(`${t.a4}${t.c4}`)],["tag-blur",t.blur||t.be||0],["tag-xbord",t.xbord],["tag-ybord",t.ybord],["tag-xshad",t.xshad],["tag-yshad",t.yshad]].map((([t,e])=>[`--ass-${t}`,e]))}(c));let p=null;const u=c.xbord||c.ybord||c.xshad||c.yshad;if(u&&(l||"00"!==c.a1||c.xbord!==c.ybord)){const t=J(c,e.sbas?e.scale:1),a=B("svg",[["width",0],["height",0]]);a.append(t.el),p={id:t.id,el:a}}if(f.push(...function(t){return[["real-fs",N(t.fn,t.fs)],["tag-fs",t.fs],["tag-fsp",t.fsp],["fill-color",R(t.a1+t.c1)]].filter((([,t])=>t)).map((([t,e])=>[`--ass-${t}`,e]))}(c)),l||(d+=`font-family:"${c.fn}";`,d+=c.b?`font-weight:${1===c.b?"bold":c.b};`:"",d+=c.i?"font-style:italic;":"",d+=c.u||c.s?`text-decoration:${c.u?"underline":""} ${c.s?"line-through":""};`:""),l&&c.pbo){const t=-c.pbo*(c.fscy||100)/100;d+=`vertical-align:calc(var(--ass-scale) * ${t}px);`}f.push(...function(t){return[...[..._,...q].map((e=>[`--ass-tag-${e}`,`${t[e]||0}`])),...H.map((e=>[`--ass-tag-${e}`,t.p?1:(t[e]||100)/100]))]}(c));const h=[c,...(c.t||[]).map((t=>t.tag))],g=_.some((t=>h.some((e=>e[t])))),y=H.some((t=>h.some((e=>void 0!==e[t]&&100!==e[t])))),m=q.some((t=>h.some((e=>e[t]))));(function(t,e){return t.replace(/\\h/g," ").replace(/\\N/g,"\n").replace(/\\n/g,2===e?"\n":" ")})(s,t.q).split("\n").forEach(((t,s)=>{const h=document.createElement("span"),v=document.createElement("span");if((y||m)&&(y&&(v.dataset.scale=""),m&&(v.dataset.skew=""),v.textContent=t),g&&(h.dataset.rotate=""),l){h.dataset.drawing="";const t=function(t,e,a){if(!t.drawing.d)return null;const s={...e,...t.tag},{minX:r,minY:n,width:i,height:o}=t.drawing,l=a.scale/(1<{h.style.setProperty(t,e)})),o.push(...X(h,a,n)),r.append(h)}))}))})),o.push(...function(t,e){const{start:a,end:s,effect:r,move:n,fade:i}=e,o=1e3*(s-a);return[r&&!n?P(r,o):null,n?D(n,o):null,...i?W(i,o):[]].filter(Boolean).map((([e,a])=>z(t,e,a)))}(s,t)),s.append(r),{$div:s,animations:o}}function Z(t,e){const{video:a,space:s,scale:r}=e,{layer:n,margin:i,width:o,height:l,alignment:c,end:d}=t,f=e.width-Math.trunc(r*(i.left+i.right)),p=e.height,u=Math.trunc(r*i.vertical),h=100*a.currentTime;s[n]=s[n]||{left:{width:new Uint16Array(p+1),end:new Uint32Array(p+1)},center:{width:new Uint16Array(p+1),end:new Uint32Array(p+1)},right:{width:new Uint16Array(p+1),end:new Uint32Array(p+1)}};const g=s[n],y=["right","left","center"][c%3];let m=0,v=0;const x=t=>(m=(t=>{const e=g.left.width[t],a=g.center.width[t],s=g.right.width[t],r=g.left.end[t],n=g.center.end[t],i=g.right.end[t];return"left"===y&&(r>h&&e||n>h&&a&&2*o+a>f||i>h&&s&&o+s>f)||"center"===y&&(r>h&&e&&2*e+o>f||n>h&&a||i>h&&s&&2*s+o>f)||"right"===y&&(r>h&&e&&e+o>f||n>h&&a&&2*o+a>f||i>h&&s)})(t)?0:m+1,m>=l&&(v=t,!0));if(c<=3){v=p-u-1;for(let t=v;t>u&&!x(t);t-=1);}else if(c>=7){v=u+1;for(let t=v;t>1;for(let t=v;t3&&(v-=l-1);for(let t=v;tt.fragments.some((({keyframes:t})=>t?.length))))?[e.height-i-o.vertical,(e.height-i)/2,o.vertical][r.v]:Z(t,e);return{x:c+[0,n/2,n][r.h],y:d+[i,i/2,0][r.v]}}(t,e);return Object.assign(t,{x:i,y:o}),a.style.cssText+=`left:${i}px;top:${o}px;`,function(t,e){const{align:a,width:s,height:r,x:n,y:i,$div:o}=t,l=(t.org?t.org.x*e:n)+[0,s/2,s][a.h],c=(t.org?t.org.y*e:i)+[r,r/2,0][a.v];for(let t=o.childNodes.length-1;t>=0;t-=1){const e=o.childNodes[t];if(""===e.dataset.rotate){const t=l-n-e.offsetLeft,a=c-i-e.offsetTop;e.style.cssText+=`transform-origin:${t}px ${a}px;`}}}(t,e.scale),Object.assign(t,G(t,e)),t.effect&&Object.assign(t,{$div:Q(t,e)}),t}function et(t){const{box:e}=t;for(;e.lastChild;)e.lastChild.remove();t.actives=[],t.space=[]}function at(t,e){const{dialogues:a,actives:s}=t,r=e-t.delay;for(let t=s.length-1;t>=0;t-=1){const e=s[t],{end:a}=e;a=a[t.index].start;){if(r{t.currentTime=1e3*(r-e.start)})),s.push(e),t.video.paused||T(e,"play")}t.index+=1}}function st(t){return function(){et(t);const{video:e,dialogues:a}=t,s=e.currentTime-t.delay;t.index=(()=>{for(let t=0;t`tag-${t}`))].forEach((t=>{window.CSS.registerProperty({name:`--ass-${t}`,syntax:"",inherits:!0,initialValue:0})})),["border-opacity","shadow-opacity",...H.map((t=>`tag-${t}`))].forEach((t=>{window.CSS.registerProperty({name:`--ass-${t}`,syntax:"",inherits:!0,initialValue:1})})),["fill-color","border-color","shadow-color"].forEach((t=>{window.CSS.registerProperty({name:`--ass-${t}`,syntax:"",inherits:!0,initialValue:"transparent"})})));return class{#t={video:null,box:document.createElement("div"),observer:null,scale:1,width:0,height:0,scriptRes:{},layoutRes:{},resampledRes:{},index:0,sbas:!0,styles:{},dialogues:[],actives:[],space:[],requestId:0,delay:0};#e;#a;#s;#r;constructor(t,e,{container:a=e.parentNode,resampling:s}={}){if(this.#t.video=e,!a)throw new Error("Missing container.");const{info:r,width:n,height:i,styles:o,dialogues:l}=$(t);this.#t.sbas=/yes/i.test(r.ScaledBorderAndShadow),this.#t.layoutRes={width:1*r.LayoutResX||e.videoWidth||e.clientWidth,height:1*r.LayoutResY||e.videoHeight||e.clientHeight},this.#t.scriptRes={width:n||this.#t.layoutRes.width,height:i||this.#t.layoutRes.height},this.#t.styles=o,this.#t.dialogues=l.map((t=>Object.assign(t,{effect:["banner","scroll up","scroll down"].includes(t.effect?.name)?t.effect:null,align:{h:(t.alignment+2)%3,v:Math.trunc((t.alignment-1)/3)}}))),L&&a.append(L);const{box:c}=this.#t;c.className="ASS-box",a.append(c),function(t){const e=t.getRootNode()||document,a=e===document?document.head:e;let s=a.querySelector("#ASS-global-style");s||(s=document.createElement("style"),s.type="text/css",s.id="ASS-global-style",s.append(document.createTextNode('.ASS-box{pointer-events:none;font-family:Arial;position:absolute;overflow:hidden}.ASS-dialogue{z-index:0;width:max-content;transform:translate(calc(var(--ass-align-h)*-1),calc(var(--ass-align-v)*-1));font-size:0;position:absolute}.ASS-dialogue span{display:inline-block}.ASS-dialogue [data-text]{color:var(--ass-fill-color);font-size:calc(var(--ass-scale)*var(--ass-real-fs)*1px);line-height:calc(var(--ass-scale)*var(--ass-tag-fs)*1px);letter-spacing:calc(var(--ass-scale)*var(--ass-tag-fsp)*1px);filter:blur(calc(var(--ass-scale-stroke)*var(--ass-tag-blur)*(1 - round(up,sin(var(--ass-tag-xbord))*sin(var(--ass-tag-xbord))))*(1 - round(up,sin(var(--ass-tag-ybord))*sin(var(--ass-tag-ybord))))*1px));display:inline-block}.ASS-dialogue [data-is=br]+[data-is=br]{height:calc(var(--ass-scale)*var(--ass-tag-fs)*1px/2)}.ASS-dialogue[data-wrap-style="0"],.ASS-dialogue[data-wrap-style="3"]{text-wrap:balance;white-space:pre-wrap}.ASS-dialogue[data-wrap-style="1"]{word-break:break-word;white-space:pre-wrap}.ASS-dialogue[data-wrap-style="2"]{word-break:normal;white-space:pre}.ASS-dialogue [data-border-style="1"]{position:relative}.ASS-dialogue [data-border-style="1"]:before,.ASS-dialogue [data-border-style="1"]:after{content:attr(data-text);z-index:-1;filter:blur(calc(var(--ass-scale-stroke)*var(--ass-tag-blur)*1px));position:absolute;top:0;left:0}.ASS-dialogue [data-border-style="1"]:before{color:var(--ass-shadow-color);-webkit-text-stroke:calc(var(--ass-scale-stroke)*var(--ass-border-width)*1px)var(--ass-shadow-color);transform:translate(calc(var(--ass-scale-stroke)*var(--ass-tag-xshad)*1px),calc(var(--ass-scale-stroke)*var(--ass-tag-yshad)*1px))}.ASS-dialogue [data-border-style="1"]:after{color:var(--ass-border-color);-webkit-text-stroke:calc(var(--ass-scale-stroke)*var(--ass-border-width)*1px)var(--ass-border-color)}.ASS-dialogue [data-border-style="1"][data-stroke=svg]{color:#000}.ASS-dialogue [data-border-style="1"][data-stroke=svg]:before,.ASS-dialogue [data-border-style="1"][data-stroke=svg]:after{opacity:0}@container style(--ass-tag-xbord:0) and style(--ass-tag-ybord:0){.ASS-dialogue [data-border-style="1"]:after{display:none}}@container style(--ass-tag-xshad:0) and style(--ass-tag-yshad:0){.ASS-dialogue [data-border-style="1"]:before{display:none}}.ASS-dialogue [data-border-style="3"]{padding:calc(var(--ass-scale-stroke)*var(--ass-tag-xbord)*1px)calc(var(--ass-scale-stroke)*var(--ass-tag-ybord)*1px);filter:blur(calc(var(--ass-scale-stroke)*var(--ass-tag-blur)*1px));position:relative}.ASS-dialogue [data-border-style="3"]:before,.ASS-dialogue [data-border-style="3"]:after{content:"";z-index:-1;width:100%;height:100%;position:absolute}.ASS-dialogue [data-border-style="3"]:before{background-color:var(--ass-shadow-color);left:calc(var(--ass-scale-stroke)*var(--ass-tag-xshad)*1px);top:calc(var(--ass-scale-stroke)*var(--ass-tag-yshad)*1px)}.ASS-dialogue [data-border-style="3"]:after{background-color:var(--ass-border-color);top:0;left:0}@container style(--ass-tag-xbord:0) and style(--ass-tag-ybord:0){.ASS-dialogue [data-border-style="3"]:after{background-color:#0000}}@container style(--ass-tag-xshad:0) and style(--ass-tag-yshad:0){.ASS-dialogue [data-border-style="3"]:before{background-color:#0000}}.ASS-dialogue [data-rotate]{transform:perspective(312.5px)rotateY(calc(var(--ass-tag-fry)*1deg))rotateX(calc(var(--ass-tag-frx)*1deg))rotateZ(calc(var(--ass-tag-frz)*-1deg))}.ASS-dialogue [data-rotate][data-text]{transform-style:preserve-3d;word-break:normal;white-space:nowrap}.ASS-dialogue [data-scale],.ASS-dialogue [data-skew]{transform:scale(var(--ass-tag-fscx),var(--ass-tag-fscy))skew(calc(var(--ass-tag-fax)*57.2958deg),calc(var(--ass-tag-fay)*57.2958deg));transform-origin:var(--ass-align-h)var(--ass-align-v);display:inline-block}.ASS-fix-font-size{visibility:hidden;width:0;height:0;font-family:Arial;line-height:normal;position:absolute;overflow:hidden}.ASS-fix-font-size span{position:absolute}.ASS-clip-area{width:100%;height:100%;position:absolute;top:0;left:0}.ASS-effect-area{width:100%;height:fit-content;display:flex;position:absolute;overflow:hidden;mask-composite:intersect}.ASS-effect-area[data-effect=banner]{flex-direction:column;height:100%}.ASS-effect-area .ASS-dialogue{position:static;transform:none}')),a.append(s))}(a),this.#e=function(t){const{video:e}=t,[a,s]=rt(e);return function(){const r=(s,n)=>{at(t,n?.mediaTime||e.currentTime),t.requestId=a(r)};s(t.requestId),t.requestId=a(r),t.actives.forEach((t=>{T(t,"play")}))}}(this.#t),this.#a=function(t){const[,e]=rt(t.video);return function(){e(t.requestId),t.requestId=0,t.actives.forEach((t=>{T(t,"pause")}))}}(this.#t),this.#s=st(this.#t),e.addEventListener("play",this.#e),e.addEventListener("pause",this.#a),e.addEventListener("playing",this.#e),e.addEventListener("waiting",this.#a),e.addEventListener("seeking",this.#s),this.#r=function(t,e){const{video:a,box:s,layoutRes:r}=e;return function(){const n=a.clientWidth,i=a.clientHeight,o=r.width||a.videoWidth||n,l=r.height||a.videoHeight||i,c=e.scriptRes.width,d=e.scriptRes.height;let f=c,p=d;const u=Math.min(n/o,i/l);"video_width"===t.resampling&&(p=c/o*l),"video_height"===t.resampling&&(f=d/l*o),e.scale=Math.min(n/f,i/p),"script_width"===t.resampling&&(e.scale=u*(o/f)),"script_height"===t.resampling&&(e.scale=u*(l/p));const h=e.scale*f,g=e.scale*p;e.width=h,e.height=g,e.resampledRes={width:f,height:p},s.style.cssText=`width:${h}px;height:${g}px;top:${(i-g)/2}px;left:${(n-h)/2}px;`,s.style.setProperty("--ass-scale",e.scale),s.style.setProperty("--ass-scale-stroke",e.sbas?e.scale:1),st(e)()}}(this,this.#t),this.#r(),this.resampling=s;const d=new ResizeObserver(this.#r);return d.observe(e),this.#t.observer=d,this}destroy(){const{video:t,box:e,observer:a}=this.#t;return this.#a(),et(this.#t),t.removeEventListener("play",this.#e),t.removeEventListener("pause",this.#a),t.removeEventListener("playing",this.#e),t.removeEventListener("waiting",this.#a),t.removeEventListener("seeking",this.#s),L&&L.remove(),e.remove(),a.unobserve(this.#t.video),this.#t.styles={},this.#t.dialogues=[],this}show(){return this.#t.box.style.visibility="visible",this}hide(){return this.#t.box.style.visibility="hidden",this}#n="video_height";get resampling(){return this.#n}set resampling(t){t!==this.#n&&/^(video|script)_(width|height)$/.test(t)&&(this.#n=t,this.#r())}get delay(){return this.#t.delay}set delay(t){"number"==typeof t&&(this.#t.delay=t,this.#s())}}}();
diff --git a/player/html/index.html b/player/html/index.html
new file mode 100644
index 0000000..0cf8a59
--- /dev/null
+++ b/player/html/index.html
@@ -0,0 +1,367 @@
+
+
+
+
+30 Box Grid
+
+
+
+
+
+
+
+
+
+