@rive-app/webgl2-threads 2.47.1 → 2.48.0
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/package.json +1 -1
- package/rive.d.ts +29 -1
- package/rive.js +672 -207
- package/rive.js.map +1 -1
- package/rive.wasm +0 -0
- package/rive_advanced.mjs.d.ts +10 -0
- package/rive_fallback.wasm +0 -0
- package/rive_threads.wasm +0 -0
- package/utils/gamepadBatchEncoder.d.ts +51 -0
- package/utils/gamepadInteractions.d.ts +25 -0
- package/utils/index.d.ts +1 -0
package/rive.js
CHANGED
|
@@ -428,7 +428,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
428
428
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
429
429
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
430
430
|
/* harmony export */ });
|
|
431
|
-
var Rive=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;var I=moduleArg,
|
|
431
|
+
var Rive=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;var I=moduleArg,ma=!!globalThis.window,sa=!!globalThis.WorkerGlobalScope;
|
|
432
432
|
function ta(){function d(D){const F=q;l=e=0;q=new Map;F.forEach(J=>{try{J(D)}catch(N){console.error(N)}});this.lb();z&&z.Zb()}let e=0,l=0,q=new Map,z=null,C=null;this.requestAnimationFrame=function(D){e||=requestAnimationFrame(d.bind(this));const F=++l;q.set(F,D);return F};this.cancelAnimationFrame=function(D){q.delete(D);e&&0==q.size&&(cancelAnimationFrame(e),e=0)};this.Tb=function(D){C&&(document.body.remove(C),C=null);D||(C=document.createElement("div"),C.style.backgroundColor="black",C.style.position=
|
|
433
433
|
"fixed",C.style.right=0,C.style.top=0,C.style.color="white",C.style.padding="4px",C.innerHTML="RIVE FPS",D=function(F){C.innerHTML="RIVE FPS "+F.toFixed(1)},document.body.appendChild(C));z=new function(){let F=0,J=0;this.Zb=function(){var N=performance.now();J?(++F,N-=J,1E3<N&&(D(1E3*F/N),F=J=0)):(J=N,F=0)}}};this.lb=function(){}}
|
|
434
434
|
function xa(){console.assert(!0);const d=new Map;let e=-Infinity;this.push=function(l){l=l+255>>8;d.has(l)&&clearTimeout(d.get(l));d.set(l,setTimeout(function(){d.delete(l);0==d.length?e=-Infinity:l==e&&(e=Math.max(...d.keys()),console.assert(e<l))},1E3));e=Math.max(l,e);return e<<8}}function ya(d){return function(){d();const e=I.riveScripting;if(e)for(const l of e.frameBoundary())console.warn(l)}}const Ca=I.onRuntimeInitialized;
|
|
@@ -591,71 +591,71 @@ a,0);const f=(new DataView(r)).getUint32(a-4,!0);q(r,a,f);return f}function C(r,
|
|
|
591
591
|
n,0,1)&&(f={fa:n,Ya:2+c})}f??={fa:-1,Ya:34+Atomics.add(r,a+144>>>2,1)};Hc.set(a,f)}return f}function F(r,a,f,c,n=null,p=()=>{}){a>>>=0;const v=f%4294967296,k=Math.floor(f/4294967296);let b=null,g=null,h=null,m=null,x=null,K=null;const S=()=>{const G=r();G!==b&&(b=G,g=new Uint8Array(b),h=new Int32Array(b),m=new Uint32Array(b))};S();const A=D(h,a);null!==n&&Atomics.store(n,2,A.Ya);const w=(G,T)=>{const W=c().buffer;W!==x&&(x=W,K=new Uint8Array(W));return G+T<=K.length?K:null},t=(G,T,W,Z,fa)=>{for(let ca=
|
|
592
592
|
0;ca<fa;ca++)G[T+ca]=W[Z+ca]},y=G=>{for(null!==n&&Atomics.store(n,3,G);0!==Atomics.compareExchange(h,G>>>2,0,A.Ya););},u=G=>{Atomics.store(h,G>>>2,0);null!==n&&Atomics.store(n,3,0)};let E=0;const L=(G,T)=>{S();G>>>=0;if(0===(G&2147483648))return 0;var W=(G&2147483647)>>>12,Z=Atomics.load(m,a+148+4*(W>>>10)>>>2);if(0===Z)return 0;W=Z+24*(W&1023);Z=W>>>2;if(0<=A.fa){if(Atomics.store(m,A.fa,W),Z=Atomics.load(m,Z),0===(Z&4096)||0!==((Z^G)&4095))return Atomics.store(m,A.fa,1),0}else for(;;){const fa=Atomics.load(m,
|
|
593
593
|
Z);if(0===(fa&4096)||0!==((fa^G)&4095))return 0;if(Atomics.compareExchange(m,Z,fa,fa+8192)===fa)break}E=W;G=Atomics.load(m,W+4>>>2);return m[G>>>2]!==T||m[W+16>>>2]!==v||m[W+20>>>2]!==k?(P(),0):G},P=()=>{0<=A.fa?Atomics.store(m,A.fa,1):Atomics.sub(m,E+0>>>2,8192)},pa=G=>{G=L(G,3);if(0!==G){4294967295===Atomics.add(m,G+24>>>2,1)&&Atomics.add(m,G+28>>>2,1);y(G+4);try{const T=m[G+16>>>2],W=m[G+32>>>2]>>>2;for(let Z=0;Z<T;Z++){const fa=m[W+Z]+0>>>2;Atomics.add(h,fa,1);Atomics.notify(h,fa)}}finally{u(G+
|
|
594
|
-
4),P()}}},Aa=(G,T,W,Z,fa)=>{const ca=Math.min(fa,m[G+8>>>2]-T);t(g,G+32+T,W,Z,ca);t(g,G+32,W,Z+ca,fa-ca)},La=(G,T,W,Z,fa)=>{var ca=m[G+8>>>2];T%=ca;ca=Math.min(fa,ca-T);t(W,Z,g,G+32+T,ca);t(W,Z+ca,g,G+32,fa-ca)},mb=new Uint8Array(4),ub=new Uint32Array(mb.buffer),$a=()=>{p("a processor cannot pass shared objects through rings or snapshots, as the audio thread may not hold or give them back; pass them in Audio.start's argument");return 0},
|
|
594
|
+
4),P()}}},Aa=(G,T,W,Z,fa)=>{const ca=Math.min(fa,m[G+8>>>2]-T);t(g,G+32+T,W,Z,ca);t(g,G+32,W,Z+ca,fa-ca)},La=(G,T,W,Z,fa)=>{var ca=m[G+8>>>2];T%=ca;ca=Math.min(fa,ca-T);t(W,Z,g,G+32+T,ca);t(W,Z+ca,g,G+32,fa-ca)},mb=new Uint8Array(4),ub=new Uint32Array(mb.buffer),$a=()=>{p("a processor cannot pass shared objects through rings or snapshots, as the audio thread may not hold or give them back; pass them in Audio.start's argument");return 0},fb=(G,T,W,Z)=>{G=L(G,1);if(0===G)return 0;let fa=0,ca=0;y(G+
|
|
595
595
|
4);try{const Da=m[G+20>>>2];if(0===Da)return 0;const Ba=m[G+16>>>2];La(G,Ba,mb,0,4);ca=ub[0];if(0!==(ca&2147483648))return $a();if(null===T){if(ca<=Z)return 0}else{if(0===W||ca>Z)return ca+1;La(G,Ba+4,T,W,ca)}m[G+16>>>2]=(Ba+4+ca)%m[G+8>>>2];m[G+20>>>2]=Da-4-ca;fa=m[G+28>>>2]}finally{u(G+4),P()}pa(fa);return ca+1},da=(G,T,W)=>{G=L(G,0);if(0===G)return-1;try{T>>>=0;var Z=0!==(T&3)||T+4>m[G+8>>>2]?-1:G+32+T>>>2;return 0>Z?-1:W(Z)>>>0}finally{P()}};return{region_create:()=>0,region_size:G=>{G=L(G,0);
|
|
596
596
|
if(0===G)return 0;G=m[G+8>>>2];P();return G},region_lock:()=>0,region_unlock:()=>{},region_read:()=>0,region_write:()=>0,region_poisoned:G=>{G=L(G,0);if(0===G)return 0;G=0!==m[G+16>>>2]?1:0;P();return G},atomic_load:(G,T)=>da(G,T,W=>Atomics.load(h,W)),atomic_store:(G,T,W)=>da(G,T,Z=>{Atomics.store(h,Z,W|0);return 0}),atomic_add:(G,T,W)=>da(G,T,Z=>Atomics.add(h,Z,W|0)),atomic_cas:(G,T,W,Z)=>da(G,T,fa=>Atomics.compareExchange(h,fa,W|0,Z|0)),ring_create:()=>0,ring_write:(G,T,W,Z,fa)=>{T>>>=0;W>>>=0;
|
|
597
|
-
Z=w(T,W);G=null!==Z?L(G,1):0;if(0===G)return 0;if(0!==fa)return P(),$a();fa=0;y(G+4);try{const ca=m[G+8>>>2];if(4+W>ca)return 2;const Da=m[G+20>>>2];if(Da+4+W>ca)return 0;const Ba=m[G+16>>>2];ub[0]=W;Aa(G,(Ba+Da)%ca,mb,0,4);Aa(G,(Ba+Da+4)%ca,Z,T,W);m[G+20>>>2]=Da+4+W;fa=m[G+24>>>2]}finally{u(G+4),P()}pa(fa);return 1},ring_read:(G,T,W)=>{T>>>=0;W>>>=0;const Z=w(T,W);return null!==Z?
|
|
597
|
+
Z=w(T,W);G=null!==Z?L(G,1):0;if(0===G)return 0;if(0!==fa)return P(),$a();fa=0;y(G+4);try{const ca=m[G+8>>>2];if(4+W>ca)return 2;const Da=m[G+20>>>2];if(Da+4+W>ca)return 0;const Ba=m[G+16>>>2];ub[0]=W;Aa(G,(Ba+Da)%ca,mb,0,4);Aa(G,(Ba+Da+4)%ca,Z,T,W);m[G+20>>>2]=Da+4+W;fa=m[G+24>>>2]}finally{u(G+4),P()}pa(fa);return 1},ring_read:(G,T,W)=>{T>>>=0;W>>>=0;const Z=w(T,W);return null!==Z?fb(G,Z,T,W):0},ring_drop:(G,T)=>fb(G,null,0,T>>>0),ring_used:G=>{G=L(G,1);if(0===G)return 0;y(G+4);const T=m[G+20>>>2];
|
|
598
598
|
u(G+4);P();return T},ring_signal:(G,T)=>{G=L(G,1);if(0===G)return 0;T=m[G+(0!==T?28:24)>>>2];P();return T},snapshot_create:()=>0,snapshot_publish:(G,T,W,Z,fa)=>{T>>>=0;W>>>=0;Z=w(T,W);G=null!==Z?L(G,2):0;if(0===G)return 0;try{const Da=m[G+8>>>2];if(0!==fa)return $a();if(W>Da)return 0;y(G+4);try{fa=G+16>>>2;var ca=Atomics.load(m,fa);const Ba=G+40>>>2;if(0!==((0!==ca?Atomics.load(m,Ba+ca-1):0)&2147483648))return $a();ca%=2;const Ra=(G+32>>>2)+ca,ab=Atomics.load(m,Ra)|1;Atomics.store(m,Ra,ab);Atomics.load(m,
|
|
599
599
|
Ra);t(g,G+48+ca*Da,Z,T,W);Atomics.store(m,Ba+ca,W);Atomics.store(m,Ra,ab+1);Atomics.store(m,fa,ca+1);4294967295===Atomics.add(m,G+24>>>2,1)&&Atomics.add(m,G+28>>>2,1)}finally{u(G+4)}return 1}finally{P()}},snapshot_read:(G,T,W)=>{T>>>=0;W>>>=0;const Z=w(T,W);G=null!==Z?L(G,2):0;if(0===G)return 0;try{for(;;){const ca=Atomics.load(m,G+16>>>2);if(0===ca)return 0;var fa=ca-1;const Da=(G+32>>>2)+fa,Ba=Atomics.load(m,Da);if(0!==(Ba&1))continue;const Ra=Atomics.load(m,(G+40>>>2)+fa),ab=m[G+8>>>2];fa=G+48+
|
|
600
|
-
fa*ab;const
|
|
600
|
+
fa*ab;const gb=0!==(Ra&2147483648),vb=Math.min(Ra,ab);!gb&&0!==T&&vb<=W&&t(Z,T,g,fa,vb);if(Atomics.compareExchange(m,Da,Ba,Ba)===Ba)return gb?$a():vb+1}}finally{P()}},snapshot_seq:G=>{G=L(G,2);if(0===G)return 0;G=4294967296*Atomics.load(m,G+28>>>2)+Atomics.load(m,G+24>>>2);P();return G},signal_create:()=>0,signal_notify:G=>pa(G),signal_seq:G=>{G=L(G,3);if(0===G)return 0;G=4294967296*Atomics.load(m,G+28>>>2)+Atomics.load(m,G+24>>>2);P();return G},blob_create:()=>0,blob_size:G=>{G=L(G,4);if(0===G)return 0;
|
|
601
601
|
G=m[G+8>>>2];P();return G},blob_read:(G,T,W,Z)=>{T>>>=0;W>>>=0;Z>>>=0;const fa=w(W,Z);G=null!==fa?L(G,4):0;if(0===G)return 0;const ca=m[G+8>>>2];Z=T<ca?Math.min(Z,ca-T):0;t(fa,W,g,G+16+T,Z);P();return Z},retain:()=>0,release:()=>{}}}function J(r,a,f){const c=Atomics.load(f,2);2>c||(r=new Int32Array(r()),f=Atomics.load(f,3),0!==f&&Atomics.compareExchange(r,f>>>2,c,0),34>c&&Atomics.store(r,((a>>>0)+16>>>2)+c-2,0))}function N(r){return String(r?.message??r)}function R(r,a,f=new Map){const c=v=>{const k=
|
|
602
|
-
r().buffer;return C(k,v,z(k,v))},n={};for(var p of wa)n[p]=v=>a(c(v));p=v=>k=>{k=c(k);const b=f.get(k);void 0===b?a(`Timer '${k}' does not exist`):(v&&f.delete(k),a(`${k}: ${(
|
|
603
|
-
(n[r.Ua]=r.mb(()=>a));try{const p=(new WebAssembly.Instance(r.module,n)).exports;a=p.memory;return{exports:p,memory:a,Na:c}}catch(p){return{error:f??N(p)}}}function X(r,a,f=!1){try{const c=r.exports;c[f?"__riveLaneReset":"__riveLiftedStart"]?.();const n=a.input,p=c.__rive_lane_alloc(n.length)>>>0;(new Uint8Array(r.memory.buffer,p,n.length)).set(n);const v=c[a.prefix+a.Ma](p,n.length,...(a.Fb??[]));a.ca&&c.__rive_lane_free(p);return{result:v}}catch(c){return{error:r.Na(c)}}}function na(r){const a=
|
|
604
|
-
U(r);r=void 0===a.error?X(a,r):a;return void 0===r.error?{...a,result:r.result}:r}function qa(r,a,f,c,n,p){let v=null;const k=S=>{v??=S};var b=
|
|
605
|
-
t&&(b=
|
|
602
|
+
r().buffer;return C(k,v,z(k,v))},n={};for(var p of wa)n[p]=v=>a(c(v));p=v=>k=>{k=c(k);const b=f.get(k);void 0===b?a(`Timer '${k}' does not exist`):(v&&f.delete(k),a(`${k}: ${(bb()-b).toFixed(3)}ms`))};n["console.time"]=v=>f.set(c(v),bb());n["console.timeLog"]=p(!1);n["console.timeEnd"]=p(!0);return n}function U(r){let a=null,f=null;const c=p=>f??N(p),n={env:R(()=>a,r.log,r.Ga),rive_shared_v1:r.Wa(()=>a),rive_rt_v1:{now:bb},rive_lane_v1:{error:(p,v)=>{f=C(a.buffer,p,v);r.pc?.(f)},fuel_check:r.Oa??
|
|
603
|
+
Od}};void 0!==r.Ua&&(n[r.Ua]=r.mb(()=>a));try{const p=(new WebAssembly.Instance(r.module,n)).exports;a=p.memory;return{exports:p,memory:a,Na:c}}catch(p){return{error:f??N(p)}}}function X(r,a,f=!1){try{const c=r.exports;c[f?"__riveLaneReset":"__riveLiftedStart"]?.();const n=a.input,p=c.__rive_lane_alloc(n.length)>>>0;(new Uint8Array(r.memory.buffer,p,n.length)).set(n);const v=c[a.prefix+a.Ma](p,n.length,...(a.Fb??[]));a.ca&&c.__rive_lane_free(p);return{result:v}}catch(c){return{error:r.Na(c)}}}function na(r){const a=
|
|
604
|
+
U(r);r=void 0===a.error?X(a,r):a;return void 0===r.error?{...a,result:r.result}:r}function qa(r,a,f,c,n,p){let v=null;const k=S=>{v??=S};var b=bb()+1E3,g="processor init overran its budget";const h=na({module:r,Wa:S=>n(S,k),log:p,Oa:()=>{if(bb()>b)throw g;},prefix:wb.processor,Ma:a,input:f,Fb:[c.sampleRate,c.nc,c.channels],ca:!0});if(void 0!==h.error||null!==v)return{error:h.error??v};b=Infinity;g="processor overran its block budget";const m=h.exports,x=h.memory;let K=null;return{ja:{xc(S,A,w,t=0){0<
|
|
605
|
+
t&&(b=bb()+t);try{const y=m.__rive_processor_process(S,A)>>>0;if(null!==v)return v;const u=S*c.channels;if(null===K||K.buffer!==x.buffer||K.byteOffset!==y||K.length!==u)K=new Float32Array(x.buffer,y,u);w(K);m.__riveFrameMinor?.();return null}catch(y){return h.Na(y)}finally{b=Infinity}}}}}function V(r){r=[0,...r,11];return new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,r.length+2,1,r.length,...r])}function aa(r){let a=0,f=8;const c=()=>{const [g,h]=ha(r,f);f=h;return g},n=()=>{const g=
|
|
606
606
|
r[f++];123===g&&(a=Math.max(a,1));return 99!==g&&100!==g},p=()=>{var g=r[f++];if(253===g)g=c(),a=Math.max(a,256<=g&&275>=g?2:1),11>=g||92===g||93===g?(c()&64&&c(),c()):12===g||13===g?f+=16:21<=g&&34>=g?f+=1:84<=g&&91>=g&&(c()&64&&c(),c(),f+=1);else if(252===g){g=c();if(g>=Ic.length)return!1;for(let h=0;h<Ic[g];h++)c()}else if(254===g)3===c()?f+=1:(c()&64&&c(),c());else if(40<=g&&62>=g)c()&64&&c(),c();else if(2<=g&&4>=g)123===r[f]&&(a=Math.max(a,1)),c();else if(14===g)for(g=c();0<=g&&f<r.length;g--)c();
|
|
607
607
|
else if(28===g)for(g=c();0<g&&f<r.length;g--){if(!n())return!1}else if(17===g||19===g)c(),c();else if(67===g||68===g)f+=67===g?4:8;else if(32<=g&&38>=g||Pd.includes(g))c();else if(!(1>=g||5===g||11===g||15===g||26===g||27===g||209===g||69<=g&&196>=g))return!1;return!0};for(;f<r.length;){var v=r[f];const [g,h]=ha(r,f+1);f=h;if(1===v)for(v=c();0<v&&f<r.length;v--){if(96!==r[f++])return-1;for(var k=0;2>k;k++)for(var b=c();0<b&&f<r.length;b--)if(!n())return-1}else if(10===v)for(v=c();0<v&&f<r.length;v--){k=
|
|
608
|
-
Math.min(c()+f,r.length);for(b=c();0<b&&f<k;b--)if(c(),!n())return-1;for(;f<k;)if(!p())return-1}f=h+g}return a}function ha(r,a){let f=0,c=0,n;do n=r[a++],f|=(n&127)<<c,c+=7;while(n&128);return[f>>>0,a]}function ea(r){const a=[];do{const f=r&127;r>>>=7;a.push(r?f|128:f)}while(r);return a}function
|
|
609
|
-
Qd.some(p=>p.length===c&&p.every((v,k)=>r[n+k]===v))&&a.push(r.subarray(n+c,f.end))}return a}function ra(r){var a=
|
|
608
|
+
Math.min(c()+f,r.length);for(b=c();0<b&&f<k;b--)if(c(),!n())return-1;for(;f<k;)if(!p())return-1}f=h+g}return a}function ha(r,a){let f=0,c=0,n;do n=r[a++],f|=(n&127)<<c,c+=7;while(n&128);return[f>>>0,a]}function ea(r){const a=[];do{const f=r&127;r>>>=7;a.push(r?f|128:f)}while(r);return a}function la(r){const a=[];for(let f=8;f<r.length;){const [c,n]=ha(r,f+1);a.push({id:r[f],at:f,body:n,end:n+c});f=n+c}return a}function va(r){const a=[];for(const f of la(r)){if(0!==f.id)continue;const [c,n]=ha(r,f.body);
|
|
609
|
+
Qd.some(p=>p.length===c&&p.every((v,k)=>r[n+k]===v))&&a.push(r.subarray(n+c,f.end))}return a}function ra(r){var a=la(r);const f=a.find(v=>8===v.id);var c=a.filter(v=>v!==f);if(void 0===f||!c.some(v=>7===v.id))return r;const n=ha(r,f.body)[0];a=[r.subarray(0,8)];for(var p of c){c=r.subarray(p.body,p.end);if(7===p.id){const [v,k]=ha(r,p.body);c=Array.from("__riveLiftedStart",b=>b.charCodeAt(0));c=Uint8Array.from([...ea(v+1),...r.subarray(k,p.end),...ea(c.length),...c,0,...ea(n)])}a.push(Uint8Array.from([p.id,
|
|
610
610
|
...ea(c.length)]),c)}r=new Uint8Array(a.reduce((v,k)=>v+k.length,0));p=0;for(const v of a)r.set(v,p),p+=v.length;return r}function Sa(r,a,f,c){switch(c){case 0:return r();case 1:return r(a[f]);case 2:return r(a[f],a[f+1]);case 3:return r(a[f],a[f+1],a[f+2]);case 4:return r(a[f],a[f+1],a[f+2],a[f+3]);case 5:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4]);case 6:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4],a[f+5]);case 7:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4],a[f+5],a[f+6]);case 8:return r(a[f],a[f+1],a[f+
|
|
611
|
-
2],a[f+3],a[f+4],a[f+5],a[f+6],a[f+7]);default:return r(...a.subarray(f,f+c))}}const wa=["console.log","console.debug","console.info","console.warn","console.error"],ua=[["rive_lanes_v1","wait_within",[],"blocks on a signal, which only the main lane may; a worker awaits Signal.next or Port.receive instead"],["rive_shared_v1","region_lock",["job","worker"],"locks a shared region, which the audio thread may not wait on; share through atomics, rings and snapshots instead"],
|
|
612
|
-
[],null],["rive_shared_v1",null,["job","worker","processor"],null],["rive_lane_v1",null,["job","worker","processor"],null],["rive_job_v1",null,["job"],null],["rive_worker_v1",null,["worker"],null],["env","console.log",["job","worker","processor"],null],["env","console.debug",["job","worker","processor"],null],["env","console.info",["job","worker","processor"],null],["env","console.warn",["job","worker","processor"],null],["env","console.error",["job","worker","processor"],
|
|
613
|
-
["job","worker"],null],["env","console.timeLog",["job","worker"],null],["env","console.timeEnd",["job","worker"],null]],nb=[["rive.jobs","job"],["rive.workers","worker"],["rive.audio","processor"]],wb={job:"__rive_job_",worker:"__rive_worker_",processor:"__rive_processor_"},Jc={starting:0,running:1,done:2,failed:3,stopped:4},Hc=new Map,
|
|
614
|
-
Ic=[0,0,0,0,0,0,0,0,2,1,2,1,2,1,2,1,1,1],Pd=[12,13,16,18,63,64,65,66,208,210],Qd=nb.map(([r])=>Array.from(r,a=>a.charCodeAt(0)));(function(r){function a(B,H=null){return{Lb:e(da.fc,B,H),W:da.W,la:da.la,Ea:da.Ea,ka:da.ka,Ta:da.Ta,ca:da.ca,wa:T}}function f(B){fa??={ub:W(Rd),sb:W(Sd)};B=[B,...va(B)];if(fa.ub&&fa.sb||B.every(H=>W(H)))return null;B=Math.max(...B.map(
|
|
615
|
-
2!==B?null:"this browser lacks WebAssembly relaxed SIMD, so this file's scripts are off; bake with wasmSimd: on to support it"}function c(B,H){const O=d(a(B.I),()=>{if(null===B.memory)throw Error("script passed memory to the host while its module was still starting");return B.memory});for(const Q of WebAssembly.Module.imports(H))if("function"===Q.kind){let
|
|
616
|
-
H=3*Q.length+1;const
|
|
617
|
-
|
|
618
|
-
0;O<B.length;O++)if(B[O]!==H[O])return!1;return!0}function b(B,H,O){B={U:B,module:H,error:O,ia:new Set,Qa:null};ca.push(B);8<ca.length&&ca.shift();return B}function g(B,H){if(!Ba(B)){b(B,H,null);for(const O of Da())O.postMessage({riveLane:{bytes:B,module:H}})}}function h(B,H){for(const
|
|
619
|
-
|
|
620
|
-
null,null);try{const
|
|
621
|
-
return Object.assign(O,U({module:B.module,Ua:"rive_job_v1",mb:()=>({cancelled:()=>O.eb()}),Wa:K(),log:Q=>da.Sa(O.ja,Q),Ga:O.Ga,Oa:()=>S(O.ja)}))}function w(){var B=Ga.audioWorkletUrl;if("string"===typeof B)return B;B=r.riveAudioWorkletSource;if(bc()||"string"!==typeof B)return null;Kc??=URL.createObjectURL(new Blob([B],{type:"text/javascript"}));return Kc}function t(){let B=[],H=null;return{Y(O){null!==H?H(O):B.push(O)},open(O){H=O;for(const Q of B)H(Q);B=[]},Wb(O){for(const Q of B)
|
|
622
|
-
text:O});B=[]}}}function y(B){return{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{memory:da.memory(),table:da.exports._rive_shared_table(),counter:B.buffer}}}function u(B){for(const H of[...za.X.keys()])
|
|
623
|
-
cc?oa+1:0;
|
|
624
|
-
H.Xa||Lc(H.$a)}));return H}function pa(){const B=new AudioContext,
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
ob;);Lc(
|
|
628
|
-
cc():
|
|
629
|
-
B.text??""))}let da=null;const G=new Map,T={i:!1,l:0,ua:0,sa:0,ta:0,va:0},W=r.riveScriptingValidate??(B=>WebAssembly.validate(B)),Z=!0===r.riveScriptingLaneTwin;let fa=null;const ca=[];let Da=()=>[];const Ba=B=>ca.some(H=>k(H.U,B)),Ra=B=>{B=B?.riveLane;void 0!==B&&g(B.bytes,B.module)},ab=globalThis.process?.nj?.("worker_threads");!1===ab?.oj?ab.rj.i("message",Ra):void 0!==globalThis.WorkerGlobalScope&&globalThis.addEventListener("message",B=>Ra(B.data));const
|
|
630
|
-
let Ud=1;const za={output:null,X:new Map,next:1},bc=()=>void 0!==globalThis.nrdp?.audio?.output;let Kc=null;const Lc=B=>J(()=>da.memory().buffer,da.exports._rive_shared_table(),B),ec=B=>"script audio has no worklet: "+N(B),dc=new WeakMap,Td={running:Jc.running,failed:Jc.failed,log:4294967295},Ga={Hb(B){da??=B},lj(B){Da=B},register(B,H){H=H.slice();G.set(B,{I:{g:B,j:null,h:!1,wa:T},U:H,instance:null,memory:null,Z:null,error:f(H),names:new Map})},release(B){const H=G.get(B);H&&(H.I.g=
|
|
631
|
-
tc(){const B=[];for(const H of G.values())if(null===H.instance&&null===H.error){let O;(O=H).Z??(O.Z=v(H));B.push(H.Z)}return Promise.all(B)},start(B){B=G.get(B);if(!B)return"script module was never registered";if(null===B.instance&&null===B.error){if(null!==B.Z)return"script module is still being prepared";try{const H=new WebAssembly.Module(ra(B.U));n(B,H);m(H,!0);p(B,new WebAssembly.Instance(H,c(B,H)))}catch(H){B.error=N(H)}}return B.error},Z(B){B=G.get(B);return null===B?.instance&&
|
|
632
|
-
null!==B.Z?1:0},ec(B,H){return"function"===typeof G.get(B)?.instance?.exports[da.oa(H)]?1:0},call(B,H,O,Q,
|
|
633
|
-
|
|
634
|
-
H);return 0>B?-1:B-H},rc(B){return(B=G.get(B)?.memory)?B.buffer.byteLength/65536:0},Yb(){const B=[];for(const H of G.keys()){const O=da.exports._rive_web_vm_frame_boundary(H);0!==O&&B.push(da.oa(O))}return B},Pb(B){T.i=!!B;T.l=0;T.ua=0;T.sa=0;T.ta=0;T.va=0},hc(){return{hostCalls:T.l,bytesStaged:T.ua,bytesCopiedOut:T.sa,bytesRead:T.ta,bytesWritten:T.va}},runJob:function(B,H,O,Q,
|
|
635
|
-
O.ja=B;O.eb=
|
|
636
|
-
Ua:"rive_worker_v1",mb:
|
|
637
|
-
null}catch(H){return N(H)}},workerEnd:function(B){
|
|
611
|
+
2],a[f+3],a[f+4],a[f+5],a[f+6],a[f+7]);default:return r(...a.subarray(f,f+c))}}const wa=["console.log","console.debug","console.info","console.warn","console.error"],ua=[["rive_rt_v1","now",["job","worker"],null],["rive_lanes_v1","wait_within",[],"blocks on a signal, which only the main lane may; a worker awaits Signal.next or Port.receive instead"],["rive_shared_v1","region_lock",["job","worker"],"locks a shared region, which the audio thread may not wait on; share through atomics, rings and snapshots instead"],
|
|
612
|
+
["rive_shared_v1","read_done",[],null],["rive_shared_v1",null,["job","worker","processor"],null],["rive_lane_v1",null,["job","worker","processor"],null],["rive_job_v1",null,["job"],null],["rive_worker_v1",null,["worker"],null],["env","console.log",["job","worker","processor"],null],["env","console.debug",["job","worker","processor"],null],["env","console.info",["job","worker","processor"],null],["env","console.warn",["job","worker","processor"],null],["env","console.error",["job","worker","processor"],
|
|
613
|
+
null],["env","console.time",["job","worker"],null],["env","console.timeLog",["job","worker"],null],["env","console.timeEnd",["job","worker"],null]],nb=[["rive.jobs","job"],["rive.workers","worker"],["rive.audio","processor"]],wb={job:"__rive_job_",worker:"__rive_worker_",processor:"__rive_processor_"},Jc={starting:0,running:1,done:2,failed:3,stopped:4},Hc=new Map,bb=void 0!==globalThis.performance?()=>globalThis.performance.now():Date.now,Od=()=>{},ac=[253,12,...Array(16).fill(0)],Rd=V([...ac]),Sd=
|
|
614
|
+
V([...ac,...ac,253,128,2]),Ic=[0,0,0,0,0,0,0,0,2,1,2,1,2,1,2,1,1,1],Pd=[12,13,16,18,63,64,65,66,208,210],Qd=nb.map(([r])=>Array.from(r,a=>a.charCodeAt(0)));(function(r){function a(B,H=null){return{Lb:e(da.fc,B,H),W:da.W,la:da.la,Ea:da.Ea,ka:da.ka,Ta:da.Ta,ca:da.ca,wa:T}}function f(B){fa??={ub:W(Rd),sb:W(Sd)};B=[B,...va(B)];if(fa.ub&&fa.sb||B.every(H=>W(H)))return null;B=Math.max(...B.map(aa));return!fa.ub&&0<B?"this browser lacks WebAssembly SIMD, so this file's scripts are off; bake with wasmSimd: off to support it":
|
|
615
|
+
fa.sb||2!==B?null:"this browser lacks WebAssembly relaxed SIMD, so this file's scripts are off; bake with wasmSimd: on to support it"}function c(B,H){const O=d(a(B.I),()=>{if(null===B.memory)throw Error("script passed memory to the host while its module was still starting");return B.memory});for(const Q of WebAssembly.Module.imports(H))if("function"===Q.kind){let ba,ja,ia,ka;(ia=(ba=O)[ja=Q.module]??(ba[ja]={}))[ka=Q.name]??(ia[ka]=l(Q.module,Q.name))}return O}function n(B,H){const O=da.la();for(const {name:Q}of WebAssembly.Module.exports(H)){if(!Q.startsWith("__rive"))continue;
|
|
616
|
+
H=3*Q.length+1;const ba=da.Ea(H);da.yb(Q,ba,H);da.exports._rive_web_vm_module_export(B.I.g,ba)}da.ka(O);B=da.exports._rive_web_vm_start_refusal(B.I.g);if(0!==B)throw Error(da.oa(B));}function p(B,H){B.memory=H.exports.memory;B.U=null;B.Kb=Object.keys(H.exports).filter(oa=>oa.startsWith("__riveCall")).map(oa=>H.exports[oa]).filter(oa=>{if(!(oa instanceof WebAssembly.Global))return!1;try{return oa.value=oa.value,!0}catch{return!1}});B.Jb=[];const O=da.exports._rive_web_vm_start_fuel(B.I.g),Q=H.exports.__riveFuelArm,
|
|
617
|
+
ba=H.exports.__riveFuelEnd,ja=0<O&&void 0!==Q&&void 0!==ba,ia=da.exports._rive_web_vm_booting;ia(B.I.g);const ka=da.la();B.instance=H;try{ja&&Q(O),H.exports.__riveLiftedStart?.(),ja&&ba()}catch(oa){throw B.instance=null,da.ka(ka),B.I.j=null,oa;}finally{ia(0)}}async function v(B){try{const Q=await WebAssembly.compile(ra(B.U));if(0!==B.I.g){n(B,Q);var H=m(Q),O=await WebAssembly.instantiate(Q,c(B,Q));await H;0!==B.I.g&&p(B,O)}}catch(Q){B.error=N(Q)}}function k(B,H){if(B.length!==H.length)return!1;for(let O=
|
|
618
|
+
0;O<B.length;O++)if(B[O]!==H[O])return!1;return!0}function b(B,H,O){B={U:B,module:H,error:O,ia:new Set,Qa:null};ca.push(B);8<ca.length&&ca.shift();return B}function g(B,H){if(!Ba(B)){b(B,H,null);for(const O of Da())O.postMessage({riveLane:{bytes:B,module:H}})}}function h(B,H){for(const ba of WebAssembly.Module.imports(B)){a:{B=H;var O=ba.module,Q=ba.name;for(const [ja,ia,ka,oa]of ua)if(O===ja&&(null===ia||Q===ia)){B=ka.includes(B)?null:oa??"";break a}B=""}if(null!==B)throw Error("lane module imports "+
|
|
619
|
+
ba.module+"."+ba.name+", which it cannot reach");}}function m(B,H=!1){const O=[];for(const [Q,ba]of nb)for(const ja of WebAssembly.Module.customSections(B,Q)){const ia=ra(new Uint8Array(ja));if(Ba(ia))continue;const ka=oa=>{h(oa,ba);g(ia,oa)};if(H)try{ka(new WebAssembly.Module(ia))}catch(oa){}else O.push(WebAssembly.compile(ia).then(ka).catch(()=>{}))}return Promise.all(O)}function x(B,H,O){let Q=ca.find(ba=>ba.ia.has(B));if(void 0===Q){const ba=H();Q=ca.find(ja=>k(ja.U,ba));if(void 0===Q){Q=b(ba,
|
|
620
|
+
null,null);try{const ja=new WebAssembly.Module(ba);h(ja,O);Q.module=ja}catch(ja){Q.error=N(ja)}}Q.ia.add(B);8<Q.ia.size&&Q.ia.delete(Q.ia.values().next().value)}return Q}function K(B=!1,H=0){return(O,Q)=>B?F(()=>da.W().buffer,da.exports._rive_shared_table(),H,O,null,Q):d(a({g:1,j:null,h:!1,wa:T},"rive_shared_v1"),O,"rive_shared_v1").rive_shared_v1}function S(B){B=da.mc(B);if(null!==B)throw B;}function A(B){const H=B.Qa;B.Qa=null;if(null!==H)return H.Ga.clear(),H;const O={ja:0,eb:null,Ga:new Map,reset:!1};
|
|
621
|
+
return Object.assign(O,U({module:B.module,Ua:"rive_job_v1",mb:()=>({cancelled:()=>O.eb()}),Wa:K(),log:Q=>da.Sa(O.ja,Q),Ga:O.Ga,Oa:()=>S(O.ja)}))}function w(){var B=Ga.audioWorkletUrl;if("string"===typeof B)return B;B=r.riveAudioWorkletSource;if(bc()||"string"!==typeof B)return null;Kc??=URL.createObjectURL(new Blob([B],{type:"text/javascript"}));return Kc}function t(){let B=[],H=null;return{Y(O){null!==H?H(O):B.push(O)},open(O){H=O;for(const Q of B)H(Q);B=[]},Wb(O){for(const Q of B)fb({id:Q.id,kind:"failed",
|
|
622
|
+
text:O});B=[]}}}function y(B){return{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{memory:da.memory(),table:da.exports._rive_shared_table(),counter:B.buffer}}}function u(B){for(const H of[...za.X.keys()])fb({id:H,kind:"failed",text:B})}function E(B,H,O,Q,ba,ja=ba){let ia=!1,ka=-1,oa=0;const Ha=setInterval(()=>{if("closed"===B.state)clearInterval(Ha),ja("script audio context closed");else{var Ea=Atomics.load(H,0),cc=(0<za.X.size||0<oa)&&"running"===B.state;oa=Ea===ka&&
|
|
623
|
+
cc?oa+1:0;ka=Ea;Ea=ia?0!==Atomics.load(H,1)?30:Q:O;oa>=Ea&&(clearInterval(Ha),ba(ia?"processor stalled the audio thread":"script audio worklet never answered"))}},50);return{ready(){ia=!0;oa=0},stop:()=>clearInterval(Ha)}}function L(B,H,O=!0){B.qb.Wb(H);za.output===B&&(za.output=null);O&&void 0===Ga.audioContext&&B.context.close?.()}function P(B){let H=dc.get(B);void 0===H&&(H={$a:new Int32Array(new SharedArrayBuffer(16)),Xa:!1},dc.set(B,H),B.addEventListener("statechange",()=>{"closed"!==B.state||
|
|
624
|
+
H.Xa||Lc(H.$a)}));return H}function pa(){const B=globalThis.navigator?.audioSession;"auto"===B?.type&&(B.type="playback");const H=new AudioContext,O=["pointerdown","pointerup","keydown","touchend"],Q=()=>H.resume(),ba=setTimeout(()=>console.warn("script audio waits for a click, tap or key press on the page"),1E3),ja=()=>{if("running"===H.state||"closed"===H.state){clearTimeout(ba);H.removeEventListener("statechange",ja);for(const ia of O)globalThis.removeEventListener(ia,Q,{capture:!0})}};for(const ia of O)globalThis.addEventListener(ia,
|
|
625
|
+
Q,{capture:!0});H.addEventListener("statechange",ja);ja();return H}function Aa(){const B=Ga.audioContext??pa(),H=t(),O={context:B,Y:H.Y,ea:new Set,qb:H},Q=P(B);let ba=null;const ja=ka=>{za.output===O&&(ia.stop(),u(ka),L(O,ka,!1))},ia=E(B,Q.$a,Infinity,20,ka=>{Q.Xa=!0;ba.port.onmessage=null;ba.port.postMessage({kind:"end"});ba.disconnect();u(ka);L(O,ka,!1)},ja);B.addEventListener("statechange",()=>{"closed"===B.state&&ja("script audio context closed")});B.audioWorklet.addModule(w()).then(()=>{ba=new AudioWorkletNode(B,
|
|
626
|
+
"rive-processors",y(Q.$a));ba.port.onmessage=ka=>fb(ka.data);ba.connect(B.destination);ia.ready();H.open(ka=>ba.port.postMessage(ka))}).catch(ka=>{ia.stop();L(O,ec(ka))});return O}function La(){const B=Ga.audioWorkletUrl;let H=Ga.audioContext;void 0===H&&(globalThis.nrdp.audio.output.open(),H=new AudioContext);H.forceStart?.();const O=t(),Q={context:H,Y:O.Y,ea:new Set,qb:O},ba=new Int32Array(new SharedArrayBuffer(16));let ja=null,ia=!1,ka=!1;const oa=Ia=>{if(!ka){ka=!0;Ha.stop();ja?.terminate();if(ia){for(const ob=
|
|
627
|
+
bb()+200;bb()<ob;);Lc(ba);u(Ia)}L(Q,Ia)}},Ha=E(H,ba,40,2,oa),Ea=Ia=>(...ob)=>{try{Ia(...ob)}catch(Lb){oa(ec(Lb))}},cc=Ea(()=>{(new AudioWorkletNode(H,"rive-processors",y(ba))).connect(H.destination);ia=!0;Ha.ready();O.open(Ia=>ja.send(Ia))});fetch(B).then(Ia=>{if(!Ia.ok)throw Error(B+" answered HTTP "+Ia.status);return Ia.text()}).then(Ia=>{if(!ka){var ob=H.audioWorklet;ob.active=!0;ob.init(Ea(()=>{ka||(ja=globalThis.nrdp.thread.start({url:B,source:Ia,audio:H}),ja.addEventListener("raw-message",Lb=>
|
|
628
|
+
"ready"===Lb.kind?cc():fb(Lb)))}))}}).catch(Ia=>oa(ec(Ia)));return Q}function mb(){let B;(B=za).output??(B.output=bc()?La():Aa());return za.output}function ub(B){const H=new Set([...za.X.values()].map(O=>O.kb));for(const O of B.ea){if(8>=B.ea.size)break;H.has(O)||(B.ea.delete(O),B.Y({kind:"forget",moduleId:O}))}}function $a(B,H,O){const Q=H.Nb;B.ea.add(H.kb);B.Y({...H.start,bytes:O?Q.U:null})}function fb(B){const H=za.X.get(B.id);void 0!==H&&("resend"===B.kind?null!==za.output&&$a(za.output,H,!0):
|
|
629
|
+
da.uc(H.qc,Td[B.kind],B.text??""))}let da=null;const G=new Map,T={i:!1,l:0,ua:0,sa:0,ta:0,va:0},W=r.riveScriptingValidate??(B=>WebAssembly.validate(B)),Z=!0===r.riveScriptingLaneTwin;let fa=null;const ca=[];let Da=()=>[];const Ba=B=>ca.some(H=>k(H.U,B)),Ra=B=>{B=B?.riveLane;void 0!==B&&g(B.bytes,B.module)},ab=globalThis.process?.nj?.("worker_threads");!1===ab?.oj?ab.rj.i("message",Ra):void 0!==globalThis.WorkerGlobalScope&&globalThis.addEventListener("message",B=>Ra(B.data));const gb=new Map;let vb=
|
|
630
|
+
1;const fc=new Map;let Ud=1;const za={output:null,X:new Map,next:1},bc=()=>void 0!==globalThis.nrdp?.audio?.output;let Kc=null;const Lc=B=>J(()=>da.memory().buffer,da.exports._rive_shared_table(),B),ec=B=>"script audio has no worklet: "+N(B),dc=new WeakMap,Td={running:Jc.running,failed:Jc.failed,log:4294967295},Ga={Hb(B){da??=B},lj(B){Da=B},register(B,H){H=H.slice();G.set(B,{I:{g:B,j:null,h:!1,wa:T},U:H,instance:null,memory:null,Z:null,error:f(H),names:new Map})},release(B){const H=G.get(B);H&&(H.I.g=
|
|
631
|
+
0,G.delete(B))},tc(){const B=[];for(const H of G.values())if(null===H.instance&&null===H.error){let O;(O=H).Z??(O.Z=v(H));B.push(H.Z)}return Promise.all(B)},start(B){B=G.get(B);if(!B)return"script module was never registered";if(null===B.instance&&null===B.error){if(null!==B.Z)return"script module is still being prepared";try{const H=new WebAssembly.Module(ra(B.U));n(B,H);m(H,!0);p(B,new WebAssembly.Instance(H,c(B,H)))}catch(H){B.error=N(H)}}return B.error},Z(B){B=G.get(B);return null===B?.instance&&
|
|
632
|
+
null===B.error&&null!==B.Z?1:0},ec(B,H){return"function"===typeof G.get(B)?.instance?.exports[da.oa(H)]?1:0},call(B,H,O,Q,ba,ja,ia){B=G.get(B);if(!B||null===B.instance)return 1;let ka=B.names.get(H);void 0===ka&&(ka=B.instance.exports[da.oa(H)]??null,B.names.set(H,ka));if("function"!==typeof ka)return 1;H=B.Kb;const oa=B.Jb,Ha=oa.length;for(let Ea=0;Ea<H.length;Ea++)oa.push(H[Ea].value);try{const Ea=Sa(ka,da.ib(),Q>>3,O);da.ib()[ba>>3]="number"===typeof Ea?Ea:0;return 0}catch(Ea){return B.I.j=null,
|
|
633
|
+
da.yb(N(Ea),ja,ia),B.I.h?3:2}finally{for(O=0;O<H.length;O++)H[O].value=oa[Ha+O];oa.length=Ha}},vc(B,H){if(B=G.get(B))B.I.j=da.oa(H)},read(B,H,O,Q){B=G.get(B)?.memory;if(!B||H+Q>B.buffer.byteLength)return 0;da.W().set(new Uint8Array(B.buffer,H,Q),O);T.i&&(T.ta+=Q);return 1},write(B,H,O,Q){B=G.get(B)?.memory;if(!B||H+Q>B.buffer.byteLength)return 0;(new Uint8Array(B.buffer,H,Q)).set(da.W().subarray(O,O+Q));T.i&&(T.va+=Q);return 1},jj(B,H){B=G.get(B)?.memory;if(!B||H>=B.buffer.byteLength)return-1;B=(new Uint8Array(B.buffer)).indexOf(0,
|
|
634
|
+
H);return 0>B?-1:B-H},rc(B){return(B=G.get(B)?.memory)?B.buffer.byteLength/65536:0},Yb(){const B=[];for(const H of G.keys()){const O=da.exports._rive_web_vm_frame_boundary(H);0!==O&&B.push(da.oa(O))}return B},Pb(B){T.i=!!B;T.l=0;T.ua=0;T.sa=0;T.ta=0;T.va=0},hc(){return{hostCalls:T.l,bytesStaged:T.ua,bytesCopiedOut:T.sa,bytesRead:T.ta,bytesWritten:T.va}},runJob:function(B,H,O,Q,ba,ja){H=x(H,O,"job");if(null!==H.error)return{ok:!1,error:H.error};O=A(H);if(void 0!==O.error)return{ok:!1,error:O.error};
|
|
635
|
+
O.ja=B;O.eb=ja;B=X(O,{prefix:wb.job,Ma:Q,input:ba},O.reset);if(void 0!==B.error)return{ok:!1,error:B.error};try{const ia=O.memory.buffer,ka=new Uint32Array(ia,B.result>>>0,2),oa=0===ka[1]?new Uint8Array(0):new Uint8Array(ia,ka[0],ka[1]);void 0!==O.exports.__riveLaneReset&&16777216>=ia.byteLength&&!ja()&&(O.reset=!0,H.Qa=O);return{ok:!0,output:oa}}catch(ia){return{ok:!1,error:O.Na(ia)}}},workerStart:function(B,H,O,Q,ba,ja){H=x(H,O,"worker");if(null!==H.error)return{ok:!1,error:H.error};Q=na({module:H.module,
|
|
636
|
+
Ua:"rive_worker_v1",mb:ia=>({finished:(ka,oa,Ha)=>ja.finished(ka,new Uint8Array(ia().buffer,oa>>>0,Ha>>>0)),wait:ja.wait,stopping:ja.ij}),pc:ia=>da.lc(B,ia),Wa:K(),log:ia=>da.Sa(B,ia),Oa:()=>S(B),prefix:wb.worker,Ma:Q,input:ba,ca:!0});if(void 0!==Q.error)return{ok:!1,error:Q.error};ba=vb++;gb.set(ba,{wake:Q.exports.__rive_worker_wake,Mb:Q.exports.__riveFrameMinor});return{ok:!0,id:ba}},workerWake:function(B,H,O){try{return gb.get(B).wake(H,O),null}catch(Q){return N(Q)}},workerCollect:function(B){try{return gb.get(B)?.Mb?.(),
|
|
637
|
+
null}catch(H){return N(H)}},workerEnd:function(B){gb.delete(B)},processorStart:function(B,H,O,Q,ba,ja,ia){H=x(H,O,"processor");if(null!==H.error)return{ok:!1,error:H.error};Q=qa(H.module,Q,ba,ja,K(Z,ia),ka=>da.Sa(B,ka));if(void 0!==Q.error)return{ok:!1,error:Q.error};ba=Ud++;fc.set(ba,Q.ja);return{ok:!0,id:ba}},processorRender:function(B,H,O,Q){return fc.get(B).xc(H,O,Q)},processorEnd:function(B){fc.delete(B)},audioRefusal:function(){if(!bc()&&!0!==globalThis.crossOriginIsolated)return"real time audio needs cross origin isolation";
|
|
638
638
|
if("undefined"===typeof SharedArrayBuffer||!(da.memory().buffer instanceof SharedArrayBuffer))return"real time audio needs librive built with threads";if(null===w())return"real time audio needs riveScripting.audioWorkletUrl";if("undefined"===typeof AudioContext)return"real time audio needs Web Audio";const B=Ga.audioContext;return"closed"===B?.state?"real time audio cannot start on a closed AudioContext":dc.get(B)?.Xa?"real time audio stalled the host's AudioContext; hand riveScripting a new one":
|
|
639
|
-
null},audioSampleRate:()=>mb().context.sampleRate,audioStart:function(B,H,O,Q,
|
|
639
|
+
null},audioSampleRate:()=>mb().context.sampleRate,audioStart:function(B,H,O,Q,ba,ja,ia,ka){const oa=x(H,O,"processor");if(null!==oa.error)return{ok:!1,error:oa.error};O=mb();const Ha=za.next++;B={qc:B,kb:H,Nb:oa,start:{kind:"start",id:Ha,moduleId:H,entry:Q,input:ba,format:{sampleRate:ja.sampleRate,maxFrames:ja.nc,channels:ja.channels},hardBlocks:ia,sharedOwner:ka}};za.X.set(Ha,B);$a(O,B,!O.ea.has(H));ub(O);return{ok:!0,id:Ha}},audioStop:function(B){za.X.delete(B);null!==za.output&&(za.output.Y({kind:"stop",
|
|
640
640
|
id:B}),ub(za.output))},audioState:()=>({context:za.output?.context.state??"none",processors:za.X.size})};Ga.prepare=Ga.tc;Ga.frameBoundary=Ga.Yb;Ga.countHostCalls=Ga.Pb;Ga.hostCallCounts=Ga.hc;return r.riveScripting=Ga})(I)})();const Fa=I.onRuntimeInitialized;
|
|
641
|
-
I.onRuntimeInitialized=function(){function d(V){this.G=V;this.Bb=V.getContext("2d");this.bb=q;this.O=[];this.ga=0;this.clear=function(){console.assert(0==this.ga);this.O=[];z.delete(this)};this.save=function(){++this.ga;this.O.push(q.save.bind(q))};this.restore=function(){0<this.ga&&(this.O.push(q.restore.bind(q)),--this.ga)};this.transform=function(
|
|
642
|
-
this.ga);z.add(this);q.ab||l()};this.bindContext=function(){const
|
|
643
|
-
|
|
644
|
-
V),ra.Ha=ra.$*ra.aa,
|
|
645
|
-
ua&65535;wa.ra=ua>>16}wa=J.push(ea.drawWidth());ua=N.push(ea.drawHeight());console.assert(wa>=ea.drawWidth());console.assert(ua>=ea.drawHeight());console.assert(wa<=V);console.assert(ua<=V);q.G.width!=wa&&(q.G.width=wa);q.G.height!=ua&&(q.G.height=ua);q.clear();for(wa=Sa;wa<ra;++wa){ua=
|
|
646
|
-
ra;++Sa)wa=
|
|
647
|
-
q.Ia=!q.ab;if(
|
|
648
|
-
!0;D.call(this)};const F=I.Artboard.prototype.draw;I.Artboard.prototype.draw=function(V){V.O?V.O.push(()=>{this.Gb||F.call(this,V.bb)}):F.call(this,V)};const J=new xa,N=new xa,R=new ta;I.requestAnimationFrame=R.requestAnimationFrame.bind(R);I.cancelAnimationFrame=R.cancelAnimationFrame.bind(R);I.enableFPSCounter=R.Tb.bind(R);const U=ya(l);R.lb=U;I.resolveAnimationFrame=U;let X=I.load;I.load=function(V,
|
|
649
|
-
|
|
641
|
+
I.onRuntimeInitialized=function(){function d(V){this.G=V;this.Bb=V.getContext("2d");this.bb=q;this.O=[];this.ga=0;this.clear=function(){console.assert(0==this.ga);this.O=[];z.delete(this)};this.save=function(){++this.ga;this.O.push(q.save.bind(q))};this.restore=function(){0<this.ga&&(this.O.push(q.restore.bind(q)),--this.ga)};this.transform=function(aa){this.O.push(q.transform.bind(q,aa))};this.align=function(aa,ha,ea,la,va=1){this.O.push(q.align.bind(q,aa,ha,ea,la,va))};this.flush=function(){console.assert(0==
|
|
642
|
+
this.ga);z.add(this);q.ab||l()};this.bindContext=function(){const aa=this.bb;aa&&aa.T&&Ja(aa.T)};this["delete"]=function(){}}function e(V,aa=!1,ha=!1){var ea={alpha:!0,depth:aa||ha,stencil:aa||ha,antialias:aa&&!ha,premultipliedAlpha:!0,preserveDrawingBuffer:0,powerPreference:"high-performance",failIfMajorPerformanceCaveat:0,enableExtensionsByDefault:!1,explicitSwapControl:0,renderViaOffscreenBackBuffer:0};aa=V.getContext("webgl2",ea);if(!aa)return null;ea=Ka(aa,ea);Ja(ea);const la=C(V.width,V.height);
|
|
643
|
+
la.T=ea;la.G=V;la.Ka=V.width;la.Ja=V.height;la.P=aa;la.Ib=function(){this.T&&Ja(this.T)};var va=la.delete;la.delete=function(){this.Ib();va.call(this);var ra=this.T;Ma===Na[ra]&&(Ma=null);"object"==typeof JSEvents&&JSEvents.sj(Na[ra].F.canvas);Na[ra]?.F.canvas&&(Na[ra].F.canvas.zb=void 0);this.T=this.G=this.Ka=this.Ja=this.P=Na[ra]=null};ha&&la.setInkbleed(!0);return la}function l(){if(q){var V=q.Db,aa=0,ha=0,ea=0,la=Array(z.size),va=0;for(var ra of z)ra.aa=Math.min(ra.G.width,V),ra.$=Math.min(ra.G.height,
|
|
644
|
+
V),ra.Ha=ra.$*ra.aa,aa=Math.max(aa,ra.aa),ha=Math.max(ha,ra.$),ea+=ra.Ha,la[va++]=ra;z.clear();if(!(0>=ea)){aa=1<<(0>=aa?0:32-Math.clz32(aa-1));for(ha=1<<(0>=ha?0:32-Math.clz32(ha-1));ha*aa<ea;)aa<=ha?aa*=2:ha*=2;aa=Math.min(aa,V);ha=Math.min(ha,V);la.sort((nb,wb)=>wb.Ha-nb.Ha);q.cb||(q.cb=new I.DynamicRectanizer(V),q.Ab=new I.Mat2D);ea=q.cb;va=q.Ab;for(var Sa=0;Sa<la.length;){ea.reset(aa,ha);for(ra=Sa;ra<la.length;++ra){var wa=la[ra],ua=ea.addRect(wa.aa,wa.$);if(0>ua){console.assert(ra>Sa);break}wa.qa=
|
|
645
|
+
ua&65535;wa.ra=ua>>16}wa=J.push(ea.drawWidth());ua=N.push(ea.drawHeight());console.assert(wa>=ea.drawWidth());console.assert(ua>=ea.drawHeight());console.assert(wa<=V);console.assert(ua<=V);q.G.width!=wa&&(q.G.width=wa);q.G.height!=ua&&(q.G.height=ua);q.clear();for(wa=Sa;wa<ra;++wa){ua=la[wa];q.saveClipRect(ua.qa,ua.ra,ua.qa+ua.aa,ua.ra+ua.$);va.xx=ua.aa/ua.G.width;va.yy=ua.$/ua.G.height;va.xy=va.yx=0;va.tx=ua.qa;va.ty=ua.ra;q.transform(va);for(const nb of ua.O)nb();q.restoreClipRect();ua.O=[]}for(q.flush();Sa<
|
|
646
|
+
ra;++Sa)wa=la[Sa],ua=wa.Bb,ua.globalCompositeOperation="copy",ua.drawImage(q.G,wa.qa,wa.ra,wa.aa,wa.$,0,0,wa.G.width,wa.G.height);Sa=ra}}}}Fa&&Fa();let q=null;const z=new Set,C=I.makeRenderer;I.makeRenderer=function(V,aa,ha){ha=!(!ha||!ha.inkbleed);if(!q){function ea(la){var va=document.createElement("canvas");va.width=1;va.height=1;q=e(va,la);if(!q)return null;q.ab=!!q.P.getExtension("WEBGL_shader_pixel_local_storage");q.Db=Math.min(q.P.getParameter(q.P.MAX_RENDERBUFFER_SIZE),q.P.getParameter(q.P.MAX_TEXTURE_SIZE));
|
|
647
|
+
q.Ia=!q.ab;if(la=q.P.getExtension("WEBGL_debug_renderer_info"))va=q.P.getParameter(la.UNMASKED_RENDERER_WEBGL),q.P.getParameter(la.UNMASKED_VENDOR_WEBGL).includes("Google")&&va.includes("ANGLE Metal Renderer")&&(q.Ia=!1);return q}q=ea(!0);if(!q)throw"Unable to create WebGL context, your environment may not support WebGL. Try out @rive-app/canvas as an alternative.";q.Ia||(q=ea(!1))}return aa?new d(V):e(V,q.Ia,ha)};const D=I.Artboard.prototype["delete"];I.Artboard.prototype["delete"]=function(){this.Gb=
|
|
648
|
+
!0;D.call(this)};const F=I.Artboard.prototype.draw;I.Artboard.prototype.draw=function(V){V.O?V.O.push(()=>{this.Gb||F.call(this,V.bb)}):F.call(this,V)};const J=new xa,N=new xa,R=new ta;I.requestAnimationFrame=R.requestAnimationFrame.bind(R);I.cancelAnimationFrame=R.cancelAnimationFrame.bind(R);I.enableFPSCounter=R.Tb.bind(R);const U=ya(l);R.lb=U;I.resolveAnimationFrame=U;let X=I.load;I.load=function(V,aa,ha=!0,ea=null){const la=new I.FallbackFileAssetLoader;void 0!==aa&&la.addLoader(aa);ha&&(aa=new I.CDNFileAssetLoader(ea),
|
|
649
|
+
la.addLoader(aa));return I.startFileScripts(X(V,la,ea??null))};const na=I.WebGL2Renderer.prototype.clear;I.WebGL2Renderer.prototype.clear=function(){Ja(this.T);const V=this.G;if(this.Ka!=V.width||this.Ja!=V.height)this.resize(V.width,V.height),this.Ka=V.width,this.Ja=V.height;na.call(this)};I.decodeImage=function(V,aa,ha=null){V=I.decodeWebGL2Image(V,ha??null);aa(V)};let qa=I.Renderer.prototype.align;I.Renderer.prototype.align=function(V,aa,ha,ea,la=1){qa.call(this,V,aa,ha,ea,la)}};var Oa="./this.program";
|
|
650
650
|
sa&&(_scriptName=self.location.href);var Pa="",Qa,Ta;
|
|
651
|
-
if(
|
|
652
|
-
" : "+e.url);}}var Va=console.log.bind(console),Wa=console.error.bind(console),Xa,Ya=!1,Ua=d=>d.startsWith("file://"),Za,
|
|
653
|
-
function sb(d){I.onAbort?.(d);d="Aborted("+d+")";Wa(d);Ya=!0;d=new WebAssembly.RuntimeError(d+". Build with -sASSERTIONS for more info.");
|
|
651
|
+
if(ma||sa){try{Pa=(new URL(".",_scriptName)).href}catch{}sa&&(Ta=d=>{var e=new XMLHttpRequest;e.open("GET",d,!1);e.responseType="arraybuffer";e.send(null);return new Uint8Array(e.response)});Qa=async d=>{if(Ua(d))return new Promise((l,q)=>{var z=new XMLHttpRequest;z.open("GET",d,!0);z.responseType="arraybuffer";z.onload=()=>{200==z.status||0==z.status&&z.response?l(z.response):q(z.status)};z.onerror=q;z.send(null)});var e=await fetch(d,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw Error(e.status+
|
|
652
|
+
" : "+e.url);}}var Va=console.log.bind(console),Wa=console.error.bind(console),Xa,Ya=!1,Ua=d=>d.startsWith("file://"),Za,cb,db,eb,hb,ib,M,jb,kb,lb,pb=!1;function qb(){var d=rb.buffer;I.HEAP8=db=new Int8Array(d);hb=new Int16Array(d);I.HEAPU8=eb=new Uint8Array(d);I.HEAPU16=ib=new Uint16Array(d);I.HEAP32=M=new Int32Array(d);I.HEAPU32=jb=new Uint32Array(d);I.HEAPF32=kb=new Float32Array(d);lb=new Float64Array(d)}
|
|
653
|
+
function sb(d){I.onAbort?.(d);d="Aborted("+d+")";Wa(d);Ya=!0;d=new WebAssembly.RuntimeError(d+". Build with -sASSERTIONS for more info.");cb?.(d);throw d;}var tb;async function xb(d){if(!Xa)try{var e=await Qa(d);return new Uint8Array(e)}catch{}if(d==tb&&Xa)d=new Uint8Array(Xa);else if(Ta)d=Ta(d);else throw"both async and sync fetching of the wasm failed";return d}
|
|
654
654
|
async function yb(d,e){try{var l=await xb(d);return await WebAssembly.instantiate(l,e)}catch(q){Wa(`failed to asynchronously prepare wasm: ${q}`),sb(q)}}async function zb(d){var e=tb;if(!Xa&&!Ua(e))try{var l=fetch(e,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(l,d)}catch(q){Wa(`wasm streaming compile failed: ${q}`),Wa("falling back to ArrayBuffer instantiation")}return yb(e,d)}
|
|
655
655
|
var Ab,Bb,Cb=d=>{for(;0<d.length;)d.shift()(I)},Db=[],Eb=[],Fb=()=>{var d=I.preRun.shift();Eb.push(d)},Hb=d=>Gb(d),Jb=()=>Ib(),Kb=globalThis.TextDecoder&&new TextDecoder,Mb=(d,e,l,q)=>{l=e+l;if(q)return l;for(;d[e]&&!(e>=l);)++e;return e},Nb=(d,e=0,l,q)=>{l=Mb(d,e,l,q);if(16<l-e&&d.buffer&&Kb)return Kb.decode(d.subarray(e,l));for(q="";e<l;){var z=d[e++];if(z&128){var C=d[e++]&63;if(192==(z&224))q+=String.fromCharCode((z&31)<<6|C);else{var D=d[e++]&63;z=224==(z&240)?(z&15)<<12|C<<6|D:(z&7)<<18|C<<
|
|
656
656
|
12|D<<6|d[e++]&63;65536>z?q+=String.fromCharCode(z):(z-=65536,q+=String.fromCharCode(55296|z>>10,56320|z&1023))}}else q+=String.fromCharCode(z)}return q},Ob=(d,e)=>Object.defineProperty(e,"name",{value:d}),Pb=[],Qb=[0,1,,1,null,1,!0,1,!1,1],Rb=class extends Error{constructor(d){super(d);this.name="BindingError"}},Sb=d=>{if(!d)throw new Rb(`Cannot use deleted val. handle = ${d}`);return Qb[d]},Tb=d=>{switch(d){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const e=
|
|
657
657
|
Pb.pop()||Qb.length;Qb[e]=d;Qb[e+1]=1;return e}};class Ub extends Error{}
|
|
658
|
-
var Vb=d=>{for(var e="";;){var l=
|
|
658
|
+
var Vb=d=>{for(var e="";;){var l=eb[d++];if(!l)return e;e+=String.fromCharCode(l)}},Wb={},Xb=(d,e)=>{if(void 0===e)throw new Rb("ptr should not be undefined");for(;d.C;)e=d.na(e),d=d.C;return e},Yb={},gc=d=>{d=Zb(d);var e=Vb(d);$b(d);return e},hc=(d,e)=>{var l=Yb[d];if(void 0===l)throw d=`${e} has unknown type ${gc(d)}`,new Rb(d);return l},ic=()=>{},jc=!1,kc=d=>{if(!globalThis.FinalizationRegistry)return kc=e=>e,d;jc=new FinalizationRegistry(e=>{e=e.m;--e.count.value;0===e.count.value&&(e.D?e.K.N(e.D):
|
|
659
659
|
e.v.o.N(e.u))});kc=e=>{var l=e.m;l.D&&jc.register(e,{m:l},e);return e};ic=e=>{jc.unregister(e)};return kc(d)},lc={},mc=d=>{for(;d.length;){var e=d.pop();d.pop()(e)}};function nc(d){return this.s(jb[d>>2])}
|
|
660
660
|
var oc={},pc={},qc=class extends Error{constructor(d){super(d);this.name="InternalError"}},sc=(d,e,l)=>{function q(F){F=l(F);if(F.length!==d.length)throw new qc("Mismatched type converter count");for(var J=0;J<d.length;++J)rc(d[J],F[J])}d.forEach(F=>pc[F]=e);var z=Array(e.length),C=[],D=0;for(let [F,J]of e.entries())Yb.hasOwnProperty(J)?z[F]=Yb[J]:(C.push(J),oc.hasOwnProperty(J)||(oc[J]=[]),oc[J].push(()=>{z[F]=Yb[J];++D;D===C.length&&q(z)}));0===C.length&&q(z)};
|
|
661
661
|
function tc(d,e,l={}){var q=e.name;if(!d)throw new Rb(`type "${q}" must have a positive integer typeid pointer`);if(Yb.hasOwnProperty(d)){if(l.ic)return;throw new Rb(`Cannot register type '${q}' twice`);}Yb[d]=e;delete pc[d];oc.hasOwnProperty(d)&&(e=oc[d],delete oc[d],e.forEach(z=>z()))}function rc(d,e,l={}){return tc(d,e,l)}var uc=d=>{throw new Rb(d.m.v.o.name+" instance already deleted");},vc=[];function wc(){}
|
|
@@ -670,10 +670,10 @@ var Mc=(d,e,l)=>{if(e===l)return d;if(void 0===l.C)return null;d=Mc(d,e,l.C);ret
|
|
|
670
670
|
function Pc(d,e,l,q,z,C,D,F,J,N,R){this.name=d;this.o=e;this.Pa=l;this.ya=q;this.za=z;this.sc=C;this.hj=D;this.rb=F;this.Va=J;this.wc=N;this.N=R;z||void 0!==e.C?this.B=Fc:(this.B=q?Ec:Gc,this.H=null)}
|
|
671
671
|
var Qc=(d,e,l)=>{if(!I.hasOwnProperty(d))throw new qc("Replacing nonexistent public symbol");void 0!==I[d].A&&void 0!==l?I[d].A[l]=e:(I[d]=e,I[d].R=l)},Rc={},Tc=(d,e,l=[])=>{d.includes("j")?(d=d.replace(/p/g,"i"),e=(0,Rc[d])(e,...l)):e=Sc.get(e)(...l);return e},Uc=(d,e)=>(...l)=>Tc(d,e,l),Vc=(d,e)=>{d=Vb(d);var l=d.includes("j")?Uc(d,e):Sc.get(e);if("function"!=typeof l)throw new Rb(`unknown function pointer with signature ${d}: ${e}`);return l};class Wc extends Error{}
|
|
672
672
|
var Xc=(d,e)=>{function l(C){z[C]||Yb[C]||(pc[C]?pc[C].forEach(l):(q.push(C),z[C]=!0))}var q=[],z={};e.forEach(l);throw new Wc(`${d}: `+q.map(gc).join([", "]));};function Yc(d){for(var e=1;e<d.length;++e)if(null!==d[e]&&void 0===d[e].H)return!0;return!1}
|
|
673
|
-
function Zc(d,e,l,q,z){var C=e.length;if(2>C)throw new Rb("argTypes array size mismatch! Must at least get return value and 'this' types!");var D=null!==e[1]&&null!==l,F=Yc(e),J=!e[0].kc,N=C-2,R=Array(N),U=[],X=[];return Ob(d,function(...na){X.length=0;U.length=D?2:1;U[0]=z;if(D){var qa=e[1].B(X,this);U[1]=qa}for(var V=0;V<N;++V)R[V]=e[V+2].B(X,na[V]),U.push(R[V]);na=q(...U);if(F)mc(X);else for(V=D?1:2;V<e.length;V++){var
|
|
673
|
+
function Zc(d,e,l,q,z){var C=e.length;if(2>C)throw new Rb("argTypes array size mismatch! Must at least get return value and 'this' types!");var D=null!==e[1]&&null!==l,F=Yc(e),J=!e[0].kc,N=C-2,R=Array(N),U=[],X=[];return Ob(d,function(...na){X.length=0;U.length=D?2:1;U[0]=z;if(D){var qa=e[1].B(X,this);U[1]=qa}for(var V=0;V<N;++V)R[V]=e[V+2].B(X,na[V]),U.push(R[V]);na=q(...U);if(F)mc(X);else for(V=D?1:2;V<e.length;V++){var aa=1===V?qa:R[V-2];null!==e[V].H&&e[V].H(aa)}qa=J?e[0].s(na):void 0;return qa})}
|
|
674
674
|
var $c=(d,e)=>{for(var l=[],q=0;q<d;q++)l.push(jb[e+4*q>>2]);return l},ad=d=>{d=d.trim();const e=d.indexOf("(");return-1===e?d:d.slice(0,e)},bd=(d,e,l)=>{if(!(d instanceof Object))throw new Rb(`${l} with invalid "this": ${d}`);if(!(d instanceof e.o.constructor))throw new Rb(`${l} incompatible with "this" of type ${d.constructor.name}`);if(!d.m.u)throw new Rb(`cannot call emscripten binding method ${l} on deleted object`);return Cc(d.m.u,d.m.v.o,e.o)},cd=d=>{9<d&&0===--Qb[d+1]&&(Qb[d]=void 0,Pb.push(d))},
|
|
675
|
-
dd={name:"emscripten::val",s:d=>{var e=Sb(d);cd(d);return e},B:(d,e)=>Tb(e),J:nc,H:null},ed=(d,e,l)=>{switch(e){case 1:return l?function(q){return this.s(
|
|
676
|
-
2])};case 8:return function(l){return this.s(lb[l>>3])};default:throw new TypeError(`invalid float width (${e}): ${d}`);}},gd=(d,e,l)=>{switch(e){case 1:return l?q=>
|
|
675
|
+
dd={name:"emscripten::val",s:d=>{var e=Sb(d);cd(d);return e},B:(d,e)=>Tb(e),J:nc,H:null},ed=(d,e,l)=>{switch(e){case 1:return l?function(q){return this.s(db[q])}:function(q){return this.s(eb[q])};case 2:return l?function(q){return this.s(hb[q>>1])}:function(q){return this.s(ib[q>>1])};case 4:return l?function(q){return this.s(M[q>>2])}:function(q){return this.s(jb[q>>2])};default:throw new TypeError(`invalid integer width (${e}): ${d}`);}},fd=(d,e)=>{switch(e){case 4:return function(l){return this.s(kb[l>>
|
|
676
|
+
2])};case 8:return function(l){return this.s(lb[l>>3])};default:throw new TypeError(`invalid float width (${e}): ${d}`);}},gd=(d,e,l)=>{switch(e){case 1:return l?q=>db[q]:q=>eb[q];case 2:return l?q=>hb[q>>1]:q=>ib[q>>1];case 4:return l?q=>M[q>>2]:q=>jb[q>>2];default:throw new TypeError(`invalid integer width (${e}): ${d}`);}},hd=(d,e,l)=>{var q=eb;if(!(0<l))return 0;var z=e;l=e+l-1;for(var C=0;C<d.length;++C){var D=d.codePointAt(C);if(127>=D){if(e>=l)break;q[e++]=D}else if(2047>=D){if(e+1>=l)break;
|
|
677
677
|
q[e++]=192|D>>6;q[e++]=128|D&63}else if(65535>=D){if(e+2>=l)break;q[e++]=224|D>>12;q[e++]=128|D>>6&63;q[e++]=128|D&63}else{if(e+3>=l)break;q[e++]=240|D>>18;q[e++]=128|D>>12&63;q[e++]=128|D>>6&63;q[e++]=128|D&63;C++}}q[e]=0;return e-z},jd=d=>{for(var e=0,l=0;l<d.length;++l){var q=d.charCodeAt(l);127>=q?e++:2047>=q?e+=2:55296<=q&&57343>=q?(e+=4,++l):e+=3}return e},kd=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,ld=(d,e,l)=>{d>>=1;e=Mb(ib,d,e/2,l);if(16<e-d&&kd)return kd.decode(ib.subarray(d,
|
|
678
678
|
e));for(l="";d<e;++d)l+=String.fromCharCode(ib[d]);return l},md=(d,e,l)=>{l??=2147483647;if(2>l)return 0;l-=2;var q=e;l=l<2*d.length?l/2:d.length;for(var z=0;z<l;++z)hb[e>>1]=d.charCodeAt(z),e+=2;hb[e>>1]=0;return e-q},nd=d=>2*d.length,od=(d,e,l)=>{var q="";d>>=2;for(var z=0;!(z>=e/4);z++){var C=jb[d+z];if(!C&&!l)break;q+=String.fromCodePoint(C)}return q},pd=(d,e,l)=>{l??=2147483647;if(4>l)return 0;var q=e;l=q+l-4;for(var z=0;z<d.length;++z){var C=d.codePointAt(z);65535<C&&z++;M[e>>2]=C;e+=4;if(e+
|
|
679
679
|
4>l)break}M[e>>2]=0;return e-q},qd=d=>{for(var e=0,l=0;l<d.length;++l)65535<d.codePointAt(l)&&l++,e+=4;return e},rd=[],sd=d=>{var e=rd.length;rd.push(d);return e},td=(d,e)=>{for(var l=Array(d),q=0;q<d;++q)l[q]=hc(jb[e+4*q>>2],`parameter ${q}`);return l},ud={},vd=d=>{var e=ud[d];return void 0===e?Vb(d):e},wd=[0,31,60,91,121,152,182,213,244,274,305,335],xd=[0,31,59,90,120,151,181,212,243,273,304,334],yd=[],zd=d=>{d.mj=d.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},Ad=d=>{d.qj=d.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},
|
|
@@ -682,35 +682,35 @@ return(d.getSupportedExtensions()||[]).filter(l=>e.includes(l))},Cd=1,Dd=[],Ed=[
|
|
|
682
682
|
e.Vb=e.getExtension("EXT_polygon_offset_clamp");e.Ub=e.getExtension("EXT_clip_control");e.kj=e.getExtension("WEBGL_polygon_mode");zd(e);Ad(e);2<=d.version&&(e.gb=e.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>d.version||!e.gb)e.gb=e.getExtension("EXT_disjoint_timer_query");for(var z of Bd(e))z.includes("lose_context")||z.includes("debug")||e.getExtension(z)}return l},Ja=d=>{Ma=Na[d];I.ctx=Y=Ma?.F;return!(d&&!Y)},Yd,Ma,$d={},be=()=>{if(!ae){var d={USER:"web_user",LOGNAME:"web_user",PATH:"/",
|
|
683
683
|
PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:Oa||"./this.program"},e;for(e in $d)void 0===$d[e]?delete d[e]:d[e]=$d[e];var l=[];for(e in d)l.push(`${e}=${d[e]}`);ae=l}return ae},ae,ce=[null,[],[]],de=[],ee=()=>{var d=Bd(Y);return d=d.concat(d.map(e=>"GL_"+e))},fe=(d,e,l)=>{if(e){var q=void 0;switch(d){case 36346:q=1;break;case 36344:0!=l&&1!=l&&(Yd||=1280);return;case 34814:case 36345:q=0;break;case 34466:var z=Y.getParameter(34467);q=z?z.length:
|
|
684
684
|
0;break;case 33309:if(2>Ma.version){Yd||=1282;return}q=ee().length;break;case 33307:case 33308:if(2>Ma.version){Yd||=1280;return}q=33307==d?3:0}if(void 0===q)switch(z=Y.getParameter(d),typeof z){case "number":q=z;break;case "boolean":q=z?1:0;break;case "string":Yd||=1280;return;case "object":if(null===z)switch(d){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:q=
|
|
685
|
-
0;break;default:Yd||=1280;return}else{if(z instanceof Float32Array||z instanceof Uint32Array||z instanceof Int32Array||z instanceof Array){for(d=0;d<z.length;++d)switch(l){case 0:M[e+4*d>>2]=z[d];break;case 2:kb[e+4*d>>2]=z[d];break;case 4:
|
|
686
|
-
return}switch(l){case 1:l=q;jb[e>>2]=l;jb[e+4>>2]=(l-jb[e>>2])/4294967296;break;case 0:M[e>>2]=q;break;case 2:kb[e>>2]=q;break;case 4:
|
|
685
|
+
0;break;default:Yd||=1280;return}else{if(z instanceof Float32Array||z instanceof Uint32Array||z instanceof Int32Array||z instanceof Array){for(d=0;d<z.length;++d)switch(l){case 0:M[e+4*d>>2]=z[d];break;case 2:kb[e+4*d>>2]=z[d];break;case 4:db[e+d]=z[d]?1:0}return}try{q=z.name|0}catch(C){Yd||=1280;Wa(`GL_INVALID_ENUM in glGet${l}v: Unknown object returned from WebGL getParameter(${d})! (error: ${C})`);return}}break;default:Yd||=1280;Wa(`GL_INVALID_ENUM in glGet${l}v: Native code calling glGet${l}v(${d}) and it returns ${z} of type ${typeof z}!`);
|
|
686
|
+
return}switch(l){case 1:l=q;jb[e>>2]=l;jb[e+4>>2]=(l-jb[e>>2])/4294967296;break;case 0:M[e>>2]=q;break;case 2:kb[e>>2]=q;break;case 4:db[e]=q?1:0}}else Yd||=1281},he=d=>{var e=jd(d)+1,l=ge(e);l&&hd(d,l,e);return l},ie=d=>"]"==d.slice(-1)&&d.lastIndexOf("["),je=d=>{d-=5120;return 0==d?db:1==d?eb:2==d?hb:4==d?M:6==d?kb:5==d||28922==d||28520==d||30779==d||30782==d?jb:ib},le=d=>ke(d);
|
|
687
687
|
(()=>{let d=wc.prototype;Object.assign(d,{isAliasOf:function(l){if(!(this instanceof wc&&l instanceof wc))return!1;var q=this.m.v.o,z=this.m.u;l.m=l.m;var C=l.m.v.o;for(l=l.m.u;q.C;)z=q.na(z),q=q.C;for(;C.C;)l=C.na(l),C=C.C;return q===C&&z===l},clone:function(){this.m.u||uc(this);if(this.m.da)return this.m.count.value+=1,this;var l=kc,q=Object,z=q.create,C=Object.getPrototypeOf(this),D=this.m;l=l(z.call(q,C,{m:{value:{count:D.count,ha:D.ha,da:D.da,u:D.u,v:D.v,D:D.D,K:D.K}}}));l.m.count.value+=1;l.m.ha=
|
|
688
688
|
!1;return l},["delete"](){this.m.u||uc(this);if(this.m.ha&&!this.m.da)throw new Rb("Object already scheduled for deletion");ic(this);var l=this.m;--l.count.value;0===l.count.value&&(l.D?l.K.N(l.D):l.v.o.N(l.u));this.m.da||(this.m.D=void 0,this.m.u=void 0)},isDeleted:function(){return!this.m.u},deleteLater:function(){this.m.u||uc(this);if(this.m.ha&&!this.m.da)throw new Rb("Object already scheduled for deletion");vc.push(this);this.m.ha=!0;return this}});const e=Symbol.dispose;e&&(d[e]=d["delete"])})();
|
|
689
689
|
Object.assign(Pc.prototype,{ac(d){this.rb&&(d=this.rb(d));return d},fb(d){this.N?.(d)},J:nc,s:function(d){function e(){return this.za?Oc(this.o.M,{v:this.sc,u:l,K:this,D:d}):Oc(this.o.M,{v:this,u:d})}var l=this.ac(d);if(!l)return this.fb(d),null;var q=Nc(this.o,l);if(void 0!==q){if(0===q.m.count.value)return q.m.u=l,q.m.D=d,q.clone();q=q.clone();this.fb(d);return q}q=this.o.$b(l);q=xc[q];if(!q)return e.call(this);q=this.ya?q.Ob:q.pointerType;var z=Mc(l,this.o,q.o);return null===z?e.call(this):this.za?
|
|
690
690
|
Oc(q.o.M,{v:q,u:z,K:this,D:d}):Oc(q.o.M,{v:q,u:z})}});for(let d=0;32>d;++d)de.push(Array(d));I.print&&(Va=I.print);I.printErr&&(Wa=I.printErr);I.wasmBinary&&(Xa=I.wasmBinary);I.thisProgram&&(Oa=I.thisProgram);if(I.preInit)for("function"==typeof I.preInit&&(I.preInit=[I.preInit]);0<I.preInit.length;)I.preInit.shift()();
|
|
691
|
-
var pe={
|
|
691
|
+
var pe={359398:(d,e,l,q,z)=>{if("undefined"===typeof window||void 0===(window.AudioContext||window.webkitAudioContext))return 0;if("undefined"===typeof window.miniaudio){window.miniaudio={referenceCount:0};window.miniaudio.device_type={};window.miniaudio.device_type.playback=d;window.miniaudio.device_type.capture=e;window.miniaudio.device_type.duplex=l;window.miniaudio.device_state={};window.miniaudio.device_state.stopped=q;window.miniaudio.device_state.started=z;let C=window.miniaudio;C.devices=
|
|
692
692
|
[];C.track_device=function(D){for(var F=0;F<C.devices.length;++F)if(null==C.devices[F])return C.devices[F]=D,F;C.devices.push(D);return C.devices.length-1};C.untrack_device_by_index=function(D){for(C.devices[D]=null;0<C.devices.length;)if(null==C.devices[C.devices.length-1])C.devices.pop();else break};C.untrack_device=function(D){for(var F=0;F<C.devices.length;++F)if(C.devices[F]==D)return C.untrack_device_by_index(F)};C.get_device_by_index=function(D){return C.devices[D]};C.unlock_event_types=["touchend",
|
|
693
|
-
"click"];C.unlock=function(){for(var D=0;D<C.devices.length;++D){var F=C.devices[D];null!=F&&null!=F.L&&F.state===C.device_state.started&&F.L.resume().then(()=>{me(F.nb)},J=>{console.error("Failed to resume audiocontext",J)})}C.unlock_event_types.map(function(J){document.removeEventListener(J,C.unlock,!0)})};C.unlock_event_types.map(function(D){document.addEventListener(D,C.unlock,!0)})}window.miniaudio.referenceCount+=1;return 1},
|
|
694
|
-
window.miniaudio.unlock,!0)}),--window.miniaudio.referenceCount,0===window.miniaudio.referenceCount&&delete window.miniaudio)},
|
|
693
|
+
"click"];C.unlock=function(){for(var D=0;D<C.devices.length;++D){var F=C.devices[D];null!=F&&null!=F.L&&F.state===C.device_state.started&&F.L.resume().then(()=>{me(F.nb)},J=>{console.error("Failed to resume audiocontext",J)})}C.unlock_event_types.map(function(J){document.removeEventListener(J,C.unlock,!0)})};C.unlock_event_types.map(function(D){document.addEventListener(D,C.unlock,!0)})}window.miniaudio.referenceCount+=1;return 1},361576:()=>{"undefined"!==typeof window.miniaudio&&(window.miniaudio.unlock_event_types.map(function(d){document.removeEventListener(d,
|
|
694
|
+
window.miniaudio.unlock,!0)}),--window.miniaudio.referenceCount,0===window.miniaudio.referenceCount&&delete window.miniaudio)},361880:()=>void 0!==navigator.mediaDevices&&void 0!==navigator.mediaDevices.getUserMedia,361984:()=>{try{var d=new (window.AudioContext||window.webkitAudioContext),e=d.sampleRate;d.close();return e}catch(l){return 0}},362155:(d,e,l,q,z,C)=>{if("undefined"===typeof window.miniaudio)return-1;var D={},F={};d==window.miniaudio.device_type.playback&&0!=l&&(F.sampleRate=l);D.L=
|
|
695
695
|
new (window.AudioContext||window.webkitAudioContext)(F);D.L.suspend();D.state=window.miniaudio.device_state.stopped;l=0;d!=window.miniaudio.device_type.playback&&(l=e);D.S=D.L.createScriptProcessor(q,l,e);D.S.onaudioprocess=function(J){if(null==D.xa||0==D.xa.length)D.xa=new Float32Array(kb.buffer,z,q*e);if(d==window.miniaudio.device_type.capture||d==window.miniaudio.device_type.duplex){for(var N=0;N<e;N+=1)for(var R=J.inputBuffer.getChannelData(N),U=D.xa,X=0;X<q;X+=1)U[X*e+N]=R[X];ne(C,q,z)}if(d==
|
|
696
696
|
window.miniaudio.device_type.playback||d==window.miniaudio.device_type.duplex)for(oe(C,q,z),N=0;N<J.outputBuffer.numberOfChannels;++N)for(R=J.outputBuffer.getChannelData(N),U=D.xa,X=0;X<q;X+=1)R[X]=U[X*e+N];else for(N=0;N<J.outputBuffer.numberOfChannels;++N)J.outputBuffer.getChannelData(N).fill(0)};d!=window.miniaudio.device_type.capture&&d!=window.miniaudio.device_type.duplex||navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then(function(J){D.Fa=D.L.createMediaStreamSource(J);D.Fa.connect(D.S);
|
|
697
|
-
D.S.connect(D.L.destination)}).catch(function(J){console.log("Failed to get user media: "+J)});d==window.miniaudio.device_type.playback&&D.S.connect(D.L.destination);D.nb=C;return window.miniaudio.track_device(D)},
|
|
698
|
-
|
|
697
|
+
D.S.connect(D.L.destination)}).catch(function(J){console.log("Failed to get user media: "+J)});d==window.miniaudio.device_type.playback&&D.S.connect(D.L.destination);D.nb=C;return window.miniaudio.track_device(D)},365032:d=>window.miniaudio.get_device_by_index(d).L.sampleRate,365105:d=>{d=window.miniaudio.get_device_by_index(d);void 0!==d.S&&(d.S.onaudioprocess=function(){},d.S.disconnect(),d.S=void 0);void 0!==d.Fa&&(d.Fa.disconnect(),d.Fa=void 0);d.L.close();d.L=void 0;d.nb=void 0},365505:d=>{window.miniaudio.untrack_device_by_index(d)},
|
|
698
|
+
365555:d=>{d=window.miniaudio.get_device_by_index(d);d.L.resume();d.state=window.miniaudio.device_state.started},365694:d=>{d=window.miniaudio.get_device_by_index(d);d.L.suspend();d.state=window.miniaudio.device_state.stopped}},$b,ge,Zb,qe,re,se,te,ue,ve,we,xe,ye,ze,Ae,me,ne,oe,Be,Ce,Gb,ke,Ib,rb,Sc,Ee={__syscall_fcntl64:function(){return 0},__syscall_ioctl:function(){return 0},__syscall_openat:function(){},_abort_js:()=>sb(""),_embind_create_inheriting_constructor:(d,e,l)=>{d=Vb(d);e=hc(e,"wrapper");
|
|
699
699
|
l=Sb(l);var q=e.o,z=q.M,C=q.C.M,D=q.C.constructor;d=Ob(d,function(...F){for(var J of q.C.ob)if(this[J]===C[J])throw new Ub(`Pure virtual function ${J} must be implemented in JavaScript`);Object.defineProperty(this,"__parent",{value:z});this.__construct(...F)});z.__construct=function(...F){if(this===z)throw new Rb("Pass correct 'this' to __construct");F=D.implement(this,...F);ic(F);var J=F.m;F.notifyOnDestruction();J.da=!0;Object.defineProperties(this,{m:{value:J}});kc(this);F=J.u;F=Xb(q,F);if(Wb.hasOwnProperty(F))throw new Rb(`Tried to register registered instance: ${F}`);
|
|
700
700
|
Wb[F]=this};z.__destruct=function(){if(this===z)throw new Rb("Pass correct 'this' to __destruct");ic(this);var F=this.m.u;F=Xb(q,F);if(Wb.hasOwnProperty(F))delete Wb[F];else throw new Rb(`Tried to unregister unregistered instance: ${F}`);};d.prototype=Object.create(z);Object.assign(d.prototype,l);return Tb(d)},_embind_finalize_value_object:d=>{var e=lc[d];delete lc[d];var l=e.Va,q=e.N,z=e.hb,C=z.map(D=>D.dc).concat(z.map(D=>D.fj));sc([d],C,D=>{var F={},J,N;for([J,N]of z.entries()){const R=D[J],U=
|
|
701
|
-
N.bc,X=N.cc,na=D[J+z.length],qa=N.ej,V=N.gj;F[N.Xb]={read:
|
|
702
|
-
s:function(z){return!!z},B:function(z,C){return C?l:q},J:function(z){return this.s(
|
|
703
|
-
var ra=ea.V[va.length];if(void 0===ra)throw new Rb(`Tried to invoke ctor of ${R} with invalid number of parameters (${va.length}) - expected (${Object.keys(ea.V).toString()}) parameters instead!`);return ra.apply(this,va)});var ha=Object.create(
|
|
704
|
-
qa);return[V,
|
|
701
|
+
N.bc,X=N.cc,na=D[J+z.length],qa=N.ej,V=N.gj;F[N.Xb]={read:aa=>R.s(U(X,aa)),write:(aa,ha)=>{var ea=[];qa(V,aa,na.B(ea,ha));mc(ea)},optional:R.optional}}return[{name:e.name,s:R=>{var U={},X;for(X in F)U[X]=F[X].read(R);q(R);return U},B:(R,U)=>{for(var X in F)if(!(X in U||F[X].optional))throw new TypeError(`Missing field: "${X}"`);var na=l();for(X in F)F[X].write(na,U[X]);null!==R&&R.push(q,na);return na},J:nc,H:q}]})},_embind_register_bigint:()=>{},_embind_register_bool:(d,e,l,q)=>{e=Vb(e);rc(d,{name:e,
|
|
702
|
+
s:function(z){return!!z},B:function(z,C){return C?l:q},J:function(z){return this.s(eb[z])},H:null})},_embind_register_class:(d,e,l,q,z,C,D,F,J,N,R,U,X)=>{R=Vb(R);C=Vc(z,C);F&&=Vc(D,F);N&&=Vc(J,N);X=Vc(U,X);var na=Ac(R);zc(na,function(){Xc(`Cannot construct ${R} due to unbound types`,[q])});sc([d,e,l],q?[q]:[],qa=>{qa=qa[0];if(q){var V=qa.o;var aa=V.M}else aa=wc.prototype;qa=Ob(R,function(...va){if(Object.getPrototypeOf(this)!==ha)throw new Rb(`Use 'new' to construct ${R}`);if(void 0===ea.V)throw new Rb(`${R} has no accessible constructor`);
|
|
703
|
+
var ra=ea.V[va.length];if(void 0===ra)throw new Rb(`Tried to invoke ctor of ${R} with invalid number of parameters (${va.length}) - expected (${Object.keys(ea.V).toString()}) parameters instead!`);return ra.apply(this,va)});var ha=Object.create(aa,{constructor:{value:qa}});qa.prototype=ha;var ea=new Bc(R,qa,ha,X,V,C,F,N);if(ea.C){var la;(la=ea.C).pa??(la.pa=[]);ea.C.pa.push(ea)}V=new Pc(R,ea,!0,!1,!1);la=new Pc(R+"*",ea,!1,!1,!1);aa=new Pc(R+" const*",ea,!1,!0,!1);xc[d]={pointerType:la,Ob:aa};Qc(na,
|
|
704
|
+
qa);return[V,la,aa]})},_embind_register_class_class_function:(d,e,l,q,z,C,D)=>{var F=$c(l,q);e=Vb(e);e=ad(e);C=Vc(z,C);sc([],[d],J=>{function N(){Xc(`Cannot call ${R} due to unbound types`,F)}J=J[0];var R=`${J.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]);var U=J.o.constructor;void 0===U[e]?(N.R=l-1,U[e]=N):(yc(U,e,R),U[e].A[l-1]=N);sc([],F,X=>{X=Zc(R,[X[0],null].concat(X.slice(1)),null,C,D);void 0===U[e].A?(X.R=l-1,U[e]=X):U[e].A[l-1]=X;if(J.o.pa)for(const na of J.o.pa)na.constructor.hasOwnProperty(e)||
|
|
705
705
|
(na.constructor[e]=X);return[]});return[]})},_embind_register_class_class_property:(d,e,l,q,z,C,D,F)=>{e=Vb(e);C=Vc(z,C);sc([],[d],J=>{J=J[0];var N=`${J.name}.${e}`,R={get(){Xc(`Cannot access ${N} due to unbound types`,[l])},enumerable:!0,configurable:!0};R.set=F?()=>{Xc(`Cannot access ${N} due to unbound types`,[l])}:()=>{throw new Rb(`${N} is a read-only property`);};Object.defineProperty(J.o.constructor,e,R);sc([],[l],U=>{U=U[0];var X={get(){return U.s(C(q))},enumerable:!0};F&&(F=Vc(D,F),X.set=
|
|
706
706
|
na=>{var qa=[];F(q,U.B(qa,na));mc(qa)});Object.defineProperty(J.o.constructor,e,X);return[]});return[]})},_embind_register_class_constructor:(d,e,l,q,z,C)=>{var D=$c(e,l);z=Vc(q,z);sc([],[d],F=>{F=F[0];var J=`constructor ${F.name}`;void 0===F.o.V&&(F.o.V=[]);if(void 0!==F.o.V[e-1])throw new Rb(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${F.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);
|
|
707
707
|
F.o.V[e-1]=()=>{Xc(`Cannot construct ${F.name} due to unbound types`,D)};sc([],D,N=>{N.splice(1,0,null);F.o.V[e-1]=Zc(J,N,null,z,C);return[]});return[]})},_embind_register_class_function:(d,e,l,q,z,C,D,F)=>{var J=$c(l,q);e=Vb(e);e=ad(e);C=Vc(z,C);sc([],[d],N=>{function R(){Xc(`Cannot call ${U} due to unbound types`,J)}N=N[0];var U=`${N.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]);F&&N.o.ob.push(e);var X=N.o.M,na=X[e];void 0===na||void 0===na.A&&na.className!==N.name&&na.R===l-2?(R.R=
|
|
708
708
|
l-2,R.className=N.name,X[e]=R):(yc(X,e,U),X[e].A[l-2]=R);sc([],J,qa=>{qa=Zc(U,qa,N,C,D);void 0===X[e].A?(qa.R=l-2,X[e]=qa):X[e].A[l-2]=qa;return[]});return[]})},_embind_register_class_property:(d,e,l,q,z,C,D,F,J,N)=>{e=Vb(e);z=Vc(q,z);sc([],[d],R=>{R=R[0];var U=`${R.name}.${e}`,X={get(){Xc(`Cannot access ${U} due to unbound types`,[l,D])},enumerable:!0,configurable:!0};X.set=J?()=>Xc(`Cannot access ${U} due to unbound types`,[l,D]):()=>{throw new Rb(U+" is a read-only property");};Object.defineProperty(R.o.M,
|
|
709
|
-
e,X);sc([],J?[l,D]:[l],na=>{var qa=na[0],V={get(){var ha=bd(this,R,U+" getter");return qa.s(z(C,ha))},enumerable:!0};if(J){J=Vc(F,J);var
|
|
709
|
+
e,X);sc([],J?[l,D]:[l],na=>{var qa=na[0],V={get(){var ha=bd(this,R,U+" getter");return qa.s(z(C,ha))},enumerable:!0};if(J){J=Vc(F,J);var aa=na[1];V.set=function(ha){var ea=bd(this,R,U+" setter"),la=[];J(N,ea,aa.B(la,ha));mc(la)}}Object.defineProperty(R.o.M,e,V);return[]});return[]})},_embind_register_emval:d=>rc(d,dd),_embind_register_enum:(d,e,l,q,z)=>{e=Vb(e);z=0===z?"object":1===z?"number":"string";switch(z){case "object":function D(){}D.values={};rc(d,{name:e,constructor:D,valueType:z,s:function(F){return this.constructor.values[F]},
|
|
710
710
|
B:(F,J)=>J.value,J:ed(e,l,q),H:null});zc(e,D);break;case "number":var C={};rc(d,{name:e,Ra:C,valueType:z,s:F=>F,B:(F,J)=>J,J:ed(e,l,q),H:null});zc(e,C);delete I[e].R;break;case "string":C={},rc(d,{name:e,xb:{},tb:{},Ra:C,valueType:z,s:function(F){return this.tb[F]},B:function(F,J){return this.xb[J]},J:ed(e,l,q),H:null}),zc(e,C),delete I[e].R}},_embind_register_enum_value:(d,e,l)=>{var q=hc(d,"enum");e=Vb(e);switch(q.valueType){case "object":d=q.constructor;q=Object.create(q.constructor.prototype,
|
|
711
711
|
{value:{value:l},constructor:{value:Ob(`${q.name}_${e}`,function(){})}});d.values[l]=q;d[e]=q;break;case "number":q.Ra[e]=l;break;case "string":q.xb[e]=l,q.tb[l]=e,q.Ra[e]=e}},_embind_register_float:(d,e,l)=>{e=Vb(e);rc(d,{name:e,s:q=>q,B:(q,z)=>z,J:fd(e,l),H:null})},_embind_register_function:(d,e,l,q,z,C)=>{var D=$c(e,l);d=Vb(d);d=ad(d);z=Vc(q,z);zc(d,function(){Xc(`Cannot call ${d} due to unbound types`,D)},e-1);sc([],D,F=>{Qc(d,Zc(d,[F[0],null].concat(F.slice(1)),null,z,C),e-1);return[]})},_embind_register_integer:(d,
|
|
712
|
-
e,l,q,z)=>{e=Vb(e);let C=F=>F;if(0===q){var D=32-8*l;C=F=>F<<D>>>D;z=C(z)}rc(d,{name:e,s:C,B:(F,J)=>J,J:gd(e,l,0!==q),H:null})},_embind_register_memory_view:(d,e,l)=>{function q(C){return new z(
|
|
713
|
-
ArrayBuffer&&(q=new Uint8Array(q));var z="string"==typeof q;if(!(z||ArrayBuffer.isView(q)&&1==q.BYTES_PER_ELEMENT))throw new Rb("Cannot pass non-string to std::string");var C=z?jd(q):q.length;var D=ge(4+C+1),F=D+4;jb[D>>2]=C;z?hd(q,F,C+1):
|
|
712
|
+
e,l,q,z)=>{e=Vb(e);let C=F=>F;if(0===q){var D=32-8*l;C=F=>F<<D>>>D;z=C(z)}rc(d,{name:e,s:C,B:(F,J)=>J,J:gd(e,l,0!==q),H:null})},_embind_register_memory_view:(d,e,l)=>{function q(C){return new z(db.buffer,jb[C+4>>2],jb[C>>2])}var z=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][e];l=Vb(l);rc(d,{name:l,s:q,J:q},{ic:!0})},_embind_register_std_string:(d,e)=>{e=Vb(e);rc(d,{name:e,s(l){var q=(q=l+4)?Nb(eb,q,jb[l>>2],!0):"";$b(l);return q},B(l,q){q instanceof
|
|
713
|
+
ArrayBuffer&&(q=new Uint8Array(q));var z="string"==typeof q;if(!(z||ArrayBuffer.isView(q)&&1==q.BYTES_PER_ELEMENT))throw new Rb("Cannot pass non-string to std::string");var C=z?jd(q):q.length;var D=ge(4+C+1),F=D+4;jb[D>>2]=C;z?hd(q,F,C+1):eb.set(q,F);null!==l&&l.push($b,D);return D},J:nc,H(l){$b(l)}})},_embind_register_std_wstring:(d,e,l)=>{l=Vb(l);if(2===e){var q=ld;var z=md;var C=nd}else q=od,z=pd,C=qd;rc(d,{name:l,s:D=>{var F=q(D+4,jb[D>>2]*e,!0);$b(D);return F},B:(D,F)=>{if("string"!=typeof F)throw new Rb(`Cannot pass non-string to C++ string type ${l}`);
|
|
714
714
|
var J=C(F),N=ge(4+J+e);jb[N>>2]=J/e;z(F,N+4,J+e);null!==D&&D.push($b,N);return N},J:nc,H(D){$b(D)}})},_embind_register_value_object:(d,e,l,q,z,C)=>{lc[d]={name:Vb(e),Va:Vc(l,q),N:Vc(z,C),hb:[]}},_embind_register_value_object_field:(d,e,l,q,z,C,D,F,J,N)=>{lc[d].hb.push({Xb:Vb(e),dc:l,bc:Vc(q,z),cc:C,fj:D,ej:Vc(F,J),gj:N})},_embind_register_void:(d,e)=>{e=Vb(e);rc(d,{kc:!0,name:e,s:()=>{},B:()=>{}})},_emscripten_throw_longjmp:()=>{throw Infinity;},_emval_create_invoker:(d,e,l)=>{var [q,...z]=td(d,e),
|
|
715
715
|
C=q.B.bind(q),D=z.map(J=>J.J.bind(J));d--;var F=Array(d);e=`methodCaller<(${z.map(J=>J.name)}) => ${q.name}>`;return sd(Ob(e,(J,N,R,U)=>{for(var X=0,na=0;na<d;++na)F[na]=D[na](U+X),X+=8;switch(l){case 0:var qa=Sb(J).apply(null,F);break;case 2:qa=Reflect.construct(Sb(J),F);break;case 3:qa=F[0];break;case 1:qa=Sb(J)[vd(N)](...F)}J=[];qa=C(J,qa);J.length&&(jb[R>>2]=Tb(J));return qa}))},_emval_decref:cd,_emval_get_property:(d,e)=>{d=Sb(d);e=Sb(e);return Tb(d[e])},_emval_incref:d=>{9<d&&(Qb[d+1]+=1)},
|
|
716
716
|
_emval_invoke:(d,e,l,q,z)=>rd[d](e,l,q,z),_emval_new_array:()=>Tb([]),_emval_new_cstring:d=>Tb(vd(d)),_emval_new_object:()=>Tb({}),_emval_run_destructors:d=>{var e=Sb(d);mc(e);cd(d)},_emval_set_property:(d,e,l)=>{d=Sb(d);e=Sb(e);l=Sb(l);d[e]=l},_gmtime_js:function(d,e,l){d=new Date(1E3*(e+2097152>>>0<4194305-!!d?(d>>>0)+4294967296*e:NaN));M[l>>2]=d.getUTCSeconds();M[l+4>>2]=d.getUTCMinutes();M[l+8>>2]=d.getUTCHours();M[l+12>>2]=d.getUTCDate();M[l+16>>2]=d.getUTCMonth();M[l+20>>2]=d.getUTCFullYear()-
|
|
@@ -718,16 +718,16 @@ _emval_invoke:(d,e,l,q,z)=>rd[d](e,l,q,z),_emval_new_array:()=>Tb([]),_emval_new
|
|
|
718
718
|
e=(new Date(d.getFullYear(),6,1)).getTimezoneOffset();var q=(new Date(d.getFullYear(),0,1)).getTimezoneOffset();M[l+32>>2]=(e!=q&&d.getTimezoneOffset()==Math.min(q,e))|0},_timegm_js:function(d){var e=new Date(Date.UTC(M[d+20>>2]+1900,M[d+16>>2],M[d+12>>2],M[d+8>>2],M[d+4>>2],M[d>>2],0));M[d+24>>2]=e.getUTCDay();M[d+28>>2]=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864E5|0;d=e.getTime()/1E3;Ce((Ab=d,1<=+Math.abs(Ab)?0<Ab?+Math.floor(Ab/4294967296)>>>0:~~+Math.ceil((Ab-+(~~Ab>>>0))/4294967296)>>>
|
|
719
719
|
0:0));return d>>>0},_tzset_js:(d,e,l,q)=>{var z=(new Date).getFullYear(),C=(new Date(z,0,1)).getTimezoneOffset();z=(new Date(z,6,1)).getTimezoneOffset();jb[d>>2]=60*Math.max(C,z);M[e>>2]=Number(C!=z);e=D=>{var F=Math.abs(D);return`UTC${0<=D?"-":"+"}${String(Math.floor(F/60)).padStart(2,"0")}${String(F%60).padStart(2,"0")}`};d=e(C);e=e(z);z<C?(hd(d,l,17),hd(e,q,17)):(hd(d,q,17),hd(e,l,17))},beginPixelLocalStorageWEBGL:function(d,e,l){(d=Na[d].F.Da)&&d.beginPixelLocalStorageWEBGL(new Uint32Array(rb.buffer,
|
|
720
720
|
4*l,e))},clock_time_get:function(d,e,l,q){if(!(0<=d&&3>=d))return 28;d=Math.round(1E6*(0===d?Date.now():performance.now()));Bb=[d>>>0,(Ab=d,1<=+Math.abs(Ab)?0<Ab?+Math.floor(Ab/4294967296)>>>0:~~+Math.ceil((Ab-+(~~Ab>>>0))/4294967296)>>>0:0)];M[q>>2]=Bb[0];M[q+4>>2]=Bb[1];return 0},decode_image:function(d,e,l){var q=I.images;q||(q=new Map,I.images=q);var z=new Image;q.set(d,z);e=I.HEAP8.subarray(e,e+l);l=new Uint8Array(l);l.set(e);z.src=URL.createObjectURL(new Blob([l],{type:"image/png"}));z.onload=
|
|
721
|
-
function(){I._setWebImage(d,z.width,z.height)}},delete_image:function(d){var e=I.images;e&&e.get(d)&&e.delete(d)},emscripten_asm_const_int:(d,e,l)=>{yd.length=0;for(var q;q=
|
|
722
|
-
1;4>=l;l*=2){var q=e*(1+.2/l);q=Math.min(q,d+100663296);a:{q=(Math.min(2147483648,65536*Math.ceil(Math.max(d,q)/65536))-rb.buffer.byteLength+65535)/65536|0;try{rb.grow(q);qb();var z=1;break a}catch(C){}z=void 0}if(z)return!0}return!1},emscripten_webgl_enable_extension:(d,e)=>{d=Na[d];e=e?Nb(
|
|
721
|
+
function(){I._setWebImage(d,z.width,z.height)}},delete_image:function(d){var e=I.images;e&&e.get(d)&&e.delete(d)},emscripten_asm_const_int:(d,e,l)=>{yd.length=0;for(var q;q=eb[e++];){var z=105!=q;z&=112!=q;l+=z&&l%8?4:0;yd.push(112==q?jb[l>>2]:105==q?M[l>>2]:lb[l>>3]);l+=z?8:4}return pe[d](...yd)},emscripten_date_now:()=>Date.now(),emscripten_get_now:()=>performance.now(),emscripten_is_main_browser_thread:()=>!sa,emscripten_resize_heap:d=>{var e=eb.length;d>>>=0;if(2147483648<d)return!1;for(var l=
|
|
722
|
+
1;4>=l;l*=2){var q=e*(1+.2/l);q=Math.min(q,d+100663296);a:{q=(Math.min(2147483648,65536*Math.ceil(Math.max(d,q)/65536))-rb.buffer.byteLength+65535)/65536|0;try{rb.grow(q);qb();var z=1;break a}catch(C){}z=void 0}if(z)return!0}return!1},emscripten_webgl_enable_extension:(d,e)=>{d=Na[d];e=e?Nb(eb,e):"";e.startsWith("GL_")&&(e=e.slice(3));"WEBGL_draw_instanced_base_vertex_base_instance"==e&&zd(Y);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==e&&Ad(Y);"WEBGL_multi_draw"==e&&(Y.oc=Y.getExtension("WEBGL_multi_draw"));
|
|
723
723
|
"EXT_polygon_offset_clamp"==e&&(Y.Vb=Y.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==e&&(Y.Ub=Y.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==e&&(Y.kj=Y.getExtension("WEBGL_polygon_mode"));return!!d.F.getExtension(e)},emscripten_webgl_get_current_context:()=>Ma?Ma.handle:0,emscripten_webgl_make_context_current:d=>Ja(d)?0:-5,enable_WEBGL_provoking_vertex:function(d){d=Na[d].F;d.pb=d.getExtension("WEBGL_provoking_vertex");return!!d.pb},enable_WEBGL_shader_pixel_local_storage_coherent:function(d){d=
|
|
724
724
|
Na[d].F;const e=d.getExtension("WEBGL_shader_pixel_local_storage");if(e&&e.isCoherent()){if(5==e.framebufferTexturePixelLocalStorageWEBGL.length)return d.Da=e,!0;console.warn("WEBGL_shader_pixel_local_storage is advertised, but a deprecated version has been detected. Disabling.")}return!1},endPixelLocalStorageWEBGL:function(d,e,l){(d=Na[d].F.Da)&&d.endPixelLocalStorageWEBGL(new Uint32Array(rb.buffer,4*l,e))},environ_get:(d,e)=>{var l=0,q=0,z;for(z of be()){var C=e+l;jb[d+q>>2]=C;l+=hd(z,C,Infinity)+
|
|
725
|
-
1;q+=4}return 0},environ_sizes_get:(d,e)=>{var l=be();jb[d>>2]=l.length;d=0;for(var q of l)d+=jd(q)+1;jb[e>>2]=d;return 0},fd_close:()=>52,fd_read:()=>52,fd_seek:function(){return 70},fd_write:(d,e,l,q)=>{for(var z=0,C=0;C<l;C++){var D=jb[e>>2],F=jb[e+4>>2];e+=8;for(var J=0;J<F;J++){var N=d,R=
|
|
726
|
-
[l,q,z,C])},framebufferTexturePixelLocalStorageWEBGL:function(d,e,l,q,z,C){(d=Na[d].F.Da)&&d.framebufferTexturePixelLocalStorageWEBGL(e,Hd[l],q,z,C)},glActiveTexture:d=>Y.activeTexture(d),glAttachShader:(d,e)=>{Y.attachShader(Ed[d],Id[e])},glBindAttribLocation:(d,e,l)=>{Y.bindAttribLocation(Ed[d],e,l?Nb(
|
|
725
|
+
1;q+=4}return 0},environ_sizes_get:(d,e)=>{var l=be();jb[d>>2]=l.length;d=0;for(var q of l)d+=jd(q)+1;jb[e>>2]=d;return 0},fd_close:()=>52,fd_read:()=>52,fd_seek:function(){return 70},fd_write:(d,e,l,q)=>{for(var z=0,C=0;C<l;C++){var D=jb[e>>2],F=jb[e+4>>2];e+=8;for(var J=0;J<F;J++){var N=d,R=eb[D+J],U=ce[N];0===R||10===R?((1===N?Va:Wa)(Nb(U)),U.length=0):U.push(R)}z+=F}jb[q>>2]=z;return 0},framebufferPixelLocalClearValuefvWEBGL:function(d,e,l,q,z,C){(d=Na[d].F.Da)&&d.framebufferPixelLocalClearValuefvWEBGL(e,
|
|
726
|
+
[l,q,z,C])},framebufferTexturePixelLocalStorageWEBGL:function(d,e,l,q,z,C){(d=Na[d].F.Da)&&d.framebufferTexturePixelLocalStorageWEBGL(e,Hd[l],q,z,C)},glActiveTexture:d=>Y.activeTexture(d),glAttachShader:(d,e)=>{Y.attachShader(Ed[d],Id[e])},glBindAttribLocation:(d,e,l)=>{Y.bindAttribLocation(Ed[d],e,l?Nb(eb,l):"")},glBindBuffer:(d,e)=>{35051==d?Y.La=e:35052==d&&(Y.ba=e);Y.bindBuffer(d,Dd[e])},glBindBufferRange:(d,e,l,q,z)=>{Y.bindBufferRange(d,e,Dd[l],q,z)},glBindFramebuffer:(d,e)=>{Y.bindFramebuffer(d,
|
|
727
727
|
Fd[e])},glBindRenderbuffer:(d,e)=>{Y.bindRenderbuffer(d,Gd[e])},glBindSampler:(d,e)=>{Y.bindSampler(d,Kd[e])},glBindTexture:(d,e)=>{Y.bindTexture(d,Hd[e])},glBindVertexArray:d=>{Y.bindVertexArray(Jd[d])},glBlendColor:(d,e,l,q)=>Y.blendColor(d,e,l,q),glBlendEquation:d=>Y.blendEquation(d),glBlendEquationSeparate:(d,e)=>Y.blendEquationSeparate(d,e),glBlendFunc:(d,e)=>Y.blendFunc(d,e),glBlendFuncSeparate:(d,e,l,q)=>Y.blendFuncSeparate(d,e,l,q),glBlitFramebuffer:(d,e,l,q,z,C,D,F,J,N)=>Y.blitFramebuffer(d,
|
|
728
|
-
e,l,q,z,C,D,F,J,N),glBufferData:(d,e,l,q)=>{l&&e?Y.bufferData(d,
|
|
729
|
-
Y.clearDepth(d),glClearStencil:d=>Y.clearStencil(d),glClientWaitSync:(d,e,l,q)=>Y.clientWaitSync(Ld[d],e,(l>>>0)+4294967296*q),glColorMask:(d,e,l,q)=>{Y.colorMask(!!d,!!e,!!l,!!q)},glCompileShader:d=>{Y.compileShader(Id[d])},glCompressedTexSubImage2D:(d,e,l,q,z,C,D,F,J)=>{Y.ba||!F?Y.compressedTexSubImage2D(d,e,l,q,z,C,D,F,J):Y.compressedTexSubImage2D(d,e,l,q,z,C,D,
|
|
730
|
-
e,l,q,z,C,D,F,J,
|
|
728
|
+
e,l,q,z,C,D,F,J,N),glBufferData:(d,e,l,q)=>{l&&e?Y.bufferData(d,eb,q,l,e):Y.bufferData(d,e,q)},glBufferSubData:(d,e,l,q)=>{l&&Y.bufferSubData(d,e,eb,q,l)},glCheckFramebufferStatus:d=>Y.checkFramebufferStatus(d),glClear:d=>Y.clear(d),glClearBufferfi:(d,e,l,q)=>Y.clearBufferfi(d,e,l,q),glClearBufferfv:(d,e,l)=>{Y.clearBufferfv(d,e,kb,l>>2)},glClearBufferiv:(d,e,l)=>{Y.clearBufferiv(d,e,M,l>>2)},glClearBufferuiv:(d,e,l)=>{Y.clearBufferuiv(d,e,jb,l>>2)},glClearColor:(d,e,l,q)=>Y.clearColor(d,e,l,q),glClearDepthf:d=>
|
|
729
|
+
Y.clearDepth(d),glClearStencil:d=>Y.clearStencil(d),glClientWaitSync:(d,e,l,q)=>Y.clientWaitSync(Ld[d],e,(l>>>0)+4294967296*q),glColorMask:(d,e,l,q)=>{Y.colorMask(!!d,!!e,!!l,!!q)},glCompileShader:d=>{Y.compileShader(Id[d])},glCompressedTexSubImage2D:(d,e,l,q,z,C,D,F,J)=>{Y.ba||!F?Y.compressedTexSubImage2D(d,e,l,q,z,C,D,F,J):Y.compressedTexSubImage2D(d,e,l,q,z,C,D,eb,J,F)},glCompressedTexSubImage3D:(d,e,l,q,z,C,D,F,J,N,R)=>{Y.ba?Y.compressedTexSubImage3D(d,e,l,q,z,C,D,F,J,N,R):Y.compressedTexSubImage3D(d,
|
|
730
|
+
e,l,q,z,C,D,F,J,eb,R,N)},glCreateProgram:()=>{var d=Xd(Ed),e=Y.createProgram();e.name=d;e.Ca=e.Aa=e.Ba=0;e.Za=1;Ed[d]=e;return d},glCreateShader:d=>{var e=Xd(Id);Id[e]=Y.createShader(d);return e},glCullFace:d=>Y.cullFace(d),glDeleteBuffers:(d,e)=>{for(var l=0;l<d;l++){var q=M[e+4*l>>2],z=Dd[q];z&&(Y.deleteBuffer(z),z.name=0,Dd[q]=null,q==Y.La&&(Y.La=0),q==Y.ba&&(Y.ba=0))}},glDeleteFramebuffers:(d,e)=>{for(var l=0;l<d;++l){var q=M[e+4*l>>2],z=Fd[q];z&&(Y.deleteFramebuffer(z),z.name=0,Fd[q]=null)}},
|
|
731
731
|
glDeleteProgram:d=>{if(d){var e=Ed[d];e?(Y.deleteProgram(e),e.name=0,Ed[d]=null):Yd||=1281}},glDeleteRenderbuffers:(d,e)=>{for(var l=0;l<d;l++){var q=M[e+4*l>>2],z=Gd[q];z&&(Y.deleteRenderbuffer(z),z.name=0,Gd[q]=null)}},glDeleteSamplers:(d,e)=>{for(var l=0;l<d;l++){var q=M[e+4*l>>2],z=Kd[q];z&&(Y.deleteSampler(z),z.name=0,Kd[q]=null)}},glDeleteShader:d=>{if(d){var e=Id[d];e?(Y.deleteShader(e),Id[d]=null):Yd||=1281}},glDeleteSync:d=>{if(d){var e=Ld[d];e?(Y.deleteSync(e),e.name=0,Ld[d]=null):Yd||=
|
|
732
732
|
1281}},glDeleteTextures:(d,e)=>{for(var l=0;l<d;l++){var q=M[e+4*l>>2],z=Hd[q];z&&(Y.deleteTexture(z),z.name=0,Hd[q]=null)}},glDeleteVertexArrays:(d,e)=>{for(var l=0;l<d;l++){var q=M[e+4*l>>2];Y.deleteVertexArray(Jd[q]);Jd[q]=null}},glDepthFunc:d=>Y.depthFunc(d),glDepthMask:d=>{Y.depthMask(!!d)},glDepthRangef:(d,e)=>Y.depthRange(d,e),glDisable:d=>Y.disable(d),glDisableVertexAttribArray:d=>{Y.disableVertexAttribArray(d)},glDrawArrays:(d,e,l)=>{Y.drawArrays(d,e,l)},glDrawArraysInstanced:(d,e,l,q)=>
|
|
733
733
|
{Y.drawArraysInstanced(d,e,l,q)},glDrawBuffers:(d,e)=>{for(var l=de[d],q=0;q<d;q++)l[q]=M[e+4*q>>2];Y.drawBuffers(l)},glDrawElements:(d,e,l,q)=>{Y.drawElements(d,e,l,q)},glDrawElementsInstanced:(d,e,l,q,z)=>{Y.drawElementsInstanced(d,e,l,q,z)},glEnable:d=>Y.enable(d),glEnableVertexAttribArray:d=>{Y.enableVertexAttribArray(d)},glFenceSync:(d,e)=>(d=Y.fenceSync(d,e))?(e=Xd(Ld),d.name=e,Ld[e]=d,e):0,glFlush:()=>Y.flush(),glFramebufferRenderbuffer:(d,e,l,q)=>{Y.framebufferRenderbuffer(d,e,l,Gd[q])},glFramebufferTexture2D:(d,
|
|
@@ -736,24 +736,24 @@ Y.generateMipmap(d),glGetFloatv:(d,e)=>fe(d,e,2),glGetFramebufferAttachmentParam
|
|
|
736
736
|
M[l>>2]=d.length+1;else if(35719==e){if(!d.Ca){var q=Y.getProgramParameter(d,35718);for(e=0;e<q;++e)d.Ca=Math.max(d.Ca,Y.getActiveUniform(d,e).name.length+1)}M[l>>2]=d.Ca}else if(35722==e){if(!d.Aa)for(q=Y.getProgramParameter(d,35721),e=0;e<q;++e)d.Aa=Math.max(d.Aa,Y.getActiveAttrib(d,e).name.length+1);M[l>>2]=d.Aa}else if(35381==e){if(!d.Ba)for(q=Y.getProgramParameter(d,35382),e=0;e<q;++e)d.Ba=Math.max(d.Ba,Y.getActiveUniformBlockName(d,e).length+1);M[l>>2]=d.Ba}else M[l>>2]=Y.getProgramParameter(d,
|
|
737
737
|
e);else Yd||=1281},glGetShaderInfoLog:(d,e,l,q)=>{d=Y.getShaderInfoLog(Id[d]);null===d&&(d="(unknown error)");e=0<e&&q?hd(d,q,e):0;l&&(M[l>>2]=e)},glGetShaderiv:(d,e,l)=>{l?35716==e?(d=Y.getShaderInfoLog(Id[d]),null===d&&(d="(unknown error)"),M[l>>2]=d?d.length+1:0):35720==e?(d=Y.getShaderSource(Id[d]),M[l>>2]=d?d.length+1:0):M[l>>2]=Y.getShaderParameter(Id[d],e):Yd||=1281},glGetString:d=>{var e=Md[d];if(!e){switch(d){case 7939:e=he(ee().join(" "));break;case 7936:case 7937:case 37445:case 37446:(e=
|
|
738
738
|
Y.getParameter(d))||(Yd||=1280);e=e?he(e):0;break;case 7938:e=he(`OpenGL ES 3.0 (${Y.getParameter(7938)})`);break;case 35724:e=Y.getParameter(35724);var l=e.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==l&&(3==l[1].length&&(l[1]+="0"),e=`OpenGL ES GLSL ES ${l[1]} (${e})`);e=he(e);break;default:Yd||=1280}Md[d]=e}return e},glGetStringi:(d,e)=>{if(2>Ma.version)return Yd||=1282,0;var l=Nd[d];if(l)return 0>e||e>=l.length?(Yd||=1281,0):l[e];switch(d){case 7939:return l=ee().map(he),l=Nd[d]=
|
|
739
|
-
l,0>e||e>=l.length?(Yd||=1281,0):l[e];default:return Yd||=1280,0}},glGetUniformBlockIndex:(d,e)=>Y.getUniformBlockIndex(Ed[d],e?Nb(
|
|
739
|
+
l,0>e||e>=l.length?(Yd||=1281,0):l[e];default:return Yd||=1280,0}},glGetUniformBlockIndex:(d,e)=>Y.getUniformBlockIndex(Ed[d],e?Nb(eb,e):""),glGetUniformLocation:(d,e)=>{e=e?Nb(eb,e):"";if(d=Ed[d]){var l=d,q=l.ma,z=l.wb,C;if(!q){l.ma=q={};l.vb={};var D=Y.getProgramParameter(l,35718);for(C=0;C<D;++C){var F=Y.getActiveUniform(l,C);var J=F.name;F=F.size;var N=ie(J);N=0<N?J.slice(0,N):J;var R=l.Za;l.Za+=F;z[N]=[F,R];for(J=0;J<F;++J)q[R]=J,l.vb[R++]=N}}l=d.ma;q=0;z=e;C=ie(e);0<C&&(q=parseInt(e.slice(C+
|
|
740
740
|
1))>>>0,z=e.slice(0,C));if((z=d.wb[z])&&q<z[0]&&(q+=z[1],l[q]=l[q]||Y.getUniformLocation(d,e)))return q}else Yd||=1281;return-1},glInvalidateFramebuffer:(d,e,l)=>{for(var q=de[e],z=0;z<e;z++)q[z]=M[l+4*z>>2];Y.invalidateFramebuffer(d,q)},glLinkProgram:d=>{d=Ed[d];Y.linkProgram(d);d.ma=0;d.wb={}},glPixelStorei:(d,e)=>{3317==d?Vd=e:3314==d&&(Wd=e);Y.pixelStorei(d,e)},glPolygonOffset:(d,e)=>Y.polygonOffset(d,e),glReadBuffer:d=>Y.readBuffer(d),glReadPixels:(d,e,l,q,z,C,D)=>{if(Y.La)Y.readPixels(d,e,l,
|
|
741
|
-
q,z,C,D);else{var F=je(C);D>>>=31-Math.clz32(F.BYTES_PER_ELEMENT);Y.readPixels(d,e,l,q,z,C,F,D)}},glRenderbufferStorage:(d,e,l,q)=>Y.renderbufferStorage(d,e,l,q),glRenderbufferStorageMultisample:(d,e,l,q,z)=>Y.renderbufferStorageMultisample(d,e,l,q,z),glSamplerParameterf:(d,e,l)=>{Y.samplerParameterf(Kd[d],e,l)},glSamplerParameteri:(d,e,l)=>{Y.samplerParameteri(Kd[d],e,l)},glScissor:(d,e,l,q)=>Y.scissor(d,e,l,q),glShaderSource:(d,e,l,q)=>{for(var z="",C=0;C<e;++C){var D=(D=jb[l+4*C>>2])?Nb(
|
|
741
|
+
q,z,C,D);else{var F=je(C);D>>>=31-Math.clz32(F.BYTES_PER_ELEMENT);Y.readPixels(d,e,l,q,z,C,F,D)}},glRenderbufferStorage:(d,e,l,q)=>Y.renderbufferStorage(d,e,l,q),glRenderbufferStorageMultisample:(d,e,l,q,z)=>Y.renderbufferStorageMultisample(d,e,l,q,z),glSamplerParameterf:(d,e,l)=>{Y.samplerParameterf(Kd[d],e,l)},glSamplerParameteri:(d,e,l)=>{Y.samplerParameteri(Kd[d],e,l)},glScissor:(d,e,l,q)=>Y.scissor(d,e,l,q),glShaderSource:(d,e,l,q)=>{for(var z="",C=0;C<e;++C){var D=(D=jb[l+4*C>>2])?Nb(eb,D,q?
|
|
742
742
|
jb[q+4*C>>2]:void 0):"";z+=D}Y.shaderSource(Id[d],z)},glStencilFunc:(d,e,l)=>Y.stencilFunc(d,e,l),glStencilFuncSeparate:(d,e,l,q)=>Y.stencilFuncSeparate(d,e,l,q),glStencilMask:d=>Y.stencilMask(d),glStencilMaskSeparate:(d,e)=>Y.stencilMaskSeparate(d,e),glStencilOp:(d,e,l)=>Y.stencilOp(d,e,l),glStencilOpSeparate:(d,e,l,q)=>Y.stencilOpSeparate(d,e,l,q),glTexParameteri:(d,e,l)=>Y.texParameteri(d,e,l),glTexStorage2D:(d,e,l,q,z)=>Y.texStorage2D(d,e,l,q,z),glTexStorage3D:(d,e,l,q,z,C)=>Y.texStorage3D(d,
|
|
743
743
|
e,l,q,z,C),glTexSubImage2D:(d,e,l,q,z,C,D,F,J)=>{if(Y.ba)Y.texSubImage2D(d,e,l,q,z,C,D,F,J);else if(J){var N=je(F);Y.texSubImage2D(d,e,l,q,z,C,D,F,N,J>>>31-Math.clz32(N.BYTES_PER_ELEMENT))}else{if(J){N=je(F);var R=C*((Wd||z)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[D-6402]||1)*N.BYTES_PER_ELEMENT+Vd-1&-Vd);J=N.subarray(J>>>31-Math.clz32(N.BYTES_PER_ELEMENT),J+R>>>31-Math.clz32(N.BYTES_PER_ELEMENT))}else J=null;Y.texSubImage2D(d,e,l,q,z,C,D,F,J)}},glTexSubImage3D:(d,e,l,q,z,C,
|
|
744
744
|
D,F,J,N,R)=>{if(Y.ba)Y.texSubImage3D(d,e,l,q,z,C,D,F,J,N,R);else if(R){var U=je(N);Y.texSubImage3D(d,e,l,q,z,C,D,F,J,N,U,R>>>31-Math.clz32(U.BYTES_PER_ELEMENT))}else Y.texSubImage3D(d,e,l,q,z,C,D,F,J,N,null)},glUniform1i:(d,e)=>{var l=Y,q=l.uniform1i;var z=Y.Qb;if(z){var C=z.ma[d];"number"==typeof C&&(z.ma[d]=C=Y.getUniformLocation(z,z.vb[d]+(0<C?`[${C}]`:"")));d=C}else Yd||=1282,d=void 0;q.call(l,d,e)},glUniformBlockBinding:(d,e,l)=>{d=Ed[d];Y.uniformBlockBinding(d,e,l)},glUseProgram:d=>{d=Ed[d];
|
|
745
745
|
Y.useProgram(d);Y.Qb=d},glVertexAttribDivisor:(d,e)=>{Y.vertexAttribDivisor(d,e)},glVertexAttribIPointer:(d,e,l,q,z)=>{Y.vertexAttribIPointer(d,e,l,q,z)},glVertexAttribPointer:(d,e,l,q,z,C)=>{Y.vertexAttribPointer(d,e,l,!!q,z,C)},glViewport:(d,e,l,q)=>Y.viewport(d,e,l,q),invoke_vii:De,isWindowsBrowser:function(){return-1<navigator.platform.indexOf("Win")},provokingVertexWEBGL:function(d,e){(d=Na[d].F.pb)&&d.provokingVertexWEBGL(e)},riveWebAttach:function(){const d=I.riveScripting;if(!d)return 0;const e=
|
|
746
|
-
(l,q)=>{l=he(l);q(l);$b(l)};d.Hb({exports:I,fc:l=>{l=jb[(xe()>>2)+l];return 0===l?void 0:Sc.get(l)},W:()=>
|
|
747
|
-
e,l,q,z,C,D)},riveWebHasExport:function(d,e){return I.riveScripting.ec(d,e)},riveWebJobRun:function(d,e,l,q,z,C,D,F,J){d=I.riveScripting.runJob(d,e,()=>
|
|
748
|
-
e>>>0,l,q>>>0)},riveWebRegister:function(d,e,l){I.riveScripting.register(d,
|
|
749
|
-
!1;e=I.riveScripting.workerStart(e,l,()=>
|
|
746
|
+
(l,q)=>{l=he(l);q(l);$b(l)};d.Hb({exports:I,fc:l=>{l=jb[(xe()>>2)+l];return 0===l?void 0:Sc.get(l)},W:()=>eb,ib:()=>lb,la:Jb,Ea:le,ka:Hb,Ta:ge,ca:$b,oa:l=>l?Nb(eb,l):"",yb:(l,q,z)=>hd(l,q,z),memory:()=>rb,uc:(l,q,z)=>e(z,C=>I._rive_web_processor_event(l,q,C)),Sa:(l,q)=>e(q,z=>ve(l,z)),lc:(l,q)=>e(q,z=>ue(l,z)),mc:l=>{l=we(l);return 0===l?null:l?Nb(eb,l):""}});return 1},riveWebAudioRefusal:function(){const d=I.riveScripting.audioRefusal();return null===d?0:he(d)},riveWebCall:function(d,e,l,q,z,C,D){return I.riveScripting.call(d,
|
|
747
|
+
e,l,q,z,C,D)},riveWebHasExport:function(d,e){return I.riveScripting.ec(d,e)},riveWebJobRun:function(d,e,l,q,z,C,D,F,J){d=I.riveScripting.runJob(d,e,()=>eb.slice(l,l+q),z,eb.slice(C,C+D),()=>Atomics.load(M,F>>2));if(!d.ok)return he(d.error);J=te(J,d.output.length);eb.set(d.output,J);return 0},riveWebMemoryPages:function(d){return I.riveScripting.rc(d)},riveWebPreparing:function(d){return I.riveScripting.Z(d)},riveWebRaise:function(d,e){I.riveScripting.vc(d,e)},riveWebReadMemory:function(d,e,l,q){return I.riveScripting.read(d,
|
|
748
|
+
e>>>0,l,q>>>0)},riveWebRegister:function(d,e,l){I.riveScripting.register(d,eb.subarray(e,e+l))},riveWebRelease:function(d){I.riveScripting?.release(d)},riveWebStart:function(d){d=I.riveScripting.start(d);return null===d?0:he(d)},riveWebStringLength:function(d,e){return I.riveScripting.jj(d,e>>>0)},riveWebWorkerCollect:function(d){d=I.riveScripting.workerCollect(d);return null===d?0:he(d)},riveWebWorkerEnd:function(d){I.riveScripting.workerEnd(d)},riveWebWorkerStart:function(d,e,l,q,z,C,D,F,J,N){let R=
|
|
749
|
+
!1;e=I.riveScripting.workerStart(e,l,()=>eb.slice(q,q+z),C,eb.slice(D,D+F),{wait:(U,X,na)=>ye(d,U,X,na),finished:(U,X)=>{if(!R){R=!0;if(U){const na=te(J,X.length);eb.set(X,na)}ze(d,U)}},ij:()=>Ae(d)});if(!e.ok)return he(e.error);jb[N>>2]=e.id;return 0},riveWebWorkerWake:function(d,e,l){d=I.riveScripting.workerWake(d,e,l);return null===d?0:he(d)},riveWebWriteMemory:function(d,e,l,q){return I.riveScripting.write(d,e>>>0,l,q>>>0)},upload_image:function(d,e){var l=I.images;l&&(e=l.get(e))&&(d=Na[d].F,
|
|
750
750
|
d.pixelStorei(d.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,e),d.pixelStorei(d.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1))},wasm_start_image_decode:function(d,e,l){e=new Uint8Array(rb.buffer,e,l);var q=new Uint8Array(l);q.set(e);Promise.resolve().then(function(){return createImageBitmap(new Blob([q]))}).then(function(z){var C=(new OffscreenCanvas(z.width,z.height)).getContext("2d");C.drawImage(z,0,0);C=C.getImageData(0,0,z.width,z.height);var D=C.data.length,
|
|
751
751
|
F=qe(D);F?((new Uint8Array(rb.buffer,F,D)).set(C.data),re(d,z.width,z.height,F,D)):se(d)}).catch(function(){se(d)})}};function De(d,e,l){var q=Ib();try{Sc.get(d)(e,l)}catch(z){Gb(q);if(z!==z+0)throw z;Be(1,0)}}var Fe;
|
|
752
752
|
Fe=await (async function(){function d(l){l=Fe=l.exports;$b=l.free;ge=l.malloc;I._setWebImage=l.setWebImage;Zb=l.__getTypeName;qe=I._wasm_image_decode_alloc=l.wasm_image_decode_alloc;re=I._wasm_image_decode_complete=l.wasm_image_decode_complete;se=I._wasm_image_decode_error=l.wasm_image_decode_error;I._rive_web_vm_module_export=l.rive_web_vm_module_export;I._rive_web_vm_frame_boundary=l.rive_web_vm_frame_boundary;te=I._rive_web_job_output=l.rive_web_job_output;ue=I._rive_web_lane_fail=l.rive_web_lane_fail;
|
|
753
753
|
ve=I._rive_web_lane_log=l.rive_web_lane_log;we=I._rive_web_lane_fuel=l.rive_web_lane_fuel;I._rive_web_vm_booting=l.rive_web_vm_booting;I._rive_web_vm_start_fuel=l.rive_web_vm_start_fuel;I._rive_web_vm_start_refusal=l.rive_web_vm_start_refusal;xe=I._rive_web_calls=l.rive_web_calls;ye=I._rive_web_worker_wait=l.rive_web_worker_wait;ze=I._rive_web_worker_finished=l.rive_web_worker_finished;Ae=I._rive_web_worker_stopping=l.rive_web_worker_stopping;me=I._ma_device__on_notification_unlocked=l.ma_device__on_notification_unlocked;
|
|
754
754
|
I._ma_malloc_emscripten=l.ma_malloc_emscripten;I._ma_free_emscripten=l.ma_free_emscripten;ne=I._ma_device_process_pcm_frames_capture__webaudio=l.ma_device_process_pcm_frames_capture__webaudio;oe=I._ma_device_process_pcm_frames_playback__webaudio=l.ma_device_process_pcm_frames_playback__webaudio;Be=l.setThrew;Ce=l._emscripten_tempret_set;Gb=l._emscripten_stack_restore;ke=l._emscripten_stack_alloc;Ib=l.emscripten_stack_get_current;Rc.vij=l.dynCall_vij;Rc.iij=l.dynCall_iij;Rc.ji=l.dynCall_ji;Rc.iijii=
|
|
755
755
|
l.dynCall_iijii;Rc.iiiji=l.dynCall_iiiji;Rc.iiji=l.dynCall_iiji;Rc.jii=l.dynCall_jii;Rc.vijj=l.dynCall_vijj;Rc.jiji=l.dynCall_jiji;rb=l.memory;Sc=l.__indirect_function_table;qb();return Fe}var e={env:Ee,wasi_snapshot_preview1:Ee};if(I.instantiateWasm)return new Promise(l=>{I.instantiateWasm(e,(q,z)=>{l(d(q,z))})});tb??=I.locateFile?I.locateFile("webgl2_advanced.wasm",Pa):Pa+"webgl2_advanced.wasm";return d((await zb(e)).instance)}());
|
|
756
|
-
(function(){function d(){I.calledRun=!0;if(!Ya){pb=!0;Fe.__wasm_call_ctors();Za?.(I);I.onRuntimeInitialized?.();if(I.postRun)for("function"==typeof I.postRun&&(I.postRun=[I.postRun]);I.postRun.length;){var e=I.postRun.shift();Db.push(e)}Cb(Db)}}if(I.preRun)for("function"==typeof I.preRun&&(I.preRun=[I.preRun]);I.preRun.length;)Fb();Cb(Eb);I.setStatus?(I.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>I.setStatus(""),1);d()},1)):d()})();pb?moduleRtn=I:moduleRtn=new Promise((d,e)=>{Za=d;
|
|
756
|
+
(function(){function d(){I.calledRun=!0;if(!Ya){pb=!0;Fe.__wasm_call_ctors();Za?.(I);I.onRuntimeInitialized?.();if(I.postRun)for("function"==typeof I.postRun&&(I.postRun=[I.postRun]);I.postRun.length;){var e=I.postRun.shift();Db.push(e)}Cb(Db)}}if(I.preRun)for("function"==typeof I.preRun&&(I.preRun=[I.preRun]);I.preRun.length;)Fb();Cb(Eb);I.setStatus?(I.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>I.setStatus(""),1);d()},1)):d()})();pb?moduleRtn=I:moduleRtn=new Promise((d,e)=>{Za=d;cb=e});
|
|
757
757
|
;return moduleRtn}})();
|
|
758
758
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Rive);
|
|
759
759
|
|
|
@@ -767,7 +767,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
767
767
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
768
768
|
/* harmony export */ });
|
|
769
769
|
function riveGlue() {
|
|
770
|
-
var Rive=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;var G=moduleArg,
|
|
770
|
+
var Rive=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;var G=moduleArg,na=!!globalThis.window,sa=!!globalThis.WorkerGlobalScope,ua=sa&&self.name?.startsWith("em-pthread");const wa=G.onAbort;G.onAbort=function(c){ua||za();wa&&wa(c)};
|
|
771
771
|
function Aa(){function c(D){const F=n;l=e=0;n=new Map;F.forEach(J=>{try{J(D)}catch(O){console.error(O)}});this.rb();x&&x.fc()}let e=0,l=0,n=new Map,x=null,B=null;this.requestAnimationFrame=function(D){e||=requestAnimationFrame(c.bind(this));const F=++l;n.set(F,D);return F};this.cancelAnimationFrame=function(D){n.delete(D);e&&0==n.size&&(cancelAnimationFrame(e),e=0)};this.$b=function(D){B&&(document.body.remove(B),B=null);D||(B=document.createElement("div"),B.style.backgroundColor="black",B.style.position=
|
|
772
772
|
"fixed",B.style.right=0,B.style.top=0,B.style.color="white",B.style.padding="4px",B.innerHTML="RIVE FPS",D=function(F){B.innerHTML="RIVE FPS "+F.toFixed(1)},document.body.appendChild(B));x=new function(){let F=0,J=0;this.fc=function(){var O=performance.now();J?(++F,O-=J,1E3<O&&(D(1E3*F/O),F=J=0)):(J=O,F=0)}}};this.rb=function(){}}
|
|
773
773
|
function Ea(){console.assert(!0);const c=new Map;let e=-Infinity;this.push=function(l){l=l+255>>8;c.has(l)&&clearTimeout(c.get(l));c.set(l,setTimeout(function(){c.delete(l);0==c.length?e=-Infinity:l==e&&(e=Math.max(...c.keys()),console.assert(e<l))},1E3));e=Math.max(l,e);return e<<8}}function Ha(c){return function(){c();const e=G.riveScripting;if(e)for(const l of e.frameBoundary())console.warn(l)}}const La=G.onRuntimeInitialized;
|
|
@@ -930,69 +930,69 @@ a,0);const f=(new DataView(r)).getUint32(a-4,!0);n(r,a,f);return f}function B(r,
|
|
|
930
930
|
p,0,1)&&(f={ha:p,cb:2+d})}f??={ha:-1,cb:34+Atomics.add(r,a+144>>>2,1)};md.set(a,f)}return f}function F(r,a,f,d,p=null,q=()=>{}){a>>>=0;const v=f%4294967296,k=Math.floor(f/4294967296);let b=null,g=null,h=null,m=null,y=null,K=null;const T=()=>{const H=r();H!==b&&(b=H,g=new Uint8Array(b),h=new Int32Array(b),m=new Uint32Array(b))};T();const A=D(h,a);null!==p&&Atomics.store(p,2,A.cb);const w=(H,U)=>{const Y=d().buffer;Y!==y&&(y=Y,K=new Uint8Array(Y));return H+U<=K.length?K:null},t=(H,U,Y,aa,ha)=>{for(let da=
|
|
931
931
|
0;da<ha;da++)H[U+da]=Y[aa+da]},z=H=>{for(null!==p&&Atomics.store(p,3,H);0!==Atomics.compareExchange(h,H>>>2,0,A.cb););},u=H=>{Atomics.store(h,H>>>2,0);null!==p&&Atomics.store(p,3,0)};let E=0;const L=(H,U)=>{T();H>>>=0;if(0===(H&2147483648))return 0;var Y=(H&2147483647)>>>12,aa=Atomics.load(m,a+148+4*(Y>>>10)>>>2);if(0===aa)return 0;Y=aa+24*(Y&1023);aa=Y>>>2;if(0<=A.ha){if(Atomics.store(m,A.ha,Y),aa=Atomics.load(m,aa),0===(aa&4096)||0!==((aa^H)&4095))return Atomics.store(m,A.ha,1),0}else for(;;){const ha=
|
|
932
932
|
Atomics.load(m,aa);if(0===(ha&4096)||0!==((ha^H)&4095))return 0;if(Atomics.compareExchange(m,aa,ha,ha+8192)===ha)break}E=Y;H=Atomics.load(m,Y+4>>>2);return m[H>>>2]!==U||m[Y+16>>>2]!==v||m[Y+20>>>2]!==k?(R(),0):H},R=()=>{0<=A.ha?Atomics.store(m,A.ha,1):Atomics.sub(m,E+0>>>2,8192)},qa=H=>{H=L(H,3);if(0!==H){4294967295===Atomics.add(m,H+24>>>2,1)&&Atomics.add(m,H+28>>>2,1);z(H+4);try{const U=m[H+16>>>2],Y=m[H+32>>>2]>>>2;for(let aa=0;aa<U;aa++){const ha=m[Y+aa]+0>>>2;Atomics.add(h,ha,1);Atomics.notify(h,
|
|
933
|
-
ha)}}finally{u(H+4),R()}}},Ca=(H,U,Y,aa,ha)=>{const da=Math.min(ha,m[H+8>>>2]-U);t(g,H+32+U,Y,aa,da);t(g,H+32,Y,aa+da,ha-da)},Qa=(H,U,Y,aa,ha)=>{var da=m[H+8>>>2];U%=da;da=Math.min(ha,da-U);t(Y,aa,g,H+32+U,da);t(Y,aa+da,g,H+32,ha-da)},sb=new Uint8Array(4),Fb=new Uint32Array(sb.buffer),db=()=>{q("a processor cannot pass shared objects through rings or snapshots, as the audio thread may not hold or give them back; pass them in Audio.start's argument");return 0},
|
|
933
|
+
ha)}}finally{u(H+4),R()}}},Ca=(H,U,Y,aa,ha)=>{const da=Math.min(ha,m[H+8>>>2]-U);t(g,H+32+U,Y,aa,da);t(g,H+32,Y,aa+da,ha-da)},Qa=(H,U,Y,aa,ha)=>{var da=m[H+8>>>2];U%=da;da=Math.min(ha,da-U);t(Y,aa,g,H+32+U,da);t(Y,aa+da,g,H+32,ha-da)},sb=new Uint8Array(4),Fb=new Uint32Array(sb.buffer),db=()=>{q("a processor cannot pass shared objects through rings or snapshots, as the audio thread may not hold or give them back; pass them in Audio.start's argument");return 0},kb=(H,U,Y,aa)=>{H=L(H,1);if(0===H)return 0;
|
|
934
934
|
let ha=0,da=0;z(H+4);try{const Fa=m[H+20>>>2];if(0===Fa)return 0;const Da=m[H+16>>>2];Qa(H,Da,sb,0,4);da=Fb[0];if(0!==(da&2147483648))return db();if(null===U){if(da<=aa)return 0}else{if(0===Y||da>aa)return da+1;Qa(H,Da+4,U,Y,da)}m[H+16>>>2]=(Da+4+da)%m[H+8>>>2];m[H+20>>>2]=Fa-4-da;ha=m[H+28>>>2]}finally{u(H+4),R()}qa(ha);return da+1},ea=(H,U,Y)=>{H=L(H,0);if(0===H)return-1;try{U>>>=0;var aa=0!==(U&3)||U+4>m[H+8>>>2]?-1:H+32+U>>>2;return 0>aa?-1:Y(aa)>>>0}finally{R()}};return{region_create:()=>0,region_size:H=>
|
|
935
935
|
{H=L(H,0);if(0===H)return 0;H=m[H+8>>>2];R();return H},region_lock:()=>0,region_unlock:()=>{},region_read:()=>0,region_write:()=>0,region_poisoned:H=>{H=L(H,0);if(0===H)return 0;H=0!==m[H+16>>>2]?1:0;R();return H},atomic_load:(H,U)=>ea(H,U,Y=>Atomics.load(h,Y)),atomic_store:(H,U,Y)=>ea(H,U,aa=>{Atomics.store(h,aa,Y|0);return 0}),atomic_add:(H,U,Y)=>ea(H,U,aa=>Atomics.add(h,aa,Y|0)),atomic_cas:(H,U,Y,aa)=>ea(H,U,ha=>Atomics.compareExchange(h,ha,Y|0,aa|0)),ring_create:()=>0,ring_write:(H,U,Y,aa,ha)=>
|
|
936
|
-
{U>>>=0;Y>>>=0;aa=w(U,Y);H=null!==aa?L(H,1):0;if(0===H)return 0;if(0!==ha)return R(),db();ha=0;z(H+4);try{const da=m[H+8>>>2];if(4+Y>da)return 2;const Fa=m[H+20>>>2];if(Fa+4+Y>da)return 0;const Da=m[H+16>>>2];Fb[0]=Y;Ca(H,(Da+Fa)%da,sb,0,4);Ca(H,(Da+Fa+4)%da,aa,U,Y);m[H+20>>>2]=Fa+4+Y;ha=m[H+24>>>2]}finally{u(H+4),R()}qa(ha);return 1},ring_read:(H,U,Y)=>{U>>>=0;Y>>>=0;const aa=w(U,Y);return null!==aa?
|
|
936
|
+
{U>>>=0;Y>>>=0;aa=w(U,Y);H=null!==aa?L(H,1):0;if(0===H)return 0;if(0!==ha)return R(),db();ha=0;z(H+4);try{const da=m[H+8>>>2];if(4+Y>da)return 2;const Fa=m[H+20>>>2];if(Fa+4+Y>da)return 0;const Da=m[H+16>>>2];Fb[0]=Y;Ca(H,(Da+Fa)%da,sb,0,4);Ca(H,(Da+Fa+4)%da,aa,U,Y);m[H+20>>>2]=Fa+4+Y;ha=m[H+24>>>2]}finally{u(H+4),R()}qa(ha);return 1},ring_read:(H,U,Y)=>{U>>>=0;Y>>>=0;const aa=w(U,Y);return null!==aa?kb(H,aa,U,Y):0},ring_drop:(H,U)=>kb(H,null,0,U>>>0),ring_used:H=>{H=L(H,1);if(0===H)return 0;z(H+
|
|
937
937
|
4);const U=m[H+20>>>2];u(H+4);R();return U},ring_signal:(H,U)=>{H=L(H,1);if(0===H)return 0;U=m[H+(0!==U?28:24)>>>2];R();return U},snapshot_create:()=>0,snapshot_publish:(H,U,Y,aa,ha)=>{U>>>=0;Y>>>=0;aa=w(U,Y);H=null!==aa?L(H,2):0;if(0===H)return 0;try{const Fa=m[H+8>>>2];if(0!==ha)return db();if(Y>Fa)return 0;z(H+4);try{ha=H+16>>>2;var da=Atomics.load(m,ha);const Da=H+40>>>2;if(0!==((0!==da?Atomics.load(m,Da+da-1):0)&2147483648))return db();da%=2;const Xa=(H+32>>>2)+da,eb=Atomics.load(m,Xa)|1;Atomics.store(m,
|
|
938
938
|
Xa,eb);Atomics.load(m,Xa);t(g,H+48+da*Fa,aa,U,Y);Atomics.store(m,Da+da,Y);Atomics.store(m,Xa,eb+1);Atomics.store(m,ha,da+1);4294967295===Atomics.add(m,H+24>>>2,1)&&Atomics.add(m,H+28>>>2,1)}finally{u(H+4)}return 1}finally{R()}},snapshot_read:(H,U,Y)=>{U>>>=0;Y>>>=0;const aa=w(U,Y);H=null!==aa?L(H,2):0;if(0===H)return 0;try{for(;;){const da=Atomics.load(m,H+16>>>2);if(0===da)return 0;var ha=da-1;const Fa=(H+32>>>2)+ha,Da=Atomics.load(m,Fa);if(0!==(Da&1))continue;const Xa=Atomics.load(m,(H+40>>>2)+
|
|
939
|
-
ha),eb=m[H+8>>>2];ha=H+48+ha*eb;const
|
|
939
|
+
ha),eb=m[H+8>>>2];ha=H+48+ha*eb;const lb=0!==(Xa&2147483648),Gb=Math.min(Xa,eb);!lb&&0!==U&&Gb<=Y&&t(aa,U,g,ha,Gb);if(Atomics.compareExchange(m,Fa,Da,Da)===Da)return lb?db():Gb+1}}finally{R()}},snapshot_seq:H=>{H=L(H,2);if(0===H)return 0;H=4294967296*Atomics.load(m,H+28>>>2)+Atomics.load(m,H+24>>>2);R();return H},signal_create:()=>0,signal_notify:H=>qa(H),signal_seq:H=>{H=L(H,3);if(0===H)return 0;H=4294967296*Atomics.load(m,H+28>>>2)+Atomics.load(m,H+24>>>2);R();return H},blob_create:()=>0,blob_size:H=>
|
|
940
940
|
{H=L(H,4);if(0===H)return 0;H=m[H+8>>>2];R();return H},blob_read:(H,U,Y,aa)=>{U>>>=0;Y>>>=0;aa>>>=0;const ha=w(Y,aa);H=null!==ha?L(H,4):0;if(0===H)return 0;const da=m[H+8>>>2];aa=U<da?Math.min(aa,da-U):0;t(ha,Y,g,H+16+U,aa);R();return aa},retain:()=>0,release:()=>{}}}function J(r,a,f){const d=Atomics.load(f,2);2>d||(r=new Int32Array(r()),f=Atomics.load(f,3),0!==f&&Atomics.compareExchange(r,f>>>2,d,0),34>d&&Atomics.store(r,((a>>>0)+16>>>2)+d-2,0))}function O(r){return String(r?.message??r)}function Q(r,
|
|
941
|
-
a,f=new Map){const d=v=>{const k=r().buffer;return B(k,v,x(k,v))},p={};for(var q of ya)p[q]=v=>a(d(v));q=v=>k=>{k=d(k);const b=f.get(k);void 0===b?a(`Timer '${k}' does not exist`):(v&&f.delete(k),a(`${k}: ${(
|
|
942
|
-
Te}};void 0!==r.Za&&(p[r.Za]=r.sb(()=>a));try{const q=(new WebAssembly.Instance(r.module,p)).exports;a=q.memory;return{exports:q,memory:a,Sa:d}}catch(q){return{error:f??O(q)}}}function W(r,a,f=!1){try{const d=r.exports;d[f?"__riveLaneReset":"__riveLiftedStart"]?.();const p=a.input,q=d.__rive_lane_alloc(p.length)>>>0;(new Uint8Array(r.memory.buffer,q,p.length)).set(p);const v=d[a.prefix+a.Ra](q,p.length,...(a.Pa??[]));a.ea&&d.__rive_lane_free(q);return{result:v}}catch(d){return{error:r.Sa(d)}}}
|
|
943
|
-
V(r);r=void 0===a.error?W(a,r):a;return void 0===r.error?{...a,result:r.result}:r}function ra(r,a,f,d,p,q){let v=null;const k=T=>{v??=T};var b=
|
|
944
|
-
t&&(b=
|
|
945
|
-
r[f++];123===g&&(a=Math.max(a,1));return 99!==g&&100!==g},q=()=>{var g=r[f++];if(253===g)g=d(),a=Math.max(a,256<=g&&275>=g?2:1),11>=g||92===g||93===g?(d()&64&&d(),d()):12===g||13===g?f+=16:21<=g&&34>=g?f+=1:84<=g&&91>=g&&(d()&64&&d(),d(),f+=1);else if(252===g){g=d();if(g>=nd.length)return!1;for(let h=0;h<nd[g];h++)d()}else if(254===g)3===d()?f+=1:(d()&64&&d(),d());else if(40<=g&&62>=g)d()&64&&d(),d();else if(2<=g&&4>=g)123===r[f]&&(a=Math.max(a,1)),d();else if(14===
|
|
946
|
-
else if(28===g)for(g=d();0<g&&f<r.length;g--){if(!p())return!1}else if(17===g||19===g)d(),d();else if(67===g||68===g)f+=67===g?4:8;else if(32<=g&&38>=g||Ue.includes(g))d();else if(!(1>=g||5===g||11===g||15===g||26===g||27===g||209===g||69<=g&&196>=g))return!1;return!0};for(;f<r.length;){var v=r[f];const [g,h]=ia(r,f+1);f=h;if(1===v)for(v=d();0<v&&f<r.length;v--){if(96!==r[f++])return-1;for(var k=0;2>k;k++)for(var b=d();0<b&&f<r.length;b--)if(!p())return-1}else if(10===
|
|
947
|
-
Math.min(d()+f,r.length);for(b=d();0<b&&f<k;b--)if(d(),!p())return-1;for(;f<k;)if(!q())return-1}f=h+g}return a}function ia(r,a){let f=0,d=0,p;do p=r[a++],f|=(p&127)<<d,d+=7;while(p&128);return[f>>>0,a]}function fa(r){const a=[];do{const f=r&127;r>>>=7;a.push(r?f|128:f)}while(r);return a}function
|
|
948
|
-
Ve.some(q=>q.length===d&&q.every((v,k)=>r[p+k]===v))&&a.push(r.subarray(p+d,f.end))}return a}function ta(r){var a=
|
|
949
|
-
...fa(d.length)]),d)}r=new Uint8Array(a.reduce((v,k)=>v+k.length,0));q=0;for(const v of a)r.set(v,q),q+=v.length;return r}function Ya(r,a,f,d){switch(d){case 0:return r();case 1:return r(a[f]);case 2:return r(a[f],a[f+1]);case 3:return r(a[f],a[f+1],a[f+2]);case 4:return r(a[f],a[f+1],a[f+2],a[f+3]);case 5:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4]);case 6:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4],a[f+5]);case 7:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+
|
|
950
|
-
2],a[f+3],a[f+4],a[f+5],a[f+6],a[f+7]);default:return r(...a.subarray(f,f+d))}}const ya=["console.log","console.debug","console.info","console.warn","console.error"],va=[["rive_lanes_v1","wait_within",[],"blocks on a signal, which only the main lane may; a worker awaits Signal.next or Port.receive instead"],["rive_shared_v1","region_lock",["job","worker"],"locks a shared region, which the audio thread may not wait on; share through atomics, rings and snapshots instead"],
|
|
951
|
-
[],null],["rive_shared_v1",null,["job","worker","processor"],null],["rive_lane_v1",null,["job","worker","processor"],null],["rive_job_v1",null,["job"],null],["rive_worker_v1",null,["worker"],null],["env","console.log",["job","worker","processor"],null],["env","console.debug",["job","worker","processor"],null],["env","console.info",["job","worker","processor"],null],["env","console.warn",["job","worker","processor"],null],["env","console.error",["job","worker","processor"],
|
|
952
|
-
["job","worker"],null],["env","console.timeLog",["job","worker"],null],["env","console.timeEnd",["job","worker"],null]],tb=[["rive.jobs","job"],["rive.workers","worker"],["rive.audio","processor"]],Hb={job:"__rive_job_",worker:"__rive_worker_",processor:"__rive_processor_"},od={starting:0,running:1,done:2,failed:3,stopped:4},md=new Map,
|
|
953
|
-
nd=[0,0,0,0,0,0,0,0,2,1,2,1,2,1,2,1,1,1],Ue=[12,13,16,18,63,64,65,66,208,210],Ve=tb.map(([r])=>Array.from(r,a=>a.charCodeAt(0)));(function(r){function a(C,I=null){return{Sb:e(ea.pc,C,I),Y:ea.Y,na:ea.na,Ga:ea.Ga,ma:ea.ma,Ya:ea.Ya,ea:ea.ea,ya:U}}function f(C){ha??={Ab:Y(We),yb:Y(Xe)};C=[C,...xa(C)];if(ha.Ab&&ha.yb||C.every(I=>Y(I)))return null;C=Math.max(...C.map(
|
|
954
|
-
2!==C?null:"this browser lacks WebAssembly relaxed SIMD, so this file's scripts are off; bake with wasmSimd: on to support it"}function d(C,I){const P=c(a(C.I),()=>{if(null===C.memory)throw Error("script passed memory to the host while its module was still starting");return C.memory});for(const S of WebAssembly.Module.imports(I))if("function"===S.kind){let
|
|
955
|
-
I=3*S.length+1;const
|
|
956
|
-
|
|
957
|
-
0;P<C.length;P++)if(C[P]!==I[P])return!1;return!0}function b(C,I,P){C={W:C,module:I,error:P,ka:new Set,Va:null};da.push(C);8<da.length&&da.shift();return C}function g(C,I){if(!Da(C)){b(C,I,null);for(const P of Fa())P.postMessage({riveLane:{bytes:C,module:I}})}}function h(C,I){for(const
|
|
958
|
-
|
|
959
|
-
null,null);try{const
|
|
960
|
-
return Object.assign(P,V({module:C.module,Za:"rive_job_v1",sb:()=>({cancelled:()=>P.jb()}),ab:K(),log:S=>ea.Xa(P.la,S),Ja:P.Ja,Ta:()=>T(P.la)}))}function w(){var C=Ia.audioWorkletUrl;if("string"===typeof C)return C;C=r.riveAudioWorkletSource;if(uc()||"string"!==typeof C)return null;pd??=URL.createObjectURL(new Blob([C],{type:"text/javascript"}));return pd}function t(){let C=[],I=null;return{$(P){null!==I?I(P):C.push(P)},open(P){I=P;for(const S of C)I(S);C=[]},cc(P){for(const S of C)
|
|
961
|
-
text:P});C=[]}}}function z(C){return{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{memory:ea.memory(),table:ea.exports._rive_shared_table(),counter:C.buffer}}}function u(C){for(const I of[...Ba.Z.keys()])
|
|
962
|
-
vc?pa+1:0;
|
|
963
|
-
I.bb||qd(I.fb)}));return I}function qa(){const C=new AudioContext,
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
ub;);qd(
|
|
967
|
-
vc():
|
|
968
|
-
C.text??""))}let ea=null;const H=new Map,U={i:!1,l:0,wa:0,ua:0,va:0,xa:0},Y=r.riveScriptingValidate??(C=>WebAssembly.validate(C)),aa=!0===r.riveScriptingLaneTwin;let ha=null;const da=[];let Fa=()=>[];const Da=C=>da.some(I=>k(I.W,C)),Xa=C=>{C=C?.riveLane;void 0!==C&&g(C.bytes,C.module)},eb=globalThis.process?.zj?.("worker_threads");!1===eb?.Aj?eb.Dj.i("message",Xa):void 0!==globalThis.WorkerGlobalScope&&globalThis.addEventListener("message",C=>Xa(C.data));const
|
|
969
|
-
let Ze=1;const Ba={output:null,Z:new Map,next:1},uc=()=>void 0!==globalThis.nrdp?.audio?.output;let pd=null;const qd=C=>J(()=>ea.memory().buffer,ea.exports._rive_shared_table(),C),xc=C=>"script audio has no worklet: "+O(C),wc=new WeakMap,Ye={running:od.running,failed:od.failed,log:4294967295},Ia={Nb(C){ea??=C},Ob(C){Fa=C},register(C,I){I=I.slice();H.set(C,{I:{g:C,j:null,h:!1,ya:U},W:I,instance:null,memory:null,aa:null,error:f(I),names:new Map})},release(C){const I=H.get(C);I&&(I.I.g=
|
|
970
|
-
Bc(){const C=[];for(const I of H.values())if(null===I.instance&&null===I.error){let P;(P=I).aa??(P.aa=v(I));C.push(I.aa)}return Promise.all(C)},start(C){C=H.get(C);if(!C)return"script module was never registered";if(null===C.instance&&null===C.error){if(null!==C.aa)return"script module is still being prepared";try{const I=new WebAssembly.Module(ta(C.W));p(C,I);m(I,!0);q(C,new WebAssembly.Instance(I,d(C,I)))}catch(I){C.error=O(I)}}return C.error},aa(C){C=H.get(C);return null===C?.instance&&
|
|
971
|
-
C.error&&null!==C.aa?1:0},oc(C,I){return"function"===typeof H.get(C)?.instance?.exports[ea.qa(I)]?1:0},call(C,I,P,S,
|
|
972
|
-
ja
|
|
973
|
-
I);return 0>C?-1:C-I},zc(C){return(C=H.get(C)?.memory)?C.buffer.byteLength/65536:0},ec(){const C=[];for(const I of H.keys()){const P=ea.exports._rive_web_vm_frame_boundary(I);0!==P&&C.push(ea.qa(P))}return C},Wb(C){U.i=!!C;U.l=0;U.wa=0;U.ua=0;U.va=0;U.xa=0},qc(){return{hostCalls:U.l,bytesStaged:U.wa,bytesCopiedOut:U.ua,bytesRead:U.va,bytesWritten:U.xa}},runJob:function(C,I,P,S,
|
|
974
|
-
P.la=C;P.jb=
|
|
975
|
-
Za:"rive_worker_v1",sb:
|
|
976
|
-
null}catch(I){return O(I)}},workerEnd:function(C){
|
|
941
|
+
a,f=new Map){const d=v=>{const k=r().buffer;return B(k,v,x(k,v))},p={};for(var q of ya)p[q]=v=>a(d(v));q=v=>k=>{k=d(k);const b=f.get(k);void 0===b?a(`Timer '${k}' does not exist`):(v&&f.delete(k),a(`${k}: ${(fb()-b).toFixed(3)}ms`))};p["console.time"]=v=>f.set(d(v),fb());p["console.timeLog"]=q(!1);p["console.timeEnd"]=q(!0);return p}function V(r){let a=null,f=null;const d=q=>f??O(q),p={env:Q(()=>a,r.log,r.Ja),rive_shared_v1:r.ab(()=>a),rive_rt_v1:{now:fb},rive_lane_v1:{error:(q,v)=>{f=B(a.buffer,
|
|
942
|
+
q,v);r.xc?.(f)},fuel_check:r.Ta??Te}};void 0!==r.Za&&(p[r.Za]=r.sb(()=>a));try{const q=(new WebAssembly.Instance(r.module,p)).exports;a=q.memory;return{exports:q,memory:a,Sa:d}}catch(q){return{error:f??O(q)}}}function W(r,a,f=!1){try{const d=r.exports;d[f?"__riveLaneReset":"__riveLiftedStart"]?.();const p=a.input,q=d.__rive_lane_alloc(p.length)>>>0;(new Uint8Array(r.memory.buffer,q,p.length)).set(p);const v=d[a.prefix+a.Ra](q,p.length,...(a.Pa??[]));a.ea&&d.__rive_lane_free(q);return{result:v}}catch(d){return{error:r.Sa(d)}}}
|
|
943
|
+
function oa(r){const a=V(r);r=void 0===a.error?W(a,r):a;return void 0===r.error?{...a,result:r.result}:r}function ra(r,a,f,d,p,q){let v=null;const k=T=>{v??=T};var b=fb()+1E3,g="processor init overran its budget";const h=oa({module:r,ab:T=>p(T,k),log:q,Ta:()=>{if(fb()>b)throw g;},prefix:Hb.processor,Ra:a,input:f,Pa:[d.sampleRate,d.pb,d.channels],ea:!0});if(void 0!==h.error||null!==v)return{error:h.error??v};b=Infinity;g="processor overran its block budget";const m=h.exports,y=h.memory;let K=null;
|
|
944
|
+
return{la:{Fc(T,A,w,t=0){0<t&&(b=fb()+t);try{const z=m.__rive_processor_process(T,A)>>>0;if(null!==v)return v;const u=T*d.channels;if(null===K||K.buffer!==y.buffer||K.byteOffset!==z||K.length!==u)K=new Float32Array(y.buffer,z,u);w(K);m.__riveFrameMinor?.();return null}catch(z){return h.Sa(z)}finally{b=Infinity}}}}}function X(r){r=[0,...r,11];return new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,r.length+2,1,r.length,...r])}function ba(r){let a=0,f=8;const d=()=>{const [g,h]=ia(r,
|
|
945
|
+
f);f=h;return g},p=()=>{const g=r[f++];123===g&&(a=Math.max(a,1));return 99!==g&&100!==g},q=()=>{var g=r[f++];if(253===g)g=d(),a=Math.max(a,256<=g&&275>=g?2:1),11>=g||92===g||93===g?(d()&64&&d(),d()):12===g||13===g?f+=16:21<=g&&34>=g?f+=1:84<=g&&91>=g&&(d()&64&&d(),d(),f+=1);else if(252===g){g=d();if(g>=nd.length)return!1;for(let h=0;h<nd[g];h++)d()}else if(254===g)3===d()?f+=1:(d()&64&&d(),d());else if(40<=g&&62>=g)d()&64&&d(),d();else if(2<=g&&4>=g)123===r[f]&&(a=Math.max(a,1)),d();else if(14===
|
|
946
|
+
g)for(g=d();0<=g&&f<r.length;g--)d();else if(28===g)for(g=d();0<g&&f<r.length;g--){if(!p())return!1}else if(17===g||19===g)d(),d();else if(67===g||68===g)f+=67===g?4:8;else if(32<=g&&38>=g||Ue.includes(g))d();else if(!(1>=g||5===g||11===g||15===g||26===g||27===g||209===g||69<=g&&196>=g))return!1;return!0};for(;f<r.length;){var v=r[f];const [g,h]=ia(r,f+1);f=h;if(1===v)for(v=d();0<v&&f<r.length;v--){if(96!==r[f++])return-1;for(var k=0;2>k;k++)for(var b=d();0<b&&f<r.length;b--)if(!p())return-1}else if(10===
|
|
947
|
+
v)for(v=d();0<v&&f<r.length;v--){k=Math.min(d()+f,r.length);for(b=d();0<b&&f<k;b--)if(d(),!p())return-1;for(;f<k;)if(!q())return-1}f=h+g}return a}function ia(r,a){let f=0,d=0,p;do p=r[a++],f|=(p&127)<<d,d+=7;while(p&128);return[f>>>0,a]}function fa(r){const a=[];do{const f=r&127;r>>>=7;a.push(r?f|128:f)}while(r);return a}function ma(r){const a=[];for(let f=8;f<r.length;){const [d,p]=ia(r,f+1);a.push({id:r[f],at:f,body:p,end:p+d});f=p+d}return a}function xa(r){const a=[];for(const f of ma(r)){if(0!==
|
|
948
|
+
f.id)continue;const [d,p]=ia(r,f.body);Ve.some(q=>q.length===d&&q.every((v,k)=>r[p+k]===v))&&a.push(r.subarray(p+d,f.end))}return a}function ta(r){var a=ma(r);const f=a.find(v=>8===v.id);var d=a.filter(v=>v!==f);if(void 0===f||!d.some(v=>7===v.id))return r;const p=ia(r,f.body)[0];a=[r.subarray(0,8)];for(var q of d){d=r.subarray(q.body,q.end);if(7===q.id){const [v,k]=ia(r,q.body);d=Array.from("__riveLiftedStart",b=>b.charCodeAt(0));d=Uint8Array.from([...fa(v+1),...r.subarray(k,q.end),...fa(d.length),
|
|
949
|
+
...d,0,...fa(p)])}a.push(Uint8Array.from([q.id,...fa(d.length)]),d)}r=new Uint8Array(a.reduce((v,k)=>v+k.length,0));q=0;for(const v of a)r.set(v,q),q+=v.length;return r}function Ya(r,a,f,d){switch(d){case 0:return r();case 1:return r(a[f]);case 2:return r(a[f],a[f+1]);case 3:return r(a[f],a[f+1],a[f+2]);case 4:return r(a[f],a[f+1],a[f+2],a[f+3]);case 5:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4]);case 6:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4],a[f+5]);case 7:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+
|
|
950
|
+
4],a[f+5],a[f+6]);case 8:return r(a[f],a[f+1],a[f+2],a[f+3],a[f+4],a[f+5],a[f+6],a[f+7]);default:return r(...a.subarray(f,f+d))}}const ya=["console.log","console.debug","console.info","console.warn","console.error"],va=[["rive_rt_v1","now",["job","worker"],null],["rive_lanes_v1","wait_within",[],"blocks on a signal, which only the main lane may; a worker awaits Signal.next or Port.receive instead"],["rive_shared_v1","region_lock",["job","worker"],"locks a shared region, which the audio thread may not wait on; share through atomics, rings and snapshots instead"],
|
|
951
|
+
["rive_shared_v1","read_done",[],null],["rive_shared_v1",null,["job","worker","processor"],null],["rive_lane_v1",null,["job","worker","processor"],null],["rive_job_v1",null,["job"],null],["rive_worker_v1",null,["worker"],null],["env","console.log",["job","worker","processor"],null],["env","console.debug",["job","worker","processor"],null],["env","console.info",["job","worker","processor"],null],["env","console.warn",["job","worker","processor"],null],["env","console.error",["job","worker","processor"],
|
|
952
|
+
null],["env","console.time",["job","worker"],null],["env","console.timeLog",["job","worker"],null],["env","console.timeEnd",["job","worker"],null]],tb=[["rive.jobs","job"],["rive.workers","worker"],["rive.audio","processor"]],Hb={job:"__rive_job_",worker:"__rive_worker_",processor:"__rive_processor_"},od={starting:0,running:1,done:2,failed:3,stopped:4},md=new Map,fb=void 0!==globalThis.performance?()=>globalThis.performance.now():Date.now,Te=()=>{},tc=[253,12,...Array(16).fill(0)],We=X([...tc]),Xe=
|
|
953
|
+
X([...tc,...tc,253,128,2]),nd=[0,0,0,0,0,0,0,0,2,1,2,1,2,1,2,1,1,1],Ue=[12,13,16,18,63,64,65,66,208,210],Ve=tb.map(([r])=>Array.from(r,a=>a.charCodeAt(0)));(function(r){function a(C,I=null){return{Sb:e(ea.pc,C,I),Y:ea.Y,na:ea.na,Ga:ea.Ga,ma:ea.ma,Ya:ea.Ya,ea:ea.ea,ya:U}}function f(C){ha??={Ab:Y(We),yb:Y(Xe)};C=[C,...xa(C)];if(ha.Ab&&ha.yb||C.every(I=>Y(I)))return null;C=Math.max(...C.map(ba));return!ha.Ab&&0<C?"this browser lacks WebAssembly SIMD, so this file's scripts are off; bake with wasmSimd: off to support it":
|
|
954
|
+
ha.yb||2!==C?null:"this browser lacks WebAssembly relaxed SIMD, so this file's scripts are off; bake with wasmSimd: on to support it"}function d(C,I){const P=c(a(C.I),()=>{if(null===C.memory)throw Error("script passed memory to the host while its module was still starting");return C.memory});for(const S of WebAssembly.Module.imports(I))if("function"===S.kind){let ca,ka,ja,la;(ja=(ca=P)[ka=S.module]??(ca[ka]={}))[la=S.name]??(ja[la]=l(S.module,S.name))}return P}function p(C,I){const P=ea.na();for(const {name:S}of WebAssembly.Module.exports(I)){if(!S.startsWith("__rive"))continue;
|
|
955
|
+
I=3*S.length+1;const ca=ea.Ga(I);ea.Fb(S,ca,I);ea.exports._rive_web_vm_module_export(C.I.g,ca)}ea.ma(P);C=ea.exports._rive_web_vm_start_refusal(C.I.g);if(0!==C)throw Error(ea.qa(C));}function q(C,I){C.memory=I.exports.memory;C.W=null;C.Rb=Object.keys(I.exports).filter(pa=>pa.startsWith("__riveCall")).map(pa=>I.exports[pa]).filter(pa=>{if(!(pa instanceof WebAssembly.Global))return!1;try{return pa.value=pa.value,!0}catch{return!1}});C.Qb=[];const P=ea.exports._rive_web_vm_start_fuel(C.I.g),S=I.exports.__riveFuelArm,
|
|
956
|
+
ca=I.exports.__riveFuelEnd,ka=0<P&&void 0!==S&&void 0!==ca,ja=ea.exports._rive_web_vm_booting;ja(C.I.g);const la=ea.na();C.instance=I;try{ka&&S(P),I.exports.__riveLiftedStart?.(),ka&&ca()}catch(pa){throw C.instance=null,ea.ma(la),C.I.j=null,pa;}finally{ja(0)}}async function v(C){try{const S=await WebAssembly.compile(ta(C.W));if(0!==C.I.g){p(C,S);var I=m(S),P=await WebAssembly.instantiate(S,d(C,S));await I;0!==C.I.g&&q(C,P)}}catch(S){C.error=O(S)}}function k(C,I){if(C.length!==I.length)return!1;for(let P=
|
|
957
|
+
0;P<C.length;P++)if(C[P]!==I[P])return!1;return!0}function b(C,I,P){C={W:C,module:I,error:P,ka:new Set,Va:null};da.push(C);8<da.length&&da.shift();return C}function g(C,I){if(!Da(C)){b(C,I,null);for(const P of Fa())P.postMessage({riveLane:{bytes:C,module:I}})}}function h(C,I){for(const ca of WebAssembly.Module.imports(C)){a:{C=I;var P=ca.module,S=ca.name;for(const [ka,ja,la,pa]of va)if(P===ka&&(null===ja||S===ja)){C=la.includes(C)?null:pa??"";break a}C=""}if(null!==C)throw Error("lane module imports "+
|
|
958
|
+
ca.module+"."+ca.name+", which it cannot reach");}}function m(C,I=!1){const P=[];for(const [S,ca]of tb)for(const ka of WebAssembly.Module.customSections(C,S)){const ja=ta(new Uint8Array(ka));if(Da(ja))continue;const la=pa=>{h(pa,ca);g(ja,pa)};if(I)try{la(new WebAssembly.Module(ja))}catch(pa){}else P.push(WebAssembly.compile(ja).then(la).catch(()=>{}))}return Promise.all(P)}function y(C,I,P){let S=da.find(ca=>ca.ka.has(C));if(void 0===S){const ca=I();S=da.find(ka=>k(ka.W,ca));if(void 0===S){S=b(ca,
|
|
959
|
+
null,null);try{const ka=new WebAssembly.Module(ca);h(ka,P);S.module=ka}catch(ka){S.error=O(ka)}}S.ka.add(C);8<S.ka.size&&S.ka.delete(S.ka.values().next().value)}return S}function K(C=!1,I=0){return(P,S)=>C?F(()=>ea.Y().buffer,ea.exports._rive_shared_table(),I,P,null,S):c(a({g:1,j:null,h:!1,ya:U},"rive_shared_v1"),P,"rive_shared_v1").rive_shared_v1}function T(C){C=ea.vc(C);if(null!==C)throw C;}function A(C){const I=C.Va;C.Va=null;if(null!==I)return I.Ja.clear(),I;const P={la:0,jb:null,Ja:new Map,reset:!1};
|
|
960
|
+
return Object.assign(P,V({module:C.module,Za:"rive_job_v1",sb:()=>({cancelled:()=>P.jb()}),ab:K(),log:S=>ea.Xa(P.la,S),Ja:P.Ja,Ta:()=>T(P.la)}))}function w(){var C=Ia.audioWorkletUrl;if("string"===typeof C)return C;C=r.riveAudioWorkletSource;if(uc()||"string"!==typeof C)return null;pd??=URL.createObjectURL(new Blob([C],{type:"text/javascript"}));return pd}function t(){let C=[],I=null;return{$(P){null!==I?I(P):C.push(P)},open(P){I=P;for(const S of C)I(S);C=[]},cc(P){for(const S of C)kb({id:S.id,kind:"failed",
|
|
961
|
+
text:P});C=[]}}}function z(C){return{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],processorOptions:{memory:ea.memory(),table:ea.exports._rive_shared_table(),counter:C.buffer}}}function u(C){for(const I of[...Ba.Z.keys()])kb({id:I,kind:"failed",text:C})}function E(C,I,P,S,ca,ka=ca){let ja=!1,la=-1,pa=0;const Ja=setInterval(()=>{if("closed"===C.state)clearInterval(Ja),ka("script audio context closed");else{var Ga=Atomics.load(I,0),vc=(0<Ba.Z.size||0<pa)&&"running"===C.state;pa=Ga===la&&
|
|
962
|
+
vc?pa+1:0;la=Ga;Ga=ja?0!==Atomics.load(I,1)?30:S:P;pa>=Ga&&(clearInterval(Ja),ca(ja?"processor stalled the audio thread":"script audio worklet never answered"))}},50);return{ready(){ja=!0;pa=0},stop:()=>clearInterval(Ja)}}function L(C,I,P=!0){C.wb.cc(I);Ba.output===C&&(Ba.output=null);P&&void 0===Ia.audioContext&&C.context.close?.()}function R(C){let I=wc.get(C);void 0===I&&(I={fb:new Int32Array(new SharedArrayBuffer(16)),bb:!1},wc.set(C,I),C.addEventListener("statechange",()=>{"closed"!==C.state||
|
|
963
|
+
I.bb||qd(I.fb)}));return I}function qa(){const C=globalThis.navigator?.audioSession;"auto"===C?.type&&(C.type="playback");const I=new AudioContext,P=["pointerdown","pointerup","keydown","touchend"],S=()=>I.resume(),ca=setTimeout(()=>console.warn("script audio waits for a click, tap or key press on the page"),1E3),ka=()=>{if("running"===I.state||"closed"===I.state){clearTimeout(ca);I.removeEventListener("statechange",ka);for(const ja of P)globalThis.removeEventListener(ja,S,{capture:!0})}};for(const ja of P)globalThis.addEventListener(ja,
|
|
964
|
+
S,{capture:!0});I.addEventListener("statechange",ka);ka();return I}function Ca(){const C=Ia.audioContext??qa(),I=t(),P={context:C,$:I.$,ga:new Set,wb:I},S=R(C);let ca=null;const ka=la=>{Ba.output===P&&(ja.stop(),u(la),L(P,la,!1))},ja=E(C,S.fb,Infinity,20,la=>{S.bb=!0;ca.port.onmessage=null;ca.port.postMessage({kind:"end"});ca.disconnect();u(la);L(P,la,!1)},ka);C.addEventListener("statechange",()=>{"closed"===C.state&&ka("script audio context closed")});C.audioWorklet.addModule(w()).then(()=>{ca=new AudioWorkletNode(C,
|
|
965
|
+
"rive-processors",z(S.fb));ca.port.onmessage=la=>kb(la.data);ca.connect(C.destination);ja.ready();I.open(la=>ca.port.postMessage(la))}).catch(la=>{ja.stop();L(P,xc(la))});return P}function Qa(){const C=Ia.audioWorkletUrl;let I=Ia.audioContext;void 0===I&&(globalThis.nrdp.audio.output.open(),I=new AudioContext);I.forceStart?.();const P=t(),S={context:I,$:P.$,ga:new Set,wb:P},ca=new Int32Array(new SharedArrayBuffer(16));let ka=null,ja=!1,la=!1;const pa=Ka=>{if(!la){la=!0;Ja.stop();ka?.terminate();if(ja){for(const ub=
|
|
966
|
+
fb()+200;fb()<ub;);qd(ca);u(Ka)}L(S,Ka)}},Ja=E(I,ca,40,2,pa),Ga=Ka=>(...ub)=>{try{Ka(...ub)}catch($b){pa(xc($b))}},vc=Ga(()=>{(new AudioWorkletNode(I,"rive-processors",z(ca))).connect(I.destination);ja=!0;Ja.ready();P.open(Ka=>ka.send(Ka))});fetch(C).then(Ka=>{if(!Ka.ok)throw Error(C+" answered HTTP "+Ka.status);return Ka.text()}).then(Ka=>{if(!la){var ub=I.audioWorklet;ub.active=!0;ub.init(Ga(()=>{la||(ka=globalThis.nrdp.thread.start({url:C,source:Ka,audio:I}),ka.addEventListener("raw-message",$b=>
|
|
967
|
+
"ready"===$b.kind?vc():kb($b)))}))}}).catch(Ka=>pa(xc(Ka)));return S}function sb(){let C;(C=Ba).output??(C.output=uc()?Qa():Ca());return Ba.output}function Fb(C){const I=new Set([...Ba.Z.values()].map(P=>P.qb));for(const P of C.ga){if(8>=C.ga.size)break;I.has(P)||(C.ga.delete(P),C.$({kind:"forget",moduleId:P}))}}function db(C,I,P){const S=I.Ub;C.ga.add(I.qb);C.$({...I.start,bytes:P?S.W:null})}function kb(C){const I=Ba.Z.get(C.id);void 0!==I&&("resend"===C.kind?null!==Ba.output&&db(Ba.output,I,!0):
|
|
968
|
+
ea.Cc(I.yc,Ye[C.kind],C.text??""))}let ea=null;const H=new Map,U={i:!1,l:0,wa:0,ua:0,va:0,xa:0},Y=r.riveScriptingValidate??(C=>WebAssembly.validate(C)),aa=!0===r.riveScriptingLaneTwin;let ha=null;const da=[];let Fa=()=>[];const Da=C=>da.some(I=>k(I.W,C)),Xa=C=>{C=C?.riveLane;void 0!==C&&g(C.bytes,C.module)},eb=globalThis.process?.zj?.("worker_threads");!1===eb?.Aj?eb.Dj.i("message",Xa):void 0!==globalThis.WorkerGlobalScope&&globalThis.addEventListener("message",C=>Xa(C.data));const lb=new Map;let Gb=
|
|
969
|
+
1;const yc=new Map;let Ze=1;const Ba={output:null,Z:new Map,next:1},uc=()=>void 0!==globalThis.nrdp?.audio?.output;let pd=null;const qd=C=>J(()=>ea.memory().buffer,ea.exports._rive_shared_table(),C),xc=C=>"script audio has no worklet: "+O(C),wc=new WeakMap,Ye={running:od.running,failed:od.failed,log:4294967295},Ia={Nb(C){ea??=C},Ob(C){Fa=C},register(C,I){I=I.slice();H.set(C,{I:{g:C,j:null,h:!1,ya:U},W:I,instance:null,memory:null,aa:null,error:f(I),names:new Map})},release(C){const I=H.get(C);I&&(I.I.g=
|
|
970
|
+
0,H.delete(C))},Bc(){const C=[];for(const I of H.values())if(null===I.instance&&null===I.error){let P;(P=I).aa??(P.aa=v(I));C.push(I.aa)}return Promise.all(C)},start(C){C=H.get(C);if(!C)return"script module was never registered";if(null===C.instance&&null===C.error){if(null!==C.aa)return"script module is still being prepared";try{const I=new WebAssembly.Module(ta(C.W));p(C,I);m(I,!0);q(C,new WebAssembly.Instance(I,d(C,I)))}catch(I){C.error=O(I)}}return C.error},aa(C){C=H.get(C);return null===C?.instance&&
|
|
971
|
+
null===C.error&&null!==C.aa?1:0},oc(C,I){return"function"===typeof H.get(C)?.instance?.exports[ea.qa(I)]?1:0},call(C,I,P,S,ca,ka,ja){C=H.get(C);if(!C||null===C.instance)return 1;let la=C.names.get(I);void 0===la&&(la=C.instance.exports[ea.qa(I)]??null,C.names.set(I,la));if("function"!==typeof la)return 1;I=C.Rb;const pa=C.Qb,Ja=pa.length;for(let Ga=0;Ga<I.length;Ga++)pa.push(I[Ga].value);try{const Ga=Ya(la,ea.nb(),S>>3,P);ea.nb()[ca>>3]="number"===typeof Ga?Ga:0;return 0}catch(Ga){return C.I.j=null,
|
|
972
|
+
ea.Fb(O(Ga),ka,ja),C.I.h?3:2}finally{for(P=0;P<I.length;P++)I[P].value=pa[Ja+P];pa.length=Ja}},Dc(C,I){if(C=H.get(C))C.I.j=ea.qa(I)},read(C,I,P,S){C=H.get(C)?.memory;if(!C||I+S>C.buffer.byteLength)return 0;ea.Y().set(new Uint8Array(C.buffer,I,S),P);U.i&&(U.va+=S);return 1},write(C,I,P,S){C=H.get(C)?.memory;if(!C||I+S>C.buffer.byteLength)return 0;(new Uint8Array(C.buffer,I,S)).set(ea.Y().subarray(P,P+S));U.i&&(U.xa+=S);return 1},tj(C,I){C=H.get(C)?.memory;if(!C||I>=C.buffer.byteLength)return-1;C=(new Uint8Array(C.buffer)).indexOf(0,
|
|
973
|
+
I);return 0>C?-1:C-I},zc(C){return(C=H.get(C)?.memory)?C.buffer.byteLength/65536:0},ec(){const C=[];for(const I of H.keys()){const P=ea.exports._rive_web_vm_frame_boundary(I);0!==P&&C.push(ea.qa(P))}return C},Wb(C){U.i=!!C;U.l=0;U.wa=0;U.ua=0;U.va=0;U.xa=0},qc(){return{hostCalls:U.l,bytesStaged:U.wa,bytesCopiedOut:U.ua,bytesRead:U.va,bytesWritten:U.xa}},runJob:function(C,I,P,S,ca,ka){I=y(I,P,"job");if(null!==I.error)return{ok:!1,error:I.error};P=A(I);if(void 0!==P.error)return{ok:!1,error:P.error};
|
|
974
|
+
P.la=C;P.jb=ka;C=W(P,{prefix:Hb.job,Ra:S,input:ca},P.reset);if(void 0!==C.error)return{ok:!1,error:C.error};try{const ja=P.memory.buffer,la=new Uint32Array(ja,C.result>>>0,2),pa=0===la[1]?new Uint8Array(0):new Uint8Array(ja,la[0],la[1]);void 0!==P.exports.__riveLaneReset&&16777216>=ja.byteLength&&!ka()&&(P.reset=!0,I.Va=P);return{ok:!0,output:pa}}catch(ja){return{ok:!1,error:P.Sa(ja)}}},workerStart:function(C,I,P,S,ca,ka){I=y(I,P,"worker");if(null!==I.error)return{ok:!1,error:I.error};S=oa({module:I.module,
|
|
975
|
+
Za:"rive_worker_v1",sb:ja=>({finished:(la,pa,Ja)=>ka.finished(la,new Uint8Array(ja().buffer,pa>>>0,Ja>>>0)),wait:ka.wait,stopping:ka.sj}),xc:ja=>ea.uc(C,ja),ab:K(),log:ja=>ea.Xa(C,ja),Ta:()=>T(C),prefix:Hb.worker,Ra:S,input:ca,ea:!0});if(void 0!==S.error)return{ok:!1,error:S.error};ca=Gb++;lb.set(ca,{wake:S.exports.__rive_worker_wake,Tb:S.exports.__riveFrameMinor});return{ok:!0,id:ca}},workerWake:function(C,I,P){try{return lb.get(C).wake(I,P),null}catch(S){return O(S)}},workerCollect:function(C){try{return lb.get(C)?.Tb?.(),
|
|
976
|
+
null}catch(I){return O(I)}},workerEnd:function(C){lb.delete(C)},processorStart:function(C,I,P,S,ca,ka,ja){I=y(I,P,"processor");if(null!==I.error)return{ok:!1,error:I.error};S=ra(I.module,S,ca,ka,K(aa,ja),la=>ea.Xa(C,la));if(void 0!==S.error)return{ok:!1,error:S.error};ca=Ze++;yc.set(ca,S.la);return{ok:!0,id:ca}},processorRender:function(C,I,P,S){return yc.get(C).Fc(I,P,S)},processorEnd:function(C){yc.delete(C)},audioRefusal:function(){if(!uc()&&!0!==globalThis.crossOriginIsolated)return"real time audio needs cross origin isolation";
|
|
977
977
|
if("undefined"===typeof SharedArrayBuffer||!(ea.memory().buffer instanceof SharedArrayBuffer))return"real time audio needs librive built with threads";if(null===w())return"real time audio needs riveScripting.audioWorkletUrl";if("undefined"===typeof AudioContext)return"real time audio needs Web Audio";const C=Ia.audioContext;return"closed"===C?.state?"real time audio cannot start on a closed AudioContext":wc.get(C)?.bb?"real time audio stalled the host's AudioContext; hand riveScripting a new one":
|
|
978
|
-
null},audioSampleRate:()=>sb().context.sampleRate,audioStart:function(C,I,P,S,
|
|
979
|
-
id:C}),Fb(Ba.output))},audioState:()=>({context:Ba.output?.context.state??"none",processors:Ba.Z.size})};Ia.prepare=Ia.Bc;Ia.frameBoundary=Ia.ec;Ia.countHostCalls=Ia.Wb;Ia.hostCallCounts=Ia.qc;return r.riveScripting=Ia})(G)})();G.riveAudioWorkletSource="(function () {\n// Generated by src/wasm/idl/generate.py from bindings.py and\n// lane_layout.py. Do not edit.\n//\n// What each kind of lane module may import, which the page runner\n// checks it against, and the numbers lanes and the page agree on.\n\n// The console imports every lane gets.\nconst kLaneConsole = [\n 'console.log',\n 'console.debug',\n 'console.info',\n 'console.warn',\n 'console.error',\n];\n\n// [module, name or null for all of it, kinds, refusal or null], the\n// first match deciding.\nconst kLaneImportRules = [\n ['rive_lanes_v1', 'wait_within', [], 'blocks on a signal, which only the main lane may; a worker awaits Signal.next or Port.receive instead'],\n ['rive_shared_v1', 'region_lock', ['job', 'worker'], 'locks a shared region, which the audio thread may not wait on; share through atomics, rings and snapshots instead'],\n ['rive_shared_v1', 'read_done', [], null],\n ['rive_shared_v1', null, ['job', 'worker', 'processor'], null],\n ['rive_lane_v1', null, ['job', 'worker', 'processor'], null],\n ['rive_job_v1', null, ['job'], null],\n ['rive_worker_v1', null, ['worker'], null],\n ['env', 'console.log', ['job', 'worker', 'processor'], null],\n ['env', 'console.debug', ['job', 'worker', 'processor'], null],\n ['env', 'console.info', ['job', 'worker', 'processor'], null],\n ['env', 'console.warn', ['job', 'worker', 'processor'], null],\n ['env', 'console.error', ['job', 'worker', 'processor'], null],\n ['env', 'console.time', ['job', 'worker'], null],\n ['env', 'console.timeLog', ['job', 'worker'], null],\n ['env', 'console.timeEnd', ['job', 'worker'], null],\n];\n\n// Why a lane module of kind ('job', 'worker' or 'processor') may not\n// import module.name: null when it may, else the end of \"<kind> code ...\",\n// empty when no rule says why.\nfunction laneImportRefusal(kind, module, name) {\n for (const [ruleModule, ruleName, kinds, refusal] of kLaneImportRules) {\n if (module === ruleModule && (ruleName === null || name === ruleName)) {\n return kinds.includes(kind) ? null : refusal ?? '';\n }\n }\n return '';\n}\n\n// [section, kind] for each lane kind, in rive_lanes_v1's order.\nconst kLaneSections = [\n ['rive.jobs', 'job'],\n ['rive.workers', 'worker'],\n ['rive.audio', 'processor'],\n];\n\n// The prefix each kind's entries export under, before their number.\nconst kLaneEntryPrefixes = {\n 'job': '__rive_job_',\n 'worker': '__rive_worker_',\n 'processor': '__rive_processor_',\n};\n\n// The rive_lanes_v1 states every lane moves through.\nconst kLaneStates = {\n 'starting': 0,\n 'running': 1,\n 'done': 2,\n 'failed': 3,\n 'stopped': 4,\n};\n\n// What a processor event carries for a console line, in place of a state.\nconst kProcessorEventLog = 0xffffffff;\n\n// The most 64 KiB pages a job instance's memory may have grown to for another\n// job to reuse it, as memory never shrinks.\nconst kReuseMaxPages = 256;\n\n// How long a processor's init may run in milliseconds, natively per step and in\n// a worklet as a whole, far longer than a block as it may build tables.\nconst kProcessorInitMs = 1000;\n\n// The exports a lane module may carry besides its entries.\nconst kLaneAllocExport = '__rive_lane_alloc';\nconst kLaneFreeExport = '__rive_lane_free';\nconst kWorkerWakeExport = '__rive_worker_wake';\nconst kProcessorProcessExport = '__rive_processor_process';\nconst kFrameMinorExport = '__riveFrameMinor';\nconst kLiftedStartExport = '__riveLiftedStart';\nconst kLaneResetExport = '__riveLaneReset';\n\n// What lanes report the same way on every host.\nconst kProcessorHolds =\n 'a processor cannot pass shared objects through rings or snapshots, as the audio thread may ' +\n 'not hold or give them back; pass them in Audio.start\\'s argument';\nconst kProcessorOverran = 'processor overran its block budget';\nconst kProcessorInitOverran = 'processor init overran its budget';\nconst kProcessorNode = 'rive-processors';\n\n// A processor block's budget in milliseconds, first for its first block; 0 for none.\nfunction processorBlockBudgetMs(hardBlocks, frames, sampleRate, first) {\n return hardBlocks === 0 ? 0.0 : Math.max(first ? 100.0 : 1.0, Math.ceil(hardBlocks * 1000.0 * frames / sampleRate));\n}\n\n// Why a lane module that imports module.name cannot load.\nfunction laneImportError(module, name) {\n return 'lane module imports ' + module + '.' + name + ', which it cannot reach';\n}\n// Generated by src/wasm/idl/generate.py from shared_layout.py. Do not edit.\n//\n// The shared memory words librive and rive_shared_lane.mjs both read,\n// as byte offsets into librive's heap.\n\n// What a block holds, its first word.\nconst kKindRegion = 0;\nconst kKindRing = 1;\nconst kKindSnapshot = 2;\nconst kKindSignal = 3;\nconst kKindBlob = 4;\n\n// Every block starts with these words.\nconst kHeaderKind = 0;\nconst kHeaderLock = 4;\nconst kHeaderCapacity = 8;\n\n// A region after its header.\nconst kRegionPoisoned = 16;\nconst kRegionData = 32;\n\n// A ring after its header; signals are registry ids.\nconst kRingHead = 16;\nconst kRingUsed = 20;\nconst kRingDataSignal = 24;\nconst kRingSpaceSignal = 28;\nconst kRingData = 32;\n\n// A snapshot after its header: copies of capacity bytes each, a version per\n// copy that is odd while a publish writes it.\nconst kSnapshotLatest = 16;\nconst kSnapshotSeq = 24;\nconst kSnapshotSeqHigh = 28;\nconst kSnapshotVersions = 32;\nconst kSnapshotSizes = 40;\nconst kSnapshotData = 48;\nconst kSnapshotCopies = 2;\n\n// A ring record's length word or a snapshot copy's size. With the holds bit\n// set, the bytes end in the shared ids the value holds and then their count.\nconst kRecordHolds = 0x80000000;\n\n// A signal after its header; watchers point at wake words.\nconst kSignalWatcherCount = 16;\nconst kSignalSeq = 24;\nconst kSignalSeqHigh = 28;\nconst kSignalWatchers = 32;\n\n// A blob after its header: bytes fixed once made.\nconst kBlobData = 16;\n\n// The futex word a watcher parks on.\nconst kWakeWordWord = 0;\n\n// The registry, at SharedRegistry::table().\nconst kTableLanes = 16;\nconst kTableTokens = 144;\nconst kTableChunks = 148;\n\n// A registry slot. Its state packs the generation in the low bits, a live bit,\n// then the pins librive holds.\nconst kSlotState = 0;\nconst kSlotBlock = 4;\nconst kSlotOwner = 16;\nconst kSlotOwnerHigh = 20;\nconst kSlotSize = 24;\nconst kSlotLive = 4096;\nconst kSlotPin = 8192;\n\n// Slots come in chunks that never move once made.\nconst kChunkShift = 10;\nconst kChunkSlots = 1024;\n\n// An id: the top bit, its slot, the generation's low bits.\nconst kIdBit = 0x80000000;\nconst kIdSlotShift = 12;\nconst kIdGenerationMask = 4095;\n\n// Lanes without librive.\nconst kLaneCount = 32;\nconst kLaneIdle = 1;\nconst kLaneFirstToken = 2;\n\n// What ring_write answers.\nconst kRingWriteFull = 0;\nconst kRingWriteWritten = 1;\nconst kRingWriteNeverFits = 2;\n\n// What region_lock answers.\nconst kRegionLockGone = 0;\n\n// Words of the counter an NRDP page shares with its worklet thread, so it can\n// free what the thread held when it ends it.\nconst kHoldBlocks = 0;\nconst kHoldStarting = 1;\nconst kHoldToken = 2;\nconst kHoldLock = 3;\nconst kHoldWords = 4;\n// The rive_shared_v1 natives for a lane without librive, such as an audio\n// worklet, through Atomics on librive's heap; like librive's, none ever waits.\n\n\n// Traps as WAMR does when byteLength bytes at ptr leave a module's memory.\nfunction checkBounds(buffer, ptr, byteLength) {\n if (ptr + byteLength > buffer.byteLength) {\n throw new Error('out of bounds memory access');\n }\n}\n\n// The byte length of the std string at ptr, which the word before it holds.\n// Null reads as empty. Addresses and lengths arrive from wasm as signed i32s.\nfunction managedLength(buffer, ptr) {\n ptr >>>= 0;\n if (ptr < 4) {\n return 0;\n }\n checkBounds(buffer, ptr, 0);\n const length = new DataView(buffer).getUint32(ptr - 4, true);\n checkBounds(buffer, ptr, length);\n return length;\n}\n\n// UTF-16 text in a module's memory. Audio worklet scopes may have no\n// TextDecoder.\nfunction utf16Text(buffer, ptr, byteLength) {\n ptr >>>= 0;\n byteLength >>>= 0;\n checkBounds(buffer, ptr, byteLength);\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder('utf-16le', { ignoreBOM: true }).decode(\n new Uint8Array(buffer, ptr, byteLength)\n );\n }\n // A Uint16Array cannot start at an odd address, so text there is copied.\n const units =\n ptr % 2 === 0\n ? new Uint16Array(buffer, ptr, byteLength >> 1)\n : new Uint16Array(buffer.slice(ptr, ptr + byteLength - (byteLength % 2)));\n let text = '';\n for (let i = 0; i < units.length; i += 4096) {\n text += String.fromCharCode.apply(null, units.subarray(i, i + 4096));\n }\n return text;\n}\n\n// Each thread's lane word and lock token, per table. Past the table's lane\n// words a lane pins through the slot's count, which no page can free.\nconst laneClaims = new Map();\nconst kOverflowToken = kLaneFirstToken + kLaneCount;\n\nfunction claimLane(i32, table) {\n let claim = laneClaims.get(table);\n if (claim === undefined) {\n for (let i = 0; i < kLaneCount && claim === undefined; i++) {\n const word = (table + kTableLanes + i * 4) >>> 2;\n if (Atomics.compareExchange(i32, word, 0, kLaneIdle) === 0) {\n claim = { word, token: kLaneFirstToken + i };\n }\n }\n // Still a token of its own, so its locks tell from librive's and\n // other lanes'.\n claim ??= {\n word: -1,\n token: kOverflowToken + Atomics.add(i32, (table + kTableTokens) >>> 2, 1),\n };\n laneClaims.set(table, claim);\n }\n return claim;\n}\n\n// The id names the slot's live object.\nconst slotNames = (state, id) =>\n (state & kSlotLive) !== 0 && ((state ^ id) & kIdGenerationMask) === 0;\n\n// heap() answers librive's heap buffer, table is SharedRegistry::table() and\n// owner the VM whose objects the lane reaches; the lane records its token and\n// lock in holds, for a page to free them.\nfunction createSharedLaneImports(heap, table, owner, moduleMemory, holds = null, fail = () => {}) {\n table >>>= 0;\n const ownerLow = owner % 0x100000000;\n const ownerHigh = Math.floor(owner / 0x100000000);\n // Views over the heap and the lane's memory, rebuilt only when growth\n // replaces a buffer, so no call allocates on the audio thread.\n let buffer = null;\n let u8 = null;\n let i32 = null;\n let u32 = null;\n let moduleBuffer = null;\n let moduleU8 = null;\n const views = () => {\n const current = heap();\n if (current !== buffer) {\n buffer = current;\n u8 = new Uint8Array(buffer);\n i32 = new Int32Array(buffer);\n u32 = new Uint32Array(buffer);\n }\n };\n views();\n const claim = claimLane(i32, table);\n if (holds !== null) {\n Atomics.store(holds, kHoldToken, claim.token);\n }\n // The lane's bytes when [ptr, ptr + length) lies in its memory, checked\n // before any lock is taken; null otherwise, as WAMR would trap.\n const moduleRange = (ptr, length) => {\n const current = moduleMemory().buffer;\n if (current !== moduleBuffer) {\n moduleBuffer = current;\n moduleU8 = new Uint8Array(current);\n }\n return ptr + length <= moduleU8.length ? moduleU8 : null;\n };\n const copy = (to, toAt, from, fromAt, size) => {\n for (let i = 0; i < size; i++) {\n to[toAt + i] = from[fromAt + i];\n }\n };\n // Recorded before the swap, so whichever way an ended thread stopped,\n // the word holds this token only if the lane took it.\n const lock = (address) => {\n if (holds !== null) {\n Atomics.store(holds, kHoldLock, address);\n }\n while (Atomics.compareExchange(i32, address >>> 2, 0, claim.token) !== 0) {}\n };\n const unlock = (address) => {\n Atomics.store(i32, address >>> 2, 0);\n if (holds !== null) {\n Atomics.store(holds, kHoldLock, 0);\n }\n };\n\n // The block an id names, pinned so librive cannot free it until unpin;\n // 0 when the id is stale, another VM's or of another kind. A lane pins\n // one at a time.\n let pinned = 0;\n const pin = (id, kind) => {\n views();\n id >>>= 0;\n if ((id & kIdBit) === 0) {\n return 0;\n }\n const index = (id & ~kIdBit) >>> kIdSlotShift;\n const chunk = Atomics.load(u32, (table + kTableChunks + (index >>> kChunkShift) * 4) >>> 2);\n if (chunk === 0) {\n return 0;\n }\n const slot = chunk + (index & (kChunkSlots - 1)) * kSlotSize;\n const stateAt = (slot + kSlotState) >>> 2;\n if (claim.word >= 0) {\n // Stored before the state is checked, as librive retires a slot\n // before scanning the lane words: one of the two sees the other.\n Atomics.store(u32, claim.word, slot);\n if (!slotNames(Atomics.load(u32, stateAt), id)) {\n Atomics.store(u32, claim.word, kLaneIdle);\n return 0;\n }\n } else {\n for (;;) {\n const state = Atomics.load(u32, stateAt);\n if (!slotNames(state, id)) {\n return 0;\n }\n if (Atomics.compareExchange(u32, stateAt, state, state + kSlotPin) === state) {\n break;\n }\n }\n }\n pinned = slot;\n const block = Atomics.load(u32, (slot + kSlotBlock) >>> 2);\n if (\n u32[(block + kHeaderKind) >>> 2] !== kind ||\n u32[(slot + kSlotOwner) >>> 2] !== ownerLow ||\n u32[(slot + kSlotOwnerHigh) >>> 2] !== ownerHigh\n ) {\n unpin();\n return 0;\n }\n return block;\n };\n const unpin = () => {\n if (claim.word >= 0) {\n Atomics.store(u32, claim.word, kLaneIdle);\n } else {\n Atomics.sub(u32, (pinned + kSlotState) >>> 2, kSlotPin);\n }\n };\n const capacityOf = (block) => u32[(block + kHeaderCapacity) >>> 2];\n // A sequence is a low and a high word, as a 64 bit atomic allocates here.\n const bumpSeq = (low, high) => {\n if (Atomics.add(u32, low >>> 2, 1) === 0xffffffff) {\n Atomics.add(u32, high >>> 2, 1);\n }\n };\n // High first, so a read during a carry answers less, never more.\n const readSeq = (low, high) => {\n const top = Atomics.load(u32, high >>> 2);\n return top * 0x100000000 + Atomics.load(u32, low >>> 2);\n };\n\n const notify = (signal) => {\n const block = pin(signal, kKindSignal);\n if (block === 0) {\n return;\n }\n bumpSeq(block + kSignalSeq, block + kSignalSeqHigh);\n lock(block + kHeaderLock);\n try {\n const count = u32[(block + kSignalWatcherCount) >>> 2];\n const watchers = u32[(block + kSignalWatchers) >>> 2] >>> 2;\n for (let i = 0; i < count; i++) {\n // A watcher's wake word: a futex word librive's threads wait on.\n const word = (u32[watchers + i] + kWakeWordWord) >>> 2;\n Atomics.add(i32, word, 1);\n Atomics.notify(i32, word);\n }\n } finally {\n unlock(block + kHeaderLock);\n unpin();\n }\n };\n\n // Ring bytes wrap around the block's data.\n const ringCopyIn = (block, at, from, fromAt, size) => {\n const capacity = capacityOf(block);\n const first = Math.min(size, capacity - at);\n copy(u8, block + kRingData + at, from, fromAt, first);\n copy(u8, block + kRingData, from, fromAt + first, size - first);\n };\n const ringCopyOut = (block, at, to, toAt, size) => {\n const capacity = capacityOf(block);\n at %= capacity;\n const first = Math.min(size, capacity - at);\n copy(to, toAt, u8, block + kRingData + at, first);\n copy(to, toAt + first, u8, block + kRingData, size - first);\n };\n // A record's length, four bytes little endian.\n const sizeBytes = new Uint8Array(4);\n const sizeWord = new Uint32Array(sizeBytes.buffer);\n const refuseHolds = () => {\n fail(kProcessorHolds);\n return 0;\n };\n // Pops the head record into to at out if it fits capacity, or with to null drops it if it\n // does not, and notifies space. Answers its size plus one, 0 when empty or a drop keeps it.\n const pop = (ring, to, out, capacity) => {\n const block = pin(ring, kKindRing);\n if (block === 0) {\n return 0;\n }\n let signal = 0;\n let size = 0;\n lock(block + kHeaderLock);\n try {\n const used = u32[(block + kRingUsed) >>> 2];\n if (used === 0) {\n return 0;\n }\n const head = u32[(block + kRingHead) >>> 2];\n ringCopyOut(block, head, sizeBytes, 0, 4);\n size = sizeWord[0];\n if ((size & kRecordHolds) !== 0) {\n return refuseHolds();\n }\n if (to === null) {\n if (size <= capacity) {\n return 0;\n }\n } else if (out === 0 || size > capacity) {\n return size + 1;\n } else {\n ringCopyOut(block, head + 4, to, out, size);\n }\n u32[(block + kRingHead) >>> 2] = (head + 4 + size) % capacityOf(block);\n u32[(block + kRingUsed) >>> 2] = used - 4 - size;\n signal = u32[(block + kRingSpaceSignal) >>> 2];\n } finally {\n unlock(block + kHeaderLock);\n unpin();\n }\n notify(signal);\n return size + 1;\n };\n\n // A region word's index, or -1 outside the region.\n const word = (block, offset) => {\n offset >>>= 0;\n if ((offset & 3) !== 0 || offset + 4 > capacityOf(block)) {\n return -1;\n }\n return (block + kRegionData + offset) >>> 2;\n };\n // -1 outside the region or once it is gone, which the std throws for.\n const atomic = (region, offset, use) => {\n const block = pin(region, kKindRegion);\n if (block === 0) {\n return -1;\n }\n try {\n const at = word(block, offset);\n return at < 0 ? -1 : use(at) >>> 0;\n } finally {\n unpin();\n }\n };\n\n return {\n 'region_create': () => 0,\n 'region_size': (region) => {\n const block = pin(region, kKindRegion);\n if (block === 0) {\n return 0;\n }\n const size = capacityOf(block);\n unpin();\n return size;\n },\n 'region_lock': () => kRegionLockGone,\n 'region_unlock': () => {},\n 'region_read': () => 0,\n 'region_write': () => 0,\n 'region_poisoned': (region) => {\n const block = pin(region, kKindRegion);\n if (block === 0) {\n return 0;\n }\n const poisoned = u32[(block + kRegionPoisoned) >>> 2] !== 0 ? 1 : 0;\n unpin();\n return poisoned;\n },\n 'atomic_load': (region, offset) => atomic(region, offset, (at) => Atomics.load(i32, at)),\n 'atomic_store': (region, offset, value) =>\n atomic(region, offset, (at) => {\n Atomics.store(i32, at, value | 0);\n return 0;\n }),\n 'atomic_add': (region, offset, value) =>\n atomic(region, offset, (at) => Atomics.add(i32, at, value | 0)),\n 'atomic_cas': (region, offset, expected, desired) =>\n atomic(region, offset, (at) =>\n Atomics.compareExchange(i32, at, expected | 0, desired | 0)\n ),\n 'ring_create': () => 0,\n 'ring_write': (ring, data, dataByteCount, holds, holdCount) => {\n data >>>= 0;\n dataByteCount >>>= 0;\n const from = moduleRange(data, dataByteCount);\n const block = from !== null ? pin(ring, kKindRing) : 0;\n if (block === 0) {\n return kRingWriteFull;\n }\n if (holdCount !== 0) {\n unpin();\n return refuseHolds();\n }\n let signal = 0;\n lock(block + kHeaderLock);\n try {\n const capacity = capacityOf(block);\n if (4 + dataByteCount > capacity) {\n return kRingWriteNeverFits;\n }\n const used = u32[(block + kRingUsed) >>> 2];\n if (used + 4 + dataByteCount > capacity) {\n return kRingWriteFull;\n }\n const head = u32[(block + kRingHead) >>> 2];\n sizeWord[0] = dataByteCount;\n ringCopyIn(block, (head + used) % capacity, sizeBytes, 0, 4);\n ringCopyIn(block, (head + used + 4) % capacity, from, data, dataByteCount);\n u32[(block + kRingUsed) >>> 2] = used + 4 + dataByteCount;\n signal = u32[(block + kRingDataSignal) >>> 2];\n } finally {\n unlock(block + kHeaderLock);\n unpin();\n }\n notify(signal);\n return kRingWriteWritten;\n },\n 'ring_read': (ring, out, outByteCount) => {\n out >>>= 0;\n outByteCount >>>= 0;\n const to = moduleRange(out, outByteCount);\n return to !== null ? pop(ring, to, out, outByteCount) : 0;\n },\n 'ring_drop': (ring, capacity) => pop(ring, null, 0, capacity >>> 0),\n 'ring_used': (ring) => {\n const block = pin(ring, kKindRing);\n if (block === 0) {\n return 0;\n }\n lock(block + kHeaderLock);\n const used = u32[(block + kRingUsed) >>> 2];\n unlock(block + kHeaderLock);\n unpin();\n return used;\n },\n 'ring_signal': (ring, space) => {\n const block = pin(ring, kKindRing);\n if (block === 0) {\n return 0;\n }\n const signal = u32[(block + (space !== 0 ? kRingSpaceSignal : kRingDataSignal)) >>> 2];\n unpin();\n return signal;\n },\n 'snapshot_create': () => 0,\n // As SharedSnapshot::publish: publishers take turns writing the copy\n // readers are not on.\n 'snapshot_publish': (snapshot, data, dataByteCount, holds, holdCount) => {\n data >>>= 0;\n dataByteCount >>>= 0;\n const from = moduleRange(data, dataByteCount);\n const block = from !== null ? pin(snapshot, kKindSnapshot) : 0;\n if (block === 0) {\n return 0;\n }\n try {\n const capacity = capacityOf(block);\n if (holdCount !== 0) {\n return refuseHolds();\n }\n if (dataByteCount > capacity) {\n return 0;\n }\n lock(block + kHeaderLock);\n try {\n const latestAt = (block + kSnapshotLatest) >>> 2;\n const latest = Atomics.load(u32, latestAt);\n const sizesAt = (block + kSnapshotSizes) >>> 2;\n const replaced = latest !== 0 ? Atomics.load(u32, sizesAt + latest - 1) : 0;\n // Nothing here could give back the replaced value's holds.\n if ((replaced & kRecordHolds) !== 0) {\n return refuseHolds();\n }\n const index = latest % kSnapshotCopies;\n const versionAt = ((block + kSnapshotVersions) >>> 2) + index;\n const version = Atomics.load(u32, versionAt) | 1;\n Atomics.store(u32, versionAt, version);\n // A load after the store keeps the bytes from landing\n // before the odd version, as JS has no fence.\n Atomics.load(u32, versionAt);\n copy(u8, block + kSnapshotData + index * capacity, from, data, dataByteCount);\n Atomics.store(u32, sizesAt + index, dataByteCount);\n Atomics.store(u32, versionAt, version + 1);\n Atomics.store(u32, latestAt, index + 1);\n bumpSeq(block + kSnapshotSeq, block + kSnapshotSeqHigh);\n } finally {\n unlock(block + kHeaderLock);\n }\n return 1;\n } finally {\n unpin();\n }\n },\n // As SharedSnapshot::read, without the lock.\n 'snapshot_read': (snapshot, out, outByteCount) => {\n out >>>= 0;\n outByteCount >>>= 0;\n const to = moduleRange(out, outByteCount);\n const block = to !== null ? pin(snapshot, kKindSnapshot) : 0;\n if (block === 0) {\n return 0;\n }\n try {\n for (;;) {\n const latest = Atomics.load(u32, (block + kSnapshotLatest) >>> 2);\n if (latest === 0) {\n return 0;\n }\n const index = latest - 1;\n const versionAt = ((block + kSnapshotVersions) >>> 2) + index;\n const version = Atomics.load(u32, versionAt);\n if ((version & 1) !== 0) {\n continue;\n }\n const word = Atomics.load(u32, ((block + kSnapshotSizes) >>> 2) + index);\n const capacity = capacityOf(block);\n const at = block + kSnapshotData + index * capacity;\n const refused = (word & kRecordHolds) !== 0;\n // A torn read answers what the version check discards.\n const size = Math.min(word, capacity);\n if (!refused && out !== 0 && size <= outByteCount) {\n copy(to, out, u8, at, size);\n }\n // An exchange rather than a load keeps the copy from\n // reading past the check.\n if (Atomics.compareExchange(u32, versionAt, version, version) === version) {\n return refused ? refuseHolds() : size + 1;\n }\n }\n } finally {\n unpin();\n }\n },\n 'snapshot_seq': (snapshot) => {\n const block = pin(snapshot, kKindSnapshot);\n if (block === 0) {\n return 0;\n }\n const seq = readSeq(block + kSnapshotSeq, block + kSnapshotSeqHigh);\n unpin();\n return seq;\n },\n 'signal_create': () => 0,\n 'signal_notify': (signal) => notify(signal),\n 'signal_seq': (signal) => {\n const block = pin(signal, kKindSignal);\n if (block === 0) {\n return 0;\n }\n const seq = readSeq(block + kSignalSeq, block + kSignalSeqHigh);\n unpin();\n return seq;\n },\n 'blob_create': () => 0,\n 'blob_size': (blob) => {\n const block = pin(blob, kKindBlob);\n if (block === 0) {\n return 0;\n }\n const size = capacityOf(block);\n unpin();\n return size;\n },\n // A blob never changes, so the copy takes no lock.\n 'blob_read': (blob, offset, out, outByteCount) => {\n offset >>>= 0;\n out >>>= 0;\n outByteCount >>>= 0;\n const to = moduleRange(out, outByteCount);\n const block = to !== null ? pin(blob, kKindBlob) : 0;\n if (block === 0) {\n return 0;\n }\n const size = capacityOf(block);\n const count = offset < size ? Math.min(outByteCount, size - offset) : 0;\n copy(to, out, u8, block + kBlobData + offset, count);\n unpin();\n return count;\n },\n 'retain': () => 0,\n 'release': () => {},\n };\n}\n\n// Frees the lock word and lane word a lane left held, for a page that ended\n// its thread, once that thread is surely gone.\nfunction releaseSharedLane(heap, table, holds) {\n const token = Atomics.load(holds, kHoldToken);\n if (token < kLaneFirstToken) {\n return;\n }\n const i32 = new Int32Array(heap());\n const lockAt = Atomics.load(holds, kHoldLock);\n if (lockAt !== 0) {\n Atomics.compareExchange(i32, lockAt >>> 2, token, 0);\n }\n // Last: the slot it pinned keeps the locked block alive until here.\n if (token < kOverflowToken) {\n Atomics.store(i32, (((table >>> 0) + kTableLanes) >>> 2) + token - kLaneFirstToken, 0);\n }\n}\n// Instances of the lane modules a script module carries, started the same way\n// by the page runner and, through createProcessorMixer, by the audio worklets.\n\n\nfunction errorText(error) {\n return String(error?.message ?? error);\n}\n\n// Chrome's worklet scope has no performance; Date's milliseconds still catch a\n// block of several.\nconst monotonicNow =\n globalThis.performance !== undefined ? () => globalThis.performance.now() : Date.now;\n\n// The console imports: each line is a std string, its byte length before it.\n// Only jobs and workers import the timers.\nfunction laneConsole(memory, log, timers = new Map()) {\n const text = (ptr) => {\n const buffer = memory().buffer;\n return utf16Text(buffer, ptr, managedLength(buffer, ptr));\n };\n const env = {};\n for (const name of kLaneConsole) {\n env[name] = (ptr) => log(text(ptr));\n }\n const report = (end) => (ptr) => {\n const label = text(ptr);\n const started = timers.get(label);\n if (started === undefined) {\n log(`Timer '${label}' does not exist`);\n return;\n }\n if (end) {\n timers.delete(label);\n }\n log(`${label}: ${(monotonicNow() - started).toFixed(3)}ms`);\n };\n env['console.time'] = (ptr) => timers.set(text(ptr), monotonicNow());\n env['console.timeLog'] = report(false);\n env['console.timeEnd'] = report(true);\n return env;\n}\n\nconst noFuelCheck = () => {};\n\n// An instance of lane.module whose imports reach the lane's own natives, log,\n// timers and fuel check. Returns { exports, memory, failure } or { error }.\nfunction instantiateLane(lane) {\n let memory = null;\n let thrown = null;\n const failure = (error) => thrown ?? errorText(error);\n const imports = {\n 'env': laneConsole(() => memory, lane.log, lane.timers),\n 'rive_shared_v1': lane.shared(() => memory),\n 'rive_lane_v1': {\n 'error': (ptr, byteLength) => {\n thrown = utf16Text(memory.buffer, ptr, byteLength);\n lane.onThrow?.(thrown);\n },\n 'fuel_check': lane.fuel ?? noFuelCheck,\n },\n };\n if (lane.natives !== undefined) {\n imports[lane.natives] = lane.own(() => memory);\n }\n try {\n const exports = new WebAssembly.Instance(lane.module, imports).exports;\n memory = exports['memory'];\n return { exports, memory, failure };\n } catch (error) {\n return { error: failure(error) };\n }\n}\n\n// Runs the instance's start, or its reset when a job ran in it before, then\n// prefix + entry with a copy of input and args, freeing the copy after when\n// lane.free. Returns { result } or { error }.\nfunction enterLane(instance, lane, reset = false) {\n try {\n const exports = instance.exports;\n exports[reset ? kLaneResetExport : kLiftedStartExport]?.();\n const input = lane.input;\n const at = exports[kLaneAllocExport](input.length) >>> 0;\n new Uint8Array(instance.memory.buffer, at, input.length).set(input);\n const result = exports[lane.prefix + lane.entry](\n at,\n input.length,\n ...(lane.args ?? [])\n );\n if (lane.free) {\n exports[kLaneFreeExport](at);\n }\n return { result };\n } catch (error) {\n return { error: instance.failure(error) };\n }\n}\n\n// A new instance, entered. Returns { exports, memory, result, failure } or\n// { error }.\nfunction startLane(lane) {\n const instance = instantiateLane(lane);\n const entered = instance.error === undefined ? enterLane(instance, lane) : instance;\n return entered.error === undefined ? { ...instance, result: entered.result } : entered;\n}\n\n// One script audio processor, whose init may take kProcessorInitMs. Returns\n// { lane } or { error }; shared(memory, fail) answers its shared imports.\nfunction startProcessorLane(module, entry, input, format, shared, log) {\n // As natively, a native that fails the processor lets the block finish.\n let failed = null;\n const fail = (text) => {\n failed ??= text;\n };\n // When its fuel checks end it and why, made once so a block allocates\n // nothing on the audio thread.\n const bounds = { until: monotonicNow() + kProcessorInitMs, reason: kProcessorInitOverran };\n const started = startLane({\n module,\n shared: (memory) => shared(memory, fail),\n log,\n fuel: () => {\n if (monotonicNow() > bounds.until) {\n throw bounds.reason;\n }\n },\n prefix: kLaneEntryPrefixes['processor'],\n entry,\n input,\n args: [format.sampleRate, format.maxFrames, format.channels],\n free: true,\n });\n if (started.error !== undefined || failed !== null) {\n return { error: started.error ?? failed };\n }\n bounds.until = Infinity;\n bounds.reason = kProcessorOverran;\n const exports = started.exports;\n const memory = started.memory;\n // Rebuilt only when the block moves or memory grows, so a block\n // allocates nothing on the audio thread.\n let view = null;\n return {\n lane: {\n // Ends the block past budget ms, if any; sink gets its samples\n // before a collection can move them. Null, or why it failed.\n render(frames, startFrame, sink, budget = 0) {\n if (budget > 0) {\n bounds.until = monotonicNow() + budget;\n }\n try {\n const at = exports[kProcessorProcessExport](frames, startFrame) >>> 0;\n if (failed !== null) {\n return failed;\n }\n const length = frames * format.channels;\n if (\n view === null ||\n view.buffer !== memory.buffer ||\n view.byteOffset !== at ||\n view.length !== length\n ) {\n view = new Float32Array(memory.buffer, at, length);\n }\n sink(view);\n exports[kFrameMinorExport]?.();\n return null;\n } catch (error) {\n return started.failure(error);\n } finally {\n bounds.until = Infinity;\n }\n },\n },\n };\n}\n\n// Every processor a real time output runs, as the page's messages say, with\n// answers through post. It counts blocks and starts in holds, the Hold words.\nfunction createProcessorMixer(heap, table, post, holds) {\n const lanes = new Map();\n // What render walks, rebuilt only when lanes change, so a block does not\n // allocate an iterator.\n let order = [];\n const relist = () => {\n order = [...lanes.entries()];\n };\n // Null while compiling, then the module or the compile's error text,\n // until the page forgets it.\n const modules = new Map();\n // Starts not yet run, behind one whose module still compiles.\n const waiting = [];\n // The output's add and where in its block a chunk goes, set as render\n // walks, so sinks allocate nothing.\n let add = null;\n let offset = 0;\n let frame = -1;\n const fail = (id, text) => {\n lanes.delete(id);\n relist();\n post({ id, kind: 'failed', text });\n };\n const start = (message) => {\n const id = message.id;\n const module = modules.get(message.moduleId);\n if (typeof module === 'string') {\n post({ id, kind: 'failed', text: module });\n return;\n }\n const format = message.format;\n const started = startProcessorLane(\n module,\n message.entry,\n message.input,\n format,\n (moduleMemory, fail) =>\n createSharedLaneImports(heap, table, message.sharedOwner, moduleMemory, holds, fail),\n (text) => post({ id, kind: 'log', text })\n );\n if (started.error !== undefined) {\n post({ id, kind: 'failed', text: started.error });\n return;\n }\n const channels = format.channels;\n lanes.set(id, {\n lane: started.lane,\n maxFrames: format.maxFrames,\n // A block past its hard limit, where there is one, ends at its\n // next fuel check, or without fuel once it returns.\n hardBlocks: message.hardBlocks,\n sampleRate: format.sampleRate,\n warm: false,\n sink: (block) => add(block, channels, offset),\n });\n relist();\n post({ id, kind: 'running' });\n };\n // Starts in arrival order, up to the first whose module still compiles.\n const drain = () => {\n while (waiting.length > 0 && modules.get(waiting[0].moduleId) !== null) {\n start(waiting.shift());\n // Each start gets the page's whole start limit, and the checks it\n // took must not count under the shorter limit after it.\n Atomics.add(holds, kHoldBlocks, 1);\n }\n if (waiting.length === 0) {\n Atomics.store(holds, kHoldStarting, 0);\n }\n };\n return {\n receive(message) {\n if (message.kind === 'forget') {\n modules.delete(message.moduleId);\n return;\n }\n if (message.kind === 'stop') {\n // A stop beats the start it follows when that still waits.\n const at = waiting.findIndex((queued) => queued.id === message.id);\n if (at >= 0) {\n waiting.splice(at, 1);\n drain();\n } else {\n lanes.delete(message.id);\n relist();\n }\n return;\n }\n if (message.kind === 'end') {\n // The page gave up on this output and failed what it ran.\n lanes.clear();\n relist();\n waiting.length = 0;\n return;\n }\n const moduleId = message.moduleId;\n if (!modules.has(moduleId) && message.bytes === null) {\n // A fresh worklet lacks modules the page sent the one before.\n post({ id: message.id, kind: 'resend' });\n return;\n }\n if (!modules.has(moduleId)) {\n // Compiling on the audio thread would stall every processor.\n modules.set(moduleId, null);\n const settle = (value) => {\n if (modules.has(moduleId)) {\n modules.set(moduleId, value);\n }\n };\n WebAssembly.compile(message.bytes)\n .then(settle, (error) => settle(errorText(error)))\n .then(drain);\n }\n Atomics.store(holds, kHoldStarting, 1);\n waiting.push(message);\n drain();\n },\n\n // Hands into(block, channels, offset) each processor's interleaved\n // samples, in chunks of at most its block, offset frames in.\n render(frames, firstFrame, into) {\n if (frame < 0) {\n frame = firstFrame;\n }\n add = into;\n // A failure relists, which must not shift the rest of this pass.\n const list = order;\n for (let i = 0; i < list.length; i++) {\n const [id, entry] = list[i];\n for (offset = 0; offset < frames; offset += entry.maxFrames) {\n const chunk = Math.min(entry.maxFrames, frames - offset);\n const budget = processorBlockBudgetMs(\n entry.hardBlocks,\n chunk,\n entry.sampleRate,\n !entry.warm\n );\n const began = monotonicNow();\n let error = entry.lane.render(chunk, frame + offset, entry.sink, budget);\n if (error === null && budget > 0 && monotonicNow() - began > budget) {\n error = kProcessorOverran;\n }\n entry.warm = true;\n if (error !== null) {\n fail(id, error);\n break;\n }\n }\n }\n frame += frames;\n Atomics.add(holds, kHoldBlocks, 1);\n },\n\n // The output went away: every processor it ran ends with text.\n failAll(text) {\n for (const id of [...lanes.keys()]) {\n fail(id, text);\n }\n for (const message of waiting.splice(0)) {\n post({ id: message.id, kind: 'failed', text });\n }\n },\n };\n}\n// Script audio processors in real time on a browser's audio thread: one node\n// runs every processor the page starts and sums them into its output.\n\n\nclass RiveProcessors extends AudioWorkletProcessor {\n constructor(options) {\n super();\n const { memory, table, counter } = options.processorOptions;\n this.mixer = createProcessorMixer(\n () => memory.buffer,\n table,\n (message) => this.port.postMessage(message),\n new Int32Array(counter)\n );\n this.planes = null;\n // Interleaved in, planar out, at offset frames into the quantum.\n this.add = (block, width, offset) => {\n const planes = this.planes;\n const frames = block.length / width;\n for (let c = 0; c < planes.length; c++) {\n const plane = planes[c];\n const from = Math.min(c, width - 1);\n for (let i = 0; i < frames; i++) {\n plane[offset + i] += block[i * width + from];\n }\n }\n };\n this.port.onmessage = (event) => this.mixer.receive(event.data);\n }\n\n process(inputs, outputs) {\n this.planes = outputs[0];\n this.mixer.render(this.planes[0].length, globalThis.currentFrame ?? 0, this.add);\n return true;\n }\n}\n\nregisterProcessor(kProcessorNode, RiveProcessors);\n})();\n";
|
|
978
|
+
null},audioSampleRate:()=>sb().context.sampleRate,audioStart:function(C,I,P,S,ca,ka,ja,la){const pa=y(I,P,"processor");if(null!==pa.error)return{ok:!1,error:pa.error};P=sb();const Ja=Ba.next++;C={yc:C,qb:I,Ub:pa,start:{kind:"start",id:Ja,moduleId:I,entry:S,input:ca,format:{sampleRate:ka.sampleRate,maxFrames:ka.pb,channels:ka.channels},hardBlocks:ja,sharedOwner:la}};Ba.Z.set(Ja,C);db(P,C,!P.ga.has(I));Fb(P);return{ok:!0,id:Ja}},audioStop:function(C){Ba.Z.delete(C);null!==Ba.output&&(Ba.output.$({kind:"stop",
|
|
979
|
+
id:C}),Fb(Ba.output))},audioState:()=>({context:Ba.output?.context.state??"none",processors:Ba.Z.size})};Ia.prepare=Ia.Bc;Ia.frameBoundary=Ia.ec;Ia.countHostCalls=Ia.Wb;Ia.hostCallCounts=Ia.qc;return r.riveScripting=Ia})(G)})();G.riveAudioWorkletSource="(function () {\n// Generated by src/wasm/idl/generate.py from bindings.py and\n// lane_layout.py. Do not edit.\n//\n// What each kind of lane module may import, which the page runner\n// checks it against, and the numbers lanes and the page agree on.\n\n// The console imports every lane gets.\nconst kLaneConsole = [\n 'console.log',\n 'console.debug',\n 'console.info',\n 'console.warn',\n 'console.error',\n];\n\n// [module, name or null for all of it, kinds, refusal or null], the\n// first match deciding.\nconst kLaneImportRules = [\n ['rive_rt_v1', 'now', ['job', 'worker'], null],\n ['rive_lanes_v1', 'wait_within', [], 'blocks on a signal, which only the main lane may; a worker awaits Signal.next or Port.receive instead'],\n ['rive_shared_v1', 'region_lock', ['job', 'worker'], 'locks a shared region, which the audio thread may not wait on; share through atomics, rings and snapshots instead'],\n ['rive_shared_v1', 'read_done', [], null],\n ['rive_shared_v1', null, ['job', 'worker', 'processor'], null],\n ['rive_lane_v1', null, ['job', 'worker', 'processor'], null],\n ['rive_job_v1', null, ['job'], null],\n ['rive_worker_v1', null, ['worker'], null],\n ['env', 'console.log', ['job', 'worker', 'processor'], null],\n ['env', 'console.debug', ['job', 'worker', 'processor'], null],\n ['env', 'console.info', ['job', 'worker', 'processor'], null],\n ['env', 'console.warn', ['job', 'worker', 'processor'], null],\n ['env', 'console.error', ['job', 'worker', 'processor'], null],\n ['env', 'console.time', ['job', 'worker'], null],\n ['env', 'console.timeLog', ['job', 'worker'], null],\n ['env', 'console.timeEnd', ['job', 'worker'], null],\n];\n\n// Why a lane module of kind ('job', 'worker' or 'processor') may not\n// import module.name: null when it may, else the end of \"<kind> code ...\",\n// empty when no rule says why.\nfunction laneImportRefusal(kind, module, name) {\n for (const [ruleModule, ruleName, kinds, refusal] of kLaneImportRules) {\n if (module === ruleModule && (ruleName === null || name === ruleName)) {\n return kinds.includes(kind) ? null : refusal ?? '';\n }\n }\n return '';\n}\n\n// [section, kind] for each lane kind, in rive_lanes_v1's order.\nconst kLaneSections = [\n ['rive.jobs', 'job'],\n ['rive.workers', 'worker'],\n ['rive.audio', 'processor'],\n];\n\n// The prefix each kind's entries export under, before their number.\nconst kLaneEntryPrefixes = {\n 'job': '__rive_job_',\n 'worker': '__rive_worker_',\n 'processor': '__rive_processor_',\n};\n\n// The rive_lanes_v1 states every lane moves through.\nconst kLaneStates = {\n 'starting': 0,\n 'running': 1,\n 'done': 2,\n 'failed': 3,\n 'stopped': 4,\n};\n\n// What a processor event carries for a console line, in place of a state.\nconst kProcessorEventLog = 0xffffffff;\n\n// The most 64 KiB pages a job instance's memory may have grown to for another\n// job to reuse it, as memory never shrinks.\nconst kReuseMaxPages = 256;\n\n// How long a processor's init may run in milliseconds, natively per step and in\n// a worklet as a whole, far longer than a block as it may build tables.\nconst kProcessorInitMs = 1000;\n\n// The exports a lane module may carry besides its entries.\nconst kLaneAllocExport = '__rive_lane_alloc';\nconst kLaneFreeExport = '__rive_lane_free';\nconst kWorkerWakeExport = '__rive_worker_wake';\nconst kProcessorProcessExport = '__rive_processor_process';\nconst kFrameMinorExport = '__riveFrameMinor';\nconst kLiftedStartExport = '__riveLiftedStart';\nconst kLaneResetExport = '__riveLaneReset';\n\n// What lanes report the same way on every host.\nconst kProcessorHolds =\n 'a processor cannot pass shared objects through rings or snapshots, as the audio thread may ' +\n 'not hold or give them back; pass them in Audio.start\\'s argument';\nconst kProcessorOverran = 'processor overran its block budget';\nconst kProcessorInitOverran = 'processor init overran its budget';\nconst kProcessorNode = 'rive-processors';\n\n// A processor block's budget in milliseconds, first for its first block; 0 for none.\nfunction processorBlockBudgetMs(hardBlocks, frames, sampleRate, first) {\n return hardBlocks === 0 ? 0.0 : Math.max(first ? 100.0 : 1.0, Math.ceil(hardBlocks * 1000.0 * frames / sampleRate));\n}\n\n// Why a lane module that imports module.name cannot load.\nfunction laneImportError(module, name) {\n return 'lane module imports ' + module + '.' + name + ', which it cannot reach';\n}\n// Generated by src/wasm/idl/generate.py from shared_layout.py. Do not edit.\n//\n// The shared memory words librive and rive_shared_lane.mjs both read,\n// as byte offsets into librive's heap.\n\n// What a block holds, its first word.\nconst kKindRegion = 0;\nconst kKindRing = 1;\nconst kKindSnapshot = 2;\nconst kKindSignal = 3;\nconst kKindBlob = 4;\n\n// Every block starts with these words.\nconst kHeaderKind = 0;\nconst kHeaderLock = 4;\nconst kHeaderCapacity = 8;\n\n// A region after its header.\nconst kRegionPoisoned = 16;\nconst kRegionData = 32;\n\n// A ring after its header; signals are registry ids.\nconst kRingHead = 16;\nconst kRingUsed = 20;\nconst kRingDataSignal = 24;\nconst kRingSpaceSignal = 28;\nconst kRingData = 32;\n\n// A snapshot after its header: copies of capacity bytes each, a version per\n// copy that is odd while a publish writes it.\nconst kSnapshotLatest = 16;\nconst kSnapshotSeq = 24;\nconst kSnapshotSeqHigh = 28;\nconst kSnapshotVersions = 32;\nconst kSnapshotSizes = 40;\nconst kSnapshotData = 48;\nconst kSnapshotCopies = 2;\n\n// A ring record's length word or a snapshot copy's size. With the holds bit\n// set, the bytes end in the shared ids the value holds and then their count.\nconst kRecordHolds = 0x80000000;\n\n// A signal after its header; watchers point at wake words.\nconst kSignalWatcherCount = 16;\nconst kSignalSeq = 24;\nconst kSignalSeqHigh = 28;\nconst kSignalWatchers = 32;\n\n// A blob after its header: bytes fixed once made.\nconst kBlobData = 16;\n\n// The futex word a watcher parks on.\nconst kWakeWordWord = 0;\n\n// The registry, at SharedRegistry::table().\nconst kTableLanes = 16;\nconst kTableTokens = 144;\nconst kTableChunks = 148;\n\n// A registry slot. Its state packs the generation in the low bits, a live bit,\n// then the pins librive holds.\nconst kSlotState = 0;\nconst kSlotBlock = 4;\nconst kSlotOwner = 16;\nconst kSlotOwnerHigh = 20;\nconst kSlotSize = 24;\nconst kSlotLive = 4096;\nconst kSlotPin = 8192;\n\n// Slots come in chunks that never move once made.\nconst kChunkShift = 10;\nconst kChunkSlots = 1024;\n\n// An id: the top bit, its slot, the generation's low bits.\nconst kIdBit = 0x80000000;\nconst kIdSlotShift = 12;\nconst kIdGenerationMask = 4095;\n\n// Lanes without librive.\nconst kLaneCount = 32;\nconst kLaneIdle = 1;\nconst kLaneFirstToken = 2;\n\n// What ring_write answers.\nconst kRingWriteFull = 0;\nconst kRingWriteWritten = 1;\nconst kRingWriteNeverFits = 2;\n\n// What region_lock answers.\nconst kRegionLockGone = 0;\n\n// Words of the counter an NRDP page shares with its worklet thread, so it can\n// free what the thread held when it ends it.\nconst kHoldBlocks = 0;\nconst kHoldStarting = 1;\nconst kHoldToken = 2;\nconst kHoldLock = 3;\nconst kHoldWords = 4;\n// The rive_shared_v1 natives for a lane without librive, such as an audio\n// worklet, through Atomics on librive's heap; like librive's, none ever waits.\n\n\n// Traps as WAMR does when byteLength bytes at ptr leave a module's memory.\nfunction checkBounds(buffer, ptr, byteLength) {\n if (ptr + byteLength > buffer.byteLength) {\n throw new Error('out of bounds memory access');\n }\n}\n\n// The byte length of the std string at ptr, which the word before it holds.\n// Null reads as empty. Addresses and lengths arrive from wasm as signed i32s.\nfunction managedLength(buffer, ptr) {\n ptr >>>= 0;\n if (ptr < 4) {\n return 0;\n }\n checkBounds(buffer, ptr, 0);\n const length = new DataView(buffer).getUint32(ptr - 4, true);\n checkBounds(buffer, ptr, length);\n return length;\n}\n\n// UTF-16 text in a module's memory. Audio worklet scopes may have no\n// TextDecoder.\nfunction utf16Text(buffer, ptr, byteLength) {\n ptr >>>= 0;\n byteLength >>>= 0;\n checkBounds(buffer, ptr, byteLength);\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder('utf-16le', { ignoreBOM: true }).decode(\n new Uint8Array(buffer, ptr, byteLength)\n );\n }\n // A Uint16Array cannot start at an odd address, so text there is copied.\n const units =\n ptr % 2 === 0\n ? new Uint16Array(buffer, ptr, byteLength >> 1)\n : new Uint16Array(buffer.slice(ptr, ptr + byteLength - (byteLength % 2)));\n let text = '';\n for (let i = 0; i < units.length; i += 4096) {\n text += String.fromCharCode.apply(null, units.subarray(i, i + 4096));\n }\n return text;\n}\n\n// Each thread's lane word and lock token, per table. Past the table's lane\n// words a lane pins through the slot's count, which no page can free.\nconst laneClaims = new Map();\nconst kOverflowToken = kLaneFirstToken + kLaneCount;\n\nfunction claimLane(i32, table) {\n let claim = laneClaims.get(table);\n if (claim === undefined) {\n for (let i = 0; i < kLaneCount && claim === undefined; i++) {\n const word = (table + kTableLanes + i * 4) >>> 2;\n if (Atomics.compareExchange(i32, word, 0, kLaneIdle) === 0) {\n claim = { word, token: kLaneFirstToken + i };\n }\n }\n // Still a token of its own, so its locks tell from librive's and\n // other lanes'.\n claim ??= {\n word: -1,\n token: kOverflowToken + Atomics.add(i32, (table + kTableTokens) >>> 2, 1),\n };\n laneClaims.set(table, claim);\n }\n return claim;\n}\n\n// The id names the slot's live object.\nconst slotNames = (state, id) =>\n (state & kSlotLive) !== 0 && ((state ^ id) & kIdGenerationMask) === 0;\n\n// heap() answers librive's heap buffer, table is SharedRegistry::table() and\n// owner the VM whose objects the lane reaches; the lane records its token and\n// lock in holds, for a page to free them.\nfunction createSharedLaneImports(heap, table, owner, moduleMemory, holds = null, fail = () => {}) {\n table >>>= 0;\n const ownerLow = owner % 0x100000000;\n const ownerHigh = Math.floor(owner / 0x100000000);\n // Views over the heap and the lane's memory, rebuilt only when growth\n // replaces a buffer, so no call allocates on the audio thread.\n let buffer = null;\n let u8 = null;\n let i32 = null;\n let u32 = null;\n let moduleBuffer = null;\n let moduleU8 = null;\n const views = () => {\n const current = heap();\n if (current !== buffer) {\n buffer = current;\n u8 = new Uint8Array(buffer);\n i32 = new Int32Array(buffer);\n u32 = new Uint32Array(buffer);\n }\n };\n views();\n const claim = claimLane(i32, table);\n if (holds !== null) {\n Atomics.store(holds, kHoldToken, claim.token);\n }\n // The lane's bytes when [ptr, ptr + length) lies in its memory, checked\n // before any lock is taken; null otherwise, as WAMR would trap.\n const moduleRange = (ptr, length) => {\n const current = moduleMemory().buffer;\n if (current !== moduleBuffer) {\n moduleBuffer = current;\n moduleU8 = new Uint8Array(current);\n }\n return ptr + length <= moduleU8.length ? moduleU8 : null;\n };\n const copy = (to, toAt, from, fromAt, size) => {\n for (let i = 0; i < size; i++) {\n to[toAt + i] = from[fromAt + i];\n }\n };\n // Recorded before the swap, so whichever way an ended thread stopped,\n // the word holds this token only if the lane took it.\n const lock = (address) => {\n if (holds !== null) {\n Atomics.store(holds, kHoldLock, address);\n }\n while (Atomics.compareExchange(i32, address >>> 2, 0, claim.token) !== 0) {}\n };\n const unlock = (address) => {\n Atomics.store(i32, address >>> 2, 0);\n if (holds !== null) {\n Atomics.store(holds, kHoldLock, 0);\n }\n };\n\n // The block an id names, pinned so librive cannot free it until unpin;\n // 0 when the id is stale, another VM's or of another kind. A lane pins\n // one at a time.\n let pinned = 0;\n const pin = (id, kind) => {\n views();\n id >>>= 0;\n if ((id & kIdBit) === 0) {\n return 0;\n }\n const index = (id & ~kIdBit) >>> kIdSlotShift;\n const chunk = Atomics.load(u32, (table + kTableChunks + (index >>> kChunkShift) * 4) >>> 2);\n if (chunk === 0) {\n return 0;\n }\n const slot = chunk + (index & (kChunkSlots - 1)) * kSlotSize;\n const stateAt = (slot + kSlotState) >>> 2;\n if (claim.word >= 0) {\n // Stored before the state is checked, as librive retires a slot\n // before scanning the lane words: one of the two sees the other.\n Atomics.store(u32, claim.word, slot);\n if (!slotNames(Atomics.load(u32, stateAt), id)) {\n Atomics.store(u32, claim.word, kLaneIdle);\n return 0;\n }\n } else {\n for (;;) {\n const state = Atomics.load(u32, stateAt);\n if (!slotNames(state, id)) {\n return 0;\n }\n if (Atomics.compareExchange(u32, stateAt, state, state + kSlotPin) === state) {\n break;\n }\n }\n }\n pinned = slot;\n const block = Atomics.load(u32, (slot + kSlotBlock) >>> 2);\n if (\n u32[(block + kHeaderKind) >>> 2] !== kind ||\n u32[(slot + kSlotOwner) >>> 2] !== ownerLow ||\n u32[(slot + kSlotOwnerHigh) >>> 2] !== ownerHigh\n ) {\n unpin();\n return 0;\n }\n return block;\n };\n const unpin = () => {\n if (claim.word >= 0) {\n Atomics.store(u32, claim.word, kLaneIdle);\n } else {\n Atomics.sub(u32, (pinned + kSlotState) >>> 2, kSlotPin);\n }\n };\n const capacityOf = (block) => u32[(block + kHeaderCapacity) >>> 2];\n // A sequence is a low and a high word, as a 64 bit atomic allocates here.\n const bumpSeq = (low, high) => {\n if (Atomics.add(u32, low >>> 2, 1) === 0xffffffff) {\n Atomics.add(u32, high >>> 2, 1);\n }\n };\n // High first, so a read during a carry answers less, never more.\n const readSeq = (low, high) => {\n const top = Atomics.load(u32, high >>> 2);\n return top * 0x100000000 + Atomics.load(u32, low >>> 2);\n };\n\n const notify = (signal) => {\n const block = pin(signal, kKindSignal);\n if (block === 0) {\n return;\n }\n bumpSeq(block + kSignalSeq, block + kSignalSeqHigh);\n lock(block + kHeaderLock);\n try {\n const count = u32[(block + kSignalWatcherCount) >>> 2];\n const watchers = u32[(block + kSignalWatchers) >>> 2] >>> 2;\n for (let i = 0; i < count; i++) {\n // A watcher's wake word: a futex word librive's threads wait on.\n const word = (u32[watchers + i] + kWakeWordWord) >>> 2;\n Atomics.add(i32, word, 1);\n Atomics.notify(i32, word);\n }\n } finally {\n unlock(block + kHeaderLock);\n unpin();\n }\n };\n\n // Ring bytes wrap around the block's data.\n const ringCopyIn = (block, at, from, fromAt, size) => {\n const capacity = capacityOf(block);\n const first = Math.min(size, capacity - at);\n copy(u8, block + kRingData + at, from, fromAt, first);\n copy(u8, block + kRingData, from, fromAt + first, size - first);\n };\n const ringCopyOut = (block, at, to, toAt, size) => {\n const capacity = capacityOf(block);\n at %= capacity;\n const first = Math.min(size, capacity - at);\n copy(to, toAt, u8, block + kRingData + at, first);\n copy(to, toAt + first, u8, block + kRingData, size - first);\n };\n // A record's length, four bytes little endian.\n const sizeBytes = new Uint8Array(4);\n const sizeWord = new Uint32Array(sizeBytes.buffer);\n const refuseHolds = () => {\n fail(kProcessorHolds);\n return 0;\n };\n // Pops the head record into to at out if it fits capacity, or with to null drops it if it\n // does not, and notifies space. Answers its size plus one, 0 when empty or a drop keeps it.\n const pop = (ring, to, out, capacity) => {\n const block = pin(ring, kKindRing);\n if (block === 0) {\n return 0;\n }\n let signal = 0;\n let size = 0;\n lock(block + kHeaderLock);\n try {\n const used = u32[(block + kRingUsed) >>> 2];\n if (used === 0) {\n return 0;\n }\n const head = u32[(block + kRingHead) >>> 2];\n ringCopyOut(block, head, sizeBytes, 0, 4);\n size = sizeWord[0];\n if ((size & kRecordHolds) !== 0) {\n return refuseHolds();\n }\n if (to === null) {\n if (size <= capacity) {\n return 0;\n }\n } else if (out === 0 || size > capacity) {\n return size + 1;\n } else {\n ringCopyOut(block, head + 4, to, out, size);\n }\n u32[(block + kRingHead) >>> 2] = (head + 4 + size) % capacityOf(block);\n u32[(block + kRingUsed) >>> 2] = used - 4 - size;\n signal = u32[(block + kRingSpaceSignal) >>> 2];\n } finally {\n unlock(block + kHeaderLock);\n unpin();\n }\n notify(signal);\n return size + 1;\n };\n\n // A region word's index, or -1 outside the region.\n const word = (block, offset) => {\n offset >>>= 0;\n if ((offset & 3) !== 0 || offset + 4 > capacityOf(block)) {\n return -1;\n }\n return (block + kRegionData + offset) >>> 2;\n };\n // -1 outside the region or once it is gone, which the std throws for.\n const atomic = (region, offset, use) => {\n const block = pin(region, kKindRegion);\n if (block === 0) {\n return -1;\n }\n try {\n const at = word(block, offset);\n return at < 0 ? -1 : use(at) >>> 0;\n } finally {\n unpin();\n }\n };\n\n return {\n 'region_create': () => 0,\n 'region_size': (region) => {\n const block = pin(region, kKindRegion);\n if (block === 0) {\n return 0;\n }\n const size = capacityOf(block);\n unpin();\n return size;\n },\n 'region_lock': () => kRegionLockGone,\n 'region_unlock': () => {},\n 'region_read': () => 0,\n 'region_write': () => 0,\n 'region_poisoned': (region) => {\n const block = pin(region, kKindRegion);\n if (block === 0) {\n return 0;\n }\n const poisoned = u32[(block + kRegionPoisoned) >>> 2] !== 0 ? 1 : 0;\n unpin();\n return poisoned;\n },\n 'atomic_load': (region, offset) => atomic(region, offset, (at) => Atomics.load(i32, at)),\n 'atomic_store': (region, offset, value) =>\n atomic(region, offset, (at) => {\n Atomics.store(i32, at, value | 0);\n return 0;\n }),\n 'atomic_add': (region, offset, value) =>\n atomic(region, offset, (at) => Atomics.add(i32, at, value | 0)),\n 'atomic_cas': (region, offset, expected, desired) =>\n atomic(region, offset, (at) =>\n Atomics.compareExchange(i32, at, expected | 0, desired | 0)\n ),\n 'ring_create': () => 0,\n 'ring_write': (ring, data, dataByteCount, holds, holdCount) => {\n data >>>= 0;\n dataByteCount >>>= 0;\n const from = moduleRange(data, dataByteCount);\n const block = from !== null ? pin(ring, kKindRing) : 0;\n if (block === 0) {\n return kRingWriteFull;\n }\n if (holdCount !== 0) {\n unpin();\n return refuseHolds();\n }\n let signal = 0;\n lock(block + kHeaderLock);\n try {\n const capacity = capacityOf(block);\n if (4 + dataByteCount > capacity) {\n return kRingWriteNeverFits;\n }\n const used = u32[(block + kRingUsed) >>> 2];\n if (used + 4 + dataByteCount > capacity) {\n return kRingWriteFull;\n }\n const head = u32[(block + kRingHead) >>> 2];\n sizeWord[0] = dataByteCount;\n ringCopyIn(block, (head + used) % capacity, sizeBytes, 0, 4);\n ringCopyIn(block, (head + used + 4) % capacity, from, data, dataByteCount);\n u32[(block + kRingUsed) >>> 2] = used + 4 + dataByteCount;\n signal = u32[(block + kRingDataSignal) >>> 2];\n } finally {\n unlock(block + kHeaderLock);\n unpin();\n }\n notify(signal);\n return kRingWriteWritten;\n },\n 'ring_read': (ring, out, outByteCount) => {\n out >>>= 0;\n outByteCount >>>= 0;\n const to = moduleRange(out, outByteCount);\n return to !== null ? pop(ring, to, out, outByteCount) : 0;\n },\n 'ring_drop': (ring, capacity) => pop(ring, null, 0, capacity >>> 0),\n 'ring_used': (ring) => {\n const block = pin(ring, kKindRing);\n if (block === 0) {\n return 0;\n }\n lock(block + kHeaderLock);\n const used = u32[(block + kRingUsed) >>> 2];\n unlock(block + kHeaderLock);\n unpin();\n return used;\n },\n 'ring_signal': (ring, space) => {\n const block = pin(ring, kKindRing);\n if (block === 0) {\n return 0;\n }\n const signal = u32[(block + (space !== 0 ? kRingSpaceSignal : kRingDataSignal)) >>> 2];\n unpin();\n return signal;\n },\n 'snapshot_create': () => 0,\n // As SharedSnapshot::publish: publishers take turns writing the copy\n // readers are not on.\n 'snapshot_publish': (snapshot, data, dataByteCount, holds, holdCount) => {\n data >>>= 0;\n dataByteCount >>>= 0;\n const from = moduleRange(data, dataByteCount);\n const block = from !== null ? pin(snapshot, kKindSnapshot) : 0;\n if (block === 0) {\n return 0;\n }\n try {\n const capacity = capacityOf(block);\n if (holdCount !== 0) {\n return refuseHolds();\n }\n if (dataByteCount > capacity) {\n return 0;\n }\n lock(block + kHeaderLock);\n try {\n const latestAt = (block + kSnapshotLatest) >>> 2;\n const latest = Atomics.load(u32, latestAt);\n const sizesAt = (block + kSnapshotSizes) >>> 2;\n const replaced = latest !== 0 ? Atomics.load(u32, sizesAt + latest - 1) : 0;\n // Nothing here could give back the replaced value's holds.\n if ((replaced & kRecordHolds) !== 0) {\n return refuseHolds();\n }\n const index = latest % kSnapshotCopies;\n const versionAt = ((block + kSnapshotVersions) >>> 2) + index;\n const version = Atomics.load(u32, versionAt) | 1;\n Atomics.store(u32, versionAt, version);\n // A load after the store keeps the bytes from landing\n // before the odd version, as JS has no fence.\n Atomics.load(u32, versionAt);\n copy(u8, block + kSnapshotData + index * capacity, from, data, dataByteCount);\n Atomics.store(u32, sizesAt + index, dataByteCount);\n Atomics.store(u32, versionAt, version + 1);\n Atomics.store(u32, latestAt, index + 1);\n bumpSeq(block + kSnapshotSeq, block + kSnapshotSeqHigh);\n } finally {\n unlock(block + kHeaderLock);\n }\n return 1;\n } finally {\n unpin();\n }\n },\n // As SharedSnapshot::read, without the lock.\n 'snapshot_read': (snapshot, out, outByteCount) => {\n out >>>= 0;\n outByteCount >>>= 0;\n const to = moduleRange(out, outByteCount);\n const block = to !== null ? pin(snapshot, kKindSnapshot) : 0;\n if (block === 0) {\n return 0;\n }\n try {\n for (;;) {\n const latest = Atomics.load(u32, (block + kSnapshotLatest) >>> 2);\n if (latest === 0) {\n return 0;\n }\n const index = latest - 1;\n const versionAt = ((block + kSnapshotVersions) >>> 2) + index;\n const version = Atomics.load(u32, versionAt);\n if ((version & 1) !== 0) {\n continue;\n }\n const word = Atomics.load(u32, ((block + kSnapshotSizes) >>> 2) + index);\n const capacity = capacityOf(block);\n const at = block + kSnapshotData + index * capacity;\n const refused = (word & kRecordHolds) !== 0;\n // A torn read answers what the version check discards.\n const size = Math.min(word, capacity);\n if (!refused && out !== 0 && size <= outByteCount) {\n copy(to, out, u8, at, size);\n }\n // An exchange rather than a load keeps the copy from\n // reading past the check.\n if (Atomics.compareExchange(u32, versionAt, version, version) === version) {\n return refused ? refuseHolds() : size + 1;\n }\n }\n } finally {\n unpin();\n }\n },\n 'snapshot_seq': (snapshot) => {\n const block = pin(snapshot, kKindSnapshot);\n if (block === 0) {\n return 0;\n }\n const seq = readSeq(block + kSnapshotSeq, block + kSnapshotSeqHigh);\n unpin();\n return seq;\n },\n 'signal_create': () => 0,\n 'signal_notify': (signal) => notify(signal),\n 'signal_seq': (signal) => {\n const block = pin(signal, kKindSignal);\n if (block === 0) {\n return 0;\n }\n const seq = readSeq(block + kSignalSeq, block + kSignalSeqHigh);\n unpin();\n return seq;\n },\n 'blob_create': () => 0,\n 'blob_size': (blob) => {\n const block = pin(blob, kKindBlob);\n if (block === 0) {\n return 0;\n }\n const size = capacityOf(block);\n unpin();\n return size;\n },\n // A blob never changes, so the copy takes no lock.\n 'blob_read': (blob, offset, out, outByteCount) => {\n offset >>>= 0;\n out >>>= 0;\n outByteCount >>>= 0;\n const to = moduleRange(out, outByteCount);\n const block = to !== null ? pin(blob, kKindBlob) : 0;\n if (block === 0) {\n return 0;\n }\n const size = capacityOf(block);\n const count = offset < size ? Math.min(outByteCount, size - offset) : 0;\n copy(to, out, u8, block + kBlobData + offset, count);\n unpin();\n return count;\n },\n 'retain': () => 0,\n 'release': () => {},\n };\n}\n\n// Frees the lock word and lane word a lane left held, for a page that ended\n// its thread, once that thread is surely gone.\nfunction releaseSharedLane(heap, table, holds) {\n const token = Atomics.load(holds, kHoldToken);\n if (token < kLaneFirstToken) {\n return;\n }\n const i32 = new Int32Array(heap());\n const lockAt = Atomics.load(holds, kHoldLock);\n if (lockAt !== 0) {\n Atomics.compareExchange(i32, lockAt >>> 2, token, 0);\n }\n // Last: the slot it pinned keeps the locked block alive until here.\n if (token < kOverflowToken) {\n Atomics.store(i32, (((table >>> 0) + kTableLanes) >>> 2) + token - kLaneFirstToken, 0);\n }\n}\n// Instances of the lane modules a script module carries, started the same way\n// by the page runner and, through createProcessorMixer, by the audio worklets.\n\n\nfunction errorText(error) {\n return String(error?.message ?? error);\n}\n\n// Chrome's worklet scope has no performance; Date's milliseconds still catch a\n// block of several.\nconst monotonicNow =\n globalThis.performance !== undefined ? () => globalThis.performance.now() : Date.now;\n\n// The console imports: each line is a std string, its byte length before it.\n// Only jobs and workers import the timers.\nfunction laneConsole(memory, log, timers = new Map()) {\n const text = (ptr) => {\n const buffer = memory().buffer;\n return utf16Text(buffer, ptr, managedLength(buffer, ptr));\n };\n const env = {};\n for (const name of kLaneConsole) {\n env[name] = (ptr) => log(text(ptr));\n }\n const report = (end) => (ptr) => {\n const label = text(ptr);\n const started = timers.get(label);\n if (started === undefined) {\n log(`Timer '${label}' does not exist`);\n return;\n }\n if (end) {\n timers.delete(label);\n }\n log(`${label}: ${(monotonicNow() - started).toFixed(3)}ms`);\n };\n env['console.time'] = (ptr) => timers.set(text(ptr), monotonicNow());\n env['console.timeLog'] = report(false);\n env['console.timeEnd'] = report(true);\n return env;\n}\n\nconst noFuelCheck = () => {};\n\n// An instance of lane.module whose imports reach the lane's own natives, log,\n// timers, clock and fuel check. Returns { exports, memory, failure } or\n// { error }.\nfunction instantiateLane(lane) {\n let memory = null;\n let thrown = null;\n const failure = (error) => thrown ?? errorText(error);\n const imports = {\n 'env': laneConsole(() => memory, lane.log, lane.timers),\n 'rive_shared_v1': lane.shared(() => memory),\n // A worker's clock counts from its own start, so it times durations.\n 'rive_rt_v1': { 'now': monotonicNow },\n 'rive_lane_v1': {\n 'error': (ptr, byteLength) => {\n thrown = utf16Text(memory.buffer, ptr, byteLength);\n lane.onThrow?.(thrown);\n },\n 'fuel_check': lane.fuel ?? noFuelCheck,\n },\n };\n if (lane.natives !== undefined) {\n imports[lane.natives] = lane.own(() => memory);\n }\n try {\n const exports = new WebAssembly.Instance(lane.module, imports).exports;\n memory = exports['memory'];\n return { exports, memory, failure };\n } catch (error) {\n return { error: failure(error) };\n }\n}\n\n// Runs the instance's start, or its reset when a job ran in it before, then\n// prefix + entry with a copy of input and args, freeing the copy after when\n// lane.free. Returns { result } or { error }.\nfunction enterLane(instance, lane, reset = false) {\n try {\n const exports = instance.exports;\n exports[reset ? kLaneResetExport : kLiftedStartExport]?.();\n const input = lane.input;\n const at = exports[kLaneAllocExport](input.length) >>> 0;\n new Uint8Array(instance.memory.buffer, at, input.length).set(input);\n const result = exports[lane.prefix + lane.entry](\n at,\n input.length,\n ...(lane.args ?? [])\n );\n if (lane.free) {\n exports[kLaneFreeExport](at);\n }\n return { result };\n } catch (error) {\n return { error: instance.failure(error) };\n }\n}\n\n// A new instance, entered. Returns { exports, memory, result, failure } or\n// { error }.\nfunction startLane(lane) {\n const instance = instantiateLane(lane);\n const entered = instance.error === undefined ? enterLane(instance, lane) : instance;\n return entered.error === undefined ? { ...instance, result: entered.result } : entered;\n}\n\n// One script audio processor, whose init may take kProcessorInitMs. Returns\n// { lane } or { error }; shared(memory, fail) answers its shared imports.\nfunction startProcessorLane(module, entry, input, format, shared, log) {\n // As natively, a native that fails the processor lets the block finish.\n let failed = null;\n const fail = (text) => {\n failed ??= text;\n };\n // When its fuel checks end it and why, made once so a block allocates\n // nothing on the audio thread.\n const bounds = { until: monotonicNow() + kProcessorInitMs, reason: kProcessorInitOverran };\n const started = startLane({\n module,\n shared: (memory) => shared(memory, fail),\n log,\n fuel: () => {\n if (monotonicNow() > bounds.until) {\n throw bounds.reason;\n }\n },\n prefix: kLaneEntryPrefixes['processor'],\n entry,\n input,\n args: [format.sampleRate, format.maxFrames, format.channels],\n free: true,\n });\n if (started.error !== undefined || failed !== null) {\n return { error: started.error ?? failed };\n }\n bounds.until = Infinity;\n bounds.reason = kProcessorOverran;\n const exports = started.exports;\n const memory = started.memory;\n // Rebuilt only when the block moves or memory grows, so a block\n // allocates nothing on the audio thread.\n let view = null;\n return {\n lane: {\n // Ends the block past budget ms, if any; sink gets its samples\n // before a collection can move them. Null, or why it failed.\n render(frames, startFrame, sink, budget = 0) {\n if (budget > 0) {\n bounds.until = monotonicNow() + budget;\n }\n try {\n const at = exports[kProcessorProcessExport](frames, startFrame) >>> 0;\n if (failed !== null) {\n return failed;\n }\n const length = frames * format.channels;\n if (\n view === null ||\n view.buffer !== memory.buffer ||\n view.byteOffset !== at ||\n view.length !== length\n ) {\n view = new Float32Array(memory.buffer, at, length);\n }\n sink(view);\n exports[kFrameMinorExport]?.();\n return null;\n } catch (error) {\n return started.failure(error);\n } finally {\n bounds.until = Infinity;\n }\n },\n },\n };\n}\n\n// Every processor a real time output runs, as the page's messages say, with\n// answers through post. It counts blocks and starts in holds, the Hold words.\nfunction createProcessorMixer(heap, table, post, holds) {\n const lanes = new Map();\n // What render walks, rebuilt only when lanes change, so a block does not\n // allocate an iterator.\n let order = [];\n const relist = () => {\n order = [...lanes.entries()];\n };\n // Null while compiling, then the module or the compile's error text,\n // until the page forgets it.\n const modules = new Map();\n // Starts not yet run, behind one whose module still compiles.\n const waiting = [];\n // The output's add and where in its block a chunk goes, set as render\n // walks, so sinks allocate nothing.\n let add = null;\n let offset = 0;\n let frame = -1;\n const fail = (id, text) => {\n lanes.delete(id);\n relist();\n post({ id, kind: 'failed', text });\n };\n const start = (message) => {\n const id = message.id;\n const module = modules.get(message.moduleId);\n if (typeof module === 'string') {\n post({ id, kind: 'failed', text: module });\n return;\n }\n const format = message.format;\n const started = startProcessorLane(\n module,\n message.entry,\n message.input,\n format,\n (moduleMemory, fail) =>\n createSharedLaneImports(heap, table, message.sharedOwner, moduleMemory, holds, fail),\n (text) => post({ id, kind: 'log', text })\n );\n if (started.error !== undefined) {\n post({ id, kind: 'failed', text: started.error });\n return;\n }\n const channels = format.channels;\n lanes.set(id, {\n lane: started.lane,\n maxFrames: format.maxFrames,\n // A block past its hard limit, where there is one, ends at its\n // next fuel check, or without fuel once it returns.\n hardBlocks: message.hardBlocks,\n sampleRate: format.sampleRate,\n warm: false,\n sink: (block) => add(block, channels, offset),\n });\n relist();\n post({ id, kind: 'running' });\n };\n // Starts in arrival order, up to the first whose module still compiles.\n const drain = () => {\n while (waiting.length > 0 && modules.get(waiting[0].moduleId) !== null) {\n start(waiting.shift());\n // Each start gets the page's whole start limit, and the checks it\n // took must not count under the shorter limit after it.\n Atomics.add(holds, kHoldBlocks, 1);\n }\n if (waiting.length === 0) {\n Atomics.store(holds, kHoldStarting, 0);\n }\n };\n return {\n receive(message) {\n if (message.kind === 'forget') {\n modules.delete(message.moduleId);\n return;\n }\n if (message.kind === 'stop') {\n // A stop beats the start it follows when that still waits.\n const at = waiting.findIndex((queued) => queued.id === message.id);\n if (at >= 0) {\n waiting.splice(at, 1);\n drain();\n } else {\n lanes.delete(message.id);\n relist();\n }\n return;\n }\n if (message.kind === 'end') {\n // The page gave up on this output and failed what it ran.\n lanes.clear();\n relist();\n waiting.length = 0;\n return;\n }\n const moduleId = message.moduleId;\n if (!modules.has(moduleId) && message.bytes === null) {\n // A fresh worklet lacks modules the page sent the one before.\n post({ id: message.id, kind: 'resend' });\n return;\n }\n if (!modules.has(moduleId)) {\n // Compiling on the audio thread would stall every processor.\n modules.set(moduleId, null);\n const settle = (value) => {\n if (modules.has(moduleId)) {\n modules.set(moduleId, value);\n }\n };\n WebAssembly.compile(message.bytes)\n .then(settle, (error) => settle(errorText(error)))\n .then(drain);\n }\n Atomics.store(holds, kHoldStarting, 1);\n waiting.push(message);\n drain();\n },\n\n // Hands into(block, channels, offset) each processor's interleaved\n // samples, in chunks of at most its block, offset frames in.\n render(frames, firstFrame, into) {\n if (frame < 0) {\n frame = firstFrame;\n }\n add = into;\n // A failure relists, which must not shift the rest of this pass.\n const list = order;\n for (let i = 0; i < list.length; i++) {\n const [id, entry] = list[i];\n for (offset = 0; offset < frames; offset += entry.maxFrames) {\n const chunk = Math.min(entry.maxFrames, frames - offset);\n const budget = processorBlockBudgetMs(\n entry.hardBlocks,\n chunk,\n entry.sampleRate,\n !entry.warm\n );\n const began = monotonicNow();\n let error = entry.lane.render(chunk, frame + offset, entry.sink, budget);\n if (error === null && budget > 0 && monotonicNow() - began > budget) {\n error = kProcessorOverran;\n }\n entry.warm = true;\n if (error !== null) {\n fail(id, error);\n break;\n }\n }\n }\n frame += frames;\n Atomics.add(holds, kHoldBlocks, 1);\n },\n\n // The output went away: every processor it ran ends with text.\n failAll(text) {\n for (const id of [...lanes.keys()]) {\n fail(id, text);\n }\n for (const message of waiting.splice(0)) {\n post({ id: message.id, kind: 'failed', text });\n }\n },\n };\n}\n// Script audio processors in real time on a browser's audio thread: one node\n// runs every processor the page starts and sums them into its output.\n\n\nclass RiveProcessors extends AudioWorkletProcessor {\n constructor(options) {\n super();\n const { memory, table, counter } = options.processorOptions;\n this.mixer = createProcessorMixer(\n () => memory.buffer,\n table,\n (message) => this.port.postMessage(message),\n new Int32Array(counter)\n );\n this.planes = null;\n // Interleaved in, planar out, at offset frames into the quantum.\n this.add = (block, width, offset) => {\n const planes = this.planes;\n const frames = block.length / width;\n for (let c = 0; c < planes.length; c++) {\n const plane = planes[c];\n const from = Math.min(c, width - 1);\n for (let i = 0; i < frames; i++) {\n plane[offset + i] += block[i * width + from];\n }\n }\n };\n this.port.onmessage = (event) => this.mixer.receive(event.data);\n }\n\n process(inputs, outputs) {\n this.planes = outputs[0];\n this.mixer.render(this.planes[0].length, globalThis.currentFrame ?? 0, this.add);\n return true;\n }\n}\n\nregisterProcessor(kProcessorNode, RiveProcessors);\n})();\n";
|
|
980
980
|
const Ma=G.onRuntimeInitialized;
|
|
981
|
-
G.onRuntimeInitialized=function(){function c(X){this.G=X;this.Ib=X.getContext("2d");this.hb=n;this.P=[];this.ia=0;this.clear=function(){console.assert(0==this.ia);this.P=[];x.delete(this)};this.save=function(){++this.ia;this.P.push(n.save.bind(n))};this.restore=function(){0<this.ia&&(this.P.push(n.restore.bind(n)),--this.ia)};this.transform=function(
|
|
982
|
-
this.ia);x.add(this);n.gb||l()};this.bindContext=function(){const
|
|
983
|
-
|
|
984
|
-
ta.ba=Math.min(ta.G.height,X),ta.Ka=ta.ba*ta.ca,
|
|
985
|
-
Ya);break}ya.sa=va&65535;ya.ta=va>>16}ya=J.push(fa.drawWidth());va=O.push(fa.drawHeight());console.assert(ya>=fa.drawWidth());console.assert(va>=fa.drawHeight());console.assert(ya<=X);console.assert(va<=X);n.G.width!=ya&&(n.G.width=ya);n.G.height!=va&&(n.G.height=va);n.clear();for(ya=Ya;ya<ta;++ya){va=
|
|
986
|
-
va.P=[]}for(n.flush();Ya<ta;++Ya)ya=
|
|
987
|
-
n.R.getParameter(n.R.MAX_TEXTURE_SIZE));n.La=!n.gb;if(
|
|
988
|
-
function(){this.Mb=!0;D.call(this)};const F=G.Artboard.prototype.draw;G.Artboard.prototype.draw=function(X){X.P?X.P.push(()=>{this.Mb||F.call(this,X.hb)}):F.call(this,X)};const J=new Ea,O=new Ea,Q=new Aa;G.requestAnimationFrame=Q.requestAnimationFrame.bind(Q);G.cancelAnimationFrame=Q.cancelAnimationFrame.bind(Q);G.enableFPSCounter=Q.$b.bind(Q);const V=Ha(l);Q.rb=V;G.resolveAnimationFrame=V;let W=G.load;G.load=function(X,
|
|
989
|
-
ia&&(
|
|
990
|
-
X,
|
|
991
|
-
if(
|
|
992
|
-
" : "+e.url);}}var $a=console.log.bind(console),ab=console.error.bind(console),bb,cb,
|
|
993
|
-
if(ua){var qb=!1;self.onunhandledrejection=e=>{throw e.reason||e;};function c(e){try{var l=e.data,n=l.T;if("load"===n){let x=[];self.onmessage=B=>x.push(B);pb=()=>{postMessage({T:"loaded"});for(let B of x)c(B);self.onmessage=c};for(const B of l.nc)if(!G[B]||G[B].proxy)G[B]=(...D)=>{postMessage({T:"callHandler",mc:B,Pa:D})},"print"==B&&($a=G[B]),"printErr"==B&&(ab=G[B]);
|
|
994
|
-
x)throw x;}}else"setimmediate"!==l.target&&("checkMailbox"===n?qb&&Cb():n&&(ab(`worker: received unknown command ${n}`),ab(l)))}catch(x){throw Db(),x;}}self.onmessage=c}var
|
|
995
|
-
function Ob(){Nb=!0;ua?pb():Pb.__wasm_call_ctors()}function Qb(c){G.onAbort?.(c);c="Aborted("+c+")";ab(c);
|
|
981
|
+
G.onRuntimeInitialized=function(){function c(X){this.G=X;this.Ib=X.getContext("2d");this.hb=n;this.P=[];this.ia=0;this.clear=function(){console.assert(0==this.ia);this.P=[];x.delete(this)};this.save=function(){++this.ia;this.P.push(n.save.bind(n))};this.restore=function(){0<this.ia&&(this.P.push(n.restore.bind(n)),--this.ia)};this.transform=function(ba){this.P.push(n.transform.bind(n,ba))};this.align=function(ba,ia,fa,ma,xa=1){this.P.push(n.align.bind(n,ba,ia,fa,ma,xa))};this.flush=function(){console.assert(0==
|
|
982
|
+
this.ia);x.add(this);n.gb||l()};this.bindContext=function(){const ba=this.hb;ba&&ba.V&&Na(ba.V)};this["delete"]=function(){}}function e(X,ba=!1,ia=!1){var fa={alpha:!0,depth:ba||ia,stencil:ba||ia,antialias:ba&&!ia,premultipliedAlpha:!0,preserveDrawingBuffer:0,powerPreference:"high-performance",failIfMajorPerformanceCaveat:0,enableExtensionsByDefault:!1,explicitSwapControl:0,renderViaOffscreenBackBuffer:0};ba=X.getContext("webgl2",fa);if(!ba)return null;fa=Oa(ba,fa);Na(fa);const ma=B(X.width,X.height);
|
|
983
|
+
ma.V=fa;ma.G=X;ma.Na=X.width;ma.Ma=X.height;ma.R=ba;ma.Pb=function(){this.V&&Na(this.V)};var xa=ma.delete;ma.delete=function(){this.Pb();xa.call(this);var ta=this.V;Pa===Ra[ta]&&(Pa=null);"object"==typeof JSEvents&&JSEvents.Ej(Ra[ta].F.canvas);Ra[ta]?.F.canvas&&(Ra[ta].F.canvas.Gb=void 0);Sa(Ra[ta].handle);this.V=this.G=this.Na=this.Ma=this.R=Ra[ta]=null};ia&&ma.setInkbleed(!0);return ma}function l(){if(n){var X=n.Kb,ba=0,ia=0,fa=0,ma=Array(x.size),xa=0;for(var ta of x)ta.ca=Math.min(ta.G.width,X),
|
|
984
|
+
ta.ba=Math.min(ta.G.height,X),ta.Ka=ta.ba*ta.ca,ba=Math.max(ba,ta.ca),ia=Math.max(ia,ta.ba),fa+=ta.Ka,ma[xa++]=ta;x.clear();if(!(0>=fa)){ba=1<<(0>=ba?0:32-Math.clz32(ba-1));for(ia=1<<(0>=ia?0:32-Math.clz32(ia-1));ia*ba<fa;)ba<=ia?ba*=2:ia*=2;ba=Math.min(ba,X);ia=Math.min(ia,X);ma.sort((tb,Hb)=>Hb.Ka-tb.Ka);n.ib||(n.ib=new G.DynamicRectanizer(X),n.Hb=new G.Mat2D);fa=n.ib;xa=n.Hb;for(var Ya=0;Ya<ma.length;){fa.reset(ba,ia);for(ta=Ya;ta<ma.length;++ta){var ya=ma[ta],va=fa.addRect(ya.ca,ya.ba);if(0>va){console.assert(ta>
|
|
985
|
+
Ya);break}ya.sa=va&65535;ya.ta=va>>16}ya=J.push(fa.drawWidth());va=O.push(fa.drawHeight());console.assert(ya>=fa.drawWidth());console.assert(va>=fa.drawHeight());console.assert(ya<=X);console.assert(va<=X);n.G.width!=ya&&(n.G.width=ya);n.G.height!=va&&(n.G.height=va);n.clear();for(ya=Ya;ya<ta;++ya){va=ma[ya];n.saveClipRect(va.sa,va.ta,va.sa+va.ca,va.ta+va.ba);xa.xx=va.ca/va.G.width;xa.yy=va.ba/va.G.height;xa.xy=xa.yx=0;xa.tx=va.sa;xa.ty=va.ta;n.transform(xa);for(const tb of va.P)tb();n.restoreClipRect();
|
|
986
|
+
va.P=[]}for(n.flush();Ya<ta;++Ya)ya=ma[Ya],va=ya.Ib,va.globalCompositeOperation="copy",va.drawImage(n.G,ya.sa,ya.ta,ya.ca,ya.ba,0,0,ya.G.width,ya.G.height);Ya=ta}}}}Ma&&Ma();let n=null;const x=new Set,B=G.makeRenderer;G.makeRenderer=function(X,ba,ia){ia=!(!ia||!ia.inkbleed);if(!n){function fa(ma){var xa=document.createElement("canvas");xa.width=1;xa.height=1;n=e(xa,ma);if(!n)return null;n.gb=!!n.R.getExtension("WEBGL_shader_pixel_local_storage");n.Kb=Math.min(n.R.getParameter(n.R.MAX_RENDERBUFFER_SIZE),
|
|
987
|
+
n.R.getParameter(n.R.MAX_TEXTURE_SIZE));n.La=!n.gb;if(ma=n.R.getExtension("WEBGL_debug_renderer_info"))xa=n.R.getParameter(ma.UNMASKED_RENDERER_WEBGL),n.R.getParameter(ma.UNMASKED_VENDOR_WEBGL).includes("Google")&&xa.includes("ANGLE Metal Renderer")&&(n.La=!1);return n}n=fa(!0);if(!n)throw"Unable to create WebGL context, your environment may not support WebGL. Try out @rive-app/canvas as an alternative.";n.La||(n=fa(!1))}return ba?new c(X):e(X,n.La,ia)};const D=G.Artboard.prototype["delete"];G.Artboard.prototype["delete"]=
|
|
988
|
+
function(){this.Mb=!0;D.call(this)};const F=G.Artboard.prototype.draw;G.Artboard.prototype.draw=function(X){X.P?X.P.push(()=>{this.Mb||F.call(this,X.hb)}):F.call(this,X)};const J=new Ea,O=new Ea,Q=new Aa;G.requestAnimationFrame=Q.requestAnimationFrame.bind(Q);G.cancelAnimationFrame=Q.cancelAnimationFrame.bind(Q);G.enableFPSCounter=Q.$b.bind(Q);const V=Ha(l);Q.rb=V;G.resolveAnimationFrame=V;let W=G.load;G.load=function(X,ba,ia=!0,fa=null){const ma=new G.FallbackFileAssetLoader;void 0!==ba&&ma.addLoader(ba);
|
|
989
|
+
ia&&(ba=new G.CDNFileAssetLoader(fa),ma.addLoader(ba));return G.startFileScripts(W(X,ma,fa??null))};const oa=G.WebGL2Renderer.prototype.clear;G.WebGL2Renderer.prototype.clear=function(){Na(this.V);const X=this.G;if(this.Na!=X.width||this.Ma!=X.height)this.resize(X.width,X.height),this.Na=X.width,this.Ma=X.height;oa.call(this)};G.decodeImage=function(X,ba,ia=null){X=G.decodeWebGL2Image(X,ia??null);ba(X)};let ra=G.Renderer.prototype.align;G.Renderer.prototype.align=function(X,ba,ia,fa,ma=1){ra.call(this,
|
|
990
|
+
X,ba,ia,fa,ma)}};var Ta="./this.program";sa&&(_scriptName=self.location.href);var Ua="",Va,Wa;
|
|
991
|
+
if(na||sa){try{Ua=(new URL(".",_scriptName)).href}catch{}sa&&(Wa=c=>{var e=new XMLHttpRequest;e.open("GET",c,!1);e.responseType="arraybuffer";e.send(null);return new Uint8Array(e.response)});Va=async c=>{if(Za(c))return new Promise((l,n)=>{var x=new XMLHttpRequest;x.open("GET",c,!0);x.responseType="arraybuffer";x.onload=()=>{200==x.status||0==x.status&&x.response?l(x.response):n(x.status)};x.onerror=n;x.send(null)});var e=await fetch(c,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw Error(e.status+
|
|
992
|
+
" : "+e.url);}}var $a=console.log.bind(console),ab=console.error.bind(console),bb,cb,gb=!1,hb,Za=c=>c.startsWith("file://");function M(){ib.buffer!=jb.buffer&&mb()}var nb,ob,pb;
|
|
993
|
+
if(ua){var qb=!1;self.onunhandledrejection=e=>{throw e.reason||e;};function c(e){try{var l=e.data,n=l.T;if("load"===n){let x=[];self.onmessage=B=>x.push(B);pb=()=>{postMessage({T:"loaded"});for(let B of x)c(B);self.onmessage=c};for(const B of l.nc)if(!G[B]||G[B].proxy)G[B]=(...D)=>{postMessage({T:"callHandler",mc:B,Pa:D})},"print"==B&&($a=G[B]),"printErr"==B&&(ab=G[B]);ib=l.vj;mb();cb=l.wj;rb();vb()}else if("run"===n){wb(l.N);xb(l.N,0,0,1,0,0);yb();zb(l.N);qb||(Ab(),qb=!0);try{Bb(l.rj,l.Oa)}catch(x){if("unwind"!=
|
|
994
|
+
x)throw x;}}else"setimmediate"!==l.target&&("checkMailbox"===n?qb&&Cb():n&&(ab(`worker: received unknown command ${n}`),ab(l)))}catch(x){throw Db(),x;}}self.onmessage=c}var jb,Eb,Ib,Jb,N,Kb,Lb,Mb,Nb=!1;function mb(){var c=ib.buffer;G.HEAP8=jb=new Int8Array(c);Ib=new Int16Array(c);G.HEAPU8=Eb=new Uint8Array(c);G.HEAPU16=Jb=new Uint16Array(c);G.HEAP32=N=new Int32Array(c);G.HEAPU32=Kb=new Uint32Array(c);G.HEAPF32=Lb=new Float32Array(c);Mb=new Float64Array(c)}
|
|
995
|
+
function Ob(){Nb=!0;ua?pb():Pb.__wasm_call_ctors()}function Qb(c){G.onAbort?.(c);c="Aborted("+c+")";ab(c);gb=!0;c=new WebAssembly.RuntimeError(c+". Build with -sASSERTIONS for more info.");ob?.(c);throw c;}var Rb;async function Sb(c){if(!bb)try{var e=await Va(c);return new Uint8Array(e)}catch{}if(c==Rb&&bb)c=new Uint8Array(bb);else if(Wa)c=Wa(c);else throw"both async and sync fetching of the wasm failed";return c}
|
|
996
996
|
async function Tb(c,e){try{var l=await Sb(c);return await WebAssembly.instantiate(l,e)}catch(n){ab(`failed to asynchronously prepare wasm: ${n}`),Qb(n)}}async function Ub(c){var e=Rb;if(!bb&&!Za(e))try{var l=fetch(e,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(l,c)}catch(n){ab(`wasm streaming compile failed: ${n}`),ab("falling back to ArrayBuffer instantiation")}return Tb(e,c)}
|
|
997
997
|
function Vb(){Wb={__pthread_create_js:Xb,__syscall_fcntl64:Yb,__syscall_ioctl:Zb,__syscall_openat:ac,_abort_js:bc,_embind_create_inheriting_constructor:cc,_embind_finalize_value_object:dc,_embind_register_bigint:ec,_embind_register_bool:fc,_embind_register_class:gc,_embind_register_class_class_function:hc,_embind_register_class_class_property:ic,_embind_register_class_constructor:jc,_embind_register_class_function:kc,_embind_register_class_property:lc,_embind_register_emval:mc,_embind_register_enum:nc,
|
|
998
998
|
_embind_register_enum_value:oc,_embind_register_float:pc,_embind_register_function:qc,_embind_register_integer:rc,_embind_register_memory_view:sc,_embind_register_std_string:zc,_embind_register_std_wstring:Ac,_embind_register_value_object:Bc,_embind_register_value_object_field:Cc,_embind_register_void:Dc,_emscripten_init_main_thread_js:Ec,_emscripten_notify_mailbox_postmessage:Fc,_emscripten_receive_on_main_thread_js:Gc,_emscripten_thread_cleanup:Hc,_emscripten_thread_mailbox_await:zb,_emscripten_thread_set_strongref:Ic,
|
|
@@ -1002,7 +1002,7 @@ glActiveTexture:Ed,glAttachShader:Fd,glBindAttribLocation:Gd,glBindBuffer:Hd,glB
|
|
|
1002
1002
|
glClearStencil:de,glClientWaitSync:ee,glColorMask:fe,glCompileShader:ge,glCompressedTexSubImage2D:he,glCompressedTexSubImage3D:ie,glCreateProgram:je,glCreateShader:ke,glCullFace:le,glDeleteBuffers:me,glDeleteFramebuffers:ne,glDeleteProgram:oe,glDeleteRenderbuffers:pe,glDeleteSamplers:qe,glDeleteShader:re,glDeleteSync:se,glDeleteTextures:te,glDeleteVertexArrays:ue,glDepthFunc:ve,glDepthMask:we,glDepthRangef:xe,glDisable:ye,glDisableVertexAttribArray:ze,glDrawArrays:Ae,glDrawArraysInstanced:Be,glDrawBuffers:Ce,
|
|
1003
1003
|
glDrawElements:De,glDrawElementsInstanced:Ee,glEnable:Fe,glEnableVertexAttribArray:Ge,glFenceSync:He,glFlush:Ie,glFramebufferRenderbuffer:Je,glFramebufferTexture2D:Ke,glFramebufferTextureLayer:Le,glFrontFace:Me,glGenBuffers:Ne,glGenFramebuffers:Oe,glGenRenderbuffers:Pe,glGenSamplers:Qe,glGenTextures:Re,glGenVertexArrays:Se,glGenerateMipmap:$e,glGetFloatv:af,glGetFramebufferAttachmentParameteriv:bf,glGetIntegerv:cf,glGetProgramInfoLog:df,glGetProgramiv:ef,glGetShaderInfoLog:ff,glGetShaderiv:gf,glGetString:hf,
|
|
1004
1004
|
glGetStringi:jf,glGetUniformBlockIndex:kf,glGetUniformLocation:lf,glInvalidateFramebuffer:mf,glLinkProgram:nf,glPixelStorei:of,glPolygonOffset:pf,glReadBuffer:qf,glReadPixels:rf,glRenderbufferStorage:sf,glRenderbufferStorageMultisample:tf,glSamplerParameterf:uf,glSamplerParameteri:vf,glScissor:wf,glShaderSource:xf,glStencilFunc:yf,glStencilFuncSeparate:zf,glStencilMask:Af,glStencilMaskSeparate:Bf,glStencilOp:Cf,glStencilOpSeparate:Df,glTexParameteri:Ef,glTexStorage2D:Ff,glTexStorage3D:Gf,glTexSubImage2D:Hf,
|
|
1005
|
-
glTexSubImage3D:If,glUniform1i:Jf,glUniformBlockBinding:Kf,glUseProgram:Lf,glVertexAttribDivisor:Mf,glVertexAttribIPointer:Nf,glVertexAttribPointer:Of,glViewport:Pf,invoke_vii:Qf,isWindowsBrowser:Rf,memory:
|
|
1005
|
+
glTexSubImage3D:If,glUniform1i:Jf,glUniformBlockBinding:Kf,glUseProgram:Lf,glVertexAttribDivisor:Mf,glVertexAttribIPointer:Nf,glVertexAttribPointer:Of,glViewport:Pf,invoke_vii:Qf,isWindowsBrowser:Rf,memory:ib,provokingVertexWEBGL:Sf,riveWebAttach:Tf,riveWebAttachThreads:Uf,riveWebAudioRefusal:Vf,riveWebAudioSampleRate:Wf,riveWebAudioStart:Xf,riveWebAudioStop:Yf,riveWebCall:Zf,riveWebHasExport:$f,riveWebJobRun:ag,riveWebMemoryPages:bg,riveWebPreparing:cg,riveWebProcessorEnd:dg,riveWebRaise:eg,riveWebReadMemory:fg,
|
|
1006
1006
|
riveWebRegister:gg,riveWebRelease:hg,riveWebStart:ig,riveWebStringLength:jg,riveWebWorkerCollect:kg,riveWebWorkerEnd:lg,riveWebWorkerStart:mg,riveWebWorkerWake:ng,riveWebWriteMemory:og,upload_image:pg,wasm_start_image_decode:qg};return{env:Wb,wasi_snapshot_preview1:Wb}}
|
|
1007
1007
|
async function rb(){function c(n,x){Pb=n.exports;rg.push(Pb._emscripten_tls_init);n=Pb;Sa=n.free;sg=n.malloc;tg=n.pthread_self;G._setWebImage=n.setWebImage;ug=n.__getTypeName;Ab=n._embind_initialize_bindings;vg=G._wasm_image_decode_alloc=n.wasm_image_decode_alloc;wg=G._wasm_image_decode_complete=n.wasm_image_decode_complete;xg=G._wasm_image_decode_error=n.wasm_image_decode_error;G._rive_web_vm_module_export=n.rive_web_vm_module_export;G._rive_web_vm_frame_boundary=n.rive_web_vm_frame_boundary;yg=
|
|
1008
1008
|
G._rive_web_job_output=n.rive_web_job_output;zg=G._rive_web_lane_fail=n.rive_web_lane_fail;Ag=G._rive_web_lane_log=n.rive_web_lane_log;Bg=G._rive_web_lane_fuel=n.rive_web_lane_fuel;G._rive_web_processor_event=n.rive_web_processor_event;G._rive_web_vm_booting=n.rive_web_vm_booting;G._rive_web_vm_start_fuel=n.rive_web_vm_start_fuel;G._rive_web_vm_start_refusal=n.rive_web_vm_start_refusal;Cg=G._rive_web_calls=n.rive_web_calls;G._rive_shared_table=n.rive_shared_table;Dg=G._rive_web_worker_wait=n.rive_web_worker_wait;
|
|
@@ -1010,11 +1010,11 @@ Eg=G._rive_web_worker_finished=n.rive_web_worker_finished;Fg=G._rive_web_worker_
|
|
|
1010
1010
|
Db=n._emscripten_thread_crashed;Jg=n._emscripten_run_js_on_main_thread;Kg=n._emscripten_thread_free_data;Lg=n._emscripten_thread_exit;Mg=n._emscripten_check_mailbox;Ng=n.setThrew;Og=n._emscripten_tempret_set;Pg=n.emscripten_stack_set_limits;Qg=n._emscripten_stack_restore;Rg=n._emscripten_stack_alloc;Sg=n.emscripten_stack_get_current;Tg.vij=n.dynCall_vij;Tg.iij=n.dynCall_iij;Tg.ji=n.dynCall_ji;Tg.iijii=n.dynCall_iijii;Tg.iiiji=n.dynCall_iiiji;Tg.iiji=n.dynCall_iiji;Tg.jii=n.dynCall_jii;Tg.vijj=n.dynCall_vijj;
|
|
1011
1011
|
Tg.jiji=n.dynCall_jiji;Ug=n.__indirect_function_table;cb=x;return Pb}var e=Vb();if(G.instantiateWasm)return new Promise(n=>{G.instantiateWasm(e,(x,B)=>{n(c(x,B))})});if(ua){var l=new WebAssembly.Instance(cb,Vb());return c(l,cb)}Rb??=G.locateFile?G.locateFile("webgl2_advanced.wasm",Ua):Ua+"webgl2_advanced.wasm";return function(n){return c(n.instance,n.module)}(await Ub(e))}var Vg,Wg;class Xg{name="ExitStatus";constructor(c){this.message=`Program terminated with exit(${c})`;this.status=c}}
|
|
1012
1012
|
var Yg=c=>{c.terminate();c.onmessage=()=>{}},Zg=c=>{for(;0<c.length;)c.shift()(G)},$g=[],ah=0,bh=null,hh=c=>{0==ch.length&&(dh(),eh(ch[0]));var e=ch.pop();if(!e)return 6;fh.push(e);gh[c.N]=e;e.N=c.N;e.postMessage({T:"run",rj:c.qj,Oa:c.Oa,N:c.N},c.Bb);return 0},ih=0,jh=()=>Sg(),kh=c=>Qg(c),lh=c=>Rg(c),mh=(c,e,...l)=>{var n=8*l.length,x=Sg(),B=Rg(n),D=B>>3,F;for(F of l)(M(),Mb)[D++]=F;c=Jg(c,0,n,B,e);Qg(x);return c};
|
|
1013
|
-
function nh(c){if(ua)return mh(0,1,c);
|
|
1013
|
+
function nh(c){if(ua)return mh(0,1,c);hb=c;oh||0<ih||(za(),G.onExit?.(c),gb=!0);throw new Xg(c);}function ph(c){if(ua)return mh(1,0,c);xd(c)}var xd=c=>{hb=c;if(ua)throw ph(c),"unwind";nh(c)},ch=[],fh=[],rg=[],gh={};function qh(){for(var c=16;c--;)dh();$g.push(async()=>{var e=rh();ah++;G.monitorRunDependencies?.(ah);await e;ah--;G.monitorRunDependencies?.(ah);0==ah&&bh&&(e=bh,bh=null,e())})}
|
|
1014
1014
|
var za=()=>{for(var c of fh)Yg(c);for(c of ch)Yg(c);ch=[];fh=[];gh={}},sh=c=>{var e=c.N;delete gh[e];ch.push(c);fh.splice(fh.indexOf(c),1);c.N=0;Kg(e)};function yb(){rg.forEach(c=>c())}
|
|
1015
1015
|
var eh=c=>new Promise(e=>{c.onmessage=B=>{var D=B.data;B=D.T;if(D.Ia&&D.Ia!=tg()){var F=gh[D.Ia];F?F.postMessage(D,D.Bb):ab(`Internal error! Worker sent a message "${B}" to target pthread ${D.Ia}, but that thread no longer exists!`)}else if("checkMailbox"===B)Cb();else if("spawnThread"===B)hh(D);else if("cleanupThread"===B)th(()=>{sh(gh[D.uj])});else if("loaded"===B)c.loaded=!0,e(c);else if("setimmediate"===D.target)c.postMessage(D);else if("callHandler"===B)G[D.mc](...D.Pa);else B&&ab(`worker sent an unknown command ${B}`)};
|
|
1016
|
-
c.onerror=B=>{ab(`${"worker sent an error!"} ${B.filename}:${B.lineno}: ${B.message}`);throw B;};var l=[],n=["onExit","onAbort","print","printErr"],x;for(x of n)G.propertyIsEnumerable(x)&&l.push(x);c.postMessage({T:"load",nc:l,vj:
|
|
1017
|
-
function wb(c){var e=(M(),Kb)[c+52>>2];c=(M(),Kb)[c+56>>2];Pg(e,e-c);Qg(e)}var Bb=(c,e)=>{oh=ih=0;c=Ug.get(c)(e);oh||0<ih?
|
|
1016
|
+
c.onerror=B=>{ab(`${"worker sent an error!"} ${B.filename}:${B.lineno}: ${B.message}`);throw B;};var l=[],n=["onExit","onAbort","print","printErr"],x;for(x of n)G.propertyIsEnumerable(x)&&l.push(x);c.postMessage({T:"load",nc:l,vj:ib,wj:cb})});async function rh(){if(!ua)return Promise.all(ch.map(eh))}function dh(){var c=_scriptName;G.mainScriptUrlOrBlob&&(c=G.mainScriptUrlOrBlob,"string"!=typeof c&&(c=URL.createObjectURL(c)));c=new Worker(c,{name:"em-pthread"});ch.push(c)}var uh=[];
|
|
1017
|
+
function wb(c){var e=(M(),Kb)[c+52>>2];c=(M(),Kb)[c+56>>2];Pg(e,e-c);Qg(e)}var Bb=(c,e)=>{oh=ih=0;c=Ug.get(c)(e);oh||0<ih?hb=c:Lg(c)},oh=!0,ib;function vh(c,e,l,n){return ua?mh(2,1,c,e,l,n):Xb(c,e,l,n)}
|
|
1018
1018
|
var Xb=(c,e,l,n)=>{if(!globalThis.SharedArrayBuffer)return 6;var x=[];if(ua&&0===x.length)return vh(c,e,l,n);c={qj:l,N:c,Oa:n,Bb:x};return ua?(c.T="spawnThread",postMessage(c,x),0):hh(c)},wh=globalThis.TextDecoder&&new TextDecoder,xh=(c,e,l,n)=>{l=e+l;if(n)return l;for(;c[e]&&!(e>=l);)++e;return e},yh=(c,e=0,l,n)=>{l=xh(c,e,l,n);if(16<l-e&&c.buffer&&wh)return wh.decode(c.slice(e,l));for(n="";e<l;){var x=c[e++];if(x&128){var B=c[e++]&63;if(192==(x&224))n+=String.fromCharCode((x&31)<<6|B);else{var D=
|
|
1019
1019
|
c[e++]&63;x=224==(x&240)?(x&15)<<12|B<<6|D:(x&7)<<18|B<<12|D<<6|c[e++]&63;65536>x?n+=String.fromCharCode(x):(x-=65536,n+=String.fromCharCode(55296|x>>10,56320|x&1023))}}else n+=String.fromCharCode(x)}return n},zh=(c,e,l)=>c?yh((M(),Eb),c,e,l):"";function Yb(c,e,l){return ua?mh(3,1,c,e,l):0}function Zb(c,e,l){return ua?mh(4,1,c,e,l):0}function ac(c,e,l,n){if(ua)return mh(5,1,c,e,l,n)}
|
|
1020
1020
|
var bc=()=>Qb(""),Ah=(c,e)=>Object.defineProperty(e,"name",{value:c}),Bh=[],Ch=[0,1,,1,null,1,!0,1,!1,1],Dh=class extends Error{constructor(c){super(c);this.name="BindingError"}},Eh=c=>{if(!c)throw new Dh(`Cannot use deleted val. handle = ${c}`);return Ch[c]},Fh=c=>{switch(c){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const e=Bh.pop()||Ch.length;Ch[e]=c;Ch[e+1]=1;return e}};class Gh extends Error{}
|
|
@@ -1023,7 +1023,7 @@ e.K.O(e.D):e.v.o.O(e.u))});Ph=e=>{var l=e.m;l.D&&Oh.register(e,{m:l},e);return e
|
|
|
1023
1023
|
F=D.implement(this,...F);Nh(F);var J=F.m;F.notifyOnDestruction();J.fa=!0;Object.defineProperties(this,{m:{value:J}});Ph(this);F=J.u;F=Jh(n,F);if(Ih.hasOwnProperty(F))throw new Dh(`Tried to register registered instance: ${F}`);Ih[F]=this};x.__destruct=function(){if(this===x)throw new Dh("Pass correct 'this' to __destruct");Nh(this);var F=this.m.u;F=Jh(n,F);if(Ih.hasOwnProperty(F))delete Ih[F];else throw new Dh(`Tried to unregister unregistered instance: ${F}`);};c.prototype=Object.create(x);Object.assign(c.prototype,
|
|
1024
1024
|
l);return Fh(c)},Qh={},Rh=c=>{for(;c.length;){var e=c.pop();c.pop()(e)}};function Sh(c){return this.s((M(),Kb)[c>>2])}
|
|
1025
1025
|
var Th={},Uh={},Vh=class extends Error{constructor(c){super(c);this.name="InternalError"}},Xh=(c,e,l)=>{function n(F){F=l(F);if(F.length!==c.length)throw new Vh("Mismatched type converter count");for(var J=0;J<c.length;++J)Wh(c[J],F[J])}c.forEach(F=>Uh[F]=e);var x=Array(e.length),B=[],D=0;for(let [F,J]of e.entries())Kh.hasOwnProperty(J)?x[F]=Kh[J]:(B.push(J),Th.hasOwnProperty(J)||(Th[J]=[]),Th[J].push(()=>{x[F]=Kh[J];++D;D===B.length&&n(x)}));0===B.length&&n(x)},dc=c=>{var e=Qh[c];delete Qh[c];var l=
|
|
1026
|
-
e.$a,n=e.O,x=e.mb,B=x.map(D=>D.lc).concat(x.map(D=>D.nj));Xh([c],B,D=>{var F={},J,O;for([J,O]of x.entries()){const Q=D[J],V=O.jc,W=O.kc,oa=D[J+x.length],ra=O.mj,X=O.oj;F[O.dc]={read:
|
|
1026
|
+
e.$a,n=e.O,x=e.mb,B=x.map(D=>D.lc).concat(x.map(D=>D.nj));Xh([c],B,D=>{var F={},J,O;for([J,O]of x.entries()){const Q=D[J],V=O.jc,W=O.kc,oa=D[J+x.length],ra=O.mj,X=O.oj;F[O.dc]={read:ba=>Q.s(V(W,ba)),write:(ba,ia)=>{var fa=[];ra(X,ba,oa.B(fa,ia));Rh(fa)},optional:Q.optional}}return[{name:e.name,s:Q=>{var V={},W;for(W in F)V[W]=F[W].read(Q);n(Q);return V},B:(Q,V)=>{for(var W in F)if(!(W in V||F[W].optional))throw new TypeError(`Missing field: "${W}"`);var oa=l();for(W in F)F[W].write(oa,V[W]);null!==
|
|
1027
1027
|
Q&&Q.push(n,oa);return oa},J:Sh,H:n}]})},ec=()=>{};function Yh(c,e,l={}){var n=e.name;if(!c)throw new Dh(`type "${n}" must have a positive integer typeid pointer`);if(Kh.hasOwnProperty(c)){if(l.rc)return;throw new Dh(`Cannot register type '${n}' twice`);}Kh[c]=e;delete Uh[c];Th.hasOwnProperty(c)&&(e=Th[c],delete Th[c],e.forEach(x=>x()))}function Wh(c,e,l={}){return Yh(c,e,l)}
|
|
1028
1028
|
var fc=(c,e,l,n)=>{e=Hh(e);Wh(c,{name:e,s:function(x){return!!x},B:function(x,B){return B?l:n},J:function(x){return this.s((M(),Eb)[x])},H:null})},Zh=c=>{throw new Dh(c.m.v.o.name+" instance already deleted");},$h=[];function ai(){}
|
|
1029
1029
|
var bi={},ci=(c,e,l)=>{if(void 0===c[e].A){var n=c[e];c[e]=function(...x){if(!c[e].A.hasOwnProperty(x.length))throw new Dh(`Function '${l}' called with an invalid number of arguments (${x.length}) - expects one of (${c[e].A})!`);return c[e].A[x.length].apply(this,x)};c[e].A=[];c[e].A[n.S]=n}},di=(c,e,l)=>{if(G.hasOwnProperty(c)){if(void 0===l||void 0!==G[c].A&&void 0!==G[c].A[l])throw new Dh(`Cannot register public name '${c}' twice`);ci(G,c,c);if(G[c].A.hasOwnProperty(l))throw new Dh(`Cannot register multiple overloads of a function with the same number of arguments (${l})!`);
|
|
@@ -1036,26 +1036,26 @@ function ki(c,e){if(null===e){if(this.Ua)throw new Dh(`null is not a valid ${thi
|
|
|
1036
1036
|
var li=(c,e,l)=>{if(e===l)return c;if(void 0===l.C)return null;c=li(c,e,l.C);return null===c?null:l.Yb(c)},mi=(c,e)=>{e=Jh(c,e);return Ih[e]},ni=(c,e)=>{if(!e.v||!e.u)throw new Vh("makeClassHandle requires ptr and ptrType");if(!!e.K!==!!e.D)throw new Vh("Both smartPtrType and smartPtr must be specified");e.count={value:1};return Ph(Object.create(c,{m:{value:e,writable:!0}}))};
|
|
1037
1037
|
function oi(c,e,l,n,x,B,D,F,J,O,Q){this.name=c;this.o=e;this.Ua=l;this.Aa=n;this.Ba=x;this.Ac=B;this.pj=D;this.xb=F;this.$a=J;this.Ec=O;this.O=Q;x||void 0!==e.C?this.B=ji:(this.B=n?ii:ki,this.H=null)}
|
|
1038
1038
|
var pi=(c,e,l)=>{if(!G.hasOwnProperty(c))throw new Vh("Replacing nonexistent public symbol");void 0!==G[c].A&&void 0!==l?G[c].A[l]=e:(G[c]=e,G[c].S=l)},Tg={},qi=(c,e,l=[])=>{c.includes("j")?(c=c.replace(/p/g,"i"),e=(0,Tg[c])(e,...l)):e=Ug.get(e)(...l);return e},ri=(c,e)=>(...l)=>qi(c,e,l),si=(c,e)=>{c=Hh(c);var l=c.includes("j")?ri(c,e):Ug.get(e);if("function"!=typeof l)throw new Dh(`unknown function pointer with signature ${c}: ${e}`);return l};class ti extends Error{}
|
|
1039
|
-
var ui=(c,e)=>{function l(B){x[B]||Kh[B]||(Uh[B]?Uh[B].forEach(l):(n.push(B),x[B]=!0))}var n=[],x={};e.forEach(l);throw new ti(`${c}: `+n.map(Lh).join([", "]));},gc=(c,e,l,n,x,B,D,F,J,O,Q,V,W)=>{Q=Hh(Q);B=si(x,B);F&&=si(D,F);O&&=si(J,O);W=si(V,W);var oa=ei(Q);di(oa,function(){ui(`Cannot construct ${Q} due to unbound types`,[n])});Xh([c,e,l],n?[n]:[],ra=>{ra=ra[0];if(n){var X=ra.o;var
|
|
1040
|
-
if(void 0===fa.X)throw new Dh(`${Q} has no accessible constructor`);var ta=fa.X[xa.length];if(void 0===ta)throw new Dh(`Tried to invoke ctor of ${Q} with invalid number of parameters (${xa.length}) - expected (${Object.keys(fa.X).toString()}) parameters instead!`);return ta.apply(this,xa)});var ia=Object.create(
|
|
1041
|
-
|
|
1042
|
-
function wi(c,e,l,n,x){var B=e.length;if(2>B)throw new Dh("argTypes array size mismatch! Must at least get return value and 'this' types!");var D=null!==e[1]&&null!==l,F=vi(e),J=!e[0].tc,O=B-2,Q=Array(O),V=[],W=[];return Ah(c,function(...oa){W.length=0;V.length=D?2:1;V[0]=x;if(D){var ra=e[1].B(W,this);V[1]=ra}for(var X=0;X<O;++X)Q[X]=e[X+2].B(W,oa[X]),V.push(Q[X]);oa=n(...V);if(F)Rh(W);else for(X=D?1:2;X<e.length;X++){var
|
|
1039
|
+
var ui=(c,e)=>{function l(B){x[B]||Kh[B]||(Uh[B]?Uh[B].forEach(l):(n.push(B),x[B]=!0))}var n=[],x={};e.forEach(l);throw new ti(`${c}: `+n.map(Lh).join([", "]));},gc=(c,e,l,n,x,B,D,F,J,O,Q,V,W)=>{Q=Hh(Q);B=si(x,B);F&&=si(D,F);O&&=si(J,O);W=si(V,W);var oa=ei(Q);di(oa,function(){ui(`Cannot construct ${Q} due to unbound types`,[n])});Xh([c,e,l],n?[n]:[],ra=>{ra=ra[0];if(n){var X=ra.o;var ba=X.M}else ba=ai.prototype;ra=Ah(Q,function(...xa){if(Object.getPrototypeOf(this)!==ia)throw new Dh(`Use 'new' to construct ${Q}`);
|
|
1040
|
+
if(void 0===fa.X)throw new Dh(`${Q} has no accessible constructor`);var ta=fa.X[xa.length];if(void 0===ta)throw new Dh(`Tried to invoke ctor of ${Q} with invalid number of parameters (${xa.length}) - expected (${Object.keys(fa.X).toString()}) parameters instead!`);return ta.apply(this,xa)});var ia=Object.create(ba,{constructor:{value:ra}});ra.prototype=ia;var fa=new fi(Q,ra,ia,W,X,B,F,O);if(fa.C){var ma;(ma=fa.C).ra??(ma.ra=[]);fa.C.ra.push(fa)}X=new oi(Q,fa,!0,!1,!1);ma=new oi(Q+"*",fa,!1,!1,!1);
|
|
1041
|
+
ba=new oi(Q+" const*",fa,!1,!0,!1);bi[c]={pointerType:ma,Vb:ba};pi(oa,ra);return[X,ma,ba]})};function vi(c){for(var e=1;e<c.length;++e)if(null!==c[e]&&void 0===c[e].H)return!0;return!1}
|
|
1042
|
+
function wi(c,e,l,n,x){var B=e.length;if(2>B)throw new Dh("argTypes array size mismatch! Must at least get return value and 'this' types!");var D=null!==e[1]&&null!==l,F=vi(e),J=!e[0].tc,O=B-2,Q=Array(O),V=[],W=[];return Ah(c,function(...oa){W.length=0;V.length=D?2:1;V[0]=x;if(D){var ra=e[1].B(W,this);V[1]=ra}for(var X=0;X<O;++X)Q[X]=e[X+2].B(W,oa[X]),V.push(Q[X]);oa=n(...V);if(F)Rh(W);else for(X=D?1:2;X<e.length;X++){var ba=1===X?ra:Q[X-2];null!==e[X].H&&e[X].H(ba)}ra=J?e[0].s(oa):void 0;return ra})}
|
|
1043
1043
|
var xi=(c,e)=>{for(var l=[],n=0;n<c;n++)l.push((M(),Kb)[e+4*n>>2]);return l},yi=c=>{c=c.trim();const e=c.indexOf("(");return-1===e?c:c.slice(0,e)},hc=(c,e,l,n,x,B,D)=>{var F=xi(l,n);e=Hh(e);e=yi(e);B=si(x,B);Xh([],[c],J=>{function O(){ui(`Cannot call ${Q} due to unbound types`,F)}J=J[0];var Q=`${J.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]);var V=J.o.constructor;void 0===V[e]?(O.S=l-1,V[e]=O):(ci(V,e,Q),V[e].A[l-1]=O);Xh([],F,W=>{W=wi(Q,[W[0],null].concat(W.slice(1)),null,B,D);void 0===
|
|
1044
1044
|
V[e].A?(W.S=l-1,V[e]=W):V[e].A[l-1]=W;if(J.o.ra)for(const oa of J.o.ra)oa.constructor.hasOwnProperty(e)||(oa.constructor[e]=W);return[]});return[]})},ic=(c,e,l,n,x,B,D,F)=>{e=Hh(e);B=si(x,B);Xh([],[c],J=>{J=J[0];var O=`${J.name}.${e}`,Q={get(){ui(`Cannot access ${O} due to unbound types`,[l])},enumerable:!0,configurable:!0};Q.set=F?()=>{ui(`Cannot access ${O} due to unbound types`,[l])}:()=>{throw new Dh(`${O} is a read-only property`);};Object.defineProperty(J.o.constructor,e,Q);Xh([],[l],V=>{V=
|
|
1045
1045
|
V[0];var W={get(){return V.s(B(n))},enumerable:!0};F&&(F=si(D,F),W.set=oa=>{var ra=[];F(n,V.B(ra,oa));Rh(ra)});Object.defineProperty(J.o.constructor,e,W);return[]});return[]})},jc=(c,e,l,n,x,B)=>{var D=xi(e,l);x=si(n,x);Xh([],[c],F=>{F=F[0];var J=`constructor ${F.name}`;void 0===F.o.X&&(F.o.X=[]);if(void 0!==F.o.X[e-1])throw new Dh(`Cannot register multiple constructors with identical number of parameters (${e-1}) for class '${F.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);
|
|
1046
1046
|
F.o.X[e-1]=()=>{ui(`Cannot construct ${F.name} due to unbound types`,D)};Xh([],D,O=>{O.splice(1,0,null);F.o.X[e-1]=wi(J,O,null,x,B);return[]});return[]})},kc=(c,e,l,n,x,B,D,F)=>{var J=xi(l,n);e=Hh(e);e=yi(e);B=si(x,B);Xh([],[c],O=>{function Q(){ui(`Cannot call ${V} due to unbound types`,J)}O=O[0];var V=`${O.name}.${e}`;e.startsWith("@@")&&(e=Symbol[e.substring(2)]);F&&O.o.ub.push(e);var W=O.o.M,oa=W[e];void 0===oa||void 0===oa.A&&oa.className!==O.name&&oa.S===l-2?(Q.S=l-2,Q.className=O.name,W[e]=
|
|
1047
1047
|
Q):(ci(W,e,V),W[e].A[l-2]=Q);Xh([],J,ra=>{ra=wi(V,ra,O,B,D);void 0===W[e].A?(ra.S=l-2,W[e]=ra):W[e].A[l-2]=ra;return[]});return[]})},zi=(c,e,l)=>{if(!(c instanceof Object))throw new Dh(`${l} with invalid "this": ${c}`);if(!(c instanceof e.o.constructor))throw new Dh(`${l} incompatible with "this" of type ${c.constructor.name}`);if(!c.m.u)throw new Dh(`cannot call emscripten binding method ${l} on deleted object`);return gi(c.m.u,c.m.v.o,e.o)},lc=(c,e,l,n,x,B,D,F,J,O)=>{e=Hh(e);x=si(n,x);Xh([],[c],
|
|
1048
|
-
Q=>{Q=Q[0];var V=`${Q.name}.${e}`,W={get(){ui(`Cannot access ${V} due to unbound types`,[l,D])},enumerable:!0,configurable:!0};W.set=J?()=>ui(`Cannot access ${V} due to unbound types`,[l,D]):()=>{throw new Dh(V+" is a read-only property");};Object.defineProperty(Q.o.M,e,W);Xh([],J?[l,D]:[l],oa=>{var ra=oa[0],X={get(){var ia=zi(this,Q,V+" getter");return ra.s(x(B,ia))},enumerable:!0};if(J){J=si(F,J);var
|
|
1049
|
-
e,X);return[]});return[]})},Lc=c=>{9<c&&0===--Ch[c+1]&&(Ch[c]=void 0,Bh.push(c))},Ai={name:"emscripten::val",s:c=>{var e=Eh(c);Lc(c);return e},B:(c,e)=>Fh(e),J:Sh,H:null},mc=c=>Wh(c,Ai),Bi=(c,e,l)=>{switch(e){case 1:return l?function(n){return this.s((M(),
|
|
1048
|
+
Q=>{Q=Q[0];var V=`${Q.name}.${e}`,W={get(){ui(`Cannot access ${V} due to unbound types`,[l,D])},enumerable:!0,configurable:!0};W.set=J?()=>ui(`Cannot access ${V} due to unbound types`,[l,D]):()=>{throw new Dh(V+" is a read-only property");};Object.defineProperty(Q.o.M,e,W);Xh([],J?[l,D]:[l],oa=>{var ra=oa[0],X={get(){var ia=zi(this,Q,V+" getter");return ra.s(x(B,ia))},enumerable:!0};if(J){J=si(F,J);var ba=oa[1];X.set=function(ia){var fa=zi(this,Q,V+" setter"),ma=[];J(O,fa,ba.B(ma,ia));Rh(ma)}}Object.defineProperty(Q.o.M,
|
|
1049
|
+
e,X);return[]});return[]})},Lc=c=>{9<c&&0===--Ch[c+1]&&(Ch[c]=void 0,Bh.push(c))},Ai={name:"emscripten::val",s:c=>{var e=Eh(c);Lc(c);return e},B:(c,e)=>Fh(e),J:Sh,H:null},mc=c=>Wh(c,Ai),Bi=(c,e,l)=>{switch(e){case 1:return l?function(n){return this.s((M(),jb)[n])}:function(n){return this.s((M(),Eb)[n])};case 2:return l?function(n){return this.s((M(),Ib)[n>>1])}:function(n){return this.s((M(),Jb)[n>>1])};case 4:return l?function(n){return this.s((M(),N)[n>>2])}:function(n){return this.s((M(),Kb)[n>>
|
|
1050
1050
|
2])};default:throw new TypeError(`invalid integer width (${e}): ${c}`);}},nc=(c,e,l,n,x)=>{e=Hh(e);x=0===x?"object":1===x?"number":"string";switch(x){case "object":function D(){}D.values={};Wh(c,{name:e,constructor:D,valueType:x,s:function(F){return this.constructor.values[F]},B:(F,J)=>J.value,J:Bi(e,l,n),H:null});di(e,D);break;case "number":var B={};Wh(c,{name:e,Wa:B,valueType:x,s:F=>F,B:(F,J)=>J,J:Bi(e,l,n),H:null});di(e,B);delete G[e].S;break;case "string":B={},Wh(c,{name:e,Eb:{},zb:{},Wa:B,valueType:x,
|
|
1051
1051
|
s:function(F){return this.zb[F]},B:function(F,J){return this.Eb[J]},J:Bi(e,l,n),H:null}),di(e,B),delete G[e].S}},oc=(c,e,l)=>{var n=Mh(c,"enum");e=Hh(e);switch(n.valueType){case "object":c=n.constructor;n=Object.create(n.constructor.prototype,{value:{value:l},constructor:{value:Ah(`${n.name}_${e}`,function(){})}});c.values[l]=n;c[e]=n;break;case "number":n.Wa[e]=l;break;case "string":n.Eb[e]=l,n.zb[l]=e,n.Wa[e]=e}},Ci=(c,e)=>{switch(e){case 4:return function(l){return this.s((M(),Lb)[l>>2])};case 8:return function(l){return this.s((M(),
|
|
1052
|
-
Mb)[l>>3])};default:throw new TypeError(`invalid float width (${e}): ${c}`);}},pc=(c,e,l)=>{e=Hh(e);Wh(c,{name:e,s:n=>n,B:(n,x)=>x,J:Ci(e,l),H:null})},qc=(c,e,l,n,x,B)=>{var D=xi(e,l);c=Hh(c);c=yi(c);x=si(n,x);di(c,function(){ui(`Cannot call ${c} due to unbound types`,D)},e-1);Xh([],D,F=>{pi(c,wi(c,[F[0],null].concat(F.slice(1)),null,x,B),e-1);return[]})},Di=(c,e,l)=>{switch(e){case 1:return l?n=>(M(),
|
|
1053
|
-
N)[n>>2]:n=>(M(),Kb)[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${c}`);}},rc=(c,e,l,n,x)=>{e=Hh(e);let B=F=>F;if(0===n){var D=32-8*l;B=F=>F<<D>>>D;x=B(x)}Wh(c,{name:e,s:B,B:(F,J)=>J,J:Di(e,l,0!==n),H:null})},sc=(c,e,l)=>{function n(B){var D=(M(),Kb)[B>>2];B=(M(),Kb)[B+4>>2];return new x((M(),
|
|
1052
|
+
Mb)[l>>3])};default:throw new TypeError(`invalid float width (${e}): ${c}`);}},pc=(c,e,l)=>{e=Hh(e);Wh(c,{name:e,s:n=>n,B:(n,x)=>x,J:Ci(e,l),H:null})},qc=(c,e,l,n,x,B)=>{var D=xi(e,l);c=Hh(c);c=yi(c);x=si(n,x);di(c,function(){ui(`Cannot call ${c} due to unbound types`,D)},e-1);Xh([],D,F=>{pi(c,wi(c,[F[0],null].concat(F.slice(1)),null,x,B),e-1);return[]})},Di=(c,e,l)=>{switch(e){case 1:return l?n=>(M(),jb)[n]:n=>(M(),Eb)[n];case 2:return l?n=>(M(),Ib)[n>>1]:n=>(M(),Jb)[n>>1];case 4:return l?n=>(M(),
|
|
1053
|
+
N)[n>>2]:n=>(M(),Kb)[n>>2];default:throw new TypeError(`invalid integer width (${e}): ${c}`);}},rc=(c,e,l,n,x)=>{e=Hh(e);let B=F=>F;if(0===n){var D=32-8*l;B=F=>F<<D>>>D;x=B(x)}Wh(c,{name:e,s:B,B:(F,J)=>J,J:Di(e,l,0!==n),H:null})},sc=(c,e,l)=>{function n(B){var D=(M(),Kb)[B>>2];B=(M(),Kb)[B+4>>2];return new x((M(),jb).buffer,B,D)}var x=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][e];l=Hh(l);Wh(c,{name:l,s:n,J:n},{rc:!0})},Ei=(c,e,l)=>{var n=(M(),Eb);
|
|
1054
1054
|
if(0<l){var x=e;l=e+l-1;for(var B=0;B<c.length;++B){var D=c.codePointAt(B);if(127>=D){if(e>=l)break;n[e++]=D}else if(2047>=D){if(e+1>=l)break;n[e++]=192|D>>6;n[e++]=128|D&63}else if(65535>=D){if(e+2>=l)break;n[e++]=224|D>>12;n[e++]=128|D>>6&63;n[e++]=128|D&63}else{if(e+3>=l)break;n[e++]=240|D>>18;n[e++]=128|D>>12&63;n[e++]=128|D>>6&63;n[e++]=128|D&63;B++}}n[e]=0;c=e-x}else c=0;return c},Fi=c=>{for(var e=0,l=0;l<c.length;++l){var n=c.charCodeAt(l);127>=n?e++:2047>=n?e+=2:55296<=n&&57343>=n?(e+=4,++l):
|
|
1055
1055
|
e+=3}return e},zc=(c,e)=>{e=Hh(e);Wh(c,{name:e,s(l){var n=(M(),Kb)[l>>2];n=zh(l+4,n,!0);Sa(l);return n},B(l,n){n instanceof ArrayBuffer&&(n=new Uint8Array(n));var x="string"==typeof n;if(!(x||ArrayBuffer.isView(n)&&1==n.BYTES_PER_ELEMENT))throw new Dh("Cannot pass non-string to std::string");var B=x?Fi(n):n.length;var D=sg(4+B+1),F=D+4;(M(),Kb)[D>>2]=B;x?Ei(n,F,B+1):(M(),Eb).set(n,F);null!==l&&l.push(Sa,D);return D},J:Sh,H(l){Sa(l)}})},Gi=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,
|
|
1056
1056
|
Hi=(c,e,l)=>{c>>=1;e=xh((M(),Jb),c,e/2,l);if(16<e-c&&Gi)return Gi.decode((M(),Jb).slice(c,e));for(l="";c<e;++c){var n=(M(),Jb)[c];l+=String.fromCharCode(n)}return l},Ii=(c,e,l)=>{l??=2147483647;if(2>l)return 0;l-=2;var n=e;l=l<2*c.length?l/2:c.length;for(var x=0;x<l;++x){var B=c.charCodeAt(x);(M(),Ib)[e>>1]=B;e+=2}(M(),Ib)[e>>1]=0;return e-n},Ji=c=>2*c.length,Ki=(c,e,l)=>{var n="";c>>=2;for(var x=0;!(x>=e/4);x++){var B=(M(),Kb)[c+x];if(!B&&!l)break;n+=String.fromCodePoint(B)}return n},Li=(c,e,l)=>
|
|
1057
1057
|
{l??=2147483647;if(4>l)return 0;var n=e;l=n+l-4;for(var x=0;x<c.length;++x){var B=c.codePointAt(x);65535<B&&x++;(M(),N)[e>>2]=B;e+=4;if(e+4>l)break}(M(),N)[e>>2]=0;return e-n},Mi=c=>{for(var e=0,l=0;l<c.length;++l)65535<c.codePointAt(l)&&l++,e+=4;return e},Ac=(c,e,l)=>{l=Hh(l);if(2===e){var n=Hi;var x=Ii;var B=Ji}else n=Ki,x=Li,B=Mi;Wh(c,{name:l,s:D=>{var F=(M(),Kb)[D>>2];F=n(D+4,F*e,!0);Sa(D);return F},B:(D,F)=>{if("string"!=typeof F)throw new Dh(`Cannot pass non-string to C++ string type ${l}`);
|
|
1058
|
-
var J=B(F),O=sg(4+J+e);(M(),Kb)[O>>2]=J/e;x(F,O+4,J+e);null!==D&&D.push(Sa,O);return O},J:Sh,H(D){Sa(D)}})},Bc=(c,e,l,n,x,B)=>{Qh[c]={name:Hh(e),$a:si(l,n),O:si(x,B),mb:[]}},Cc=(c,e,l,n,x,B,D,F,J,O)=>{Qh[c].mb.push({dc:Hh(e),lc:l,jc:si(n,x),kc:B,nj:D,mj:si(F,J),oj:O})},Dc=(c,e)=>{e=Hh(e);Wh(c,{tc:!0,name:e,s:()=>{},B:()=>{}})},Ec=c=>{xb(c,!sa,1,!
|
|
1058
|
+
var J=B(F),O=sg(4+J+e);(M(),Kb)[O>>2]=J/e;x(F,O+4,J+e);null!==D&&D.push(Sa,O);return O},J:Sh,H(D){Sa(D)}})},Bc=(c,e,l,n,x,B)=>{Qh[c]={name:Hh(e),$a:si(l,n),O:si(x,B),mb:[]}},Cc=(c,e,l,n,x,B,D,F,J,O)=>{Qh[c].mb.push({dc:Hh(e),lc:l,jc:si(n,x),kc:B,nj:D,mj:si(F,J),oj:O})},Dc=(c,e)=>{e=Hh(e);Wh(c,{tc:!0,name:e,s:()=>{},B:()=>{}})},Ec=c=>{xb(c,!sa,1,!na,262144,!1);yb()},Ni=c=>{if(!(c instanceof Xg||"unwind"==c))throw c;},th=c=>{if(!gb)try{if(c(),!(oh||0<ih))try{ua?tg()&&Lg(hb):xd(hb)}catch(e){Ni(e)}}catch(e){Ni(e)}},
|
|
1059
1059
|
Oi=!Atomics.waitAsync||globalThis.navigator?.userAgent&&91>Number((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)||[])[2]),zb=c=>{Oi||(Atomics.waitAsync((M(),N),c>>2,c).value.then(Cb),c+=128,Atomics.store((M(),N),c>>2,1))},Cb=()=>th(()=>{var c=tg();c&&(zb(c),Mg())}),Fc=(c,e)=>{c==e?setTimeout(Cb):ua?postMessage({Ia:c,T:"checkMailbox"}):(c=gh[c])&&c.postMessage({T:"checkMailbox"})},Pi=[],Gc=(c,e,l,n,x)=>{Pi.length=0;l=x>>3;for(n=x+n>>3;l<n;)x=(M(),Mb)[l++],Pi.push(x);return(e?Qi[e]:Ri[c])(...Pi)},
|
|
1060
1060
|
Hc=c=>{ua?postMessage({T:"cleanupThread",uj:c}):sh(gh[c])},Ic=()=>{},Jc=()=>{throw Infinity;},Si=[],Ti=c=>{var e=Si.length;Si.push(c);return e},Ui=(c,e)=>{for(var l=Array(c),n=0;n<c;++n)l[n]=Mh((M(),Kb)[e+4*n>>2],`parameter ${n}`);return l},Vi={},Wi=c=>{var e=Vi[c];return void 0===e?Hh(c):e},Kc=(c,e,l)=>{var [n,...x]=Ui(c,e),B=n.B.bind(n),D=x.map(J=>J.J.bind(J));c--;var F=Array(c);e=`methodCaller<(${x.map(J=>J.name)}) => ${n.name}>`;return Ti(Ah(e,(J,O,Q,V)=>{for(var W=0,oa=0;oa<c;++oa)F[oa]=D[oa](V+
|
|
1061
1061
|
W),W+=8;switch(l){case 0:var ra=Eh(J).apply(null,F);break;case 2:ra=Reflect.construct(Eh(J),F);break;case 3:ra=F[0];break;case 1:ra=Eh(J)[Wi(O)](...F)}J=[];ra=B(J,ra);J.length&&((M(),Kb)[Q>>2]=Fh(J));return ra}))},Mc=(c,e)=>{c=Eh(c);e=Eh(e);return Fh(c[e])},Nc=c=>{9<c&&(Ch[c+1]+=1)},Oc=(c,e,l,n,x)=>Si[c](e,l,n,x),Pc=()=>Fh([]),Qc=c=>Fh(Wi(c)),Rc=()=>Fh({}),Sc=c=>{var e=Eh(c);Rh(e);Lc(c)},Tc=(c,e,l)=>{c=Eh(c);e=Eh(e);l=Eh(l);c[e]=l};
|
|
@@ -1066,8 +1066,8 @@ var n=(new Date(c.getFullYear(),0,1)).getTimezoneOffset();c=(e!=n&&c.getTimezone
|
|
|
1066
1066
|
function Wc(c){var e=Date.UTC((M(),N)[c+20>>2]+1900,(M(),N)[c+16>>2],(M(),N)[c+12>>2],(M(),N)[c+8>>2],(M(),N)[c+4>>2],(M(),N)[c>>2],0);e=new Date(e);(M(),N)[c+24>>2]=e.getUTCDay();var l=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864E5|0;(M(),N)[c+28>>2]=l;c=e.getTime()/1E3;Og((Vg=c,1<=+Math.abs(Vg)?0<Vg?+Math.floor(Vg/4294967296)>>>0:~~+Math.ceil((Vg-+(~~Vg>>>0))/4294967296)>>>0:0));return c>>>0}
|
|
1067
1067
|
var Xc=(c,e,l,n)=>{var x=(new Date).getFullYear(),B=(new Date(x,0,1)).getTimezoneOffset();x=(new Date(x,6,1)).getTimezoneOffset();var D=Math.max(B,x);(M(),Kb)[c>>2]=60*D;(M(),N)[e>>2]=Number(B!=x);e=F=>{var J=Math.abs(F);return`UTC${0<=F?"-":"+"}${String(Math.floor(J/60)).padStart(2,"0")}${String(J%60).padStart(2,"0")}`};c=e(B);e=e(x);x<B?(Ei(c,l,17),Ei(e,n,17)):(Ei(c,n,17),Ei(e,l,17))},gd=()=>performance.timeOrigin+performance.now(),dd=()=>Date.now(),Zi=1;
|
|
1068
1068
|
function Zc(c,e,l,n){if(!(0<=c&&3>=c))return 28;if(0===c)c=Date.now();else if(Zi)c=performance.timeOrigin+performance.now();else return 52;c=Math.round(1E6*c);Wg=[c>>>0,(Vg=c,1<=+Math.abs(Vg)?0<Vg?+Math.floor(Vg/4294967296)>>>0:~~+Math.ceil((Vg-+(~~Vg>>>0))/4294967296)>>>0:0)];(M(),N)[n>>2]=Wg[0];(M(),N)[n+4>>2]=Wg[1];return 0}
|
|
1069
|
-
var $i=[],bd=(c,e,l)=>{$i.length=0;for(var n;n=(M(),Eb)[e++];){var x=105!=n;x&=112!=n;l+=x&&l%8?4:0;$i.push(112==n?(M(),Kb)[l>>2]:105==n?(M(),N)[l>>2]:(M(),Mb)[l>>3]);l+=x?8:4}return Qi[c](...$i)},cd=()=>{},ed=()=>{ih+=1;throw"unwind";},fd=()=>2147483648,hd=()=>navigator.hardwareConcurrency,jd=c=>{var e=(M(),Eb).length;c>>>=0;if(c<=e||2147483648<c)return!1;for(var l=1;4>=l;l*=2){var n=e*(1+.2/l);n=Math.min(n,c+100663296);a:{n=(Math.min(2147483648,65536*Math.ceil(Math.max(c,n)/65536))-
|
|
1070
|
-
65535)/65536|0;try{
|
|
1069
|
+
var $i=[],bd=(c,e,l)=>{$i.length=0;for(var n;n=(M(),Eb)[e++];){var x=105!=n;x&=112!=n;l+=x&&l%8?4:0;$i.push(112==n?(M(),Kb)[l>>2]:105==n?(M(),N)[l>>2]:(M(),Mb)[l>>3]);l+=x?8:4}return Qi[c](...$i)},cd=()=>{},ed=()=>{ih+=1;throw"unwind";},fd=()=>2147483648,hd=()=>navigator.hardwareConcurrency,jd=c=>{var e=(M(),Eb).length;c>>>=0;if(c<=e||2147483648<c)return!1;for(var l=1;4>=l;l*=2){var n=e*(1+.2/l);n=Math.min(n,c+100663296);a:{n=(Math.min(2147483648,65536*Math.ceil(Math.max(c,n)/65536))-ib.buffer.byteLength+
|
|
1070
|
+
65535)/65536|0;try{ib.grow(n);mb();var x=1;break a}catch(B){}x=void 0}if(x)return!0}return!1},aj=c=>{c.yj=c.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")},bj=c=>{c.Cj=c.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance")},Z,cj=c=>{var e="EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode".split(" ");
|
|
1071
1071
|
return(c.getSupportedExtensions()||[]).filter(l=>e.includes(l))},dj=1,ej=[],fj=[],gj=[],hj=[],ij=[],jj=[],kj=[],Ra={},lj=[],mj=[],nj={},oj={},pj=4,qj=0,rj=c=>{for(var e=dj++,l=c.length;l<e;l++)c[l]=null;return e},tj=(c,e,l,n)=>{for(var x=0;x<c;x++){var B=Z[l](),D=B&&rj(n);B?(B.name=D,n[D]=B):sj||=1282;(M(),N)[e+4*x>>2]=D}},Oa=(c,e)=>{var l=sg(8);(M(),Kb)[l+4>>2]=tg();var n={handle:l,attributes:e,version:e.Bj,F:c};c.canvas&&(c.canvas.Gb=n);Ra[l]=n;if("undefined"==typeof e.Zb||e.Zb)if((c=n)||(c=Pa),
|
|
1072
1072
|
!c.sc){c.sc=!0;e=c.F;e.wc=e.getExtension("WEBGL_multi_draw");e.bc=e.getExtension("EXT_polygon_offset_clamp");e.ac=e.getExtension("EXT_clip_control");e.xj=e.getExtension("WEBGL_polygon_mode");aj(e);bj(e);2<=c.version&&(e.lb=e.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>c.version||!e.lb)e.lb=e.getExtension("EXT_disjoint_timer_query");for(var x of cj(e))x.includes("lose_context")||x.includes("debug")||e.getExtension(x)}return l},Na=c=>{Pa=Ra[c];G.ctx=Z=Pa?.F;return!(c&&!Z)},sj,Pa,kd=(c,e)=>
|
|
1073
1073
|
{c=Ra[c];e=zh(e);e.startsWith("GL_")&&(e=e.slice(3));"WEBGL_draw_instanced_base_vertex_base_instance"==e&&aj(Z);"WEBGL_multi_draw_instanced_base_vertex_base_instance"==e&&bj(Z);"WEBGL_multi_draw"==e&&(Z.wc=Z.getExtension("WEBGL_multi_draw"));"EXT_polygon_offset_clamp"==e&&(Z.bc=Z.getExtension("EXT_polygon_offset_clamp"));"EXT_clip_control"==e&&(Z.ac=Z.getExtension("EXT_clip_control"));"WEBGL_polygon_mode"==e&&(Z.xj=Z.getExtension("WEBGL_polygon_mode"));return!!c.F.getExtension(e)},ld=()=>Pa?Pa.handle:
|
|
@@ -1083,13 +1083,13 @@ rj(fj),e=Z.createProgram();e.name=c;e.Ea=e.Ca=e.Da=0;e.eb=1;fj[c]=e;return c},ke
|
|
|
1083
1083
|
He=(c,e)=>(c=Z.fenceSync(c,e))?(e=rj(mj),c.name=e,mj[e]=c,e):0,Ie=()=>Z.flush(),Je=(c,e,l,n)=>{Z.framebufferRenderbuffer(c,e,l,hj[n])},Ke=(c,e,l,n,x)=>{Z.framebufferTexture2D(c,e,l,ij[n],x)},Le=(c,e,l,n,x)=>{Z.framebufferTextureLayer(c,e,ij[l],n,x)},Me=c=>Z.frontFace(c),Ne=(c,e)=>{tj(c,e,"createBuffer",ej)},Oe=(c,e)=>{tj(c,e,"createFramebuffer",gj)},Pe=(c,e)=>{tj(c,e,"createRenderbuffer",hj)},Qe=(c,e)=>{tj(c,e,"createSampler",lj)},Re=(c,e)=>{tj(c,e,"createTexture",ij)},Se=(c,e)=>{tj(c,e,"createVertexArray",
|
|
1084
1084
|
kj)},$e=c=>Z.generateMipmap(c),zj=()=>{var c=cj(Z);return c=c.concat(c.map(e=>"GL_"+e))},Aj=(c,e,l)=>{if(e){var n=void 0;switch(c){case 36346:n=1;break;case 36344:0!=l&&1!=l&&(sj||=1280);return;case 34814:case 36345:n=0;break;case 34466:var x=Z.getParameter(34467);n=x?x.length:0;break;case 33309:if(2>Pa.version){sj||=1282;return}n=zj().length;break;case 33307:case 33308:if(2>Pa.version){sj||=1280;return}n=33307==c?3:0}if(void 0===n)switch(x=Z.getParameter(c),typeof x){case "number":n=x;break;case "boolean":n=
|
|
1085
1085
|
x?1:0;break;case "string":sj||=1280;return;case "object":if(null===x)switch(c){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:n=0;break;default:sj||=1280;return}else{if(x instanceof Float32Array||x instanceof Uint32Array||x instanceof Int32Array||x instanceof Array){for(c=0;c<x.length;++c)switch(l){case 0:(M(),N)[e+4*c>>2]=x[c];break;case 2:(M(),
|
|
1086
|
-
Lb)[e+4*c>>2]=x[c];break;case 4:(M(),
|
|
1087
|
-
n;break;case 4:(M(),
|
|
1086
|
+
Lb)[e+4*c>>2]=x[c];break;case 4:(M(),jb)[e+c]=x[c]?1:0}return}try{n=x.name|0}catch(B){sj||=1280;ab(`GL_INVALID_ENUM in glGet${l}v: Unknown object returned from WebGL getParameter(${c})! (error: ${B})`);return}}break;default:sj||=1280;ab(`GL_INVALID_ENUM in glGet${l}v: Native code calling glGet${l}v(${c}) and it returns ${x} of type ${typeof x}!`);return}switch(l){case 1:l=n;(M(),Kb)[e>>2]=l;c=(M(),Kb)[e>>2];(M(),Kb)[e+4>>2]=(l-c)/4294967296;break;case 0:(M(),N)[e>>2]=n;break;case 2:(M(),Lb)[e>>2]=
|
|
1087
|
+
n;break;case 4:(M(),jb)[e]=n?1:0}}else sj||=1281},af=(c,e)=>Aj(c,e,2),bf=(c,e,l,n)=>{c=Z.getFramebufferAttachmentParameter(c,e,l);if(c instanceof WebGLRenderbuffer||c instanceof WebGLTexture)c=c.name|0;(M(),N)[n>>2]=c},cf=(c,e)=>Aj(c,e,0),df=(c,e,l,n)=>{c=Z.getProgramInfoLog(fj[c]);null===c&&(c="(unknown error)");e=0<e&&n?Ei(c,n,e):0;l&&((M(),N)[l>>2]=e)},ef=(c,e,l)=>{if(l)if(c>=dj)sj||=1281;else if(c=fj[c],35716==e)c=Z.getProgramInfoLog(c),null===c&&(c="(unknown error)"),(M(),N)[l>>2]=c.length+1;
|
|
1088
1088
|
else if(35719==e){if(!c.Ea){var n=Z.getProgramParameter(c,35718);for(e=0;e<n;++e)c.Ea=Math.max(c.Ea,Z.getActiveUniform(c,e).name.length+1)}(M(),N)[l>>2]=c.Ea}else if(35722==e){if(!c.Ca)for(n=Z.getProgramParameter(c,35721),e=0;e<n;++e)c.Ca=Math.max(c.Ca,Z.getActiveAttrib(c,e).name.length+1);(M(),N)[l>>2]=c.Ca}else if(35381==e){if(!c.Da)for(n=Z.getProgramParameter(c,35382),e=0;e<n;++e)c.Da=Math.max(c.Da,Z.getActiveUniformBlockName(c,e).length+1);(M(),N)[l>>2]=c.Da}else(M(),N)[l>>2]=Z.getProgramParameter(c,
|
|
1089
1089
|
e);else sj||=1281},ff=(c,e,l,n)=>{c=Z.getShaderInfoLog(jj[c]);null===c&&(c="(unknown error)");e=0<e&&n?Ei(c,n,e):0;l&&((M(),N)[l>>2]=e)},gf=(c,e,l)=>{l?35716==e?(c=Z.getShaderInfoLog(jj[c]),null===c&&(c="(unknown error)"),c=c?c.length+1:0,(M(),N)[l>>2]=c):35720==e?(c=(c=Z.getShaderSource(jj[c]))?c.length+1:0,(M(),N)[l>>2]=c):(M(),N)[l>>2]=Z.getShaderParameter(jj[c],e):sj||=1281},Bj=c=>{var e=Fi(c)+1,l=sg(e);l&&Ei(c,l,e);return l},hf=c=>{var e=nj[c];if(!e){switch(c){case 7939:e=Bj(zj().join(" "));
|
|
1090
1090
|
break;case 7936:case 7937:case 37445:case 37446:(e=Z.getParameter(c))||(sj||=1280);e=e?Bj(e):0;break;case 7938:e=Bj(`OpenGL ES 3.0 (${Z.getParameter(7938)})`);break;case 35724:e=Z.getParameter(35724);var l=e.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==l&&(3==l[1].length&&(l[1]+="0"),e=`OpenGL ES GLSL ES ${l[1]} (${e})`);e=Bj(e);break;default:sj||=1280}nj[c]=e}return e},jf=(c,e)=>{if(2>Pa.version)return sj||=1282,0;var l=oj[c];if(l)return 0>e||e>=l.length?(sj||=1281,0):l[e];switch(c){case 7939:return l=
|
|
1091
1091
|
zj().map(Bj),l=oj[c]=l,0>e||e>=l.length?(sj||=1281,0):l[e];default:return sj||=1280,0}},kf=(c,e)=>Z.getUniformBlockIndex(fj[c],zh(e)),Cj=c=>"]"==c.slice(-1)&&c.lastIndexOf("["),lf=(c,e)=>{e=zh(e);if(c=fj[c]){var l=c,n=l.oa,x=l.Db,B;if(!n){l.oa=n={};l.Cb={};var D=Z.getProgramParameter(l,35718);for(B=0;B<D;++B){var F=Z.getActiveUniform(l,B);var J=F.name;F=F.size;var O=Cj(J);O=0<O?J.slice(0,O):J;var Q=l.eb;l.eb+=F;x[O]=[F,Q];for(J=0;J<F;++J)n[Q]=J,l.Cb[Q++]=O}}l=c.oa;n=0;x=e;B=Cj(e);0<B&&(n=parseInt(e.slice(B+
|
|
1092
|
-
1))>>>0,x=e.slice(0,B));if((x=c.Db[x])&&n<x[0]&&(n+=x[1],l[n]=l[n]||Z.getUniformLocation(c,e)))return n}else sj||=1281;return-1},mf=(c,e,l)=>{for(var n=yj[e],x=0;x<e;x++)n[x]=(M(),N)[l+4*x>>2];Z.invalidateFramebuffer(c,n)},nf=c=>{c=fj[c];Z.linkProgram(c);c.oa=0;c.Db={}},of=(c,e)=>{3317==c?pj=e:3314==c&&(qj=e);Z.pixelStorei(c,e)},pf=(c,e)=>Z.polygonOffset(c,e),qf=c=>Z.readBuffer(c),Dj=c=>{c-=5120;return 0==c?(M(),
|
|
1092
|
+
1))>>>0,x=e.slice(0,B));if((x=c.Db[x])&&n<x[0]&&(n+=x[1],l[n]=l[n]||Z.getUniformLocation(c,e)))return n}else sj||=1281;return-1},mf=(c,e,l)=>{for(var n=yj[e],x=0;x<e;x++)n[x]=(M(),N)[l+4*x>>2];Z.invalidateFramebuffer(c,n)},nf=c=>{c=fj[c];Z.linkProgram(c);c.oa=0;c.Db={}},of=(c,e)=>{3317==c?pj=e:3314==c&&(qj=e);Z.pixelStorei(c,e)},pf=(c,e)=>Z.polygonOffset(c,e),qf=c=>Z.readBuffer(c),Dj=c=>{c-=5120;return 0==c?(M(),jb):1==c?(M(),Eb):2==c?(M(),Ib):4==c?(M(),N):6==c?(M(),Lb):5==c||28922==c||28520==c||
|
|
1093
1093
|
30779==c||30782==c?(M(),Kb):(M(),Jb)},rf=(c,e,l,n,x,B,D)=>{if(Z.Qa)Z.readPixels(c,e,l,n,x,B,D);else{var F=Dj(B);D>>>=31-Math.clz32(F.BYTES_PER_ELEMENT);Z.readPixels(c,e,l,n,x,B,F,D)}},sf=(c,e,l,n)=>Z.renderbufferStorage(c,e,l,n),tf=(c,e,l,n,x)=>Z.renderbufferStorageMultisample(c,e,l,n,x),uf=(c,e,l)=>{Z.samplerParameterf(lj[c],e,l)},vf=(c,e,l)=>{Z.samplerParameteri(lj[c],e,l)},wf=(c,e,l,n)=>Z.scissor(c,e,l,n),xf=(c,e,l,n)=>{for(var x="",B=0;B<e;++B){var D=n?(M(),Kb)[n+4*B>>2]:void 0;x+=zh((M(),Kb)[l+
|
|
1094
1094
|
4*B>>2],D)}Z.shaderSource(jj[c],x)},yf=(c,e,l)=>Z.stencilFunc(c,e,l),zf=(c,e,l,n)=>Z.stencilFuncSeparate(c,e,l,n),Af=c=>Z.stencilMask(c),Bf=(c,e)=>Z.stencilMaskSeparate(c,e),Cf=(c,e,l)=>Z.stencilOp(c,e,l),Df=(c,e,l,n)=>Z.stencilOpSeparate(c,e,l,n),Ef=(c,e,l)=>Z.texParameteri(c,e,l),Ff=(c,e,l,n,x)=>Z.texStorage2D(c,e,l,n,x),Gf=(c,e,l,n,x,B)=>Z.texStorage3D(c,e,l,n,x,B),Hf=(c,e,l,n,x,B,D,F,J)=>{if(Z.da)Z.texSubImage2D(c,e,l,n,x,B,D,F,J);else if(J){var O=Dj(F);Z.texSubImage2D(c,e,l,n,x,B,D,F,O,J>>>31-
|
|
1095
1095
|
Math.clz32(O.BYTES_PER_ELEMENT))}else{if(J){O=Dj(F);var Q=B*((qj||x)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[D-6402]||1)*O.BYTES_PER_ELEMENT+pj-1&-pj);J=O.subarray(J>>>31-Math.clz32(O.BYTES_PER_ELEMENT),J+Q>>>31-Math.clz32(O.BYTES_PER_ELEMENT))}else J=null;Z.texSubImage2D(c,e,l,n,x,B,D,F,J)}},If=(c,e,l,n,x,B,D,F,J,O,Q)=>{if(Z.da)Z.texSubImage3D(c,e,l,n,x,B,D,F,J,O,Q);else if(Q){var V=Dj(O);Z.texSubImage3D(c,e,l,n,x,B,D,F,J,O,V,Q>>>31-Math.clz32(V.BYTES_PER_ELEMENT))}else Z.texSubImage3D(c,
|
|
@@ -1097,26 +1097,26 @@ e,l,n,x,B,D,F,J,O,null)},Jf=(c,e)=>{var l=Z,n=l.uniform1i;var x=Z.Xb;if(x){var B
|
|
|
1097
1097
|
(()=>{let c=ai.prototype;Object.assign(c,{isAliasOf:function(l){if(!(this instanceof ai&&l instanceof ai))return!1;var n=this.m.v.o,x=this.m.u;l.m=l.m;var B=l.m.v.o;for(l=l.m.u;n.C;)x=n.pa(x),n=n.C;for(;B.C;)l=B.pa(l),B=B.C;return n===B&&x===l},clone:function(){this.m.u||Zh(this);if(this.m.fa)return this.m.count.value+=1,this;var l=Ph,n=Object,x=n.create,B=Object.getPrototypeOf(this),D=this.m;l=l(x.call(n,B,{m:{value:{count:D.count,ja:D.ja,fa:D.fa,u:D.u,v:D.v,D:D.D,K:D.K}}}));l.m.count.value+=1;l.m.ja=
|
|
1098
1098
|
!1;return l},["delete"](){this.m.u||Zh(this);if(this.m.ja&&!this.m.fa)throw new Dh("Object already scheduled for deletion");Nh(this);var l=this.m;--l.count.value;0===l.count.value&&(l.D?l.K.O(l.D):l.v.o.O(l.u));this.m.fa||(this.m.D=void 0,this.m.u=void 0)},isDeleted:function(){return!this.m.u},deleteLater:function(){this.m.u||Zh(this);if(this.m.ja&&!this.m.fa)throw new Dh("Object already scheduled for deletion");$h.push(this);this.m.ja=!0;return this}});const e=Symbol.dispose;e&&(c[e]=c["delete"])})();
|
|
1099
1099
|
Object.assign(oi.prototype,{ic(c){this.xb&&(c=this.xb(c));return c},kb(c){this.O?.(c)},J:Sh,s:function(c){function e(){return this.Ba?ni(this.o.M,{v:this.Ac,u:l,K:this,D:c}):ni(this.o.M,{v:this,u:c})}var l=this.ic(c);if(!l)return this.kb(c),null;var n=mi(this.o,l);if(void 0!==n){if(0===n.m.count.value)return n.m.u=l,n.m.D=c,n.clone();n=n.clone();this.kb(c);return n}n=this.o.hc(l);n=bi[n];if(!n)return e.call(this);n=this.Aa?n.Vb:n.pointerType;var x=li(l,this.o,n.o);return null===x?e.call(this):this.Ba?
|
|
1100
|
-
ni(n.o.M,{v:n,u:x,K:this,D:c}):ni(n.o.M,{v:n,u:x})}});for(let c=0;32>c;++c)yj.push(Array(c));ua||(G.wasmMemory?
|
|
1101
|
-
var Ri=[nh,ph,vh,Yb,Zb,ac,vd,wd,yd,zd,Ad,Bd],Qi={
|
|
1100
|
+
ni(n.o.M,{v:n,u:x,K:this,D:c}):ni(n.o.M,{v:n,u:x})}});for(let c=0;32>c;++c)yj.push(Array(c));ua||(G.wasmMemory?ib=G.wasmMemory:ib=new WebAssembly.Memory({initial:(G.INITIAL_MEMORY||16777216)/65536,maximum:32768,shared:!0}),mb());G.noExitRuntime&&(oh=G.noExitRuntime);G.print&&($a=G.print);G.printErr&&(ab=G.printErr);G.wasmBinary&&(bb=G.wasmBinary);G.thisProgram&&(Ta=G.thisProgram);if(G.preInit)for("function"==typeof G.preInit&&(G.preInit=[G.preInit]);0<G.preInit.length;)G.preInit.shift()();
|
|
1101
|
+
var Ri=[nh,ph,vh,Yb,Zb,ac,vd,wd,yd,zd,Ad,Bd],Qi={363546:(c,e,l,n,x)=>{if("undefined"===typeof window||void 0===(window.AudioContext||window.webkitAudioContext))return 0;if("undefined"===typeof window.miniaudio){window.miniaudio={referenceCount:0};window.miniaudio.device_type={};window.miniaudio.device_type.playback=c;window.miniaudio.device_type.capture=e;window.miniaudio.device_type.duplex=l;window.miniaudio.device_state={};window.miniaudio.device_state.stopped=n;window.miniaudio.device_state.started=
|
|
1102
1102
|
x;let B=window.miniaudio;B.devices=[];B.track_device=function(D){for(var F=0;F<B.devices.length;++F)if(null==B.devices[F])return B.devices[F]=D,F;B.devices.push(D);return B.devices.length-1};B.untrack_device_by_index=function(D){for(B.devices[D]=null;0<B.devices.length;)if(null==B.devices[B.devices.length-1])B.devices.pop();else break};B.untrack_device=function(D){for(var F=0;F<B.devices.length;++F)if(B.devices[F]==D)return B.untrack_device_by_index(F)};B.get_device_by_index=function(D){return B.devices[D]};
|
|
1103
|
-
B.unlock_event_types=["touchend","click"];B.unlock=function(){for(var D=0;D<B.devices.length;++D){var F=B.devices[D];null!=F&&null!=F.L&&F.state===B.device_state.started&&F.L.resume().then(()=>{Gg(F.tb)},J=>{console.error("Failed to resume audiocontext",J)})}B.unlock_event_types.map(function(J){document.removeEventListener(J,B.unlock,!0)})};B.unlock_event_types.map(function(D){document.addEventListener(D,B.unlock,!0)})}window.miniaudio.referenceCount+=1;return 1},
|
|
1104
|
-
(window.miniaudio.unlock_event_types.map(function(c){document.removeEventListener(c,window.miniaudio.unlock,!0)}),--window.miniaudio.referenceCount,0===window.miniaudio.referenceCount&&delete window.miniaudio)},
|
|
1103
|
+
B.unlock_event_types=["touchend","click"];B.unlock=function(){for(var D=0;D<B.devices.length;++D){var F=B.devices[D];null!=F&&null!=F.L&&F.state===B.device_state.started&&F.L.resume().then(()=>{Gg(F.tb)},J=>{console.error("Failed to resume audiocontext",J)})}B.unlock_event_types.map(function(J){document.removeEventListener(J,B.unlock,!0)})};B.unlock_event_types.map(function(D){document.addEventListener(D,B.unlock,!0)})}window.miniaudio.referenceCount+=1;return 1},365724:()=>{"undefined"!==typeof window.miniaudio&&
|
|
1104
|
+
(window.miniaudio.unlock_event_types.map(function(c){document.removeEventListener(c,window.miniaudio.unlock,!0)}),--window.miniaudio.referenceCount,0===window.miniaudio.referenceCount&&delete window.miniaudio)},366028:()=>void 0!==navigator.mediaDevices&&void 0!==navigator.mediaDevices.getUserMedia,366132:()=>{try{var c=new (window.AudioContext||window.webkitAudioContext),e=c.sampleRate;c.close();return e}catch(l){return 0}},366303:(c,e,l,n,x,B)=>{if("undefined"===typeof window.miniaudio)return-1;
|
|
1105
1105
|
var D={},F={};c==window.miniaudio.device_type.playback&&0!=l&&(F.sampleRate=l);D.L=new (window.AudioContext||window.webkitAudioContext)(F);D.L.suspend();D.state=window.miniaudio.device_state.stopped;l=0;c!=window.miniaudio.device_type.playback&&(l=e);D.U=D.L.createScriptProcessor(n,l,e);D.U.onaudioprocess=function(J){if(null==D.za||0==D.za.length)D.za=new Float32Array((M(),Lb).buffer,x,n*e);if(c==window.miniaudio.device_type.capture||c==window.miniaudio.device_type.duplex){for(var O=0;O<e;O+=1)for(var Q=
|
|
1106
1106
|
J.inputBuffer.getChannelData(O),V=D.za,W=0;W<n;W+=1)V[W*e+O]=Q[W];Hg(B,n,x)}if(c==window.miniaudio.device_type.playback||c==window.miniaudio.device_type.duplex)for(Ig(B,n,x),O=0;O<J.outputBuffer.numberOfChannels;++O)for(Q=J.outputBuffer.getChannelData(O),V=D.za,W=0;W<n;W+=1)Q[W]=V[W*e+O];else for(O=0;O<J.outputBuffer.numberOfChannels;++O)J.outputBuffer.getChannelData(O).fill(0)};c!=window.miniaudio.device_type.capture&&c!=window.miniaudio.device_type.duplex||navigator.mediaDevices.getUserMedia({audio:!0,
|
|
1107
|
-
video:!1}).then(function(J){D.Ha=D.L.createMediaStreamSource(J);D.Ha.connect(D.U);D.U.connect(D.L.destination)}).catch(function(J){console.log("Failed to get user media: "+J)});c==window.miniaudio.device_type.playback&&D.U.connect(D.L.destination);D.tb=B;return window.miniaudio.track_device(D)},
|
|
1108
|
-
(c.Ha.disconnect(),c.Ha=void 0);c.L.close();c.L=void 0;c.tb=void 0},
|
|
1107
|
+
video:!1}).then(function(J){D.Ha=D.L.createMediaStreamSource(J);D.Ha.connect(D.U);D.U.connect(D.L.destination)}).catch(function(J){console.log("Failed to get user media: "+J)});c==window.miniaudio.device_type.playback&&D.U.connect(D.L.destination);D.tb=B;return window.miniaudio.track_device(D)},369180:c=>window.miniaudio.get_device_by_index(c).L.sampleRate,369253:c=>{c=window.miniaudio.get_device_by_index(c);void 0!==c.U&&(c.U.onaudioprocess=function(){},c.U.disconnect(),c.U=void 0);void 0!==c.Ha&&
|
|
1108
|
+
(c.Ha.disconnect(),c.Ha=void 0);c.L.close();c.L=void 0;c.tb=void 0},369653:c=>{window.miniaudio.untrack_device_by_index(c)},369703:c=>{c=window.miniaudio.get_device_by_index(c);c.L.resume();c.state=window.miniaudio.device_state.started},369842:c=>{c=window.miniaudio.get_device_by_index(c);c.L.suspend();c.state=window.miniaudio.device_state.stopped}};
|
|
1109
1109
|
function $c(c,e,l){var n=G.images;n||(n=new Map,G.images=n);var x=new Image;n.set(c,x);e=G.HEAP8.subarray(e,e+l);l=new Uint8Array(l);l.set(e);x.src=URL.createObjectURL(new Blob([l],{type:"image/png"}));x.onload=function(){G._setWebImage(c,x.width,x.height)}}function pg(c,e){var l=G.images;l&&(e=l.get(e))&&(c=Ra[c].F,c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,e),c.pixelStorei(c.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1))}
|
|
1110
|
-
function ad(c){var e=G.images;e&&e.get(c)&&e.delete(c)}function qg(c,e,l){e=new Uint8Array(
|
|
1111
|
-
function Tf(){const c=G.riveScripting;if(!c)return 0;const e=(l,n)=>{l=Bj(l);n(l);Sa(l)};c.Nb({exports:G,pc:l=>{l=(M(),Kb)[(Cg()>>2)+l];return 0===l?void 0:Ug.get(l)},Y:()=>(M(),Eb),nb:()=>(M(),Mb),na:jh,Ga:lh,ma:kh,Ya:sg,ea:Sa,qa:l=>zh(l),Fb:(l,n,x)=>Ei(l,n,x),memory:()=>
|
|
1110
|
+
function ad(c){var e=G.images;e&&e.get(c)&&e.delete(c)}function qg(c,e,l){e=new Uint8Array(ib.buffer,e,l);var n=new Uint8Array(l);n.set(e);Promise.resolve().then(function(){return createImageBitmap(new Blob([n]))}).then(function(x){var B=(new OffscreenCanvas(x.width,x.height)).getContext("2d");B.drawImage(x,0,0);B=B.getImageData(0,0,x.width,x.height);var D=B.data.length,F=vg(D);F?((new Uint8Array(ib.buffer,F,D)).set(B.data),wg(c,x.width,x.height,F,D)):xg(c)}).catch(function(){xg(c)})}
|
|
1111
|
+
function Tf(){const c=G.riveScripting;if(!c)return 0;const e=(l,n)=>{l=Bj(l);n(l);Sa(l)};c.Nb({exports:G,pc:l=>{l=(M(),Kb)[(Cg()>>2)+l];return 0===l?void 0:Ug.get(l)},Y:()=>(M(),Eb),nb:()=>(M(),Mb),na:jh,Ga:lh,ma:kh,Ya:sg,ea:Sa,qa:l=>zh(l),Fb:(l,n,x)=>Ei(l,n,x),memory:()=>ib,Cc:(l,n,x)=>e(x,B=>G._rive_web_processor_event(l,n,B)),Xa:(l,n)=>e(n,x=>Ag(l,x)),uc:(l,n)=>e(n,x=>zg(l,x)),vc:l=>{l=Bg(l);return 0===l?null:zh(l)}});return 1}function Uf(){G.riveScripting.Ob(()=>ch)}
|
|
1112
1112
|
function gg(c,e,l){G.riveScripting.register(c,(M(),Eb).subarray(e,e+l))}function hg(c){G.riveScripting?.release(c)}function ig(c){c=G.riveScripting.start(c);return null===c?0:Bj(c)}function cg(c){return G.riveScripting.aa(c)}function $f(c,e){return G.riveScripting.oc(c,e)}function Zf(c,e,l,n,x,B,D){return G.riveScripting.call(c,e,l,n,x,B,D)}function eg(c,e){G.riveScripting.Dc(c,e)}function fg(c,e,l,n){return G.riveScripting.read(c,e>>>0,l,n>>>0)}
|
|
1113
1113
|
function og(c,e,l,n){return G.riveScripting.write(c,e>>>0,l,n>>>0)}function jg(c,e){return G.riveScripting.tj(c,e>>>0)}function bg(c){return G.riveScripting.zc(c)}function Rf(){return-1<navigator.platform.indexOf("Win")}function ag(c,e,l,n,x,B,D,F,J){c=G.riveScripting.runJob(c,e,()=>(M(),Eb).slice(l,l+n),x,(M(),Eb).slice(B,B+D),()=>Atomics.load((M(),N),F>>2));if(!c.ok)return Bj(c.error);J=yg(J,c.output.length);(M(),Eb).set(c.output,J);return 0}
|
|
1114
1114
|
function Vf(){const c=G.riveScripting.audioRefusal();return null===c?0:Bj(c)}function dg(c){G.riveScripting.processorEnd(c)}function Wf(){return G.riveScripting.audioSampleRate()}function Xf(c,e,l,n,x,B,D,F,J,O,Q,V,W){c=G.riveScripting.audioStart(c,e,()=>(M(),Eb).slice(l,l+n),x,(M(),Eb).slice(B,B+D),{sampleRate:F,pb:J,channels:O},Q,V);if(!c.ok)return Bj(c.error);(M(),Kb)[W>>2]=c.id;return 0}function Yf(c){G.riveScripting.audioStop(c)}
|
|
1115
1115
|
function mg(c,e,l,n,x,B,D,F,J,O){let Q=!1;e=G.riveScripting.workerStart(e,l,()=>(M(),Eb).slice(n,n+x),B,(M(),Eb).slice(D,D+F),{wait:(V,W,oa)=>Dg(c,V,W,oa),finished:(V,W)=>{if(!Q){Q=!0;if(V){const oa=yg(J,W.length);(M(),Eb).set(W,oa)}Eg(c,V)}},sj:()=>Fg(c)});if(!e.ok)return Bj(e.error);(M(),Kb)[O>>2]=e.id;return 0}function ng(c,e,l){c=G.riveScripting.workerWake(c,e,l);return null===c?0:Bj(c)}function kg(c){c=G.riveScripting.workerCollect(c);return null===c?0:Bj(c)}
|
|
1116
1116
|
function lg(c){G.riveScripting.workerEnd(c)}function td(c){c=Ra[c].F;const e=c.getExtension("WEBGL_shader_pixel_local_storage");if(e&&e.isCoherent()){if(5==e.framebufferTexturePixelLocalStorageWEBGL.length)return c.Fa=e,!0;console.warn("WEBGL_shader_pixel_local_storage is advertised, but a deprecated version has been detected. Disabling.")}return!1}function Dd(c,e,l,n,x,B){(c=Ra[c].F.Fa)&&c.framebufferTexturePixelLocalStorageWEBGL(e,ij[l],n,x,B)}
|
|
1117
|
-
function Cd(c,e,l,n,x,B){(c=Ra[c].F.Fa)&&c.framebufferPixelLocalClearValuefvWEBGL(e,[l,n,x,B])}function Yc(c,e,l){(c=Ra[c].F.Fa)&&c.beginPixelLocalStorageWEBGL(new Uint32Array(
|
|
1117
|
+
function Cd(c,e,l,n,x,B){(c=Ra[c].F.Fa)&&c.framebufferPixelLocalClearValuefvWEBGL(e,[l,n,x,B])}function Yc(c,e,l){(c=Ra[c].F.Fa)&&c.beginPixelLocalStorageWEBGL(new Uint32Array(ib.buffer,4*l,e))}function ud(c,e,l){(c=Ra[c].F.Fa)&&c.endPixelLocalStorageWEBGL(new Uint32Array(ib.buffer,4*l,e))}function sd(c){c=Ra[c].F;c.vb=c.getExtension("WEBGL_provoking_vertex");return!!c.vb}function Sf(c,e){(c=Ra[c].F.vb)&&c.provokingVertexWEBGL(e)}
|
|
1118
1118
|
var Sa,sg,tg,ug,Ab,vg,wg,xg,yg,zg,Ag,Bg,Cg,Dg,Eg,Fg,Gg,Hg,Ig,xb,Db,Jg,Kg,Lg,Mg,Ng,Og,Pg,Qg,Rg,Sg,Ug,Wb;function Qf(c,e,l){var n=Sg();try{Ug.get(c)(e,l)}catch(x){Qg(n);if(x!==x+0)throw x;Ng(1,0)}}
|
|
1119
|
-
function vb(){function c(){G.calledRun=!0;if(!
|
|
1119
|
+
function vb(){function c(){G.calledRun=!0;if(!gb&&(Ob(),nb?.(G),G.onRuntimeInitialized?.(),!ua)){if(G.postRun)for("function"==typeof G.postRun&&(G.postRun=[G.postRun]);G.postRun.length;){var e=G.postRun.shift();uh.push(e)}Zg(uh)}}if(0<ah)bh=vb;else if(ua)nb?.(G),Ob();else{if(G.preRun)for("function"==typeof G.preRun&&(G.preRun=[G.preRun]);G.preRun.length;)$g.push(G.preRun.shift());Zg($g);0<ah?bh=vb:G.setStatus?(G.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>G.setStatus(""),1);c()},1)):c()}}
|
|
1120
1120
|
var Pb;ua||(Pb=await (rb()),vb());Nb?moduleRtn=G:moduleRtn=new Promise((c,e)=>{nb=c;ob=e});
|
|
1121
1121
|
;return moduleRtn}})();
|
|
1122
1122
|
var isPthread=globalThis.self?.name?.startsWith("em-pthread");isPthread&&Rive();
|
|
@@ -1138,7 +1138,7 @@ let riveWorker;
|
|
|
1138
1138
|
/* 6 */
|
|
1139
1139
|
/***/ ((module) => {
|
|
1140
1140
|
|
|
1141
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@rive-app/webgl2-threads","version":"2.
|
|
1141
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@rive-app/webgl2-threads","version":"2.48.0","description":"Rive\'s webgl2 based web api, with threads on cross origin isolated pages.","main":"rive.js","homepage":"https://rive.app","repository":{"type":"git","url":"https://github.com/rive-app/rive-wasm/tree/master/js"},"keywords":["rive","animation"],"author":"Rive","contributors":["Luigi Rosso <luigi@rive.app> (https://rive.app)","Maxwell Talbot <max@rive.app> (https://rive.app)","Arthur Vivian <arthur@rive.app> (https://rive.app)","Umberto Sonnino <umberto@rive.app> (https://rive.app)","Matthew Sullivan <matt.j.sullivan@gmail.com> (mailto:matt.j.sullivan@gmail.com)","Chris Dalton <chris@rive.app> (https://rive.app)"],"license":"MIT","files":["rive.js","rive.wasm","rive_fallback.wasm","rive_threads.wasm","rive.js.map","rive.d.ts","rive_advanced.mjs.d.ts","runtimeLoader.d.ts","utils","semantics"],"typings":"rive.d.ts","dependencies":{},"browser":{"fs":false,"path":false}}');
|
|
1142
1142
|
|
|
1143
1143
|
/***/ }),
|
|
1144
1144
|
/* 7 */
|
|
@@ -3270,29 +3270,32 @@ function canvasOffset(canvas) {
|
|
|
3270
3270
|
|
|
3271
3271
|
__webpack_require__.r(__webpack_exports__);
|
|
3272
3272
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3273
|
-
/* harmony export */ AudioAssetWrapper: () => (/* reexport safe */
|
|
3274
|
-
/* harmony export */ AudioWrapper: () => (/* reexport safe */
|
|
3275
|
-
/* harmony export */ BLANK_URL: () => (/* reexport safe */
|
|
3276
|
-
/* harmony export */ CustomFileAssetLoaderWrapper: () => (/* reexport safe */
|
|
3277
|
-
/* harmony export */ FileAssetWrapper: () => (/* reexport safe */
|
|
3278
|
-
/* harmony export */ FileFinalizer: () => (/* reexport safe */
|
|
3273
|
+
/* harmony export */ AudioAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.AudioAssetWrapper),
|
|
3274
|
+
/* harmony export */ AudioWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.AudioWrapper),
|
|
3275
|
+
/* harmony export */ BLANK_URL: () => (/* reexport safe */ _sanitizeUrl__WEBPACK_IMPORTED_MODULE_3__.BLANK_URL),
|
|
3276
|
+
/* harmony export */ CustomFileAssetLoaderWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.CustomFileAssetLoaderWrapper),
|
|
3277
|
+
/* harmony export */ FileAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.FileAssetWrapper),
|
|
3278
|
+
/* harmony export */ FileFinalizer: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.FileFinalizer),
|
|
3279
3279
|
/* harmony export */ FocusSessionState: () => (/* reexport safe */ _registerKeyboardInteractions__WEBPACK_IMPORTED_MODULE_1__.FocusSessionState),
|
|
3280
|
-
/* harmony export */ FontAssetWrapper: () => (/* reexport safe */
|
|
3281
|
-
/* harmony export */ FontWrapper: () => (/* reexport safe */
|
|
3282
|
-
/* harmony export */
|
|
3283
|
-
/* harmony export */
|
|
3280
|
+
/* harmony export */ FontAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.FontAssetWrapper),
|
|
3281
|
+
/* harmony export */ FontWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.FontWrapper),
|
|
3282
|
+
/* harmony export */ GamepadInteractions: () => (/* reexport safe */ _gamepadInteractions__WEBPACK_IMPORTED_MODULE_2__.GamepadInteractions),
|
|
3283
|
+
/* harmony export */ ImageAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.ImageAssetWrapper),
|
|
3284
|
+
/* harmony export */ ImageWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.ImageWrapper),
|
|
3284
3285
|
/* harmony export */ KeyboardInteractions: () => (/* reexport safe */ _registerKeyboardInteractions__WEBPACK_IMPORTED_MODULE_1__.KeyboardInteractions),
|
|
3285
|
-
/* harmony export */ RiveFont: () => (/* reexport safe */
|
|
3286
|
-
/* harmony export */ createFinalization: () => (/* reexport safe */
|
|
3287
|
-
/* harmony export */ finalizationRegistry: () => (/* reexport safe */
|
|
3286
|
+
/* harmony export */ RiveFont: () => (/* reexport safe */ _riveFont__WEBPACK_IMPORTED_MODULE_5__.RiveFont),
|
|
3287
|
+
/* harmony export */ createFinalization: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.createFinalization),
|
|
3288
|
+
/* harmony export */ finalizationRegistry: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__.finalizationRegistry),
|
|
3288
3289
|
/* harmony export */ registerTouchInteractions: () => (/* reexport safe */ _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__.registerTouchInteractions),
|
|
3289
|
-
/* harmony export */ sanitizeUrl: () => (/* reexport safe */
|
|
3290
|
+
/* harmony export */ sanitizeUrl: () => (/* reexport safe */ _sanitizeUrl__WEBPACK_IMPORTED_MODULE_3__.sanitizeUrl)
|
|
3290
3291
|
/* harmony export */ });
|
|
3291
3292
|
/* harmony import */ var _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
|
|
3292
3293
|
/* harmony import */ var _registerKeyboardInteractions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
|
|
3293
|
-
/* harmony import */ var
|
|
3294
|
-
/* harmony import */ var
|
|
3295
|
-
/* harmony import */ var
|
|
3294
|
+
/* harmony import */ var _gamepadInteractions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
|
|
3295
|
+
/* harmony import */ var _sanitizeUrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
|
|
3296
|
+
/* harmony import */ var _finalizationRegistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21);
|
|
3297
|
+
/* harmony import */ var _riveFont__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(22);
|
|
3298
|
+
|
|
3296
3299
|
|
|
3297
3300
|
|
|
3298
3301
|
|
|
@@ -4908,6 +4911,393 @@ function clamp(v, min, max) {
|
|
|
4908
4911
|
/* 18 */
|
|
4909
4912
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4910
4913
|
|
|
4914
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4915
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4916
|
+
/* harmony export */ GamepadInteractions: () => (/* binding */ GamepadInteractions)
|
|
4917
|
+
/* harmony export */ });
|
|
4918
|
+
/* harmony import */ var _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
|
|
4919
|
+
|
|
4920
|
+
// Standard mapping: 17 buttons, 4 stick axes, plus triggers mirrored onto axes 4/5.
|
|
4921
|
+
var STANDARD_BUTTON_COUNT = 17;
|
|
4922
|
+
var STANDARD_STICK_AXIS_COUNT = 4;
|
|
4923
|
+
var LEFT_TRIGGER_BUTTON = 6;
|
|
4924
|
+
var RIGHT_TRIGGER_BUTTON = 7;
|
|
4925
|
+
// Consecutive rejected batches before giving up on a state machine.
|
|
4926
|
+
var MAX_SUBMIT_FAILURES = 3;
|
|
4927
|
+
function zeros(n) {
|
|
4928
|
+
var out = [];
|
|
4929
|
+
for (var i = 0; i < n; i++) {
|
|
4930
|
+
out.push(0);
|
|
4931
|
+
}
|
|
4932
|
+
return out;
|
|
4933
|
+
}
|
|
4934
|
+
function restState(pad) {
|
|
4935
|
+
return {
|
|
4936
|
+
deviceId: pad.deviceId,
|
|
4937
|
+
mapping: pad.mapping,
|
|
4938
|
+
buttons: zeros(pad.buttons.length),
|
|
4939
|
+
axes: zeros(pad.axes.length),
|
|
4940
|
+
};
|
|
4941
|
+
}
|
|
4942
|
+
function readNavigatorGamepads() {
|
|
4943
|
+
if (typeof navigator === "undefined" || !navigator.getGamepads) {
|
|
4944
|
+
return [];
|
|
4945
|
+
}
|
|
4946
|
+
try {
|
|
4947
|
+
return Array.prototype.slice.call(navigator.getGamepads());
|
|
4948
|
+
}
|
|
4949
|
+
catch (_a) {
|
|
4950
|
+
// Permissions-Policy or insecure-origin SecurityError.
|
|
4951
|
+
return [];
|
|
4952
|
+
}
|
|
4953
|
+
}
|
|
4954
|
+
function readButtons(pad, count) {
|
|
4955
|
+
var buttons = [];
|
|
4956
|
+
for (var i = 0; i < count; i++) {
|
|
4957
|
+
buttons.push(pad.buttons[i] ? pad.buttons[i].value : 0);
|
|
4958
|
+
}
|
|
4959
|
+
return buttons;
|
|
4960
|
+
}
|
|
4961
|
+
function toPadState(deviceId, pad) {
|
|
4962
|
+
var _a;
|
|
4963
|
+
if (pad.mapping !== "standard") {
|
|
4964
|
+
// Unknown layout: sent as reported, up to the core's caps.
|
|
4965
|
+
return {
|
|
4966
|
+
deviceId: deviceId,
|
|
4967
|
+
mapping: _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__.GamepadMappingKind.Unknown,
|
|
4968
|
+
buttons: readButtons(pad, Math.min(pad.buttons.length, _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__.GAMEPAD_MAX_BUTTONS)),
|
|
4969
|
+
axes: pad.axes.slice(0, _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__.GAMEPAD_MAX_AXES),
|
|
4970
|
+
};
|
|
4971
|
+
}
|
|
4972
|
+
var buttons = readButtons(pad, STANDARD_BUTTON_COUNT);
|
|
4973
|
+
var axes = [];
|
|
4974
|
+
for (var i = 0; i < STANDARD_STICK_AXIS_COUNT; i++) {
|
|
4975
|
+
axes.push((_a = pad.axes[i]) !== null && _a !== void 0 ? _a : 0);
|
|
4976
|
+
}
|
|
4977
|
+
axes.push(buttons[LEFT_TRIGGER_BUTTON], buttons[RIGHT_TRIGGER_BUTTON]);
|
|
4978
|
+
return { deviceId: deviceId, mapping: _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__.GamepadMappingKind.Standard, buttons: buttons, axes: axes };
|
|
4979
|
+
}
|
|
4980
|
+
/**
|
|
4981
|
+
* Page-wide gamepad reader shared by every Rive instance: one `getGamepads()` per frame,
|
|
4982
|
+
* device ids allocated once (monotonic from 1, never reused), and a single window listener.
|
|
4983
|
+
*/
|
|
4984
|
+
var GamepadSource = /** @class */ (function () {
|
|
4985
|
+
function GamepadSource() {
|
|
4986
|
+
var _this = this;
|
|
4987
|
+
this.subscribers = 0;
|
|
4988
|
+
this.hasPads = false;
|
|
4989
|
+
this.nextDeviceId = 1;
|
|
4990
|
+
this.slots = {};
|
|
4991
|
+
this.cachedTime = NaN;
|
|
4992
|
+
this.cached = [];
|
|
4993
|
+
this.onConnected = function () {
|
|
4994
|
+
_this.hasPads = true;
|
|
4995
|
+
};
|
|
4996
|
+
}
|
|
4997
|
+
GamepadSource.prototype.subscribe = function () {
|
|
4998
|
+
if (this.subscribers++ > 0 || typeof window === "undefined") {
|
|
4999
|
+
return;
|
|
5000
|
+
}
|
|
5001
|
+
window.addEventListener("gamepadconnected", this.onConnected);
|
|
5002
|
+
// The event doesn't re-fire for pads exposed before we started listening.
|
|
5003
|
+
this.hasPads = readNavigatorGamepads().some(function (pad) { return !!pad; });
|
|
5004
|
+
};
|
|
5005
|
+
GamepadSource.prototype.unsubscribe = function () {
|
|
5006
|
+
if (--this.subscribers > 0 || typeof window === "undefined") {
|
|
5007
|
+
return;
|
|
5008
|
+
}
|
|
5009
|
+
window.removeEventListener("gamepadconnected", this.onConnected);
|
|
5010
|
+
this.hasPads = false;
|
|
5011
|
+
this.cachedTime = NaN;
|
|
5012
|
+
this.cached = [];
|
|
5013
|
+
};
|
|
5014
|
+
/** Current pads; cached per rAF timestamp so instances share one read. */
|
|
5015
|
+
GamepadSource.prototype.read = function (time) {
|
|
5016
|
+
if (!this.hasPads) {
|
|
5017
|
+
return [];
|
|
5018
|
+
}
|
|
5019
|
+
if (time === this.cachedTime) {
|
|
5020
|
+
return this.cached;
|
|
5021
|
+
}
|
|
5022
|
+
var pads = [];
|
|
5023
|
+
// Rebuilt each read so emptied slots drop out.
|
|
5024
|
+
var slots = {};
|
|
5025
|
+
var gamepads = readNavigatorGamepads();
|
|
5026
|
+
for (var i = 0; i < gamepads.length; i++) {
|
|
5027
|
+
var pad = gamepads[i];
|
|
5028
|
+
if (!pad || !pad.connected) {
|
|
5029
|
+
continue;
|
|
5030
|
+
}
|
|
5031
|
+
var prev = this.slots[pad.index];
|
|
5032
|
+
var slot = prev && prev.id === pad.id
|
|
5033
|
+
? prev
|
|
5034
|
+
: { deviceId: this.nextDeviceId++, id: pad.id };
|
|
5035
|
+
slots[pad.index] = slot;
|
|
5036
|
+
pads.push(toPadState(slot.deviceId, pad));
|
|
5037
|
+
}
|
|
5038
|
+
this.slots = slots;
|
|
5039
|
+
this.hasPads = pads.length > 0;
|
|
5040
|
+
this.cachedTime = time;
|
|
5041
|
+
this.cached = pads;
|
|
5042
|
+
return pads;
|
|
5043
|
+
};
|
|
5044
|
+
return GamepadSource;
|
|
5045
|
+
}());
|
|
5046
|
+
var gamepadSource = new GamepadSource();
|
|
5047
|
+
/**
|
|
5048
|
+
* Per-Rive-instance gamepad bridge driving a single state machine. Tracks what that state
|
|
5049
|
+
* machine has been sent and submits only the difference, so after a pause it catches up
|
|
5050
|
+
* without duplicate connected events.
|
|
5051
|
+
*/
|
|
5052
|
+
var GamepadInteractions = /** @class */ (function () {
|
|
5053
|
+
function GamepadInteractions(params) {
|
|
5054
|
+
this.params = params;
|
|
5055
|
+
this.encoder = new _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__.GamepadBatchEncoder();
|
|
5056
|
+
// deviceId -> values last sent to `stateMachine`.
|
|
5057
|
+
this.lastSentPads = new Map();
|
|
5058
|
+
this.submitFailures = 0;
|
|
5059
|
+
gamepadSource.subscribe();
|
|
5060
|
+
}
|
|
5061
|
+
/** Poll, diff and submit one batch. Call once per frame before advancing. */
|
|
5062
|
+
GamepadInteractions.prototype.handleGamepadInputs = function (time, stateMachine) {
|
|
5063
|
+
if (!stateMachine) {
|
|
5064
|
+
return;
|
|
5065
|
+
}
|
|
5066
|
+
if (stateMachine !== this.stateMachine) {
|
|
5067
|
+
// A new state machine knows no devices yet; resend connected records.
|
|
5068
|
+
this.stateMachine = stateMachine;
|
|
5069
|
+
this.lastSentPads.clear();
|
|
5070
|
+
this.submitFailures = 0;
|
|
5071
|
+
}
|
|
5072
|
+
if (this.submitFailures >= MAX_SUBMIT_FAILURES) {
|
|
5073
|
+
return;
|
|
5074
|
+
}
|
|
5075
|
+
var pads = gamepadSource.read(time);
|
|
5076
|
+
// Nothing connected and nothing left to disconnect.
|
|
5077
|
+
if (pads.length === 0 && this.lastSentPads.size === 0) {
|
|
5078
|
+
return;
|
|
5079
|
+
}
|
|
5080
|
+
if (this.params.requireFocus && !this.params.isFocusWithin()) {
|
|
5081
|
+
// Keep devices connected but release everything they hold.
|
|
5082
|
+
pads = pads.map(restState);
|
|
5083
|
+
}
|
|
5084
|
+
this.encoder.begin();
|
|
5085
|
+
this.encodeDiff(pads);
|
|
5086
|
+
if (this.encoder.isEmpty) {
|
|
5087
|
+
return;
|
|
5088
|
+
}
|
|
5089
|
+
if (stateMachine.submitGamepadsFromBuffer(this.encoder.end())) {
|
|
5090
|
+
this.submitFailures = 0;
|
|
5091
|
+
return;
|
|
5092
|
+
}
|
|
5093
|
+
// The core stops at the first bad record, so resend connected records next
|
|
5094
|
+
// frame rather than updates for devices it may never have seen.
|
|
5095
|
+
this.lastSentPads.clear();
|
|
5096
|
+
if (++this.submitFailures >= MAX_SUBMIT_FAILURES) {
|
|
5097
|
+
console.error("[Rive] Gamepad input was rejected by the state machine " +
|
|
5098
|
+
"".concat(MAX_SUBMIT_FAILURES, " times in a row; gamepad input is disabled for it."));
|
|
5099
|
+
}
|
|
5100
|
+
};
|
|
5101
|
+
GamepadInteractions.prototype.dispose = function () {
|
|
5102
|
+
this.stateMachine = undefined;
|
|
5103
|
+
this.lastSentPads.clear();
|
|
5104
|
+
gamepadSource.unsubscribe();
|
|
5105
|
+
};
|
|
5106
|
+
/** Writes records that bring `lastSentPads` up to `pads`, updating it as it goes. */
|
|
5107
|
+
GamepadInteractions.prototype.encodeDiff = function (pads) {
|
|
5108
|
+
var _this = this;
|
|
5109
|
+
var present = {};
|
|
5110
|
+
for (var i = 0; i < pads.length; i++) {
|
|
5111
|
+
var pad = pads[i];
|
|
5112
|
+
present[pad.deviceId] = true;
|
|
5113
|
+
var prev = this.lastSentPads.get(pad.deviceId);
|
|
5114
|
+
if (!prev) {
|
|
5115
|
+
// Connect at rest so inputs already held fire as updates.
|
|
5116
|
+
prev = restState(pad);
|
|
5117
|
+
this.encoder.connected(pad.deviceId, pad.mapping, prev.buttons, prev.axes);
|
|
5118
|
+
this.lastSentPads.set(pad.deviceId, prev);
|
|
5119
|
+
}
|
|
5120
|
+
this.encodeChanges(pad.deviceId, _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__.GamepadChangeKind.Button, prev.buttons, pad.buttons);
|
|
5121
|
+
this.encodeChanges(pad.deviceId, _gamepadBatchEncoder__WEBPACK_IMPORTED_MODULE_0__.GamepadChangeKind.Axis, prev.axes, pad.axes);
|
|
5122
|
+
}
|
|
5123
|
+
this.lastSentPads.forEach(function (_, deviceId) {
|
|
5124
|
+
if (!present[deviceId]) {
|
|
5125
|
+
_this.encoder.disconnected(deviceId);
|
|
5126
|
+
_this.lastSentPads.delete(deviceId);
|
|
5127
|
+
}
|
|
5128
|
+
});
|
|
5129
|
+
};
|
|
5130
|
+
GamepadInteractions.prototype.encodeChanges = function (deviceId, kind, prev, next) {
|
|
5131
|
+
for (var i = 0; i < next.length; i++) {
|
|
5132
|
+
var value = next[i];
|
|
5133
|
+
if (value !== prev[i]) {
|
|
5134
|
+
this.encoder.update(deviceId, kind, i, value);
|
|
5135
|
+
prev[i] = value;
|
|
5136
|
+
}
|
|
5137
|
+
}
|
|
5138
|
+
};
|
|
5139
|
+
return GamepadInteractions;
|
|
5140
|
+
}());
|
|
5141
|
+
|
|
5142
|
+
|
|
5143
|
+
|
|
5144
|
+
/***/ }),
|
|
5145
|
+
/* 19 */
|
|
5146
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5147
|
+
|
|
5148
|
+
__webpack_require__.r(__webpack_exports__);
|
|
5149
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
5150
|
+
/* harmony export */ GAMEPAD_BATCH_VERSION: () => (/* binding */ GAMEPAD_BATCH_VERSION),
|
|
5151
|
+
/* harmony export */ GAMEPAD_MAX_AXES: () => (/* binding */ GAMEPAD_MAX_AXES),
|
|
5152
|
+
/* harmony export */ GAMEPAD_MAX_BUTTONS: () => (/* binding */ GAMEPAD_MAX_BUTTONS),
|
|
5153
|
+
/* harmony export */ GamepadBatchEncoder: () => (/* binding */ GamepadBatchEncoder),
|
|
5154
|
+
/* harmony export */ GamepadChangeKind: () => (/* binding */ GamepadChangeKind),
|
|
5155
|
+
/* harmony export */ GamepadMappingKind: () => (/* binding */ GamepadMappingKind),
|
|
5156
|
+
/* harmony export */ GamepadRecordType: () => (/* binding */ GamepadRecordType)
|
|
5157
|
+
/* harmony export */ });
|
|
5158
|
+
/** Must match `rive::kGamepadBatchWireVersion` (runtime/include/rive/input/gamepad_batch.hpp). */
|
|
5159
|
+
var GAMEPAD_BATCH_VERSION = 2;
|
|
5160
|
+
var GAMEPAD_MAX_BUTTONS = 32;
|
|
5161
|
+
var GAMEPAD_MAX_AXES = 16;
|
|
5162
|
+
// Byte sizes of the wire fields/records.
|
|
5163
|
+
var VERSION_SIZE = 4; // u32
|
|
5164
|
+
var VALUE_SIZE = 4; // f32 button/axis value
|
|
5165
|
+
// type(1) + deviceId(4) + mapping(1) + nButtons(1) + nAxes(1) + padding(1); values follow
|
|
5166
|
+
var CONNECTED_HEADER_SIZE = 9;
|
|
5167
|
+
// type(1) + deviceId(4) + nChanges(1) + kind(1) + index(1) + value(4)
|
|
5168
|
+
// Always 12B because we send one change per event, but we could revisit to send larger updates.
|
|
5169
|
+
var UPDATE_RECORD_SIZE = 12;
|
|
5170
|
+
// type(1) + deviceId(4)
|
|
5171
|
+
var DISCONNECTED_RECORD_SIZE = 5;
|
|
5172
|
+
/** C++ `rive::GamepadRecordType`. */
|
|
5173
|
+
var GamepadRecordType;
|
|
5174
|
+
(function (GamepadRecordType) {
|
|
5175
|
+
GamepadRecordType[GamepadRecordType["Connected"] = 0] = "Connected";
|
|
5176
|
+
GamepadRecordType[GamepadRecordType["Update"] = 1] = "Update";
|
|
5177
|
+
GamepadRecordType[GamepadRecordType["Disconnected"] = 2] = "Disconnected";
|
|
5178
|
+
})(GamepadRecordType || (GamepadRecordType = {}));
|
|
5179
|
+
/** C++ `rive::GamepadInputChangeKind`. */
|
|
5180
|
+
var GamepadChangeKind;
|
|
5181
|
+
(function (GamepadChangeKind) {
|
|
5182
|
+
GamepadChangeKind[GamepadChangeKind["Button"] = 0] = "Button";
|
|
5183
|
+
GamepadChangeKind[GamepadChangeKind["Axis"] = 1] = "Axis";
|
|
5184
|
+
})(GamepadChangeKind || (GamepadChangeKind = {}));
|
|
5185
|
+
/** C++ `rive::GamepadMappingKind`. */
|
|
5186
|
+
var GamepadMappingKind;
|
|
5187
|
+
(function (GamepadMappingKind) {
|
|
5188
|
+
GamepadMappingKind[GamepadMappingKind["Standard"] = 0] = "Standard";
|
|
5189
|
+
GamepadMappingKind[GamepadMappingKind["Unknown"] = 1] = "Unknown";
|
|
5190
|
+
})(GamepadMappingKind || (GamepadMappingKind = {}));
|
|
5191
|
+
/**
|
|
5192
|
+
* Builds buffer to send to the state machine for gamepad input connection/updates/disconnect.
|
|
5193
|
+
*
|
|
5194
|
+
* Each `update` record carries a single change: the core
|
|
5195
|
+
* applies and dispatches records in order, so N single-change records in one batch behave like
|
|
5196
|
+
* N separate submits.
|
|
5197
|
+
*
|
|
5198
|
+
* `end()` returns a view into a reused scratch buffer, valid until the next `begin()`.
|
|
5199
|
+
*/
|
|
5200
|
+
var GamepadBatchEncoder = /** @class */ (function () {
|
|
5201
|
+
function GamepadBatchEncoder(initialCapacity) {
|
|
5202
|
+
if (initialCapacity === void 0) { initialCapacity = 256; }
|
|
5203
|
+
this.offset = 0;
|
|
5204
|
+
this.buffer = new ArrayBuffer(initialCapacity);
|
|
5205
|
+
this.view = new DataView(this.buffer);
|
|
5206
|
+
this.bytes = new Uint8Array(this.buffer);
|
|
5207
|
+
}
|
|
5208
|
+
GamepadBatchEncoder.prototype.begin = function () {
|
|
5209
|
+
this.offset = 0;
|
|
5210
|
+
this.ensure(VERSION_SIZE);
|
|
5211
|
+
this.writeU32(GAMEPAD_BATCH_VERSION);
|
|
5212
|
+
};
|
|
5213
|
+
Object.defineProperty(GamepadBatchEncoder.prototype, "isEmpty", {
|
|
5214
|
+
/** True when no records were written since `begin()`. */
|
|
5215
|
+
get: function () {
|
|
5216
|
+
return this.offset <= VERSION_SIZE;
|
|
5217
|
+
},
|
|
5218
|
+
enumerable: false,
|
|
5219
|
+
configurable: true
|
|
5220
|
+
});
|
|
5221
|
+
/** Set up buffer size/initialized values for a connected device */
|
|
5222
|
+
GamepadBatchEncoder.prototype.connected = function (deviceId, mapping, buttonValues, axes) {
|
|
5223
|
+
var nButtons = Math.min(buttonValues.length, GAMEPAD_MAX_BUTTONS);
|
|
5224
|
+
var nAxes = Math.min(axes.length, GAMEPAD_MAX_AXES);
|
|
5225
|
+
this.ensure(CONNECTED_HEADER_SIZE + (nButtons + nAxes) * VALUE_SIZE);
|
|
5226
|
+
this.writeU8(GamepadRecordType.Connected);
|
|
5227
|
+
this.writeI32(deviceId);
|
|
5228
|
+
this.writeU8(mapping);
|
|
5229
|
+
this.writeU8(nButtons);
|
|
5230
|
+
this.writeU8(nAxes);
|
|
5231
|
+
this.writeU8(0); // padding
|
|
5232
|
+
for (var i = 0; i < nButtons; i++) {
|
|
5233
|
+
this.writeF32(buttonValues[i]);
|
|
5234
|
+
}
|
|
5235
|
+
for (var i = 0; i < nAxes; i++) {
|
|
5236
|
+
this.writeF32(axes[i]);
|
|
5237
|
+
}
|
|
5238
|
+
};
|
|
5239
|
+
/** */
|
|
5240
|
+
GamepadBatchEncoder.prototype.update = function (deviceId, kind, index, value) {
|
|
5241
|
+
this.ensure(UPDATE_RECORD_SIZE);
|
|
5242
|
+
this.writeU8(GamepadRecordType.Update);
|
|
5243
|
+
this.writeI32(deviceId);
|
|
5244
|
+
this.writeU8(1); // one change per record
|
|
5245
|
+
this.writeU8(kind);
|
|
5246
|
+
this.writeU8(index);
|
|
5247
|
+
this.writeF32(value);
|
|
5248
|
+
};
|
|
5249
|
+
GamepadBatchEncoder.prototype.disconnected = function (deviceId) {
|
|
5250
|
+
this.ensure(DISCONNECTED_RECORD_SIZE);
|
|
5251
|
+
this.writeU8(GamepadRecordType.Disconnected);
|
|
5252
|
+
this.writeI32(deviceId);
|
|
5253
|
+
};
|
|
5254
|
+
GamepadBatchEncoder.prototype.end = function () {
|
|
5255
|
+
return this.bytes.subarray(0, this.offset);
|
|
5256
|
+
};
|
|
5257
|
+
/** ---------------- Helper/private methods ---------------- */
|
|
5258
|
+
// The below write* methods write a value to the buffer and increment the offset position in our central buffer
|
|
5259
|
+
GamepadBatchEncoder.prototype.writeU8 = function (value) {
|
|
5260
|
+
this.view.setUint8(this.offset, value);
|
|
5261
|
+
this.offset += 1;
|
|
5262
|
+
};
|
|
5263
|
+
GamepadBatchEncoder.prototype.writeU32 = function (value) {
|
|
5264
|
+
this.view.setUint32(this.offset, value, true);
|
|
5265
|
+
this.offset += 4;
|
|
5266
|
+
};
|
|
5267
|
+
GamepadBatchEncoder.prototype.writeI32 = function (value) {
|
|
5268
|
+
this.view.setInt32(this.offset, value, true);
|
|
5269
|
+
this.offset += 4;
|
|
5270
|
+
};
|
|
5271
|
+
GamepadBatchEncoder.prototype.writeF32 = function (value) {
|
|
5272
|
+
this.view.setFloat32(this.offset, value, true);
|
|
5273
|
+
this.offset += 4;
|
|
5274
|
+
};
|
|
5275
|
+
// Increase the byte buffer size if necessary
|
|
5276
|
+
GamepadBatchEncoder.prototype.ensure = function (additional) {
|
|
5277
|
+
var required = this.offset + additional;
|
|
5278
|
+
if (required <= this.buffer.byteLength) {
|
|
5279
|
+
return;
|
|
5280
|
+
}
|
|
5281
|
+
var capacity = this.buffer.byteLength * 2;
|
|
5282
|
+
while (capacity < required) {
|
|
5283
|
+
capacity *= 2;
|
|
5284
|
+
}
|
|
5285
|
+
var grown = new ArrayBuffer(capacity);
|
|
5286
|
+
var grownBytes = new Uint8Array(grown);
|
|
5287
|
+
grownBytes.set(this.bytes.subarray(0, this.offset));
|
|
5288
|
+
this.buffer = grown;
|
|
5289
|
+
this.view = new DataView(grown);
|
|
5290
|
+
this.bytes = grownBytes;
|
|
5291
|
+
};
|
|
5292
|
+
return GamepadBatchEncoder;
|
|
5293
|
+
}());
|
|
5294
|
+
|
|
5295
|
+
|
|
5296
|
+
|
|
5297
|
+
/***/ }),
|
|
5298
|
+
/* 20 */
|
|
5299
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5300
|
+
|
|
4911
5301
|
__webpack_require__.r(__webpack_exports__);
|
|
4912
5302
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4913
5303
|
/* harmony export */ BLANK_URL: () => (/* binding */ BLANK_URL),
|
|
@@ -4958,7 +5348,7 @@ function sanitizeUrl(url) {
|
|
|
4958
5348
|
|
|
4959
5349
|
|
|
4960
5350
|
/***/ }),
|
|
4961
|
-
/*
|
|
5351
|
+
/* 21 */
|
|
4962
5352
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4963
5353
|
|
|
4964
5354
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -5258,7 +5648,7 @@ var createFinalization = function (target, finalizable) {
|
|
|
5258
5648
|
|
|
5259
5649
|
|
|
5260
5650
|
/***/ }),
|
|
5261
|
-
/*
|
|
5651
|
+
/* 22 */
|
|
5262
5652
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
5263
5653
|
|
|
5264
5654
|
__webpack_require__.r(__webpack_exports__);
|
|
@@ -7241,7 +7631,7 @@ var RiveFile = /** @class */ (function () {
|
|
|
7241
7631
|
var Rive = /** @class */ (function () {
|
|
7242
7632
|
function Rive(params) {
|
|
7243
7633
|
var _this = this;
|
|
7244
|
-
var _a, _b, _c, _d;
|
|
7634
|
+
var _a, _b, _c, _d, _e;
|
|
7245
7635
|
// Tracks if a Rive file is loaded
|
|
7246
7636
|
this.loaded = false;
|
|
7247
7637
|
// Tracks if a Rive file is destroyed
|
|
@@ -7272,7 +7662,13 @@ var Rive = /** @class */ (function () {
|
|
|
7272
7662
|
this.eventCleanup = null;
|
|
7273
7663
|
// Manages keyboard and DOM-focus interactions for the canvas.
|
|
7274
7664
|
this._keyboardInteractions = null;
|
|
7665
|
+
// Polls game controllers and forwards input to the first playing state machine.
|
|
7666
|
+
this._gamepadInteractions = null;
|
|
7275
7667
|
this.shouldDisableRiveListeners = false;
|
|
7668
|
+
this.shouldDisableGamepad = false;
|
|
7669
|
+
this._gamepadOptions = {
|
|
7670
|
+
requireFocus: false,
|
|
7671
|
+
};
|
|
7276
7672
|
this.automaticallyHandleEvents = false;
|
|
7277
7673
|
this.dispatchPointerExit = true;
|
|
7278
7674
|
// Allow all pointers to be passed to the runtime
|
|
@@ -7361,6 +7757,31 @@ var Rive = /** @class */ (function () {
|
|
|
7361
7757
|
}
|
|
7362
7758
|
};
|
|
7363
7759
|
this.isEditingHostFocused = function () { var _a, _b; return (_b = (_a = _this._keyboardInteractions) === null || _a === void 0 ? void 0 : _a.isEditingHostFocused()) !== null && _b !== void 0 ? _b : false; };
|
|
7760
|
+
this.isFocusWithinCanvas = function () {
|
|
7761
|
+
var _a, _b, _c;
|
|
7762
|
+
if (typeof document === "undefined") {
|
|
7763
|
+
return false;
|
|
7764
|
+
}
|
|
7765
|
+
// Inside a shadow root, document.activeElement is the shadow host.
|
|
7766
|
+
var root = _this.canvas instanceof HTMLCanvasElement ? _this.canvas.getRootNode() : null;
|
|
7767
|
+
var active = (_a = (typeof ShadowRoot !== "undefined" && root instanceof ShadowRoot
|
|
7768
|
+
? root.activeElement
|
|
7769
|
+
: null)) !== null && _a !== void 0 ? _a : document.activeElement;
|
|
7770
|
+
if (!active) {
|
|
7771
|
+
return false;
|
|
7772
|
+
}
|
|
7773
|
+
// Canvas, overlay and the text input proxy.
|
|
7774
|
+
if (_this._keyboardInteractions) {
|
|
7775
|
+
return _this._keyboardInteractions.isInFocusDomain(active);
|
|
7776
|
+
}
|
|
7777
|
+
if (active === _this.canvas) {
|
|
7778
|
+
return true;
|
|
7779
|
+
}
|
|
7780
|
+
var overlay = (_c = (_b = _this._accessibilityOverlay) === null || _b === void 0 ? void 0 : _b.getSemanticOverlayContainer()) !== null && _c !== void 0 ? _c : null;
|
|
7781
|
+
return !!overlay && overlay.contains(active);
|
|
7782
|
+
};
|
|
7783
|
+
// rAF time of the last frame; 0 makes the next frame start the clock.
|
|
7784
|
+
this.lastRenderTime = 0;
|
|
7364
7785
|
// Tracks the current animation frame request
|
|
7365
7786
|
this.frameRequestId = null;
|
|
7366
7787
|
/**
|
|
@@ -7384,6 +7805,8 @@ var Rive = /** @class */ (function () {
|
|
|
7384
7805
|
this.riveFile = params.riveFile;
|
|
7385
7806
|
this.layout = (_a = params.layout) !== null && _a !== void 0 ? _a : new Layout();
|
|
7386
7807
|
this.shouldDisableRiveListeners = !!params.shouldDisableRiveListeners;
|
|
7808
|
+
this.shouldDisableGamepad = !!params.shouldDisableGamepad;
|
|
7809
|
+
this._gamepadOptions = (_b = params.gamepadOptions) !== null && _b !== void 0 ? _b : this._gamepadOptions;
|
|
7387
7810
|
this.isTouchScrollEnabled = !!params.isTouchScrollEnabled;
|
|
7388
7811
|
if (params.automaticallyHandleEvents) {
|
|
7389
7812
|
warnOnce(DeprecationKeys.riveEvents, "The `automaticallyHandleEvents` parameter is deprecated. " +
|
|
@@ -7395,7 +7818,7 @@ var Rive = /** @class */ (function () {
|
|
|
7395
7818
|
? params.dispatchPointerExit
|
|
7396
7819
|
: this.dispatchPointerExit;
|
|
7397
7820
|
this.enableMultiTouch = !!params.enableMultiTouch;
|
|
7398
|
-
this.drawOptimization = (
|
|
7821
|
+
this.drawOptimization = (_c = params.drawingOptions) !== null && _c !== void 0 ? _c : this.drawOptimization;
|
|
7399
7822
|
this.enableRiveAssetCDN =
|
|
7400
7823
|
params.enableRiveAssetCDN === undefined
|
|
7401
7824
|
? true
|
|
@@ -7403,8 +7826,8 @@ var Rive = /** @class */ (function () {
|
|
|
7403
7826
|
this.enablePerfMarks = !!params.enablePerfMarks;
|
|
7404
7827
|
if (this.enablePerfMarks)
|
|
7405
7828
|
_runtimeLoader__WEBPACK_IMPORTED_MODULE_1__.RuntimeLoader.enablePerfMarks = true;
|
|
7406
|
-
this._focusOptions = (
|
|
7407
|
-
this._tabIndex = (
|
|
7829
|
+
this._focusOptions = (_d = params.focusOptions) !== null && _d !== void 0 ? _d : this._focusOptions;
|
|
7830
|
+
this._tabIndex = (_e = params.tabIndex) !== null && _e !== void 0 ? _e : null;
|
|
7408
7831
|
this.deferredRenderer = !!params.enableGPUCanvas;
|
|
7409
7832
|
this._inkbleedCapable = !!params.enableInkbleed;
|
|
7410
7833
|
this._inkbleed = this._inkbleedCapable;
|
|
@@ -7594,6 +8017,7 @@ var Rive = /** @class */ (function () {
|
|
|
7594
8017
|
// Ensure loaded is marked as false if loading new file
|
|
7595
8018
|
this.loaded = false;
|
|
7596
8019
|
this.readyForPlaying = false;
|
|
8020
|
+
this.lastRenderTime = 0;
|
|
7597
8021
|
// Ensure the runtime is loaded
|
|
7598
8022
|
_runtimeLoader__WEBPACK_IMPORTED_MODULE_1__.RuntimeLoader.awaitInstance()
|
|
7599
8023
|
.then(function (runtime) {
|
|
@@ -7691,6 +8115,7 @@ var Rive = /** @class */ (function () {
|
|
|
7691
8115
|
isTextProxyFocused: this.isEditingHostFocused,
|
|
7692
8116
|
});
|
|
7693
8117
|
this.ensureKeyboardInteractions();
|
|
8118
|
+
this.ensureGamepadInteractions();
|
|
7694
8119
|
}
|
|
7695
8120
|
};
|
|
7696
8121
|
Object.defineProperty(Rive.prototype, "focusStateMachine", {
|
|
@@ -7769,6 +8194,23 @@ var Rive = /** @class */ (function () {
|
|
|
7769
8194
|
this._prevWantsTextInputSession = false;
|
|
7770
8195
|
(_a = this._accessibilityOverlay) === null || _a === void 0 ? void 0 : _a.releaseEditingHost(null, null);
|
|
7771
8196
|
};
|
|
8197
|
+
// Survives play/pause/stop so the state machine only receives missed changes on resume.
|
|
8198
|
+
Rive.prototype.ensureGamepadInteractions = function () {
|
|
8199
|
+
if (this._gamepadInteractions ||
|
|
8200
|
+
this.shouldDisableGamepad ||
|
|
8201
|
+
this.shouldDisableRiveListeners) {
|
|
8202
|
+
return;
|
|
8203
|
+
}
|
|
8204
|
+
this._gamepadInteractions = new _utils__WEBPACK_IMPORTED_MODULE_3__.GamepadInteractions({
|
|
8205
|
+
requireFocus: !!this._gamepadOptions.requireFocus,
|
|
8206
|
+
isFocusWithin: this.isFocusWithinCanvas,
|
|
8207
|
+
});
|
|
8208
|
+
};
|
|
8209
|
+
Rive.prototype.cleanupGamepadInteractions = function () {
|
|
8210
|
+
var _a;
|
|
8211
|
+
(_a = this._gamepadInteractions) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
8212
|
+
this._gamepadInteractions = null;
|
|
8213
|
+
};
|
|
7772
8214
|
/**
|
|
7773
8215
|
* Remove Rive Listeners setup on the canvas
|
|
7774
8216
|
*/
|
|
@@ -8075,7 +8517,7 @@ var Rive = /** @class */ (function () {
|
|
|
8075
8517
|
var _a, _b;
|
|
8076
8518
|
if ((_a = document === null || document === void 0 ? void 0 : document.timeline) === null || _a === void 0 ? void 0 : _a.currentTime) {
|
|
8077
8519
|
if (this.loaded && this.artboard && !this.frameRequestId) {
|
|
8078
|
-
this.
|
|
8520
|
+
this.draw(null);
|
|
8079
8521
|
(_b = this.runtime) === null || _b === void 0 ? void 0 : _b.resolveAnimationFrame();
|
|
8080
8522
|
}
|
|
8081
8523
|
}
|
|
@@ -8175,9 +8617,10 @@ var Rive = /** @class */ (function () {
|
|
|
8175
8617
|
* due to state changes, view model property changes, etc.
|
|
8176
8618
|
*
|
|
8177
8619
|
* @param elapsedTime time to advance the state machine by
|
|
8620
|
+
* @param frameTime the rAF timestamp; omitted by pointer drains, which skip gamepad polling.
|
|
8178
8621
|
*/
|
|
8179
|
-
Rive.prototype.advanceAndReportChanges = function (elapsedTime) {
|
|
8180
|
-
var _a, _b;
|
|
8622
|
+
Rive.prototype.advanceAndReportChanges = function (elapsedTime, frameTime) {
|
|
8623
|
+
var _a, _b, _c, _d;
|
|
8181
8624
|
// - Advance non-paused animations by the elapsed number of seconds
|
|
8182
8625
|
// - Advance any animations that require scrubbing
|
|
8183
8626
|
// - Advance to the first frame even when autoplay is false
|
|
@@ -8197,11 +8640,16 @@ var Rive = /** @class */ (function () {
|
|
|
8197
8640
|
// - Advance non-paused state machines by the elapsed number of seconds
|
|
8198
8641
|
// - Advance to the first frame even when autoplay is false
|
|
8199
8642
|
var activeStateMachines = this.animator.stateMachines.filter(function (a) { return a.playing; });
|
|
8643
|
+
// Gamepad input lands before this frame's advance.
|
|
8644
|
+
// Also, frameTime is not passed for other places this function is called (i.e. after pointer events)
|
|
8645
|
+
if (frameTime !== undefined) {
|
|
8646
|
+
(_a = this._gamepadInteractions) === null || _a === void 0 ? void 0 : _a.handleGamepadInputs(frameTime, (_b = activeStateMachines[0]) === null || _b === void 0 ? void 0 : _b.instance);
|
|
8647
|
+
}
|
|
8200
8648
|
// Instrument the first 3 frames so the Performance timeline shows precise
|
|
8201
8649
|
// per-call latency for advance, draw, and flush without polluting the trace.
|
|
8202
8650
|
var _perfFrame = this.enablePerfMarks && this.frameCount < 3 ? this.frameCount : -1;
|
|
8203
|
-
for (var
|
|
8204
|
-
var stateMachine = activeStateMachines_1[
|
|
8651
|
+
for (var _e = 0, activeStateMachines_1 = activeStateMachines; _e < activeStateMachines_1.length; _e++) {
|
|
8652
|
+
var stateMachine = activeStateMachines_1[_e];
|
|
8205
8653
|
// Check for events before the current frame's state machine advance
|
|
8206
8654
|
var numEventsReported = stateMachine.reportedEventCount();
|
|
8207
8655
|
if (numEventsReported) {
|
|
@@ -8216,7 +8664,7 @@ var Rive = /** @class */ (function () {
|
|
|
8216
8664
|
// Handle the event side effect if explicitly enabled
|
|
8217
8665
|
if (this.automaticallyHandleEvents) {
|
|
8218
8666
|
var newAnchorTag = document.createElement("a");
|
|
8219
|
-
var
|
|
8667
|
+
var _f = event_1, url = _f.url, target = _f.target;
|
|
8220
8668
|
var sanitizedUrl = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.sanitizeUrl)(url);
|
|
8221
8669
|
url && newAnchorTag.setAttribute("href", sanitizedUrl);
|
|
8222
8670
|
target && newAnchorTag.setAttribute("target", target);
|
|
@@ -8276,7 +8724,7 @@ var Rive = /** @class */ (function () {
|
|
|
8276
8724
|
},
|
|
8277
8725
|
});
|
|
8278
8726
|
}
|
|
8279
|
-
var overlayChange = (
|
|
8727
|
+
var overlayChange = (_c = this._accessibilityOverlay) === null || _c === void 0 ? void 0 : _c.needsUpdate(this._semanticTree);
|
|
8280
8728
|
if (overlayChange || this._overlayTransformDirty) {
|
|
8281
8729
|
// Only recompute the artboard→canvas transform when something that
|
|
8282
8730
|
// affects it changed (canvas geometry or a layout/dpr input). When only
|
|
@@ -8311,8 +8759,11 @@ var Rive = /** @class */ (function () {
|
|
|
8311
8759
|
this.animator.handleAdvancing(elapsedTime);
|
|
8312
8760
|
// Poll focus state to see whether or not to blur or pull up a virtual keyboard for any change to a text input node.
|
|
8313
8761
|
this.pollFocusState();
|
|
8762
|
+
// Reattaches after reset(), which doesn't rerun setupRiveListeners. Runs after the
|
|
8763
|
+
// advance so a new state machine has its initial focus before input arrives.
|
|
8764
|
+
this.ensureGamepadInteractions();
|
|
8314
8765
|
// Handle callbacks for main view model property changes
|
|
8315
|
-
(
|
|
8766
|
+
(_d = this._viewModelInstance) === null || _d === void 0 ? void 0 : _d.handleCallbacks();
|
|
8316
8767
|
// Handle callbacks for global view model property changes
|
|
8317
8768
|
this._globalViewModelInstances.forEach(function (instance) {
|
|
8318
8769
|
if (instance) {
|
|
@@ -8322,7 +8773,7 @@ var Rive = /** @class */ (function () {
|
|
|
8322
8773
|
};
|
|
8323
8774
|
/**
|
|
8324
8775
|
* Draw rendering loop; renders animation frames at the correct time interval.
|
|
8325
|
-
* @param time the
|
|
8776
|
+
* @param time the rAF timestamp, or null to draw now without advancing
|
|
8326
8777
|
*/
|
|
8327
8778
|
Rive.prototype.draw = function (time, onSecond) {
|
|
8328
8779
|
// Clear the frameRequestId, as we're now rendering a fresh frame
|
|
@@ -8336,20 +8787,31 @@ var Rive = /** @class */ (function () {
|
|
|
8336
8787
|
// Instrument the first 3 frames so the Performance timeline shows precise
|
|
8337
8788
|
// per-call latency for advance, draw, and flush without polluting the trace.
|
|
8338
8789
|
var _perfFrame = this.enablePerfMarks && this.frameCount < 3 ? this.frameCount : -1;
|
|
8339
|
-
|
|
8340
|
-
if (
|
|
8790
|
+
var batch = Rive.batchStart;
|
|
8791
|
+
if (time !== null && batch.time !== time) {
|
|
8792
|
+
batch.time = time;
|
|
8793
|
+
batch.now = before;
|
|
8794
|
+
}
|
|
8795
|
+
// A frame queued during a long task is stamped inside it: start at now.
|
|
8796
|
+
if (!this.lastRenderTime && time !== null) {
|
|
8797
|
+
this.lastRenderTime = Math.max(time, batch.now);
|
|
8798
|
+
}
|
|
8799
|
+
else if (time !== null && time < this.lastRenderTime) {
|
|
8800
|
+
// The now-seed can lead the next stamp by a vsync; restart, don't freeze.
|
|
8341
8801
|
this.lastRenderTime = time;
|
|
8342
8802
|
}
|
|
8803
|
+
// Out-of-frame draws keep the clock: timeline time is frozen per task.
|
|
8804
|
+
var frameTime = time === null ? this.lastRenderTime : Math.max(time, this.lastRenderTime);
|
|
8343
8805
|
// Handle the onSecond callback
|
|
8344
|
-
this.renderSecondTimer +=
|
|
8806
|
+
this.renderSecondTimer += frameTime - this.lastRenderTime;
|
|
8345
8807
|
if (this.renderSecondTimer > 5000) {
|
|
8346
8808
|
this.renderSecondTimer = 0;
|
|
8347
8809
|
onSecond === null || onSecond === void 0 ? void 0 : onSecond();
|
|
8348
8810
|
}
|
|
8349
8811
|
// Calculate the elapsed time between frames in seconds
|
|
8350
|
-
var elapsedTime = (
|
|
8351
|
-
this.lastRenderTime =
|
|
8352
|
-
this.advanceAndReportChanges(elapsedTime);
|
|
8812
|
+
var elapsedTime = (frameTime - this.lastRenderTime) / 1000;
|
|
8813
|
+
this.lastRenderTime = frameTime;
|
|
8814
|
+
this.advanceAndReportChanges(elapsedTime, time);
|
|
8353
8815
|
var renderer = this.renderer;
|
|
8354
8816
|
// Do not draw on 0 canvas size
|
|
8355
8817
|
if (!this._hasZeroSize) {
|
|
@@ -8563,6 +9025,7 @@ var Rive = /** @class */ (function () {
|
|
|
8563
9025
|
this.eventCleanup();
|
|
8564
9026
|
}
|
|
8565
9027
|
this.cleanupKeyboardInteractions();
|
|
9028
|
+
this.cleanupGamepadInteractions();
|
|
8566
9029
|
// Tear down semantics before deleting state machines — the overlay's action
|
|
8567
9030
|
// closures point at instances that stop() is about to free.
|
|
8568
9031
|
this.cleanupSemantics();
|
|
@@ -9756,6 +10219,8 @@ var Rive = /** @class */ (function () {
|
|
|
9756
10219
|
Rive.missingErrorMessage = "Rive source file or data buffer required";
|
|
9757
10220
|
// Error message for removed rive file
|
|
9758
10221
|
Rive.cleanupErrorMessage = "Attempt to use file after calling cleanup.";
|
|
10222
|
+
// performance.now() at the current rAF batch's start; first frames seed from it.
|
|
10223
|
+
Rive.batchStart = { time: -1, now: 0 };
|
|
9759
10224
|
return Rive;
|
|
9760
10225
|
}());
|
|
9761
10226
|
|