@clockworkdog/cogs-client 3.0.0-alpha.11 → 3.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser/index.mjs
CHANGED
|
@@ -4360,8 +4360,8 @@ function bt(e, t) {
|
|
|
4360
4360
|
};
|
|
4361
4361
|
}
|
|
4362
4362
|
class Me {
|
|
4363
|
-
constructor(t, n, o, i, a) {
|
|
4364
|
-
this.surfaceElement = t, this.clipElement = n, this.constructAssetURL = i, this.
|
|
4363
|
+
constructor(t, n, o, i, a, u) {
|
|
4364
|
+
this.surfaceElement = t, this.clipElement = n, this.constructAssetURL = i, this.getAudioOutput = a, this.mediaPreloader = u, this._state = o, setTimeout(this.loop);
|
|
4365
4365
|
}
|
|
4366
4366
|
isConnected(t) {
|
|
4367
4367
|
return !(!this.surfaceElement || !this.clipElement || !this.surfaceElement.contains(this.clipElement) || t && !this.clipElement.contains(t));
|
|
@@ -4389,7 +4389,7 @@ function Fe(e, t, n, o, i) {
|
|
|
4389
4389
|
e instanceof HTMLVideoElement && e.src.includes(u) ? a = e : a = i.getElement(n.file, n.type);
|
|
4390
4390
|
break;
|
|
4391
4391
|
}
|
|
4392
|
-
return t.replaceChildren(a), a.style.position = "absolute", a.style.width = "100%", a.style.height = "100%", a;
|
|
4392
|
+
return (t.children.length !== 1 || t.childNodes[0] !== a) && t.replaceChildren(a), a.style.position = "absolute", a.style.width = "100%", a.style.height = "100%", a;
|
|
4393
4393
|
}
|
|
4394
4394
|
function Qt(e, t, n) {
|
|
4395
4395
|
const o = String(t.opacity);
|
|
@@ -4466,15 +4466,16 @@ class ga extends Me {
|
|
|
4466
4466
|
this.constructAssetURL,
|
|
4467
4467
|
this.mediaPreloader
|
|
4468
4468
|
) : this.destroy(), !t || !this.audioElement) return;
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4469
|
+
const n = this.getAudioOutput(this._state.audioOutput);
|
|
4470
|
+
Yt(this.audioElement, t, n);
|
|
4471
|
+
const o = en(this.audioElement, t, this._state.keyframes, this.syncState);
|
|
4472
|
+
this.syncState.state !== "seeking" && o.state === "seeking" && this.audioElement.addEventListener(
|
|
4472
4473
|
"seeked",
|
|
4473
4474
|
() => {
|
|
4474
4475
|
this.syncState = { state: "idle" };
|
|
4475
4476
|
},
|
|
4476
4477
|
{ passive: !0, once: !0 }
|
|
4477
|
-
), this.syncState =
|
|
4478
|
+
), this.syncState = o;
|
|
4478
4479
|
}
|
|
4479
4480
|
destroy() {
|
|
4480
4481
|
this.audioElement?.remove(), this.audioElement = void 0;
|
|
@@ -4492,15 +4493,16 @@ class ya extends Me {
|
|
|
4492
4493
|
this.constructAssetURL,
|
|
4493
4494
|
this.mediaPreloader
|
|
4494
4495
|
) : this.destroy(), !t || !this.videoElement) return;
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4496
|
+
const n = this.getAudioOutput(this._state.audioOutput);
|
|
4497
|
+
Qt(this.videoElement, t, this._state.fit), Yt(this.videoElement, t, n);
|
|
4498
|
+
const o = en(this.videoElement, t, this._state.keyframes, this.syncState);
|
|
4499
|
+
this.syncState.state !== "seeking" && o.state === "seeking" && this.videoElement.addEventListener(
|
|
4498
4500
|
"seeked",
|
|
4499
4501
|
() => {
|
|
4500
4502
|
this.syncState = { state: "idle" };
|
|
4501
4503
|
},
|
|
4502
4504
|
{ passive: !0, once: !0 }
|
|
4503
|
-
), this.syncState =
|
|
4505
|
+
), this.syncState = o;
|
|
4504
4506
|
}
|
|
4505
4507
|
destroy() {
|
|
4506
4508
|
this.videoElement?.remove(), this.videoElement = void 0;
|
|
@@ -4603,13 +4605,34 @@ class Ta {
|
|
|
4603
4605
|
else
|
|
4604
4606
|
switch (o.type) {
|
|
4605
4607
|
case "image":
|
|
4606
|
-
i.manager = new va(
|
|
4608
|
+
i.manager = new va(
|
|
4609
|
+
this._element,
|
|
4610
|
+
i.element,
|
|
4611
|
+
o,
|
|
4612
|
+
this.constructAssetUrl,
|
|
4613
|
+
this.getAudioOutput,
|
|
4614
|
+
this.mediaPreloader
|
|
4615
|
+
);
|
|
4607
4616
|
break;
|
|
4608
4617
|
case "audio":
|
|
4609
|
-
i.manager = new ga(
|
|
4618
|
+
i.manager = new ga(
|
|
4619
|
+
this._element,
|
|
4620
|
+
i.element,
|
|
4621
|
+
o,
|
|
4622
|
+
this.constructAssetUrl,
|
|
4623
|
+
this.getAudioOutput,
|
|
4624
|
+
this.mediaPreloader
|
|
4625
|
+
);
|
|
4610
4626
|
break;
|
|
4611
4627
|
case "video":
|
|
4612
|
-
i.manager = new ya(
|
|
4628
|
+
i.manager = new ya(
|
|
4629
|
+
this._element,
|
|
4630
|
+
i.element,
|
|
4631
|
+
o,
|
|
4632
|
+
this.constructAssetUrl,
|
|
4633
|
+
this.getAudioOutput,
|
|
4634
|
+
this.mediaPreloader
|
|
4635
|
+
);
|
|
4613
4636
|
break;
|
|
4614
4637
|
}
|
|
4615
4638
|
});
|
|
@@ -35,4 +35,4 @@
|
|
|
35
35
|
newResult[${C}] = ${k}.value;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
`)}s.write("payload.value = newResult;"),s.write("return payload;");const _=s.compile();return(w,k)=>_(r,w,k)};let a;const u=ae,l=!st.jitless,h=l&&xn.value,y=t.catchall;let g;e._zod.parse=(r,s)=>{g??(g=o.value);const c=r.value;return u(c)?l&&h&&s?.async===!1&&s.jitless!==!0?(a||(a=i(t.shape)),r=a(r,s),y?St([],c,r,s,g,e):r):n(r,s):(r.issues.push({expected:"object",code:"invalid_type",input:c,inst:e}),r)}});function At(e,t,n,o){for(const a of e)if(a.issues.length===0)return t.value=a.value,t;const i=e.filter(a=>!Q(a));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(a=>a.issues.map(u=>U(u,o,N())))}),t)}const kr=m("$ZodUnion",(e,t)=>{S.init(e,t),E(e._zod,"optin",()=>t.options.some(i=>i._zod.optin==="optional")?"optional":void 0),E(e._zod,"optout",()=>t.options.some(i=>i._zod.optout==="optional")?"optional":void 0),E(e._zod,"values",()=>{if(t.options.every(i=>i._zod.values))return new Set(t.options.flatMap(i=>Array.from(i._zod.values)))}),E(e._zod,"pattern",()=>{if(t.options.every(i=>i._zod.pattern)){const i=t.options.map(a=>a._zod.pattern);return new RegExp(`^(${i.map(a=>ze(a.source)).join("|")})$`)}});const n=t.options.length===1,o=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return o(i,a);let u=!1;const l=[];for(const p of t.options){const h=p._zod.run({value:i.value,issues:[]},a);if(h instanceof Promise)l.push(h),u=!0;else{if(h.issues.length===0)return h;l.push(h)}}return u?Promise.all(l).then(p=>At(p,i,e,a)):At(l,i,e,a)}}),Cr=m("$ZodIntersection",(e,t)=>{S.init(e,t),e._zod.parse=(n,o)=>{const i=n.value,a=t.left._zod.run({value:i,issues:[]},o),u=t.right._zod.run({value:i,issues:[]},o);return a instanceof Promise||u instanceof Promise?Promise.all([a,u]).then(([p,h])=>Tt(n,p,h)):Tt(n,a,u)}});function Ze(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(H(e)&&H(t)){const n=Object.keys(t),o=Object.keys(e).filter(a=>n.indexOf(a)!==-1),i={...e,...t};for(const a of o){const u=Ze(e[a],t[a]);if(!u.valid)return{valid:!1,mergeErrorPath:[a,...u.mergeErrorPath]};i[a]=u.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let o=0;o<e.length;o++){const i=e[o],a=t[o],u=Ze(i,a);if(!u.valid)return{valid:!1,mergeErrorPath:[o,...u.mergeErrorPath]};n.push(u.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Tt(e,t,n){if(t.issues.length&&e.issues.push(...t.issues),n.issues.length&&e.issues.push(...n.issues),Q(e))return e;const o=Ze(t.value,n.value);if(!o.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}const Er=m("$ZodTuple",(e,t)=>{S.init(e,t);const n=t.items;e._zod.parse=(o,i)=>{const a=o.value;if(!Array.isArray(a))return o.issues.push({input:a,inst:e,expected:"tuple",code:"invalid_type"}),o;o.value=[];const u=[],l=[...n].reverse().findIndex(y=>y._zod.optin!=="optional"),p=l===-1?0:n.length-l;if(!t.rest){const y=a.length>n.length,g=a.length<p-1;if(y||g)return o.issues.push({...y?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},input:a,inst:e,origin:"array"}),o}let h=-1;for(const y of n){if(h++,h>=a.length&&h>=p)continue;const g=y._zod.run({value:a[h],issues:[]},i);g instanceof Promise?u.push(g.then(r=>fe(r,o,h))):fe(g,o,h)}if(t.rest){const y=a.slice(n.length);for(const g of y){h++;const r=t.rest._zod.run({value:g,issues:[]},i);r instanceof Promise?u.push(r.then(s=>fe(s,o,h))):fe(r,o,h)}}return u.length?Promise.all(u).then(()=>o):o}});function fe(e,t,n){e.issues.length&&t.issues.push(...B(n,e.issues)),t.value[n]=e.value}const Sr=m("$ZodRecord",(e,t)=>{S.init(e,t),e._zod.parse=(n,o)=>{const i=n.value;if(!H(i))return n.issues.push({expected:"record",code:"invalid_type",input:i,inst:e}),n;const a=[],u=t.keyType._zod.values;if(u){n.value={};const l=new Set;for(const h of u)if(typeof h=="string"||typeof h=="number"||typeof h=="symbol"){l.add(typeof h=="number"?h.toString():h);const y=t.valueType._zod.run({value:i[h],issues:[]},o);y instanceof Promise?a.push(y.then(g=>{g.issues.length&&n.issues.push(...B(h,g.issues)),n.value[h]=g.value})):(y.issues.length&&n.issues.push(...B(h,y.issues)),n.value[h]=y.value)}let p;for(const h in i)l.has(h)||(p=p??[],p.push(h));p&&p.length>0&&n.issues.push({code:"unrecognized_keys",input:i,inst:e,keys:p})}else{n.value={};for(const l of Reflect.ownKeys(i)){if(l==="__proto__")continue;const p=t.keyType._zod.run({value:l,issues:[]},o);if(p instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(p.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map(y=>U(y,o,N())),input:l,path:[l],inst:e}),n.value[p.value]=p.value;continue}const h=t.valueType._zod.run({value:i[l],issues:[]},o);h instanceof Promise?a.push(h.then(y=>{y.issues.length&&n.issues.push(...B(l,y.issues)),n.value[p.value]=y.value})):(h.issues.length&&n.issues.push(...B(l,h.issues)),n.value[p.value]=h.value)}}return a.length?Promise.all(a).then(()=>n):n}}),Ar=m("$ZodEnum",(e,t)=>{S.init(e,t);const n=$n(t.entries),o=new Set(n);e._zod.values=o,e._zod.pattern=new RegExp(`^(${n.filter(i=>Ln.has(typeof i)).map(i=>typeof i=="string"?J(i):i.toString()).join("|")})$`),e._zod.parse=(i,a)=>{const u=i.value;return o.has(u)||i.issues.push({code:"invalid_value",values:n,input:u,inst:e}),i}}),Tr=m("$ZodLiteral",(e,t)=>{if(S.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");const n=new Set(t.values);e._zod.values=n,e._zod.pattern=new RegExp(`^(${t.values.map(o=>typeof o=="string"?J(o):o?J(o.toString()):String(o)).join("|")})$`),e._zod.parse=(o,i)=>{const a=o.value;return n.has(a)||o.issues.push({code:"invalid_value",values:t.values,input:a,inst:e}),o}}),zr=m("$ZodTransform",(e,t)=>{S.init(e,t),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new it(e.constructor.name);const i=t.transform(n.value,n);if(o.async)return(i instanceof Promise?i:Promise.resolve(i)).then(u=>(n.value=u,n));if(i instanceof Promise)throw new K;return n.value=i,n}});function zt(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const Ir=m("$ZodOptional",(e,t)=>{S.init(e,t),e._zod.optin="optional",e._zod.optout="optional",E(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),E(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${ze(n.source)})?$`):void 0}),e._zod.parse=(n,o)=>{if(t.innerType._zod.optin==="optional"){const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>zt(a,n.value)):zt(i,n.value)}return n.value===void 0?n:t.innerType._zod.run(n,o)}}),Or=m("$ZodNullable",(e,t)=>{S.init(e,t),E(e._zod,"optin",()=>t.innerType._zod.optin),E(e._zod,"optout",()=>t.innerType._zod.optout),E(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${ze(n.source)}|null)$`):void 0}),E(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(n,o)=>n.value===null?n:t.innerType._zod.run(n,o)}),$r=m("$ZodDefault",(e,t)=>{S.init(e,t),e._zod.optin="optional",E(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)return n.value=t.defaultValue,n;const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>It(a,t)):It(i,t)}});function It(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Pr=m("$ZodPrefault",(e,t)=>{S.init(e,t),e._zod.optin="optional",E(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>(o.direction==="backward"||n.value===void 0&&(n.value=t.defaultValue),t.innerType._zod.run(n,o))}),Zr=m("$ZodNonOptional",(e,t)=>{S.init(e,t),E(e._zod,"values",()=>{const n=t.innerType._zod.values;return n?new Set([...n].filter(o=>o!==void 0)):void 0}),e._zod.parse=(n,o)=>{const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>Ot(a,e)):Ot(i,e)}});function Ot(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const xr=m("$ZodCatch",(e,t)=>{S.init(e,t),E(e._zod,"optin",()=>t.innerType._zod.optin),E(e._zod,"optout",()=>t.innerType._zod.optout),E(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>(n.value=a.value,a.issues.length&&(n.value=t.catchValue({...n,error:{issues:a.issues.map(u=>U(u,o,N()))},input:n.value}),n.issues=[]),n)):(n.value=i.value,i.issues.length&&(n.value=t.catchValue({...n,error:{issues:i.issues.map(a=>U(a,o,N()))},input:n.value}),n.issues=[]),n)}}),Lr=m("$ZodPipe",(e,t)=>{S.init(e,t),E(e._zod,"values",()=>t.in._zod.values),E(e._zod,"optin",()=>t.in._zod.optin),E(e._zod,"optout",()=>t.out._zod.optout),E(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(n,o)=>{if(o.direction==="backward"){const a=t.out._zod.run(n,o);return a instanceof Promise?a.then(u=>he(u,t.in,o)):he(a,t.in,o)}const i=t.in._zod.run(n,o);return i instanceof Promise?i.then(a=>he(a,t.out,o)):he(i,t.out,o)}});function he(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const Rr=m("$ZodReadonly",(e,t)=>{S.init(e,t),E(e._zod,"propValues",()=>t.innerType._zod.propValues),E(e._zod,"values",()=>t.innerType._zod.values),E(e._zod,"optin",()=>t.innerType?._zod?.optin),E(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then($t):$t(i)}});function $t(e){return e.value=Object.freeze(e.value),e}const jr=m("$ZodCustom",(e,t)=>{P.init(e,t),S.init(e,t),e._zod.parse=(n,o)=>n,e._zod.check=n=>{const o=n.value,i=t.fn(o);if(i instanceof Promise)return i.then(a=>Pt(a,n,o,e));Pt(i,n,o,e)}});function Pt(e,t,n,o){if(!e){const i={code:"custom",input:n,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};o._zod.def.params&&(i.params=o._zod.def.params),t.issues.push(re(i))}}var Zt;class Nr{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...n){const o=n[0];if(this._map.set(t,o),o&&typeof o=="object"&&"id"in o){if(this._idmap.has(o.id))throw new Error(`ID ${o.id} already exists in the registry`);this._idmap.set(o.id,t)}return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const n=this._map.get(t);return n&&typeof n=="object"&&"id"in n&&this._idmap.delete(n.id),this._map.delete(t),this}get(t){const n=t._zod.parent;if(n){const o={...this.get(n)??{}};delete o.id;const i={...o,...this._map.get(t)};return Object.keys(i).length?i:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function Dr(){return new Nr}(Zt=globalThis).__zod_globalRegistry??(Zt.__zod_globalRegistry=Dr());const _e=globalThis.__zod_globalRegistry;function Ur(e,t){return new e({type:"string",...b(t)})}function Mr(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...b(t)})}function xt(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...b(t)})}function Fr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...b(t)})}function Vr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...b(t)})}function Br(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...b(t)})}function Gr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...b(t)})}function Wr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...b(t)})}function qr(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...b(t)})}function Kr(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...b(t)})}function Hr(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...b(t)})}function Jr(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...b(t)})}function Qr(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...b(t)})}function Yr(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...b(t)})}function Xr(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...b(t)})}function ei(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...b(t)})}function ti(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...b(t)})}function ni(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...b(t)})}function oi(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...b(t)})}function ri(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...b(t)})}function ii(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...b(t)})}function si(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...b(t)})}function ai(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...b(t)})}function ui(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...b(t)})}function ci(e,t){return new e({type:"string",format:"date",check:"string_format",...b(t)})}function li(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...b(t)})}function di(e,t){return new e({type:"string",format:"duration",check:"string_format",...b(t)})}function pi(e,t){return new e({type:"number",checks:[],...b(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...b(t)})}function hi(e,t){return new e({type:"null",...b(t)})}function _i(e){return new e({type:"unknown"})}function mi(e,t){return new e({type:"never",...b(t)})}function Lt(e,t){return new yt({check:"less_than",...b(t),value:e,inclusive:!1})}function xe(e,t){return new yt({check:"less_than",...b(t),value:e,inclusive:!0})}function Rt(e,t){return new bt({check:"greater_than",...b(t),value:e,inclusive:!1})}function Le(e,t){return new bt({check:"greater_than",...b(t),value:e,inclusive:!0})}function jt(e,t){return new Oo({check:"multiple_of",...b(t),value:e})}function Nt(e,t){return new Po({check:"max_length",...b(t),maximum:e})}function me(e,t){return new Zo({check:"min_length",...b(t),minimum:e})}function Dt(e,t){return new xo({check:"length_equals",...b(t),length:e})}function vi(e,t){return new Lo({check:"string_format",format:"regex",...b(t),pattern:e})}function gi(e){return new Ro({check:"string_format",format:"lowercase",...b(e)})}function yi(e){return new jo({check:"string_format",format:"uppercase",...b(e)})}function bi(e,t){return new No({check:"string_format",format:"includes",...b(t),includes:e})}function wi(e,t){return new Do({check:"string_format",format:"starts_with",...b(t),prefix:e})}function ki(e,t){return new Uo({check:"string_format",format:"ends_with",...b(t),suffix:e})}function Y(e){return new Mo({check:"overwrite",tx:e})}function Ci(e){return Y(t=>t.normalize(e))}function Ei(){return Y(e=>e.trim())}function Si(){return Y(e=>e.toLowerCase())}function Ai(){return Y(e=>e.toUpperCase())}function Ti(){return Y(e=>Zn(e))}function zi(e,t,n){return new e({type:"array",element:t,...b(n)})}function Ii(e,t,n){return new e({type:"custom",check:"custom",fn:t,...b(n)})}function Oi(e){const t=$i(n=>(n.addIssue=o=>{if(typeof o=="string")n.issues.push(re(o,n.value,t._zod.def));else{const i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),n.issues.push(re(i))}},e(n.value,n)));return t}function $i(e,t){const n=new P({check:"custom",...b(t)});return n._zod.check=e,n}const Pi=m("ZodISODateTime",(e,t)=>{tr.init(e,t),$.init(e,t)});function Zi(e){return ui(Pi,e)}const xi=m("ZodISODate",(e,t)=>{nr.init(e,t),$.init(e,t)});function Li(e){return ci(xi,e)}const Ri=m("ZodISOTime",(e,t)=>{or.init(e,t),$.init(e,t)});function ji(e){return li(Ri,e)}const Ni=m("ZodISODuration",(e,t)=>{rr.init(e,t),$.init(e,t)});function Di(e){return di(Ni,e)}const Z=m("ZodError",(e,t)=>{pt.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>Wn(e,n)},flatten:{value:n=>Gn(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,Se,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,Se,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),Ui=Oe(Z),Mi=$e(Z),Fi=ce(Z),Vi=le(Z),Bi=Hn(Z),Gi=Jn(Z),Wi=Qn(Z),qi=Yn(Z),Ki=Xn(Z),Hi=eo(Z),Ji=to(Z),Qi=no(Z),O=m("ZodType",(e,t)=>(S.init(e,t),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(V(t,{checks:[...t.checks??[],...n.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]})),e.clone=(n,o)=>D(e,n,o),e.brand=()=>e,e.register=(n,o)=>(n.add(e,o),e),e.parse=(n,o)=>Ui(e,n,o,{callee:e.parse}),e.safeParse=(n,o)=>Fi(e,n,o),e.parseAsync=async(n,o)=>Mi(e,n,o,{callee:e.parseAsync}),e.safeParseAsync=async(n,o)=>Vi(e,n,o),e.spa=e.safeParseAsync,e.encode=(n,o)=>Bi(e,n,o),e.decode=(n,o)=>Gi(e,n,o),e.encodeAsync=async(n,o)=>Wi(e,n,o),e.decodeAsync=async(n,o)=>qi(e,n,o),e.safeEncode=(n,o)=>Ki(e,n,o),e.safeDecode=(n,o)=>Hi(e,n,o),e.safeEncodeAsync=async(n,o)=>Ji(e,n,o),e.safeDecodeAsync=async(n,o)=>Qi(e,n,o),e.refine=(n,o)=>e.check(qs(n,o)),e.superRefine=n=>e.check(Ks(n)),e.overwrite=n=>e.check(Y(n)),e.optional=()=>Wt(e),e.nullable=()=>qt(e),e.nullish=()=>Wt(qt(e)),e.nonoptional=n=>Us(e,n),e.array=()=>Cs(e),e.or=n=>G([e,n]),e.and=n=>Ts(e,n),e.transform=n=>Ht(e,xs(n)),e.default=n=>js(e,n),e.prefault=n=>Ds(e,n),e.catch=n=>Fs(e,n),e.pipe=n=>Ht(e,n),e.readonly=()=>Gs(e),e.describe=n=>{const o=e.clone();return _e.add(o,{description:n}),o},Object.defineProperty(e,"description",{get(){return _e.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return _e.get(e);const o=e.clone();return _e.add(o,n[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),Ut=m("_ZodString",(e,t)=>{Pe.init(e,t),O.init(e,t);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...o)=>e.check(vi(...o)),e.includes=(...o)=>e.check(bi(...o)),e.startsWith=(...o)=>e.check(wi(...o)),e.endsWith=(...o)=>e.check(ki(...o)),e.min=(...o)=>e.check(me(...o)),e.max=(...o)=>e.check(Nt(...o)),e.length=(...o)=>e.check(Dt(...o)),e.nonempty=(...o)=>e.check(me(1,...o)),e.lowercase=o=>e.check(gi(o)),e.uppercase=o=>e.check(yi(o)),e.trim=()=>e.check(Ei()),e.normalize=(...o)=>e.check(Ci(...o)),e.toLowerCase=()=>e.check(Si()),e.toUpperCase=()=>e.check(Ai()),e.slugify=()=>e.check(Ti())}),Yi=m("ZodString",(e,t)=>{Pe.init(e,t),Ut.init(e,t),e.email=n=>e.check(Mr(Xi,n)),e.url=n=>e.check(Wr(es,n)),e.jwt=n=>e.check(ai(_s,n)),e.emoji=n=>e.check(qr(ts,n)),e.guid=n=>e.check(xt(Mt,n)),e.uuid=n=>e.check(Fr(ve,n)),e.uuidv4=n=>e.check(Vr(ve,n)),e.uuidv6=n=>e.check(Br(ve,n)),e.uuidv7=n=>e.check(Gr(ve,n)),e.nanoid=n=>e.check(Kr(ns,n)),e.guid=n=>e.check(xt(Mt,n)),e.cuid=n=>e.check(Hr(os,n)),e.cuid2=n=>e.check(Jr(rs,n)),e.ulid=n=>e.check(Qr(is,n)),e.base64=n=>e.check(ri(ps,n)),e.base64url=n=>e.check(ii(fs,n)),e.xid=n=>e.check(Yr(ss,n)),e.ksuid=n=>e.check(Xr(as,n)),e.ipv4=n=>e.check(ei(us,n)),e.ipv6=n=>e.check(ti(cs,n)),e.cidrv4=n=>e.check(ni(ls,n)),e.cidrv6=n=>e.check(oi(ds,n)),e.e164=n=>e.check(si(hs,n)),e.datetime=n=>e.check(Zi(n)),e.date=n=>e.check(Li(n)),e.time=n=>e.check(ji(n)),e.duration=n=>e.check(Di(n))});function X(e){return Ur(Yi,e)}const $=m("ZodStringFormat",(e,t)=>{T.init(e,t),Ut.init(e,t)}),Xi=m("ZodEmail",(e,t)=>{Wo.init(e,t),$.init(e,t)}),Mt=m("ZodGUID",(e,t)=>{Bo.init(e,t),$.init(e,t)}),ve=m("ZodUUID",(e,t)=>{Go.init(e,t),$.init(e,t)}),es=m("ZodURL",(e,t)=>{qo.init(e,t),$.init(e,t)}),ts=m("ZodEmoji",(e,t)=>{Ko.init(e,t),$.init(e,t)}),ns=m("ZodNanoID",(e,t)=>{Ho.init(e,t),$.init(e,t)}),os=m("ZodCUID",(e,t)=>{Jo.init(e,t),$.init(e,t)}),rs=m("ZodCUID2",(e,t)=>{Qo.init(e,t),$.init(e,t)}),is=m("ZodULID",(e,t)=>{Yo.init(e,t),$.init(e,t)}),ss=m("ZodXID",(e,t)=>{Xo.init(e,t),$.init(e,t)}),as=m("ZodKSUID",(e,t)=>{er.init(e,t),$.init(e,t)}),us=m("ZodIPv4",(e,t)=>{ir.init(e,t),$.init(e,t)}),cs=m("ZodIPv6",(e,t)=>{sr.init(e,t),$.init(e,t)}),ls=m("ZodCIDRv4",(e,t)=>{ar.init(e,t),$.init(e,t)}),ds=m("ZodCIDRv6",(e,t)=>{ur.init(e,t),$.init(e,t)}),ps=m("ZodBase64",(e,t)=>{cr.init(e,t),$.init(e,t)}),fs=m("ZodBase64URL",(e,t)=>{dr.init(e,t),$.init(e,t)}),hs=m("ZodE164",(e,t)=>{pr.init(e,t),$.init(e,t)}),_s=m("ZodJWT",(e,t)=>{hr.init(e,t),$.init(e,t)}),Ft=m("ZodNumber",(e,t)=>{kt.init(e,t),O.init(e,t),e.gt=(o,i)=>e.check(Rt(o,i)),e.gte=(o,i)=>e.check(Le(o,i)),e.min=(o,i)=>e.check(Le(o,i)),e.lt=(o,i)=>e.check(Lt(o,i)),e.lte=(o,i)=>e.check(xe(o,i)),e.max=(o,i)=>e.check(xe(o,i)),e.int=o=>e.check(Vt(o)),e.safe=o=>e.check(Vt(o)),e.positive=o=>e.check(Rt(0,o)),e.nonnegative=o=>e.check(Le(0,o)),e.negative=o=>e.check(Lt(0,o)),e.nonpositive=o=>e.check(xe(0,o)),e.multipleOf=(o,i)=>e.check(jt(o,i)),e.step=(o,i)=>e.check(jt(o,i)),e.finite=()=>e;const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function x(e){return pi(Ft,e)}const ms=m("ZodNumberFormat",(e,t)=>{_r.init(e,t),Ft.init(e,t)});function Vt(e){return fi(ms,e)}const vs=m("ZodNull",(e,t)=>{mr.init(e,t),O.init(e,t)});function gs(e){return hi(vs,e)}const ys=m("ZodUnknown",(e,t)=>{vr.init(e,t),O.init(e,t)});function Bt(){return _i(ys)}const bs=m("ZodNever",(e,t)=>{gr.init(e,t),O.init(e,t)});function ws(e){return mi(bs,e)}const ks=m("ZodArray",(e,t)=>{yr.init(e,t),O.init(e,t),e.element=t.element,e.min=(n,o)=>e.check(me(n,o)),e.nonempty=n=>e.check(me(1,n)),e.max=(n,o)=>e.check(Nt(n,o)),e.length=(n,o)=>e.check(Dt(n,o)),e.unwrap=()=>e.element});function Cs(e,t){return zi(ks,e,t)}const Es=m("ZodObject",(e,t)=>{wr.init(e,t),O.init(e,t),E(e,"shape",()=>t.shape),e.keyof=()=>$s(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Bt()}),e.loose=()=>e.clone({...e._zod.def,catchall:Bt()}),e.strict=()=>e.clone({...e._zod.def,catchall:ws()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>Un(e,n),e.safeExtend=n=>Mn(e,n),e.merge=n=>Fn(e,n),e.pick=n=>Nn(e,n),e.omit=n=>Dn(e,n),e.partial=(...n)=>Vn(Gt,e,n[0]),e.required=(...n)=>Bn(Kt,e,n[0])});function z(e,t){const n={type:"object",shape:e??{},...b(t)};return new Es(n)}const Ss=m("ZodUnion",(e,t)=>{kr.init(e,t),O.init(e,t),e.options=t.options});function G(e,t){return new Ss({type:"union",options:e,...b(t)})}const As=m("ZodIntersection",(e,t)=>{Cr.init(e,t),O.init(e,t)});function Ts(e,t){return new As({type:"intersection",left:e,right:t})}const zs=m("ZodTuple",(e,t)=>{Er.init(e,t),O.init(e,t),e.rest=n=>e.clone({...e._zod.def,rest:n})});function L(e,t,n){const o=t instanceof S,i=o?n:t,a=o?t:null;return new zs({type:"tuple",items:e,rest:a,...b(i)})}const Is=m("ZodRecord",(e,t)=>{Sr.init(e,t),O.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType});function Os(e,t,n){return new Is({type:"record",keyType:e,valueType:t,...b(n)})}const Re=m("ZodEnum",(e,t)=>{Ar.init(e,t),O.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(o,i)=>{const a={};for(const u of o)if(n.has(u))a[u]=t.entries[u];else throw new Error(`Key ${u} not found in enum`);return new Re({...t,checks:[],...b(i),entries:a})},e.exclude=(o,i)=>{const a={...t.entries};for(const u of o)if(n.has(u))delete a[u];else throw new Error(`Key ${u} not found in enum`);return new Re({...t,checks:[],...b(i),entries:a})}});function $s(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(o=>[o,o])):e;return new Re({type:"enum",entries:n,...b(t)})}const Ps=m("ZodLiteral",(e,t)=>{Tr.init(e,t),O.init(e,t),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function j(e,t){return new Ps({type:"literal",values:Array.isArray(e)?e:[e],...b(t)})}const Zs=m("ZodTransform",(e,t)=>{zr.init(e,t),O.init(e,t),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new it(e.constructor.name);n.addIssue=a=>{if(typeof a=="string")n.issues.push(re(a,n.value,t));else{const u=a;u.fatal&&(u.continue=!1),u.code??(u.code="custom"),u.input??(u.input=n.value),u.inst??(u.inst=e),n.issues.push(re(u))}};const i=t.transform(n.value,n);return i instanceof Promise?i.then(a=>(n.value=a,n)):(n.value=i,n)}});function xs(e){return new Zs({type:"transform",transform:e})}const Gt=m("ZodOptional",(e,t)=>{Ir.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Wt(e){return new Gt({type:"optional",innerType:e})}const Ls=m("ZodNullable",(e,t)=>{Or.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function qt(e){return new Ls({type:"nullable",innerType:e})}const Rs=m("ZodDefault",(e,t)=>{$r.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function js(e,t){return new Rs({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():lt(t)}})}const Ns=m("ZodPrefault",(e,t)=>{Pr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Ds(e,t){return new Ns({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():lt(t)}})}const Kt=m("ZodNonOptional",(e,t)=>{Zr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Us(e,t){return new Kt({type:"nonoptional",innerType:e,...b(t)})}const Ms=m("ZodCatch",(e,t)=>{xr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Fs(e,t){return new Ms({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const Vs=m("ZodPipe",(e,t)=>{Lr.init(e,t),O.init(e,t),e.in=t.in,e.out=t.out});function Ht(e,t){return new Vs({type:"pipe",in:e,out:t})}const Bs=m("ZodReadonly",(e,t)=>{Rr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Gs(e){return new Bs({type:"readonly",innerType:e})}const Ws=m("ZodCustom",(e,t)=>{jr.init(e,t),O.init(e,t)});function qs(e,t={}){return Ii(Ws,e,t)}function Ks(e){return Oi(e)}const ge=z({t:x().gte(0),rate:x().gte(0)}),ee=z({opacity:x().gte(0).lte(1),zIndex:x().default(0)}),te=z({volume:x().gte(0).lte(1)}),Hs=z({type:j("image"),file:X(),fit:G([j("contain"),j("cover"),j("none")])}),Js=z({type:j("audio"),file:X(),audioOutput:X()}),Qs=z({type:j("video"),file:X(),audioOutput:X(),fit:G([j("contain"),j("cover"),j("none")])}),je=L([x(),gs()]),Ys=L([x(),z({set:z({...ee.shape}).partial()}).partial()]),Xs=L([x(),z({set:z({...ee.shape}).partial(),lerp:z({...ee.shape}).partial()}).partial()]),ea=L([x(),z({set:z({...ge.shape,...te.shape}).partial()}).partial()]),ta=L([x(),z({set:z({...ge.shape,...te.shape}).partial(),lerp:z({...te.shape}).partial()}).partial()]),na=L([x(),z({set:z({...ge.shape,...te.shape,...ee.shape}).partial()}).partial()]),oa=L([x(),z({set:z({...ge.shape,...te.shape,...ee.shape}).partial(),lerp:z({...te.shape,...ee.shape}).partial()}).partial()]),ra=z({...Hs.shape,keyframes:L([Xs],G([Ys,je]))}),ia=z({...Js.shape,keyframes:L([ta],G([ea,je]))}),sa=z({...Qs.shape,keyframes:L([oa],G([na,je]))}),aa=Os(X(),G([ra,ia,sa])),Jt={opacity:1,zIndex:0},Ne={t:0,rate:1,volume:1},Qt={t:0,rate:1,volume:1,opacity:1,zIndex:0},ua=Object.freeze(Object.defineProperty({__proto__:null,MediaSurfaceStateSchema:aa,defaultAudioOptions:Ne,defaultImageOptions:Jt,defaultVideoOptions:Qt},Symbol.toStringTag,{value:"Module"}));var De={},Yt;function ca(){return Yt||(Yt=1,function(e){var t={};/*! howler.js v2.2.1 | (c) 2013-2020, James Simpson of GoldFire Studios | MIT License | howlerjs.com */(function(){var n=function(){this.init()};n.prototype={init:function(){var r=this||o;return r._counter=1e3,r._html5AudioPool=[],r.html5PoolSize=10,r._codecs={},r._howls=[],r._muted=!1,r._volume=1,r._canPlayEvent="canplaythrough",r._navigator=typeof window<"u"&&window.navigator?window.navigator:null,r.masterGain=null,r.noAudio=!1,r.usingWebAudio=!0,r.autoSuspend=!0,r.ctx=null,r.autoUnlock=!0,r._setup(),r},volume:function(r){var s=this||o;if(r=parseFloat(r),s.ctx||g(),r!==void 0&&r>=0&&r<=1){if(s._volume=r,s._muted)return s;s.usingWebAudio&&s.masterGain.gain.setValueAtTime(r,o.ctx.currentTime);for(var c=0;c<s._howls.length;c++)if(!s._howls[c]._webAudio)for(var d=s._howls[c]._getSoundIds(),f=0;f<d.length;f++){var v=s._howls[c]._soundById(d[f]);v&&v._node&&(v._node.volume=v._volume*r)}return s}return s._volume},mute:function(r){var s=this||o;s.ctx||g(),s._muted=r,s.usingWebAudio&&s.masterGain.gain.setValueAtTime(r?0:s._volume,o.ctx.currentTime);for(var c=0;c<s._howls.length;c++)if(!s._howls[c]._webAudio)for(var d=s._howls[c]._getSoundIds(),f=0;f<d.length;f++){var v=s._howls[c]._soundById(d[f]);v&&v._node&&(v._node.muted=!!r||v._muted)}return s},stop:function(){for(var r=this||o,s=0;s<r._howls.length;s++)r._howls[s].stop();return r},unload:function(){for(var r=this||o,s=r._howls.length-1;s>=0;s--)r._howls[s].unload();return r.usingWebAudio&&r.ctx&&r.ctx.close!==void 0&&(r.ctx.close(),r.ctx=null,g()),r},codecs:function(r){return(this||o)._codecs[r.replace(/^x-/,"")]},_setup:function(){var r=this||o;if(r.state=r.ctx&&r.ctx.state||"suspended",r._autoSuspend(),!r.usingWebAudio)if(typeof Audio<"u")try{var s=new Audio;s.oncanplaythrough===void 0&&(r._canPlayEvent="canplay")}catch{r.noAudio=!0}else r.noAudio=!0;try{var s=new Audio;s.muted&&(r.noAudio=!0)}catch{}return r.noAudio||r._setupCodecs(),r},_setupCodecs:function(){var r=this||o,s=null;try{s=typeof Audio<"u"?new Audio:null}catch{return r}if(!s||typeof s.canPlayType!="function")return r;var c=s.canPlayType("audio/mpeg;").replace(/^no$/,""),d=r._navigator&&r._navigator.userAgent.match(/OPR\/([0-6].)/g),f=d&&parseInt(d[0].split("/")[1],10)<33;return r._codecs={mp3:!(f||!c&&!s.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!c,opus:!!s.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!s.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!s.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(s.canPlayType('audio/wav; codecs="1"')||s.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!s.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!s.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(s.canPlayType("audio/x-m4a;")||s.canPlayType("audio/m4a;")||s.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(s.canPlayType("audio/x-m4b;")||s.canPlayType("audio/m4b;")||s.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(s.canPlayType("audio/x-mp4;")||s.canPlayType("audio/mp4;")||s.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!s.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),webm:!!s.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),dolby:!!s.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(s.canPlayType("audio/x-flac;")||s.canPlayType("audio/flac;")).replace(/^no$/,"")},r},_unlockAudio:function(){var r=this||o;if(!r._audioUnlocked&&r.ctx){r._audioUnlocked=!1,r.autoUnlock=!1,r._mobileUnloaded||r.ctx.sampleRate===44100||(r._mobileUnloaded=!0,r.unload()),r._scratchBuffer=r.ctx.createBuffer(1,1,22050);var s=function(c){for(;r._html5AudioPool.length<r.html5PoolSize;)try{var d=new Audio;d._unlocked=!0,r._releaseHtml5Audio(d)}catch{r.noAudio=!0;break}for(var f=0;f<r._howls.length;f++)if(!r._howls[f]._webAudio)for(var v=r._howls[f]._getSoundIds(),_=0;_<v.length;_++){var w=r._howls[f]._soundById(v[_]);w&&w._node&&!w._node._unlocked&&(w._node._unlocked=!0,w._node.load())}r._autoResume();var k=r.ctx.createBufferSource();k.buffer=r._scratchBuffer,k.connect(r.ctx.destination),k.start===void 0?k.noteOn(0):k.start(0),typeof r.ctx.resume=="function"&&r.ctx.resume(),k.onended=function(){k.disconnect(0),r._audioUnlocked=!0,document.removeEventListener("touchstart",s,!0),document.removeEventListener("touchend",s,!0),document.removeEventListener("click",s,!0);for(var C=0;C<r._howls.length;C++)r._howls[C]._emit("unlock")}};return document.addEventListener("touchstart",s,!0),document.addEventListener("touchend",s,!0),document.addEventListener("click",s,!0),r}},_obtainHtml5Audio:function(){var r=this||o;if(r._html5AudioPool.length)return r._html5AudioPool.pop();var s=new Audio().play();return s&&typeof Promise<"u"&&(s instanceof Promise||typeof s.then=="function")&&s.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(r){var s=this||o;return r._unlocked&&s._html5AudioPool.push(r),s},_autoSuspend:function(){var r=this;if(r.autoSuspend&&r.ctx&&r.ctx.suspend!==void 0&&o.usingWebAudio){for(var s=0;s<r._howls.length;s++)if(r._howls[s]._webAudio){for(var c=0;c<r._howls[s]._sounds.length;c++)if(!r._howls[s]._sounds[c]._paused)return r}return r._suspendTimer&&clearTimeout(r._suspendTimer),r._suspendTimer=setTimeout(function(){if(r.autoSuspend){r._suspendTimer=null,r.state="suspending";var d=function(){r.state="suspended",r._resumeAfterSuspend&&(delete r._resumeAfterSuspend,r._autoResume())};r.ctx.suspend().then(d,d)}},3e4),r}},_autoResume:function(){var r=this;if(r.ctx&&r.ctx.resume!==void 0&&o.usingWebAudio)return r.state==="running"&&r.ctx.state!=="interrupted"&&r._suspendTimer?(clearTimeout(r._suspendTimer),r._suspendTimer=null):r.state==="suspended"||r.state==="running"&&r.ctx.state==="interrupted"?(r.ctx.resume().then(function(){r.state="running";for(var s=0;s<r._howls.length;s++)r._howls[s]._emit("resume")}),r._suspendTimer&&(clearTimeout(r._suspendTimer),r._suspendTimer=null)):r.state==="suspending"&&(r._resumeAfterSuspend=!0),r}};var o=new n,i=function(r){var s=this;if(!r.src||r.src.length===0)return void console.error("An array of source files must be passed with any new Howl.");s.init(r)};i.prototype={init:function(r){var s=this;return o.ctx||g(),s._autoplay=r.autoplay||!1,s._format=typeof r.format!="string"?r.format:[r.format],s._html5=r.html5||!1,s._muted=r.mute||!1,s._loop=r.loop||!1,s._pool=r.pool||5,s._preload=typeof r.preload!="boolean"&&r.preload!=="metadata"||r.preload,s._rate=r.rate||1,s._sprite=r.sprite||{},s._src=typeof r.src!="string"?r.src:[r.src],s._volume=r.volume!==void 0?r.volume:1,s._xhr={method:r.xhr&&r.xhr.method?r.xhr.method:"GET",headers:r.xhr&&r.xhr.headers?r.xhr.headers:null,withCredentials:!(!r.xhr||!r.xhr.withCredentials)&&r.xhr.withCredentials},s._duration=0,s._state="unloaded",s._sounds=[],s._endTimers={},s._queue=[],s._playLock=!1,s._onend=r.onend?[{fn:r.onend}]:[],s._onfade=r.onfade?[{fn:r.onfade}]:[],s._onload=r.onload?[{fn:r.onload}]:[],s._onloaderror=r.onloaderror?[{fn:r.onloaderror}]:[],s._onplayerror=r.onplayerror?[{fn:r.onplayerror}]:[],s._onpause=r.onpause?[{fn:r.onpause}]:[],s._onplay=r.onplay?[{fn:r.onplay}]:[],s._onstop=r.onstop?[{fn:r.onstop}]:[],s._onmute=r.onmute?[{fn:r.onmute}]:[],s._onvolume=r.onvolume?[{fn:r.onvolume}]:[],s._onrate=r.onrate?[{fn:r.onrate}]:[],s._onseek=r.onseek?[{fn:r.onseek}]:[],s._onunlock=r.onunlock?[{fn:r.onunlock}]:[],s._onresume=[],s._webAudio=o.usingWebAudio&&!s._html5,o.ctx!==void 0&&o.ctx&&o.autoUnlock&&o._unlockAudio(),o._howls.push(s),s._autoplay&&s._queue.push({event:"play",action:function(){s.play()}}),s._preload&&s._preload!=="none"&&s.load(),s},load:function(){var r=this,s=null;if(o.noAudio)return void r._emit("loaderror",null,"No audio support.");typeof r._src=="string"&&(r._src=[r._src]);for(var c=0;c<r._src.length;c++){var d,f;if(r._format&&r._format[c])d=r._format[c];else{if(typeof(f=r._src[c])!="string"){r._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}d=/^data:audio\/([^;,]+);/i.exec(f),d||(d=/\.([^.]+)$/.exec(f.split("?",1)[0])),d&&(d=d[1].toLowerCase())}if(d||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),d&&o.codecs(d)){s=r._src[c];break}}return s?(r._src=s,r._state="loading",window.location.protocol==="https:"&&s.slice(0,5)==="http:"&&(r._html5=!0,r._webAudio=!1),new a(r),r._webAudio&&l(r),r):void r._emit("loaderror",null,"No codec support for selected audio sources.")},play:function(r,s){var c=this,d=null;if(typeof r=="number")d=r,r=null;else{if(typeof r=="string"&&c._state==="loaded"&&!c._sprite[r])return null;if(r===void 0&&(r="__default",!c._playLock)){for(var f=0,v=0;v<c._sounds.length;v++)c._sounds[v]._paused&&!c._sounds[v]._ended&&(f++,d=c._sounds[v]._id);f===1?r=null:d=null}}var _=d?c._soundById(d):c._inactiveSound();if(!_)return null;if(d&&!r&&(r=_._sprite||"__default"),c._state!=="loaded"){_._sprite=r,_._ended=!1;var w=_._id;return c._queue.push({event:"play",action:function(){c.play(w)}}),w}if(d&&!_._paused)return s||c._loadQueue("play"),_._id;c._webAudio&&o._autoResume();var k=Math.max(0,_._seek>0?_._seek:c._sprite[r][0]/1e3),C=Math.max(0,(c._sprite[r][0]+c._sprite[r][1])/1e3-k),R=1e3*C/Math.abs(_._rate),W=c._sprite[r][0]/1e3,we=(c._sprite[r][0]+c._sprite[r][1])/1e3;_._sprite=r,_._ended=!1;var We=function(){_._paused=!1,_._seek=k,_._start=W,_._stop=we,_._loop=!(!_._loop&&!c._sprite[r][2])};if(k>=we)return void c._ended(_);var I=_._node;if(c._webAudio){var cn=function(){c._playLock=!1,We(),c._refreshBuffer(_);var ne=_._muted||c._muted?0:_._volume;I.gain.setValueAtTime(ne,o.ctx.currentTime),_._playStart=o.ctx.currentTime,I.bufferSource.start===void 0?_._loop?I.bufferSource.noteGrainOn(0,k,86400):I.bufferSource.noteGrainOn(0,k,C):_._loop?I.bufferSource.start(0,k,86400):I.bufferSource.start(0,k,C),R!==1/0&&(c._endTimers[_._id]=setTimeout(c._ended.bind(c,_),R)),s||setTimeout(function(){c._emit("play",_._id),c._loadQueue()},0)};o.state==="running"&&o.ctx.state!=="interrupted"?cn():(c._playLock=!0,c.once("resume",cn),c._clearTimer(_._id))}else{var ln=function(){I.currentTime=k,I.muted=_._muted||c._muted||o._muted||I.muted,I.volume=_._volume*o.volume(),I.playbackRate=_._rate;try{var ne=I.play();if(ne&&typeof Promise<"u"&&(ne instanceof Promise||typeof ne.then=="function")?(c._playLock=!0,We(),ne.then(function(){c._playLock=!1,I._unlocked=!0,s||(c._emit("play",_._id),c._loadQueue())}).catch(function(){c._playLock=!1,c._emit("playerror",_._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),_._ended=!0,_._paused=!0})):s||(c._playLock=!1,We(),c._emit("play",_._id),c._loadQueue()),I.playbackRate=_._rate,I.paused)return void c._emit("playerror",_._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");r!=="__default"||_._loop?c._endTimers[_._id]=setTimeout(c._ended.bind(c,_),R):(c._endTimers[_._id]=function(){c._ended(_),I.removeEventListener("ended",c._endTimers[_._id],!1)},I.addEventListener("ended",c._endTimers[_._id],!1))}catch(za){c._emit("playerror",_._id,za)}};I.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(I.src=c._src,I.load());var Ta=window&&window.ejecta||!I.readyState&&o._navigator.isCocoonJS;if(I.readyState>=3||Ta)ln();else{c._playLock=!0;var dn=function(){ln(),I.removeEventListener(o._canPlayEvent,dn,!1)};I.addEventListener(o._canPlayEvent,dn,!1),c._clearTimer(_._id)}}return _._id},pause:function(r){var s=this;if(s._state!=="loaded"||s._playLock)return s._queue.push({event:"pause",action:function(){s.pause(r)}}),s;for(var c=s._getSoundIds(r),d=0;d<c.length;d++){s._clearTimer(c[d]);var f=s._soundById(c[d]);if(f&&!f._paused&&(f._seek=s.seek(c[d]),f._rateSeek=0,f._paused=!0,s._stopFade(c[d]),f._node))if(s._webAudio){if(!f._node.bufferSource)continue;f._node.bufferSource.stop===void 0?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),s._cleanBuffer(f._node)}else isNaN(f._node.duration)&&f._node.duration!==1/0||f._node.pause();arguments[1]||s._emit("pause",f?f._id:null)}return s},stop:function(r,s){var c=this;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"stop",action:function(){c.stop(r,s)}}),c;for(var d=c._getSoundIds(r),f=0;f<d.length;f++){c._clearTimer(d[f]);var v=c._soundById(d[f]);v&&(v._seek=v._start||0,v._rateSeek=0,v._paused=!0,v._ended=!0,c._stopFade(d[f]),v._node&&(c._webAudio?v._node.bufferSource&&(v._node.bufferSource.stop===void 0?v._node.bufferSource.noteOff(0):v._node.bufferSource.stop(0),c._cleanBuffer(v._node)):isNaN(v._node.duration)&&v._node.duration!==1/0||(v._node.currentTime=v._start||0,v._node.pause(),v._node.duration===1/0&&c._clearSound(v._node))),s||c._emit("stop",v._id))}return c},mute:function(r,s){var c=this;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"mute",action:function(){c.mute(r,s)}}),c;if(s===void 0){if(typeof r!="boolean")return c._muted;c._muted=r}for(var d=c._getSoundIds(s),f=0;f<d.length;f++){var v=c._soundById(d[f]);v&&(v._muted=r,v._interval&&c._stopFade(v._id),c._webAudio&&v._node?v._node.gain.setValueAtTime(r?0:v._volume,o.ctx.currentTime):v._node&&(v._node.muted=!!o._muted||r),c._emit("mute",v._id))}return c},volume:function(){var r,s,c=this,d=arguments;if(d.length===0)return c._volume;d.length===1||d.length===2&&d[1]===void 0?c._getSoundIds().indexOf(d[0])>=0?s=parseInt(d[0],10):r=parseFloat(d[0]):d.length>=2&&(r=parseFloat(d[0]),s=parseInt(d[1],10));var f;if(!(r!==void 0&&r>=0&&r<=1))return f=s?c._soundById(s):c._sounds[0],f?f._volume:0;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,d)}}),c;s===void 0&&(c._volume=r),s=c._getSoundIds(s);for(var v=0;v<s.length;v++)(f=c._soundById(s[v]))&&(f._volume=r,d[2]||c._stopFade(s[v]),c._webAudio&&f._node&&!f._muted?f._node.gain.setValueAtTime(r,o.ctx.currentTime):f._node&&!f._muted&&(f._node.volume=r*o.volume()),c._emit("volume",f._id));return c},fade:function(r,s,c,d){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(r,s,c,d)}}),f;r=Math.min(Math.max(0,parseFloat(r)),1),s=Math.min(Math.max(0,parseFloat(s)),1),c=parseFloat(c),f.volume(r,d);for(var v=f._getSoundIds(d),_=0;_<v.length;_++){var w=f._soundById(v[_]);if(w){if(d||f._stopFade(v[_]),f._webAudio&&!w._muted){var k=o.ctx.currentTime,C=k+c/1e3;w._volume=r,w._node.gain.setValueAtTime(r,k),w._node.gain.linearRampToValueAtTime(s,C)}f._startFadeInterval(w,r,s,c,v[_],d===void 0)}}return f},_startFadeInterval:function(r,s,c,d,f,v){var _=this,w=s,k=c-s,C=Math.abs(k/.01),R=Math.max(4,C>0?d/C:d),W=Date.now();r._fadeTo=c,r._interval=setInterval(function(){var we=(Date.now()-W)/d;W=Date.now(),w+=k*we,w=Math.round(100*w)/100,w=k<0?Math.max(c,w):Math.min(c,w),_._webAudio?r._volume=w:_.volume(w,r._id,!0),v&&(_._volume=w),(c<s&&w<=c||c>s&&w>=c)&&(clearInterval(r._interval),r._interval=null,r._fadeTo=null,_.volume(c,r._id),_._emit("fade",r._id))},R)},_stopFade:function(r){var s=this,c=s._soundById(r);return c&&c._interval&&(s._webAudio&&c._node.gain.cancelScheduledValues(o.ctx.currentTime),clearInterval(c._interval),c._interval=null,s.volume(c._fadeTo,r),c._fadeTo=null,s._emit("fade",r)),s},loop:function(){var r,s,c,d=this,f=arguments;if(f.length===0)return d._loop;if(f.length===1){if(typeof f[0]!="boolean")return!!(c=d._soundById(parseInt(f[0],10)))&&c._loop;r=f[0],d._loop=r}else f.length===2&&(r=f[0],s=parseInt(f[1],10));for(var v=d._getSoundIds(s),_=0;_<v.length;_++)(c=d._soundById(v[_]))&&(c._loop=r,d._webAudio&&c._node&&c._node.bufferSource&&(c._node.bufferSource.loop=r,r&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop)));return d},rate:function(){var r,s,c=this,d=arguments;if(d.length===0)s=c._sounds[0]._id;else if(d.length===1){var f=c._getSoundIds(),v=f.indexOf(d[0]);v>=0?s=parseInt(d[0],10):r=parseFloat(d[0])}else d.length===2&&(r=parseFloat(d[0]),s=parseInt(d[1],10));var _;if(typeof r!="number")return _=c._soundById(s),_?_._rate:c._rate;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,d)}}),c;s===void 0&&(c._rate=r),s=c._getSoundIds(s);for(var w=0;w<s.length;w++)if(_=c._soundById(s[w])){c.playing(s[w])&&(_._rateSeek=c.seek(s[w]),_._playStart=c._webAudio?o.ctx.currentTime:_._playStart),_._rate=r,c._webAudio&&_._node&&_._node.bufferSource?_._node.bufferSource.playbackRate.setValueAtTime(r,o.ctx.currentTime):_._node&&(_._node.playbackRate=r);var k=c.seek(s[w]),C=(c._sprite[_._sprite][0]+c._sprite[_._sprite][1])/1e3-k,R=1e3*C/Math.abs(_._rate);!c._endTimers[s[w]]&&_._paused||(c._clearTimer(s[w]),c._endTimers[s[w]]=setTimeout(c._ended.bind(c,_),R)),c._emit("rate",_._id)}return c},seek:function(){var r,s,c=this,d=arguments;if(d.length===0)s=c._sounds[0]._id;else if(d.length===1){var f=c._getSoundIds(),v=f.indexOf(d[0]);v>=0?s=parseInt(d[0],10):c._sounds.length&&(s=c._sounds[0]._id,r=parseFloat(d[0]))}else d.length===2&&(r=parseFloat(d[0]),s=parseInt(d[1],10));if(s===void 0)return c;if(typeof r=="number"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,d)}}),c;var _=c._soundById(s);if(_){if(!(typeof r=="number"&&r>=0)){if(c._webAudio){var w=c.playing(s)?o.ctx.currentTime-_._playStart:0,k=_._rateSeek?_._rateSeek-_._seek:0;return _._seek+(k+w*Math.abs(_._rate))}return _._node.currentTime}var C=c.playing(s);C&&c.pause(s,!0),_._seek=r,_._ended=!1,c._clearTimer(s),c._webAudio||!_._node||isNaN(_._node.duration)||(_._node.currentTime=r);var R=function(){c._emit("seek",s),C&&c.play(s,!0)};if(C&&!c._webAudio){var W=function(){c._playLock?setTimeout(W,0):R()};setTimeout(W,0)}else R()}return c},playing:function(r){var s=this;if(typeof r=="number"){var c=s._soundById(r);return!!c&&!c._paused}for(var d=0;d<s._sounds.length;d++)if(!s._sounds[d]._paused)return!0;return!1},duration:function(r){var s=this,c=s._duration,d=s._soundById(r);return d&&(c=s._sprite[d._sprite][1]/1e3),c},state:function(){return this._state},unload:function(){for(var r=this,s=r._sounds,c=0;c<s.length;c++)s[c]._paused||r.stop(s[c]._id),r._webAudio||(r._clearSound(s[c]._node),s[c]._node.removeEventListener("error",s[c]._errorFn,!1),s[c]._node.removeEventListener(o._canPlayEvent,s[c]._loadFn,!1),s[c]._node.removeEventListener("ended",s[c]._endFn,!1),o._releaseHtml5Audio(s[c]._node)),delete s[c]._node,r._clearTimer(s[c]._id);var d=o._howls.indexOf(r);d>=0&&o._howls.splice(d,1);var f=!0;for(c=0;c<o._howls.length;c++)if(o._howls[c]._src===r._src||r._src.indexOf(o._howls[c]._src)>=0){f=!1;break}return u&&f&&delete u[r._src],o.noAudio=!1,r._state="unloaded",r._sounds=[],r=null,null},on:function(r,s,c,d){var f=this,v=f["_on"+r];return typeof s=="function"&&v.push(d?{id:c,fn:s,once:d}:{id:c,fn:s}),f},off:function(r,s,c){var d=this,f=d["_on"+r],v=0;if(typeof s=="number"&&(c=s,s=null),s||c)for(v=0;v<f.length;v++){var _=c===f[v].id;if(s===f[v].fn&&_||!s&&_){f.splice(v,1);break}}else if(r)d["_on"+r]=[];else{var w=Object.keys(d);for(v=0;v<w.length;v++)w[v].indexOf("_on")===0&&Array.isArray(d[w[v]])&&(d[w[v]]=[])}return d},once:function(r,s,c){var d=this;return d.on(r,s,c,1),d},_emit:function(r,s,c){for(var d=this,f=d["_on"+r],v=f.length-1;v>=0;v--)f[v].id&&f[v].id!==s&&r!=="load"||(setTimeout((function(_){_.call(this,s,c)}).bind(d,f[v].fn),0),f[v].once&&d.off(r,f[v].fn,f[v].id));return d._loadQueue(r),d},_loadQueue:function(r){var s=this;if(s._queue.length>0){var c=s._queue[0];c.event===r&&(s._queue.shift(),s._loadQueue()),r||c.action()}return s},_ended:function(r){var s=this,c=r._sprite;if(!s._webAudio&&r._node&&!r._node.paused&&!r._node.ended&&r._node.currentTime<r._stop)return setTimeout(s._ended.bind(s,r),100),s;var d=!(!r._loop&&!s._sprite[c][2]);if(s._emit("end",r._id),!s._webAudio&&d&&s.stop(r._id,!0).play(r._id),s._webAudio&&d){s._emit("play",r._id),r._seek=r._start||0,r._rateSeek=0,r._playStart=o.ctx.currentTime;var f=1e3*(r._stop-r._start)/Math.abs(r._rate);s._endTimers[r._id]=setTimeout(s._ended.bind(s,r),f)}return s._webAudio&&!d&&(r._paused=!0,r._ended=!0,r._seek=r._start||0,r._rateSeek=0,s._clearTimer(r._id),s._cleanBuffer(r._node),o._autoSuspend()),s._webAudio||d||s.stop(r._id,!0),s},_clearTimer:function(r){var s=this;if(s._endTimers[r]){if(typeof s._endTimers[r]!="function")clearTimeout(s._endTimers[r]);else{var c=s._soundById(r);c&&c._node&&c._node.removeEventListener("ended",s._endTimers[r],!1)}delete s._endTimers[r]}return s},_soundById:function(r){for(var s=this,c=0;c<s._sounds.length;c++)if(r===s._sounds[c]._id)return s._sounds[c];return null},_inactiveSound:function(){var r=this;r._drain();for(var s=0;s<r._sounds.length;s++)if(r._sounds[s]._ended)return r._sounds[s].reset();return new a(r)},_drain:function(){var r=this,s=r._pool,c=0,d=0;if(!(r._sounds.length<s)){for(d=0;d<r._sounds.length;d++)r._sounds[d]._ended&&c++;for(d=r._sounds.length-1;d>=0;d--){if(c<=s)return;r._sounds[d]._ended&&(r._webAudio&&r._sounds[d]._node&&r._sounds[d]._node.disconnect(0),r._sounds.splice(d,1),c--)}}},_getSoundIds:function(r){var s=this;if(r===void 0){for(var c=[],d=0;d<s._sounds.length;d++)c.push(s._sounds[d]._id);return c}return[r]},_refreshBuffer:function(r){var s=this;return r._node.bufferSource=o.ctx.createBufferSource(),r._node.bufferSource.buffer=u[s._src],r._panner?r._node.bufferSource.connect(r._panner):r._node.bufferSource.connect(r._node),r._node.bufferSource.loop=r._loop,r._loop&&(r._node.bufferSource.loopStart=r._start||0,r._node.bufferSource.loopEnd=r._stop||0),r._node.bufferSource.playbackRate.setValueAtTime(r._rate,o.ctx.currentTime),s},_cleanBuffer:function(r){var s=this,c=o._navigator&&o._navigator.vendor.indexOf("Apple")>=0;if(o._scratchBuffer&&r.bufferSource&&(r.bufferSource.onended=null,r.bufferSource.disconnect(0),c))try{r.bufferSource.buffer=o._scratchBuffer}catch{}return r.bufferSource=null,s},_clearSound:function(r){/MSIE |Trident\//.test(o._navigator&&o._navigator.userAgent)||(r.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var a=function(r){this._parent=r,this.init()};a.prototype={init:function(){var r=this,s=r._parent;return r._muted=s._muted,r._loop=s._loop,r._volume=s._volume,r._rate=s._rate,r._seek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++o._counter,s._sounds.push(r),r.create(),r},create:function(){var r=this,s=r._parent,c=o._muted||r._muted||r._parent._muted?0:r._volume;return s._webAudio?(r._node=o.ctx.createGain===void 0?o.ctx.createGainNode():o.ctx.createGain(),r._node.gain.setValueAtTime(c,o.ctx.currentTime),r._node.paused=!0,r._node.connect(o.masterGain)):o.noAudio||(r._node=o._obtainHtml5Audio(),r._errorFn=r._errorListener.bind(r),r._node.addEventListener("error",r._errorFn,!1),r._loadFn=r._loadListener.bind(r),r._node.addEventListener(o._canPlayEvent,r._loadFn,!1),r._endFn=r._endListener.bind(r),r._node.addEventListener("ended",r._endFn,!1),r._node.src=s._src,r._node.preload=s._preload===!0?"auto":s._preload,r._node.volume=c*o.volume(),r._node.load()),r},reset:function(){var r=this,s=r._parent;return r._muted=s._muted,r._loop=s._loop,r._volume=s._volume,r._rate=s._rate,r._seek=0,r._rateSeek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++o._counter,r},_errorListener:function(){var r=this;r._parent._emit("loaderror",r._id,r._node.error?r._node.error.code:0),r._node.removeEventListener("error",r._errorFn,!1)},_loadListener:function(){var r=this,s=r._parent;s._duration=Math.ceil(10*r._node.duration)/10,Object.keys(s._sprite).length===0&&(s._sprite={__default:[0,1e3*s._duration]}),s._state!=="loaded"&&(s._state="loaded",s._emit("load"),s._loadQueue()),r._node.removeEventListener(o._canPlayEvent,r._loadFn,!1)},_endListener:function(){var r=this,s=r._parent;s._duration===1/0&&(s._duration=Math.ceil(10*r._node.duration)/10,s._sprite.__default[1]===1/0&&(s._sprite.__default[1]=1e3*s._duration),s._ended(r)),r._node.removeEventListener("ended",r._endFn,!1)}};var u={},l=function(r){var s=r._src;if(u[s])return r._duration=u[s].duration,void y(r);if(/^data:[^;]+;base64,/.test(s)){for(var c=atob(s.split(",")[1]),d=new Uint8Array(c.length),f=0;f<c.length;++f)d[f]=c.charCodeAt(f);h(d.buffer,r)}else{var v=new XMLHttpRequest;v.open(r._xhr.method,s,!0),v.withCredentials=r._xhr.withCredentials,v.responseType="arraybuffer",r._xhr.headers&&Object.keys(r._xhr.headers).forEach(function(_){v.setRequestHeader(_,r._xhr.headers[_])}),v.onload=function(){var _=(v.status+"")[0];if(_!=="0"&&_!=="2"&&_!=="3")return void r._emit("loaderror",null,"Failed loading audio file with status: "+v.status+".");h(v.response,r)},v.onerror=function(){r._webAudio&&(r._html5=!0,r._webAudio=!1,r._sounds=[],delete u[s],r.load())},p(v)}},p=function(r){try{r.send()}catch{r.onerror()}},h=function(r,s){var c=function(){s._emit("loaderror",null,"Decoding audio data failed.")},d=function(f){f&&s._sounds.length>0?(u[s._src]=f,y(s,f)):c()};typeof Promise<"u"&&o.ctx.decodeAudioData.length===1?o.ctx.decodeAudioData(r).then(d).catch(c):o.ctx.decodeAudioData(r,d,c)},y=function(r,s){s&&!r._duration&&(r._duration=s.duration),Object.keys(r._sprite).length===0&&(r._sprite={__default:[0,1e3*r._duration]}),r._state!=="loaded"&&(r._state="loaded",r._emit("load"),r._loadQueue())},g=function(){if(o.usingWebAudio){try{typeof AudioContext<"u"?o.ctx=new AudioContext:typeof webkitAudioContext<"u"?o.ctx=new webkitAudioContext:o.usingWebAudio=!1}catch{o.usingWebAudio=!1}o.ctx||(o.usingWebAudio=!1);var r=/iP(hone|od|ad)/.test(o._navigator&&o._navigator.platform),s=o._navigator&&o._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),c=s?parseInt(s[1],10):null;if(r&&c&&c<9){var d=/safari/.test(o._navigator&&o._navigator.userAgent.toLowerCase());o._navigator&&!d&&(o.usingWebAudio=!1)}o.usingWebAudio&&(o.masterGain=o.ctx.createGain===void 0?o.ctx.createGainNode():o.ctx.createGain(),o.masterGain.gain.setValueAtTime(o._muted?0:o._volume,o.ctx.currentTime),o.masterGain.connect(o.ctx.destination)),o._setup()}};e.Howler=o,e.Howl=i,typeof t<"u"?(t.HowlerGlobal=n,t.Howler=o,t.Howl=i,t.Sound=a):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=o,window.Howl=i,window.Sound=a)})()}(De)),De}var Xt=ca();const la=typeof navigator<"u"&&typeof navigator.standalone<"u";class da{constructor(t){this.cogsConnection=t,this.addEventListener("audioClipState",({detail:o})=>{t.sendMediaClipState(o)}),t.addEventListener("message",({message:o})=>{switch(o.type){case"media_config_update":if(this.globalVolume!==o.globalVolume&&this.setGlobalVolume(o.globalVolume),o.audioOutput!==void 0){const i=t.getAudioSinkId(o.audioOutput);this.setAudioSink(i??"")}this.updateConfig(o.files);break;case"audio_play":this.playAudioClip(o.file,{playId:o.playId,volume:o.volume,loop:!!o.loop,fade:o.fade});break;case"audio_pause":this.pauseAudioClip(o.file,{fade:o.fade});break;case"audio_stop":o.file?this.stopAudioClip(o.file,{fade:o.fade}):this.stopAllAudioClips({fade:o.fade});break;case"audio_set_clip_volume":this.setAudioClipVolume(o.file,{volume:o.volume,fade:o.fade});break}});const n=()=>{const o=Object.entries(this.audioClipPlayers).map(([i,a])=>{const u=Object.values(a.activeClips),l=u.some(({state:p})=>p.type==="playing"||p.type==="pausing"||p.type==="stopping"||p.type==="play_requested"||p.type==="pause_requested"||p.type==="stop_requested")?"playing":u.some(({state:p})=>p.type==="paused")?"paused":"stopped";return[i,l]});t.sendInitialMediaClipStates({mediaType:"audio",files:o})};t.addEventListener("open",n),n()}eventTarget=new EventTarget;globalVolume=1;audioClipPlayers={};sinkId="";setGlobalVolume(t){this.globalVolume=t,Xt.Howler.volume(t),this.notifyStateListeners()}playAudioClip(t,{playId:n,volume:o,fade:i,loop:a}){t in this.audioClipPlayers||(this.audioClipPlayers[t]=this.createClip(t,{preload:!1,ephemeral:!0})),this.updateAudioClipPlayer(t,u=>{const l=Object.entries(u.activeClips).filter(([,{state:g}])=>g.type==="paused").map(([g])=>parseInt(g)),p=Object.entries(u.activeClips).filter(([,{state:g}])=>g.type==="pausing").map(([g])=>parseInt(g));l.forEach(g=>{u.player.play(g)});const h=Object.entries(u.activeClips).filter(([,{state:g}])=>g.type==="pause_requested").map(([g])=>parseInt(g)),y=l.length>0||p.length>0||h.length>0?[]:[u.player.play()];return p.forEach(g=>{u.player.off("fade",void 0,g),u.player.loop(a,g),this.updateActiveAudioClip(t,g,r=>({...r,state:{type:"playing"}})),ie(i)?se(u.player,o,i*1e3,g):Me(u.player,o,g)}),[...l,...h,...y].forEach(g=>{u.player.loop(a,g),u.player.off("play",void 0,g),u.player.off("pause",void 0,g),u.player.off("fade",void 0,g),u.player.off("end",void 0,g),u.player.off("stop",void 0,g),u.player.once("play",()=>{Ue(u.player,this.sinkId)}),u.player.once("stop",()=>this.handleStoppedClip(t,n,g),g),u.player.on("end",()=>{u.activeClips[g]?.loop||this.handleStoppedClip(t,n,g)},g);const r={playId:n,state:{type:"play_requested"},loop:a,volume:o};u.player.once("play",()=>{const s=u.activeClips[g]?.state;s?.type==="pause_requested"?this.pauseAudioClip(t,{fade:s.fade},g,!0):s?.type==="stop_requested"?this.stopAudioClip(t,{fade:s.fade},g,!0):this.updateActiveAudioClip(t,g,c=>({...c,state:{type:"playing"}}))},g),ie(i)?(u.player.volume(0,g),u.player.mute(!1,g),u.player.once("play",()=>{se(u.player,o,i*1e3,g)},g)):Me(u.player,o,g),u.activeClips={...u.activeClips,[g]:r}}),u}),this.notifyClipStateListeners(n,t,"playing")}pauseAudioClip(t,{fade:n},o,i){Object.keys(this.audioClipPlayers[t]?.activeClips??{}).length!==0&&this.updateAudioClipPlayer(t,a=>(a.activeClips=Object.fromEntries(Object.entries(a.activeClips).map(([u,l])=>{const p=parseInt(u);return(o===void 0||o===p)&&(i&&l.state.type==="pause_requested"||l.state.type==="playing"||l.state.type==="pausing"?ie(n)?(a.player.once("fade",h=>{a.player.pause(h),this.updateActiveAudioClip(t,h,y=>({...y,state:{type:"paused"}})),this.notifyClipStateListeners(l.playId,t,"paused")},p),se(a.player,0,n*1e3,p),l.state={type:"pausing"}):(a.player.pause(p),l.state={type:"paused"},this.notifyClipStateListeners(l.playId,t,"paused")):(l.state.type==="play_requested"||l.state.type==="pause_requested")&&(l.state={type:"pause_requested",fade:n})),[u,l]})),a))}stopAudioClip(t,{fade:n},o,i){pa("Stop audio clip",{activeClips:this.audioClipPlayers[t]?.activeClips}),Object.keys(this.audioClipPlayers[t]?.activeClips??{}).length!==0&&this.updateAudioClipPlayer(t,a=>(a.activeClips=Object.fromEntries(Object.entries(a.activeClips).map(([u,l])=>{const p=parseInt(u);return(o===void 0||o===p)&&(i&&l.state.type==="stop_requested"||l.state.type==="playing"||l.state.type==="pausing"||l.state.type==="paused"||l.state.type==="stopping"?ie(n)&&l.state.type!=="paused"?(a.player.off("fade",p),se(a.player,0,n*1e3,p),a.player.once("fade",h=>{a.player.loop(!1,h),a.player.stop(h)},p),l.state={type:"stopping"}):(a.player.loop(!1,p),a.player.stop(p)):(l.state.type==="play_requested"||l.state.type==="pause_requested"||l.state.type==="stop_requested")&&(l.state={type:"stop_requested",fade:n})),[u,l]})),a))}stopAllAudioClips(t){Object.keys(this.audioClipPlayers).forEach(n=>{this.stopAudioClip(n,t)})}setAudioClipVolume(t,{volume:n,fade:o}){if(!(n>=0&&n<=1)){console.warn("Invalid volume",n);return}Object.keys(this.audioClipPlayers[t]?.activeClips??{}).length!==0&&this.updateAudioClipPlayer(t,i=>(i.activeClips=Object.fromEntries(Object.entries(i.activeClips).map(([a,u])=>{if(u.state.type!=="pausing"&&u.state.type!=="stopping"){const l=parseInt(a);return ie(o)?se(i.player,n,o*1e3,l):Me(i.player,n,l),[a,{...u,volume:n}]}else return[a,u]})),i))}handleStoppedClip(t,n,o){this.updateAudioClipPlayer(t,i=>(delete i.activeClips[o],i)),this.notifyClipStateListeners(n,t,"stopped")}updateActiveAudioClip(t,n,o){this.updateAudioClipPlayer(t,i=>n in i.activeClips?{...i,activeClips:{...i.activeClips,[n]:o(i.activeClips[n])}}:i)}updateAudioClipPlayer(t,n){t in this.audioClipPlayers&&(this.audioClipPlayers={...this.audioClipPlayers,[t]:n(this.audioClipPlayers[t])});const o=this.audioClipPlayers[t];o&&Object.keys(o.activeClips??{}).length===0&&o.config.ephemeral&&(o.player.unload(),delete this.audioClipPlayers[t]),this.notifyStateListeners()}setAudioSink(t){for(const n of Object.values(this.audioClipPlayers))Ue(n.player,t);this.sinkId=t}updateConfig(t){const n=Object.fromEntries(Object.entries(t).filter(i=>{const a=i[1].type;return a==="audio"||!a})),o=this.audioClipPlayers;this.audioClipPlayers=(()=>{const i={...o};return Object.keys(o).filter(p=>!(p in n)&&!o[p].config.ephemeral).forEach(p=>{o[p].player.unload(),delete i[p]}),Object.entries(n).filter(([p])=>!o[p]).forEach(([p,h])=>{i[p]=this.createClip(p,{...h,ephemeral:!1})}),Object.keys(o).filter(p=>p in n).forEach(p=>{i[p]=this.updatedClip(p,i[p],{...n[p],ephemeral:!1})}),i})(),this.notifyStateListeners()}notifyStateListeners(){const t=Object.entries(this.audioClipPlayers).reduce((i,[a,u])=>(i[a]={config:{preload:u.config.preload,ephemeral:u.config.ephemeral},activeClips:u.activeClips},i),{}),n=Object.values(this.audioClipPlayers).some(({activeClips:i})=>Object.values(i).some(a=>a.state.type==="playing"||a.state.type==="pausing"||a.state.type==="stopping")),o={globalVolume:this.globalVolume,isPlaying:n,clips:t};this.dispatchEvent("state",o)}notifyClipStateListeners(t,n,o){this.dispatchEvent("audioClipState",{mediaType:"audio",playId:t,file:n,status:o})}addEventListener(t,n,o){this.eventTarget.addEventListener(t,n,o)}removeEventListener(t,n,o){this.eventTarget.removeEventListener(t,n,o)}dispatchEvent(t,n){this.eventTarget.dispatchEvent(new CustomEvent(t,{detail:n}))}createPlayer(t,n){const o=new Xt.Howl({src:this.cogsConnection.getAssetUrl(t),autoplay:!1,loop:!1,volume:1,html5:!0,preload:n.preload});return Ue(o,this.sinkId),o}createClip(t,n){return{config:n,player:this.createPlayer(t,n),activeClips:{}}}updatedClip(t,n,o){const i={...n,config:o};return n.config.preload!==o.preload&&(i.player.unload(),i.player=this.createPlayer(t,o)),i}}function pa(...e){}function ie(e){return!la&&typeof e=="number"&&!isNaN(e)&&e>0}function Ue(e,t){t!==void 0&&(e._html5?e._sounds?.forEach(n=>{n._node?.setSinkId?.(t)}):console.warn("Cannot set sink ID: web audio not supported",e))}function Me(e,t,n){e.volume(t,n),e.mute(t===0,n)}function se(e,t,n,o){e.fade(e.volume(o),t,n,o)}var Fe=(e=>(e.Paused="paused",e.Playing="playing",e))(Fe||{});class fa{constructor(t,n=document.body){this.cogsConnection=t,this.parentElement=n,this.addEventListener("videoClipState",({detail:i})=>{t.sendMediaClipState(i)}),t.addEventListener("message",({message:i})=>{switch(i.type){case"media_config_update":if(this.setGlobalVolume(i.globalVolume),i.audioOutput!==void 0){const a=t.getAudioSinkId(i.audioOutput);this.setAudioSink(a??"")}this.updateConfig(i.files);break;case"video_play":this.playVideoClip(i.file,{playId:i.playId,volume:i.volume,loop:!!i.loop,fit:i.fit});break;case"video_pause":this.pauseVideoClip();break;case"video_stop":this.stopVideoClip();break;case"video_set_volume":this.setVideoClipVolume({volume:i.volume});break;case"video_set_fit":this.setVideoClipFit({fit:i.fit});break}});const o=()=>{const i=Object.entries(this.videoClipPlayers).map(([a,u])=>{const l=u.videoElement.paused?u.videoElement.currentTime===0||u.videoElement.currentTime===u.videoElement.duration?"paused":"stopped":"playing";return[a,l]});t.sendInitialMediaClipStates({mediaType:"video",files:i})};t.addEventListener("open",o),o()}eventTarget=new EventTarget;globalVolume=1;videoClipPlayers={};activeClip;pendingClip;parentElement;sinkId="";setParentElement(t){this.parentElement=t,Object.values(this.videoClipPlayers).forEach(n=>{t.appendChild(n.videoElement)})}resetParentElement(){this.setParentElement(document.body)}setGlobalVolume(t){Object.values(this.videoClipPlayers).forEach(n=>{ye(n.videoElement,n.volume*t)}),this.globalVolume=t,this.notifyStateListeners()}playVideoClip(t,{playId:n,volume:o,loop:i,fit:a}){this.videoClipPlayers[t]||(this.videoClipPlayers[t]=this.createClipPlayer(t,{preload:"none",ephemeral:!0,fit:a})),this.pendingClip&&this.updateVideoClipPlayer(this.pendingClip.path,u=>(u.videoElement.load(),u)),this.activeClip?.path!==t&&(this.pendingClip={path:t,playId:n,actionOncePlaying:"play"}),this.updateVideoClipPlayer(t,u=>(u.volume=o,ye(u.videoElement,o*this.globalVolume),u.videoElement.loop=i,u.videoElement.style.objectFit=a,u.videoElement.currentTime===u.videoElement.duration&&(u.videoElement.currentTime=0),u.videoElement.play(),this.activeClip||(u.videoElement.style.display="block"),u))}pauseVideoClip(){if(this.pendingClip&&(this.pendingClip.actionOncePlaying="pause"),this.activeClip){const{playId:t,path:n}=this.activeClip;this.updateVideoClipPlayer(n,o=>(o.videoElement?.pause(),o)),this.notifyClipStateListeners(t,n,"paused")}}stopVideoClip(){this.pendingClip&&(this.pendingClip.actionOncePlaying="stop"),this.activeClip&&this.handleStoppedClip(this.activeClip.path)}setVideoClipVolume({volume:t}){const n=this.pendingClip??this.activeClip??void 0;if(n){if(!(t>=0&&t<=1)){console.warn("Invalid volume",t);return}this.updateVideoClipPlayer(n.path,o=>(o.videoElement&&(o.volume=t,ye(o.videoElement,t*this.globalVolume)),o))}}setVideoClipFit({fit:t}){const n=this.pendingClip??this.activeClip??void 0;n&&this.updateVideoClipPlayer(n.path,o=>(o.videoElement&&(o.videoElement.style.objectFit=t),o))}handleStoppedClip(t){if(!this.activeClip||this.activeClip.path!==t)return;const n=this.activeClip.playId;this.videoClipPlayers[this.activeClip.path]?.config.ephemeral&&this.unloadClip(t),this.activeClip=void 0,this.updateVideoClipPlayer(t,o=>(o.videoElement.pause(),o.videoElement.currentTime=0,o.videoElement.style.display="none",o)),this.notifyClipStateListeners(n,t,"stopped")}updateVideoClipPlayer(t,n){if(this.videoClipPlayers[t]){const o=n(this.videoClipPlayers[t]);o?this.videoClipPlayers[t]=o:delete this.videoClipPlayers[t],this.notifyStateListeners()}}setAudioSink(t){for(const n of Object.values(this.videoClipPlayers))tn(n,t);this.sinkId=t}updateConfig(t){const n=Object.fromEntries(Object.entries(t).filter(([,{type:i}])=>i==="video"||!i)),o=this.videoClipPlayers;this.videoClipPlayers=(()=>{const i={...o};return Object.keys(o).filter(p=>!(p in n)).forEach(p=>{this.activeClip?.path===p&&o[p]?.config.ephemeral===!1?this.updateVideoClipPlayer(p,h=>(h.config={...h.config,ephemeral:!0},h)):(this.unloadClip(p),delete i[p])}),Object.entries(n).filter(([p])=>!o[p]).forEach(([p,h])=>{i[p]=this.createClipPlayer(p,{...h,preload:en(h.preload),ephemeral:!1,fit:"contain"})}),Object.entries(o).filter(([p])=>p in n).forEach(([p,h])=>{h.config.preload!==n[p].preload&&this.updateVideoClipPlayer(p,y=>(y.config={...y.config,preload:en(n[p].preload),ephemeral:!1},y.videoElement.preload=y.config.preload,y))}),i})(),this.notifyStateListeners()}notifyStateListeners(){const t={globalVolume:this.globalVolume,isPlaying:this.activeClip?!this.videoClipPlayers[this.activeClip.path].videoElement?.paused:!1,clips:{...this.videoClipPlayers},activeClip:this.activeClip?{path:this.activeClip.path,state:this.videoClipPlayers[this.activeClip.path].videoElement?.paused?Fe.Paused:Fe.Playing,loop:this.videoClipPlayers[this.activeClip.path].videoElement?.loop??!1,volume:this.videoClipPlayers[this.activeClip.path].videoElement?.muted?0:this.videoClipPlayers[this.activeClip.path].videoElement?.volume??0}:void 0};this.dispatchEvent("state",t)}notifyClipStateListeners(t,n,o){this.dispatchEvent("videoClipState",{playId:t,mediaType:"video",file:n,status:o})}addEventListener(t,n,o){this.eventTarget.addEventListener(t,n,o)}removeEventListener(t,n,o){this.eventTarget.removeEventListener(t,n,o)}dispatchEvent(t,n){this.eventTarget.dispatchEvent(new CustomEvent(t,{detail:n}))}createVideoElement(t,n,{volume:o}){const i=document.createElement("video");return i.playsInline=!0,i.src=this.cogsConnection.getAssetUrl(t),i.autoplay=!1,i.loop=!1,ye(i,o*this.globalVolume),i.preload=n.preload,i.addEventListener("playing",()=>{if(this.pendingClip?.path===t){switch(this.pendingClip.actionOncePlaying){case"play":{i.style.display="block",this.notifyClipStateListeners(this.pendingClip.playId,t,"playing");break}case"pause":{i.style.display="block",i.pause(),this.notifyClipStateListeners(this.pendingClip.playId,t,"paused");break}case"stop":{i.pause(),this.notifyClipStateListeners(this.pendingClip.playId,t,"stopped");break}}this.activeClip&&this.handleStoppedClip(this.activeClip.path),this.activeClip=this.pendingClip,this.pendingClip=void 0}else this.activeClip?.path===t?this.notifyClipStateListeners(this.activeClip.playId,t,"playing"):i.pause()}),i.addEventListener("ended",()=>{!this.pendingClip&&!i.loop&&this.handleStoppedClip(t)}),i.style.position="absolute",i.style.top="0",i.style.left="0",i.style.width="100%",i.style.height="100%",i.style.objectFit=n.fit,i.style.display="none",this.parentElement.appendChild(i),i}createClipPlayer(t,n){const i={config:n,videoElement:this.createVideoElement(t,n,{volume:1}),volume:1};return tn(i,this.sinkId),i}unloadClip(t){if(this.activeClip?.path===t){const n=this.activeClip.playId;this.activeClip=void 0,this.notifyClipStateListeners(n,t,"stopped")}this.videoClipPlayers[t]?.videoElement.remove(),this.updateVideoClipPlayer(t,()=>null)}}function en(e){return typeof e=="string"?e:e?"auto":"none"}function tn(e,t){t!==void 0&&typeof e.videoElement.setSinkId=="function"&&e.videoElement.setSinkId(t)}function ye(e,t){e.volume=t,e.muted=t===0}function be(e,t){if(!e.keyframes.filter(o=>o[1]===null).some(o=>o[0]<=t))switch(e.type){case"image":{if(e.keyframes[0][0]>t)return;const i=e.keyframes.filter(u=>u[1]!==null),a=Ve(i,t);return{...Jt,...a}}case"audio":{const o=e.keyframes.filter(u=>u[1]!==null),i=nn(o,t);if(!i)return;const a=Ve(o,t);return{...Ne,...a,...i}}case"video":{const o=e.keyframes.filter(u=>u[1]!==null),i=nn(o,t);if(!i)return;const a=Ve(o,t);return{...Qt,...a,...i}}}}function Ve(e,t){const n={};for(const[i,a]of e)i<=t?(Object.entries(a.lerp??{}).forEach(([u,l])=>{n[u]??={},n[u].before=[i,l]}),Object.entries(a.set??{}).forEach(([u,l])=>{n[u]??={},n[u].before=[i,l]})):Object.entries(a.lerp??{}).forEach(([u,l])=>{n[u]??={},n[u].after===void 0&&(n[u].after=[i,l])});const o={};return Object.entries(n).forEach(([i,{before:a,after:u}])=>{if(u===void 0&&a){o[i]=a[1];return}if(a&&u&&a[0]===u[0]){o[i]=u[1];return}if(a&&typeof a[1]=="number"&&u&&typeof u[1]=="number"){o[i]=a[1]+(t-a[0])*(u[1]-a[1])/(u[0]-a[0]);return}}),o}function nn(e,t){const n=e[0];if(!n||n[0]>t)return;let o=0,{t:i,rate:a}=Ne;for(const[h,y]of e){if(h>t)break;const{set:g}=y;if(!g)continue;const{t:r,rate:s}=g;if(r!==void 0){o=h,i=r,s!==void 0&&(a=s);continue}if(s!==void 0){const d=(h-o)*a;o=h,i+=d,a=s}}const l=(t-o)*a,p=i+l;return{rate:a,t:p}}class Be{constructor(t,n,o,i,a){this.surfaceElement=t,this.clipElement=n,this.constructAssetURL=i,this.mediaPreloader=a,this._state=o,setTimeout(this.loop)}isConnected(t){return!(!this.surfaceElement||!this.clipElement||!this.surfaceElement.contains(this.clipElement)||t&&!this.clipElement.contains(t))}_state;setState(t){this._state=t}timeout;loop=async()=>{this.isConnected()?(this.update(),this.timeout=setTimeout(this.loop,0)):this.destroy()}}function Ge(e,t,n,o,i){let a;const u=o(n.file);switch(n.type){case"image":a=e instanceof HTMLImageElement?e:document.createElement("img"),a.src.includes(u)||(a.src=u);break;case"audio":e instanceof HTMLAudioElement&&e.src.includes(u)?a=e:a=i.getElement(n.file,n.type);break;case"video":e instanceof HTMLVideoElement&&e.src.includes(u)?a=e:a=i.getElement(n.file,n.type);break}return t.replaceChildren(a),a.style.position="absolute",a.style.width="100%",a.style.height="100%",a}function on(e,t,n){const o=String(t.opacity);e.style.opacity!==o&&(e.style.opacity=o);const i=Math.round(t.zIndex??0);parseInt(e.style.zIndex)!==i&&(e.style.zIndex=String(i)),e.style.objectFit!==n&&(e.style.objectFit=n)}function rn(e,t,n){if(e.volume!==t.volume&&(e.volume=t.volume),e.sinkId!==n)try{e.setSinkId(n).catch(()=>{})}catch{}}const sn=50,ha=5,an=1e3,_a=5,ma=5,va=.3,ga=.1;function ya(e){return Math.sign(e)*Math.pow(Math.abs(e)/an,va)*ga}function un(e,t,n,o){if(e.paused&&t.rate>0&&e.play().catch(()=>{}),e.duration){const l=n.filter(([p,h])=>p>t.t&&(h?.set?.t!==void 0||h?.set?.rate!==void 0))[0];if(l?.[1]?.set?.t===0){const p=(e.duration-t.t)/t.rate,h=l[0]-t.t,y=Math.abs(p-h)<=ma;e.loop!==y&&(e.loop=y)}}const a=e.currentTime*1e3-t.t,u=Math.abs(a);switch(!0){case(o.state==="idle"&&t.rate>0&&u<=sn):return e.playbackRate!==t.rate&&(e.playbackRate=t.rate),{state:"idle"};case(o.state==="idle"&&t.rate>0&&u>sn&&u<=an):{const l=ya(a),p=Math.max(0,t.rate-l);return e.playbackRate!==p&&(e.playbackRate=p),{state:"intercepting"}}case(o.state==="intercepting"&&t.rate>0&&u<=ha):return e.playbackRate!==t.rate&&(e.playbackRate=t.rate),{state:"idle"};case(o.state==="intercepting"&&Math.sign(a)===Math.sign(e.playbackRate-t.rate)):return console.warn(a,"missed intercept"),{state:"idle"};case o.state==="intercepting":return{state:"intercepting"};case o.state==="seeking":return{state:"seeking"};default:return e.playbackRate!==t.rate&&(e.playbackRate=t.rate),e.currentTime=(t.t+t.rate*_a)/1e3,{state:"seeking"}}}class ba extends Be{imageElement;update(){const t=be(this._state,Date.now());t?this.imageElement=Ge(this.imageElement,this.clipElement,this._state,this.constructAssetURL,this.mediaPreloader):this.imageElement&&this.destroy(),!(!t||!this.imageElement)&&on(this.imageElement,t,this._state.fit)}destroy(){this.imageElement&&(this.imageElement.remove(),this.imageElement.src="",this.imageElement=void 0)}}class wa extends Be{syncState={state:"idle"};audioElement;update(){const t=be(this._state,Date.now());if(t?this.audioElement=Ge(this.audioElement,this.clipElement,this._state,this.constructAssetURL,this.mediaPreloader):this.destroy(),!t||!this.audioElement)return;rn(this.audioElement,t,this._state.audioOutput);const n=un(this.audioElement,t,this._state.keyframes,this.syncState);this.syncState.state!=="seeking"&&n.state==="seeking"&&this.audioElement.addEventListener("seeked",()=>{this.syncState={state:"idle"}},{passive:!0,once:!0}),this.syncState=n}destroy(){this.audioElement?.remove(),this.audioElement=void 0}}class ka extends Be{syncState={state:"idle"};videoElement;update(){const t=be(this._state,Date.now());if(t?this.videoElement=Ge(this.videoElement,this.clipElement,this._state,this.constructAssetURL,this.mediaPreloader):this.destroy(),!t||!this.videoElement)return;on(this.videoElement,t,this._state.fit),rn(this.videoElement,t,this._state.audioOutput);const n=un(this.videoElement,t,this._state.keyframes,this.syncState);this.syncState.state!=="seeking"&&n.state==="seeking"&&this.videoElement.addEventListener("seeked",()=>{this.syncState={state:"idle"}},{passive:!0,once:!0}),this.syncState=n}destroy(){this.videoElement?.remove(),this.videoElement=void 0}}class Ca{_state;_elements={};_constructAssetURL;constructor(t,n={}){this._constructAssetURL=t,this._state=n}get state(){return{...this._state}}setState(t){this._state=t,this.update()}update(){for(const[t,n]of Object.entries(this._elements)){if(!(t in this._state)){if(n.inUse){console.warn(`Failed to clean up element ${n.element.src}`);continue}n.element.src="",n.element.load(),delete this._elements[t]}n.inUse=n.element.isConnected}for(const[t,n]of Object.entries(this._state)){if(t in this._elements)continue;let o;switch(n.preload===!0?o="auto":n.preload===!1?o="none":o=n.preload,n.type){case"audio":{const i=document.createElement("audio");i.src=this._constructAssetURL(t),i.preload=o,this._elements[t]={element:i,inUse:!1,type:"audio"};break}case"video":{const i=document.createElement("video");i.src=this._constructAssetURL(t),i.preload=o,this._elements[t]={element:i,inUse:!1,type:"video"};break}}}}getElement(t,n){const o=this._elements[t];if(o&&o.inUse===!1)return o.inUse=!0,o.element;{const i=document.createElement(n);return i.src=this._constructAssetURL(t),n==="video"&&(this._elements[t]={element:i,type:n,inUse:!0}),i}}releaseElement(t){if(typeof t=="string"){const n=this._elements[t];n&&(n.inUse=!1)}else Object.entries(this._elements).forEach(([n,o])=>{o.element===t&&delete this._elements[n]})}}const Ea="data-clip-id";class Sa{constructor(t,n,o,i=new Ca(t)){this.constructAssetUrl=t,this.getAudioOutput=n,this.mediaPreloader=i,this._element=document.createElement("div"),this._element.className="surface-manager",this._element.style.width="100%",this._element.style.height="100%",this._state=o||{},this.update()}_state={};setState(t){this._state=t,this.update()}_element;get element(){return this._element}resources={};update(){Object.entries(this.resources).forEach(([n,{element:o,manager:i}])=>{n in this._state||(delete this.resources[n],o.remove(),i?.destroy())});const t=Object.keys(this._state).toSorted().map(n=>{const o=this.resources[n];if(o)return o.element;{const i=document.createElement("div");return i.setAttribute(Ea,n),this.resources[n]={element:i},i}});this._element.replaceChildren(...t),Object.keys(this._state).toSorted().forEach(n=>{const o=this._state[n],i=this.resources[n];if(!i)throw new Error("Failed to create resource");if(i.manager)i.manager.setState(o);else switch(o.type){case"image":i.manager=new ba(this._element,i.element,o,this.constructAssetUrl,this.mediaPreloader);break;case"audio":i.manager=new wa(this._element,i.element,o,this.constructAssetUrl,this.mediaPreloader);break;case"video":i.manager=new ka(this._element,i.element,o,this.constructAssetUrl,this.mediaPreloader);break}})}}const Aa=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));A.CogsAudioPlayer=da,A.CogsConfigChangedEvent=et,A.CogsConnection=In,A.CogsConnectionCloseEvent=Ye,A.CogsConnectionOpenEvent=Qe,A.CogsIncomingEvent=nt,A.CogsMediaConfigChangedEvent=ot,A.CogsMessageEvent=Xe,A.CogsShowPhaseChangedEvent=rt,A.CogsStateChangedEvent=tt,A.CogsVideoPlayer=fa,A.DataStoreItemEvent=Ce,A.DataStoreItemsEvent=Ee,A.ManifestTypes=Aa,A.MediaSchema=ua,A.SurfaceManager=Sa,A.assetUrl=Je,A.getStateAtTime=be,A.preloadUrl=bn,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
|
|
38
|
+
`)}s.write("payload.value = newResult;"),s.write("return payload;");const _=s.compile();return(w,k)=>_(r,w,k)};let a;const u=ae,l=!st.jitless,h=l&&xn.value,y=t.catchall;let g;e._zod.parse=(r,s)=>{g??(g=o.value);const c=r.value;return u(c)?l&&h&&s?.async===!1&&s.jitless!==!0?(a||(a=i(t.shape)),r=a(r,s),y?St([],c,r,s,g,e):r):n(r,s):(r.issues.push({expected:"object",code:"invalid_type",input:c,inst:e}),r)}});function At(e,t,n,o){for(const a of e)if(a.issues.length===0)return t.value=a.value,t;const i=e.filter(a=>!Q(a));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(a=>a.issues.map(u=>U(u,o,N())))}),t)}const kr=m("$ZodUnion",(e,t)=>{S.init(e,t),E(e._zod,"optin",()=>t.options.some(i=>i._zod.optin==="optional")?"optional":void 0),E(e._zod,"optout",()=>t.options.some(i=>i._zod.optout==="optional")?"optional":void 0),E(e._zod,"values",()=>{if(t.options.every(i=>i._zod.values))return new Set(t.options.flatMap(i=>Array.from(i._zod.values)))}),E(e._zod,"pattern",()=>{if(t.options.every(i=>i._zod.pattern)){const i=t.options.map(a=>a._zod.pattern);return new RegExp(`^(${i.map(a=>ze(a.source)).join("|")})$`)}});const n=t.options.length===1,o=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return o(i,a);let u=!1;const l=[];for(const p of t.options){const h=p._zod.run({value:i.value,issues:[]},a);if(h instanceof Promise)l.push(h),u=!0;else{if(h.issues.length===0)return h;l.push(h)}}return u?Promise.all(l).then(p=>At(p,i,e,a)):At(l,i,e,a)}}),Cr=m("$ZodIntersection",(e,t)=>{S.init(e,t),e._zod.parse=(n,o)=>{const i=n.value,a=t.left._zod.run({value:i,issues:[]},o),u=t.right._zod.run({value:i,issues:[]},o);return a instanceof Promise||u instanceof Promise?Promise.all([a,u]).then(([p,h])=>Tt(n,p,h)):Tt(n,a,u)}});function Ze(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(H(e)&&H(t)){const n=Object.keys(t),o=Object.keys(e).filter(a=>n.indexOf(a)!==-1),i={...e,...t};for(const a of o){const u=Ze(e[a],t[a]);if(!u.valid)return{valid:!1,mergeErrorPath:[a,...u.mergeErrorPath]};i[a]=u.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let o=0;o<e.length;o++){const i=e[o],a=t[o],u=Ze(i,a);if(!u.valid)return{valid:!1,mergeErrorPath:[o,...u.mergeErrorPath]};n.push(u.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Tt(e,t,n){if(t.issues.length&&e.issues.push(...t.issues),n.issues.length&&e.issues.push(...n.issues),Q(e))return e;const o=Ze(t.value,n.value);if(!o.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}const Er=m("$ZodTuple",(e,t)=>{S.init(e,t);const n=t.items;e._zod.parse=(o,i)=>{const a=o.value;if(!Array.isArray(a))return o.issues.push({input:a,inst:e,expected:"tuple",code:"invalid_type"}),o;o.value=[];const u=[],l=[...n].reverse().findIndex(y=>y._zod.optin!=="optional"),p=l===-1?0:n.length-l;if(!t.rest){const y=a.length>n.length,g=a.length<p-1;if(y||g)return o.issues.push({...y?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},input:a,inst:e,origin:"array"}),o}let h=-1;for(const y of n){if(h++,h>=a.length&&h>=p)continue;const g=y._zod.run({value:a[h],issues:[]},i);g instanceof Promise?u.push(g.then(r=>fe(r,o,h))):fe(g,o,h)}if(t.rest){const y=a.slice(n.length);for(const g of y){h++;const r=t.rest._zod.run({value:g,issues:[]},i);r instanceof Promise?u.push(r.then(s=>fe(s,o,h))):fe(r,o,h)}}return u.length?Promise.all(u).then(()=>o):o}});function fe(e,t,n){e.issues.length&&t.issues.push(...B(n,e.issues)),t.value[n]=e.value}const Sr=m("$ZodRecord",(e,t)=>{S.init(e,t),e._zod.parse=(n,o)=>{const i=n.value;if(!H(i))return n.issues.push({expected:"record",code:"invalid_type",input:i,inst:e}),n;const a=[],u=t.keyType._zod.values;if(u){n.value={};const l=new Set;for(const h of u)if(typeof h=="string"||typeof h=="number"||typeof h=="symbol"){l.add(typeof h=="number"?h.toString():h);const y=t.valueType._zod.run({value:i[h],issues:[]},o);y instanceof Promise?a.push(y.then(g=>{g.issues.length&&n.issues.push(...B(h,g.issues)),n.value[h]=g.value})):(y.issues.length&&n.issues.push(...B(h,y.issues)),n.value[h]=y.value)}let p;for(const h in i)l.has(h)||(p=p??[],p.push(h));p&&p.length>0&&n.issues.push({code:"unrecognized_keys",input:i,inst:e,keys:p})}else{n.value={};for(const l of Reflect.ownKeys(i)){if(l==="__proto__")continue;const p=t.keyType._zod.run({value:l,issues:[]},o);if(p instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(p.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map(y=>U(y,o,N())),input:l,path:[l],inst:e}),n.value[p.value]=p.value;continue}const h=t.valueType._zod.run({value:i[l],issues:[]},o);h instanceof Promise?a.push(h.then(y=>{y.issues.length&&n.issues.push(...B(l,y.issues)),n.value[p.value]=y.value})):(h.issues.length&&n.issues.push(...B(l,h.issues)),n.value[p.value]=h.value)}}return a.length?Promise.all(a).then(()=>n):n}}),Ar=m("$ZodEnum",(e,t)=>{S.init(e,t);const n=$n(t.entries),o=new Set(n);e._zod.values=o,e._zod.pattern=new RegExp(`^(${n.filter(i=>Ln.has(typeof i)).map(i=>typeof i=="string"?J(i):i.toString()).join("|")})$`),e._zod.parse=(i,a)=>{const u=i.value;return o.has(u)||i.issues.push({code:"invalid_value",values:n,input:u,inst:e}),i}}),Tr=m("$ZodLiteral",(e,t)=>{if(S.init(e,t),t.values.length===0)throw new Error("Cannot create literal schema with no valid values");const n=new Set(t.values);e._zod.values=n,e._zod.pattern=new RegExp(`^(${t.values.map(o=>typeof o=="string"?J(o):o?J(o.toString()):String(o)).join("|")})$`),e._zod.parse=(o,i)=>{const a=o.value;return n.has(a)||o.issues.push({code:"invalid_value",values:t.values,input:a,inst:e}),o}}),zr=m("$ZodTransform",(e,t)=>{S.init(e,t),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new it(e.constructor.name);const i=t.transform(n.value,n);if(o.async)return(i instanceof Promise?i:Promise.resolve(i)).then(u=>(n.value=u,n));if(i instanceof Promise)throw new K;return n.value=i,n}});function zt(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const Ir=m("$ZodOptional",(e,t)=>{S.init(e,t),e._zod.optin="optional",e._zod.optout="optional",E(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),E(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${ze(n.source)})?$`):void 0}),e._zod.parse=(n,o)=>{if(t.innerType._zod.optin==="optional"){const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>zt(a,n.value)):zt(i,n.value)}return n.value===void 0?n:t.innerType._zod.run(n,o)}}),Or=m("$ZodNullable",(e,t)=>{S.init(e,t),E(e._zod,"optin",()=>t.innerType._zod.optin),E(e._zod,"optout",()=>t.innerType._zod.optout),E(e._zod,"pattern",()=>{const n=t.innerType._zod.pattern;return n?new RegExp(`^(${ze(n.source)}|null)$`):void 0}),E(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(n,o)=>n.value===null?n:t.innerType._zod.run(n,o)}),$r=m("$ZodDefault",(e,t)=>{S.init(e,t),e._zod.optin="optional",E(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);if(n.value===void 0)return n.value=t.defaultValue,n;const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>It(a,t)):It(i,t)}});function It(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Pr=m("$ZodPrefault",(e,t)=>{S.init(e,t),e._zod.optin="optional",E(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>(o.direction==="backward"||n.value===void 0&&(n.value=t.defaultValue),t.innerType._zod.run(n,o))}),Zr=m("$ZodNonOptional",(e,t)=>{S.init(e,t),E(e._zod,"values",()=>{const n=t.innerType._zod.values;return n?new Set([...n].filter(o=>o!==void 0)):void 0}),e._zod.parse=(n,o)=>{const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>Ot(a,e)):Ot(i,e)}});function Ot(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const xr=m("$ZodCatch",(e,t)=>{S.init(e,t),E(e._zod,"optin",()=>t.innerType._zod.optin),E(e._zod,"optout",()=>t.innerType._zod.optout),E(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then(a=>(n.value=a.value,a.issues.length&&(n.value=t.catchValue({...n,error:{issues:a.issues.map(u=>U(u,o,N()))},input:n.value}),n.issues=[]),n)):(n.value=i.value,i.issues.length&&(n.value=t.catchValue({...n,error:{issues:i.issues.map(a=>U(a,o,N()))},input:n.value}),n.issues=[]),n)}}),Lr=m("$ZodPipe",(e,t)=>{S.init(e,t),E(e._zod,"values",()=>t.in._zod.values),E(e._zod,"optin",()=>t.in._zod.optin),E(e._zod,"optout",()=>t.out._zod.optout),E(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(n,o)=>{if(o.direction==="backward"){const a=t.out._zod.run(n,o);return a instanceof Promise?a.then(u=>he(u,t.in,o)):he(a,t.in,o)}const i=t.in._zod.run(n,o);return i instanceof Promise?i.then(a=>he(a,t.out,o)):he(i,t.out,o)}});function he(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const Rr=m("$ZodReadonly",(e,t)=>{S.init(e,t),E(e._zod,"propValues",()=>t.innerType._zod.propValues),E(e._zod,"values",()=>t.innerType._zod.values),E(e._zod,"optin",()=>t.innerType?._zod?.optin),E(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(n,o)=>{if(o.direction==="backward")return t.innerType._zod.run(n,o);const i=t.innerType._zod.run(n,o);return i instanceof Promise?i.then($t):$t(i)}});function $t(e){return e.value=Object.freeze(e.value),e}const jr=m("$ZodCustom",(e,t)=>{P.init(e,t),S.init(e,t),e._zod.parse=(n,o)=>n,e._zod.check=n=>{const o=n.value,i=t.fn(o);if(i instanceof Promise)return i.then(a=>Pt(a,n,o,e));Pt(i,n,o,e)}});function Pt(e,t,n,o){if(!e){const i={code:"custom",input:n,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};o._zod.def.params&&(i.params=o._zod.def.params),t.issues.push(re(i))}}var Zt;class Nr{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...n){const o=n[0];if(this._map.set(t,o),o&&typeof o=="object"&&"id"in o){if(this._idmap.has(o.id))throw new Error(`ID ${o.id} already exists in the registry`);this._idmap.set(o.id,t)}return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const n=this._map.get(t);return n&&typeof n=="object"&&"id"in n&&this._idmap.delete(n.id),this._map.delete(t),this}get(t){const n=t._zod.parent;if(n){const o={...this.get(n)??{}};delete o.id;const i={...o,...this._map.get(t)};return Object.keys(i).length?i:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function Dr(){return new Nr}(Zt=globalThis).__zod_globalRegistry??(Zt.__zod_globalRegistry=Dr());const _e=globalThis.__zod_globalRegistry;function Ur(e,t){return new e({type:"string",...b(t)})}function Mr(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...b(t)})}function xt(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...b(t)})}function Fr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...b(t)})}function Vr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...b(t)})}function Br(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...b(t)})}function Gr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...b(t)})}function Wr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...b(t)})}function qr(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...b(t)})}function Kr(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...b(t)})}function Hr(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...b(t)})}function Jr(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...b(t)})}function Qr(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...b(t)})}function Yr(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...b(t)})}function Xr(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...b(t)})}function ei(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...b(t)})}function ti(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...b(t)})}function ni(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...b(t)})}function oi(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...b(t)})}function ri(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...b(t)})}function ii(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...b(t)})}function si(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...b(t)})}function ai(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...b(t)})}function ui(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...b(t)})}function ci(e,t){return new e({type:"string",format:"date",check:"string_format",...b(t)})}function li(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...b(t)})}function di(e,t){return new e({type:"string",format:"duration",check:"string_format",...b(t)})}function pi(e,t){return new e({type:"number",checks:[],...b(t)})}function fi(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...b(t)})}function hi(e,t){return new e({type:"null",...b(t)})}function _i(e){return new e({type:"unknown"})}function mi(e,t){return new e({type:"never",...b(t)})}function Lt(e,t){return new yt({check:"less_than",...b(t),value:e,inclusive:!1})}function xe(e,t){return new yt({check:"less_than",...b(t),value:e,inclusive:!0})}function Rt(e,t){return new bt({check:"greater_than",...b(t),value:e,inclusive:!1})}function Le(e,t){return new bt({check:"greater_than",...b(t),value:e,inclusive:!0})}function jt(e,t){return new Oo({check:"multiple_of",...b(t),value:e})}function Nt(e,t){return new Po({check:"max_length",...b(t),maximum:e})}function me(e,t){return new Zo({check:"min_length",...b(t),minimum:e})}function Dt(e,t){return new xo({check:"length_equals",...b(t),length:e})}function vi(e,t){return new Lo({check:"string_format",format:"regex",...b(t),pattern:e})}function gi(e){return new Ro({check:"string_format",format:"lowercase",...b(e)})}function yi(e){return new jo({check:"string_format",format:"uppercase",...b(e)})}function bi(e,t){return new No({check:"string_format",format:"includes",...b(t),includes:e})}function wi(e,t){return new Do({check:"string_format",format:"starts_with",...b(t),prefix:e})}function ki(e,t){return new Uo({check:"string_format",format:"ends_with",...b(t),suffix:e})}function Y(e){return new Mo({check:"overwrite",tx:e})}function Ci(e){return Y(t=>t.normalize(e))}function Ei(){return Y(e=>e.trim())}function Si(){return Y(e=>e.toLowerCase())}function Ai(){return Y(e=>e.toUpperCase())}function Ti(){return Y(e=>Zn(e))}function zi(e,t,n){return new e({type:"array",element:t,...b(n)})}function Ii(e,t,n){return new e({type:"custom",check:"custom",fn:t,...b(n)})}function Oi(e){const t=$i(n=>(n.addIssue=o=>{if(typeof o=="string")n.issues.push(re(o,n.value,t._zod.def));else{const i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=n.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),n.issues.push(re(i))}},e(n.value,n)));return t}function $i(e,t){const n=new P({check:"custom",...b(t)});return n._zod.check=e,n}const Pi=m("ZodISODateTime",(e,t)=>{tr.init(e,t),$.init(e,t)});function Zi(e){return ui(Pi,e)}const xi=m("ZodISODate",(e,t)=>{nr.init(e,t),$.init(e,t)});function Li(e){return ci(xi,e)}const Ri=m("ZodISOTime",(e,t)=>{or.init(e,t),$.init(e,t)});function ji(e){return li(Ri,e)}const Ni=m("ZodISODuration",(e,t)=>{rr.init(e,t),$.init(e,t)});function Di(e){return di(Ni,e)}const Z=m("ZodError",(e,t)=>{pt.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>Wn(e,n)},flatten:{value:n=>Gn(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,Se,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,Se,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),Ui=Oe(Z),Mi=$e(Z),Fi=ce(Z),Vi=le(Z),Bi=Hn(Z),Gi=Jn(Z),Wi=Qn(Z),qi=Yn(Z),Ki=Xn(Z),Hi=eo(Z),Ji=to(Z),Qi=no(Z),O=m("ZodType",(e,t)=>(S.init(e,t),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(V(t,{checks:[...t.checks??[],...n.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]})),e.clone=(n,o)=>D(e,n,o),e.brand=()=>e,e.register=(n,o)=>(n.add(e,o),e),e.parse=(n,o)=>Ui(e,n,o,{callee:e.parse}),e.safeParse=(n,o)=>Fi(e,n,o),e.parseAsync=async(n,o)=>Mi(e,n,o,{callee:e.parseAsync}),e.safeParseAsync=async(n,o)=>Vi(e,n,o),e.spa=e.safeParseAsync,e.encode=(n,o)=>Bi(e,n,o),e.decode=(n,o)=>Gi(e,n,o),e.encodeAsync=async(n,o)=>Wi(e,n,o),e.decodeAsync=async(n,o)=>qi(e,n,o),e.safeEncode=(n,o)=>Ki(e,n,o),e.safeDecode=(n,o)=>Hi(e,n,o),e.safeEncodeAsync=async(n,o)=>Ji(e,n,o),e.safeDecodeAsync=async(n,o)=>Qi(e,n,o),e.refine=(n,o)=>e.check(qs(n,o)),e.superRefine=n=>e.check(Ks(n)),e.overwrite=n=>e.check(Y(n)),e.optional=()=>Wt(e),e.nullable=()=>qt(e),e.nullish=()=>Wt(qt(e)),e.nonoptional=n=>Us(e,n),e.array=()=>Cs(e),e.or=n=>G([e,n]),e.and=n=>Ts(e,n),e.transform=n=>Ht(e,xs(n)),e.default=n=>js(e,n),e.prefault=n=>Ds(e,n),e.catch=n=>Fs(e,n),e.pipe=n=>Ht(e,n),e.readonly=()=>Gs(e),e.describe=n=>{const o=e.clone();return _e.add(o,{description:n}),o},Object.defineProperty(e,"description",{get(){return _e.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return _e.get(e);const o=e.clone();return _e.add(o,n[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),Ut=m("_ZodString",(e,t)=>{Pe.init(e,t),O.init(e,t);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...o)=>e.check(vi(...o)),e.includes=(...o)=>e.check(bi(...o)),e.startsWith=(...o)=>e.check(wi(...o)),e.endsWith=(...o)=>e.check(ki(...o)),e.min=(...o)=>e.check(me(...o)),e.max=(...o)=>e.check(Nt(...o)),e.length=(...o)=>e.check(Dt(...o)),e.nonempty=(...o)=>e.check(me(1,...o)),e.lowercase=o=>e.check(gi(o)),e.uppercase=o=>e.check(yi(o)),e.trim=()=>e.check(Ei()),e.normalize=(...o)=>e.check(Ci(...o)),e.toLowerCase=()=>e.check(Si()),e.toUpperCase=()=>e.check(Ai()),e.slugify=()=>e.check(Ti())}),Yi=m("ZodString",(e,t)=>{Pe.init(e,t),Ut.init(e,t),e.email=n=>e.check(Mr(Xi,n)),e.url=n=>e.check(Wr(es,n)),e.jwt=n=>e.check(ai(_s,n)),e.emoji=n=>e.check(qr(ts,n)),e.guid=n=>e.check(xt(Mt,n)),e.uuid=n=>e.check(Fr(ve,n)),e.uuidv4=n=>e.check(Vr(ve,n)),e.uuidv6=n=>e.check(Br(ve,n)),e.uuidv7=n=>e.check(Gr(ve,n)),e.nanoid=n=>e.check(Kr(ns,n)),e.guid=n=>e.check(xt(Mt,n)),e.cuid=n=>e.check(Hr(os,n)),e.cuid2=n=>e.check(Jr(rs,n)),e.ulid=n=>e.check(Qr(is,n)),e.base64=n=>e.check(ri(ps,n)),e.base64url=n=>e.check(ii(fs,n)),e.xid=n=>e.check(Yr(ss,n)),e.ksuid=n=>e.check(Xr(as,n)),e.ipv4=n=>e.check(ei(us,n)),e.ipv6=n=>e.check(ti(cs,n)),e.cidrv4=n=>e.check(ni(ls,n)),e.cidrv6=n=>e.check(oi(ds,n)),e.e164=n=>e.check(si(hs,n)),e.datetime=n=>e.check(Zi(n)),e.date=n=>e.check(Li(n)),e.time=n=>e.check(ji(n)),e.duration=n=>e.check(Di(n))});function X(e){return Ur(Yi,e)}const $=m("ZodStringFormat",(e,t)=>{T.init(e,t),Ut.init(e,t)}),Xi=m("ZodEmail",(e,t)=>{Wo.init(e,t),$.init(e,t)}),Mt=m("ZodGUID",(e,t)=>{Bo.init(e,t),$.init(e,t)}),ve=m("ZodUUID",(e,t)=>{Go.init(e,t),$.init(e,t)}),es=m("ZodURL",(e,t)=>{qo.init(e,t),$.init(e,t)}),ts=m("ZodEmoji",(e,t)=>{Ko.init(e,t),$.init(e,t)}),ns=m("ZodNanoID",(e,t)=>{Ho.init(e,t),$.init(e,t)}),os=m("ZodCUID",(e,t)=>{Jo.init(e,t),$.init(e,t)}),rs=m("ZodCUID2",(e,t)=>{Qo.init(e,t),$.init(e,t)}),is=m("ZodULID",(e,t)=>{Yo.init(e,t),$.init(e,t)}),ss=m("ZodXID",(e,t)=>{Xo.init(e,t),$.init(e,t)}),as=m("ZodKSUID",(e,t)=>{er.init(e,t),$.init(e,t)}),us=m("ZodIPv4",(e,t)=>{ir.init(e,t),$.init(e,t)}),cs=m("ZodIPv6",(e,t)=>{sr.init(e,t),$.init(e,t)}),ls=m("ZodCIDRv4",(e,t)=>{ar.init(e,t),$.init(e,t)}),ds=m("ZodCIDRv6",(e,t)=>{ur.init(e,t),$.init(e,t)}),ps=m("ZodBase64",(e,t)=>{cr.init(e,t),$.init(e,t)}),fs=m("ZodBase64URL",(e,t)=>{dr.init(e,t),$.init(e,t)}),hs=m("ZodE164",(e,t)=>{pr.init(e,t),$.init(e,t)}),_s=m("ZodJWT",(e,t)=>{hr.init(e,t),$.init(e,t)}),Ft=m("ZodNumber",(e,t)=>{kt.init(e,t),O.init(e,t),e.gt=(o,i)=>e.check(Rt(o,i)),e.gte=(o,i)=>e.check(Le(o,i)),e.min=(o,i)=>e.check(Le(o,i)),e.lt=(o,i)=>e.check(Lt(o,i)),e.lte=(o,i)=>e.check(xe(o,i)),e.max=(o,i)=>e.check(xe(o,i)),e.int=o=>e.check(Vt(o)),e.safe=o=>e.check(Vt(o)),e.positive=o=>e.check(Rt(0,o)),e.nonnegative=o=>e.check(Le(0,o)),e.negative=o=>e.check(Lt(0,o)),e.nonpositive=o=>e.check(xe(0,o)),e.multipleOf=(o,i)=>e.check(jt(o,i)),e.step=(o,i)=>e.check(jt(o,i)),e.finite=()=>e;const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function x(e){return pi(Ft,e)}const ms=m("ZodNumberFormat",(e,t)=>{_r.init(e,t),Ft.init(e,t)});function Vt(e){return fi(ms,e)}const vs=m("ZodNull",(e,t)=>{mr.init(e,t),O.init(e,t)});function gs(e){return hi(vs,e)}const ys=m("ZodUnknown",(e,t)=>{vr.init(e,t),O.init(e,t)});function Bt(){return _i(ys)}const bs=m("ZodNever",(e,t)=>{gr.init(e,t),O.init(e,t)});function ws(e){return mi(bs,e)}const ks=m("ZodArray",(e,t)=>{yr.init(e,t),O.init(e,t),e.element=t.element,e.min=(n,o)=>e.check(me(n,o)),e.nonempty=n=>e.check(me(1,n)),e.max=(n,o)=>e.check(Nt(n,o)),e.length=(n,o)=>e.check(Dt(n,o)),e.unwrap=()=>e.element});function Cs(e,t){return zi(ks,e,t)}const Es=m("ZodObject",(e,t)=>{wr.init(e,t),O.init(e,t),E(e,"shape",()=>t.shape),e.keyof=()=>$s(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Bt()}),e.loose=()=>e.clone({...e._zod.def,catchall:Bt()}),e.strict=()=>e.clone({...e._zod.def,catchall:ws()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>Un(e,n),e.safeExtend=n=>Mn(e,n),e.merge=n=>Fn(e,n),e.pick=n=>Nn(e,n),e.omit=n=>Dn(e,n),e.partial=(...n)=>Vn(Gt,e,n[0]),e.required=(...n)=>Bn(Kt,e,n[0])});function z(e,t){const n={type:"object",shape:e??{},...b(t)};return new Es(n)}const Ss=m("ZodUnion",(e,t)=>{kr.init(e,t),O.init(e,t),e.options=t.options});function G(e,t){return new Ss({type:"union",options:e,...b(t)})}const As=m("ZodIntersection",(e,t)=>{Cr.init(e,t),O.init(e,t)});function Ts(e,t){return new As({type:"intersection",left:e,right:t})}const zs=m("ZodTuple",(e,t)=>{Er.init(e,t),O.init(e,t),e.rest=n=>e.clone({...e._zod.def,rest:n})});function L(e,t,n){const o=t instanceof S,i=o?n:t,a=o?t:null;return new zs({type:"tuple",items:e,rest:a,...b(i)})}const Is=m("ZodRecord",(e,t)=>{Sr.init(e,t),O.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType});function Os(e,t,n){return new Is({type:"record",keyType:e,valueType:t,...b(n)})}const Re=m("ZodEnum",(e,t)=>{Ar.init(e,t),O.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(o,i)=>{const a={};for(const u of o)if(n.has(u))a[u]=t.entries[u];else throw new Error(`Key ${u} not found in enum`);return new Re({...t,checks:[],...b(i),entries:a})},e.exclude=(o,i)=>{const a={...t.entries};for(const u of o)if(n.has(u))delete a[u];else throw new Error(`Key ${u} not found in enum`);return new Re({...t,checks:[],...b(i),entries:a})}});function $s(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(o=>[o,o])):e;return new Re({type:"enum",entries:n,...b(t)})}const Ps=m("ZodLiteral",(e,t)=>{Tr.init(e,t),O.init(e,t),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function j(e,t){return new Ps({type:"literal",values:Array.isArray(e)?e:[e],...b(t)})}const Zs=m("ZodTransform",(e,t)=>{zr.init(e,t),O.init(e,t),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new it(e.constructor.name);n.addIssue=a=>{if(typeof a=="string")n.issues.push(re(a,n.value,t));else{const u=a;u.fatal&&(u.continue=!1),u.code??(u.code="custom"),u.input??(u.input=n.value),u.inst??(u.inst=e),n.issues.push(re(u))}};const i=t.transform(n.value,n);return i instanceof Promise?i.then(a=>(n.value=a,n)):(n.value=i,n)}});function xs(e){return new Zs({type:"transform",transform:e})}const Gt=m("ZodOptional",(e,t)=>{Ir.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Wt(e){return new Gt({type:"optional",innerType:e})}const Ls=m("ZodNullable",(e,t)=>{Or.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function qt(e){return new Ls({type:"nullable",innerType:e})}const Rs=m("ZodDefault",(e,t)=>{$r.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function js(e,t){return new Rs({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():lt(t)}})}const Ns=m("ZodPrefault",(e,t)=>{Pr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Ds(e,t){return new Ns({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():lt(t)}})}const Kt=m("ZodNonOptional",(e,t)=>{Zr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Us(e,t){return new Kt({type:"nonoptional",innerType:e,...b(t)})}const Ms=m("ZodCatch",(e,t)=>{xr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Fs(e,t){return new Ms({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const Vs=m("ZodPipe",(e,t)=>{Lr.init(e,t),O.init(e,t),e.in=t.in,e.out=t.out});function Ht(e,t){return new Vs({type:"pipe",in:e,out:t})}const Bs=m("ZodReadonly",(e,t)=>{Rr.init(e,t),O.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Gs(e){return new Bs({type:"readonly",innerType:e})}const Ws=m("ZodCustom",(e,t)=>{jr.init(e,t),O.init(e,t)});function qs(e,t={}){return Ii(Ws,e,t)}function Ks(e){return Oi(e)}const ge=z({t:x().gte(0),rate:x().gte(0)}),ee=z({opacity:x().gte(0).lte(1),zIndex:x().default(0)}),te=z({volume:x().gte(0).lte(1)}),Hs=z({type:j("image"),file:X(),fit:G([j("contain"),j("cover"),j("none")])}),Js=z({type:j("audio"),file:X(),audioOutput:X()}),Qs=z({type:j("video"),file:X(),audioOutput:X(),fit:G([j("contain"),j("cover"),j("none")])}),je=L([x(),gs()]),Ys=L([x(),z({set:z({...ee.shape}).partial()}).partial()]),Xs=L([x(),z({set:z({...ee.shape}).partial(),lerp:z({...ee.shape}).partial()}).partial()]),ea=L([x(),z({set:z({...ge.shape,...te.shape}).partial()}).partial()]),ta=L([x(),z({set:z({...ge.shape,...te.shape}).partial(),lerp:z({...te.shape}).partial()}).partial()]),na=L([x(),z({set:z({...ge.shape,...te.shape,...ee.shape}).partial()}).partial()]),oa=L([x(),z({set:z({...ge.shape,...te.shape,...ee.shape}).partial(),lerp:z({...te.shape,...ee.shape}).partial()}).partial()]),ra=z({...Hs.shape,keyframes:L([Xs],G([Ys,je]))}),ia=z({...Js.shape,keyframes:L([ta],G([ea,je]))}),sa=z({...Qs.shape,keyframes:L([oa],G([na,je]))}),aa=Os(X(),G([ra,ia,sa])),Jt={opacity:1,zIndex:0},Ne={t:0,rate:1,volume:1},Qt={t:0,rate:1,volume:1,opacity:1,zIndex:0},ua=Object.freeze(Object.defineProperty({__proto__:null,MediaSurfaceStateSchema:aa,defaultAudioOptions:Ne,defaultImageOptions:Jt,defaultVideoOptions:Qt},Symbol.toStringTag,{value:"Module"}));var De={},Yt;function ca(){return Yt||(Yt=1,function(e){var t={};/*! howler.js v2.2.1 | (c) 2013-2020, James Simpson of GoldFire Studios | MIT License | howlerjs.com */(function(){var n=function(){this.init()};n.prototype={init:function(){var r=this||o;return r._counter=1e3,r._html5AudioPool=[],r.html5PoolSize=10,r._codecs={},r._howls=[],r._muted=!1,r._volume=1,r._canPlayEvent="canplaythrough",r._navigator=typeof window<"u"&&window.navigator?window.navigator:null,r.masterGain=null,r.noAudio=!1,r.usingWebAudio=!0,r.autoSuspend=!0,r.ctx=null,r.autoUnlock=!0,r._setup(),r},volume:function(r){var s=this||o;if(r=parseFloat(r),s.ctx||g(),r!==void 0&&r>=0&&r<=1){if(s._volume=r,s._muted)return s;s.usingWebAudio&&s.masterGain.gain.setValueAtTime(r,o.ctx.currentTime);for(var c=0;c<s._howls.length;c++)if(!s._howls[c]._webAudio)for(var d=s._howls[c]._getSoundIds(),f=0;f<d.length;f++){var v=s._howls[c]._soundById(d[f]);v&&v._node&&(v._node.volume=v._volume*r)}return s}return s._volume},mute:function(r){var s=this||o;s.ctx||g(),s._muted=r,s.usingWebAudio&&s.masterGain.gain.setValueAtTime(r?0:s._volume,o.ctx.currentTime);for(var c=0;c<s._howls.length;c++)if(!s._howls[c]._webAudio)for(var d=s._howls[c]._getSoundIds(),f=0;f<d.length;f++){var v=s._howls[c]._soundById(d[f]);v&&v._node&&(v._node.muted=!!r||v._muted)}return s},stop:function(){for(var r=this||o,s=0;s<r._howls.length;s++)r._howls[s].stop();return r},unload:function(){for(var r=this||o,s=r._howls.length-1;s>=0;s--)r._howls[s].unload();return r.usingWebAudio&&r.ctx&&r.ctx.close!==void 0&&(r.ctx.close(),r.ctx=null,g()),r},codecs:function(r){return(this||o)._codecs[r.replace(/^x-/,"")]},_setup:function(){var r=this||o;if(r.state=r.ctx&&r.ctx.state||"suspended",r._autoSuspend(),!r.usingWebAudio)if(typeof Audio<"u")try{var s=new Audio;s.oncanplaythrough===void 0&&(r._canPlayEvent="canplay")}catch{r.noAudio=!0}else r.noAudio=!0;try{var s=new Audio;s.muted&&(r.noAudio=!0)}catch{}return r.noAudio||r._setupCodecs(),r},_setupCodecs:function(){var r=this||o,s=null;try{s=typeof Audio<"u"?new Audio:null}catch{return r}if(!s||typeof s.canPlayType!="function")return r;var c=s.canPlayType("audio/mpeg;").replace(/^no$/,""),d=r._navigator&&r._navigator.userAgent.match(/OPR\/([0-6].)/g),f=d&&parseInt(d[0].split("/")[1],10)<33;return r._codecs={mp3:!(f||!c&&!s.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!c,opus:!!s.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!s.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!s.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(s.canPlayType('audio/wav; codecs="1"')||s.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!s.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!s.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(s.canPlayType("audio/x-m4a;")||s.canPlayType("audio/m4a;")||s.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(s.canPlayType("audio/x-m4b;")||s.canPlayType("audio/m4b;")||s.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(s.canPlayType("audio/x-mp4;")||s.canPlayType("audio/mp4;")||s.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!s.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),webm:!!s.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),dolby:!!s.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(s.canPlayType("audio/x-flac;")||s.canPlayType("audio/flac;")).replace(/^no$/,"")},r},_unlockAudio:function(){var r=this||o;if(!r._audioUnlocked&&r.ctx){r._audioUnlocked=!1,r.autoUnlock=!1,r._mobileUnloaded||r.ctx.sampleRate===44100||(r._mobileUnloaded=!0,r.unload()),r._scratchBuffer=r.ctx.createBuffer(1,1,22050);var s=function(c){for(;r._html5AudioPool.length<r.html5PoolSize;)try{var d=new Audio;d._unlocked=!0,r._releaseHtml5Audio(d)}catch{r.noAudio=!0;break}for(var f=0;f<r._howls.length;f++)if(!r._howls[f]._webAudio)for(var v=r._howls[f]._getSoundIds(),_=0;_<v.length;_++){var w=r._howls[f]._soundById(v[_]);w&&w._node&&!w._node._unlocked&&(w._node._unlocked=!0,w._node.load())}r._autoResume();var k=r.ctx.createBufferSource();k.buffer=r._scratchBuffer,k.connect(r.ctx.destination),k.start===void 0?k.noteOn(0):k.start(0),typeof r.ctx.resume=="function"&&r.ctx.resume(),k.onended=function(){k.disconnect(0),r._audioUnlocked=!0,document.removeEventListener("touchstart",s,!0),document.removeEventListener("touchend",s,!0),document.removeEventListener("click",s,!0);for(var C=0;C<r._howls.length;C++)r._howls[C]._emit("unlock")}};return document.addEventListener("touchstart",s,!0),document.addEventListener("touchend",s,!0),document.addEventListener("click",s,!0),r}},_obtainHtml5Audio:function(){var r=this||o;if(r._html5AudioPool.length)return r._html5AudioPool.pop();var s=new Audio().play();return s&&typeof Promise<"u"&&(s instanceof Promise||typeof s.then=="function")&&s.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(r){var s=this||o;return r._unlocked&&s._html5AudioPool.push(r),s},_autoSuspend:function(){var r=this;if(r.autoSuspend&&r.ctx&&r.ctx.suspend!==void 0&&o.usingWebAudio){for(var s=0;s<r._howls.length;s++)if(r._howls[s]._webAudio){for(var c=0;c<r._howls[s]._sounds.length;c++)if(!r._howls[s]._sounds[c]._paused)return r}return r._suspendTimer&&clearTimeout(r._suspendTimer),r._suspendTimer=setTimeout(function(){if(r.autoSuspend){r._suspendTimer=null,r.state="suspending";var d=function(){r.state="suspended",r._resumeAfterSuspend&&(delete r._resumeAfterSuspend,r._autoResume())};r.ctx.suspend().then(d,d)}},3e4),r}},_autoResume:function(){var r=this;if(r.ctx&&r.ctx.resume!==void 0&&o.usingWebAudio)return r.state==="running"&&r.ctx.state!=="interrupted"&&r._suspendTimer?(clearTimeout(r._suspendTimer),r._suspendTimer=null):r.state==="suspended"||r.state==="running"&&r.ctx.state==="interrupted"?(r.ctx.resume().then(function(){r.state="running";for(var s=0;s<r._howls.length;s++)r._howls[s]._emit("resume")}),r._suspendTimer&&(clearTimeout(r._suspendTimer),r._suspendTimer=null)):r.state==="suspending"&&(r._resumeAfterSuspend=!0),r}};var o=new n,i=function(r){var s=this;if(!r.src||r.src.length===0)return void console.error("An array of source files must be passed with any new Howl.");s.init(r)};i.prototype={init:function(r){var s=this;return o.ctx||g(),s._autoplay=r.autoplay||!1,s._format=typeof r.format!="string"?r.format:[r.format],s._html5=r.html5||!1,s._muted=r.mute||!1,s._loop=r.loop||!1,s._pool=r.pool||5,s._preload=typeof r.preload!="boolean"&&r.preload!=="metadata"||r.preload,s._rate=r.rate||1,s._sprite=r.sprite||{},s._src=typeof r.src!="string"?r.src:[r.src],s._volume=r.volume!==void 0?r.volume:1,s._xhr={method:r.xhr&&r.xhr.method?r.xhr.method:"GET",headers:r.xhr&&r.xhr.headers?r.xhr.headers:null,withCredentials:!(!r.xhr||!r.xhr.withCredentials)&&r.xhr.withCredentials},s._duration=0,s._state="unloaded",s._sounds=[],s._endTimers={},s._queue=[],s._playLock=!1,s._onend=r.onend?[{fn:r.onend}]:[],s._onfade=r.onfade?[{fn:r.onfade}]:[],s._onload=r.onload?[{fn:r.onload}]:[],s._onloaderror=r.onloaderror?[{fn:r.onloaderror}]:[],s._onplayerror=r.onplayerror?[{fn:r.onplayerror}]:[],s._onpause=r.onpause?[{fn:r.onpause}]:[],s._onplay=r.onplay?[{fn:r.onplay}]:[],s._onstop=r.onstop?[{fn:r.onstop}]:[],s._onmute=r.onmute?[{fn:r.onmute}]:[],s._onvolume=r.onvolume?[{fn:r.onvolume}]:[],s._onrate=r.onrate?[{fn:r.onrate}]:[],s._onseek=r.onseek?[{fn:r.onseek}]:[],s._onunlock=r.onunlock?[{fn:r.onunlock}]:[],s._onresume=[],s._webAudio=o.usingWebAudio&&!s._html5,o.ctx!==void 0&&o.ctx&&o.autoUnlock&&o._unlockAudio(),o._howls.push(s),s._autoplay&&s._queue.push({event:"play",action:function(){s.play()}}),s._preload&&s._preload!=="none"&&s.load(),s},load:function(){var r=this,s=null;if(o.noAudio)return void r._emit("loaderror",null,"No audio support.");typeof r._src=="string"&&(r._src=[r._src]);for(var c=0;c<r._src.length;c++){var d,f;if(r._format&&r._format[c])d=r._format[c];else{if(typeof(f=r._src[c])!="string"){r._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}d=/^data:audio\/([^;,]+);/i.exec(f),d||(d=/\.([^.]+)$/.exec(f.split("?",1)[0])),d&&(d=d[1].toLowerCase())}if(d||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),d&&o.codecs(d)){s=r._src[c];break}}return s?(r._src=s,r._state="loading",window.location.protocol==="https:"&&s.slice(0,5)==="http:"&&(r._html5=!0,r._webAudio=!1),new a(r),r._webAudio&&l(r),r):void r._emit("loaderror",null,"No codec support for selected audio sources.")},play:function(r,s){var c=this,d=null;if(typeof r=="number")d=r,r=null;else{if(typeof r=="string"&&c._state==="loaded"&&!c._sprite[r])return null;if(r===void 0&&(r="__default",!c._playLock)){for(var f=0,v=0;v<c._sounds.length;v++)c._sounds[v]._paused&&!c._sounds[v]._ended&&(f++,d=c._sounds[v]._id);f===1?r=null:d=null}}var _=d?c._soundById(d):c._inactiveSound();if(!_)return null;if(d&&!r&&(r=_._sprite||"__default"),c._state!=="loaded"){_._sprite=r,_._ended=!1;var w=_._id;return c._queue.push({event:"play",action:function(){c.play(w)}}),w}if(d&&!_._paused)return s||c._loadQueue("play"),_._id;c._webAudio&&o._autoResume();var k=Math.max(0,_._seek>0?_._seek:c._sprite[r][0]/1e3),C=Math.max(0,(c._sprite[r][0]+c._sprite[r][1])/1e3-k),R=1e3*C/Math.abs(_._rate),W=c._sprite[r][0]/1e3,we=(c._sprite[r][0]+c._sprite[r][1])/1e3;_._sprite=r,_._ended=!1;var We=function(){_._paused=!1,_._seek=k,_._start=W,_._stop=we,_._loop=!(!_._loop&&!c._sprite[r][2])};if(k>=we)return void c._ended(_);var I=_._node;if(c._webAudio){var cn=function(){c._playLock=!1,We(),c._refreshBuffer(_);var ne=_._muted||c._muted?0:_._volume;I.gain.setValueAtTime(ne,o.ctx.currentTime),_._playStart=o.ctx.currentTime,I.bufferSource.start===void 0?_._loop?I.bufferSource.noteGrainOn(0,k,86400):I.bufferSource.noteGrainOn(0,k,C):_._loop?I.bufferSource.start(0,k,86400):I.bufferSource.start(0,k,C),R!==1/0&&(c._endTimers[_._id]=setTimeout(c._ended.bind(c,_),R)),s||setTimeout(function(){c._emit("play",_._id),c._loadQueue()},0)};o.state==="running"&&o.ctx.state!=="interrupted"?cn():(c._playLock=!0,c.once("resume",cn),c._clearTimer(_._id))}else{var ln=function(){I.currentTime=k,I.muted=_._muted||c._muted||o._muted||I.muted,I.volume=_._volume*o.volume(),I.playbackRate=_._rate;try{var ne=I.play();if(ne&&typeof Promise<"u"&&(ne instanceof Promise||typeof ne.then=="function")?(c._playLock=!0,We(),ne.then(function(){c._playLock=!1,I._unlocked=!0,s||(c._emit("play",_._id),c._loadQueue())}).catch(function(){c._playLock=!1,c._emit("playerror",_._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),_._ended=!0,_._paused=!0})):s||(c._playLock=!1,We(),c._emit("play",_._id),c._loadQueue()),I.playbackRate=_._rate,I.paused)return void c._emit("playerror",_._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");r!=="__default"||_._loop?c._endTimers[_._id]=setTimeout(c._ended.bind(c,_),R):(c._endTimers[_._id]=function(){c._ended(_),I.removeEventListener("ended",c._endTimers[_._id],!1)},I.addEventListener("ended",c._endTimers[_._id],!1))}catch(za){c._emit("playerror",_._id,za)}};I.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(I.src=c._src,I.load());var Ta=window&&window.ejecta||!I.readyState&&o._navigator.isCocoonJS;if(I.readyState>=3||Ta)ln();else{c._playLock=!0;var dn=function(){ln(),I.removeEventListener(o._canPlayEvent,dn,!1)};I.addEventListener(o._canPlayEvent,dn,!1),c._clearTimer(_._id)}}return _._id},pause:function(r){var s=this;if(s._state!=="loaded"||s._playLock)return s._queue.push({event:"pause",action:function(){s.pause(r)}}),s;for(var c=s._getSoundIds(r),d=0;d<c.length;d++){s._clearTimer(c[d]);var f=s._soundById(c[d]);if(f&&!f._paused&&(f._seek=s.seek(c[d]),f._rateSeek=0,f._paused=!0,s._stopFade(c[d]),f._node))if(s._webAudio){if(!f._node.bufferSource)continue;f._node.bufferSource.stop===void 0?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),s._cleanBuffer(f._node)}else isNaN(f._node.duration)&&f._node.duration!==1/0||f._node.pause();arguments[1]||s._emit("pause",f?f._id:null)}return s},stop:function(r,s){var c=this;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"stop",action:function(){c.stop(r,s)}}),c;for(var d=c._getSoundIds(r),f=0;f<d.length;f++){c._clearTimer(d[f]);var v=c._soundById(d[f]);v&&(v._seek=v._start||0,v._rateSeek=0,v._paused=!0,v._ended=!0,c._stopFade(d[f]),v._node&&(c._webAudio?v._node.bufferSource&&(v._node.bufferSource.stop===void 0?v._node.bufferSource.noteOff(0):v._node.bufferSource.stop(0),c._cleanBuffer(v._node)):isNaN(v._node.duration)&&v._node.duration!==1/0||(v._node.currentTime=v._start||0,v._node.pause(),v._node.duration===1/0&&c._clearSound(v._node))),s||c._emit("stop",v._id))}return c},mute:function(r,s){var c=this;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"mute",action:function(){c.mute(r,s)}}),c;if(s===void 0){if(typeof r!="boolean")return c._muted;c._muted=r}for(var d=c._getSoundIds(s),f=0;f<d.length;f++){var v=c._soundById(d[f]);v&&(v._muted=r,v._interval&&c._stopFade(v._id),c._webAudio&&v._node?v._node.gain.setValueAtTime(r?0:v._volume,o.ctx.currentTime):v._node&&(v._node.muted=!!o._muted||r),c._emit("mute",v._id))}return c},volume:function(){var r,s,c=this,d=arguments;if(d.length===0)return c._volume;d.length===1||d.length===2&&d[1]===void 0?c._getSoundIds().indexOf(d[0])>=0?s=parseInt(d[0],10):r=parseFloat(d[0]):d.length>=2&&(r=parseFloat(d[0]),s=parseInt(d[1],10));var f;if(!(r!==void 0&&r>=0&&r<=1))return f=s?c._soundById(s):c._sounds[0],f?f._volume:0;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,d)}}),c;s===void 0&&(c._volume=r),s=c._getSoundIds(s);for(var v=0;v<s.length;v++)(f=c._soundById(s[v]))&&(f._volume=r,d[2]||c._stopFade(s[v]),c._webAudio&&f._node&&!f._muted?f._node.gain.setValueAtTime(r,o.ctx.currentTime):f._node&&!f._muted&&(f._node.volume=r*o.volume()),c._emit("volume",f._id));return c},fade:function(r,s,c,d){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(r,s,c,d)}}),f;r=Math.min(Math.max(0,parseFloat(r)),1),s=Math.min(Math.max(0,parseFloat(s)),1),c=parseFloat(c),f.volume(r,d);for(var v=f._getSoundIds(d),_=0;_<v.length;_++){var w=f._soundById(v[_]);if(w){if(d||f._stopFade(v[_]),f._webAudio&&!w._muted){var k=o.ctx.currentTime,C=k+c/1e3;w._volume=r,w._node.gain.setValueAtTime(r,k),w._node.gain.linearRampToValueAtTime(s,C)}f._startFadeInterval(w,r,s,c,v[_],d===void 0)}}return f},_startFadeInterval:function(r,s,c,d,f,v){var _=this,w=s,k=c-s,C=Math.abs(k/.01),R=Math.max(4,C>0?d/C:d),W=Date.now();r._fadeTo=c,r._interval=setInterval(function(){var we=(Date.now()-W)/d;W=Date.now(),w+=k*we,w=Math.round(100*w)/100,w=k<0?Math.max(c,w):Math.min(c,w),_._webAudio?r._volume=w:_.volume(w,r._id,!0),v&&(_._volume=w),(c<s&&w<=c||c>s&&w>=c)&&(clearInterval(r._interval),r._interval=null,r._fadeTo=null,_.volume(c,r._id),_._emit("fade",r._id))},R)},_stopFade:function(r){var s=this,c=s._soundById(r);return c&&c._interval&&(s._webAudio&&c._node.gain.cancelScheduledValues(o.ctx.currentTime),clearInterval(c._interval),c._interval=null,s.volume(c._fadeTo,r),c._fadeTo=null,s._emit("fade",r)),s},loop:function(){var r,s,c,d=this,f=arguments;if(f.length===0)return d._loop;if(f.length===1){if(typeof f[0]!="boolean")return!!(c=d._soundById(parseInt(f[0],10)))&&c._loop;r=f[0],d._loop=r}else f.length===2&&(r=f[0],s=parseInt(f[1],10));for(var v=d._getSoundIds(s),_=0;_<v.length;_++)(c=d._soundById(v[_]))&&(c._loop=r,d._webAudio&&c._node&&c._node.bufferSource&&(c._node.bufferSource.loop=r,r&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop)));return d},rate:function(){var r,s,c=this,d=arguments;if(d.length===0)s=c._sounds[0]._id;else if(d.length===1){var f=c._getSoundIds(),v=f.indexOf(d[0]);v>=0?s=parseInt(d[0],10):r=parseFloat(d[0])}else d.length===2&&(r=parseFloat(d[0]),s=parseInt(d[1],10));var _;if(typeof r!="number")return _=c._soundById(s),_?_._rate:c._rate;if(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,d)}}),c;s===void 0&&(c._rate=r),s=c._getSoundIds(s);for(var w=0;w<s.length;w++)if(_=c._soundById(s[w])){c.playing(s[w])&&(_._rateSeek=c.seek(s[w]),_._playStart=c._webAudio?o.ctx.currentTime:_._playStart),_._rate=r,c._webAudio&&_._node&&_._node.bufferSource?_._node.bufferSource.playbackRate.setValueAtTime(r,o.ctx.currentTime):_._node&&(_._node.playbackRate=r);var k=c.seek(s[w]),C=(c._sprite[_._sprite][0]+c._sprite[_._sprite][1])/1e3-k,R=1e3*C/Math.abs(_._rate);!c._endTimers[s[w]]&&_._paused||(c._clearTimer(s[w]),c._endTimers[s[w]]=setTimeout(c._ended.bind(c,_),R)),c._emit("rate",_._id)}return c},seek:function(){var r,s,c=this,d=arguments;if(d.length===0)s=c._sounds[0]._id;else if(d.length===1){var f=c._getSoundIds(),v=f.indexOf(d[0]);v>=0?s=parseInt(d[0],10):c._sounds.length&&(s=c._sounds[0]._id,r=parseFloat(d[0]))}else d.length===2&&(r=parseFloat(d[0]),s=parseInt(d[1],10));if(s===void 0)return c;if(typeof r=="number"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,d)}}),c;var _=c._soundById(s);if(_){if(!(typeof r=="number"&&r>=0)){if(c._webAudio){var w=c.playing(s)?o.ctx.currentTime-_._playStart:0,k=_._rateSeek?_._rateSeek-_._seek:0;return _._seek+(k+w*Math.abs(_._rate))}return _._node.currentTime}var C=c.playing(s);C&&c.pause(s,!0),_._seek=r,_._ended=!1,c._clearTimer(s),c._webAudio||!_._node||isNaN(_._node.duration)||(_._node.currentTime=r);var R=function(){c._emit("seek",s),C&&c.play(s,!0)};if(C&&!c._webAudio){var W=function(){c._playLock?setTimeout(W,0):R()};setTimeout(W,0)}else R()}return c},playing:function(r){var s=this;if(typeof r=="number"){var c=s._soundById(r);return!!c&&!c._paused}for(var d=0;d<s._sounds.length;d++)if(!s._sounds[d]._paused)return!0;return!1},duration:function(r){var s=this,c=s._duration,d=s._soundById(r);return d&&(c=s._sprite[d._sprite][1]/1e3),c},state:function(){return this._state},unload:function(){for(var r=this,s=r._sounds,c=0;c<s.length;c++)s[c]._paused||r.stop(s[c]._id),r._webAudio||(r._clearSound(s[c]._node),s[c]._node.removeEventListener("error",s[c]._errorFn,!1),s[c]._node.removeEventListener(o._canPlayEvent,s[c]._loadFn,!1),s[c]._node.removeEventListener("ended",s[c]._endFn,!1),o._releaseHtml5Audio(s[c]._node)),delete s[c]._node,r._clearTimer(s[c]._id);var d=o._howls.indexOf(r);d>=0&&o._howls.splice(d,1);var f=!0;for(c=0;c<o._howls.length;c++)if(o._howls[c]._src===r._src||r._src.indexOf(o._howls[c]._src)>=0){f=!1;break}return u&&f&&delete u[r._src],o.noAudio=!1,r._state="unloaded",r._sounds=[],r=null,null},on:function(r,s,c,d){var f=this,v=f["_on"+r];return typeof s=="function"&&v.push(d?{id:c,fn:s,once:d}:{id:c,fn:s}),f},off:function(r,s,c){var d=this,f=d["_on"+r],v=0;if(typeof s=="number"&&(c=s,s=null),s||c)for(v=0;v<f.length;v++){var _=c===f[v].id;if(s===f[v].fn&&_||!s&&_){f.splice(v,1);break}}else if(r)d["_on"+r]=[];else{var w=Object.keys(d);for(v=0;v<w.length;v++)w[v].indexOf("_on")===0&&Array.isArray(d[w[v]])&&(d[w[v]]=[])}return d},once:function(r,s,c){var d=this;return d.on(r,s,c,1),d},_emit:function(r,s,c){for(var d=this,f=d["_on"+r],v=f.length-1;v>=0;v--)f[v].id&&f[v].id!==s&&r!=="load"||(setTimeout((function(_){_.call(this,s,c)}).bind(d,f[v].fn),0),f[v].once&&d.off(r,f[v].fn,f[v].id));return d._loadQueue(r),d},_loadQueue:function(r){var s=this;if(s._queue.length>0){var c=s._queue[0];c.event===r&&(s._queue.shift(),s._loadQueue()),r||c.action()}return s},_ended:function(r){var s=this,c=r._sprite;if(!s._webAudio&&r._node&&!r._node.paused&&!r._node.ended&&r._node.currentTime<r._stop)return setTimeout(s._ended.bind(s,r),100),s;var d=!(!r._loop&&!s._sprite[c][2]);if(s._emit("end",r._id),!s._webAudio&&d&&s.stop(r._id,!0).play(r._id),s._webAudio&&d){s._emit("play",r._id),r._seek=r._start||0,r._rateSeek=0,r._playStart=o.ctx.currentTime;var f=1e3*(r._stop-r._start)/Math.abs(r._rate);s._endTimers[r._id]=setTimeout(s._ended.bind(s,r),f)}return s._webAudio&&!d&&(r._paused=!0,r._ended=!0,r._seek=r._start||0,r._rateSeek=0,s._clearTimer(r._id),s._cleanBuffer(r._node),o._autoSuspend()),s._webAudio||d||s.stop(r._id,!0),s},_clearTimer:function(r){var s=this;if(s._endTimers[r]){if(typeof s._endTimers[r]!="function")clearTimeout(s._endTimers[r]);else{var c=s._soundById(r);c&&c._node&&c._node.removeEventListener("ended",s._endTimers[r],!1)}delete s._endTimers[r]}return s},_soundById:function(r){for(var s=this,c=0;c<s._sounds.length;c++)if(r===s._sounds[c]._id)return s._sounds[c];return null},_inactiveSound:function(){var r=this;r._drain();for(var s=0;s<r._sounds.length;s++)if(r._sounds[s]._ended)return r._sounds[s].reset();return new a(r)},_drain:function(){var r=this,s=r._pool,c=0,d=0;if(!(r._sounds.length<s)){for(d=0;d<r._sounds.length;d++)r._sounds[d]._ended&&c++;for(d=r._sounds.length-1;d>=0;d--){if(c<=s)return;r._sounds[d]._ended&&(r._webAudio&&r._sounds[d]._node&&r._sounds[d]._node.disconnect(0),r._sounds.splice(d,1),c--)}}},_getSoundIds:function(r){var s=this;if(r===void 0){for(var c=[],d=0;d<s._sounds.length;d++)c.push(s._sounds[d]._id);return c}return[r]},_refreshBuffer:function(r){var s=this;return r._node.bufferSource=o.ctx.createBufferSource(),r._node.bufferSource.buffer=u[s._src],r._panner?r._node.bufferSource.connect(r._panner):r._node.bufferSource.connect(r._node),r._node.bufferSource.loop=r._loop,r._loop&&(r._node.bufferSource.loopStart=r._start||0,r._node.bufferSource.loopEnd=r._stop||0),r._node.bufferSource.playbackRate.setValueAtTime(r._rate,o.ctx.currentTime),s},_cleanBuffer:function(r){var s=this,c=o._navigator&&o._navigator.vendor.indexOf("Apple")>=0;if(o._scratchBuffer&&r.bufferSource&&(r.bufferSource.onended=null,r.bufferSource.disconnect(0),c))try{r.bufferSource.buffer=o._scratchBuffer}catch{}return r.bufferSource=null,s},_clearSound:function(r){/MSIE |Trident\//.test(o._navigator&&o._navigator.userAgent)||(r.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var a=function(r){this._parent=r,this.init()};a.prototype={init:function(){var r=this,s=r._parent;return r._muted=s._muted,r._loop=s._loop,r._volume=s._volume,r._rate=s._rate,r._seek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++o._counter,s._sounds.push(r),r.create(),r},create:function(){var r=this,s=r._parent,c=o._muted||r._muted||r._parent._muted?0:r._volume;return s._webAudio?(r._node=o.ctx.createGain===void 0?o.ctx.createGainNode():o.ctx.createGain(),r._node.gain.setValueAtTime(c,o.ctx.currentTime),r._node.paused=!0,r._node.connect(o.masterGain)):o.noAudio||(r._node=o._obtainHtml5Audio(),r._errorFn=r._errorListener.bind(r),r._node.addEventListener("error",r._errorFn,!1),r._loadFn=r._loadListener.bind(r),r._node.addEventListener(o._canPlayEvent,r._loadFn,!1),r._endFn=r._endListener.bind(r),r._node.addEventListener("ended",r._endFn,!1),r._node.src=s._src,r._node.preload=s._preload===!0?"auto":s._preload,r._node.volume=c*o.volume(),r._node.load()),r},reset:function(){var r=this,s=r._parent;return r._muted=s._muted,r._loop=s._loop,r._volume=s._volume,r._rate=s._rate,r._seek=0,r._rateSeek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++o._counter,r},_errorListener:function(){var r=this;r._parent._emit("loaderror",r._id,r._node.error?r._node.error.code:0),r._node.removeEventListener("error",r._errorFn,!1)},_loadListener:function(){var r=this,s=r._parent;s._duration=Math.ceil(10*r._node.duration)/10,Object.keys(s._sprite).length===0&&(s._sprite={__default:[0,1e3*s._duration]}),s._state!=="loaded"&&(s._state="loaded",s._emit("load"),s._loadQueue()),r._node.removeEventListener(o._canPlayEvent,r._loadFn,!1)},_endListener:function(){var r=this,s=r._parent;s._duration===1/0&&(s._duration=Math.ceil(10*r._node.duration)/10,s._sprite.__default[1]===1/0&&(s._sprite.__default[1]=1e3*s._duration),s._ended(r)),r._node.removeEventListener("ended",r._endFn,!1)}};var u={},l=function(r){var s=r._src;if(u[s])return r._duration=u[s].duration,void y(r);if(/^data:[^;]+;base64,/.test(s)){for(var c=atob(s.split(",")[1]),d=new Uint8Array(c.length),f=0;f<c.length;++f)d[f]=c.charCodeAt(f);h(d.buffer,r)}else{var v=new XMLHttpRequest;v.open(r._xhr.method,s,!0),v.withCredentials=r._xhr.withCredentials,v.responseType="arraybuffer",r._xhr.headers&&Object.keys(r._xhr.headers).forEach(function(_){v.setRequestHeader(_,r._xhr.headers[_])}),v.onload=function(){var _=(v.status+"")[0];if(_!=="0"&&_!=="2"&&_!=="3")return void r._emit("loaderror",null,"Failed loading audio file with status: "+v.status+".");h(v.response,r)},v.onerror=function(){r._webAudio&&(r._html5=!0,r._webAudio=!1,r._sounds=[],delete u[s],r.load())},p(v)}},p=function(r){try{r.send()}catch{r.onerror()}},h=function(r,s){var c=function(){s._emit("loaderror",null,"Decoding audio data failed.")},d=function(f){f&&s._sounds.length>0?(u[s._src]=f,y(s,f)):c()};typeof Promise<"u"&&o.ctx.decodeAudioData.length===1?o.ctx.decodeAudioData(r).then(d).catch(c):o.ctx.decodeAudioData(r,d,c)},y=function(r,s){s&&!r._duration&&(r._duration=s.duration),Object.keys(r._sprite).length===0&&(r._sprite={__default:[0,1e3*r._duration]}),r._state!=="loaded"&&(r._state="loaded",r._emit("load"),r._loadQueue())},g=function(){if(o.usingWebAudio){try{typeof AudioContext<"u"?o.ctx=new AudioContext:typeof webkitAudioContext<"u"?o.ctx=new webkitAudioContext:o.usingWebAudio=!1}catch{o.usingWebAudio=!1}o.ctx||(o.usingWebAudio=!1);var r=/iP(hone|od|ad)/.test(o._navigator&&o._navigator.platform),s=o._navigator&&o._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),c=s?parseInt(s[1],10):null;if(r&&c&&c<9){var d=/safari/.test(o._navigator&&o._navigator.userAgent.toLowerCase());o._navigator&&!d&&(o.usingWebAudio=!1)}o.usingWebAudio&&(o.masterGain=o.ctx.createGain===void 0?o.ctx.createGainNode():o.ctx.createGain(),o.masterGain.gain.setValueAtTime(o._muted?0:o._volume,o.ctx.currentTime),o.masterGain.connect(o.ctx.destination)),o._setup()}};e.Howler=o,e.Howl=i,typeof t<"u"?(t.HowlerGlobal=n,t.Howler=o,t.Howl=i,t.Sound=a):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=o,window.Howl=i,window.Sound=a)})()}(De)),De}var Xt=ca();const la=typeof navigator<"u"&&typeof navigator.standalone<"u";class da{constructor(t){this.cogsConnection=t,this.addEventListener("audioClipState",({detail:o})=>{t.sendMediaClipState(o)}),t.addEventListener("message",({message:o})=>{switch(o.type){case"media_config_update":if(this.globalVolume!==o.globalVolume&&this.setGlobalVolume(o.globalVolume),o.audioOutput!==void 0){const i=t.getAudioSinkId(o.audioOutput);this.setAudioSink(i??"")}this.updateConfig(o.files);break;case"audio_play":this.playAudioClip(o.file,{playId:o.playId,volume:o.volume,loop:!!o.loop,fade:o.fade});break;case"audio_pause":this.pauseAudioClip(o.file,{fade:o.fade});break;case"audio_stop":o.file?this.stopAudioClip(o.file,{fade:o.fade}):this.stopAllAudioClips({fade:o.fade});break;case"audio_set_clip_volume":this.setAudioClipVolume(o.file,{volume:o.volume,fade:o.fade});break}});const n=()=>{const o=Object.entries(this.audioClipPlayers).map(([i,a])=>{const u=Object.values(a.activeClips),l=u.some(({state:p})=>p.type==="playing"||p.type==="pausing"||p.type==="stopping"||p.type==="play_requested"||p.type==="pause_requested"||p.type==="stop_requested")?"playing":u.some(({state:p})=>p.type==="paused")?"paused":"stopped";return[i,l]});t.sendInitialMediaClipStates({mediaType:"audio",files:o})};t.addEventListener("open",n),n()}eventTarget=new EventTarget;globalVolume=1;audioClipPlayers={};sinkId="";setGlobalVolume(t){this.globalVolume=t,Xt.Howler.volume(t),this.notifyStateListeners()}playAudioClip(t,{playId:n,volume:o,fade:i,loop:a}){t in this.audioClipPlayers||(this.audioClipPlayers[t]=this.createClip(t,{preload:!1,ephemeral:!0})),this.updateAudioClipPlayer(t,u=>{const l=Object.entries(u.activeClips).filter(([,{state:g}])=>g.type==="paused").map(([g])=>parseInt(g)),p=Object.entries(u.activeClips).filter(([,{state:g}])=>g.type==="pausing").map(([g])=>parseInt(g));l.forEach(g=>{u.player.play(g)});const h=Object.entries(u.activeClips).filter(([,{state:g}])=>g.type==="pause_requested").map(([g])=>parseInt(g)),y=l.length>0||p.length>0||h.length>0?[]:[u.player.play()];return p.forEach(g=>{u.player.off("fade",void 0,g),u.player.loop(a,g),this.updateActiveAudioClip(t,g,r=>({...r,state:{type:"playing"}})),ie(i)?se(u.player,o,i*1e3,g):Me(u.player,o,g)}),[...l,...h,...y].forEach(g=>{u.player.loop(a,g),u.player.off("play",void 0,g),u.player.off("pause",void 0,g),u.player.off("fade",void 0,g),u.player.off("end",void 0,g),u.player.off("stop",void 0,g),u.player.once("play",()=>{Ue(u.player,this.sinkId)}),u.player.once("stop",()=>this.handleStoppedClip(t,n,g),g),u.player.on("end",()=>{u.activeClips[g]?.loop||this.handleStoppedClip(t,n,g)},g);const r={playId:n,state:{type:"play_requested"},loop:a,volume:o};u.player.once("play",()=>{const s=u.activeClips[g]?.state;s?.type==="pause_requested"?this.pauseAudioClip(t,{fade:s.fade},g,!0):s?.type==="stop_requested"?this.stopAudioClip(t,{fade:s.fade},g,!0):this.updateActiveAudioClip(t,g,c=>({...c,state:{type:"playing"}}))},g),ie(i)?(u.player.volume(0,g),u.player.mute(!1,g),u.player.once("play",()=>{se(u.player,o,i*1e3,g)},g)):Me(u.player,o,g),u.activeClips={...u.activeClips,[g]:r}}),u}),this.notifyClipStateListeners(n,t,"playing")}pauseAudioClip(t,{fade:n},o,i){Object.keys(this.audioClipPlayers[t]?.activeClips??{}).length!==0&&this.updateAudioClipPlayer(t,a=>(a.activeClips=Object.fromEntries(Object.entries(a.activeClips).map(([u,l])=>{const p=parseInt(u);return(o===void 0||o===p)&&(i&&l.state.type==="pause_requested"||l.state.type==="playing"||l.state.type==="pausing"?ie(n)?(a.player.once("fade",h=>{a.player.pause(h),this.updateActiveAudioClip(t,h,y=>({...y,state:{type:"paused"}})),this.notifyClipStateListeners(l.playId,t,"paused")},p),se(a.player,0,n*1e3,p),l.state={type:"pausing"}):(a.player.pause(p),l.state={type:"paused"},this.notifyClipStateListeners(l.playId,t,"paused")):(l.state.type==="play_requested"||l.state.type==="pause_requested")&&(l.state={type:"pause_requested",fade:n})),[u,l]})),a))}stopAudioClip(t,{fade:n},o,i){pa("Stop audio clip",{activeClips:this.audioClipPlayers[t]?.activeClips}),Object.keys(this.audioClipPlayers[t]?.activeClips??{}).length!==0&&this.updateAudioClipPlayer(t,a=>(a.activeClips=Object.fromEntries(Object.entries(a.activeClips).map(([u,l])=>{const p=parseInt(u);return(o===void 0||o===p)&&(i&&l.state.type==="stop_requested"||l.state.type==="playing"||l.state.type==="pausing"||l.state.type==="paused"||l.state.type==="stopping"?ie(n)&&l.state.type!=="paused"?(a.player.off("fade",p),se(a.player,0,n*1e3,p),a.player.once("fade",h=>{a.player.loop(!1,h),a.player.stop(h)},p),l.state={type:"stopping"}):(a.player.loop(!1,p),a.player.stop(p)):(l.state.type==="play_requested"||l.state.type==="pause_requested"||l.state.type==="stop_requested")&&(l.state={type:"stop_requested",fade:n})),[u,l]})),a))}stopAllAudioClips(t){Object.keys(this.audioClipPlayers).forEach(n=>{this.stopAudioClip(n,t)})}setAudioClipVolume(t,{volume:n,fade:o}){if(!(n>=0&&n<=1)){console.warn("Invalid volume",n);return}Object.keys(this.audioClipPlayers[t]?.activeClips??{}).length!==0&&this.updateAudioClipPlayer(t,i=>(i.activeClips=Object.fromEntries(Object.entries(i.activeClips).map(([a,u])=>{if(u.state.type!=="pausing"&&u.state.type!=="stopping"){const l=parseInt(a);return ie(o)?se(i.player,n,o*1e3,l):Me(i.player,n,l),[a,{...u,volume:n}]}else return[a,u]})),i))}handleStoppedClip(t,n,o){this.updateAudioClipPlayer(t,i=>(delete i.activeClips[o],i)),this.notifyClipStateListeners(n,t,"stopped")}updateActiveAudioClip(t,n,o){this.updateAudioClipPlayer(t,i=>n in i.activeClips?{...i,activeClips:{...i.activeClips,[n]:o(i.activeClips[n])}}:i)}updateAudioClipPlayer(t,n){t in this.audioClipPlayers&&(this.audioClipPlayers={...this.audioClipPlayers,[t]:n(this.audioClipPlayers[t])});const o=this.audioClipPlayers[t];o&&Object.keys(o.activeClips??{}).length===0&&o.config.ephemeral&&(o.player.unload(),delete this.audioClipPlayers[t]),this.notifyStateListeners()}setAudioSink(t){for(const n of Object.values(this.audioClipPlayers))Ue(n.player,t);this.sinkId=t}updateConfig(t){const n=Object.fromEntries(Object.entries(t).filter(i=>{const a=i[1].type;return a==="audio"||!a})),o=this.audioClipPlayers;this.audioClipPlayers=(()=>{const i={...o};return Object.keys(o).filter(p=>!(p in n)&&!o[p].config.ephemeral).forEach(p=>{o[p].player.unload(),delete i[p]}),Object.entries(n).filter(([p])=>!o[p]).forEach(([p,h])=>{i[p]=this.createClip(p,{...h,ephemeral:!1})}),Object.keys(o).filter(p=>p in n).forEach(p=>{i[p]=this.updatedClip(p,i[p],{...n[p],ephemeral:!1})}),i})(),this.notifyStateListeners()}notifyStateListeners(){const t=Object.entries(this.audioClipPlayers).reduce((i,[a,u])=>(i[a]={config:{preload:u.config.preload,ephemeral:u.config.ephemeral},activeClips:u.activeClips},i),{}),n=Object.values(this.audioClipPlayers).some(({activeClips:i})=>Object.values(i).some(a=>a.state.type==="playing"||a.state.type==="pausing"||a.state.type==="stopping")),o={globalVolume:this.globalVolume,isPlaying:n,clips:t};this.dispatchEvent("state",o)}notifyClipStateListeners(t,n,o){this.dispatchEvent("audioClipState",{mediaType:"audio",playId:t,file:n,status:o})}addEventListener(t,n,o){this.eventTarget.addEventListener(t,n,o)}removeEventListener(t,n,o){this.eventTarget.removeEventListener(t,n,o)}dispatchEvent(t,n){this.eventTarget.dispatchEvent(new CustomEvent(t,{detail:n}))}createPlayer(t,n){const o=new Xt.Howl({src:this.cogsConnection.getAssetUrl(t),autoplay:!1,loop:!1,volume:1,html5:!0,preload:n.preload});return Ue(o,this.sinkId),o}createClip(t,n){return{config:n,player:this.createPlayer(t,n),activeClips:{}}}updatedClip(t,n,o){const i={...n,config:o};return n.config.preload!==o.preload&&(i.player.unload(),i.player=this.createPlayer(t,o)),i}}function pa(...e){}function ie(e){return!la&&typeof e=="number"&&!isNaN(e)&&e>0}function Ue(e,t){t!==void 0&&(e._html5?e._sounds?.forEach(n=>{n._node?.setSinkId?.(t)}):console.warn("Cannot set sink ID: web audio not supported",e))}function Me(e,t,n){e.volume(t,n),e.mute(t===0,n)}function se(e,t,n,o){e.fade(e.volume(o),t,n,o)}var Fe=(e=>(e.Paused="paused",e.Playing="playing",e))(Fe||{});class fa{constructor(t,n=document.body){this.cogsConnection=t,this.parentElement=n,this.addEventListener("videoClipState",({detail:i})=>{t.sendMediaClipState(i)}),t.addEventListener("message",({message:i})=>{switch(i.type){case"media_config_update":if(this.setGlobalVolume(i.globalVolume),i.audioOutput!==void 0){const a=t.getAudioSinkId(i.audioOutput);this.setAudioSink(a??"")}this.updateConfig(i.files);break;case"video_play":this.playVideoClip(i.file,{playId:i.playId,volume:i.volume,loop:!!i.loop,fit:i.fit});break;case"video_pause":this.pauseVideoClip();break;case"video_stop":this.stopVideoClip();break;case"video_set_volume":this.setVideoClipVolume({volume:i.volume});break;case"video_set_fit":this.setVideoClipFit({fit:i.fit});break}});const o=()=>{const i=Object.entries(this.videoClipPlayers).map(([a,u])=>{const l=u.videoElement.paused?u.videoElement.currentTime===0||u.videoElement.currentTime===u.videoElement.duration?"paused":"stopped":"playing";return[a,l]});t.sendInitialMediaClipStates({mediaType:"video",files:i})};t.addEventListener("open",o),o()}eventTarget=new EventTarget;globalVolume=1;videoClipPlayers={};activeClip;pendingClip;parentElement;sinkId="";setParentElement(t){this.parentElement=t,Object.values(this.videoClipPlayers).forEach(n=>{t.appendChild(n.videoElement)})}resetParentElement(){this.setParentElement(document.body)}setGlobalVolume(t){Object.values(this.videoClipPlayers).forEach(n=>{ye(n.videoElement,n.volume*t)}),this.globalVolume=t,this.notifyStateListeners()}playVideoClip(t,{playId:n,volume:o,loop:i,fit:a}){this.videoClipPlayers[t]||(this.videoClipPlayers[t]=this.createClipPlayer(t,{preload:"none",ephemeral:!0,fit:a})),this.pendingClip&&this.updateVideoClipPlayer(this.pendingClip.path,u=>(u.videoElement.load(),u)),this.activeClip?.path!==t&&(this.pendingClip={path:t,playId:n,actionOncePlaying:"play"}),this.updateVideoClipPlayer(t,u=>(u.volume=o,ye(u.videoElement,o*this.globalVolume),u.videoElement.loop=i,u.videoElement.style.objectFit=a,u.videoElement.currentTime===u.videoElement.duration&&(u.videoElement.currentTime=0),u.videoElement.play(),this.activeClip||(u.videoElement.style.display="block"),u))}pauseVideoClip(){if(this.pendingClip&&(this.pendingClip.actionOncePlaying="pause"),this.activeClip){const{playId:t,path:n}=this.activeClip;this.updateVideoClipPlayer(n,o=>(o.videoElement?.pause(),o)),this.notifyClipStateListeners(t,n,"paused")}}stopVideoClip(){this.pendingClip&&(this.pendingClip.actionOncePlaying="stop"),this.activeClip&&this.handleStoppedClip(this.activeClip.path)}setVideoClipVolume({volume:t}){const n=this.pendingClip??this.activeClip??void 0;if(n){if(!(t>=0&&t<=1)){console.warn("Invalid volume",t);return}this.updateVideoClipPlayer(n.path,o=>(o.videoElement&&(o.volume=t,ye(o.videoElement,t*this.globalVolume)),o))}}setVideoClipFit({fit:t}){const n=this.pendingClip??this.activeClip??void 0;n&&this.updateVideoClipPlayer(n.path,o=>(o.videoElement&&(o.videoElement.style.objectFit=t),o))}handleStoppedClip(t){if(!this.activeClip||this.activeClip.path!==t)return;const n=this.activeClip.playId;this.videoClipPlayers[this.activeClip.path]?.config.ephemeral&&this.unloadClip(t),this.activeClip=void 0,this.updateVideoClipPlayer(t,o=>(o.videoElement.pause(),o.videoElement.currentTime=0,o.videoElement.style.display="none",o)),this.notifyClipStateListeners(n,t,"stopped")}updateVideoClipPlayer(t,n){if(this.videoClipPlayers[t]){const o=n(this.videoClipPlayers[t]);o?this.videoClipPlayers[t]=o:delete this.videoClipPlayers[t],this.notifyStateListeners()}}setAudioSink(t){for(const n of Object.values(this.videoClipPlayers))tn(n,t);this.sinkId=t}updateConfig(t){const n=Object.fromEntries(Object.entries(t).filter(([,{type:i}])=>i==="video"||!i)),o=this.videoClipPlayers;this.videoClipPlayers=(()=>{const i={...o};return Object.keys(o).filter(p=>!(p in n)).forEach(p=>{this.activeClip?.path===p&&o[p]?.config.ephemeral===!1?this.updateVideoClipPlayer(p,h=>(h.config={...h.config,ephemeral:!0},h)):(this.unloadClip(p),delete i[p])}),Object.entries(n).filter(([p])=>!o[p]).forEach(([p,h])=>{i[p]=this.createClipPlayer(p,{...h,preload:en(h.preload),ephemeral:!1,fit:"contain"})}),Object.entries(o).filter(([p])=>p in n).forEach(([p,h])=>{h.config.preload!==n[p].preload&&this.updateVideoClipPlayer(p,y=>(y.config={...y.config,preload:en(n[p].preload),ephemeral:!1},y.videoElement.preload=y.config.preload,y))}),i})(),this.notifyStateListeners()}notifyStateListeners(){const t={globalVolume:this.globalVolume,isPlaying:this.activeClip?!this.videoClipPlayers[this.activeClip.path].videoElement?.paused:!1,clips:{...this.videoClipPlayers},activeClip:this.activeClip?{path:this.activeClip.path,state:this.videoClipPlayers[this.activeClip.path].videoElement?.paused?Fe.Paused:Fe.Playing,loop:this.videoClipPlayers[this.activeClip.path].videoElement?.loop??!1,volume:this.videoClipPlayers[this.activeClip.path].videoElement?.muted?0:this.videoClipPlayers[this.activeClip.path].videoElement?.volume??0}:void 0};this.dispatchEvent("state",t)}notifyClipStateListeners(t,n,o){this.dispatchEvent("videoClipState",{playId:t,mediaType:"video",file:n,status:o})}addEventListener(t,n,o){this.eventTarget.addEventListener(t,n,o)}removeEventListener(t,n,o){this.eventTarget.removeEventListener(t,n,o)}dispatchEvent(t,n){this.eventTarget.dispatchEvent(new CustomEvent(t,{detail:n}))}createVideoElement(t,n,{volume:o}){const i=document.createElement("video");return i.playsInline=!0,i.src=this.cogsConnection.getAssetUrl(t),i.autoplay=!1,i.loop=!1,ye(i,o*this.globalVolume),i.preload=n.preload,i.addEventListener("playing",()=>{if(this.pendingClip?.path===t){switch(this.pendingClip.actionOncePlaying){case"play":{i.style.display="block",this.notifyClipStateListeners(this.pendingClip.playId,t,"playing");break}case"pause":{i.style.display="block",i.pause(),this.notifyClipStateListeners(this.pendingClip.playId,t,"paused");break}case"stop":{i.pause(),this.notifyClipStateListeners(this.pendingClip.playId,t,"stopped");break}}this.activeClip&&this.handleStoppedClip(this.activeClip.path),this.activeClip=this.pendingClip,this.pendingClip=void 0}else this.activeClip?.path===t?this.notifyClipStateListeners(this.activeClip.playId,t,"playing"):i.pause()}),i.addEventListener("ended",()=>{!this.pendingClip&&!i.loop&&this.handleStoppedClip(t)}),i.style.position="absolute",i.style.top="0",i.style.left="0",i.style.width="100%",i.style.height="100%",i.style.objectFit=n.fit,i.style.display="none",this.parentElement.appendChild(i),i}createClipPlayer(t,n){const i={config:n,videoElement:this.createVideoElement(t,n,{volume:1}),volume:1};return tn(i,this.sinkId),i}unloadClip(t){if(this.activeClip?.path===t){const n=this.activeClip.playId;this.activeClip=void 0,this.notifyClipStateListeners(n,t,"stopped")}this.videoClipPlayers[t]?.videoElement.remove(),this.updateVideoClipPlayer(t,()=>null)}}function en(e){return typeof e=="string"?e:e?"auto":"none"}function tn(e,t){t!==void 0&&typeof e.videoElement.setSinkId=="function"&&e.videoElement.setSinkId(t)}function ye(e,t){e.volume=t,e.muted=t===0}function be(e,t){if(!e.keyframes.filter(o=>o[1]===null).some(o=>o[0]<=t))switch(e.type){case"image":{if(e.keyframes[0][0]>t)return;const i=e.keyframes.filter(u=>u[1]!==null),a=Ve(i,t);return{...Jt,...a}}case"audio":{const o=e.keyframes.filter(u=>u[1]!==null),i=nn(o,t);if(!i)return;const a=Ve(o,t);return{...Ne,...a,...i}}case"video":{const o=e.keyframes.filter(u=>u[1]!==null),i=nn(o,t);if(!i)return;const a=Ve(o,t);return{...Qt,...a,...i}}}}function Ve(e,t){const n={};for(const[i,a]of e)i<=t?(Object.entries(a.lerp??{}).forEach(([u,l])=>{n[u]??={},n[u].before=[i,l]}),Object.entries(a.set??{}).forEach(([u,l])=>{n[u]??={},n[u].before=[i,l]})):Object.entries(a.lerp??{}).forEach(([u,l])=>{n[u]??={},n[u].after===void 0&&(n[u].after=[i,l])});const o={};return Object.entries(n).forEach(([i,{before:a,after:u}])=>{if(u===void 0&&a){o[i]=a[1];return}if(a&&u&&a[0]===u[0]){o[i]=u[1];return}if(a&&typeof a[1]=="number"&&u&&typeof u[1]=="number"){o[i]=a[1]+(t-a[0])*(u[1]-a[1])/(u[0]-a[0]);return}}),o}function nn(e,t){const n=e[0];if(!n||n[0]>t)return;let o=0,{t:i,rate:a}=Ne;for(const[h,y]of e){if(h>t)break;const{set:g}=y;if(!g)continue;const{t:r,rate:s}=g;if(r!==void 0){o=h,i=r,s!==void 0&&(a=s);continue}if(s!==void 0){const d=(h-o)*a;o=h,i+=d,a=s}}const l=(t-o)*a,p=i+l;return{rate:a,t:p}}class Be{constructor(t,n,o,i,a,u){this.surfaceElement=t,this.clipElement=n,this.constructAssetURL=i,this.getAudioOutput=a,this.mediaPreloader=u,this._state=o,setTimeout(this.loop)}isConnected(t){return!(!this.surfaceElement||!this.clipElement||!this.surfaceElement.contains(this.clipElement)||t&&!this.clipElement.contains(t))}_state;setState(t){this._state=t}timeout;loop=async()=>{this.isConnected()?(this.update(),this.timeout=setTimeout(this.loop,0)):this.destroy()}}function Ge(e,t,n,o,i){let a;const u=o(n.file);switch(n.type){case"image":a=e instanceof HTMLImageElement?e:document.createElement("img"),a.src.includes(u)||(a.src=u);break;case"audio":e instanceof HTMLAudioElement&&e.src.includes(u)?a=e:a=i.getElement(n.file,n.type);break;case"video":e instanceof HTMLVideoElement&&e.src.includes(u)?a=e:a=i.getElement(n.file,n.type);break}return(t.children.length!==1||t.childNodes[0]!==a)&&t.replaceChildren(a),a.style.position="absolute",a.style.width="100%",a.style.height="100%",a}function on(e,t,n){const o=String(t.opacity);e.style.opacity!==o&&(e.style.opacity=o);const i=Math.round(t.zIndex??0);parseInt(e.style.zIndex)!==i&&(e.style.zIndex=String(i)),e.style.objectFit!==n&&(e.style.objectFit=n)}function rn(e,t,n){if(e.volume!==t.volume&&(e.volume=t.volume),e.sinkId!==n)try{e.setSinkId(n).catch(()=>{})}catch{}}const sn=50,ha=5,an=1e3,_a=5,ma=5,va=.3,ga=.1;function ya(e){return Math.sign(e)*Math.pow(Math.abs(e)/an,va)*ga}function un(e,t,n,o){if(e.paused&&t.rate>0&&e.play().catch(()=>{}),e.duration){const l=n.filter(([p,h])=>p>t.t&&(h?.set?.t!==void 0||h?.set?.rate!==void 0))[0];if(l?.[1]?.set?.t===0){const p=(e.duration-t.t)/t.rate,h=l[0]-t.t,y=Math.abs(p-h)<=ma;e.loop!==y&&(e.loop=y)}}const a=e.currentTime*1e3-t.t,u=Math.abs(a);switch(!0){case(o.state==="idle"&&t.rate>0&&u<=sn):return e.playbackRate!==t.rate&&(e.playbackRate=t.rate),{state:"idle"};case(o.state==="idle"&&t.rate>0&&u>sn&&u<=an):{const l=ya(a),p=Math.max(0,t.rate-l);return e.playbackRate!==p&&(e.playbackRate=p),{state:"intercepting"}}case(o.state==="intercepting"&&t.rate>0&&u<=ha):return e.playbackRate!==t.rate&&(e.playbackRate=t.rate),{state:"idle"};case(o.state==="intercepting"&&Math.sign(a)===Math.sign(e.playbackRate-t.rate)):return console.warn(a,"missed intercept"),{state:"idle"};case o.state==="intercepting":return{state:"intercepting"};case o.state==="seeking":return{state:"seeking"};default:return e.playbackRate!==t.rate&&(e.playbackRate=t.rate),e.currentTime=(t.t+t.rate*_a)/1e3,{state:"seeking"}}}class ba extends Be{imageElement;update(){const t=be(this._state,Date.now());t?this.imageElement=Ge(this.imageElement,this.clipElement,this._state,this.constructAssetURL,this.mediaPreloader):this.imageElement&&this.destroy(),!(!t||!this.imageElement)&&on(this.imageElement,t,this._state.fit)}destroy(){this.imageElement&&(this.imageElement.remove(),this.imageElement.src="",this.imageElement=void 0)}}class wa extends Be{syncState={state:"idle"};audioElement;update(){const t=be(this._state,Date.now());if(t?this.audioElement=Ge(this.audioElement,this.clipElement,this._state,this.constructAssetURL,this.mediaPreloader):this.destroy(),!t||!this.audioElement)return;const n=this.getAudioOutput(this._state.audioOutput);rn(this.audioElement,t,n);const o=un(this.audioElement,t,this._state.keyframes,this.syncState);this.syncState.state!=="seeking"&&o.state==="seeking"&&this.audioElement.addEventListener("seeked",()=>{this.syncState={state:"idle"}},{passive:!0,once:!0}),this.syncState=o}destroy(){this.audioElement?.remove(),this.audioElement=void 0}}class ka extends Be{syncState={state:"idle"};videoElement;update(){const t=be(this._state,Date.now());if(t?this.videoElement=Ge(this.videoElement,this.clipElement,this._state,this.constructAssetURL,this.mediaPreloader):this.destroy(),!t||!this.videoElement)return;const n=this.getAudioOutput(this._state.audioOutput);on(this.videoElement,t,this._state.fit),rn(this.videoElement,t,n);const o=un(this.videoElement,t,this._state.keyframes,this.syncState);this.syncState.state!=="seeking"&&o.state==="seeking"&&this.videoElement.addEventListener("seeked",()=>{this.syncState={state:"idle"}},{passive:!0,once:!0}),this.syncState=o}destroy(){this.videoElement?.remove(),this.videoElement=void 0}}class Ca{_state;_elements={};_constructAssetURL;constructor(t,n={}){this._constructAssetURL=t,this._state=n}get state(){return{...this._state}}setState(t){this._state=t,this.update()}update(){for(const[t,n]of Object.entries(this._elements)){if(!(t in this._state)){if(n.inUse){console.warn(`Failed to clean up element ${n.element.src}`);continue}n.element.src="",n.element.load(),delete this._elements[t]}n.inUse=n.element.isConnected}for(const[t,n]of Object.entries(this._state)){if(t in this._elements)continue;let o;switch(n.preload===!0?o="auto":n.preload===!1?o="none":o=n.preload,n.type){case"audio":{const i=document.createElement("audio");i.src=this._constructAssetURL(t),i.preload=o,this._elements[t]={element:i,inUse:!1,type:"audio"};break}case"video":{const i=document.createElement("video");i.src=this._constructAssetURL(t),i.preload=o,this._elements[t]={element:i,inUse:!1,type:"video"};break}}}}getElement(t,n){const o=this._elements[t];if(o&&o.inUse===!1)return o.inUse=!0,o.element;{const i=document.createElement(n);return i.src=this._constructAssetURL(t),n==="video"&&(this._elements[t]={element:i,type:n,inUse:!0}),i}}releaseElement(t){if(typeof t=="string"){const n=this._elements[t];n&&(n.inUse=!1)}else Object.entries(this._elements).forEach(([n,o])=>{o.element===t&&delete this._elements[n]})}}const Ea="data-clip-id";class Sa{constructor(t,n,o,i=new Ca(t)){this.constructAssetUrl=t,this.getAudioOutput=n,this.mediaPreloader=i,this._element=document.createElement("div"),this._element.className="surface-manager",this._element.style.width="100%",this._element.style.height="100%",this._state=o||{},this.update()}_state={};setState(t){this._state=t,this.update()}_element;get element(){return this._element}resources={};update(){Object.entries(this.resources).forEach(([n,{element:o,manager:i}])=>{n in this._state||(delete this.resources[n],o.remove(),i?.destroy())});const t=Object.keys(this._state).toSorted().map(n=>{const o=this.resources[n];if(o)return o.element;{const i=document.createElement("div");return i.setAttribute(Ea,n),this.resources[n]={element:i},i}});this._element.replaceChildren(...t),Object.keys(this._state).toSorted().forEach(n=>{const o=this._state[n],i=this.resources[n];if(!i)throw new Error("Failed to create resource");if(i.manager)i.manager.setState(o);else switch(o.type){case"image":i.manager=new ba(this._element,i.element,o,this.constructAssetUrl,this.getAudioOutput,this.mediaPreloader);break;case"audio":i.manager=new wa(this._element,i.element,o,this.constructAssetUrl,this.getAudioOutput,this.mediaPreloader);break;case"video":i.manager=new ka(this._element,i.element,o,this.constructAssetUrl,this.getAudioOutput,this.mediaPreloader);break}})}}const Aa=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));A.CogsAudioPlayer=da,A.CogsConfigChangedEvent=et,A.CogsConnection=In,A.CogsConnectionCloseEvent=Ye,A.CogsConnectionOpenEvent=Qe,A.CogsIncomingEvent=nt,A.CogsMediaConfigChangedEvent=ot,A.CogsMessageEvent=Xe,A.CogsShowPhaseChangedEvent=rt,A.CogsStateChangedEvent=tt,A.CogsVideoPlayer=fa,A.DataStoreItemEvent=Ce,A.DataStoreItemsEvent=Ee,A.ManifestTypes=Aa,A.MediaSchema=ua,A.SurfaceManager=Sa,A.assetUrl=Je,A.getStateAtTime=be,A.preloadUrl=bn,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -8,8 +8,9 @@ export declare abstract class MediaClipManager<T extends MediaClipState> {
|
|
|
8
8
|
private surfaceElement;
|
|
9
9
|
protected clipElement: HTMLElement;
|
|
10
10
|
protected constructAssetURL: (file: string) => string;
|
|
11
|
+
protected getAudioOutput: (outputLabel: string) => string;
|
|
11
12
|
protected mediaPreloader: MediaPreloader;
|
|
12
|
-
constructor(surfaceElement: HTMLElement, clipElement: HTMLElement, state: T, constructAssetURL: (file: string) => string, mediaPreloader: MediaPreloader);
|
|
13
|
+
constructor(surfaceElement: HTMLElement, clipElement: HTMLElement, state: T, constructAssetURL: (file: string) => string, getAudioOutput: (outputLabel: string) => string, mediaPreloader: MediaPreloader);
|
|
13
14
|
protected abstract update(): void;
|
|
14
15
|
abstract destroy(): void;
|
|
15
16
|
isConnected(element?: HTMLElement): boolean;
|
|
@@ -7,11 +7,13 @@ export class MediaClipManager {
|
|
|
7
7
|
surfaceElement;
|
|
8
8
|
clipElement;
|
|
9
9
|
constructAssetURL;
|
|
10
|
+
getAudioOutput;
|
|
10
11
|
mediaPreloader;
|
|
11
|
-
constructor(surfaceElement, clipElement, state, constructAssetURL, mediaPreloader) {
|
|
12
|
+
constructor(surfaceElement, clipElement, state, constructAssetURL, getAudioOutput, mediaPreloader) {
|
|
12
13
|
this.surfaceElement = surfaceElement;
|
|
13
14
|
this.clipElement = clipElement;
|
|
14
15
|
this.constructAssetURL = constructAssetURL;
|
|
16
|
+
this.getAudioOutput = getAudioOutput;
|
|
15
17
|
this.mediaPreloader = mediaPreloader;
|
|
16
18
|
this._state = state;
|
|
17
19
|
// Allow the class to be constructed, then call the loop
|
|
@@ -77,7 +79,9 @@ export function assertElement(mediaElement, parentElement, clip, constructAssetU
|
|
|
77
79
|
}
|
|
78
80
|
break;
|
|
79
81
|
}
|
|
80
|
-
parentElement.
|
|
82
|
+
if (parentElement.children.length !== 1 || parentElement.childNodes[0] !== element) {
|
|
83
|
+
parentElement.replaceChildren(element);
|
|
84
|
+
}
|
|
81
85
|
element.style.position = 'absolute';
|
|
82
86
|
element.style.width = '100%';
|
|
83
87
|
element.style.height = '100%';
|
|
@@ -231,7 +235,8 @@ export class AudioManager extends MediaClipManager {
|
|
|
231
235
|
}
|
|
232
236
|
if (!currentState || !this.audioElement)
|
|
233
237
|
return;
|
|
234
|
-
|
|
238
|
+
const sinkId = this.getAudioOutput(this._state.audioOutput);
|
|
239
|
+
assertAudialProperties(this.audioElement, currentState, sinkId);
|
|
235
240
|
const nextSyncState = assertTemporalProperties(this.audioElement, currentState, this._state.keyframes, this.syncState);
|
|
236
241
|
if (this.syncState.state !== 'seeking' && nextSyncState.state === 'seeking') {
|
|
237
242
|
this.audioElement.addEventListener('seeked', () => {
|
|
@@ -258,8 +263,9 @@ export class VideoManager extends MediaClipManager {
|
|
|
258
263
|
}
|
|
259
264
|
if (!currentState || !this.videoElement)
|
|
260
265
|
return;
|
|
266
|
+
const sinkId = this.getAudioOutput(this._state.audioOutput);
|
|
261
267
|
assertVisualProperties(this.videoElement, currentState, this._state.fit);
|
|
262
|
-
assertAudialProperties(this.videoElement, currentState,
|
|
268
|
+
assertAudialProperties(this.videoElement, currentState, sinkId);
|
|
263
269
|
const nextSyncState = assertTemporalProperties(this.videoElement, currentState, this._state.keyframes, this.syncState);
|
|
264
270
|
if (this.syncState.state !== 'seeking' && nextSyncState.state === 'seeking') {
|
|
265
271
|
this.videoElement.addEventListener('seeked', () => {
|
|
@@ -68,13 +68,13 @@ export class SurfaceManager {
|
|
|
68
68
|
if (!resource.manager) {
|
|
69
69
|
switch (clip.type) {
|
|
70
70
|
case 'image':
|
|
71
|
-
resource.manager = new ImageManager(this._element, resource.element, clip, this.constructAssetUrl, this.mediaPreloader);
|
|
71
|
+
resource.manager = new ImageManager(this._element, resource.element, clip, this.constructAssetUrl, this.getAudioOutput, this.mediaPreloader);
|
|
72
72
|
break;
|
|
73
73
|
case 'audio':
|
|
74
|
-
resource.manager = new AudioManager(this._element, resource.element, clip, this.constructAssetUrl, this.mediaPreloader);
|
|
74
|
+
resource.manager = new AudioManager(this._element, resource.element, clip, this.constructAssetUrl, this.getAudioOutput, this.mediaPreloader);
|
|
75
75
|
break;
|
|
76
76
|
case 'video':
|
|
77
|
-
resource.manager = new VideoManager(this._element, resource.element, clip, this.constructAssetUrl, this.mediaPreloader);
|
|
77
|
+
resource.manager = new VideoManager(this._element, resource.element, clip, this.constructAssetUrl, this.getAudioOutput, this.mediaPreloader);
|
|
78
78
|
break;
|
|
79
79
|
}
|
|
80
80
|
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Connect to COGS to build a custom Media Master",
|
|
4
4
|
"author": "Clockwork Dog <info@clockwork.dog>",
|
|
5
5
|
"homepage": "https://github.com/clockwork-dog/cogs-sdk/tree/main/packages/javascript",
|
|
6
|
-
"version": "3.0.0-alpha.
|
|
6
|
+
"version": "3.0.0-alpha.13",
|
|
7
7
|
"keywords": [],
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"repository": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"cy:generate": "cypress run --e2e"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@clockworkdog/timesync": "^3.0.0-alpha.
|
|
40
|
+
"@clockworkdog/timesync": "^3.0.0-alpha.13",
|
|
41
41
|
"howler": "clockwork-dog/howler.js#fix-looping-clips",
|
|
42
42
|
"reconnecting-websocket": "^4.4.0",
|
|
43
43
|
"zod": "^4.1.13"
|