@pelotto-tech/bellwether 0.0.0 → 0.1.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/LICENSE +202 -0
- package/README.md +228 -1
- package/dist/agents/claude.d.ts +8 -0
- package/dist/agents/claude.js +63 -0
- package/dist/agents/claude.js.map +1 -0
- package/dist/agents/copilot.d.ts +7 -0
- package/dist/agents/copilot.js +39 -0
- package/dist/agents/copilot.js.map +1 -0
- package/dist/agents/index.d.ts +5 -0
- package/dist/agents/index.js +8 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/paths.d.ts +2 -0
- package/dist/agents/paths.js +5 -0
- package/dist/agents/paths.js.map +1 -0
- package/dist/agents/types.d.ts +29 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +38 -0
- package/dist/install.js +104 -0
- package/dist/install.js.map +1 -0
- package/dist/json-file.d.ts +12 -0
- package/dist/json-file.js +33 -0
- package/dist/json-file.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +75 -0
- package/dist/main.js.map +1 -0
- package/dist/roles.d.ts +3 -0
- package/dist/roles.js +13 -0
- package/dist/roles.js.map +1 -0
- package/dist/run.d.ts +9 -0
- package/dist/run.js +41 -0
- package/dist/run.js.map +1 -0
- package/dist/skill.d.ts +9 -0
- package/dist/skill.js +65 -0
- package/dist/skill.js.map +1 -0
- package/package.json +53 -6
- package/runtime/adapter/dist/actions.d.ts +15 -0
- package/runtime/adapter/dist/actions.js +7 -0
- package/runtime/adapter/dist/actions.js.map +1 -0
- package/runtime/adapter/dist/bin.d.ts +2 -0
- package/runtime/adapter/dist/bin.js +121 -0
- package/runtime/adapter/dist/bin.js.map +1 -0
- package/runtime/adapter/dist/config.d.ts +41 -0
- package/runtime/adapter/dist/config.js +71 -0
- package/runtime/adapter/dist/config.js.map +1 -0
- package/runtime/adapter/dist/core.d.ts +8 -0
- package/runtime/adapter/dist/core.js +10 -0
- package/runtime/adapter/dist/core.js.map +1 -0
- package/runtime/adapter/dist/herdr/connection.d.ts +34 -0
- package/runtime/adapter/dist/herdr/connection.js +137 -0
- package/runtime/adapter/dist/herdr/connection.js.map +1 -0
- package/runtime/adapter/dist/herdr/index.d.ts +5 -0
- package/runtime/adapter/dist/herdr/index.js +5 -0
- package/runtime/adapter/dist/herdr/index.js.map +1 -0
- package/runtime/adapter/dist/herdr/mapper.d.ts +27 -0
- package/runtime/adapter/dist/herdr/mapper.js +141 -0
- package/runtime/adapter/dist/herdr/mapper.js.map +1 -0
- package/runtime/adapter/dist/herdr/paths.d.ts +29 -0
- package/runtime/adapter/dist/herdr/paths.js +89 -0
- package/runtime/adapter/dist/herdr/paths.js.map +1 -0
- package/runtime/adapter/dist/herdr/protocol.d.ts +102 -0
- package/runtime/adapter/dist/herdr/protocol.js +19 -0
- package/runtime/adapter/dist/herdr/protocol.js.map +1 -0
- package/runtime/adapter/dist/herdr/source.d.ts +99 -0
- package/runtime/adapter/dist/herdr/source.js +316 -0
- package/runtime/adapter/dist/herdr/source.js.map +1 -0
- package/runtime/adapter/dist/index.d.ts +6 -0
- package/runtime/adapter/dist/index.js +7 -0
- package/runtime/adapter/dist/index.js.map +1 -0
- package/runtime/adapter/dist/mock.d.ts +33 -0
- package/runtime/adapter/dist/mock.js +130 -0
- package/runtime/adapter/dist/mock.js.map +1 -0
- package/runtime/adapter/dist/random.d.ts +3 -0
- package/runtime/adapter/dist/random.js +18 -0
- package/runtime/adapter/dist/random.js.map +1 -0
- package/runtime/adapter/dist/recording.d.ts +22 -0
- package/runtime/adapter/dist/recording.js +52 -0
- package/runtime/adapter/dist/recording.js.map +1 -0
- package/runtime/adapter/dist/roles.d.ts +16 -0
- package/runtime/adapter/dist/roles.js +21 -0
- package/runtime/adapter/dist/roles.js.map +1 -0
- package/runtime/adapter/dist/rollup.d.ts +5 -0
- package/runtime/adapter/dist/rollup.js +18 -0
- package/runtime/adapter/dist/rollup.js.map +1 -0
- package/runtime/adapter/dist/scrub.d.ts +9 -0
- package/runtime/adapter/dist/scrub.js +56 -0
- package/runtime/adapter/dist/scrub.js.map +1 -0
- package/runtime/adapter/dist/server.d.ts +47 -0
- package/runtime/adapter/dist/server.js +119 -0
- package/runtime/adapter/dist/server.js.map +1 -0
- package/runtime/adapter/dist/source.d.ts +20 -0
- package/runtime/adapter/dist/source.js +14 -0
- package/runtime/adapter/dist/source.js.map +1 -0
- package/runtime/adapter/dist/types.d.ts +66 -0
- package/runtime/adapter/dist/types.js +23 -0
- package/runtime/adapter/dist/types.js.map +1 -0
- package/runtime/adapter/dist/world.d.ts +9 -0
- package/runtime/adapter/dist/world.js +64 -0
- package/runtime/adapter/dist/world.js.map +1 -0
- package/runtime/adapter/package.json +37 -0
- package/runtime/renderer/dist/assets/BitmapFont-CrMu5gVf.js +6 -0
- package/runtime/renderer/dist/assets/CanvasRenderer-BJUwGe2K.js +1 -0
- package/runtime/renderer/dist/assets/Filter-CYMWP98C.js +1 -0
- package/runtime/renderer/dist/assets/RenderTargetSystem-CUv6yCH8.js +184 -0
- package/runtime/renderer/dist/assets/WebGLRenderer-DT-aSeEc.js +156 -0
- package/runtime/renderer/dist/assets/WebGPURenderer-CV0poHB6.js +75 -0
- package/runtime/renderer/dist/assets/browserAll-BpE2Jy31.js +14 -0
- package/runtime/renderer/dist/assets/getTexelRangeRects-BCdgu8cV.js +195 -0
- package/runtime/renderer/dist/assets/index-BgIYSiaY.js +296 -0
- package/runtime/renderer/dist/assets/webworkerAll-DEtPMT-J.js +83 -0
- package/runtime/renderer/dist/index.html +36 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./browserAll-BpE2Jy31.js","./webworkerAll-DEtPMT-J.js","./Filter-CYMWP98C.js","./WebGPURenderer-CV0poHB6.js","./getTexelRangeRects-BCdgu8cV.js","./RenderTargetSystem-CUv6yCH8.js","./WebGLRenderer-DT-aSeEc.js","./CanvasRenderer-BJUwGe2K.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(i){if(i.ep)return;i.ep=!0;const a=t(i);fetch(i.href,a)}})();const Ol="modulepreload",Nl=function(r,e){return new URL(r,e).href},Zi={},Et=function(e,t,s){let i=Promise.resolve();if(t&&t.length>0){let h=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};const o=document.getElementsByTagName("link"),n=document.querySelector("meta[property=csp-nonce]"),l=n?.nonce||n?.getAttribute("nonce");i=h(t.map(c=>{if(c=Nl(c,s),c in Zi)return;Zi[c]=!0;const u=c.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(s)for(let m=o.length-1;m>=0;m--){const p=o[m];if(p.href===c&&(!u||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${f}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":Ol,u||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),u)return new Promise((m,p)=>{d.addEventListener("load",m),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${c}`)))})}))}function a(o){const n=new Event("vite:preloadError",{cancelable:!0});if(n.payload=o,window.dispatchEvent(n),!n.defaultPrevented)throw o}return i.then(o=>{for(const n of o||[])n.status==="rejected"&&a(n.reason);return e().catch(a)})};var M=(r=>(r.Application="application",r.WebGLPipes="webgl-pipes",r.WebGLPipesAdaptor="webgl-pipes-adaptor",r.WebGLSystem="webgl-system",r.WebGLLoader="webgl-loader",r.WebGPUPipes="webgpu-pipes",r.WebGPUPipesAdaptor="webgpu-pipes-adaptor",r.WebGPUSystem="webgpu-system",r.WebGPULoader="webgpu-loader",r.CanvasSystem="canvas-system",r.CanvasPipesAdaptor="canvas-pipes-adaptor",r.CanvasPipes="canvas-pipes",r.CanvasLoader="canvas-loader",r.Asset="asset",r.LoadParser="load-parser",r.ResolveParser="resolve-parser",r.CacheParser="cache-parser",r.DetectionParser="detection-parser",r.MaskEffect="mask-effect",r.BlendMode="blend-mode",r.TextureSource="texture-source",r.TextureUploaderWebGL="texture-uploader-webgl",r.TextureUploaderWebGPU="texture-uploader-webgpu",r.Environment="environment",r.ShapeBuilder="shape-builder",r.Batcher="batcher",r))(M||{});const ei=r=>{if(typeof r=="function"||typeof r=="object"&&r.extension){if(!r.extension)throw new Error("Extension class must have an extension object");r={...typeof r.extension!="object"?{type:r.extension}:r.extension,ref:r}}if(typeof r=="object")r={...r};else throw new Error("Invalid extension type");return typeof r.type=="string"&&(r.type=[r.type]),r},wr=(r,e)=>ei(r).priority??e,Q={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...r){return r.map(ei).forEach(e=>{e.type.forEach(t=>this._removeHandlers[t]?.(e))}),this},add(...r){return r.map(ei).forEach(e=>{e.type.forEach(t=>{const s=this._addHandlers,i=this._queue;s[t]?s[t]?.(e):(i[t]=i[t]||[],i[t]?.push(e))})}),this},handle(r,e,t){const s=this._addHandlers,i=this._removeHandlers;if(s[r]||i[r])throw new Error(`Extension type ${r} already has a handler`);s[r]=e,i[r]=t;const a=this._queue;return a[r]&&(a[r]?.forEach(o=>e(o)),delete a[r]),this},handleByMap(r,e){return this.handle(r,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByNamedList(r,e,t=-1){return this.handle(r,s=>{e.findIndex(a=>a.name===s.name)>=0||(e.push({name:s.name,value:s.ref}),e.sort((a,o)=>wr(o.value,t)-wr(a.value,t)))},s=>{const i=e.findIndex(a=>a.name===s.name);i!==-1&&e.splice(i,1)})},handleByList(r,e,t=-1){return this.handle(r,s=>{e.includes(s.ref)||(e.push(s.ref),e.sort((i,a)=>wr(a,t)-wr(i,t)))},s=>{const i=e.indexOf(s.ref);i!==-1&&e.splice(i,1)})},mixin(r,...e){for(const t of e)Object.defineProperties(r.prototype,Object.getOwnPropertyDescriptors(t))}},Ul={extension:{type:M.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Et(()=>import("./browserAll-BpE2Jy31.js"),__vite__mapDeps([0,1,2]),import.meta.url)}},Xl={extension:{type:M.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await Et(()=>import("./webworkerAll-DEtPMT-J.js"),__vite__mapDeps([1,2]),import.meta.url)}};class le{constructor(e,t,s){this._x=t||0,this._y=s||0,this._observer=e}clone(e){return new le(e??this._observer,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this._observer._onUpdate(this)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this._observer._onUpdate(this)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=${this._x} y=${this._y} scope=${this._observer}]`}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this._observer._onUpdate(this))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this._observer._onUpdate(this))}}function Wl(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ls={exports:{}},Ji;function jl(){return Ji||(Ji=1,(function(r){var e=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function i(l,h,c){this.fn=l,this.context=h,this.once=c||!1}function a(l,h,c,u,f){if(typeof c!="function")throw new TypeError("The listener must be a function");var d=new i(c,u||l,f),m=t?t+h:h;return l._events[m]?l._events[m].fn?l._events[m]=[l._events[m],d]:l._events[m].push(d):(l._events[m]=d,l._eventsCount++),l}function o(l,h){--l._eventsCount===0?l._events=new s:delete l._events[h]}function n(){this._events=new s,this._eventsCount=0}n.prototype.eventNames=function(){var h=[],c,u;if(this._eventsCount===0)return h;for(u in c=this._events)e.call(c,u)&&h.push(t?u.slice(1):u);return Object.getOwnPropertySymbols?h.concat(Object.getOwnPropertySymbols(c)):h},n.prototype.listeners=function(h){var c=t?t+h:h,u=this._events[c];if(!u)return[];if(u.fn)return[u.fn];for(var f=0,d=u.length,m=new Array(d);f<d;f++)m[f]=u[f].fn;return m},n.prototype.listenerCount=function(h){var c=t?t+h:h,u=this._events[c];return u?u.fn?1:u.length:0},n.prototype.emit=function(h,c,u,f,d,m){var p=t?t+h:h;if(!this._events[p])return!1;var w=this._events[p],A=arguments.length,_,x;if(w.fn){switch(w.once&&this.removeListener(h,w.fn,void 0,!0),A){case 1:return w.fn.call(w.context),!0;case 2:return w.fn.call(w.context,c),!0;case 3:return w.fn.call(w.context,c,u),!0;case 4:return w.fn.call(w.context,c,u,f),!0;case 5:return w.fn.call(w.context,c,u,f,d),!0;case 6:return w.fn.call(w.context,c,u,f,d,m),!0}for(x=1,_=new Array(A-1);x<A;x++)_[x-1]=arguments[x];w.fn.apply(w.context,_)}else{var y=w.length,g;for(x=0;x<y;x++)switch(w[x].once&&this.removeListener(h,w[x].fn,void 0,!0),A){case 1:w[x].fn.call(w[x].context);break;case 2:w[x].fn.call(w[x].context,c);break;case 3:w[x].fn.call(w[x].context,c,u);break;case 4:w[x].fn.call(w[x].context,c,u,f);break;default:if(!_)for(g=1,_=new Array(A-1);g<A;g++)_[g-1]=arguments[g];w[x].fn.apply(w[x].context,_)}}return!0},n.prototype.on=function(h,c,u){return a(this,h,c,u,!1)},n.prototype.once=function(h,c,u){return a(this,h,c,u,!0)},n.prototype.removeListener=function(h,c,u,f){var d=t?t+h:h;if(!this._events[d])return this;if(!c)return o(this,d),this;var m=this._events[d];if(m.fn)m.fn===c&&(!f||m.once)&&(!u||m.context===u)&&o(this,d);else{for(var p=0,w=[],A=m.length;p<A;p++)(m[p].fn!==c||f&&!m[p].once||u&&m[p].context!==u)&&w.push(m[p]);w.length?this._events[d]=w.length===1?w[0]:w:o(this,d)}return this},n.prototype.removeAllListeners=function(h){var c;return h?(c=t?t+h:h,this._events[c]&&o(this,c)):(this._events=new s,this._eventsCount=0),this},n.prototype.off=n.prototype.removeListener,n.prototype.addListener=n.prototype.on,n.prefixed=t,n.EventEmitter=n,r.exports=n})(ls)),ls.exports}var Ql=jl();const De=Wl(Ql),Yl=Math.PI*2,Vl=180/Math.PI,ql=Math.PI/180;class de{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new de(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}toString(){return`[pixi.js/math:Point x=${this.x} y=${this.y}]`}static get shared(){return hs.x=0,hs.y=0,hs}}const hs=new de;class H{constructor(e=1,t=0,s=0,i=1,a=0,o=0){this.array=null,this.a=e,this.b=t,this.c=s,this.d=i,this.tx=a,this.ty=o}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,s,i,a,o){return this.a=e,this.b=t,this.c=s,this.d=i,this.tx=a,this.ty=o,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const s=t||this.array;return e?(s[0]=this.a,s[1]=this.b,s[2]=0,s[3]=this.c,s[4]=this.d,s[5]=0,s[6]=this.tx,s[7]=this.ty,s[8]=1):(s[0]=this.a,s[1]=this.c,s[2]=this.tx,s[3]=this.b,s[4]=this.d,s[5]=this.ty,s[6]=0,s[7]=0,s[8]=1),s}apply(e,t){t=t||new de;const s=e.x,i=e.y;return t.x=this.a*s+this.c*i+this.tx,t.y=this.b*s+this.d*i+this.ty,t}applyInverse(e,t){t=t||new de;const s=this.a,i=this.b,a=this.c,o=this.d,n=this.tx,l=this.ty,h=1/(s*o+a*-i),c=e.x,u=e.y;return t.x=o*h*c+-a*h*u+(l*a-n*o)*h,t.y=s*h*u+-i*h*c+(-l*s+n*i)*h,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),s=Math.sin(e),i=this.a,a=this.c,o=this.tx;return this.a=i*t-this.b*s,this.b=i*s+this.b*t,this.c=a*t-this.d*s,this.d=a*s+this.d*t,this.tx=o*t-this.ty*s,this.ty=o*s+this.ty*t,this}append(e){const t=this.a,s=this.b,i=this.c,a=this.d;return this.a=e.a*t+e.b*i,this.b=e.a*s+e.b*a,this.c=e.c*t+e.d*i,this.d=e.c*s+e.d*a,this.tx=e.tx*t+e.ty*i+this.tx,this.ty=e.tx*s+e.ty*a+this.ty,this}appendFrom(e,t){const s=e.a,i=e.b,a=e.c,o=e.d,n=e.tx,l=e.ty,h=t.a,c=t.b,u=t.c,f=t.d;return this.a=s*h+i*u,this.b=s*c+i*f,this.c=a*h+o*u,this.d=a*c+o*f,this.tx=n*h+l*u+t.tx,this.ty=n*c+l*f+t.ty,this}setTransform(e,t,s,i,a,o,n,l,h){return this.a=Math.cos(n+h)*a,this.b=Math.sin(n+h)*a,this.c=-Math.sin(n-l)*o,this.d=Math.cos(n-l)*o,this.tx=e-(s*this.a+i*this.c),this.ty=t-(s*this.b+i*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const s=this.a,i=this.c;this.a=s*e.a+this.b*e.c,this.b=s*e.b+this.b*e.d,this.c=i*e.a+this.d*e.c,this.d=i*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,s=this.b,i=this.c,a=this.d,o=e.pivot,n=-Math.atan2(-i,a),l=Math.atan2(s,t),h=Math.abs(n+l);let c=Math.sqrt(t*t+s*s);return h<1e-5||Math.abs(Yl-h)<1e-5?(e.rotation=l,e.skew.x=e.skew.y=0):Math.abs(Math.PI-h)<1e-5?(e.rotation=l-Math.PI,e.skew.x=e.skew.y=0,c=-c):(e.rotation=0,e.skew.x=n,e.skew.y=l),e.scale.x=c,e.scale.y=Math.sqrt(i*i+a*a),e.position.x=this.tx+(o.x*t+o.y*i),e.position.y=this.ty+(o.x*s+o.y*a),e}invert(){const e=this.a,t=this.b,s=this.c,i=this.d,a=this.tx,o=e*i-t*s;return this.a=i/o,this.b=-t/o,this.c=-s/o,this.d=e/o,this.tx=(s*this.ty-i*a)/o,this.ty=-(e*this.ty-t*a)/o,this}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.tx===0&&this.ty===0}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new H;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}equals(e){return e.a===this.a&&e.b===this.b&&e.c===this.c&&e.d===this.d&&e.tx===this.tx&&e.ty===this.ty}toString(){return`[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return Zl.identity()}static get shared(){return Kl.identity()}}const Kl=new H,Zl=new H,ht=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],ct=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],ut=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],dt=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],ti=[],Do=[],Ar=Math.sign;function Jl(){for(let r=0;r<16;r++){const e=[];ti.push(e);for(let t=0;t<16;t++){const s=Ar(ht[r]*ht[t]+ut[r]*ct[t]),i=Ar(ct[r]*ht[t]+dt[r]*ct[t]),a=Ar(ht[r]*ut[t]+ut[r]*dt[t]),o=Ar(ct[r]*ut[t]+dt[r]*dt[t]);for(let n=0;n<16;n++)if(ht[n]===s&&ct[n]===i&&ut[n]===a&&dt[n]===o){e.push(n);break}}}for(let r=0;r<16;r++){const e=new H;e.set(ht[r],ct[r],ut[r],dt[r],0,0),Do.push(e)}}Jl();const N={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:r=>ht[r],uY:r=>ct[r],vX:r=>ut[r],vY:r=>dt[r],inv:r=>r&8?r&15:-r&7,add:(r,e)=>ti[r][e],sub:(r,e)=>ti[r][N.inv(e)],rotate180:r=>r^4,isVertical:r=>(r&3)===2,byDirection:(r,e)=>Math.abs(r)*2<=Math.abs(e)?e>=0?N.S:N.N:Math.abs(e)*2<=Math.abs(r)?r>0?N.E:N.W:e>0?r>0?N.SE:N.SW:r>0?N.NE:N.NW,matrixAppendRotationInv:(r,e,t=0,s=0,i=0,a=0)=>{const o=Do[N.inv(e)],n=o.a,l=o.b,h=o.c,c=o.d,u=t-Math.min(0,n*i,h*a,n*i+h*a),f=s-Math.min(0,l*i,c*a,l*i+c*a),d=r.a,m=r.b,p=r.c,w=r.d;r.a=n*d+l*p,r.b=n*m+l*w,r.c=h*d+c*p,r.d=h*m+c*w,r.tx=u*d+f*p+r.tx,r.ty=u*m+f*w+r.ty},transformRectCoords:(r,e,t,s)=>{const{x:i,y:a,width:o,height:n}=r,{x:l,y:h,width:c,height:u}=e;return t===N.E?(s.set(i+l,a+h,o,n),s):t===N.S?s.set(c-a-n+l,i+h,n,o):t===N.W?s.set(c-i-o+l,u-a-n+h,o,n):t===N.N?s.set(a+l,u-i-o+h,n,o):s.set(i+l,a+h,o,n)}},_r=[new de,new de,new de,new de];class ${constructor(e=0,t=0,s=0,i=0){this.type="rectangle",this.x=Number(e),this.y=Number(t),this.width=Number(s),this.height=Number(i)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new $(0,0,0,0)}clone(){return new $(this.x,this.y,this.width,this.height)}copyFromBounds(e){return this.x=e.minX,this.y=e.minY,this.width=e.maxX-e.minX,this.height=e.maxY-e.minY,this}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.copyFrom(this),e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e<this.x+this.width&&t>=this.y&&t<this.y+this.height}strokeContains(e,t,s,i=.5){const{width:a,height:o}=this;if(a<=0||o<=0)return!1;const n=this.x,l=this.y,h=s*(1-i),c=s-h,u=n-h,f=n+a+h,d=l-h,m=l+o+h,p=n+c,w=n+a-c,A=l+c,_=l+o-c;return e>=u&&e<=f&&t>=d&&t<=m&&!(e>p&&e<w&&t>A&&t<_)}intersects(e,t){if(!t){const v=this.x<e.x?e.x:this.x;if((this.right>e.right?e.right:this.right)<=v)return!1;const z=this.y<e.y?e.y:this.y;return(this.bottom>e.bottom?e.bottom:this.bottom)>z}const s=this.left,i=this.right,a=this.top,o=this.bottom;if(i<=s||o<=a)return!1;const n=_r[0].set(e.left,e.top),l=_r[1].set(e.left,e.bottom),h=_r[2].set(e.right,e.top),c=_r[3].set(e.right,e.bottom);if(h.x<=n.x||l.y<=n.y)return!1;const u=Math.sign(t.a*t.d-t.b*t.c);if(u===0||(t.apply(n,n),t.apply(l,l),t.apply(h,h),t.apply(c,c),Math.max(n.x,l.x,h.x,c.x)<=s||Math.min(n.x,l.x,h.x,c.x)>=i||Math.max(n.y,l.y,h.y,c.y)<=a||Math.min(n.y,l.y,h.y,c.y)>=o))return!1;const f=u*(l.y-n.y),d=u*(n.x-l.x),m=f*s+d*a,p=f*i+d*a,w=f*s+d*o,A=f*i+d*o;if(Math.max(m,p,w,A)<=f*n.x+d*n.y||Math.min(m,p,w,A)>=f*c.x+d*c.y)return!1;const _=u*(n.y-h.y),x=u*(h.x-n.x),y=_*s+x*a,g=_*i+x*a,S=_*s+x*o,k=_*i+x*o;return!(Math.max(y,g,S,k)<=_*n.x+x*n.y||Math.min(y,g,S,k)>=_*c.x+x*c.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),s=Math.min(this.x+this.width,e.x+e.width),i=Math.max(this.y,e.y),a=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(s-t,0),this.y=i,this.height=Math.max(a-i,0),this}ceil(e=1,t=.001){const s=Math.ceil((this.x+this.width-t)*e)/e,i=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=s-this.x,this.height=i-this.y,this}scale(e,t=e){return this.x*=e,this.y*=t,this.width*=e,this.height*=t,this}enlarge(e){const t=Math.min(this.x,e.x),s=Math.max(this.x+this.width,e.x+e.width),i=Math.min(this.y,e.y),a=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=s-t,this.y=i,this.height=a-i,this}getBounds(e){return e||(e=new $),e.copyFrom(this),e}containsRect(e){if(this.width<=0||this.height<=0)return!1;const t=e.x,s=e.y,i=e.x+e.width,a=e.y+e.height;return t>=this.x&&t<this.x+this.width&&s>=this.y&&s<this.y+this.height&&i>=this.x&&i<=this.x+this.width&&a>=this.y&&a<=this.y+this.height}set(e,t,s,i){return this.x=e,this.y=t,this.width=s,this.height=i,this}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const cs={default:-1};function q(r="default"){return cs[r]===void 0&&(cs[r]=-1),++cs[r]}const $i=new Set,V="8.0.0",$l="8.3.4",Je="8.21.0",eh="8.22.0",Pt={quiet:!1,noColor:!1},G=((r,e,t=3)=>{if(Pt.quiet||$i.has(e))return;let s=new Error().stack;const i=`${e}
|
|
3
|
+
Deprecated since v${r}`,a=typeof console.groupCollapsed=="function"&&!Pt.noColor;typeof s>"u"?console.warn("PixiJS Deprecation Warning: ",i):(s=s.split(`
|
|
4
|
+
`).splice(t).join(`
|
|
5
|
+
`),a?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",i),console.warn(s),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",i),console.warn(s))),$i.add(e)});Object.defineProperties(G,{quiet:{get:()=>Pt.quiet,set:r=>{Pt.quiet=r},enumerable:!0,configurable:!1},noColor:{get:()=>Pt.noColor,set:r=>{Pt.noColor=r},enumerable:!0,configurable:!1}});const Io=()=>{};function th(r){return r.endsWith("int")}function Rt(r){return r+=r===0?1:0,--r,r|=r>>>1,r|=r>>>2,r|=r>>>4,r|=r>>>8,r|=r>>>16,r+1}function Gt(r){return!(r&r-1)&&!!r}function Ro(r){const e={};for(const t in r)r[t]!==void 0&&(e[t]=r[t]);return e}const ea=Object.create(null);function rh(r){const e=ea[r];return e===void 0&&(ea[r]=q("resource")),e}const Go=class Lo extends De{constructor(e={}){super(),this._resourceType="textureSampler",this._maxAnisotropy=1,this.destroyed=!1,e={...Lo.defaultOptions,...e},this.addressMode=e.addressMode,this.addressModeU=e.addressModeU??this.addressModeU,this.addressModeV=e.addressModeV??this.addressModeV,this.addressModeW=e.addressModeW??this.addressModeW,this.scaleMode=e.scaleMode,this.magFilter=e.magFilter??this.magFilter,this.minFilter=e.minFilter??this.minFilter,this.mipmapFilter=e.mipmapFilter??this.mipmapFilter,this.lodMinClamp=e.lodMinClamp,this.lodMaxClamp=e.lodMaxClamp,this.compare=e.compare,this.maxAnisotropy=e.maxAnisotropy??1}set addressMode(e){this.addressModeU=e,this.addressModeV=e,this.addressModeW=e}get addressMode(){return this.addressModeU}set wrapMode(e){G(V,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=e}get wrapMode(){return this.addressMode}set scaleMode(e){this.magFilter=e,this.minFilter=e,this.mipmapFilter=e}get scaleMode(){return this.magFilter}set maxAnisotropy(e){this._maxAnisotropy=Math.min(e,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this._sharedResourceId=null,this.emit("change",this)}_generateResourceId(){const e=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=rh(e),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};Go.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let At=Go;const Fo=class Ho extends De{constructor(e={}){super(),this.options=e,this._gpuData=Object.create(null),this._gcLastUsed=-1,this.uid=q("textureSource"),this._resourceType="textureSource",this._resourceId=q("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.viewDimension="2d",this.arrayLayerCount=1,this.depth=1,this._ownsStyle=!1,this.antialias=!1,this.transient=!1,this.storage=!1,this._batchTick=-1,this._textureBindLocation=-1;const t=e;e={...Ho.defaultOptions,...e};const s=sh(e),i=s==="3d"||s==="1d"?s:"2d";ih(t,s,i),this.label=e.label??"",this.resource=e.resource,this.autoGarbageCollect=e.autoGarbageCollect,this._resolution=e.resolution,e.width?this.pixelWidth=e.width*this._resolution:this.pixelWidth=this.resource?this.resourceWidth??1:1,e.height?this.pixelHeight=e.height*this._resolution:this.pixelHeight=this.resource?this.resourceHeight??1:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=e.format,this.dimension=i,this.viewDimension=s,this.arrayLayerCount=e.arrayLayerCount,this.depth=i==="3d"?e.depth??1:1,this.mipLevelCount=e.mipLevelCount,this.autoGenerateMipmaps=e.autoGenerateMipmaps,this.sampleCount=e.sampleCount,this.antialias=i==="3d"?!1:e.antialias,this.transient=e.transient??!1,this.storage=e.storage??!1,this.alphaMode=e.alphaMode,this.style=new At(Ro(e)),this._ownsStyle=!0,this.destroyed=!1,this._refreshPOT()}get depthOrArrayLayers(){return this.dimension==="3d"?this.depth:this.arrayLayerCount||1}get source(){return this}get style(){return this._style}set style(e){this.style!==e&&(this._ownsStyle=!1,this._style?.off("change",this._onStyleChange,this),this._style=e,this._style?.on("change",this._onStyleChange,this),this._onStyleChange())}set maxAnisotropy(e){this._style.maxAnisotropy=e}get maxAnisotropy(){return this._style.maxAnisotropy}get addressMode(){return this._style.addressMode}set addressMode(e){this._style.addressMode=e}get repeatMode(){return this._style.addressMode}set repeatMode(e){this._style.addressMode=e}get magFilter(){return this._style.magFilter}set magFilter(e){this._style.magFilter=e}get minFilter(){return this._style.minFilter}set minFilter(e){this._style.minFilter=e}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(e){this._style.mipmapFilter=e}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(e){this._style.lodMinClamp=e}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(e){this._style.lodMaxClamp=e}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){const e=this._resolution;if(this.resize(this.resourceWidth/e,this.resourceHeight/e))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.unload(),this.emit("destroy",this),this._style&&(this._ownsStyle&&this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=q("resource"),this.emit("change",this),this.emit("unload",this);for(const e in this._gpuData)this._gpuData[e]?.destroy?.();this._gpuData=Object.create(null)}get resourceWidth(){const{resource:e}=this;return e.naturalWidth||e.videoWidth||e.displayWidth||e.width}get resourceHeight(){const{resource:e}=this;return e.naturalHeight||e.videoHeight||e.displayHeight||e.height}get resolution(){return this._resolution}set resolution(e){this._resolution!==e&&(this._resolution=e,this.width=this.pixelWidth/e,this.height=this.pixelHeight/e)}resize(e,t,s){s||(s=this._resolution),e||(e=this.width),t||(t=this.height);const i=Math.round(e*s),a=Math.round(t*s);return this.width=i/s,this.height=a/s,this._resolution=s,this.pixelWidth===i&&this.pixelHeight===a?!1:(this._refreshPOT(),this.pixelWidth=i,this.pixelHeight=a,this.emit("resize",this),this._resourceId=q("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(e){this._style.wrapMode=e}get wrapMode(){return this._style.wrapMode}set scaleMode(e){this._style.scaleMode=e}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=Gt(this.pixelWidth)&&Gt(this.pixelHeight)}static test(e){throw new Error("Unimplemented")}};Fo.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",arrayLayerCount:1,mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let me=Fo;function sh(r){return r.viewDimension?r.viewDimension:r.depth?"3d":r.arrayLayerCount>1?"2d-array":"2d"}function ih(r,e,t){if(r.depth!==void 0&&typeof r.depth!="number")throw new Error(`[TextureSource] depth is a 3D texture's depth in texels, but got ${r.depth}. For a depth buffer, use the depth option of a RenderTarget or the renderer.`);if(r.depth&&r.arrayLayerCount>1)throw new Error("[TextureSource] depth and arrayLayerCount can't be combined: use depth for a 3D texture or arrayLayerCount for a 2D array.");if(r.depth&&e!=="3d")throw new Error(`[TextureSource] depth makes a 3D texture, but viewDimension is '${e}'. Use arrayLayerCount for layered textures.`);if(e==="3d"&&r.arrayLayerCount>1)throw new Error("[TextureSource] a 3D texture takes depth, not arrayLayerCount.");if(r.dimensions&&r.dimensions!==t)throw new Error(`[TextureSource] dimensions '${r.dimensions}' doesn't match viewDimension '${e}'. Leave dimensions out; it is derived from the view.`);if(r.dimensions&&G(eh,"TextureSource dimensions is derived from viewDimension and depth; leave it out."),t==="3d"&&r.antialias)throw new Error("[TextureSource] a 3D texture can't be antialiased: WebGPU has no multisampled 3D textures.")}class Ei extends me{constructor(e){const t=e.depth??e.arrayLayerCount??1,s=e.resource||new Float32Array(e.width*e.height*t*4);let i=e.format;i||(s instanceof Float32Array?i="rgba32float":s instanceof Int32Array||s instanceof Uint32Array?i="rgba32uint":s instanceof Int16Array||s instanceof Uint16Array?i="rgba16uint":(s instanceof Int8Array,i="bgra8unorm"));const a=th(i)||t>1;super({...a&&{alphaMode:"no-premultiply-alpha"},...e,resource:s,format:i}),this.uploadMethodId="buffer",this._updateStart=0,this._updateEnd=1/0}update(e=0,t=1/0){if((e>0||t<1/0)&&this.depthOrArrayLayers>1)throw new Error("[BufferImageSource] a 3D texture or 2D array uploads whole: call update() with no range.");this._updateStart=e,this._updateEnd=t,super.update(),this._updateStart=0,this._updateEnd=1/0}static test(e){return e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}Ei.extension=M.TextureSource;const ta=new H;class ah{constructor(e,t){this.mapCoord=new H,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._updateID=0,this.clampOffset=0,typeof t>"u"?this.clampMargin=e.width<10?0:.5:this.clampMargin=t,this.isSimple=!1,this.texture=e}get texture(){return this._texture}set texture(e){this._texture!==e&&(this._texture?.removeListener("update",this.update,this),this._texture=e,this._texture.addListener("update",this.update,this)),this.update()}destroy(){this._texture?.removeListener("update",this.update,this),this._texture=null}multiplyUvs(e,t){t===void 0&&(t=e);const s=this.mapCoord;for(let i=0;i<e.length;i+=2){const a=e[i],o=e[i+1];t[i]=a*s.a+o*s.c+s.tx,t[i+1]=a*s.b+o*s.d+s.ty}return t}update(){const e=this._texture;this._updateID++;const t=e.uvs;this.mapCoord.set(t.x1-t.x0,t.y1-t.y0,t.x3-t.x0,t.y3-t.y0,t.x0,t.y0);const s=e.orig,i=e.trim;i&&(ta.set(s.width/i.width,0,0,s.height/i.height,-i.x/i.width,-i.y/i.height),this.mapCoord.append(ta));const a=e.source,o=this.uClampFrame,n=this.clampMargin/a._resolution,l=this.clampOffset/a._resolution;return o[0]=(e.frame.x+n+l)/a.width,o[1]=(e.frame.y+n+l)/a.height,o[2]=(e.frame.x+e.frame.width-n+l)/a.width,o[3]=(e.frame.y+e.frame.height-n+l)/a.height,this.uClampOffset[0]=this.clampOffset/a.pixelWidth,this.uClampOffset[1]=this.clampOffset/a.pixelHeight,this.isSimple=e.frame.width===a.width&&e.frame.height===a.height&&e.rotate===0,!0}}class L extends De{constructor({source:e,label:t,frame:s,orig:i,trim:a,defaultAnchor:o,defaultBorders:n,rotate:l,dynamic:h}={}){if(super(),this.uid=q("texture"),this.uvs={x0:0,y0:0,x1:0,y1:0,x2:0,y2:0,x3:0,y3:0},this.frame=new $,this.noFrame=!1,this.dynamic=!1,this.isTexture=!0,this.label=t,this.source=e?.source??new me,this.noFrame=!s,s)this.frame.copyFrom(s);else{const{width:c,height:u}=this._source;this.frame.width=c,this.frame.height=u}this.orig=i||this.frame,this.trim=a,this.rotate=l??0,this.defaultAnchor=o,this.defaultBorders=n,this.destroyed=!1,this.dynamic=h||!1,this.updateUvs()}set source(e){this._source&&this._source.off("resize",this.update,this),this._source=e,e.on("resize",this.update,this),this.emit("update",this)}get source(){return this._source}get textureMatrix(){return this._textureMatrix||(this._textureMatrix=new ah(this)),this._textureMatrix}get width(){return this.orig.width}get height(){return this.orig.height}updateUvs(){const{uvs:e,frame:t}=this,{width:s,height:i}=this._source,a=t.x/s,o=t.y/i,n=t.width/s,l=t.height/i;let h=this.rotate;if(h){const c=n/2,u=l/2,f=a+c,d=o+u;h=N.add(h,N.NW),e.x0=f+c*N.uX(h),e.y0=d+u*N.uY(h),h=N.add(h,2),e.x1=f+c*N.uX(h),e.y1=d+u*N.uY(h),h=N.add(h,2),e.x2=f+c*N.uX(h),e.y2=d+u*N.uY(h),h=N.add(h,2),e.x3=f+c*N.uX(h),e.y3=d+u*N.uY(h)}else e.x0=a,e.y0=o,e.x1=a+n,e.y1=o,e.x2=a+n,e.y2=o+l,e.x3=a,e.y3=o+l}destroy(e=!1){this._source&&(this._source.off("resize",this.update,this),e&&(this._source.destroy(),this._source=null)),this._textureMatrix=null,this.destroyed=!0,this.emit("destroy",this),this.removeAllListeners()}update(){this.noFrame&&(this.frame.width=this._source.width,this.frame.height=this._source.height),this.updateUvs(),this.emit("update",this)}get baseTexture(){return G(V,"Texture.baseTexture is now Texture.source"),this._source}}L.EMPTY=new L({label:"EMPTY",source:new me({label:"EMPTY"})});L.EMPTY.destroy=Io;L.WHITE=new L({source:new Ei({resource:new Uint8Array([255,255,255,255]),width:1,height:1,alphaMode:"premultiply-alpha-on-upload",label:"WHITE"}),label:"WHITE"});L.WHITE.destroy=Io;function Oo(r,e,t){const{width:s,height:i}=t.orig,a=t.trim;if(a){const o=a.width,n=a.height;r.minX=a.x-e._x*s,r.maxX=r.minX+o,r.minY=a.y-e._y*i,r.maxY=r.minY+n}else r.minX=-e._x*s,r.maxX=r.minX+s,r.minY=-e._y*i,r.maxY=r.minY+i}const ra=new H;class be{constructor(e=1/0,t=1/0,s=-1/0,i=-1/0){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=ra,this.minX=e,this.minY=t,this.maxX=s,this.maxY=i}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new $);const e=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(e.x=0,e.y=0,e.width=0,e.height=0):e.copyFromBounds(this),e}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=ra,this}set(e,t,s,i){this.minX=e,this.minY=t,this.maxX=s,this.maxY=i}addFrame(e,t,s,i,a){a||(a=this.matrix);const o=a.a,n=a.b,l=a.c,h=a.d,c=a.tx,u=a.ty;let f=this.minX,d=this.minY,m=this.maxX,p=this.maxY,w=o*e+l*t+c,A=n*e+h*t+u;w<f&&(f=w),A<d&&(d=A),w>m&&(m=w),A>p&&(p=A),w=o*s+l*t+c,A=n*s+h*t+u,w<f&&(f=w),A<d&&(d=A),w>m&&(m=w),A>p&&(p=A),w=o*e+l*i+c,A=n*e+h*i+u,w<f&&(f=w),A<d&&(d=A),w>m&&(m=w),A>p&&(p=A),w=o*s+l*i+c,A=n*s+h*i+u,w<f&&(f=w),A<d&&(d=A),w>m&&(m=w),A>p&&(p=A),this.minX=f,this.minY=d,this.maxX=m,this.maxY=p}addRect(e,t){this.addFrame(e.x,e.y,e.x+e.width,e.y+e.height,t)}addBounds(e,t){this.addFrame(e.minX,e.minY,e.maxX,e.maxY,t)}addBoundsMask(e){this.minX=this.minX>e.minX?this.minX:e.minX,this.minY=this.minY>e.minY?this.minY:e.minY,this.maxX=this.maxX<e.maxX?this.maxX:e.maxX,this.maxY=this.maxY<e.maxY?this.maxY:e.maxY}applyMatrix(e){const t=this.minX,s=this.minY,i=this.maxX,a=this.maxY,{a:o,b:n,c:l,d:h,tx:c,ty:u}=e;let f=o*t+l*s+c,d=n*t+h*s+u;this.minX=f,this.minY=d,this.maxX=f,this.maxY=d,f=o*i+l*s+c,d=n*i+h*s+u,this.minX=f<this.minX?f:this.minX,this.minY=d<this.minY?d:this.minY,this.maxX=f>this.maxX?f:this.maxX,this.maxY=d>this.maxY?d:this.maxY,f=o*t+l*a+c,d=n*t+h*a+u,this.minX=f<this.minX?f:this.minX,this.minY=d<this.minY?d:this.minY,this.maxX=f>this.maxX?f:this.maxX,this.maxY=d>this.maxY?d:this.maxY,f=o*i+l*a+c,d=n*i+h*a+u,this.minX=f<this.minX?f:this.minX,this.minY=d<this.minY?d:this.minY,this.maxX=f>this.maxX?f:this.maxX,this.maxY=d>this.maxY?d:this.maxY}fit(e){return this.minX<e.left&&(this.minX=e.left),this.maxX>e.right&&(this.maxX=e.right),this.minY<e.top&&(this.minY=e.top),this.maxY>e.bottom&&(this.maxY=e.bottom),this}fitBounds(e,t,s,i){return this.minX<e&&(this.minX=e),this.maxX>t&&(this.maxX=t),this.minY<s&&(this.minY=s),this.maxY>i&&(this.maxY=i),this}pad(e,t=e){return this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new be(this.minX,this.minY,this.maxX,this.maxY)}scale(e,t=e){return this.minX*=e,this.minY*=t,this.maxX*=e,this.maxY*=t,this}get x(){return this.minX}set x(e){const t=this.maxX-this.minX;this.minX=e,this.maxX=e+t}get y(){return this.minY}set y(e){const t=this.maxY-this.minY;this.minY=e,this.maxY=e+t}get width(){return this.maxX-this.minX}set width(e){this.maxX=this.minX+e}get height(){return this.maxY-this.minY}set height(e){this.maxY=this.minY+e}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(e,t,s,i){let a=this.minX,o=this.minY,n=this.maxX,l=this.maxY;i||(i=this.matrix);const h=i.a,c=i.b,u=i.c,f=i.d,d=i.tx,m=i.ty;for(let p=t;p<s;p+=2){const w=e[p],A=e[p+1],_=h*w+u*A+d,x=c*w+f*A+m;a=_<a?_:a,o=x<o?x:o,n=_>n?_:n,l=x>l?x:l}this.minX=a,this.minY=o,this.maxX=n,this.maxY=l}containsPoint(e,t){return this.minX<=e&&this.minY<=t&&this.maxX>=e&&this.maxY>=t}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}copyFrom(e){return this.minX=e.minX,this.minY=e.minY,this.maxX=e.maxX,this.maxY=e.maxY,this}}var oh={grad:.9,turn:360,rad:360/(2*Math.PI)},Le=function(r){return typeof r=="string"?r.length>0:typeof r=="number"},he=function(r,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*r)/t+0},Se=function(r,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),r>t?t:r>e?r:e},No=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},sa=function(r){return{r:Se(r.r,0,255),g:Se(r.g,0,255),b:Se(r.b,0,255),a:Se(r.a)}},us=function(r){return{r:he(r.r),g:he(r.g),b:he(r.b),a:he(r.a,3)}},nh=/^#([0-9a-f]{3,8})$/i,xr=function(r){var e=r.toString(16);return e.length<2?"0"+e:e},Uo=function(r){var e=r.r,t=r.g,s=r.b,i=r.a,a=Math.max(e,t,s),o=a-Math.min(e,t,s),n=o?a===e?(t-s)/o:a===t?2+(s-e)/o:4+(e-t)/o:0;return{h:60*(n<0?n+6:n),s:a?o/a*100:0,v:a/255*100,a:i}},Xo=function(r){var e=r.h,t=r.s,s=r.v,i=r.a;e=e/360*6,t/=100,s/=100;var a=Math.floor(e),o=s*(1-t),n=s*(1-(e-a)*t),l=s*(1-(1-e+a)*t),h=a%6;return{r:255*[s,n,o,o,l,s][h],g:255*[l,s,s,n,o,o][h],b:255*[o,o,l,s,s,n][h],a:i}},ia=function(r){return{h:No(r.h),s:Se(r.s,0,100),l:Se(r.l,0,100),a:Se(r.a)}},aa=function(r){return{h:he(r.h),s:he(r.s),l:he(r.l),a:he(r.a,3)}},oa=function(r){return Xo((t=(e=r).s,{h:e.h,s:(t*=((s=e.l)<50?s:100-s)/100)>0?2*t/(s+t)*100:0,v:s+t,a:e.a}));var e,t,s},tr=function(r){return{h:(e=Uo(r)).h,s:(i=(200-(t=e.s))*(s=e.v)/100)>0&&i<200?t*s/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,t,s,i},lh=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hh=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ch=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,uh=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,ri={string:[[function(r){var e=nh.exec(r);return e?(r=e[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:r.length===4?he(parseInt(r[3]+r[3],16)/255,2):1}:r.length===6||r.length===8?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:r.length===8?he(parseInt(r.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(r){var e=ch.exec(r)||uh.exec(r);return e?e[2]!==e[4]||e[4]!==e[6]?null:sa({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(r){var e=lh.exec(r)||hh.exec(r);if(!e)return null;var t,s,i=ia({h:(t=e[1],s=e[2],s===void 0&&(s="deg"),Number(t)*(oh[s]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return oa(i)},"hsl"]],object:[[function(r){var e=r.r,t=r.g,s=r.b,i=r.a,a=i===void 0?1:i;return Le(e)&&Le(t)&&Le(s)?sa({r:Number(e),g:Number(t),b:Number(s),a:Number(a)}):null},"rgb"],[function(r){var e=r.h,t=r.s,s=r.l,i=r.a,a=i===void 0?1:i;if(!Le(e)||!Le(t)||!Le(s))return null;var o=ia({h:Number(e),s:Number(t),l:Number(s),a:Number(a)});return oa(o)},"hsl"],[function(r){var e=r.h,t=r.s,s=r.v,i=r.a,a=i===void 0?1:i;if(!Le(e)||!Le(t)||!Le(s))return null;var o=(function(n){return{h:No(n.h),s:Se(n.s,0,100),v:Se(n.v,0,100),a:Se(n.a)}})({h:Number(e),s:Number(t),v:Number(s),a:Number(a)});return Xo(o)},"hsv"]]},na=function(r,e){for(var t=0;t<e.length;t++){var s=e[t][0](r);if(s)return[s,e[t][1]]}return[null,void 0]},dh=function(r){return typeof r=="string"?na(r.trim(),ri.string):typeof r=="object"&&r!==null?na(r,ri.object):[null,void 0]},ds=function(r,e){var t=tr(r);return{h:t.h,s:Se(t.s+100*e,0,100),l:t.l,a:t.a}},fs=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},la=function(r,e){var t=tr(r);return{h:t.h,s:t.s,l:Se(t.l+100*e,0,100),a:t.a}},si=(function(){function r(e){this.parsed=dh(e)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return this.parsed!==null},r.prototype.brightness=function(){return he(fs(this.rgba),2)},r.prototype.isDark=function(){return fs(this.rgba)<.5},r.prototype.isLight=function(){return fs(this.rgba)>=.5},r.prototype.toHex=function(){return e=us(this.rgba),t=e.r,s=e.g,i=e.b,o=(a=e.a)<1?xr(he(255*a)):"","#"+xr(t)+xr(s)+xr(i)+o;var e,t,s,i,a,o},r.prototype.toRgb=function(){return us(this.rgba)},r.prototype.toRgbString=function(){return e=us(this.rgba),t=e.r,s=e.g,i=e.b,(a=e.a)<1?"rgba("+t+", "+s+", "+i+", "+a+")":"rgb("+t+", "+s+", "+i+")";var e,t,s,i,a},r.prototype.toHsl=function(){return aa(tr(this.rgba))},r.prototype.toHslString=function(){return e=aa(tr(this.rgba)),t=e.h,s=e.s,i=e.l,(a=e.a)<1?"hsla("+t+", "+s+"%, "+i+"%, "+a+")":"hsl("+t+", "+s+"%, "+i+"%)";var e,t,s,i,a},r.prototype.toHsv=function(){return e=Uo(this.rgba),{h:he(e.h),s:he(e.s),v:he(e.v),a:he(e.a,3)};var e},r.prototype.invert=function(){return Ie({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},r.prototype.saturate=function(e){return e===void 0&&(e=.1),Ie(ds(this.rgba,e))},r.prototype.desaturate=function(e){return e===void 0&&(e=.1),Ie(ds(this.rgba,-e))},r.prototype.grayscale=function(){return Ie(ds(this.rgba,-1))},r.prototype.lighten=function(e){return e===void 0&&(e=.1),Ie(la(this.rgba,e))},r.prototype.darken=function(e){return e===void 0&&(e=.1),Ie(la(this.rgba,-e))},r.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},r.prototype.alpha=function(e){return typeof e=="number"?Ie({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):he(this.rgba.a,3);var t},r.prototype.hue=function(e){var t=tr(this.rgba);return typeof e=="number"?Ie({h:e,s:t.s,l:t.l,a:t.a}):he(t.h)},r.prototype.isEqual=function(e){return this.toHex()===Ie(e).toHex()},r})(),Ie=function(r){return r instanceof si?r:new si(r)},ha=[],fh=function(r){r.forEach(function(e){ha.indexOf(e)<0&&(e(si,ri),ha.push(e))})};function mh(r,e){var t={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},s={};for(var i in t)s[t[i]]=i;var a={};r.prototype.toName=function(o){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var n,l,h=s[this.toHex()];if(h)return h;if(o?.closest){var c=this.toRgb(),u=1/0,f="black";if(!a.length)for(var d in t)a[d]=new r(t[d]).toRgb();for(var m in t){var p=(n=c,l=a[m],Math.pow(n.r-l.r,2)+Math.pow(n.g-l.g,2)+Math.pow(n.b-l.b,2));p<u&&(u=p,f=m)}return f}},e.string.push([function(o){var n=o.toLowerCase(),l=n==="transparent"?"#0000":t[n];return l?new r(l).toRgb():null},"name"])}fh([mh]);const Lt=class $t{constructor(e=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=e}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue(e){return this.value=e,this}set value(e){if(e instanceof $t)this._value=this._cloneSource(e._value),this._int=e._int,this._components.set(e._components);else{if(e===null)throw new Error("Cannot set Color#value to null");(this._value===null||!this._isSourceEqual(this._value,e))&&(this._value=this._cloneSource(e),this._normalize(this._value))}}get value(){return this._value}_cloneSource(e){return typeof e=="string"||typeof e=="number"||e instanceof Number||e===null?e:Array.isArray(e)||ArrayBuffer.isView(e)?e.slice(0):typeof e=="object"&&e!==null?{...e}:e}_isSourceEqual(e,t){const s=typeof e;if(s!==typeof t)return!1;if(s==="number"||s==="string"||e instanceof Number)return e===t;if(Array.isArray(e)&&Array.isArray(t)||ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return e.length!==t.length?!1:e.every((a,o)=>a===t[o]);if(e!==null&&t!==null){const a=Object.keys(e),o=Object.keys(t);return a.length!==o.length?!1:a.every(n=>e[n]===t[n])}return e===t}toRgba(){const[e,t,s,i]=this._components;return{r:e,g:t,b:s,a:i}}toRgb(){const[e,t,s]=this._components;return{r:e,g:t,b:s}}toRgbaString(){const[e,t,s]=this.toUint8RgbArray();return`rgba(${e},${t},${s},${this.alpha})`}toUint8RgbArray(e){const[t,s,i]=this._components;return this._arrayRgb||(this._arrayRgb=[]),e||(e=this._arrayRgb),e[0]=Math.round(t*255),e[1]=Math.round(s*255),e[2]=Math.round(i*255),e}toArray(e){this._arrayRgba||(this._arrayRgba=[]),e||(e=this._arrayRgba);const[t,s,i,a]=this._components;return e[0]=t,e[1]=s,e[2]=i,e[3]=a,e}toRgbArray(e){this._arrayRgb||(this._arrayRgb=[]),e||(e=this._arrayRgb);const[t,s,i]=this._components;return e[0]=t,e[1]=s,e[2]=i,e}toNumber(){return this._int}toBgrNumber(){const[e,t,s]=this.toUint8RgbArray();return(s<<16)+(t<<8)+e}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,s,i,a]=$t._temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=s,this._components[2]*=i,this._components[3]*=a,this._refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this._refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let s=this._int>>16&255,i=this._int>>8&255,a=this._int&255;return t&&(s=s*e+.5|0,i=i*e+.5|0,a=a*e+.5|0),(e*255<<24)+(s<<16)+(i<<8)+a}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const t=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-t.length)+t}setAlpha(e){return this._components[3]=this._clamp(e),this._value=null,this}_normalize(e){let t,s,i,a;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const o=e;t=(o>>16&255)/255,s=(o>>8&255)/255,i=(o&255)/255,a=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,s,i,a=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,s,i,a=255]=e,t/=255,s/=255,i/=255,a/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const n=$t.HEX_PATTERN.exec(e);n&&(e=`#${n[2]}`)}const o=Ie(e);o.isValid()&&({r:t,g:s,b:i,a}=o.rgba,t/=255,s/=255,i/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=s,this._components[2]=i,this._components[3]=a,this._refreshInt();else throw new Error(`Unable to convert color ${e}`)}_refreshInt(){this._clamp(this._components);const[e,t,s]=this._components;this._int=(e*255<<16)+(t*255<<8)+(s*255|0)}_clamp(e,t=0,s=1){return typeof e=="number"?Math.min(Math.max(e,t),s):(e.forEach((i,a)=>{e[a]=Math.min(Math.max(i,t),s)}),e)}static isColorLike(e){return typeof e=="number"||typeof e=="string"||e instanceof Number||e instanceof $t||Array.isArray(e)||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Float32Array||e.r!==void 0&&e.g!==void 0&&e.b!==void 0||e.r!==void 0&&e.g!==void 0&&e.b!==void 0&&e.a!==void 0||e.h!==void 0&&e.s!==void 0&&e.l!==void 0||e.h!==void 0&&e.s!==void 0&&e.l!==void 0&&e.a!==void 0||e.h!==void 0&&e.s!==void 0&&e.v!==void 0||e.h!==void 0&&e.s!==void 0&&e.v!==void 0&&e.a!==void 0}};Lt.shared=new Lt;Lt._temp=new Lt;Lt.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let ee=Lt;const ph={cullArea:null,cullable:!1,cullableChildren:!0};let ms=0;const ca=500;function j(...r){ms!==ca&&(ms++,ms===ca?console.warn("PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS."):console.warn("PixiJS Warning: ",...r))}const mr={_registeredResources:new Set,register(r){this._registeredResources.add(r)},unregister(r){this._registeredResources.delete(r)},release(){this._registeredResources.forEach(r=>r.clear())},get registeredCount(){return this._registeredResources.size},isRegistered(r){return this._registeredResources.has(r)},reset(){this._registeredResources.clear()}};class wh{constructor(e,t){this._pool=[],this._count=0,this._index=0,this._classType=e,t&&this.prepopulate(t)}prepopulate(e){for(let t=0;t<e;t++)this._pool[this._index++]=new this._classType;this._count+=e}get(e){let t;return this._index>0?t=this._pool[--this._index]:(t=new this._classType,this._count++),t.init?.(e),t}return(e){e.reset?.(),this._pool[this._index++]=e}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){if(this._pool.length>0&&this._pool[0].destroy)for(let e=0;e<this._index;e++)this._pool[e].destroy();this._pool.length=0,this._count=0,this._index=0}}class Ah{constructor(){this._poolsByClass=new Map}prepopulate(e,t){this.getPool(e).prepopulate(t)}get(e,t){return this.getPool(e).get(t)}return(e){this.getPool(e.constructor).return(e)}getPool(e){return this._poolsByClass.has(e)||this._poolsByClass.set(e,new wh(e)),this._poolsByClass.get(e)}stats(){const e={};return this._poolsByClass.forEach(t=>{const s=e[t._classType.name]?t._classType.name+t._classType.ID:t._classType.name;e[s]={free:t.totalFree,used:t.totalUsed,size:t.totalSize}}),e}clear(){this._poolsByClass.forEach(e=>e.clear()),this._poolsByClass.clear()}}const pe=new Ah;mr.register(pe);const _h={get isCachedAsTexture(){return!!this.renderGroup?.isCachedAsTexture},cacheAsTexture(r){typeof r=="boolean"&&r===!1?this.disableRenderGroup():(this.enableRenderGroup(),this.renderGroup.enableCacheAsTexture(r===!0?{}:r))},updateCacheTexture(){this.renderGroup?.updateCacheTexture()},get cacheAsBitmap(){return this.isCachedAsTexture},set cacheAsBitmap(r){G("v8.6.0","cacheAsBitmap is deprecated, use cacheAsTexture instead."),this.cacheAsTexture(r)}};function xh(r,e,t){const s=r.length;let i;if(e>=s||t===0)return;t=e+t>s?s-e:t;const a=s-t;for(i=e;i<a;++i)r[i]=r[i+t];r.length=a}const yh={allowChildren:!0,removeChildren(r=0,e){const t=e??this.children.length,s=t-r,i=[];if(s>0&&s<=t){for(let o=t-1;o>=r;o--){const n=this.children[o];n&&(i.push(n),n.parent=null)}xh(this.children,r,t);const a=this.renderGroup||this.parentRenderGroup;a&&a.removeChildren(i);for(let o=0;o<i.length;++o){const n=i[o];n.parentRenderLayer?.detach(n),this.emit("childRemoved",n,this,o),i[o].emit("removed",this)}return i.length>0&&this._didViewChangeTick++,i}else if(s===0&&this.children.length===0)return i;throw new RangeError("removeChildren: numeric values are outside the acceptable range.")},removeChildAt(r){const e=this.getChildAt(r);return this.removeChild(e)},getChildAt(r){if(r<0||r>=this.children.length)throw new Error(`getChildAt: Index (${r}) does not exist.`);return this.children[r]},setChildIndex(r,e){if(e<0||e>=this.children.length)throw new Error(`The index ${e} supplied is out of bounds ${this.children.length}`);this.getChildIndex(r),this.addChildAt(r,e)},getChildIndex(r){const e=this.children.indexOf(r);if(e===-1)throw new Error("The supplied Container must be a child of the caller");return e},addChildAt(r,e){this.allowChildren||G(V,"addChildAt: Only Containers will be allowed to add children in v8.0.0");const{children:t}=this;if(e<0||e>t.length)throw new Error(`${r}addChildAt: The index ${e} supplied is out of bounds ${t.length}`);const s=r.parent===this;if(r.parent){const a=r.parent.children.indexOf(r);if(s){if(a===e)return r;r.parent.children.splice(a,1)}else r.removeFromParent()}e===t.length?t.push(r):t.splice(e,0,r);const i=this.renderGroup||this.parentRenderGroup;return this.sortableChildren&&(this.sortDirty=!0),s?(i&&(i.structureDidChange=!0),r):(r.parent=this,r.didChange=!0,r._updateFlags=15,i&&i.addChild(r),this.emit("childAdded",r,this,e),r.emit("added",this),r)},swapChildren(r,e){if(r===e)return;const t=this.getChildIndex(r),s=this.getChildIndex(e);this.children[t]=e,this.children[s]=r;const i=this.renderGroup||this.parentRenderGroup;i&&(i.structureDidChange=!0),this._didContainerChangeTick++},removeFromParent(){this.parent?.removeChild(this)},reparentChild(...r){return r.length===1?this.reparentChildAt(r[0],this.children.length):(r.forEach(e=>this.reparentChildAt(e,this.children.length)),r[0])},reparentChildAt(r,e){if(r.parent===this)return this.setChildIndex(r,e),r;const t=r.worldTransform.clone();r.removeFromParent(),this.addChildAt(r,e);const s=this.worldTransform.clone();return s.invert(),t.prepend(s),r.setFromMatrix(t),r},replaceChild(r,e){r.updateLocalTransform(),this.addChildAt(e,this.getChildIndex(r)),e.setFromMatrix(r.localTransform),e.updateLocalTransform(),this.removeChild(r)}},gh={collectRenderables(r,e,t){this.parentRenderLayer&&this.parentRenderLayer!==t||this.globalDisplayStatus<7||!this.includeInBuild||(this.sortableChildren&&this.sortChildren(),this.isSimple?this.collectRenderablesSimple(r,e,t):this.renderGroup?e.renderPipes.renderGroup.addRenderGroup(this.renderGroup,r):this.collectRenderablesWithEffects(r,e,t))},collectRenderablesSimple(r,e,t){const s=this.children,i=s.length;for(let a=0;a<i;a++)s[a].collectRenderables(r,e,t)},collectRenderablesWithEffects(r,e,t){const{renderPipes:s}=e;for(let i=0;i<this.effects.length;i++){const a=this.effects[i];s[a.pipe].push(a,this,r)}this.collectRenderablesSimple(r,e,t);for(let i=this.effects.length-1;i>=0;i--){const a=this.effects[i];s[a.pipe].pop(a,this,r)}}};class ua{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let e=0;e<this.filters.length;e++)this.filters[e].destroy();this.filters=null,this.filterArea=null}}class Sh{constructor(){this._effectClasses=[],this._tests=[],this._initialized=!1}init(){this._initialized||(this._initialized=!0,this._effectClasses.forEach(e=>{this.add({test:e.test,maskClass:e})}))}add(e){this._tests.push(e)}getMaskEffect(e){this._initialized||this.init();for(let t=0;t<this._tests.length;t++){const s=this._tests[t];if(s.test(e))return pe.get(s.maskClass,e)}return e}returnMaskEffect(e){pe.return(e)}}const ii=new Sh;Q.handleByList(M.MaskEffect,ii._effectClasses);const kh={_maskEffect:null,_maskOptions:{inverse:!1,channel:"red"},_filterEffect:null,effects:[],_markStructureAsChanged(){const r=this.renderGroup||this.parentRenderGroup;r&&(r.structureDidChange=!0)},addEffect(r){this.effects.indexOf(r)===-1&&(this.effects.push(r),this.effects.sort((t,s)=>t.priority-s.priority),this._markStructureAsChanged(),this._updateIsSimple())},removeEffect(r){const e=this.effects.indexOf(r);e!==-1&&(this.effects.splice(e,1),this._markStructureAsChanged(),this._updateIsSimple())},set mask(r){const e=this._maskEffect;e?.mask!==r&&(e&&(this.removeEffect(e),ii.returnMaskEffect(e),this._maskEffect=null),r!=null&&(this._maskEffect=ii.getMaskEffect(r),this.addEffect(this._maskEffect)))},get mask(){return this._maskEffect?.mask},setMask(r){this._maskOptions={...this._maskOptions,...r},r.mask&&(this.mask=r.mask),this._markStructureAsChanged()},set filters(r){!Array.isArray(r)&&r&&(r=[r]);const e=this._filterEffect||(this._filterEffect=new ua);r=r;const t=r?.length>0,s=e.filters?.length>0,i=t!==s;r=Array.isArray(r)?r.slice(0):r,e.filters=Object.freeze(r),i&&(t?this.addEffect(e):(this.removeEffect(e),e.filters=r??null))},get filters(){return this._filterEffect?.filters},set filterArea(r){this._filterEffect||(this._filterEffect=new ua),this._filterEffect.filterArea=r},get filterArea(){return this._filterEffect?.filterArea}},bh={label:null,get name(){return G(V,"Container.name property has been removed, use Container.label instead"),this.label},set name(r){G(V,"Container.name property has been removed, use Container.label instead"),this.label=r},getChildByName(r,e=!1){return this.getChildByLabel(r,e)},getChildByLabel(r,e=!1){const t=this.children;for(let s=0;s<t.length;s++){const i=t[s];if(i.label===r||r instanceof RegExp&&r.test(i.label))return i}if(e)for(let s=0;s<t.length;s++){const a=t[s].getChildByLabel(r,!0);if(a)return a}return null},getChildrenByLabel(r,e=!1,t=[]){const s=this.children;for(let i=0;i<s.length;i++){const a=s[i];(a.label===r||r instanceof RegExp&&r.test(a.label))&&t.push(a)}if(e)for(let i=0;i<s.length;i++)s[i].getChildrenByLabel(r,!0,t);return t}},fe=pe.getPool(H),Ue=pe.getPool(be),zh=new H,vh={getFastGlobalBounds(r,e){e||(e=new be),e.clear(),this._getGlobalBoundsRecursive(!!r,e,this.parentRenderLayer),e.isValid||e.set(0,0,0,0);const t=this.renderGroup||this.parentRenderGroup;return e.applyMatrix(t.worldTransform),e},_getGlobalBoundsRecursive(r,e,t){let s=e;if(r&&this.parentRenderLayer&&this.parentRenderLayer!==t||this.localDisplayStatus!==7||!this.measurable)return;const i=!!this.effects.length;if((this.renderGroup||i)&&(s=Ue.get().clear()),this.boundsArea)e.addRect(this.boundsArea,this.worldTransform);else{if(this.renderPipeId){const o=this.bounds;s.addFrame(o.minX,o.minY,o.maxX,o.maxY,this.groupTransform)}const a=this.children;for(let o=0;o<a.length;o++)a[o]._getGlobalBoundsRecursive(r,s,t)}if(i){let a=!1;const o=this.renderGroup||this.parentRenderGroup;for(let n=0;n<this.effects.length;n++)this.effects[n].addBounds&&(a||(a=!0,s.applyMatrix(o.worldTransform)),this.effects[n].addBounds(s,!0));a&&s.applyMatrix(o.worldTransform.copyTo(zh).invert()),e.addBounds(s),Ue.return(s)}else this.renderGroup&&(e.addBounds(s,this.relativeGroupTransform),Ue.return(s))}};function Wo(r,e,t){t.clear();let s,i;return r.parent?e?s=r.parent.worldTransform:(i=fe.get().identity(),s=Di(r,i)):s=H.IDENTITY,jo(r,t,s,e),i&&fe.return(i),t.isValid||t.set(0,0,0,0),t}function jo(r,e,t,s){if(!r.visible||!r.measurable)return;let i;s?i=r.worldTransform:(r.updateLocalTransform(),i=fe.get(),i.appendFrom(r.localTransform,t));const a=e,o=!!r.effects.length;if(o&&(e=Ue.get().clear()),r.boundsArea)e.addRect(r.boundsArea,i);else{const n=r.bounds;n&&!n.isEmpty()&&(e.matrix=i,e.addBounds(n));for(let l=0;l<r.children.length;l++)jo(r.children[l],e,i,s)}if(o){for(let n=0;n<r.effects.length;n++)r.effects[n].addBounds?.(e);a.addBounds(e,H.IDENTITY),Ue.return(e)}s||fe.return(i)}function Di(r,e){const t=r.parent;return t&&(Di(t,e),t.updateLocalTransform(),e.append(t.localTransform)),e}function Ii(r,e){if(r===16777215||!e)return e;if(e===16777215||!r)return r;const t=r>>16&255,s=r>>8&255,i=r&255,a=e>>16&255,o=e>>8&255,n=e&255,l=t*a/255|0,h=s*o/255|0,c=i*n/255|0;return(l<<16)+(h<<8)+c}const da=16777215;function fa(r,e){return r===da?e:e===da?r:Ii(r,e)}function rr(r){return((r&255)<<16)+(r&65280)+(r>>16&255)}const Ph={getGlobalAlpha(r){if(r)return this.renderGroup?this.renderGroup.worldAlpha:this.parentRenderGroup?this.parentRenderGroup.worldAlpha*this.alpha:this.alpha;let e=this.alpha,t=this.parent;for(;t;)e*=t.alpha,t=t.parent;return e},getGlobalTransform(r=new H,e){if(e)return r.copyFrom(this.worldTransform);this.updateLocalTransform();const t=Di(this,fe.get().identity());return r.appendFrom(this.localTransform,t),fe.return(t),r},getGlobalTint(r){if(r)return this.renderGroup?rr(this.renderGroup.worldColor):this.parentRenderGroup?rr(fa(this.localColor,this.parentRenderGroup.worldColor)):this.tint;let e=this.localColor,t=this.parent;for(;t;)e=fa(e,t.localColor),t=t.parent;return rr(e)}};function Qo(r,e,t){return e.clear(),t||(t=H.IDENTITY),Yo(r,e,t,r,!0),e.isValid||e.set(0,0,0,0),e}function Yo(r,e,t,s,i){let a;if(i)a=fe.get(),a=t.copyTo(a);else{if(!r.visible||!r.measurable)return;r.updateLocalTransform();const l=r.localTransform;a=fe.get(),a.appendFrom(l,t)}const o=e,n=!!r.effects.length;if(n&&(e=Ue.get().clear()),r.boundsArea)e.addRect(r.boundsArea,a);else{r.renderPipeId&&(e.matrix=a,e.addBounds(r.bounds));const l=r.children;for(let h=0;h<l.length;h++)Yo(l[h],e,a,s,!1)}if(n){for(let l=0;l<r.effects.length;l++)r.effects[l].addLocalBounds?.(e,s);o.addBounds(e,H.IDENTITY),Ue.return(e)}fe.return(a)}function Vo(r,e){const t=r.children;for(let s=0;s<t.length;s++){const i=t[s],a=i.uid,o=(i._didViewChangeTick&65535)<<16|i._didContainerChangeTick&65535,n=e.index;(e.data[n]!==a||e.data[n+1]!==o)&&(e.data[e.index]=a,e.data[e.index+1]=o,e.didChange=!0),e.index=n+2,i.children.length&&Vo(i,e)}return e.didChange}const Ch=new H,Th={_localBoundsCacheId:-1,_localBoundsCacheData:null,_setWidth(r,e){const t=Math.sign(this.scale.x)||1;e!==0?this.scale.x=r/e*t:this.scale.x=t},_setHeight(r,e){const t=Math.sign(this.scale.y)||1;e!==0?this.scale.y=r/e*t:this.scale.y=t},getLocalBounds(){this._localBoundsCacheData||(this._localBoundsCacheData={data:[],index:1,didChange:!1,localBounds:new be});const r=this._localBoundsCacheData;return r.index=1,r.didChange=!1,r.data[0]!==this._didViewChangeTick&&(r.didChange=!0,r.data[0]=this._didViewChangeTick),Vo(this,r),r.didChange&&Qo(this,r.localBounds,Ch),r.localBounds},getBounds(r,e){return Wo(this,r,e||new be)}},Bh={_onRender:null,set onRender(r){const e=this.renderGroup||this.parentRenderGroup;if(!r){this._onRender&&e?.removeOnRender(this),this._onRender=null;return}this._onRender||e?.addOnRender(this),this._onRender=r},get onRender(){return this._onRender}},Mh={_zIndex:0,sortDirty:!1,sortableChildren:!1,get zIndex(){return this._zIndex},set zIndex(r){this._zIndex!==r&&(this._zIndex=r,this.depthOfChildModified())},depthOfChildModified(){this.parent&&(this.parent.sortableChildren=!0,this.parent.sortDirty=!0),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0)},sortChildren(){this.sortDirty&&(this.sortDirty=!1,this.children.sort(Eh))}};function Eh(r,e){return r._zIndex-e._zIndex}const Dh={getGlobalPosition(r=new de,e=!1){return this.parent?this.parent.toGlobal(this._position,r,e):(r.x=this._position.x,r.y=this._position.y),r},toGlobal(r,e,t=!1){const s=this.getGlobalTransform(fe.get(),t);return e=s.apply(r,e),fe.return(s),e},toLocal(r,e,t,s){e&&(r=e.toGlobal(r,t,s));const i=this.getGlobalTransform(fe.get(),s);return t=i.applyInverse(r,t),fe.return(i),t}};class Ri{constructor(){this.uid=q("instructionSet"),this.instructions=[],this.instructionSize=0,this.renderables=[],this.gcTick=0}reset(){this.instructionSize=0}destroy(){if(this.renderPipes)for(const e in this.renderPipes)this.renderPipes[e].destroyInstructionSet?.(this);this.instructions.length=0,this.renderables.length=0,this.renderPipes=null,this.gcTick=0}add(e){this.instructions[this.instructionSize++]=e}log(){this.instructions.length=this.instructionSize,console.table(this.instructions,["type","action"])}}class qo{constructor(){this._screenSizes=new Map,this._widths=[],this._heights=[]}get size(){return this._screenSizes.size}set(e,t,s){const i=this._screenSizes.get(e);return i&&i.pixelWidth===t&&i.pixelHeight===s?!1:(this._screenSizes.set(e,{pixelWidth:t,pixelHeight:s}),this._update(),!0)}remove(e){return this._screenSizes.delete(e)?(this._update(),!0):!1}getFittingWidth(e){return this._getFittingAxis(e,this._widths)}getFittingHeight(e){return this._getFittingAxis(e,this._heights)}hasWidth(e){return this._widths.includes(e)}hasHeight(e){return this._heights.includes(e)}_getFittingAxis(e,t){for(let s=0;s<t.length;s++){const i=t[s];if(i>=e)return i}}_update(){this._widths=[...this._screenSizes.values()].map(e=>e.pixelWidth).filter((e,t,s)=>s.indexOf(e)===t).sort((e,t)=>e-t),this._heights=[...this._screenSizes.values()].map(e=>e.pixelHeight).filter((e,t,s)=>s.indexOf(e)===t).sort((e,t)=>e-t)}}let Ih=0;const ps=32767,Rh=4294967296,Gh=8589934592,ma=Object.create(null);let Lh=0;function Fh(r){const e=ma[r];return e!==void 0?e:ma[r]=Lh++}function Hh(r,e,t,s,i,a){return(r<<17)+(e<<2)+((s?1:0)<<1)+(t?1:0)+(a==="nearest"?1:0)*Rh+Fh(i)*Gh}class Oh{constructor(e){this._buckets=new Map,this._poolKey=Object.create(null),this._poolStyle=Object.create(null),this._screens=new qo,this._enableFullScreen=!1,this.textureOptions=e||{}}get textureStyle(){return G(Je,"TexturePool.textureStyle is no longer used, pooled textures carry their own style. Pass scaleMode in the request instead."),this._textureStyle||(this._textureStyle=new At(this.textureOptions)),this._textureStyle}set textureStyle(e){G(Je,"TexturePool.textureStyle is no longer used, pooled textures carry their own style. Pass scaleMode in the request instead."),this._textureStyle=e}get enableFullScreen(){return G(Je,"TexturePool.enableFullScreen is no longer used, the pool sizes textures to the screens registered with setScreenSize."),this._enableFullScreen}set enableFullScreen(e){G(Je,"TexturePool.enableFullScreen is no longer used, the pool sizes textures to the screens registered with setScreenSize."),this._enableFullScreen=e}createTexture(...e){let t=e[0];typeof t=="number"&&(G(Je,"TexturePool.createTexture params are now an options object. See params: { width, height, antialias, autoGenerateMipmaps }"),t={width:t,height:e[1],antialias:e[2]??!1,autoGenerateMipmaps:e[3]??!1});const s=t.format??this.textureOptions.format??me.defaultOptions.format,i=t.scaleMode??this.textureOptions.scaleMode??At.defaultOptions.scaleMode,a=new me({...this.textureOptions,width:t.width,height:t.height,resolution:1,antialias:t.antialias??!1,autoGarbageCollect:!1,autoGenerateMipmaps:t.autoGenerateMipmaps??!1,format:s,scaleMode:i});return new L({source:a,label:`texturePool_${Ih++}`})}getOptimalTexture(...e){let t=e[0];typeof t=="number"&&(G(Je,"TexturePool.getOptimalTexture params are now an options object. See params: { width, height, resolution, antialias, autoGenerateMipmaps }"),t={width:t,height:e[1],resolution:e[2]??1,antialias:e[3]??!1,autoGenerateMipmaps:e[4]??!1});const s=t.width,i=t.height,a=t.resolution??1,o=t.antialias??!1,n=t.autoGenerateMipmaps??!1,l=t.format??this.textureOptions.format??me.defaultOptions.format,h=t.scaleMode??this.textureOptions.scaleMode??At.defaultOptions.scaleMode,{width:c,height:u}=this.getOptimalSize(s,i,a);(c>ps||u>ps)&&j(`TexturePool: ${c}x${u} is larger than the ${ps}px pool key limit, textures of this size may be pooled together`);const f=Hh(c,u,o,n,l,h);let d=this._buckets.get(f);d||(d=[],this._buckets.set(f,d));let m=d.pop();return m||(m=this.createTexture({width:c,height:u,antialias:o,autoGenerateMipmaps:n,format:l,scaleMode:h}),this._poolStyle[m.uid]=m.source.style),m.source._resolution=a,m.source.width=c/a,m.source.height=u/a,m.source.pixelWidth=c,m.source.pixelHeight=u,m.frame.x=0,m.frame.y=0,m.frame.width=s,m.frame.height=i,m.updateUvs(),this._poolKey[m.uid]=f,m}getOptimalSize(e,t,s=1){const i=Math.ceil(e*s-1e-6),a=Math.ceil(t*s-1e-6),o=Rt(i),n=this._screens.getFittingWidth(i),l=Rt(a),h=this._screens.getFittingHeight(a);return{width:n!==void 0?Math.min(n,o):o,height:h!==void 0?Math.min(h,l):l}}getSameSizeTexture(e,t=!1){const s=e.source;return this.getOptimalTexture({width:e.width,height:e.height,resolution:s._resolution,antialias:t})}returnTexture(e,t=!1){const s=e.uid,i=this._poolKey[s];if(i===void 0){j("TexturePool: returnTexture was passed a texture that did not come from this pool, ignoring it");return}const a=this._poolStyle[s];t&&e.source.style!==a&&(e.source.style=a);const o=this._buckets.get(i);if(!o){delete this._poolKey[s],delete this._poolStyle[s],e.destroy(!0);return}o.push(e)}setScreenSize(e,t,s){this._screens.set(e,t,s)&&this._pruneScreenTextures()}removeScreen(e){this._screens.remove(e)&&this._pruneScreenTextures()}_pruneScreenTextures(){for(const[e,t]of this._buckets){const s=e>>>0,i=s>>>17,a=s>>>2&32767;(Gt(i)||this._screens.hasWidth(i))&&(Gt(a)||this._screens.hasHeight(a))||(this._dropTextures(t,!0),this._buckets.delete(e))}}_dropTextures(e,t){for(let s=0;s<e.length;s++){const i=e[s];delete this._poolKey[i.uid],delete this._poolStyle[i.uid],t&&i.destroy(!0)}}clear(e){for(const t of this._buckets.values())this._dropTextures(t,e!==!1);this._buckets.clear()}}const Jr=new Oh;mr.register(Jr);class Nh{constructor(){this.renderPipeId="renderGroup",this.root=null,this.canBundle=!1,this.renderGroupParent=null,this.renderGroupChildren=[],this.worldTransform=new H,this.worldColorAlpha=4294967295,this.worldColor=16777215,this.worldAlpha=1,this.childrenToUpdate=Object.create(null),this.updateTick=0,this.gcTick=0,this.childrenRenderablesToUpdate={list:[],index:0},this.structureDidChange=!0,this.instructionSet=new Ri,this._onRenderContainers=[],this.textureNeedsUpdate=!0,this.isCachedAsTexture=!1,this._matrixDirty=7}init(e){this.root=e,e._onRender&&this.addOnRender(e),e.didChange=!0;const t=e.children;for(let s=0;s<t.length;s++){const i=t[s];i._updateFlags=15,this.addChild(i)}}enableCacheAsTexture(e={}){this.textureOptions=e,this.isCachedAsTexture=!0,this.textureNeedsUpdate=!0}disableCacheAsTexture(){this.isCachedAsTexture=!1,this.texture&&(Jr.returnTexture(this.texture),this.texture=null)}updateCacheTexture(){this.textureNeedsUpdate=!0;const e=this._parentCacheAsTextureRenderGroup;e&&!e.textureNeedsUpdate&&e.updateCacheTexture()}reset(){this.renderGroupChildren.length=0;for(const e in this.childrenToUpdate){const t=this.childrenToUpdate[e];t.list.fill(null),t.index=0}this.childrenRenderablesToUpdate.index=0,this.childrenRenderablesToUpdate.list.fill(null),this.root=null,this.updateTick=0,this.structureDidChange=!0,this._onRenderContainers.length=0,this.renderGroupParent=null,this.disableCacheAsTexture()}get localTransform(){return this.root.localTransform}addRenderGroupChild(e){e.renderGroupParent&&e.renderGroupParent._removeRenderGroupChild(e),e.renderGroupParent=this,this.renderGroupChildren.push(e)}_removeRenderGroupChild(e){const t=this.renderGroupChildren.indexOf(e);t>-1&&this.renderGroupChildren.splice(t,1),e.renderGroupParent=null}addChild(e){if(this.structureDidChange=!0,e.parentRenderGroup=this,e.updateTick=-1,e.parent===this.root?e.relativeRenderGroupDepth=1:e.relativeRenderGroupDepth=e.parent.relativeRenderGroupDepth+1,e.didChange=!0,this.onChildUpdate(e),e.renderGroup){this.addRenderGroupChild(e.renderGroup);return}e._onRender&&this.addOnRender(e);const t=e.children;for(let s=0;s<t.length;s++)this.addChild(t[s])}removeChild(e){if(this.structureDidChange=!0,e._onRender&&(e.renderGroup||this.removeOnRender(e)),e.parentRenderGroup=null,e.renderGroup){this._removeRenderGroupChild(e.renderGroup);return}const t=e.children;for(let s=0;s<t.length;s++)this.removeChild(t[s])}removeChildren(e){for(let t=0;t<e.length;t++)this.removeChild(e[t])}onChildUpdate(e){let t=this.childrenToUpdate[e.relativeRenderGroupDepth];t||(t=this.childrenToUpdate[e.relativeRenderGroupDepth]={index:0,list:[]}),t.list[t.index++]=e}updateRenderable(e){e.globalDisplayStatus<7||(this.instructionSet.renderPipes[e.renderPipeId].updateRenderable(e),e.didViewUpdate=!1)}onChildViewUpdate(e){this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++]=e}get isRenderable(){return this.root.localDisplayStatus===7&&this.worldAlpha>0}addOnRender(e){this._onRenderContainers.indexOf(e)===-1&&this._onRenderContainers.push(e)}removeOnRender(e){const t=this._onRenderContainers.indexOf(e);t!==-1&&this._onRenderContainers.splice(t,1)}runOnRender(e){for(let t=0;t<this._onRenderContainers.length;t++)this._onRenderContainers[t]._onRender(e)}destroy(){this.disableCacheAsTexture(),this.renderGroupParent=null,this.root=null,this.childrenRenderablesToUpdate=null,this.childrenToUpdate=null,this.renderGroupChildren=null,this._onRenderContainers=null,this.instructionSet?.destroy(),this.instructionSet=null}getChildren(e=[]){const t=this.root.children;for(let s=0;s<t.length;s++)this._getChildren(t[s],e);return e}_getChildren(e,t=[]){if(t.push(e),e.renderGroup)return t;const s=e.children;for(let i=0;i<s.length;i++)this._getChildren(s[i],t);return t}invalidateMatrices(){this._matrixDirty=7}get inverseWorldTransform(){return(this._matrixDirty&1)===0?this._inverseWorldTransform:(this._matrixDirty&=-2,this._inverseWorldTransform||(this._inverseWorldTransform=new H),this._inverseWorldTransform.copyFrom(this.worldTransform).invert())}get textureOffsetInverseTransform(){return(this._matrixDirty&2)===0?this._textureOffsetInverseTransform:(this._matrixDirty&=-3,this._textureOffsetInverseTransform||(this._textureOffsetInverseTransform=new H),this._textureOffsetInverseTransform.copyFrom(this.inverseWorldTransform).translate(-this._textureBounds.x,-this._textureBounds.y))}get inverseParentTextureTransform(){if((this._matrixDirty&4)===0)return this._inverseParentTextureTransform;this._matrixDirty&=-5;const e=this._parentCacheAsTextureRenderGroup;return e?(this._inverseParentTextureTransform||(this._inverseParentTextureTransform=new H),this._inverseParentTextureTransform.copyFrom(this.worldTransform).prepend(e.inverseWorldTransform).translate(-e._textureBounds.x,-e._textureBounds.y)):this.worldTransform}get cacheToLocalTransform(){return this.isCachedAsTexture?this.textureOffsetInverseTransform:this._parentCacheAsTextureRenderGroup?this._parentCacheAsTextureRenderGroup.textureOffsetInverseTransform:null}}function Uh(r,e,t={}){for(const s in e)!t[s]&&e[s]!==void 0&&(r[s]=e[s])}const ws=new le(null),yr=new le(null),As=new le(null,1,1),gr=new le(null),pa=1,Xh=2,_s=4;class ie extends De{constructor(e={}){super(),this.uid=q("renderable"),this._updateFlags=15,this.renderGroup=null,this.parentRenderGroup=null,this.parentRenderGroupIndex=0,this.didChange=!1,this.didViewUpdate=!1,this.relativeRenderGroupDepth=0,this.children=[],this.parent=null,this.includeInBuild=!0,this.measurable=!0,this.isSimple=!0,this.parentRenderLayer=null,this.updateTick=-1,this.localTransform=new H,this.relativeGroupTransform=new H,this.groupTransform=this.relativeGroupTransform,this.destroyed=!1,this._position=new le(this,0,0),this._scale=As,this._pivot=yr,this._origin=gr,this._skew=ws,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._rotation=0,this.localColor=16777215,this.localAlpha=1,this.groupAlpha=1,this.groupColor=16777215,this.groupColorAlpha=4294967295,this.localBlendMode="inherit",this.groupBlendMode="normal",this.localDisplayStatus=7,this.globalDisplayStatus=7,this._didContainerChangeTick=0,this._didViewChangeTick=0,this._didLocalTransformChangeId=-1,this.effects=[],Uh(this,e,{children:!0,parent:!0,effects:!0}),e.children?.forEach(t=>this.addChild(t)),e.parent?.addChild(this)}static mixin(e){G("8.8.0","Container.mixin is deprecated, please use extensions.mixin instead."),Q.mixin(ie,e)}set _didChangeId(e){this._didViewChangeTick=e>>12&4095,this._didContainerChangeTick=e&4095}get _didChangeId(){return this._didContainerChangeTick&4095|(this._didViewChangeTick&4095)<<12}addChild(...e){if(this.allowChildren||G(V,"addChild: Only Containers will be allowed to add children in v8.0.0"),e.length>1){for(let i=0;i<e.length;i++)this.addChild(e[i]);return e[0]}const t=e[0],s=this.renderGroup||this.parentRenderGroup;return t.parent===this?(this.children.splice(this.children.indexOf(t),1),this.children.push(t),s&&(s.structureDidChange=!0),t):(t.parent&&t.parent.removeChild(t),this.children.push(t),this.sortableChildren&&(this.sortDirty=!0),t.parent=this,t.didChange=!0,t._updateFlags=15,s&&s.addChild(t),this.emit("childAdded",t,this,this.children.length-1),t.emit("added",this),this._didViewChangeTick++,t._zIndex!==0&&t.depthOfChildModified(),t)}removeChild(...e){if(e.length>1){for(let i=0;i<e.length;i++)this.removeChild(e[i]);return e[0]}const t=e[0],s=this.children.indexOf(t);return s>-1&&(this._didViewChangeTick++,this.children.splice(s,1),this.renderGroup?this.renderGroup.removeChild(t):this.parentRenderGroup&&this.parentRenderGroup.removeChild(t),t.parentRenderLayer&&t.parentRenderLayer.detach(t),t.parent=null,this.emit("childRemoved",t,this,s),t.emit("removed",this)),t}_onUpdate(e){e&&e===this._skew&&this._updateSkew(),this._didContainerChangeTick++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(e){!!this.renderGroup!==e&&(e?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;const e=this.parentRenderGroup;e?.removeChild(this),this.renderGroup=pe.get(Nh,this),this.groupTransform=H.IDENTITY,e?.addChild(this),this._updateIsSimple()}disableRenderGroup(){if(!this.renderGroup)return;const e=this.parentRenderGroup;e?.removeChild(this),pe.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,e?.addChild(this),this._updateIsSimple()}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new H),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(e){this._position.x=e}get y(){return this._position.y}set y(e){this._position.y=e}get position(){return this._position}set position(e){this._position.copyFrom(e)}get rotation(){return this._rotation}set rotation(e){this._rotation!==e&&(this._rotation=e,this._onUpdate(this._skew))}get angle(){return this.rotation*Vl}set angle(e){this.rotation=e*ql}get pivot(){return this._pivot===yr&&(this._pivot=new le(this,0,0)),this._pivot}set pivot(e){this._pivot===yr&&(this._pivot=new le(this,0,0),this._origin!==gr&&j("Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.")),typeof e=="number"?this._pivot.set(e):this._pivot.copyFrom(e)}get skew(){return this._skew===ws&&(this._skew=new le(this,0,0)),this._skew}set skew(e){this._skew===ws&&(this._skew=new le(this,0,0)),this._skew.copyFrom(e)}get scale(){return this._scale===As&&(this._scale=new le(this,1,1)),this._scale}set scale(e){this._scale===As&&(this._scale=new le(this,0,0)),typeof e=="string"&&(e=parseFloat(e)),typeof e=="number"?this._scale.set(e):this._scale.copyFrom(e)}get origin(){return this._origin===gr&&(this._origin=new le(this,0,0)),this._origin}set origin(e){this._origin===gr&&(this._origin=new le(this,0,0),this._pivot!==yr&&j("Setting both a pivot and origin on a Container is not recommended. This can lead to unexpected behavior if not handled carefully.")),typeof e=="number"?this._origin.set(e):this._origin.copyFrom(e)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(e){const t=this.getLocalBounds().width;this._setWidth(e,t)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(e){const t=this.getLocalBounds().height;this._setHeight(e,t)}getSize(e){e||(e={});const t=this.getLocalBounds();return e.width=Math.abs(this.scale.x*t.width),e.height=Math.abs(this.scale.y*t.height),e}setSize(e,t){const s=this.getLocalBounds();typeof e=="object"?(t=e.height??e.width,e=e.width):t??(t=e),e!==void 0&&this._setWidth(e,s.width),t!==void 0&&this._setHeight(t,s.height)}_updateSkew(){const e=this._rotation,t=this._skew;this._cx=Math.cos(e+t._y),this._sx=Math.sin(e+t._y),this._cy=-Math.sin(e-t._x),this._sy=Math.cos(e-t._x)}updateTransform(e){return this.position.set(typeof e.x=="number"?e.x:this.position.x,typeof e.y=="number"?e.y:this.position.y),this.scale.set(typeof e.scaleX=="number"?e.scaleX:this.scale.x,typeof e.scaleY=="number"?e.scaleY:this.scale.y),this.rotation=typeof e.rotation=="number"?e.rotation:this.rotation,this.skew.set(typeof e.skewX=="number"?e.skewX:this.skew.x,typeof e.skewY=="number"?e.skewY:this.skew.y),this.pivot.set(typeof e.pivotX=="number"?e.pivotX:this.pivot.x,typeof e.pivotY=="number"?e.pivotY:this.pivot.y),this.origin.set(typeof e.originX=="number"?e.originX:this.origin.x,typeof e.originY=="number"?e.originY:this.origin.y),this}setFromMatrix(e){e.decompose(this)}updateLocalTransform(){const e=this._didContainerChangeTick;if(this._didLocalTransformChangeId===e)return;this._didLocalTransformChangeId=e;const t=this.localTransform,s=this._scale,i=this._pivot,a=this._origin,o=this._position,n=s._x,l=s._y,h=i._x,c=i._y,u=-a._x,f=-a._y;t.a=this._cx*n,t.b=this._sx*n,t.c=this._cy*l,t.d=this._sy*l,t.tx=o._x-(h*t.a+c*t.c)+(u*t.a+f*t.c)-u,t.ty=o._y-(h*t.b+c*t.d)+(u*t.b+f*t.d)-f}set alpha(e){e!==this.localAlpha&&(this.localAlpha=e,this._updateFlags|=pa,this._onUpdate())}get alpha(){return this.localAlpha}set tint(e){const s=ee.shared.setValue(e??16777215).toBgrNumber();s!==this.localColor&&(this.localColor=s,this._updateFlags|=pa,this._onUpdate())}get tint(){return rr(this.localColor)}set blendMode(e){this.localBlendMode!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Xh,this.localBlendMode=e,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(e){const t=e?2:0;(this.localDisplayStatus&2)!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=_s,this.localDisplayStatus^=2,this._onUpdate(),this.emit("visibleChanged",e))}get culled(){return!(this.localDisplayStatus&4)}set culled(e){const t=e?0:4;(this.localDisplayStatus&4)!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=_s,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(e){const t=e?1:0;(this.localDisplayStatus&1)!==t&&(this._updateFlags|=_s,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(e=!1){if(this.destroyed)return;this.destroyed=!0;let t;if(this.children.length&&(t=this.removeChildren(0,this.children.length)),this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._origin=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),(typeof e=="boolean"?e:e?.children)&&t)for(let i=0;i<t.length;++i)t[i].destroy(e);this.renderGroup?.destroy(),this.renderGroup=null}}Q.mixin(ie,yh,vh,Dh,Bh,Th,kh,bh,Mh,ph,_h,Ph,gh);class $r extends ie{constructor(e){super(e),this.canBundle=!0,this.allowChildren=!1,this._roundPixels=0,this._lastUsed=-1,this._gpuData=Object.create(null),this.autoGarbageCollect=!0,this._gcLastUsed=-1,this._bounds=new be(0,1,0,0),this._boundsDirty=!0,this.autoGarbageCollect=e.autoGarbageCollect??!0}get bounds(){return this._boundsDirty?(this.updateBounds(),this._boundsDirty=!1,this._bounds):this._bounds}get roundPixels(){return!!this._roundPixels}set roundPixels(e){this._roundPixels=e?1:0}containsPoint(e){const t=this.bounds,{x:s,y:i}=e;return s>=t.minX&&s<=t.maxX&&i>=t.minY&&i<=t.maxY}onViewUpdate(){if(this._didViewChangeTick++,this._boundsDirty=!0,this.didViewUpdate)return;this.didViewUpdate=!0;const e=this.renderGroup||this.parentRenderGroup;e&&e.onChildViewUpdate(this)}unload(){this.emit("unload",this);for(const e in this._gpuData)this._gpuData[e]?.destroy();this._gpuData=Object.create(null),this.onViewUpdate()}destroy(e){this.unload(),super.destroy(e),this._bounds=null}collectRenderablesSimple(e,t,s){const{renderPipes:i}=t;i.blendMode.pushBlendMode(this,this.groupBlendMode,e);const o=i[this.renderPipeId];o?.addRenderable&&o.addRenderable(this,e),this.didViewUpdate=!1;const n=this.children,l=n.length;for(let h=0;h<l;h++)n[h].collectRenderables(e,t,s);i.blendMode.popBlendMode(e)}}class se extends $r{constructor(e=L.EMPTY){e instanceof L&&(e={texture:e});const{texture:t=L.EMPTY,anchor:s,roundPixels:i,width:a,height:o,...n}=e;super({label:"Sprite",...n}),this.renderPipeId="sprite",this.batched=!0,this._visualBounds={minX:0,maxX:1,minY:0,maxY:0},this._anchor=new le({_onUpdate:()=>{this.onViewUpdate()}}),s?this.anchor=s:t.defaultAnchor&&(this.anchor=t.defaultAnchor),this.texture=t,this.allowChildren=!1,this.roundPixels=i??!1,a!==void 0&&(this.width=a),o!==void 0&&(this.height=o)}static from(e,t=!1){return e instanceof L?new se(e):new se(L.from(e,t))}set texture(e){e||(e=L.EMPTY);const t=this._texture;t!==e&&(t&&t.dynamic&&t.off("update",this.onViewUpdate,this),e.dynamic&&e.on("update",this.onViewUpdate,this),this._texture=e,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get visualBounds(){return Oo(this._visualBounds,this._anchor,this._texture),this._visualBounds}get sourceBounds(){return G("8.6.1","Sprite.sourceBounds is deprecated, use visualBounds instead."),this.visualBounds}updateBounds(){const e=this._anchor,t=this._texture,s=this._bounds,{width:i,height:a}=t.orig;s.minX=-e._x*i,s.maxX=s.minX+i,s.minY=-e._y*a,s.maxY=s.minY+a}destroy(e=!1){if(super.destroy(e),typeof e=="boolean"?e:e?.texture){const s=typeof e=="boolean"?e:e?.textureSource;this._texture.destroy(s)}this._texture=null,this._visualBounds=null,this._bounds=null,this._anchor=null}get anchor(){return this._anchor}set anchor(e){typeof e=="number"?this._anchor.set(e):this._anchor.copyFrom(e)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(e){this._setWidth(e,this._texture.orig.width),this._width=e}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(e){this._setHeight(e,this._texture.orig.height),this._height=e}getSize(e){return e||(e={}),e.width=Math.abs(this.scale.x)*this._texture.orig.width,e.height=Math.abs(this.scale.y)*this._texture.orig.height,e}setSize(e,t){typeof e=="object"?(t=e.height??e.width,e=e.width):t??(t=e),e!==void 0&&this._setWidth(e,this._texture.orig.width),t!==void 0&&this._setHeight(t,this._texture.orig.height)}}const Wh=new be;function Ko(r,e,t){const s=Wh;r.measurable=!0,Wo(r,t,s),e.addBoundsMask(s),r.measurable=!1}function Zo(r,e,t){const s=Ue.get();r.measurable=!0;const i=fe.get().identity(),a=Jo(r,t,i);Qo(r,s,a),r.measurable=!1,e.addBoundsMask(s),fe.return(i),Ue.return(s)}function Jo(r,e,t){return r?(r!==e&&(Jo(r.parent,e,t),r.updateLocalTransform(),t.append(r.localTransform)),t):(j("Mask bounds, renderable is not inside the root container"),t)}class $o{constructor(e){this.priority=0,this.inverse=!1,this.channel="red",this.pipe="alphaMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e,this.renderMaskToTexture=!(e instanceof se),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask=null)}addBounds(e,t){this.inverse||Ko(this.mask,e,t)}addLocalBounds(e,t){Zo(this.mask,e,t)}containsPoint(e,t){const s=this.mask;return t(s,e)}destroy(){this.reset()}static test(e){return e instanceof se}}$o.extension=M.MaskEffect;class en{constructor(e){this.priority=0,this.pipe="colorMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e}destroy(){}static test(e){return typeof e=="number"}}en.extension=M.MaskEffect;class tn{constructor(e){this.priority=0,this.pipe="stencilMask",e?.mask&&this.init(e.mask)}init(e){this.mask=e,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask!==null&&(this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null)}addBounds(e,t){Ko(this.mask,e,t)}addLocalBounds(e,t){Zo(this.mask,e,t)}containsPoint(e,t){const s=this.mask;return t(s,e)}destroy(){this.reset()}static test(e){return e instanceof ie}}tn.extension=M.MaskEffect;const jh={createCanvas:(r,e)=>{const t=document.createElement("canvas");return t.width=r,t.height=e,t},createImage:()=>new Image,getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(r,e)=>fetch(r,e),parseXML:r=>new DOMParser().parseFromString(r,"text/xml")};let wa=jh;const U={get(){return wa},set(r){wa=r}};class rn extends me{constructor(e){e.resource||(e.resource=U.get().createCanvas()),e.width||(e.width=e.resource.width,e.autoDensity||(e.width/=e.resolution)),e.height||(e.height=e.resource.height,e.autoDensity||(e.height/=e.resolution)),super(e),this.uploadMethodId="image",this.autoDensity=e.autoDensity,this.resizeCanvas(),this.transparent=!!e.transparent}resizeCanvas(){this.autoDensity&&"style"in this.resource&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(e=this.width,t=this.height,s=this._resolution){const i=super.resize(e,t,s);return i&&this.resizeCanvas(),i}static test(e){return globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&e instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}}rn.extension=M.TextureSource;class Ft extends me{constructor(e){super(e),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(e){return globalThis.HTMLImageElement&&e instanceof HTMLImageElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||globalThis.VideoFrame&&e instanceof VideoFrame}}Ft.extension=M.TextureSource;var Or=(r=>(r[r.INTERACTION=50]="INTERACTION",r[r.HIGH=25]="HIGH",r[r.NORMAL=0]="NORMAL",r[r.LOW=-25]="LOW",r[r.UTILITY=-50]="UTILITY",r))(Or||{});class xs{constructor(e,t=null,s=0,i=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=e,this._context=t,this.priority=s,this._once=i}match(e,t=null){return this._fn===e&&this._context===t}emit(e){this._fn&&(this._context?this._fn.call(this._context,e):this._fn(e));const t=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this._fn=null,this._context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const sn=class Ae{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new xs(null,null,1/0),this.deltaMS=1/Ae.targetFPMS,this.elapsedMS=1/Ae.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,s=Or.NORMAL){return this._addListener(new xs(e,t,s))}addOnce(e,t,s=Or.NORMAL){return this._addListener(new xs(e,t,s,!0))}_addListener(e){let t=this._head.next,s=this._head;if(!t)e.connect(s);else{for(;t;){if(e.priority>t.priority){e.connect(s);break}s=t,t=t.next}e.previous||e.connect(s)}return this._startIfPossible(),this}remove(e,t){let s=this._head.next;for(;s;)s.match(e,t)?s=s.destroy():s=s.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const a=e-this._lastFrame|0;if(a<this._minElapsedMS)return;this._lastFrame=e-a%this._minElapsedMS}this.deltaMS=t,this.deltaTime=this.deltaMS*Ae.targetFPMS;const s=this._head;let i=s.next;for(;i;)i=i.emit(this);s.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=e}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(e){const t=Math.min(Math.max(0,e)/1e3,Ae.targetFPMS);this._maxElapsedMS=1/t,this._minElapsedMS&&e>this.maxFPS&&(this.maxFPS=e)}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(e){e===0?this._minElapsedMS=0:(e<this.minFPS&&(this.minFPS=e),this._minElapsedMS=1/(e/1e3))}static get shared(){if(!Ae._shared){const e=Ae._shared=new Ae;e.autoStart=!0,e._protected=!0}return Ae._shared}static get system(){if(!Ae._system){const e=Ae._system=new Ae;e.autoStart=!0,e._protected=!0}return Ae._system}};sn.targetFPMS=.06;let Ct=sn,ys;async function an(){return ys??(ys=(async()=>{const e=U.get().createCanvas(1,1).getContext("webgl");if(!e)return"premultiply-alpha-on-upload";const t=await new Promise(o=>{const n=document.createElement("video");n.onloadeddata=()=>o(n),n.onerror=()=>o(null),n.autoplay=!1,n.crossOrigin="anonymous",n.preload="auto",n.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",n.load()});if(!t)return"premultiply-alpha-on-upload";const s=e.createTexture();e.bindTexture(e.TEXTURE_2D,s);const i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s,0),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,e.NONE),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t);const a=new Uint8Array(4);return e.readPixels(0,0,1,1,e.RGBA,e.UNSIGNED_BYTE,a),e.deleteFramebuffer(i),e.deleteTexture(s),e.getExtension("WEBGL_lose_context")?.loseContext(),a[0]<=a[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),ys}const es=class on extends me{constructor(e){super(e),this.isReady=!1,this.uploadMethodId="video",e={...on.defaultOptions,...e},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=e.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=e.autoPlay!==!1,this.alphaMode=e.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),this._onLoadedMetadata=this._onLoadedMetadata.bind(this),e.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){const e=Ct.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-e)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;const e=this.resource,t=this.options;return(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(t.preload||e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlayThrough),e.addEventListener("error",this._onError,!0)),this.isValid||e.addEventListener("loadedmetadata",this._onLoadedMetadata),this.alphaMode=await an(),this._load=new Promise((s,i)=>{this.isValid?s(this):(this._resolve=s,this._reject=i,t.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${t.preloadTimeoutMs}ms`))})),e.load())}),this._load}_onError(e){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.resource;return!e.paused&&!e.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onLoadedMetadata(){this.isValid&&this._mediaReady()}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlayThrough),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){const e=this.resource;this.isValid&&(this.isReady=!0,this.resize(e.videoWidth,e.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&this.isValid&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();const e=this.resource;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlayThrough),e.removeEventListener("loadedmetadata",this._onLoadedMetadata),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(Ct.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Ct.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Ct.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement}};es.extension=M.TextureSource;es.defaultOptions={...me.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};es.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let sr=es;const Me=(r,e,t=!1)=>(Array.isArray(r)||(r=[r]),e?r.map(s=>typeof s=="string"||t?e(s):s):r);class Qh{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||j(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const s=Me(e);let i;for(let l=0;l<this.parsers.length;l++){const h=this.parsers[l];if(h.test(t)){i=h.getCacheableAssets(s,t);break}}const a=new Map(Object.entries(i||{}));i||s.forEach(l=>{a.set(l,t)});const o=[...a.keys()],n={cacheKeys:o,keys:s};s.forEach(l=>{this._cacheMap.set(l,n)}),o.forEach(l=>{const h=i?i[l]:t;this._cache.has(l)&&this._cache.get(l)!==h&&j("[Cache] already has key:",l),this._cache.set(l,a.get(l))})}remove(e){if(!this._cacheMap.has(e)){j(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(i=>{this._cache.delete(i)}),t.keys.forEach(i=>{this._cacheMap.delete(i)})}get parsers(){return this._parsers}}const ce=new Qh,ai=[];Q.handleByList(M.TextureSource,ai);function nn(r={}){const e=r&&r.resource,t=e?r.resource:r,s=e?r:{resource:r};for(let i=0;i<ai.length;i++){const a=ai[i];if(a.test(t))return new a(s)}throw new Error(`Could not find a source type for resource: ${s.resource}`)}function Yh(r={},e=!1){const t=r&&r.resource,s=t?r.resource:r,i=t?r:{resource:r};if(!e&&ce.has(s))return ce.get(s);const a=new L({source:nn(i)});return a.on("destroy",()=>{ce.has(s)&&ce.remove(s)}),e||ce.set(s,a),a}function Vh(r,e=!1){return typeof r=="string"?ce.get(r):r instanceof me?new L({source:r}):Yh(r,e)}L.from=Vh;me.from=nn;Q.add($o,en,tn,sr,Ft,rn,Ei);var rt=(r=>(r[r.Low=0]="Low",r[r.Normal=1]="Normal",r[r.High=2]="High",r))(rt||{});function Ce(r){if(typeof r!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(r)}`)}function Xt(r){return r.split("?")[0].split("#")[0]}function qh(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Kh(r,e,t){return r.replace(new RegExp(qh(e),"g"),t)}function Zh(r,e){let t="",s=0,i=-1,a=0,o=-1;for(let n=0;n<=r.length;++n){if(n<r.length)o=r.charCodeAt(n);else{if(o===47)break;o=47}if(o===47){if(!(i===n-1||a===1))if(i!==n-1&&a===2){if(t.length<2||s!==2||t.charCodeAt(t.length-1)!==46||t.charCodeAt(t.length-2)!==46){if(t.length>2){const l=t.lastIndexOf("/");if(l!==t.length-1){l===-1?(t="",s=0):(t=t.slice(0,l),s=t.length-1-t.lastIndexOf("/")),i=n,a=0;continue}}else if(t.length===2||t.length===1){t="",s=0,i=n,a=0;continue}}}else t.length>0?t+=`/${r.slice(i+1,n)}`:t=r.slice(i+1,n),s=n-i-1;i=n,a=0}else o===46&&a!==-1?++a:a=-1}return t}const xe={toPosix(r){return Kh(r,"\\","/")},isUrl(r){return/^https?:/.test(this.toPosix(r))},isDataUrl(r){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(r)},isBlobUrl(r){return r.startsWith("blob:")},hasProtocol(r){return/^[^/:]+:/.test(this.toPosix(r))},getProtocol(r){Ce(r),r=this.toPosix(r);const e=/^file:\/\/\//.exec(r);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(r);return t?t[0]:""},toAbsolute(r,e,t){if(Ce(r),this.isDataUrl(r)||this.isBlobUrl(r))return r;const s=Xt(this.toPosix(e??U.get().getBaseUrl())),i=Xt(this.toPosix(t??this.rootname(s)));return r=this.toPosix(r),r.startsWith("/")?xe.join(i,r.slice(1)):this.isAbsolute(r)?r:this.join(s,r)},normalize(r){if(Ce(r),r.length===0)return".";if(this.isDataUrl(r)||this.isBlobUrl(r))return r;r=this.toPosix(r);let e="";const t=r.startsWith("/");this.hasProtocol(r)&&(e=this.rootname(r),r=r.slice(e.length));const s=r.endsWith("/");return r=Zh(r),r.length>0&&s&&(r+="/"),t?`/${r}`:e+r},isAbsolute(r){return Ce(r),r=this.toPosix(r),this.hasProtocol(r)?!0:r.startsWith("/")},join(...r){if(r.length===0)return".";let e;for(let t=0;t<r.length;++t){const s=r[t];if(Ce(s),s.length>0)if(e===void 0)e=s;else{const i=r[t-1]??"";this.joinExtensions.includes(this.extname(i).toLowerCase())?e+=`/../${s}`:e+=`/${s}`}}return e===void 0?".":this.normalize(e)},dirname(r){if(Ce(r),r.length===0)return".";r=this.toPosix(r);let e=r.charCodeAt(0);const t=e===47;let s=-1,i=!0;const a=this.getProtocol(r),o=r;r=r.slice(a.length);for(let n=r.length-1;n>=1;--n)if(e=r.charCodeAt(n),e===47){if(!i){s=n;break}}else i=!1;return s===-1?t?"/":this.isUrl(o)?a+r:a:t&&s===1?"//":a+r.slice(0,s)},rootname(r){Ce(r),r=this.toPosix(r);let e="";if(r.startsWith("/")?e="/":e=this.getProtocol(r),this.isUrl(r)){const t=r.indexOf("/",e.length);t!==-1?e=r.slice(0,t):e=r,e.endsWith("/")||(e+="/")}return e},basename(r,e){Ce(r),e&&Ce(e),r=Xt(this.toPosix(r));let t=0,s=-1,i=!0,a;if(e!==void 0&&e.length>0&&e.length<=r.length){if(e.length===r.length&&e===r)return"";let o=e.length-1,n=-1;for(a=r.length-1;a>=0;--a){const l=r.charCodeAt(a);if(l===47){if(!i){t=a+1;break}}else n===-1&&(i=!1,n=a+1),o>=0&&(l===e.charCodeAt(o)?--o===-1&&(s=a):(o=-1,s=n))}return t===s?s=n:s===-1&&(s=r.length),r.slice(t,s)}for(a=r.length-1;a>=0;--a)if(r.charCodeAt(a)===47){if(!i){t=a+1;break}}else s===-1&&(i=!1,s=a+1);return s===-1?"":r.slice(t,s)},extname(r){Ce(r),r=Xt(this.toPosix(r));let e=-1,t=0,s=-1,i=!0,a=0;for(let o=r.length-1;o>=0;--o){const n=r.charCodeAt(o);if(n===47){if(!i){t=o+1;break}continue}s===-1&&(i=!1,s=o+1),n===46?e===-1?e=o:a!==1&&(a=1):e!==-1&&(a=-1)}return e===-1||s===-1||a===0||a===1&&e===s-1&&e===t+1?"":r.slice(e,s)},parse(r){Ce(r);const e={root:"",dir:"",base:"",ext:"",name:""};if(r.length===0)return e;r=Xt(this.toPosix(r));let t=r.charCodeAt(0);const s=this.isAbsolute(r);let i;e.root=this.rootname(r),s||this.hasProtocol(r)?i=1:i=0;let a=-1,o=0,n=-1,l=!0,h=r.length-1,c=0;for(;h>=i;--h){if(t=r.charCodeAt(h),t===47){if(!l){o=h+1;break}continue}n===-1&&(l=!1,n=h+1),t===46?a===-1?a=h:c!==1&&(c=1):a!==-1&&(c=-1)}return a===-1||n===-1||c===0||c===1&&a===n-1&&a===o+1?n!==-1&&(o===0&&s?e.base=e.name=r.slice(1,n):e.base=e.name=r.slice(o,n)):(o===0&&s?(e.name=r.slice(1,a),e.base=r.slice(1,n)):(e.name=r.slice(o,a),e.base=r.slice(o,n)),e.ext=r.slice(a,n)),e.dir=this.dirname(r),e},sep:"/",delimiter:":",joinExtensions:[".html"]};function ln(r,e,t,s,i){const a=e[t];for(let o=0;o<a.length;o++){const n=a[o];t<e.length-1?ln(r.replace(s[t],n),e,t+1,s,i):i.push(r.replace(s[t],n))}}function Jh(r){const e=/\{(.*?)\}/g,t=r.match(e),s=[];if(t){const i=[];t.forEach(a=>{const o=a.substring(1,a.length-1).split(",");i.push(o)}),ln(r,i,0,t,s)}else s.push(r);return s}const Nr=r=>!Array.isArray(r);class Ht{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(s=>`${encodeURIComponent(s)}=${encodeURIComponent(t[s])}`).join("&")}}getAlias(e){const{alias:t,src:s}=e;return Me(t||s,a=>typeof a=="string"?a:Array.isArray(a)?a.map(o=>o?.src??o):a?.src?a.src:a,!0)}removeAlias(e,t){this._assetMap[e]&&(t&&t!==this._resolverHash[e]||(delete this._resolverHash[e],delete this._assetMap[e]))}addManifest(e){this._manifest&&j("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const s=[];let i=t;Array.isArray(t)||(i=Object.entries(t).map(([a,o])=>typeof o=="string"||Array.isArray(o)?{alias:a,src:o}:{alias:a,...o})),i.forEach(a=>{const o=a.src,n=a.alias;let l;if(typeof n=="string"){const h=this._createBundleAssetId(e,n);s.push(h),l=[n,h]}else{const h=n.map(c=>this._createBundleAssetId(e,c));s.push(...h),l=[...n,...h]}this.add({...a,alias:l,src:o})}),this._bundles[e]=s}add(e){const t=[];Array.isArray(e)?t.push(...e):t.push(e);let s;s=a=>{this.hasKey(a)&&j(`[Resolver] already has key: ${a} overwriting`)},Me(t).forEach(a=>{const{src:o}=a;let{data:n,format:l,loadParser:h,parser:c}=a;const u=Me(o).map(p=>typeof p=="string"?Jh(p):Array.isArray(p)?p:[p]),f=this.getAlias(a);Array.isArray(f)?f.forEach(s):s(f);const d=[],m=p=>{const w=this._parsers.find(A=>A.test(p));return{src:p,...w?.parse(p)}};u.forEach(p=>{p.forEach(w=>{let A={};if(typeof w!="object"?A=m(w):(n=w.data??n,l=w.format??l,(w.loadParser||w.parser)&&(h=w.loadParser??h,c=w.parser??c),A={...m(w.src),...w}),!f)throw new Error(`[Resolver] alias is undefined for this asset: ${A.src}`);A=this._buildResolvedAsset(A,{aliases:f,data:n,format:l,loadParser:h,parser:c,progressSize:a.progressSize}),d.push(A)})}),f.forEach(p=>{this._assetMap[p]=d})})}resolveBundle(e){const t=Nr(e);e=Me(e);const s={};return e.forEach(i=>{const a=this._bundles[i];if(a){const o=this.resolve(a),n={};for(const l in o){const h=o[l];n[this._extractAssetIdFromBundle(i,l)]=h}s[i]=n}}),t?s[e[0]]:s}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const s={};for(const i in t)s[i]=t[i].src;return s}return t.src}resolve(e){const t=Nr(e);e=Me(e);const s={};return e.forEach(i=>{if(!this._resolverHash[i])if(this._assetMap[i]){let a=this._assetMap[i];const o=this._getPreferredOrder(a);o?.priority.forEach(n=>{o.params[n].forEach(l=>{const h=a.filter(c=>c[n]?c[n]===l:!1);h.length&&(a=h)})}),this._resolverHash[i]=a[0]}else this._resolverHash[i]=this._buildResolvedAsset({alias:[i],src:i},{});s[i]=this._resolverHash[i]}),t?s[e[0]]:s}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;t<e.length;t++){const s=e[t],i=this._preferredOrder.find(a=>a.params.format.includes(s.format));if(i)return i}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}_buildResolvedAsset(e,t){const{aliases:s,data:i,loadParser:a,parser:o,format:n,progressSize:l}=t;return(this._basePath||this._rootPath)&&(e.src=xe.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=s??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...i||{},...e.data},e.loadParser=a??e.loadParser,e.parser=o??e.parser,e.format=n??e.format??$h(e.src),l!==void 0&&(e.progressSize=l),e}}Ht.RETINA_PREFIX=/@([0-9\.]+)x/;function $h(r){return r.split(".").pop().split("?").shift().split("#").shift()}const oi=(r,e)=>{const t=e.split("?")[1];return t&&(r+=`?${t}`),r},hn=class er{constructor(e,t){this.linkedSheets=[];let s=e;e?.source instanceof me&&(s={texture:e,data:t});const{texture:i,data:a,cachePrefix:o=""}=s;this.cachePrefix=o,this._texture=i instanceof L?i:null,this.textureSource=i.source,this.textures={},this.animations={},this.data=a;const n=parseFloat(a.meta.scale);n?(this.resolution=n,i.source.resolution=this.resolution):this.resolution=i.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=er.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}parseSync(){return this._processFrames(0,!0),this._processAnimations(),this.textures}_processFrames(e,t=!1){let s=e;const i=t?1/0:er.BATCH_SIZE;for(;s-e<i&&s<this._frameKeys.length;){const a=this._frameKeys[s],o=this._frames[a],n=o.frame;if(n){let l=null,h=null;const c=o.trimmed!==!1&&o.sourceSize?o.sourceSize:o.frame,u=new $(0,0,Math.floor(c.w)/this.resolution,Math.floor(c.h)/this.resolution);o.rotated?l=new $(Math.floor(n.x)/this.resolution,Math.floor(n.y)/this.resolution,Math.floor(n.h)/this.resolution,Math.floor(n.w)/this.resolution):l=new $(Math.floor(n.x)/this.resolution,Math.floor(n.y)/this.resolution,Math.floor(n.w)/this.resolution,Math.floor(n.h)/this.resolution),o.trimmed!==!1&&o.spriteSourceSize&&(h=new $(Math.floor(o.spriteSourceSize.x)/this.resolution,Math.floor(o.spriteSourceSize.y)/this.resolution,Math.floor(n.w)/this.resolution,Math.floor(n.h)/this.resolution)),this.textures[a]=new L({source:this.textureSource,frame:l,orig:u,trim:h,rotate:o.rotated?2:0,defaultAnchor:o.anchor,defaultBorders:o.borders,label:a.toString()})}s++}}_processAnimations(){const e=this.data.animations||{};for(const t in e){this.animations[t]=[];for(let s=0;s<e[t].length;s++){const i=e[t][s];this.animations[t].push(this.textures[i])}}}_parseComplete(){const e=this._callback;this._callback=null,this._batchIndex=0,e.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*er.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*er.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(e=!1){for(const t in this.textures)this.textures[t].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,e&&(this._texture?.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};hn.BATCH_SIZE=1e3;let ni=hn;const ec=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];function cn(r,e,t){const s={};if(r.forEach(i=>{s[i]=e}),Object.keys(e.textures).forEach(i=>{s[`${e.cachePrefix}${i}`]=e.textures[i]}),!t){const i=xe.dirname(r[0]);e.linkedSheets.forEach((a,o)=>{const n=cn([`${i}/${e.data.meta.related_multi_packs[o]}`],a,!0);Object.assign(s,n)})}return s}const tc={extension:M.Asset,cache:{test:r=>r instanceof ni,getCacheableAssets:(r,e)=>cn(r,e,!1)},resolver:{extension:{type:M.ResolveParser,name:"resolveSpritesheet"},test:r=>{const t=r.split("?")[0].split("."),s=t.pop(),i=t.pop();return s==="json"&&ec.includes(i)},parse:r=>{const e=r.split(".");return{resolution:parseFloat(Ht.RETINA_PREFIX.exec(r)?.[1]??"1"),format:e[e.length-2],src:r}}},loader:{name:"spritesheetLoader",id:"spritesheet",extension:{type:M.LoadParser,priority:rt.Normal,name:"spritesheetLoader"},async testParse(r,e){return xe.extname(e.src).toLowerCase()===".json"&&!!r.frames},async parse(r,e,t){const{texture:s,imageFilename:i,textureOptions:a,cachePrefix:o}=e?.data??{};let n=xe.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");let l;if(s instanceof L)l=s;else{const u=oi(n+(i??r.meta.image),e.src);l=(await t.load([{src:u,data:a}]))[u]}const h=new ni({texture:l.source,data:r,cachePrefix:o});await h.parse();const c=r?.meta?.related_multi_packs;if(Array.isArray(c)){const u=[];for(const d of c){if(typeof d!="string")continue;let m=n+d;e.data?.ignoreMultiPack||(m=oi(m,e.src),u.push(t.load({src:m,data:{textureOptions:a,ignoreMultiPack:!0}})))}const f=await Promise.all(u);h.linkedSheets=f,f.forEach(d=>{d.linkedSheets=[h].concat(h.linkedSheets.filter(m=>m!==d))})}return h},async unload(r,e,t){await t.unload(r.textureSource._sourceOrigin),r.destroy(!1)}}};Q.add(tc);const gs=Object.create(null),Aa=Object.create(null);function ts(r,e){let t=Aa[r];return t===void 0&&(gs[e]===void 0&&(gs[e]=1),Aa[r]=t=gs[e]++),t}let Sr;function un(){return(!Sr||Sr?.isContextLost())&&(Sr=U.get().createCanvas().getContext("webgl",{})),Sr}let kr;function rc(){if(!kr){kr="mediump";const r=un();r&&r.getShaderPrecisionFormat&&(kr=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision?"highp":"mediump")}return kr}function sc(r,e,t){return e?r:t?(r=r.replace("out vec4 finalColor;",""),`
|
|
6
|
+
|
|
7
|
+
#ifdef GL_ES // This checks if it is WebGL1
|
|
8
|
+
#define in varying
|
|
9
|
+
#define finalColor gl_FragColor
|
|
10
|
+
#define texture texture2D
|
|
11
|
+
#endif
|
|
12
|
+
${r}
|
|
13
|
+
`):`
|
|
14
|
+
|
|
15
|
+
#ifdef GL_ES // This checks if it is WebGL1
|
|
16
|
+
#define in attribute
|
|
17
|
+
#define out varying
|
|
18
|
+
#endif
|
|
19
|
+
${r}
|
|
20
|
+
`}const ic=/\buniform\s+([iu]?sampler\w+)/g,ac=/\bprecision\s+\w+\s+([iu]?sampler\w+)\s*;/g,oc={sampler2D:"lowp",samplerCube:"lowp"};function nc(r,e,t){const s=t?e.maxSupportedFragmentPrecision:e.maxSupportedVertexPrecision;if(r.substring(0,9)!=="precision"){let a=t?e.requestedFragmentPrecision:e.requestedVertexPrecision;a==="highp"&&s!=="highp"&&(a="mediump"),r=`precision ${a} float;
|
|
21
|
+
${r}`}else s!=="highp"&&r.substring(0,15)==="precision highp"&&(r=r.replace("precision highp","precision mediump"));const i=e.maxSupportedFragmentPrecision==="highp"?"highp":"mediump";return lc(r,i)}function lc(r,e){const t=new Set;let s="";for(const[,i]of r.matchAll(ac))t.add(i);for(const[,i]of r.matchAll(ic))t.has(i)||(t.add(i),s+=`precision ${oc[i]??e} ${i};
|
|
22
|
+
`);return s+r}function hc(r,e){return e?`#version 300 es
|
|
23
|
+
${r}`:r}const cc={},uc={};function dc(r,{name:e="pixi-program"},t=!0){e=e.replace(/\s+/g,"-"),e+=t?"-fragment":"-vertex";const s=t?cc:uc;return s[e]?(s[e]++,e+=`-${s[e]}`):s[e]=1,r.indexOf("#define SHADER_NAME")!==-1?r:`${`#define SHADER_NAME ${e}`}
|
|
24
|
+
${r}`}function fc(r,e){return e?r.replace("#version 300 es",""):r}const Ss={stripVersion:fc,ensurePrecision:nc,addProgramDefines:sc,setProgramName:dc,insertVersion:hc},Wt=Object.create(null),dn=class li{constructor(e){e={...li.defaultOptions,...e};const t=e.fragment.indexOf("#version 300 es")!==-1,s={stripVersion:t,ensurePrecision:{requestedFragmentPrecision:e.preferredFragmentPrecision,requestedVertexPrecision:e.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:rc()},setProgramName:{name:e.name},addProgramDefines:t,insertVersion:t};let i=e.fragment,a=e.vertex;Object.keys(Ss).forEach(o=>{const n=s[o];i=Ss[o](i,n,!0),a=Ss[o](a,n,!1)}),this.fragment=i,this.vertex=a,this.transformFeedbackVaryings=e.transformFeedbackVaryings,this._key=ts(`${this.vertex}:${this.fragment}`,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null,Wt[this._cacheKey]=null}static from(e){const t=`${e.vertex}:${e.fragment}`;return Wt[t]||(Wt[t]=new li(e),Wt[t]._cacheKey=t),Wt[t]}};dn.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};let fn=dn;const _a={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}};function mc(r){return _a[r]??_a.float32}const pc={f32:"float32","vec2<f32>":"float32x2","vec3<f32>":"float32x3","vec4<f32>":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2<i32>":"sint32x2","vec3<i32>":"sint32x3","vec4<i32>":"sint32x4",vec2i:"sint32x2",vec3i:"sint32x3",vec4i:"sint32x4",u32:"uint32","vec2<u32>":"uint32x2","vec3<u32>":"uint32x3","vec4<u32>":"uint32x4",vec2u:"uint32x2",vec3u:"uint32x3",vec4u:"uint32x4",bool:"uint32","vec2<bool>":"uint32x2","vec3<bool>":"uint32x3","vec4<bool>":"uint32x4"},xa=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|\)|$)/g;function ya(r,e){let t;for(;(t=xa.exec(r))!==null;){const s=pc[t[3]]??"float32";e[t[2]]={location:parseInt(t[1],10),format:s,stride:mc(s).stride,offset:0,instance:!1,start:0}}xa.lastIndex=0}function wc(r){return r.replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"")}function Ac({source:r,entryPoint:e}){const t={},s=wc(r),i=s.indexOf(`fn ${e}(`);if(i===-1)return t;const a=s.indexOf("->",i);if(a===-1)return t;const o=s.substring(i,a);if(ya(o,t),Object.keys(t).length===0){const n=o.match(/\(\s*\w+\s*:\s*(\w+)/);if(n){const l=n[1],h=new RegExp(`struct\\s+${l}\\s*\\{([^}]+)\\}`,"s"),c=s.match(h);c&&ya(c[1],t)}}return t}function ks(r){const e=/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g,t=/@group\((\d+)\)/,s=/@binding\((\d+)\)/,i=/var(<[^>]+>)? (\w+)/,a=/:\s*([\w<>]+)/,o=/struct\s+(\w+)\s*{([^}]+)}/g,n=/(\w+)\s*:\s*([\w\<\>]+)/g,l=/struct\s+(\w+)/,h=r.match(e)?.map(u=>{const f=u.match(i),d=f?.[1]??"";let m;return d==="<uniform>"?m="uniform":d.startsWith("<storage")&&(m="storage"),{group:parseInt(u.match(t)[1],10),binding:parseInt(u.match(s)[1],10),name:f[2],accessMode:m,type:u.match(a)[1]}});if(!h)return{groups:[],structs:[]};const c=r.match(o)?.map(u=>{const f=u.match(l)[1],d=u.match(n).reduce((m,p)=>{const[w,A]=p.split(":");return m[w.trim()]=A.trim(),m},{});return d?{name:f,members:d}:null}).filter(({name:u})=>h.some(f=>f.type===u||f.type.includes(`<${u}>`)))??[];return{groups:h,structs:c}}var re=(r=>(r[r.VERTEX=1]="VERTEX",r[r.FRAGMENT=2]="FRAGMENT",r[r.COMPUTE=4]="COMPUTE",r))(re||{});function br(r){return r.endsWith("<u32>")?"uint":r.endsWith("<i32>")?"sint":"float"}function _c({groups:r}){const e=[];for(let t=0;t<r.length;t++){const s=r[t];e[s.group]||(e[s.group]=[]),s.accessMode==="uniform"?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,buffer:{type:"uniform"}}):s.accessMode==="storage"?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,buffer:{type:"read-only-storage"}}):s.type==="sampler"?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,sampler:{type:"filtering"}}):s.type==="sampler_comparison"?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,sampler:{type:"comparison"}}):s.type==="texture_2d"||s.type.startsWith("texture_2d<")?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,texture:{sampleType:br(s.type),viewDimension:"2d",multisampled:!1}}):s.type==="texture_depth_2d"?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,texture:{sampleType:"depth",viewDimension:"2d",multisampled:!1}}):s.type==="texture_depth_2d_array"?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,texture:{sampleType:"depth",viewDimension:"2d-array",multisampled:!1}}):s.type==="texture_2d_array"||s.type.startsWith("texture_2d_array<")?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,texture:{sampleType:br(s.type),viewDimension:"2d-array",multisampled:!1}}):s.type==="texture_3d"||s.type.startsWith("texture_3d<")?e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,texture:{sampleType:br(s.type),viewDimension:"3d",multisampled:!1}}):(s.type==="texture_cube"||s.type.startsWith("texture_cube<"))&&e[s.group].push({binding:s.binding,visibility:re.VERTEX|re.FRAGMENT,texture:{sampleType:br(s.type),viewDimension:"cube",multisampled:!1}})}for(let t=0;t<e.length;t++)e[t]||(e[t]=[]);return e}function xc({groups:r}){const e=[];for(let t=0;t<r.length;t++){const s=r[t];e[s.group]||(e[s.group]={}),e[s.group][s.name]=s.binding}return e}function yc(r,e){const t=new Set,s=new Set,i=[...r.structs,...e.structs].filter(o=>t.has(o.name)?!1:(t.add(o.name),!0)),a=[...r.groups,...e.groups].filter(o=>{const n=`${o.name}-${o.binding}`;return s.has(n)?!1:(s.add(n),!0)});return{structs:i,groups:a}}const jt=Object.create(null);class rs{constructor(e){this._layoutKey=0,this._attributeLocationsKey=0;const{fragment:t,vertex:s,layout:i,gpuLayout:a,name:o}=e;if(this.name=o,this.fragment=t,this.vertex=s,t.source===s.source){const n=ks(t.source);this.structsAndGroups=n}else{const n=ks(s.source),l=ks(t.source);this.structsAndGroups=yc(n,l)}this.layout=i??xc(this.structsAndGroups),this.gpuLayout=a??_c(this.structsAndGroups),this.autoAssignGlobalUniforms=this.layout[0]?.globalUniforms!==void 0,this.autoAssignLocalUniforms=this.layout[1]?.localUniforms!==void 0,this._generateProgramKey()}_generateProgramKey(){const{vertex:e,fragment:t}=this,s=e.source+t.source+e.entryPoint+t.entryPoint;this._layoutKey=ts(s,"program")}get attributeData(){return this._attributeData??(this._attributeData=Ac(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null,jt[this._cacheKey]=null}static from(e){const t=`${e.vertex.source}:${e.fragment.source}:${e.fragment.entryPoint}:${e.vertex.entryPoint}`;return jt[t]||(jt[t]=new rs(e),jt[t]._cacheKey=t),jt[t]}}const mn=["f32","i32","u32","vec2<f32>","vec3<f32>","vec4<f32>","mat2x2<f32>","mat3x3<f32>","mat4x4<f32>","mat3x2<f32>","mat4x2<f32>","mat2x3<f32>","mat4x3<f32>","mat2x4<f32>","mat3x4<f32>","vec2<i32>","vec3<i32>","vec4<i32>","vec2<u32>","vec3<u32>","vec4<u32>"],gc=mn.reduce((r,e)=>(r[e]=!0,r),{});function Sc(r,e){switch(r){case"f32":return 0;case"vec2<f32>":return new Float32Array(2*e);case"vec3<f32>":return new Float32Array(3*e);case"vec4<f32>":return new Float32Array(4*e);case"mat2x2<f32>":return new Float32Array([1,0,0,1]);case"mat3x3<f32>":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4<f32>":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}const pn=class wn extends De{constructor(e,t){super(),this.uid=q("uniform"),this._resourceType="uniformGroup",this._resourceId=q("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1,t={...wn.defaultOptions,...t},this.uniformStructures=e;const s={};for(const i in e){const a=e[i];if(a.name=i,a.size=a.size??1,!gc[a.type]){const o=a.type.match(/^array<(\w+(?:<\w+>)?),\s*(\d+)>$/);if(o){const[,n,l]=o;throw new Error(`Uniform type ${a.type} is not supported. Use type: '${n}', size: ${l} instead.`)}throw new Error(`Uniform type ${a.type} is not supported. Supported uniform types are: ${mn.join(", ")}`)}a.value??(a.value=Sc(a.type,a.size)),s[i]=a.value}this.uniforms=s,this._dirtyId=1,this.ubo=t.ubo,this.isStatic=t.isStatic,this._signature=ts(Object.keys(s).map(i=>`${i}-${e[i].type}`).join("-"),"uniform-group")}get buffer(){return this._buffer}set buffer(e){this._buffer!==e&&(this._buffer?.off("change",this.onBufferChange,this),this._buffer=e,e?.on("change",this.onBufferChange,this))}get _gcLastUsed(){return this._buffer?._gcLastUsed??-1}set _gcLastUsed(e){this._buffer&&(this._buffer._gcLastUsed=e)}onBufferChange(){this._resourceId=q("resource"),this.emit("change",this)}update(){this._dirtyId++}};pn.defaultOptions={ubo:!1,isStatic:!1};let An=pn;class Rr{constructor(e){this.resources=Object.create(null),this._resourceKeysValue=null,this._dirty=!0;let t=0;for(const s in e){const i=e[s];this.setResource(i,t++)}}get _resourceKeys(){return this._resourceKeysValue??(this._resourceKeysValue=Object.keys(this.resources).map(Number)),this._resourceKeysValue}get _key(){if(this._dirty){this._dirty=!1;const e=[];let t=0;for(const s in this.resources)e[t++]=this.resources[s]?this.resources[s]._resourceId:-1;this._keyValue=e.join("|")}return this._keyValue}setResource(e,t){const s=this.resources[t];e!==s&&(s&&s.off?.("change",this.onResourceChange,this),e.on?.("change",this.onResourceChange,this),s===void 0&&(this._resourceKeysValue=null),this.resources[t]=e,this._dirty=!0)}getResource(e){return this.resources[e]}_touch(e){const t=this.resources,s=this._resourceKeys;for(let i=0;i<s.length;i++){const a=t[s[i]];a&&(a._gcLastUsed=e)}}destroy(){const e=this.resources;for(const t in e)e[t]?.off?.("change",this.onResourceChange,this);this.resources=null,this._resourceKeysValue=null}onResourceChange(e){if(this._dirty=!0,e.destroyed){const t=this.resources;for(const s in t)t[s]===e&&(t[s]=null);j(`[BindGroup] a '${e._resourceType}' was destroyed while still bound to a shader. Remove it from the shader before destroying it.`)}}}var hi=(r=>(r[r.WEBGL=1]="WEBGL",r[r.WEBGPU=2]="WEBGPU",r[r.CANVAS=4]="CANVAS",r[r.BOTH=3]="BOTH",r))(hi||{});class Ur{constructor(e){this.data={...e};const t=Object.keys(e).sort().map(s=>`${s}:${e[s]}`).join("|");this.id=ts(t,"shader-overrides")}static from(e){return e instanceof Ur?e:new Ur(e)}}class Gi extends De{constructor(e){super(),this.uid=q("shader"),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[],this._destroyed=!1;let{gpuProgram:t,glProgram:s,groups:i,resources:a,compatibleRenderers:o,groupMap:n,overrides:l}=e;this._overrides=l?Ur.from(l):null,this.gpuProgram=t,this.glProgram=s,o===void 0&&(o=0,t&&(o|=hi.WEBGPU),s&&(o|=hi.WEBGL)),this.compatibleRenderers=o;const h={};if(n)for(const c in n)for(const u in n[c]){const f=n[c][u];h[f]={group:c,binding:u,name:f}}if(!a&&!i&&(a={}),a&&i)throw new Error("[Shader] Cannot have both resources and groups");if(!t&&i&&!n)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(t&&i&&!n){const c=t.structsAndGroups.groups;n={},c.forEach(u=>{n[u.group]=n[u.group]||{},n[u.group][u.binding]=u.name,h[u.name]=u})}else if(a){i={},n||(n={}),t&&t.structsAndGroups.groups.forEach(f=>{n[f.group]=n[f.group]||{},n[f.group][f.binding]=f.name,h[f.name]=f});let c=0;for(const u in a)h[u]||(t&&!s&&j(`[Shader] the resource '${u}' matches no binding in the WGSL source — is the name correct?`),i[99]||(i[99]=new Rr,this._ownedBindGroups.push(i[99])),h[u]={group:99,binding:c,name:u},n[99]=n[99]||{},n[99][c]=u,c++);for(const u in a){const f=u;let d=a[u];!d.source&&!d._resourceType&&(d=new An(d));const m=h[f];m&&(i[m.group]||(i[m.group]=new Rr,this._ownedBindGroups.push(i[m.group])),i[m.group].setResource(d,m.binding))}}this.groups=i,this._uniformBindMap=n,this.resources=this._buildResourceAccessor(i,h)}addResource(e,t,s){var i,a;(i=this._uniformBindMap)[t]||(i[t]={}),(a=this._uniformBindMap[t])[s]||(a[s]=e),this.groups[t]||(this.groups[t]=new Rr,this._ownedBindGroups.push(this.groups[t]))}_buildResourceAccessor(e,t){const s={};for(const i in t){const a=t[i];Object.defineProperty(s,a.name,{get(){return e[a.group].getResource(a.binding)},set(o){e[a.group].setResource(o,a.binding)}})}return s}destroy(e=!1){this._destroyed||(this._destroyed=!0,this.emit("destroy",this),e&&(this.gpuProgram?.destroy(),this.glProgram?.destroy()),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(t=>{t.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null,this._overrides=null)}static from(e){const{gpu:t,gl:s,...i}=e;let a,o;return t&&(a=rs.from(t)),s&&(o=fn.from(s)),new Gi({gpuProgram:a,glProgram:o,...i})}}const kc={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},bc={BLEND:0,OFFSET:1,CULLING:2,DEPTH_TEST:3,WINDING:4,DEPTH_MASK:5},{BLEND:bs,OFFSET:zs,CULLING:vs,DEPTH_TEST:Ps,WINDING:Cs,DEPTH_MASK:Ts}=bc,ci=class _n{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<bs)}set blend(e){!!(this.data&1<<bs)!==e&&(this.data^=1<<bs)}get offsets(){return!!(this.data&1<<zs)}set offsets(e){!!(this.data&1<<zs)!==e&&(this.data^=1<<zs)}set cullMode(e){if(e==="none"){this.culling=!1;return}this.culling=!0,this.clockwiseFrontFace=e==="front"}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(this.data&1<<vs)}set culling(e){!!(this.data&1<<vs)!==e&&(this.data^=1<<vs)}get depthTest(){return!!(this.data&1<<Ps)}set depthTest(e){!!(this.data&1<<Ps)!==e&&(this.data^=1<<Ps)}get depthMask(){return!!(this.data&1<<Ts)}set depthMask(e){!!(this.data&1<<Ts)!==e&&(this.data^=1<<Ts)}get clockwiseFrontFace(){return!!(this.data&1<<Cs)}set clockwiseFrontFace(e){!!(this.data&1<<Cs)!==e&&(this.data^=1<<Cs)}get blendMode(){return this._blendMode}set blendMode(e){this.blend=e!=="none",this._blendMode=e,this._blendModeId=kc[e]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(e){this.offsets=!!e,this._polygonOffset=e}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){const e=new _n;return e.depthTest=!1,e.depthMask=!1,e.blend=!0,e}};ci.default2d=ci.for2d();let xn=ci;const ui=[];Q.handleByNamedList(M.Environment,ui);async function zc(r){if(!r)for(let e=0;e<ui.length;e++){const t=ui[e];if(t.value.test()){await t.value.load();return}}}let Qt;function vc(){if(typeof Qt=="boolean")return Qt;try{Qt=new Function("param1","param2","param3","return param1[param2] === param3;")({a:"b"},"a","b")===!0}catch{Qt=!1}return Qt}const lr=new Set;let di=!1;function ga(r,e,t=2){const s=e&&e.length,i=s?e[0]*t:r.length;lr.size&&lr.clear();let a=yn(r,0,i,t,!0);const o=[];if(!a||a.next===a.prev)return o;let n=0,l=0,h=0;if(s&&(a=Mc(r,e,a,t)),r.length>80*t){n=r[0],l=r[1];let c=n,u=l;for(let f=t;f<i;f+=t){const d=r[f],m=r[f+1];d<n&&(n=d),m<l&&(l=m),d>c&&(c=d),m>u&&(u=m)}h=Math.max(c-n,u-l),h=h!==0?32767/h:0}return fi(a,o,n,l,h),o}function yn(r,e,t,s,i){let a=null;if(i===Wc(r,e,t,s)>0)for(let o=e;o<t;o+=s)a=ba(o/s|0,r[o],r[o+1],a);else for(let o=t-s;o>=e;o-=s)a=ba(o/s|0,r[o],r[o+1],a);return a&&hr(a,a.next)&&(ur(a),a=a.next),a}function _t(r,e=r){const t=e===r;let s=r,i;do i=!1,s!==s.next&&(lr.size===0||!lr.has(s))&&(hr(s,s.next)||oe(s.prev,s,s.next)===0)?((t||s===e)&&(e=s.prev),di=!0,ur(s),s=s.prev,i=!0):(t||s!==e)&&(s=s.next,i=!t);while(i||s!==e);return e}function fi(r,e,t,s,i){i&&Fc(r,t,s,i);let a=r,o=!1;for(;r.prev!==r.next;){const n=r.prev,l=r.next;if(oe(n,r,l)<0&&(i?Cc(r,t,s,i):Pc(r))){e.push(n.i,r.i,l.i),ur(r),r=l,a=l;continue}if(r=l,r===a){if(di=!1,r=_t(r),di){a=r;continue}if(!o){r=Tc(r,e),a=r,o=!0;continue}Bc(r,e,t,s,i);break}}}function Pc(r){const e=r.prev,t=r,s=r.next,i=e.x,a=t.x,o=s.x,n=e.y,l=t.y,h=s.y,c=Math.min(i,a,o),u=Math.min(n,l,h),f=Math.max(i,a,o),d=Math.max(n,l,h);let m=s.next;for(;m!==e;){if(m.x>=c&&m.x<=f&&m.y>=u&&m.y<=d&&!(i===m.x&&n===m.y)&&Wr(i,n,a,l,o,h,m.x,m.y)&&oe(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function Cc(r,e,t,s){const i=r.prev,a=r,o=r.next,n=i.x,l=a.x,h=o.x,c=i.y,u=a.y,f=o.y,d=Math.min(n,l,h),m=Math.min(c,u,f),p=Math.max(n,l,h),w=Math.max(c,u,f),A=Ai(d,m,e,t,s),_=Ai(p,w,e,t,s);let x=r.prevZ;for(;x&&x.z>=A;){if(x.x>=d&&x.x<=p&&x.y>=m&&x.y<=w&&x!==o&&!(n===x.x&&c===x.y)&&Wr(n,c,l,u,h,f,x.x,x.y)&&oe(x.prev,x,x.next)>=0)return!1;x=x.prevZ}let y=r.nextZ;for(;y&&y.z<=_;){if(y.x>=d&&y.x<=p&&y.y>=m&&y.y<=w&&y!==o&&!(n===y.x&&c===y.y)&&Wr(n,c,l,u,h,f,y.x,y.y)&&oe(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}function Tc(r,e){let t=r,s=!1;do{const i=t.prev,a=t.next.next;kn(i,t,t.next,a,!1)&&cr(i,a)&&cr(a,i)&&(e.push(i.i,t.i,a.i),ur(t),ur(t.next),t=r=a,s=!0),t=t.next}while(t!==r);return s?_t(t):t}function Bc(r,e,t,s,i){let a=r;do{let o=a.next.next;for(;o!==a.prev;){if(a.i!==o.i&&Nc(a,o)){let n=bn(a,o);a=_t(a,a.next),n=_t(n,n.next),fi(a,e,t,s,i),fi(n,e,t,s,i);return}o=o.next}a=a.next}while(a!==r)}let mi=!1;function Mc(r,e,t,s){const i=[];for(let a=0,o=e.length;a<o;a++){const n=e[a]*s,l=a<o-1?e[a+1]*s:r.length,h=yn(r,n,l,s,!1);h===h.next&&lr.add(h),i.push(Oc(h))}i.sort(Ec),Ic(r.length/s,e.length),Sn(t,t),mi=!0;for(let a=0;a<i.length;a++)t=Dc(i[a],t);return mi=!1,_t(t)}function Ec(r,e){return r.x-e.x||r.y-e.y||(r.next.y-r.y)/(r.next.x-r.x)-(e.next.y-e.y)/(e.next.x-e.x)}function Dc(r,e){const t=Gc(r,e);if(!t)return e;const s=bn(t,r),i=s.next;return Sn(t,i.next),_t(s,s.next),_t(t,t.next)}const gn=16;let te=new Float64Array(0),Xr=0;const pi=[],wi=[];function Ic(r,e){const t=Math.ceil((r+2*e)/gn)+e+2;te.length<t*4&&(te=new Float64Array(t*4)),Xr=0}function Sn(r,e){let t=r;do{const s=Xr++;pi[s]=t;let i=t.x,a=t.y,o=t.x,n=t.y,l=0;do{const c=t.next;t.z=s,c.x<i&&(i=c.x),c.x>o&&(o=c.x),c.y<a&&(a=c.y),c.y>n&&(n=c.y),t=c}while(++l<gn&&t!==e);wi[s]=t;const h=s*4;te[h]=i,te[h+1]=a,te[h+2]=o,te[h+3]=n}while(t!==e)}function Rc(r,e){const t=r.z*4;e.x<te[t]&&(te[t]=e.x),e.y<te[t+1]&&(te[t+1]=e.y),e.x>te[t+2]&&(te[t+2]=e.x),e.y>te[t+3]&&(te[t+3]=e.y)}function Sa(r){let e=wi[r];for(;e.prev.next!==e;)e=e.next;return wi[r]=e,e}function ka(r){let e=pi[r];for(;e.prev.next!==e;)e=e.next;return pi[r]=e,e}function Gc(r,e){let t=e;const s=r.x,i=r.y;let a=-1/0,o;if(hr(r,t))return t;for(let f=0,d=0;f<Xr;f++,d+=4){if(i<te[d+1]||i>te[d+3]||te[d]>s||te[d+2]<=a)continue;const m=Sa(f);t=ka(f);do{if(t.prev.next===t){if(hr(r,t.next))return t.next;if(i<=t.y&&i>=t.next.y&&t.next.y!==t.y){const p=t.x+(i-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(p<=s&&p>a&&(a=p,o=t.x<t.next.x?t:t.next,p===s))return o}}t=t.next}while(t!==m)}if(!o)return null;const n=o.x,l=o.y,h=Math.min(i,l),c=Math.max(i,l);let u=1/0;for(let f=0,d=0;f<Xr;f++,d+=4){if(te[d+2]<n||te[d]>s||te[d+3]<h||te[d+1]>c)continue;const m=Sa(f);t=ka(f);do{if(t.prev.next===t&&s>=t.x&&t.x>=n&&s!==t.x&&Wr(i<l?s:a,i,n,l,i<l?a:s,i,t.x,t.y)){const p=Math.abs(i-t.y)/(s-t.x);(cr(t,r)||t.y===i&&t.next.y===i&&t.next.x>s)&&(p<u||p===u&&(t.x>o.x||t.x===o.x&&Lc(o,t)))&&(o=t,u=p)}t=t.next}while(t!==m)}return o}function Lc(r,e){return oe(r.prev,r,e.prev)<0&&oe(e.next,r,r.next)<0}const _e=[];let zt=[],ot=new Uint32Array(0),Yt=new Uint32Array(0);const Vt=new Uint32Array(256);function Fc(r,e,t,s){let i=r,a=0;do i.z=Ai(i.x,i.y,e,t,s),_e[a++]=i,i=i.next;while(i!==r);Hc(a);let o=null;for(let n=0;n<a;n++){const l=_e[n];l.prevZ=o,o&&(o.nextZ=l),o=l}o.nextZ=null,_e.fill(null,0,a),zt.fill(null,0,a)}function Hc(r){if(r<=32){for(let e=1;e<r;e++){const t=_e[e],s=t.z;let i=e-1;for(;i>=0&&_e[i].z>s;)_e[i+1]=_e[i],i--;_e[i+1]=t}return}ot.length<r&&(ot=new Uint32Array(r),Yt=new Uint32Array(r),zt=new Array(r));for(let e=0;e<r;e++)ot[e]=_e[e].z;zr(r,_e,ot,zt,Yt,0),zr(r,zt,Yt,_e,ot,8),zr(r,_e,ot,zt,Yt,16),zr(r,zt,Yt,_e,ot,24)}function zr(r,e,t,s,i,a){Vt.fill(0);for(let n=0;n<r;n++)Vt[t[n]>>>a&255]++;let o=0;for(let n=0;n<256;n++){const l=Vt[n];Vt[n]=o,o+=l}for(let n=0;n<r;n++){const l=t[n],h=Vt[l>>>a&255]++;s[h]=e[n],i[h]=l}}function Ai(r,e,t,s,i){return r=(r-t)*i|0,e=(e-s)*i|0,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,r|e<<1}function Oc(r){let e=r,t=r;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==r);return t}function Wr(r,e,t,s,i,a,o,n){return(i-o)*(e-n)>=(r-o)*(a-n)&&(r-o)*(s-n)>=(t-o)*(e-n)&&(t-o)*(a-n)>=(i-o)*(s-n)}function Nc(r,e){const t=hr(r,e)&&oe(r.prev,r,r.next)>0&&oe(e.prev,e,e.next)>0;return r.next.i!==e.i&&(t||cr(r,e)&&cr(e,r)&&(oe(r.prev,r,e.prev)!==0||oe(r,e.prev,e)!==0))&&!Uc(r,e)&&(t||Xc(r,e))}function oe(r,e,t){return(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y)}function hr(r,e){return r.x===e.x&&r.y===e.y}function kn(r,e,t,s,i=!0){const a=oe(r,e,t),o=oe(r,e,s),n=oe(t,s,r),l=oe(t,s,e);return(a>0&&o<0||a<0&&o>0)&&(n>0&&l<0||n<0&&l>0)?!0:i?!!(a===0&&vr(r,t,e)||o===0&&vr(r,s,e)||n===0&&vr(t,r,s)||l===0&&vr(t,e,s)):!1}function vr(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function Uc(r,e){const t=Math.min(r.x,e.x),s=Math.max(r.x,e.x),i=Math.min(r.y,e.y),a=Math.max(r.y,e.y);let o=r;do{const n=o.next;if(o.x>s&&n.x>s||o.x<t&&n.x<t||o.y>a&&n.y>a||o.y<i&&n.y<i){o=n;continue}if(o.i!==r.i&&n.i!==r.i&&o.i!==e.i&&n.i!==e.i&&kn(o,n,r,e))return!0;o=n}while(o!==r);return!1}function cr(r,e){return oe(r.prev,r,r.next)<0?oe(r,e,r.next)>=0&&oe(r,r.prev,e)>=0:oe(r,e,r.prev)<0||oe(r,r.next,e)<0}function Xc(r,e){let t=r,s=!1;const i=(r.x+e.x)/2,a=(r.y+e.y)/2;do{const o=t.next;t.y>a!=o.y>a&&i<(o.x-t.x)*(a-t.y)/(o.y-t.y)+t.x&&(s=!s),t=o}while(t!==r);return s}function bn(r,e){const t=_i(r.i,r.x,r.y),s=_i(e.i,e.x,e.y),i=r.next,a=e.prev;return r.next=e,e.prev=r,t.next=i,i.prev=t,s.next=t,t.prev=s,a.next=s,s.prev=a,s}function ba(r,e,t,s){const i=_i(r,e,t);return s?(i.next=s.next,i.prev=s,s.next.prev=i,s.next=i):(i.prev=i,i.next=i),i}function ur(r){r.next.prev=r.prev,r.prev.next=r.next,r.prevZ&&(r.prevZ.nextZ=r.nextZ),r.nextZ&&(r.nextZ.prevZ=r.prevZ),mi&&Rc(r.prev,r.next)}function _i(r,e,t){return{i:r,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function Wc(r,e,t,s){let i=0;for(let a=e,o=t-s;a<t;a+=s)i+=(r[o]-r[a])*(r[a+1]+r[o+1]),o=a;return i}const jc=ga.default||ga;var zn=(r=>(r[r.NONE=0]="NONE",r[r.COLOR=16384]="COLOR",r[r.STENCIL=1024]="STENCIL",r[r.DEPTH=256]="DEPTH",r[r.COLOR_DEPTH=16640]="COLOR_DEPTH",r[r.COLOR_STENCIL=17408]="COLOR_STENCIL",r[r.DEPTH_STENCIL=1280]="DEPTH_STENCIL",r[r.ALL=17664]="ALL",r))(zn||{});class Qc{constructor(e){this.items=[],this._name=e}emit(e,t,s,i,a,o,n,l){const{name:h,items:c}=this;for(let u=0,f=c.length;u<f;u++)c[u][h](e,t,s,i,a,o,n,l);return this}add(e){return e[this._name]&&(this.remove(e),this.items.push(e)),this}remove(e){const t=this.items.indexOf(e);return t!==-1&&this.items.splice(t,1),this}contains(e){return this.items.indexOf(e)!==-1}removeAll(){return this.items.length=0,this}destroy(){this.removeAll(),this.items=null,this._name=null}get empty(){return this.items.length===0}get name(){return this._name}}const Yc=["init","destroy","contextChange","resolutionChange","resetState","renderEnd","renderStart","render","update","postrender","prerender"],vn=class Pn extends De{constructor(e){super(),this.tick=0,this.uid=q("renderer"),this.runners=Object.create(null),this.renderPipes=Object.create(null),this._initOptions={},this._systemsHash=Object.create(null),this.type=e.type,this.name=e.name,this.config=e;const t=[...Yc,...this.config.runners??[]];this._addRunners(...t),this._unsafeEvalCheck()}async init(e={}){const t=e.skipExtensionImports===!0?!0:e.manageImports===!1;await zc(t),!t&&this.config.loaders&&await Promise.all(this.config.loaders.map(s=>s.value.load())),this._addSystems(this.config.systems),this._addPipes(this.config.renderPipes,this.config.renderPipeAdaptors);for(const s in this._systemsHash)e={...this._systemsHash[s].constructor.defaultOptions,...e};e={...Pn.defaultOptions,...e},this._roundPixels=e.roundPixels?1:0;for(let s=0;s<this.runners.init.items.length;s++)await this.runners.init.items[s].init(e);this._initOptions=e}render(e,t){this.tick++;let s=e;if(s instanceof ie&&(s={container:s},t&&(G(V,"passing a second argument is deprecated, please use render options instead"),s.target=t.renderTexture)),s.target||(s.target=this.view.renderTarget),s.target===this.view.renderTarget&&(this._lastObjectRendered=s.container,s.clearColor??(s.clearColor=this.background.colorRgba),s.clear??(s.clear=this.background.clearBeforeRender)),s.clearColor){const i=Array.isArray(s.clearColor)&&s.clearColor.length===4;s.clearColor=i?s.clearColor:ee.shared.setValue(s.clearColor).toArray()}s.transform||(s.container.updateLocalTransform(),s.transform=s.container.localTransform),s.container.visible&&(s.container.enableRenderGroup(),this.runners.prerender.emit(s),this.runners.renderStart.emit(s),this.runners.render.emit(s),this.runners.renderEnd.emit(s),this.runners.postrender.emit(s))}resize(e,t,s){const i=this.view.resolution;this.view.resize(e,t,s),this.emit("resize",this.view.screen.width,this.view.screen.height,this.view.resolution),s!==void 0&&s!==i&&this.runners.resolutionChange.emit(s)}clear(e={}){const t=this;e.target||(e.target=t.renderTarget.renderTarget),e.clearColor||(e.clearColor=this.background.colorRgba),e.clear??(e.clear=zn.ALL);const{clear:s,clearColor:i,target:a,mipLevel:o,layer:n}=e;ee.shared.setValue(i??this.background.colorRgba),t.renderTarget.clear(a,s,ee.shared.toArray(),o??0,n??0)}get resolution(){return this.view.resolution}set resolution(e){this.view.resolution=e,this.runners.resolutionChange.emit(e)}get width(){return this.view.texture.frame.width}get height(){return this.view.texture.frame.height}get canvas(){return this.view.canvas}get lastObjectRendered(){return this._lastObjectRendered}get renderingToScreen(){return this.renderTarget.renderingToScreen}get screen(){return this.view.screen}_addRunners(...e){e.forEach(t=>{this.runners[t]=new Qc(t)})}_addSystems(e){let t;for(t in e){const s=e[t];this._addSystem(s.value,s.name)}}_addSystem(e,t){const s=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=s,this._systemsHash[t]=s;for(const i in this.runners)this.runners[i].add(s);return this}_addPipes(e,t){const s=t.reduce((i,a)=>(i[a.name]=a.value,i),{});e.forEach(i=>{const a=i.value,o=i.name,n=s[o];this.renderPipes[o]=new a(this,n?new n:null),this.runners.destroy.add(this.renderPipes[o])})}destroy(e=!1){this.runners.destroy.items.reverse(),this.runners.destroy.emit(e),(e===!0||typeof e=="object"&&e.releaseGlobalResources)&&mr.release(),Object.values(this.runners).forEach(t=>{t.destroy()}),this._systemsHash=null,this.renderPipes=null,this.removeAllListeners()}generateTexture(e){return this.textureGenerator.generateTexture(e)}get roundPixels(){return!!this._roundPixels}_unsafeEvalCheck(){if(!vc())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}resetState(){this.runners.resetState.emit()}};vn.defaultOptions={resolution:1,failIfMajorPerformanceCaveat:!1,roundPixels:!1};let Cn=vn,Pr;function Vc(r){return Pr!==void 0||(Pr=(()=>{const e={stencil:!0,failIfMajorPerformanceCaveat:r??Cn.defaultOptions.failIfMajorPerformanceCaveat};try{if(!U.get().getWebGLRenderingContext())return!1;let s=U.get().createCanvas().getContext("webgl",e);const i=!!s?.getContextAttributes()?.stencil;if(s){const a=s.getExtension("WEBGL_lose_context");a&&a.loseContext()}return s=null,i}catch{return!1}})()),Pr}let Cr;async function qc(r={}){return Cr!==void 0||(Cr=await(async()=>{const e=U.get().getNavigator().gpu;if(!e)return!1;try{return await(await e.requestAdapter(r)).requestDevice(),!0}catch{return!1}})()),Cr}const za=["webgl","webgpu","canvas"];async function Kc(r){let e=[];r.preference?Array.isArray(r.preference)?e=r.preference.slice():(e.push(r.preference),za.forEach(a=>{a!==r.preference&&e.push(a)})):e=za.slice();let t,s={};for(let a=0;a<e.length;a++){const o=e[a];if(o==="webgpu"&&await qc()){const{WebGPURenderer:n}=await Et(async()=>{const{WebGPURenderer:l}=await import("./WebGPURenderer-CV0poHB6.js");return{WebGPURenderer:l}},__vite__mapDeps([3,4,5,2]),import.meta.url);t=n,s={...r,...r.webgpu};break}else if(o==="webgl"&&Vc(r.failIfMajorPerformanceCaveat??Cn.defaultOptions.failIfMajorPerformanceCaveat)){const{WebGLRenderer:n}=await Et(async()=>{const{WebGLRenderer:l}=await import("./WebGLRenderer-DT-aSeEc.js");return{WebGLRenderer:l}},__vite__mapDeps([6,4,5,2]),import.meta.url);t=n,s={...r,...r.webgl};break}else if(o==="canvas"){const{CanvasRenderer:n}=await Et(async()=>{const{CanvasRenderer:l}=await import("./CanvasRenderer-BJUwGe2K.js");return{CanvasRenderer:l}},__vite__mapDeps([7,5,2]),import.meta.url);t=n,s={...r,...r.canvasOptions};break}}if(delete s.webgpu,delete s.webgl,delete s.canvasOptions,!t)throw new Error("No available renderer for the current environment");const i=new t;return await i.init(s),i}const Tn="8.22.0";class Bn{static init(){globalThis.__PIXI_APP_INIT__?.(this,Tn)}static destroy(){}}Bn.extension=M.Application;class Zc{constructor(e){this._renderer=e}init(){globalThis.__PIXI_RENDERER_INIT__?.(this._renderer,Tn)}destroy(){this._renderer=null}}Zc.extension={type:[M.WebGLSystem,M.WebGPUSystem],name:"initHook",priority:-10};class Mn{static init(e){Object.defineProperty(this,"resizeTo",{configurable:!0,set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this._cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this._cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this._cancelResize();let t,s;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,s=globalThis.innerHeight;else{const{clientWidth:i,clientHeight:a}=this._resizeTo;t=i,s=a}this.renderer.resize(t,s),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this._cancelResize(),this._cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Mn.extension=M.Application;class En{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{configurable:!0,set(t){this._ticker&&this._ticker.remove(this.render,this),this._ticker=t,t&&t.add(this.render,this,Or.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?Ct.shared:new Ct,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}En.extension=M.Application;Q.add(Mn);Q.add(En);const Dn=class xi{constructor(...e){this.stage=new ie,e[0]!==void 0&&G(V,"Application constructor options are deprecated, please use Application.init() instead.")}async init(e){e={...e},this.stage||(this.stage=new ie),this.renderer=await Kc(e),xi._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return G(V,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}get domContainerRoot(){return this.renderer.renderPipes.dom?._domElement}destroy(e=!1,t=!1){const s=xi._plugins.slice(0);s.reverse(),s.forEach(i=>{i.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};Dn._plugins=[];let In=Dn;Q.handleByList(M.Application,In._plugins);Q.add(Bn);const Bs={test(r){return typeof r=="string"&&r.startsWith("info face=")},parse(r){const e=r.match(/^[a-z]+\s+.+$/gm),t={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const u in e){const f=e[u].match(/^[a-z]+/gm)[0],d=e[u].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),m={};for(const p in d){const w=d[p].split("="),A=w[0],_=w[1].replace(/"/gm,""),x=parseFloat(_),y=isNaN(x)?_:x;m[A]=y}t[f].push(m)}const s={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:"",distanceField:null,baseLineOffset:0},[i]=t.info,[a]=t.common,[o]=t.distanceField??[];o&&(s.distanceField={range:parseInt(o.distanceRange,10),type:o.fieldType}),s.fontSize=parseInt(i.size,10),s.fontFamily=i.face,s.lineHeight=parseInt(a.lineHeight,10);const n=t.page;for(let u=0;u<n.length;u++)s.pages.push({id:parseInt(n[u].id,10)||0,file:n[u].file});const l={};s.baseLineOffset=a.base===void 0?0:s.lineHeight-parseInt(a.base,10);const h=t.char;for(let u=0;u<h.length;u++){const f=h[u],d=parseInt(f.id,10);let m=f.letter??f.char??String.fromCharCode(d);m==="space"&&(m=" "),l[d]=m,s.chars[m]={id:d,page:parseInt(f.page,10)||0,x:parseInt(f.x,10),y:parseInt(f.y,10),width:parseInt(f.width,10),height:parseInt(f.height,10),xOffset:parseInt(f.xoffset,10),yOffset:parseInt(f.yoffset,10),xAdvance:parseInt(f.xadvance,10),kerning:{}}}const c=t.kerning||[];for(let u=0;u<c.length;u++){const f=parseInt(c[u].first,10),d=parseInt(c[u].second,10),m=parseInt(c[u].amount,10);s.chars[l[d]]&&(s.chars[l[d]].kerning[l[f]]=m)}return s}},va={test(r){const e=r;return typeof e!="string"&&"getElementsByTagName"in e&&e.getElementsByTagName("page").length&&e.getElementsByTagName("info")[0].getAttribute("face")!==null},parse(r){const e={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:"",distanceField:null,baseLineOffset:0},t=r.getElementsByTagName("info")[0],s=r.getElementsByTagName("common")[0],i=r.getElementsByTagName("distanceField")[0];i&&(e.distanceField={type:i.getAttribute("fieldType"),range:parseInt(i.getAttribute("distanceRange"),10)});const a=r.getElementsByTagName("page"),o=r.getElementsByTagName("char"),n=r.getElementsByTagName("kerning");e.fontSize=parseInt(t.getAttribute("size"),10),e.fontFamily=t.getAttribute("face"),e.lineHeight=parseInt(s.getAttribute("lineHeight"),10);for(let c=0;c<a.length;c++)e.pages.push({id:parseInt(a[c].getAttribute("id"),10)||0,file:a[c].getAttribute("file")});const l={},h=s.getAttribute("base");e.baseLineOffset=h===null?0:e.lineHeight-parseInt(h,10);for(let c=0;c<o.length;c++){const u=o[c],f=parseInt(u.getAttribute("id"),10);let d=u.getAttribute("letter")??u.getAttribute("char")??String.fromCharCode(f);d==="space"&&(d=" "),l[f]=d,e.chars[d]={id:f,page:parseInt(u.getAttribute("page"),10)||0,x:parseInt(u.getAttribute("x"),10),y:parseInt(u.getAttribute("y"),10),width:parseInt(u.getAttribute("width"),10),height:parseInt(u.getAttribute("height"),10),xOffset:parseInt(u.getAttribute("xoffset"),10),yOffset:parseInt(u.getAttribute("yoffset"),10),xAdvance:parseInt(u.getAttribute("xadvance"),10),kerning:{}}}for(let c=0;c<n.length;c++){const u=parseInt(n[c].getAttribute("first"),10),f=parseInt(n[c].getAttribute("second"),10),d=parseInt(n[c].getAttribute("amount"),10);e.chars[l[f]]&&(e.chars[l[f]].kerning[l[u]]=d)}return e}},Pa={test(r){return typeof r=="string"&&r.match(/<font(\s|>)/)?va.test(U.get().parseXML(r)):!1},parse(r){return va.parse(U.get().parseXML(r))}},Jc=[".xml",".fnt"],$c={extension:{type:M.CacheParser,name:"cacheBitmapFont"},test:r=>!!r?.pages&&!!r?.chars&&typeof r?.fontFamily=="string"&&r.fontFamily!=="",getCacheableAssets(r,e){const t={};return r.forEach(s=>{t[s]=e,t[`${s}-bitmap`]=e}),t[`${e.fontFamily}-bitmap`]=e,t}},eu={extension:{type:M.LoadParser,priority:rt.Normal},name:"loadBitmapFont",id:"bitmap-font",test(r){return Jc.includes(xe.extname(r).toLowerCase())},async testParse(r){return Bs.test(r)||Pa.test(r)},async parse(r,e,t){const s=Bs.test(r)?Bs.parse(r):Pa.parse(r),{src:i}=e,{pages:a}=s,o=[],n=s.distanceField?{scaleMode:"linear",alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:!1,resolution:1}:{};for(let f=0;f<a.length;++f){const d=a[f].file;let m=xe.join(xe.dirname(i),d);m=oi(m,i),o.push({src:m,data:n})}const[l,{BitmapFont:h}]=await Promise.all([t.load(o),Et(()=>import("./BitmapFont-CrMu5gVf.js"),[],import.meta.url)]),c=o.map(f=>l[f.src]);return new h({data:s,textures:c},i)},async load(r,e){return await(await U.get().fetch(r)).text()},async unload(r,e,t){await Promise.all(r.pages.map(s=>t.unload(s.texture.source._sourceOrigin))),r.destroy()}};class tu{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let s=0;s<t;s++)e.push(this._assetList.pop());await this._loader.load(e),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(e){this._isActive!==e&&(this._isActive=e,e&&!this._isLoading&&this._next())}}const ru={extension:{type:M.CacheParser,name:"cacheTextureArray"},test:r=>Array.isArray(r)&&r.every(e=>e instanceof L),getCacheableAssets:(r,e)=>{const t={};return r.forEach(s=>{e.forEach((i,a)=>{t[s+(a===0?"":a+1)]=i})}),t}};async function Rn(r){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=r});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(r)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const su={extension:{type:M.DetectionParser,priority:1},test:async()=>Rn("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async r=>[...r,"avif"],remove:async r=>r.filter(e=>e!=="avif")},Ca=["png","jpg","jpeg"],iu={extension:{type:M.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async r=>[...r,...Ca],remove:async r=>r.filter(e=>!Ca.includes(e))},au="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function ss(r){return au?!1:document.createElement("video").canPlayType(r)!==""}const ou={extension:{type:M.DetectionParser,priority:0},test:async()=>ss("video/mp4"),add:async r=>[...r,"mp4","m4v"],remove:async r=>r.filter(e=>e!=="mp4"&&e!=="m4v")},nu={extension:{type:M.DetectionParser,priority:0},test:async()=>ss("video/ogg"),add:async r=>[...r,"ogv"],remove:async r=>r.filter(e=>e!=="ogv")},lu={extension:{type:M.DetectionParser,priority:0},test:async()=>ss("video/webm"),add:async r=>[...r,"webm"],remove:async r=>r.filter(e=>e!=="webm")},hu={extension:{type:M.DetectionParser,priority:0},test:async()=>Rn("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async r=>[...r,"webp"],remove:async r=>r.filter(e=>e!=="webp")},Gn=class Gr{constructor(){this.loadOptions={...Gr.defaultOptions},this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,s)=>(this._parsersValidated=!1,e[t]=s,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const s={promise:null,parser:null};return s.promise=(async()=>{let i=null,a=null;if((t.parser||t.loadParser)&&(a=this._parserHash[t.parser||t.loadParser],t.loadParser&&j(`[Assets] "loadParser" is deprecated, use "parser" instead for ${e}`),a||j(`[Assets] specified load parser "${t.parser||t.loadParser}" not found while loading ${e}`)),!a){for(let o=0;o<this.parsers.length;o++){const n=this.parsers[o];if(n.load&&n.test?.(e,t,this)){a=n;break}}if(!a)return j(`[Assets] ${e} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}i=await a.load(e,t,this),s.parser=a;for(let o=0;o<this.parsers.length;o++){const n=this.parsers[o];n.parse&&n.parse&&await n.testParse?.(i,t,this)&&(i=await n.parse(i,t,this)||i,s.parser=n)}return i})(),s}async load(e,t){this._parsersValidated||this._validateParsers();const s=typeof t=="function"?{...Gr.defaultOptions,...this.loadOptions,onProgress:t}:{...Gr.defaultOptions,...this.loadOptions,...t||{}},{onProgress:i,onError:a,strategy:o,retryCount:n,retryDelay:l}=s;let h=0;const c={},u=Nr(e),f=Me(e,p=>({alias:[p],src:p,data:{}})),d=f.reduce((p,w)=>p+(w.progressSize||1),0),m=f.map(async p=>{const w=xe.toAbsolute(p.src);c[p.src]||(await this._loadAssetWithRetry(w,p,{onProgress:i,onError:a,strategy:o,retryCount:n,retryDelay:l},c),h+=p.progressSize||1,i&&i(h/d))});return await Promise.all(m),u?c[f[0].src]:c}async unload(e){const s=Me(e,i=>({alias:[i],src:i})).map(async i=>{const a=xe.toAbsolute(i.src),o=this.promiseCache[a];if(o){const n=await o.promise;delete this.promiseCache[a],await o.parser?.unload?.(n,i,this)}});await Promise.all(s)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name||e.id).reduce((e,t)=>(!t.name&&!t.id?j("[Assets] parser should have an id"):(e[t.name]||e[t.id])&&j(`[Assets] parser id conflict "${t.id}"`),e[t.name]=t,t.id&&(e[t.id]=t),e),{})}async _loadAssetWithRetry(e,t,s,i){let a=0;const{onError:o,strategy:n,retryCount:l,retryDelay:h}=s,c=u=>new Promise(f=>setTimeout(f,u));for(;;)try{this.promiseCache[e]||(this.promiseCache[e]=this._getLoadPromiseAndParser(e,t)),i[t.src]=await this.promiseCache[e].promise;return}catch(u){delete this.promiseCache[e],delete i[t.src],a++;const f=n!=="retry"||a>l;if(n==="retry"&&!f){o&&o(u,t),await c(h);continue}if(n==="skip"){o&&o(u,t);return}o&&o(u,t);const d=new Error(`[Loader.load] Failed to load ${e}.
|
|
25
|
+
${u}`);throw u instanceof Error&&u.stack&&(d.stack=u.stack),d}}};Gn.defaultOptions={onProgress:void 0,onError:void 0,strategy:"throw",retryCount:3,retryDelay:250};let cu=Gn;function Ot(r,e){if(Array.isArray(e)){for(const t of e)if(r.startsWith(`data:${t}`))return!0;return!1}return r.startsWith(`data:${e}`)}function Nt(r,e){const t=r.split("?")[0],s=xe.extname(t).toLowerCase();return Array.isArray(e)?e.includes(s):s===e}const uu=".json",du="application/json",fu={extension:{type:M.LoadParser,priority:rt.Low},name:"loadJson",id:"json",test(r){return Ot(r,du)||Nt(r,uu)},async load(r){return await(await U.get().fetch(r)).json()}},mu=".txt",pu="text/plain",wu={name:"loadTxt",id:"text",extension:{type:M.LoadParser,priority:rt.Low,name:"loadTxt"},test(r){return Ot(r,pu)||Nt(r,mu)},async load(r){return await(await U.get().fetch(r)).text()}},Au=["normal","bold","100","200","300","400","500","600","700","800","900"],_u=[".ttf",".otf",".woff",".woff2"],xu=["font/ttf","font/otf","font/woff","font/woff2"],yu=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function gu(r){const e=xe.extname(r),i=xe.basename(r,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map(n=>n.charAt(0).toUpperCase()+n.slice(1));let a=i.length>0;for(const n of i)if(!n.match(yu)){a=!1;break}let o=i.join(" ");return a||(o=`"${o.replace(/[\\"]/g,"\\$&")}"`),o}const Su=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function ku(r){return Su.test(r)?r:encodeURI(r)}const bu={extension:{type:M.LoadParser,priority:rt.Low},name:"loadWebFont",id:"web-font",test(r){return Ot(r,xu)||Nt(r,_u)},async load(r,e){const t=U.get().getFontFaceSet();if(t){const s=[],i=e.data?.family??gu(r),a=e.data?.weights?.filter(n=>Au.includes(n))??["normal"],o=e.data??{};for(let n=0;n<a.length;n++){const l=a[n],h=new FontFace(i,`url('${ku(r)}')`,{...o,weight:l});await h.load(),t.add(h),s.push(h)}return ce.has(`${i}-and-url`)?ce.get(`${i}-and-url`).entries.push({url:r,faces:s}):ce.set(`${i}-and-url`,{entries:[{url:r,faces:s}]}),s.length===1?s[0]:s}return j("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(r){const e=Array.isArray(r)?r:[r],t=e[0].family,s=ce.get(`${t}-and-url`),i=s.entries.find(a=>a.faces.some(o=>e.indexOf(o)!==-1));i.faces=i.faces.filter(a=>e.indexOf(a)===-1),i.faces.length===0&&(s.entries=s.entries.filter(a=>a!==i)),e.forEach(a=>{U.get().getFontFaceSet().delete(a)}),s.entries.length===0&&ce.remove(`${t}-and-url`)}},Ms={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},zu=/([astvzqmhlc])([^astvzqmhlc]*)/gi,vu=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;function Pu(r){const e=[];return r.replace(zu,(t,s,i)=>{let a=s.toLowerCase(),o=s;const n=Cu(i);for(a==="m"&&n.length>2&&(e.push([o,...n.splice(0,2)]),a="l",o=o==="m"?"l":"L");;){if(n.length===Ms[a])return e.push([o,...n]),"";if(n.length<Ms[a])throw new Error("malformed path data");e.push([o,...n.splice(0,Ms[a])])}}),e}function Cu(r){const e=r.match(vu);return e?e.map(Number):[]}function Tu(r,e){const t=Pu(r),s=[];let i=null,a=0,o=0;for(let n=0;n<t.length;n++){const l=t[n],h=l[0],c=l;switch(h){case"M":a=c[1],o=c[2],e.moveTo(a,o);break;case"m":a+=c[1],o+=c[2],e.moveTo(a,o);break;case"H":a=c[1],e.lineTo(a,o);break;case"h":a+=c[1],e.lineTo(a,o);break;case"V":o=c[1],e.lineTo(a,o);break;case"v":o+=c[1],e.lineTo(a,o);break;case"L":a=c[1],o=c[2],e.lineTo(a,o);break;case"l":a+=c[1],o+=c[2],e.lineTo(a,o);break;case"C":a=c[5],o=c[6],e.bezierCurveTo(c[1],c[2],c[3],c[4],a,o);break;case"c":e.bezierCurveTo(a+c[1],o+c[2],a+c[3],o+c[4],a+c[5],o+c[6]),a+=c[5],o+=c[6];break;case"S":a=c[3],o=c[4],e.bezierCurveToShort(c[1],c[2],a,o);break;case"s":e.bezierCurveToShort(a+c[1],o+c[2],a+c[3],o+c[4]),a+=c[3],o+=c[4];break;case"Q":a=c[3],o=c[4],e.quadraticCurveTo(c[1],c[2],a,o);break;case"q":e.quadraticCurveTo(a+c[1],o+c[2],a+c[3],o+c[4]),a+=c[3],o+=c[4];break;case"T":a=c[1],o=c[2],e.quadraticCurveToShort(a,o);break;case"t":a+=c[1],o+=c[2],e.quadraticCurveToShort(a,o);break;case"A":a=c[6],o=c[7],e.arcToSvg(c[1],c[2],c[3],c[4],c[5],a,o);break;case"a":a+=c[6],o+=c[7],e.arcToSvg(c[1],c[2],c[3],c[4],c[5],a,o);break;case"Z":case"z":e.closePath(),s.length>0&&(i=s.pop(),i?(a=i.startX,o=i.startY):(a=0,o=0)),i=null;break;default:j(`Unknown SVG path command: ${h}`)}h!=="Z"&&h!=="z"&&i===null&&(i={startX:a,startY:o},s.push(i))}return e}class Li{constructor(e=0,t=0,s=0){this.type="circle",this.x=e,this.y=t,this.radius=s}clone(){return new Li(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;const s=this.radius*this.radius;let i=this.x-e,a=this.y-t;return i*=i,a*=a,i+a<=s}strokeContains(e,t,s,i=.5){if(this.radius===0)return!1;const a=this.x-e,o=this.y-t,n=this.radius,l=(1-i)*s,h=Math.sqrt(a*a+o*o);return h<=n+l&&h>n-(s-l)}getBounds(e){return e||(e=new $),e.x=this.x-this.radius,e.y=this.y-this.radius,e.width=this.radius*2,e.height=this.radius*2,e}copyFrom(e){return this.x=e.x,this.y=e.y,this.radius=e.radius,this}copyTo(e){return e.copyFrom(this),e}toString(){return`[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}class Fi{constructor(e=0,t=0,s=0,i=0){this.type="ellipse",this.x=e,this.y=t,this.halfWidth=s,this.halfHeight=i}clone(){return new Fi(this.x,this.y,this.halfWidth,this.halfHeight)}contains(e,t){if(this.halfWidth<=0||this.halfHeight<=0)return!1;let s=(e-this.x)/this.halfWidth,i=(t-this.y)/this.halfHeight;return s*=s,i*=i,s+i<=1}strokeContains(e,t,s,i=.5){const{halfWidth:a,halfHeight:o}=this;if(a<=0||o<=0)return!1;const n=s*(1-i),l=s-n,h=a-l,c=o-l,u=a+n,f=o+n,d=e-this.x,m=t-this.y;return d*d/(u*u)+m*m/(f*f)>1?!1:h<=0||c<=0?!0:d*d/(h*h)+m*m/(c*c)>1}getBounds(e){return e||(e=new $),e.x=this.x-this.halfWidth,e.y=this.y-this.halfHeight,e.width=this.halfWidth*2,e.height=this.halfHeight*2,e}copyFrom(e){return this.x=e.x,this.y=e.y,this.halfWidth=e.halfWidth,this.halfHeight=e.halfHeight,this}copyTo(e){return e.copyFrom(this),e}toString(){return`[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`}}function Ln(r){const e=r.length;if(e<6)return 1;let t=0;for(let s=0,i=r[e-2],a=r[e-1];s<e;s+=2){const o=r[s],n=r[s+1];t+=(o-i)*(n+a),i=o,a=n}return t<0?-1:1}function Bu(r,e,t,s,i,a){const o=r-t,n=e-s,l=i-t,h=a-s,c=o*l+n*h,u=l*l+h*h;let f=-1;u!==0&&(f=c/u);let d,m;f<0?(d=t,m=s):f>1?(d=i,m=a):(d=t+f*l,m=s+f*h);const p=r-d,w=e-m;return p*p+w*w}let Mu,Eu;class ir{constructor(...e){this.type="polygon";let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){const s=[];for(let i=0,a=t.length;i<a;i++)s.push(t[i].x,t[i].y);t=s}this.points=t,this.closePath=!0}isClockwise(){let e=0;const t=this.points,s=t.length;for(let i=0;i<s;i+=2){const a=t[i],o=t[i+1],n=t[(i+2)%s],l=t[(i+3)%s];e+=(n-a)*(l+o)}return e<0}containsPolygon(e){const t=this.getBounds(Mu),s=e.getBounds(Eu);if(!t.containsRect(s))return!1;const i=e.points;for(let a=0;a<i.length;a+=2){const o=i[a],n=i[a+1];if(!this.contains(o,n))return!1}return!0}clone(){const e=this.points.slice(),t=new ir(e);return t.closePath=this.closePath,t}contains(e,t){let s=!1;const i=this.points.length/2;for(let a=0,o=i-1;a<i;o=a++){const n=this.points[a*2],l=this.points[a*2+1],h=this.points[o*2],c=this.points[o*2+1];l>t!=c>t&&e<(h-n)*((t-l)/(c-l))+n&&(s=!s)}return s}strokeContains(e,t,s,i=.5){const{points:a}=this,o=i===.5?i:(i-.5)*Ln(a)+.5,n=s*o,l=s-n,h=n*n,c=l*l,u=a.length-(this.closePath?0:2);for(let f=0;f<u;f+=2){const d=a[f],m=a[f+1],p=a[(f+2)%a.length],w=a[(f+3)%a.length],A=Bu(e,t,d,m,p,w),_=Math.sign((p-d)*(t-m)-(w-m)*(e-d));if(A<=(_<0?h:c))return!0}return!1}getBounds(e){e||(e=new $);const t=this.points;let s=1/0,i=-1/0,a=1/0,o=-1/0;for(let n=0,l=t.length;n<l;n+=2){const h=t[n],c=t[n+1];s=h<s?h:s,i=h>i?h:i,a=c<a?c:a,o=c>o?c:o}return e.x=s,e.width=i-s,e.y=a,e.height=o-a,e}copyFrom(e){return this.points=e.points.slice(),this.closePath=e.closePath,this}copyTo(e){return e.copyFrom(this),e}toString(){return`[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((e,t)=>`${e}, ${t}`,"")}]`}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return G("8.11.0","Polygon.lastX is deprecated, please use Polygon.lastX instead."),this.points[this.points.length-2]}get y(){return G("8.11.0","Polygon.y is deprecated, please use Polygon.lastY instead."),this.points[this.points.length-1]}get startX(){return this.points[0]}get startY(){return this.points[1]}}const Tr=(r,e,t,s,i,a,o)=>{const n=r-t,l=e-s,h=Math.sqrt(n*n+l*l);return h>=i-a&&h<=i+o};class Hi{constructor(e=0,t=0,s=0,i=0,a=20){this.type="roundedRectangle",this.x=e,this.y=t,this.width=s,this.height=i,this.radius=a}getBounds(e){return e||(e=new $),e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}clone(){return new Hi(this.x,this.y,this.width,this.height,this.radius)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this.radius=e.radius,this}copyTo(e){return e.copyFrom(this),e}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){const s=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+s&&t<=this.y+this.height-s||e>=this.x+s&&e<=this.x+this.width-s)return!0;let i=e-(this.x+s),a=t-(this.y+s);const o=s*s;if(i*i+a*a<=o||(i=e-(this.x+this.width-s),i*i+a*a<=o)||(a=t-(this.y+this.height-s),i*i+a*a<=o)||(i=e-(this.x+s),i*i+a*a<=o))return!0}return!1}strokeContains(e,t,s,i=.5){const{x:a,y:o,width:n,height:l,radius:h}=this,c=s*(1-i),u=s-c,f=a+h,d=o+h,m=n-h*2,p=l-h*2,w=a+n,A=o+l;return(e>=a-c&&e<=a+u||e>=w-u&&e<=w+c)&&t>=d&&t<=d+p||(t>=o-c&&t<=o+u||t>=A-u&&t<=A+c)&&e>=f&&e<=f+m?!0:e<f&&t<d&&Tr(e,t,f,d,h,u,c)||e>w-h&&t<d&&Tr(e,t,w-h,d,h,u,c)||e>w-h&&t>A-h&&Tr(e,t,w-h,A-h,h,u,c)||e<f&&t>A-h&&Tr(e,t,f,A-h,h,u,c)}toString(){return`[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}const Fn={};function Du(r,e,t){let s=2166136261;for(let i=0;i<e;i++)s^=r[i].uid,s=Math.imul(s,16777619),s>>>=0;return Fn[s]||Iu(r,e,s,t)}function Iu(r,e,t,s){const i={};let a=0;for(let n=0;n<s;n++){const l=n<e?r[n]:L.EMPTY.source;i[a++]=l.source,i[a++]=l.style}const o=new Rr(i);return Fn[t]=o,o}class Ta{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData),this.size=this.rawBinaryData.byteLength}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}get float64View(){return this._float64Array||(this._float64Array=new Float64Array(this.rawBinaryData)),this._float64Array}get bigUint64View(){return this._bigUint64Array||(this._bigUint64Array=new BigUint64Array(this.rawBinaryData)),this._bigUint64Array}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this.uint32View=null,this.float32View=null,this.uint16View=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._int32View=null,this._float64Array=null,this._bigUint64Array=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}function Ba(r,e,t,s){if(t??(t=0),s??(s=Math.min(r.byteLength-t,e.byteLength)),!(t&7)&&!(s&7)){const i=s/8;new Float64Array(e,0,i).set(new Float64Array(r,t,i))}else if(!(t&3)&&!(s&3)){const i=s/4;new Float32Array(e,0,i).set(new Float32Array(r,t,i))}else new Uint8Array(e).set(new Uint8Array(r,t,s))}const Ru={normal:"normal-npm",add:"add-npm",screen:"screen-npm"};var Gu=(r=>(r[r.DISABLED=0]="DISABLED",r[r.RENDERING_MASK_ADD=1]="RENDERING_MASK_ADD",r[r.MASK_ACTIVE=2]="MASK_ACTIVE",r[r.INVERSE_MASK_ACTIVE=3]="INVERSE_MASK_ACTIVE",r[r.RENDERING_MASK_REMOVE=4]="RENDERING_MASK_REMOVE",r[r.NONE=5]="NONE",r))(Gu||{});function Ma(r,e){return e.alphaMode==="no-premultiply-alpha"&&Ru[r]||r}const Lu=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(`
|
|
26
|
+
`);function Fu(r){let e="";for(let t=0;t<r;++t)t>0&&(e+=`
|
|
27
|
+
else `),t<r-1&&(e+=`if(test == ${t}.0){}`);return e}function Hu(r,e){if(r===0)throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");const t=e.createShader(e.FRAGMENT_SHADER);try{for(;;){const s=Lu.replace(/%forloop%/gi,Fu(r));if(e.shaderSource(t,s),e.compileShader(t),!e.getShaderParameter(t,e.COMPILE_STATUS))r=r/2|0;else break}}finally{e.deleteShader(t)}return r}let yt=null;function Ou(){if(yt)return yt;const r=un();return yt=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),yt=Hu(yt,r),r.getExtension("WEBGL_lose_context")?.loseContext(),yt}class Nu{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let e=0;e<this.count;e++){const t=this.textures[e];this.textures[e]=null,this.ids[t.uid]=null}this.count=0}}class Uu{constructor(){this.renderPipeId="batch",this.action="startBatch",this.start=0,this.size=0,this.textures=new Nu,this.blendMode="normal",this.topology="triangle-strip",this.canBundle=!0}destroy(){this.textures=null,this.gpuBindGroup=null,this.bindGroup=null,this.batcher=null,this.elements=null}}const ar=[];let jr=0;mr.register({clear:()=>{if(ar.length>0)for(const r of ar)r&&r.destroy();ar.length=0,jr=0}});function Ea(){return jr>0?ar[--jr]:new Uu}function Da(r){r.elements=null,ar[jr++]=r}let qt=0;const Hn=class On{constructor(e){this.uid=q("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],e={...On.defaultOptions,...e},e.maxTextures||(G("v8.8.0","maxTextures is a required option for Batcher now, please pass it in the options"),e.maxTextures=Ou());const{maxTextures:t,attributesInitialSize:s,indicesInitialSize:i}=e;this.attributeBuffer=new Ta(s*4),this.indexBuffer=new Uint16Array(i),this.maxTextures=t}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0;for(let e=0;e<this.batchIndex;e++)Da(this.batches[e]);this.batchIndex=0,this._batchIndexStart=0,this._batchIndexSize=0,this.dirty=!0}add(e){this._elements[this.elementSize++]=e,e._indexStart=this.indexSize,e._attributeStart=this.attributeSize,e._batcher=this,this.indexSize+=e.indexSize,this.attributeSize+=e.attributeSize*this.vertexSize}checkAndUpdateTexture(e,t){const s=e._batch.textures.ids[t._source.uid];return!s&&s!==0?!1:(e._textureId=s,e.texture=t,!0)}updateElement(e){this.dirty=!0;const t=this.attributeBuffer;e.packAsQuad?this.packQuadAttributes(e,t.float32View,t.uint32View,e._attributeStart,e._textureId):this.packAttributes(e,t.float32View,t.uint32View,e._attributeStart,e._textureId)}break(e){const t=this._elements;if(!t[this.elementStart])return;let s=Ea(),i=s.textures;i.clear();const a=t[this.elementStart];let o=Ma(a.blendMode,a.texture._source),n=a.topology;this.attributeSize*4>this.attributeBuffer.size&&this._resizeAttributeBuffer(this.attributeSize*4),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);const l=this.attributeBuffer.float32View,h=this.attributeBuffer.uint32View,c=this.indexBuffer;let u=this._batchIndexSize,f=this._batchIndexStart,d="startBatch",m=[];const p=this.maxTextures;for(let w=this.elementStart;w<this.elementSize;++w){const A=t[w];t[w]=null;const x=A.texture._source,y=Ma(A.blendMode,x),g=o!==y||n!==A.topology;if(x._batchTick===qt&&!g){A._textureId=x._textureBindLocation,u+=A.indexSize,A.packAsQuad?(this.packQuadAttributes(A,l,h,A._attributeStart,A._textureId),this.packQuadIndex(c,A._indexStart,A._attributeStart/this.vertexSize)):(this.packAttributes(A,l,h,A._attributeStart,A._textureId),this.packIndex(A,c,A._indexStart,A._attributeStart/this.vertexSize)),A._batch=s,m.push(A);continue}x._batchTick=qt,(i.count>=p||g)&&(this._finishBatch(s,f,u-f,i,o,n,e,d,m),d="renderBatch",f=u,o=y,n=A.topology,s=Ea(),i=s.textures,i.clear(),m=[],++qt),A._textureId=x._textureBindLocation=i.count,i.ids[x.uid]=i.count,i.textures[i.count++]=x,A._batch=s,m.push(A),u+=A.indexSize,A.packAsQuad?(this.packQuadAttributes(A,l,h,A._attributeStart,A._textureId),this.packQuadIndex(c,A._indexStart,A._attributeStart/this.vertexSize)):(this.packAttributes(A,l,h,A._attributeStart,A._textureId),this.packIndex(A,c,A._indexStart,A._attributeStart/this.vertexSize))}i.count>0&&(this._finishBatch(s,f,u-f,i,o,n,e,d,m),f=u,++qt),this.elementStart=this.elementSize,this._batchIndexStart=f,this._batchIndexSize=u}_finishBatch(e,t,s,i,a,o,n,l,h){e.gpuBindGroup=null,e.bindGroup=null,e.action=l,e.batcher=this,e.textures=i,e.blendMode=a,e.topology=o,e.start=t,e.size=s,e.elements=h,++qt,this.batches[this.batchIndex++]=e,n.add(e)}finish(e){this.break(e)}ensureAttributeBuffer(e){e*4<=this.attributeBuffer.size||this._resizeAttributeBuffer(e*4)}ensureIndexBuffer(e){e<=this.indexBuffer.length||this._resizeIndexBuffer(e)}_resizeAttributeBuffer(e){const t=Math.max(e,this.attributeBuffer.size*2),s=new Ta(t);Ba(this.attributeBuffer.rawBinaryData,s.rawBinaryData),this.attributeBuffer=s}_resizeIndexBuffer(e){const t=this.indexBuffer;let s=Math.max(e,t.length*1.5);s+=s%2;const i=s>65535?new Uint32Array(s):new Uint16Array(s);if(i.BYTES_PER_ELEMENT!==t.BYTES_PER_ELEMENT)for(let a=0;a<t.length;a++)i[a]=t[a];else Ba(t.buffer,i.buffer);this.indexBuffer=i}packQuadIndex(e,t,s){e[t]=s+0,e[t+1]=s+1,e[t+2]=s+2,e[t+3]=s+0,e[t+4]=s+2,e[t+5]=s+3}packIndex(e,t,s,i){const a=e.indices,o=e.indexSize,n=e.indexOffset,l=e.attributeOffset;for(let h=0;h<o;h++)t[s++]=i+a[h+n]-l}destroy(e={}){if(this.batches!==null){for(let t=0;t<this.batchIndex;t++)Da(this.batches[t]);this.batches=null,this.geometry.destroy(!0),this.geometry=null,e.shader&&(this.shader?.destroy(),this.shader=null);for(let t=0;t<this._elements.length;t++)this._elements[t]&&(this._elements[t]._batch=null);this._elements=null,this.indexBuffer=null,this.attributeBuffer.destroy(),this.attributeBuffer=null}}};Hn.defaultOptions={maxTextures:null,attributesInitialSize:4,indicesInitialSize:6};let Xu=Hn;var ae=(r=>(r[r.MAP_READ=1]="MAP_READ",r[r.MAP_WRITE=2]="MAP_WRITE",r[r.COPY_SRC=4]="COPY_SRC",r[r.COPY_DST=8]="COPY_DST",r[r.INDEX=16]="INDEX",r[r.VERTEX=32]="VERTEX",r[r.UNIFORM=64]="UNIFORM",r[r.STORAGE=128]="STORAGE",r[r.INDIRECT=256]="INDIRECT",r[r.QUERY_RESOLVE=512]="QUERY_RESOLVE",r[r.STATIC=1024]="STATIC",r))(ae||{});class et extends De{constructor(e){let{data:t,size:s}=e;const{usage:i,label:a,shrinkToFit:o}=e;super(),this._gpuData=Object.create(null),this._gcLastUsed=-1,this.autoGarbageCollect=!0,this.uid=q("buffer"),this._resourceType="buffer",this._resourceId=q("resource"),this._updateID=1,this._updateOffset=0,this._dataInt32=null,this.shrinkToFit=!0,this.destroyed=!1,t instanceof Array&&(t=new Float32Array(t)),this._data=t,s??(s=t?.byteLength);const n=!!t;this.descriptor={size:s,usage:i,mappedAtCreation:n,label:a},this.shrinkToFit=o??!0}get data(){return this._data}set data(e){this.setDataWithSize(e,e.length,!0)}get dataInt32(){return this._dataInt32||(this._dataInt32=new Int32Array(this.data.buffer)),this._dataInt32}get static(){return!!(this.descriptor.usage&ae.STATIC)}set static(e){e?this.descriptor.usage|=ae.STATIC:this.descriptor.usage&=~ae.STATIC}setDataWithSize(e,t,s){if(this._updateID++,this._updateSize=t*e.BYTES_PER_ELEMENT,this._updateOffset=0,this._data===e){s&&this.emit("update",this);return}const i=this._data;if(this._data=e,this._dataInt32=null,!i||i.length!==e.length){!this.shrinkToFit&&i&&e.byteLength<i.byteLength?s&&this.emit("update",this):(this.descriptor.size=e.byteLength,this._resourceId=q("resource"),this.emit("change",this));return}s&&this.emit("update",this)}update(e,t){this._updateSize=e??this._updateSize,this._updateOffset=t||0,this._updateID++,this.emit("update",this)}unload(){this.emit("unload",this);for(const e in this._gpuData)this._gpuData[e]?.destroy();this._gpuData=Object.create(null),this.destroyed||(this._resourceId=q("resource"),this.emit("change",this))}destroy(){this.destroyed=!0,this.unload(),this.emit("destroy",this),this.emit("change",this),this._data=null,this.descriptor=null,this.removeAllListeners()}}function Nn(r,e){if(!(r instanceof et)){let t=e?ae.INDEX:ae.VERTEX;r instanceof Array&&(e?(r=new Uint32Array(r),t=ae.INDEX|ae.COPY_DST):(r=new Float32Array(r),t=ae.VERTEX|ae.COPY_DST)),r=new et({data:r,label:e?"index-mesh-buffer":"vertex-mesh-buffer",usage:t})}return r}function Wu(r,e,t){const s=r.getAttribute(e);if(!s)return t.minX=0,t.minY=0,t.maxX=0,t.maxY=0,t;const i=s.buffer.data;let a=1/0,o=1/0,n=-1/0,l=-1/0;const h=i.BYTES_PER_ELEMENT,c=(s.offset||0)/h,u=(s.stride||8)/h;for(let f=c;f<i.length;f+=u){const d=i[f],m=i[f+1];d>n&&(n=d),m>l&&(l=m),d<a&&(a=d),m<o&&(o=m)}return t.minX=a,t.minY=o,t.maxX=n,t.maxY=l,t}function ju(r){return(r instanceof et||Array.isArray(r)||r.BYTES_PER_ELEMENT)&&(r={buffer:r}),r.buffer=Nn(r.buffer,!1),r}class Un extends De{constructor(e={}){super(),this._gpuData=Object.create(null),this.autoGarbageCollect=!0,this._gcLastUsed=-1,this.uid=q("geometry"),this._layoutKey=0,this.instanceCount=1,this.indexCount=0,this._bounds=new be,this._boundsDirty=!0,this._vertexCount=0,this._vertexCountDirty=!0;const{attributes:t,indexBuffer:s,topology:i}=e;if(this.buffers=[],this.attributes={},t)for(const a in t)this.addAttribute(a,t[a]);this.instanceCount=e.instanceCount??1,this.indexCount=e.indexCount??0,s&&this.addIndex(s),this.topology=i||"triangle-list"}onBufferUpdate(){this._boundsDirty=!0,this._vertexCountDirty=!0,this.emit("update",this)}getAttribute(e){return this.attributes[e]}getIndex(){return this.indexBuffer}getBuffer(e){return this.getAttribute(e).buffer}get vertexCount(){if(!this._vertexCountDirty)return this._vertexCount;this._vertexCountDirty=!1;const e=this.attributes;for(const t in e){const s=e[t];if(s.instance)continue;const i=s.buffer;return this._vertexCount=i.data.length/(s.stride/4||s.size),this._vertexCount}return this._vertexCount=0,0}getSize(){return G("8.20.0","Geometry.getSize is deprecated, please use Geometry.vertexCount instead."),this.vertexCount}addAttribute(e,t){const s=ju(t);this.buffers.indexOf(s.buffer)===-1&&(this.buffers.push(s.buffer),s.buffer.on("update",this.onBufferUpdate,this),s.buffer.on("change",this.onBufferUpdate,this)),this.attributes[e]=s,this._vertexCountDirty=!0}addIndex(e){this.indexBuffer=Nn(e,!0),this.buffers.push(this.indexBuffer)}get bounds(){return this._boundsDirty?(this._boundsDirty=!1,Wu(this,"aPosition",this._bounds)):this._bounds}unload(){this.emit("unload",this);for(const e in this._gpuData)this._gpuData[e]?.destroy();this._gpuData=Object.create(null)}destroy(e=!1){this.emit("destroy",this);for(const t of this.buffers)t.off("update",this.onBufferUpdate,this),t.off("change",this.onBufferUpdate,this),e&&t.destroy();this.unload(),this.removeAllListeners(),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}const Qu=new Float32Array(1),Yu=new Uint32Array(1);class Vu extends Un{constructor(){const t=new et({data:Qu,label:"attribute-batch-buffer",usage:ae.VERTEX|ae.COPY_DST,shrinkToFit:!1}),s=new et({data:Yu,label:"index-batch-buffer",usage:ae.INDEX|ae.COPY_DST,shrinkToFit:!1}),i=24;super({attributes:{aPosition:{buffer:t,format:"float32x2",stride:i,offset:0},aUV:{buffer:t,format:"float32x2",stride:i,offset:8},aColor:{buffer:t,format:"unorm8x4",stride:i,offset:16},aTextureIdAndRound:{buffer:t,format:"uint16x2",stride:i,offset:20}},indexBuffer:s})}}function Ia(r,e,t){if(r)for(const s in r){const i=s.toLocaleLowerCase(),a=e[i];if(a){let o=r[s];s==="header"&&(o=o.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),t&&a.push(`//----${t}----//`),a.push(o)}else j(`${s} placement hook does not exist in shader`)}}const qu=/\{\{(.*?)\}\}/g;function Ra(r){const e={};return(r.match(qu)?.map(s=>s.replace(/[{()}]/g,""))??[]).forEach(s=>{e[s]=[]}),e}function Ga(r,e){let t;const s=/@in\s+([^;]+);/g;for(;(t=s.exec(r))!==null;)e.push(t[1])}function La(r,e,t=!1){const s=[];Ga(e,s),r.forEach(n=>{n.header&&Ga(n.header,s)});const i=s;t&&i.sort();const a=i.map((n,l)=>` @location(${l}) ${n},`).join(`
|
|
28
|
+
`);let o=e.replace(/@in\s+[^;]+;\s*/g,"");return o=o.replace("{{in}}",`
|
|
29
|
+
${a}
|
|
30
|
+
`),o}function Fa(r,e){let t;const s=/@out\s+([^;]+);/g;for(;(t=s.exec(r))!==null;)e.push(t[1])}function Ku(r){const t=/\b(\w+)\s*:/g.exec(r);return t?t[1]:""}function Zu(r){const e=/@.*?\s+/g;return r.replace(e,"")}function Ju(r,e){const t=[];Fa(e,t),r.forEach(l=>{l.header&&Fa(l.header,t)});let s=0;const i=t.sort().map(l=>l.indexOf("builtin")>-1?l:`@location(${s++}) ${l}`).join(`,
|
|
31
|
+
`),a=t.sort().map(l=>` var ${Zu(l)};`).join(`
|
|
32
|
+
`),o=`return VSOutput(
|
|
33
|
+
${t.sort().map(l=>` ${Ku(l)}`).join(`,
|
|
34
|
+
`)});`;let n=e.replace(/@out\s+[^;]+;\s*/g,"");return n=n.replace("{{struct}}",`
|
|
35
|
+
${i}
|
|
36
|
+
`),n=n.replace("{{start}}",`
|
|
37
|
+
${a}
|
|
38
|
+
`),n=n.replace("{{return}}",`
|
|
39
|
+
${o}
|
|
40
|
+
`),n}function Ha(r,e){let t=r;for(const s in e){const i=e[s];i.join(`
|
|
41
|
+
`).length?t=t.replace(`{{${s}}}`,`//-----${s} START-----//
|
|
42
|
+
${i.join(`
|
|
43
|
+
`)}
|
|
44
|
+
//----${s} FINISH----//`):t=t.replace(`{{${s}}}`,"")}return t}const $e=Object.create(null),Es=new Map;let $u=0;function ed({template:r,bits:e}){const t=Xn(r,e);if($e[t])return $e[t];const{vertex:s,fragment:i}=rd(r,e);return $e[t]=Wn(s,i,e),$e[t]}function td({template:r,bits:e}){const t=Xn(r,e);return $e[t]||($e[t]=Wn(r.vertex,r.fragment,e)),$e[t]}function rd(r,e){const t=e.map(o=>o.vertex).filter(o=>!!o),s=e.map(o=>o.fragment).filter(o=>!!o);let i=La(t,r.vertex,!0);i=Ju(t,i);const a=La(s,r.fragment,!0);return{vertex:i,fragment:a}}function Xn(r,e){return e.map(t=>(Es.has(t)||Es.set(t,$u++),Es.get(t))).sort((t,s)=>t-s).join("-")+r.vertex+r.fragment}function Wn(r,e,t){const s=Ra(r),i=Ra(e);return t.forEach(a=>{Ia(a.vertex,s,a.name),Ia(a.fragment,i,a.name)}),{vertex:Ha(r,s),fragment:Ha(e,i)}}const sd=`
|
|
45
|
+
@in aPosition: vec2<f32>;
|
|
46
|
+
@in aUV: vec2<f32>;
|
|
47
|
+
|
|
48
|
+
@out @builtin(position) vPosition: vec4<f32>;
|
|
49
|
+
@out vUV : vec2<f32>;
|
|
50
|
+
@out vColor : vec4<f32>;
|
|
51
|
+
|
|
52
|
+
{{header}}
|
|
53
|
+
|
|
54
|
+
struct VSOutput {
|
|
55
|
+
{{struct}}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
@vertex
|
|
59
|
+
fn main( {{in}} ) -> VSOutput {
|
|
60
|
+
|
|
61
|
+
var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;
|
|
62
|
+
var modelMatrix = mat3x3<f32>(
|
|
63
|
+
1.0, 0.0, 0.0,
|
|
64
|
+
0.0, 1.0, 0.0,
|
|
65
|
+
0.0, 0.0, 1.0
|
|
66
|
+
);
|
|
67
|
+
var position = aPosition;
|
|
68
|
+
var uv = aUV;
|
|
69
|
+
|
|
70
|
+
{{start}}
|
|
71
|
+
|
|
72
|
+
vColor = vec4<f32>(1., 1., 1., 1.);
|
|
73
|
+
|
|
74
|
+
{{main}}
|
|
75
|
+
|
|
76
|
+
vUV = uv;
|
|
77
|
+
|
|
78
|
+
var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;
|
|
79
|
+
|
|
80
|
+
vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);
|
|
81
|
+
|
|
82
|
+
vColor *= globalUniforms.uWorldColorAlpha;
|
|
83
|
+
|
|
84
|
+
{{end}}
|
|
85
|
+
|
|
86
|
+
{{return}}
|
|
87
|
+
};
|
|
88
|
+
`,id=`
|
|
89
|
+
@in vUV : vec2<f32>;
|
|
90
|
+
@in vColor : vec4<f32>;
|
|
91
|
+
|
|
92
|
+
{{header}}
|
|
93
|
+
|
|
94
|
+
@fragment
|
|
95
|
+
fn main(
|
|
96
|
+
{{in}}
|
|
97
|
+
) -> @location(0) vec4<f32> {
|
|
98
|
+
|
|
99
|
+
{{start}}
|
|
100
|
+
|
|
101
|
+
var outColor:vec4<f32>;
|
|
102
|
+
|
|
103
|
+
{{main}}
|
|
104
|
+
|
|
105
|
+
var finalColor:vec4<f32> = outColor * vColor;
|
|
106
|
+
|
|
107
|
+
{{end}}
|
|
108
|
+
|
|
109
|
+
return finalColor;
|
|
110
|
+
};
|
|
111
|
+
`,ad=`
|
|
112
|
+
in vec2 aPosition;
|
|
113
|
+
in vec2 aUV;
|
|
114
|
+
|
|
115
|
+
out vec4 vColor;
|
|
116
|
+
out vec2 vUV;
|
|
117
|
+
|
|
118
|
+
{{header}}
|
|
119
|
+
|
|
120
|
+
void main(void){
|
|
121
|
+
|
|
122
|
+
mat3 worldTransformMatrix = uWorldTransformMatrix;
|
|
123
|
+
mat3 modelMatrix = mat3(
|
|
124
|
+
1.0, 0.0, 0.0,
|
|
125
|
+
0.0, 1.0, 0.0,
|
|
126
|
+
0.0, 0.0, 1.0
|
|
127
|
+
);
|
|
128
|
+
vec2 position = aPosition;
|
|
129
|
+
vec2 uv = aUV;
|
|
130
|
+
|
|
131
|
+
{{start}}
|
|
132
|
+
|
|
133
|
+
vColor = vec4(1.);
|
|
134
|
+
|
|
135
|
+
{{main}}
|
|
136
|
+
|
|
137
|
+
vUV = uv;
|
|
138
|
+
|
|
139
|
+
mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;
|
|
140
|
+
|
|
141
|
+
gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
|
|
142
|
+
|
|
143
|
+
vColor *= uWorldColorAlpha;
|
|
144
|
+
|
|
145
|
+
{{end}}
|
|
146
|
+
}
|
|
147
|
+
`,od=`
|
|
148
|
+
|
|
149
|
+
in vec4 vColor;
|
|
150
|
+
in vec2 vUV;
|
|
151
|
+
|
|
152
|
+
out vec4 finalColor;
|
|
153
|
+
|
|
154
|
+
{{header}}
|
|
155
|
+
|
|
156
|
+
void main(void) {
|
|
157
|
+
|
|
158
|
+
{{start}}
|
|
159
|
+
|
|
160
|
+
vec4 outColor;
|
|
161
|
+
|
|
162
|
+
{{main}}
|
|
163
|
+
|
|
164
|
+
finalColor = outColor * vColor;
|
|
165
|
+
|
|
166
|
+
{{end}}
|
|
167
|
+
}
|
|
168
|
+
`,nd={name:"global-uniforms-bit",vertex:{header:`
|
|
169
|
+
struct GlobalUniforms {
|
|
170
|
+
uProjectionMatrix:mat3x3<f32>,
|
|
171
|
+
uWorldTransformMatrix:mat3x3<f32>,
|
|
172
|
+
uWorldColorAlpha: vec4<f32>,
|
|
173
|
+
uResolution: vec2<f32>,
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
@group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;
|
|
177
|
+
`}},ld={name:"global-uniforms-bit",vertex:{header:`
|
|
178
|
+
uniform mat3 uProjectionMatrix;
|
|
179
|
+
uniform mat3 uWorldTransformMatrix;
|
|
180
|
+
uniform vec4 uWorldColorAlpha;
|
|
181
|
+
uniform vec2 uResolution;
|
|
182
|
+
`}};function hd({bits:r,name:e}){const t=ed({template:{fragment:id,vertex:sd},bits:[nd,...r]});return rs.from({name:e,vertex:{source:t.vertex,entryPoint:"main"},fragment:{source:t.fragment,entryPoint:"main"}})}function cd({bits:r,name:e}){return new fn({name:e,...td({template:{vertex:ad,fragment:od},bits:[ld,...r]})})}const ud={name:"color-bit",vertex:{header:`
|
|
183
|
+
@in aColor: vec4<f32>;
|
|
184
|
+
`,main:`
|
|
185
|
+
vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);
|
|
186
|
+
`}},dd={name:"color-bit",vertex:{header:`
|
|
187
|
+
in vec4 aColor;
|
|
188
|
+
`,main:`
|
|
189
|
+
vColor *= vec4(aColor.rgb * aColor.a, aColor.a);
|
|
190
|
+
`}},Ds={};function fd(r){const e=[];if(r===1)e.push("@group(1) @binding(0) var textureSource1: texture_2d<f32>;"),e.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let t=0;for(let s=0;s<r;s++)e.push(`@group(1) @binding(${t++}) var textureSource${s+1}: texture_2d<f32>;`),e.push(`@group(1) @binding(${t++}) var textureSampler${s+1}: sampler;`)}return e.join(`
|
|
191
|
+
`)}function md(r){const e=[];if(r===1)e.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");else{e.push("switch vTextureId {");for(let t=0;t<r;t++)t===r-1?e.push(" default:{"):e.push(` case ${t}:{`),e.push(` outColor = textureSampleGrad(textureSource${t+1}, textureSampler${t+1}, vUV, uvDx, uvDy);`),e.push(" break;}");e.push("}")}return e.join(`
|
|
192
|
+
`)}function pd(r){return Ds[r]||(Ds[r]={name:"texture-batch-bit",vertex:{header:`
|
|
193
|
+
@in aTextureIdAndRound: vec2<u32>;
|
|
194
|
+
@out @interpolate(flat) vTextureId : u32;
|
|
195
|
+
`,main:`
|
|
196
|
+
vTextureId = aTextureIdAndRound.y;
|
|
197
|
+
`,end:`
|
|
198
|
+
if(aTextureIdAndRound.x == 1)
|
|
199
|
+
{
|
|
200
|
+
vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
|
|
201
|
+
}
|
|
202
|
+
`},fragment:{header:`
|
|
203
|
+
@in @interpolate(flat) vTextureId: u32;
|
|
204
|
+
|
|
205
|
+
${fd(r)}
|
|
206
|
+
`,main:`
|
|
207
|
+
var uvDx = dpdx(vUV);
|
|
208
|
+
var uvDy = dpdy(vUV);
|
|
209
|
+
|
|
210
|
+
${md(r)}
|
|
211
|
+
`}}),Ds[r]}const Is={};function wd(r){const e=[];for(let t=0;t<r;t++)t>0&&e.push("else"),t<r-1&&e.push(`if(vTextureId < ${t}.5)`),e.push("{"),e.push(` outColor = texture(uTextures[${t}], vUV);`),e.push("}");return e.join(`
|
|
212
|
+
`)}function Ad(r){return Is[r]||(Is[r]={name:"texture-batch-bit",vertex:{header:`
|
|
213
|
+
in vec2 aTextureIdAndRound;
|
|
214
|
+
out float vTextureId;
|
|
215
|
+
|
|
216
|
+
`,main:`
|
|
217
|
+
vTextureId = aTextureIdAndRound.y;
|
|
218
|
+
`,end:`
|
|
219
|
+
if(aTextureIdAndRound.x == 1.)
|
|
220
|
+
{
|
|
221
|
+
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
|
|
222
|
+
}
|
|
223
|
+
`},fragment:{header:`
|
|
224
|
+
in float vTextureId;
|
|
225
|
+
|
|
226
|
+
uniform sampler2D uTextures[${r}];
|
|
227
|
+
|
|
228
|
+
`,main:`
|
|
229
|
+
|
|
230
|
+
${wd(r)}
|
|
231
|
+
`}}),Is[r]}const _d={name:"round-pixels-bit",vertex:{header:`
|
|
232
|
+
fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
|
|
233
|
+
{
|
|
234
|
+
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
|
|
235
|
+
}
|
|
236
|
+
`}},xd={name:"round-pixels-bit",vertex:{header:`
|
|
237
|
+
vec2 roundPixels(vec2 position, vec2 targetSize)
|
|
238
|
+
{
|
|
239
|
+
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
|
|
240
|
+
}
|
|
241
|
+
`}},Oa={};function yd(r){let e=Oa[r];if(e)return e;const t=new Int32Array(r);for(let s=0;s<r;s++)t[s]=s;return e=Oa[r]=new An({uTextures:{value:t,type:"i32",size:r}},{isStatic:!0}),e}class Na extends Gi{constructor(e){const t=cd({name:"batch",bits:[dd,Ad(e),xd]}),s=hd({name:"batch",bits:[ud,pd(e),_d]});super({glProgram:t,gpuProgram:s,resources:{batchSamplers:yd(e)}}),this.maxTextures=e}}let Kt=null;const jn=class Qn extends Xu{constructor(e){super(e),this.geometry=new Vu,this.name=Qn.extension.name,this.vertexSize=6,Kt??(Kt=new Na(e.maxTextures)),this.shader=Kt}packAttributes(e,t,s,i,a){const o=a<<16|e.roundPixels&65535,n=e.transform,l=n.a,h=n.b,c=n.c,u=n.d,f=n.tx,d=n.ty,{positions:m,uvs:p}=e,w=e.color,A=e.attributeOffset,_=A+e.attributeSize;for(let x=A;x<_;x++){const y=x*2,g=m[y],S=m[y+1];t[i++]=l*g+c*S+f,t[i++]=u*S+h*g+d,t[i++]=p[y],t[i++]=p[y+1],s[i++]=w,s[i++]=o}}packQuadAttributes(e,t,s,i,a){const o=e.texture,n=e.transform,l=n.a,h=n.b,c=n.c,u=n.d,f=n.tx,d=n.ty,m=e.bounds,p=m.maxX,w=m.minX,A=m.maxY,_=m.minY,x=o.uvs,y=e.color,g=a<<16|e.roundPixels&65535;t[i+0]=l*w+c*_+f,t[i+1]=u*_+h*w+d,t[i+2]=x.x0,t[i+3]=x.y0,s[i+4]=y,s[i+5]=g,t[i+6]=l*p+c*_+f,t[i+7]=u*_+h*p+d,t[i+8]=x.x1,t[i+9]=x.y1,s[i+10]=y,s[i+11]=g,t[i+12]=l*p+c*A+f,t[i+13]=u*A+h*p+d,t[i+14]=x.x2,t[i+15]=x.y2,s[i+16]=y,s[i+17]=g,t[i+18]=l*w+c*A+f,t[i+19]=u*A+h*w+d,t[i+20]=x.x3,t[i+21]=x.y3,s[i+22]=y,s[i+23]=g}_updateMaxTextures(e){this.shader.maxTextures!==e&&(Kt=new Na(e),this.shader=Kt)}destroy(){this.shader=null,super.destroy()}};jn.extension={type:[M.Batcher],name:"default"};let gd=jn;class Ut{constructor(e){this.items=Object.create(null);const{renderer:t,type:s,onUnload:i,priority:a,name:o}=e;this._renderer=t,t.gc.addResourceHash(this,"items",s,a??0),this._onUnload=i,this.name=o}add(e){return this.items[e.uid]?!1:(this.items[e.uid]=e,e.once("unload",this.remove,this),e._gcLastUsed=this._renderer.gc.now,!0)}remove(e,...t){if(!this.items[e.uid])return;const s=e._gpuData[this._renderer.uid];s&&(this._onUnload?.(e,...t),e.off("unload",this.remove,this),s.destroy(),e._gpuData[this._renderer.uid]=null,this.items[e.uid]=null)}removeAll(...e){Object.values(this.items).forEach(t=>t&&this.remove(t,...e))}destroy(...e){this.removeAll(...e),this.items=Object.create(null),this._renderer=null,this._onUnload=null}}function Sd(r,e,t,s,i,a,o,n=null){let l=0;t*=e,i*=a;const h=n.a,c=n.b,u=n.c,f=n.d,d=n.tx,m=n.ty;for(;l<o;){const p=r[t],w=r[t+1];s[i]=h*p+u*w+d,s[i+1]=c*p+f*w+m,i+=a,t+=e,l++}}function kd(r,e,t,s){let i=0;for(e*=t;i<s;)r[e]=0,r[e+1]=0,e+=t,i++}function Yn(r,e,t,s,i){const a=e.a,o=e.b,n=e.c,l=e.d,h=e.tx,c=e.ty;t||(t=0),s||(s=2),i||(i=r.length/s-t);let u=t*s;for(let f=0;f<i;f++){const d=r[u],m=r[u+1];r[u]=a*d+n*m+h,r[u+1]=o*d+l*m+c,u+=s}}const bd=new H;class Oi{constructor(){this.packAsQuad=!1,this.batcherName="default",this.topology="triangle-list",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.renderable&&this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){const e=this.baseColor,t=e>>16|e&65280|(e&255)<<16,s=this.renderable;return s?Ii(t,s.groupColor)+(this.alpha*s.groupAlpha*255<<24):t+(this.alpha*255<<24)}get transform(){return this.renderable?.groupTransform||bd}copyTo(e){e.indexOffset=this.indexOffset,e.indexSize=this.indexSize,e.attributeOffset=this.attributeOffset,e.attributeSize=this.attributeSize,e.baseColor=this.baseColor,e.alpha=this.alpha,e.texture=this.texture,e.geometryData=this.geometryData,e.topology=this.topology}reset(){this.applyTransform=!0,this.renderable=null,this.topology="triangle-list"}destroy(){this.renderable=null,this.texture=null,this.geometryData=null,this._batcher=null,this._batch=null}}const dr={extension:{type:M.ShapeBuilder,name:"circle"},build(r,e){let t,s,i,a,o,n;if(r.type==="circle"){const y=r;if(o=n=y.radius,o<=0)return!1;t=y.x,s=y.y,i=a=0}else if(r.type==="ellipse"){const y=r;if(o=y.halfWidth,n=y.halfHeight,o<=0||n<=0)return!1;t=y.x,s=y.y,i=a=0}else{const y=r,g=y.width/2,S=y.height/2;t=y.x+g,s=y.y+S,o=n=Math.max(0,Math.min(y.radius,Math.min(g,S))),i=g-o,a=S-n}if(i<0||a<0)return!1;const l=Math.ceil(2.3*Math.sqrt(o+n)),h=l*8+(i?4:0)+(a?4:0);if(h===0)return!1;if(l===0)return e[0]=e[6]=t+i,e[1]=e[3]=s+a,e[2]=e[4]=t-i,e[5]=e[7]=s-a,!0;let c=0,u=l*4+(i?2:0)+2,f=u,d=h,m=i+o,p=a,w=t+m,A=t-m,_=s+p;if(e[c++]=w,e[c++]=_,e[--u]=_,e[--u]=A,a){const y=s-p;e[f++]=A,e[f++]=y,e[--d]=y,e[--d]=w}for(let y=1;y<l;y++){const g=Math.PI/2*(y/l),S=i+Math.cos(g)*o,k=a+Math.sin(g)*n,v=t+S,P=t-S,z=s+k,b=s-k;e[c++]=v,e[c++]=z,e[--u]=z,e[--u]=P,e[f++]=P,e[f++]=b,e[--d]=b,e[--d]=v}m=i,p=a+n,w=t+m,A=t-m,_=s+p;const x=s-p;return e[c++]=w,e[c++]=_,e[--d]=x,e[--d]=w,i&&(e[c++]=A,e[c++]=_,e[--d]=x,e[--d]=A),!0},triangulate(r,e,t,s,i,a){if(r.length===0)return;let o=0,n=0;for(let c=0;c<r.length;c+=2)o+=r[c],n+=r[c+1];o/=r.length/2,n/=r.length/2;let l=s;e[l*t]=o,e[l*t+1]=n;const h=l++;for(let c=0;c<r.length;c+=2)e[l*t]=r[c],e[l*t+1]=r[c+1],c>0&&(i[a++]=l,i[a++]=h,i[a++]=l-1),l++;i[a++]=h+1,i[a++]=h,i[a++]=l-1}},zd={...dr,extension:{...dr.extension,name:"ellipse"}},vd={...dr,extension:{...dr.extension,name:"roundedRectangle"}},Vn=1e-4,Ua=1e-4;function Xa(r,e,t,s,i,a,o,n){const l=r-t*i,h=e-s*i,c=r+t*a,u=e+s*a;let f,d;o?(f=s,d=-t):(f=-s,d=t);const m=l+f,p=h+d,w=c+f,A=u+d;return n.push(m,p),n.push(w,A),2}function nt(r,e,t,s,i,a,o,n){const l=t-r,h=s-e;let c=Math.atan2(l,h),u=Math.atan2(i-r,a-e);n&&c<u?c+=Math.PI*2:!n&&c>u&&(u+=Math.PI*2);let f=c;const d=u-c,m=Math.abs(d),p=Math.sqrt(l*l+h*h),w=(15*m*Math.sqrt(p)/Math.PI>>0)+1,A=d/w;if(f+=A,n){o.push(r,e),o.push(t,s);for(let _=1,x=f;_<w;_++,x+=A)o.push(r,e),o.push(r+Math.sin(x)*p,e+Math.cos(x)*p);o.push(r,e),o.push(i,a)}else{o.push(t,s),o.push(r,e);for(let _=1,x=f;_<w;_++,x+=A)o.push(r+Math.sin(x)*p,e+Math.cos(x)*p),o.push(r,e);o.push(i,a),o.push(r,e)}return w*2}function Pd(r,e,t,s,i,a){const o=Vn;if(r.length===0)return;const n=e;let l=n.alignment;if(e.alignment!==.5){let B=Ln(r);l=(l-.5)*B+.5}const h=new de(r[0],r[1]),c=new de(r[r.length-2],r[r.length-1]),u=s,f=Math.abs(h.x-c.x)<o&&Math.abs(h.y-c.y)<o;if(u){r=r.slice(),f&&(r.pop(),r.pop(),c.set(r[r.length-2],r[r.length-1]));const B=(h.x+c.x)*.5,X=(c.y+h.y)*.5;r.unshift(B,X),r.push(B,X)}const d=i,m=r.length/2;let p=r.length;const w=d.length/2,A=n.width/2,_=A*A,x=n.miterLimit*n.miterLimit;let y=r[0],g=r[1],S=r[2],k=r[3],v=0,P=0,z=-(g-k),b=y-S,D=0,I=0,E=Math.sqrt(z*z+b*b);z/=E,b/=E,z*=A,b*=A;const O=l,C=(1-O)*2,T=O*2;u||(n.cap==="round"?p+=nt(y-z*(C-T)*.5,g-b*(C-T)*.5,y-z*C,g-b*C,y+z*T,g+b*T,d,!0)+2:n.cap==="square"&&(p+=Xa(y,g,z,b,C,T,!0,d))),d.push(y-z*C,g-b*C),d.push(y+z*T,g+b*T);for(let B=1;B<m-1;++B){y=r[(B-1)*2],g=r[(B-1)*2+1],S=r[B*2],k=r[B*2+1],v=r[(B+1)*2],P=r[(B+1)*2+1],z=-(g-k),b=y-S,E=Math.sqrt(z*z+b*b),z/=E,b/=E,z*=A,b*=A,D=-(k-P),I=S-v,E=Math.sqrt(D*D+I*I),D/=E,I/=E,D*=A,I*=A;const X=S-y,K=g-k,Z=S-v,W=P-k,J=X*Z+K*W,we=K*Z-W*X,ze=we<0;if(Math.abs(we)<.001*Math.abs(J)){d.push(S-z*C,k-b*C),d.push(S+z*T,k+b*T),J>=0&&(n.join==="round"?p+=nt(S,k,S-z*C,k-b*C,S-D*C,k-I*C,d,!1)+4:p+=2,d.push(S-D*T,k-I*T),d.push(S+D*C,k+I*C));continue}const st=(-z+y)*(-b+k)-(-z+S)*(-b+g),it=(-D+v)*(-I+k)-(-D+S)*(-I+P),Ve=(X*it-Z*st)/we,qe=(W*st-K*it)/we,Ke=(Ve-S)*(Ve-S)+(qe-k)*(qe-k),ye=S+(Ve-S)*C,ve=k+(qe-k)*C,Pe=S-(Ve-S)*T,Ge=k-(qe-k)*T,os=Math.min(X*X+K*K,Z*Z+W*W),pr=ze?C:T,ns=os+pr*pr*_;Ke<=ns?n.join==="bevel"||Ke/_>x?(ze?(d.push(ye,ve),d.push(S+z*T,k+b*T),d.push(ye,ve),d.push(S+D*T,k+I*T)):(d.push(S-z*C,k-b*C),d.push(Pe,Ge),d.push(S-D*C,k-I*C),d.push(Pe,Ge)),p+=2):n.join==="round"?ze?(d.push(ye,ve),d.push(S+z*T,k+b*T),p+=nt(S,k,S+z*T,k+b*T,S+D*T,k+I*T,d,!0)+4,d.push(ye,ve),d.push(S+D*T,k+I*T)):(d.push(S-z*C,k-b*C),d.push(Pe,Ge),p+=nt(S,k,S-z*C,k-b*C,S-D*C,k-I*C,d,!1)+4,d.push(S-D*C,k-I*C),d.push(Pe,Ge)):(d.push(ye,ve),d.push(Pe,Ge)):(d.push(S-z*C,k-b*C),d.push(S+z*T,k+b*T),n.join==="round"?ze?p+=nt(S,k,S+z*T,k+b*T,S+D*T,k+I*T,d,!0)+2:p+=nt(S,k,S-z*C,k-b*C,S-D*C,k-I*C,d,!1)+2:n.join==="miter"&&Ke/_<=x&&(ze?(d.push(Pe,Ge),d.push(Pe,Ge)):(d.push(ye,ve),d.push(ye,ve)),p+=2),d.push(S-D*C,k-I*C),d.push(S+D*T,k+I*T),p+=2)}y=r[(m-2)*2],g=r[(m-2)*2+1],S=r[(m-1)*2],k=r[(m-1)*2+1],z=-(g-k),b=y-S,E=Math.sqrt(z*z+b*b),z/=E,b/=E,z*=A,b*=A,d.push(S-z*C,k-b*C),d.push(S+z*T,k+b*T),u||(n.cap==="round"?p+=nt(S-z*(C-T)*.5,k-b*(C-T)*.5,S-z*C,k-b*C,S+z*T,k+b*T,d,!1)+2:n.cap==="square"&&(p+=Xa(S,k,z,b,C,T,!1,d)));const F=Ua*Ua;for(let B=w;B<p+w-2;++B)y=d[B*2],g=d[B*2+1],S=d[(B+1)*2],k=d[(B+1)*2+1],v=d[(B+2)*2],P=d[(B+2)*2+1],!(Math.abs(y*(k-P)+S*(P-g)+v*(g-k))<F)&&a.push(B,B+1,B+2)}function Cd(r,e,t,s){const i=Vn;if(r.length===0)return;const a=r[0],o=r[1],n=r[r.length-2],l=r[r.length-1],h=e||Math.abs(a-n)<i&&Math.abs(o-l)<i,c=t,u=r.length/2,f=c.length/2;for(let d=0;d<u;d++)c.push(r[d*2]),c.push(r[d*2+1]);for(let d=0;d<u-1;d++)s.push(f+d,f+d+1);h&&s.push(f+u-1,f)}function qn(r,e,t,s,i,a,o){const n=jc(r,e,2);if(!n)return;for(let h=0;h<n.length;h+=3)a[o++]=n[h]+i,a[o++]=n[h+1]+i,a[o++]=n[h+2]+i;let l=i*s;for(let h=0;h<r.length;h+=2)t[l]=r[h],t[l+1]=r[h+1],l+=s}const Td=[],Bd={extension:{type:M.ShapeBuilder,name:"polygon"},build(r,e){for(let t=0;t<r.points.length;t++)e[t]=r.points[t];return!0},triangulate(r,e,t,s,i,a){qn(r,Td,e,t,s,i,a)}},Md={extension:{type:M.ShapeBuilder,name:"rectangle"},build(r,e){const t=r,s=t.x,i=t.y,a=t.width,o=t.height;return a>0&&o>0?(e[0]=s,e[1]=i,e[2]=s+a,e[3]=i,e[4]=s+a,e[5]=i+o,e[6]=s,e[7]=i+o,!0):!1},triangulate(r,e,t,s,i,a){let o=0;s*=t,e[s+o]=r[0],e[s+o+1]=r[1],o+=t,e[s+o]=r[2],e[s+o+1]=r[3],o+=t,e[s+o]=r[6],e[s+o+1]=r[7],o+=t,e[s+o]=r[4],e[s+o+1]=r[5],o+=t;const n=s/t;i[a++]=n,i[a++]=n+1,i[a++]=n+2,i[a++]=n+1,i[a++]=n+3,i[a++]=n+2}},Ed={extension:{type:M.ShapeBuilder,name:"triangle"},build(r,e){return e[0]=r.x,e[1]=r.y,e[2]=r.x2,e[3]=r.y2,e[4]=r.x3,e[5]=r.y3,!0},triangulate(r,e,t,s,i,a){let o=0;s*=t,e[s+o]=r[0],e[s+o+1]=r[1],o+=t,e[s+o]=r[2],e[s+o+1]=r[3],o+=t,e[s+o]=r[4],e[s+o+1]=r[5];const n=s/t;i[a++]=n,i[a++]=n+1,i[a++]=n+2}},Wa=[{offset:0,color:"white"},{offset:1,color:"black"}],Ni=class yi{constructor(...e){this.uid=q("fillGradient"),this._tick=0,this.type="linear",this.colorStops=[];let t=Dd(e);t={...t.type==="radial"?yi.defaultRadialOptions:yi.defaultLinearOptions,...Ro(t)},this._textureSize=t.textureSize,this._wrapMode=t.wrapMode,t.type==="radial"?(this.center=t.center,this.outerCenter=t.outerCenter??this.center,this.innerRadius=t.innerRadius,this.outerRadius=t.outerRadius,this.scale=t.scale,this.rotation=t.rotation):(this.start=t.start,this.end=t.end),this.textureSpace=t.textureSpace,this.type=t.type,t.colorStops.forEach(i=>{this.addColorStop(i.offset,i.color)})}addColorStop(e,t){return this.colorStops.push({offset:e,color:ee.shared.setValue(t).toHexa()}),this}buildLinearGradient(){if(this.texture)return;let{x:e,y:t}=this.start,{x:s,y:i}=this.end,a=s-e,o=i-t;const n=a<0||o<0;if(this._wrapMode==="clamp-to-edge"){if(a<0){const w=e;e=s,s=w,a*=-1}if(o<0){const w=t;t=i,i=w,o*=-1}}const l=this.colorStops.length?this.colorStops:Wa,h=this._textureSize,{canvas:c,context:u}=Qa(h,1),f=n?u.createLinearGradient(this._textureSize,0,0,0):u.createLinearGradient(0,0,this._textureSize,0);ja(f,l),u.fillStyle=f,u.fillRect(0,0,h,1),this.texture=new L({source:new Ft({resource:c,addressMode:this._wrapMode})});const d=Math.sqrt(a*a+o*o),m=Math.atan2(o,a),p=new H;p.scale(d/h,1),p.rotate(m),p.translate(e,t),this.textureSpace==="local"&&p.scale(h,h),this.transform=p}buildGradient(){this.texture||this._tick++,this.type==="linear"?this.buildLinearGradient():this.buildRadialGradient()}buildRadialGradient(){if(this.texture)return;const e=this.colorStops.length?this.colorStops:Wa,t=this._textureSize,{canvas:s,context:i}=Qa(t,t),{x:a,y:o}=this.center,{x:n,y:l}=this.outerCenter,h=this.innerRadius,c=this.outerRadius,u=n-c,f=l-c,d=t/(c*2),m=(a-u)*d,p=(o-f)*d,w=i.createRadialGradient(m,p,h*d,(n-u)*d,(l-f)*d,c*d);ja(w,e),i.fillStyle=e[e.length-1].color,i.fillRect(0,0,t,t),i.fillStyle=w,i.translate(m,p),i.rotate(this.rotation),i.scale(1,this.scale),i.translate(-m,-p),i.fillRect(0,0,t,t),this.texture=new L({source:new Ft({resource:s,addressMode:this._wrapMode})});const A=new H;this.textureSpace==="local"?A.scale(2*c,2*c):A.scale(1/d,1/d),A.translate(u,f),this.transform=A}destroy(){this.texture?.destroy(!0),this.texture=null,this.transform=null,this.colorStops=[],this.start=null,this.end=null,this.center=null,this.outerCenter=null}get styleKey(){return`fill-gradient-${this.uid}-${this._tick}`}};Ni.defaultLinearOptions={start:{x:0,y:0},end:{x:0,y:1},colorStops:[],textureSpace:"local",type:"linear",textureSize:256,wrapMode:"clamp-to-edge"};Ni.defaultRadialOptions={center:{x:.5,y:.5},innerRadius:0,outerRadius:.5,colorStops:[],scale:1,rotation:0,textureSpace:"local",type:"radial",textureSize:256,wrapMode:"clamp-to-edge"};let Qe=Ni;function ja(r,e){for(let t=0;t<e.length;t++){const s=e[t];r.addColorStop(s.offset,s.color)}}function Qa(r,e){const t=U.get().createCanvas(r,e),s=t.getContext("2d");return{canvas:t,context:s}}function Dd(r){let e=r[0]??{};return(typeof e=="number"||r[1])&&(G("8.5.2","use options object instead"),e={type:"linear",start:{x:r[0],y:r[1]},end:{x:r[2],y:r[3]},textureSpace:r[4],textureSize:r[5]??Qe.defaultLinearOptions.textureSize}),e}const Id=new H,Rd=new $,Gd=new H;function Ld(r,e,t,s){const i=e.matrix?r.copyFrom(e.matrix).invert():r.identity();if(e.textureSpace==="local"){const o=t.getBounds(Rd);e.width&&o.pad(e.width);const{x:n,y:l}=o,h=1/o.width,c=1/o.height,u=-n*h,f=-l*c,d=i.a,m=i.b,p=i.c,w=i.d;i.a*=h,i.b*=h,i.c*=c,i.d*=c,i.tx=u*d+f*p+i.tx,i.ty=u*m+f*w+i.ty}else if(e.texture.rotate){const{uvs:o,orig:n}=e.texture;i.scale(1/n.width,1/n.height),i.prepend(Gd.set(o.x1-o.x0,o.y1-o.y0,o.x3-o.x0,o.y3-o.y0,o.x0,o.y0))}else i.translate(e.texture.frame.x,e.texture.frame.y),i.scale(1/e.texture.source.width,1/e.texture.source.height);const a=e.texture.source.style;return!(e.fill instanceof Qe)&&a.addressMode==="clamp-to-edge"&&(a.addressMode="repeat",a.update()),s&&i.append(Id.copyFrom(s).invert()),i}const is={};Q.handleByMap(M.ShapeBuilder,is);Q.add(Md,Bd,Ed,dr,zd,vd);const Fd=new $,Hd=new H;function Od(r,e){const{geometryData:t,batches:s}=e;s.length=0,t.indices.length=0,t.vertices.length=0,t.uvs.length=0;for(let i=0;i<r.instructions.length;i++){const a=r.instructions[i];if(a.action==="texture")Nd(a.data,s,t);else if(a.action==="fill"||a.action==="stroke"){const o=a.action==="stroke",n=a.data.path.shapePath,l=a.data.style,h=a.data.hole;o&&h&&Ya(h.shapePath,l,!0,s,t),h&&(n.shapePrimitives[n.shapePrimitives.length-1].holes=h.shapePath.shapePrimitives),Ya(n,l,o,s,t)}}}function Nd(r,e,t){const s=[],i=is.rectangle,a=Fd;a.x=r.dx,a.y=r.dy,a.width=r.dw,a.height=r.dh;const o=r.transform;if(!i.build(a,s))return;const{vertices:n,uvs:l,indices:h}=t,c=h.length,u=n.length/2;o&&Yn(s,o),i.triangulate(s,n,2,u,h,c);const f=r.image,d=f.uvs;l.push(d.x0,d.y0,d.x1,d.y1,d.x3,d.y3,d.x2,d.y2);const m=pe.get(Oi);m.indexOffset=c,m.indexSize=h.length-c,m.attributeOffset=u,m.attributeSize=n.length/2-u,m.baseColor=r.style,m.alpha=r.alpha,m.texture=f,m.geometryData=t,e.push(m)}function Ya(r,e,t,s,i){const{vertices:a,uvs:o,indices:n}=i;r.shapePrimitives.forEach(({shape:l,transform:h,holes:c})=>{const u=[],f=is[l.type];if(!f.build(l,u))return;const d=n.length,m=a.length/2;let p="triangle-list";if(h&&Yn(u,h),t){const x=l.closePath??!0,y=e;y.pixelLine?(Cd(u,x,a,n),p="line-list"):Pd(u,y,!1,x,a,n)}else if(c){const x=[],y=u.slice();Ud(c).forEach(S=>{x.push(y.length/2),y.push(...S)}),qn(y,x,a,2,m,n,d)}else f.triangulate(u,a,2,m,n,d);const w=o.length/2,A=e.texture;if(A!==L.WHITE){const x=Ld(Hd,e,l,h);Sd(a,2,m,o,w,2,a.length/2-m,x)}else kd(o,w,2,a.length/2-m);const _=pe.get(Oi);_.indexOffset=d,_.indexSize=n.length-d,_.attributeOffset=m,_.attributeSize=a.length/2-m,_.baseColor=e.color,_.alpha=e.alpha,_.texture=A,_.geometryData=i,_.topology=p,s.push(_)})}function Ud(r){const e=[];for(let t=0;t<r.length;t++){const s=r[t].shape,i=[];is[s.type].build(s,i)&&e.push(i)}return e}class Xd{constructor(){this.batches=[],this.geometryData={vertices:[],uvs:[],indices:[]}}reset(){this.batches&&this.batches.forEach(e=>{pe.return(e)}),this.graphicsData&&pe.return(this.graphicsData),this.isBatchable=!1,this.context=null,this.batches.length=0,this.geometryData.indices.length=0,this.geometryData.vertices.length=0,this.geometryData.uvs.length=0,this.graphicsData=null}destroy(){this.reset(),this.batches=null,this.geometryData=null}}class Wd{constructor(){this.instructions=new Ri}init(e){const t=e.maxTextures;this.batcher?this.batcher._updateMaxTextures(t):this.batcher=new gd({maxTextures:t}),this.instructions.reset()}get geometry(){return G($l,"GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead."),this.batcher.geometry}destroy(){this.batcher.destroy(),this.instructions.destroy(),this.batcher=null,this.instructions=null}}const Ui=class gi{constructor(e){this._renderer=e,this._managedContexts=new Ut({renderer:e,type:"resource",name:"graphicsContext"})}init(e){gi.defaultOptions.bezierSmoothness=e?.bezierSmoothness??gi.defaultOptions.bezierSmoothness}getContextRenderData(e){return e._gpuData[this._renderer.uid].graphicsData||this._initContextRenderData(e)}updateGpuContext(e){const t=!!e._gpuData[this._renderer.uid],s=e._gpuData[this._renderer.uid]||this._initContext(e);if(e.dirty||!t){t&&s.reset(),Od(e,s);const i=e.batchMode;e.customShader||i==="no-batch"?s.isBatchable=!1:i==="auto"?s.isBatchable=s.geometryData.vertices.length<400:s.isBatchable=!0,e.dirty=!1}return s}getGpuContext(e){return e._gpuData[this._renderer.uid]||this._initContext(e)}_initContextRenderData(e){const t=pe.get(Wd,{maxTextures:this._renderer.limits.maxBatchableTextures}),s=e._gpuData[this._renderer.uid],{batches:i,geometryData:a}=s;s.graphicsData=t;const o=a.vertices.length,n=a.indices.length;for(let u=0;u<i.length;u++)i[u].applyTransform=!1;const l=t.batcher;l.ensureAttributeBuffer(o),l.ensureIndexBuffer(n),l.begin();for(let u=0;u<i.length;u++){const f=i[u];l.add(f)}l.finish(t.instructions);const h=l.geometry;h.indexBuffer.setDataWithSize(l.indexBuffer,l.indexSize,!0),h.buffers[0].setDataWithSize(l.attributeBuffer.float32View,l.attributeSize,!0);const c=l.batches;for(let u=0;u<l.batchIndex;u++){const f=c[u];f.bindGroup=Du(f.textures.textures,f.textures.count,this._renderer.limits.maxBatchableTextures)}return t}_initContext(e){const t=new Xd;return t.context=e,e._gpuData[this._renderer.uid]=t,this._managedContexts.add(e),t}destroy(){this._managedContexts.destroy(),this._renderer=null}};Ui.extension={type:[M.WebGLSystem,M.WebGPUSystem],name:"graphicsContext"};Ui.defaultOptions={bezierSmoothness:.5};let Xi=Ui;const jd=8,Br=11920929e-14,Qd=1;function Kn(r,e,t,s,i,a,o,n,l,h){const u=Math.min(.99,Math.max(0,h??Xi.defaultOptions.bezierSmoothness));let f=(Qd-u)/1;return f*=f,Yd(e,t,s,i,a,o,n,l,r,f),r}function Yd(r,e,t,s,i,a,o,n,l,h){Si(r,e,t,s,i,a,o,n,l,h,0),l.push(o,n)}function Si(r,e,t,s,i,a,o,n,l,h,c){if(c>jd)return;const u=(r+t)/2,f=(e+s)/2,d=(t+i)/2,m=(s+a)/2,p=(i+o)/2,w=(a+n)/2,A=(u+d)/2,_=(f+m)/2,x=(d+p)/2,y=(m+w)/2,g=(A+x)/2,S=(_+y)/2;if(c>0){let k=o-r,v=n-e;const P=Math.abs((t-o)*v-(s-n)*k),z=Math.abs((i-o)*v-(a-n)*k);if(P>Br&&z>Br){if((P+z)*(P+z)<=h*(k*k+v*v)){l.push(g,S);return}}else if(P>Br){if(P*P<=h*(k*k+v*v)){l.push(g,S);return}}else if(z>Br){if(z*z<=h*(k*k+v*v)){l.push(g,S);return}}else if(k=g-(r+o)/2,v=S-(e+n)/2,k*k+v*v<=h){l.push(g,S);return}}Si(r,e,u,f,A,_,g,S,l,h,c+1),Si(g,S,x,y,p,w,o,n,l,h,c+1)}const Vd=8,qd=11920929e-14,Kd=1;function Zd(r,e,t,s,i,a,o,n){const h=Math.min(.99,Math.max(0,n??Xi.defaultOptions.bezierSmoothness));let c=(Kd-h)/1;return c*=c,Jd(e,t,s,i,a,o,r,c),r}function Jd(r,e,t,s,i,a,o,n){ki(o,r,e,t,s,i,a,n,0),o.push(i,a)}function ki(r,e,t,s,i,a,o,n,l){if(l>Vd)return;const h=(e+s)/2,c=(t+i)/2,u=(s+a)/2,f=(i+o)/2,d=(h+u)/2,m=(c+f)/2;let p=a-e,w=o-t;const A=Math.abs((s-a)*w-(i-o)*p);if(A>qd){if(A*A<=n*(p*p+w*w)){r.push(d,m);return}}else if(p=d-(e+a)/2,w=m-(t+o)/2,p*p+w*w<=n){r.push(d,m);return}ki(r,e,t,h,c,d,m,n,l+1),ki(r,d,m,u,f,a,o,n,l+1)}function Zn(r,e,t,s,i,a,o,n){let l=Math.abs(i-a);(!o&&i>a||o&&a>i)&&(l=2*Math.PI-l),n||(n=Math.max(6,Math.floor(6*Math.pow(s,1/3)*(l/Math.PI)))),n=Math.max(n,3);let h=l/n,c=i;h*=o?-1:1;for(let u=0;u<n+1;u++){const f=Math.cos(c),d=Math.sin(c),m=e+f*s,p=t+d*s;r.push(m,p),c+=h}}function $d(r,e,t,s,i,a){const o=r[r.length-2],l=r[r.length-1]-t,h=o-e,c=i-t,u=s-e,f=Math.abs(l*u-h*c);if(f<1e-8||a===0){(r[r.length-2]!==e||r[r.length-1]!==t)&&r.push(e,t);return}const d=l*l+h*h,m=c*c+u*u,p=l*c+h*u,w=a*Math.sqrt(d)/f,A=a*Math.sqrt(m)/f,_=w*p/d,x=A*p/m,y=w*u+A*h,g=w*c+A*l,S=h*(A+_),k=l*(A+_),v=u*(w+x),P=c*(w+x),z=Math.atan2(k-g,S-y),b=Math.atan2(P-g,v-y);Zn(r,y+e,g+t,a,z,b,h*c>u*l)}const or=Math.PI*2,Rs={centerX:0,centerY:0,ang1:0,ang2:0},Gs=({x:r,y:e},t,s,i,a,o,n,l)=>{r*=t,e*=s;const h=i*r-a*e,c=a*r+i*e;return l.x=h+o,l.y=c+n,l};function ef(r,e){const t=e===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(e/4),s=e===1.5707963267948966?.551915024494:t,i=Math.cos(r),a=Math.sin(r),o=Math.cos(r+e),n=Math.sin(r+e);return[{x:i-a*s,y:a+i*s},{x:o+n*s,y:n-o*s},{x:o,y:n}]}const Va=(r,e,t,s)=>{const i=r*s-e*t<0?-1:1;let a=r*t+e*s;return a>1&&(a=1),a<-1&&(a=-1),i*Math.acos(a)},tf=(r,e,t,s,i,a,o,n,l,h,c,u,f)=>{const d=Math.pow(i,2),m=Math.pow(a,2),p=Math.pow(c,2),w=Math.pow(u,2);let A=d*m-d*w-m*p;A<0&&(A=0),A/=d*w+m*p,A=Math.sqrt(A)*(o===n?-1:1);const _=A*i/a*u,x=A*-a/i*c,y=h*_-l*x+(r+t)/2,g=l*_+h*x+(e+s)/2,S=(c-_)/i,k=(u-x)/a,v=(-c-_)/i,P=(-u-x)/a,z=Va(1,0,S,k);let b=Va(S,k,v,P);n===0&&b>0&&(b-=or),n===1&&b<0&&(b+=or),f.centerX=y,f.centerY=g,f.ang1=z,f.ang2=b};function rf(r,e,t,s,i,a,o,n=0,l=0,h=0){if(a===0||o===0)return;const c=Math.sin(n*or/360),u=Math.cos(n*or/360),f=u*(e-s)/2+c*(t-i)/2,d=-c*(e-s)/2+u*(t-i)/2;if(f===0&&d===0)return;a=Math.abs(a),o=Math.abs(o);const m=Math.pow(f,2)/Math.pow(a,2)+Math.pow(d,2)/Math.pow(o,2);m>1&&(a*=Math.sqrt(m),o*=Math.sqrt(m)),tf(e,t,s,i,a,o,l,h,c,u,f,d,Rs);let{ang1:p,ang2:w}=Rs;const{centerX:A,centerY:_}=Rs;let x=Math.abs(w)/(or/4);Math.abs(1-x)<1e-7&&(x=1);const y=Math.max(Math.ceil(x),1);w/=y;let g=r[r.length-2],S=r[r.length-1];const k={x:0,y:0};for(let v=0;v<y;v++){const P=ef(p,w),{x:z,y:b}=Gs(P[0],a,o,u,c,A,_,k),{x:D,y:I}=Gs(P[1],a,o,u,c,A,_,k),{x:E,y:O}=Gs(P[2],a,o,u,c,A,_,k);Kn(r,g,S,z,b,D,I,E,O),g=E,S=O,p+=w}}function sf(r,e,t){const s=(o,n)=>{const l=n.x-o.x,h=n.y-o.y,c=Math.sqrt(l*l+h*h),u=l/c,f=h/c;return{len:c,nx:u,ny:f}},i=(o,n)=>{o===0?r.moveTo(n.x,n.y):r.lineTo(n.x,n.y)};let a=e[e.length-1];for(let o=0;o<e.length;o++){const n=e[o%e.length],l=n.radius??t;if(l<=0){i(o,n),a=n;continue}const h=e[(o+1)%e.length],c=s(n,a),u=s(n,h);if(c.len<1e-4||u.len<1e-4){i(o,n),a=n;continue}let f=Math.asin(c.nx*u.ny-c.ny*u.nx),d=1,m=!1;c.nx*u.nx-c.ny*-u.ny<0?f<0?f=Math.PI+f:(f=Math.PI-f,d=-1,m=!0):f>0&&(d=-1,m=!0);const p=f/2;let w,A=Math.abs(Math.cos(p)*l/Math.sin(p));A>Math.min(c.len/2,u.len/2)?(A=Math.min(c.len/2,u.len/2),w=Math.abs(A*Math.sin(p)/Math.cos(p))):w=l;const _=n.x+u.nx*A+-u.ny*w*d,x=n.y+u.ny*A+u.nx*w*d,y=Math.atan2(c.ny,c.nx)+Math.PI/2*d,g=Math.atan2(u.ny,u.nx)-Math.PI/2*d;o===0&&r.moveTo(_+Math.cos(y)*w,x+Math.sin(y)*w),r.arc(_,x,w,y,g,m),a=n}}function af(r,e,t,s){const i=(n,l)=>Math.sqrt((n.x-l.x)**2+(n.y-l.y)**2),a=(n,l,h)=>({x:n.x+(l.x-n.x)*h,y:n.y+(l.y-n.y)*h}),o=e.length;for(let n=0;n<o;n++){const l=e[(n+1)%o],h=l.radius??t;if(h<=0){n===0?r.moveTo(l.x,l.y):r.lineTo(l.x,l.y);continue}const c=e[n],u=e[(n+2)%o],f=i(c,l);let d;if(f<1e-4)d=l;else{const w=Math.min(f/2,h);d=a(l,c,w/f)}const m=i(u,l);let p;if(m<1e-4)p=l;else{const w=Math.min(m/2,h);p=a(l,u,w/m)}n===0?r.moveTo(d.x,d.y):r.lineTo(d.x,d.y),r.quadraticCurveTo(l.x,l.y,p.x,p.y,s)}}const of=new $;class nf{constructor(e){this.shapePrimitives=[],this._currentPoly=null,this._bounds=new be,this._graphicsPath2D=e,this.signed=e.checkForHoles}moveTo(e,t){return this.startPoly(e,t),this}lineTo(e,t){this._ensurePoly();const s=this._currentPoly.points,i=s[s.length-2],a=s[s.length-1];return(i!==e||a!==t)&&s.push(e,t),this}arc(e,t,s,i,a,o){this._ensurePoly(!1);const n=this._currentPoly.points;return Zn(n,e,t,s,i,a,o),this}arcTo(e,t,s,i,a){this._ensurePoly();const o=this._currentPoly.points;return $d(o,e,t,s,i,a),this}arcToSvg(e,t,s,i,a,o,n){const l=this._currentPoly.points;return rf(l,this._currentPoly.lastX,this._currentPoly.lastY,o,n,e,t,s,i,a),this}bezierCurveTo(e,t,s,i,a,o,n){this._ensurePoly();const l=this._currentPoly;return Kn(this._currentPoly.points,l.lastX,l.lastY,e,t,s,i,a,o,n),this}quadraticCurveTo(e,t,s,i,a){this._ensurePoly();const o=this._currentPoly;return Zd(this._currentPoly.points,o.lastX,o.lastY,e,t,s,i,a),this}closePath(){return this.endPoly(!0),this}addPath(e,t){this.endPoly(),t&&!t.isIdentity()&&(e=e.clone(!0),e.transform(t));const s=this.shapePrimitives,i=s.length;for(let a=0;a<e.instructions.length;a++){const o=e.instructions[a];this[o.action](...o.data)}if(e.checkForHoles&&s.length-i>1){let a=null;for(let o=i;o<s.length;o++){const n=s[o];if(n.shape.type==="polygon"){const l=n.shape,h=a?.shape;h&&h.containsPolygon(l)?(a.holes||(a.holes=[]),a.holes.push(n),s.copyWithin(o,o+1),s.length--,o--):a=n}}}return this}finish(e=!1){this.endPoly(e)}rect(e,t,s,i,a){return this.drawShape(new $(e,t,s,i),a),this}circle(e,t,s,i){return this.drawShape(new Li(e,t,s),i),this}poly(e,t,s){const i=new ir(e);return i.closePath=t,this.drawShape(i,s),this}regularPoly(e,t,s,i,a=0,o){i=Math.max(i|0,3);const n=-1*Math.PI/2+a,l=Math.PI*2/i,h=[];for(let c=0;c<i;c++){const u=n-c*l;h.push(e+s*Math.cos(u),t+s*Math.sin(u))}return this.poly(h,!0,o),this}roundPoly(e,t,s,i,a,o=0,n){if(i=Math.max(i|0,3),a<=0)return this.regularPoly(e,t,s,i,o);const l=s*Math.sin(Math.PI/i)-.001;a=Math.min(a,l);const h=-1*Math.PI/2+o,c=Math.PI*2/i,u=(i-2)*Math.PI/i/2;for(let f=0;f<i;f++){const d=f*c+h,m=e+s*Math.cos(d),p=t+s*Math.sin(d),w=d+Math.PI+u,A=d-Math.PI-u,_=m+a*Math.cos(w),x=p+a*Math.sin(w),y=m+a*Math.cos(A),g=p+a*Math.sin(A);f===0?this.moveTo(_,x):this.lineTo(_,x),this.quadraticCurveTo(m,p,y,g,n)}return this.closePath()}roundShape(e,t,s=!1,i){return e.length<3?this:(s?af(this,e,t,i):sf(this,e,t),this.closePath())}filletRect(e,t,s,i,a){if(a===0)return this.rect(e,t,s,i);const o=Math.min(s,i)/2,n=Math.min(o,Math.max(-o,a)),l=e+s,h=t+i,c=n<0?-n:0,u=Math.abs(n);return this.moveTo(e,t+u).arcTo(e+c,t+c,e+u,t,u).lineTo(l-u,t).arcTo(l-c,t+c,l,t+u,u).lineTo(l,h-u).arcTo(l-c,h-c,e+s-u,h,u).lineTo(e+u,h).arcTo(e+c,h-c,e,h-u,u).closePath()}chamferRect(e,t,s,i,a,o){if(a<=0)return this.rect(e,t,s,i);const n=Math.min(a,Math.min(s,i)/2),l=e+s,h=t+i,c=[e+n,t,l-n,t,l,t+n,l,h-n,l-n,h,e+n,h,e,h-n,e,t+n];for(let u=c.length-1;u>=2;u-=2)c[u]===c[u-2]&&c[u-1]===c[u-3]&&c.splice(u-1,2);return this.poly(c,!0,o)}ellipse(e,t,s,i,a){return this.drawShape(new Fi(e,t,s,i),a),this}roundRect(e,t,s,i,a,o){return this.drawShape(new Hi(e,t,s,i,a),o),this}drawShape(e,t){return this.endPoly(),this.shapePrimitives.push({shape:e,transform:t}),this}startPoly(e,t){let s=this._currentPoly;return s&&this.endPoly(),s=new ir,s.points.push(e,t),this._currentPoly=s,this}endPoly(e=!1){const t=this._currentPoly;return t&&t.points.length>2&&(t.closePath=e,this.shapePrimitives.push({shape:t})),this._currentPoly=null,this}_ensurePoly(e=!0){if(!this._currentPoly&&(this._currentPoly=new ir,e)){const t=this.shapePrimitives[this.shapePrimitives.length-1];if(t){let s=t.shape.x,i=t.shape.y;if(t.transform&&!t.transform.isIdentity()){const a=t.transform,o=s;s=a.a*s+a.c*i+a.tx,i=a.b*o+a.d*i+a.ty}this._currentPoly.points.push(s,i)}else this._currentPoly.points.push(0,0)}}buildPath(){const e=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let t=0;t<e.instructions.length;t++){const s=e.instructions[t];this[s.action](...s.data)}this.finish()}get bounds(){const e=this._bounds;e.clear();const t=this.shapePrimitives;for(let s=0;s<t.length;s++){const i=t[s],a=i.shape.getBounds(of);i.transform?e.addRect(a,i.transform):e.addRect(a)}return e}}class Xe{constructor(e,t=!1){this.instructions=[],this.uid=q("graphicsPath"),this._dirty=!0,this.checkForHoles=t,typeof e=="string"?Tu(e,this):this.instructions=e?.slice()??[]}get shapePath(){return this._shapePath||(this._shapePath=new nf(this)),this._dirty&&(this._dirty=!1,this._shapePath.buildPath()),this._shapePath}addPath(e,t){return e=e.clone(),this.instructions.push({action:"addPath",data:[e,t]}),this._dirty=!0,this}arc(...e){return this.instructions.push({action:"arc",data:e}),this._dirty=!0,this}arcTo(...e){return this.instructions.push({action:"arcTo",data:e}),this._dirty=!0,this}arcToSvg(...e){return this.instructions.push({action:"arcToSvg",data:e}),this._dirty=!0,this}bezierCurveTo(...e){return this.instructions.push({action:"bezierCurveTo",data:e}),this._dirty=!0,this}bezierCurveToShort(e,t,s,i,a){const o=this.instructions[this.instructions.length-1],n=this.getLastPoint(de.shared);let l=0,h=0;if(!o||o.action!=="bezierCurveTo")l=n.x,h=n.y;else{l=o.data[2],h=o.data[3];const c=n.x,u=n.y;l=c+(c-l),h=u+(u-h)}return this.instructions.push({action:"bezierCurveTo",data:[l,h,e,t,s,i,a]}),this._dirty=!0,this}closePath(){return this.instructions.push({action:"closePath",data:[]}),this._dirty=!0,this}ellipse(...e){return this.instructions.push({action:"ellipse",data:e}),this._dirty=!0,this}lineTo(...e){return this.instructions.push({action:"lineTo",data:e}),this._dirty=!0,this}moveTo(...e){return this.instructions.push({action:"moveTo",data:e}),this}quadraticCurveTo(...e){return this.instructions.push({action:"quadraticCurveTo",data:e}),this._dirty=!0,this}quadraticCurveToShort(e,t,s){const i=this.instructions[this.instructions.length-1],a=this.getLastPoint(de.shared);let o=0,n=0;if(!i||i.action!=="quadraticCurveTo")o=a.x,n=a.y;else{o=i.data[0],n=i.data[1];const l=a.x,h=a.y;o=l+(l-o),n=h+(h-n)}return this.instructions.push({action:"quadraticCurveTo",data:[o,n,e,t,s]}),this._dirty=!0,this}rect(e,t,s,i,a){return this.instructions.push({action:"rect",data:[e,t,s,i,a]}),this._dirty=!0,this}circle(e,t,s,i){return this.instructions.push({action:"circle",data:[e,t,s,i]}),this._dirty=!0,this}roundRect(...e){return this.instructions.push({action:"roundRect",data:e}),this._dirty=!0,this}poly(...e){return this.instructions.push({action:"poly",data:e}),this._dirty=!0,this}regularPoly(...e){return this.instructions.push({action:"regularPoly",data:e}),this._dirty=!0,this}roundPoly(...e){return this.instructions.push({action:"roundPoly",data:e}),this._dirty=!0,this}roundShape(...e){return this.instructions.push({action:"roundShape",data:e}),this._dirty=!0,this}filletRect(...e){return this.instructions.push({action:"filletRect",data:e}),this._dirty=!0,this}chamferRect(...e){return this.instructions.push({action:"chamferRect",data:e}),this._dirty=!0,this}star(e,t,s,i,a,o,n){a||(a=i/2);const l=-1*Math.PI/2+o,h=s*2,c=Math.PI*2/h,u=[];for(let f=0;f<h;f++){const d=f%2?a:i,m=f*c+l;u.push(e+d*Math.cos(m),t+d*Math.sin(m))}return this.poly(u,!0,n),this}clone(e=!1){const t=new Xe;if(t.checkForHoles=this.checkForHoles,!e)t.instructions=this.instructions.slice();else for(let s=0;s<this.instructions.length;s++){const i=this.instructions[s];t.instructions.push({action:i.action,data:i.data.slice()})}return t}clear(){return this.instructions.length=0,this._dirty=!0,this}transform(e){if(e.isIdentity())return this;const t=e.a,s=e.b,i=e.c,a=e.d,o=e.tx,n=e.ty;let l=0,h=0,c=0,u=0,f=0,d=0,m=0,p=0;for(let w=0;w<this.instructions.length;w++){const A=this.instructions[w],_=A.data;switch(A.action){case"moveTo":case"lineTo":l=_[0],h=_[1],_[0]=t*l+i*h+o,_[1]=s*l+a*h+n;break;case"bezierCurveTo":c=_[0],u=_[1],f=_[2],d=_[3],l=_[4],h=_[5],_[0]=t*c+i*u+o,_[1]=s*c+a*u+n,_[2]=t*f+i*d+o,_[3]=s*f+a*d+n,_[4]=t*l+i*h+o,_[5]=s*l+a*h+n;break;case"quadraticCurveTo":c=_[0],u=_[1],l=_[2],h=_[3],_[0]=t*c+i*u+o,_[1]=s*c+a*u+n,_[2]=t*l+i*h+o,_[3]=s*l+a*h+n;break;case"arcToSvg":l=_[5],h=_[6],m=_[0],p=_[1],_[0]=t*m+i*p,_[1]=s*m+a*p,_[5]=t*l+i*h+o,_[6]=s*l+a*h+n;break;case"circle":_[4]=gt(_[3],e);break;case"rect":_[4]=gt(_[4],e);break;case"ellipse":_[8]=gt(_[8],e);break;case"roundRect":_[5]=gt(_[5],e);break;case"addPath":_[0].transform(e);break;case"poly":_[2]=gt(_[2],e);break;case"regularPoly":case"chamferRect":_[5]=gt(_[5],e);break;case"closePath":break;default:j("unknown transform action",A.action);break}}return this._dirty=!0,this}get bounds(){return this.shapePath.bounds}getLastPoint(e){let t=this.instructions.length-1,s=this.instructions[t];if(!s)return e.x=0,e.y=0,e;for(;s.action==="closePath";){if(t--,t<0)return e.x=0,e.y=0,e;s=this.instructions[t]}switch(s.action){case"moveTo":case"lineTo":e.x=s.data[0],e.y=s.data[1];break;case"quadraticCurveTo":e.x=s.data[2],e.y=s.data[3];break;case"bezierCurveTo":e.x=s.data[4],e.y=s.data[5];break;case"arc":case"arcToSvg":e.x=s.data[5],e.y=s.data[6];break;case"addPath":s.data[0].getLastPoint(e);break}return e}}function gt(r,e){return r?r.prepend(e):e.clone()}function ne(r,e,t){const s=r.getAttribute(e);return s?Number(s):t}function lf(r,e){const t=r.querySelectorAll("defs");for(let s=0;s<t.length;s++){const i=t[s];for(let a=0;a<i.children.length;a++){const o=i.children[a];switch(o.nodeName.toLowerCase()){case"lineargradient":e.defs[o.id]=hf(o);break;case"radialgradient":e.defs[o.id]=cf(o);break}}}}function Be(r,e,t){const s=r.getAttribute(e);if(s?.trim().endsWith("%")){const i=Number(s.trim().slice(0,-1));return Number.isNaN(i)?t:i/100}return ne(r,e,t)}function Jn(r){return(r.getAttribute("gradientUnits")||"objectBoundingBox")==="objectBoundingBox"?"local":"global"}function $n(r){const e=[];for(let t=0;t<r.children.length;t++){const s=r.children[t],i=Be(s,"offset",0),a=ee.shared.setValue(s.getAttribute("stop-color")).toNumber();e.push({offset:i,color:a})}return e}function hf(r){const e=Be(r,"x1",0),t=Be(r,"y1",0),s=Be(r,"x2",1),i=Be(r,"y2",0);return new Qe({type:"linear",start:{x:e,y:t},end:{x:s,y:i},textureSpace:Jn(r),colorStops:$n(r)})}function cf(r){const e=Be(r,"cx",.5),t=Be(r,"cy",.5),s=Be(r,"r",.5),i=Be(r,"fx",e),a=Be(r,"fy",t),o=Be(r,"fr",0);return new Qe({type:"radial",center:{x:i,y:a},innerRadius:o,outerCenter:{x:e,y:t},outerRadius:s,textureSpace:Jn(r),colorStops:$n(r)})}function qa(r){const e=r.match(/url\s*\(\s*['"]?\s*#([^'"\s)]+)\s*['"]?\s*\)/i);return e?e[1]:""}const Ka={fill:{type:"paint",default:0},"fill-opacity":{type:"number",default:1},stroke:{type:"paint",default:0},"stroke-width":{type:"number",default:1},"stroke-opacity":{type:"number",default:1},"stroke-linecap":{type:"string",default:"butt"},"stroke-linejoin":{type:"string",default:"miter"},"stroke-miterlimit":{type:"number",default:10},"stroke-dasharray":{type:"string",default:"none"},"stroke-dashoffset":{type:"number",default:0},opacity:{type:"number",default:1}};function el(r,e){const t=r.getAttribute("style"),s={},i={},a={strokeStyle:s,fillStyle:i,useFill:!1,useStroke:!1};for(const o in Ka){const n=r.getAttribute(o);n&&Za(e,a,o,n.trim())}if(t){const o=t.split(";");for(let n=0;n<o.length;n++){const l=o[n].trim(),[h,c]=l.split(":");Ka[h]&&Za(e,a,h,c.trim())}}return{strokeStyle:a.useStroke?s:null,fillStyle:a.useFill?i:null,useFill:a.useFill,useStroke:a.useStroke}}function Za(r,e,t,s){switch(t){case"stroke":if(s!=="none"){if(s.startsWith("url(")){const i=qa(s);e.strokeStyle.fill=r.defs[i]}else e.strokeStyle.color=ee.shared.setValue(s).toNumber();e.useStroke=!0}break;case"stroke-width":e.strokeStyle.width=Number(s);break;case"fill":if(s!=="none"){if(s.startsWith("url(")){const i=qa(s);e.fillStyle.fill=r.defs[i]}else e.fillStyle.color=ee.shared.setValue(s).toNumber();e.useFill=!0}break;case"fill-opacity":e.fillStyle.alpha=Number(s);break;case"stroke-opacity":e.strokeStyle.alpha=Number(s);break;case"opacity":e.fillStyle.alpha=Number(s),e.strokeStyle.alpha=Number(s);break}}function uf(r){if(r.length<=2)return!0;const e=r.map(n=>n.area).sort((n,l)=>l-n),[t,s]=e,i=e[e.length-1],a=t/s,o=s/i;return!(a>3&&o<2)}function df(r){return r.split(/(?=[Mm])/).filter(s=>s.trim().length>0)}function ff(r){const e=r.match(/[-+]?[0-9]*\.?[0-9]+/g);if(!e||e.length<4)return 0;const t=e.map(Number),s=[],i=[];for(let c=0;c<t.length;c+=2)c+1<t.length&&(s.push(t[c]),i.push(t[c+1]));if(s.length===0||i.length===0)return 0;const a=Math.min(...s),o=Math.max(...s),n=Math.min(...i),l=Math.max(...i);return(o-a)*(l-n)}function Ja(r,e){const t=new Xe(r,!1);for(const s of t.instructions)e.instructions.push(s)}function mf(r,e){if(typeof r=="string"){const o=document.createElement("div");o.innerHTML=r.trim(),r=o.querySelector("svg")}const t={context:e,defs:{},path:new Xe};lf(r,t);const s=r.children,{fillStyle:i,strokeStyle:a}=el(r,t);for(let o=0;o<s.length;o++){const n=s[o];n.nodeName.toLowerCase()!=="defs"&&tl(n,t,i,a)}return e}function tl(r,e,t,s){const i=r.children,{fillStyle:a,strokeStyle:o}=el(r,e);a&&t?t={...t,...a}:a&&(t=a),o&&s?s={...s,...o}:o&&(s=o);const n=!t&&!s;n&&(t={color:0});let l,h,c,u,f,d,m,p,w,A,_,x,y,g,S,k,v;switch(r.nodeName.toLowerCase()){case"path":{g=r.getAttribute("d");const P=r.getAttribute("fill-rule"),z=df(g),b=P==="evenodd",D=z.length>1;if(b&&D){const E=z.map(C=>({path:C,area:ff(C)}));if(E.sort((C,T)=>T.area-C.area),z.length>3||!uf(E))for(let C=0;C<E.length;C++){const T=E[C],F=C===0;e.context.beginPath();const B=new Xe(void 0,!0);Ja(T.path,B),e.context.path(B),F?(t&&e.context.fill(t),s&&e.context.stroke(s)):e.context.cut()}else for(let C=0;C<E.length;C++){const T=E[C],F=C%2===1;e.context.beginPath();const B=new Xe(void 0,!0);Ja(T.path,B),e.context.path(B),F?e.context.cut():(t&&e.context.fill(t),s&&e.context.stroke(s))}}else{const E=P?P==="evenodd":!0;S=new Xe(g,E),e.context.path(S),t&&e.context.fill(t),s&&e.context.stroke(s)}break}case"circle":m=ne(r,"cx",0),p=ne(r,"cy",0),w=ne(r,"r",0),e.context.ellipse(m,p,w,w),t&&e.context.fill(t),s&&e.context.stroke(s);break;case"rect":l=ne(r,"x",0),h=ne(r,"y",0),k=ne(r,"width",0),v=ne(r,"height",0),A=ne(r,"rx",0),_=ne(r,"ry",0),A||_?e.context.roundRect(l,h,k,v,A||_):e.context.rect(l,h,k,v),t&&e.context.fill(t),s&&e.context.stroke(s);break;case"ellipse":m=ne(r,"cx",0),p=ne(r,"cy",0),A=ne(r,"rx",0),_=ne(r,"ry",0),e.context.beginPath(),e.context.ellipse(m,p,A,_),t&&e.context.fill(t),s&&e.context.stroke(s);break;case"line":c=ne(r,"x1",0),u=ne(r,"y1",0),f=ne(r,"x2",0),d=ne(r,"y2",0),e.context.beginPath(),e.context.moveTo(c,u),e.context.lineTo(f,d),s&&e.context.stroke(s);break;case"polygon":y=r.getAttribute("points"),x=y.match(/-?\d+/g).map(P=>parseInt(P,10)),e.context.poly(x,!0),t&&e.context.fill(t),s&&e.context.stroke(s);break;case"polyline":y=r.getAttribute("points"),x=y.match(/-?\d+/g).map(P=>parseInt(P,10)),e.context.poly(x,!1),s&&e.context.stroke(s);break;case"g":case"svg":break;default:{j(`[SVG parser] <${r.nodeName}> elements unsupported`);break}}n&&(t=null);for(let P=0;P<i.length;P++)tl(i[P],e,t,s)}function pf(r){return r.texture!==void 0}const $a={repeat:{addressModeU:"repeat",addressModeV:"repeat"},"repeat-x":{addressModeU:"repeat",addressModeV:"clamp-to-edge"},"repeat-y":{addressModeU:"clamp-to-edge",addressModeV:"repeat"},"no-repeat":{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}};class as{constructor(e,t){this.uid=q("fillPattern"),this._tick=0,this.transform=new H;const s=pf(e)?e:{texture:e,repetition:t};this.texture=s.texture,this.textureSpace=s.textureSpace??"global";const i=s.repetition;i&&(this.texture.source.style.addressModeU=$a[i].addressModeU,this.texture.source.style.addressModeV=$a[i].addressModeV)}setTransform(e){if(e){if(this.transform.equals(e))return;this.transform.copyFrom(e)}else{if(this.transform.isIdentity())return;this.transform.identity()}this._tick++}get texture(){return this._texture}set texture(e){this._texture!==e&&(this._texture=e,this._tick++)}get styleKey(){return`fill-pattern-${this.uid}-${this._tick}`}destroy(){this.texture.destroy(!0),this.texture=null}}function wf(r){return ee.isColorLike(r)}function eo(r){return r instanceof as}function to(r){return r instanceof Qe}function Af(r){return r instanceof L}function _f(r,e,t){const s=ee.shared.setValue(e??0);return r.color=s.toNumber(),r.alpha=s.alpha===1?t.alpha:s.alpha,r.texture=L.WHITE,{...t,...r}}function xf(r,e,t){return r.texture=e,{...t,...r}}function ro(r,e,t){return r.fill=e,r.color=16777215,r.texture=e.texture,r.matrix=e.transform,r.textureSpace=e.textureSpace,{...t,...r}}function so(r,e,t){return e.buildGradient(),r.fill=e,r.color=16777215,r.texture=e.texture,r.matrix=e.transform,r.textureSpace=e.textureSpace,{...t,...r}}function yf(r,e){const t={...e,...r},s=ee.shared.setValue(t.color);return t.alpha*=s.alpha,t.color=s.toNumber(),t}function pt(r,e){if(r==null)return null;const t={},s=r;return wf(r)?_f(t,r,e):Af(r)?xf(t,r,e):eo(r)?ro(t,r,e):to(r)?so(t,r,e):s.fill&&eo(s.fill)?ro(s,s.fill,e):s.fill&&to(s.fill)?so(s,s.fill,e):yf(s,e)}function Qr(r,e){const{width:t,alignment:s,miterLimit:i,cap:a,join:o,pixelLine:n,...l}=e,h=pt(r,l);return h?{width:t,alignment:s,miterLimit:i,cap:a,join:o,pixelLine:n,...h}:null}function gf(r,e){let t=1;const s=r.shapePath.shapePrimitives;for(let i=0;i<s.length;i++){const a=s[i].shape;if(a.type!=="polygon")continue;const o=a.points,n=o.length;if(n<6)continue;const l=a.closePath;for(let h=0;h<n;h+=2){if(!l&&(h===0||h===n-2))continue;const c=(h-2+n)%n,u=(h+2)%n,f=o[c],d=o[c+1],m=o[h],p=o[h+1],w=o[u],A=o[u+1],_=f-m,x=d-p,y=w-m,g=A-p,S=_*_+x*x,k=y*y+g*g;if(S<1e-12||k<1e-12)continue;let z=(_*y+x*g)/Math.sqrt(S*k);z<-1?z=-1:z>1&&(z=1);const b=Math.sqrt((1-z)*.5);if(b<1e-6)continue;const D=Math.min(1/b,e);D>t&&(t=D)}}return t}const Sf=new de,io=new H,Wi=class Re extends De{constructor(){super(...arguments),this._gpuData=Object.create(null),this.autoGarbageCollect=!0,this._gcLastUsed=-1,this.uid=q("graphicsContext"),this.dirty=!0,this.batchMode="auto",this.instructions=[],this.destroyed=!1,this._activePath=new Xe,this._transform=new H,this._fillStyle={...Re.defaultFillStyle},this._strokeStyle={...Re.defaultStrokeStyle},this._stateStack=[],this._tick=0,this._bounds=new be,this._boundsDirty=!0}clone(){const e=new Re;return e.batchMode=this.batchMode,e.instructions=this.instructions.slice(),e._activePath=this._activePath.clone(),e._transform=this._transform.clone(),e._fillStyle={...this._fillStyle},e._strokeStyle={...this._strokeStyle},e._stateStack=this._stateStack.slice(),e._bounds=this._bounds.clone(),e._boundsDirty=!0,e}get fillStyle(){return this._fillStyle}set fillStyle(e){this._fillStyle=pt(e,Re.defaultFillStyle)}get strokeStyle(){return this._strokeStyle}set strokeStyle(e){this._strokeStyle=Qr(e,Re.defaultStrokeStyle)}setFillStyle(e){return this._fillStyle=pt(e,Re.defaultFillStyle),this}setStrokeStyle(e){return this._strokeStyle=pt(e,Re.defaultStrokeStyle),this}texture(e,t,s,i,a,o){return this.instructions.push({action:"texture",data:{image:e,dx:s||0,dy:i||0,dw:a||e.frame.width,dh:o||e.frame.height,transform:this._transform.clone(),alpha:this._fillStyle.alpha,style:t||t===0?ee.shared.setValue(t).toNumber():16777215}}),this.onUpdate(),this}beginPath(){return this._activePath=new Xe,this}fill(e,t){let s;const i=this.instructions[this.instructions.length-1];return this._tick===0&&i?.action==="stroke"?s=i.data.path:s=this._activePath.clone(),s?(e!=null&&(t!==void 0&&typeof e=="number"&&(G(V,"GraphicsContext.fill(color, alpha) is deprecated, use GraphicsContext.fill({ color, alpha }) instead"),e={color:e,alpha:t}),this._fillStyle=pt(e,Re.defaultFillStyle)),this.instructions.push({action:"fill",data:{style:this.fillStyle,path:s}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}_initNextPathLocation(){const{x:e,y:t}=this._activePath.getLastPoint(de.shared);this._activePath.clear(),this._activePath.moveTo(e,t)}stroke(e){let t;const s=this.instructions[this.instructions.length-1];return this._tick===0&&s?.action==="fill"?t=s.data.path:t=this._activePath.clone(),t?(e!=null&&(this._strokeStyle=Qr(e,Re.defaultStrokeStyle)),this.instructions.push({action:"stroke",data:{style:this.strokeStyle,path:t}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}cut(){for(let e=0;e<2;e++){const t=this.instructions[this.instructions.length-1-e],s=this._activePath.clone();if(t&&(t.action==="stroke"||t.action==="fill"))if(t.data.hole)t.data.hole.addPath(s);else{t.data.hole=s;break}}return this._initNextPathLocation(),this}arc(e,t,s,i,a,o){this._tick++;const n=this._transform;return this._activePath.arc(n.a*e+n.c*t+n.tx,n.b*e+n.d*t+n.ty,s,i,a,o),this}arcTo(e,t,s,i,a){this._tick++;const o=this._transform;return this._activePath.arcTo(o.a*e+o.c*t+o.tx,o.b*e+o.d*t+o.ty,o.a*s+o.c*i+o.tx,o.b*s+o.d*i+o.ty,a),this}arcToSvg(e,t,s,i,a,o,n){this._tick++;const l=this._transform;return this._activePath.arcToSvg(e,t,s,i,a,l.a*o+l.c*n+l.tx,l.b*o+l.d*n+l.ty),this}bezierCurveTo(e,t,s,i,a,o,n){this._tick++;const l=this._transform;return this._activePath.bezierCurveTo(l.a*e+l.c*t+l.tx,l.b*e+l.d*t+l.ty,l.a*s+l.c*i+l.tx,l.b*s+l.d*i+l.ty,l.a*a+l.c*o+l.tx,l.b*a+l.d*o+l.ty,n),this}closePath(){return this._tick++,this._activePath?.closePath(),this}ellipse(e,t,s,i){return this._tick++,this._activePath.ellipse(e,t,s,i,this._transform.clone()),this}circle(e,t,s){return this._tick++,this._activePath.circle(e,t,s,this._transform.clone()),this}path(e){return this._tick++,this._activePath.addPath(e,this._transform.clone()),this}lineTo(e,t){this._tick++;const s=this._transform;return this._activePath.lineTo(s.a*e+s.c*t+s.tx,s.b*e+s.d*t+s.ty),this}moveTo(e,t){this._tick++;const s=this._transform,i=this._activePath.instructions,a=s.a*e+s.c*t+s.tx,o=s.b*e+s.d*t+s.ty;return i.length===1&&i[0].action==="moveTo"?(i[0].data[0]=a,i[0].data[1]=o,this):(this._activePath.moveTo(a,o),this)}quadraticCurveTo(e,t,s,i,a){this._tick++;const o=this._transform;return this._activePath.quadraticCurveTo(o.a*e+o.c*t+o.tx,o.b*e+o.d*t+o.ty,o.a*s+o.c*i+o.tx,o.b*s+o.d*i+o.ty,a),this}rect(e,t,s,i){return this._tick++,this._activePath.rect(e,t,s,i,this._transform.clone()),this}roundRect(e,t,s,i,a){return this._tick++,this._activePath.roundRect(e,t,s,i,a,this._transform.clone()),this}poly(e,t){return this._tick++,this._activePath.poly(e,t,this._transform.clone()),this}regularPoly(e,t,s,i,a=0,o){return this._tick++,this._activePath.regularPoly(e,t,s,i,a,o),this}roundPoly(e,t,s,i,a,o){return this._tick++,this._activePath.roundPoly(e,t,s,i,a,o),this}roundShape(e,t,s,i){return this._tick++,this._activePath.roundShape(e,t,s,i),this}filletRect(e,t,s,i,a){return this._tick++,this._activePath.filletRect(e,t,s,i,a),this}chamferRect(e,t,s,i,a,o){return this._tick++,this._activePath.chamferRect(e,t,s,i,a,o),this}star(e,t,s,i,a=0,o=0){return this._tick++,this._activePath.star(e,t,s,i,a,o,this._transform.clone()),this}svg(e){return this._tick++,mf(e,this),this}restore(){const e=this._stateStack.pop();return e&&(this._transform=e.transform,this._fillStyle=e.fillStyle,this._strokeStyle=e.strokeStyle),this}save(){return this._stateStack.push({transform:this._transform.clone(),fillStyle:{...this._fillStyle},strokeStyle:{...this._strokeStyle}}),this}getTransform(){return this._transform}resetTransform(){return this._transform.identity(),this}rotate(e){return this._transform.rotate(e),this}scale(e,t=e){return this._transform.scale(e,t),this}setTransform(e,t,s,i,a,o){return e instanceof H?(this._transform.set(e.a,e.b,e.c,e.d,e.tx,e.ty),this):(this._transform.set(e,t,s,i,a,o),this)}transform(e,t,s,i,a,o){return e instanceof H?(this._transform.append(e),this):(io.set(e,t,s,i,a,o),this._transform.append(io),this)}translate(e,t=e){return this._transform.translate(e,t),this}clear(){return this._activePath.clear(),this.instructions.length=0,this.resetTransform(),this.onUpdate(),this}onUpdate(){this._boundsDirty=!0,this.dirty=!0,this.emit("update",this,16)}get bounds(){if(!this._boundsDirty)return this._bounds;this._boundsDirty=!1;const e=this._bounds;e.clear();for(let t=0;t<this.instructions.length;t++){const s=this.instructions[t],i=s.action;if(i==="fill"){const a=s.data;e.addBounds(a.path.bounds)}else if(i==="texture"){const a=s.data;e.addFrame(a.dx,a.dy,a.dx+a.dw,a.dy+a.dh,a.transform)}if(i==="stroke"){const a=s.data,o=a.style.alignment;let n=a.style.width*(1-o);a.style.join==="miter"&&(n*=gf(a.path,a.style.miterLimit));const l=a.path.bounds;e.addFrame(l.minX-n,l.minY-n,l.maxX+n,l.maxY+n)}}return e.isValid||e.set(0,0,0,0),e}containsPoint(e){if(!this.bounds.containsPoint(e.x,e.y))return!1;const t=this.instructions;let s=!1;for(let i=0;i<t.length;i++){const a=t[i],o=a.data,n=o.path;if(!a.action||!n)continue;const l=o.style,h=n.shapePath.shapePrimitives;for(let c=0;c<h.length;c++){const u=h[c].shape;if(!l||!u)continue;const f=h[c].transform,d=f?f.applyInverse(e,Sf):e;if(a.action==="fill")s=u.contains(d.x,d.y);else{const p=l;s=u.strokeContains(d.x,d.y,p.width,p.alignment)}const m=o.hole;if(m){const p=m.shapePath?.shapePrimitives;if(p)for(let w=0;w<p.length;w++)p[w].shape.contains(d.x,d.y)&&(s=!1)}if(s)return!0}}return s}unload(){this.emit("unload",this);for(const e in this._gpuData)this._gpuData[e]?.destroy();this._gpuData=Object.create(null)}destroy(e=!1){if(this.destroyed)return;if(this.destroyed=!0,this._stateStack.length=0,this._transform=null,this.unload(),this.emit("destroy",this),this.removeAllListeners(),typeof e=="boolean"?e:e?.texture){const s=typeof e=="boolean"?e:e?.textureSource;this._fillStyle.texture&&(this._fillStyle.fill&&"uid"in this._fillStyle.fill?this._fillStyle.fill.destroy():this._fillStyle.texture.destroy(s)),this._strokeStyle.texture&&(this._strokeStyle.fill&&"uid"in this._strokeStyle.fill?this._strokeStyle.fill.destroy():this._strokeStyle.texture.destroy(s))}this._fillStyle=null,this._strokeStyle=null,this.instructions=null,this._activePath=null,this._bounds=null,this._stateStack=null,this.customShader=null,this._transform=null}};Wi.defaultFillStyle={color:16777215,alpha:1,texture:L.WHITE,matrix:null,fill:null,textureSpace:"local"};Wi.defaultStrokeStyle={width:1,color:16777215,alpha:1,alignment:.5,miterLimit:10,cap:"butt",join:"miter",texture:L.WHITE,matrix:null,fill:null,textureSpace:"local",pixelLine:!1};let ge=Wi;function ji(r,e=1){const t=Ht.RETINA_PREFIX?.exec(r);return t?parseFloat(t[1]):e}function Qi(r,e,t){r.label=t,r._sourceOrigin=t;const s=new L({source:r,label:t}),i=()=>{delete e.promiseCache[t],ce.has(t)&&ce.remove(t)};return s.source.once("destroy",()=>{e.promiseCache[t]&&(j("[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource."),i())}),s.once("destroy",()=>{r.destroyed||(j("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),i())}),s}const kf=".svg",bf="image/svg+xml",zf={extension:{type:M.LoadParser,priority:rt.Low,name:"loadSVG"},name:"loadSVG",id:"svg",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test(r){return Ot(r,bf)||Nt(r,kf)},async load(r,e,t){return e.data?.parseAsGraphicsContext??this.config.parseAsGraphicsContext?Pf(r):vf(r,e,t,this.config.crossOrigin)},unload(r){r.destroy(!0)}};async function vf(r,e,t,s){const i=await U.get().fetch(r),a=U.get().createImage();a.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(await i.text())}`,a.crossOrigin=s,await a.decode();const o=e.data?.width??a.width,n=e.data?.height??a.height,l=e.data?.resolution||ji(r),h=Math.ceil(o*l),c=Math.ceil(n*l),u=U.get().createCanvas(h,c),f=u.getContext("2d");f.imageSmoothingEnabled=!0,f.imageSmoothingQuality="high",f.drawImage(a,0,0,o*l,n*l);const{parseAsGraphicsContext:d,...m}=e.data??{},p=new Ft({resource:u,alphaMode:"premultiply-alpha-on-upload",resolution:l,...m});return Qi(p,t,r)}async function Pf(r){const t=await(await U.get().fetch(r)).text(),s=new ge;return s.svg(t),s}const Cf=`(function () {
|
|
242
|
+
'use strict';
|
|
243
|
+
|
|
244
|
+
const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";
|
|
245
|
+
async function checkImageBitmap() {
|
|
246
|
+
try {
|
|
247
|
+
if (typeof createImageBitmap !== "function") return false;
|
|
248
|
+
const response = await fetch(WHITE_PNG);
|
|
249
|
+
const imageBlob = await response.blob();
|
|
250
|
+
const imageBitmap = await createImageBitmap(imageBlob);
|
|
251
|
+
return imageBitmap.width === 1 && imageBitmap.height === 1;
|
|
252
|
+
} catch (_e) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
void checkImageBitmap().then((result) => {
|
|
257
|
+
self.postMessage(result);
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
})();
|
|
261
|
+
`;let Dt=null,bi=class{constructor(){Dt||(Dt=URL.createObjectURL(new Blob([Cf],{type:"application/javascript"}))),this.worker=new Worker(Dt)}};bi.revokeObjectURL=function(){Dt&&(URL.revokeObjectURL(Dt),Dt=null)};const Tf=`(function () {
|
|
262
|
+
'use strict';
|
|
263
|
+
|
|
264
|
+
async function loadImageBitmap(url, alphaMode) {
|
|
265
|
+
const response = await fetch(url);
|
|
266
|
+
if (!response.ok) {
|
|
267
|
+
throw new Error(\`[WorkerManager.loadImageBitmap] Failed to fetch \${url}: \${response.status} \${response.statusText}\`);
|
|
268
|
+
}
|
|
269
|
+
const imageBlob = await response.blob();
|
|
270
|
+
return alphaMode === "premultiplied-alpha" ? createImageBitmap(imageBlob, { premultiplyAlpha: "none" }) : createImageBitmap(imageBlob);
|
|
271
|
+
}
|
|
272
|
+
self.onmessage = async (event) => {
|
|
273
|
+
try {
|
|
274
|
+
const imageBitmap = await loadImageBitmap(event.data.data[0], event.data.data[1]);
|
|
275
|
+
self.postMessage({
|
|
276
|
+
data: imageBitmap,
|
|
277
|
+
uuid: event.data.uuid,
|
|
278
|
+
id: event.data.id
|
|
279
|
+
}, [imageBitmap]);
|
|
280
|
+
} catch (e) {
|
|
281
|
+
self.postMessage({
|
|
282
|
+
error: e,
|
|
283
|
+
uuid: event.data.uuid,
|
|
284
|
+
id: event.data.id
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
})();
|
|
290
|
+
`;let It=null;class rl{constructor(){It||(It=URL.createObjectURL(new Blob([Tf],{type:"application/javascript"}))),this.worker=new Worker(It)}}rl.revokeObjectURL=function(){It&&(URL.revokeObjectURL(It),It=null)};let ao=0,Ls;class Bf{constructor(){this._initialized=!1,this._createdWorkers=0,this._workerPool=[],this._queue=[],this._resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(e=>{const{worker:t}=new bi;t.addEventListener("message",s=>{t.terminate(),bi.revokeObjectURL(),e(s.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e,t){return this._run("loadImageBitmap",[e,t?.data?.alphaMode])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){Ls===void 0&&(Ls=navigator.hardwareConcurrency||4);let e=this._workerPool.pop();return!e&&this._createdWorkers<Ls&&(this._createdWorkers++,e=new rl().worker,e.addEventListener("message",t=>{this._complete(t.data),this._returnWorker(t.target),this._next()})),e}_returnWorker(e){this._workerPool.push(e)}_complete(e){this._resolveHash[e.uuid]&&(e.error!==void 0?this._resolveHash[e.uuid].reject(e.error):this._resolveHash[e.uuid].resolve(e.data),delete this._resolveHash[e.uuid])}async _run(e,t){await this._initWorkers();const s=new Promise((i,a)=>{this._queue.push({id:e,arguments:t,resolve:i,reject:a})});return this._next(),s}_next(){if(!this._queue.length)return;const e=this._getWorker();if(!e)return;const t=this._queue.pop(),s=t.id;this._resolveHash[ao]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:ao++,id:s})}reset(){this._workerPool.forEach(e=>e.terminate()),this._workerPool.length=0,Object.values(this._resolveHash).forEach(({reject:e})=>{e?.(new Error("WorkerManager has been reset before completion"))}),this._resolveHash={},this._queue.length=0,this._initialized=!1,this._createdWorkers=0}}const oo=new Bf,Mf=[".jpeg",".jpg",".png",".webp",".avif"],Ef=["image/jpeg","image/png","image/webp","image/avif"];async function Df(r,e){const t=await U.get().fetch(r);if(!t.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${r}: ${t.status} ${t.statusText}`);const s=await t.blob();return e?.data?.alphaMode==="premultiplied-alpha"?createImageBitmap(s,{premultiplyAlpha:"none"}):createImageBitmap(s)}const sl={name:"loadTextures",id:"texture",extension:{type:M.LoadParser,priority:rt.High,name:"loadTextures"},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(r){return Ot(r,Ef)||Nt(r,Mf)},async load(r,e,t){let s=null;globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await oo.isImageBitmapSupported()?s=await oo.loadImageBitmap(r,e):s=await Df(r,e):s=await new Promise((a,o)=>{s=U.get().createImage(),s.crossOrigin=this.config.crossOrigin,s.src=r,s.complete?a(s):(s.onload=()=>{a(s)},s.onerror=o)});const i=new Ft({resource:s,alphaMode:"premultiply-alpha-on-upload",resolution:e.data?.resolution||ji(r),...e.data});return Qi(i,t,r)},unload(r){r.destroy(!0)}},If=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"];let Fs,Hs;function Rf(r,e,t){t===void 0&&!e.startsWith("data:")?r.crossOrigin=Lf(e):t!==!1&&(r.crossOrigin=typeof t=="string"?t:"anonymous")}function Gf(r){return new Promise((e,t)=>{r.addEventListener("canplaythrough",s),r.addEventListener("error",i),r.load();function s(){a(),e()}function i(o){a(),t(o)}function a(){r.removeEventListener("canplaythrough",s),r.removeEventListener("error",i)}})}function Lf(r,e=globalThis.location){if(r.startsWith("data:"))return"";e||(e=globalThis.location);const t=new URL(r,document.baseURI);return t.hostname!==e.hostname||t.port!==e.port||t.protocol!==e.protocol?"anonymous":""}function Ff(){const r=[],e=[];for(const t of If){const s=sr.MIME_TYPES[t.substring(1)]||`video/${t.substring(1)}`;ss(s)&&(r.push(t),e.includes(s)||e.push(s))}return{validVideoExtensions:r,validVideoMime:e}}const Hf={name:"loadVideo",id:"video",extension:{type:M.LoadParser,name:"loadVideo"},test(r){if(!Fs||!Hs){const{validVideoExtensions:s,validVideoMime:i}=Ff();Fs=s,Hs=i}const e=Ot(r,Hs),t=Nt(r,Fs);return e||t},async load(r,e,t){const s={...sr.defaultOptions,resolution:e.data?.resolution||ji(r),alphaMode:e.data?.alphaMode||await an(),...e.data},i=document.createElement("video"),a={preload:s.autoLoad!==!1?"auto":void 0,"webkit-playsinline":s.playsinline!==!1?"":void 0,playsinline:s.playsinline!==!1?"":void 0,muted:s.muted===!0?"":void 0,loop:s.loop===!0?"":void 0,autoplay:s.autoPlay!==!1?"":void 0};Object.keys(a).forEach(l=>{const h=a[l];h!==void 0&&i.setAttribute(l,h)}),s.muted===!0&&(i.muted=!0),Rf(i,r,s.crossorigin);const o=document.createElement("source");let n;if(s.mime)n=s.mime;else if(r.startsWith("data:"))n=r.slice(5,r.indexOf(";"));else if(!r.startsWith("blob:")){const l=r.split("?")[0].slice(r.lastIndexOf(".")+1).toLowerCase();n=sr.MIME_TYPES[l]||`video/${l}`}return o.src=r,n&&(o.type=n),new Promise((l,h)=>{s.preload&&!s.autoPlay&&i.load(),i.addEventListener("canplay",c),i.addEventListener("error",u),o.addEventListener("error",u),i.appendChild(o);async function c(){const d=new sr({...s,resource:i});f(),e.data.preload&&await Gf(i),l(Qi(d,t,r))}function u(d){f(),h(d)}function f(){i.removeEventListener("canplay",c),i.removeEventListener("error",u),o.removeEventListener("error",u)}})},unload(r){r.destroy(!0)}},il={extension:{type:M.ResolveParser,name:"resolveTexture"},test:sl.test,parse:r=>({resolution:parseFloat(Ht.RETINA_PREFIX.exec(r)?.[1]??"1"),format:r.split(".").pop(),src:r})},Of={extension:{type:M.ResolveParser,priority:-2,name:"resolveJson"},test:r=>Ht.RETINA_PREFIX.test(r)&&r.endsWith(".json"),parse:il.parse};class Nf{constructor(){this._detections=[],this._initialized=!1,this.resolver=new Ht,this.loader=new cu,this.cache=ce,this._backgroundLoader=new tu(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){if(this._initialized){j("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let a=e.manifest;typeof a=="string"&&(a=await this.load(a)),this.resolver.addManifest(a)}const t=e.texturePreference?.resolution??1,s=typeof t=="number"?[t]:t,i=await this._detectFormats({preferredFormats:e.texturePreference?.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:i,resolution:s}}),e.preferences&&this.setPreferences(e.preferences),e.loadOptions&&(this.loader.loadOptions={...this.loader.loadOptions,...e.loadOptions})}add(e){this.resolver.add(e)}async load(e,t){this._initialized||await this.init();const s=Nr(e),i=Me(e).map(n=>{if(typeof n!="string"){const l=this.resolver.getAlias(n);return l.some(h=>!this.resolver.hasKey(h))&&this.add(n),Array.isArray(l)?l[0]:l}return this.resolver.hasKey(n)||this.add({alias:n,src:n}),n}),a=this.resolver.resolve(i),o=await this._mapLoadToResolve(a,t);return s?o[i[0]]:o}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let s=!1;typeof e=="string"&&(s=!0,e=[e]);const i=this.resolver.resolveBundle(e),a={},o=Object.keys(i);let n=0;const l=[],h=()=>{t?.(l.reduce((u,f)=>u+f,0)/n)},c=o.map((u,f)=>{const d=i[u],m=Object.values(d),w=[...new Set(m.flat())].reduce((A,_)=>A+(_.progressSize||1),0);return l.push(0),n+=w,this._mapLoadToResolve(d,A=>{l[f]=A*w,h()}).then(A=>{a[u]=A})});return await Promise.all(c),s?a[e[0]]:a}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(s=>{this._backgroundLoader.add(Object.values(s))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return ce.get(e);const t={};for(let s=0;s<e.length;s++)t[s]=ce.get(e[s]);return t}async _mapLoadToResolve(e,t){const s=[...new Set(Object.values(e))];this._backgroundLoader.active=!1;const i=await this.loader.load(s,t);this._backgroundLoader.active=!0;const a={};return s.forEach(o=>{const n=i[o.src],l=[o.src];o.alias&&l.push(...o.alias),l.forEach(h=>{a[h]=n}),ce.set(l,n)}),a}async unload(e){this._initialized||await this.init();const t=Me(e).map(i=>typeof i!="string"?i.src:i),s=this.resolver.resolve(t);await this._unloadFromResolved(s)}async unloadBundle(e){this._initialized||await this.init(),e=Me(e);const t=this.resolver.resolveBundle(e),s=Object.keys(t).map(i=>this._unloadFromResolved(t[i]));await Promise.all(s)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(s=>{ce.remove(s.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const s of e.detections)e.skipDetections||await s.test()?t=await s.add(t):e.skipDetections||(t=await s.remove(t));return t=t.filter((s,i)=>t.indexOf(s)===i),t}get detections(){return this._detections}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(s=>s in e).forEach(s=>{t.config[s]=e[s]})})}}const wt=new Nf;Q.handleByList(M.LoadParser,wt.loader.parsers).handleByList(M.ResolveParser,wt.resolver.parsers).handleByList(M.CacheParser,wt.cache.parsers).handleByList(M.DetectionParser,wt.detections);Q.add(ru,iu,su,hu,ou,nu,lu,fu,wu,bu,zf,sl,Hf,eu,$c,il,Of);const no={loader:M.LoadParser,resolver:M.ResolveParser,cache:M.CacheParser,detection:M.DetectionParser};Q.handle(M.Asset,r=>{const e=r.ref;Object.entries(no).filter(([t])=>!!e[t]).forEach(([t,s])=>Q.add(Object.assign(e[t],{extension:e[t].extension??s})))},r=>{const e=r.ref;Object.keys(no).filter(t=>!!e[t]).forEach(t=>Q.remove(e[t]))});let St;function lo(r){const e=U.get().createCanvas(6,1),t=e.getContext("2d");return t.fillStyle=r,t.fillRect(0,0,6,1),e}function Uf(){if(St!==void 0)return St;try{const r=lo("#ff00ff"),e=lo("#ffff00"),s=U.get().createCanvas(6,1).getContext("2d");s.globalCompositeOperation="multiply",s.drawImage(r,0,0),s.drawImage(e,2,0);const i=s.getImageData(2,0,1,1);if(!i)St=!1;else{const a=i.data;St=a[0]===255&&a[1]===0&&a[2]===0}}catch{St=!1}return St}const Y={canvas:null,convertTintToImage:!1,cacheStepsPerColorChannel:8,canUseMultiply:Uf(),tintMethod:null,_canvasSourceCache:new WeakMap,_unpremultipliedCache:new WeakMap,getCanvasSource:r=>{const e=r.source,t=e?.resource;if(!t)return null;const s=e.alphaMode==="premultiplied-alpha",i=e.resourceWidth??e.pixelWidth,a=e.resourceHeight??e.pixelHeight,o=i!==e.pixelWidth||a!==e.pixelHeight;if(s){if((t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas)&&!o)return t;const n=Y._unpremultipliedCache.get(e);if(n?.resourceId===e._resourceId)return n.canvas}if(t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array||t instanceof Uint16Array||t instanceof Int16Array||t instanceof Uint32Array||t instanceof Int32Array||t instanceof Float32Array||t instanceof ArrayBuffer){const n=Y._canvasSourceCache.get(e);if(n?.resourceId===e._resourceId)return n.canvas;const l=U.get().createCanvas(e.pixelWidth,e.pixelHeight),h=l.getContext("2d"),c=h.createImageData(e.pixelWidth,e.pixelHeight),u=c.data,f=t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(e.format==="bgra8unorm")for(let d=0;d<u.length&&d+3<f.length;d+=4)u[d]=f[d+2],u[d+1]=f[d+1],u[d+2]=f[d],u[d+3]=f[d+3];else u.set(f.subarray(0,u.length));return h.putImageData(c,0,0),Y._canvasSourceCache.set(e,{canvas:l,resourceId:e._resourceId}),l}if(s){const n=U.get().createCanvas(e.pixelWidth,e.pixelHeight),l=n.getContext("2d",{willReadFrequently:!0});n.width=e.pixelWidth,n.height=e.pixelHeight,l.drawImage(t,0,0);const h=l.getImageData(0,0,n.width,n.height),c=h.data;for(let u=0;u<c.length;u+=4){const f=c[u+3];if(f>0){const d=255/f;c[u]=Math.min(255,c[u]*d+.5),c[u+1]=Math.min(255,c[u+1]*d+.5),c[u+2]=Math.min(255,c[u+2]*d+.5)}}return l.putImageData(h,0,0),Y._unpremultipliedCache.set(e,{canvas:n,resourceId:e._resourceId}),n}if(o){const n=Y._canvasSourceCache.get(e);if(n?.resourceId===e._resourceId)return n.canvas;const l=U.get().createCanvas(e.pixelWidth,e.pixelHeight),h=l.getContext("2d");return l.width=e.pixelWidth,l.height=e.pixelHeight,h.drawImage(t,0,0),Y._canvasSourceCache.set(e,{canvas:l,resourceId:e._resourceId}),l}return t},getTintedCanvas:(r,e)=>{const t=r.texture,s=ee.shared.setValue(e).toHex(),i=t.tintCache||(t.tintCache={}),a=i[s],o=t.source._resourceId;if(a?.tintId===o)return a;const n=a&&"getContext"in a?a:U.get().createCanvas();return Y.tintMethod(t,e,n),n.tintId=o,i[s]=n,i[s]},getTintedPattern:(r,e)=>{const t=ee.shared.setValue(e).toHex(),s=r.patternCache||(r.patternCache={}),i=r.source._resourceId;let a=s[t];return a?.tintId===i||(Y.canvas||(Y.canvas=U.get().createCanvas()),Y.tintMethod(r,e,Y.canvas),a=Y.canvas.getContext("2d").createPattern(Y.canvas,"repeat"),a.tintId=i,s[t]=a),a},applyPatternTransform:(r,e,t=!0)=>{if(!e)return;const s=r;if(!s.setTransform)return;const i=globalThis.DOMMatrix;if(!i)return;const a=new i([e.a,e.b,e.c,e.d,e.tx,e.ty]);s.setTransform(t?a.inverse():a)},tintWithMultiply:(r,e,t)=>{const s=t.getContext("2d"),i=r.frame.clone(),a=r.source._resolution??r.source.resolution??1,o=r.rotate;i.x*=a,i.y*=a,i.width*=a,i.height*=a;const n=N.isVertical(o),l=n?i.height:i.width,h=n?i.width:i.height;t.width=Math.ceil(l),t.height=Math.ceil(h),s.save(),e!==16777215&&(s.fillStyle=ee.shared.setValue(e).toHex(),s.fillRect(0,0,l,h),s.globalCompositeOperation="multiply");const c=Y.getCanvasSource(r);if(!c){s.restore();return}o&&Y._applyInverseRotation(s,o,i.width,i.height),s.drawImage(c,i.x,i.y,i.width,i.height,0,0,i.width,i.height),e!==16777215&&(s.globalCompositeOperation="destination-atop",s.drawImage(c,i.x,i.y,i.width,i.height,0,0,i.width,i.height)),s.restore()},tintWithOverlay:(r,e,t)=>{const s=t.getContext("2d"),i=r.frame.clone(),a=r.source._resolution??r.source.resolution??1,o=r.rotate;i.x*=a,i.y*=a,i.width*=a,i.height*=a;const n=N.isVertical(o),l=n?i.height:i.width,h=n?i.width:i.height;t.width=Math.ceil(l),t.height=Math.ceil(h),s.save(),s.globalCompositeOperation="copy",s.fillStyle=ee.shared.setValue(e).toHex(),s.fillRect(0,0,l,h),s.globalCompositeOperation="destination-atop";const c=Y.getCanvasSource(r);if(!c){s.restore();return}o&&Y._applyInverseRotation(s,o,i.width,i.height),s.drawImage(c,i.x,i.y,i.width,i.height,0,0,i.width,i.height),s.restore()},tintWithPerPixel:(r,e,t)=>{const s=t.getContext("2d"),i=r.frame.clone(),a=r.source._resolution??r.source.resolution??1,o=r.rotate;i.x*=a,i.y*=a,i.width*=a,i.height*=a;const n=N.isVertical(o),l=n?i.height:i.width,h=n?i.width:i.height;t.width=Math.ceil(l),t.height=Math.ceil(h),s.save(),s.globalCompositeOperation="copy";const c=Y.getCanvasSource(r);if(!c){s.restore();return}o&&Y._applyInverseRotation(s,o,i.width,i.height),s.drawImage(c,i.x,i.y,i.width,i.height,0,0,i.width,i.height),s.restore();const u=e>>16&255,f=e>>8&255,d=e&255,m=s.getImageData(0,0,l,h),p=m.data;for(let w=0;w<p.length;w+=4)p[w]=p[w]*u/255,p[w+1]=p[w+1]*f/255,p[w+2]=p[w+2]*d/255;s.putImageData(m,0,0)},_applyInverseRotation:(r,e,t,s)=>{const i=N.inv(e),a=N.uX(i),o=N.uY(i),n=N.vX(i),l=N.vY(i),h=-Math.min(0,a*t,n*s,a*t+n*s),c=-Math.min(0,o*t,l*s,o*t+l*s);r.transform(a,o,n,l,h,c)}};Y.tintMethod=Y.canUseMultiply?Y.tintWithMultiply:Y.tintWithPerPixel;const Os=32767;function ho(r,e){return(r<<17)+(e<<2)}class Xf{constructor(e){this._buckets=new Map,this._screens=new qo,this._enableFullScreen=!1,this.canvasOptions=e||{}}get enableFullScreen(){return G(Je,"CanvasPool.enableFullScreen is no longer used, the pool sizes canvases to the screens registered with setScreenSize."),this._enableFullScreen}set enableFullScreen(e){G(Je,"CanvasPool.enableFullScreen is no longer used, the pool sizes canvases to the screens registered with setScreenSize."),this._enableFullScreen=e}_createCanvasAndContext(e,t){const s=U.get().createCanvas();s.width=e,s.height=t;const i=s.getContext("2d");return{canvas:s,context:i}}getOptimalCanvasAndContext(e,t,s=1){const{width:i,height:a}=this.getOptimalSize(e,t,s);(i>Os||a>Os)&&j(`CanvasPool: ${i}x${a} is larger than the ${Os}px pool key limit, canvases of this size may be pooled together`);const o=ho(i,a);let n=this._buckets.get(o);n||(n=[],this._buckets.set(o,n));let l=n.pop();return l||(l=this._createCanvasAndContext(i,a)),l}getOptimalSize(e,t,s=1){const i=Math.ceil(e*s-1e-6),a=Math.ceil(t*s-1e-6),o=Rt(i),n=this._screens.getFittingWidth(i),l=Rt(a),h=this._screens.getFittingHeight(a);return{width:n!==void 0?Math.min(n,o):o,height:h!==void 0?Math.min(h,l):l}}returnCanvasAndContext(e){const t=e.canvas,{width:s,height:i}=t,a=this._buckets.get(ho(s,i));a&&(e.context.resetTransform(),e.context.clearRect(0,0,s,i),a.push(e))}setScreenSize(e,t,s){this._screens.set(e,t,s)&&this._pruneScreenCanvases()}removeScreen(e){this._screens.remove(e)&&this._pruneScreenCanvases()}clear(){this._buckets.clear()}_pruneScreenCanvases(){for(const[e]of this._buckets){const t=e>>>17,s=e>>>2&32767;(Gt(t)||this._screens.hasWidth(t))&&(Gt(s)||this._screens.hasHeight(s))||this._buckets.delete(e)}}}const zi=new Xf;mr.register(zi);const Wf=new be;function jf(r,e,t,s,i=!1,a){const o=Wf;o.minX=0,o.minY=0,o.maxX=r.width/s|0,o.maxY=r.height/s|0;const n=Jr.getOptimalTexture({width:o.width,height:o.height,resolution:s,autoGenerateMipmaps:i,scaleMode:a});return n.source.uploadMethodId="image",n.source.resource=r,n.source.alphaMode="premultiply-alpha-on-upload",n.frame.width=e/s,n.frame.height=t/s,n.source.emit("update",n.source),n.updateUvs(),n}class Qf{constructor(){this.isBatchable=!1}reset(){this.isBatchable=!1,this.context=null,this.graphicsData&&(this.graphicsData.destroy(),this.graphicsData=null)}destroy(){this.reset()}}class Yf{constructor(){this.instructions=new Ri}init(){this.instructions.reset()}destroy(){this.instructions.destroy(),this.instructions=null}}const Yi=class vi{constructor(e){this._renderer=e,this._managedContexts=new Ut({renderer:e,type:"resource",name:"graphicsContext"})}init(e){vi.defaultOptions.bezierSmoothness=e?.bezierSmoothness??vi.defaultOptions.bezierSmoothness}getContextRenderData(e){return this.getGpuContext(e).graphicsData||this._initContextRenderData(e)}updateGpuContext(e){const t=e._gpuData,s=!!t[this._renderer.uid],i=t[this._renderer.uid]||this._initContext(e);return(e.dirty||!s)&&(s&&i.reset(),i.isBatchable=!1,e.dirty=!1),i}getGpuContext(e){return e._gpuData[this._renderer.uid]||this._initContext(e)}_initContextRenderData(e){const t=new Yf,s=this.getGpuContext(e);return s.graphicsData=t,t.init(),t}_initContext(e){const t=new Qf;return t.context=e,e._gpuData[this._renderer.uid]=t,this._managedContexts.add(e),t}destroy(){this._managedContexts.destroy(),this._renderer=null}};Yi.extension={type:[M.CanvasSystem],name:"graphicsContext"};Yi.defaultOptions={bezierSmoothness:.5};let Vf=Yi;class al{constructor(e,t){this.state=xn.for2d(),this.renderer=e,this._adaptor=t,this.renderer.runners.contextChange.add(this),this._managedGraphics=new Ut({renderer:e,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(e){return!1}addRenderable(e,t){this._managedGraphics.add(e),this.renderer.renderPipes.batch.break(t),t.add(e)}updateRenderable(e){}execute(e){e.isRenderable&&this._adaptor.execute(this,e)}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null}}al.extension={type:[M.CanvasPipes],name:"graphics"};function qf(r,e,t){const s=(r>>24&255)/255;e[t++]=(r&255)/255*s,e[t++]=(r>>8&255)/255*s,e[t++]=(r>>16&255)/255*s,e[t++]=s}class Kf{constructor(){this.batches=[],this.batched=!1}destroy(){this.batches.forEach(e=>{pe.return(e)}),this.batches.length=0}}class ol{constructor(e,t){this.state=xn.for2d(),this.renderer=e,this._adaptor=t,this.renderer.runners.contextChange.add(this),this._managedGraphics=new Ut({renderer:e,type:"renderable",priority:-1,name:"graphics"})}contextChange(){this._adaptor.contextChange(this.renderer)}validateRenderable(e){const t=e.context,s=!!e._gpuData,a=this.renderer.graphicsContext.updateGpuContext(t);return!!(a.isBatchable||s!==a.isBatchable)}addRenderable(e,t){const i=this.renderer.graphicsContext.updateGpuContext(e.context);(e.didViewUpdate||!e._gpuData[this.renderer.uid])&&this._rebuild(e),i.isBatchable?this._addToBatcher(e,t):(this.renderer.renderPipes.batch.break(t),t.add(e))}updateRenderable(e){const s=this._getGpuDataForRenderable(e).batches;for(let i=0;i<s.length;i++){const a=s[i];a._batcher.updateElement(a)}}execute(e){if(!e.isRenderable)return;const t=this.renderer,s=e.context;if(!t.graphicsContext.getGpuContext(s).batches.length)return;const a=s.customShader||this._adaptor.shader;this.state.blendMode=e.groupBlendMode;const o=a.resources.localUniforms.uniforms;o.uTransformMatrix=e.groupTransform,o.uRound=t._roundPixels|e._roundPixels,qf(e.groupColorAlpha,o.uColor,0),this._adaptor.execute(this,e)}_rebuild(e){const t=this._getGpuDataForRenderable(e),i=this.renderer.graphicsContext.updateGpuContext(e.context);t.destroy(),i.isBatchable&&this._updateBatchesForRenderable(e,t)}_addToBatcher(e,t){const s=this.renderer.renderPipes.batch,i=this._getGpuDataForRenderable(e).batches;for(let a=0;a<i.length;a++){const o=i[a];s.addToBatch(o,t)}}_getGpuDataForRenderable(e){return e._gpuData[this.renderer.uid]||this._initGpuDataForRenderable(e)}_initGpuDataForRenderable(e){const t=new Kf;return e._gpuData[this.renderer.uid]=t,this._managedGraphics.add(e),t}_updateBatchesForRenderable(e,t){const s=e.context,a=this.renderer.graphicsContext.getGpuContext(s),o=this.renderer._roundPixels|e._roundPixels;t.batches=a.batches.map(n=>{const l=pe.get(Oi);return n.copyTo(l),l.renderable=e,l.roundPixels=o,l})}destroy(){this._managedGraphics.destroy(),this.renderer=null,this._adaptor.destroy(),this._adaptor=null,this.state=null}}ol.extension={type:[M.WebGLPipes,M.WebGPUPipes],name:"graphics"};Q.add(al);Q.add(ol);Q.add(Vf);Q.add(Xi);class We extends $r{constructor(e){e instanceof ge&&(e={context:e});const{context:t,roundPixels:s,...i}=e||{};super({label:"Graphics",...i}),this.renderPipeId="graphics",t?this.context=t:(this.context=this._ownedContext=new ge,this.context.autoGarbageCollect=this.autoGarbageCollect),this.didViewUpdate=!0,this.allowChildren=!1,this.roundPixels=s??!1}set context(e){e!==this._context&&(this._context&&(this._context.off("update",this.onViewUpdate,this),this._context.off("unload",this.unload,this)),this._context=e,this._context.on("update",this.onViewUpdate,this),this._context.on("unload",this.unload,this),this.onViewUpdate())}get context(){return this._context}get bounds(){return this._context.bounds}updateBounds(){}containsPoint(e){return this._context.containsPoint(e)}destroy(e){this._ownedContext&&!e?this._ownedContext.destroy(e):(e===!0||e?.context===!0)&&this._context.destroy(e),this._context?.off("update",this.onViewUpdate,this),this._context?.off("unload",this.unload,this),this._ownedContext=null,this._context=null,super.destroy(e)}_onTouch(e){this._gcLastUsed=e,this._context._gcLastUsed=e}_callContextMethod(e,t){return this.context[e](...t),this}setFillStyle(...e){return this._callContextMethod("setFillStyle",e)}setStrokeStyle(...e){return this._callContextMethod("setStrokeStyle",e)}fill(...e){return this._callContextMethod("fill",e)}stroke(...e){return this._callContextMethod("stroke",e)}texture(...e){return this._callContextMethod("texture",e)}beginPath(){return this._callContextMethod("beginPath",[])}cut(){return this._callContextMethod("cut",[])}arc(...e){return this._callContextMethod("arc",e)}arcTo(...e){return this._callContextMethod("arcTo",e)}arcToSvg(...e){return this._callContextMethod("arcToSvg",e)}bezierCurveTo(...e){return this._callContextMethod("bezierCurveTo",e)}closePath(){return this._callContextMethod("closePath",[])}ellipse(...e){return this._callContextMethod("ellipse",e)}circle(...e){return this._callContextMethod("circle",e)}path(...e){return this._callContextMethod("path",e)}lineTo(...e){return this._callContextMethod("lineTo",e)}moveTo(...e){return this._callContextMethod("moveTo",e)}quadraticCurveTo(...e){return this._callContextMethod("quadraticCurveTo",e)}rect(...e){return this._callContextMethod("rect",e)}roundRect(...e){return this._callContextMethod("roundRect",e)}poly(...e){return this._callContextMethod("poly",e)}regularPoly(...e){return this._callContextMethod("regularPoly",e)}roundPoly(...e){return this._callContextMethod("roundPoly",e)}roundShape(...e){return this._callContextMethod("roundShape",e)}filletRect(...e){return this._callContextMethod("filletRect",e)}chamferRect(...e){return this._callContextMethod("chamferRect",e)}star(...e){return this._callContextMethod("star",e)}svg(...e){return this._callContextMethod("svg",e)}restore(...e){return this._callContextMethod("restore",e)}save(){return this._callContextMethod("save",[])}getTransform(){return this.context.getTransform()}resetTransform(){return this._callContextMethod("resetTransform",[])}rotateTransform(...e){return this._callContextMethod("rotate",e)}scaleTransform(...e){return this._callContextMethod("scale",e)}setTransform(...e){return this._callContextMethod("setTransform",e)}transform(...e){return this._callContextMethod("transform",e)}translateTransform(...e){return this._callContextMethod("translate",e)}clear(){return this._callContextMethod("clear",[])}get fillStyle(){return this._context.fillStyle}set fillStyle(e){this._context.fillStyle=e}get strokeStyle(){return this._context.strokeStyle}set strokeStyle(e){this._context.strokeStyle=e}clone(e=!1){return e?new We(this._context.clone()):(this._ownedContext=null,new We(this._context))}lineStyle(e,t,s){G(V,"Graphics#lineStyle is no longer needed. Use Graphics#setStrokeStyle to set the stroke style.");const i={};return e&&(i.width=e),t&&(i.color=t),s&&(i.alpha=s),this.context.strokeStyle=i,this}beginFill(e,t){G(V,"Graphics#beginFill is no longer needed. Use Graphics#fill to fill the shape with the desired style.");const s={};return e!==void 0&&(s.color=e),t!==void 0&&(s.alpha=t),this.context.fillStyle=s,this}endFill(){G(V,"Graphics#endFill is no longer needed. Use Graphics#fill to fill the shape with the desired style."),this.context.fill();const e=this.context.strokeStyle;return(e.width!==ge.defaultStrokeStyle.width||e.color!==ge.defaultStrokeStyle.color||e.alpha!==ge.defaultStrokeStyle.alpha)&&this.context.stroke(),this}drawCircle(...e){return G(V,"Graphics#drawCircle has been renamed to Graphics#circle"),this._callContextMethod("circle",e)}drawEllipse(...e){return G(V,"Graphics#drawEllipse has been renamed to Graphics#ellipse"),this._callContextMethod("ellipse",e)}drawPolygon(...e){return G(V,"Graphics#drawPolygon has been renamed to Graphics#poly"),this._callContextMethod("poly",e)}drawRect(...e){return G(V,"Graphics#drawRect has been renamed to Graphics#rect"),this._callContextMethod("rect",e)}drawRoundedRect(...e){return G(V,"Graphics#drawRoundedRect has been renamed to Graphics#roundRect"),this._callContextMethod("roundRect",e)}drawStar(...e){return G(V,"Graphics#drawStar has been renamed to Graphics#star"),this._callContextMethod("star",e)}}const nl=class ll extends Un{constructor(...e){let t=e[0]??{};t instanceof Float32Array&&(G(V,"use new MeshGeometry({ positions, uvs, indices }) instead"),t={positions:t,uvs:e[1],indices:e[2]}),t={...ll.defaultOptions,...t};const s=t.positions||new Float32Array([0,0,1,0,1,1,0,1]);let i=t.uvs;i||(t.positions?i=new Float32Array(s.length):i=new Float32Array([0,0,1,0,1,1,0,1]));const a=t.indices||new Uint32Array([0,1,2,0,2,3]),o=t.shrinkBuffersToFit,n=new et({data:s,label:"attribute-mesh-positions",shrinkToFit:o,usage:ae.VERTEX|ae.COPY_DST}),l=new et({data:i,label:"attribute-mesh-uvs",shrinkToFit:o,usage:ae.VERTEX|ae.COPY_DST}),h=new et({data:a,label:"index-mesh-buffer",shrinkToFit:o,usage:ae.INDEX|ae.COPY_DST});super({attributes:{aPosition:{buffer:n,format:"float32x2",stride:8,offset:0},aUV:{buffer:l,format:"float32x2",stride:8,offset:0}},indexBuffer:h,topology:t.topology}),this.batchMode="auto"}get positions(){return this.attributes.aPosition.buffer.data}set positions(e){this.attributes.aPosition.buffer.data=e}get uvs(){return this.attributes.aUV.buffer.data}set uvs(e){this.attributes.aUV.buffer.data=e}get indices(){return this.indexBuffer.data}set indices(e){this.indexBuffer.data=e}};nl.defaultOptions={topology:"triangle-list",shrinkBuffersToFit:!1};let Zf=nl;class Jf{constructor(){this.batcherName="default",this.packAsQuad=!1,this.indexOffset=0,this.attributeOffset=0,this.roundPixels=0,this._batcher=null,this._batch=null,this._textureMatrixUpdateId=-1,this._uvUpdateId=-1}get blendMode(){return this.renderable.groupBlendMode}get topology(){return this._topology||this.geometry.topology}set topology(e){this._topology=e}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.geometry=null,this._uvUpdateId=-1,this._textureMatrixUpdateId=-1}setTexture(e){this.texture!==e&&(this.texture=e,this._textureMatrixUpdateId=-1)}get uvs(){const t=this.geometry.getBuffer("aUV"),s=t.data;let i=s;const a=this.texture.textureMatrix;return a.isSimple||(i=this._transformedUvs,(this._textureMatrixUpdateId!==a._updateID||this._uvUpdateId!==t._updateID)&&((!i||i.length<s.length)&&(i=this._transformedUvs=new Float32Array(s.length)),this._textureMatrixUpdateId=a._updateID,this._uvUpdateId=t._updateID,a.multiplyUvs(s,i))),i}get positions(){return this.geometry.positions}get indices(){return this.geometry.indices}get color(){return this.renderable.groupColorAlpha}get groupTransform(){return this.renderable.groupTransform}get attributeSize(){return this.geometry.positions.length/2}get indexSize(){return this.geometry.indices.length}}class $f extends $r{constructor(e,t){const{text:s,resolution:i,style:a,anchor:o,width:n,height:l,roundPixels:h,...c}=e;super({...c}),this.batched=!0,this._resolution=null,this._autoResolution=!0,this._didTextUpdate=!0,this._styleClass=t,this.text=s??"",this.style=a,this.resolution=i??null,this.allowChildren=!1,this._anchor=new le({_onUpdate:()=>{this.onViewUpdate()}}),o&&(this.anchor=o),this.roundPixels=h??!1,n!==void 0&&(this.width=n),l!==void 0&&(this.height=l)}get anchor(){return this._anchor}set anchor(e){typeof e=="number"?this._anchor.set(e):this._anchor.copyFrom(e)}set text(e){e=e.toString(),this._text!==e&&(this._text=e,this.onViewUpdate())}get text(){return this._text}set resolution(e){this._autoResolution=e===null,this._resolution=e,this.onViewUpdate()}get resolution(){return this._resolution}get style(){return this._style}set style(e){e||(e={}),this._style?.off("update",this.onViewUpdate,this),e instanceof this._styleClass?this._style=e:this._style=new this._styleClass(e),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(e){this._setWidth(e,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(e){this._setHeight(e,this.bounds.height)}getSize(e){return e||(e={}),e.width=Math.abs(this.scale.x)*this.bounds.width,e.height=Math.abs(this.scale.y)*this.bounds.height,e}setSize(e,t){typeof e=="object"?(t=e.height??e.width,e=e.width):t??(t=e),e!==void 0&&this._setWidth(e,this.bounds.width),t!==void 0&&this._setHeight(t,this.bounds.height)}containsPoint(e){const t=this.bounds.width,s=this.bounds.height,i=-t*this.anchor.x;let a=0;return e.x>=i&&e.x<=i+t&&(a=-s*this.anchor.y,e.y>=a&&e.y<=a+s)}onViewUpdate(){this.didViewUpdate||(this._didTextUpdate=!0),super.onViewUpdate()}destroy(e=!1){this._style?.off("update",this.onViewUpdate,this),super.destroy(e),this.owner=null,this._bounds=null,this._anchor=null,(typeof e=="boolean"?e:e?.style)&&this._style.destroy(e),this._style=null,this._text=null}get styleKey(){return`${this._text}:${this._style.styleKey}:${this._resolution}`}}function e2(r,e){let t=r[0]??{};return(typeof t=="string"||r[1])&&(G(V,`use new ${e}({ text: "hi!", style }) instead`),t={text:t,style:r[1]}),t}let lt=null,Oe=null;function t2(r,e){lt||(lt=U.get().createCanvas(256,128),Oe=lt.getContext("2d",{willReadFrequently:!0}),Oe.globalCompositeOperation="copy",Oe.globalAlpha=1),(lt.width<r||lt.height<e)&&(lt.width=Rt(r),lt.height=Rt(e))}function co(r,e,t){for(let s=0,i=4*t*e;s<e;++s,i+=4)if(r[i+3]!==0)return!1;return!0}function uo(r,e,t,s,i){const a=4*e;for(let o=s,n=s*a+4*t;o<=i;++o,n+=a)if(r[n+3]!==0)return!1;return!0}function r2(...r){let e=r[0];e.canvas||(e={canvas:r[0],resolution:r[1]});const{canvas:t}=e,s=Math.min(e.resolution??1,1),i=e.width??t.width,a=e.height??t.height;let o=e.output;if(t2(i,a),!Oe)throw new TypeError("Failed to get canvas 2D context");Oe.drawImage(t,0,0,i,a,0,0,i*s,a*s);const l=Oe.getImageData(0,0,i,a).data;let h=0,c=0,u=i-1,f=a-1;for(;c<a&&co(l,i,c);)++c;if(c===a)return $.EMPTY;for(;co(l,i,f);)--f;for(;uo(l,i,h,c,f);)++h;for(;uo(l,i,u,c,f);)--u;return++u,++f,Oe.globalCompositeOperation="source-over",Oe.strokeRect(h,c,u-h,f-c),Oe.globalCompositeOperation="copy",o??(o=new $),o.set(h/s,c/s,(u-h)/s,(f-c)/s),o}class s2{constructor(e=0,t=0,s=!1){this.first=null,this.items=Object.create(null),this.last=null,this.max=e,this.resetTtl=s,this.size=0,this.ttl=t}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(e){if(this.has(e)){const t=this.items[e];delete this.items[e],this.size--,t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.first===t&&(this.first=t.next),this.last===t&&(this.last=t.prev)}return this}entries(e=this.keys()){const t=new Array(e.length);for(let s=0;s<e.length;s++){const i=e[s];t[s]=[i,this.get(i)]}return t}evict(e=!1){if(e||this.size>0){const t=this.first;delete this.items[t.key],--this.size===0?(this.first=null,this.last=null):(this.first=t.next,this.first.prev=null)}return this}expiresAt(e){let t;return this.has(e)&&(t=this.items[e].expiry),t}get(e){const t=this.items[e];if(t!==void 0){if(this.ttl>0&&t.expiry<=Date.now()){this.delete(e);return}return this.moveToEnd(t),t.value}}has(e){return e in this.items}moveToEnd(e){this.last!==e&&(e.prev!==null&&(e.prev.next=e.next),e.next!==null&&(e.next.prev=e.prev),this.first===e&&(this.first=e.next),e.prev=this.last,e.next=null,this.last!==null&&(this.last.next=e),this.last=e,this.first===null&&(this.first=e))}keys(){const e=new Array(this.size);let t=this.first,s=0;for(;t!==null;)e[s++]=t.key,t=t.next;return e}setWithEvicted(e,t,s=this.resetTtl){let i=null;if(this.has(e))this.set(e,t,!0,s);else{this.max>0&&this.size===this.max&&(i={...this.first},this.evict(!0));let a=this.items[e]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:e,prev:this.last,next:null,value:t};++this.size===1?this.first=a:this.last.next=a,this.last=a}return i}set(e,t,s=!1,i=this.resetTtl){let a=this.items[e];return s||a!==void 0?(a.value=t,s===!1&&i&&(a.expiry=this.ttl>0?Date.now()+this.ttl:this.ttl),this.moveToEnd(a)):(this.max>0&&this.size===this.max&&this.evict(!0),a=this.items[e]={expiry:this.ttl>0?Date.now()+this.ttl:this.ttl,key:e,prev:this.last,next:null,value:t},++this.size===1?this.first=a:this.last.next=a,this.last=a),this}values(e=this.keys()){const t=new Array(e.length);for(let s=0;s<e.length;s++)t[s]=this.get(e[s]);return t}}function i2(r=1e3,e=0,t=!1){if(isNaN(r)||r<0)throw new TypeError("Invalid max value");if(isNaN(e)||e<0)throw new TypeError("Invalid ttl value");if(typeof t!="boolean")throw new TypeError("Invalid resetTtl value");return new s2(r,e,t)}function hl(r){return!!r.tagStyles&&Object.keys(r.tagStyles).length>0}function cl(r){return r.includes("<")}function a2(r,e){return r.clone().assign(e)}function o2(r,e){const t=[],s=e.tagStyles;if(!hl(e)||!cl(r))return t.push({text:r,style:e}),t;const i=[e],a=[];let o="",n=0;for(;n<r.length;){const l=r[n];if(l==="<"){const h=r.indexOf(">",n);if(h===-1){o+=l,n++;continue}const c=r.indexOf("<",n+1);if(c!==-1&&c<h){o+=l,n++;continue}const u=r.slice(n+1,h);if(u.startsWith("/")){const f=u.slice(1).trim();if(a.length>0&&a[a.length-1]===f){o.length>0&&(t.push({text:o,style:i[i.length-1]}),o=""),i.pop(),a.pop(),n=h+1;continue}else{o+=r.slice(n,h+1),n=h+1;continue}}else{const f=u.trim();if(s[f]){o.length>0&&(t.push({text:o,style:i[i.length-1]}),o="");const d=i[i.length-1],m=a2(d,s[f]);i.push(m),a.push(f),n=h+1;continue}else{o+=r.slice(n,h+1),n=h+1;continue}}}else o+=l,n++}return o.length>0&&t.push({text:o,style:i[i.length-1]}),t}const n2=[10,13],l2=new Set(n2),h2=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288],c2=new Set(h2),u2=[9,32],d2=new Set(u2),f2=[45,8208,8211,8212,173],m2=new Set(f2),p2=/(\r\n|\r|\n)/,w2=/(?:\r\n|\r|\n)/;function Yr(r){return typeof r!="string"?!1:l2.has(r.charCodeAt(0))}function ke(r,e){return typeof r!="string"?!1:c2.has(r.charCodeAt(0))}function cx(r){return typeof r!="string"?!1:d2.has(r.charCodeAt(0))}function A2(r){return typeof r!="string"?!1:m2.has(r.charCodeAt(0))}function ul(r){return r==="normal"||r==="pre-line"}function dl(r){return r==="normal"}function Fe(r){if(typeof r!="string")return"";let e=r.length-1;for(;e>=0&&ke(r[e]);)e--;return e<r.length-1?r.slice(0,e+1):r}function fl(r){const e=[],t=[];if(typeof r!="string")return e;for(let s=0;s<r.length;s++){const i=r[s],a=r[s+1];if(ke(i)||Yr(i)){t.length>0&&(e.push(t.join("")),t.length=0),i==="\r"&&a===`
|
|
291
|
+
`?(e.push(`\r
|
|
292
|
+
`),s++):e.push(i);continue}t.push(i),A2(i)&&a&&!ke(a)&&!Yr(a)&&(e.push(t.join("")),t.length=0)}return t.length>0&&e.push(t.join("")),e}function ml(r,e,t,s){const i=t(r),a=[];for(let o=0;o<i.length;o++){let n=i[o],l=n,h=1;for(;i[o+h];){const c=i[o+h];if(!s(l,c,r,o,e))n+=c,l=c,h++;else break}o+=h-1,a.push(n)}return a}const _2=/\r\n|\r|\n/g;function x2(r,e,t,s,i,a,o,n,l){const h=o2(r,e);if(dl(e.whiteSpace))for(let E=0;E<h.length;E++){const O=h[E];h[E]={text:O.text.replace(_2," "),style:O.style}}const u=[];let f=[];for(const E of h){const O=E.text.split(p2);for(let C=0;C<O.length;C++){const T=O[C];T===`\r
|
|
293
|
+
`||T==="\r"||T===`
|
|
294
|
+
`?(u.push(f),f=[]):T.length>0&&f.push({text:T,style:E.style})}}(f.length>0||u.length===0)&&u.push(f);const d=t?y2(u,e,s,a,n,l):u,m=[],p=[],w=[],A=[],_=[];let x=0;const y=e._fontString,g=o(y);g.fontSize===0&&(g.fontSize=e.fontSize,g.ascent=e.fontSize);let S="",k=!!e.dropShadow,v=e._stroke?.width||0;for(const E of d){let O=0,C=g.ascent,T=g.descent,F="";for(const X of E){const K=X.style._fontString,Z=o(K);K!==S&&(s.font=K,S=K);const W=i(X.text,X.style.letterSpacing,s);O+=W,C=Math.max(C,Z.ascent),T=Math.max(T,Z.descent),F+=X.text;const J=X.style._stroke?.width||0;J>v&&(v=J),!k&&X.style.dropShadow&&(k=!0)}E.length===0&&(C=g.ascent,T=g.descent),m.push(O),p.push(C),w.push(T),_.push(F);const B=e.lineHeight||C+T;A.push(B+e.leading),x=Math.max(x,O)}const P=v,z=x+P+(e.dropShadow?e.dropShadow.distance:0);let b=0;for(let E=0;E<A.length;E++)b+=A[E];b=Math.max(b,A[0]+P);const D=b+(e.dropShadow?e.dropShadow.distance:0),I=e.lineHeight||g.fontSize;return{width:z,height:D,lines:_,lineWidths:m,lineHeight:I+e.leading,maxLineWidth:x,fontProperties:g,runsByLine:d,lineAscents:p,lineDescents:w,lineHeights:A,hasDropShadow:k}}function y2(r,e,t,s,i,a){const{letterSpacing:o,whiteSpace:n,wordWrapWidth:l,breakWords:h}=e,c=ul(n),u=l+o,f={};let d="";const m=(w,A)=>{const _=`${w}|${A.styleKey}`;let x=f[_];if(x===void 0){const y=A._fontString;y!==d&&(t.font=y,d=y),x=s(w,A.letterSpacing,t)+A.letterSpacing,f[_]=x}return x},p=[];for(const w of r){const A=g2(w),_=p.length,x=b=>{let D=0,I=b;do{const{token:E,style:O}=A[I];D+=m(E,O),I++}while(I<A.length&&A[I].continuesFromPrevious);return D},y=b=>{const D=[];let I=b;do D.push({token:A[I].token,style:A[I].style}),I++;while(I<A.length&&A[I].continuesFromPrevious);return D};let g=[],S=0,k=!c,v=null;const P=()=>{v&&v.text.length>0&&g.push(v),v=null},z=()=>{if(P(),g.length>0){const b=g[g.length-1];b.text=Fe(b.text),b.text.length===0&&g.pop()}p.push(g),g=[],S=0,k=!1};for(let b=0;b<A.length;b++){const{token:D,style:I,continuesFromPrevious:E}=A[b],O=m(D,I);if(c){const F=ke(D),B=v?.text[v.text.length-1]??g[g.length-1]?.text.slice(-1)??"",X=B?ke(B):!1;if(F&&X)continue}const C=!E,T=C?x(b):O;if(T>u&&C)if(S>0&&z(),h){const F=y(b);for(let B=0;B<F.length;B++){const X=F[B].token,K=F[B].style,Z=ml(X,h,a,i);for(const W of Z){const J=m(W,K);J+S>u&&z(),!v||v.style!==K?(P(),v={text:W,style:K}):v.text+=W,S+=J}}b+=F.length-1}else{const F=y(b);P(),p.push(F.map(B=>({text:B.token,style:B.style}))),k=!1,b+=F.length-1}else if(T+S>u&&C){if(ke(D)){k=!1;continue}z(),v={text:D,style:I},S=O}else if(E&&!h)!v||v.style!==I?(P(),v={text:D,style:I}):v.text+=D,S+=O;else{const F=ke(D);if(S===0&&F&&!k)continue;!v||v.style!==I?(P(),v={text:D,style:I}):v.text+=D,S+=O}}if(P(),g.length>0){const b=g[g.length-1];b.text=Fe(b.text),b.text.length===0&&g.pop()}(g.length>0||p.length===_)&&p.push(g)}return p}function g2(r){const e=[];let t=!1;for(const s of r){const i=fl(s.text);let a=!0;for(const o of i){const n=ke(o)||Yr(o),l=a&&t&&!n;e.push({token:o,style:s.style,continuesFromPrevious:l}),t=!n,a=!1}}return e}const S2={willReadFrequently:!0};function fo(r,e,t,s,i){let a=t[r];return typeof a!="number"&&(a=i(r,e,s)+e,t[r]=a),a}function k2(r,e,t,s,i,a,o){const n=t.getContext("2d",S2);n.font=e._fontString;let l=0,h="";const c=[],u=Object.create(null),{letterSpacing:f,whiteSpace:d}=e,m=ul(d),p=dl(d);let w=!m;const A=e.wordWrapWidth+f,_=fl(r);for(let y=0;y<_.length;y++){let g=_[y];if(Yr(g)){if(!p){c.push(Fe(h)),w=!m,h="",l=0;continue}g=" "}if(m){const k=ke(g),v=ke(h[h.length-1]);if(k&&v)continue}const S=fo(g,f,u,n,s);if(S>A)if(h!==""&&(c.push(Fe(h)),h="",l=0),i(g,e.breakWords)){const k=ml(g,e.breakWords,o,a);for(const v of k){const P=fo(v,f,u,n,s);P+l>A&&(c.push(Fe(h)),w=!1,h="",l=0),h+=v,l+=P}}else h.length>0&&(c.push(Fe(h)),h="",l=0),c.push(Fe(g)),w=!1,h="",l=0;else S+l>A&&(w=!1,c.push(Fe(h)),h="",l=0),(h.length>0||!ke(g)||w)&&(h+=g,l+=S)}const x=Fe(h);return x.length>0&&c.push(x),c.join(`
|
|
295
|
+
`)}const mo={willReadFrequently:!0},Ye=class R{static get experimentalLetterSpacingSupported(){let e=R._experimentalLetterSpacingSupported;if(e===void 0){const t=U.get().getCanvasRenderingContext2D().prototype;e=R._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,s,i,a,o,n,l,h,c){this.text=e,this.style=t,this.width=s,this.height=i,this.lines=a,this.lineWidths=o,this.lineHeight=n,this.maxLineWidth=l,this.fontProperties=h,c&&(this.runsByLine=c.runsByLine,this.lineAscents=c.lineAscents,this.lineDescents=c.lineDescents,this.lineHeights=c.lineHeights,this.hasDropShadow=c.hasDropShadow)}static measureText(e=" ",t,s=R._canvas,i=t.wordWrap){const a=`${e}-${t.styleKey}-wordWrap-${i}`;if(R._measurementCache.has(a))return R._measurementCache.get(a);if(hl(t)&&cl(e)){const y=x2(e,t,i,R._context,R._measureText,R._measureTextAdvance,R.measureFont,R.canBreakChars,R.wordWrapSplit),g=new R(e,t,y.width,y.height,y.lines,y.lineWidths,y.lineHeight,y.maxLineWidth,y.fontProperties,{runsByLine:y.runsByLine,lineAscents:y.lineAscents,lineDescents:y.lineDescents,lineHeights:y.lineHeights,hasDropShadow:y.hasDropShadow});return R._measurementCache.set(a,g),g}const n=t._fontString,l=R.measureFont(n);l.fontSize===0&&(l.fontSize=t.fontSize,l.ascent=t.fontSize,l.descent=0);const h=R._context;h.font=n;const u=(i?R._wordWrap(e,t,s):e).split(w2),f=new Array(u.length);let d=0;for(let y=0;y<u.length;y++){const g=R._measureText(u[y],t.letterSpacing,h);f[y]=g,d=Math.max(d,g)}const m=t._stroke?.width??0,p=t.lineHeight||l.fontSize,w=R._adjustWidthForStyle(d,t),A=Math.max(p,l.fontSize+m)+(u.length-1)*(p+t.leading),_=R._adjustHeightForStyle(A,t),x=new R(e,t,w,_,u,f,p+t.leading,d,l);return R._measurementCache.set(a,x),x}static _adjustWidthForStyle(e,t){const s=t._stroke?.width||0;let i=e+s;return t.dropShadow&&(i+=t.dropShadow.distance),i}static _adjustHeightForStyle(e,t){let s=e;return t.dropShadow&&(s+=t.dropShadow.distance),s}static _measureText(e,t,s){const{metricWidth:i,metrics:a,letterSpacingVal:o}=R._measureTextCore(e,t,s),n=-(a.actualBoundingBoxLeft??0);let h=(a.actualBoundingBoxRight??0)-n;return a.width>0&&(h+=o),Math.max(i,h)}static _measureTextAdvance(e,t,s){return R._measureTextCore(e,t,s).metricWidth}static _measureTextCore(e,t,s){let i=!1;R.experimentalLetterSpacingSupported&&(R.experimentalLetterSpacing?(s.letterSpacing=`${t}px`,s.textLetterSpacing=`${t}px`,i=!0):(s.letterSpacing="0px",s.textLetterSpacing="0px"));const a=s.measureText(e);let o=a.width,n=0;return o>0&&(i?n=-t:n=(R.graphemeSegmenter(e).length-1)*t,o+=n),{metricWidth:o,metrics:a,letterSpacingVal:n}}static _wordWrap(e,t,s=R._canvas){return k2(e,t,s,R._measureTextAdvance,R.canBreakWords,R.canBreakChars,R.wordWrapSplit)}static isBreakingSpace(e,t){return ke(e)}static canBreakWords(e,t){return t}static canBreakChars(e,t,s,i,a){return!0}static wordWrapSplit(e){return R.graphemeSegmenter(e)}static measureFont(e){if(R._fonts[e])return R._fonts[e];const t=R._context;t.font=e;const s=t.measureText(R.METRICS_STRING+R.BASELINE_SYMBOL),i=s.actualBoundingBoxAscent??0,a=s.actualBoundingBoxDescent??0,o={ascent:i,descent:a,fontSize:i+a};return R._fonts[e]=o,o}static clearMetrics(e=""){e?delete R._fonts[e]:R._fonts={}}static get _canvas(){if(!R.__canvas){let e;try{const t=new OffscreenCanvas(0,0);if(t.getContext("2d",mo)?.measureText)return R.__canvas=t,t;e=U.get().createCanvas()}catch{e=U.get().createCanvas()}e.width=e.height=10,R.__canvas=e}return R.__canvas}static get _context(){return R.__context||(R.__context=R._canvas.getContext("2d",mo)),R.__context}};Ye.METRICS_STRING="|ÉqÅ";Ye.BASELINE_SYMBOL="M";Ye.BASELINE_MULTIPLIER=1.4;Ye.HEIGHT_MULTIPLIER=2;Ye.graphemeSegmenter=(()=>{if(typeof Intl?.Segmenter=="function"){const r=new Intl.Segmenter;return e=>{const t=r.segment(e),s=[];let i=0;for(const a of t)s[i++]=a.segment;return s}}return r=>[...r]})();Ye.experimentalLetterSpacing=!1;Ye._fonts={};Ye._measurementCache=i2(1e3);let Ze=Ye;const b2=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function Pi(r){const e=typeof r.fontSize=="number"?`${r.fontSize}px`:r.fontSize;let t=r.fontFamily;Array.isArray(r.fontFamily)||(t=r.fontFamily.split(","));for(let s=t.length-1;s>=0;s--){let i=t[s].trim();!/([\"\'])[^\'\"]+\1/.test(i)&&!b2.includes(i)&&(i=`"${i}"`),t[s]=i}return`${r.fontStyle} ${r.fontVariant} ${r.fontWeight} ${e} ${t.join(",")}`}const po=1e5;function Mr(r,e,t,s=0,i=0,a=0){if(r.texture===L.WHITE&&!r.fill)return ee.shared.setValue(r.color).setAlpha(r.alpha??1).toHexa();if(r.fill){if(r.fill instanceof as){const o=r.fill,n=e.createPattern(o.texture.source.resource,"repeat");return Y.applyPatternTransform(n,o.transform,!1),n}else if(r.fill instanceof Qe){const o=r.fill,n=o.type==="linear",l=o.textureSpace==="local";let h=1,c=1;l&&t&&(h=t.width+s,c=t.height+s);let u,f=!1;if(n){const{start:d,end:m}=o;u=e.createLinearGradient(d.x*h+i,d.y*c+a,m.x*h+i,m.y*c+a),f=Math.abs(m.x-d.x)<Math.abs((m.y-d.y)*.1)}else{const{center:d,innerRadius:m,outerCenter:p,outerRadius:w}=o;u=e.createRadialGradient(d.x*h+i,d.y*c+a,m*h,p.x*h+i,p.y*c+a,w*h)}if(f&&l&&t){const d=t.lineHeight/c;for(let m=0;m<t.lines.length;m++){const p=(m*t.lineHeight+s/2)/c;o.colorStops.forEach(w=>{let A=p+w.offset*d;A=Math.max(0,Math.min(1,A)),u.addColorStop(Math.floor(A*po)/po,ee.shared.setValue(w.color).toHex())})}}else o.colorStops.forEach(d=>{u.addColorStop(d.offset,ee.shared.setValue(d.color).toHex())});return u}}else{const o=e.createPattern(r.texture.source.resource,"repeat"),n=r.matrix.copyTo(H.shared);return n.scale(r.texture.source.pixelWidth,r.texture.source.pixelHeight),o.setTransform(n),o}return j("FillStyle not recognised",r),"red"}const wo=new $;function kt(r){let e=0;for(let t=0;t<r.length;t++)r.charCodeAt(t)===32&&e++;return e}class z2{getCanvasAndContext(e){const{text:t,style:s,resolution:i=1}=e,a=s._getFinalPadding(),o=Ze.measureText(t||" ",s),n=Math.ceil(Math.ceil(Math.max(1,o.width)+a*2)*i),l=Math.ceil(Math.ceil(Math.max(1,o.height)+a*2)*i),h=zi.getOptimalCanvasAndContext(n,l);this._renderTextToCanvas(s,a,i,h,o);const c=s.trim?r2({canvas:h.canvas,width:n,height:l,resolution:1,output:wo}):wo.set(0,0,n,l);return{canvasAndContext:h,frame:c}}returnCanvasAndContext(e){zi.returnCanvasAndContext(e)}_renderTextToCanvas(e,t,s,i,a){if(a.runsByLine&&a.runsByLine.length>0){this._renderTaggedTextToCanvas(a,e,t,s,i);return}const{canvas:o,context:n}=i,l=Pi(e),h=a.lines,c=a.lineHeight,u=a.lineWidths,f=a.maxLineWidth,d=a.fontProperties,m=o.height;if(n.resetTransform(),n.scale(s,s),n.textBaseline=e.textBaseline,e._stroke?.width){const g=e._stroke;n.lineWidth=g.width,n.miterLimit=g.miterLimit,n.lineJoin=g.join,n.lineCap=g.cap}n.font=l;let p,w;const A=e.dropShadow?2:1,x=(e._stroke?.width??0)/2;let y=(c-d.fontSize)/2;c-d.fontSize<0&&(y=0);for(let g=0;g<A;++g){const S=e.dropShadow&&g===0,k=S?Math.ceil(Math.max(1,m)+t*2):0,v=k*s;if(S)this._setupDropShadow(n,e,s,v);else{const P=e._gradientBounds,z=e._gradientOffset;if(P){const b={width:P.width,height:P.height,lineHeight:P.height,lines:a.lines};this._setFillAndStrokeStyles(n,e,b,t,x,z?.x??0,z?.y??0)}else z?this._setFillAndStrokeStyles(n,e,a,t,x,z.x,z.y):this._setFillAndStrokeStyles(n,e,a,t,x);n.shadowColor="rgba(0,0,0,0)"}for(let P=0;P<h.length;P++){p=x,w=x+P*c+d.ascent+y,p+=this._getAlignmentOffset(u[P],f,e.align);let z=0;if(e.align==="justify"&&e.wordWrap&&P<h.length-1){const b=kt(h[P]);b>0&&(z=(f-u[P])/b)}e._stroke?.width&&this._drawLetterSpacing(h[P],e,i,p+t,w+t-k,!0,z),e._fill!==void 0&&this._drawLetterSpacing(h[P],e,i,p+t,w+t-k,!1,z)}}}_renderTaggedTextToCanvas(e,t,s,i,a){const{canvas:o,context:n}=a,{runsByLine:l,lineWidths:h,maxLineWidth:c,lineAscents:u,lineHeights:f,hasDropShadow:d}=e,m=o.height;n.resetTransform(),n.scale(i,i),n.textBaseline=t.textBaseline;const p=d?2:1;let w=t._stroke?.width??0;for(const x of l)for(const y of x){const g=y.style._stroke?.width??0;g>w&&(w=g)}const A=w/2,_=[];for(let x=0;x<l.length;x++){const y=l[x],g=[];for(const S of y){const k=Pi(S.style);n.font=k,g.push({width:Ze._measureText(S.text,S.style.letterSpacing,n),font:k})}_.push(g)}for(let x=0;x<p;++x){const y=d&&x===0,g=y?Math.ceil(Math.max(1,m)+s*2):0,S=g*i;y||(n.shadowColor="rgba(0,0,0,0)");let k=A;for(let v=0;v<l.length;v++){const P=l[v],z=h[v],b=u[v],D=f[v],I=_[v];let E=A;E+=this._getAlignmentOffset(z,c,t.align);let O=0;if(t.align==="justify"&&t.wordWrap&&v<l.length-1){let F=0;for(const B of P)F+=kt(B.text);F>0&&(O=(c-z)/F)}const C=k+b;let T=E+s;for(let F=0;F<P.length;F++){const B=P[F],{width:X,font:K}=I[F];if(n.font=K,n.textBaseline=B.style.textBaseline,B.style._stroke?.width){const W=B.style._stroke;if(n.lineWidth=W.width,n.miterLimit=W.miterLimit,n.lineJoin=W.join,n.lineCap=W.cap,y)if(B.style.dropShadow)this._setupDropShadow(n,B.style,i,S);else{const J=kt(B.text);T+=X+J*O;continue}else{const J=Ze.measureFont(K),we=B.style.lineHeight||J.fontSize,ze={width:X,height:we,lineHeight:we,lines:[B.text]};n.strokeStyle=Mr(W,n,ze,s*2,T-s,k)}this._drawLetterSpacing(B.text,B.style,a,T,C+s-g,!0,O)}const Z=kt(B.text);T+=X+Z*O}T=E+s;for(let F=0;F<P.length;F++){const B=P[F],{width:X,font:K}=I[F];if(n.font=K,n.textBaseline=B.style.textBaseline,B.style._fill!==void 0){if(y)if(B.style.dropShadow)this._setupDropShadow(n,B.style,i,S);else{const W=kt(B.text);T+=X+W*O;continue}else{const W=Ze.measureFont(K),J=B.style.lineHeight||W.fontSize,we={width:X,height:J,lineHeight:J,lines:[B.text]};n.fillStyle=Mr(B.style._fill,n,we,s*2,T-s,k)}this._drawLetterSpacing(B.text,B.style,a,T,C+s-g,!1,O)}const Z=kt(B.text);T+=X+Z*O}k+=D}}}_setFillAndStrokeStyles(e,t,s,i,a,o=0,n=0){if(e.fillStyle=t._fill?Mr(t._fill,e,s,i*2,o,n):null,t._stroke?.width){const l=a+i*2;e.strokeStyle=Mr(t._stroke,e,s,l,o,n)}}_setupDropShadow(e,t,s,i){e.fillStyle="black",e.strokeStyle="black";const a=t.dropShadow,o=a.color,n=a.alpha;e.shadowColor=ee.shared.setValue(o).setAlpha(n).toRgbaString();const l=a.blur*s,h=a.distance*s;e.shadowBlur=l,e.shadowOffsetX=Math.cos(a.angle)*h,e.shadowOffsetY=Math.sin(a.angle)*h+i}_getAlignmentOffset(e,t,s){return s==="right"?t-e:s==="center"?(t-e)/2:0}_drawLetterSpacing(e,t,s,i,a,o=!1,n=0){const{context:l}=s,h=t.letterSpacing;let c=!1;if(Ze.experimentalLetterSpacingSupported&&(Ze.experimentalLetterSpacing?(l.letterSpacing=`${h}px`,l.textLetterSpacing=`${h}px`,c=!0):(l.letterSpacing="0px",l.textLetterSpacing="0px")),(h===0||c)&&n===0){o?l.strokeText(e,i,a):l.fillText(e,i,a);return}if(n!==0&&(h===0||c)){const p=e.split(" ");let w=i;const A=l.measureText(" ").width;for(let _=0;_<p.length;_++)o?l.strokeText(p[_],w,a):l.fillText(p[_],w,a),w+=l.measureText(p[_]).width+A+n;return}let u=i;const f=Ze.graphemeSegmenter(e);let d=l.measureText(e).width,m=0;for(let p=0;p<f.length;++p){const w=f[p];o?l.strokeText(w,u,a):l.fillText(w,u,a);let A="";for(let _=p+1;_<f.length;++_)A+=f[_];m=l.measureText(A).width,u+=d-m+h,w===" "&&(u+=n),d=m}}}const Tt=new z2,Vi=class ft extends De{constructor(e={}){super(),this.uid=q("textStyle"),this._tick=0,this._cachedFontString=null,v2(e),e instanceof ft&&(e=e._toObject());const i={...ft.defaultTextStyle,...e};for(const a in i){const o=a;this[o]=i[a]}this._tagStyles=e.tagStyles??void 0,this.update(),this._tick=0}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.update())}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.update())}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(e!==null&&typeof e=="object"?this._dropShadow=this._createProxy({...ft.defaultDropShadow,...e}):this._dropShadow=e?this._createProxy({...ft.defaultDropShadow}):null,this.update())}get fontFamily(){return this._fontFamily}set fontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.update())}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(typeof e=="string"?this._fontSize=parseInt(e,10):this._fontSize=e,this.update())}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e.toLowerCase(),this.update())}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.update())}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.update())}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.update())}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.update())}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.update())}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.update())}get filters(){return this._filters}set filters(e){this._filters!==e&&(this._filters=Object.freeze(e),this.update())}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.update())}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.update())}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.update())}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.update())}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.update())}get fill(){return this._originalFill}set fill(e){e!==this._originalFill&&(this._originalFill=e,this._isFillStyle(e)&&(this._originalFill=this._createProxy({...ge.defaultFillStyle,...e},()=>{this._fill=pt({...this._originalFill},ge.defaultFillStyle)})),this._fill=pt(e===0?"black":e,ge.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(e){e!==this._originalStroke&&(this._originalStroke=e,this._isFillStyle(e)&&(this._originalStroke=this._createProxy({...ge.defaultStrokeStyle,...e},()=>{this._stroke=Qr({...this._originalStroke},ge.defaultStrokeStyle)})),this._stroke=Qr(e,ge.defaultStrokeStyle),this.update())}get tagStyles(){return this._tagStyles}set tagStyles(e){this._tagStyles!==e&&(this._tagStyles=e??void 0,this.update())}update(){this._tick++,this._cachedFontString=null,this.emit("update",this)}reset(){const e=ft.defaultTextStyle;for(const t in e)this[t]=e[t]}assign(e){for(const t in e){const s=t;this[s]=e[t]}return this}get styleKey(){return`${this.uid}-${this._tick}`}get _fontString(){return this._cachedFontString===null&&(this._cachedFontString=Pi(this)),this._cachedFontString}_toObject(){return{align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?{...this._dropShadow}:null,fill:this._fill?{...this._fill}:void 0,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke?{...this._stroke}:void 0,textBaseline:this.textBaseline,trim:this.trim,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth,filters:this._filters?[...this._filters]:void 0,tagStyles:this._tagStyles?{...this._tagStyles}:void 0}}clone(){return new ft(this._toObject())}_getFinalPadding(){let e=0;if(this._filters)for(let t=0;t<this._filters.length;t++)e+=this._filters[t].padding;return Math.max(this._padding,e)}destroy(e=!1){if(this.removeAllListeners(),typeof e=="boolean"?e:e?.texture){const s=typeof e=="boolean"?e:e?.textureSource;this._fill?.texture&&this._fill.texture.destroy(s),this._originalFill?.texture&&this._originalFill.texture.destroy(s),this._stroke?.texture&&this._stroke.texture.destroy(s),this._originalStroke?.texture&&this._originalStroke.texture.destroy(s)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(e,t){return new Proxy(e,{set:(s,i,a)=>(s[i]===a||(s[i]=a,t?.(i,a),this.update()),!0)})}_isFillStyle(e){return(e??null)!==null&&!(ee.isColorLike(e)||e instanceof Qe||e instanceof as)}};Vi.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5};Vi.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let Vr=Vi;function v2(r){const e=r;if(typeof e.dropShadow=="boolean"&&e.dropShadow){const t=Vr.defaultDropShadow;r.dropShadow={alpha:e.dropShadowAlpha??t.alpha,angle:e.dropShadowAngle??t.angle,blur:e.dropShadowBlur??t.blur,color:e.dropShadowColor??t.color,distance:e.dropShadowDistance??t.distance}}if(e.strokeThickness!==void 0){G(V,"strokeThickness is now a part of stroke");const t=e.stroke;let s={};if(ee.isColorLike(t))s.color=t;else if(t instanceof Qe||t instanceof as)s.fill=t;else if(Object.hasOwnProperty.call(t,"color")||Object.hasOwnProperty.call(t,"fill"))s=t;else throw new Error("Invalid stroke value.");r.stroke={...s,width:e.strokeThickness}}if(Array.isArray(e.fillGradientStops)){if(G(V,"gradient fill is now a fill pattern: `new FillGradient(...)`"),!Array.isArray(e.fill)||e.fill.length===0)throw new Error("Invalid fill value. Expected an array of colors for gradient fill.");e.fill.length!==e.fillGradientStops.length&&j("The number of fill colors must match the number of fill gradient stops.");const t=new Qe({start:{x:0,y:0},end:{x:0,y:1},textureSpace:"local"}),s=e.fillGradientStops.slice(),i=e.fill.map(a=>ee.shared.setValue(a).toNumber());s.forEach((a,o)=>{t.addColorStop(a,i[o])}),r.fill={fill:t}}}let Ao=!1;function P2(r){if(Ao)return;const e=new At({scaleMode:r.scaleMode});r._resourceId!==e._resourceId&&(Ao=!0,j("Text textureStyle: only scaleMode is applied to a text texture, the other fields are ignored"))}function C2(r,e){const{texture:t,bounds:s}=r,i=e._style._getFinalPadding();Oo(s,e._anchor,t);const a=e._anchor._x*i*2,o=e._anchor._y*i*2;s.minX-=i-a,s.minY-=i-o,s.maxX-=i-a,s.maxY-=i-o}class T2{constructor(){this.batcherName="default",this.topology="triangle-list",this.attributeSize=4,this.indexSize=6,this.packAsQuad=!0,this.roundPixels=0,this._attributeStart=0,this._batcher=null,this._batch=null}get blendMode(){return this.renderable.groupBlendMode}get color(){return this.renderable.groupColorAlpha}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.bounds=null}destroy(){this.reset()}}class B2 extends T2{}class pl{constructor(e){this._renderer=e,e.runners.resolutionChange.add(this),e.runners.contextChange.add(this),this._managedTexts=new Ut({renderer:e,type:"renderable",onUnload:this.onTextUnload.bind(this),name:"canvasText"})}resolutionChange(){for(const e in this._managedTexts.items){const t=this._managedTexts.items[e];t?._autoResolution&&t.onViewUpdate()}}contextChange(){for(const e in this._managedTexts.items)this._managedTexts.items[e]?.unload()}validateRenderable(e){const t=this._getGpuText(e),s=e.styleKey;return t.currentKey!==s?!0:e._didTextUpdate}addRenderable(e,t){const s=this._getGpuText(e);if(e._didTextUpdate||s.currentKey!==e.styleKey){const i=e._autoResolution?this._renderer.resolution:e.resolution;(s.currentKey!==e.styleKey||e._resolution!==i)&&this._updateGpuText(e),e._didTextUpdate=!1,C2(s,e)}this._renderer.renderPipes.batch.addToBatch(s,t)}updateRenderable(e){const t=this._getGpuText(e);t._batcher.updateElement(t)}_updateGpuText(e){const t=this._getGpuText(e);t.texture&&this._renderer.canvasText.decreaseReferenceCount(t.currentKey),e._resolution=e._autoResolution?this._renderer.resolution:e.resolution,t.texture=this._renderer.canvasText.getManagedTexture(e),t.currentKey=e.styleKey}_getGpuText(e){return e._gpuData[this._renderer.uid]||this.initGpuText(e)}initGpuText(e){const t=new B2;return t.currentKey="--",t.renderable=e,t.transform=e.groupTransform,t.bounds={minX:0,maxX:1,minY:0,maxY:0},t.roundPixels=this._renderer._roundPixels|e._roundPixels,e._gpuData[this._renderer.uid]=t,this._managedTexts.add(e),t}onTextUnload(e){const t=e._gpuData[this._renderer.uid];if(!t)return;const{canvasText:s}=this._renderer;s.getReferenceCount(t.currentKey)>0?s.decreaseReferenceCount(t.currentKey):t.texture&&s.returnTexture(t.texture)}destroy(){this._managedTexts.destroy(),this._renderer=null}}pl.extension={type:[M.WebGLPipes,M.WebGPUPipes,M.CanvasPipes],name:"text"};class wl{constructor(e,t){this._activeTextures={},this._renderer=e,this._retainCanvasContext=t}getTexture(e,t,s,i){typeof e=="string"&&(G("8.0.0","CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"),e={text:e,style:s,resolution:t}),e.style instanceof Vr||(e.style=new Vr(e.style)),typeof e.text!="string"&&(e.text=e.text.toString());const{text:a,style:o,textureStyle:n,autoGenerateMipmaps:l}=e,h=e.resolution??this._renderer.resolution,{frame:c,canvasAndContext:u}=Tt.getCanvasAndContext({text:a,style:o,resolution:h}),f=jf(u.canvas,c.width,c.height,h,l,n?.scaleMode);if(o.trim&&(c.pad(o.padding),f.frame.copyFrom(c),f.frame.scale(1/h),f.updateUvs()),o.filters){const d=this._applyFilters(f,o.filters);return this.returnTexture(f),Tt.returnCanvasAndContext(u),d}return this._renderer.texture.initSource(f._source),this._retainCanvasContext||Tt.returnCanvasAndContext(u),f}returnTexture(e){const t=e.source,s=t.resource;if(this._retainCanvasContext&&s?.getContext){const i=s.getContext("2d");i&&Tt.returnCanvasAndContext({canvas:s,context:i})}t.resource=null,t.uploadMethodId="unknown",t.alphaMode="no-premultiply-alpha",Jr.returnTexture(e)}renderTextToCanvas(){G("8.10.0","CanvasTextSystem.renderTextToCanvas: no longer supported, use CanvasTextSystem.getTexture instead")}getManagedTexture(e){e._resolution=e._autoResolution?this._renderer.resolution:e.resolution;const t=e.styleKey;if(this._activeTextures[t])return this._increaseReferenceCount(t),this._activeTextures[t].texture;const s=this.getTexture({text:e.text,style:e.style,resolution:e._resolution,textureStyle:e.textureStyle,autoGenerateMipmaps:e.autoGenerateMipmaps});return this._activeTextures[t]={texture:s,usageCount:1},s}decreaseReferenceCount(e){const t=this._activeTextures[e];t&&(t.usageCount--,t.usageCount===0&&(this.returnTexture(t.texture),this._activeTextures[e]=null))}getReferenceCount(e){return this._activeTextures[e]?.usageCount??0}_increaseReferenceCount(e){this._activeTextures[e].usageCount++}_applyFilters(e,t){const s=this._renderer.renderTarget.renderTarget,i=this._renderer.filter.generateFilteredTexture({texture:e,filters:t});return this._renderer.renderTarget.bind({target:s,clear:!1}),i}destroy(){this._renderer=null;for(const e in this._activeTextures)this._activeTextures[e]&&this.returnTexture(this._activeTextures[e].texture);this._activeTextures=null}}class Al extends wl{constructor(e){super(e,!0)}}Al.extension={type:[M.CanvasSystem],name:"canvasText"};class _l extends wl{constructor(e){super(e,!1)}}_l.extension={type:[M.WebGLSystem,M.WebGPUSystem],name:"canvasText"};Q.add(Al);Q.add(_l);Q.add(pl);class nr extends $f{constructor(...e){const t=e2(e,"Text");super(t,Vr),this.renderPipeId="text",t.textureStyle&&(this.textureStyle=t.textureStyle instanceof At?t.textureStyle:new At(t.textureStyle),P2(this.textureStyle)),this.autoGenerateMipmaps=t.autoGenerateMipmaps??me.defaultOptions.autoGenerateMipmaps}updateBounds(){const e=this._bounds,t=this._anchor;let s=0,i=0;if(this._style.trim){const{frame:a,canvasAndContext:o}=Tt.getCanvasAndContext({text:this.text,style:this._style,resolution:1});Tt.returnCanvasAndContext(o),s=a.width,i=a.height}else{const a=Ze.measureText(this._text,this._style);s=a.width,i=a.height}e.minX=-t._x*s,e.maxX=e.minX+s,e.minY=-t._y*i,e.maxY=e.minY+i}}const xl=class yl extends Zf{constructor(...e){super({});let t=e[0]??{};typeof t=="number"&&(G(V,"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead"),t={width:t,height:e[1],verticesX:e[2],verticesY:e[3]}),this.build(t)}build(e){e={...yl.defaultOptions,...e},this.verticesX=this.verticesX??e.verticesX,this.verticesY=this.verticesY??e.verticesY,this.width=this.width??e.width,this.height=this.height??e.height;const t=this.verticesX*this.verticesY,s=[],i=[],a=[],o=this.verticesX-1,n=this.verticesY-1,l=this.width/o,h=this.height/n;for(let u=0;u<t;u++){const f=u%this.verticesX,d=u/this.verticesX|0;s.push(f*l,d*h),i.push(f/o,d/n)}const c=o*n;for(let u=0;u<c;u++){const f=u%o,d=u/o|0,m=d*this.verticesX+f,p=d*this.verticesX+f+1,w=(d+1)*this.verticesX+f,A=(d+1)*this.verticesX+f+1;a.push(m,p,w,p,A,w)}this.buffers[0].data=new Float32Array(s),this.buffers[1].data=new Float32Array(i),this.indexBuffer.data=new Uint32Array(a),this.buffers[0].update(),this.buffers[1].update(),this.indexBuffer.update()}};xl.defaultOptions={width:100,height:100,verticesX:10,verticesY:10};let M2=xl;const Ns=[[0,0],[0,0],[0,0]],Us=[[0,0],[0,0],[0,0]],Xs=[[0,0],[0,0],[0,0]],Ws=[[0,0],[0,0],[0,0]];function Er(r,e,t,s,i,a,o){r[0][0]=e,r[0][1]=t,r[1][0]=s,r[1][1]=i,r[2][0]=a,r[2][1]=o}class gl{constructor(e){this._renderer=e}validateRenderable(e){return!1}addRenderable(e,t){this._renderer.renderPipes.batch.break(t),t.add(e)}updateRenderable(e){}execute(e){const t=this._renderer,s=t.canvasContext,i=s.activeContext;i.save();const a=e.groupTransform,o=t._roundPixels|e._roundPixels;s.setContextTransform(a,o===1),s.setBlendMode(e.groupBlendMode);const n=t.globalUniforms.globalUniformData?.worldColor??4294967295,l=e.groupColorAlpha,h=(n>>>24&255)/255,c=(l>>>24&255)/255,u=t.filter?.alphaMultiplier??1,f=h*c*u;if(f<=0){i.restore();return}i.globalAlpha=f;const d=n&16777215,m=l&16777215,p=rr(Ii(m,d)),w=e.texture,A=Y.getCanvasSource(w);if(!A){i.restore();return}const _=s.smoothProperty,x=w.source.style.scaleMode!=="nearest";i[_]!==x&&(i[_]=x);const y=p!==16777215||w.rotate!==0,g=y?Y.getTintedCanvas({texture:w},p):A,{leftWidth:S,topHeight:k,rightWidth:v,bottomHeight:P,width:z,height:b}=e,D=S+v,I=k+P,E=Math.min(D>z?z/D:1,I>b?b/I:1,1),O=S*E,C=v*E,T=k*E,F=P*E,B=Math.max(0,z-O-C),X=Math.max(0,b-T-F),K=e.anchor,Z=w.source._resolution??w.source.resolution??1;let W=w.frame.x*Z,J=w.frame.y*Z;const we=-K.x*z,ze=-K.y*b,st=S*Z,it=k*Z,Ve=v*Z,qe=P*Z;let Ke=w.frame.width*Z,ye=w.frame.height*Z;y&&(W=0,J=0,Ke=g.width,ye=g.height);const ve=Ke-st-Ve,Pe=ye-it-qe,Ge=ve>0?W+st:Math.max(W,Math.min(W+st,W+Ke-1)),os=ve>0?ve:1,pr=Pe>0?J+it:Math.max(J,Math.min(J+it,J+ye-1)),ns=Pe>0?Pe:1;Er(Ns,W,st,Ge,os,W+Ke-Ve,Ve),Er(Us,J,it,pr,ns,J+ye-qe,qe),Er(Xs,we,O,we+O,B,we+z-C,C),Er(Ws,ze,T,ze+T,X,ze+b-F,F);for(let at=0;at<3;at++){const qi=Xs[at][1];if(qi<=0)continue;const Ll=Ns[at][0],Fl=Ns[at][1],Hl=Xs[at][0];for(let xt=0;xt<3;xt++){const Ki=Ws[xt][1];Ki<=0||i.drawImage(g,Ll,Us[xt][0],Fl,Us[xt][1],Hl,Ws[xt][0],qi,Ki)}}i.restore()}destroy(){this._renderer=null}}gl.extension={type:[M.CanvasPipes],name:"nineSliceSprite"};const Sl=class Lr extends M2{constructor(e={}){e={...Lr.defaultOptions,...e},super({width:e.width,height:e.height,verticesX:4,verticesY:4}),this._trimX=0,this._trimY=0,this._trimWidth=e.originalWidth??Lr.defaultOptions.originalWidth,this._trimHeight=e.originalHeight??Lr.defaultOptions.originalHeight,this.update(e)}update(e){this.width=e.width??this.width,this.height=e.height??this.height,this._originalWidth=e.originalWidth??this._originalWidth,this._originalHeight=e.originalHeight??this._originalHeight,this._leftWidth=e.leftWidth??this._leftWidth,this._rightWidth=e.rightWidth??this._rightWidth,this._topHeight=e.topHeight??this._topHeight,this._bottomHeight=e.bottomHeight??this._bottomHeight,this._anchorX=e.anchor?.x,this._anchorY=e.anchor?.y,e.trim!==void 0?(this._trimX=e.trim?.x??0,this._trimY=e.trim?.y??0,this._trimWidth=e.trim?.width??this._originalWidth,this._trimHeight=e.trim?.height??this._originalHeight):(this._trimWidth=this._originalWidth,this._trimHeight=this._originalHeight),this.updateUvs(),this.updatePositions()}updatePositions(){const e=this.positions,{width:t,height:s,_leftWidth:i,_rightWidth:a,_topHeight:o,_bottomHeight:n,_anchorX:l,_anchorY:h}=this,c=i+a,u=t>c?1:t/c,f=o+n,d=s>f?1:s/f,m=Math.min(u,d),p=l*t,w=h*s;e[0]=e[8]=e[16]=e[24]=-p,e[2]=e[10]=e[18]=e[26]=i*m-p,e[4]=e[12]=e[20]=e[28]=t-a*m-p,e[6]=e[14]=e[22]=e[30]=t-p,e[1]=e[3]=e[5]=e[7]=-w,e[9]=e[11]=e[13]=e[15]=o*m-w,e[17]=e[19]=e[21]=e[23]=s-n*m-w,e[25]=e[27]=e[29]=e[31]=s-w,this.getBuffer("aPosition").update()}updateUvs(){const e=this.uvs,t=this._originalWidth,s=this._originalHeight,i=this._trimX/t,a=this._trimY/s,o=(this._trimX+this._trimWidth)/t,n=(this._trimY+this._trimHeight)/s;e[0]=e[8]=e[16]=e[24]=i,e[1]=e[3]=e[5]=e[7]=a,e[6]=e[14]=e[22]=e[30]=o,e[25]=e[27]=e[29]=e[31]=n;const l=1/t,h=1/s;e[2]=e[10]=e[18]=e[26]=i+l*this._leftWidth,e[9]=e[11]=e[13]=e[15]=a+h*this._topHeight,e[4]=e[12]=e[20]=e[28]=o-l*this._rightWidth,e[17]=e[19]=e[21]=e[23]=n-h*this._bottomHeight,this.getBuffer("aUV").update()}};Sl.defaultOptions={width:100,height:100,leftWidth:10,topHeight:10,rightWidth:10,bottomHeight:10,originalWidth:100,originalHeight:100};let mt=Sl;class E2 extends Jf{constructor(){super(),this.geometry=new mt}destroy(){this.geometry.destroy()}}class kl{constructor(e){this._renderer=e,this._managedSprites=new Ut({renderer:e,type:"renderable",name:"nineSliceSprite"})}addRenderable(e,t){const s=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,s),this._renderer.renderPipes.batch.addToBatch(s,t)}updateRenderable(e){const t=this._getGpuSprite(e);e.didViewUpdate&&this._updateBatchableSprite(e,t),t._batcher.updateElement(t)}validateRenderable(e){const t=this._getGpuSprite(e);return!t._batcher.checkAndUpdateTexture(t,e._texture)}_updateBatchableSprite(e,t){t.geometry.update(e),t.setTexture(e._texture)}_getGpuSprite(e){return e._gpuData[this._renderer.uid]||this._initGPUSprite(e)}_initGPUSprite(e){const t=e._gpuData[this._renderer.uid]=new E2,s=t;return s.renderable=e,s.transform=e.groupTransform,s.texture=e._texture,s.roundPixels=this._renderer._roundPixels|e._roundPixels,this._managedSprites.add(e),e.didViewUpdate||this._updateBatchableSprite(e,s),t}destroy(){this._managedSprites.destroy(),this._renderer=null}}kl.extension={type:[M.WebGLPipes,M.WebGPUPipes],name:"nineSliceSprite"};Q.add(gl);Q.add(kl);const bl=class zl extends $r{constructor(e){e instanceof L&&(e={texture:e});const{width:t,height:s,anchor:i,leftWidth:a,rightWidth:o,topHeight:n,bottomHeight:l,texture:h,roundPixels:c,...u}=e;super({label:"NineSliceSprite",...u}),this.renderPipeId="nineSliceSprite",this.batched=!0,this._leftWidth=a??h?.defaultBorders?.left??mt.defaultOptions.leftWidth,this._topHeight=n??h?.defaultBorders?.top??mt.defaultOptions.topHeight,this._rightWidth=o??h?.defaultBorders?.right??mt.defaultOptions.rightWidth,this._bottomHeight=l??h?.defaultBorders?.bottom??mt.defaultOptions.bottomHeight,this._width=t??h.width??mt.defaultOptions.width,this._height=s??h.height??mt.defaultOptions.height,this.allowChildren=!1,this.texture=h??zl.defaultOptions.texture,this.roundPixels=c??!1,this._anchor=new le({_onUpdate:()=>{this.onViewUpdate()}}),i?this.anchor=i:this.texture.defaultAnchor&&(this.anchor=this.texture.defaultAnchor)}get anchor(){return this._anchor}set anchor(e){typeof e=="number"?this._anchor.set(e):this._anchor.copyFrom(e)}get width(){return this._width}set width(e){this._width=e,this.onViewUpdate()}get height(){return this._height}set height(e){this._height=e,this.onViewUpdate()}setSize(e,t){typeof e=="object"&&(t=e.height??e.width,e=e.width),this._width=e,this._height=t??e,this.onViewUpdate()}getSize(e){return e||(e={}),e.width=this._width,e.height=this._height,e}get leftWidth(){return this._leftWidth}set leftWidth(e){this._leftWidth=e,this.onViewUpdate()}get topHeight(){return this._topHeight}set topHeight(e){this._topHeight=e,this.onViewUpdate()}get rightWidth(){return this._rightWidth}set rightWidth(e){this._rightWidth=e,this.onViewUpdate()}get bottomHeight(){return this._bottomHeight}set bottomHeight(e){this._bottomHeight=e,this.onViewUpdate()}get texture(){return this._texture}set texture(e){e||(e=L.EMPTY);const t=this._texture;t!==e&&(t&&t.dynamic&&t.off("update",this.onViewUpdate,this),e.dynamic&&e.on("update",this.onViewUpdate,this),this._texture=e,this.onViewUpdate())}get originalWidth(){return this._texture.width}get originalHeight(){return this._texture.height}get trim(){return this._texture.trim??null}destroy(e){if(super.destroy(e),typeof e=="boolean"?e:e?.texture){const s=typeof e=="boolean"?e:e?.textureSource;this._texture.destroy(s)}this._texture=null}updateBounds(){const e=this._bounds,t=this._anchor,s=this._width,i=this._height;e.minX=-t._x*s,e.maxX=e.minX+s,e.minY=-t._y*i,e.maxY=e.minY+i}};bl.defaultOptions={texture:L.EMPTY};let _o=bl;Q.add(Ul,Xl);const Ci=["working","done","blocked","idle","unknown"],qr=["orchestrator","coordinator","architect","implementer","reviewer","researcher","writer","ops","generic"],xo={blocked:4,done:3,working:2,idle:1,unknown:0};function D2(r){let e="unknown";for(const t of r)xo[t.status]>xo[e]&&(e=t.status);return e}qr.filter(r=>r!=="generic");function vl(r="local"){return{machine:r,parties:{}}}function Dr(r){return{...r,status:D2(Object.values(r.members))}}function Ti(r,e){switch(e.kind){case"snapshot":return{...e.world,parties:Object.fromEntries(Object.entries(e.world.parties).map(([t,s])=>[t,Dr(s)]))};case"party":return{...r,parties:{...r.parties,[e.party.id]:Dr(e.party)}};case"member":{const t=r.parties[e.partyId];if(!t)return r;const s={...t.members,[e.member.paneId]:e.member};return{...r,parties:{...r.parties,[t.id]:Dr({...t,members:s})}}}case"removed":{const t=r.parties[e.partyId];if(!t)return r;if(e.paneId===void 0){const{[e.partyId]:a,...o}=r.parties;return{...r,parties:o}}if(!t.members[e.paneId])return r;const{[e.paneId]:s,...i}=t.members;return{...r,parties:{...r.parties,[t.id]:Dr({...t,members:i})}}}case"say":{const t=r.parties[e.partyId],s=t?.members[e.paneId];if(!t||!s)return r;const i={...t.members,[s.paneId]:{...s,say:e.text}};return{...r,parties:{...r.parties,[t.id]:{...t,members:i}}}}}}const I2={async focus(){},async prompt(){},async sendKeys(){}};class R2{listeners=[];actions=I2;on(e,t){this.listeners.push(t)}emit(e){for(const t of this.listeners)t(e)}}function G2(r){let e=r>>>0;return()=>{e=e+1831565813>>>0;let t=e;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}}function Zt(r,e){const t=e[Math.floor(r()*e.length)];if(t===void 0)throw new Error("pick() from an empty list");return t}const L2=[{label:"auth-refresh",repo:"api",branch:"feat/auth-refresh",roles:["coordinator","architect","implementer","reviewer"]},{label:"docs-site",repo:"docs",branch:"docs/getting-started",roles:["coordinator","writer","researcher"]},{label:"deploy-pipeline",repo:"infra",roles:["architect","ops","implementer"]},{label:"orchestrator",repo:"home",roles:["orchestrator"]}],F2=["claude","claude","copilot","codex"],H2={coordinator:["Handing off the next task","Two branches left to merge","Checking in on the team"],architect:["Sketching the module split","This needs an interface","Reading the schema"],implementer:["Tests are green","Fixing a flaky test","Wiring up the handler"],reviewer:["Left three comments","Looks good to me","Can we name this better?"],researcher:["Found the upstream issue","Comparing two libraries"],writer:["Drafting the README","Tightening the intro"],ops:["Pipeline is running","Bumping the runner image"],orchestrator:["Starting a new worktree","Reviewing the plan"]},O2={working:[["working",3],["done",2],["idle",1],["blocked",1]],done:[["idle",3],["working",2]],blocked:[["working",3],["blocked",1]],idle:[["working",4],["idle",2]],unknown:[["idle",1],["working",1]]};function N2(r,e){const t=e.reduce((i,[,a])=>i+a,0);let s=r()*t;for(const[i,a]of e)if(s-=a,s<0)return i;return e[e.length-1][0]}class U2{rng;world;seq=0;constructor(e={}){this.rng=G2(e.seed??1),this.world=vl(e.machine??"local")}initial(e=0){const t={};L2.forEach((i,a)=>{const o=`w${a+1}`,n={};i.roles.forEach((l,h)=>{const c=`${o}:p${h+1}`;n[c]={paneId:c,agent:Zt(this.rng,F2),role:l,status:Zt(this.rng,["working","working","idle","done"]),title:l,lastChange:this.seq++}}),t[o]={id:o,label:i.label,session:"default",repo:i.repo,branch:i.branch,isWorktree:i.branch!==void 0,status:"unknown",members:n,tokens:{}}});const s={t:e,kind:"snapshot",world:{machine:this.world.machine,parties:t}};return this.world=Ti(this.world,s),s}get current(){return this.world}step(e=0){const t=Object.values(this.world.parties),s=Zt(this.rng,t),i=Zt(this.rng,Object.values(s.members)),a=this.rng();let o;if(a<.25&&i.status==="working"){const n=H2[i.role]??["Working on it"];o={t:e,kind:"say",partyId:s.id,paneId:i.paneId,text:Zt(this.rng,n)}}else{const n=N2(this.rng,O2[i.status]);o={t:e,kind:"member",partyId:s.id,member:{...i,status:n,say:void 0,lastChange:this.seq++}}}return this.world=Ti(this.world,o),o}}class X2 extends R2{gen;timer;intervalMs;constructor(e={}){super(),this.gen=new U2(e),this.intervalMs=e.intervalMs??1500}async start(){this.emit(this.gen.initial(Date.now())),this.timer=setInterval(()=>this.emit(this.gen.step(Date.now())),this.intervalMs)}async stop(){this.timer&&clearInterval(this.timer),this.timer=void 0}}class W2{constructor(e){this.sayTtlMs=e}sayTtlMs;world=vl();sayUntil=new Map;onFocus;apply(e,t){this.world=Ti(this.world,e),e.kind==="say"&&this.sayUntil.set(`${e.partyId}/${e.paneId}`,t+this.sayTtlMs),e.kind==="member"&&e.member.say===void 0&&this.sayUntil.delete(`${e.partyId}/${e.member.paneId}`),e.kind==="snapshot"&&this.sayUntil.clear()}say(e,t,s){const i=this.sayUntil.get(`${e}/${t}`);if(!(i===void 0||s>i))return this.world.parties[e]?.members[t]?.say}}function j2(r,e,t){const s={mode:{kind:"mock",reason:"requested"},stop:()=>{}},i=l=>{const h=new X2({seed:1,intervalMs:1500});h.on("delta",e),h.start(),s.mode={kind:"mock",reason:l},s.stop=()=>{h.stop()},t(s.mode)};if(!r)return i("requested"),s;let a=!1,o=!1;const n=()=>{const l=new WebSocket(r);s.stop=()=>{o=!0,l.close()},s.send=h=>{l.readyState===WebSocket.OPEN&&l.send(JSON.stringify(h))},l.onmessage=h=>{a||(a=!0,s.mode={kind:"ws",url:r},t(s.mode)),e(JSON.parse(String(h.data)))},l.onclose=()=>{o||(a?setTimeout(n,2e3):i(`adapter not reachable at ${r}`))}};return n(),s}function Q2(r){const e=[];for(const t of r.split(`
|
|
296
|
+
`)){const s=t.trim();if(s)try{e.push(JSON.parse(s))}catch{}}return e}function Y2(r,e,t={}){const s=t.speed&&t.speed>0?t.speed:1;let i,a=!1;const o=n=>{if(a)return;const l=r[n];if(!l){t.loop!==!1&&r.length>0&&o(0);return}e(l);const h=r[n+1],c=h?Math.max(0,h.t-l.t)/s:1e3/s;i=setTimeout(()=>o(n+1),c)};return o(0),()=>{a=!0,i&&clearTimeout(i)}}function V2(r,e,t,s){const i={mode:{kind:"replay",url:r},stop:()=>{}};let a=!1;return i.stop=()=>{a=!0},fetch(r).then(o=>{if(!o.ok)throw new Error(`HTTP ${o.status}`);return o.text()}).then(o=>{a||(s(i.mode),i.stop=Y2(Q2(o),t,{speed:e}))}).catch(()=>{a||s({kind:"mock",reason:`could not load ${r}`})}),i}function q2(r,e,t,s){const i=r.parties[t];if(!i||!i.members[s])return;const a=Object.values(i.members).filter(c=>c.paneId!==s).sort((c,u)=>c.paneId.localeCompare(u.paneId));if(a.length)return{partyId:t,paneId:a[K2(s,a.length)].paneId};const o=e.get(t);if(!o)return;const l=Object.values(r.parties).filter(c=>c.id!==t&&Object.keys(c.members).length>0&&e.get(c.id)?.settlementKey===o.settlementKey).sort((c,u)=>yo(e.get(c.id),o)-yo(e.get(u.id),o)||c.id.localeCompare(u.id))[0];if(!l)return;const h=Object.values(l.members).sort((c,u)=>c.paneId.localeCompare(u.paneId));return{partyId:l.id,paneId:h[0].paneId}}function yo(r,e){return Math.hypot(r.tile.x-e.tile.x,r.tile.y-e.tile.y)}function K2(r,e){let t=0;for(const s of r)t=t*31+s.charCodeAt(0)>>>0;return t%e}function Z2(r,e,t,s=8e3){if(!r||t.status!=="working")return;const i=r.members[t.paneId];if(i&&i.status==="working")return;const a=Object.values(e.members).filter(o=>o.paneId!==t.paneId&&(o.status==="done"||o.status==="idle")&&t.lastChange-o.lastChange>=0&&t.lastChange-o.lastChange<=s).sort((o,n)=>n.lastChange-o.lastChange)[0];if(a)return{from:a,text:`Over to you, ${t.role}`}}const J2="data:image/png;base64,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",$2="data:image/png;base64,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",em="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAABACAYAAAD1Xam+AAAFcklEQVR42u2du24TQRSG/RI0gBBFCuQiipQmCk2KSEgpgDoFDRKFqxQUPIMfgMIVpR+BB6BITZUyUprUvMCiXTHWMJnbmYvXs/v90pEdx3N2sjn/Nxev7cWiol48O+nu7u67/rZkzpL50HTUem1MqrZrmf/P76shgEBacYWi1QLv8y5fPR+i5jHof0LBlQZAqZwl8oyZI7Zd/7zN57OoaLHA+3xXxy+7zepyFzWOQf8Do4n++9Xq2y5KmaQv0NXFUbF83cMqK1dODtUmNYeknX7ufFELAjULXOVW+a/Pjqodg/7/S/br3fkuNqdvdqEX9Xr9fReHBgBlnm6zzDJwag7dvFk5Itvp504HgQkF/TktFLiZ2xb0v2D/TfObAFAQKA0AfQqrijV75N4su8eLZZaBU3Po5tVziNo/rKKPPdYMoGaBh3J//Xg8FDv9L9T/oYgMs7uiJADM9atesLkjd28gqYFt7SUG9rWPHc2l/R9jD6Bmgbty9zlLbWrS/8DI75oBqCgBAFvhmqNW0to50Xy29vpInNs+Jkfq8W17NvqSquSGbU6Bx7xS4Sps+l8BMD7ztw4AZZ4cA6e2T83hO750GZKyp1KzwG2bVZKIPf/0v8K037ccKGV+1zpWWsDr69Pu09vXw626r36O+Se33D4HADULPGa9mmsg+n8iW/P7Rv7QDCAHAr41q2sDK5aeLuPot761dMvtcwBQu8Bt+c9XP5/EoRq09f4nmT8WABIIhDasfLvYkinU9fWX3a1+P4bCLbcvCYAaBT70S8u/fL/ehS+/Wt/S/0wAlJj250DAB4B+17KPHADYLsTR78+pfQoAahS4Xtz9/f65KTGWQVvvf9LIL50BxEAgNPqHAFDqKsGpqz9HH35c7QDQ348dfWoUuF7c6mdpbt8IR//DgEkyfwoAXBCINT8QKGN+W4xV4ObsRR/l9GPpO936Y6EpLv0P9L/mtD8GAjEXqkgAAATSXkqKWXLUKHBrPTrymwaIzU//L8MzgOFNPMZloaXDVmzS0Z9ZwGFARK0tfcVtK9gxDOTK7euzGjmlL6HV7H/V/PsCgGszqnQAgXYBoCAfU+D6cw8RAGb/zMdmDYCF4MMqpIFN6wJAn425itv1mGSZEson+X/H9s/196UcwzXrdf190vyhvyc6vwmA7n79X0iM7mqLMae5l2B7PPSY9Dj7zpczmEihlHKxnO2l4NjfZwNAfbqIHgAAocaJbgLgcXs1hA0A+hTJBgBbWwCAUEMA8M0AQgBgBoBQwwDwRQgA+/7QSYQQAEAI7RsA/Ud1AwCEmAEAAIQAAABAqGkAhMIGAC7PRWgCEKgZnGGEEEIIIYQOYtqvvnZ76l+/3XXdhS9KLJ0sx3wiqg4dHARKfvuu0u3tbddHyb5Kc4ZMnwuD4cs6NOnnz2V2IIAmCwBl0D6UJKa1PdfMGZMr1fgSEJjm1yEQMjkQQJMEQOeRbuRQextI9N/tw/whCAAABAAEAIgxcIH2IUPfOEIMAQCAAMAIAEgw/40wkiGgzh8AQABgjwAoaP4kCJivAgAABACEI3hM+z2ZXwwBickxPwIA9QHgMvXWEdEQyD0fVByaLQBKtxeYfxsZxSGAEAAoAIDI0T/H/NEQoGoQAChg4D0AYJsYAAABgBwAmI+VBkDk9N9m7nsjxAAAAggAVFTi6/4p5k+GAJWDAMC4kJAC4D4QAAABAAAAABAAAAAAAAEAAAAAEACYBgDYBERowgDgZUCE5gKABRcCIQQAuBQYIQDAm4EQmhsAFgf+dmCE0DgAGP0DQRBC7UIA8yM0UwhgfoQmBoHiHwuOEGoTAlW+JgwhNDEIcCYRmiEIOHMIzQwGnCE0J/0FDwfIDWQlIqsAAAAASUVORK5CYII=",tm="data:image/png;base64,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",rm="data:image/png;base64,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",sm="data:image/png;base64,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",im={settlement:{frame:{x:0,y:0,w:48,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:48,h:32},sourceSize:{w:48,h:32}},camp:{frame:{x:48,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},campfire_0:{frame:{x:72,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_1:{frame:{x:88,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_2:{frame:{x:104,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_3:{frame:{x:120,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},signpost:{frame:{x:136,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},mount_walk_0:{frame:{x:152,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_1:{frame:{x:176,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_2:{frame:{x:200,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_3:{frame:{x:224,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_idle:{frame:{x:0,y:32,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},banner_pole:{frame:{x:24,y:32,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},banner_cloth_0:{frame:{x:40,y:32,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},banner_cloth_1:{frame:{x:56,y:32,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},glow:{frame:{x:72,y:32,w:32,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:32,h:32},sourceSize:{w:32,h:32}},pin:{frame:{x:104,y:32,w:7,h:7},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:7,h:7},sourceSize:{w:7,h:7}},pin_ring:{frame:{x:111,y:32,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}}},am={campfire:["campfire_0","campfire_1","campfire_2","campfire_3"],mount_walk:["mount_walk_0","mount_walk_1","mount_walk_2","mount_walk_3"],banner_cloth:["banner_cloth_0","banner_cloth_1"]},om={app:"bellwether spritegen",version:"1",image:"props.png",format:"RGBA8888",size:{w:248,h:64},scale:"1"},nm={frames:im,animations:am,meta:om},lm="tileset.png",hm=16,cm=8,um=57,dm={mask:"N=1 E=2 S=4 W=8; set a bit when the neighbour has the same terrain",path:"path_<mask>",water:"water_<mask>",waterAnimation:["water_<mask>","water_<mask>_b"]},fm=["tree","bush","rock","runestone"],mm={grass_0:0,grass_1:1,grass_2:2,grass_3:3,flowers:4,tree:5,bush:6,rock:7,runestone:8,path_0:9,path_1:10,path_2:11,path_3:12,path_4:13,path_5:14,path_6:15,path_7:16,path_8:17,path_9:18,path_10:19,path_11:20,path_12:21,path_13:22,path_14:23,path_15:24,water_0:25,water_1:26,water_2:27,water_3:28,water_4:29,water_5:30,water_6:31,water_7:32,water_8:33,water_9:34,water_10:35,water_11:36,water_12:37,water_13:38,water_14:39,water_15:40,water_0_b:41,water_1_b:42,water_2_b:43,water_3_b:44,water_4_b:45,water_5_b:46,water_6_b:47,water_7_b:48,water_8_b:49,water_9_b:50,water_10_b:51,water_11_b:52,water_12_b:53,water_13_b:54,water_14_b:55,water_15_b:56},pm={image:lm,tileSize:hm,columns:cm,count:um,autotile:dm,overlays:fm,tiles:mm},wm={settlement:{frame:{x:0,y:0,w:32,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:32,h:32},sourceSize:{w:32,h:32}},camp:{frame:{x:32,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},campfire_0:{frame:{x:56,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_1:{frame:{x:72,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_2:{frame:{x:88,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_3:{frame:{x:104,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},signpost:{frame:{x:120,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},mount_walk_0:{frame:{x:136,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_1:{frame:{x:160,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_2:{frame:{x:184,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_3:{frame:{x:208,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_idle:{frame:{x:232,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},banner_pole:{frame:{x:0,y:32,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},banner_cloth_0:{frame:{x:16,y:32,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},banner_cloth_1:{frame:{x:32,y:32,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},glow:{frame:{x:48,y:32,w:32,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:32,h:32},sourceSize:{w:32,h:32}},pin:{frame:{x:80,y:32,w:7,h:7},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:7,h:7},sourceSize:{w:7,h:7}},pin_ring:{frame:{x:87,y:32,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}}},Am={campfire:["campfire_0","campfire_1","campfire_2","campfire_3"],mount_walk:["mount_walk_0","mount_walk_1","mount_walk_2","mount_walk_3"],banner_cloth:["banner_cloth_0","banner_cloth_1"]},_m={app:"bellwether spritegen",version:"1",image:"props.png",format:"RGBA8888",size:{w:256,h:64},scale:"1"},xm={frames:wm,animations:Am,meta:_m},ym="tileset.png",gm=16,Sm=8,km=57,bm={mask:"N=1 E=2 S=4 W=8; set a bit when the neighbour has the same terrain",path:"path_<mask>",water:"water_<mask>",waterAnimation:["water_<mask>","water_<mask>_b"]},zm=["tree","bush","rock","stump"],vm={grass_0:0,grass_1:1,grass_2:2,grass_3:3,flowers:4,tree:5,bush:6,rock:7,stump:8,path_0:9,path_1:10,path_2:11,path_3:12,path_4:13,path_5:14,path_6:15,path_7:16,path_8:17,path_9:18,path_10:19,path_11:20,path_12:21,path_13:22,path_14:23,path_15:24,water_0:25,water_1:26,water_2:27,water_3:28,water_4:29,water_5:30,water_6:31,water_7:32,water_8:33,water_9:34,water_10:35,water_11:36,water_12:37,water_13:38,water_14:39,water_15:40,water_0_b:41,water_1_b:42,water_2_b:43,water_3_b:44,water_4_b:45,water_5_b:46,water_6_b:47,water_7_b:48,water_8_b:49,water_9_b:50,water_10_b:51,water_11_b:52,water_12_b:53,water_13_b:54,water_14_b:55,water_15_b:56},Pm={image:ym,tileSize:gm,columns:Sm,count:km,autotile:bm,overlays:zm,tiles:vm},Cm={settlement:{frame:{x:0,y:0,w:40,h:28},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:40,h:28},sourceSize:{w:40,h:28}},camp:{frame:{x:40,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},campfire_0:{frame:{x:64,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_1:{frame:{x:80,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_2:{frame:{x:96,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},campfire_3:{frame:{x:112,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},signpost:{frame:{x:128,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},mount_walk_0:{frame:{x:144,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_1:{frame:{x:168,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_2:{frame:{x:192,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_walk_3:{frame:{x:216,y:0,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},mount_idle:{frame:{x:0,y:28,w:24,h:20},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:20},sourceSize:{w:24,h:20}},banner_pole:{frame:{x:24,y:28,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},banner_cloth_0:{frame:{x:40,y:28,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},banner_cloth_1:{frame:{x:56,y:28,w:16,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:24},sourceSize:{w:16,h:24}},glow:{frame:{x:72,y:28,w:32,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:32,h:32},sourceSize:{w:32,h:32}},pin:{frame:{x:104,y:28,w:7,h:7},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:7,h:7},sourceSize:{w:7,h:7}},pin_ring:{frame:{x:111,y:28,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}}},Tm={campfire:["campfire_0","campfire_1","campfire_2","campfire_3"],mount_walk:["mount_walk_0","mount_walk_1","mount_walk_2","mount_walk_3"],banner_cloth:["banner_cloth_0","banner_cloth_1"]},Bm={app:"bellwether spritegen",version:"1",image:"props.png",format:"RGBA8888",size:{w:240,h:60},scale:"1"},Mm={frames:Cm,animations:Tm,meta:Bm},Em="tileset.png",Dm=16,Im=8,Rm=57,Gm={mask:"N=1 E=2 S=4 W=8; set a bit when the neighbour has the same terrain",path:"path_<mask>",water:"water_<mask>",waterAnimation:["water_<mask>","water_<mask>_b"]},Lm=["tree","bush","rock","stump"],Fm={grass_0:0,grass_1:1,grass_2:2,grass_3:3,flowers:4,tree:5,bush:6,rock:7,stump:8,path_0:9,path_1:10,path_2:11,path_3:12,path_4:13,path_5:14,path_6:15,path_7:16,path_8:17,path_9:18,path_10:19,path_11:20,path_12:21,path_13:22,path_14:23,path_15:24,water_0:25,water_1:26,water_2:27,water_3:28,water_4:29,water_5:30,water_6:31,water_7:32,water_8:33,water_9:34,water_10:35,water_11:36,water_12:37,water_13:38,water_14:39,water_15:40,water_0_b:41,water_1_b:42,water_2_b:43,water_3_b:44,water_4_b:45,water_5_b:46,water_6_b:47,water_7_b:48,water_8_b:49,water_9_b:50,water_10_b:51,water_11_b:52,water_12_b:53,water_13_b:54,water_14_b:55,water_15_b:56},Hm={image:Em,tileSize:Dm,columns:Im,count:Rm,autotile:Gm,overlays:Lm,tiles:Fm};function Om(r){const e={};for(const[t,s]of Object.entries(r.tiles))e[t]={x:s%r.columns*r.tileSize,y:Math.floor(s/r.columns)*r.tileSize,width:r.tileSize,height:r.tileSize};return e}const Bi=Object.assign({"../../../../themes/aesir/map/props.png":J2,"../../../../themes/aesir/map/tileset.png":$2,"../../../../themes/neutral/map/props.png":em,"../../../../themes/neutral/map/tileset.png":tm,"../../../../themes/wayfarers/map/props.png":rm,"../../../../themes/wayfarers/map/tileset.png":sm}),Mi=Object.assign({"../../../../themes/aesir/map/props.json":nm,"../../../../themes/aesir/map/tileset.json":pm,"../../../../themes/neutral/map/props.json":xm,"../../../../themes/neutral/map/tileset.json":Pm,"../../../../themes/wayfarers/map/props.json":Mm,"../../../../themes/wayfarers/map/tileset.json":Hm});function Bt(r,e,t){return Object.entries(r).find(([s])=>s.endsWith(`/themes/${e}/map/${t}`))?.[1]}function Nm(r){return!!Bt(Bi,r,"tileset.png")&&!!Bt(Mi,r,"props.json")}async function Um(r){const e=Bt(Bi,r,"tileset.png"),t=Bt(Bi,r,"props.png"),s=Bt(Mi,r,"tileset.json"),i=Bt(Mi,r,"props.json");if(!e||!t||!s||!i)throw new Error(`theme "${r}" has no map art`);const[a,o]=await Promise.all([wt.load(e),wt.load(t)]);for(const c of[a,o])c.source.scaleMode="nearest";const n=new Map;for(const[c,u]of Object.entries(Om(s)))n.set(c,new L({source:a.source,frame:new $(u.x,u.y,u.width,u.height)}));const l=new Map;for(const[c,u]of Object.entries(i.frames))l.set(c,new L({source:o.source,frame:new $(u.frame.x,u.frame.y,u.frame.w,u.frame.h)}));const h=(c,u)=>{const f=c.get(u);if(!f)throw new Error(`map art "${r}" is missing "${u}"`);return f};return{tile:c=>h(n,c),prop:c=>h(l,c),hasTile:c=>n.has(c)}}const Xm="aesir",Wm="Aesir: gods and folk of the northern sagas, with rune-lit staves and a fjord-side map.",jm="architect",Qm={working:"#6ee08a",done:"#ffd25a",blocked:"#ff5a4d",idle:"#dfe8f0",unknown:"#8c94a0"},Ym="#140f17",Vm="#eec3a0",qm="#4e5a44",Km={orchestrator:{body:"#2a3a6a",accent:"#d9a83a",hat:"point",prop:"staff"},coordinator:{body:"#9a2f2f",accent:"#b9c2cc",hat:"helm",prop:"none"},architect:{body:"#4a5a52",accent:"#a8f0ff",hat:"hood",prop:"staff"},implementer:{body:"#4a6a8a",accent:"#c4502a",hat:"none",prop:"hammer"},reviewer:{body:"#f2ede0",accent:"#e8c86a",hat:"none",prop:"staff"},researcher:{body:"#2c4a6e",accent:"#ececf2",hat:"none",prop:"book"},writer:{body:"#3e7a5a",accent:"#c46a3a",hat:"none",prop:"book"},ops:{body:"#2e5a6a",accent:"#5aa898",hat:"none",prop:"staff"},generic:{body:"#8a7a5e",accent:"#a87a4a",hat:"none",prop:"lantern"}},Zm="art.json",Jm=6e3,$m={name:Xm,description:Wm,beacon:jm,palette:Qm,outline:Ym,skin:Vm,ground:qm,roles:Km,art:Zm,sayTtlMs:Jm},ep="neutral",tp="Default public theme: the Workshop Crew, a friendly generic crew of builders, scribes and surveyors.",rp="coordinator",sp={working:"#3ddc84",done:"#ffd23f",blocked:"#ff4d4d",idle:"#d8d8d8",unknown:"#7a7a7a"},ip="#1b1b24",ap="#f1c27d",op="#3b4a3a",np={orchestrator:{body:"#7a46b8",accent:"#e8b84a",hat:"point",prop:"staff"},coordinator:{body:"#3e9e5c",accent:"#f3efe6",hat:"cap",prop:"book"},architect:{body:"#2a8f8a",accent:"#2f5fa8",hat:"cap",prop:"staff"},implementer:{body:"#f08a34",accent:"#3b5ea8",hat:"none",prop:"hammer"},reviewer:{body:"#8c2f45",accent:"#7a7484",hat:"none",prop:"lantern"},researcher:{body:"#7d8f4e",accent:"#c8a46a",hat:"cap",prop:"lantern"},writer:{body:"#5a7fc4",accent:"#f2c14e",hat:"none",prop:"book"},ops:{body:"#ff8a2a",accent:"#f5c542",hat:"helm",prop:"hammer"},generic:{body:"#9aa5b5",accent:"#8a5a3a",hat:"none",prop:"none"}},lp="art.json",hp=6e3,cp={name:ep,description:tp,beacon:rp,palette:sp,outline:ip,skin:ap,ground:op,roles:np,art:lp,sayTtlMs:hp},up="wayfarers",dp="Wayfarers: an original fantasy quest party setting out from a hill country of burrow houses.",fp="architect",mp={working:"#62d670",done:"#ffd44f",blocked:"#ff5248",idle:"#ede8dc",unknown:"#958f9e"},pp="#1a1410",wp="#f2c49c",Ap="#4e6a3a",_p={orchestrator:{body:"#3a5aa8",accent:"#e8eef8",hat:"none",prop:"staff"},coordinator:{body:"#7a5a3a",accent:"#e8dcc0",hat:"none",prop:"lantern"},architect:{body:"#5a3a6a",accent:"#2e4a6a",hat:"point",prop:"staff"},implementer:{body:"#7a3a2a",accent:"#c4c8d0",hat:"helm",prop:"hammer"},reviewer:{body:"#b8582a",accent:"#c8902a",hat:"none",prop:"none"},researcher:{body:"#3e4a3a",accent:"#8a3a22",hat:"hood",prop:"none"},writer:{body:"#7a2e3a",accent:"#efe6d0",hat:"none",prop:"book"},ops:{body:"#4a7a3a",accent:"#c8a868",hat:"none",prop:"lantern"},generic:{body:"#9ab06a",accent:"#c48a4a",hat:"none",prop:"none"}},xp="art.json",yp=6e3,gp={name:up,description:dp,beacon:fp,palette:mp,outline:pp,skin:wp,ground:Ap,roles:_p,art:xp,sayTtlMs:yp},Sp="Generated by tools/spritegen. Edit the pack spec there and rebuild; do not hand-edit.",kp="aesir",bp="Aesir",zp="Gods and folk of the northern sagas, with rune-lit staves and a fjord-side map.",vp="Apache-2.0",Pp={size:{w:24,h:32},facing:"right",anchor:{x:.5,y:.9375},frames:["walk_0","walk_1","walk_2","walk_3","idle_0","idle_1","wave_0","wave_1","talk_0","talk_1","raise_0","blink_0"],fps:{walk:8,idle:2,wave:4,talk:6,raise:1,blink:1},layers:{tip:'Frame name + "_tip": white status-light pixels. Tint with the status colour and draw over the base frame.',cloak:'Frame name + "_cloak": grey cloak pixels. Tint and draw over the base frame to recolour the cloak.'}},Cp={orchestrator:{sheet:"sprites/orchestrator.json",displayName:"Odin",cloak:"#2a3a6a",light:"#a8f0ff"},coordinator:{sheet:"sprites/coordinator.json",displayName:"Tyr",cloak:"#7a5634",light:"#a8f0ff"},architect:{sheet:"sprites/architect.json",displayName:"Vidar",cloak:"#4a5a52",light:"#a8f0ff"},implementer:{sheet:"sprites/implementer.json",displayName:"Thor",cloak:"#8a6a4a",light:"#a8f0ff"},reviewer:{sheet:"sprites/reviewer.json",displayName:"Baldur",cloak:"#e8c86a",light:"#a8f0ff"},researcher:{sheet:"sprites/researcher.json",displayName:"Mimir",cloak:"#2c4a6e",light:"#a8f0ff"},writer:{sheet:"sprites/writer.json",displayName:"Saga",cloak:"#c46a3a",light:"#a8f0ff"},ops:{sheet:"sprites/ops.json",displayName:"Aegir",cloak:"#3a7a8a",light:"#a8f0ff"},generic:{sheet:"sprites/generic.json",displayName:"Villager",cloak:"#8a7a5e",light:"#ffc35a"}},Tp="generic",Bp={working:"#6ee08a",done:"#ffd25a",blocked:"#ff5a4d",idle:"#dfe8f0",unknown:"#8c94a0"},Mp={ground:"sprites/ground.json",tiles:["ground_0","ground_1","ground_2","ground_3"]},Ep={tileset:"map/tileset.json",props:"map/props.json",settlement:"settlement",camp:"camp",campfire:"campfire",signpost:"signpost",mount:"mount_walk",banner:{pole:"banner_pole",cloth:"banner_cloth",tint:!0},glow:{frame:"glow",tint:!0},pin:{frame:"pin",ring:"pin_ring",tint:!0},minimap:{grass:"#7a9a6a",path:"#6e5a48",water:"#2e5a7a",tree:"#1e3e34",building:"#d9a83a",background:"#140f17"}},Dp={sheet:"ui/ui.json",bubble:{frame:"bubble",slice:8,tail:"bubble_tail"},nameplate:{frame:"nameplate",slice:4},minimapFrame:{frame:"minimap_frame",slice:8},statusIcons:{working:"status_working",done:"status_done",blocked:"status_blocked",idle:"status_idle",unknown:"status_unknown"}},Ip={$comment:Sp,name:kp,displayName:bp,description:zp,license:vp,character:Pp,roles:Cp,fallback:Tp,status:Bp,strip:Mp,map:Ep,ui:Dp},Rp="Generated by tools/spritegen. Edit the pack spec there and rebuild; do not hand-edit.",Gp="neutral",Lp="Workshop Crew",Fp="A friendly, generic crew of builders, scribes and surveyors. Ships with Bellwether.",Hp="Apache-2.0",Op={size:{w:24,h:32},facing:"right",anchor:{x:.5,y:.9375},frames:["walk_0","walk_1","walk_2","walk_3","idle_0","idle_1","wave_0","wave_1","talk_0","talk_1","raise_0","blink_0"],fps:{walk:8,idle:2,wave:4,talk:6,raise:1,blink:1},layers:{tip:'Frame name + "_tip": white status-light pixels. Tint with the status colour and draw over the base frame.',cloak:'Frame name + "_cloak": grey cloak pixels. Tint and draw over the base frame to recolour the cloak.'}},Np={orchestrator:{sheet:"sprites/orchestrator.json",displayName:"Conductor",cloak:"#7a46b8",light:"#ffe7a3"},coordinator:{sheet:"sprites/coordinator.json",displayName:"Foreman",cloak:"#3e9e5c",light:"#ffe7a3"},architect:{sheet:"sprites/architect.json",displayName:"Surveyor",cloak:"#2a8f8a",light:"#ffe7a3"},implementer:{sheet:"sprites/implementer.json",displayName:"Builder",cloak:"#f08a34",light:"#ffe7a3"},reviewer:{sheet:"sprites/reviewer.json",displayName:"Inspector",cloak:"#8c2f45",light:"#ffe7a3"},researcher:{sheet:"sprites/researcher.json",displayName:"Explorer",cloak:"#d9603b",light:"#ffe7a3"},writer:{sheet:"sprites/writer.json",displayName:"Scribe",cloak:"#f2c14e",light:"#ffe7a3"},ops:{sheet:"sprites/ops.json",displayName:"Mechanic",cloak:"#ff8a2a",light:"#ffe7a3"},generic:{sheet:"sprites/generic.json",displayName:"Villager",cloak:"#9aa5b5",light:"#ffe7a3"}},Up="generic",Xp={working:"#59d66b",done:"#ffd447",blocked:"#ff4d5e",idle:"#e9e6dc",unknown:"#9a9aa6"},Wp={ground:"sprites/ground.json",tiles:["ground_0","ground_1","ground_2","ground_3"]},jp={tileset:"map/tileset.json",props:"map/props.json",settlement:"settlement",camp:"camp",campfire:"campfire",signpost:"signpost",mount:"mount_walk",banner:{pole:"banner_pole",cloth:"banner_cloth",tint:!0},glow:{frame:"glow",tint:!0},pin:{frame:"pin",ring:"pin_ring",tint:!0},minimap:{grass:"#6cb851",path:"#a87b4f",water:"#4a9ad9",tree:"#2f7040",building:"#c4473a",background:"#1b1530"}},Qp={sheet:"ui/ui.json",bubble:{frame:"bubble",slice:8,tail:"bubble_tail"},nameplate:{frame:"nameplate",slice:4},minimapFrame:{frame:"minimap_frame",slice:8},statusIcons:{working:"status_working",done:"status_done",blocked:"status_blocked",idle:"status_idle",unknown:"status_unknown"}},Yp={$comment:Rp,name:Gp,displayName:Lp,description:Fp,license:Hp,character:Op,roles:Np,fallback:Up,status:Xp,strip:Wp,map:jp,ui:Qp},Vp="Generated by tools/spritegen. Edit the pack spec there and rebuild; do not hand-edit.",qp="wayfarers",Kp="Wayfarers",Zp="An original fantasy quest party setting out from a hill country of burrow houses.",Jp="Apache-2.0",$p={size:{w:24,h:32},facing:"right",anchor:{x:.5,y:.9375},frames:["walk_0","walk_1","walk_2","walk_3","idle_0","idle_1","wave_0","wave_1","talk_0","talk_1","raise_0","blink_0"],fps:{walk:8,idle:2,wave:4,talk:6,raise:1,blink:1},layers:{tip:'Frame name + "_tip": white status-light pixels. Tint with the status colour and draw over the base frame.',cloak:'Frame name + "_cloak": grey cloak pixels. Tint and draw over the base frame to recolour the cloak.'}},ew={orchestrator:{sheet:"sprites/orchestrator.json",displayName:"Warden",cloak:"#3a5aa8",light:"#bfe4ff"},coordinator:{sheet:"sprites/coordinator.json",displayName:"Hearthkeeper",cloak:"#7a5a3a",light:"#ffe9a0"},architect:{sheet:"sprites/architect.json",displayName:"Wanderer",cloak:"#5a3a6a",light:"#ffe9a0"},implementer:{sheet:"sprites/implementer.json",displayName:"Smith",cloak:"#7a3a2a",light:"#ffe9a0"},reviewer:{sheet:"sprites/reviewer.json",displayName:"Archer",cloak:"#c8902a",light:"#ffe9a0"},researcher:{sheet:"sprites/researcher.json",displayName:"Ranger",cloak:"#3e4a3a",light:"#ffe9a0"},writer:{sheet:"sprites/writer.json",displayName:"Chronicler",cloak:"#7a2e3a",light:"#ffe9a0"},ops:{sheet:"sprites/ops.json",displayName:"Scout",cloak:"#4a7a3a",light:"#ffe9a0"},generic:{sheet:"sprites/generic.json",displayName:"Hillfolk",cloak:"#9ab06a",light:"#ffe9a0"}},tw="generic",rw={working:"#62d670",done:"#ffd44f",blocked:"#ff5248",idle:"#ede8dc",unknown:"#958f9e"},sw={ground:"sprites/ground.json",tiles:["ground_0","ground_1","ground_2","ground_3"]},iw={tileset:"map/tileset.json",props:"map/props.json",settlement:"settlement",camp:"camp",campfire:"campfire",signpost:"signpost",mount:"mount_walk",banner:{pole:"banner_pole",cloth:"banner_cloth",tint:!0},glow:{frame:"glow",tint:!0},pin:{frame:"pin",ring:"pin_ring",tint:!0},minimap:{grass:"#74b850",path:"#a87b4f",water:"#4a9ad9",tree:"#367838",building:"#e8c44a",background:"#1a1410"}},aw={sheet:"ui/ui.json",bubble:{frame:"bubble",slice:8,tail:"bubble_tail"},nameplate:{frame:"nameplate",slice:4},minimapFrame:{frame:"minimap_frame",slice:8},statusIcons:{working:"status_working",done:"status_done",blocked:"status_blocked",idle:"status_idle",unknown:"status_unknown"}},ow={$comment:Vp,name:qp,displayName:Kp,description:Zp,license:Jp,character:$p,roles:ew,fallback:tw,status:rw,strip:sw,map:iw,ui:aw},nw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},lw={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},hw={app:"bellwether spritegen",version:"1",image:"architect.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},cw={frames:nw,animations:lw,meta:hw},uw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},dw={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},fw={app:"bellwether spritegen",version:"1",image:"coordinator.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},mw={frames:uw,animations:dw,meta:fw},pw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},ww={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},Aw={app:"bellwether spritegen",version:"1",image:"generic.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},_w={frames:pw,animations:ww,meta:Aw},xw={ground_0:{frame:{x:0,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_1:{frame:{x:16,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_2:{frame:{x:32,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_3:{frame:{x:48,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}}},yw={},gw={app:"bellwether spritegen",version:"1",image:"ground.png",format:"RGBA8888",size:{w:64,h:16},scale:"1"},Sw={frames:xw,animations:yw,meta:gw},kw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},bw={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},zw={app:"bellwether spritegen",version:"1",image:"implementer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},vw={frames:kw,animations:bw,meta:zw},Pw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},Cw={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},Tw={app:"bellwether spritegen",version:"1",image:"ops.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},Bw={frames:Pw,animations:Cw,meta:Tw},Mw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},Ew={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},Dw={app:"bellwether spritegen",version:"1",image:"orchestrator.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},Iw={frames:Mw,animations:Ew,meta:Dw},Rw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},Gw={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},Lw={app:"bellwether spritegen",version:"1",image:"researcher.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},Fw={frames:Rw,animations:Gw,meta:Lw},Hw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},Ow={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},Nw={app:"bellwether spritegen",version:"1",image:"reviewer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},Uw={frames:Hw,animations:Ow,meta:Nw},Xw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},Ww={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},jw={app:"bellwether spritegen",version:"1",image:"writer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},Qw={frames:Xw,animations:Ww,meta:jw},Yw={bubble:{frame:{x:0,y:0,w:24,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:24},sourceSize:{w:24,h:24}},bubble_tail:{frame:{x:24,y:0,w:8,h:6},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:8,h:6},sourceSize:{w:8,h:6}},nameplate:{frame:{x:32,y:0,w:16,h:12},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:12},sourceSize:{w:16,h:12}},minimap_frame:{frame:{x:48,y:0,w:32,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:32,h:32},sourceSize:{w:32,h:32}},status_working:{frame:{x:80,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_done:{frame:{x:89,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_blocked:{frame:{x:98,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_idle:{frame:{x:107,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_unknown:{frame:{x:116,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}}},Vw={},qw={app:"bellwether spritegen",version:"1",image:"ui.png",format:"RGBA8888",size:{w:125,h:32},scale:"1"},Kw={frames:Yw,animations:Vw,meta:qw},Zw={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},Jw={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},$w={app:"bellwether spritegen",version:"1",image:"architect.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},e0={frames:Zw,animations:Jw,meta:$w},t0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},r0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},s0={app:"bellwether spritegen",version:"1",image:"coordinator.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},i0={frames:t0,animations:r0,meta:s0},a0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},o0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},n0={app:"bellwether spritegen",version:"1",image:"generic.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},l0={frames:a0,animations:o0,meta:n0},h0={ground_0:{frame:{x:0,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_1:{frame:{x:16,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_2:{frame:{x:32,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_3:{frame:{x:48,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}}},c0={},u0={app:"bellwether spritegen",version:"1",image:"ground.png",format:"RGBA8888",size:{w:64,h:16},scale:"1"},d0={frames:h0,animations:c0,meta:u0},f0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},m0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},p0={app:"bellwether spritegen",version:"1",image:"implementer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},w0={frames:f0,animations:m0,meta:p0},A0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},_0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},x0={app:"bellwether spritegen",version:"1",image:"ops.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},y0={frames:A0,animations:_0,meta:x0},g0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},S0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},k0={app:"bellwether spritegen",version:"1",image:"orchestrator.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},b0={frames:g0,animations:S0,meta:k0},z0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},v0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},P0={app:"bellwether spritegen",version:"1",image:"researcher.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},C0={frames:z0,animations:v0,meta:P0},T0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},B0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},M0={app:"bellwether spritegen",version:"1",image:"reviewer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},E0={frames:T0,animations:B0,meta:M0},D0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},I0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},R0={app:"bellwether spritegen",version:"1",image:"writer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},G0={frames:D0,animations:I0,meta:R0},L0={bubble:{frame:{x:0,y:0,w:24,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:24},sourceSize:{w:24,h:24}},bubble_tail:{frame:{x:24,y:0,w:8,h:6},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:8,h:6},sourceSize:{w:8,h:6}},nameplate:{frame:{x:32,y:0,w:16,h:12},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:12},sourceSize:{w:16,h:12}},minimap_frame:{frame:{x:48,y:0,w:32,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:32,h:32},sourceSize:{w:32,h:32}},status_working:{frame:{x:80,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_done:{frame:{x:89,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_blocked:{frame:{x:98,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_idle:{frame:{x:107,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_unknown:{frame:{x:116,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}}},F0={},H0={app:"bellwether spritegen",version:"1",image:"ui.png",format:"RGBA8888",size:{w:125,h:32},scale:"1"},O0={frames:L0,animations:F0,meta:H0},N0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},U0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},X0={app:"bellwether spritegen",version:"1",image:"architect.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},W0={frames:N0,animations:U0,meta:X0},j0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},Q0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},Y0={app:"bellwether spritegen",version:"1",image:"coordinator.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},V0={frames:j0,animations:Q0,meta:Y0},q0={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},K0={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},Z0={app:"bellwether spritegen",version:"1",image:"generic.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},J0={frames:q0,animations:K0,meta:Z0},$0={ground_0:{frame:{x:0,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_1:{frame:{x:16,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_2:{frame:{x:32,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}},ground_3:{frame:{x:48,y:0,w:16,h:16},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:16},sourceSize:{w:16,h:16}}},eA={},tA={app:"bellwether spritegen",version:"1",image:"ground.png",format:"RGBA8888",size:{w:64,h:16},scale:"1"},rA={frames:$0,animations:eA,meta:tA},sA={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},iA={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},aA={app:"bellwether spritegen",version:"1",image:"implementer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},oA={frames:sA,animations:iA,meta:aA},nA={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},lA={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},hA={app:"bellwether spritegen",version:"1",image:"ops.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},cA={frames:nA,animations:lA,meta:hA},uA={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},dA={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},fA={app:"bellwether spritegen",version:"1",image:"orchestrator.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},mA={frames:uA,animations:dA,meta:fA},pA={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},wA={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},AA={app:"bellwether spritegen",version:"1",image:"researcher.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},_A={frames:pA,animations:wA,meta:AA},xA={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},yA={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},gA={app:"bellwether spritegen",version:"1",image:"reviewer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},SA={frames:xA,animations:yA,meta:gA},kA={walk_0:{frame:{x:0,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_tip:{frame:{x:0,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_0_cloak:{frame:{x:0,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1:{frame:{x:24,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_tip:{frame:{x:24,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_1_cloak:{frame:{x:24,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2:{frame:{x:48,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_tip:{frame:{x:48,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_2_cloak:{frame:{x:48,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3:{frame:{x:72,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_tip:{frame:{x:72,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},walk_3_cloak:{frame:{x:72,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0:{frame:{x:96,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_tip:{frame:{x:96,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_0_cloak:{frame:{x:96,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1:{frame:{x:120,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_tip:{frame:{x:120,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},idle_1_cloak:{frame:{x:120,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0:{frame:{x:144,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_tip:{frame:{x:144,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_0_cloak:{frame:{x:144,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1:{frame:{x:168,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_tip:{frame:{x:168,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},wave_1_cloak:{frame:{x:168,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0:{frame:{x:192,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_tip:{frame:{x:192,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_0_cloak:{frame:{x:192,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1:{frame:{x:216,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_tip:{frame:{x:216,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},talk_1_cloak:{frame:{x:216,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0:{frame:{x:240,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_tip:{frame:{x:240,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},raise_0_cloak:{frame:{x:240,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0:{frame:{x:264,y:0,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_tip:{frame:{x:264,y:32,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}},blink_0_cloak:{frame:{x:264,y:64,w:24,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:32},sourceSize:{w:24,h:32}}},bA={walk:["walk_0","walk_1","walk_2","walk_3"],idle:["idle_0","idle_1"],wave:["wave_0","wave_1"],talk:["talk_0","talk_1"],raise:["raise_0"],blink:["blink_0"],walk_tip:["walk_0_tip","walk_1_tip","walk_2_tip","walk_3_tip"],walk_cloak:["walk_0_cloak","walk_1_cloak","walk_2_cloak","walk_3_cloak"],idle_tip:["idle_0_tip","idle_1_tip"],idle_cloak:["idle_0_cloak","idle_1_cloak"],wave_tip:["wave_0_tip","wave_1_tip"],wave_cloak:["wave_0_cloak","wave_1_cloak"],talk_tip:["talk_0_tip","talk_1_tip"],talk_cloak:["talk_0_cloak","talk_1_cloak"],raise_tip:["raise_0_tip"],raise_cloak:["raise_0_cloak"],blink_tip:["blink_0_tip"],blink_cloak:["blink_0_cloak"]},zA={app:"bellwether spritegen",version:"1",image:"writer.png",format:"RGBA8888",size:{w:288,h:96},scale:"1"},vA={frames:kA,animations:bA,meta:zA},PA={bubble:{frame:{x:0,y:0,w:24,h:24},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:24,h:24},sourceSize:{w:24,h:24}},bubble_tail:{frame:{x:24,y:0,w:8,h:6},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:8,h:6},sourceSize:{w:8,h:6}},nameplate:{frame:{x:32,y:0,w:16,h:12},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:16,h:12},sourceSize:{w:16,h:12}},minimap_frame:{frame:{x:48,y:0,w:32,h:32},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:32,h:32},sourceSize:{w:32,h:32}},status_working:{frame:{x:80,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_done:{frame:{x:89,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_blocked:{frame:{x:98,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_idle:{frame:{x:107,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}},status_unknown:{frame:{x:116,y:0,w:9,h:9},rotated:!1,trimmed:!1,spriteSourceSize:{x:0,y:0,w:9,h:9},sourceSize:{w:9,h:9}}},CA={},TA={app:"bellwether spritegen",version:"1",image:"ui.png",format:"RGBA8888",size:{w:125,h:32},scale:"1"},BA={frames:PA,animations:CA,meta:TA},MA="data:image/png;base64,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",EA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFl0lEQVR42u3dMYskRRjG8fkGJqKCFy0LJwdyyQqywmF8wYUGfgIxvkgwFozFYCPD+wqmGgmGJvslRIyMHKmRXnr7ema6uuut6Zr5/aGYm2Pmqaeq3/fp3tlmdrMBgEvn3Xfe3/YH/4D6rLKApPfzL78/GhFz8H++DUB/fn3+8c92241V7k9kg41p9+coMQ//5x3Q9JfVZxp//7udPWfo/kQ2WHrvt9/9sFc/jS9vrxfPwf/5BjT9MvX55q//Ayj3Kih0fyIbrNM+pr+kGfg/74CmX64+uwBazf5EN1h6z/2b20ljjQHRuv/WA5p+ufpMVz0pgHKufsLrs0aDpeJ+8dEHu8dDY60B0br/FgO6/7lF9P60rj+1Pv/89afdyJkr2n+VBhvTTxuRHruzb3q+1oBo3X/pAur/yBbhP72ua5ZTHd/W9cfqs7+na/FfvcF++/H1o43ozrylG5j/mAIahkOE/ykBFL0/reofqs+75893o0QAlfJftcGSxlB/+Mj/ugPuWACV8J9e12+WmvvTsv6x+kz7+frqalEA9fXTSP7nXFlVbbD03k6/exyOEpeg/Mc3wDAcIvzvC6Do/WlVf2p9Lg2gof+XT548epwdQJENNjxrdo0wfL6kgfmv2wDDgCjtP70uNUqUfu39P2V9pnBIY0741PIf0mDDO27TSMWf9MY+j1hyLwr/dQuoHxD9kDjUAHP2P1I/t4HXdgLLrc+5ARRWn5ENll53+/X3DyMtfuy+k26k57kfkPF/+gYYhlBJ/zX0I/dffZ5oAZ32s1df7X61mx7T8+4+lH33o/Qvufm/7ICmX74+V3N8Ixusr50ek373vK899ji1gfk/74CmH1OfueETsj/RDdbpdze2pfd2/z6kvZaAaN1/6wFNP64+c05cYfU5dwFzin+NB+DYHAJuHf7pn+YKKNr/7AXMufwfnoFf3VyPjvSa9FjjAOTOsSb/lxRw9Mv31yqugOYuICeAxj6D6N8Gvm9MvZtyyQHIPchr8t96A9Avoz+3Ppd+BlTSf/YCcm+13t389uL6YXzzxc3OYP/XqsORviYgfVvblO8rGfpP+lMOQE5I1PTfSsAt2f+cGjo3/ZLHd2595t5CEOk/ewE5zbVPP41PPn76aLz8/NPd6H5FmPNh2ZwDMHUda/S/loCr5Z9+2f7Kvns+0P+sBeR8X8xQv5sjsoGnHICpc6zR/9oCrrZ/+svqc2kAlfQ/uoD0f5EBdEx/6QE4pr80gKL9n3sD0L85ef3PDaDS/t+aoBMoFUD75og6AFP85wRQbf+tB9w57E9L+nPqc2kAlfb/1q36feH+/3WTzPnKzkNzjC0g947N4e3l/TnGNn/OQY70f0kNQL9wA2fW5yaTGv43Y427L4BymmvKHPuuUDYLmBJAc9cR4b/VgKvhn375+pyjWcX/lAAqEQ5PP3zvYZTUnhpAS0JuuEdpDZ89u9qNUn+zq6WAq32CoV8/gKr5H4ZDV5Alm2w4R+kGHs4RqT2co4X9maK/tAFO7Z9+o/pj4sMAKtVkY+EWsUmR2sOgjj7A0QFHn/6p9Uf/Znj03xGP0B77Hpy1ez7kveRc9OmvWR8AAAAAzohtD7sB4CQhZBcAnIT7+/utIAJw0gACgOo/fqUAcvUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEATdF8T0Or3lbTuH9Bc1iGg6Tu+cJIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBju7u623UhEzhWhX9N/67R4fGvqt95fTS5gqF96Dv4vq37on1l91lxAxCL4v6wGoH9e9fnWAiILlL6Aph+r31p9biLN15jjnPy3HnBOMPX1W69PrOxzFA1A/5LqEwIOAAAAAAAAAIrxH5Xu2WGLJPtjAAAAAElFTkSuQmCC",DA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAEv0lEQVR42u3dsYokRRgH8HkDE9HAiw7hQDBRDwQTA6MNjOUQH8DYaAMfYB/A2PBewfTORLjwks18AgMjs5Eetpeesu2p7qqvprvv94NiWdj9+uvqqv/M7vQwhwMAAFfw/nsfHseG/qHd+nz7z/E4/Pn++11vsK7Oy9ub0VHrOPrfd0CrX299dqFzfP3iNHJ7CJ2fyA02VTs9jv4FtPpx67MLnu7rKXz+/j07gELnJ3KD5dYu2cD633dAq193fT4GUIXwKZ6f6A2mvoBWfz31u3H34vOzB52p/wGFr89WE/Tzd59t+gJvvf+t1R/+iWh+6qzPv17/ehpzr0OTAIreYGn9biLS79ccEFvvv+YCGj56RvTf/dxws1zj+m69/tj6LAmgqP6bb7A/fvnpbCLSr/pfd8Cl4RDRf04ARc/PVutPrc+72x9Oo0YA1eq/6QbrakRvYP3HLqBLAVSj/9P/KQabpeX87Hl9dvP54/ffFAXQsH46igMoaoN1v9vX78efd7f/+X6tAbH1/mtugDQcIvr/vwCKnp+t1s9dn6UBlPZ/8+TJ2dfFARS5wdJHzXT0J1RaW//tNkAaELX7736u2yhR9VvP/zXXZxcO3VgSPq36D99g/ehqjY3Sm+L033YBDQNiGBJTG2DJwo+sP3cDR9VvtT6XBlB0/6EbbLiIcsfwGDnH1P91FtBYCNXsP7p+q/lf8/q8+vyUnEDu5uoX0XAxjY3hU+5D5t2aNS7A1Hmsvf+9B7T6l+vnrs9VPgAv3WC5t3IX17/wXpWSgEhDYmv9ry3gIvqPrt9i/tdSf+mzt8j+Fx8g941saw24swl6OA8BvSwgxv5cqtV/dP21zn9E/ZYBNOv69geZOsCSzVVyAul7VXJeKcm5AHPPI7L/PQRccUDMeDNk7frpul/l/Fesf5UAyrm+cwMod3OlJ/DtFx+Pjt9evTl9fTz+Q/25L9XODaC5IVe7/z0E3NKAmLOGIuqnrwpF9d/y+l5any0DaNb17Q8ydQJLNlf66sulE5h7N2UaKDkXYEnIRfW/h4AbHiei/6j6Y3dzR89/VP3c9VkaQGHXtz+JqRMoudV6+AgzdYwlL9MO+8q5AEtDIqL/PQTcnGcopWso4gFs+P+uqPmPvL5z12fJ7RuR1/cQdQLpMZ5/+uxs3Hz95WnUuAkrNyBKjlW7/60H3Nz1UzL3W60feX23vj6bnID678YCMv/qmyD11VdfAKmvvvrqLy7ePx2veZDwBE2OEVnbAlJffQEkgNRXXwDlH+PZRx88jq0HUHcOX33y9DQsUPXVrxgOfQDV3GTpMWpv4PQYkbXTY2xhftRXf7X1x4qnAVRrk42FW8QkRdZOgzr6AkcHnPrqX7v+YezjeiM/o7zl52+vveep3mt/fLL66q+1PgAAwA4dj+efBZ9+DxAeQvf396dhNoCmz3664OlDyKwATXn2A6zqWREAAAAAAAAAAMDubP1uTXebwkY3V6v3qkSdR4v+BbT67+T13cvmijyPPQR05DlE96/+9cMnrP+9/Gmx5fPYesB5duLZD1hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDgX21GOioCKBKwAAAAAElFTkSuQmCC",IA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAABB0lEQVR42uVVMQ7CMAy89zAyMjAx8IBODIwMDDygAxMTT+hLeBcDA0tQI0VyLVtyEodSMZwSO8757KQNnq93GB63iHGebDqXbOrj4DF8lOKldSmPxmvRJPnQD+eQcLx2gdoaaJx1T2l8Kax5UEvqUVArXolntKkPSzk5qRAPbZMGdLtNBJ9LNvXVQOLS+HNjLXlBnZfDPkLaIK0lnwTLOueio+bjvFYf15RiYBGric/Zk9MojTsn1loDSoXf+9Nkvl2vXBpSo4droBo14JeKmAPI7djc8NBIDxvfENWysbXcKLn6LQryaGJJLfAmXPQ/YO5v03IY3nnQ+klqdYu0RuTmw789exwfddfb+8/6hzMAAAAASUVORK5CYII=",RA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFHUlEQVR42u3dP4skRRgH4P0GJqKBG4gIBwdGniheYryIaGpgZHSmpsbCxnLBRoZ+BVM1EQxN9kuIGBk5UgMlveVs/623p6vneaDpHd379dvVVe/03szcXl0BAHAGr77y+uHUpn6InZ9p//vfhwf/PT2+mAWWcn759OnJrdZx1L/vBi1//vz88aff/rdNPXbo+EQusL7s8jjq16Dl15+f33z73bHp/PXP4fDDn4fj4yl3QaHjE7nAxmYvWcDq33eDlr88OzWc3ITy12OPFzo+0QtMvgYtfxv56W7n9vN3J/0dUPj8XGuAXn543fQFbr3+1vK7PyIanzrz84+fvz9uU6/DKg0oeoGV+WkgysdbbhCt119zApWvrtSuP31fd7Gc4/q2nn9qfi5pQFH1r77Afn359YOBKPfq33aDK5tDRP1jGlD0+LSa3zc/b17cHrcaDahW/asusJSR91ELWP2xE2ioAdWoP31fd7GsOT4t5w/NzzSe73/21aIG1K2/3BY3oKgF1s3NJ9ItvNYtqPrjF0DZHCLqf6wBRY9Pq/lj5+fSBlTWf3N9/WA/uwFFLrDyWbN8Ju4+3mKDaL3+NRpE7frT96WFEpW/9vifc36m5nDcZjSfteoPX2Bpu31x07ttuUG0Xn9kg+g2ib4FMOdVsMj8qQu49fk5twFF1x+6wPIkGsrOA9S9rR/75jj1n2cClU2odv3R+WuN/xbn52bGZ+kCGzuJvvz42TEj77tf532ebFM+r1KjQQzlb73+PTdo+cP5Y+dn2m/uCXjpAhs7QOnPpZxc5Kmvu/npsyrpMytDbxev0SD6zqOF+rfQ4KLqj85fY/zXyB8zP+fevUXWP2uBjV1cZX73dvrUlv//lM+rzKk/5485jy3Wv6UGVzaJ2vVH5681/mvkD83PJQ0oqv4HB+k7gTmLa+4CPv640Pm8ythXSsZcgKnnEVn/HhrcY39fU3MOReWX8z56/M+dv7QBhV3fKQ1oyuIqT+CTZ2+f3FKxaZ+/L+dPfal2SgOa0+Rq17+HBjenQUydQxH5+UfT/KpQVP1rXt+h+blWA5p8ffNB+k5gzuIqX30ZOoGp76YsG8qYCzCnyUXVv4cG1z1ORP1R+afezR09/lH5Y+fn0gYUdn3zSfSdwJK3WnefYfqO8cXzN2c3t7F3QHObRET9e2hwU+5Qls6hiCew7gdqo8Y/8vpOmZ9L3/8TeX0Hfwybs7hOHeO9d5482G4++uC4zf0Hsbqv1oy5AEvOI6L+1hvclB/jl459q/mR13fK/FySu0b9YSewpfwtXuCWG9wa9cvf9/y8qAYkf78LQH7b+QZIvnz558kvw/MzYs2DhHfQ4hiR2SaQfPkakAYkX74GNP4YT9547b+t9QaUzuH507eOmwkqX37F5pAbUM1FVh6j9gIujxGZXR6jhfGRL3+z+afCywZUa5Gdam4RgxSZXTbq6Asc3eDkyz93/tVjv9A+6neUr/n7t7dec1/ttX99snz5W80HAADYkcPh4e+CLx8DAOz3Luj+/v7gLggAuJy7n77HAAAAAAAAAAAAACyVPqvS8rs0W68fLC7noUHLd33xJAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfoMED9cMHzM/IEDiOoX4OWf6HzM/oE7u7ujhl53/0679VvAciPm59pv9n5Gb3A8jGGvla/Bi3/MtdX6AmsQf37XQDyrS8aZwIBAAAAAAAAAAAAAAAAAACb9C/gK3xvgWTU7AAAAABJRU5ErkJggg==",GA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAGA0lEQVR42u2dvYoUQRSF5w1MRAMNRARB0EQFURBBMDDQfANDg42MRXyADYxln2BDAwNNjQ1N9i3EyMiWGrhSU/Z0V1fdW317+vug6Fl2PH3q556uHmd2NhsAWC0XL1zuTo7ublt4zIgAQPPwkfbjd9etciD6Wvw7/APork8JoLOfXffrT+d3FzTUgVrD4d8fnX3sbVrbwzHfNf2Y2z8BjX7p+gy7HQmg0GSdTt0FmY7PUAdqi2tIO9avOc9YQNSEhAf/3gPO2j/65etTY42ajk9O+FgVr5yjZntoOQEe/HsPOGv/6Netz76NxJTdj+n45Ii3CId0e6g9AaX98ODfc8BZ+0dfL4DkQuNqfeYGUElxxfqP37+Z9QpQ2g8P/j0HnJX/+BbRy/h41h9an9LOP33YNk/+Rzugtf1M9cNAaLzOlDsBtbdgc/r3FnDpa0fa/sPv42JpMT6Hpp+uTxnP0gCy8p/VAY3XB0T/88nxzkDER8uAE/3aCZ7Lv5eAS8PBwn9OAFmPz1L1h9bnnaPjbbMIuOKMyO2AVgA9O3lnWsBDE1BzD+zBv4cCGAsgDf/hOXGxtByfpesPrc8wnteevlS7AKdNJYD2dUAzgI6/nO0YDz+H9urRNdMJ0Aqgufx7KIA0HCz8DwWQ9fgcgv6+9akRQLH/51ev7hzVAqivAyXFNaQvLf7ZegLCc6f2w5N/LwE3FhC1/sNzQqFY6c89/i30pYVwCE3Cx9sFOLvAandAD9+eDDbtAu4LiJodkAf/XgIuDojQcgpgqv845Cz0pxaw9/kdW5/aAaTlP7sDpYMTOj6mLQM09QWyqQExNYC8+fdUAHEIWfi31m89/hb6Jeuz9A7AZHysC0wW0a2j11sNOcaP5Rhvub1MgEf/Sy8A9Oepr3B0dwFuUWDy74KOmAyP5cobHodjjf4U/6VXYS/+PQaclX9r/Vbr30N9xZ+H9HIBblZgcv8p+qHFW//499YBVxpAXvx7KoA0JLT9W+u3XP9z15cEUMkdgJX/nZMMdaDm6jU2QPLz1HOk/1OSMwE159D2fwgBt+9FaS3/lvrpurce/7n007dMeLoAZwVQjXjcgRf3bvzXgv7Xb9+3j60CKJ6AmnNo+z+EgMsJiBr/VvpyayrvibHy33J+x9anVQBVz6+cZKgDNQEk/9WbdiBtUz+nkgZKzgSUBJCV/0MIuPg8Fv6t9PvezW09/lb6ueuz9hbMbH6lE0MdKCmuWH/fLisdoKnpHPvKmYDSkLDwfwgBN7RD0V5DFhew+AO1VuNvOb9T12dNjVnO7yanAxp/je/+7Zs77fmTB9tWMjib5E82WEyAtf+lB9yU9VM79kvVt5zfKetzE/1xei8X4EkdaBFApR/3sJwAL/6XXgDoz6svz6n5SJWl/9ET1BQXE3C4AefJP/rLvQC72AF53IKu6Qq89IBDf6HrPxUXwfgk3m/B0nOkg7/WWzD00Xd/B5ATQN5vwXIDiFswbsHWegsmz3Pnv9UO6OaVS//aXAGktQMKfXh06/q2cQvGDmUJO6AazHdAcTiIYFxk2gHUV8Aau6w+ba0A2udfzlNbwGPjU7tA0V+vvkYAmfnvE08DqDYcNsn7dvoKWEN/Xzho3IL1jVH6hjaLCbYOONG3KoBW/tEf1rcKIA3/m6Gv67X4XnIr7bHvtNf8auONMvu+Olkj4Mb0tXagc/lHf1zf+/oEAAAAsKXrOnYrANCO8/PzjuABgFl2OyGAQmMXBADA9hD/sO5dEcUVnSPeHi6tH9b+CWj0Vzu/LcKh1SAttR9LD7gW/tGntoAFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHPQjYB/gBWvT8sOdBngn4BGf6Xr07oDp6enWw05xo/liH8KAH279RmObtendYHJOcYe45+ARn+d9WXagRbg/3ALAH3qCxYOCwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFzyFxpalT/pUl2LAAAAAElFTkSuQmCC",LA="data:image/png;base64,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",FA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAE8UlEQVR42u3dvY4cRRAA4H0DEgQBlpAQkiUEGSAECfEFRDwHEc9CTOjQoeUIQUROchKRIwcWQo6IWNSLxpprz87OT1fv9Oz3Sa3z2r6a6u7q8t7drPdwAAAAAKCmP/45Ht995/3T6B7fxMS7SedD/lCvPtPvvf73eBqbqt/IA5bi/PXbz4Oj5DXkv98GLf76+kzPdu6ffH188vf/H+dcP3R9Ig/YWOwa17j1/PfQoMVfX59pvPzzlzdjbvMJW5/IAzYldo1r3Gr+rTbofnOMXp+W48+pz27kzefS94BC1yf6gKXPefHi5WlExZd/3QMwtznMvUY/Zo39bT3+lPpMTWfpXofWZ40DlmI/ffr8FOP3n358q7j6H+W/7QOQN4eI/PNr1Njf1uNfqs/UgD69++E05jagyPyrHLD0uV38Z89+DTnA8q9TQOcaUMn809/rH5Ya69Ny/Kn1mdbzwy+/X9SAhvIv1oCiD1g/yRT/1avXD34vPU5jqw2i9fxLHoC8OUTkn1+jxv62Hn9KfS5tQOfyv3v06MHHVQ0o6oDl1+jid6P/eIsNovX8azWIkvmnv5cOSlT8a6z/teozNYc0ljSfWvmHH7BupPsOhsbWG0Tr+Uc2iLxJnDsAc/M/1+RKxZ97gFuvz6UNKDr/0APWL6L+yCfRLdDcb5DJ/3oFNNSESuYfHb/W+qvPK06gX0T9YhqK33/Knf+oV/632aDFL1efS246Da/PpQds6mTG4ufXyOOnW8UvvVZlTYOY0iS2nP/WGlxE/tHxa6z/teLn11j67C0y/8UHbMrhGoufT6L/592/1FNeq7I0/+5zL81jq/lvpcGd+3KpVP7R8a+5/pHxh+qzdAMqtr/dRcYmsORwTV2g7nH351Nfq5L/pGTKBsydR2T+e2hw5xpEqfwj4+d1X3P9a8Zf+sy2Rv6TGtDSw5VP4LvPP35rpPgpyfTr/BpzDu9YgfY3YE2TK53/HhrclAaxJv+o+N2Xpt1PhaLyr7m/l+ozqgGt3t/uImMTWHK48p++5BPIR3537dx7RaZswJImF5X/Hhpc/zoR+UfFH7qbO3r9o+JPrc+1DShsf7tJjE1gyeEa+ybi0Fjz3wNMiT9UdNfMfw8NbuwZSukaivgHrP/9rqj1j9zfOfW59v6fyP29uAFLDteUL/NKLNCcDVg6j6j8W29wcxrEmhpqOX7k/rZen9Um0MWO6NJz8l/bfK6d/1YLKDJ/8fddn+ETEH//Dc76i7+4hmpM4NwduPnY6ga0nr/4+47fcn2GT6D/ZcAXnz1+MO6+/eo01vzfxPLf/wEQf9/n65An359QfxKHFS4t0NrY+Sbki99C/hq0+LdWn1Ub0OMP3nszSsYemkdk7DTSHL755KPTKPWuCc0WUHD+4u88ft4cuoIsecjya5Q+wPk1ImPn12hhfcQXf7Pxh4LnDajUIRtqbhGLFBk7b9TRGxzd4MQX/9rxD0NvVhf5Dp01331y6zmP5V76zQPFF3+r8QEAAAAo53h8+F7w+WOA8Cak8QBXefZzf3+v+QAAnhUBAAAAAAAAAADsS7pVvOUbpFrPH276cNV4rUrkPKLz16DFv9n93csL2VqeR+sNrkb+4jtbKCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaMJ/yUZTHJP/Sy4AAAAASUVORK5CYII=",HA="data:image/png;base64,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",OA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAE9klEQVR42u3dPW4kRRQA4LkBCWIDHCGkRSuIFiQEEkKEDvYAjomIifYIPsAGjgj3HhBATuKMgBgQERGDenCt2rXt/n81Xe3vk0rWSJ7Xr6pevWl7Z9aHAwAAZ/DuO0+OXUP+oD5DJ9DEub581jnWuo78930AxN9xfUZOoC92fh35a9DiP7L6jJzA2NhLFkj++z4A4u+4PqMnIL4GLf524k+9Aw6vz1IL9O3zi6o3uPb8a4vfPiDWZ536/OPHH07jz99/fjOur573XrdYA4o+YHn8ZiHyx1tuELXnv2YBtV85I/Jvvi8dlnPtb+3xu+qzqwGNvQOKyr/4Afvl1ff3iiv/Kv9tN7i8OUTkP6YBRa9PrfH76vOrl1en8fe/x9NIDejXf47Hc+Vf9IA1MaIPsPxjC2ioAa2Rf/N96bCUXp8912eznh9ffTPrR7Cu/POxuAGtfcDy2O3x2/XLtx5vrUHUnn/EAcibQ0T+DzWg6PWpLf7U+kwNqP37tb67n6H8Ly8u7n2dvD7RB6wvfhppQmtsrvzLHIB2g4jIv/m+5qBExd9C/ZSqz6Y5NKPdfDZTnyUOWHrl/em7L3rHnPeiyP88BTSmQeQHYM7aRMafeoCj4peqz7Ub0Br5Fzlgt6//f/7Ni48GFyjdcst/+w0uNaGo/KPjl1p/9bmBCaTYKUb6BVh6nLrznPjy3/cBEH+d+tzi/hY5YM3z8vhdY258+e+7QYu/Tn0u+REvKv8iByw9r7lGVHz5n6mA7q4RlX90/FL1s4X6nNuAIvN/6yIRxZOem76OucaYz6q0Y6ciHdqAqfOIzH8PDS5vEjXFT2tTYv1LxB+qzyUNKCr/zo1Y63DlE3jx6Ye9I31f+01SfW+UyhvKmA1Y0uTWzn8PDa7rOmvXUET89C9s7ffERK9/dPyh+ly6r2H7my6y9uE6ZO+aHZpA1+dU+j6rkjeUMRvQN4/S+e+hwbWvE5F/VPyud3NHr39U/LH1ubQBhe1vmkTfBOYcrnb8MXdZaZGauK//uv9ZlaHFH3sHNLdJROS/hwY35Q5laQ1FvIC1P1Abtf6R+zunPqc2oOj8R/8Ylopz7OHqij0Uvyn2qa8AUzdgTpOIyr/2Bje1fqbmv4f4kfs7tT7n3gWFrv/YCcw5XHMWaO7vmcbGf2geNeS/tQZXKn/xnxzP2YAi8198wMa+F2XMiF6ghxrE0AZvPf9aGkSJF5jHGL/m+gyfQPtV+LNPnt4bl19/fhpL/k9i+Z+/wUXnL/6+z9chT749ofYkDgsMLdDS2Pkm5ItfQ/4atPiPrT530YC6rhEZO+IaVRdQ5esj/pnjl2pAT99/782ovQE1c/jy2QenoUDFF3/F5pAa0JqHLL/G2gc4v0Zk7PwaNayP+OJvNn5X8LwBrXXIuppbxCJFxs4bdfQGRzc48cU/d/xD1798RP6N8pJ/f3vrOfflvvafTxZf/K3GBwAAAAAAAAAAAAB42PFO+7FVAQAe192QVQAAAAAAAAAAAABYy+3t7bHmd2jWnj84XOahQYtvf/EiAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsF3HAfKHR1yfkRNonn9zcxO6QPLf9wEQf8f1GT2BFDuy+OW/3wMg/s7rM3oC4mvQ4ot/vgvcXUP+ClR89Vl8AiXIf78HQHzni8opIAAAAAAAAAAAAAAAAACgz3/7eTCi835l6gAAAABJRU5ErkJggg==",NA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAgCAYAAAA/kHcMAAACCklEQVR42u3bO1LDMBAGYN+Ahhk6jkBByREywwVyBAoOwlBygJScg4qaLhUMFR3cwIySLLP5JT8ka2UF/zuzxCRyHPvTw3aUpjnE+dlFmzP1+35/vniJZaZuY45sVAy9Xl0Z98T2+aZdXV9mSfdeffD4mit/t7qKStmGrD9Hyn64x/uPBy9xP9u3tZdemfXtPl0clrHM+9ePl1jm8WmzSwm3/FdGg8ce+K5EeI0eaiGyTky6dULosRUntcLpSqehXSB8F7iGPwIHdIEXcAwNj+C4vDv+7o8cxFA3nJoCid1NqBtKqXBunRB6bI+U0sN1oQu4hh9Eb9todJ196DpN0LevGw8cu5wmELnQ8TmrlM+K6NjC5f8jdBcAntLSQ+B96LrFB9E13tRW3gVtjd4YRR/66JYu8KoCBNEhER3Bu9A1+KiWHqoAYyrFUtFHj+nQ4q3G9FCajelLQjc7ewfw1LN3bzzHHSF6GvrJXafnRJeuPwU9JWtCP6mooaWnXjYRvQD62DP7WIApt0GJngE99pJNyg9dp1t+fqIbd+9dlYLoCxjT+3oEovNErgg6fvNleaxKbIvoRCc6u/dC6DFn9URnSyf6EtBDkyiIXhm69XQpolcObzExkugVw1tNDyY6g+gMojOIzkhBLzkFmgIVoJdIoleCPtfPmihQAfocP2Bk/IN7DLXdi8gdv/N6gqnd4NO7AAAAAElFTkSuQmCC",UA="data:image/png;base64,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",XA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFQ0lEQVR42u3dvY4cRRTF8X0JIhAERCwOkNjIMiQkliNSPt7AMYkfwY/gwImFxDuQEpjI8QpiIAOtRUQwqAfaKtf2znZX163+2N9fKrV3NHv6VNW9Z3pner1nZwAAAFiAd9/55DA0+AfUZ+gEOp3Lhw8HR63z8L/vBqBfpz4Pr386pMdVrE9kg3Xf+8PFxTXdq6urN/9+8uh89jn4329A069XnyV7H7o+kQ3Waw/p15oI//sOaPr16rO76nn56pfD4Z8//juOuAoKXZ/oBkv1bxpD5+FfQNOvX5/fP35wbZw6Z3h9tmiwrri/unjveDw11hoQW/e/xYBOf0xotT5b1R9bn3///OI4uheefkwJoAj/TRpsSL9biPzr0ldg/ts2QOojwn/3nL5ZltrfresP1WcaQF9/+OnoAIr037zBfn3+5K3iyo+1Gpj/mALKwyHC/5gAil6freqfqs/Xf/52HFOvgCL9N22wTiO6gfmPLaDbAqiG/+55fbO0Xp8912e3nq9e/jjrCijVz8fsAIpqsO57e/1+/PX06bWv1xoQW/dfswHycIjwf1MARa/PVvXH1mcfQFPfhL7Jfxdi6bE4gCIbLH/VzEc/obna/LdrgDwgavvvntc1SpR+6/Vfsj67cOhGHz5T7wNr4T+8wfrRaQ2NuTfF8d+2gNKASEPiVAOUvLkaqT+1gaP0W9VnGkBr8h/aYGkRff782+Pov04fSx8vOQf/7QtoKIRq+o/Wb7X+6nPBCaRFdO+7L07qp5fc/Ato+nXrc5UB16LBUv3047905PpT7hfhfx0BF+E/Wr91/SxZn6VXb5H+ZzVY1ASOv5/y+4vjccwbZHMCYqr+2vwvXkDJeSL8R+u3Xv8l97dGAIXsb3+SUxMoaa7SBhj7EWH+ScmYDZg6j0j/ewi4PCBq+4/U79em5fovqd/qCmjy/k4JoCnNlU/gm/sfDY7OaHfsnzf2Ls05AVQScrX97yHgSgJiag1F6OefCkX5b7m/t9VnqwCavL/9SU5NoKS58k9f0k80hsbU31PJA2jMBpSEXJT/PQRcep4I/1H6Q3dzR69/lP7Y+pwbQGH720/i1ARKmit/EzG93L1pgTrNknDIP7K9Sb80JCL87yHgbvrIPKKGIl7A0l+ojVr/yP2dWp9zbt+I3N+zMROY2lxD5/j44su3xmePHh9Hv4j9OaaGw9gNKAmJSP9bD7gp9TN37beqH7m/U+pzzk2ULfzfOoGS5ipp4JIfAcZuwJx5LO1/jQHXwj/9ZQOolf9RAVTaXFMCovT/K54SQKXvcyzpf60Btzb/9JcNoOKMGHOCOf+Z+dILNPRj29R7mpb2v+WAa/UCQ3+D9ZmL999ccxLRC5SfI1J7yQDdasBZf/oCSAHRp393A+j8g/ffjK0HUDeH+/fOj0OB0qdfMRz6AKrZZPk5ajdwfo5I7fwcW1gf+vRXqz8kngdQrSYbCreIRYrUzoM6eoOjA44+/aX1z4befIz8G+Ut//722j2f8l77zyfTp79WfQAAAAAAANTjcDgc0iMAAMDduvpxFQQAAAAAAAAAAAAAAAAAAAAAAIA5XF5eHvgHsNvm2vI8BDR99QkvMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7JfD/ww9lj/OP3DH6jN6As+ePQvV53/f9UN/5/UZPYFO/9Tk+BfQ9O9ufQoI/lfvn/5+9/fkBGpconsFE3D06S8WQNGEL9DG/dPfeQPrLyggAAAAAAAAAAAAAAAAAAAAAAAAADP5F0WRPFTxGHAlAAAAAElFTkSuQmCC",WA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAEAklEQVR42u3dMYoUQRQA0L2EkaCBiS4GgmAwmZh5hPUGHmFzk72AYGCyeARvYKCR8aK5hoIYGYz0QEtP2fb2dNWv6e59D4plYfz1u+rX715mZE5OAAA4gtu3Hm37hvxBfYZeQBPn4mzTO0rNI/91HwDxV1yfkRcwFDudR/4atPg3rD4jL2Bs7JwFkv+6D4D4K67P6AsQX4MWfz7xD50jvD5rLdDLp/cXvcFLz39p8bt/IlqfMvX569Plbhy6D1UaUPQBS+M3C5H+PucGsfT8SxZQ904akX/zuu5hOcb+Lj1+X33mNKCo/KsfsK9vz/cWIv0p/3k3uLQ5ROQ/pgFFr89S4w/V55t373ejRAMqlX/VA9bEiD7A8o8toOsaUIn8m9d1D0vN9VlzfTbref7qdVYD6sZPR3YDijpgzb9t47fjx8XFP7/PtUEsPf+SByBtDhH5/68BRa/PUuOPrc/cBpTmf3bv8d7PyQ0o8oCld810tBeUG1v+9Q5A2iBK59+8rjkoUfFrr/8x67NpDs2Y0nxq5R9+wNrRxOobuR+Kk3/dAuo2iG6TGDoAUwo/Mv6hBzgqfq36nNqAovMPPWDdIho7pswh//oF1NeESuYfHb/W+qvPI15At4i6xdQ3uo/c8tegxS9bn7NscDUO2FD87bfL7fb397D48q/X4CLyj45/7PqpWZ/Na7c/P0x+yg3ZXw1C/rkNou/PpVL5R8c/9vrX3N/cdQ/b33aSoQvIuXtFHYD0nZIxG5Azx9rvkBENIrrBlaifNe/v3l4f+PRT7QZWqwG92DzoHR8/f9n9nHsDKp3/GhrcUhtQ+q7QGv7Eu64+I56AijagoQvIaUDtuy3XXcChn6ZMG8qYDZjSgKLyX0OD684TkX9U/L5Pc0evf1T8sfWZ24DC9re9iKELyPmodfcOMzTHlLdpu3mN2YCpTSIi/zU0uEOeUHJrKOIG1v0PtVHrH7m/h9Znzsc3Ivf3JOoC0jmePbm/N86eb3ajxIewxjaInLlK57/0Bndo/eSs/VLjR+7v0uuzygWIfzMKyPqLb4HEF198DUh88cUXf3Lw9nG85CThHTSZIzK2AhJffA1IAxJffA1o/Bynd+/8HUtvQM01bB6e7oYCFV/8gs2hbUAlD1k6R+kDnM4RGTudYwnrI774s43fFzxtQKUOWV9zi1ikyNhpo47e4OgGJ774x45/0vd1vZHfUV7z+7fnnvNQ7qW/Pll88ecaHwAAAAAAAAAAAAAAAAAAAAAAuIGurq62DflDfH0urlY1CPnPOX/x1SeeQFkA+wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGN/APUm00gtCmpaAAAAAElFTkSuQmCC",jA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAA60lEQVR42uVVwQ3CMAy8kXjzYYSIDXhXSAzAADz5dwJGYABGYJ8iKkVyLVuyE4dQ9XFq4zjn8yVtcH8P05aB8/M4ZaTxMNGxBppnXVOaXwprHdSSRjTUilfi+Y5pDGvZOamRCG0LA26n/Qz+Lo1prAYSl8bvzbXUBQ0+rmmGtECayzEJlnnORZ9ajPNaY1xTzoFFrCbes8ZjlMbtybX2gFLhr3FYvF/SLsSQGj1cA9WoAf/URA/A61hvRGikm41fiGppbC03So5+i4YiTCzpBdGEq/4H9P42LZsRXQetr6RWp0gzwlsPW7v2OD6Kt8DIbHXIzwAAAABJRU5ErkJggg==",QA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAEw0lEQVR42u3cv27kVBQH4LwEFdKmgIYVBRIUaKGElwgSDwAFPRV1KOkotlkheI4VBVtRR9Cz5UqIimLQHcnBcRyP7/U9d2zn+yQrM7vJz8f3z8lMMpOLC4DH7O23PjgMb/f/Tf3wiNdn5AWknNcvrw7pY/92/9/Ur0HLj1ufh79/vb3d3V/N+ERusC7n1FHjHOrfZ4OWv2x9/vb7H/eOnHOGjk/kBpubvWQDq3/fDVr+8uzvf/j52HQO/74+HP56cbw/91FQ6PhEbzD5GrT8q1U0oK4JdbfnnC98fbYaoJc/frzpCd56/fL3nT9nfaZHOz99/WnWz4CaNaDoDSZfg879mUP/6aL5XZ7/z6sXx6PkZz9R9TcfoDQA/QEpHRj1ny+//zOjqPz+mGpAddbnJhpQ5AZLGX8+//ZO3vCj+tfd4IbNIaL+qQYUPT5bzj+1Pt9cf3Q8ljSg2vU32WDpa1tsYPXHL6CpBlSr/vR5/c3Sanz2vj7TeL766rK4AQ3zlzyyarrBxop9c3197/5aG8TW66+5AYbNIaL+4TlazO/W8+esz9IG9FD9V+98eOfjogYUtcGmztG/oNrZ6o/bAGMNomb96fPSRonKP8f4n2t9puaQjpLm06r+8A3WHSlr7Oh/jvrX3+D6DWKqSfQ3QMnCj8zP3cBR+a3WZ2kDiq4/dIP1F9Hco3+uuU8J1N9+AY01oZr1R+e3Gv81rs/VjM/SDZaziPqLaezo/j/n/So1GsSp/LXXv+cGLf90/tz1ucpvwEs32JIBSh7KT+9VSe9ZOfVy8RoNYuo6tlD/WhpcRP3R+S3G/1z5w/VZ+ugtsv6iDTZ3c5VeQM77VUrqv31T3ozrWGP9a2pwDz1dqlV/dP45x7/1/NZuQNXmtzvJ1AWUbK7SDZC+pv9+lbm/KZkzAbnXEVn/HhrcVIOotYai8ofrvvX4t85v9Qgoe35zGlDO5hpewBfP3jseqbix293ndfm5v6rNaUAlTa52/XtocCUNIncNReQPfysUVX/L+T21Pls1oOz57U4ydQElm2v425fuHCmjfzFpkaePJS/X71/0nAkoaXJR9e+hwfXPE1F/VP7Yq7mjxz8qf+76XNqAwua3u4ipC1j6XpU5j7K++ezd4ubWb6JTE1DaJCLq30ODG/smVrP+yPzhG2qjxj9yfnPW59LX/0TO78mnYSWba+wcTz//7s7xyZe/HI8ar7GYMwFLriOi/q03uJyn8UvHfqv5kfObsz6X5LaoP+wC1pS/xgnecoNrUb/8fa/PR9WA5O93A8jfdr4Bki9f/nnyh+Hdd8SaJwnvoINzRGZbQPLla0AakHz5GlDGOS6f/H9svQFdPjk8e//p8bBA5cuv2BxuG1DFTXavAVXewMNzRGYPz7GF8ZEvf7X5Y+HDBlRrk401t4hBisweNuroCY5ucPLlnzv/YuzPMOT+aYal54vIjcy+qGys9prnki9/zfkAAAA7kv4G1NR9AID9Pgq6ubk5eBQEADyeRz9T9wEAAAAAAAAAAABYKr1XZcuv0tx6/WBzuQ4NWr75xTcZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg0H818ojjuOFtrgAAAABJRU5ErkJggg==",YA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFA0lEQVR42u3dv44cRRTF4XkJEkB2AIFZESAhgbQJEgGBM1IjESN4Ax5hH2EDJ34VLNkRpCvIIUSLHBE06hENteXe3v5Tt6a75/tJpdGMdk6dqrr3TK9nxns4AMC58947nzTp4B9Qn1UW0Oq9efnlnRExB//7bQD68+uz+eunZtX7E9lgfdrpHCXm4X/fAU2/XH1296fMH7o/kQ3WPvf19Ye92s3vL5rm7z+aZ5dPFs/B/34Dmn6Z+myvgtrbVz//euf2pPsT2WCd9tixZA7+9xnQ9MvWZxc83Xho3tD9iW6w9udbc2PGGgNi6/63HtD0y9VnfvUz5oUnvD5rNFj73C+evB+qz/++AjptkBrnu3X9MfX55vWL45h6DpH+qzVYrt9uRH5/zQGxdf8lCyh95Yzwf/x1MWmWU5zv1vX76nNJAEX5r95gvz3/8c5G5Lf8rzvg8nCI8D8mgKL3Z6v6Q/X59Pur4ygRQKX8V22wViO6gfmPLaCHAqiE//bn0mapuT97rs92Pz//+odFAZTq52NxAEU1WPvcTr8bf15dvXV/rQGxdf8lGyAPhwj/9wVQ9P5sVX9sfS4NoNz/sw8+vXM7O4AiGyx/1cxHt6Cl2vzXa4A8IEr7b3+ubZQo/dr7f8r6bMOhHXPCp5b/8AbrRqvVN5Z+Mpf/ugWUBkQaEkMNMKfwI/WnNnCUfq36nBtA0f5DGywtoubq4ji6++lj6eNz5uC/fgH1hVBJ/9H6tfZffZ5wAWkR/fLdu4P66SX3YeR3VfjfdwPQL1efqwy4uQ029otsuf7t7W3v6NMf812VJQExJiTW7H9tARfhP1q/xv7X1B+qz7lXb5H+ZzfY2C+yLQm4Md9Vmeu/e266ji35X0vApfNE+I/Wr73/pzzfEgEUcr7dJEMLmNNcSxpgzHdV8ndKxhzA0Dpq+99DwOUBUdp/pH63NzX3/5T6Na+AJp3v1ACa+kW27rnfXH7UO1q99rb7uSn/PcCSAJoacqX97yHg5gbElBqK0M/fFYryX/N8H6rPmgE06Xy7SYYWMKe58ndf0nc0+sbUT1PmgTLmAOaEXJT/PQRcOk+E/yj9vk9zR+9/lP7Y+lwaQGHn2y1iaAFLPmrdHXB6uXvfBs0Nt/wt2/v054ZEhP89BNx9b5lH1FDEC1j671xR+x95vlPrc8nHNyLP9xC1gHyOi8++ujMun357HCU+hDU2IJbMVdr/1gNuav0s2fut6kee79brs8oC6J9HAdl/+jaIPn36Aog+ffr0Z4t3l+MlJwlP0GyOSG0FRJ++ABJA9OkLoAlzPH70/9h6AD1+1Fx+fHEcCpQ+/YLh8F8AFWyytwKocAPnc0Rq53NsYX/o01+tfp94HkClmqwv3CI2KVI7D+roA44OOPr0T63f+zfDo/+OeIR2rhupfShMn/eSc9Gnv2Z9AAAAANgRTdP4VQkAVsPNzU2z5WTeun+cV39trlYFBP9r9k9ffcIVKDaAcwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAzNv/Q9lj/OP3Bm9Rm9gOvr61B9/vddP/R3Xp/RC2j1hxbHv4Cmf771KSD4X71/+vs938EFlLhE9wom4OjTP1kARRO+QRv3T3/nDay/oIAAAAAAAAAAAAAAAAAAAAAAAAAALOQfaqeYfdQFkFgAAAAASUVORK5CYII=",VA="data:image/png;base64,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",qA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFg0lEQVR42u3dv4skRRjG8f0nTBQ0UEQPA+EOxDUXUTQwPAMNReESs0P/gTUwMFvEREH/EIMzung5cw0FMTKYowZr6e2b6elfb3V37ecLxbB3O08/VfW+z/RO9+yenQHAbeeF597ctQf/gPoMn0DSevTzF8+MuY/Bf70NQL/i+oycQNL44ev3DurPeQz+620A+hXXZ9QEcpG/f+/V3cP7946O9P9TJsJ/3Q1Av9L6jJzAsYLvGmOOwX+9DUC/4vosNYFU+H3GWjdg6/632gD056/PtfkPbbCsn4r77ivP7x+7xlh9/usL6OZ7VNH7u3X9vvX57+8/7cfQfYj0X6TBDumnhWh/vdaA2Lr/uQuo+Uoa4T99X7NZltjfresfqs88Hj1+MmgvIv0Xb7A/fnx4o7jaj/yvO+Da4RDhv08ARa/PVvW76vOb7z7aj2+//2X/b7t/ftst7b9ogyWN6AbmP7aATgXQHP7T9+VmKb0+NddnWs9PH7y92/3Z/yyoy397TA6gqAZLz836efx9cfHM12sNiK37n7MB2uEQ4f9YAEWvz1b1+9bndQD999d1AJ06C+ryf//luzceRwdQZIO1XzXbI09oqjb/5RqgHRBz+0/flxolSr/0+i9Znykc0mie/Qw9A4r2H9ZgzSsZV5+90zmm3JXLf9kCagZEMyS6GmDM1bVI/aENHKVfqj5zAKX3f4a8BxRan5ENtr/68uX5fuLp+b++e+fkAuVi43/9AdcOoYj1j9Qvsf5rrc+hVztD1ieywbL2Vx++ti+irJ01Do3mKTf/Apr+vPW5qv2NbjD6tyeg02Pk+kTr35b6GRM+YfVZeoHS89IxtrrBW/cfqZ8+xrFl/RoCqE99rjaA0mM+yNyvvs0Fav48P9cG5OfkV8lTG9D3GKX81xBw6bHP+q9RPz2nxPqX0D9Vn1MCaG7/BwOoawJzBNAn568fHOlyYHqcGkB9NmBKAEX4ryHgckBE+Y/Sz8+J9l9qf0/V59QAmtP/wQDqmsDQAMrHSPr5asupCQz5nMqhAOqzAUM3Odp/DQGXGzjKf5R+3q9o/xH7O6Y+pwbQ3P6vJ5An0TWBMR9ia1+FOXWWlb6neY/CkCJqX7I9pj90HtH+txpw7frps/5j1r4G/Yj9HVufQ28hiPY/aAJDmuvYsT7/+K0b4+LBB/ux/7URj5+MuktzyAYMDYm1+V9LwJXwT3/e/hrbs6X8d05gTHONbuDG51Tm1B8bEmvxv7aAK+Gf/rIBVNJ/vwAa2Vxr2ICpIbGaAl1RwK3SP/1lA2hsRix9BhT9Chx9BlTNGcTWA47+9s6A2uK5oZoHiX4P6Kz1m/amHuPQ4ke+BzTVf+0BV+IFhv5yATTJf58AmjMcIhaoTwBNCYmlN3jrARftn/6G67NvAE2dwJ2XXrweSwXQXBuQ5nD+xp39KLXBWw64GtaHfpB+OxxyIc7ZZO1jzN3A7WNEarePsYX1oU9/tfqHxNsBNFeTHQq3iEWK1G4HdfQGRwccffpL658d+nvhYX+EPlA7+m+fR63HMe9zHos+/TXrAwAAAAAAAAAAAAAAAAAAAMBpdrudO5gBlOXq6krwAFj+zMdZEICiZz/OgACs6kwIAAAAAAAAAAAAAAAAAKpg63dpussU2HBzJf3ouzMj5xHtX0DTv7X7u/VwKDGPEgW65YAr4Z/+sgEU5r+WHy+2PA8BR19vwY/ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE6xOwH/wC2uz8gJpOdfXl6GLhD/dTcA/YrrM3oCWTuy+PmvtwHoV16f0ROgL6Dp01/uAP8fg38FSl99Fp9ACfivtwHo6y9sHAUEAAAAAAAAAAAAAAAAAAAAAAAAAAC6eAqWeVLFmszpSAAAAABJRU5ErkJggg==",KA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAExElEQVR42u3dv4skRRQA4PknjARFzRZBQQ9EBCOTi402NtLU6OKLxPBik8P/xEAj40VjNTM4jAxaerCX2rrenv5Rr6Zr5vugGJZbXr2uevW2Z2fm9nAAAOAM3nzjw25syB/q1eduazfygPVxnn37fHSUnEP+l9ugxd9en92rn7qff/3tfvRf72J9Ig/YVOwac1x7/pfQoMXfXp/9ODadP1923b9/HR/7r+fMH7o+kQdsTuwac1xr/pfQoMUvU5/D3c+xAf0/5twFha5P9AETX4O2v/uJP9wFDePUnOH1WWuBbr/8qukNbj3/1uKnTxGtT5n6/OeXl8eRrm2Ju58iDSj6gA3xh0W4efeT18aeG0Tr+ZcsoPR3RxH599+XHpaa+9t6/Kn6TNd0L/lXPWB93N9/eHYffyi0/rHUAZZ/bAHlzSEi/6kGFL0+Lcc/VZ/ff/DFcWxpQKXzr3LA+hh5/CFu/ij/fTe4qQZUKv/++9LDUmt9Wo0/tz779fz6nY9XN6A8/2Ge9HoOezxgaaL5+O75i/ux1wbRev4lD0DeHCLyz+eosb+tx59Tn2sb0GP537730YPHTQ0o6oCdmmO4oIjY8o85AGMNomT+/ff1ByUq/jnW/1z12TeHfqxpPrXyDz9gw+hjjY2tb4qTf90CShvEqSYxHIA1hR8Zf+kBjopfqz7XNqDo/EMPWFpEw3j19x8PRv7vS9+lK//zFNBYEyqZf3T8Wuu/x/rczfpsPWBLiigtprHY6S333DdKbdmAOdex1/yvpUGLfzr+3Prc5Q/gNQds6bsox+KPjTT+3M+qrG0Qc5vEXvPfY4OLyD86fo31P0f8sbH27i0y/1UHbMkH2fL4+VzpnK8d4OSzKiUbxGMfyGsl/z01uMeeLpXKPzr+udY/Kv5UfZZsQEX3d5hk6gLWHK6tDWLJ3Ul6DVMbMHUdtfO/hAY3VkMl84+MPxYzev3Pub8lGlDI/uYbUepwrT0AP37zWbf09zNzfkLm3x/1FGxu/pfQ4NbcoUTfYc2Jn78qFJV/7f2t9RSs6P4uaUBLDlf+6kt6lzU2ln5OZUsDWtLkovK/hAa3pkEsraGI+GPv5t7L+i+NP7c+azWgxfs7XETpw5X/EvHp09vJseZl2jSvORuwtklE5H8JDe6xp/ERNRTxAyx9RTRq/SP3d2l9bnn7RuT+HqIuIJ/jyZPPH4ytsdODMrdBbJmrdP6tN7il9bNl7VuNH7m/rddnlQsQ/zoKyPqLb4HEF198DUh88cUXf3Xw4Xa85CThHTSbIzK2AhJffA1IAxJffA1o/hw3b791P1pvQP01fPr+zXEoUPHFL9gchgZU8pDlc5Q+wPkckbHzOVpYH/HF3238seB5Ayp1yMaaW8QiRcbOG3X0Bkc3OPHFP3f8w9h/wxD5N8pr/v3tvec8lXvpP58svvh7jQ8AAABAGV3XdVNfA4S6u7vr+07XP1oNoOrdT994huEuCAC43rsiAAAAAAAAAACAi9L6Z1V81gYaPlz5Z1Vau47o/DVo8a92f2s0h1qL1Op1tN7gauQvvrOF5gwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzfgPcHALxs0m6qkAAAAASUVORK5CYII=",ZA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFAklEQVR42u3dT2sdVRgH4HwJ3SgtKBSsgoIIJSvBvbquK79GN+77EUJxk08idGFWroOurTvF4srFlbl04tzT6dz5c94zc6bPA0MIJL9558x73tzk3iQXFwAArOC9dz479B3qB/0ZegFNzscfPOo9cp1H/fveAPJ33J+RFzCUnZ5H/Qa0/Lj+nHv/Q9cncoONzV6ygdW/7wEtP19/3nzz5LXj3HlD1yd6g8k3oOU/2tQAevnn73fHuQEU3p+lFuj9dx9UfYNrr7+2/O63CNYnT3/+c3N9PA7//nE8NjWAojdYmt8sRPr+lgdE7fXnbKDut2wR9Tcf126Wte5v7fl9/XkygF5c3w2gw8vnh7XqL77BfvvxyUlzpW/Vv+0Blw6HiPrHDKDo9ak1f6g/H//w/HjM+RYsqv7iG0x+3QPu3ADKUX/zce1mcX/zDqCvvn826YfQQ/npUcUAarP/evr0pPjm/RpucO31L81Ph4MBVE9/tgNoytPwQ/U//vDzk7dZBlD0BkunZntBS5/hUX+5DTA0IHLU33xcs1Gi8rfQP6X6sxkOx6MzfLZUf7EN9vdPXw8ec1+Lov7yDdQdEM0xZgPMafzI/KkbOCq/VH/mHkC56g/dYG0TNZ9/c/Xp2QVqv+Kpf/sDrjuEIuqPzi+9/vpzhQtom6jNbjZBm5Me3Yfc6jeg5eftz00OuBIbrJv/puw0f8oPyNS//oCLqj86v3T/rNmfcx+9Rda/eINNeRjdnGNM/tSnCJcOiDH5W65/1QZKBkTu+qPzS69/VP6Y/swxgCLu78lJcm6udIG6P7QcOsfYF0mlz5SMuQFTryOy/j0MuHRI5K4/Mr9dmxLrXyL/XH8uGUBR9ffeiFybK72A7y4/6j1+/uXX49v245qXiI/5PZV0AI25AUuGXO769zDg3vSsWM4eishvvzXtviYmev2j88/159IBFHZ/25MMXcCczXWRvGr23AXc/Z7Ki+uT31MZO4DG3IA5Qy6q/j0MuO55IuqPyu97NXf0+kflj+3PpQMo7P62FzF0AXM2Vzd/zKOsqX8qIG2iMTdg7pCIqH8PA27KI5SlPRTxBaz7C7VR6x95f6f255wBFF3/6G/Dpm6uvnM8fPDlyXH5xbfHo13EqX8sqfuzijE3YM6QiKy/9gE3pX+Wrn2t+ZH3d0p/XsxUqv6zFzBnc01doCV/LnRs/tzrWLv+LQ64EvXLX3cAlap/1AmW/C3htReo71HT1Gd61q5/iwNua19g5NfZn5sZEPL3OeCsv/zR4W3z5TxJ9AKl54jM1kDy5RtABpB8+QbQhHPcv/f/UfsAun/vcPnJw+OhQeXLzzgc7gZQxk322gDKvIHTc0Rmp+eoYX3ky99sfl94OoBybbK+4RaxSJHZ6aCOvsHRA06+/LXzL/qe/Yj8H+Ul///21mseqj33v0+WL3+r+QAAAAAAAAAAwHiHV6wEsMoAur29PXTftyoAAAAAAAAAAAAAANVqXiJe80vDa68f3urN1Zyj+3sqtV1HdP0GtPy39v6WGA6lFqnW66h9wJWoX769hQYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2LPDGeqHt7g/Iy+g+fyrq6vQBVL/vjeA/B33Z/QFtNmRza/+/W4A+Tvvz+gLkG9Ay5e/3glenUP9GlS+/ix+ASWof78bQL79ReU0EAAAAAAAAAAAAAAAAAAw5D//TE6K/md3CQAAAABJRU5ErkJggg==",JA="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAgCAYAAAA/kHcMAAABsUlEQVR42u3bMU7EMBAFUF+CBgoaKiokLkBHxQFouAA32gPsdWgQFTUSDVdYZGBWk287JLbHseF/aaSw8oY4L06ykeMc5Ozk6lBSsfXFotuW/q/Sba7R16X7oqc2x0alSe2QOfDLi5usqrXNJX2VPty/PAaF/Tw83wYVtLl7+C6fn2Vs8/72GhS22e32XyXxyxMXix0XdCbyuUY/P71eVYiee+Dklj7ANbQPwqfANfwEHNAFXsAxGh7Bcfm4/63R9ZkkdoYRxDXlv4Poaw+c3EqhC7iG/xVdrWcpuq45dF0TdMvTI452F0ltdOvreAodR7j8PUH3AfCckR4Dn0PXI74peioW6M4oc+iLR7rAqwMgig6F6AieQtfgRDdAX3xNhxFvdU2PFdEroJvdvQN47t17s5u4/4Y+3O/0XtBzqif0oUJ0ojdHL30MS/RB0WtsP9GJTnSiE53oRCc60YlOdKITneh/Ad01mkRB9A7Rnz7qgft1EX0QeMEvqeTMS6L3j19rCjTRGaIzRGeIzuSit5wCTYEO0Fu/7ECBjdG3eK2JAhuib/kCIzPgs4VRnknUyifTnHZbqL7MTQAAAABJRU5ErkJggg==",$A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAG6ElEQVR42u2dsYpkRRSG5xEMDMRAFhFZRDYRDEaQxXAC2VAm8AEmNvIRfIRhAx/BwMBIRCbY0MBkchEUg2UxM7hSDTVU19zb91bd89c9dfv7oJjp2Z7/nnPqnL+re3pmLy4KePftt4aby28PK3x+YUiqffX0K3N94l9+DaW2Mn706/ozfD789f3qa0rroxywVFs1wMS/b4NGv7w/hze/DNF8hv/+fDCh8HVX9VEPWK6fX8PSmYl/fwaNfn1/hnX36reD+YSPNdeV9+dcAtbauf7a4+GcQawxCQ/xY9Do1/ZnPAVF81l7+jGvz2wClcMVh/P1P38M9z9cTa78eKgwiJo8PMXv2eDU8aO/rj/Dv4f7fXf9ia/+XJJA7XBNBT22ao+HJRtQmoen+L0anDp+9G36M65SA5LWZ2kCa547hvuHJl+yaoa3pPg1eXiJ36PBqeNH37Y/S09ALeJfnMCaF65C89/9/OPh46lVczws3YCaDfYSv1eDU8SfPm1W1Udd/1b6S/vzzd3Lw/Kwv8UJrHnuOKYfCpHfrh3gpRtQ8xzYU/xeDC79oYQi/nCfdFjU9dmj/lh/1hqQMv7FCVgZ0O+33xwVIv2o3gALA9oyfg8DkJuDIv4lBqSuT6/6p/rz2dXNYXl6AF6cgJUBvfr1p8kCff3ZE+kGWBjQlvF7GIA5A7KIP9wnHZaW9eld/1R/hno++fSF2QNwvkwMaCqBmuGa0v/39d9HgYfbYak3oCYPT/F7MLjcHBTxnzIgdX32oD/VnxYGlMZ//eGTo49VHrE0AcsTUCxIWOltqwGe2gCrE9BW8XsxuDmDWBt/uE8YFJX+1vVvoR9XMIewovlY9b9V/IsHzMKAwgp6+TWUG5DeXmtAW8fvZQBSgwhryQCUxp+anEK/dIB72N9T/WltQFbxL06gtjgh8agdVrg9VaDSF8hKDaLmfRCe4vc0AKkJKeJX629Rf2v9mv509QCsHLBwv+vLm4cmmtNPj9zK+EueZniMv/cBQH+b+Yqv15W8TiOtj3LAwn2eP/3ySD89so8NQekA18a/9IVWr/F7G4C4rONvpa+qv7f5igZU8jRbVh/1gM3p50mk/642OAsD2jJ+bwMQl6p/1Ppb9P8W81ViQPL+zDc4fPOpBGqaf2mB4u2aDYjfkzfo1AYsvUar+Hs1uDmDsIxfqZ/2fcv6t9TP3zLh4QG4yICKxRP9Y5P44NEK+uEXIcPnKgNKN6DUgNTx78Hg5gxibfwq/fg96viV+1vSnyWvAanjP0ogXuRUAmsMKP6oN08gXyW/pzJmQEs2oMaAlPH3bnDHJmEfv1L/4c104viV+1vSnzUnIFX8jzZ4LoHSX2JL9fNBOFWgkhfI0uIv1V+aR6v4eze4/BStiL93ffX+lvRnjQEp4q9KoPQ9HGP6p65R8iPClhvgKX6PBqeOH327/lzb/1bxVyVQ+v6BVD9qW5ncmg0oeQ7sLX6PBtcyfvTX9Wdt/1vHX5XAmhOQeoBLNqDmEcBL/F4Novf6nIu+l/6XG1B+jVN/CjRdXjbAa/zoo7+mP90Y0EX2Jy8th2vqGmF9cfnsaF2/eH5YtW8TL4m/ZANaxd+rwanjR18zX14egEcvlgaeJhSTqP17QFPXGCvQmt+4zzdhrPhr/66Rdfy9GlyL+NG37c/0fu7iX2JA1e6WXOOj9955WJYGNJbHVPHXmFxao5DD5x+/f1gW8fdmcC0fYNC3MyCPB4hH5hAF0yGzNiDrAc6vkWpbGdBU/PE6axtIWR/0z1vfwoBk8Y+JWxtQ/og8NsAW+lPmoDCgNJ8Lg/9ZdCuDQ/889FUGZBH/o+P61NesUGnnurn2WpNQ1WMqdiuDm9O3OoFuFT/68/re+xMAds79/T0mAQDtGIZhiOYTiCYUvw4AwAmI4rC5sO9T0NTtsx+u/HjYWx4t4seg0T/L/e3dHFrloTafng2uRe3R39Z8pPHv5elFz3lgcOgzW7BbaCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAcYZhGIgfgP5snsDt7e2gLhDxb98/kV716c+N6qNOAP3zMGiVQbTSp3826s90g3stkHLQaKD9G5DS/OkfBwak3OQWBqSOHwPaTj9/mtdj/Xvuz4cEMKDt4u/d4JQPYmr9FgbUe/9IT4mtDEh1jVYGpIx/Dw3aqwG10lfXv9f+bJYA+vs2OOqPvvsEeh8ABhh9+rPjBNDHoNFHv+0FxE8DiB/9sx7gHcwXbAwDgP659idgcAAAAAAAAAAAAABm/A/ILn5PH+0myQAAAABJRU5ErkJggg==",e_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFLElEQVR42u3cMY7kRBTG8T0CARERAUIrIiSyCdCKAxAR9RE23miFCAnQhhugEQHhHmAPsMEEhAQkIxEjkIg2JTCq1npU4+n2tN31yi737y+V3N1qf/Wq6r3P9tg9T54AAACgMp98/FHXb/PX4gfkZ+gAks6bF193/TZ/nfcnfgZN/wLzM3IAueZYK9GH+LdZAPQ3nJ/RA+j1f/juaUgf4t92AdDfeH7WHsBYP+foi3/bBUC/TH5O7SM6/kULbPhZawbRevxrNui+WGrNT+v6p+Tn+5tf9u3Q5fhS8VcrsFwrTUK+7V+v2SBaj79kAg3/jlQ6/vS9vFhqr2/r+sfys28/7b7quvfvupvfft+3sX6j469eYH9cv7iXXMOt+NdtcENziIj/MQOKnp+W9cfy8+8/3+1bep+M58dXP3fdf3/tXy8Vf5UC67WTRnQBiz82gR4zoBLxp+/lxVJzfracn2k+b96+vjv7SebT/fPrJAPK9YdttgFFF1jaN/WRB/vvq+8fvF+rQbQef8kCGJpDRPzDPqLnp3X9U/OzN6B+3U69BDsW/+7zT+9tZxtQZIENj5rD1g/oXG3x1yuAoUGUjn9fHG9fh+nXnv8l8zOZQ2q5+aR90lnQqX+Ejo4/rMDyOxmpJa1DLf+O+NdvcLlB5CYxVgBzbv9G6k8t4Cj9Wvk5NKBV5GdkgaXvPn95dZdEL3dX+9a/zz/LP597q1b8dRPokAmVnv9I/RrzLz8XGkCv/e3ui7sk2j17Oqqfn3KLn0HTL5ufq1rf6AIb0z/WSumLv24BpG1qUfMfrV87f5bKzznmE5afDEL8peLv94+KP1q/9vwvtb6lDKhE/A+OMGnnsQHMPfpGF0C/zylHyOGdFUfIqybOUCL10z5bW99oAyp+BlTNgK4+O9jScwj77aCPsWvWRQwoIP4tGFyrBtTfFdrMJd4j+bl+AxoZwJTiyvtI+v3dlvyOxqGW/07lsYekDhrQCQsw1SSi49+Cwd0VcFD8Ufr9ekXHH7G+c/LzbAMqHP/dAPpBjA1gSnEduwuTn+4em6D8Cc3971Q+PCZ+rIjzB+pOWYCp44iOv1WDG+bPKfM/Z+63oB+xvnPzc+ojBNHxzyqwU4rr6IC++fJee757tm+5Rt9H0n+sj7kGcWgcLcW/tMHViJ/+tBo7NT/nPscUHf9JA5hSXOdM0JSzrHP083G0Ev9aDK5G/PSXNaCa8U/uYEpxzZmgOQ9OTdWfMo41xb8Wg1v7AYZ+fQOa7RFTO5h1TbmSCZozjrXF36rB1TzA0G8kP4fi/c4lBxE9QcM+IrXXYqCtGpz5p8+AJBB9+pdlQPkPIFs3oOH/1ZGg9OkXMof819OliuzQr7FLFvCwj0jtYR8tzA99+qvVPyQ+NKBSRXbI3CImKVK71P/pWYvB0ae/tP6D/x1z7LNSRGkPdSO1nxTmUOwl+6JPf836AAAAAAAAAAAAAAAAAACgEbqu8/AgAEYE4AJNJ21vb28ZEAAAcOkFAAAAAAAAAAAAAAAAANuh9cfEPeYONFpcSb9GAUf1USN+Bk3/Ite3ljnUmKBWx9G6wUXHT19tgTkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE033g0GfDz8UPXFh+Rg/g+vo6VF/8284f+hvPz+gBJP2xwYmfQdO/3PxkEOJfffz0t7u+owMocYruCMbg6NNfzICiCZ+gxuOnv/ECVl+QQAAAAAAAAAAAAAAAAAAAAAAAAADO5H+X+dw/XAYWhQAAAABJRU5ErkJggg==",t_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAEFklEQVR42u3dMY7TQBQA0ByBgoqKAlFTbEWFKCn2AHuE1FSIEyDEAVYUHIEjUGxBSUGzF0BCotqWIsiRLE0Gr+PY8ye29z3JSkDRnz8zf36yJFk2GwAAKnvy+NGuvU3vyx/UZ+gEmjg3H97s2tv0fjqe/DVo8R9gfUZOII3Zd5UYQ/7rPADir7g+oyfQxr/eXoSMIf91HwDxV16ftSfQN86U+PJf9wEQv0x9njpGdP5nPWD53y2tQSw9/zk36Paw1FqfpccfUp93N5/316n7EJl/tQOWxmoWIb1t78+5QSw9/5IFlP87Uun8m8elh6X2/i49/n31OaUBReVf/YD9vH57sBD5rfzn3eDy5hCR/7EGFL0+S47fV5/XX7f7a2oDKpl/lQPWxm5iRB9g+ccW0LEGVCL//Zonh6Xm+qy5Ppv1fPfpclIDSuPn1+gGFH3A9pPfXhwk++fj+//+PNcGsfT8Sx6AvDlE5J+PEb0+S48/tD7HNqD78r96/vTgdnQDijxg+bNmfrUTmhpb/vUOQN4gSuffPK45KFHxa6//OeuzaQ7NNab51Mo//IC1VxOr60ofI//5N7i0QaRNou8AjCn8yPinHuCo+LXqc2wDis4/9IClRTT0GjOG/OsXUFcTKpl/dPxa668+zziBtIjSYuq60pfc8tegxS9bn7NscDUOWF/83e8vu93fX2Hx5V+vwUXkHx3/3PVTsz6bx+7uvo1+lRuyvxqE/Kc2iK4fl0rlHx3/3Otfc3+nrnvY/raD9E1gyrNX1AHI3ykZsgFTxlj7M2REg4hucCXqZ837e7DXJ776qfYEVqsBXb181nndfP+xv517Ayqd/xoa3FIbUP6u0Bp+xDtWnxGvgIo2oL4JTGlA7bstxyZw6qcp84YyZAPGNKCo/NfQ4NJxIvKPit/1ae7o9Y+KP7Q+pzagsP1tJ9E3gSkftU6fYfrGGPM2bZrXkA0Y2yQi8l9DgzvlFcrUGop4Aku/UBu1/pH7e2p9Tvn4RuT+bqImkI9x+frFwbW9erW/SnwIa2iDmDJW6fyX3uBOrZ8pa7/U+JH7u/T6rDIB8R9GAVl/8S2Q+OKLrwGJL7744o8O3r4cLzlIeAfNxoiMrYDEF18D0oDEF18DGj5G+gXIpTeg/PfqKFDxxS/UHNJvT5c6ZF3fxi55gPMxImPnYyxhfcQXf7bxu4LnDajUIetqbhGLFBm71O/pmUuDE1/8c8c/aA75f+Nb6pAdGy8ibmTsTWFduZccS3zx5xwfAAAAAAAAAAAAAAAAAAAAAAB4gG5vb3cN+UN8fS6uVjUI+c85f/HVJ16BsgD2GQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgxv4B9RN/VroEG5wAAAAASUVORK5CYII=",r_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAA7UlEQVR42mOYdS3n/0jGDCU7Av7DcNgMm//IfFwYWR2xeshVTy4m1h4GSg2lhodoZS42c0B8ZDGGoRJz2DxCDbehBEB7ghUYo7Ox8ZHFKMHYzMJlPqlqibGXAVlwRbU/GGPTgE0OJoYNEyOPbhYyjUsM3VxixdDdBFPDQIxjcTmeFD2kBBQus0lRS6wfGMh1+JFZWSjsfH8DqgQIJe5BdwOyG3FhhsHkiYHADKSG2EBjargRObIZ6OEoWgYspWYzkJP0aeEhagQiOX5hoLaBQ7oMGOi8SUxkUNseBlpXSbRKRbgCglT7GEZatYeOAfvRyf82/tDyAAAAAElFTkSuQmCC",s_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFc0lEQVR42u3dP44jRRQHYB+BYIUQQqvRakQwIliJjWYlDrBHmIBTEHEAAsQBECLgCByBYANCgk3mAkikmxIYlaUalZu23X/qdXd5vk9qebyaef26uurn9ozt3e0AnrvPX3yyLzf9w3Lzc/PzNnKBpXrv//zraIvYh/6vN6DVnz4/9x//OPr3dH9T4xO5wPpql/uosR/9X3dAqz9vfqavf/jp58Ptjw9fj9536PhELrD0s/nAT213tzez96H/6w1o9efPz3S7//fv/f6f354CaOhVUOj4RC6wXPtS/TmLQf/XHdDq15uf+esxV0Ch4xO9wNLPPP7+btC2xYBovf/WA1r9evMzXe3kB5sUQEOufsLn5xIL7DC5P31xuD23bTUgWu+/xYAuf08VPT6t1x86Pz++//Ww5QAasr/o/hdZYH3100Dk56X5/lYDovX+a0+g8ilbRP/p+8rFssb5bb1+3/ycGkCR/S++wD788t3RQORH3toLWP8xE6gbDhH9Dwmg6PFptf65+fn9/d1hS/e/fXszK4Bq9b/oAks1bm++OKrfvdX/tgPuUgDV6D99X7lYlhyflutfmp9pPB/uXo76o8O5/tOW+i/3t9viAjv8bFH//s3ro4NI99O21YBovf+aC6AbDhH9nwqg6PFptf7Q+VkGUI3+H768ObqdHECRC6z7qJnr5628v8WAaL3/JQKidv/p+9JCiaq/9PivOT9TOKRtSvgs1X/4AstbevRN9br72HpAtN5/ZECUIXFuAYztvy/katYfu4Bbn59TAyi6/9AFVk6i8s+9pwYoTzb9bz/g+kKoZv/R9Zcaf/NzxQMoJ1F+HUq67atfXnLrX0CrX3d+Tnm1e/j8XGKB5Z8r3wjXtwjm1tf/ugEX0X90/SXnz9rzc+rVW2T/qy2w7iJI91sKiNb7rxkQu+J9ZrX7j66/5PivPT/nBlDY+c07OXcAcx69+g6gXAT5/th9dP9SMuQEzNlH7f6vIeDK/UT0H1k/j81S47/k+e2bnzWvgKqe37yTcwdQI4Ae7m//t6X66S0Ah/szA2jICZizj9r9X0PAnbpCqdV/VP381LR8UV70+EfXvzQ/a14BVT2/T48E5w5gRgDlv77k3zGc2sa+mrIbKENOwJQAiur/GgLuaD8B/UfV73s1d/T4R9UfOj/nBlDY+e2+T6TW4ur+ErG83D01QPkNclMm0ZATMDUkIvq/hoDr+2V31ByKeAAr31AbNf6R53fs/Jzz8o3I87sbcgBjF1ffPt7cvTra3t2/PmzlZ5SM+WiI8k/MQ07AlJCI7L/1gBszf+aOfav1I8/vmPm5m2ip/i8ewJTFNXUB56cKY0/0pRMw5zjW7n+LAbdE/+qvG0BL9T84gKYsrjEHkD6vNn1ubXQAjT2OtfvfasBtsX/11w2gSRkxJICmLq6tPALMOY6tLODWAy66f/XXDaBJ/XeL54LlTpZ4CpY/JKnG75n6Bj/6Kdic/p9TwHmK5CnY6ACqGQ7nrlBqDdKpAJp6HNH9P4eAi+5f/XUDaHL/QwKoRjjcvfzsaas9QEMCaE5IdMcoHcM3X706bEuc4NYDLrp/9dcNoFn9d8Ph6ZPuKi6y7j5qL+DuPiJrd/fRwvgMqT93Aazdv/qN1u8r3g2gWousL9wiBimydjeoo09wdMCpr/7a9Xv/z/Do/0c8ona3bmTtXWV9vdfcl/rqb7k+AADAFdnv9/tz9wEArvcq6PHxce8qCAB4Plc/5+4DAAAAAAAAAAAAAAAAAAAAAAAAPG/p82pb/qS21vsHi8txCGj1nV88yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv3H450SEkM8sF7AAAAAElFTkSuQmCC",i_="data:image/png;base64,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",a_="data:image/png;base64,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",o_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAGGklEQVR42u2dvW4cNxSF9xFcpDBcBIEQBIbgIkUQGFuoSOlHUO1H8DOkCFKkDIQUKvMYLly4dJFGL2DArVsXY3CNG1DUjJac4eHffB9ALCxrDw/Je8+OVqvdwwEAAAAAKvDsuyfT3MA/gL4+p89vJxu7azCn88fxYrp6dbw33NdyzYP/sQMa/W316cb05ePqOaX7o2wwd99Qd2ke/BPQ6Ovqc/p0++028SpIuj+qBjNj57RtbElm/I8b0Ojnq08LoCb2R9lgVvD/3v4la2D8jx3Q6Oetz9PzP59uo69+pPujbjDTf335dLr85Xn2BsD/2AGNfv76/Pzun9Nwns7NJa/PEg3mtOf0bTPcrQ3379YConf/qgKyYFP5d99n+6ven571U+vTRsw8av9FGmxJ39+I8Bb/bQecrdUNlX+bo9b59q6/VJ+vro+nEXvOSv/yBvPnKN3A+NcVUEwAbfXvvs81Sq39GbU+3Z7++tvl5gDyr6ZSr6yKNVio78+RawH4L98AFg72SKoMIAuhHh9gWqzPlACK8X/90w/3bjcFkLrBlvT/u3mzzjz+qzXAXEDk9O++zzWKSr+l+lHru3BwIzV8SviXN5jNEeq74XRtrH1RHP7rFFBKQFgDrNkbpX5qA6v0S9WnKoC2+pc3mD1Szs3hhv1/yhNk+K9fQH4IKfyr9UvsP/VZcQH2+hMrIrtdGvb/qUWK/3EbAP189dnc+SobzIpe2cD4b6MBbKj2R62/l/pc++cXkv1RNxj6+wloRUCU1N9L/aQ+cEnrMzxgd+fHJlhT/CUOwO4TU6D+cwoxL0Mn4MYPIL/uCaABA8gPievjj7Pj3fsPp9sWA0jtnwCqp2/36fkKK6U+mwwgf5LHFrAlgOy3LecWkPp3KmEAxRzAmgBS+u894PyQUPhX6tt5qf0rzzelPtcEkMr/gwM+t4A1rxMxfb8RHpvj9DYBXz5GvV+J6ftFFHMAseso5b/3gAuvohX+e9dXn29sfa4NIIX/5AWkNNeSvhsvnl/cG1cvfz4N+xWhawblAcSuo0X/rQac2j/6eepz7Us3FP5XLSC2ueb0bQ5lA8ccQOwcLfpvNeBK+Ud/W31uDaCc/mcX4L6mDKBz+lsP4Jz+1gBS+x+9AdA/Vq//tQGU2/+DCUwgVwAtzaE6gBj/KQFU2n/vATfC/vSkv6Y+twZQbv8PPiHBF/a/ZpOkBtC5OeYW8Puffye/K5///f4cc5u/5pCV/vfUAOhnbuDE+jwkUsL/Ya5xlwIopbli5li6QjlsICaA1q5D4b/XgCvhH/389blGs4j/mADKEQ6X3z/9f+TUjg2gLSEX7pFbw9WLi9PI9ZldPQVc6QcY9MsHUDH/YThYQeZssnCO3A0czqHUDufoYX9i9Lc2QG3/6HeqPyceBlCuJpsLN8UmKbXDoFYfsDrg0Ee/tv5h7uN6lZ9RXvLzt1v3/Jj33B+fjD76reoDAAAAAAAMxOTBbgBAlRBiFwCgCnd3dxNBBABVAwgAoPiPXy6AuPoBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AJ7m4Be36+kd/8ANBfrIKDR53yBBxkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2DdTAP4BqE/5AqYz4J+ARn/H9alcwBQJ/glo9HdYn+oFoE9Ac77oV5vg5uZm6rkBeveP/tj6vdenfAGhfu6fq/E/dgOgP3Z9Fl8A+gQ0+uizQeijj/4+AsifA/8UKPrUZ9EFoE9Ao49+EwvIPQf+0Ue/3/qUL2Bpjlzz4H9fDYD+eP0lWUDJPyXA/7gNgP6g9alcgJlVbgr+6zeA8m/WSuhTn5X2R70A9PcR0L3/Zor6qVSf0ieVCm2QstEooPEDSH3FSf1UDiDlIZcIILV/AqiefvhjXo/733N93ntOgACq47/3gOv6tScFAqj3+pFeJZYKINUcpQJI6X+EAuW1OXX3v9f6LLYA1SHjfx8NgP6Y9Vl0AYpF4H9fDYD+WPX5YAHKAkWfgEZfq99bfR6U5kvMMZL/3gOOB5jy+r3XJzQADYD+XusTCDgAAAAAAAAAAACAbHwFvVSWXqfqk0wAAAAASUVORK5CYII=",n_="data:image/png;base64,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",l_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAABgCAYAAAC9rK9YAAAFQElEQVR42u3dP24kRRTHcR+BACFEgCwCAgv5AA4Q4gQb+xxEHMUiICDiFASEBAQbrC+wEhHSphsMaou22rXtnv5Tr7qq5/OVStZK3t979eq9nz3dPeOrKwAAAOzAV59/dhpb8gf0Z+gGOp13b/8aXTljyP+4A0D/wP0ZuYEp7RIxLj3/IwwA/Tz9ufb8Q+sTOWBztEvEuNT8j2DQ9PP15+393SfrXOzQ+kQPGH0G7Xzr0e8M59/3fz+vcwYU3p+lCvT7bw9NH3Dr+bemP3yJoD55+vPDn788rdPH90+rKgOKHrBevy/CzfUXn6yaDaL1/HM20PDaQUT+3ff1dS59vq3rT/XnCwP659dnAzp9+OO0V/5FB6zTffvw07N+32jd11wDLP/YBkrNISL/KQOKrk/L+uf68+fbu6e15iVYVP5FBqzTSPV73fSr/Os2uCkDypV/9339sJSsT6v6c/uzq+f99c2ii9BT+fdxhvu5qnHAholOrVoNovX8cw5Aag4R+acxSpxv6/pzVm9AS27DT+V//+31i6+bDChqwM7F6DcUoS3/mAEYM4ic+Xff1w1KlP4e9d+rPztz6NbQfGrLP3zAhg372tryUJz8yzbQ0CDOmUQ/AGsaP1J/6QBH6Zfqz7UGFJ1/6IANdYcNey6O/Os3uNSEcucfrV+q/vpzxw30TZRqD6/Ap/GX6sv/uANAP19/VmlwJQZsjf6SC2Ty39/govKP1q+1f6IMaM1vb5H5bx6wJc0zjDF8DiHVX3qLcKtBzNGvOf9dG2ilQaztoVrqU5v+nP4saUCL3ug6FiTdwJrhWjvAcx+SSu+UzDmApfuIzP8IBveaSeTKP1I/rU1k/WvQ32JAUfkvNqAlwzW1gdeu0Hdfu0fE57xPZYsBrTG53PkfweDWGMTSHorQ71+aDp+JqaX+OfRzvLQukf/kT8mtw5XefTlXoOf3qXQxBu9TWWNArx3AGpOLyv8IBrfkjtXaHorQH3uau2T9c+rP7c+cBpT1fPtNTAVYM1zpXZhzJrf0owLSJppzAGtNIiL/IxjcEoPY2kMRP8CGb6iNqn/k+S7tzy2Pb0Se76zfgpYO11iMH+9uX6z7Nz88rb6ISz8saXitYs4BrDGJyPxbN7gl/bO19q3qR57vkv7c8hBlifzPbmDNcC0t0JaPC52rv3Yfe+dfo8GVyJ/+vgZUKv9ZAbZ8lvDeBRr7rWnpnZ6986/R4Gr7AUO/zf6sxiDoH9Pg1J/+bPG++XIGiS5QGiNSWwPRp8+AGBB9+gxofoybr798Xq0bULeH77/75mlpUPr0M5pDb0A5hyyNkXuA0xiR2mmMFupDn361+mPiqQHlGrIxc4soUqR2atTRBxxtcPTp761/NXb3I/JvlJf8+9u15zyVe+4/n0yffq36AAAAAAAAAAAAAAAAAOZz+h+VALCLAT0+Pp6G/1YVAAAAAAAAAAAAAAAAAAAAAGiW7hHxlh8Nbz1/4KKHq4sxfJ9Ka/uIzp9B07/Y8y1hDqWK1Oo+Wje4EvnTN1vQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwZE5nkD9wwf0ZuYHu/z88PIQWSP7HHgD6B+7P6A2k2mMbkz+Dpn+h/Rm9AfoMmj79/QIkMZorUOP50z/4AB9gviY3kOMaQWSB6B97AOgfX7+oAUVc4yh5AK3nT//Y+i325+QGWjMg+sceAPrH0y9iQJExShxA6/nTP7Z+y/0ZvoFo5H/8AaBvvtAoGggAAAAAAAAAAAAAAAAAsIX/AP4g9SNTkSAtAAAAAElFTkSuQmCC",h_="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAgCAYAAAA/kHcMAAABuUlEQVR42u3bP07DMBgFcB+hA1OXLkysXICRrRJH4ATchImVs/QQVScGRlSJlYUhyBRXX57tEP+NDe+TnpRWbuv4FydplCgFtb5YDSlxfd/nx9GKbJv6W6l9zrGuc8eipTbnRi6gkPgGZAr86vImKrn6nLKuZh3uDw9WcD2H/daK1ebu9hRdP8vY5v3txQq2eXp8/o4pvTxyKTFw2AnX+xJ9s74OCqLHbjixkRu4hNaF8D5wCT8CB3QDb8CxJDyC4/J5/Eujyz2Jaw9jEEOiP4PooRtObHzoBlzC/4o+DMHoMlPoMiP0krtHnO3KUbnRSx/Hfeg4w83rEbouAI+Z6S7wKXQ546ui+6oEuipUU+izZ7qBFxuAEx2C6AjuQ5fgRC+APvuYDjO+1DHdFaJnQC929g7gsWfv1U7i/ht6d//TW0GPSUvoXRXRiV4dPfUyLNE7Rc/Rf6ITnehEJzrRiU50ohOd6EQnOtH/ArqqdBMF0RtEfz3ssoHr7yJ6J/AGPyXeOy+J3j5+rlugic4iOovoLKKzYtFr3gJNgQbQaz/sQIGF0Zd4rIkCC6Iv+QAjq8NrC71ck8hVX1hr5QhFuWj5AAAAAElFTkSuQmCC",c_=["walk","idle","wave","talk","raise","blink"],Pl=/^#[0-9a-f]{6}$/i;function Te(r,e){if(!r||typeof r!="object"||Array.isArray(r))throw new Error(`art: ${e} must be an object`);return r}function Mt(r,e){if(typeof r!="string"||!r)throw new Error(`art: ${e} must be a non-empty string`);return r}function go(r,e){const t=Mt(r,e);if(!Pl.test(t))throw new Error(`art: ${e} must be #rrggbb`);return t}function vt(r,e){if(typeof r!="number"||!Number.isFinite(r))throw new Error(`art: ${e} must be a number`);return r}function So(r,e){const t=Te(r,e);return{frame:Mt(t.frame,`${e}.frame`),slice:vt(t.slice,`${e}.slice`),...typeof t.tail=="string"?{tail:t.tail}:{}}}function u_(r){const e=Te(r,"root"),t=Te(e.character,"character"),s=Te(t.size,"character.size"),i=Te(t.anchor,"character.anchor"),a=Te(t.fps,"character.fps"),o=Array.isArray(t.frames)?t.frames.filter(_=>typeof _=="string"):[],n={},l={};for(const _ of c_){if(n[_]=o.filter(x=>new RegExp(`^${_}_\\d+$`).test(x)).length,n[_]===0)throw new Error(`art: character.frames has no ${_}_N frames`);l[_]=Math.max(.1,vt(a[_],`character.fps.${_}`))}const h=Te(e.roles,"roles"),c=typeof e.fallback=="string"?e.fallback:"generic",u=h[c];if(!u)throw new Error(`art: fallback role "${c}" is missing`);const f=(_,x)=>{const y=Te(_,x);return{sheet:Mt(y.sheet,`${x}.sheet`),displayName:typeof y.displayName=="string"?y.displayName:x,cloak:go(y.cloak,`${x}.cloak`),light:Pl.test(String(y.light))?String(y.light):"#ffffff"}},d=f(u,`roles.${c}`),m=Te(e.status,"status"),p=Te(e.strip,"strip"),w=Te(e.ui,"ui"),A=Array.isArray(p.tiles)?p.tiles.filter(_=>typeof _=="string"):[];if(!A.length)throw new Error("art: strip.tiles must list at least one tile");return{name:Mt(e.name,"name"),displayName:typeof e.displayName=="string"?e.displayName:String(e.name),character:{w:vt(s.w,"character.size.w"),h:vt(s.h,"character.size.h"),anchor:{x:vt(i.x,"character.anchor.x"),y:vt(i.y,"character.anchor.y")},fps:l,counts:n},roles:Object.fromEntries(qr.map(_=>[_,h[_]?f(h[_],`roles.${_}`):d])),status:Object.fromEntries(Ci.map(_=>[_,go(m[_],`status.${_}`)])),ground:{sheet:Mt(p.ground,"strip.ground"),tiles:A},ui:{sheet:Mt(w.sheet,"ui.sheet"),bubble:So(w.bubble,"ui.bubble"),nameplate:So(w.nameplate,"ui.nameplate"),statusIcons:Object.fromEntries(Ci.map(_=>[_,typeof w.statusIcons?.[_]=="string"?String(w.statusIcons[_]):`status_${_}`]))}}}const d_=["none","cap","hood","helm","point"],f_=["none","staff","lantern","hammer","book"],m_=/^#[0-9a-f]{6}$/i;function bt(r,e){if(typeof r!="string"||!m_.test(r))throw new Error(`theme: ${e} must be #rrggbb`);return r}function js(r,e,t){return typeof r=="string"&&e.includes(r)?r:t}function p_(r){if(!r||typeof r!="object")throw new Error("theme: not an object");const e=r,t=e.palette??{},s=e.roles??{},i=s.generic;if(!i)throw new Error("theme: roles.generic is required");const a=(n,l)=>({body:bt(n.body,`${l}.body`),accent:bt(n.accent,`${l}.accent`),hat:js(n.hat,d_,"none"),prop:js(n.prop,f_,"none")}),o=a(i,"roles.generic");return{name:typeof e.name=="string"?e.name:"unnamed",beacon:js(e.beacon,qr,"coordinator"),palette:Object.fromEntries(Ci.map(n=>[n,bt(t[n],`palette.${n}`)])),outline:bt(e.outline,"outline"),skin:bt(e.skin,"skin"),ground:bt(e.ground,"ground"),roles:Object.fromEntries(qr.map(n=>{const l=s[n];return[n,l?a(l,`roles.${n}`):o]})),sayTtlMs:typeof e.sayTtlMs=="number"&&e.sayTtlMs>0?e.sayTtlMs:6e3}}const Cl=Object.assign({"../../../themes/aesir/theme.json":$m,"../../../themes/neutral/theme.json":cp,"../../../themes/wayfarers/theme.json":gp}),w_=Object.assign({"../../../themes/aesir/art.json":Ip,"../../../themes/neutral/art.json":Yp,"../../../themes/wayfarers/art.json":ow}),A_=Object.assign({"../../../themes/aesir/sprites/architect.json":cw,"../../../themes/aesir/sprites/coordinator.json":mw,"../../../themes/aesir/sprites/generic.json":_w,"../../../themes/aesir/sprites/ground.json":Sw,"../../../themes/aesir/sprites/implementer.json":vw,"../../../themes/aesir/sprites/ops.json":Bw,"../../../themes/aesir/sprites/orchestrator.json":Iw,"../../../themes/aesir/sprites/researcher.json":Fw,"../../../themes/aesir/sprites/reviewer.json":Uw,"../../../themes/aesir/sprites/writer.json":Qw,"../../../themes/aesir/ui/ui.json":Kw,"../../../themes/neutral/sprites/architect.json":e0,"../../../themes/neutral/sprites/coordinator.json":i0,"../../../themes/neutral/sprites/generic.json":l0,"../../../themes/neutral/sprites/ground.json":d0,"../../../themes/neutral/sprites/implementer.json":w0,"../../../themes/neutral/sprites/ops.json":y0,"../../../themes/neutral/sprites/orchestrator.json":b0,"../../../themes/neutral/sprites/researcher.json":C0,"../../../themes/neutral/sprites/reviewer.json":E0,"../../../themes/neutral/sprites/writer.json":G0,"../../../themes/neutral/ui/ui.json":O0,"../../../themes/wayfarers/sprites/architect.json":W0,"../../../themes/wayfarers/sprites/coordinator.json":V0,"../../../themes/wayfarers/sprites/generic.json":J0,"../../../themes/wayfarers/sprites/ground.json":rA,"../../../themes/wayfarers/sprites/implementer.json":oA,"../../../themes/wayfarers/sprites/ops.json":cA,"../../../themes/wayfarers/sprites/orchestrator.json":mA,"../../../themes/wayfarers/sprites/researcher.json":_A,"../../../themes/wayfarers/sprites/reviewer.json":SA,"../../../themes/wayfarers/sprites/writer.json":vA,"../../../themes/wayfarers/ui/ui.json":BA}),__=Object.assign({"../../../themes/aesir/sprites/architect.png":MA,"../../../themes/aesir/sprites/coordinator.png":EA,"../../../themes/aesir/sprites/generic.png":DA,"../../../themes/aesir/sprites/ground.png":IA,"../../../themes/aesir/sprites/implementer.png":RA,"../../../themes/aesir/sprites/ops.png":GA,"../../../themes/aesir/sprites/orchestrator.png":LA,"../../../themes/aesir/sprites/researcher.png":FA,"../../../themes/aesir/sprites/reviewer.png":HA,"../../../themes/aesir/sprites/writer.png":OA,"../../../themes/aesir/ui/ui.png":NA,"../../../themes/neutral/sprites/architect.png":UA,"../../../themes/neutral/sprites/coordinator.png":XA,"../../../themes/neutral/sprites/generic.png":WA,"../../../themes/neutral/sprites/ground.png":jA,"../../../themes/neutral/sprites/implementer.png":QA,"../../../themes/neutral/sprites/ops.png":YA,"../../../themes/neutral/sprites/orchestrator.png":VA,"../../../themes/neutral/sprites/researcher.png":qA,"../../../themes/neutral/sprites/reviewer.png":KA,"../../../themes/neutral/sprites/writer.png":ZA,"../../../themes/neutral/ui/ui.png":JA,"../../../themes/wayfarers/sprites/architect.png":$A,"../../../themes/wayfarers/sprites/coordinator.png":e_,"../../../themes/wayfarers/sprites/generic.png":t_,"../../../themes/wayfarers/sprites/ground.png":r_,"../../../themes/wayfarers/sprites/implementer.png":s_,"../../../themes/wayfarers/sprites/ops.png":i_,"../../../themes/wayfarers/sprites/orchestrator.png":a_,"../../../themes/wayfarers/sprites/researcher.png":o_,"../../../themes/wayfarers/sprites/reviewer.png":n_,"../../../themes/wayfarers/sprites/writer.png":l_,"../../../themes/wayfarers/ui/ui.png":h_}),Tl="../../../themes/";function x_(r){return r.slice(Tl.length).split("/")[0]}function y_(){return Object.keys(Cl).map(x_).sort()}function g_(r){const e=i=>`${Tl}${r}/${i}`,t=Cl[e("theme.json")];if(!t)throw new Error(`unknown pack "${r}"`);const s=w_[e("art.json")];return{name:r,theme:p_(t),art:s?u_(s):null,sheetJson:i=>{const a=A_[e(i)];if(!a)throw new Error(`pack ${r}: missing ${i}`);return a},imageUrl:i=>{const a=__[e(i.replace(/\.json$/,".png"))];if(typeof a!="string")throw new Error(`pack ${r}: missing image for ${i}`);return a}}}function Qs(r,e,t=24){const s=Math.min((e.w-t*2)/r.w,(e.h-t*2)/r.h);return Math.max(.25,s)}function S_(r){return Math.max(3,Math.round(Math.min(r.w,r.h)/180))}function Ys(r,e,t){return{x:r.cx+(t.x-e.w/2)/r.zoom,y:r.cy+(t.y-e.h/2)/r.zoom}}function k_(r,e,t,s=8){const i=1-Math.exp(-s*t),a=(n,l)=>Math.abs(l-n)<.001?l:n+(l-n)*i,o=Math.exp(a(Math.log(r.zoom),Math.log(e.zoom)));return{cx:a(r.cx,e.cx),cy:a(r.cy,e.cy),zoom:o}}function Vs(r,e,t=200,s=12){const i=Math.min(t/r.w,e.h*.3/r.h),a=r.w*i,o=r.h*i;return{x:e.w-a-s,y:e.h-o-s,w:a,h:o,scale:i}}function b_(r,e){return e.x<r.x||e.y<r.y||e.x>r.x+r.w||e.y>r.y+r.h?null:{x:(e.x-r.x)/r.scale,y:(e.y-r.y)/r.scale}}function ko(r,e,t){let s,i=t*t;for(const a of r){const o=(a.x-e.x)**2+(a.y-e.y)**2;o<=i&&(i=o,s=a.id)}return s}function z_(r,e,t,s){const i=Object.values(r.members).sort((a,o)=>(a.role===t?-1:0)-(o.role===t?-1:0)||a.paneId.localeCompare(o.paneId));return{title:r.label,subtitle:[e,r.branch,r.isWorktree?"worktree":void 0].filter(Boolean).join(" · "),status:r.status,rows:i.map(a=>({paneId:a.paneId,role:a.role,status:a.status,agent:a.agent,line:a.say??a.title??`${a.status} for ${v_(s-a.lastChange)}`}))}}function v_(r){const e=Math.max(0,Math.round(r/1e3));return e<60?`${e}s`:e<3600?`${Math.floor(e/60)}m`:`${Math.floor(e/3600)}h`}const fr={working:34,done:14,idle:10,unknown:8,blocked:0};function P_(r,e,t=16){const s=new Map,i=[...r].sort(),a=Math.max(0,e-t*2),o=i.length?a/i.length:0;return i.forEach((n,l)=>s.set(n,{start:t+l*o,end:t+(l+1)*o})),s}function C_(r,e,t,s,i){const a=t.start,o=Math.max(a,t.end-s),n=Math.min(o,Math.max(a,r.x+r.dir*fr[e]*i));let l=r.dir;return n>=o&&l===1?l=-1:n<=a&&l===-1&&(l=1),{x:n,dir:l}}function T_(r,e,t){return r+e*t}function Kr(r,e,t){return r==="blocked"?-Math.abs(Math.sin(e*5+t))*6:r==="working"?-Math.abs(Math.sin(e*9+t))*1.5:0}function Bl(r,e,t){return r?Math.floor(e*6+t)%2===0?1:2:0}function Zr(r,e){return r==="blocked"?.45+.55*(.5+.5*Math.sin(e*8)):r==="idle"||r==="unknown"?.6:1}function ue(r){let e=2166136261;for(let t=0;t<r.length;t++)e=Math.imul(e^r.charCodeAt(t),16777619);return(e>>>0)%1e4/1e4}const He=16,qs=16,Ks=12,B_=6;function Fr(r){return r.repo??r.label}function Ml(r){const e=r.split(/[\\/]/).filter(Boolean);return e[e.length-1]??r}function bo(r){const e=Object.values(r.parties),t=[...new Set(e.map(Fr))].sort((u,f)=>ue(u)-ue(f)||u.localeCompare(f)),s=B_,i=Math.max(4,Math.ceil(t.length*1.6/s)),a=s*i,o=new Set,n=[];for(const u of t){let f=Math.floor(ue(u)*a)%a;for(;o.has(f);)f=(f+1)%a;o.add(f);const d=f%s,m=Math.floor(f/s),p=d*qs+5+Math.floor(ue(u+"x")*(qs-10)),w=m*Ks+5+Math.floor(ue(u+"y")*(Ks-8));n.push({key:u,name:Ml(u),tile:{x:p,y:w}})}const l=new Map,h=new Map;for(const u of e)h.set(Fr(u),[...h.get(Fr(u))??[],u]);for(const u of n){const f=(h.get(u.key)??[]).sort((d,m)=>d.id.localeCompare(m.id));f.forEach((d,m)=>{const p=Math.PI*(.15+.7*(m+.5)/f.length),w=4+m%2*1.5;l.set(d.id,{partyId:d.id,settlementKey:u.key,tile:{x:Math.round(u.tile.x+Math.cos(p)*w*1.5),y:Math.round(u.tile.y+Math.sin(p)*w)}})})}const c=[...n.map(u=>`${u.key}@${u.tile.x},${u.tile.y}`),...[...l.values()].map(u=>`${u.partyId}@${u.tile.x},${u.tile.y}`)].join("|");return{cols:s,rows:i,w:s*qs,h:i*Ks,settlements:n,camps:l,signature:c}}function Zs(r){return{x:(r.x+.5)*He,y:(r.y+1)*He}}const je=(r,e,t)=>t*r.w+e,Hr=(r,e,t)=>e>=0&&t>=0&&e<r.w&&t<r.h;function zo(r,e,t,s,i){const a=Math.sign(s-e);for(let n=e;n!==s;n+=a)Hr(r,n,t)&&(r.ground[je(r,n,t)]="path");const o=Math.sign(i-t);for(let n=t;n!==i+o&&o!==0;n+=o)Hr(r,s,n)&&(r.ground[je(r,s,n)]="path");Hr(r,s,i)&&(r.ground[je(r,s,i)]="path")}function M_(r,e,t){const s=Math.floor(r),i=Math.floor(e),a=r-s,o=e-i,n=(c,u)=>ue(`${t}${c},${u}`),l=n(s,i)*(1-a)+n(s+1,i)*a,h=n(s,i+1)*(1-a)+n(s+1,i+1)*a;return l*(1-o)+h*o}function E_(r){const e={w:r.w,h:r.h,ground:new Array(r.w*r.h).fill("grass"),scenery:new Array(r.w*r.h).fill(void 0),variant:[]};for(let o=0;o<e.ground.length;o++)e.variant.push(Math.floor(ue(`v${o}`)*4));const t=[...r.settlements.map(o=>({...o.tile,r:4})),...[...r.camps.values()].map(o=>({...o.tile,r:3}))],s=(o,n)=>t.some(l=>Math.abs(l.x-o)<=l.r&&Math.abs(l.y-n)<=l.r-1);for(let o=0;o<e.h;o++)for(let n=0;n<e.w;n++)M_(n/6,o/6,"water")>.74&&!s(n,o)&&(e.ground[je(e,n,o)]="water");const i=new Map(r.settlements.map(o=>[o.key,o]));for(const o of r.camps.values()){const n=i.get(o.settlementKey);zo(e,o.tile.x,o.tile.y,n.tile.x,n.tile.y)}const a=[...r.settlements].sort((o,n)=>o.tile.x-n.tile.x||o.tile.y-n.tile.y);for(let o=1;o<a.length;o++)zo(e,a[o-1].tile.x,a[o-1].tile.y,a[o].tile.x,a[o].tile.y);for(let o=0;o<e.h;o++)for(let n=0;n<e.w;n++){const l=je(e,n,o);if(e.ground[l]!=="grass"||s(n,o))continue;const h=ue(`s${n},${o}`);h<.06?e.scenery[l]="tree":h<.085?e.scenery[l]="bush":h<.1?e.scenery[l]="rock":h<.108?e.scenery[l]="stump":h<.15&&(e.scenery[l]="flowers")}return e}function D_(r,e,t){const s=r.ground[je(r,e,t)],i=(a,o)=>!Hr(r,a,o)||r.ground[je(r,a,o)]===s;return(i(e,t-1)?1:0)|(i(e+1,t)?2:0)|(i(e,t+1)?4:0)|(i(e-1,t)?8:0)}function Ir(r,e,t,s=0){const i=r.ground[je(r,e,t)];if(i==="grass")return`grass_${r.variant[je(r,e,t)]}`;const a=D_(r,e,t);return i==="path"?`path_${a}`:`water_${a}${s?"_b":""}`}function I_(r,e,t){const s=ue(r)*Math.PI*2,i=ue(r+"r")*t,a=e.x+Math.cos(s)*i,o=e.y+Math.sin(s)*i*.6;return{x:a,y:o,tx:a,ty:o,dir:1,n:0}}function R_(r,e,t,s){const i=ue(`${e}a${r.n}`)*Math.PI*2,a=(.3+.7*ue(`${e}r${r.n}`))*s;return{...r,tx:t.x+Math.cos(i)*a,ty:t.y+Math.sin(i)*a*.6,n:r.n+1}}function G_(r,e,t,s,i,a,o){let n=r;if(o){const m=o.x>=r.x?-1:1;n={...r,tx:o.x+m*9,ty:o.y}}else Math.hypot(r.tx-r.x,r.ty-r.y)<1&&(n=R_(r,e,s,i));const l=o?Math.max(fr.working,24):fr[t];if(l===0)return n;const h=n.tx-n.x,c=n.ty-n.y,u=Math.hypot(h,c);if(u<.5)return n;const f=Math.min(u,l*a),d=Math.abs(h)>.5?h>0?1:-1:n.dir;return{...n,x:n.x+h/u*f,y:n.y+c/u*f,dir:d}}function L_(r){return Math.hypot(r.tx-r.x,r.ty-r.y)>.5}const Ee=12,Ne=18,F_=["............","............","............","....oooo....","...osssso...","...ossseo...","...osssso...","....oooo...."],H_=["...obbbbo...","..obbaabbo..","..obbaabbo..","..sbbbbbbs..","...obbbbo..."],O_={stand:["...ob..bo...","...ob..bo...","...oo..oo...","............","............"],stepA:["...ob..bo...","..ob....bo..","..oo....oo..","............","............"],stepB:["....obbo....","....obbo....","....oooo....","............","............"]},N_={none:[],cap:["............","............","...hhhhh....","...hhhhhhh.."],hood:["............","............","...hhhhhh...","..hhhhhhhh..","..h......h..","..h......h..","..h......h..","..hh....hh.."],helm:["............",".....mm.....","....mmmm....","...mmmmmm..."],point:["......h.....",".....hh.....","....hhhh....","..hhhhhhhh.."]},U_={none:[],staff:["","","..........k.","..........w.","..........w.","..........w.","..........w.","..........w.","..........w.","..........w.","..........w.","..........w.","..........w.","..........w.","..........w."],lantern:["","","","","","","","","","..........m.",".........mkm",".........mkm","..........m."],hammer:["","","","","","","",".........mmm",".........mmm","..........w.","..........w.","..........w.","..........w."],book:["","","","","","","","","","",".........rr.",".........rr."]};function vo(r,e){return r.map((t,s)=>{const i=e[s];if(!i)return t;let a="";for(let o=0;o<Ee;o++){const n=i[o]??".";a+=n==="."?t[o]:n}return a})}const El=["stand","stepA","stepB"];function Dl(r,e,t){let s=[...F_,...H_,...O_[e]];s=vo(s,N_[r.hat]);const i=t&&(r.prop==="none"||r.prop==="book"||r.prop==="hammer")?"lantern":r.prop;return s=vo(s,U_[i]),t||(s=s.map(a=>a.replaceAll("k",i==="staff"?"w":"m"))),s}function X_(r){const e=[];return r.forEach((t,s)=>{for(let i=0;i<t.length;i++)t[i]==="k"&&e.push({x:i,y:s})}),e}function Il(r,e){return{".":null,k:null,o:e.outline,e:e.outline,s:e.skin,b:r.body,a:r.accent,h:r.accent,w:"#7a5a3a",m:"#a7b0ba",r:"#8b2f2f"}}function Rl(r,e){const t=new Uint8ClampedArray(new ArrayBuffer(Ee*Ne*4));return r.forEach((s,i)=>{for(let a=0;a<Ee;a++){const o=e[s[a]??"."];if(!o)continue;const n=(i*Ee+a)*4;t[n]=parseInt(o.slice(1,3),16),t[n+1]=parseInt(o.slice(3,5),16),t[n+2]=parseInt(o.slice(5,7),16),t[n+3]=255}}),t}const W_=4,j_=.18,Q_=9,Y_=1.6;function V_(r,e,t){return r.talking?"talk":r.status==="blocked"?"raise":r.status==="done"&&(e+t*7)%Q_<Y_?"wave":r.moving?"walk":(e+t*3)%W_<j_?"blink":"idle"}function q_(r,e,t,s){return Math.floor((t+s)*e)%Math.max(1,r)}function K_(r,e){const t=`${r}_${e}`;return{base:t,tip:`${t}_tip`,cloak:`${t}_cloak`}}const Po=r=>parseInt(r.slice(1),16);class Gl{constructor(e,t){this.art=e,this.theme=t,this.tipGlow.blendMode="add";const s=e.art.character.anchor;for(const i of[this.base,this.cloak,this.tip,this.tipGlow])i.anchor.set(s.x,s.y);this.container.addChild(this.base,this.cloak,this.tip,this.tipGlow)}art;theme;container=new ie;base=new se;cloak=new se;tip=new se;tipGlow=new se;update(e,t,s,i,a){const{art:o}=this.art,n=e.member,l=this.art.sheets[n.role],h=V_({moving:e.moving,status:n.status,talking:e.talking},e.t,e.phase),c=q_(o.character.counts[h],o.character.fps[h],e.t,e.phase),u=K_(h,c);if(this.base.texture=l.textures[u.base]??L.EMPTY,this.cloak.texture=l.textures[u.cloak]??L.EMPTY,this.cloak.tint=Po(o.roles[n.role].cloak),this.tip.visible=this.tipGlow.visible=e.isBeacon,e.isBeacon){const f=Po(this.theme.palette[e.partyStatus]),d=Zr(e.partyStatus,e.t);this.tip.texture=this.tipGlow.texture=l.textures[u.tip]??L.EMPTY,this.tip.tint=this.tipGlow.tint=f,this.tip.alpha=d,this.tipGlow.alpha=d*.5}this.container.scale.set(t*s,s),this.container.position.set(i,a),this.container.alpha=n.status==="idle"||n.status==="unknown"?.85:1}destroy(){this.container.destroy({children:!0})}}const Js=r=>parseInt(r.slice(1),16),Co=22,To=.75;class Z_{constructor(e,t,s,i,a=null){this.app=e,this.theme=t,this.feed=s,this.art=i,this.figures=a,this.world.addChild(this.terrainLayer,this.buildingLayer,this.actorLayer),e.stage.addChild(this.world,this.overlay),this.overlay.addChild(this.miniTerrain,this.mini),e.stage.eventMode="static",e.stage.hitArea=e.screen,e.stage.on("pointerdown",o=>this.click(o.global.x,o.global.y)),window.addEventListener("keydown",o=>{o.key==="Escape"&&this.setFocus(void 0)}),document.getElementById("detail-close")?.addEventListener("click",()=>this.setFocus(void 0))}app;theme;feed;art;figures;world=new ie;terrainLayer=new ie;buildingLayer=new ie;actorLayer=new ie;overlay=new ie;mini=new We;miniTerrain=new We;waterSprites=[];parties=new Map;settlementViews=[];textures=new Map;layout=bo({parties:{}});cam={cx:0,cy:0,zoom:1};focus;t=0;dt=1/60;textScale=1;panel=document.getElementById("detail");get focusedParty(){return this.focus}setFocus(e){this.focus=e&&this.feed.world.parties[e]?e:void 0,!this.focus&&this.panel&&(this.panel.hidden=!0)}screenSize(){return{w:this.app.screen.width,h:this.app.screen.height}}mapPx(){return{w:this.layout.w*He,h:this.layout.h*He}}partyPoint(e){const t=this.layout.camps.get(e);return t?Zs(t.tile):void 0}click(e,t){const s=this.screenSize(),i=Vs(this.mapPx(),s),a=b_(i,{x:e,y:t}),o=[...this.layout.camps.keys()].map(l=>({id:l,...this.partyPoint(l)}));if(a){const l=ko(o,a,28);l?this.setFocus(l):this.setFocus(void 0);return}const n=Ys(this.cam,s,{x:e,y:t});this.setFocus(ko(o,{x:n.x,y:n.y-10},Math.max(18,28/this.cam.zoom*2)))}frameTexture(e,t,s){const i=`${e}|${t}|${s}`;let a=this.textures.get(i);if(!a){const o=this.theme.roles[e],n=document.createElement("canvas");n.width=Ee,n.height=Ne,n.getContext("2d").putImageData(new ImageData(Rl(Dl(o,t,s),Il(o,this.theme)),Ee,Ne),0,0),a=L.from(n),a.source.scaleMode="nearest",this.textures.set(i,a)}return a}rebuild(e){this.layout=e;for(const a of[this.terrainLayer,this.buildingLayer])a.removeChildren().forEach(o=>o.destroy({children:!0}));this.waterSprites=[],this.settlementViews=[];const t=E_(e);for(let a=0;a<t.h;a++)for(let o=0;o<t.w;o++){const n=a*t.w+o,l=t.ground[n]==="water"?new se(this.art.tile(Ir(t,o,a,0))):new se(this.art.tile(Ir(t,o,a)));l.position.set(o*He,a*He),l.roundPixels=!0,this.terrainLayer.addChild(l),t.ground[n]==="water"&&this.waterSprites.push({sprite:l,a:this.art.tile(Ir(t,o,a,0)),b:this.art.tile(Ir(t,o,a,1))});const h=t.scenery[n];if(h){const c=new se(this.art.tile(h));c.position.set(o*He,a*He),this.terrainLayer.addChild(c)}}for(const a of e.settlements){const o=new ie,n=new se(this.art.prop("settlement"));n.anchor.set(.5,1);const l=Zs(a.tile);o.position.set(l.x,l.y),o.addChild(n);const h=new nr({text:a.name,style:{fontFamily:"monospace",fontSize:9,fill:16777215,stroke:{color:0,width:3}},resolution:4});h.anchor.set(.5,0),h.position.set(0,2),h.scale.set(.9),o.addChild(h),this.buildingLayer.addChild(o),this.settlementViews.push(o)}const s=Vs(this.mapPx(),this.screenSize()),i=s.scale*He;this.miniTerrain.clear(),this.miniTerrain.rect(s.x-2,s.y-2,s.w+4,s.h+4).fill({color:790296,alpha:.85});for(let a=0;a<t.h;a++)for(let o=0;o<t.w;o++){const n=t.ground[a*t.w+o],l=n==="water"?3108768:n==="path"?11901032:Js(this.theme.ground);this.miniTerrain.rect(s.x+o*i,s.y+a*i,Math.ceil(i),Math.ceil(i)).fill(l)}}makeParty(e){const t=new ie,s=new se(this.art.prop("glow"));s.anchor.set(.5,.75),s.blendMode="add";const i=new se(this.art.prop("camp"));i.anchor.set(.5,1);const a=new se(this.art.prop("campfire_0"));a.anchor.set(.5,1),a.position.set(14,0);const o=new nr({text:"",style:{fontFamily:"monospace",fontSize:9,fill:16777215,stroke:{color:0,width:3}},resolution:4});o.anchor.set(.5,1),o.position.set(0,-24),t.addChild(s,i,a,o),this.buildingLayer.addChild(t);const n={root:t,glow:s,camp:i,fire:a,label:o,members:new Map};return this.parties.set(e,n),n}update(e,t){this.t+=e,this.dt=e;const s=this.feed.world,i=bo(s);(i.signature!==this.layout.signature||!this.terrainLayer.children.length)&&(this.rebuild(i),this.cam={cx:this.mapPx().w/2,cy:this.mapPx().h/2,zoom:Qs(this.mapPx(),this.screenSize())}),this.focus&&!s.parties[this.focus]&&this.setFocus(void 0);const a=this.screenSize(),o=this.focus?{...this.camFocus(this.focus),zoom:S_(a)}:{cx:this.mapPx().w/2,cy:this.mapPx().h/2,zoom:Qs(this.mapPx(),a)};this.cam=k_(this.cam,o,e),this.world.scale.set(this.cam.zoom),this.world.position.set(a.w/2-this.cam.cx*this.cam.zoom,a.h/2-this.cam.cy*this.cam.zoom),this.app.stage.hitArea=this.app.screen;const n=Math.floor(this.t*2)%2,l=Math.min(1.2,Math.max(.35,2.2/this.cam.zoom));this.textScale=l;for(const h of this.settlementViews)h.children[1]?.scale.set(l);for(const h of this.waterSprites)h.sprite.texture=n?h.b:h.a;for(const[h,c]of this.parties)s.parties[h]||(c.root.destroy({children:!0}),this.parties.delete(h));for(const h of Object.values(s.parties))this.updateParty(h,t);this.drawMinimap(a),this.updatePanel(t)}camFocus(e){const t=this.partyPoint(e);return{cx:t.x,cy:t.y-8}}updateParty(e,t){const s=this.layout.camps.get(e.id);if(!s)return;const i=this.parties.get(e.id)??this.makeParty(e.id),a=Zs(s.tile);i.root.position.set(a.x,a.y);const o=Js(this.theme.palette[e.status]),n=Zr(e.status,this.t);i.glow.tint=o,i.glow.alpha=.35+.45*n;const l=this.focus===e.id,h=l?1.6:Math.min(3.2,Math.max(1.2,1.6/this.cam.zoom*2.2));i.glow.scale.set(h*(1+(e.status==="blocked"?.08*Math.sin(this.t*8):0))),i.fire.texture=this.art.prop(`campfire_${Math.floor(this.t*(e.status==="working"?8:4))%4}`),i.fire.alpha=e.status==="idle"||e.status==="unknown"?.55:1,i.label.text=e.branch?`${e.label} · ${e.branch}`:e.label,i.label.style.fill=o,i.label.scale.set(this.textScale),i.label.visible=l||this.cam.zoom>2;const c=Object.values(e.members).sort((f,d)=>f.paneId.localeCompare(d.paneId));for(const[f,d]of i.members)e.members[f]||(d.figure?d.figure.destroy():d.sprite.destroy(),d.bubble.destroy({children:!0}),i.members.delete(f));const u=(c.find(f=>f.role===this.theme.beacon)??c[0])?.paneId;c.forEach(f=>{let d=i.members.get(f.paneId);if(!d){const m=new se;m.anchor.set(.5,1);const p=this.figures?new Gl(this.figures,this.theme):void 0,w=new We,A=new nr({text:"",style:{fontFamily:"monospace",fontSize:8,fill:1776420},resolution:4}),_=new ie;_.addChild(w,A),this.actorLayer.addChild(p?p.container:m,_);const x={x:a.x,y:a.y+6};d={sprite:m,...p?{figure:p}:{},bubble:_,text:A,bg:w,phase:ue(f.paneId)*10,w:I_(`${e.id}/${f.paneId}`,x,Co)},i.members.set(f.paneId,d)}this.stepMember(d,e,f,a,f.paneId===u,t)})}stepMember(e,t,s,i,a,o){const n=this.feed.say(t.id,s.paneId,o);let l;if(n){const u=q2(this.feed.world,this.layout.camps,t.id,s.paneId),f=u&&this.parties.get(u.partyId)?.members.get(u.paneId);f&&u&&!(u.partyId===t.id&&u.paneId===s.paneId)&&(l={x:f.w.x,y:f.w.y})}e.w=G_(e.w,`${t.id}/${s.paneId}`,s.status,{x:i.x,y:i.y+6},Co,this.dt,l);const h=L_(e.w)&&fr[s.status]>0,c=e.figure?this.figures.art.character.h*To:Ne;if(e.figure)e.figure.update({member:s,partyStatus:t.status,isBeacon:a,moving:h&&s.status!=="blocked",talking:!!n,t:this.t,phase:e.phase},e.w.dir,To,e.w.x,e.w.y+Kr(s.status,this.t,e.phase)*.5);else{const u=El[Bl(h,this.t,e.phase)];e.sprite.texture=this.frameTexture(s.role,u,a),e.sprite.scale.x=e.w.dir,e.sprite.position.set(e.w.x,e.w.y+Kr(s.status,this.t,e.phase)*.5),e.sprite.tint=s.status==="blocked"?16765136:16777215}if(e.bubble.visible=!!n,n){if(e.text.text!==n){e.text.text=n;const u=e.text.width+6,f=e.text.height+4;e.bg.clear().roundRect(0,0,u,f,3).fill({color:16777215,alpha:.92}),e.text.position.set(3,2)}e.bubble.scale.set(this.textScale),e.bubble.position.set(e.w.x-e.bg.width*this.textScale/2,e.w.y-c-e.bg.height*this.textScale-2)}}drawMinimap(e){const t=Vs(this.mapPx(),e),s=this.mini.clear(),i=this.t;for(const u of Object.values(this.feed.world.parties)){const f=this.partyPoint(u.id);if(!f)continue;const d=Js(this.theme.palette[u.status]),m=Zr(u.status,i),p=t.x+f.x*t.scale,w=t.y+f.y*t.scale;s.circle(p,w,7).fill({color:d,alpha:.25*m}),s.circle(p,w,3).fill({color:d,alpha:m}),u.id===this.focus&&s.circle(p,w,6).stroke({color:16777215,width:1})}const a=Ys(this.cam,e,{x:0,y:0}),o=Ys(this.cam,e,{x:e.w,y:e.h}),n=Math.max(t.x,t.x+a.x*t.scale),l=Math.max(t.y,t.y+a.y*t.scale),h=Math.min(t.x+t.w,t.x+o.x*t.scale)-n,c=Math.min(t.y+t.h,t.y+o.y*t.scale)-l;h>0&&c>0&&this.cam.zoom>Qs(this.mapPx(),e)*1.2&&s.rect(n,l,h,c).stroke({color:16777215,width:1,alpha:.8}),s.rect(t.x-2,t.y-2,t.w+4,t.h+4).stroke({color:16777215,width:1,alpha:.35})}updatePanel(e){if(!this.panel)return;const t=this.focus?this.feed.world.parties[this.focus]:void 0;if(!t){this.panel.hidden=!0;return}const s=this.layout.camps.get(t.id),i=z_(t,Ml(s?.settlementKey??Fr(t)),this.theme.beacon,e),a=`<h2>${Jt(i.title)} <span class="st ${i.status}">${i.status}</span></h2><p class="sub">${Jt(i.subtitle)}</p><ul>${i.rows.map(n=>`<li><span class="st ${n.status}">●</span> <b>${Jt(n.role)}</b> <i>${Jt(n.agent)}</i><br><span class="line">${Jt(n.line)}</span></li>`).join("")}</ul>`,o=this.panel.querySelector("#detail-body");o&&o.innerHTML!==a&&(o.innerHTML=a),this.panel.hidden=!1}}function Jt(r){return r.replace(/[&<>"]/g,e=>({"&":"&","<":"<",">":">",'"':"""})[e])}async function J_(r,e){const t=await wt.load(r.imageUrl(e));t.source.scaleMode="nearest";const s=new ni(t,r.sheetJson(e));return await s.parse(),s}async function $_(r){const e=r.art;if(!e)return null;const t=new Map,s=l=>{let h=t.get(l);return h||t.set(l,h=J_(r,l)),h},i=Object.keys(e.roles),[a,o,n]=await Promise.all([Promise.all(i.map(l=>s(e.roles[l].sheet))),s(e.ground.sheet),s(e.ui.sheet)]);return{art:e,sheets:Object.fromEntries(i.map((l,h)=>[l,a[h]])),ground:o,ui:n}}class ex{constructor(e=350){this.windowMs=e}windowMs;last=new Map;tap(e,t){const s=this.last.get(e);return s!==void 0&&t-s<=this.windowMs?(this.last.delete(e),!0):(this.last.set(e,t),!1)}}const Bo=8,tx=3,$s=r=>parseInt(r.slice(1),16);class rx{constructor(e,t,s,i,a=null){this.app=e,this.theme=t,this.feed=s,this.scale=i,this.art=a,e.stage.addChild(this.ground,this.layer),this.ground.eventMode="none"}app;theme;feed;scale;art;textures=new Map;parties=new Map;ground=new We;layer=new ie;t=0;doubleTap=new ex;groundTiles=[];groundWidth=0;layoutGround(e,t){const s=this.art,i=this.scale,a=16*i;if(e!==this.groundWidth||this.groundTiles.length===0){for(const n of this.groundTiles)n.destroy();this.groundTiles=[];const o=s.art.ground.tiles;for(let n=0;n*a<e;n++){const l=s.ground.textures[o[Math.floor(ue(`g${n}`)*o.length)]],h=new se(l);h.scale.set(i),h.x=n*a,this.ground.addChild(h),this.groundTiles.push(h)}this.groundWidth=e}for(const o of this.groundTiles)o.y=t-Bo*i}frame(e,t,s){const i=`${e}|${t}|${s}`;let a=this.textures.get(i);if(!a){const o=this.theme.roles[e],n=Dl(o,t,s),l=document.createElement("canvas");l.width=Ee,l.height=Ne,l.getContext("2d").putImageData(new ImageData(Rl(n,Il(o,this.theme)),Ee,Ne),0,0);const c=L.from(l);c.source.scaleMode="nearest",a={texture:c,grid:n},this.textures.set(i,a)}return a}makeMember(e,t){const s=new se;s.anchor.set(.5,1);const i=this.art?new Gl(this.art,this.theme):void 0,a=new We,o=new We,n=new nr({text:"",style:{fontFamily:"monospace",fontSize:12,fill:1776420}}),l=new ie,h={sprite:s,...i?{figure:i}:{},glow:a,bubble:l,bubbleText:n,bubbleBg:o,phase:ue(t)*10};if(this.art){const u=this.art.art.ui,f=u.bubble.slice;h.bubbleSkin=new _o({texture:this.art.ui.textures[u.bubble.frame],leftWidth:f,topHeight:f,rightWidth:f,bottomHeight:f}),h.bubbleSkin.scale.set(this.scale),u.bubble.tail&&(h.bubbleTail=new se(this.art.ui.textures[u.bubble.tail]),h.bubbleTail.anchor.set(.5,0),h.bubbleTail.scale.set(this.scale)),l.addChild(h.bubbleSkin,...h.bubbleTail?[h.bubbleTail]:[],n)}else l.addChild(o,n);const c=i?i.container:s;return c.eventMode="static",c.cursor="pointer",c.on("pointertap",()=>{this.doubleTap.tap(t,performance.now())&&this.feed.onFocus?.(t)}),e.root.addChild(c,a,l),e.members.set(t,h),h}makeParty(e,t){const s=new ie,i=new nr({text:"",style:{fontFamily:"monospace",fontSize:12,fill:16777215,stroke:{color:0,width:3}}});i.anchor.set(.5,1);let a;if(this.art){const h=this.art.art.ui.nameplate;a=new _o({texture:this.art.ui.textures[h.frame],leftWidth:h.slice,topHeight:h.slice,rightWidth:h.slice,bottomHeight:h.slice}),a.scale.set(this.scale),i.style={fontFamily:"monospace",fontSize:12,fill:16777215},s.addChild(a)}let o;this.art&&(o=new se,o.scale.set(this.scale),s.addChild(o)),s.addChild(i),this.layer.addChild(s);const n=t.start+ue(e.id)*Math.max(0,t.end-t.start-60),l={root:s,label:i,...a?{plate:a}:{},...o?{icon:o}:{},members:new Map,walker:{x:n,dir:ue(e.id+"!")>.5?1:-1}};return this.parties.set(e.id,l),l}update(e,t){this.t+=e;const{width:s,height:i}=this.app.screen,a=this.scale,o=this.art?.art,n=o?o.character.w:Ee,l=o?o.character.h:Ne;let h;if(o)this.layoutGround(s,i),h=i-(Bo-tx)*a;else{const d=3*a;h=i-d,this.ground.clear().rect(0,h,s,d).fill($s(this.theme.ground))}const c=this.feed.world,u=P_(Object.keys(c.parties),s);for(const[d,m]of this.parties)c.parties[d]||(m.root.destroy({children:!0}),this.parties.delete(d));const f=(o?n*.7:Ee+3)*a;for(const d of Object.values(c.parties)){const m=u.get(d.id),p=this.parties.get(d.id)??this.makeParty(d,m),w=Object.values(d.members).sort((S,k)=>S.paneId.localeCompare(k.paneId)),A=Math.max(0,w.length-1)*f+n*a;p.walker=C_(p.walker,d.status,m,A,e);const _=fr[d.status]>0,x=(w.find(S=>S.role===this.theme.beacon)??w[0])?.paneId;for(const[S,k]of p.members)d.members[S]||(k.figure?k.figure.destroy():k.sprite.destroy(),k.glow.destroy(),k.bubble.destroy({children:!0}),p.members.delete(S));w.forEach((S,k)=>{const v=p.members.get(S.paneId)??this.makeMember(p,S.paneId),P=T_(p.walker.x,k,f)+n*a/2;o?this.drawArtMember(v,S,d,S.paneId===x,P,h,_,t):this.drawMember(v,S,d,S.paneId===x,P,h,_,t)});const y=p.walker.x+A/2,g=d.branch?`${d.label} · ${d.branch}`:d.label;if(p.label.text=g,p.plate){const S=6*a,k=3*a,v=p.icon?9*a+3*a:0,P=p.label.width+S*2+v,z=p.label.height+k*2;p.plate.width=P/a,p.plate.height=z/a;const b=h-l*a-6-z;p.plate.position.set(y-P/2,b),p.label.style.fill=16777215,p.label.anchor.set(0,.5),p.label.position.set(y-P/2+S+v,b+z/2),p.icon&&(p.icon.texture=this.art.ui.textures[o.ui.statusIcons[d.status]]??L.EMPTY,p.icon.position.set(y-P/2+S,b+z/2-9*a/2))}else p.label.style.fill=$s(this.theme.palette[d.status]),p.label.position.set(y,h-l*a-4)}}drawArtMember(e,t,s,i,a,o,n,l){const h=this.art,c=this.scale,{art:u}=h,f=this.feed.say(s.id,t.paneId,l),d=this.parties.get(s.id).walker.dir,m=o+Kr(t.status,this.t,e.phase);if(e.figure.update({member:t,partyStatus:s.status,isBeacon:i,moving:n&&t.status!=="blocked",talking:!!f,t:this.t,phase:e.phase},d,c,a,m),e.bubble.visible=!!f,f){const p=u.ui.bubble,w=e.bubbleSkin;e.bubbleText.text!==f&&(e.bubbleText.text=f);const A=5*c,_=3*c,x=e.bubbleText.width+A*2,y=e.bubbleText.height+_*2;w.width=x/c,w.height=y/c,e.bubbleText.position.set(A,_),e.bubbleTail&&e.bubbleTail.position.set(x/2,y-c);const g=this.app.screen.width-x-4,S=u.character.h*c+(p.tail?6*c:0)+(this.parties.get(s.id).plate?14*c:6);e.bubble.position.set(Math.max(4,Math.min(g,a-x/2)),m-S-y)}}drawMember(e,t,s,i,a,o,n,l){const h=this.scale,c=n&&t.status!=="blocked",u=El[Bl(c,this.t,e.phase)],{texture:f,grid:d}=this.frame(t.role,u,i),m=this.parties.get(s.id).walker.dir,p=o+Kr(t.status,this.t,e.phase);if(e.sprite.texture=f,e.sprite.scale.set(m*h,h),e.sprite.position.set(a,p),e.sprite.alpha=t.status==="idle"||t.status==="unknown"?.85:1,e.glow.clear(),i){const A=$s(this.theme.palette[s.status]),_=Zr(s.status,this.t);for(const x of X_(d)){const y=a+m*(x.x-Ee/2+.5)*h,g=p-(Ne-x.y-.5)*h;e.glow.circle(y,g,3.5*h).fill({color:A,alpha:_*.25}),e.glow.rect(y-h/2,g-h/2,h,h).fill({color:A,alpha:_})}}const w=this.feed.say(s.id,t.paneId,l);if(e.bubble.visible=!!w,w){if(e.bubbleText.text!==w){e.bubbleText.text=w;const x=e.bubbleText.width+10,y=e.bubbleText.height+6;e.bubbleBg.clear().roundRect(0,0,x,y,4).fill({color:16777215,alpha:.92}).moveTo(x/2-4,y).lineTo(x/2,y+5).lineTo(x/2+4,y).fill({color:16777215,alpha:.92}),e.bubbleText.position.set(5,3)}const A=e.bubbleBg.width,_=this.app.screen.width-A-4;e.bubble.position.set(Math.max(4,Math.min(_,a-A/2)),p-Ne*h-46)}}}const Mo="neutral";function sx(r,...e){for(const s of e)if(s&&r.includes(s))return s;if(r.includes(Mo))return Mo;const t=[...r].sort()[0];if(!t)throw new Error("no theme packs found under themes/");return t}const tt=new URLSearchParams(location.search),Eo=tt.get("mode")==="map"?"map":"strip",ix=tt.has("transparent"),ax=Math.max(1,Math.min(6,Number(tt.get("scale")??3)));document.body.classList.add(ix?"transparent":"backdrop");function ox(){if(tt.get("source")==="mock")return null;const r=tt.get("ws");return r||(location.port!=="5173"&&location.protocol.startsWith("http")?`ws://${location.host}/deltas`:"ws://127.0.0.1:7341/deltas")}async function nx(){try{const r=await fetch("./config.json",{cache:"no-store"});if(!r.ok)return;const e=await r.json();return typeof e.pack=="string"?e.pack:void 0}catch{return}}async function lx(){const r=y_(),e=tt.get("pack");e&&!r.includes(e)&&console.warn(`bellwether: unknown pack "${e}", have ${r.join(", ")}`);const t=sx(r,e,await nx()),s=g_(t),i=s.theme,a=await $_(s),o=new In;await o.init({backgroundAlpha:0,resizeTo:window,antialias:!1,autoDensity:!0,resolution:window.devicePixelRatio||1}),document.body.appendChild(o.canvas);const n=new W2(i.sayTtlMs),l=Eo==="map"?new Z_(o,i,n,await Um(Nm(t)?t:"neutral"),a):new rx(o,i,n,ax,a);window.addEventListener("keydown",d=>{if(d.key!=="m"&&d.key!=="M")return;const m=new URLSearchParams(location.search);m.set("mode",Eo==="map"?"strip":"map"),location.search=m.toString()});const h=document.getElementById("chip"),c=d=>{const m=d.kind==="member"?n.world.parties[d.partyId]:void 0;if(n.apply(d,performance.now()),d.kind==="member"&&m){const p=n.world.parties[d.partyId],w=p&&Z2(m,p,d.member);w&&n.apply({t:d.t,kind:"say",partyId:d.partyId,paneId:w.from.paneId,text:w.text},performance.now())}},u=d=>{h&&(h.textContent=d.kind==="ws"?`adapter · ${d.url}`:d.kind==="replay"?`replay · ${d.url}`:`mock · ${d.reason}`)},f=tt.get("replay");if(f)V2(f,Number(tt.get("speed")??1),c,u);else{const d=j2(ox(),c,u);n.onFocus=m=>d.send?.({type:"focus",paneId:m})}o.ticker.add(d=>l.update(d.deltaMS/1e3,performance.now()))}lx();export{ie as $,Ii as A,et as B,Ze as C,M as D,De as E,We as F,rs as G,is as H,Ft as I,Pd as J,Uf as K,Ld as L,H as M,Qe as N,as as O,rn as P,U as Q,$ as R,Gi as S,L as T,Cn as U,hi as V,Q as W,Ct as X,Or as Y,de as Z,xh as _,xn as a,Du as a0,Ut as a1,Ba as a2,Rr as a3,ts as a4,Ur as a5,me as a6,zn as a7,An as a8,hd as a9,bc as aA,th as aB,cd as aC,dd as aD,xd as aE,Ad as aF,yd as aG,jf as aH,ud as aa,_d as ab,pd as ac,ah as ad,gd as ae,pe as af,Wo as ag,be as ah,Jr as ai,ua as aj,se as ak,T2 as al,Nh as am,fa as an,_s as ao,pa as ap,Xh as aq,Qo as ar,qf as as,Tn as at,mr as au,Zc as av,Qc as aw,Je as ax,Un as ay,Hu as az,fn as b,At as c,G as d,zi as e,Pi as f,Mr as g,ee as h,Vr as i,ul as j,dl as k,ke as l,cx as m,A2 as n,i2 as o,ce as p,N as q,mc as r,Gu as s,ae as t,vc as u,V as v,j as w,q as x,Y as y,rr as z};
|