route-engine-js 1.36.3 → 1.37.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/dist/RouteEngine.js +2 -2
- package/package.json +2 -1
package/dist/RouteEngine.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Gp=Object.defineProperty;var Hp=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Xp=(e,r)=>{for(var n in r)Gp(e,n,{get:r[n],enumerable:!0})};var nu=Hp(Ii=>{"use strict";Object.defineProperty(Ii,"__esModule",{value:!0});function tu(e){let r=e.length,n=0,o=0,a;for(;o<r;)n++,a=e.charCodeAt(o++),a>=55296&&a<=56319&&o<r&&(a=e.charCodeAt(o),(a&64512)===56320&&o++);return n}Ii.default=tu;tu.code='require("ajv/dist/runtime/ucs2length").default'});var Mi=Symbol.for("immer-nothing"),ji=Symbol.for("immer-draftable"),Se=Symbol.for("immer-state");function Le(e,...r){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Gr=Object.getPrototypeOf;function he(e){return!!e&&!!e[Se]}function Sr(e){return e?qi(e)||Array.isArray(e)||!!e[ji]||!!e.constructor?.[ji]||Zt(e)||en(e):!1}var Wp=Object.prototype.constructor.toString();function qi(e){if(!e||typeof e!="object")return!1;let r=Gr(e);if(r===null)return!0;let n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return n===Object?!0:typeof n=="function"&&Function.toString.call(n)===Wp}function Jt(e){return he(e)||Le(15,e),e[Se].base_}function Xt(e,r){Qt(e)===0?Reflect.ownKeys(e).forEach(n=>{r(n,e[n],e)}):e.forEach((n,o)=>r(o,n,e))}function Qt(e){let r=e[Se];return r?r.type_:Array.isArray(e)?1:Zt(e)?2:en(e)?3:0}function Os(e,r){return Qt(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function Vi(e,r,n){let o=Qt(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function Kp(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function Zt(e){return e instanceof Map}function en(e){return e instanceof Set}function Er(e){return e.copy_||e.base_}function Cs(e,r){if(Zt(e))return new Map(e);if(en(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=qi(e);if(r===!0||r==="class_only"&&!n){let o=Object.getOwnPropertyDescriptors(e);delete o[Se];let a=Reflect.ownKeys(o);for(let t=0;t<a.length;t++){let s=a[t],i=o[s];i.writable===!1&&(i.writable=!0,i.configurable=!0),(i.get||i.set)&&(o[s]={configurable:!0,writable:!0,enumerable:i.enumerable,value:e[s]})}return Object.create(Gr(e),o)}else{let o=Gr(e);if(o!==null&&n)return{...e};let a=Object.create(o);return Object.assign(a,e)}}function Ds(e,r=!1){return rn(e)||he(e)||!Sr(e)||(Qt(e)>1&&(e.set=e.add=e.clear=e.delete=Jp),Object.freeze(e),r&&Object.entries(e).forEach(([n,o])=>Ds(o,!0))),e}function Jp(){Le(2)}function rn(e){return Object.isFrozen(e)}var Qp={};function Rr(e){let r=Qp[e];return r||Le(0,e),r}var pt;function Fi(){return pt}function Zp(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Ni(e,r){r&&(Rr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function $s(e){_s(e),e.drafts_.forEach(ed),e.drafts_=null}function _s(e){e===pt&&(pt=e.parent_)}function Di(e){return pt=Zp(pt,e)}function ed(e){let r=e[Se];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function Li(e,r){r.unfinalizedDrafts_=r.drafts_.length;let n=r.drafts_[0];return e!==void 0&&e!==n?(n[Se].modified_&&($s(r),Le(4)),Sr(e)&&(e=Wt(r,e),r.parent_||Kt(r,e)),r.patches_&&Rr("Patches").generateReplacementPatches_(n[Se].base_,e,r.patches_,r.inversePatches_)):e=Wt(r,n,[]),$s(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Mi?e:void 0}function Wt(e,r,n){if(rn(r))return r;let o=r[Se];if(!o)return Xt(r,(a,t)=>Ti(e,o,r,a,t,n)),r;if(o.scope_!==e)return r;if(!o.modified_)return Kt(e,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;let a=o.copy_,t=a,s=!1;o.type_===3&&(t=new Set(a),a.clear(),s=!0),Xt(t,(i,l)=>Ti(e,o,a,i,l,n,s)),Kt(e,a,!1),n&&e.patches_&&Rr("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function Ti(e,r,n,o,a,t,s){if(he(a)){let i=t&&r&&r.type_!==3&&!Os(r.assigned_,o)?t.concat(o):void 0,l=Wt(e,a,i);if(Vi(n,o,l),he(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(Sr(a)&&!rn(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Wt(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,o)&&Kt(e,a)}}function Kt(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Ds(r,n)}function rd(e,r){let n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:Fi(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=o,t=Ls;n&&(a=[o],t=dt);let{revoke:s,proxy:i}=Proxy.revocable(a,t);return o.draft_=i,o.revoke_=s,i}var Ls={get(e,r){if(r===Se)return e;let n=Er(e);if(!Os(n,r))return td(e,n,r);let o=n[r];return e.finalized_||!Sr(o)?o:o===Ss(e.base_,r)?(Rs(e),e.copy_[r]=Ns(o,e)):o},has(e,r){return r in Er(e)},ownKeys(e){return Reflect.ownKeys(Er(e))},set(e,r,n){let o=Ui(Er(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){let a=Ss(Er(e),r),t=a?.[Se];if(t&&t.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(Kp(n,a)&&(n!==void 0||Os(e.base_,r)))return!0;Rs(e),js(e)}return e.copy_[r]===n&&(n!==void 0||r in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=n,e.assigned_[r]=!0),!0},deleteProperty(e,r){return Ss(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,Rs(e),js(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){let n=Er(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){Le(11)},getPrototypeOf(e){return Gr(e.base_)},setPrototypeOf(){Le(12)}},dt={};Xt(Ls,(e,r)=>{dt[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}});dt.deleteProperty=function(e,r){return dt.set.call(this,e,r,void 0)};dt.set=function(e,r,n){return Ls.set.call(this,e[0],r,n,e[0])};function Ss(e,r){let n=e[Se];return(n?Er(n):e)[r]}function td(e,r,n){let o=Ui(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function Ui(e,r){if(!(r in e))return;let n=Gr(e);for(;n;){let o=Object.getOwnPropertyDescriptor(n,r);if(o)return o;n=Gr(n)}}function js(e){e.modified_||(e.modified_=!0,e.parent_&&js(e.parent_))}function Rs(e){e.copy_||(e.copy_=Cs(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var nd=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(r,n,o)=>{if(typeof r=="function"&&typeof n!="function"){let t=n;n=r;let s=this;return function(l=t,...c){return s.produce(l,u=>n.call(this,u,...c))}}typeof n!="function"&&Le(6),o!==void 0&&typeof o!="function"&&Le(7);let a;if(Sr(r)){let t=Di(this),s=Ns(r,void 0),i=!0;try{a=n(s),i=!1}finally{i?$s(t):_s(t)}return Ni(t,o),Li(a,t)}else if(!r||typeof r!="object"){if(a=n(r),a===void 0&&(a=r),a===Mi&&(a=void 0),this.autoFreeze_&&Ds(a,!0),o){let t=[],s=[];Rr("Patches").generateReplacementPatches_(r,a,t,s),o(t,s)}return a}else Le(1,r)},this.produceWithPatches=(r,n)=>{if(typeof r=="function")return(s,...i)=>this.produceWithPatches(s,l=>r(l,...i));let o,a;return[this.produce(r,n,(s,i)=>{o=s,a=i}),o,a]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){Sr(e)||Le(8),he(e)&&(e=dr(e));let r=Di(this),n=Ns(e,void 0);return n[Se].isManual_=!0,_s(r),n}finishDraft(e,r){let n=e&&e[Se];(!n||!n.isManual_)&&Le(9);let{scope_:o}=n;return Ni(o,r),Li(void 0,o)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,r){let n;for(n=r.length-1;n>=0;n--){let a=r[n];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}n>-1&&(r=r.slice(n+1));let o=Rr("Patches").applyPatches_;return he(e)?o(e,r):this.produce(e,a=>o(a,r))}};function Ns(e,r){let n=Zt(e)?Rr("MapSet").proxyMap_(e,r):en(e)?Rr("MapSet").proxySet_(e,r):rd(e,r);return(r?r.scope_:Fi()).drafts_.push(n),n}function dr(e){return he(e)||Le(10,e),Bi(e)}function Bi(e){if(!Sr(e)||rn(e))return e;let r=e[Se],n;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=Cs(e,r.scope_.immer_.useStrictShallowCopy_)}else n=Cs(e,!0);return Xt(n,(o,a)=>{Vi(n,o,Bi(a))}),r&&(r.finalized_=!1),n}var Ce=new nd,Ts=Ce.produce,C0=Ce.produceWithPatches.bind(Ce),$0=Ce.setAutoFreeze.bind(Ce),_0=Ce.setUseStrictShallowCopy.bind(Ce),j0=Ce.applyPatches.bind(Ce),N0=Ce.createDraft.bind(Ce),D0=Ce.finishDraft.bind(Ce);var A={LITERAL:0,VARIABLE:1,INTERPOLATION:2,FUNCTION:3,BINARY:4,UNARY:5,CONDITIONAL:6,LOOP:7,OBJECT:8,ARRAY:9,PARTIAL:10,PATH_REFERENCE:11},Y={EQ:0,NEQ:1,GT:2,LT:3,GTE:4,LTE:5,AND:6,OR:7,IN:8,ADD:10,SUBTRACT:11},Hr={NOT:0};var _=class extends Error{constructor(r){super(`Parse Error: ${r}`),this.name="JemplParseError"}},ke=class extends Error{constructor(r){super(`Render Error: ${r}`),this.name="JemplRenderError"}};var Ms=e=>{if(!e||e.trim()==="")throw new _("Missing condition expression after '$if'");if(e.includes("===")||e.includes("!==")){let n=e.includes("===")?"==":"!=";throw new _(`Invalid comparison operator '${e.includes("===")?"===":"!=="}' - did you mean '${n}'? (got: '${e}')`)}let r=["<",">","<=",">=","==","!="];for(let n of r)if(e.trim().endsWith(n))throw new _(`Incomplete comparison expression - missing right operand (got: '${e}')`)},Yi=e=>{if(e.trim().endsWith(" in"))throw new _(`Missing iterable expression after 'in' (got: '$for ${e}')`);if(!e.includes(" in "))throw new _(`Invalid loop syntax - missing 'in' keyword (got: '$for ${e}')`);let[r,n]=e.split(" in ");if(!n||n.trim()==="")throw new _(`Missing iterable expression after 'in' (got: '$for ${e}')`);let o=r.includes(",")?r.split(",").map(a=>a.trim()):[r.trim()];for(let a of o){if(!a)throw new _(`Invalid loop variable - variable name cannot be empty (got: '$for ${e}')`);if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(a))throw new _(`Invalid loop syntax (got: '$for ${e}')`)}};var zi=(e,r,n=!1)=>{if(r===null)return new ke(`Cannot iterate over null value at '$for ${e}'`);if(r===void 0)return new ke(`Cannot iterate over undefined value at '$for ${e}'`);let o=typeof r;return n?new ke(`Cannot iterate over non-array value in loop '${e}' - got ${o} instead`):new ke(`Cannot iterate over non-array value (got: ${o}) at '$for ${e}'`)},Gi=(e,r)=>{let n=r&&Object.keys(r).length>0?Object.keys(r).join(", "):"no custom functions provided";return new ke(`Unknown function '${e}' (${n})`)};var sd=(e,r,n={})=>{let o={},a={};n&&typeof n=="object"&&(n.functions!==void 0||n.partials!==void 0?(o=n.functions||{},a=n.partials||{}):typeof n=="object"&&(o=n));let s=H(e,{functions:o,partials:a},r,{});return s===void 0?{}:s},H=(e,r,n,o)=>{let a=r.functions||r;if(e.var&&!e.type)return de(e.var,n,o);if(e.type===A.LITERAL)return e.value;if(e.type===A.VARIABLE)return de(e.path,n,o);if(e.type===A.INTERPOLATION)return id(e.parts,r,n,o);switch(e.type){case A.FUNCTION:return Xi(e,r,n,o);case A.BINARY:return Wi(e,r,n,o);case A.UNARY:return Ki(e,r,n,o);case A.CONDITIONAL:return ld(e,r,n,o);case A.LOOP:return fd(e,r,n,o);case A.OBJECT:return yd(e,r,n,o);case A.ARRAY:return hd(e,r,n,o);case A.PARTIAL:return gd(e,r,n,o);case A.PATH_REFERENCE:return bd(e,r,n,o);default:throw new Error(`Unknown node type: ${e.type}`)}},Hi=new Map,od=e=>{let r=[],n="",o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(t==="[")n&&(r.push({type:"property",value:n}),n=""),o=!0;else if(t==="]"){if(o&&n){let s=n.trim();if(/^\d+$/.test(s))r.push({type:"index",value:parseInt(s,10)});else if(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")){let i=s.slice(1,-1);r.push({type:"property",value:i})}else r.push({type:"property",value:s});n=""}o=!1}else n+=t}return n&&r.push({type:"property",value:n}),r},de=(e,r,n)=>{if(!e)return;if(e in n)return n[e];let o=Hi.get(e);if(!o){let t=[],s="",i=0;for(let l=0;l<e.length;l++){let c=e[l];c==="["?(i++,s+=c):c==="]"?(i--,s+=c):c==="."&&i===0?s&&(t.push(s),s=""):s+=c}s&&t.push(s),o=[];for(let l of t){let c=od(l.trim());o.push(...c)}Hi.set(e,o)}let a=r;for(let t=0;t<o.length;t++){let s=o[t];if(s.type==="property"&&s.value in n){a=n[s.value];continue}if(a==null)return;(s.type==="property"||s.type==="index")&&(a=a[s.value])}return a},id=(e,r,n,o)=>{let a=[];for(let t of e)if(typeof t=="string")a.push(t);else{let s=H(t,r,n,o);a.push(s!=null?String(s):"")}return a.join("")},Xi=(e,r,n,o)=>{let a=r.functions||r,t=a[e.name];if(!t)throw Gi(e.name,a);let s=e.args.map(i=>H(i,r,n,o));return t(...s)},fr=(e,r,n,o)=>{if(e.var&&!e.type)return de(e.var,n,o);switch(e.type){case A.VARIABLE:return de(e.path,n,o);case A.LITERAL:return e.value;case A.BINARY:return Wi(e,r,n,o);case A.UNARY:return Ki(e,r,n,o);case A.FUNCTION:return Xi(e,r,n,o);default:return H(e,r,n,o)}},Wi=(e,r,n,o)=>{if(e.op===Y.AND||e.op===Y.OR){let s=fr(e.left,r,n,o),i=fr(e.right,r,n,o);switch(e.op){case Y.AND:return s&&i;case Y.OR:return s||i}}let a=H(e.left,r,n,o),t=H(e.right,r,n,o);switch(e.op){case Y.EQ:return a==t;case Y.NEQ:return a!=t;case Y.GT:return a>t;case Y.LT:return a<t;case Y.GTE:return a>=t;case Y.LTE:return a<=t;case Y.IN:return Array.isArray(t)?t.includes(a):!1;case Y.ADD:if(typeof a!="number"||typeof t!="number")throw new ke(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof t}`);return a+t;case Y.SUBTRACT:if(typeof a!="number"||typeof t!="number")throw new ke(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof t}`);return a-t;default:throw new Error(`Unknown binary operator: ${e.op}`)}},Ki=(e,r,n,o)=>{let a=e.op===Hr.NOT?fr(e.operand,r,n,o):H(e.operand,r,n,o);if(e.op===Hr.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},ad=(e,r,n,o)=>{if(e.conditions.length===2&&e.conditions[1]===null){let a=e.conditions[0];if(a.type===A.VARIABLE)if(de(a.path,n,o)){let s=e.bodies[0];if(s.type===A.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let c=l.parsedKey?H(l.parsedKey,r,n,o):l.key,u=l.value;if(u.type===A.LITERAL)i[c]=u.value;else if(u.type===A.VARIABLE)i[c]=de(u.path,n,o);else if(u.type===A.INTERPOLATION){let p=[];for(let m of u.parts)if(typeof m=="string")p.push(m);else if(m.type===A.VARIABLE){let d=de(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=H(m,r,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=H(u,r,n,o)}return i}}else{let s=e.bodies[1];if(s.type===A.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let c=l.parsedKey?H(l.parsedKey,r,n,o):l.key,u=l.value;if(u.type===A.LITERAL)i[c]=u.value;else if(u.type===A.VARIABLE)i[c]=de(u.path,n,o);else if(u.type===A.INTERPOLATION){let p=[];for(let m of u.parts)if(typeof m=="string")p.push(m);else if(m.type===A.VARIABLE){let d=de(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=H(m,r,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=H(u,r,n,o)}return i}}}return null},ld=(e,r,n,o)=>{let a=ad(e,r,n,o);if(a!==null)return a;for(let t=0;t<e.conditions.length;t++){let s=e.conditions[t];if(s===null||fr(s,r,n,o))return H(e.bodies[t],r,n,o)}return Ji},cd=(e,r)=>{let n=e.body,o=e.itemVar;if(n.type===A.CONDITIONAL&&n.conditions.length===1&&n.conditions[0].type===A.VARIABLE){let a=n.conditions[0].path,t=n.bodies[0];if(a.startsWith(o+".")){let s=a.substring(o.length+1);if(t.type===A.OBJECT&&t.properties.length<=5){for(let l of t.properties)if(l.parsedKey)return null;let i=[];for(let l=0;l<r.length;l++){let c=r[l];if(c[s]){let u={};for(let p of t.properties){let m=p.key,d=p.value;if(d.type===A.LITERAL)u[m]=d.value;else if(d.type===A.VARIABLE){let f=d.path;if(f===o)u[m]=c;else if(f.startsWith(o+".")){let y=f.substring(o.length+1);u[m]=c[y]}else return null}else if(d.type===A.INTERPOLATION){let f=[],y=!0;for(let g of d.parts)if(typeof g=="string")f.push(g);else if(g.type===A.VARIABLE){let h=g.path;if(h===o)f.push(c!=null?String(c):"");else if(h.startsWith(o+".")){let I=h.substring(o.length+1),b=c[I];f.push(b!=null?String(b):"")}else{y=!1;break}}else{y=!1;break}if(!y)return null;u[m]=f.join("")}else return null}i.push(u)}}return i}}}return null},ud=(e,r)=>{let n=e.body,o=e.itemVar,a=cd(e,r);if(a!==null)return a;if(n.type===A.OBJECT&&n.properties.length<=5&&!n.whenCondition){for(let i of n.properties)if(i.parsedKey)return null;let t=[],s=!0;for(let i of n.properties){let l=i.key,c=i.value;if(c.type===A.LITERAL)t.push({key:l,type:"literal",value:c.value});else if(c.type===A.VARIABLE){let u=c.path;if(u===o)t.push({key:l,type:"item"});else if(u.startsWith(o+".")){let p=u.substring(o.length+1);if(!p.includes(".")&&!p.includes("["))t.push({key:l,type:"prop",prop:p});else{s=!1;break}}else{s=!1;break}}else if(c.type===A.INTERPOLATION&&c.parts.length===1){let u=c.parts[0];if(u.type===A.VARIABLE){let p=u.path;if(p===o)t.push({key:l,type:"item_string"});else if(p.startsWith(o+".")){let m=p.substring(o.length+1);if(!m.includes(".")&&!m.includes("["))t.push({key:l,type:"prop_string",prop:m});else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}if(s){let i=new Array(r.length);if(t.length===3&&t[0].type==="prop"&&t[0].key==="id"&&t[1].type==="prop_string"&&t[1].key==="title"&&t[2].type==="prop"&&t[2].key==="completed")for(let l=0;l<r.length;l++){let c=r[l];i[l]={id:c.id,title:c.title!=null?String(c.title):"",completed:c.completed}}else for(let l=0;l<r.length;l++){let c=r[l],u={};for(let p of t)if(p.type==="literal")u[p.key]=p.value;else if(p.type==="item")u[p.key]=c;else if(p.type==="prop")u[p.key]=c[p.prop];else if(p.type==="item_string")u[p.key]=c!=null?String(c):"";else if(p.type==="prop_string"){let m=c[p.prop];u[p.key]=m!=null?String(m):""}i[l]=u}return i}}return null},pd=(e,r,n,o,a)=>{let t=[],s=e.body;if(s.type===A.OBJECT&&s.fast!==!1){let i=e.itemVar,l=e.indexVar;for(let c=0;c<a.length;c++){let u=a[c],p={},m={...o,[i]:u,...l&&{[l]:c}};m.__paths__||(m.__paths__=o.__paths__||{});let d=e.iterable.path||"";if(o&&o.__paths__&&d){let f=d.split("."),y=f[0];y in o.__paths__&&(d=o.__paths__[y],f.length>1&&(d+="."+f.slice(1).join(".")))}m.__paths__={...m.__paths__,[i]:`${d}[${c}]`,...l&&{[l]:c}};for(let f of s.properties){let y=f.parsedKey?H(f.parsedKey,r,n,m):f.key,g=f.value;if(g.type===A.LITERAL)p[y]=g.value;else if(g.type===A.VARIABLE){let h=g.path;if(h===i)p[y]=u;else if(h===l)p[y]=c;else if(h.startsWith(i+".")){let I=h.substring(i.length+1);!I.includes(".")&&!I.includes("[")?p[y]=u[I]:p[y]=de(h,n,{...o,[i]:u,...l&&{[l]:c}})}else p[y]=de(h,n,{...o,[i]:u,...l&&{[l]:c}})}else if(g.type===A.INTERPOLATION){let h=[];for(let I of g.parts)if(typeof I=="string")h.push(I);else if(I.type===A.VARIABLE){let b=I.path,x;if(b===i)x=u;else if(b===l)x=c;else if(b.startsWith(i+".")){let v=b.substring(i.length+1);!v.includes(".")&&!v.includes("[")?x=u[v]:x=de(b,n,{...o,[i]:u,...l&&{[l]:c}})}else x=de(b,n,{...o,[i]:u,...l&&{[l]:c}});h.push(x!=null?String(x):"")}else{let b={...o,[i]:u,...l&&{[l]:c}},x=H(I,r,n,b);h.push(x!=null?String(x):"")}p[y]=h.join("")}else{let h={...o,[i]:u,...l&&{[l]:c}};p[y]=H(g,r,n,h)}}t.push(p)}return t}return null},dd=(e,r,n)=>{let o=e.body;if(o.type===A.OBJECT&&o.properties.length===1&&o.properties[0].key==="$if item.visible"){let t=o.properties[0].value;if(t.type===A.CONDITIONAL&&t.conditions.length===1&&t.conditions[0].type===A.VARIABLE&&t.conditions[0].path==="item.visible"){let s=t.bodies[0];if(s.type===A.OBJECT&&s.properties.length===2){let i=s.properties[0],l=s.properties[1];if(i.key==="id"&&i.value.type===A.VARIABLE&&i.value.path==="item.id"&&l.key==="$if item.highlighted"&&l.value.type===A.CONDITIONAL){let c=[];for(let u=0;u<r.length;u++){let p=r[u];if(p.visible){let m={id:p.id};p.highlighted?(m.highlight=!0,m.message=`This item is highlighted: ${p.name}`):(m.highlight=!1,m.message=p.name),c.push(m)}}return c}}}}return null},fd=(e,r,n,o)=>{let a=H(e.iterable,r,n,o);if(!Array.isArray(a)){let c,u=!1;if(e.iterable.type===A.FUNCTION){u=!0;let m=e.iterable.args.map(d=>d.type===A.LITERAL?typeof d.value=="string"?`'${d.value}'`:String(d.value):d.type===A.VARIABLE?d.path:d.type===A.FUNCTION?`${d.name}(...)`:"?").join(", ");c=`${e.iterable.name}(${m})`}else c=e.iterable.path||"undefined";let p=`${e.itemVar}${e.indexVar?`, ${e.indexVar}`:""} in ${c}`;throw zi(p,a,u)}if(!e.indexVar){let c=dd(e,a,e.itemVar);if(c!==null)return c}if(!e.indexVar){let c=ud(e,a);if(c!==null)return c}let t=pd(e,r,n,o,a);if(t!==null)return t;let s=[],i=e.iterable.path||"";if(o&&o.__paths__&&i){let c=i.split("."),u=c[0];u in o.__paths__&&(i=o.__paths__[u],c.length>1&&(i+="."+c.slice(1).join(".")))}let l=!1;e.body.type===A.ARRAY&&(e.body.items.length<=1?l=!1:l=e.body._shouldPreserveArray??=e.body.items.some(c=>c.type===A.OBJECT&&c.properties.some(u=>u.key.startsWith("$if ")||u.key.startsWith("$when "))));for(let c=0;c<a.length;c++){let u=e.indexVar?{...o,[e.itemVar]:a[c],[e.indexVar]:c}:{...o,[e.itemVar]:a[c]};u.__paths__||(u.__paths__=o.__paths__||{}),u.__paths__={...u.__paths__,[e.itemVar]:`${i}[${c}]`},e.indexVar&&(u.__paths__[e.indexVar]=c);let p=H(e.body,r,n,u);if(Array.isArray(p)&&p.length===1&&!l){let m=p[0];s.push(m===void 0?{}:m)}else s.push(p===void 0?{}:p)}return s},md=(e,r,n,o)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],t=a.parsedKey?H(a.parsedKey,r,n,o):a.key,s=a.value;if(s.type===A.OBJECT&&s.properties.length<=10&&!s.whenCondition){let i={},l={},c=!0;for(let u of s.properties){let p=u.parsedKey?H(u.parsedKey,r,n,o):u.key,m=u.value;if(m.type===A.LITERAL)l[p]=m.value;else if(m.type===A.VARIABLE)l[p]=de(m.path,n,o);else if(m.type===A.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===A.VARIABLE){let y=de(f.path,n,o);d.push(y!=null?String(y):"")}else{c=!1;break}if(!c)break;l[p]=d.join("")}else if(m.type===A.OBJECT&&m.properties.length<=5){let d={};for(let f of m.properties){let y=f.key,g=f.value;if(g.type===A.LITERAL)d[y]=g.value;else if(g.type===A.VARIABLE)d[y]=de(g.path,n,o);else if(g.type===A.INTERPOLATION){let h=[];for(let I of g.parts)if(typeof I=="string")h.push(I);else if(I.type===A.VARIABLE){let b=de(I.path,n,o);h.push(b!=null?String(b):"")}else{c=!1;break}if(!c)break;d[y]=h.join("")}else{c=!1;break}}if(!c)break;l[p]=d}else{c=!1;break}}if(c)return i[t]=l,i}}return null},yd=(e,r,n,o)=>{let a=r.functions||r;if(e.whenCondition&&!fr(e.whenCondition,a,n,o))return;let t=md(e,r,n,o);if(t!==null)return t;if(e.fast){let c={};for(let u of e.properties){let p=u.parsedKey?H(u.parsedKey,r,n,o):u.key,m=u.value;if(m.type===A.LITERAL)c[p]=m.value;else if(m.type===A.VARIABLE)c[p]=de(m.path,n,o);else if(m.type===A.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===A.VARIABLE){let y=de(f.path,n,o);d.push(y!=null?String(y):"")}else{let y=H(f,r,n,o);d.push(y!=null?String(y):"")}c[p]=d.join("")}else c[p]=H(m,r,n,o)}return c}let s={},i=null,l=!1;for(let c of e.properties)if(!c.key.startsWith("$if ")&&!c.key.match(/^\$if\s+\w+.*:?$/)&&!c.key.startsWith("$elif")&&!c.key.startsWith("$else")&&!c.key.startsWith("$for ")){l=!0;break}for(let c of e.properties)if(c.key.startsWith("$if ")||c.key.match(/^\$if\s+\w+.*:?$/)){let u=H(c.value,r,n,o);if(!l&&u!==null&&u!==void 0)return Array.isArray(u)&&u.length===1?u[0]:u;typeof u=="object"&&u!==null&&!Array.isArray(u)&&Object.assign(s,u)}else if(c.key.startsWith("$for ")){if(e.properties.length===1)return H(c.value,r,n,o)}else{let u=c.value;if(u&&u.type===A.OBJECT&&u.properties){let p=u.properties.find(m=>m.key.startsWith("$for "));if(p){let m=H(p.value,r,n,o);m!==void 0&&(s[c.key]=m)}else{let m=H(c.value,r,n,o);m!==void 0&&(s[c.key]=m)}}else{let p=c.parsedKey?H(c.parsedKey,r,n,o):c.key,m=H(c.value,r,n,o);m!==void 0&&(s[p]=m)}}return s},Ji={},hd=(e,r,n,o)=>{let a=[];for(let t of e.items)if(t.type===A.LOOP){let s=H(t,r,n,o);Array.isArray(s)&&t.flatten!==!1?a.push(...s):a.push(s)}else{let s=H(t,r,n,o);s!==Ji&&s!==void 0&&a.push(s)}return a},gd=(e,r,n,o)=>{let{name:a,data:t,whenCondition:s}=e,i=r.partials||{},l=r.functions||r;if(s&&!fr(s,l,n,o))return;if(!i[a])throw new ke(`Partial '${a}' is not defined`);let c=o._partialStack||[];if(c.includes(a))throw new ke(`Circular partial reference detected: ${a}`);let u=i[a],p=n,m={...o,_partialStack:[...c,a]};if(o){p={...n};for(let d of Object.keys(o))d.startsWith("_")||(p[d]=o[d])}if(t){let d=H(t,r,n,o);p={...p,...d}}return H(u,r,p,m)},bd=(e,r,n,o)=>{let{path:a}=e,t=a.split("."),s=t[0],i=t.slice(1);if(!o||!(s in o))throw new ke(`Path reference '#{${a}}' refers to '${s}' which is not a loop variable in the current scope`);if(o.__paths__||(o.__paths__={}),!(s in o.__paths__))throw new ke(`Path reference '#{${a}}' cannot be resolved - path tracking may not be initialized properly`);let l=o.__paths__[s];if(typeof l=="number"){if(i.length>0)throw new ke(`Path reference '#{${a}}' - cannot access properties on index variable '${s}'`);return String(l)}return i.length>0&&(l+="."+i.join(".")),l};var qs=sd;var Id=/\$\{([^}]*)\}/g,wd=/#\{([^}]*)\}/g,Zi=(e,r={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,o,a]=n,t=vd(a,r);return{isFunction:!0,type:A.FUNCTION,name:o,args:t}},vd=(e,r={})=>e.trim()?Ad(e).map(o=>kd(o.trim(),r)):[],Ad=e=>{let r=[],n="",o=0,a=!1,t="";for(let s=0;s<e.length;s++){let i=e[s],l=s>0?e[s-1]:"";!a&&(i==='"'||i==="'")?(a=!0,t=i,n+=i):a&&i===t&&l!=="\\"?(a=!1,t="",n+=i):!a&&i==="("?(o++,n+=i):!a&&i===")"?(o--,n+=i):!a&&i===","&&o===0?(r.push(n),n=""):n+=i}return n&&r.push(n),r},kd=(e,r={})=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:A.LITERAL,value:e.slice(1,-1)};if(/^-?\d+(\.\d+)?$/.test(e))return{type:A.LITERAL,value:parseFloat(e)};if(e==="true")return{type:A.LITERAL,value:!0};if(e==="false")return{type:A.LITERAL,value:!1};if(e==="null")return{type:A.LITERAL,value:null};let n=Zi(e,r);if(n.isFunction)return{type:n.type,name:n.name,args:n.args};let o=e.trim(),a=[{op:" + ",type:"ADD"},{op:" - ",type:"SUBTRACT"}],t=-1,s=null;for(let{op:i,type:l}of a){let c=0;for(;c<o.length;){let u=Or(o.substring(c),i);if(u===-1)break;let p=c+u;p>t&&(t=p,s={op:i,type:l}),c=p+i.length}}if(t!==-1)try{return ge(o,r)}catch{return{type:A.VARIABLE,path:o}}return{type:A.VARIABLE,path:o}},ea=/^\w+\(.*\)$/,Pd=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,xd=e=>{if(!(!e||e.trim()===""||ea.test(e))&&Pd.test(e))throw e.includes("?")&&e.includes(":")?new _(`Complex expressions not supported in variable replacements - consider calculating the value in your data instead. Offending expression: "${e}"`):e.includes("||")||e.includes("&&")||e.includes("??")?new _(`Logical operators not supported in variable replacements - consider calculating the value in your data instead (operators like ||, &&, ?? are not supported). Offending expression: "${e}"`):new _(`Arithmetic expressions not supported in variable replacements - consider calculating '${e}' in your data instead (expressions with +, -, *, /, % are not supported). Offending expression: "${e}"`)},Qi=e=>{let r=e.trim();if(ea.test(r))throw new _(`Functions are not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("["))throw new _(`Array indices not supported in path references - use simple variable names or properties. Offending expression: "#{${e}}"`);if(/[+\-*/%]/.test(r))throw new _(`Arithmetic expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(/\|\||&&/.test(r))throw new _(`Logical operators not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("?")&&r.includes(":"))throw new _(`Complex expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);return{type:A.PATH_REFERENCE,path:r}},ft=(e,r={})=>{let n=e.trim();xd(n);let o=Zi(n,r);if(o.isFunction)return{type:o.type,name:o.name,args:o.args};if(n.includes("[")&&!/[\s+\-*/%|&?:]/.test(n)){let a=0;for(let t of n)t==="["?a++:t==="]"&&a--;if(a!==0)throw new Error("Invalid array index syntax")}return{type:A.VARIABLE,path:n}},Vs=(e,r={})=>{let n=e,o=[];(e.includes("\\${")||e.includes("\\#{"))&&(n=e.replace(/\\\\(\$\{[^}]*\})/g,"\\DOUBLE_ESC_VAR$1"),n=n.replace(/\\\\(#\{[^}]*\})/g,"\\DOUBLE_ESC_PATH$1"),n=n.replace(/\\(\$\{[^}]*\})/g,(c,u)=>{let p=`__ESCAPED_${o.length}__`;return o.push(u),p}),n=n.replace(/\\(#\{[^}]*\})/g,(c,u)=>{let p=`__ESCAPED_${o.length}__`;return o.push(u),p}),n=n.replace(/\\DOUBLE_ESC_VAR/g,"\\"),n=n.replace(/\\DOUBLE_ESC_PATH/g,"\\"));let a=[...n.matchAll(Id)],t=[...n.matchAll(wd)],s=[...a.map(c=>({match:c,type:"variable"})),...t.map(c=>({match:c,type:"pathref"}))].sort((c,u)=>c.match.index-u.match.index);if(s.length===0){let c=n;for(let u=0;u<o.length;u++)c=c.replace(`__ESCAPED_${u}__`,o[u]);return{type:A.LITERAL,value:c}}if(s.length===1&&s[0].match[0]===n&&o.length===0){let{match:c,type:u}=s[0];try{return u==="variable"?ft(c[1],r):Qi(c[1])}catch(p){if(p.message==="Invalid array index syntax")return{type:A.LITERAL,value:n};throw p}}let i=[],l=0;for(let{match:c,type:u}of s){let[p,m]=c,d=c.index;if(d>l){let f=n.substring(l,d);for(let y=0;y<o.length;y++)f=f.replace(`__ESCAPED_${y}__`,o[y]);f&&i.push(f)}try{let f;u==="variable"?f=ft(m.trim(),r):f=Qi(m.trim()),i.push(f)}catch(f){if(f.message==="Invalid array index syntax")i.push(p);else throw f}l=d+p.length}if(l<n.length){let c=n.substring(l);for(let u=0;u<o.length;u++)c=c.replace(`__ESCAPED_${u}__`,o[u]);c&&i.push(c)}return{type:A.INTERPOLATION,parts:i}};var Bs=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),na=e=>Object.keys(e),we=e=>e.join("."),mr=(e,r,n)=>{let o=na(e).filter(a=>!r.has(a));if(o.length>0)throw new _(`Unexpected key '${o[0]}' in condition JSON at '${we(n)}'`)},yr=(e,r)=>typeof e=="string"?Vs(e,r):typeof e=="object"&&e!==null?Array.isArray(e)?Sd(e,r):Rd(e,r):{type:A.LITERAL,value:e},Ed=e=>{let{$each:r,...n}=e;if(typeof r!="string")throw new _("$each value must be a non-empty string");let o=r.trim();if(o==="")throw new _("$each value must be a non-empty string");if(Object.keys(n).length===0)throw new _("Empty $each body not allowed");if(n.$partial!==void 0)throw new _("Cannot use $partial with $each at the same level. Wrap $partial in a parent object if you need conditionals.");return{[`$for ${o}`]:n}},Sd=(e,r)=>{let n=[],o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(t.$each!==void 0)try{let l=Ed(t),c=Object.keys(l);if(c.length===1&&/^\$for(?::\w+)?\s/.test(c[0])){let u=ta(c[0],l[c[0]],r,!0);n.push(u),o=!0;continue}}catch(l){throw l instanceof _?l:new _(l.message)}let i=Object.keys(t);if(i.length===1&&/^\$for(?::\w+)?\s/.test(i[0])){let l=ta(i[0],t[i[0]],r);n.push(l),o=!0;continue}}let s=yr(t,r);n.push(s),(s.type===A.FUNCTION||s.type===A.CONDITIONAL||s.type===A.LOOP||s.type===A.PARTIAL||s.type===A.OBJECT&&!s.fast||s.type===A.ARRAY&&!s.fast)&&(o=!0)}return{type:A.ARRAY,items:n,fast:!o}},Rd=(e,r)=>{let n=[],o=!1,a=null,t=Object.entries(e),s=0;if(e.$partial!==void 0){if(typeof e.$partial!="string")throw new _("$partial value must be a string");if(e.$partial.trim()==="")throw new _("$partial value cannot be an empty string");let l=["$if","$elif","$else","$for"],c=[];for(let[h]of t)for(let I of l)if(h===I||h.startsWith(I+" ")||h.startsWith(I+"#")){c.push(I);break}if(c.length>0)throw new _(`Cannot use $partial with ${c.join(", ")} at the same level. Wrap $partial in a parent object if you need conditionals.`);let{$partial:u,$when:p,...m}=e,d={},f=!1;for(let[h,I]of Object.entries(m)){let b=h;(h.startsWith("\\$")||h.startsWith("$$"))&&(b=h.slice(1)),d[b]=I,f=!0}let y=null;if(f&&(y=yr(d,r),y.type===A.OBJECT)){let h=!1;for(let I of y.properties)if(I.value.type===A.VARIABLE||I.value.type===A.INTERPOLATION||I.value.type===A.FUNCTION||I.value.type===A.CONDITIONAL||I.value.type===A.OBJECT&&!I.value.fast||I.value.type===A.ARRAY&&!I.value.fast){h=!0;break}h&&(y.fast=!1)}let g={type:A.PARTIAL,name:u,data:y};return p!==void 0&&(g.whenCondition=ra(p,r)),g}for(let[l,c]of t)if(l==="$when"){if(a!==null)throw new _("Multiple '$when' directives on the same object are not allowed");if(c==null)throw new _("Missing condition expression after '$when'");a=ra(c,r),o=!0}else if(l.startsWith("$when#")||l.startsWith("$when "))throw new _("'$when' does not support ID syntax or inline conditions - use '$when' as a property");for(;s<t.length;){let[l,c]=t[s];if(l==="$when"){s++;continue}if(l==="$each")throw new _("$each can only be used inside arrays");if(l.startsWith("$if ")||l.match(/^\$if#\w+\s/)||l.match(/^\$if\s+\w+.*:$/)){let u=Od(t,s,r);n.push({key:l,value:u.node}),o=!0,s=u.nextIndex}else if(/^\$for(?::\w+)?\s/.test(l)){let u=l.match(/^\$for(?::(\w+))?\s/)?.[1]||"",p=u?`:${u}`:"";throw new _(`$for loops must be inside arrays - use '- $for${p} item in items:' instead of '$for${p} item in items:'. For cleaner object generation syntax, consider using $each.`)}else{if(l.startsWith("$elif ")||l.startsWith("$else"))throw new _(`'${l.split(" ")[0]}' without matching '$if'`);if(l==="$if"||l==="$if:")throw new _("Missing condition expression after '$if'");{let u=yr(c,r);(u.type===A.FUNCTION||u.type===A.CONDITIONAL||u.type===A.PARTIAL||u.type===A.OBJECT&&!u.fast||u.type===A.ARRAY&&!u.fast)&&(o=!0);let p=Vs(l,r),m={key:l,value:u};(p.type!==A.LITERAL||p.value!==l)&&(m.parsedKey=p),n.push(m),s++}}}let i={type:A.OBJECT,properties:n,fast:!o};return a&&(i.whenCondition=a),i},Od=(e,r,n={})=>{let o=[],a=[],t=r,[s,i]=e[t],l=null,c;if(s.startsWith("$if#")){let p=s.match(/^\$if#(\w+)\s+(.+)$/);if(p)l=p[1],c=p[2];else throw new _(`Invalid conditional syntax: ${s}`)}else c=s.substring(4),c.endsWith(":")&&(c=c.slice(0,-1).trim());Ms(c);let u=ge(c,n);for(o.push(u),a.push(yr(i,n)),t++;t<e.length;){let[p,m]=e[t],d=!1,f;if(l?p.startsWith(`$elif#${l} `)?(f=p.substring(`$elif#${l} `.length),f.endsWith(":")&&(f=f.slice(0,-1).trim()),d=!0):(p===`$else#${l}`||p===`$else#${l}:`)&&(d=!0,f=null):p.startsWith("$elif ")?(f=p.substring(6),f.endsWith(":")&&(f=f.slice(0,-1).trim()),d=!0):(p==="$else"||p==="$else:")&&(d=!0,f=null),d){if(f===null)o.push(null);else{Ms(f);let y=ge(f,n);o.push(y)}if(a.push(yr(m,n)),t++,f===null)break}else break}return{node:{type:A.CONDITIONAL,conditions:o,bodies:a,id:l},nextIndex:t}},Fs={eq:Y.EQ,neq:Y.NEQ,gt:Y.GT,gte:Y.GTE,lt:Y.LT,lte:Y.LTE,in:Y.IN,add:Y.ADD,sub:Y.SUBTRACT},Us={all:Y.AND,any:Y.OR},Cd=new Set(["var","literal","call","not",...Object.keys(Fs),...Object.keys(Us)]),$d=(e,r,n)=>{if(!Array.isArray(e))throw new _(`Condition JSON operator '${r}' at '${we(n)}' requires an array`);if(e.length!==2)throw new _(`Condition JSON operator '${r}' at '${we(n)}' requires exactly 2 operands`);return e},_d=(e,r,n,o,a)=>{if(!Array.isArray(e))throw new _(`Condition JSON operator '${r}' at '${we(a)}' requires an array`);if(e.length===0)throw new _(`Condition JSON operator '${r}' at '${we(a)}' requires at least 1 condition`);return e.map((s,i)=>Re(s,o,[...a,i])).reduce((s,i)=>({type:A.BINARY,op:n,left:s,right:i}))},jd=(e,r,n)=>{let o,a;if(typeof e.call=="string")o=e.call,a=e.args??[],mr(e,new Set(["call","args"]),n);else if(Bs(e.call))o=e.call.name,a=e.call.args??[],mr(e,new Set(["call"]),n),mr(e.call,new Set(["name","args"]),[...n,"call"]);else throw new _(`Condition JSON call at '${we(n)}' requires a function name`);if(typeof o!="string"||o.trim()==="")throw new _(`Condition JSON call at '${we(n)}' requires a non-empty function name`);if(!/^\w+$/.test(o))throw new _(`Invalid condition JSON function name '${o}' at '${we(n)}'`);if(!Array.isArray(a))throw new _(`Condition JSON call '${o}' at '${we(n)}' requires args to be an array`);return{type:A.FUNCTION,name:o,args:a.map((t,s)=>Re(t,r,[...n,"args",s]))}},Re=(e,r={},n=["$when"])=>{if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null)return{type:A.LITERAL,value:e};if(Array.isArray(e))throw new _(`Condition JSON array at '${we(n)}' must be wrapped in an operator or { literal: [...] }`);if(!Bs(e))throw new _(`Invalid condition JSON value at '${we(n)}'`);let o=na(e);if(o.length===0)throw new _(`Condition JSON object at '${we(n)}' must contain an operator`);let a=o.filter(s=>Cd.has(s));if(a.length===0)throw new _(`Unknown condition JSON operator '${o[0]}' at '${we(n)}'`);if(a.length>1)throw new _(`Condition JSON at '${we(n)}' must contain exactly one operator`);let t=a.includes("call")?"call":a[0];if(t==="var"){if(mr(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new _(`Condition JSON var at '${we(n)}' requires a non-empty path`);return{type:A.VARIABLE,path:e.var}}if(t==="literal")return mr(e,new Set(["literal"]),n),{type:A.LITERAL,value:e.literal};if(t==="call")return jd(e,r,n);if(t==="not")return mr(e,new Set(["not"]),n),{type:A.UNARY,op:Hr.NOT,operand:Re(e.not,r,[...n,"not"])};if(t in Us)return mr(e,new Set([t]),n),_d(e[t],t,Us[t],r,[...n,t]);if(t in Fs){mr(e,new Set([t]),n);let s=$d(e[t],t,[...n,t]);return{type:A.BINARY,op:Fs[t],left:Re(s[0],r,[...n,t,0]),right:Re(s[1],r,[...n,t,1])}}throw new _(`Unknown condition JSON operator '${t}' at '${we(n)}'`)},ra=(e,r={})=>{if(e==null)throw new _("Missing condition expression after '$when'");if(typeof e=="string"){if(e.trim()==="")throw new _("Empty condition expression after '$when'");return ge(e,r)}return Bs(e)||Array.isArray(e)?Re(e,r):{type:A.LITERAL,value:e}},ge=(e,r={})=>{if(e=e.trim(),e.startsWith("(")&&e.endsWith(")")){let c=e.slice(1,-1),u=0,p=!0;for(let m=0;m<c.length;m++)if(c[m]==="("?u++:c[m]===")"&&u--,u<0){p=!1;break}if(p&&u===0)return ge(c,r)}let n=Or(e,"||");if(n!==-1)return{type:A.BINARY,op:Y.OR,left:ge(e.substring(0,n).trim(),r),right:ge(e.substring(n+2).trim(),r)};let o=Or(e,"&&");if(o!==-1)return{type:A.BINARY,op:Y.AND,left:ge(e.substring(0,o).trim(),r),right:ge(e.substring(o+2).trim(),r)};let a=[{op:">=",type:Y.GTE},{op:"<=",type:Y.LTE},{op:"==",type:Y.EQ},{op:"!=",type:Y.NEQ},{op:">",type:Y.GT},{op:"<",type:Y.LT},{op:" in ",type:Y.IN}];for(let{op:c,type:u}of a){let p=Or(e,c);if(p!==-1)return{type:A.BINARY,op:u,left:ge(e.substring(0,p).trim(),r),right:ge(e.substring(p+c.length).trim(),r)}}let t=-1,s=null,i=[{op:" + ",type:Y.ADD},{op:" - ",type:Y.SUBTRACT}];for(let{op:c,type:u}of i){let p=0;for(;p<e.length;){let m=Or(e.substring(p),c);if(m===-1)break;let d=p+m;d>t&&(t=d,s={op:c,type:u}),p=d+c.length}}if(t!==-1&&s)return{type:A.BINARY,op:s.type,left:ge(e.substring(0,t).trim(),r),right:ge(e.substring(t+s.op.length).trim(),r)};let l=[" * "," / "," % "];for(let c of l)if(Or(e,c)!==-1)throw new _(`Arithmetic operations are not allowed in conditionals: "${c}"`);return e.startsWith("!")?{type:A.UNARY,op:Hr.NOT,operand:ge(e.substring(1).trim(),r)}:sa(e,r)},Or=(e,r)=>{let n=0,o=0;for(;o<=e.length-r.length;){if(e[o]==="(")n++;else if(e[o]===")")n--;else if(n===0&&e.substring(o,o+r.length)===r)return o;o++}return-1},Nd=e=>{if(e=e.trim(),e==="true")return{type:A.LITERAL,value:!0};if(e==="false")return{type:A.LITERAL,value:!1};if(e==="null")return{type:A.LITERAL,value:null};if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:A.LITERAL,value:e.slice(1,-1)};if(e==='""'||e==="''")return{type:A.LITERAL,value:""};if(e==="{}")return{type:A.LITERAL,value:{}};if(e==="[]")return{type:A.LITERAL,value:[]};let r=Number(e);return!isNaN(r)&&isFinite(r)?{type:A.LITERAL,value:r}:{type:A.VARIABLE,path:e}},sa=(e,r)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return ft(n,r);let a=Nd(n);if(a.type===A.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:A.VARIABLE,path:n};try{return ft(n,r)}catch(t){if(t.message&&t.message.includes("not supported"))return a;throw t}},Dd=(e,r=!1)=>{let n=r?"$each":"$for";try{Yi(e)}catch(o){if(o instanceof _&&r){let a=o.message.replace(/\$for/g,"$each");throw new _(a.replace("Parse Error: ",""))}throw o}},ta=(e,r,n,o=!1)=>{let a=/^\$for(?::(\w+))?\s+(.+)$/,t=e.match(a);if(!t){let g=o?"$each":"$for";throw new _(`Invalid loop syntax (got: '${e.replace("$for",g)}')`)}let s=t[1],i=t[2].trim();Dd(i,o);let l=i.match(/^(.+?)\s+in\s+(.+)$/);if(!l){let g=o?"$each":"$for";throw new _(`Invalid loop syntax - missing 'in' keyword (got: '${g} ${i}')`)}let c=l[1].trim(),u=l[2].trim(),p,m=null;if(c.includes(",")){let g=c.split(",").map(h=>h.trim());if(g.length!==2)throw new _(`Invalid loop variables: ${c}. Expected format: "item" or "item, index"`);p=g[0],m=g[1]}else p=c;let d=["this","undefined","null","true","false"];if(d.includes(p))throw new _(`Reserved variable name: ${p}`);if(m&&d.includes(m))throw new _(`Reserved variable name: ${m}`);let f=sa(u,n),y=yr(r,n);return{type:A.LOOP,itemVar:p,indexVar:m,iterable:f,body:y,flatten:s!=="nested"}};var Ld=(e,r={})=>{let{functions:n={}}=r;return yr(e,n)},tn=Ld;var mt={};Xp(mt,{now:()=>Td});var Td=()=>Date.now();var Md=(e,r,n={})=>{let{functions:o={},partials:a={}}=n,t={...mt,...o},s=tn(e,{functions:t}),i={};for(let[l,c]of Object.entries(a))i[l]=tn(c,{functions:t});return qs(s,r,{functions:t,partials:i})},Cr=Md;var qd=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",Vd=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,Fd=(e,r)=>{if(qd(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new _("Empty condition expression");return ge(e,r)}return Re(e,r)},Ud=(e,r={},n={})=>{let o=Vd(n),a={...mt,...o},t=Fd(e,a);return!!fr(t,{functions:a,partials:{}},r,{})},Ys=Ud;var Zs=Symbol("runStoreTransaction"),Xs="__routeEngineConditionComparison",nn=(e,r)=>typeof e=="number"&&typeof r=="number"&&Number.isFinite(e)&&Number.isFinite(r)||typeof e=="string"&&typeof r=="string",hr=Object.freeze({eq:(e,r)=>e===r,neq:(e,r)=>e!==r,gt:(e,r)=>nn(e,r)&&e>r,gte:(e,r)=>nn(e,r)&&e>=r,lt:(e,r)=>nn(e,r)&&e<r,lte:(e,r)=>nn(e,r)&&e<=r}),pa=Object.freeze(Object.fromEntries(Object.keys(hr).map(e=>[e,`${Xs}${e}`]))),Bd=Object.freeze(Object.fromEntries(Object.entries(pa).map(([e,r])=>[r,hr[e]]))),oa=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Yd=e=>{if(typeof e?.call=="string")return e.call;if(e?.call!==null&&typeof e?.call=="object"&&!Array.isArray(e.call))return e.call.name},sn=e=>{if(Array.isArray(e))return e.map(sn);if(e===null||typeof e!="object"||oa(e,"literal")||oa(e,"var"))return e;if(Yd(e)?.startsWith(Xs))throw new Error(`Condition function names beginning with "${Xs}" are reserved`);let n=Object.entries(e);if(n.length===1){let[[o,a]]=n,t=pa[o];if(t)return{call:t,args:a.map(sn)}}return Object.fromEntries(n.map(([o,a])=>[o,sn(a)]))},ht=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Re(e),Ys(sn(e),r,{functions:Bd})},zd=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],da=(e,r,n={})=>{let o=structuredClone(e),a={},t={},{transformSelectorFirstArgument:s=c=>c,transformActionFirstArgument:i=c=>c}=n;for(let[c,u]of Object.entries(r))c!=="createInitialState"&&(c.startsWith("select")?a[c]=(...p)=>u(s(o),...p):t[c]=(...p)=>{let m;return o=Ts(o,f=>{let y=u(i(f),...p);m=y!==void 0&&!he(y)?y:void 0}),m});let l=c=>{if(typeof c!="function")throw new Error("Store transaction requires a callback");let u=o;try{return c()}catch(p){throw o=u,p}};return{...a,...t,[Zs]:l}},cn=(e,r)=>n=>{let o=e(),a=Array.isArray(n)?n:[n];return Ts(o,t=>{a.forEach(s=>{r.forEach(i=>{i(t,s)})})})};var Gd=(e,r)=>{if(e.default!==void 0)return e.default;let n=["number","boolean","string","object"];if(!n.includes(e.type))throw new Error(`Invalid variable type: ${e.type} for variable ${r}. Expected one of: ${n.join(", ")}`);switch(e.type){case"number":return 0;case"boolean":return!1;case"string":return"";case"object":return{}}},B=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Ws=(e,r,n)=>{Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0})},fe=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Hd=new Set(["pageSize","groups"]),Xd=new Set(["id","variants"]),Wd=new Set(["id","imageId"]),Kd=new Set(["pageSize","tracks"]),Jd=new Set(["id","soundId","title","artist","album","description","coverImageId"]),Qd=new Set(["pageSize","replays"]),Zd=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),$r=(e,r,n)=>{Object.keys(e).forEach(o=>{if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)})},Xr=(e,r)=>{if(typeof e!="string"||e.length===0)throw new Error(`${r} must be a non-empty string`)},gt=(e={})=>{let r=e?.resources?.imageGallery;if(r===void 0)return;if(!fe(r))throw new Error("resources.imageGallery must be an object");if($r(r,Hd,"resources.imageGallery"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.imageGallery.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.groups))throw new Error("resources.imageGallery.groups must be an array");let n=new Set;for(let[o,a]of r.groups.entries()){let t=`resources.imageGallery.groups[${o}]`;if(!fe(a))throw new Error(`${t} must be an object`);if($r(a,Xd,t),Xr(a.id,`${t}.id`),n.has(a.id))throw new Error(`Duplicate image gallery group id "${a.id}"`);if(n.add(a.id),!Array.isArray(a.variants)||a.variants.length===0)throw new Error(`${t}.variants must be a non-empty array`);let s=new Set;for(let[i,l]of a.variants.entries()){let c=`${t}.variants[${i}]`;if(!fe(l))throw new Error(`${c} must be an object`);if($r(l,Wd,c),Xr(l.id,`${c}.id`),Xr(l.imageId,`${c}.imageId`),s.has(l.id))throw new Error(`Duplicate image gallery variant id "${l.id}" in group "${a.id}"`);if(s.add(l.id),!B(e?.resources?.images,l.imageId))throw new Error(`Image gallery variant "${a.id}.${l.id}" references unknown image "${l.imageId}"`)}}},bt=(e={})=>{let r=e?.resources?.musicRoom;if(r===void 0)return;if(!fe(r))throw new Error("resources.musicRoom must be an object");if($r(r,Kd,"resources.musicRoom"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.musicRoom.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.tracks))throw new Error("resources.musicRoom.tracks must be an array");let n=new Set;for(let[o,a]of r.tracks.entries()){let t=`resources.musicRoom.tracks[${o}]`;if(!fe(a))throw new Error(`${t} must be an object`);$r(a,Jd,t);for(let l of["id","soundId","title"])Xr(a[l],`${t}.${l}`);for(let l of["artist","album","description","coverImageId"])a[l]!==void 0&&Xr(a[l],`${t}.${l}`);if(n.has(a.id))throw new Error(`Duplicate music room track id "${a.id}"`);n.add(a.id);let s=e?.resources?.sounds?.[a.soundId];if(!B(e?.resources?.sounds,a.soundId))throw new Error(`Music room track "${a.id}" references unknown sound "${a.soundId}"`);if(!fe(s))throw new Error(`Music room track "${a.id}" references invalid sound "${a.soundId}"`);if(s.playbackRate!==void 0&&(typeof s.playbackRate!="number"||!Number.isFinite(s.playbackRate)||s.playbackRate<=0))throw new Error(`Music room sound "${a.soundId}" playbackRate must be a finite number greater than 0`);let i=s.startAt??0;if(typeof i!="number"||!Number.isFinite(i)||i<0)throw new Error(`Music room sound "${a.soundId}" startAt must be a finite non-negative number`);if(s.endAt!==void 0&&s.endAt!==null&&(typeof s.endAt!="number"||!Number.isFinite(s.endAt)||s.endAt<=i))throw new Error(`Music room sound "${a.soundId}" endAt must be a finite number greater than startAt`);if(a.coverImageId!==void 0&&!B(e?.resources?.images,a.coverImageId))throw new Error(`Music room track "${a.id}" references unknown cover image "${a.coverImageId}"`)}},ef=(e,r,n)=>{let o=Array.isArray(n)?"array":typeof n;switch(r.type){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Scene replay initial variable "${e}" expected type number, got ${o}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Scene replay initial variable "${e}" expected type boolean, got ${o}`);return;case"string":if(typeof n!="string")throw new Error(`Scene replay initial variable "${e}" expected type string, got ${o}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Scene replay initial variable "${e}" expected type object, got ${o}`);return;default:throw new Error(`Scene replay initial variable "${e}" has invalid variable type "${r.type}"`)}},It=(e={})=>{let r=e?.resources?.sceneReplay;if(r===void 0)return;if(!fe(r))throw new Error("resources.sceneReplay must be an object");if($r(r,Qd,"resources.sceneReplay"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.sceneReplay.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.replays))throw new Error("resources.sceneReplay.replays must be an array");let n=e?.story?.scenes??{},o=new Set;for(let[a,t]of r.replays.entries()){let s=`resources.sceneReplay.replays[${a}]`;if(!fe(t))throw new Error(`${s} must be an object`);$r(t,Zd,s);for(let u of["sceneId","title","thumbnailImageId"])Xr(t[u],`${s}.${u}`);if(o.has(t.sceneId))throw new Error(`Duplicate scene replay sceneId "${t.sceneId}"`);if(o.add(t.sceneId),!B(e?.resources?.images,t.thumbnailImageId))throw new Error(`Scene replay scene "${t.sceneId}" references unknown thumbnail image "${t.thumbnailImageId}"`);let i=n[t.sceneId];if(!i)throw new Error(`Scene replay references unknown scene "${t.sceneId}"`);let l=i.initialSectionId,c=i.sections?.[l];if(!c)throw new Error(`Scene replay scene "${t.sceneId}" references unknown initial section "${l}"`);if(c.initialLineId!==void 0&&!c.lines?.some(u=>u.id===c.initialLineId))throw new Error(`Scene replay scene "${t.sceneId}" initial section "${l}" references unknown initial line "${c.initialLineId}"`);if(t.initialVariables!==void 0){if(!fe(t.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[u,p]of Object.entries(t.initialVariables)){let m=e?.resources?.variables?.[u];if(!m)throw new Error(`Scene replay scene "${t.sceneId}" initialVariables references unknown variable "${u}"`);if($e(m))throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize computed variable "${u}"`);if(m.readonly===!0)throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize readonly variable "${u}"`);if(m.scope!=="context")throw new Error(`Scene replay scene "${t.sceneId}" can only initialize context variable "${u}"`);ef(u,m,p)}}}},fa=e=>{let r=he(e)?dr(e):e;return structuredClone(r)},rf=({characterId:e,resourceCharacter:r,variables:n={}}={})=>{if(!B(r,"nameVariableId"))return;let o=r.nameVariableId,a=n?.[o];if(typeof a!="string")throw new Error(`Character "${e}" nameVariableId "${o}" must resolve to a string variable`);return a},un=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0;if(r?.name!==void 0)return r.name;if(n!==void 0)return n;let s=rf({characterId:e,resourceCharacter:t,variables:a});return s!==void 0?s:t?.name||""},$e=e=>B(e,"computed"),eo=(e,r)=>{switch(e?.type){case"number":return typeof r=="number"&&Number.isFinite(r);case"boolean":return typeof r=="boolean";case"string":return typeof r=="string";case"object":return r!==null&&typeof r=="object"&&!Array.isArray(r);default:return!1}},wt=(e={},r={},{allowedScopes:n,preserveUnknown:o=!1}={})=>Object.fromEntries(Object.entries(e??{}).filter(([a,t])=>{let s=r[a];return s===void 0?o:!$e(s)&&(!n||n.includes(s.scope))&&eo(s,t)})),Me=(e,r)=>new Error(`${r} has invalid path: ${JSON.stringify(e)}`),tf=(e,r,n)=>{if(e[0]==='"')try{return JSON.parse(e)}catch{throw Me(r,n)}let a="";for(let t=1;t<e.length-1;t+=1){let s=e[t];if(s!=="\\"){if(s.charCodeAt(0)<32)throw Me(r,n);a+=s;continue}if(t+=1,t>=e.length-1)throw Me(r,n);let i=e[t];if(i==="u"){let c=e.slice(t+1,t+5);if(c.length!==4||!/^[0-9a-fA-F]{4}$/.test(c))throw Me(r,n);a+=String.fromCharCode(Number.parseInt(c,16)),t+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
|
|
2
|
-
`,r:"\r",t:" ",b:"\b",f:"\f"};if(!B(l,i))throw Me(r,n);a+=l[i]}return a},ma=(e,r="Computed expression var")=>{if(typeof e!="string"||e.length===0||e.trim()!==e)throw Me(e,r);let n=[],o=0,a=()=>{let s=o;for(;o<e.length&&e[o]!=="."&&e[o]!=="["&&e[o]!=="]";)o+=1;let i=e.slice(s,o);if(i.length===0||i.trim()!==i||/\s/.test(i))throw Me(e,r);n.push(i)},t=()=>{for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;let s=e[o];if(/\d/.test(s??"")){let u=o;for(;o<e.length&&/\d/.test(e[o]);)o+=1;let p=e.slice(u,o);for(;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]"||p.length>1&&p.startsWith("0"))throw Me(e,r);o+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw Me(e,r);let i=s,l=o;o+=1;let c=!1;for(;o<e.length;){let u=e[o];if(c)c=!1;else if(u==="\\")c=!0;else if(u===i){let p=e.slice(l,o+1);for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]")throw Me(e,r);o+=1,n.push(tf(p,e,r));return}o+=1}if(c||o>=e.length)throw Me(e,r)};for(a();o<e.length;){if(e[o]==="."){o+=1,a();continue}if(e[o]==="["){t();continue}throw Me(e,r)}return n},zs=(e,r)=>{let n=e;for(let o of r){if(n==null||!B(n,o))return;n=n[o]}return n},ya=(e,r={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=ma(e),[o,a,...t]=n;if(o==="variables"){if(!a)return r.variables;let s=typeof r.resolveVariable=="function"?r.resolveVariable(a):r.variables?.[a];return zs(s,t)}return o==="runtime"?zs(r.runtime,n.slice(1)):zs(r,n)},ha=(e,r,n)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(n!==void 0&&r.length!==n)throw new Error(`Computed expression operator "${e}" requires ${n} operand(s)`)},Ks=(e,r)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(r.length===0)throw new Error(`Computed expression operator "${e}" requires at least one operand`)},nf=(e,r)=>{if(typeof r!="number"||!Number.isFinite(r))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Ye=(e,r,n,o)=>(ha(e,r,o),r.map(a=>ln(a,n))),Te=(e,r,n,o)=>{let a=Ye(e,r,n,o);return a.forEach(t=>nf(e,t)),a},sf=(e,r,n)=>{switch(e){case"var":return ya(r,n);case"add":{let[o,a]=Te(e,r,n,2);return o+a}case"sub":{let[o,a]=Te(e,r,n,2);return o-a}case"mul":{let[o,a]=Te(e,r,n,2);return o*a}case"div":{let[o,a]=Te(e,r,n,2);return o/a}case"mod":{let[o,a]=Te(e,r,n,2);return o%a}case"neg":{let[o]=Te(e,r,n,1);return-o}case"round":{let[o]=Te(e,r,n,1);return Math.round(o)}case"floor":{let[o]=Te(e,r,n,1);return Math.floor(o)}case"ceil":{let[o]=Te(e,r,n,1);return Math.ceil(o)}case"min":{let[o,a]=Te(e,r,n,2);return Math.min(o,a)}case"max":{let[o,a]=Te(e,r,n,2);return Math.max(o,a)}case"clamp":{let[o,a,t]=Te(e,r,n,3);return Math.min(t,Math.max(a,o))}case"eq":{let[o,a]=Ye(e,r,n,2);return hr.eq(o,a)}case"neq":{let[o,a]=Ye(e,r,n,2);return hr.neq(o,a)}case"gt":{let[o,a]=Ye(e,r,n,2);return hr.gt(o,a)}case"gte":{let[o,a]=Ye(e,r,n,2);return hr.gte(o,a)}case"lt":{let[o,a]=Ye(e,r,n,2);return hr.lt(o,a)}case"lte":{let[o,a]=Ye(e,r,n,2);return hr.lte(o,a)}case"in":{let[o,a]=Ye(e,r,n,2);return Array.isArray(a)?a.includes(o):!1}case"and":case"all":return Ks(e,r),r.every(o=>!!ln(o,n));case"or":case"any":return Ks(e,r),r.some(o=>!!ln(o,n));case"not":{let[o]=Ye(e,r,n,1);return!o}case"length":{let[o]=Ye(e,r,n,1);return typeof o=="string"||Array.isArray(o)?o.length:fe(o)?Object.keys(o).length:0}case"includes":{let[o,a]=Ye(e,r,n,2);return typeof o=="string"?typeof a=="string"&&o.includes(a):Array.isArray(o)?o.includes(a):!1}case"literal":return fa(r);default:throw new Error(`Unknown computed expression operator: ${e}`)}},ln=(e,r={})=>{if(e===null||typeof e!="object")return e;if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let n=Object.entries(e);if(n.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[o,a]]=n;return sf(o,a,r)},Js=(e,r)=>{if(e===null||typeof e!="object"||B(e,"literal"))return e;if(B(e,"var"))return{literal:ya(e.var,r)};if(B(e,"call"))throw new Error("Function calls are not supported in computed-variable conditions");return Object.fromEntries(Object.entries(e).map(([n,o])=>[n,Array.isArray(o)?o.map(a=>Js(a,r)):Js(o,r)]))},of=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Re(e),ht(Js(e,r))},ga=(e,r)=>{if(!fe(e))throw new Error(`${r} must be an object`);let n=B(e,"expr"),o=B(e,"value");if(n===o)throw new Error(`${r} must contain exactly one of expr or value`)},Gs=(e,r,n)=>(ga(e,r),B(e,"value")?fa(e.value):ln(e.expr,n)),af=(e,r={},n="unknown")=>{if(!fe(e))throw new Error(`Computed variable "${n}" computed must be an object`);let o=B(e,"expr"),a=B(e,"value");if(B(e,"branches")){if(o||a)throw new Error(`Computed variable "${n}" cannot combine branches with expr or value`);if(!Array.isArray(e.branches))throw new Error(`Computed variable "${n}" branches must be an array`);if(e.branches.length===0)throw new Error(`Computed variable "${n}" branches must not be empty`);if(!fe(e.default))throw new Error(`Computed variable "${n}" requires default`);for(let s=0;s<e.branches.length;s+=1){let i=e.branches[s];if(!fe(i))throw new Error(`Computed variable "${n}" branch ${s} must be an object`);if(!B(i,"when"))throw new Error(`Computed variable "${n}" branch ${s} requires when`);if(of(i.when,r))return Gs(i,`Computed variable "${n}" branch ${s}`,r)}return Gs(e.default,`Computed variable "${n}" default`,r)}if(o===a)throw new Error(`Computed variable "${n}" must contain exactly one of expr, value, or branches`);return Gs(e,`Computed variable "${n}"`,r)},ba=(e,r,n)=>{switch(r){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Computed variable "${e}" expected type number, got ${Array.isArray(n)?"array":typeof n}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Computed variable "${e}" expected type boolean, got ${Array.isArray(n)?"array":typeof n}`);return;case"string":if(typeof n!="string")throw new Error(`Computed variable "${e}" expected type string, got ${Array.isArray(n)?"array":typeof n}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Computed variable "${e}" expected type object, got ${typeof n}`);return;default:throw new Error(`Invalid variable type: ${r} for computed variable ${e}`)}},lf=Object.freeze({add:2,sub:2,mul:2,div:2,mod:2,neg:1,round:1,floor:1,ceil:1,min:2,max:2,clamp:3,eq:2,neq:2,gt:2,gte:2,lt:2,lte:2,in:2,not:1,length:1,includes:2}),cf=new Set(["and","or","all","any"]),uf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),pf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),df=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),ff=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),Ia=new WeakMap,ia=e=>e===null?"null":Array.isArray(e)?"object":typeof e,on=(e,r,n)=>{for(let o of Object.keys(e))if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)},mf=(e,r,n,o)=>{if(n!==void 0&&n!==r)throw new Error(`Computed variable "${e}" ${o} expected type ${r}, got ${n}`)},wa=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{let t=`Computed variable "${r}" ${a} var`,[s,i,...l]=ma(e,t);if(s!=="variables"&&s!=="runtime")throw new Error(`${t} must reference variables.* or runtime.*, got ${JSON.stringify(e)}`);if(!i)throw new Error(`${t} must reference a concrete ${s} member, got ${JSON.stringify(e)}`);if(s==="runtime")return;if(!B(n,i))throw new Error(`Computed variable "${r}" ${a} references unknown variable "${i}"`);let c=n[i];return $e(c)&&o.add(i),l.length===0?c?.type:void 0},va=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return ia(e)}if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let t=Object.entries(e);if(t.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[s,i]]=t;if(s==="var"){if(typeof i!="string"||i.trim()==="")throw new Error("Computed expression var requires a non-empty string path");return wa(i,{variableId:r,variableConfigs:n,dependencies:o,path:a})}if(s==="literal"){if(typeof i=="number"&&!Number.isFinite(i))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return ia(i)}let l=lf[s];if(l===void 0&&!cf.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?Ks(s,i):ha(s,i,l);let c=i.map((u,p)=>va(u,{variableId:r,variableConfigs:n,dependencies:o,path:`${a}.${s}[${p}]`}));if(pf.has(s)&&c.forEach(u=>{if(u!==void 0&&u!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),uf.has(s))return"number";if(df.has(s))return"boolean"},yf=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");try{Re(e)}catch(s){throw new Error(`Computed variable "${r}" ${a} is invalid: ${s.message}`,{cause:s})}let t=(s,i)=>{if(s===null||typeof s!="object"||B(s,"literal"))return;if(B(s,"var")){wa(s.var,{variableId:r,variableConfigs:n,dependencies:o,path:i});return}if(B(s,"call"))throw new Error(`Computed variable "${r}" ${i} function calls are not supported`);if(B(s,"not")){t(s.not,`${i}.not`);return}let l=Object.keys(s).find(c=>ff.has(c));s[l].forEach((c,u)=>{t(c,`${i}.${l}[${u}]`)})};t(e,a)},Hs=(e,{variableId:r,variableConfig:n,variableConfigs:o,dependencies:a,path:t,allowedKeys:s=new Set(["expr","value"])})=>{if(ga(e,`Computed variable "${r}" ${t}`),on(e,s,t),B(e,"value")){ba(r,n.type,e.value);return}let i=va(e.expr,{variableId:r,variableConfigs:o,dependencies:a,path:`${t}.expr`});mf(r,n.type,i,`${t}.expr`)},hf=(e,r,n)=>{let o=r.computed;if(!fe(o))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,t=B(o,"expr"),s=B(o,"value");if(B(o,"branches")){if(on(o,new Set(["branches","default"]),`Computed variable "${e}" computed`),t||s)throw new Error(`Computed variable "${e}" cannot combine branches with expr or value`);if(!Array.isArray(o.branches))throw new Error(`Computed variable "${e}" branches must be an array`);if(o.branches.length===0)throw new Error(`Computed variable "${e}" branches must not be empty`);if(!fe(o.default))throw new Error(`Computed variable "${e}" requires default`);return o.branches.forEach((l,c)=>{if(!fe(l))throw new Error(`Computed variable "${e}" branch ${c} must be an object`);if(on(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${c}`),!B(l,"when"))throw new Error(`Computed variable "${e}" branch ${c} requires when`);yf(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${c}].when`}),Hs(l,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:`computed.branches[${c}]`,allowedKeys:new Set(["when","expr","value"])})}),Hs(o.default,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(on(o,new Set(["expr","value"]),`Computed variable "${e}" computed`),t===s)throw new Error(`Computed variable "${e}" must contain exactly one of expr, value, or branches`);return Hs(o,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed"}),a},_r=(e={})=>{if(!fe(e))throw new Error("Variable configs must be an object");if(B(e,"__proto__"))throw new Error('Variable id "__proto__" is reserved');if(B(e,""))throw new Error("Variable ids must not be empty");let r=new Map;Object.entries(e).forEach(([t,s])=>{if($e(s)){if(!fe(s))throw new Error(`Computed variable "${t}" must be an object`);if(!B(s,"type"))throw new Error(`Computed variable "${t}" requires type`);if(!B(s,"scope"))throw new Error(`Computed variable "${t}" requires scope`);if(B(s,"default"))throw new Error(`Computed variable "${t}" must not declare a top-level default`);if(At(s.scope,t),!["number","boolean","string","object"].includes(s.type))throw new Error(`Invalid variable type: ${s.type} for computed variable ${t}`);r.set(t,hf(t,s,e))}});let n=new Set,o=[];r.forEach((t,s)=>{if(n.has(s))return;let i=[{variableId:s,dependencies:[...r.get(s)??[]],nextDependencyIndex:0}],l=new Map([[s,0]]);for(;i.length>0;){let c=i.at(-1);if(c.nextDependencyIndex>=c.dependencies.length){i.pop(),l.delete(c.variableId),n.add(c.variableId),o.push(c.variableId);continue}let u=c.dependencies[c.nextDependencyIndex];if(c.nextDependencyIndex+=1,n.has(u))continue;let p=l.get(u);if(p!==void 0){let m=[...i.slice(p).map(({variableId:d})=>d),u].join(" -> ");throw new Error(`Computed variable cycle detected: ${m}`)}l.set(u,i.length),i.push({variableId:u,dependencies:[...r.get(u)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(o)});return Ia.set(e,a),a},vt=({variables:e={},runtime:r={},variableConfigs:n={},eager:o=!0}={})=>{let{evaluationOrder:a}=Ia.get(n)??_r(n),t=wt(e,n,{preserveUnknown:!0}),s=Object.entries(n).filter(([,g])=>$e(g)).map(([g])=>g),i=Object.create(null),l=[],c=new Map(a.map((g,h)=>[g,h])),u=-1,p=!1,m=g=>{if(B(i,g))return i[g];let h=n[g];if(!$e(h))return B(t,g)?t[g]:void 0;let I=l.indexOf(g);if(I>=0){let b=[...l.slice(I),g].join(" -> ");throw new Error(`Computed variable cycle detected: ${b}`)}l.push(g);try{let b=af(h.computed,y,g);return ba(g,h.type,b),Ws(i,g,b),b}finally{l.pop()}},d=g=>{if(B(i,g))return i[g];let h=n[g];if(!$e(h))return B(t,g)?t[g]:void 0;let I=c.get(g);if(o&&!p&&I!==void 0&&I>u){p=!0;try{for(let b=u+1;b<=I;b+=1)m(a[b]),u=b}finally{p=!1}return i[g]}return m(g)},f=new Proxy({},{get:(g,h)=>{if(typeof h=="string")return d(h)},has:(g,h)=>typeof h=="string"&&(B(t,h)||s.includes(h)),ownKeys:()=>[...new Set([...Object.keys(t),...s])],getOwnPropertyDescriptor:(g,h)=>{if(!(typeof h!="string"||!B(t,h)&&!s.includes(h)))return{enumerable:!0,configurable:!0}}}),y={variables:f,runtime:r,resolveVariable:d};return o?(s.forEach(g=>{d(g)}),{...t,...i}):f},gf=({variables:e={},runtime:r={},variableConfigs:n,projectData:o}={})=>{let a=n??o?.resources?.variables??{};return _r(a),vt({variables:e,runtime:r,variableConfigs:a,eager:!0})},pn=e=>{let r={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([o,a])=>{if($e(a))return;let t=Gd(a,o);a.scope==="context"?Ws(r,o,t):Ws(n,o,t)}),{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}},At=(e,r)=>{let n=["context","device","account"];if(!e)throw new Error(`Variable scope is required for variable: ${r}`);if(!n.includes(e))throw new Error(`Invalid variable scope: ${e} for variable ${r}. Expected one of: ${n.join(", ")}`)},kt=(e,r,n)=>{let o={number:["set","increment","decrement","multiply","divide"],boolean:["set","toggle"],string:["set"],object:["set"]},a=o[e];if(!a)throw new Error(`Unknown variable type: ${e} for variable ${n}`);if(!Object.values(o).flat().includes(r))throw new Error(`Unknown operation: ${r}`);if(!a.includes(r))throw new Error(`Operation "${r}" is not valid for variable "${n}" of type "${e}". Valid operations: ${a.join(", ")}`)},bf=2,aa=12,Aa=(e=bf)=>{if(!Number.isInteger(e)||e<0||e>aa)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${aa}.`);return e},If=(e,r)=>{let n=10**r;return Math.round((e+Number.EPSILON)*n)/n},an=e=>typeof e=="number"&&Number.isFinite(e),dn=(e,r,n,o,a={})=>{if(e==="number"){if(r==="set"&&!an(n))throw new Error(`Operation "set" requires value to be a number for variable "${o}".`);if(r==="multiply"&&!an(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${o}".`);if(r==="divide"&&!an(n))throw new Error(`Operation "divide" requires value to be a number for variable "${o}".`);if(r==="divide"){if(n===0)throw new Error(`Operation "divide" requires value to be a non-zero number for variable "${o}".`);Aa(a.roundTo)}}},fn=(e,r,n,o={})=>{let a=(s,i,l)=>{let c=s??i;if(!an(c))throw new Error(`Operation "${r}" requires ${l} to be a number.`);return c},t=s=>{let i=a(s,void 0,"value");if(i===0)throw new Error(`Operation "${r}" requires value to be a non-zero number.`);return i};switch(r){case"set":return n;case"multiply":return a(e,1,"current value")*a(n,void 0,"value");case"divide":return If(a(e,0,"current value")/t(n),Aa(o.roundTo));case"increment":return a(e,0,"current value")+a(n,1,"value");case"decrement":return a(e,0,"current value")-a(n,1,"value");case"toggle":return!e;default:throw new Error(`Unknown operation: ${r}`)}};var ro=(e,r="DD/MM/YYYY - HH:mm")=>{if(!e)return"";let n=new Date(e),o=s=>String(s).padStart(2,"0"),a=String(n.getFullYear()),t={DD:o(n.getDate()),MM:o(n.getMonth()+1),MMM:zd[n.getMonth()],YYYY:a,YY:a.slice(-2),HH:o(n.getHours()),mm:o(n.getMinutes()),ss:o(n.getSeconds())};return r.replace(/YYYY|MMM|YY|MM|DD|HH|mm|ss/g,s=>t[s])},wf=(e,r)=>{let n=t=>t?.ui,o=n(e),a=n(r);return JSON.stringify(o)===JSON.stringify(a)?null:o&&!a?{changeType:"delete",data:e}:a&&!o?{changeType:"add",data:r}:a&&o?{changeType:"update",data:r}:null},yt=e=>!!e?.transformId&&Array.isArray(e.items)&&e.items.length>0,vf=(e,r)=>{let n=e?.character?.sprite,o=r?.character?.sprite,a=yt(n)?n:void 0,t=yt(o)?o:void 0;return JSON.stringify(a)===JSON.stringify(t)?null:a&&!t?{changeType:"delete",data:a}:t&&!a?{changeType:"add",data:t}:t&&a?{changeType:"update",data:t}:null},la=e=>{if(e?.resourceId===void 0)return;let r={resourceId:e.resourceId};e.transformId!==void 0&&(r.transformId=e.transformId);for(let n of["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"])e[n]!==void 0&&(r[n]=e[n]);for(let n of["animationName","animationSpeed","loop"])e[n]!==void 0&&(r[n]=e[n]);return r},ca=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},ua=(e,r)=>r&&!e?{changeType:"add",data:r}:e&&!r?{changeType:"delete",data:e}:e&&r&&JSON.stringify(e)!==JSON.stringify(r)?{changeType:"update",data:r}:null,Af=(e,r)=>{let n={},o=ua(la(e),la(r)),a=ua(ca(e),ca(r));return o&&(n.resource=o),a&&(n.color=a),Object.keys(n).length>0?n:null},to=(e={},r={})=>{let n={},o=["sfx","voice"],a=l=>{let c=e[l],u=r[l];u&&!c?n[l]={changeType:"add",data:u}:c&&!u?o.includes(l)||(n[l]={changeType:"delete",data:c}):c&&u&&JSON.stringify(c)!==JSON.stringify(u)&&(n[l]={changeType:"update",data:u})},t=Af(e.background,r.background);t&&(n.background=t),a("screen"),a("bgm"),a("voice");let s=wf(e.dialogue,r.dialogue);s&&(n.dialogue=s);let i=vf(e.dialogue,r.dialogue);return i&&(n.dialogueSprite=i),a("choice"),a("form"),a("layout"),a("animation"),a("control"),a("character"),a("visual"),a("sfx"),n},no=(e={})=>{let r=structuredClone(e);r.background&&(r.background.animations?.playback?.continuity!=="persistent"&&delete r.background.animations,!r.background.resourceId&&!r.background.colorId&&delete r.background);let n=a=>{r[a]&&(delete r[a].animations,Object.keys(r[a]).length===0&&delete r[a])};n("layout"),n("choice"),n("form"),n("screen"),r.dialogue?.ui&&(delete r.dialogue.ui.animations,Object.keys(r.dialogue.ui).length===0&&delete r.dialogue.ui,Object.keys(r.dialogue).length===0&&delete r.dialogue),r.dialogue?.character?.sprite&&(delete r.dialogue.character.sprite.animations,Object.keys(r.dialogue.character.sprite).length===0&&delete r.dialogue.character.sprite,Object.keys(r.dialogue.character).length===0&&delete r.dialogue.character,Object.keys(r.dialogue).length===0&&delete r.dialogue);let o=(a,t)=>{let s=r[a]?.items;Array.isArray(s)&&(r[a].items=s.map(i=>{let l={...i};return delete l.animations,t(l)?l:null}).filter(Boolean),r[a].items.length===0&&delete r[a])};return o("character",a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId),o("visual",a=>a.resourceId||a.transformId),r},kf=(e,r)=>{if(!e||!r)return;let n=e;for(let o of r.split(".")){if(n==null||!(o in Object(n)))return;n=n[o]}return n},Pf=(e,r)=>{if(typeof e!="string")return e;if(e==="_event"){if(r==null)throw new Error('Action template binding "_event" requires event context "_event".');return r}if(!e.startsWith("_event."))return e;if(r==null)throw new Error(`Action template binding "${e}" requires event context "_event".`);let n=e.slice(7),o=kf(r,n);if(o===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "_event".`);return o},xf={conditional:new Set(["branches"]),updateProjectData:new Set(["projectData"]),showConfirmDialog:new Set(["confirmActions","cancelActions"]),form:new Set(["submitActions","cancelActions"]),submitForm:new Set(["actions"]),cancelForm:new Set(["actions"])},Ef=(e,r)=>{let n=e[e.length-1];return n?xf[n]?.has(r)===!0:!1},Qs=(e,r,n=[])=>Array.isArray(e)?e.map(o=>Qs(o,r,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([o,a])=>[o,Ef(n,o)?a:Qs(a,r,[...n,o])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?Pf(e,r._event):Cr(e,r):e,so=(e,r)=>{if(!r)return e;if(Object.prototype.hasOwnProperty.call(r,"event"))throw new Error('Action template context key "event" is no longer supported. Use "_event".');return Qs(e,r)};var te=e=>structuredClone(he(e)?dr(e):e),W=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),ka=e=>e?.animations?.playback?.continuity==="persistent",X=(e,r)=>W(e??{},r)&&e[r]!==void 0,Pt=(e,r)=>e?!r(e)&&e.animations?{animationsOnly:!0,state:{animations:te(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},Sf=e=>X(e,"opacity")||X(e,"blur"),Oa=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Ca=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],oo=["animationName","animationSpeed","loop"],Rf=e=>Oa.some(r=>X(e,r)),$a=e=>e?.text&&X(e.text,"content")&&X(e.text,"textStyleId"),_a=e=>X(e,"text"),Of=(e,r)=>e.resourceId?!0:$a(e)?!r?.text:!1,Cf=(e,r)=>{let n={...te(e),...r};return r.text&&e.text&&(n.text={...te(e.text),...te(r.text)}),n},$f=(e,r)=>{if(_a(e)){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!$a(e)&&!r?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`)}},Pa=e=>Ca.some(r=>X(e,r)),xa=e=>oo.some(r=>X(e,r)),_f=(e,r,{hasAuthoredTransformId:n=!1}={})=>{if(!r)return e;for(let o of Ca)!n&&!X(e,o)&&X(r,o)&&(e[o]=r[o]),W(e,o)&&e[o]===void 0&&delete e[o];return e},ja=(e,r,n)=>{let o=e[n];return o?.id===r?.id?o:e.find(a=>a.id===r?.id)},jf=(e,r)=>{if(!r)return e;for(let n of Oa)!X(e,n)&&X(r,n)&&(e[n]=r[n]),W(e,n)&&e[n]===void 0&&delete e[n];return e},Nf=(e,r)=>(r&&(!X(e,"opacity")&&X(r,"opacity")&&(e.opacity=r.opacity),!X(e,"blur")&&X(r,"blur")&&(e.blur=te(r.blur)),W(e,"opacity")&&e.opacity===void 0&&delete e.opacity,W(e,"blur")&&e.blur===void 0&&delete e.blur),e),Na=(e,r,n=[],{hasPatchFn:o=()=>!1,mergeItemFn:a}={})=>{if(!e||e.length===0)return{hasValidItems:!1,processedItems:[]};let t=e.map((s,i)=>{let l=ja(n,s,i),c=r(s,l),u=Sf(s),p=Rf(s),m=o(s),d=W(s,"animations"),f=te(s);return!c&&(u||p||m)&&l&&(f=a?a(l,f):{...te(l),...f},d||delete f.animations),Nf(jf(f,l),l)}).filter(s=>r(s)||s.animations);return{hasValidItems:t.length>0,processedItems:t}},Df=e=>{if(e){if(e.character&&W(e.character,"name"))return e.character.name;if(W(e,"characterName"))return e.characterName}},Da=e=>!!e?.character&&W(e.character,"sprite"),Lf=e=>{let r={},n=!1,o=Df(e);return o!==void 0&&(r.name=o,n=!0),Da(e)&&(r.sprite=te(e.character.sprite),n=!0),n?r:void 0},Ea=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},Sa=({dialogueState:e,dialogueAction:r,persistCharacter:n})=>W(r,"persistSprite")?r.persistSprite===!0:W(e,"persistSprite")?e.persistSprite===!0:n&&!W(r,"characterId"),Ra=({previousCharacter:e,characterFields:r,hasCharacterId:n,persistCharacter:o,persistSprite:a,hasExplicitPersistSprite:t,isAppendingAdvDialogueContent:s})=>{let i={},l=e??{},c=r??{},u=s&&!n,p=u&&!t;return W(c,"name")?i.name=c.name:(o&&!n||u)&&W(l,"name")&&(i.name=te(l.name)),W(c,"sprite")?i.sprite=te(c.sprite):(a||p)&&W(l,"sprite")&&(i.sprite=te(l.sprite)),Object.keys(i).length>0?i:void 0},Tf=({dialogueState:e,content:r,append:n=!1})=>{if(!n||!Array.isArray(r)){e.content=r,delete e.initialRevealedContent;return}let o=Array.isArray(e.content)?e.content:[];o.length>0?e.initialRevealedContent=o.map(a=>te(a)):delete e.initialRevealedContent,e.content=[...o,...r]},Mf=()=>({}),qf=(e,r)=>{if(!r.screen)return;let n=X(r.screen,"opacity"),o=X(r.screen,"blur"),a=W(r.screen,"animations");if(!n&&!o){a||delete e.screen;return}let t=e.screen,s={};if(n?s.opacity=r.screen.opacity:X(t,"opacity")&&(s.opacity=t.opacity),o?s.blur=te(r.screen.blur):X(t,"blur")&&(s.blur=te(t.blur)),W(s,"opacity")&&s.opacity===void 0&&delete s.opacity,W(s,"blur")&&s.blur===void 0&&delete s.blur,Object.keys(s).length===0){delete e.screen;return}e.screen=s},Vf=(e,r)=>{if(r.background){let n=X(r.background,"resourceId"),o=X(r.background,"colorId"),a=X(r.background,"opacity"),t=X(r.background,"blur"),s=X(r.background,"transformId"),i=Pa(r.background),l=xa(r.background),{animationsOnly:c,state:u}=Pt(r.background,d=>X(d,"resourceId")||X(d,"colorId")||X(d,"opacity")||X(d,"blur")||X(d,"transformId")||Pa(d)||xa(d));if(c){e.background=e.background?{...te(e.background),...u}:u;return}if(!n&&!o&&!a&&!t&&!s&&!i&&!l){delete e.background;return}let p=e.background,m=te(r.background);if(!n&&p?.resourceId){m.resourceId=p.resourceId,!W(m,"transformId")&&p.transformId&&(m.transformId=p.transformId);for(let d of oo)!X(m,d)&&X(p,d)&&(m[d]=p[d])}_f(m,p,{hasAuthoredTransformId:s}),!o&&p?.colorId&&(m.colorId=p.colorId),!a&&X(p,"opacity")&&(m.opacity=p.opacity),!t&&X(p,"blur")&&(m.blur=te(p.blur)),W(m,"resourceId")&&m.resourceId===void 0&&delete m.resourceId,W(m,"colorId")&&m.colorId===void 0&&delete m.colorId,W(m,"animations")&&m.animations===void 0&&delete m.animations,W(m,"transformId")&&m.transformId===void 0&&delete m.transformId,W(m,"opacity")&&m.opacity===void 0&&delete m.opacity,W(m,"blur")&&m.blur===void 0&&delete m.blur;for(let d of oo)W(m,d)&&m[d]===void 0&&delete m[d];if(!m.resourceId&&!m.colorId){delete e.background;return}p?.resourceId===m.resourceId&&p?.transformId===m.transformId&&!W(m,"animations")&&ka(p)&&(m.animations=te(p.animations)),e.background=m}else e.background?.animations&&!ka(e.background)&&(e.background.animations={})},Ff=(e,r)=>{if(!r.dialogue){if(e.dialogue&&(Ea(e.dialogue),e.dialogue.mode==="adv")){e.dialogue.content=void 0,delete e.dialogue.initialRevealedContent,delete e.dialogue.textSpeed;let u=e.dialogue.persistCharacter===!0,p=Sa({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:u});u||delete e.dialogue.characterId,e.dialogue.character=Ra({previousCharacter:e.dialogue.character,characterFields:{},hasCharacterId:!1,persistCharacter:u,persistSprite:p,hasExplicitPersistSprite:!1,isAppendingAdvDialogueContent:!1}),e.dialogue.character||delete e.dialogue.character}return}e.dialogue||(e.dialogue={});let n=e.dialogue.mode;if(r.dialogue.ui){let{animationsOnly:u,state:p}=Pt(r.dialogue.ui,m=>!!m.resourceId);u?e.dialogue.ui={...e.dialogue.ui,...p}:e.dialogue.ui={...r.dialogue.ui}}else e.dialogue?.ui?.animations&&(e.dialogue.ui.animations={});r.dialogue.mode==="adv"&&(e.dialogue.content=e.dialogue.content||void 0,e.dialogue.characterId=e.dialogue.characterId||void 0,e.dialogue.mode="adv"),r.dialogue.mode==="nvl"&&(e.dialogue?.mode!=="nvl"&&(e.dialogue.lines=[]),e.dialogue.mode="nvl");let o=r.dialogue.append===!0&&n!=="nvl"&&e.dialogue?.mode!=="nvl"&&Array.isArray(r.dialogue.content);r.dialogue.content!==void 0&&Tf({dialogueState:e.dialogue,content:r.dialogue.content,append:o}),W(r.dialogue,"textSpeed")?e.dialogue.textSpeed=r.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=W(r.dialogue,"persistCharacter")?r.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let t=Sa({dialogueState:e.dialogue,dialogueAction:r.dialogue,persistCharacter:a});W(r.dialogue,"persistSprite")&&(e.dialogue.persistSprite=t);let s=W(r.dialogue,"characterId"),i=Lf(r.dialogue),l=Da(r.dialogue);s?r.dialogue.characterId?e.dialogue.characterId=r.dialogue.characterId:delete e.dialogue.characterId:!a&&!o&&delete e.dialogue.characterId;let c=Ra({previousCharacter:e.dialogue.character,characterFields:i,hasCharacterId:s,persistCharacter:a,persistSprite:t,hasExplicitPersistSprite:W(r.dialogue,"persistSprite"),isAppendingAdvDialogueContent:o});if(c?e.dialogue.character=c:delete e.dialogue.character,l||Ea(e.dialogue),r.dialogue.clear){delete e.dialogue;return}if(r.dialogue?.clearPage&&e.dialogue?.mode==="nvl"&&(e.dialogue.lines=[]),e.dialogue?.mode==="nvl"&&r.dialogue.content!==void 0){let u={content:r.dialogue.content,characterId:e.dialogue.characterId??null};e.dialogue.textSpeed!==void 0&&(u.textSpeed=e.dialogue.textSpeed),e.dialogue.character&&(u.character=te(e.dialogue.character)),e.dialogue.lines.push(u)}},Uf=(e,r)=>{if(r.sfx){let n=Array.isArray(r.sfx.items)&&r.sfx.items.length>0,o=Array.isArray(r.sfx.channels)&&r.sfx.channels.length>0;if(!n&&!o){delete e.sfx;return}e.sfx=te(r.sfx)}else e.sfx&&delete e.sfx},Bf=(e,r)=>{if(r.bgm){let n=Array.isArray(r.bgm.sounds);if(!r.bgm.resourceId&&!n||n&&r.bgm.sounds.length===0){e.bgm=void 0;return}e.bgm=te(r.bgm),r.bgm.resourceId&&(e.bgm.loop=r.bgm.loop??!0)}},Yf=(e,r)=>{if(r.visual){let n=e.visual?.items||[];r.visual.items?.forEach((t,s)=>{$f(t,ja(n,t,s))});let{hasValidItems:o,processedItems:a}=Na(r.visual.items,Of,n,{hasPatchFn:_a,mergeItemFn:Cf});o?e.visual={items:a}:delete e.visual}else e.visual?.items&&(e.visual.items=e.visual.items.map(n=>n.animations?{...n,animations:{}}:n))},zf=(e,r)=>{if(!r.character){e.character?.items&&(e.character.items=e.character.items.map(a=>a.animations?{...a,animations:{}}:a));return}let{hasValidItems:n,processedItems:o}=Na(r.character.items,a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId,e.character?.items||[]);n?e.character={items:o}:delete e.character},Gf=(e,r)=>{r.animation?e.animation=r.animation:e.animation&&delete e.animation},Hf=(e,r)=>{if(r.layout){let{animationsOnly:n,state:o}=Pt(r.layout,a=>!!a.resourceId);if(n){e.layout=o;return}if(!r.layout.resourceId){delete e.layout;return}e.layout=r.layout}else e.layout&&delete e.layout},Xf=(e,r)=>{if(r.choice){let{animationsOnly:n,state:o}=Pt(r.choice,a=>!!a.resourceId);if(n){e.choice={...e.choice,...o};return}if(!r.choice.resourceId){delete e.choice;return}e.choice=r.choice}else e.choice&&delete e.choice},Wf=(e,r)=>{if(r.form){let{animationsOnly:n,state:o}=Pt(r.form,a=>!!a.resourceId);if(n){e.form={...e.form,...o};return}if(!r.form.resourceId){delete e.form;return}e.form=te(r.form)}else e.form&&delete e.form},Kf=(e,r)=>{if(r.control){if(!r.control.resourceId){delete e.control;return}e.control=r.control}},Jf=(e,r)=>{if(r.voice){let n=Array.isArray(r.voice.sounds);if(!r.voice.resourceId&&!n||n&&r.voice.sounds.length===0){delete e.voice;return}e.voice=te(r.voice)}else e.voice&&delete e.voice},Qf=(e,r)=>{r.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},jr=e=>cn(Mf,[Qf,qf,Vf,Uf,Bf,Yf,Ff,zf,Gf,Hf,Xf,Wf,Kf,Jf])(e);var Wr=(e,r)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=Cr(e,r);return n&&typeof n=="object"?e:n};var Zf=Object.freeze({dialogueTextSpeed:{source:"global.dialogueTextSpeed"},autoForwardDelay:{source:"global.autoForwardDelay"},autoForwardSpeed:{source:"global.autoForwardSpeed"},skipUnseenText:{source:"global.skipUnseenText"},skipTransitionsAndAnimations:{source:"global.skipTransitionsAndAnimations"},soundVolume:{source:"global.soundVolume"},musicVolume:{source:"global.musicVolume"},muteAll:{source:"global.muteAll"},localizationPackageId:{source:"global.localizationPackageId"},saveLoadPagination:{source:"context.runtime.saveLoadPagination"},menuPage:{source:"context.runtime.menuPage"},menuEntryPoint:{source:"context.runtime.menuEntryPoint"},autoMode:{source:"global.autoMode"},skipMode:{source:"global.skipMode"},dialogueUIHidden:{source:"global.dialogueUIHidden"},isLineCompleted:{source:"global.isLineCompleted"}}),gr=Object.freeze({dialogueTextSpeed:50,autoForwardDelay:1e3,autoForwardSpeed:50,skipUnseenText:!1,skipTransitionsAndAnimations:!1,soundVolume:50,musicVolume:50,muteAll:!1,localizationPackageId:null,autoMode:!1,skipMode:!1,dialogueUIHidden:!1,isLineCompleted:!1}),xt=Object.freeze({saveLoadPagination:1,menuPage:"",menuEntryPoint:""}),em=Object.freeze({dialogueTextSpeed:"number",autoForwardDelay:"number",autoForwardSpeed:"number",skipUnseenText:"boolean",skipTransitionsAndAnimations:"boolean",soundVolume:"number",musicVolume:"number",muteAll:"boolean",localizationPackageId:"nullableString",saveLoadPagination:"number",menuPage:"string",menuEntryPoint:"string",autoMode:"boolean",skipMode:"boolean",dialogueUIHidden:"boolean",isLineCompleted:"boolean"}),io=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),La=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),ao=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),Ta=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),rm=(e,r)=>{let n=em[e];if(n==="number"){if(typeof r!="number"||!Number.isFinite(r))throw new Error(`${e} requires a finite numeric value`);return}if(n==="boolean"){if(typeof r!="boolean")throw new Error(`${e} requires a boolean value`);return}if(n==="string"){if(typeof r!="string")throw new Error(`${e} requires a string value`);return}if(n==="nullableString"){if(r!==null&&typeof r!="string")throw new Error(`${e} requires a string or null value`);return}throw new Error(`Unsupported runtime field "${e}"`)},mn=(e,r)=>{if(rm(e,r),e==="autoForwardDelay"&&r<0)throw new Error("autoForwardDelay requires a value greater than or equal to 0");if(["autoForwardSpeed","soundVolume","musicVolume"].includes(e)&&(r<0||r>100))throw new Error(`${e} requires a value between 0 and 100`);return e==="saveLoadPagination"?Math.max(1,Math.trunc(r)):r},lo=(e={})=>{let r=e?.config;if(r===void 0)return{...gr};if(!Ta(r))throw new Error("projectData.config must be an object");let n=Object.keys(r).find(i=>i!=="runtimeDefaults");if(n)throw new Error(`projectData.config contains unsupported field "${n}"`);let o=r.runtimeDefaults;if(o===void 0)return{...gr};if(!Ta(o))throw new Error("projectData.config.runtimeDefaults must be an object");let a=new Set(La),t=Object.keys(o).find(i=>!a.has(i));if(t)throw new Error(`projectData.config.runtimeDefaults contains unsupported field "${t}"`);let s={...gr};return La.forEach(i=>{o[i]!==void 0&&(s[i]=mn(i,o[i]))}),s},tm=(e,r)=>{if(r.startsWith("global.")){let n=r.slice(7);return e?.global?.[n]}if(r.startsWith("context.runtime.")){let n=r.slice(16),o=Array.isArray(e?.contexts)?e.contexts:[];return o[o.length-1]?.runtime?.[n]}},Nr=e=>Object.fromEntries(Object.entries(Zf).map(([r,n])=>{let o=tm(e,n.source),a=o!==void 0?o:gr[r]??xt[r];return[r,a]})),br=(e,r)=>Nr(e)[r],Ma=(e={})=>Object.fromEntries(io.map(r=>[r,e[r]??gr[r]]));var Kr=Object.freeze({VISUAL_BEHIND_BACKGROUND:10,BACKGROUND:20,VISUAL_BEHIND_CHARACTER:30,CHARACTER:40,VISUAL_BEHIND_DIALOGUE:50,DIALOGUE:60,VISUAL_BEHIND_CHOICE:70,CHOICE:80,VISUAL_FOREGROUND:90}),er=Object.freeze({BEHIND_BACKGROUND:Kr.VISUAL_BEHIND_BACKGROUND,BEHIND_CHARACTER:Kr.VISUAL_BEHIND_CHARACTER,BEHIND_DIALOGUE:Kr.VISUAL_BEHIND_DIALOGUE,BEHIND_CHOICE:Kr.VISUAL_BEHIND_CHOICE,FOREGROUND:Kr.VISUAL_FOREGROUND}),co=er.BEHIND_DIALOGUE,uo=Object.freeze(Object.values(er).sort((e,r)=>e-r));var nm={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([r,n])=>({id:r,...n})),formatDate:ro},sm=/^\$for\s+([A-Za-z_][A-Za-z0-9_]*)(?:\s*,\s*([A-Za-z_][A-Za-z0-9_]*))?\s+in\s+(.+?)(?::)?$/,Et=e=>Array.isArray(e)?e.map(r=>{if(!r||typeof r!="object"||Array.isArray(r)||Object.keys(r).length!==1)return Et(r);let[n]=Object.keys(r),o=sm.exec(n);if(!o)return Et(r);let[,a,t,s]=o,i=`$for ${a}${t?`, ${t}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(r[n])?r[n]:[];return{[i]:Et(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Et(n)])),tr=(e,r)=>{let n={functions:nm};return Cr(Et(e),r,n)},Ro=({animationType:e,animationId:r,animationPath:n})=>{if(e!==void 0&&!(e==="update"||e==="transition"))throw new Error(`[${n}] Animation "${r}" has unsupported type "${e}". Use "update" or "transition".`)},om=({id:e,targetId:r,animation:n,playback:o,animationPath:a="animation"})=>{let t=structuredClone(n);if(Ro({animationType:t.type,animationId:e,animationPath:a}),delete t.name,delete t.playback,t.id=e,t.targetId=r,o!==void 0){let s=cm(o,`${a}.playback`);if(s!==void 0){let i=s.loop===!0?el(t):null;if(s.loop===!0&&t.type!=="update")throw new Error(`[${a}.playback] playback.loop is only supported for type "update".`);if(s.loop===!0&&t.complete!==void 0)throw new Error(`[${a}.playback] animation.complete is not allowed when playback.loop is true because a loop never completes.`);if(s.loop===!0&&(!Number.isFinite(i)||i<=0))throw new Error(`[${a}.playback] playback.loop requires an animation with a finite duration greater than 0.`);t.playback=s}}return t},im=(e,{animationId:r="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return Ro({animationType:e.type,animationId:r,animationPath:n}),e.type},am=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},lm=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},cm=(e,r="animation.playback")=>{if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`[${r}] playback must be an object.`);if(e.continuity!==void 0&&e.continuity!=="render"&&e.continuity!=="persistent")throw new Error(`[${r}] playback.continuity must be "render" or "persistent".`);if(e.speed!==void 0&&(typeof e.speed!="number"||!Number.isFinite(e.speed)||e.speed<=0))throw new Error(`[${r}] playback.speed must be a finite number greater than 0.`);if(e.loop!==void 0&&typeof e.loop!="boolean")throw new Error(`[${r}] playback.loop must be a boolean.`);let n={};return e.continuity!==void 0&&(n.continuity=e.continuity),e.speed!==void 0&&e.speed!==1&&(n.speed=e.speed),e.loop===!0&&(n.loop=!0),Object.keys(n).length>0?n:void 0},um=e=>{let r=e?.playback?.speed;return typeof r=="number"&&Number.isFinite(r)&&r>0?r:1},Dr=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Ja=e=>e?.playback?.continuity==="persistent",Io=e=>Array.isArray(e)?e.map(Io):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((r,n)=>(r[n]=Io(e[n]),r),{}),bn=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let r=structuredClone(e);return r.playback&&(delete r.playback.continuity,r.playback.speed===1&&delete r.playback.speed,Object.keys(r.playback).length===0&&delete r.playback),JSON.stringify(Io(r))},Qa=(e=[])=>e.filter(r=>Ja(r)).map(r=>structuredClone(r)),Za=e=>Array.isArray(e?.keyframes)?e.keyframes.reduce((r,n)=>{let o=typeof n?.duration=="number"&&Number.isFinite(n.duration)?n.duration:0;return r+o},0):0,po=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((r,n)=>Math.max(r,Za(n)),0),el=e=>Math.max(po(e?.tween),po(e?.prev?.tween),po(e?.next?.tween),Za(e?.mask?.progress)),rl=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:el(e)/um(e),pm=e=>e.some(r=>r?.playback?.loop===!0),qa=({animationInstances:e,activePersistentAnimations:r})=>{if(!Array.isArray(e)||e.length===0||!Array.isArray(r)||r.length===0)return!1;let n=new Set(r.map(bn).filter(Boolean));return e.some(o=>{if(!Ja(o))return!1;let a=bn(o);return a?n.has(a):!1})},ze=({animationInstances:e,isLineCompleted:r,skipTransitionsAndAnimations:n,activePersistentAnimations:o,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:t=!0})=>!Array.isArray(e)||e.length===0||n?!1:pm(e)||t&&!r||qa({animationInstances:e,activePersistentAnimations:o})?!0:t?!1:qa({animationInstances:e,activePersistentAnimations:a}),dm=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(r=>e[r]!==void 0),fm=(e,r)=>{if(dm(e))throw new Error(`[${r}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},mm=({resources:e,animationId:r,playback:n,instanceId:o,targetId:a,animationPath:t="animation"})=>{if(!r||!a)return!1;let s=e?.animations?.[r];return s?om({id:o,targetId:a,animation:s,playback:n,animationPath:t}):null},ym=(e,{defaultTargetId:r,defaultId:n,animationPath:o="animation"}={})=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let a=structuredClone(e);return Ro({animationType:a.type,animationId:a.id??n,animationPath:o}),a.id??=n,a.targetId??=r,a},Oo=({animations:e,transitions:r,defaultTargetId:n,idPrefix:o,animationPathPrefix:a=o})=>{r.forEach((t,s)=>{e.push(ym(t,{defaultTargetId:n,defaultId:`${o}-transition-${s}`,animationPath:`${a}.transitions[${s}]`}))})},wo=(e,r)=>{if(e===void 0)return[];if(!Array.isArray(e)||e.some(n=>n===null||typeof n!="object"||Array.isArray(n)))throw new Error(`${r} must be an array of objects`);return e},hm=({content:e,path:r,variables:n})=>wo(e,r).reduce((o,a)=>{let t=Wr(a.text,{variables:n});return o+`${t??""}`.length},0),Va=(e=[])=>{let r=new Map;for(let n of e)n?.id&&r.set(n.id,(r.get(n.id)??0)+1);return new Set(Array.from(r.entries()).filter(([,n])=>n>1).map(([n])=>n))},yn=(e,r=0,n=new Set)=>{if(!n.has(e?.id))return`character-container-${e.id}`;let o=e?.sprites?.map(({resourceId:a})=>a)||[];return o.length===0?`character-container-${e.id}`:`character-container-${e.id}-${r}-${o.join("-")}`},St=(e,r)=>{if(!r.transformId)throw new Error(`Visual item "${r.id}" requires transformId`);let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for visual item "${r.id}"`);return n},gm=(e,r={})=>{if(!r?.transformId)return;let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for background`);return n},bm=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Im=(e={})=>bm.some(r=>Dr(e,r)),tl=(e={},r)=>{if(r){if(e.images?.[r])return"sprite";if(e.videos?.[r])return"video";if(e.spritesheets?.[r])return"spritesheet-animation";if(e.layouts?.[r])return"container"}},gn=({resourceId:e,kind:r})=>{if(e)return r?`bg-cg-background-${r}`:`bg-cg-${e}`},wm=(e={})=>e.textStyles||{},vm=(e={})=>e.images||{},Am=.5,km=(e={},r,n)=>{if(r){if(!e.animations?.[r])throw new Error(`Animation '${r}' not found in spritesheet resource '${n}'`);return r}return Object.keys(e.animations??{})[0]},Co=({id:e,resourceId:r,spritesheet:n,animationName:o,animationSpeed:a,loop:t,width:s,height:i,transform:l={}}={})=>{let c=km(n,o,r),u=c?n.animations?.[c]:void 0;if(!u){console.warn(`Spritesheet animation not found: ${r}`);return}return{id:e,type:"spritesheet-animation",...l,width:s??n.width,height:i??n.height,src:n.fileId,atlas:n.jsonData,playback:{frames:u.frames,animationSpeed:a??u.animationSpeed??Am,loop:t??u.loop??!0}}},nl=({id:e,item:r,resources:n={}}={})=>{let o=n.images?.[r.resourceId];if(o)return{type:"sprite",id:e,src:o.fileId,width:o.width,height:o.height,x:0,y:0};let a=n.spritesheets?.[r.resourceId];if(a)return Co({id:e,resourceId:r.resourceId,spritesheet:a,animationName:r.animationName,animationSpeed:r.animationSpeed,loop:r.loop,transform:{x:0,y:0}});console.warn(`Character sprite resource not found: ${r.resourceId}`)},Pm=(e={})=>e.colors||{},xm=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,Ot=(e,r)=>e==="root"?`${r}`:`${e}.${r}`,Zr=(e,r,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${r}" must resolve to a non-empty string`)},fo=(e,r,n)=>{if(e===void 0)return 1;if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);if(e<0||e>1)throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);return e},mo=(e,r,n,o,{minimum:a}={})=>{if(e===void 0)return o;if(typeof e!="number"||!Number.isFinite(e)||a!==void 0&&e<a){let t=a===void 0?"a finite number":`a finite number >= ${a}`;throw new Error(`shadow.${r} for text style "${n}" must be ${t}`)}return e},vn=(e,r)=>{if(typeof e!="string"||!xm.test(e))throw new Error(`${r} must resolve to a hex color`);return e.length===4?`#${e.slice(1).split("").map(n=>n.repeat(2)).join("")}`:e},Fa=(e,r,n)=>{let o=vn(e,n);if(r===1)return o;let a=Number.parseInt(o.slice(1,3),16),t=Number.parseInt(o.slice(3,5),16),s=Number.parseInt(o.slice(5,7),16);return`rgba(${a}, ${t}, ${s}, ${r})`},Em=(e={},r)=>{let n=wm(e)?.[r];if(!n)throw new Error(`Text style "${r}" not found`);let a=(Array.isArray(n.fontId)?n.fontId:[n.fontId]).map(l=>{let c=e.fonts?.[l];if(!c)throw new Error(`Font "${l}" not found for text style "${r}"`);return c.fileId}),t=e.colors?.[n.colorId];if(!t)throw new Error(`Color "${n.colorId}" not found for text style "${r}"`);let s=fo(n.colorAlpha,"colorAlpha",r),i={fontFamily:Array.isArray(n.fontId)?a.join(", "):a[0],fontSize:n.fontSize??16,fontWeight:n.fontWeight??"400",fontStyle:n.fontStyle??"normal",lineHeight:n.lineHeight??1.2,fill:Fa(t.hex,s,`Color "${n.colorId}" for text style "${r}"`)};if(n.align!==void 0&&(i.align=n.align),n.wordWrap!==void 0&&(i.wordWrap=n.wordWrap),n.breakWords!==void 0&&(i.breakWords=n.breakWords),n.wordWrapWidth!==void 0&&(i.wordWrapWidth=n.wordWrapWidth),n.strokeColorId){let l=e.colors?.[n.strokeColorId];if(!l)throw new Error(`Stroke color "${n.strokeColorId}" not found for text style "${r}"`);let c=fo(n.strokeAlpha,"strokeAlpha",r);i.strokeColor=Fa(l.hex,c,`Stroke color "${n.strokeColorId}" for text style "${r}"`)}else if(n.strokeAlpha!==void 0)throw new Error(`strokeAlpha for text style "${r}" requires strokeColorId`);if(n.strokeWidth!==void 0&&(i.strokeWidth=n.strokeWidth),n.shadow!==void 0){let l=e.colors?.[n.shadow.colorId];if(!l)throw new Error(`Shadow color "${n.shadow.colorId}" not found for text style "${r}"`);i.shadow={color:vn(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${r}"`),alpha:fo(n.shadow.alpha,"shadow.alpha",r),blur:mo(n.shadow.blur,"blur",r,0,{minimum:0}),offsetX:mo(n.shadow.offsetX,"offsetX",r,2),offsetY:mo(n.shadow.offsetY,"offsetY",r,2)}}return i},vo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>vo(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;if(Object.prototype.hasOwnProperty.call(e,"textStyle"))throw new Error(`Inline textStyle is not allowed in layout elements at "${n}". Use textStyleId instead`);let o={};for(let[a,t]of Object.entries(e))a!=="textStyleId"&&(o[a]=vo(t,r,Ot(n,a)));return e.textStyleId!==void 0&&(Zr(e.textStyleId,n,"textStyleId"),o.textStyle=Em(r,e.textStyleId)),o},$o=(e={},r)=>{let n=Pm(e)?.[r];if(!n)throw new Error(`Color "${r}" not found`);return vn(n.hex,`Color "${r}"`)},sl=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",yo=(e,r,n)=>{let o=e?.[r];if(!(!o||typeof o!="object"||Array.isArray(o))&&Object.prototype.hasOwnProperty.call(o,"fill"))throw new Error(`Inline ${r}.fill is not allowed in rect layout elements at "${n}". Use ${sl(`${r}.fill`)} instead`)},Sm=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ct(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;let o={};for(let[a,t]of Object.entries(e))a!=="colorId"&&(o[a]=Ct(t,r,Ot(n,a)));return e.colorId!==void 0&&(Zr(e.colorId,n,"colorId"),o.fill=$o(r,e.colorId)),o},Ct=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ct(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;if(e.type==="rect"){if(Object.prototype.hasOwnProperty.call(e,"fill"))throw new Error(`Inline fill is not allowed in rect layout elements at "${n}". Use ${sl("fill")} instead`);yo(e,"hover",n),yo(e,"click",n),yo(e,"rightClick",n)}let o={};for(let[a,t]of Object.entries(e))if(!(e.type==="rect"&&a==="colorId")){if(e.type==="rect"&&(a==="hover"||a==="click"||a==="rightClick")){o[a]=Sm(t,r,Ot(n,a));continue}o[a]=Ct(t,r,Ot(n,a))}return e.type==="rect"&&e.colorId!==void 0&&(Zr(e.colorId,n,"colorId"),o.fill=$o(r,e.colorId)),o},ho=(e={},r)=>{let n=vm(e)?.[r];return n||null},ol=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",Ua=(e,r,n,o)=>{let a=e?.[r];if(!(!a||typeof a!="object"||Array.isArray(a))&&Object.prototype.hasOwnProperty.call(a,o))throw new Error(`Inline ${r}.${o} is not allowed in sprite layout elements at "${n}". Use ${ol(`${r}.${o}`)} instead`)},Ba=(e,r,n)=>{let o=e[r];e[r]={...o&&typeof o=="object"&&!Array.isArray(o)?o:{},src:n}},Ao=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ao(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;if(e.type==="sprite"){for(let a of["url","src","hoverUrl","hoverSrc","clickUrl","clickSrc"])if(Object.prototype.hasOwnProperty.call(e,a))throw new Error(`Inline ${a} is not allowed in sprite layout elements at "${n}". Use ${ol(a)} instead`);Ua(e,"hover",n,"src"),Ua(e,"click",n,"src")}let o={};for(let[a,t]of Object.entries(e))e.type==="sprite"&&(a==="imageId"||a==="hoverImageId"||a==="clickImageId")||(o[a]=Ao(t,r,Ot(n,a)));if(e.type==="sprite"&&e.imageId!==void 0){Zr(e.imageId,n,"imageId");let a=ho(r,e.imageId),t=a?.fileId??e.imageId;o.src=t,o.width===void 0&&a?.width!==void 0&&(o.width=a.width),o.height===void 0&&a?.height!==void 0&&(o.height=a.height)}return e.type==="sprite"&&e.hoverImageId!==void 0&&(Zr(e.hoverImageId,n,"hoverImageId"),Ba(o,"hover",ho(r,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(Zr(e.clickImageId,n,"clickImageId"),Ba(o,"click",ho(r,e.clickImageId)?.fileId??e.clickImageId)),o},_o=(e,r={},n="root")=>Ao(Ct(vo(e,r,n),r,n),r,n),nr=_o,Lr=(e=[])=>e.find(r=>r.id==="story"),Rm="#000000",ko="bg-cg-background-color",Om=({resources:e={},background:r={},screen:n})=>r?.colorId===void 0?vn(n?.backgroundColor??Rm,"screen.backgroundColor"):$o(e,r.colorId),il=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},Cm=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},Ya=(e={},{includeDefaultAlpha:r=!1}={})=>{let n=il(e),o=Cm(e),a={};return(r||n!==void 0)&&(a.alpha=n??1),o&&(a.blur=o),a},$m=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},_m=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},al=(e={})=>{let r=$m(e),n=_m(e),o={};return r!==void 0&&(o.alpha=r),n&&(o.blur=n),o},Qr=(e={})=>al(e),rr=(e={},r={})=>{let n={x:r.x??e.x,y:r.y??e.y,anchorX:r.anchorX??e.anchorX,anchorY:r.anchorY??e.anchorY,rotation:r.rotation??e.rotation,scaleX:r.scaleX??e.scaleX,scaleY:r.scaleY??e.scaleY},o=r.originX??e.originX,a=r.originY??e.originY;return o!==void 0&&(n.originX=o),a!==void 0&&(n.originY=a),n},jm=["id","type","resourceId","transformId","x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY","layer","opacity","blur","animations"],jo=(e={})=>e.text&&Dr(e.text,"content")&&Dr(e.text,"textStyleId"),za=(e={})=>{if(e.resourceId)return e.resourceId;if(jo(e))return"text"},Ga=(e,r={})=>typeof e=="string"?r.images?.[e]?.fileId??e:!e||typeof e!="object"||Array.isArray(e)?e:e.imageId?r.images?.[e.imageId]?.fileId??e.imageId:Array.isArray(e.items)?{...e,items:e.items.map(n=>{if(typeof n=="string")return r.images?.[n]?.fileId??n;if(!n||typeof n!="object"||Array.isArray(n))return n;if(n.imageId){let{imageId:o,...a}=n;return{...a,src:r.images?.[o]?.fileId??o}}return typeof n.src=="string"?{...n,src:r.images?.[n.src]?.fileId??n.src}:n})}:e,Nm=({item:e,particle:r,resources:n})=>{let o=St(n,e),a=structuredClone(r),t=a.modules?.appearance?.texture;t!==void 0&&(a.modules.appearance.texture=Ga(t,n)),a.texture!==void 0&&(a.texture=Ga(a.texture,n));let s={id:`visual-${e.id}`,type:"container",children:[{...a,id:`visual-${e.id}-particles`,type:"particles",x:0,y:0}],...rr(o,e)};return Object.assign(s,Qr(e)),s},Dm=e=>{if(e.text){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!jo(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);for(let r of jm)if(Dr(e.text,r))throw new Error(`Visual item "${e.id}" text.${r} is reserved for the visual item`)}},Lm=({resources:e,background:r,screen:n={width:1920,height:1080},includeOpacity:o=!1})=>{let a={id:ko,type:"rect",x:0,y:0,width:n?.width??1920,height:n?.height??1080,fill:Om({resources:e,background:r,screen:n})};if(o){let t=il(r);t!==void 0&&(a.alpha=t)}return a},Tm=(e={},r)=>r?!!(e.images?.[r]||e.videos?.[r]||e.spritesheets?.[r]||e.layouts?.[r]):!1,Ha=({resources:e={},resourceId:r,colorId:n})=>{let o=tl(e,r);return r&&(o||n===void 0)?{resourceId:r,targetId:gn({resourceId:r,kind:o})}:n!==void 0?{resourceId:ko,targetId:ko}:{resourceId:void 0,targetId:void 0}},ll=100,Ir=ll,Mm="channel:bgm",qm="channel:music-room",Vm="music-room:player",Fm="channel:voice",Um="default",Bm=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),Rt=(...e)=>e.map(Bm).join(":"),In=(e,r,n)=>{let o=new Set;e.forEach(({id:a})=>{if(o.has(a)){let t=n?` in ${n}`:"";throw new Error(`Duplicate ${r} id "${a}"${t}.`)}o.add(a)})},Ym=(e,r)=>e*r/ll,cl=(e={},r)=>e?.[r]??gr[r],An=(e={},r,n=Ir)=>Ym(n,cl(e,r)),kn=({id:e,volume:r,muted:n,pan:o,loop:a,playback:t,interruption:s,children:i,runtime:l})=>{let c={id:e,type:"audio-channel",volume:r,muted:!!l?.muteAll||(n??!1),pan:o??0,children:i};return a!==void 0&&(c.loop=a),t!==void 0&&(c.playback=structuredClone(t)),s!==void 0&&(c.interruption=s),c},hn=(e,r,n,o)=>e[n]!==void 0?e[n]:r[n]!==void 0?r[n]:o,zm=["muted","pan","playbackRate","startAt","endAt"],Pn=({id:e,sound:r,resource:n,defaultLoop:o=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:hn(r,n,"loop",o),volume:hn(r,n,"volume",Ir),startDelayMs:hn(r,n,"startDelayMs",0)};zm.forEach(s=>{let i=hn(r,n,s,void 0);i!==void 0&&(a[s]=i)}),r.playback!==void 0&&(a.playback=structuredClone(r.playback));let t=a.startAt??0;if(a.endAt!==void 0&&a.endAt!==null&&a.endAt<t)throw new Error(`Sound "${e}" endAt (${a.endAt}) must be greater than or equal to startAt (${t}).`);return a},qe=({variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,runtime:a,saveSlots:t=[],dialogueState:s,includeInactiveAdvDialogue:i=!1,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g=[],characters:h={},dialogueUIHidden:I,skipOnlyViewedLines:b,skipTransitionsAndAnimations:x}={})=>{let v={dialogueTextSpeed:a?.dialogueTextSpeed??50,autoForwardDelay:a?.autoForwardDelay??1e3,autoForwardSpeed:a?.autoForwardSpeed??50,skipUnseenText:a?.skipUnseenText??!1,skipTransitionsAndAnimations:a?.skipTransitionsAndAnimations??!1,soundVolume:a?.soundVolume??50,musicVolume:a?.musicVolume??50,muteAll:a?.muteAll??!1,localizationPackageId:a?.localizationPackageId??null,saveLoadPagination:a?.saveLoadPagination??1,menuPage:a?.menuPage??"",menuEntryPoint:a?.menuEntryPoint??"",autoMode:a?.autoMode??c??!1,skipMode:a?.skipMode??u??!1,dialogueUIHidden:a?.dialogueUIHidden??I??!1,isLineCompleted:a?.isLineCompleted??l??!1},k=Km({dialogueState:s,includeInactiveAdvDialogue:i,characters:h,variables:e,runtime:v}),S={variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,localizationPackages:a?.localizationPackages??[],localizationPackageId:v.localizationPackageId,runtime:v,saveSlots:t,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g,characters:h};return k&&(S.dialogue=k,S.dialogueLines=k.lines),S},Xa=100,wn=(e,r)=>{if(Array.isArray(e))return e.map(o=>wn(o,r));if(!e||typeof e!="object")return e;let n={...e};return Object.keys(n).forEach(o=>{n[o]=wn(n[o],r)}),n.type==="text-revealing"?r(n):n},Gm=e=>wn(e,r=>({...r,revealEffect:"none"})),Hm=e=>wn(e,r=>{let n=Number(r.speed??r.displaySpeed),o=Number.isFinite(n)?Math.max(n,Xa):Xa;return{...r,speed:o,...Object.prototype.hasOwnProperty.call(r,"displaySpeed")?{displaySpeed:o}:{}}}),wr=(e,{isLineCompleted:r=!1,skipMode:n=!1,skipTransitionsAndAnimations:o=!1}={})=>r||o?Gm(e):n?Hm(e):e,ul=({id:e,screen:r={width:1920,height:1080}})=>({id:e,type:"rect",fill:"transparent",width:r.width,height:r.height,x:0,y:0,click:{payload:{actions:{}}}}),Po=e=>{if(Array.isArray(e))return e.map(Po);if(!e||typeof e!="object")return e;let r={};for(let[t,s]of Object.entries(e))r[t]=Po(s);let n=r.click?.payload;if(!n||typeof n!="object"||Array.isArray(n))return r;let o=n.actions,a=o&&typeof o=="object"&&!Array.isArray(o)&&Object.prototype.hasOwnProperty.call(o,"nextLine")?{...o.nextLine,bypassChoice:!0}:void 0;return{...r,click:{...r.click,payload:{...n,bypassChoice:!0,...a?{actions:{...o,nextLine:a}}:{}}}}},Xm=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),Wa="submit",go=(e,r,n={})=>{let o=e?.payload&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:{},a=o.actions&&typeof o.actions=="object"?o.actions:{},t=n.replaceActions===!0?r:{...a,...r};return{...e||{},payload:{...o,actions:t}}},xo=(e,r,n={})=>{if(Array.isArray(e))return e.map(c=>xo(c,r,n));if(!e||typeof e!="object")return e;let o=typeof e.type=="string",a=o&&e.formRole===Wa,t=o&&n.submitRoleAncestor,s=a||t?{submitRoleAncestor:!0}:{},i={};for(let[c,u]of Object.entries(e))i[c]=xo(u,r,c==="children"?s:{});let l=i;if(l.type==="input"&&typeof l.field=="string"){let c=r?.fields?.[l.field];if(c){let u={updateFormField:{formKey:r.key,field:c.id,value:"_event.value"}};l={...l,value:c.value,placeholder:l.placeholder===void 0?c.placeholder:l.placeholder,multiline:l.multiline===void 0?c.multiline:l.multiline,...l.maxLength===void 0&&c.maxLength!==void 0?{maxLength:c.maxLength}:{},change:go(l.change,u),submit:go(l.submit,r.submitActions)}}}return l.formRole===Wa||t?{...l,click:go(l.click,r.submitActions,{replaceActions:!0})}:l},Eo=(e,r)=>{if(Array.isArray(e))return e.map(o=>Eo(o,r));if(!e||typeof e!="object")return e;let n={};for(let[o,a]of Object.entries(e))n[o]=Eo(a,r);for(let o of Xm){let a=n[o]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[o]={...n[o],payload:{...a,_interactionSource:"form"}})}return n},So=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0,s=un({characterId:e,character:r,characterName:n,characters:o,variables:a});return{...t||{},...r||{},name:s}},pl=(e=[],r={},n={})=>e.map(o=>{let a=So({characterId:o.characterId,character:o.character,characterName:o.characterName,characters:r,variables:n}),t=typeof o.text=="string"?o.text:Array.isArray(o.content)?o.content.map(s=>s?.text??"").join(""):"";return{...o,text:t,character:a,characterName:a.name}}),Wm=e=>!(!e||e.mode==="adv"&&e.content===void 0),Km=({dialogueState:e,includeInactiveAdvDialogue:r=!1,characters:n={},variables:o,runtime:a}={})=>{if(!r&&!Wm(e))return;let t=e.content===void 0?[{text:""}]:wo(e.content,"dialogue.content"),s=e.content===void 0?0:hm({content:e.initialRevealedContent,path:"dialogue.initialRevealedContent",variables:o}),i=a?.dialogueTextSpeed??gr.dialogueTextSpeed,l=e.textSpeed??i,c=(e.lines||[]).map((p,m)=>{let d=wo(p.content,`dialogue.lines[${m}].content`),f=So({characterId:p.characterId,character:p.character,characterName:p.characterName,characters:n,variables:o});return{...p,textSpeed:p.textSpeed??i,content:d.map(y=>({...y,text:Wr(y.text,{variables:o})})),character:f,characterName:f.name}}),u=So({characterId:e.characterId,character:e.character,characters:n,variables:o});return{characterId:e.characterId,persistCharacter:e.persistCharacter,persistSprite:e.persistSprite,character:u,textSpeed:l,content:t.map(p=>({...p,text:Wr(p.text,{variables:o})})),initialRevealedCharacters:s,lines:c}},dl=({container:e,resources:r,templateData:n,isLineCompleted:o=!1,skipMode:a=!1,skipTransitionsAndAnimations:t=!1})=>{let s=tr(e,n);return nr(wr(s,{isLineCompleted:o,skipMode:a,skipTransitionsAndAnimations:t}),r)},bo=(e,r={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(r),Ka=({renderStateKeyboard:e,keyboard:r,phase:n})=>{!r||typeof r!="object"||Array.isArray(r)||Object.entries(r).forEach(([o,a])=>{let t=e[o]??{},s=n==="keydown"?a?.keydown:a?.keyup;if(n==="keydown"&&s&&typeof s=="object"){e[o]={...t,keydown:{payload:bo(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[o].keyup={payload:bo(a.keyup)});return}e[o]={...t,[n]:{payload:bo(a)}}})},Jm=(e={},r={})=>{let n={};return Ka({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),Ka({renderStateKeyboard:n,keyboard:r,phase:"keyup"}),Object.keys(n).length>0?n:void 0},sr=({animationsDef:e,resources:r,previousResourceId:n,currentResourceId:o,previousTargetId:a,currentTargetId:t,animationPath:s,idPrefix:i})=>{if(!e)return[];let l=[],c=({instanceId:h,targetId:I})=>{let b=mm({resources:r,animationId:d,playback:f,instanceId:h,targetId:I,animationPath:s});b&&l.push(b)},u=n!=null&&n!==!1,p=o!=null&&o!==!1,m=a&&t&&a===t;fm(e,s);let d=am(e),f=lm(e),y=r?.animations?.[d],g=im(y,{animationId:d,animationPath:s});if(g==="update")return p&&t?c({instanceId:`${i}-animation-update`,targetId:t}):u&&a&&c({instanceId:`${i}-animation-update`,targetId:a}),l;if(g==="transition"){let h=`${i}-animation-transition`,I=f?.continuity==="persistent"?h:`${i}-animation-in`;if(u&&p&&m)return c({instanceId:h,targetId:t}),l;u&&c({instanceId:`${i}-animation-out`,targetId:a}),p&&c({instanceId:I,targetId:t})}return l},Qm=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),Zm=(e,{presentationState:r,previousPresentationState:n,currentLineActions:o,resources:a={},screen:t={width:1920,height:1080},isLineCompleted:s,skipTransitionsAndAnimations:i,variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:m,activePersistentAnimations:d,restoredPersistentAnimations:f,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:I,canRollback:b,form:x,saveSlots:v=[]})=>{let{elements:k,animations:S}=e;if(r.background){let C=o===void 0?!0:Dr(o?.background??{},"animations"),N=k.find(ye=>ye.id==="story");if(!N)return e;let P=gm(a,r.background),T=P||Im(r.background),V=n?.background?.resourceId,le=n?.background?.colorId,G=r.background.resourceId??(r.background.animations?V:void 0),ee=r.background.colorId??(r.background.animations?le:void 0),Pe=Tm(a,G),Fe={...r.background,colorId:ee};if((ee!==void 0||Pe)&&N.children.push(Lm({resources:a,background:Fe,screen:t,includeOpacity:!Pe})),G){let{images:ye={},videos:re={},spritesheets:ce={}}=a,se=tl(a,G),ie;if(se==="sprite"?ie=ye[G]:se==="video"?ie=re[G]:se==="spritesheet-animation"&&(ie=ce[G]),ie){let Ue=se==="video",ur=se==="spritesheet-animation",Oe={x:(t?.width??1920)/2,y:(t?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...P},$={...Ya(r.background,{includeDefaultAlpha:!0}),...rr(Oe,r.background)},j;ur?j=Co({id:gn({resourceId:G,kind:se}),resourceId:G,spritesheet:ie,animationName:r.background.animationName,animationSpeed:r.background.animationSpeed,loop:r.background.loop,transform:$}):j={id:gn({resourceId:G,kind:se}),type:Ue?"video":"sprite",src:ie.fileId,width:ie.width,height:ie.height,...$},Ue&&(j.loop=r.background.loop??!1,j.volume=ie.volume??50),j&&N.children.push(j)}}if(G){let{layouts:ye={}}=a,re=ye[G];if(re){let ce={id:gn({resourceId:G,kind:"container"}),type:"container",children:re.elements,...Ya(r.background)};T&&Object.assign(ce,rr({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...P},r.background));let se=tr(ce,qe({variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:m,saveSlots:v,dialogueState:r.dialogue,isLineCompleted:s,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:I,canRollback:b,form:x,characters:a.characters||{},skipTransitionsAndAnimations:i}));N.children.push(nr(wr(se,{isLineCompleted:s,skipMode:g,skipTransitionsAndAnimations:i}),a))}}let oe=Ha({resources:a,resourceId:V,colorId:le}),me=Ha({resources:a,resourceId:G,colorId:ee}),Ae=sr({animationsDef:r.background.animations,resources:a,previousResourceId:oe.resourceId,currentResourceId:me.resourceId,previousTargetId:oe.targetId,currentTargetId:me.targetId,animationPath:"background.animations",idPrefix:"bg-cg"});ze({animationInstances:Ae,isLineCompleted:s,skipTransitionsAndAnimations:i,activePersistentAnimations:d,restoredPersistentAnimations:f,isAuthoredOnCurrentLine:C})&&S.push(...Ae)}return e},ey=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{elements:i,animations:l}=e;if(r.character&&o){let c=i.find(f=>f.id==="story");if(!c)return e;let u=r.character.items||[],p=n?.character?.items||[],m=Va(u),d=Va(p);for(let f=0;f<u.length;f++){let y=u[f],{transformId:g,sprites:h}=y,I=p.find(T=>T.id===y.id),b=p.findIndex(T=>T.id===y.id),x=I?.sprites&&I.sprites.length>0,v=h&&h.length>0,k=b>=0?yn(I,b,d):void 0,S=sr({animationsDef:y.animations,resources:o,previousResourceId:k,currentResourceId:v?yn(y,f,m):void 0,previousTargetId:k,currentTargetId:v?yn(y,f,m):void 0,animationPath:`character.items[${f}].animations`,idPrefix:"character"});if(y.animations&&!h&&!g&&x&&ze({animationInstances:S,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})){l.push(...S);continue}if(y.animations&&!h&&!g)continue;if(!h||h.length===0||!g){console.warn("Character item missing sprites or transformId:",y);continue}let C=yn(y,f,m),N=o.transforms[g];if(!N){console.warn("Transform not found:",g);continue}let P={type:"container",id:C,...rr(N,y),...Qr(y),children:[]};for(let T of h){let V=nl({id:`${C}-${T.id}`,item:T,resources:o});V&&P.children.push(V)}c.children.push(P),ze({animationInstances:S,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&l.push(...S)}}return e},fl=(e,r)=>{if(!uo.includes(e))throw new Error(`${r} must be one of: ${uo.join(", ")}.`)},ry=(e,r)=>{let n=!!e.resourceId||jo(e),o=e.layer??(n?void 0:r?.layer)??co;return fl(o,`Visual item "${e.id}" layer`),o},ty=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,variables:s,imageGallery:i,musicRoom:l,sceneReplay:c,runtime:u,activePersistentAnimations:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,saveSlots:I=[],visualLayer:b})=>{let{elements:x,animations:v}=e;if(r.visual&&o){let k=x.find(P=>P.id==="story");if(!k)return e;let S=r.visual.items,C=n?.visual?.items||[],N=qe({variables:s,imageGallery:i,musicRoom:l,sceneReplay:c,runtime:u,saveSlots:I,dialogueState:r.dialogue,isLineCompleted:a,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:t});b!==void 0&&fl(b,"visualLayer");for(let P of S){let T=C.find(oe=>oe.id===P.id),V=ry(P,T);if(b!==void 0&&V!==b)continue;if(Dm(P),P.text){let oe=St(o,P),me={...structuredClone(P.text),id:`visual-${P.id}`,type:"text",...rr(oe,P)};Object.assign(me,Qr(P)),k.children.push(nr(tr(me,N),o))}if(P.resourceId){let{images:oe={},videos:me={},spritesheets:Ae={}}=o,ye=Ae[P.resourceId];if(ye){let re=St(o,P),ce=Qr(P),se=Co({id:`visual-${P.id}`,resourceId:P.resourceId,spritesheet:ye,animationName:P.animationName,animationSpeed:P.animationSpeed,loop:P.loop,width:P.width,height:P.height,transform:{...rr(re,P),alpha:ce.alpha??P.alpha??1,...ce.blur?{blur:ce.blur}:{}}});se&&k.children.push(structuredClone(se))}else{let re=oe[P.resourceId]||me[P.resourceId];if(re){let ce=me[P.resourceId]!==void 0,se=St(o,P),ie={id:`visual-${P.id}`,type:ce?"video":"sprite",src:re.fileId,width:re.width,height:re.height,...rr(se,P)};Object.assign(ie,Qr(P)),ce&&(ie.loop=re.loop??!1,ie.volume=re.volume??50),k.children.push(ie)}}}let le=!!(o.spritesheets?.[P.resourceId]||o.images?.[P.resourceId]||o.videos?.[P.resourceId]);if(P.resourceId&&!le){let oe=o.particles?.[P.resourceId];oe&&k.children.push(Nm({item:P,particle:oe,resources:o}))}let G=!!o.particles?.[P.resourceId];if(P.resourceId&&!le&&!G){let{layouts:oe={}}=o,me=oe[P.resourceId];if(me){let Ae=St(o,P),ye={id:`visual-${P.id}`,type:"container",children:structuredClone(me.elements),...rr(Ae,P)};Object.assign(ye,Qr(P));let re=tr(ye,N);k.children.push(nr(wr(re,{isLineCompleted:a,skipMode:d,skipTransitionsAndAnimations:t}),o))}}let ee=za(T),Pe=za(P),Fe=sr({animationsDef:P.animations,resources:o,previousResourceId:ee,currentResourceId:Pe,previousTargetId:ee?`visual-${P.id}`:void 0,currentTargetId:Pe?`visual-${P.id}`:void 0,animationPath:`visual.items[${P.id}].animations`,idPrefix:P.id});ze({animationInstances:Fe,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:p})&&v.push(...Fe)}}return e},Jr="dialogue-character-sprite",ny=(e,{presentationState:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=Lr(e.elements);if(!l)return e;let c=r.dialogue?.character?.sprite,u=n?.dialogue?.character?.sprite,p=yt(c),m=yt(u),d=sr({animationsDef:c?.animations,resources:o,previousResourceId:m?Jr:void 0,currentResourceId:p?Jr:void 0,previousTargetId:m?Jr:void 0,currentTargetId:p?Jr:void 0,animationPath:"dialogue.character.sprite.animations",idPrefix:"dialogue-character-sprite"});if(!p)return c?.animations&&m&&ze({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e;let f=o.transforms?.[c.transformId];if(!f)return console.warn("Transform not found:",c.transformId),e;let y={type:"container",id:Jr,...rr(f),children:[]};for(let g of c.items){let h=nl({id:`${Jr}-${g.id}`,item:g,resources:o});h&&y.children.push(h)}return l.children.push(y),ze({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e},sy=(e,{presentationState:r,previousPresentationState:n,resources:o={},dialogueUIHidden:a,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:c,form:u,skipOnlyViewedLines:p,isLineCompleted:m,skipTransitionsAndAnimations:d,variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:I,activePersistentAnimations:b,saveSlots:x=[]})=>{let{elements:v,animations:k}=e;if(!r.dialogue||a)return e;let S=v.find(N=>N.id==="story");if(!S)return e;if(r.dialogue.ui&&r.dialogue.ui.resourceId){let{layouts:N={}}=o,P=N[r.dialogue.ui.resourceId];if(P){let T={elements:P.elements},V=qe({variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:I,saveSlots:x,dialogueState:r.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:m,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:c,form:u,characters:o.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:d}),le=tr(T,V),G=nr(wr(le?.elements,{isLineCompleted:m,skipMode:s,skipTransitionsAndAnimations:d}),o);if(Array.isArray(G))for(let ee of G)S.children.push(ee);else G&&S.children.push(G)}}ny(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b});let C=sr({animationsDef:r.dialogue.ui?.animations,resources:o,previousResourceId:n?.dialogue?.ui?.resourceId,currentResourceId:r.dialogue.ui?.resourceId,previousTargetId:n?.dialogue?.ui?.resourceId?"dialogue-container":void 0,currentTargetId:r.dialogue.ui?.resourceId?"dialogue-container":void 0,animationPath:"dialogue.ui.animations",idPrefix:"dialogue-ui"});return ze({animationInstances:C,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b})&&k.push(...C),e},oy=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,activePersistentAnimations:I,saveSlots:b=[]})=>{let{elements:x,animations:v}=e;if(r.choice&&o){let k=Lr(x);if(!k)return e;let S=o?.layouts?.[r.choice.resourceId];if(S&&S.elements){let N={elements:S.elements},P=tr(N,{...qe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:b,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:d,isChoiceVisible:f??!!r.choice,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:s}),choice:{items:r.choice?.items??[]}}),T=Po(nr(wr(P?.elements,{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o));if(Array.isArray(T))for(let V of T)k.children.push(V);else T&&k.children.push(T)}let C=sr({animationsDef:r.choice.animations,resources:o,previousResourceId:n?.choice?.resourceId,currentResourceId:r.choice.resourceId,previousTargetId:n?.choice?.resourceId?"choice-container":void 0,currentTargetId:r.choice.resourceId?"choice-container":void 0,animationPath:"choice.animations",idPrefix:"choice"});ze({animationInstances:C,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:I})&&v.push(...C)}return e},iy=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,activePersistentAnimations:h,saveSlots:I=[],form:b})=>{let{elements:x,animations:v}=e;if(!b?.resourceId||!o)return e;let k=Lr(x);if(!k)return e;let S=o?.layouts?.[b.resourceId];if(!S)return console.warn(`Form layout not found: ${b.resourceId}`),e;let C={id:"form-container",type:"container",x:0,y:0,children:S.elements||[]},N={...qe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:I,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,characters:o.characters||{},skipTransitionsAndAnimations:s,form:b}),form:b},P=tr(C,N),T=Eo(nr(wr(xo(P,b),{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o),b);T&&k.children.push(T);let V=sr({animationsDef:b.animations,resources:o,previousResourceId:n?.form?.resourceId,currentResourceId:b.resourceId,previousTargetId:n?.form?.resourceId?"form-container":void 0,currentTargetId:b.resourceId?"form-container":void 0,animationPath:"form.animations",idPrefix:"form"});return ze({animationInstances:V,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:h})&&v.push(...V),e},ay=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,saveSlots:y=[],skipTransitionsAndAnimations:g})=>{if(!r.control?.resourceId)return e;let h=n.controls?.[r.control.resourceId];if(!h)return e;let I=Jm(h.keyboard,h.keyup);if(I&&Object.keys(I).length>0&&(e.global.keyboard=I),!Array.isArray(h.elements)||h.elements.length===0)return e;let b=Lr(e.elements);if(!b)return e;let x={id:`control-${r.control.resourceId}`,type:"container",x:0,y:0,children:h.elements};return b.children.push(dl({container:x,resources:n,templateData:qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:n.characters||{},skipTransitionsAndAnimations:g}),isLineCompleted:l,skipMode:u,skipTransitionsAndAnimations:g})),e},ly=(e,{presentationState:r,resources:n,runtime:o,variables:a,musicRoomPlayer:t})=>{let{elements:s,audio:i}=e;if(r.bgm&&n){if(!Lr(s))return e;let c=r.bgm,u=!Array.isArray(c.sounds),p=u?c.resourceId?[{id:"default",resourceId:c.resourceId,loop:c.loop??!0,volume:c.volume,startDelayMs:c.startDelayMs??0}]:[]:c.sounds,m=!u&&c.loop===!0,d=[];if(u||In(p,"BGM sound"),m){let y=p.find(g=>g.loop===!0);if(y)throw new Error(`BGM sound "${y.id}" cannot loop inside a looping BGM channel.`)}if(p.forEach(y=>{let g=n.sounds?.[y.resourceId];if(!g)return;let h=m?{...y,loop:y.loop??!1}:y;d.push(Pn({id:Rt("bgm",u?"default":y.id),sound:h,resource:g,defaultLoop:!m}))}),d.length===0)return e;let f=qe({variables:a,runtime:o}).runtime;i.push(kn({id:Mm,volume:An(f,"musicVolume",u?Ir:c.volume??Ir),muted:c.muted,pan:c.pan,loop:u?void 0:c.loop,playback:t?.bgmPlayback,interruption:c.interruption,children:d,runtime:f}))}return e},cy=(e,{resources:r={},runtime:n,variables:o,musicRoomPlayer:a})=>{let t=r.musicRoom;if(!t||!a?.trackId||!a.playback)return e;let s=t.tracks.find(u=>u.id===a.trackId),i=s?r.sounds?.[s.soundId]:void 0;if(!s||!i)return e;let l=qe({variables:o,runtime:n}).runtime,c=Pn({id:Vm,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:i});return e.audio.push(kn({id:qm,volume:An(l,"musicVolume",Ir),children:[c],runtime:l})),e},uy=(e,{presentationState:r,resources:n,runtime:o})=>{let{audio:a}=e;if(r.sfx&&n){let t=r.sfx,s=!Array.isArray(t.channels),i=s?[{id:Um,sounds:t.items??[]}]:t.channels;s||In(i,"SFX channel"),i.forEach(l=>{let c=!s&&l.loop===!0,u=[];if(s||In(l.sounds,"SFX sound",`SFX channel "${l.id}"`),c){let p=l.sounds.find(m=>m.loop===!0);if(p)throw new Error(`SFX sound "${p.id}" cannot loop inside looping SFX channel "${l.id}".`)}l.sounds.forEach((p,m)=>{let d=n.sounds?.[p.resourceId];if(!d)return;let f=c?{...p,loop:p.loop??!1}:p;u.push(Pn({id:s?Rt("sfx","default",m,p.id):Rt("sfx",l.id,p.id),sound:f,resource:d,defaultLoop:c?!1:void 0}))}),u.length!==0&&a.push(kn({id:Rt("channel","sfx",l.id),volume:An(o,"soundVolume",l.volume??Ir),muted:l.muted,pan:l.pan,loop:s?void 0:l.loop,interruption:s?void 0:l.interruption,children:u,runtime:o}))})}return e},py=(e,r,n)=>{if(!(!r||!n))return e?.voices?.[r]?.[n]},dy=(e,{presentationState:r,resources:n,currentSceneId:o,runtime:a,variables:t})=>{let{audio:s}=e;if(!r?.voice)return e;let i=r.voice,l=!Array.isArray(i.sounds),c=l?i.resourceId?[{id:"default",resourceId:i.resourceId,loop:i.loop??!1,volume:Ir,startDelayMs:i.startDelayMs??0}]:[]:i.sounds,u=!l&&i.loop===!0,p=[];if(l||In(c,"Voice sound"),u){let d=c.find(f=>f.loop===!0);if(d)throw new Error(`Voice sound "${d.id}" cannot loop inside a looping Voice channel.`)}if(c.forEach(d=>{let f=py(n,o,d.resourceId);if(!f)return;let y=u?{...d,loop:d.loop??!1}:d;p.push(Pn({id:Rt("voice",o,l?"default":d.id),sound:y,resource:f,defaultLoop:u?!1:void 0}))}),p.length===0)return e;let m=qe({variables:t,runtime:a}).runtime;return s.push(kn({id:Fm,volume:l?i.volume??cl(m,"soundVolume"):An(m,"soundVolume",i.volume??Ir),muted:i.muted,pan:i.pan,loop:l?void 0:i.loop,interruption:i.interruption,children:p,runtime:m})),e},fy=(e,{presentationState:r,previousPresentationState:n,resources:o={},variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,saveSlots:y=[],isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:I})=>{let{elements:b,animations:x}=e;if(r.layout){let C=Lr(b);if(!C)return e;let N=o.layouts?.[r.layout.resourceId];if(!N)return e;Array.isArray(N.transitions)&&!g&&!h&&Oo({animations:x,transitions:N.transitions,defaultTargetId:`layout-${r.layout.resourceId}`,idPrefix:`layout-${r.layout.resourceId}`,animationPathPrefix:"layout"});let P={id:`layout-${r.layout.resourceId}`,type:"container",x:0,y:0,children:N.elements||[]};C.children.push(dl({container:P,resources:o,templateData:qe({variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:g,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:o.characters||{},skipTransitionsAndAnimations:h}),isLineCompleted:g,skipMode:u,skipTransitionsAndAnimations:h}))}let v=n?.layout?.resourceId,k=r.layout?.resourceId,S=sr({animationsDef:r.layout?.animations,resources:o,previousResourceId:v,currentResourceId:k,previousTargetId:v?`layout-${v}`:void 0,currentTargetId:k?`layout-${k}`:void 0,animationPath:"layout.animations",idPrefix:"layout"});return ze({animationInstances:S,isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:I})&&x.push(...S),e},my=(e,{currentLineActions:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=r?.screen?.animations;if(!l)return e;let c=n!=null,u=sr({animationsDef:l,resources:o,previousResourceId:c?"story":void 0,currentResourceId:"story",previousTargetId:c?"story":void 0,currentTargetId:"story",animationPath:"screen.animations",idPrefix:"screen"});return ze({animationInstances:u,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...u),e},yy=(e,{presentationState:r})=>{let n=Lr(e.elements);return!n||!r?.screen||Object.assign(n,al(r.screen)),e},hy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:m,form:d,overlayStack:f=[],dialogueHistory:y=[],saveSlots:g=[],screen:h,isLineCompleted:I,skipTransitionsAndAnimations:b})=>{let{elements:x,animations:v}=e;return f&&f.length>0&&f.forEach((k,S)=>{let C=n.layouts?.[k.resourceId];if(!C){console.warn(`Overlay layout not found: ${k.resourceId}`);return}Array.isArray(C.transitions)&&(b||Oo({animations:v,transitions:C.transitions,defaultTargetId:`overlayStack-${S}`,idPrefix:`overlayStack-${S}`,animationPathPrefix:`overlayStack[${S}]`}));let N={id:`overlayStack-${S}`,type:"container",x:0,y:0,children:[ul({id:`overlayStack-${S}-blocker`,screen:h}),...C.elements||[]]},P=pl(y,n.characters,o),T=qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:g,dialogueState:r?.dialogue,isLineCompleted:I,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:m,form:d,historyDialogue:P,characters:n.characters||{},skipTransitionsAndAnimations:b}),V=tr(N,T),[le,...G]=V.children||[],ee=nr(wr({...V,children:G},{isLineCompleted:I,skipMode:c,skipTransitionsAndAnimations:b}),n);x.push({...ee,children:le?[le,...ee.children||[]]:ee.children})}),e},gy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l=[],autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,dialogueHistory:g=[],screen:h,isLineCompleted:I,skipTransitionsAndAnimations:b})=>{let{elements:x,animations:v}=e;if(!y?.resourceId)return e;let k=n.layouts?.[y.resourceId];if(!k)return console.warn(`ConfirmDialog layout not found: ${y.resourceId}`),e;Array.isArray(k.transitions)&&!b&&Oo({animations:v,transitions:k.transitions,defaultTargetId:"confirmDialog",idPrefix:"confirmDialog",animationPathPrefix:"confirmDialog"});let S={id:"confirmDialog",type:"container",x:0,y:0,children:[ul({id:"confirmDialog-blocker",screen:h}),...k.elements||[]]},C=pl(g,n.characters,o),N=tr(S,qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l,dialogueState:r?.dialogue,isLineCompleted:I,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,historyDialogue:C,characters:n.characters||{},skipTransitionsAndAnimations:b})),[P,...T]=N.children||[],V=nr(wr({...N,children:T},{isLineCompleted:I,skipMode:u,skipTransitionsAndAnimations:b}),n);return x.push({...V,children:P?[P,...V.children||[]]:V.children}),e},$t=e=>(r,n)=>ty(r,{...n,visualLayer:e}),by=$t(er.BEHIND_BACKGROUND),Iy=$t(er.BEHIND_CHARACTER),wy=$t(er.BEHIND_DIALOGUE),vy=$t(er.BEHIND_CHOICE),Ay=$t(er.FOREGROUND),ml=e=>cn(Qm,[ay,by,Zm,Iy,ey,wy,sy,vy,oy,iy,fy,Ay,yy,my,ly,cy,uy,dy,hy,gy])(e);function yl(e,r=""){let n=[],o=e.length,a=0,t=0,s=-1,i=()=>{let l=0,c=0,u;do u=parseInt(e[a++],36),l+=(u&15)<<c,c+=4;while(u&16);return l};for(;a<o;){let l=s+1+i();s=l+i(),n.push([l,s,r?parseInt(r[t++],36):0])}return n}function hl(e,r,n){let o=0,a=r.length-1;for(;o<=a;){let t=o+a>>>1,s=n[t];if(e<r[t])a=t-1;else if(e>s>>>5)o=t+1;else return s&31}return 0}var gl="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",bl="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",Il="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var wl=65535,No=40960,xn=126976,kl=new Uint8Array(12288),Pl=new Uint8Array(3072),xl=new Uint8Array(2816),El,Sl;{let e=(a,t,s,i,l)=>{let c=t+a.length-1;for(let u=s<t?t:s,p=i>c?c:i;u<=p;u++)a[u-t]=l},r=new Uint32Array(320),n=new Uint32Array(320),o=0;for(let[a,t,s]of yl(gl,bl))e(kl,0,a,t,s),e(Pl,No,a,t,s),e(xl,xn,a,t,s),t>=65040&&!(a>=xn&&t<=129791)&&(r[o]=a,n[o++]=t<<5|s);El=r.slice(0,o),Sl=n.slice(0,o)}function vl(e){return e<12288?kl[e]:e<No?e<12336?e>=12330?3:0:e<12443?e===12336||e===12349?4:e>=12441?3:0:e===12951||e===12953?4:0:e<44032?Pl[e-No]:e<55204?(e-44032)%28?8:7:e<57344?e<=55238?e>=55216?13:0:e>=55243&&e<=55291?12:0:e<65024?e===64286?3:0:e<65040?3:e>=xn&&e<129792?xl[e-xn]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:hl(e,El,Sl)}var Rl=Uint8Array.from(Il,Number);function ky(e){return e===2381||e===2509||e===2637||e===2765||e===2893||e===3149||e===3405||e===4153||e===6098||e===6752||e===6980||e===7083||e===43456||e===43766||e===68159||e===69939||e===70608||e===71998||e===72263||e===72345||e===73538}function Al(e,r,n){switch(r){case 3:return e&24?n===8204?e&6:(e&24)===16||ky(n)?e&6|16:e&6|8:e&6;case 4:return 2;case 10:return e&1^1;case 14:return(e&2)<<1|e&24;default:return 8}}function*Ol(e){let r=e.length;if(r===0)return;let n=e.codePointAt(0),o=n>wl?2:1,a=vl(n),t=50200>>a&1?Al(0,a,n):0,s=0,i=n,l=a;for(;o<r;){n=e.codePointAt(o);let c=n>wl?2:1,u=vl(n),p=Rl[a<<4|u],m;p===0?m=!0:p===1?m=!1:p===2?m=!(t&1):p===3?m=!(t&4):m=(t&24)!==16,t=50200>>u&1&&(t!==0||u!==3)?Al(t,u,n):0,m&&(yield{segment:e.slice(s,o),index:s,input:e,_hd:i,_catBegin:l===15?0:l,_catEnd:a===15?0:a},s=o,i=n,l=u),o+=c,a=u}yield{segment:e.slice(s),index:s,input:e,_hd:i,_catBegin:l===15?0:l,_catEnd:a===15?0:a}}function*Cl(e){for(let r of Ol(e))yield r.segment}{let e=Ol("_");Rl._keep=[e,e.next()]}var $l=1e3,Dl=50,Py=0,_l=100,jl=50,xy=60,Ey=3,Sy=.5,Ry=2e4,Oy=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,Cy=/^\s+$/u,Nl,$y=e=>{let r=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(Cl(r)):(Nl??=new n(void 0,{granularity:"grapheme"}),Array.from(Nl.segment(r),({segment:o})=>o))},_y=e=>$y(e).reduce((r,n)=>Cy.test(n)?r+Sy:Oy.test(n)?r+Ey:r+1,0),jy=e=>2**(((Number.isFinite(e)?Math.min(_l,Math.max(Py,e)):Dl)-jl)/(_l-jl)),Ll=({text:e="",baseDelay:r=$l,speed:n=Dl}={})=>{let o=Number.isFinite(r)?Math.max(0,r):$l,a=jy(n),t=_y(e)*xy/a,s=Math.max(o,Ry);return Math.min(o+t,s)};var En={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},Ul=1,Yo=1,rt="choice",Ar="form",Dt=()=>({manual:{...En.manual},auto:{...En.auto},applyMode:En.applyMode}),zo=()=>({groupId:null,variantId:null,pageIndex:0}),Ny="music-room:player",Dy=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),On=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),Go=new Set,Ly=new Set(["groupId","variantId"]),Ty=new Set(["pageIndex"]),tt=new Set,My=new Set(["trackId"]),qy=new Set(["positionMs"]),Vy=new Set(["pageIndex"]),Ho=new Set,Fy=new Set(["sceneId"]),Uy=new Set(["pageIndex"]),Xo=()=>({pageIndex:0}),Wo=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...Dt()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Do=e=>{e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))},D=e=>{let r=he(e)?dr(e):e;return structuredClone(r)},L=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Cn=e=>{let r=e.global.audioCommandId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal audio command counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Audio command counter is exhausted");return e.global.audioCommandId=r+1,e.global.audioCommandId},Bl=e=>{let r=e.global.sceneReplayEntryId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal scene replay entry counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Scene replay entry counter is exhausted");return e.global.sceneReplayEntryId=r+1,e.global.sceneReplayEntryId},Lt=(e,r,n)=>({commandId:Cn(e),operation:r,...n===void 0?{}:{positionMs:n}}),Ko=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let r=e.global.musicRoomPlayer,n=r.bgmPlayback;r.trackId!==null&&(n={commandId:Cn(e),operation:"resume"}),e.global.musicRoomPlayer=On({bgmPlayback:n})},Yl=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error("Achievement action requires a non-empty resourceId");let n=e.projectData.resources?.achievements?.[r];if(!n)throw new Error(`Achievement resource "${r}" not found`);if(n.type!=="boolean"&&n.type!=="number")throw new Error(`Achievement resource "${r}" has invalid type "${n.type}"`);return n},zl=(e,r)=>{if(e==null||e==="")throw new Error(`${r} requires slotId`);let n=typeof e=="string"&&e.length>0,o=typeof e=="number"&&Number.isFinite(e);if(!n&&!o)throw new Error(`${r} requires a non-empty string or finite number slotId`)},nt=e=>String(e),Gl=()=>({sections:[],resources:[]}),Hl=()=>({sceneIds:[]}),By=e=>L(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):Gl(),Yy=e=>L(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):Hl(),zy=e=>Array.isArray(e)?e.map(r=>r?.text??"").join(""):"",Gy=({sectionId:e,lineId:r,content:n,dialogueState:o,characterName:a})=>({sectionId:e,lineId:r,content:n,text:zy(n),characterId:o.characterId,character:{...o.character||{},name:a},characterName:a}),Xl=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),Hy=e=>L(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,Jo=e=>{if(!L(e?.dialogueHistory))return null;let r=e.dialogueHistory;return!Array.isArray(r.entries)||!Number.isInteger(r.currentLength)||!Array.isArray(r.checkpointLengths)?null:r},Xy=e=>{if(!L(e?.dialogueHistory))return e.dialogueHistory=Xl(e?.rollback?.timeline?.length??0),e.dialogueHistory;let r=e.dialogueHistory;return Array.isArray(r.entries)||(r.entries=[]),Number.isInteger(r.currentLength)||(r.currentLength=r.entries.length),Array.isArray(r.checkpointLengths)||(r.checkpointLengths=Array(e?.rollback?.timeline?.length??0).fill(0)),r.currentLength=Math.min(Math.max(r.currentLength,0),r.entries.length),r},Qo=e=>{let r=Jo(e);return r?(r.currentLength<r.entries.length&&(r.entries=r.entries.slice(0,r.currentLength)),r):null},Wy=()=>({resourceId:void 0}),Ky=e=>{if(!L(e))return e;let r={...e};return Object.prototype.hasOwnProperty.call(r,"requireComplete")&&!Object.prototype.hasOwnProperty.call(r,"requireLineCompleted")&&(r.requireLineCompleted=r.requireComplete),delete r.requireComplete,r},or=(e,r)=>{let n=e?.story?.scenes??{};for(let[o,a]of Object.entries(n))if(a?.sections?.[r])return{sceneId:o,section:a.sections[r]};return{sceneId:void 0,section:void 0}},Wl=e=>{let r=e?.story?.scenes??{},n=new Map;for(let[o,a]of Object.entries(r)){let t=a?.sections??{};for(let s of Object.keys(t)){let i=n.get(s);if(i!==void 0)throw new Error(`Duplicate sectionId "${s}" found in scenes "${i}" and "${o}". Section IDs must be globally unique.`);n.set(s,o)}}},Kl=e=>e,Jl=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==Ul)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},Jy=(e,r={})=>{let n;try{n=Jl(r.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let o={...r,formatVersion:n,slotId:Kl(r.slotId??r.slotKey??e),savedAt:typeof r.savedAt=="number"?r.savedAt:r.date};return delete o.slotKey,delete o.date,o},Qy=(e={})=>Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Jy(r,n)])),Zy=(e,r)=>{if(!L(e)||!Array.isArray(e.operations))return null;let n=e.operations.filter(o=>{if(!L(o))return!1;let{variableId:a,op:t,value:s,roundTo:i}=o,l=r?.resources?.variables?.[a];if(!l||$e(l)||l.readonly===!0||l.scope!=="context")return!1;try{return kt(l.type,t,a),dn(l.type,t,s,a,{roundTo:i}),t!=="set"||eo(l,s)}catch{return!1}});return n.length>0?{...e,operations:n}:null},Ql=(e,r)=>{if(!Array.isArray(e))return;let n=e.flatMap(o=>{if(!L(o)||!qb(o.type))return[];if(o.type!=="updateVariable"||r===void 0)return[o];let a=Zy(o.payload,r);return a?[{...o,payload:a}]:[]});return n.length>0?n:void 0},eh=(e,r)=>{!L(e)||!Array.isArray(e.timeline)||(e.returnabilityVersion=Yo,e.timeline.forEach(n=>{if(!L(n))return;typeof n.returnable!="boolean"&&delete n.returnable;let o=Ql(n.executedActions,r);if(o){n.executedActions=o;return}delete n.executedActions}))},Tl=(e,r,n,o="viewedRegistry")=>{let a=r==="sections"?"sectionId":"resourceId";if(typeof e=="string"||typeof e=="number")return{[a]:String(e)};if(!L(e))throw new Error(`Malformed ${o}.${r}[${n}] entry.`);if(typeof e[a]!="string"||e[a].length===0)throw new Error(`Malformed ${o}.${r}[${n}] entry: missing ${a}.`);if(r==="sections"){let t={sectionId:e.sectionId};if(e.lastLineId!==void 0&&e.lastLineId!==null&&typeof e.lastLineId!="string")throw new Error(`Malformed ${o}.sections[${n}] entry: invalid lastLineId.`);return typeof e.lastLineId=="string"&&e.lastLineId.length>0&&(t.lastLineId=e.lastLineId),t}return{resourceId:e.resourceId}},rh=(e,r="viewedRegistry")=>{if(e===void 0)return Gl();if(!L(e))throw new Error(`Malformed ${r}.`);if(e.sections!==void 0&&!Array.isArray(e.sections))throw new Error(`Malformed ${r}.sections.`);if(e.resources!==void 0&&!Array.isArray(e.resources))throw new Error(`Malformed ${r}.resources.`);let n=e.sections??[],o=e.resources??[];return{sections:Object.values(Object.fromEntries(n.map((a,t)=>{let s=Tl(a,"sections",t,r);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(o.map((a,t)=>{let s=Tl(a,"resources",t,r);return[s.resourceId,s]})))}},th=(e,r="accountReplayRegistry")=>{if(e===void 0)return Hl();if(!L(e))throw new Error(`Malformed ${r}.`);if(e.sceneIds!==void 0&&!Array.isArray(e.sceneIds))throw new Error(`Malformed ${r}.sceneIds.`);let n=e.sceneIds??[];return{sceneIds:[...new Set(n.map((o,a)=>{if(typeof o!="string"||o.length===0)throw new Error(`Malformed ${r}.sceneIds[${a}] entry.`);return o}))]}},_t=(e,r,n)=>{if(!L(e))throw new Error(`Malformed save slot ${n}.`);let{sectionId:o,lineId:a}=e;if(typeof o!="string"||o.length===0)throw new Error(`Malformed save slot ${n}: missing sectionId.`);if(typeof a!="string"||a.length===0)throw new Error(`Malformed save slot ${n}: missing lineId.`);let{sceneId:t,section:s}=or(r,o);if(!s)throw new Error(`Malformed save slot ${n}: section "${o}" does not exist in projectData.`);if(!s.lines?.some(l=>l.id===a))throw new Error(`Malformed save slot ${n}: line "${a}" does not exist in section "${o}".`);return{sceneId:t,sectionId:o,lineId:a}},Zl=e=>{let r=e.story.initialSceneId,n=e.story.scenes[r],o=n.initialSectionId,a=n.sections[o];return _t({sceneId:r,sectionId:o,lineId:a.initialLineId??a.lines[0].id},e,"projectData initial pointer")},nh=e=>{try{return Zl(e),!0}catch{return!1}},sh=(e,r,n)=>{let o=e?.pointers?.read;if(!L(o)||typeof o.sectionId!="string"||o.sectionId.length===0||typeof o.lineId!="string"||o.lineId.length===0)return _t(o,r,n);try{return _t(o,r,n)}catch{let a=Array.isArray(e?.rollback?.timeline)?e.rollback.timeline:[],t=Number.isInteger(e?.rollback?.currentIndex)?Math.min(e.rollback.currentIndex,a.length-1):a.length-1;for(let s=t;s>=0;s-=1)try{return _t(a[s],r,`${n} compatibility checkpoint`)}catch{}return Zl(r)}},ec=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,Zo=(e,r)=>{let{section:n}=or(e,r?.sectionId);return n?.lines?.find(o=>o.id===r?.lineId)},oh=(e,r,n)=>{if(!L(e))throw new Error(`Malformed save slot ${n}.`);if(!Array.isArray(e.entries))throw new Error(`Malformed save slot ${n}.entries.`);if(!Number.isInteger(e.currentLength))throw new Error(`Malformed save slot ${n}.currentLength.`);if(!Array.isArray(e.checkpointLengths))throw new Error(`Malformed save slot ${n}.checkpointLengths.`);let o=[],a=[0],t=!1;if(e.entries.forEach((i,l)=>{if(!L(i))throw new Error(`Malformed save slot ${n}.entries[${l}].`);if(typeof i.sectionId!="string"||i.sectionId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing sectionId.`);if(typeof i.lineId!="string"||i.lineId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing lineId.`);if(i.appendToPrevious!==void 0&&typeof i.appendToPrevious!="boolean")throw new Error(`Malformed save slot ${n}.entries[${l}].appendToPrevious.`);let{section:c}=or(r,i.sectionId);if(!c?.lines?.some(p=>p.id===i.lineId)){t=!1,a.push(o.length);return}o.push({sectionId:i.sectionId,lineId:i.lineId,...i.appendToPrevious===!0&&t&&o.length>0?{appendToPrevious:!0}:{}}),t=!0,a.push(o.length)}),e.currentLength<0||e.currentLength>e.entries.length)throw new Error(`Malformed save slot ${n}.currentLength: must reference the retained entries.`);let s=e.checkpointLengths.map((i,l)=>{if(!Number.isInteger(i)||i<0||i>e.entries.length)throw new Error(`Malformed save slot ${n}.checkpointLengths[${l}].`);return a[i]});return{entries:o,currentLength:a[e.currentLength],checkpointLengths:s}},ih=(e,r)=>L(Zo(e,r)?.actions?.dialogue),rc=(e,r,n)=>{if(!r||r.sectionId!==n.sectionId)return!1;let{section:o}=or(e,n.sectionId),a=o?.lines?.findIndex(s=>s.id===n.lineId);return typeof a!="number"||a<=0?!1:o.lines.slice(0,a).findLast(s=>L(s.actions?.dialogue))?.id===r.lineId},ah=(e,r)=>{let n=Xl();return e.timeline.forEach(o=>{if(o.returnable!==!1&&ih(r,o)){let a=Zo(r,o),t=n.entries.at(-1),s=a.actions.dialogue.append===!0&&rc(r,t,o);n.entries.push({sectionId:o.sectionId,lineId:o.lineId,...s?{appendToPrevious:!0}:{}})}n.checkpointLengths.push(n.entries.length)}),n.currentLength=n.checkpointLengths[e.currentIndex]??0,n.entries.length>0?n:null},lh=(e,r,n,o)=>{if(n.length!==r.timeline.length)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: rollback checkpoint mapping is incomplete.");if(e.checkpointLengths.length!==o)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: expected one length per rollback checkpoint.");e.checkpointLengths=n.map(t=>t===null?e.currentLength:e.checkpointLengths[t]);let a=0;return e.checkpointLengths.forEach((t,s)=>{if(t<a)throw new Error(`Malformed save slot dialogueHistory.checkpointLengths[${s}]: lengths must be chronological.`);a=t}),e},ch=(e,r)=>{let{section:n}=or(e,r?.sectionId),o=n?.lines?.findIndex(t=>t.id===r?.lineId);if(typeof o!="number"||o<0)return null;let a=n.lines[o+1];return a?{sectionId:r.sectionId,lineId:a.id}:null},tc=(e,r,n)=>{if(typeof r?.sectionId!="string")return!1;let{section:o}=or(e,r.sectionId);return ec({sectionId:r.sectionId,lineId:o?.lines?.[0]?.id},n)},uh=new Set(["jumpToLine","rollbackByOffset","rollbackToLine","sectionTransition","resetStoryAtSection"]),et={always:"always",maybe:"maybe",never:"never"},ph=e=>{if(!Object.prototype.hasOwnProperty.call(e??{},"when"))return et.always;let r=e.when,n;if(r===null||typeof r=="boolean"||typeof r=="number")n=r;else if(L(r)&&Object.keys(r).length===1&&Object.prototype.hasOwnProperty.call(r,"literal"))n=r.literal;else return et.maybe;return n?et.always:et.never},nc=(e,r)=>{if(!Array.isArray(e?.branches))return!1;for(let n of e.branches){let o=ph(n);if(o!==et.never){if(r(n))return!0;if(o===et.always)return!1}}return!1},sc=e=>nc(e,r=>Object.entries(r?.actions??{}).some(([n,o])=>n==="conditional"?sc(o):uh.has(n))),oc=(e,r,n)=>nc(r,o=>Object.entries(o?.actions??{}).some(([a,t])=>a==="sectionTransition"?tc(e,t,n):a==="conditional"?oc(e,t,n):!1)),dh=(e,r,n)=>{if(!r)return!0;let o=Zo(n,e)?.actions;if(!L(o))return!0;if(tc(n,o.sectionTransition,r))return!1;let a=o.conditional;return a?!(oc(n,a,r)||!(o.choice?.resourceId||o.form?.resourceId)&&!sc(a)&&ec(ch(n,e),r)):!0},fh=(e,r,n)=>{if(!L(e)||!Array.isArray(e.timeline))return{rollback:Nt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let o=new WeakSet,a=[],t=e.timeline.flatMap((p,m)=>{if(!L(p))return[];try{let d=_t(p,n,`rollback.timeline[${m}]`),f=Rn({sectionId:d.sectionId,lineId:d.lineId,rollbackPolicy:p.rollbackPolicy,returnable:p.returnable});typeof p.returnable=="boolean"&&o.add(f);let y=Ql(D(p.executedActions),n);return y&&(f.executedActions=y),a.push(m),[f]}catch{return[]}});if(t.length===0)return{rollback:Nt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};e.returnabilityVersion!==Yo&&t.forEach((p,m)=>{!o.has(p)&&!dh(p,t[m+1],n)&&(p.returnable=!1)});let i=typeof e.currentIndex=="number"?Math.trunc(e.currentIndex):e.timeline.length-1,l=a.indexOf(i);l<0&&(l=t.length-1);let c=t[l];if(c?.sectionId!==r.sectionId||c?.lineId!==r.lineId){let p=t.findLastIndex(m=>m.sectionId===r.sectionId&&m.lineId===r.lineId);p>=0?l=p:(t.push(Rn({sectionId:r.sectionId,lineId:r.lineId})),a.push(null),l=t.length-1)}let u=typeof e.replayStartIndex=="number"?Math.min(Math.max(Math.trunc(e.replayStartIndex),0),l):0;return{rollback:{currentIndex:l,isRestoring:!1,replayStartIndex:u,timeline:t},sourceCheckpointIndexes:a,sourceTimelineLength:e.timeline.length}},ic=(e,r,n)=>{if(!L(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let o=ri(r),a=sh(e,r,`contexts[${n}].pointers.read`);if(e.variables!==void 0&&!L(e.variables))throw new Error(`Malformed save slot contexts[${n}].variables entry.`);if(e.runtime!==void 0&&!L(e.runtime))throw new Error(`Malformed save slot contexts[${n}].runtime entry.`);let t=e.variables?wt(D(e.variables),r.resources?.variables??{},{allowedScopes:["context"]}):{},s=Eh({loadedContextRuntime:L(e.runtime)?D(e.runtime):{}}),{rollback:i,sourceCheckpointIndexes:l,sourceTimelineLength:c}=fh(e.rollback,a,r),u=e.dialogueHistory===void 0?ah(i,r):lh(oh(e.dialogueHistory,r,`contexts[${n}].dialogueHistory`),i,l,c),p={currentPointerMode:"read",pointers:{read:a},configuration:L(e.configuration)?D(e.configuration):{},views:Array.isArray(e.views)?D(e.views):[],bgm:L(e.bgm)?D(e.bgm):{resourceId:void 0},variables:{...o,...t},...u?{dialogueHistory:u}:{},rollback:i};return s&&(p.runtime=s),p},mh=(e,r)=>{if(!L(e))throw new Error("Malformed save slot state.");if(!Array.isArray(e.contexts)||e.contexts.length===0)throw new Error("Malformed save slot state: contexts must be a non-empty array.");return{contexts:e.contexts.map((n,o)=>ic(n,r,o))}},yh=(e,r)=>{if(!L(e))throw new Error("Malformed save slot.");let n=Jl(e.formatVersion);return{...e,formatVersion:n,state:mh(e.state,r)}},Ml=(e,r,{required:n=!1}={})=>{if(e===void 0){if(n)throw new Error(`showConfirmDialog requires ${r}`);return{hideConfirmDialog:{}}}if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`showConfirmDialog ${r} must be an action object`);let o=D(e),a=o.hideConfirmDialog??{};return delete o.hideConfirmDialog,{hideConfirmDialog:a,...o}},hh=(e={})=>{if(!e?.resourceId)throw new Error("showConfirmDialog requires resourceId");return{resourceId:e.resourceId,confirmActions:Ml(e.confirmActions,"confirmActions",{required:!0}),cancelActions:Ml(e.cancelActions,"cancelActions")}},st=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},gh=e=>(L(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),ot=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},ac=e=>{if(!(!L(e)||!e.animations))return{animations:D(e.animations)}},bh=(e,r)=>{let n=ac(r);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},Ih=e=>{let r=e?.id??e?.resourceId;return typeof r=="string"&&r.length>0?r:void 0},wh=(e,r)=>{let n=e?.sectionId,o=e?.lineId;if(!(!n||!o||!r))return`${n}:${o}:${r}`},Sn=e=>String(e??""),lc=(e,r)=>{let n=Sn(r);return e?.trim===!0?n.trim():n},vh=e=>L(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,r])=>L(r)).map(([r,n])=>[r,{id:r,...D(n)}])):{},Ah=(e,r)=>{if(!r||!L(e.global.formDrafts))return;let n=e.global.formDrafts[r];return L(n)?n:void 0},cc=(e,r)=>{let n=gh(e);L(n[r])||(n[r]={values:{},touched:{},errors:{},submitted:!1});let o=n[r];return L(o.values)||(o.values={}),L(o.touched)||(o.touched={}),L(o.errors)||(o.errors={}),typeof o.submitted!="boolean"&&(o.submitted=!1),o},ei=(e,r)=>{let n=lc(e,r);return e?.required===!0&&n.length===0?"required":null},kh=({state:e,pointer:r})=>{if(!r?.sectionId||!r?.lineId)return{};let o=be({state:e},{sectionId:r.sectionId})?.lines||[],a=o.findIndex(t=>t.id===r.lineId);return a<0?{}:jr(o.slice(0,a+1).map(t=>t.actions||{}))},Ph=({state:e,form:r,pointer:n})=>{if(!r?.resourceId)return null;let o=Ih(r),a=wh(n,o);if(!o||!a)return null;let t=Ah(e,a),s=vh(r),i=$n({state:e}),l={},c=[],u={},p=!0;return Object.entries(s).forEach(([m,d])=>{let f=Sn(i?.[d.variableId]),y=Object.prototype.hasOwnProperty.call(t?.values??{},m)?Sn(t.values[m]):f,g=t?.touched?.[m]===!0,h=ei(d,y),I=t?.submitted||g?h:null,b=typeof d.maxLength=="number"?Math.max(0,Math.round(d.maxLength)):void 0,x={id:m,variableId:d.variableId,value:y,initialValue:f,valid:!h,error:I,touched:g,required:d.required===!0,trim:d.trim===!0,placeholder:d.placeholder===void 0?"":String(d.placeholder),multiline:d.multiline===!0,...b!==void 0?{maxLength:b}:{}};h&&(p=!1),l[m]=x,c.push(x),u[m]=y}),{id:o,key:a,resourceId:r.resourceId,animations:r.animations,valid:p,submitted:t?.submitted===!0,fields:l,fieldList:c,values:u,submitActions:{submitForm:{formKey:a,actions:D(r.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:D(r.cancelActions??{})}}}},ql="line",vr="interaction",Rn=({sectionId:e,lineId:r,rollbackPolicy:n,returnable:o})=>({sectionId:e,lineId:r,rollbackPolicy:n??"free",...typeof o=="boolean"?{returnable:o}:{}}),ri=e=>{let r=he(e)?dr(e):e,{contextVariableDefaultValues:n}=pn(r??{});return D(n)},uc=()=>({...D(xt)}),pc=({loadedRuntime:e,runtimeIds:r,defaults:n={},path:o})=>{if(e===void 0)return{runtimeState:D(n),hasLoadedValues:!1};if(!L(e))throw new Error(`Malformed ${o}.`);let a=D(n),t=!1;return r.forEach(s=>{e[s]!==void 0&&(a[s]=mn(s,D(e[s])),t=!0)}),{runtimeState:a,hasLoadedValues:t}},xh=({projectData:e,loadedGlobalRuntime:r={}})=>pc({loadedRuntime:r,runtimeIds:io,defaults:lo(e),path:"global.runtime"}).runtimeState,Eh=({loadedContextRuntime:e={}})=>{let{runtimeState:r,hasLoadedValues:n}=pc({loadedRuntime:e,runtimeIds:ao,defaults:uc(),path:"context.runtime"});return n?r:void 0},qr=e=>{let r=Array.isArray(e?.contexts)?e.contexts:[];return r[r.length-1]},ne=e=>{let r=qr(e);return r?.kind==="sceneReplay"&&L(r.sceneReplay)?r:null},dc=(e,r)=>{let n=r?.sceneReplay?.sceneId,o=e.projectData?.resources?.sceneReplay?.replays?.find(a=>a.sceneId===n);Object.entries(o?.initialVariables??{}).forEach(([a,t])=>{r.variables[a]=D(t)})},Sh=e=>({autoMode:e.global.autoMode,skipMode:e.global.skipMode,dialogueUIHidden:e.global.dialogueUIHidden,nextLineConfig:D(e.global.nextLineConfig),overlayStack:D(e.global.overlayStack),confirmDialog:D(e.global.confirmDialog),formDrafts:D(e.global.formDrafts),isLineCompleted:e.global.isLineCompleted,...e.global.isDialogueHistoryShowing===void 0?{}:{isDialogueHistoryShowing:e.global.isDialogueHistoryShowing},...e.global.pendingScreenTransition===void 0?{}:{pendingScreenTransition:D(e.global.pendingScreenTransition)}}),Rh=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=Dt(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},Oh=(e,r)=>{e.global.autoMode=r.autoMode,e.global.skipMode=r.skipMode,e.global.dialogueUIHidden=r.dialogueUIHidden,e.global.nextLineConfig=D(r.nextLineConfig),e.global.overlayStack=D(r.overlayStack),e.global.confirmDialog=D(r.confirmDialog),e.global.formDrafts=D(r.formDrafts),e.global.isLineCompleted=r.isLineCompleted,r.isDialogueHistoryShowing===void 0?delete e.global.isDialogueHistoryShowing:e.global.isDialogueHistoryShowing=r.isDialogueHistoryShowing,r.pendingScreenTransition===void 0?delete e.global.pendingScreenTransition:e.global.pendingScreenTransition=D(r.pendingScreenTransition),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"});let n=ve({state:e});e.global.autoMode&&e.global.isLineCompleted&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e.global.skipMode&&!n&&e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.nextLineConfig.auto?.enabled&&!n&&(e.global.nextLineConfig.auto.trigger==="fromStart"||e.global.isLineCompleted)&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:e.global.nextLineConfig.auto.delay}})},Ch=e=>e.runtime?(ao.forEach(r=>{e.runtime[r]===void 0&&(e.runtime[r]=D(xt[r]))}),e.runtime):(e.runtime=uc(),e.runtime),$h=e=>Ma(e.global),fc=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:$h(e)}})},ti=(e,r,n)=>{let o=mn(r,n);if(r in xt){let a=qr(e);if(!a)return o;let t=Ch(a);return t[r]=o,o}return e.global[r]=o,o},ni=({pointer:e,projectData:r,kind:n,sceneReplay:o})=>({...n===void 0?{}:{kind:n},...o===void 0?{}:{sceneReplay:D(o)},currentPointerMode:"read",pointers:{read:D(e)},configuration:{},views:[],bgm:Wy(),variables:ri(r),rollback:Nt({pointer:e})}),it=e=>e?(e.currentPointerMode="read",L(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,_h=(e,{queueRender:r=!0}={})=>{let n=e.contexts?.[e.contexts.length-1],o=n?.pointers?.read;if(!n||!o?.sectionId||!o?.lineId)return null;let a=ni({pointer:o,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,jh(e,{queueRender:r}),a},jh=(e,{queueRender:r=!0}={})=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,st(e),ot(e),e.global.nextLineConfig=Dt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,Ko(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),r&&e.global.pendingEffects.push({name:"render"})},mc=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},Nt=({pointer:e,replayStartIndex:r=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:r,timeline:n?[Rn({sectionId:e.sectionId,lineId:e.lineId})]:[]}},Pr=(e,r={})=>{if(e?.rollback)return mc(e.rollback),Array.isArray(e.rollback.timeline)||(e.rollback.timeline=[]),typeof e.rollback.currentIndex!="number"&&(e.rollback.currentIndex=e.rollback.timeline.length>0?e.rollback.timeline.length-1:-1),typeof e.rollback.isRestoring!="boolean"&&(e.rollback.isRestoring=!1),typeof e.rollback.replayStartIndex!="number"&&(e.rollback.replayStartIndex=0),e.rollback;let n=e?.pointers?.read;return e.rollback=Nt({pointer:n,replayStartIndex:r.compatibilityAnchor?1:0}),e.rollback},si=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=Pr(n);if(o.isRestoring)return;let a=Qo(n);o.currentIndex<o.timeline.length-1&&(o.timeline=o.timeline.slice(0,o.currentIndex+1)),o.timeline.push(Rn(r)),o.currentIndex=o.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,o.currentIndex),a.checkpointLengths.push(a.currentLength))},Nh=({state:e})=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!Array.isArray(n?.timeline)||typeof n.currentIndex!="number"?null:{checkpointIndex:n.currentIndex,checkpoint:n.timeline[n.currentIndex]??null}},Dh=({state:e},r={})=>{let{checkpointIndex:n,checkpointIdentity:o,sectionId:a,lineId:t}=r,i=e.contexts?.[e.contexts.length-1]?.rollback;if(!Number.isInteger(n)||!Array.isArray(i?.timeline)||typeof i.currentIndex!="number")return e;let l=i.timeline[n];return(he(l)?Jt(l):l)!==o||l?.sectionId!==a||l?.lineId!==t||(l.returnable=!1),e},Lh=({state:e},r={})=>{let{slotId:n,saveSlotIdentity:o,checkpointIndex:a,sectionId:t,lineId:s}=r,i=nt(n),l=e.global.saveSlots?.[i],c=he(l)?Jt(l):l;if(!l||c!==o)return e;let u=l.state?.contexts,p=Array.isArray(u)?u.at(-1):null,m=p?.rollback,d=m?.timeline?.[a];return!Number.isInteger(a)||m?.currentIndex!==a||p?.pointers?.read?.sectionId!==t||p?.pointers?.read?.lineId!==s||d?.sectionId!==t||d?.lineId!==s||(d.returnable=!1,m.returnabilityVersion=Yo,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},Th=(e,r)=>{let n=e.contexts?.[e.contexts.length-1],o=n?.rollback;if(!o||o.isRestoring||!Array.isArray(o.timeline)||typeof o.currentIndex!="number")return null;let a=r?.at(-1),t=typeof a?.checkpointIndex=="number"?a.checkpointIndex:o.currentIndex;if(t<0||t>=o.timeline.length)return null;if(typeof a?.checkpointIndex!="number"&&t<o.timeline.length-1){o.timeline=o.timeline.slice(0,t+1);let s=Qo(n);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t+1))}return o.timeline[t]??null},Mh=({state:e,rollbackActionBatchStack:r},n={})=>{let o=n?.source===ql?ql:vr,a=e.contexts?.[e.contexts.length-1],t=a?.rollback;if(!t||t.isRestoring||!Array.isArray(t.timeline)||typeof t.currentIndex!="number"||t.currentIndex<0||t.currentIndex>=t.timeline.length)return r.push({checkpointIndex:null,source:o}),e;if(t.currentIndex<t.timeline.length-1){t.timeline=t.timeline.slice(0,t.currentIndex+1);let s=Qo(a);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t.currentIndex+1))}return r.push({checkpointIndex:t.currentIndex,source:o}),e},qh=({state:e,rollbackActionBatchStack:r})=>(r.pop(),e),We=(e,r,n,o)=>{let t=o?.at(-1)?.source??vr;if(!Vb(r,t))return;let s=Th(e,o);s&&(Array.isArray(s.executedActions)||(s.executedActions=[]),s.executedActions.push({type:r,payload:D(n)}))},Vl=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=r?.operations??[];for(let{variableId:a,op:t,value:s,roundTo:i}of o){let l=e.projectData.resources?.variables?.[a],c=l?.scope,u=l?.type;if($e(l))throw new Error(`Cannot update computed variable: ${a}`);if(l?.readonly===!0)throw new Error(`Cannot update readonly variable: ${a}`);At(c,a),kt(u,t,a),dn(u,t,s,a,{roundTo:i}),c==="context"&&(n.variables[a]=fn(n.variables[a],t,s,{roundTo:i}))}},Vh=(e,r)=>{Array.isArray(r?.executedActions)&&r.executedActions.forEach(({type:n,payload:o})=>{Fb(e,n,o)})},Fh=(e,r)=>{let{sectionId:n,lineId:o}=r,s=be({state:e},{sectionId:n})?.lines?.find(i=>i.id===o)?.actions;s&&Object.entries(s).forEach(([i,l])=>{Xc(e,i,l)})},yc=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let o=Pr(n),a=o.timeline[r];if(!a)return e;e.global.autoMode&&Vt({state:e}),e.global.skipMode&&kr({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),o.isRestoring=!0,o.currentIndex=r;try{n.variables=ri(e.projectData),n.kind==="sceneReplay"&&(dc(e,n),n.sceneReplay.finishOnNextAdvance=!1,n.sceneReplay.exitOnLineCompleted=!1),delete n.runtime,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=D(En),e.global.overlayStack=[],st(e),ot(e),e.global.isLineCompleted=!0;let t=o.replayStartIndex??0;for(let l=t;l<=r;l++)l>t&&Wo(e),Fh(e,o.timeline[l]),Vh(e,o.timeline[l]);let s=it(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let i=Jo(n);i&&(i.currentLength=Math.min(i.checkpointLengths[r]??0,i.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=Bl(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{o.isRestoring=!1}return e},Uh=e=>{let{projectData:r}=e,n=e.initialAudioCommandId??0;if(!Number.isSafeInteger(n)||n<0)throw new Error("Internal initial audio command counter is invalid");let o=e.global??{},{saveSlots:a={},variables:t={},runtime:s={},accountViewedRegistry:i={},accountReplayRegistry:l={},localizationPackages:c=[{l10nId:null,language:null}]}=o;Wl(r),gt(r),bt(r),It(r),_r(r?.resources?.variables??{});let u=r.story.initialSceneId,p=r.story.scenes[u],m=p.initialSectionId,d=p.sections[m],f={sceneId:u,sectionId:m,lineId:d.initialLineId??d.lines[0].id},{globalVariablesDefaultValues:y}=pn(r),g={...y,...wt(t,r.resources?.variables??{},{allowedScopes:["device","account"],preserveUnknown:!0})};return{projectData:r,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:rh(i,"accountViewedRegistry"),accountReplayRegistry:th(l),nextLineConfig:Dt(),imageGalleryNavigation:zo(),sceneReplayNavigation:Xo(),sceneReplayEntryId:0,audioCommandId:n,musicRoomPlayer:On(),saveSlots:Qy(a),localizationPackages:D(c),overlayStack:[],variables:g,...xh({projectData:r,loadedGlobalRuntime:s})},contexts:[ni({pointer:f,projectData:r})]}},Bh=({state:e})=>e.global.overlayStack||[],Yh=({state:e})=>e.global.pendingEffects,hc=({state:e})=>e.global.skipMode,zh=({state:e})=>e.global.autoMode,gc=({state:e})=>e.global.dialogueUIHidden,bc=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(!n)return[];let o,a=L(n.dialogueHistory)&&Array.isArray(n.dialogueHistory.entries)&&Number.isInteger(n.dialogueHistory.currentLength);if(a)o=n.dialogueHistory.entries.slice(0,n.dialogueHistory.currentLength);else{let{sectionId:c,lineId:u}=n.pointers.read,p=be({state:e},{sectionId:c});if(!p?.lines||!Array.isArray(p.lines))return[];let m=p.lines.findIndex(d=>d.id===u);o=p.lines.slice(0,m+1).map(d=>({sectionId:c,lineId:d.id}))}let t=[],s=vt({variables:{...e.global?.variables??{},...qr(e)?.variables??{}},runtime:Nr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),i=new Map,l=c=>{let u=i.get(c.sectionId);if(!u){let m=be({state:e},{sectionId:c.sectionId}),d=Array.isArray(m?.lines)?m.lines:[];u={lines:d,lineIndexes:new Map(d.map((f,y)=>[f.id,y])),projections:new Map,nextLineIndex:0,presentationState:{}},i.set(c.sectionId,u)}let p=u.lineIndexes.get(c.lineId);if(p===void 0)return null;for(;u.nextLineIndex<=p;){let m=u.lines[u.nextLineIndex],d=m.actions||{};u.presentationState=jr([u.presentationState,d]),u.projections.set(m.id,{line:m,lineActions:d,dialogueState:u.presentationState.dialogue||{}}),u.nextLineIndex+=1}return u.projections.get(c.lineId)??null};for(let c of o){if(!Hy(c))continue;let u=l(c);if(!u)continue;let{line:p,lineActions:m,dialogueState:d}=u;if(!m.dialogue)continue;let f=un({characterId:d.characterId,character:d.character,characters:e.projectData.resources?.characters??{},variables:s}),y=Gy({sectionId:c.sectionId,lineId:p.id,content:m.dialogue.append===!0?d.content:m.dialogue.content,dialogueState:d,characterName:f}),g=t[t.length-1];if((a?c.appendToPrevious===!0:m.dialogue.append===!0)&&g?.sectionId===c.sectionId){t[t.length-1]={...t[t.length-1],content:y.content,text:y.text,characterId:y.characterId,character:y.character,characterName:y.characterName};continue}t.push(y)}return t},Gh=(e,r,n)=>{let o=!1;for(let a of r??[]){let{slotId:t,saveSlotIdentity:s,sectionId:i,lineId:l}=a,c=e.global.saveSlots?.[nt(t)],u=he(c)?Jt(c):c,p=c?.state?.contexts?.at(-1);!c||u!==s||p?.pointers?.read?.sectionId!==i||p?.pointers?.read?.lineId!==l||(p.dialogueHistory=D(n),o=!0)}o&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})},Hh=({state:e},r={})=>{let n=qr(e),o=n?.pointers?.read,a=Mt({state:e});if(!n||!L(a?.actions?.dialogue))return e;let t=Pr(n),s=t.timeline?.[t.currentIndex],i=s?.sectionId===o?.sectionId&&s?.lineId===o?.lineId,l=Jo(n),c=l?.checkpointLengths?.[t.currentIndex],u=t.currentIndex>0?l?.checkpointLengths?.[t.currentIndex-1]??0:0,p=l?.entries?.[l.currentLength-1];if(r.reuseExistingOccurrence===!0&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId||r.forceNewOccurrence!==!0&&i&&l&&c===l.currentLength&&c>u&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId)return e;let m=Xy(n);m.currentLength<m.entries.length&&(m.entries=m.entries.slice(0,m.currentLength));let d=a.actions.dialogue.append===!0&&r.appendToPrevious===!0&&rc(e.projectData,p,o);if(m.entries.push({sectionId:o.sectionId,lineId:o.lineId,...d?{appendToPrevious:!0}:{}}),m.currentLength=m.entries.length,i){for(;m.checkpointLengths.length<t.timeline.length;)m.checkpointLengths.push(m.checkpointLengths.at(-1)??0);m.checkpointLengths[t.currentIndex]=m.currentLength}return Gh(e,r.savedCheckpointOccurrences,m),e},Xh=({state:e})=>e.global.confirmDialog??null,Tt=({state:e},{pointer:r}={})=>{let n=r??_e({state:e})?.pointer,o=kh({state:e,pointer:n});return Ph({state:e,form:o.form,pointer:n})},Wh=({state:e},{pointer:r}={})=>!!Tt({state:e},{pointer:r}),ve=({state:e},{pointer:r}={})=>{let n=Tt({state:e},{pointer:r});if(n)return{source:Ar,formId:n.id,formKey:n.key};let o=Pc({state:e,pointer:r});return o?{source:rt,resourceId:o}:null},Kh=({state:e,registry:r},n)=>{let{sectionId:o,lineId:a}=n,s=(Array.isArray(r?.sections)?r.sections:[]).find(u=>u.sectionId===o);if(!s)return!1;if(s.lastLineId===void 0||a===void 0)return!0;let i=be({state:e},{sectionId:o});if(!i||!i.lines||!Array.isArray(i.lines))return s.lastLineId===a;let l=i.lines.findIndex(u=>u.id===s.lastLineId),c=i.lines.findIndex(u=>u.id===a);return l===-1||c===-1?s.lastLineId===a:c<=l},oi=({registry:e},r)=>{let{resourceId:n}=r;return!!(Array.isArray(e?.resources)?e.resources:[]).find(t=>t.resourceId===n)},ii=({state:e},r)=>Kh({state:e,registry:e.global.accountViewedRegistry},r),Jh=({state:e},r)=>oi({registry:e.global.accountViewedRegistry},r),jt=(e,r)=>!oi({registry:e.global.accountViewedRegistry},{resourceId:r.imageId}),ai=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),li=(e,r)=>{let n=ai(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Lo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!jt(e,r[a]))return r[a]},Qh=({state:e})=>{let r=e.projectData?.resources?.imageGallery;return r===void 0?void 0:D(r)},Ic=({state:e})=>{let r=e.projectData?.resources?.imageGallery;if(r===void 0)return null;let n=e.global.imageGalleryNavigation??zo(),o=ai(r),a=li(r,n),t=a*r.pageSize,s=r.groups.slice(t,t+r.pageSize).map(l=>({groupId:l.id,locked:jt(e,l.variants[0]),variants:l.variants.map(c=>({variantId:c.id,imageId:c.imageId,locked:jt(e,c)}))})),i=null;if(typeof n.groupId=="string"&&typeof n.variantId=="string"){let l=r.groups.findIndex(d=>d.id===n.groupId),c=r.groups[l],u=c?.variants.findIndex(d=>d.id===n.variantId),p=u===void 0||u<0?void 0:c.variants[u],m=l<0?-1:Math.floor(l/r.pageSize);p&&m===a&&!jt(e,p)&&(i={groupId:c.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:Lo(e,c.variants,u,-1)!==void 0,canMoveToNextVariant:Lo(e,c.variants,u,1)!==void 0})}return{pageGroups:s,selection:i,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},ci=(e,r)=>!oi({registry:e.global.accountViewedRegistry},{resourceId:r.soundId}),ui=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),pi=(e,r)=>{let n=ui(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},To=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!ci(e,r[a]))return r[a]},wc=e=>({trackId:e.id,soundId:e.soundId,title:e.title,artist:e.artist??null,album:e.album??null,description:e.description??null,coverImageId:e.coverImageId??null}),Zh=(e,r)=>({...wc(r),locked:ci(e,r)}),Fl=e=>{let r=Math.floor(e/1e3),n=r%60,o=Math.floor(r/60);if(o<60)return`${o}:${String(n).padStart(2,"0")}`;let a=Math.floor(o/60),t=o%60;return`${a}:${String(t).padStart(2,"0")}:${String(n).padStart(2,"0")}`},eg=({state:e})=>{let r=e.projectData?.resources?.musicRoom;return r===void 0?void 0:D(r)},vc=({state:e})=>{let r=e.projectData?.resources?.musicRoom;if(r===void 0)return null;let n=e.global.musicRoomPlayer??On(),o=ui(r),a=pi(r,n),t=a*r.pageSize,s=r.tracks.slice(t,t+r.pageSize).map(u=>Zh(e,u)),i=r.tracks.findIndex(u=>u.id===n.trackId),l=r.tracks[i],c=l?{...wc(l),canPlayPreviousTrack:To(e,r.tracks,i,-1)!==void 0,canPlayNextTrack:To(e,r.tracks,i,1)!==void 0}:null;return{pageTracks:s,selection:c,playback:c?{status:n.status,readiness:n.readiness,positionMs:n.positionMs,durationMs:n.durationMs,positionText:Fl(n.positionMs),durationText:n.durationMs===null?null:Fl(n.durationMs),canPlay:n.status!=="playing",canPause:n.status==="playing",canSeek:n.readiness==="ready"&&n.durationMs!==null}:null,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},di=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),fi=(e,r)=>{let n=di(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},rg=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;return r===void 0?void 0:D(r)},tg=({state:e})=>ne(e)!==null,ng=({state:e})=>{let r=ne(e);return r?{sceneId:r.sceneReplay.sceneId,entryId:r.sceneReplay.entryId}:null},Ac=(e,r)=>e.global.accountReplayRegistry?.sceneIds?.includes(r)===!0,kc=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;if(r===void 0)return null;let n=e.global.sceneReplayNavigation??Xo(),o=di(r),a=fi(r,n),t=a*r.pageSize,s=r.replays.slice(t,t+r.pageSize).map(l=>({sceneId:l.sceneId,title:l.title,thumbnailImageId:l.thumbnailImageId,locked:!Ac(e,l.sceneId)})),i=ne(e);return{isActive:i!==null,activeSceneId:i?.sceneReplay.sceneId??null,pageReplays:s,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},sg=({state:e})=>e.global.nextLineConfig,Pc=({state:e,pointer:r}={})=>{let n=r??_e({state:e})?.pointer;if(!n)return;let o=n?.sectionId,a=n?.lineId,s=be({state:e},{sectionId:o})?.lines||[],i=s.findIndex(c=>c.id===a);if(i<0)return;let l;for(let c of s.slice(0,i+1)){let u=c?.actions;if(u?.cleanAll&&(l=void 0),!u||!Object.prototype.hasOwnProperty.call(u,"choice")){l=void 0;continue}let p=u.choice;if(p?.resourceId){l=p.resourceId;continue}p?.animations||(l=void 0)}return l},xc=({state:e})=>!!Pc({state:e}),og=({state:e})=>structuredClone(e),ig=({state:e})=>D(e.projectData.resources?.achievements??{}),ag=({state:e},r)=>{let n=e.projectData.resources?.achievements?.[r?.resourceId];return n===void 0?void 0:D(n)},Ec=({state:e})=>e.global.saveSlots,lg=({state:e},r)=>{let n=r?.slotId,o=nt(n);return Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0},Sc=({state:e})=>D(e.global.localizationPackages),mi=({state:e})=>Nr(e),cg=({state:e},r)=>br(e,r?.runtimeId),$n=({state:e})=>{let r={...e.global?.variables??{},...qr(e)?.variables??{}};return vt({variables:r,runtime:Nr(e),variableConfigs:e.projectData.resources?.variables??{}})},_e=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(n)return{currentPointerMode:"read",pointer:n.pointers?.read}},be=({state:e},r)=>{let{sectionId:n}=r;return or(e.projectData,n).section},Mt=({state:e})=>{let r=_e({state:e});if(!r?.pointer)return;let{sectionId:n,lineId:o}=r.pointer,a=be({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(t=>t.id===o)},Rc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=be({state:e},{sectionId:r})?.lines||[],t=a.findIndex(c=>c.id===n),i=a.slice(0,t+1).map(c=>{let u=c.actions||{},p={};return Object.keys(u).forEach(m=>{p[m]=u[m]}),p});return jr(i)},ug=e=>{let r=Mt({state:e})?.actions?.dialogue;if(r?.clear===!0||!Array.isArray(r?.content))return"";let n=$n({state:e});return r.content.map(o=>`${Wr(o?.text,{variables:n})??""}`).join("")},ir=({state:e})=>Ll({text:ug(e),baseDelay:br(e,"autoForwardDelay"),speed:br(e,"autoForwardSpeed")}),pg=({state:e})=>{let r=Oc({state:e}),o=Mt({state:e})?.actions??{},a=jr([r??{},o]);return to(r??{},a??{})},dg=({state:e},{sectionId:r})=>{let n=be({state:e},{sectionId:r});if(!n?.lines)return[];let o=[],a={};for(let t of n.lines){let s=t.actions||{},i=jr([a,s]),l=to(a,i);o.push({id:t.id,changes:l,presentationState:i}),a=no(i)}return o},fg=({state:e},{sectionId:r,includePresentationState:n=!1})=>{let o=dg({state:e},{sectionId:r});return n?{lines:o}:{lines:o.map(({presentationState:a,...t})=>t)}},Oc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=be({state:e},{sectionId:r})?.lines||[],t=a.findIndex(l=>l.id===n);if(t<=0)return null;let i=a.slice(0,t).map(l=>{let c=l.actions||{},u={};return Object.keys(c).forEach(p=>{u[p]=c[p]}),u});return no(jr(i))},yi=({state:e},{slotsPerPage:r=6}={})=>{let a=((mi({state:e}).saveLoadPagination??1)-1)*r+1,t=[];for(let s=0;s<r;s++){let i=a+s,l=e.global.saveSlots&&e.global.saveSlots[nt(i)]||{};t.push({...l,slotId:i})}return{saveSlots:t}},mg=Ec,yg=yi,hg=e=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!n||!Array.isArray(n.timeline)||typeof n.currentIndex!="number"?!1:n.currentIndex>=0&&n.currentIndex<n.timeline.length-1},gg=({state:e},r={})=>{let n=Rc({state:e}),o=Oc({state:e}),a=Mt({state:e})?.actions??{},t=e.global.pendingScreenTransition,s=t?.animations?{...a,screen:D(t)}:a,i=t?.animations&&o===null?{}:o,{sectionId:l}=_e({state:e}).pointer,{sceneId:c}=or(e.projectData,l),u={...mi({state:e}),localizationPackages:Sc({state:e})},p=r?.activePersistentAnimations??[],m=r?.restoredPersistentAnimations??[],d=Tt({state:e}),f=xc({state:e}),y=Ic({state:e}),g=vc({state:e}),h=kc({state:e}),I=$n({state:e}),{saveSlots:b}=yi({state:e}),x=hg(e);return ml({presentationState:n,previousPresentationState:i,currentLineActions:s,resources:e.projectData.resources,currentSceneId:c,screen:e.projectData.screen,dialogueUIHidden:u.dialogueUIHidden,autoMode:u.autoMode,skipMode:u.skipMode,isChoiceVisible:f,isFormVisible:!!d,canRollback:Jc({state:e}),skipOnlyViewedLines:!u.skipUnseenText,isLineCompleted:u.isLineCompleted,skipTransitionsAndAnimations:!!u.skipTransitionsAndAnimations||x,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:d,dialogueHistory:bc({state:e}),saveSlots:b,variables:I,runtime:u,activePersistentAnimations:p,restoredPersistentAnimations:m,imageGallery:y,musicRoom:g,sceneReplay:h,musicRoomPlayer:D(e.global.musicRoomPlayer)})},bg=({state:e},r)=>(e.global.confirmDialog=hh(r),e.global.pendingEffects.push({name:"render"}),e),Ig=({state:e})=>(e.global.confirmDialog&&(st(e),e.global.pendingEffects.push({name:"render"})),e),wg=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.push(n),e.global.pendingEffects.push({name:"render"}),We(e,"pushOverlay",n,r),e),vg=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),We(e,"popOverlay",void 0,r),e),Ag=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.length>0&&(e.global.overlayStack[e.global.overlayStack.length-1]=n),e.global.pendingEffects.push({name:"render"}),We(e,"replaceLastOverlay",n,r),e),kg=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack=[],st(e),ot(e),e.global.pendingEffects.push({name:"render"}),We(e,"clearOverlays",void 0,r),e),Pg=(e,{activeInteraction:r})=>{e.global.autoMode&&e.global.pendingEffects.push({name:"clearAutoNextTimer"}),r&&e.global.skipMode&&e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.nextLineConfig?.auto?.enabled&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},qt=(e,r,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,bh(e,n),ot(e);let o=ve({state:e},{pointer:r}),a=o?.source===rt,t=o?.source===Ar;Pg(e,{activeInteraction:o});let s=ne(e),i={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=Bl(e);s.sceneReplay.entryId=l,i.payload={sceneReplaySceneId:s.sceneReplay.sceneId,entryId:l}}return e.global.pendingEffects.push(i),{isChoiceVisible:a,isFormVisible:t,activeInteraction:o}},_n=(e,r,n)=>{!(r?.source===rt||r?.source===Ar)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},Cc=({state:e})=>(ve({state:e})||(e.global.skipMode&&(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"})),e.global.autoMode=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.isLineCompleted&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e.global.pendingEffects.push({name:"render"})),e),Vt=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),xg=({state:e})=>{let r=e.global.autoMode;return ve({state:e})&&!r||(r?Vt({state:e}):Cc({state:e})),e},$c=({state:e})=>(ve({state:e})||(e.global.autoMode&&(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"})),e.global.skipMode=!0,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.pendingEffects.push({name:"render"})),e),kr=({state:e})=>(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),Eg=({state:e})=>{let r=hc({state:e});return ve({state:e})&&!r||(r?kr({state:e}):$c({state:e})),e},jn=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),We(e,"showDialogueUI",void 0,r),e),_c=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),We(e,"hideDialogueUI",void 0,r),e),Sg=e=>{let{state:r}=e;return gc({state:r})?jn(e):_c(e),r},xr=(e,r,n)=>(ti(e,r,n),fc(e),e.global.pendingEffects.push({name:"render"}),e),Ft=(e,r,n,o,a)=>{let t=ti(e,r,n);return e.global.pendingEffects.push({name:"render"}),We(e,o,{value:t},a),e},Rg=({state:e},r)=>xr(e,"dialogueTextSpeed",r?.value),Og=({state:e},r)=>(xr(e,"autoForwardDelay",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!ve({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e),Cg=({state:e},r)=>(xr(e,"autoForwardSpeed",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!ve({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e),$g=({state:e},r)=>xr(e,"skipUnseenText",r?.value),_g=({state:e},r)=>xr(e,"skipTransitionsAndAnimations",r?.value),jg=({state:e},r)=>xr(e,"soundVolume",r?.value),Ng=({state:e},r)=>xr(e,"musicVolume",r?.value),Dg=({state:e},r)=>xr(e,"muteAll",r?.value),Mo=({state:e,rollbackActionBatchStack:r},n)=>Ft(e,"saveLoadPagination",n?.value,"setSaveLoadPagination",r),qo=({state:e,rollbackActionBatchStack:r})=>{let n=br(e,"saveLoadPagination")+1;return Ft(e,"saveLoadPagination",n,"incrementSaveLoadPagination",r),e},Vo=({state:e,rollbackActionBatchStack:r})=>{let n=br(e,"saveLoadPagination")-1;return Ft(e,"saveLoadPagination",n,"decrementSaveLoadPagination",r),e},Fo=({state:e,rollbackActionBatchStack:r},n)=>Ft(e,"menuPage",n?.value,"setMenuPage",r),Uo=({state:e,rollbackActionBatchStack:r},n)=>Ft(e,"menuEntryPoint",n?.value,"setMenuEntryPoint",r),Lg=({state:e})=>(e.global.pendingEffects=[],e),Tg=({state:e},r)=>(e.global.pendingEffects.push(r),e),Mg=({state:e},r)=>{if(ne(e))return e;let n=r?.resourceId;return Yl(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},qg=({state:e},r)=>{if(ne(e))return e;let n=r?.resourceId,o=Yl(e,n);if(o.type!=="number")throw new Error(`Achievement resource "${n}" does not support numeric progress`);let a=r?.current;if(!Number.isInteger(a)||a<0)throw new Error(`Achievement progress for "${n}" must be a non-negative integer`);if(!Number.isInteger(o.target)||o.target<1)throw new Error(`Achievement resource "${n}" must have a positive integer target`);let t=Math.min(a,o.target);return e.global.pendingEffects.push({name:"setAchievementProgress",payload:{resourceId:n,current:t,target:o.target,completed:t>=o.target}}),e},jc=(e,{sectionId:r,resetStoryState:n=!1,screen:o})=>{let a=!!ac(o),t=be({state:e},{sectionId:r});if(!t)return console.warn(`Section not found: ${r}`),e;let s=t.lines?.[0];if(!s)return console.warn(`Section ${r} has no lines`),e;if(n&&!_h(e,{queueRender:!a}))return e;let i=ve({state:e});n&&e.global.skipMode&&kr({state:e});let l=e.contexts?.[e.contexts.length-1];if(l){let u=it(l),p=u.read;n||Mr(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||Pr(l,{compatibilityAnchor:!0}),u.read={sectionId:r,lineId:s.id},n?l.rollback=Nt({pointer:u.read}):si(e,{sectionId:r,lineId:s.id})}let{activeInteraction:c}=qt(e,l?.pointers?.read,{screenTransition:o});return _n(e,i,c),e},Vg=({state:e},r)=>{if(ne(e))throw new Error("Cannot reset the story while a scene replay is active");return jc(e,{sectionId:r?.sectionId,resetStoryState:!0,screen:r?.screen})},Nc=e=>(e.global.accountViewedRegistry=By(e.global.accountViewedRegistry),e.global.accountViewedRegistry),Nn=(e,r)=>{!Array.isArray(r)||r.length===0||e.global.pendingEffects.push({name:"applyScopedDataUpdates",payload:{updates:r.map(n=>({scope:n.scope,path:n.path,op:n.op,value:D(n.value)}))}})},Dc=(e,r)=>{Nn(e,[{scope:"account",path:"viewedRegistry",op:"markViewed",value:{sections:(Array.isArray(r?.sections)?r.sections:[]).map(n=>({sectionId:n.sectionId,...n.lastLineId===void 0?{}:{lineId:n.lastLineId}})),resources:Array.isArray(r?.resources)?r.resources:[]}}])},Fg=(e,r,{sectionId:n,lineId:o})=>{if(!n||!o)return!1;let a=L(r)?r:{};Array.isArray(a.sections)||(a.sections=[]);let t=a.sections.find(s=>s.sectionId===n);if(t){if(t.lastLineId===void 0)return!1;let s=be({state:e},{sectionId:n});if(s?.lines){let i=s.lines.findIndex(c=>c.id===t.lastLineId),l=s.lines.findIndex(c=>c.id===o);if(i===-1||l>i)return t.lastLineId===o?!1:(t.lastLineId=o,!0)}else return t.lastLineId===o?!1:(t.lastLineId=o,!0);return!1}else return a.sections.push({sectionId:n,lastLineId:o}),!0},Mr=(e,r)=>{if(ne(e)||e.global.accountViewedRegistry===void 0)return;Fg(e,Nc(e),r)&&Dc(e,{sections:[{sectionId:r.sectionId,lastLineId:r.lineId}],resources:[]})},Ug=({state:e},r)=>(Mr(e,r),e.global.pendingEffects.push({name:"render"}),e),Bg=({state:e},r)=>{if(ne(e))return e;let{resourceId:n}=r;if(e.global.accountViewedRegistry!==void 0){let o=Nc(e);o.resources.find(t=>t.resourceId===n)||(o.resources.push({resourceId:n}),Dc(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},Ke=(e,r,n)=>{if(!L(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},Bo=(e,r,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${r}`)},Dn=(e,r)=>{let n=e.global.imageGalleryNavigation;n.groupId===r.groupId&&n.variantId===r.variantId&&n.pageIndex===r.pageIndex||(e.global.imageGalleryNavigation=r,e.global.pendingEffects.push({name:"render"}))},Yg=({state:e},r)=>{let n="showImageGalleryVariant";Ke(n,r,Ly),Bo(n,"groupId",r.groupId),Object.prototype.hasOwnProperty.call(r,"variantId")&&Bo(n,"variantId",r.variantId);let o=e.projectData?.resources?.imageGallery;if(o===void 0)return e;let a=o.groups.findIndex(i=>i.id===r.groupId),t=o.groups[a];if(!t)return e;let s=r.variantId===void 0?t.variants[0]:t.variants.find(i=>i.id===r.variantId);return!s||jt(e,s)||Dn(e,{groupId:t.id,variantId:s.id,pageIndex:Math.floor(a/o.pageSize)}),e},Lc=(e,r,n,o)=>{Ke(o,r,Go);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let t=e.global.imageGalleryNavigation;if(typeof t.groupId!="string"||typeof t.variantId!="string")return e;let s=a.groups.find(c=>c.id===t.groupId),i=s?.variants.findIndex(c=>c.id===t.variantId);if(!s||i===void 0||i<0)return e;let l=Lo(e,s.variants,i,n);return l&&Dn(e,{...t,variantId:l.id}),e},zg=({state:e},r)=>Lc(e,r,-1,"moveToPreviousImageGalleryVariant"),Gg=({state:e},r)=>Lc(e,r,1,"moveToNextImageGalleryVariant"),Hg=({state:e},r)=>{if(Ke("clearImageGallerySelection",r,Go),e.projectData?.resources?.imageGallery===void 0)return e;let o=e.global.imageGalleryNavigation;return Dn(e,{groupId:null,variantId:null,pageIndex:o.pageIndex}),e},Tc=(e,r)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let o=ai(n);if(r>=o)return e;let a=e.global.imageGalleryNavigation,t=li(n,a);return r===t||Dn(e,{groupId:null,variantId:null,pageIndex:r}),e},Xg=({state:e},r)=>{if(Ke("moveToImageGalleryPage",r,Ty),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return Tc(e,r.pageIndex)},Mc=(e,r,n,o)=>{Ke(o,r,Go);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=li(a,e.global.imageGalleryNavigation)+n;return s<0?e:Tc(e,s)},Wg=({state:e},r)=>Mc(e,r,1,"moveToNextImageGalleryPage"),Kg=({state:e},r)=>Mc(e,r,-1,"moveToPreviousImageGalleryPage"),ar=(e,r,n)=>{if(!L(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},Jg=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error(`${e} requires a non-empty trackId`)},Ge=e=>{e.global.pendingEffects.push({name:"render"})},qc=(e,r)=>{let n=e.projectData.resources.musicRoom,o=e.global.musicRoomPlayer,a=o.trackId!==null,t=o.trackId===r.id,s=o.bgmPlayback;a||(s={commandId:Cn(e),operation:"pause"});let i=Lt(e,"play",0),l=n.tracks.indexOf(r),c=t?o.durationMs:null;e.global.musicRoomPlayer={trackId:r.id,pageIndex:Math.floor(l/n.pageSize),status:"playing",readiness:c===null?"loading":"ready",positionMs:0,durationMs:c,playback:i,seekFallback:null,bgmPlayback:s},Ge(e)},Qg=({state:e},r)=>{let n="playMusicRoomTrack";ar(n,r,My),Jg(n,r.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(t=>t.id===r.trackId);return!a||ci(e,a)||qc(e,a),e},Zg=({state:e},r)=>{ar("playMusicRoom",r,tt);let o=e.global.musicRoomPlayer;if(o.trackId===null||o.status==="playing")return e;let a=o.status==="ended",t=o.readiness==="error",s=o.status==="paused"&&!t?"resume":"play",i=a?0:o.positionMs;return o.playback=Lt(e,s,s==="play"?i:void 0),o.seekFallback=null,o.status="playing",o.positionMs=i,t&&(o.readiness=o.durationMs===null?"loading":"ready"),Ge(e),e},eb=({state:e},r)=>{ar("pauseMusicRoom",r,tt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status!=="playing"||(o.playback=Lt(e,"pause"),o.seekFallback=null,o.status="paused",Ge(e)),e},rb=({state:e},r)=>{ar("stopMusicRoom",r,tt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status==="stopped"&&o.positionMs===0||(o.playback=Lt(e,"stop"),o.seekFallback=null,o.status="stopped",o.positionMs=0,Ge(e)),e},tb=({state:e},r)=>{if(ar("seekMusicRoom",r,qy),typeof r.positionMs!="number"||!Number.isFinite(r.positionMs)||r.positionMs<0)throw new Error("seekMusicRoom requires a finite non-negative positionMs");let o=e.global.musicRoomPlayer;if(o.trackId===null||o.readiness!=="ready"||o.durationMs===null||r.positionMs>o.durationMs)return e;let a=Lt(e,"seek",r.positionMs);return o.seekFallback={commandId:a.commandId,status:o.status,positionMs:o.positionMs},o.playback=a,o.positionMs=r.positionMs,r.positionMs===o.durationMs?o.status="ended":o.status==="ended"&&(o.status="stopped"),Ge(e),e},Vc=(e,r,n,o)=>{ar(o,r,tt);let a=e.projectData?.resources?.musicRoom,t=e.global.musicRoomPlayer;if(!a||t.trackId===null)return e;let s=a.tracks.findIndex(l=>l.id===t.trackId);if(s<0)return e;let i=To(e,a.tracks,s,n);return i&&qc(e,i),e},nb=({state:e},r)=>Vc(e,r,-1,"playPreviousMusicRoomTrack"),sb=({state:e},r)=>Vc(e,r,1,"playNextMusicRoomTrack"),ob=({state:e},r)=>{ar("clearMusicRoomSelection",r,tt);let o=e.global.musicRoomPlayer;if(o.trackId===null)return e;let a=o.pageIndex,t={commandId:Cn(e),operation:"resume"};return e.global.musicRoomPlayer={...On({bgmPlayback:t}),pageIndex:a},Ge(e),e},Fc=(e,r)=>{let n=e.projectData?.resources?.musicRoom;if(!n||r>=ui(n))return e;let o=e.global.musicRoomPlayer,a=pi(n,o);return r===a||(o.pageIndex=r,Ge(e)),e},ib=({state:e},r)=>{if(ar("moveToMusicRoomPage",r,Vy),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return Fc(e,r.pageIndex)},Uc=(e,r,n,o)=>{ar(o,r,tt);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let t=pi(a,e.global.musicRoomPlayer)+n;return t<0?e:Fc(e,t)},ab=({state:e},r)=>Uc(e,r,1,"moveToNextMusicRoomPage"),lb=({state:e},r)=>Uc(e,r,-1,"moveToPreviousMusicRoomPage"),Tr=e=>{let r=ne(e);if(!r)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=D(r.sceneReplay.returnState),o=r.sceneReplay.sceneId;return e.global.pendingEffects=e.global.pendingEffects.filter(a=>a?.name!=="handleLineActions"||a?.payload?.sceneReplaySceneId!==o),e.contexts.pop(),Oh(e,n),e.global.pendingEffects.push({name:"render"}),!0},cb=({state:e},r)=>{let n="startSceneReplay";if(Ke(n,r,Fy),Bo(n,"sceneId",r.sceneId),ne(e))throw new Error("Cannot start a scene replay while another replay is active");let a=e.projectData?.resources?.sceneReplay?.replays.find(p=>p.sceneId===r.sceneId);if(!a||!Ac(e,a.sceneId))return e;let t=e.projectData.story.scenes[a.sceneId],s=t?.initialSectionId,i=t?.sections?.[s],l=i?.initialLineId??i?.lines?.[0]?.id;if(!i||!l||!i.lines.some(p=>p.id===l))throw new Error(`Scene replay scene "${a.sceneId}" has an invalid initial section`);let c=Sh(e);Rh(e);let u=ni({pointer:{sceneId:a.sceneId,sectionId:s,lineId:l},projectData:e.projectData,kind:"sceneReplay",sceneReplay:{sceneId:a.sceneId,entryId:0,finishOnNextAdvance:!1,exitOnLineCompleted:!1,returnState:c}});return dc(e,u),e.contexts.push(u),qt(e,u.pointers.read),e},Bc=({state:e},r)=>{Ke("finishSceneReplay",r,Ho);let o=ne(e);if(o)return o.sceneReplay.finishOnNextAdvance=!0,e;if(qr(e)?.rollback?.isRestoring===!0)return e;let t=_e({state:e})?.pointer,{sceneId:s}=or(e.projectData,t?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=Yy(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),Nn(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},ub=({state:e},r)=>(Ke("exitSceneReplay",r,Ho),Tr(e),e),Yc=(e,r)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||r>=di(n))return e;let o=fi(n,e.global.sceneReplayNavigation);return r===o||(e.global.sceneReplayNavigation.pageIndex=r,e.global.pendingEffects.push({name:"render"})),e},pb=({state:e},r)=>{if(Ke("moveToSceneReplayPage",r,Uy),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return Yc(e,r.pageIndex)},zc=(e,r,n,o)=>{Ke(o,r,Ho);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let t=fi(a,e.global.sceneReplayNavigation)+n;return t<0?e:Yc(e,t)},db=({state:e},r)=>zc(e,r,1,"moveToNextSceneReplayPage"),fb=({state:e},r)=>zc(e,r,-1,"moveToPreviousSceneReplayPage"),Ln=(e,r)=>{let n=e.global.musicRoomPlayer;return!L(r)||r.id!==Ny||n.trackId===null||!n.playback||r.commandId!==n.playback.commandId?null:n},hi=e=>typeof e.positionMs=="number"&&Number.isFinite(e.positionMs)&&e.positionMs>=0&&typeof e.durationMs=="number"&&Number.isFinite(e.durationMs)&&e.durationMs>0&&e.positionMs<=e.durationMs,Gc=(e,r,n,{readiness:o=r.readiness}={})=>((r.readiness!==o||r.positionMs!==n.positionMs||r.durationMs!==n.durationMs||r.seekFallback!==null)&&(r.readiness=o,r.positionMs=n.positionMs,r.durationMs=n.durationMs,r.seekFallback=null,Ge(e)),e),mb=({state:e},r)=>{let n=Ln(e,r);return!n||n.readiness!=="loading"||!hi(r)?e:Gc(e,n,r,{readiness:"ready"})},yb=({state:e},r)=>{let n=Ln(e,r);return!n||n.readiness!=="ready"||!hi(r)||n.status==="stopped"&&r.positionMs!==0||n.status==="ended"&&r.positionMs!==r.durationMs?e:Gc(e,n,r)},hb=({state:e},r)=>{let n=Ln(e,r);return!n||n.readiness!=="ready"||n.status!=="playing"||!hi(r)||r.positionMs!==r.durationMs||(n.status="ended",n.positionMs=r.positionMs,n.durationMs=r.durationMs,n.seekFallback=null,Ge(e)),e},gb=({state:e},r)=>{let n=Ln(e,r);if(!n||typeof r.errorCode!="string"||!Dy.has(r.errorCode)||n.readiness==="error"&&n.status==="stopped")return e;if(r.errorCode==="invalid-position"){let o=n.seekFallback;if(n.playback.operation!=="seek"||o?.commandId!==r.commandId)return e;let a=n.status!==o.status||n.positionMs!==o.positionMs;return n.status=o.status,n.positionMs=o.positionMs,n.seekFallback=null,a&&Ge(e),e}return n.readiness="error",n.status="stopped",n.positionMs=0,n.seekFallback=null,Ge(e),e},Hc=({state:e,rollbackActionBatchStack:r},n)=>{let o=Ky(n.manual),{auto:a,applyMode:t}=n,s=e.global.nextLineConfig.auto?.enabled,i=e.global.nextLineConfig.auto?.trigger,l=e.global.nextLineConfig.auto?.delay,c=e.global.nextLineConfig?.applyMode,u=e.contexts?.[e.contexts.length-1]?.rollback?.isRestoring===!0;o&&a?(e.global.nextLineConfig={manual:o,auto:a},t!==void 0?e.global.nextLineConfig.applyMode=t:c!==void 0&&(e.global.nextLineConfig.applyMode=c)):(o&&(e.global.nextLineConfig.manual=o),a&&(e.global.nextLineConfig.auto=a),t!==void 0&&(e.global.nextLineConfig.applyMode=t));let p=e.global.nextLineConfig.auto?.enabled,m=e.global.nextLineConfig.auto?.trigger,d=e.global.nextLineConfig.auto?.delay,f=ve({state:e});return!u&&(a!==void 0&&(p!==s||m!==i||d!==l))&&(!f&&p===!0&&(m==="fromStart"||e.global.isLineCompleted)?e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:d}}):s===!0&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})),e.global.pendingEffects.push({name:"render"}),We(e,"setNextLineConfig",n,r),e},bb=({state:e},r)=>{if(ne(e))throw new Error("Cannot save while a scene replay is active");let n=r?.slotId;zl(n,"saveSlot");let{thumbnailImage:o}=r,a=r?.savedAt,t=nt(n),s=D(e.contexts);s?.forEach(c=>{it(c),mc(c.rollback),eh(c.rollback,e.projectData)});let i={contexts:s},l={formatVersion:Ul,slotId:Kl(n),savedAt:typeof a=="number"?a:Date.now(),image:o,state:i};return e.global.saveSlots[t]=l,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}},{name:"render"}),e},Ib=({state:e},r)=>{if(ne(e))throw new Error("Cannot load while a scene replay is active");let n=r?.slotId;zl(n,"loadSlot");let o=nt(n),a=Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0;if(a){let t=yh(a,e.projectData);e.contexts=t.state.contexts,e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=Dt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,st(e),ot(e),Ko(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},wb=({state:e},r)=>{if(ne(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=r;Wl(n),gt(n),bt(n),It(n),_r(n?.resources?.variables??{}),lo(n);let o=nh(n),a=o?e.contexts?.map((t,s)=>ic(D(t),n,s)):void 0;if(e.projectData=n,e.global.imageGalleryNavigation=zo(),e.global.sceneReplayNavigation=Xo(),Ko(e),o){let t=n?.resources?.variables??{},{globalVariablesDefaultValues:s}=pn(n??{});Object.prototype.hasOwnProperty.call(e.global??{},"variables")&&(e.global.variables={...s,...wt(e.global.variables,t,{allowedScopes:["device","account"]})}),e.contexts=a}return st(e),ot(e),e.global.pendingEffects.push({name:"render"}),e},vb=({state:e},r)=>{let{l10nId:n,projectData:o}=r??{};if(n!==null&&(typeof n!="string"||n.length===0))throw new Error("updateLocalizationPackage requires l10nId or null");if(!L(o))throw new Error("updateLocalizationPackage requires resolved projectData internally");return e.projectData=o,ti(e,"localizationPackageId",n),fc(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.autoMode&&e.global.isLineCompleted&&!ve({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e.global.pendingEffects.push({name:"render"}),e},Ab=({state:e},r)=>{let{sectionId:n,lineId:o}=r;if(!o)return console.warn("jumpToLine requires lineId parameter"),e;let a=e.contexts[e.contexts.length-1];if(!a)return console.warn("No context available for jumpToLine"),e;let t=n||a.pointers.read?.sectionId;if(n&&!be({state:e},{sectionId:n}))return console.warn(`Section not found: ${n}`),e;let s=be({state:e},{sectionId:t});if(!s?.lines||!Array.isArray(s.lines))return console.warn(`Section ${t} has no lines`),e;if(!s.lines.find(p=>p.id===o))return console.warn(`Line not found: ${o} in section ${t}`),e;let l=ve({state:e}),c=it(a);c.read={sectionId:t,lineId:o};let{activeInteraction:u}=qt(e,c.read);return _n(e,l,u),e},kb=({state:e,rollbackActionBatchStack:r},n)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return jn({state:e,rollbackActionBatchStack:r}),e;let o=ve({state:e});if(o?.source===rt&&n?.bypassChoice!==!0||o?.source===Ar&&n?._interactionSource!==Ar)return e;if(!e.global.isLineCompleted){if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,ne(e)?.sceneReplay.exitOnLineCompleted)return Tr(e),e;let d=_e({state:e})?.pointer,f=d?.sectionId,y=d?.lineId;f&&y&&Mr(e,{sectionId:f,lineId:y}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.autoMode&&!o&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}});let g=e.global.nextLineConfig,h=be({state:e},{sectionId:f});return Array.isArray(h?.lines)&&h.lines.at(-1)?.id===y?Do(e):g?.auto?.enabled&&!o&&g.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:g.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e}if(ne(e)?.sceneReplay.finishOnNextAdvance)return Tr(e),e;let t=_e({state:e})?.pointer,s=t?.sectionId,i=be({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],c=i?.lines||[],p=c.findIndex(m=>m.id===t?.lineId)+1;if(p<c.length){let m=c[p],d=!br(e,"skipUnseenText");if(e.global.skipMode&&d&&!ii({state:e},{sectionId:s,lineId:m.id}))return kr({state:e}),e;if(l&&!l.rollback&&Pr(l,{compatibilityAnchor:!0}),l){let y=it(l),g=y.read?.lineId;g&&s&&Mr(e,{sectionId:s,lineId:g}),y.read={sectionId:s,lineId:m.id}}si(e,{sectionId:s,lineId:m.id}),Wo(e);let{activeInteraction:f}=qt(e,{sectionId:s,lineId:m.id});_n(e,o,f)}else{if(ne(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Tr(e),e;e.global.autoMode&&Vt({state:e}),e.global.skipMode&&kr({state:e}),Do(e)}return e},Pb=({state:e})=>{if(e.global.isLineCompleted)return e;if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,ne(e)?.sceneReplay.exitOnLineCompleted)return Tr(e),e;let n=ve({state:e});e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}});let o=_e({state:e})?.pointer,a=o?.sectionId,t=o?.lineId;a&&t&&Mr(e,{sectionId:a,lineId:t});let s=e.global.nextLineConfig;return s?.auto?.enabled&&!n&&s.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:s.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e},xb=({state:e},r)=>jc(e,{sectionId:r?.sectionId,screen:r?.screen}),Eb=({state:e,rollbackActionBatchStack:r},n)=>{let o=n?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!o)return jn({state:e,rollbackActionBatchStack:r}),e.global.autoMode&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e;let a=ve({state:e});if(a?.source===rt&&n?.bypassChoice!==!0||a?.source===Ar&&n?._interactionSource!==Ar||a&&a.source!==rt&&a.source!==Ar)return e;let t=ne(e);if(t?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(Tr(e),e):(t.sceneReplay.exitOnLineCompleted=!0,e);let s=_e({state:e})?.pointer,i=s?.sectionId,l=be({state:e},{sectionId:i}),c=e.contexts[e.contexts.length-1],u=l?.lines||[],m=u.findIndex(d=>d.id===s?.lineId)+1;if(m<u.length){let d=u[m],f=!br(e,"skipUnseenText");if(e.global.skipMode&&f&&!ii({state:e},{sectionId:i,lineId:d.id})&&(kr({state:e}),!o))return e;if(c&&!c.rollback&&Pr(c,{compatibilityAnchor:!0}),c){let g=it(c),h=g.read?.lineId;h&&i&&Mr(e,{sectionId:i,lineId:h}),g.read={sectionId:i,lineId:d.id}}si(e,{sectionId:i,lineId:d.id}),Wo(e);let{activeInteraction:y}=qt(e,{sectionId:i,lineId:d.id});_n(e,a,y)}else{if(ne(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Tr(e),e;e.global.autoMode&&Vt({state:e}),e.global.skipMode&&kr({state:e}),Do(e)}return e},gi=(e,r={})=>{let n=Tt({state:e});return!n||r.formKey&&r.formKey!==n.key||r.formId&&r.formId!==n.id?null:n},Sb=(e,r)=>{if(!r.variableId)throw new Error(`form field "${r.id}" requires variableId`);let n=e.projectData.resources?.variables?.[r.variableId],o=n?.scope,a=n?.type;if($e(n))throw new Error(`Cannot update computed variable: ${r.variableId}`);if(n?.readonly===!0)throw new Error(`Cannot update readonly variable: ${r.variableId}`);if(At(o,r.variableId),kt(a,"set",r.variableId),ne(e)&&o!=="context")throw new Error(`Cannot update ${o}-scoped variable "${r.variableId}" while a scene replay is active`);return{variableConfig:n,scope:o}},Rb=(e,r)=>({id:e.id,key:e.key,valid:!0,values:D(r),fields:D(e.fields),fieldList:D(e.fieldList)}),Ob=e=>{if(e.global.isLineCompleted)return;e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition;let r=_e({state:e})?.pointer,n=r?.sectionId,o=r?.lineId;n&&o&&Mr(e,{sectionId:n,lineId:o})},Cb=({state:e},r={})=>{let n=gi(e,r),o=r.field;if(!n?.fields?.[o])return e;let a=cc(e,n.key),t=Sn(r.value),s=n.fields[o],i=ei(s,t);return a.values[o]=t,a.touched[o]=!0,i?a.errors[o]=i:delete a.errors[o],e.global.pendingEffects.push({name:"render"}),e},$b=({state:e,rollbackActionBatchStack:r},n={})=>{let o=gi(e,n);if(!o)return{submitted:!1,valid:!1,reason:"inactive"};let a=cc(e,o.key);a.submitted=!0;let t={},s={};if(Object.entries(o.fields).forEach(([m,d])=>{let f=Object.prototype.hasOwnProperty.call(a.values,m)?a.values[m]:d.value,y=ei(d,f);a.touched[m]=!0,y&&(s[m]=y),t[m]=lc(d,f)}),a.errors=s,Object.keys(s).length>0)return e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!1,errors:D(s),form:{id:o.id,key:o.key,values:D(t)}};let i=e.contexts[e.contexts.length-1];if(i?.rollback?.isRestoring)return{submitted:!1,valid:!1,reason:"restoring"};let l=!1,c=[],u=[];Object.entries(o.fields).forEach(([m,d])=>{let{scope:f}=Sb(e,d),y=f==="context"?i.variables:e.global.variables,g=t[m];y[d.variableId]=fn(y[d.variableId],"set",g),f==="context"&&(l=!0,u.push({variableId:d.variableId,op:"set",value:g})),(f==="device"||f==="account")&&c.push({scope:f,path:`variables.${d.variableId}`,op:"set",value:D(y[d.variableId])})}),l&&We(e,"updateVariable",{id:"submitForm",operations:u},r),Nn(e,c);let p=Rb(o,t);return Ob(e),delete e.global.formDrafts[o.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:p}},_b=({state:e},r={})=>{let n=gi(e,r);return n?(delete e.global.formDrafts?.[n.key],e.global.pendingEffects.push({name:"render"}),{cancelled:!0,form:{id:n.id,key:n.key,values:D(n.values),fields:D(n.fields),fieldList:D(n.fieldList)}}):{cancelled:!1,reason:"inactive"}},jb=({state:e,rollbackActionBatchStack:r},n)=>{let{id:o,operations:a=[]}=n;if(!o)throw new Error("updateVariable requires an id field");if(typeof o!="string"||!/^[a-zA-Z0-9]+$/.test(o))throw new Error(`updateVariable id must be alphanumeric, got: "${o}"`);let t=e.contexts[e.contexts.length-1];if(t?.rollback?.isRestoring)return e;let s=!1,i=[],l=[];return a.forEach(({variableId:c,op:u,value:p,roundTo:m})=>{let d=e.projectData.resources?.variables?.[c],f=d?.scope,y=d?.type;if($e(d))throw new Error(`Cannot update computed variable: ${c}`);if(d?.readonly===!0)throw new Error(`Cannot update readonly variable: ${c}`);if(At(f,c),kt(y,u,c),dn(y,u,p,c,{roundTo:m}),ne(e)&&f!=="context")throw new Error(`Cannot update ${f}-scoped variable "${c}" while a scene replay is active`);let g=f==="context"?t.variables:e.global.variables;if(f==="context"){s=!0;let h={variableId:c,op:u,value:p};m!==void 0&&(h.roundTo=m),l.push(h)}g[c]=fn(g[c],u,p,{roundTo:m}),(f==="device"||f==="account")&&i.push({scope:f,path:`variables.${c}`,op:"set",value:D(g[c])})}),s&&We(e,"updateVariable",{id:o,operations:l},r),Nn(e,i),e.global.pendingEffects.push({name:"render"}),e},Ve=e=>(r,n)=>e({state:r},n),Nb=e=>({variables:vt({variables:{...e.global?.variables??{},...qr(e)?.variables??{}},runtime:Nr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:Nr(e)}),Db=e=>{if(!L(e))throw new Error("conditional action payload must be an object");if(!Array.isArray(e.branches))throw new Error("conditional action requires branches array");if(e.branches.length===0)throw new Error("conditional action requires at least one branch")},Lb=(e,r,n)=>{if(!L(e))throw new Error(`conditional branch at index ${r} must be an object`);if(!L(e.actions))throw new Error(`conditional branch at index ${r} requires actions object`);if(!Object.prototype.hasOwnProperty.call(e,"when")&&r!==n-1)throw new Error("conditional else branch must be the last branch")},Tb=(e,r)=>{Db(r);for(let n=0;n<r.branches.length;n+=1){let o=r.branches[n];if(Lb(o,n,r.branches.length),!(Object.prototype.hasOwnProperty.call(o,"when")&&!ht(o.when,Nb(e)))){Object.entries(o.actions).forEach(([t,s])=>{Xc(e,t,s)});return}}},Mb={conditional:{replayLine:Tb},updateVariable:{recordSources:[vr],replayLine:Vl,replayRecorded:Vl,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Ve(Hc)},setSaveLoadPagination:{recordSources:[vr],replayLine:Ve(Mo),replayRecorded:Ve(Mo),persistInSaveSlot:!0},incrementSaveLoadPagination:{recordSources:[vr],replayLine:Ve(qo),replayRecorded:Ve(qo),persistInSaveSlot:!0},decrementSaveLoadPagination:{recordSources:[vr],replayLine:Ve(Vo),replayRecorded:Ve(Vo),persistInSaveSlot:!0},setMenuPage:{recordSources:[vr],replayLine:Ve(Fo),replayRecorded:Ve(Fo),persistInSaveSlot:!0},setMenuEntryPoint:{recordSources:[vr],replayLine:Ve(Uo),replayRecorded:Ve(Uo),persistInSaveSlot:!0},finishSceneReplay:{replayLine:Ve(Bc)}},Tn=e=>Mb[e]??null,qb=e=>Tn(e)?.persistInSaveSlot===!0,Vb=(e,r)=>{let n=Tn(e)?.recordSources;return Array.isArray(n)&&n.includes(r)},Fb=(e,r,n)=>{Tn(r)?.replayRecorded?.(e,n)},Xc=(e,r,n)=>{Tn(r)?.replayLine?.(e,n)},Ub=e=>e?.returnable!==!1,Wc=(e,r)=>{if(r>=0)return e.currentIndex+r;let n=Math.abs(r);for(let o=e.currentIndex-1;o>=0;o-=1)if(Ub(e.timeline[o])&&(n-=1,n===0))return o;return-1},Kc=({state:e},r)=>{let{offset:n}=r;if(n===void 0||typeof n!="number")return console.warn("selectLineIdByOffset requires a numeric offset"),null;let o=e.contexts[e.contexts.length-1];if(!o)return null;let a=o.rollback;if(!Array.isArray(a?.timeline)||typeof a?.currentIndex!="number")return null;let t=Wc(a,n);if(t<0||t>=a.timeline.length)return null;let s=a.timeline[t];return{sectionId:s.sectionId,lineId:s.lineId}},Jc=({state:e})=>Kc({state:e},{offset:-1})!==null,Bb=({state:e},r)=>{let{offset:n=-1}=r;if(n>=0)throw new Error("rollbackByOffset requires a negative offset");let o=e.contexts?.[e.contexts.length-1];if(!o)return e;let a=Pr(o,{compatibilityAnchor:!o.rollback}),t=Wc(a,n);return t<0||t>=a.timeline.length?e:yc(e,t)},Yb=({state:e},r)=>{let{sectionId:n,lineId:o}=r,a=e.contexts[e.contexts.length-1];if(!a)throw new Error("No context available for rollbackToLine");let t=Pr(a,{compatibilityAnchor:!a.rollback}),i=t.timeline.slice(0,t.currentIndex+1).findLastIndex(l=>l.sectionId===n&&l.lineId===o);if(i===-1)throw new Error(`Line ${o} not found in section ${n} rollback timeline`);return i===t.currentIndex?e:yc(e,i)},Qc=e=>{let r=Uh(e),n=[];return da(r,{selectPendingEffects:Yh,selectSkipMode:hc,selectAutoMode:zh,selectIsChoiceVisible:xc,selectIsFormVisible:Wh,selectActiveInteraction:ve,selectActiveForm:Tt,selectDialogueUIHidden:gc,selectDialogueHistory:bc,selectConfirmDialog:Xh,selectIsLineAccountViewed:ii,selectIsResourceAccountViewed:Jh,selectImageGalleryConfig:Qh,selectImageGallery:Ic,selectMusicRoomConfig:eg,selectMusicRoom:vc,selectSceneReplayConfig:rg,selectSceneReplay:kc,selectIsSceneReplayActive:tg,selectActiveSceneReplayEntry:ng,selectNextLineConfig:sg,selectSystemState:og,selectAchievements:ig,selectAchievement:ag,selectSaveSlotMap:Ec,selectSaveSlots:mg,selectSaveSlot:lg,selectLocalizationPackages:Sc,selectRuntime:mi,selectRuntimeValue:cg,selectAllVariables:$n,selectCurrentPointer:_e,selectSection:be,selectCurrentLine:Mt,selectPresentationState:Rc,selectAutoForwardTimerDelay:ir,selectPresentationChanges:pg,selectSectionLineChanges:fg,selectSaveSlotPage:yi,selectCurrentPageSlots:yg,selectRenderState:gg,selectOverlayStack:Bh,selectLineIdByOffset:Kc,selectCanRollback:Jc,selectRollbackCursor:Nh,startAutoMode:Cc,stopAutoMode:Vt,toggleAutoMode:xg,startSkipMode:$c,stopSkipMode:kr,toggleSkipMode:Eg,showDialogueUI:jn,hideDialogueUI:_c,toggleDialogueUI:Sg,setDialogueTextSpeed:Rg,setAutoForwardDelay:Og,setAutoForwardSpeed:Cg,setSkipUnseenText:$g,setSkipTransitionsAndAnimations:_g,setSoundVolume:jg,setMusicVolume:Ng,setMuteAll:Dg,setSaveLoadPagination:Mo,incrementSaveLoadPagination:qo,decrementSaveLoadPagination:Vo,setMenuPage:Fo,setMenuEntryPoint:Uo,showConfirmDialog:bg,hideConfirmDialog:Ig,resetStoryAtSection:Vg,clearPendingEffects:Lg,appendPendingEffect:Tg,completeAchievement:Mg,setAchievementProgress:qg,beginRollbackActionBatch:Mh,endRollbackActionBatch:qh,markRollbackCheckpointTransient:Dh,markSavedRollbackCheckpointTransient:Lh,recordCurrentDialogueHistory:Hh,addViewedLine:Ug,addViewedResource:Bg,showImageGalleryVariant:Yg,moveToPreviousImageGalleryVariant:zg,moveToNextImageGalleryVariant:Gg,clearImageGallerySelection:Hg,moveToImageGalleryPage:Xg,moveToNextImageGalleryPage:Wg,moveToPreviousImageGalleryPage:Kg,playMusicRoomTrack:Qg,playMusicRoom:Zg,pauseMusicRoom:eb,stopMusicRoom:rb,seekMusicRoom:tb,playPreviousMusicRoomTrack:nb,playNextMusicRoomTrack:sb,clearMusicRoomSelection:ob,moveToMusicRoomPage:ib,moveToNextMusicRoomPage:ab,moveToPreviousMusicRoomPage:lb,musicRoomSoundReady:mb,musicRoomSoundProgress:yb,musicRoomSoundComplete:hb,musicRoomSoundError:gb,startSceneReplay:cb,finishSceneReplay:Bc,exitSceneReplay:ub,moveToSceneReplayPage:pb,moveToNextSceneReplayPage:db,moveToPreviousSceneReplayPage:fb,setNextLineConfig:Hc,saveSlot:bb,loadSlot:Ib,updateProjectData:wb,updateLocalizationPackage:vb,sectionTransition:xb,jumpToLine:Ab,nextLine:kb,markLineCompleted:Pb,rollbackToLine:Yb,rollbackByOffset:Bb,pushOverlay:wg,popOverlay:vg,replaceLastOverlay:Ag,clearOverlays:kg,updateFormField:Cb,submitForm:$b,cancelForm:_b,updateVariable:jb,nextLineFromSystem:Eb},{transformActionFirstArgument:a=>({state:a,rollbackActionBatchStack:n}),transformSelectorFirstArgument:a=>({state:a})})};var zb="route-engine",Gb="projectPersistence";var eu=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),ae=e=>Object.prototype.toString.call(e)==="[object Object]",Zc="variables.",Hb=(e={})=>{let r=ae(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!ae(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lineId=="string"?{lineId:n.lineId}:{}}).filter(Boolean),resources:(Array.isArray(r.resources)?r.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!ae(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},Xb=(e={})=>{let r=ae(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!ae(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lastLineId=="string"?{lastLineId:n.lastLineId}:{}}).filter(Boolean),resources:(Array.isArray(r.resources)?r.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!ae(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},Wb=(e,r)=>{let n=Xb(e),o=Hb(r),a=n.sections.map(s=>({...s})),t=n.resources.map(s=>({...s}));return o.sections.forEach(s=>{let i=a.find(l=>l.sectionId===s.sectionId);if(!i){a.push({sectionId:s.sectionId,...s.lineId===void 0?{}:{lastLineId:s.lineId}});return}if(i.lastLineId!==void 0){if(s.lineId===void 0){delete i.lastLineId;return}i.lastLineId=s.lineId}}),o.resources.forEach(s=>{t.find(l=>l.resourceId===s.resourceId)||t.push({...s})}),{sections:a,resources:t}},Kb=(e={})=>{let r=ae(e)?e:{},n=Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set(n.filter(o=>typeof o=="string"&&o.length>0))]}},Jb=(e,r)=>{let n=Kb(e),o=ae(r)&&Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...o.filter(a=>typeof a=="string"&&a.length>0)])]}},ru=(e={})=>{let r=ae(e)?e:{};return{saveSlots:ae(r.saveSlots)?r.saveSlots:{},globalDeviceVariables:ae(r.globalDeviceVariables)?r.globalDeviceVariables:{},globalAccountVariables:ae(r.globalAccountVariables)?r.globalAccountVariables:{},globalRuntime:ae(r.globalRuntime)?r.globalRuntime:{},accountViewedRegistry:ae(r.accountViewedRegistry)?r.accountViewedRegistry:{},accountReplayRegistry:ae(r.accountReplayRegistry)?r.accountReplayRegistry:{}}},Qb=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((r,n)=>{if(!ae(r))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let o=r.path?.startsWith(Zc)?r.path.slice(Zc.length):null;if(o!==null){if(!["device","account"].includes(r.scope))throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(o.length===0)throw new Error(`Malformed applyScopedDataUpdates path "${r.path}" at updates[${n}].`);if(r.op!=="set")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return{scope:r.scope,path:r.path,op:r.op,value:r.value,variableId:o}}if(r.path==="viewedRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="markViewed")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return r}if(r.path==="replayRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="unlock")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);if(!ae(r.value)||!Array.isArray(r.value.sceneIds)||r.value.sceneIds.length===0||r.value.sceneIds.some(a=>typeof a!="string"||a.length===0))throw new Error(`Malformed applyScopedDataUpdates replayRegistry value at updates[${n}].`);return{...r,value:{sceneIds:[...new Set(r.value.sceneIds)]}}}throw typeof r.path!="string"?new Error(`Malformed applyScopedDataUpdates path at updates[${n}].`):new Error(`Unsupported applyScopedDataUpdates path "${r.path}" at updates[${n}].`)})},Zb=(e,r)=>{let n={};return Qb(r).forEach(o=>{if(o.path==="viewedRegistry"){n.accountViewedRegistry=Wb(n.accountViewedRegistry??e.accountViewedRegistry,o.value);return}if(o.path==="replayRegistry"){n.accountReplayRegistry=Jb(n.accountReplayRegistry??e.accountReplayRegistry,o.value);return}let a=o.scope==="device"?"globalDeviceVariables":"globalAccountVariables";n[a]={...e[a],...n[a],[o.variableId]:o.value}}),n},at=e=>{if(typeof e!="string")return null;let r=e.trim();return r.length>0?r:null},eI=e=>{let r=at(e);if(!r)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return r},rI=e=>{let r=e??globalThis.indexedDB;if(!r)throw new Error("IndexedDB is not available in this environment.");return r},tI=({indexedDB:e,databaseName:r,objectStoreName:n})=>new Promise((o,a)=>{let t=e.open(r,1);t.onupgradeneeded=()=>{let s=t.result;s.objectStoreNames.contains(n)||s.createObjectStore(n,{keyPath:"namespace"})},t.onsuccess=()=>{o(t.result)},t.onerror=()=>{a(t.error??new Error(`Failed to open IndexedDB database "${r}".`))}}),nI=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let l=o.transaction(r,"readonly").objectStore(r).get(n);l.onsuccess=()=>{a(l.result??null)},l.onerror=()=>{t(l.error??new Error(`Failed to read persisted namespace "${n}" from IndexedDB.`))}})},Ut=async({databasePromise:e,objectStoreName:r,namespace:n,patch:o})=>{let a=await e;return new Promise((t,s)=>{let i=a.transaction(r,"readwrite"),l=i.objectStore(r),c=l.get(n),u=!1,p=d=>{u||(u=!0,s(d))},m=()=>{u||(u=!0,t())};c.onerror=()=>{p(c.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},c.onsuccess=()=>{let d=ru(c.result),f=typeof o=="function"?o(d):o,y={namespace:n,version:1,...eu(),...d,...f},g=l.put(y);g.onerror=()=>{p(g.error??new Error(`Failed to persist namespace "${n}" to IndexedDB.`))}},i.oncomplete=()=>{m()},i.onerror=()=>{p(i.error??new Error(`IndexedDB transaction failed while updating namespace "${n}".`))},i.onabort=()=>{p(i.error??new Error(`IndexedDB transaction aborted while updating namespace "${n}".`))}})},sI=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let s=o.transaction(r,"readwrite"),l=s.objectStore(r).delete(n),c=!1,u=m=>{c||(c=!0,t(m))},p=()=>{c||(c=!0,a())};l.onerror=()=>{u(l.error??new Error(`Failed to clear persisted namespace "${n}" from IndexedDB.`))},s.oncomplete=()=>{p()},s.onerror=()=>{u(s.error??new Error(`IndexedDB transaction failed while clearing namespace "${n}".`))},s.onabort=()=>{u(s.error??new Error(`IndexedDB transaction aborted while clearing namespace "${n}".`))}})},bi=(e={})=>{let{indexedDB:r,databaseName:n=zb,objectStoreName:o=Gb,namespace:a}=e,t=rI(r),s=eI(a),i=tI({indexedDB:t,databaseName:n,objectStoreName:o});return{namespace:s,load:async()=>{let l=await nI({databasePromise:i,objectStoreName:o,namespace:s});return{...eu(),...ru(l)}},clear:async()=>sI({databasePromise:i,objectStoreName:o,namespace:s}),saveSlots:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{saveSlots:ae(l)?l:{}}}),saveGlobalDeviceVariables:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalDeviceVariables:ae(l)?l:{}}}),saveGlobalAccountVariables:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalAccountVariables:ae(l)?l:{}}}),saveGlobalRuntime:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalRuntime:ae(l)?l:{}}}),applyScopedDataUpdates:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:c=>Zb(c,l)})}},oI=bi;var cu=uu;var iI={type:"object",properties:{resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"},colorId:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},lr=Object.prototype.hasOwnProperty,aI={anyOf:[{type:"null"},{type:"object",properties:{x:{type:"number",minimum:0},y:{type:"number",minimum:0},quality:{type:"number",minimum:1},kernelSize:{type:"integer",enum:[5,7,9,11,13,15]},repeatEdgePixels:{type:"boolean"}},required:["x","y"],additionalProperties:!1}]};function De(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,c=s;if(e!==null){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"null"},message:"must be null"};t===null?t=[p]:t.push(p),s++}var u=c===s;if(l=l||u,!l){let p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.x===void 0){let d={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"x"},message:"must have required property 'x'"};t===null?t=[d]:t.push(d),s++}if(e.y===void 0){let d={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"y"},message:"must have required property 'y'"};t===null?t=[d]:t.push(d),s++}for(let d in e)if(!(d==="x"||d==="y"||d==="quality"||d==="kernelSize"||d==="repeatEdgePixels")){let f={instancePath:r,schemaPath:"#/anyOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(e.x!==void 0){let d=e.x;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.y!==void 0){let d=e.y;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.quality!==void 0){let d=e.quality;if(typeof d=="number"){if(d<1||isNaN(d)){let f={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.kernelSize!==void 0){let d=e.kernelSize;if(!(typeof d=="number"&&!(d%1)&&!isNaN(d))){let f={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[f]:t.push(f),s++}if(!(d===5||d===7||d===9||d===11||d===13||d===15)){let f={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/enum",keyword:"enum",params:{allowedValues:aI.anyOf[1].properties.kernelSize.enum},message:"must be equal to one of the allowed values"};t===null?t=[f]:t.push(f),s++}}if(e.repeatEdgePixels!==void 0&&typeof e.repeatEdgePixels!="boolean"){let d={instancePath:r+"/repeatEdgePixels",schemaPath:"#/anyOf/1/properties/repeatEdgePixels/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}var u=p===s;l=l||u}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return De.errors=t,s===0}var lI={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};function qn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="continuity"||i==="speed"||i==="loop")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.continuity!==void 0){let i=e.continuity;if(typeof i!="string"){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="render"||i==="persistent")){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/enum",keyword:"enum",params:{allowedValues:lI.properties.continuity.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.speed!==void 0){let i=e.speed;if(typeof i=="number"){if(i<=0||isNaN(i)){let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return qn.errors=t,s===0}function Q(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="resourceId"||i==="playback")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.playback!==void 0&&(qn(e.playback,{instancePath:r+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(t=t===null?qn.errors:t.concat(qn.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Q.errors=t,s===0}function Vn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!lr.call(iI.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationName!==void 0&&typeof e.animationName!="string"){let i={instancePath:r+"/animationName",schemaPath:"#/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationSpeed!==void 0&&typeof e.animationSpeed!="number"){let i={instancePath:r+"/animationSpeed",schemaPath:"#/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.colorId!==void 0&&typeof e.colorId!="string"){let i={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.transformId!==void 0&&typeof e.transformId!="string"){let i={instancePath:r+"/transformId",schemaPath:"#/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.x!==void 0&&typeof e.x!="number"){let i={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.y!==void 0&&typeof e.y!="number"){let i={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(De(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.length)),e.animations!==void 0&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Vn.errors=t,s===0}function uu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Vn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Vn.errors:t.concat(Vn.errors),s=t.length),uu.errors=t,s===0}var pu=du;var cI={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0}},allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}}],additionalProperties:!1},su={type:"object",properties:{id:{type:"string",minLength:1},resourceId:{type:"string",minLength:1},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["id","resourceId"],additionalProperties:!1},Ne=nu().default;function je(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[i]:t.push(i),s++}if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!lr.call(su.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0){let i=e.id;if(typeof i=="string"){if(Ne(i)<1){let l={instancePath:r+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.resourceId!==void 0){let i=e.resourceId;if(typeof i=="string"){if(Ne(i)<1){let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:su.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return je.errors=t,s===0}function Fn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let d;if(e.resourceId===void 0&&(d="resourceId")||e.sounds===void 0&&(d="sounds")){let f={};t===null?t=[f]:t.push(f),s++}}var c=l===s;if(c){let d={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=i,t!==null&&(i?t.length=i:t=null);let u=s,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let d;if(e.startDelayMs===void 0&&(d="startDelayMs")||e.sounds===void 0&&(d="sounds")){let f={};t===null?t=[f]:t.push(f),s++}}var m=p===s;if(m){let d={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=u,t!==null&&(u?t.length=u:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let d in e)if(!(d==="sounds"||d==="resourceId"||d==="loop"||d==="interruption"||d==="volume"||d==="muted"||d==="pan"||d==="startDelayMs")){let f={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(e.sounds!==void 0){let d=e.sounds;if(Array.isArray(d)){let f=d.length;for(let y=0;y<f;y++)je(d[y],{instancePath:r+"/sounds/"+y,parentData:d,parentDataProperty:y,rootData:a})||(t=t===null?je.errors:t.concat(je.errors),s=t.length)}else{let f={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let d={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let d={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.interruption!==void 0){let d=e.interruption;if(typeof d!="string"){let f={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(!(d==="immediate"||d==="loopEnd")){let f={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:cI.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[f]:t.push(f),s++}}if(e.volume!==void 0){let d=e.volume;if(typeof d=="number"){if(d>100||isNaN(d)){let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[f]:t.push(f),s++}if(d<0||isNaN(d)){let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let d={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.pan!==void 0){let d=e.pan;if(typeof d=="number"){if(d>1||isNaN(d)){let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[f]:t.push(f),s++}if(d<-1||isNaN(d)){let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.startDelayMs!==void 0){let d=e.startDelayMs;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}}else{let d={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}return Fn.errors=t,s===0}function du(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Fn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Fn.errors:t.concat(Fn.errors),s=t.length),du.errors=t,s===0}var fu=mu;var uI={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},sprites:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{if:{required:["sprites"]},then:{required:["transformId"]}}],additionalProperties:!1}}},additionalProperties:!1};function Un(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let c={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let c=l.length;for(let u=0;u<c;u++){let p=l[u],m=s,d=!0,f=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let y;if(p.sprites===void 0&&(y="sprites")){let g={};t===null?t=[g]:t.push(g),s++}}var i=f===s;if(s=m,t!==null&&(m?t.length=m:t=null),i){let y=s;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.transformId===void 0){let h={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/then/required",keyword:"required",params:{missingProperty:"transformId"},message:"must have required property 'transformId'"};t===null?t=[h]:t.push(h),s++}var i=y===s;d=i}if(!d){let y={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[y]:t.push(y),s++}if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let y={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[y]:t.push(y),s++}for(let y in p)if(!lr.call(uI.properties.items.items.properties,y)){let g={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};t===null?t=[g]:t.push(g),s++}if(p.id!==void 0&&typeof p.id!="string"){let y={instancePath:r+"/items/"+u+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.transformId!==void 0&&typeof p.transformId!="string"){let y={instancePath:r+"/items/"+u+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.x!==void 0&&typeof p.x!="number"){let y={instancePath:r+"/items/"+u+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.y!==void 0&&typeof p.y!="number"){let y={instancePath:r+"/items/"+u+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let y={instancePath:r+"/items/"+u+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let y={instancePath:r+"/items/"+u+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let y={instancePath:r+"/items/"+u+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let y={instancePath:r+"/items/"+u+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let y={instancePath:r+"/items/"+u+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let y={instancePath:r+"/items/"+u+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let y={instancePath:r+"/items/"+u+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.opacity!==void 0){let y=p.opacity;if(typeof y=="number"){if(y>1||isNaN(y)){let g={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[g]:t.push(g),s++}if(y<0||isNaN(y)){let g={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[g]:t.push(g),s++}}if(p.blur!==void 0&&(De(p.blur,{instancePath:r+"/items/"+u+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.length)),p.sprites!==void 0){let y=p.sprites;if(Array.isArray(y)){let g=y.length;for(let h=0;h<g;h++){let I=y[h];if(I&&typeof I=="object"&&!Array.isArray(I)){for(let b in I)if(!(b==="id"||b==="resourceId"||b==="animationName"||b==="animationSpeed"||b==="loop")){let x={instancePath:r+"/items/"+u+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),s++}if(I.id!==void 0&&typeof I.id!="string"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/id",schemaPath:"#/properties/items/items/properties/sprites/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(I.resourceId!==void 0&&typeof I.resourceId!="string"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/resourceId",schemaPath:"#/properties/items/items/properties/sprites/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(I.animationName!==void 0&&typeof I.animationName!="string"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/animationName",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(I.animationSpeed!==void 0&&typeof I.animationSpeed!="number"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/animationSpeed",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(I.loop!==void 0&&typeof I.loop!="boolean"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/loop",schemaPath:"#/properties/items/items/properties/sprites/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/items/"+u+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}}}else{let g={instancePath:r+"/items/"+u+"/sprites",schemaPath:"#/properties/items/items/properties/sprites/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[g]:t.push(g),s++}}p.animations!==void 0&&(Q(p.animations,{instancePath:r+"/items/"+u+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let y={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[y]:t.push(y),s++}}}else{let c={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return Un.errors=t,s===0}function mu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Un(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Un.errors:t.concat(Un.errors),s=t.length),mu.errors=t,s===0}var yu=hu;function Bn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="items"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.items!==void 0){let i=e.items;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(u&&typeof u=="object"&&!Array.isArray(u)){for(let p in u)if(!(p==="id"||p==="content"||p==="events")){let m={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(u.id!==void 0&&typeof u.id!="string"){let p={instancePath:r+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}if(u.content!==void 0&&typeof u.content!="string"){let p={instancePath:r+"/items/"+c+"/content",schemaPath:"#/properties/items/items/properties/content/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}if(u.events!==void 0){let p=u.events;if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.click!==void 0){let m=p.click;if(!(m&&typeof m=="object"&&!Array.isArray(m))){let d={instancePath:r+"/items/"+c+"/events/click",schemaPath:"#/properties/items/items/properties/events/properties/click/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let m={instancePath:r+"/items/"+c+"/events",schemaPath:"#/properties/items/items/properties/events/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Bn.errors=t,s===0}function hu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Bn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Bn.errors:t.concat(Bn.errors),s=t.length),hu.errors=t,s===0}var gu=bu;function Yn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(i!=="mode"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.mode!==void 0&&typeof e.mode!="string"){let i={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Yn.errors=t,s===0}function bu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Yn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Yn.errors:t.concat(Yn.errors),s=t.length),bu.errors=t,s===0}var Iu=wu;function zn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="resourceId"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return zn.errors=t,s===0}function wu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return zn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?zn.errors:t.concat(zn.errors),s=t.length),wu.errors=t,s===0}var vu=Au;var ou={type:"object",properties:{ui:{type:"object",properties:{resourceId:{type:"string"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},mode:{type:"string",enum:["adv","nvl"]},content:{type:"array",items:{type:"object",properties:{text:{type:"string"}}}},textSpeed:{type:"number"},append:{type:"boolean"},characterId:{type:"string"},characterName:{type:"string"},persistCharacter:{type:"boolean"},persistSprite:{type:"boolean"},character:{type:"object",properties:{name:{type:"string"},sprite:{type:"object",properties:{transformId:{type:"string"},items:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},required:["id","resourceId"],additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1}},additionalProperties:!1},clear:{type:"boolean"},clearPage:{type:"boolean"}},additionalProperties:!1};function Gn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!lr.call(ou.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.ui!==void 0){let i=e.ui;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(!(l==="resourceId"||l==="animations")){let c={instancePath:r+"/ui",schemaPath:"#/properties/ui/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(i.resourceId!==void 0&&typeof i.resourceId!="string"){let l={instancePath:r+"/ui/resourceId",schemaPath:"#/properties/ui/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}i.animations!==void 0&&(Q(i.animations,{instancePath:r+"/ui/animations",parentData:i,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let l={instancePath:r+"/ui",schemaPath:"#/properties/ui/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.mode!==void 0){let i=e.mode;if(typeof i!="string"){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="adv"||i==="nvl")){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:ou.properties.mode.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.content!==void 0){let i=e.content;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.text!==void 0&&typeof u.text!="string"){let p={instancePath:r+"/content/"+c+"/text",schemaPath:"#/properties/content/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}}else{let p={instancePath:r+"/content/"+c,schemaPath:"#/properties/content/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/content",schemaPath:"#/properties/content/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}if(e.textSpeed!==void 0&&typeof e.textSpeed!="number"){let i={instancePath:r+"/textSpeed",schemaPath:"#/properties/textSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.append!==void 0&&typeof e.append!="boolean"){let i={instancePath:r+"/append",schemaPath:"#/properties/append/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.characterId!==void 0&&typeof e.characterId!="string"){let i={instancePath:r+"/characterId",schemaPath:"#/properties/characterId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.characterName!==void 0&&typeof e.characterName!="string"){let i={instancePath:r+"/characterName",schemaPath:"#/properties/characterName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.persistCharacter!==void 0&&typeof e.persistCharacter!="boolean"){let i={instancePath:r+"/persistCharacter",schemaPath:"#/properties/persistCharacter/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.persistSprite!==void 0&&typeof e.persistSprite!="boolean"){let i={instancePath:r+"/persistSprite",schemaPath:"#/properties/persistSprite/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.character!==void 0){let i=e.character;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(!(l==="name"||l==="sprite")){let c={instancePath:r+"/character",schemaPath:"#/properties/character/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(i.name!==void 0&&typeof i.name!="string"){let l={instancePath:r+"/character/name",schemaPath:"#/properties/character/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(i.sprite!==void 0){let l=i.sprite;if(l&&typeof l=="object"&&!Array.isArray(l)){for(let c in l)if(!(c==="transformId"||c==="items"||c==="animations")){let u={instancePath:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(l.transformId!==void 0&&typeof l.transformId!="string"){let c={instancePath:r+"/character/sprite/transformId",schemaPath:"#/properties/character/properties/sprite/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.push(c),s++}if(l.items!==void 0){let c=l.items;if(Array.isArray(c)){let u=c.length;for(let p=0;p<u;p++){let m=c[p];if(m&&typeof m=="object"&&!Array.isArray(m)){if(m.id===void 0){let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[d]:t.push(d),s++}if(m.resourceId===void 0){let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[d]:t.push(d),s++}for(let d in m)if(!(d==="id"||d==="resourceId"||d==="animationName"||d==="animationSpeed"||d==="loop")){let f={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(m.id!==void 0&&typeof m.id!="string"){let d={instancePath:r+"/character/sprite/items/"+p+"/id",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(m.resourceId!==void 0&&typeof m.resourceId!="string"){let d={instancePath:r+"/character/sprite/items/"+p+"/resourceId",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(m.animationName!==void 0&&typeof m.animationName!="string"){let d={instancePath:r+"/character/sprite/items/"+p+"/animationName",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(m.animationSpeed!==void 0&&typeof m.animationSpeed!="number"){let d={instancePath:r+"/character/sprite/items/"+p+"/animationSpeed",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[d]:t.push(d),s++}if(m.loop!==void 0&&typeof m.loop!="boolean"){let d={instancePath:r+"/character/sprite/items/"+p+"/loop",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let u={instancePath:r+"/character/sprite/items",schemaPath:"#/properties/character/properties/sprite/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[u]:t.push(u),s++}}l.animations!==void 0&&(Q(l.animations,{instancePath:r+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let c={instancePath:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r+"/character",schemaPath:"#/properties/character/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.clear!==void 0&&typeof e.clear!="boolean"){let i={instancePath:r+"/clear",schemaPath:"#/properties/clear/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.clearPage!==void 0&&typeof e.clearPage!="boolean"){let i={instancePath:r+"/clearPage",schemaPath:"#/properties/clearPage/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Gn.errors=t,s===0}function Au(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Gn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Gn.errors:t.concat(Gn.errors),s=t.length),Au.errors=t,s===0}var ku=Pu;function Hn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="id"||i==="resourceId"||i==="fields"||i==="submitActions"||i==="cancelActions"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0&&typeof e.id!="string"){let i={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fields!==void 0){let i=e.fields;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.variableId===void 0){let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/required",keyword:"required",params:{missingProperty:"variableId"},message:"must have required property 'variableId'"};t===null?t=[u]:t.push(u),s++}for(let u in c)if(!(u==="variableId"||u==="required"||u==="trim"||u==="placeholder"||u==="multiline"||u==="maxLength")){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(c.variableId!==void 0&&typeof c.variableId!="string"){let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/variableId",schemaPath:"#/properties/fields/additionalProperties/properties/variableId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}if(c.required!==void 0&&typeof c.required!="boolean"){let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/required",schemaPath:"#/properties/fields/additionalProperties/properties/required/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[u]:t.push(u),s++}if(c.trim!==void 0&&typeof c.trim!="boolean"){let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/trim",schemaPath:"#/properties/fields/additionalProperties/properties/trim/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[u]:t.push(u),s++}if(c.placeholder!==void 0&&typeof c.placeholder!="string"){let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/placeholder",schemaPath:"#/properties/fields/additionalProperties/properties/placeholder/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}if(c.multiline!==void 0&&typeof c.multiline!="boolean"){let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/multiline",schemaPath:"#/properties/fields/additionalProperties/properties/multiline/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[u]:t.push(u),s++}if(c.maxLength!==void 0){let u=c.maxLength;if(!(typeof u=="number"&&!(u%1)&&!isNaN(u))){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[p]:t.push(p),s++}if(typeof u=="number"&&(u<0||isNaN(u))){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}else{let l={instancePath:r+"/fields",schemaPath:"#/properties/fields/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.submitActions!==void 0){let i=e.submitActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/submitActions",schemaPath:"#/properties/submitActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.cancelActions!==void 0){let i=e.cancelActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/cancelActions",schemaPath:"#/properties/cancelActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Hn.errors=t,s===0}function Pu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Hn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Hn.errors:t.concat(Hn.errors),s=t.length),Pu.errors=t,s===0}var xu=Eu;function Xn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.animations!==void 0&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Xn.errors=t,s===0}function Eu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Xn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Xn.errors:t.concat(Xn.errors),s=t.length),Eu.errors=t,s===0}var Su=Ru;function Wn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="opacity"||i==="blur"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(De(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.length)),e.animations!==void 0&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Wn.errors=t,s===0}function Ru(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Wn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Wn.errors:t.concat(Wn.errors),s=t.length),Ru.errors=t,s===0}var Ou=Cu;var pI={type:"object",properties:{items:{type:"array",items:{$ref:"#/definitions/audioSound"}},channels:{type:"array",items:{type:"object",properties:{id:{type:"string",minLength:1},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}}},required:["id","sounds"],additionalProperties:!1}}},allOf:[{not:{required:["items","channels"]}}],additionalProperties:!1};function Kn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let u;if(e.items===void 0&&(u="items")||e.channels===void 0&&(u="channels")){let p={};t===null?t=[p]:t.push(p),s++}}var c=l===s;if(c){let u={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[u]:t.push(u),s++}else s=i,t!==null&&(i?t.length=i:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let u in e)if(!(u==="items"||u==="channels")){let p={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(e.items!==void 0){let u=e.items;if(Array.isArray(u)){let p=u.length;for(let m=0;m<p;m++)je(u[m],{instancePath:r+"/items/"+m,parentData:u,parentDataProperty:m,rootData:a})||(t=t===null?je.errors:t.concat(je.errors),s=t.length)}else{let p={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}if(e.channels!==void 0){let u=e.channels;if(Array.isArray(u)){let p=u.length;for(let m=0;m<p;m++){let d=u[m];if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.id===void 0){let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[f]:t.push(f),s++}if(d.sounds===void 0){let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[f]:t.push(f),s++}for(let f in d)if(!(f==="id"||f==="volume"||f==="muted"||f==="pan"||f==="loop"||f==="interruption"||f==="sounds")){let y={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(d.id!==void 0){let f=d.id;if(typeof f=="string"){if(Ne(f)<1){let y={instancePath:r+"/channels/"+m+"/id",schemaPath:"#/properties/channels/items/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/id",schemaPath:"#/properties/channels/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}}if(d.volume!==void 0){let f=d.volume;if(typeof f=="number"){if(f>100||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[y]:t.push(y),s++}if(f<0||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.muted!==void 0&&typeof d.muted!="boolean"){let f={instancePath:r+"/channels/"+m+"/muted",schemaPath:"#/properties/channels/items/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(d.pan!==void 0){let f=d.pan;if(typeof f=="number"){if(f>1||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[y]:t.push(y),s++}if(f<-1||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.loop!==void 0&&typeof d.loop!="boolean"){let f={instancePath:r+"/channels/"+m+"/loop",schemaPath:"#/properties/channels/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(d.interruption!==void 0){let f=d.interruption;if(typeof f!="string"){let y={instancePath:r+"/channels/"+m+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(!(f==="immediate"||f==="loopEnd")){let y={instancePath:r+"/channels/"+m+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/enum",keyword:"enum",params:{allowedValues:pI.properties.channels.items.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[y]:t.push(y),s++}}if(d.sounds!==void 0){let f=d.sounds;if(Array.isArray(f)){let y=f.length;for(let g=0;g<y;g++)je(f[g],{instancePath:r+"/channels/"+m+"/sounds/"+g,parentData:f,parentDataProperty:g,rootData:a})||(t=t===null?je.errors:t.concat(je.errors),s=t.length)}else{let y={instancePath:r+"/channels/"+m+"/sounds",schemaPath:"#/properties/channels/items/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[y]:t.push(y),s++}}}else{let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}}}else{let p={instancePath:r+"/channels",schemaPath:"#/properties/channels/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}return Kn.errors=t,s===0}function Cu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Kn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Kn.errors:t.concat(Kn.errors),s=t.length),Cu.errors=t,s===0}var $u=_u;var iu={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},resourceId:{type:"string"},text:{$ref:"#/definitions/visualText"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},layer:{type:"number",enum:[10,30,50,70,90]},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{not:{required:["resourceId","text"]}}],additionalProperties:!1}}},additionalProperties:!1};function Jn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,c=s;if(typeof e!="string"){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}var u=c===s;if(l=l||u,!l){let p=s;if(Array.isArray(e)){let d=e.length;for(let f=0;f<d;f++){let y=e[f];if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.text!==void 0&&typeof y.text!="string"){let g={instancePath:r+"/"+f+"/text",schemaPath:"#/anyOf/1/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.push(g),s++}if(y.textStyleId!==void 0&&typeof y.textStyleId!="string"){let g={instancePath:r+"/"+f+"/textStyleId",schemaPath:"#/anyOf/1/items/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.push(g),s++}if(y.furigana!==void 0){let g=y.furigana;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.text!==void 0&&typeof g.text!="string"){let h={instancePath:r+"/"+f+"/furigana/text",schemaPath:"#/anyOf/1/items/properties/furigana/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(g.textStyleId!==void 0&&typeof g.textStyleId!="string"){let h={instancePath:r+"/"+f+"/furigana/textStyleId",schemaPath:"#/anyOf/1/items/properties/furigana/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/"+f+"/furigana",schemaPath:"#/anyOf/1/items/properties/furigana/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}}}else{let g={instancePath:r+"/"+f,schemaPath:"#/anyOf/1/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[d]:t.push(d),s++}var u=p===s;l=l||u}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return Jn.errors=t,s===0}function Qn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s,c=s,u=!1,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let I;if(e.id===void 0&&(I="id")){let b={};t===null?t=[b]:t.push(b),s++}}var m=p===s;if(u=u||m,!u){let I=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.type===void 0&&(x="type")){let v={};t===null?t=[v]:t.push(v),s++}}var m=I===s;if(u=u||m,!u){let x=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let k;if(e.resourceId===void 0&&(k="resourceId")){let S={};t===null?t=[S]:t.push(S),s++}}var m=x===s;if(u=u||m,!u){let k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let C;if(e.transformId===void 0&&(C="transformId")){let N={};t===null?t=[N]:t.push(N),s++}}var m=k===s;if(u=u||m,!u){let C=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.x===void 0&&(P="x")){let T={};t===null?t=[T]:t.push(T),s++}}var m=C===s;if(u=u||m,!u){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let V;if(e.y===void 0&&(V="y")){let le={};t===null?t=[le]:t.push(le),s++}}var m=P===s;if(u=u||m,!u){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let G;if(e.anchorX===void 0&&(G="anchorX")){let ee={};t===null?t=[ee]:t.push(ee),s++}}var m=V===s;if(u=u||m,!u){let G=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Pe;if(e.anchorY===void 0&&(Pe="anchorY")){let Fe={};t===null?t=[Fe]:t.push(Fe),s++}}var m=G===s;if(u=u||m,!u){let Pe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let oe;if(e.scaleX===void 0&&(oe="scaleX")){let me={};t===null?t=[me]:t.push(me),s++}}var m=Pe===s;if(u=u||m,!u){let oe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Ae;if(e.scaleY===void 0&&(Ae="scaleY")){let ye={};t===null?t=[ye]:t.push(ye),s++}}var m=oe===s;if(u=u||m,!u){let Ae=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let re;if(e.rotation===void 0&&(re="rotation")){let ce={};t===null?t=[ce]:t.push(ce),s++}}var m=Ae===s;if(u=u||m,!u){let re=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let se;if(e.originX===void 0&&(se="originX")){let ie={};t===null?t=[ie]:t.push(ie),s++}}var m=re===s;if(u=u||m,!u){let se=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Ue;if(e.originY===void 0&&(Ue="originY")){let ur={};t===null?t=[ur]:t.push(ur),s++}}var m=se===s;if(u=u||m,!u){let Ue=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Oe;if(e.layer===void 0&&(Oe="layer")){let $={};t===null?t=[$]:t.push($),s++}}var m=Ue===s;if(u=u||m,!u){let Oe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let j;if(e.opacity===void 0&&(j="opacity")){let F={};t===null?t=[F]:t.push(F),s++}}var m=Oe===s;if(u=u||m,!u){let j=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let K;if(e.blur===void 0&&(K="blur")){let xe={};t===null?t=[xe]:t.push(xe),s++}}var m=j===s;if(u=u||m,!u){let K=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let pr;if(e.animations===void 0&&(pr="animations")){let Ie={};t===null?t=[Ie]:t.push(Ie),s++}}var m=K===s;u=u||m}}}}}}}}}}}}}}}}if(u)s=c,t!==null&&(c?t.length=c:t=null);else{let I={};t===null?t=[I]:t.push(I),s++}var d=l===s;if(d){let I={instancePath:r,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[I]:t.push(I),s++}else s=i,t!==null&&(i?t.length=i:t=null);let f=s,y=!1,g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.content===void 0){let I={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};t===null?t=[I]:t.push(I),s++}var h=g===s;if(y=y||h,!y){let I=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textStyleId===void 0){let x={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};t===null?t=[x]:t.push(x),s++}var h=I===s;y=y||h}if(y)s=f,t!==null&&(f?t.length=f:t=null);else{let I={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[I]:t.push(I),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(Jn(e.content,{instancePath:r+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(t=t===null?Jn.errors:t.concat(Jn.errors),s=t.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let I={instancePath:r+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[I]:t.push(I),s++}if(e.width!==void 0&&typeof e.width!="number"){let I={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),s++}if(e.height!==void 0&&typeof e.height!="number"){let I={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[I]:t.push(I),s++}return Qn.errors=t,s===0}function Zn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let c={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let c=l.length;for(let u=0;u<c;u++){let p=l[u],m=s,d=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let f;if(p.resourceId===void 0&&(f="resourceId")||p.text===void 0&&(f="text")){let y={};t===null?t=[y]:t.push(y),s++}}var i=d===s;if(i){let f={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[f]:t.push(f),s++}else s=m,t!==null&&(m?t.length=m:t=null);if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let f={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[f]:t.push(f),s++}for(let f in p)if(!lr.call(iu.properties.items.items.properties,f)){let y={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(p.id!==void 0&&typeof p.id!="string"){let f={instancePath:r+"/items/"+u+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.animationName!==void 0&&typeof p.animationName!="string"){let f={instancePath:r+"/items/"+u+"/animationName",schemaPath:"#/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.animationSpeed!==void 0&&typeof p.animationSpeed!="number"){let f={instancePath:r+"/items/"+u+"/animationSpeed",schemaPath:"#/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.resourceId!==void 0&&typeof p.resourceId!="string"){let f={instancePath:r+"/items/"+u+"/resourceId",schemaPath:"#/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.text!==void 0&&(Qn(p.text,{instancePath:r+"/items/"+u+"/text",parentData:p,parentDataProperty:"text",rootData:a})||(t=t===null?Qn.errors:t.concat(Qn.errors),s=t.length)),p.transformId!==void 0&&typeof p.transformId!="string"){let f={instancePath:r+"/items/"+u+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.x!==void 0&&typeof p.x!="number"){let f={instancePath:r+"/items/"+u+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.y!==void 0&&typeof p.y!="number"){let f={instancePath:r+"/items/"+u+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let f={instancePath:r+"/items/"+u+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let f={instancePath:r+"/items/"+u+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let f={instancePath:r+"/items/"+u+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let f={instancePath:r+"/items/"+u+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let f={instancePath:r+"/items/"+u+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let f={instancePath:r+"/items/"+u+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let f={instancePath:r+"/items/"+u+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.layer!==void 0){let f=p.layer;if(typeof f!="number"){let y={instancePath:r+"/items/"+u+"/layer",schemaPath:"#/properties/items/items/properties/layer/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(!(f===10||f===30||f===50||f===70||f===90)){let y={instancePath:r+"/items/"+u+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:iu.properties.items.items.properties.layer.enum},message:"must be equal to one of the allowed values"};t===null?t=[y]:t.push(y),s++}}if(p.opacity!==void 0){let f=p.opacity;if(typeof f=="number"){if(f>1||isNaN(f)){let y={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[y]:t.push(y),s++}if(f<0||isNaN(f)){let y={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}p.blur!==void 0&&(De(p.blur,{instancePath:r+"/items/"+u+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.length)),p.animations!==void 0&&(Q(p.animations,{instancePath:r+"/items/"+u+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let f={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}}}else{let c={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return Zn.errors=t,s===0}function _u(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Zn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Zn.errors:t.concat(Zn.errors),s=t.length),_u.errors=t,s===0}var ju=Nu;var dI={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},startDelayMs:{type:"number",minimum:0}},anyOf:[{required:["resourceId"]},{required:["sounds"]}],allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}}],additionalProperties:!1};function es(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.resourceId===void 0){let h={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[h]:t.push(h),s++}var u=c===s;if(l=l||u,!l){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.sounds===void 0){let b={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[b]:t.push(b),s++}var u=h===s;l=l||u}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let h={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[h]:t.push(h),s++}let p=s,m=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.resourceId===void 0&&(h="resourceId")||e.sounds===void 0&&(h="sounds")){let I={};t===null?t=[I]:t.push(I),s++}}var d=m===s;if(d){let h={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=p,t!==null&&(p?t.length=p:t=null);let f=s,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.startDelayMs===void 0&&(h="startDelayMs")||e.sounds===void 0&&(h="sounds")){let I={};t===null?t=[I]:t.push(I),s++}}var g=y===s;if(g){let h={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=f,t!==null&&(f?t.length=f:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let h in e)if(!(h==="sounds"||h==="resourceId"||h==="volume"||h==="muted"||h==="pan"||h==="loop"||h==="interruption"||h==="startDelayMs")){let I={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};t===null?t=[I]:t.push(I),s++}if(e.sounds!==void 0){let h=e.sounds;if(Array.isArray(h)){let I=h.length;for(let b=0;b<I;b++)je(h[b],{instancePath:r+"/sounds/"+b,parentData:h,parentDataProperty:b,rootData:a})||(t=t===null?je.errors:t.concat(je.errors),s=t.length)}else{let I={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[I]:t.push(I),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let h={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(e.volume!==void 0){let h=e.volume;if(typeof h=="number"){if(h>100||isNaN(h)){let I={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[I]:t.push(I),s++}if(h<0||isNaN(h)){let I={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let h={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.pan!==void 0){let h=e.pan;if(typeof h=="number"){if(h>1||isNaN(h)){let I={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[I]:t.push(I),s++}if(h<-1||isNaN(h)){let I={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let h={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.interruption!==void 0){let h=e.interruption;if(typeof h!="string"){let I={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[I]:t.push(I),s++}if(!(h==="immediate"||h==="loopEnd")){let I={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:dI.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[I]:t.push(I),s++}}if(e.startDelayMs!==void 0){let h=e.startDelayMs;if(typeof h=="number"){if(h<0||isNaN(h)){let I={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),s++}}}else{let h={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}return es.errors=t,s===0}function Nu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return es(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?es.errors:t.concat(es.errors),s=t.length),Nu.errors=t,s===0}var Du=Lu;var fI={type:"object",properties:{type:{type:"string",enum:["boolean","number"]},target:{type:"integer",minimum:1},name:{type:"string",minLength:1},description:{type:"string",minLength:1},lockedName:{type:"string",minLength:1},lockedDescription:{type:"string",minLength:1},hidden:{type:"boolean"}},required:["type","name","description"],allOf:[{if:{properties:{type:{const:"number"}}},then:{required:["target"]}},{if:{properties:{type:{const:"boolean"}}},then:{not:{required:["target"]}}}],additionalProperties:!1};function rs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="number"){let g={};t===null?t=[g]:t.push(g),s++}var u=c===s;if(s=i,t!==null&&(i?t.length=i:t=null),u){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.target===void 0){let I={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};t===null?t=[I]:t.push(I),s++}var u=g===s;l=u}if(!l){let g={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.push(g),s++}let p=s,m=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="boolean"){let g={};t===null?t=[g]:t.push(g),s++}var f=d===s;if(s=p,t!==null&&(p?t.length=p:t=null),f){let g=s,h=s,I=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.target===void 0&&(x="target")){let v={};t===null?t=[v]:t.push(v),s++}}var y=I===s;if(y){let x={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[x]:t.push(x),s++}else s=h,t!==null&&(h?t.length=h:t=null);var f=g===s;m=f}if(!m){let g={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[g]:t.push(g),s++}if(e.name===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};t===null?t=[g]:t.push(g),s++}if(e.description===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"description"},message:"must have required property 'description'"};t===null?t=[g]:t.push(g),s++}for(let g in e)if(!(g==="type"||g==="target"||g==="name"||g==="description"||g==="lockedName"||g==="lockedDescription"||g==="hidden")){let h={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};t===null?t=[h]:t.push(h),s++}if(e.type!==void 0){let g=e.type;if(typeof g!="string"){let h={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(!(g==="boolean"||g==="number")){let h={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:fI.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[h]:t.push(h),s++}}if(e.target!==void 0){let g=e.target;if(!(typeof g=="number"&&!(g%1)&&!isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[h]:t.push(h),s++}if(typeof g=="number"&&(g<1||isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[h]:t.push(h),s++}}if(e.name!==void 0){let g=e.name;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:r+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.description!==void 0){let g=e.description;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:r+"/description",schemaPath:"#/properties/description/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedName!==void 0){let g=e.lockedName;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedDescription!==void 0){let g=e.lockedDescription;if(typeof g=="string"){if(Ne(g)<1){let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.hidden!==void 0&&typeof e.hidden!="boolean"){let g={instancePath:r+"/hidden",schemaPath:"#/properties/hidden/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}return rs.errors=t,s===0}function Lu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return rs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?rs.errors:t.concat(rs.errors),s=t.length),Lu.errors=t,s===0}var Tu=Mu;var mI={type:"object",required:["type"],$defs:{keyframe:{type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1},tweenProperty:{type:"object",properties:{initialValue:{type:"number"},keyframes:{type:"array",minItems:1,items:{$ref:"#/$defs/keyframe"}}},required:["keyframes"],additionalProperties:!1},updateTween:{type:"object",properties:{alpha:{$ref:"#/$defs/tweenProperty"},x:{$ref:"#/$defs/tweenProperty"},y:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionTween:{type:"object",properties:{translateX:{$ref:"#/$defs/tweenProperty"},translateY:{$ref:"#/$defs/tweenProperty"},alpha:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionSide:{type:"object",required:["tween"],properties:{tween:{$ref:"#/$defs/transitionTween"}},additionalProperties:!1},maskProgress:{$ref:"#/$defs/tweenProperty"},compositeMaskItem:{type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1},mask:{type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]}},properties:{name:{type:"string"},type:{type:"string",enum:["update","transition"]},complete:{type:"object",properties:{payload:{type:"object"}},additionalProperties:!0},tween:{$ref:"#/$defs/updateTween"},prev:{$ref:"#/$defs/transitionSide"},next:{$ref:"#/$defs/transitionSide"},mask:{$ref:"#/$defs/mask"}},allOf:[{if:{properties:{type:{const:"update"}}},then:{required:["tween"],not:{anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}},{if:{properties:{type:{const:"transition"}}},then:{not:{required:["tween"]},anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}],additionalProperties:!1,$id:"https://route-engine.runtime/schemas/projectData/animationResource.yaml"};var yI={type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1};function Fr(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.value===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};t===null?t=[i]:t.push(i),s++}if(e.duration===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="value"||i==="duration"||i==="easing"||i==="relative")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.value!==void 0&&typeof e.value!="number"){let i={instancePath:r+"/value",schemaPath:"#/properties/value/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.duration!==void 0&&typeof e.duration!="number"){let i={instancePath:r+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.easing!==void 0){let i=e.easing;if(typeof i!="string"){let l={instancePath:r+"/easing",schemaPath:"#/properties/easing/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="linear"||i==="easeInQuad"||i==="easeOutQuad"||i==="easeInOutQuad"||i==="easeInCubic"||i==="easeOutCubic"||i==="easeInOutCubic"||i==="easeInQuart"||i==="easeOutQuart"||i==="easeInOutQuart"||i==="easeInQuint"||i==="easeOutQuint"||i==="easeInOutQuint"||i==="easeInSine"||i==="easeOutSine"||i==="easeInOutSine"||i==="easeInExpo"||i==="easeOutExpo"||i==="easeInOutExpo"||i==="easeInCirc"||i==="easeOutCirc"||i==="easeInOutCirc"||i==="easeInBack"||i==="easeOutBack"||i==="easeInOutBack"||i==="easeInBounce"||i==="easeOutBounce"||i==="easeInOutBounce"||i==="easeInElastic"||i==="easeOutElastic"||i==="easeInOutElastic")){let l={instancePath:r+"/easing",schemaPath:"#/properties/easing/enum",keyword:"enum",params:{allowedValues:yI.properties.easing.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.relative!==void 0&&typeof e.relative!="boolean"){let i={instancePath:r+"/relative",schemaPath:"#/properties/relative/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Fr.errors=t,s===0}function z(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let c={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[c]:t.push(c),s++}let l=i.length;for(let c=0;c<l;c++)Fr(i[c],{instancePath:r+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return z.errors=t,s===0}function ts(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="alpha"||i==="x"||i==="y"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.alpha!==void 0&&(z(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.x!==void 0&&(z(e.x,{instancePath:r+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.y!==void 0&&(z(e.y,{instancePath:r+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleX!==void 0&&(z(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleY!==void 0&&(z(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.rotation!==void 0&&(z(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ts.errors=t,s===0}function ns(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="translateX"||i==="translateY"||i==="alpha"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.translateX!==void 0&&(z(e.translateX,{instancePath:r+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.translateY!==void 0&&(z(e.translateY,{instancePath:r+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.alpha!==void 0&&(z(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleX!==void 0&&(z(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleY!==void 0&&(z(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.rotation!==void 0&&(z(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ns.errors=t,s===0}function Vr(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.tween===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="tween"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.tween!==void 0&&(ns(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?ns.errors:t.concat(ns.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Vr.errors=t,s===0}var Mn={type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]},hI={type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1};function ss(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="texture"||i==="channel"||i==="invert")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.texture!==void 0&&typeof e.texture!="string"){let i={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.channel!==void 0){let i=e.channel;if(typeof i!="string"){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="red"||i==="green"||i==="blue"||i==="alpha")){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:hI.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.invert!==void 0&&typeof e.invert!="boolean"){let i={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ss.errors=t,s===0}function os(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let c={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[c]:t.push(c),s++}let l=i.length;for(let c=0;c<l;c++)Fr(i[c],{instancePath:r+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return os.errors=t,s===0}function is(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="single"){let b={};t===null?t=[b]:t.push(b),s++}var u=c===s;if(s=i,t!==null&&(i?t.length=i:t=null),u){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.texture===void 0){let v={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[v]:t.push(v),s++}var u=b===s;l=u}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let p=s,m=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="sequence"){let b={};t===null?t=[b]:t.push(b),s++}var f=d===s;if(s=p,t!==null&&(p?t.length=p:t=null),f){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textures===void 0){let v={instancePath:r,schemaPath:"#/allOf/1/then/required",keyword:"required",params:{missingProperty:"textures"},message:"must have required property 'textures'"};t===null?t=[v]:t.push(v),s++}var f=b===s;m=f}if(!m){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let y=s,g=!0,h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="composite"){let b={};t===null?t=[b]:t.push(b),s++}var I=h===s;if(s=y,t!==null&&(y?t.length=y:t=null),I){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.items===void 0){let v={instancePath:r,schemaPath:"#/allOf/2/then/required",keyword:"required",params:{missingProperty:"items"},message:"must have required property 'items'"};t===null?t=[v]:t.push(v),s++}var I=b===s;g=I}if(!g){let b={instancePath:r,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.kind===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};t===null?t=[b]:t.push(b),s++}for(let b in e)if(!lr.call(Mn.properties,b)){let x={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),s++}if(e.kind!==void 0){let b=e.kind;if(typeof b!="string"){let x={instancePath:r+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="single"||b==="sequence"||b==="composite")){let x={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:Mn.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.texture!==void 0&&typeof e.texture!="string"){let b={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.textures!==void 0){let b=e.textures;if(Array.isArray(b)){if(b.length<1){let v={instancePath:r+"/textures",schemaPath:"#/properties/textures/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[v]:t.push(v),s++}let x=b.length;for(let v=0;v<x;v++)if(typeof b[v]!="string"){let k={instancePath:r+"/textures/"+v,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[k]:t.push(k),s++}}else{let x={instancePath:r+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[x]:t.push(x),s++}}if(e.items!==void 0){let b=e.items;if(Array.isArray(b)){if(b.length<1){let v={instancePath:r+"/items",schemaPath:"#/properties/items/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[v]:t.push(v),s++}let x=b.length;for(let v=0;v<x;v++)ss(b[v],{instancePath:r+"/items/"+v,parentData:b,parentDataProperty:v,rootData:a})||(t=t===null?ss.errors:t.concat(ss.errors),s=t.length)}else{let x={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[x]:t.push(x),s++}}if(e.combine!==void 0){let b=e.combine;if(typeof b!="string"){let x={instancePath:r+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="max"||b==="min"||b==="multiply"||b==="add")){let x={instancePath:r+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:Mn.properties.combine.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.channel!==void 0){let b=e.channel;if(typeof b!="string"){let x={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="red"||b==="green"||b==="blue"||b==="alpha")){let x={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:Mn.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.softness!==void 0&&typeof e.softness!="number"){let b={instancePath:r+"/softness",schemaPath:"#/properties/softness/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(e.invert!==void 0&&typeof e.invert!="boolean"){let b={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}if(e.sample!==void 0&&typeof e.sample!="string"){let b={instancePath:r+"/sample",schemaPath:"#/properties/sample/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}e.progress!==void 0&&(os(e.progress,{instancePath:r+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(t=t===null?os.errors:t.concat(os.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return is.errors=t,s===0}function as(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="update"){let b={};t===null?t=[b]:t.push(b),s++}var u=c===s;if(s=i,t!==null&&(i?t.length=i:t=null),u){let b=s,x=s,v=s,k=s,S=!1,C=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.prev===void 0&&(P="prev")){let T={};t===null?t=[T]:t.push(T),s++}}var p=C===s;if(S=S||p,!S){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let V;if(e.next===void 0&&(V="next")){let le={};t===null?t=[le]:t.push(le),s++}}var p=P===s;if(S=S||p,!S){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let G;if(e.mask===void 0&&(G="mask")){let ee={};t===null?t=[ee]:t.push(ee),s++}}var p=V===s;S=S||p}}if(S)s=k,t!==null&&(k?t.length=k:t=null);else{let P={};t===null?t=[P]:t.push(P),s++}var m=v===s;if(m){let P={instancePath:r,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[P]:t.push(P),s++}else s=x,t!==null&&(x?t.length=x:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let P={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[P]:t.push(P),s++}var u=b===s;l=u}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let d=s,f=!0,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="transition"){let b={};t===null?t=[b]:t.push(b),s++}var g=y===s;if(s=d,t!==null&&(d?t.length=d:t=null),g){let b=s,x=s,v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.tween===void 0&&(P="tween")){let T={};t===null?t=[T]:t.push(T),s++}}var h=v===s;if(h){let P={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[P]:t.push(P),s++}else s=x,t!==null&&(x?t.length=x:t=null);let k=s,S=!1,C=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let P={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};t===null?t=[P]:t.push(P),s++}var I=C===s;if(S=S||I,!S){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let V={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};t===null?t=[V]:t.push(V),s++}var I=P===s;if(S=S||I,!S){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.mask===void 0){let G={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};t===null?t=[G]:t.push(G),s++}var I=V===s;S=S||I}}if(S)s=k,t!==null&&(k?t.length=k:t=null);else{let P={instancePath:r,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[P]:t.push(P),s++}var g=b===s;f=g}if(!f){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[b]:t.push(b),s++}for(let b in e)if(!(b==="name"||b==="type"||b==="complete"||b==="tween"||b==="prev"||b==="next"||b==="mask")){let x={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),s++}if(e.name!==void 0&&typeof e.name!="string"){let b={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.type!==void 0){let b=e.type;if(typeof b!="string"){let x={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="update"||b==="transition")){let x={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:mI.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.complete!==void 0){let b=e.complete;if(b&&typeof b=="object"&&!Array.isArray(b)){if(b.payload!==void 0){let x=b.payload;if(!(x&&typeof x=="object"&&!Array.isArray(x))){let v={instancePath:r+"/complete/payload",schemaPath:"#/properties/complete/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}}}else{let x={instancePath:r+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}e.tween!==void 0&&(ts(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?ts.errors:t.concat(ts.errors),s=t.length)),e.prev!==void 0&&(Vr(e.prev,{instancePath:r+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(t=t===null?Vr.errors:t.concat(Vr.errors),s=t.length)),e.next!==void 0&&(Vr(e.next,{instancePath:r+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(t=t===null?Vr.errors:t.concat(Vr.errors),s=t.length)),e.mask!==void 0&&(is(e.mask,{instancePath:r+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(t=t===null?is.errors:t.concat(is.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return as.errors=t,s===0}function Mu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return as(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?as.errors:t.concat(as.errors),s=t.length),Mu.errors=t,s===0}var qu=Vu;function ls(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="name"||i==="nameVariableId")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.name!==void 0&&typeof e.name!="string"){let i={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.nameVariableId!==void 0){let i=e.nameVariableId;if(typeof i=="string"){if(Ne(i)<1){let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ls.errors=t,s===0}function Vu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ls(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ls.errors:t.concat(ls.errors),s=t.length),Vu.errors=t,s===0}var Fu=Uu;var gI=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");function cs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.hex===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"hex"},message:"must have required property 'hex'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="hex"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.hex!==void 0){let i=e.hex;if(typeof i=="string"){if(!gI.test(i)){let l={instancePath:r+"/hex",schemaPath:"#/properties/hex/pattern",keyword:"pattern",params:{pattern:"^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"},message:'must match pattern "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"'};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/hex",schemaPath:"#/properties/hex/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return cs.errors=t,s===0}function Uu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return cs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?cs.errors:t.concat(cs.errors),s=t.length),Uu.errors=t,s===0}var Bu=Yu;function us(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyboard!==void 0){let i=e.keyboard;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.actions!==void 0){let u=c.actions;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyboard/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(c.keydown!==void 0){let u=c.keydown;if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.payload!==void 0){let p=u.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let m={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(c.keyup!==void 0){let u=c.keyup;if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.payload!==void 0){let p=u.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let m={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyboard/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}else{let l={instancePath:r+"/keyboard",schemaPath:"#/properties/keyboard/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.keyup!==void 0){let i=e.keyup;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.actions!==void 0){let u=c.actions;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyup/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyup/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyup/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}else{let l={instancePath:r+"/keyup",schemaPath:"#/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return us.errors=t,s===0}function Yu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return us(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?us.errors:t.concat(us.errors),s=t.length),Yu.errors=t,s===0}var zu=Gu;function ps(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ps.errors=t,s===0}function Gu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ps(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ps.errors:t.concat(ps.errors),s=t.length),Gu.errors=t,s===0}var Hu=Xu;function ds(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ds.errors=t,s===0}function Xu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ds(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ds.errors:t.concat(ds.errors),s=t.length),Xu.errors=t,s===0}var Wu=Ku;function fs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let c=0;c<l;c++){let u=i[c];if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return fs.errors=t,s===0}function Ku(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return fs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?fs.errors:t.concat(fs.errors),s=t.length),Ku.errors=t,s===0}var Ju=Qu;function ms(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,c=null,u=s,p=s,m=s,d=s,f=!1,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let v;if(e.count===void 0&&(v="count")){let k={};t===null?t=[k]:t.push(k),s++}}var g=y===s;if(f=f||g,!f){let v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.texture===void 0&&(S="texture")){let C={};t===null?t=[C]:t.push(C),s++}}var g=v===s;if(f=f||g,!f){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let N;if(e.behaviors===void 0&&(N="behaviors")){let P={};t===null?t=[P]:t.push(P),s++}}var g=S===s;if(f=f||g,!f){let N=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let T;if(e.emitter===void 0&&(T="emitter")){let V={};t===null?t=[V]:t.push(V),s++}}var g=N===s;f=f||g}}}if(f)s=d,t!==null&&(d?t.length=d:t=null);else{let v={};t===null?t=[v]:t.push(v),s++}var h=m===s;if(h){let v={instancePath:r,schemaPath:"#/oneOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[v]:t.push(v),s++}else s=p,t!==null&&(p?t.length=p:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.modules===void 0){let v={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"modules"},message:"must have required property 'modules'"};t===null?t=[v]:t.push(v),s++}var b=u===s;b&&(l=!0,c=0);let I=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let v={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[v]:t.push(v),s++}if(e.behaviors===void 0){let v={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"behaviors"},message:"must have required property 'behaviors'"};t===null?t=[v]:t.push(v),s++}if(e.emitter===void 0){let v={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"emitter"},message:"must have required property 'emitter'"};t===null?t=[v]:t.push(v),s++}}var b=I===s;if(b&&l?(l=!1,c=[c,1]):b&&(l=!0,c=1),l)s=i,t!==null&&(i?t.length=i:t=null);else{let v={instancePath:r,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:c},message:"must match exactly one schema in oneOf"};t===null?t=[v]:t.push(v),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.width===void 0){let v={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[v]:t.push(v),s++}if(e.height===void 0){let v={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[v]:t.push(v),s++}for(let v in e)if(!(v==="width"||v==="height"||v==="seed"||v==="modules"||v==="count"||v==="texture"||v==="behaviors"||v==="emitter")){let k={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};t===null?t=[k]:t.push(k),s++}if(e.width!==void 0){let v=e.width;if(typeof v=="number"){if(v<=0||isNaN(v)){let k={instancePath:r+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[k]:t.push(k),s++}}else{let k={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}}if(e.height!==void 0){let v=e.height;if(typeof v=="number"){if(v<=0||isNaN(v)){let k={instancePath:r+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[k]:t.push(k),s++}}else{let k={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}}if(e.seed!==void 0&&typeof e.seed!="number"){let v={instancePath:r+"/seed",schemaPath:"#/properties/seed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[v]:t.push(v),s++}if(e.modules!==void 0){let v=e.modules;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.emission===void 0){let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};t===null?t=[k]:t.push(k),s++}if(v.appearance===void 0){let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};t===null?t=[k]:t.push(k),s++}for(let k in v)if(!(k==="emission"||k==="movement"||k==="appearance"||k==="bounds")){let S={instancePath:r+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};t===null?t=[S]:t.push(S),s++}if(v.emission!==void 0){let k=v.emission;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}if(v.movement!==void 0){let k=v.movement;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}if(v.appearance!==void 0){let k=v.appearance;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}if(v.bounds!==void 0){let k=v.bounds;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}}else{let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}if(e.count!==void 0){let v=e.count;if(!(typeof v=="number"&&!(v%1)&&!isNaN(v))){let k={instancePath:r+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[k]:t.push(k),s++}if(typeof v=="number"&&(v<1||isNaN(v))){let k={instancePath:r+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[k]:t.push(k),s++}}if(e.texture!==void 0){let v=e.texture,k=s,S=!1,C=null,N=s;if(typeof v=="string"){if(Ne(v)<1){let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[T]:t.push(T),s++}}else{let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[T]:t.push(T),s++}var x=N===s;x&&(S=!0,C=0);let P=s;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[T]:t.push(T),s++}var x=P===s;if(x&&S?(S=!1,C=[C,1]):x&&(S=!0,C=1),S)s=k,t!==null&&(k?t.length=k:t=null);else{let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:C},message:"must match exactly one schema in oneOf"};t===null?t=[T]:t.push(T),s++}}if(e.behaviors!==void 0){let v=e.behaviors;if(Array.isArray(v)){if(v.length<1){let S={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[S]:t.push(S),s++}let k=v.length;for(let S=0;S<k;S++){let C=v[S];if(C&&typeof C=="object"&&!Array.isArray(C)){if(C.type===void 0){let N={instancePath:r+"/behaviors/"+S,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[N]:t.push(N),s++}for(let N in C)if(!(N==="type"||N==="config")){let P={instancePath:r+"/behaviors/"+S,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:N},message:"must NOT have additional properties"};t===null?t=[P]:t.push(P),s++}if(C.type!==void 0){let N=C.type;if(typeof N=="string"){if(Ne(N)<1){let P={instancePath:r+"/behaviors/"+S+"/type",schemaPath:"#/properties/behaviors/items/properties/type/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[P]:t.push(P),s++}}else{let P={instancePath:r+"/behaviors/"+S+"/type",schemaPath:"#/properties/behaviors/items/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[P]:t.push(P),s++}}if(C.config!==void 0){let N=C.config;if(!(N&&typeof N=="object"&&!Array.isArray(N))){let P={instancePath:r+"/behaviors/"+S+"/config",schemaPath:"#/properties/behaviors/items/properties/config/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[P]:t.push(P),s++}}}else{let N={instancePath:r+"/behaviors/"+S,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[N]:t.push(N),s++}}}else{let k={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[k]:t.push(k),s++}}if(e.emitter!==void 0){let v=e.emitter;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.lifetime===void 0){let k={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};t===null?t=[k]:t.push(k),s++}if(v.lifetime!==void 0){let k=v.lifetime;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.min===void 0){let S={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};t===null?t=[S]:t.push(S),s++}if(k.max===void 0){let S={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};t===null?t=[S]:t.push(S),s++}if(k.min!==void 0){let S=k.min;if(typeof S=="number"){if(S<0||isNaN(S)){let C={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[C]:t.push(C),s++}}else{let C={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[C]:t.push(C),s++}}if(k.max!==void 0){let S=k.max;if(typeof S=="number"){if(S<0||isNaN(S)){let C={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[C]:t.push(C),s++}}else{let C={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[C]:t.push(C),s++}}}else{let S={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}}else{let k={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}}else{let v={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}return ms.errors=t,s===0}function Qu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ms(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ms.errors:t.concat(ms.errors),s=t.length),Qu.errors=t,s===0}var Zu=ep;var au={type:"object",properties:{fileId:{type:"string"},fileType:{type:"string"},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["fileId"],additionalProperties:!1};function ys(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!lr.call(au.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:au.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ys.errors=t,s===0}function ep(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ys(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ys.errors:t.concat(ys.errors),s=t.length),ep.errors=t,s===0}var rp=tp;var bI=new RegExp("^.+$","u");function hs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.jsonData===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"jsonData"},message:"must have required property 'jsonData'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="jsonData"||i==="width"||i==="height"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.jsonData!==void 0){let i=e.jsonData;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/jsonData",schemaPath:"#/properties/jsonData/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.animations!==void 0){let i=e.animations;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(bI.test(l)){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.frames===void 0){let u={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/required",keyword:"required",params:{missingProperty:"frames"},message:"must have required property 'frames'"};t===null?t=[u]:t.push(u),s++}for(let u in c)if(!(u==="frames"||u==="animationSpeed"||u==="loop")){let p={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(c.frames!==void 0){let u=c.frames;if(Array.isArray(u)){let p=u.length;for(let m=0;m<p;m++)if(typeof u[m]!="number"){let d={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames/"+m,schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/items/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[d]:t.push(d),s++}}else{let p={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}if(c.animationSpeed!==void 0&&typeof c.animationSpeed!="number"){let u={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/animationSpeed",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}if(c.loop!==void 0&&typeof c.loop!="boolean"){let u={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/loop",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r+"/animations",schemaPath:"#/properties/animations/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return hs.errors=t,s===0}function tp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return hs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?hs.errors:t.concat(hs.errors),s=t.length),tp.errors=t,s===0}var np=sp;var lu={type:"object",properties:{fontId:{oneOf:[{type:"string",minLength:1},{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",minLength:1}}]},colorId:{type:"string"},colorAlpha:{type:"number"},fontSize:{type:"number"},fontWeight:{type:"string"},fontStyle:{type:"string",enum:["normal","italic","oblique"]},lineHeight:{type:"number"},align:{type:"string"},wordWrap:{type:"boolean"},breakWords:{type:"boolean"},wordWrapWidth:{type:"number"},strokeColorId:{type:"string"},strokeAlpha:{type:"number"},strokeWidth:{type:"number"},shadow:{type:"object",properties:{colorId:{type:"string",minLength:1},alpha:{type:"number",minimum:0,maximum:1},blur:{type:"number",minimum:0},offsetX:{type:"number"},offsetY:{type:"number"}},required:["colorId"],additionalProperties:!1}},required:["fontId","fontSize","fontWeight","fontStyle","lineHeight","colorId"],additionalProperties:!1};function gs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fontId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontId"},message:"must have required property 'fontId'"};t===null?t=[l]:t.push(l),s++}if(e.fontSize===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontSize"},message:"must have required property 'fontSize'"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontWeight"},message:"must have required property 'fontWeight'"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontStyle"},message:"must have required property 'fontStyle'"};t===null?t=[l]:t.push(l),s++}if(e.lineHeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"lineHeight"},message:"must have required property 'lineHeight'"};t===null?t=[l]:t.push(l),s++}if(e.colorId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[l]:t.push(l),s++}for(let l in e)if(!lr.call(lu.properties,l)){let c={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(e.fontId!==void 0){let l=e.fontId,c=s,u=!1,p=null,m=s;if(typeof l=="string"){if(Ne(l)<1){let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}var i=m===s;i&&(u=!0,p=0);let d=s;if(Array.isArray(l)){if(l.length<1){let h={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[h]:t.push(h),s++}let f=l.length;for(let h=0;h<f;h++){let I=l[h];if(typeof I=="string"){if(Ne(I)<1){let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}}let y=l.length,g;if(y>1){let h={};for(;y--;){let I=l[y];if(typeof I=="string"){if(typeof h[I]=="number"){g=h[I];let b={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/uniqueItems",keyword:"uniqueItems",params:{i:y,j:g},message:"must NOT have duplicate items (items ## "+g+" and "+y+" are identical)"};t===null?t=[b]:t.push(b),s++;break}h[I]=y}}}}else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),s++}var i=d===s;if(i&&u?(u=!1,p=[p,1]):i&&(u=!0,p=1),u)s=c,t!==null&&(c?t.length=c:t=null);else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf",keyword:"oneOf",params:{passingSchemas:p},message:"must match exactly one schema in oneOf"};t===null?t=[f]:t.push(f),s++}}if(e.colorId!==void 0&&typeof e.colorId!="string"){let l={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.colorAlpha!==void 0&&typeof e.colorAlpha!="number"){let l={instancePath:r+"/colorAlpha",schemaPath:"#/properties/colorAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontSize!==void 0&&typeof e.fontSize!="number"){let l={instancePath:r+"/fontSize",schemaPath:"#/properties/fontSize/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight!==void 0&&typeof e.fontWeight!="string"){let l={instancePath:r+"/fontWeight",schemaPath:"#/properties/fontWeight/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle!==void 0){let l=e.fontStyle;if(typeof l!="string"){let c={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.push(c),s++}if(!(l==="normal"||l==="italic"||l==="oblique")){let c={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/enum",keyword:"enum",params:{allowedValues:lu.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};t===null?t=[c]:t.push(c),s++}}if(e.lineHeight!==void 0&&typeof e.lineHeight!="number"){let l={instancePath:r+"/lineHeight",schemaPath:"#/properties/lineHeight/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.align!==void 0&&typeof e.align!="string"){let l={instancePath:r+"/align",schemaPath:"#/properties/align/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.wordWrap!==void 0&&typeof e.wordWrap!="boolean"){let l={instancePath:r+"/wordWrap",schemaPath:"#/properties/wordWrap/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.breakWords!==void 0&&typeof e.breakWords!="boolean"){let l={instancePath:r+"/breakWords",schemaPath:"#/properties/breakWords/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.wordWrapWidth!==void 0&&typeof e.wordWrapWidth!="number"){let l={instancePath:r+"/wordWrapWidth",schemaPath:"#/properties/wordWrapWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeColorId!==void 0&&typeof e.strokeColorId!="string"){let l={instancePath:r+"/strokeColorId",schemaPath:"#/properties/strokeColorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.strokeAlpha!==void 0&&typeof e.strokeAlpha!="number"){let l={instancePath:r+"/strokeAlpha",schemaPath:"#/properties/strokeAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeWidth!==void 0&&typeof e.strokeWidth!="number"){let l={instancePath:r+"/strokeWidth",schemaPath:"#/properties/strokeWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.shadow!==void 0){let l=e.shadow;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.colorId===void 0){let c={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[c]:t.push(c),s++}for(let c in l)if(!(c==="colorId"||c==="alpha"||c==="blur"||c==="offsetX"||c==="offsetY")){let u={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(l.colorId!==void 0){let c=l.colorId;if(typeof c=="string"){if(Ne(c)<1){let u={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}}if(l.alpha!==void 0){let c=l.alpha;if(typeof c=="number"){if(c>1||isNaN(c)){let u={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[u]:t.push(u),s++}if(c<0||isNaN(c)){let u={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}}if(l.blur!==void 0){let c=l.blur;if(typeof c=="number"){if(c<0||isNaN(c)){let u={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}}if(l.offsetX!==void 0&&typeof l.offsetX!="number"){let c={instancePath:r+"/shadow/offsetX",schemaPath:"#/properties/shadow/properties/offsetX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}if(l.offsetY!==void 0&&typeof l.offsetY!="number"){let c={instancePath:r+"/shadow/offsetY",schemaPath:"#/properties/shadow/properties/offsetY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return gs.errors=t,s===0}function sp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return gs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?gs.errors:t.concat(gs.errors),s=t.length),sp.errors=t,s===0}var op=ip;var II={type:"object",properties:{x:{type:"integer"},y:{type:"integer"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"}},additionalProperties:!1};function bs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!lr.call(II.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.x!==void 0){let i=e.x;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.y!==void 0){let i=e.y;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return bs.errors=t,s===0}function ip(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return bs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?bs.errors:t.concat(bs.errors),s=t.length),ip.errors=t,s===0}var ap=lp;function Is(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Is.errors=t,s===0}function lp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Is(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Is.errors:t.concat(Is.errors),s=t.length),lp.errors=t,s===0}var zt=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Yt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),cr=e=>e===void 0?void 0:structuredClone(e),wI=Object.freeze({achievement:"achievements",animation:"animations",character:"characters",color:"colors",control:"controls",font:"fonts",image:"images",layout:"layouts",particle:"particles",sound:"sounds",spritesheet:"spritesheets",textStyle:"textStyles",transform:"transforms",video:"videos"}),vI=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),AI=Object.freeze({background:cu,bgm:pu,character:fu,choice:yu,cleanAll:gu,control:Iu,dialogue:vu,form:ku,layout:xu,screen:Su,sfx:Ou,visual:$u,voice:ju}),kI=Object.freeze({achievement:Du,animation:Tu,character:qu,color:Fu,control:Bu,font:zu,image:Hu,layout:Wu,particle:Ju,sound:Zu,spritesheet:rp,textStyle:np,transform:op,video:ap}),PI=new Set(["files","language","patches"]),xI=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),EI=new Set(["lineId","mode","payload","type"]),SI=new Set(["mode","payload","sceneId","type"]),RI=new Set(["mode","operation","payload","resourceId","type"]),OI=new Set(["fileId","mimeType"]),q=(e,r)=>{throw new Error(`Invalid l10nData at ${e}: ${r}`)},He=(e,r)=>{Yt(e)||q(r,"expected an object")},wi=(e,r)=>{Array.isArray(e)||q(r,"expected an array")},lt=(e,r)=>{(typeof e!="string"||e.length===0)&&q(r,"expected a non-empty string")},dp=(e,r)=>{typeof e!="string"&&q(r,"expected a string")},Qe=(e,r,n)=>{for(let o of Object.keys(e))r.has(o)||q(`${n}.${o}`,"unknown field")},Ze=(e,r,n)=>{for(let o of r)zt(e,o)||q(n,`missing required field "${o}"`)},CI=e=>e.replaceAll("~1","/").replaceAll("~0","~"),$I=(e,r)=>{let n=(r?.instancePath??"").split("/").slice(1).map(CI);return r?.keyword==="required"?n.push(r.params.missingProperty):r?.keyword==="additionalProperties"&&n.push(r.params.additionalProperty),n.reduce((o,a)=>/^\d+$/.test(a)?`${o}[${a}]`:`${o}.${a}`,e)},_I=(e=[])=>e.filter(r=>!["anyOf","if","not","oneOf"].includes(r.keyword)).reduce((r,n)=>{if(r===void 0)return n;let o=n.instancePath.split("/").length,a=r.instancePath.split("/").length;return o>a?n:r},void 0)??e[0],fp=({value:e,validator:r,path:n,contract:o})=>{if(r(e))return;let a=_I(r.errors);q($I(n,a),`does not match ${o}: ${a?.message??"schema validation failed"}`)},ws=(e,r,n=new WeakSet)=>{if(typeof e=="number"){Number.isFinite(e)||q(r,"expected a finite number");return}if(!(e===null||typeof e!="object"||n.has(e))){if(n.add(e),Array.isArray(e)){e.forEach((o,a)=>ws(o,`${r}[${a}]`,n));return}Object.entries(e).forEach(([o,a])=>ws(a,`${r}.${o}`,n))}},Je=(e,r)=>{e===""&&q(r,"expected a non-empty resourceId")},jI=(e,r,n)=>{let o=(s,i)=>Je(s?.resourceId,`${i}.resourceId`),a=(s,i)=>(s??[]).forEach((l,c)=>Je(l?.resourceId,`${i}[${c}].resourceId`)),t=(s,i)=>{Je(s?.resourceId,`${i}.resourceId`),a(s?.sounds,`${i}.sounds`)};switch(e){case"background":Je(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"bgm":case"voice":t(r,n);break;case"sfx":a(r.items,`${n}.items`),(r.channels??[]).forEach((s,i)=>a(s?.sounds,`${n}.channels[${i}].sounds`));break;case"character":(r.items??[]).forEach((s,i)=>{(s.sprites??[]).forEach((l,c)=>Je(l?.resourceId,`${n}.items[${i}].sprites[${c}].resourceId`)),o(s.animations,`${n}.items[${i}].animations`)});break;case"choice":case"form":case"layout":Je(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"control":Je(r.resourceId,`${n}.resourceId`);break;case"dialogue":Je(r.ui?.resourceId,`${n}.ui.resourceId`),o(r.ui?.animations,`${n}.ui.animations`),(r.character?.sprite?.items??[]).forEach((s,i)=>Je(s?.resourceId,`${n}.character.sprite.items[${i}].resourceId`)),o(r.character?.sprite?.animations,`${n}.character.sprite.animations`);break;case"screen":o(r.animations,`${n}.animations`);break;case"visual":(r.items??[]).forEach((s,i)=>{Je(s?.resourceId,`${n}.items[${i}].resourceId`),o(s?.animations,`${n}.items[${i}].animations`)});break;default:break}},ct=(e,r)=>{lt(e,r),(e==="__proto__"||e==="constructor"||e==="prototype")&&q(r,`"${e}" is not a safe ID`)},NI=(e,r)=>{lt(e,r),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&q(r,"must be a safe single filename")},Bt=(e,r)=>{if(Object.is(e,r))return!0;if(Array.isArray(e)||Array.isArray(r))return!Array.isArray(e)||!Array.isArray(r)?!1:e.length===r.length&&e.every((a,t)=>Bt(a,r[t]));if(!Yt(e)||!Yt(r))return!1;let n=Object.keys(e).sort(),o=Object.keys(r).sort();return Bt(n,o)&&n.every(a=>Bt(e[a],r[a]))},vs=(e,r=new Set,n=new WeakSet)=>{if(Array.isArray(e))return e.forEach(o=>vs(o,r,n)),r;if(!Yt(e)||n.has(e))return r;n.add(e);for(let[o,a]of Object.entries(e))o==="fileId"&&typeof a=="string"&&r.add(a),vs(a,r,n);return r},DI=e=>{let r=new Map;for(let[n,o]of Object.entries(e?.story?.scenes??{}))for(let[a,t]of Object.entries(o?.sections??{}))for(let[s,i]of(t?.lines??[]).entries()){if(typeof i?.id!="string")continue;let l=r.get(i.id)??[];l.push({sceneId:n,sectionId:a,lineIndex:s,line:i}),r.set(i.id,l)}return r},mp=(e,r,n)=>{let o=e.get(r)??[];return o.length===0&&q(n,`lineId "${r}" does not exist in projectData`),o.length>1&&q(n,`lineId "${r}" is not globally unique in projectData`),o[0]},yp=(e,r)=>e.story.scenes[r.sceneId].sections[r.sectionId].lines[r.lineIndex],cp=e=>({items:(e?.items??[]).map(r=>({id:r?.id,events:r?.events}))}),up=e=>{let r=cr(e??{});delete r.resourceId,delete r.animations;for(let n of Object.values(r.fields??{}))Yt(n)&&delete n.placeholder;return r},LI=(e,r,n,o)=>{e==="choice"&&!Bt(cp(r),cp(n))&&q(o,"choice item IDs and events must remain identical to the source action"),e==="form"&&!Bt(up(r),up(n))&&q(o,"form behavior must remain identical; only presentation fields and placeholders may change")},TI=({patch:e,path:r,lineIndex:n})=>{Qe(e,xI,r),Ze(e,["type","lineId","actionType","payload"],r),ct(e.lineId,`${r}.lineId`),lt(e.actionType,`${r}.actionType`),He(e.payload,`${r}.payload`),e.mode!==void 0&&e.mode!=="replace"&&q(`${r}.mode`,'line.action supports only "replace"'),vI.has(e.actionType)||q(`${r}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let o=mp(n,e.lineId,`${r}.lineId`),a=o.line?.actions?.[e.actionType];return a===void 0&&q(`${r}.actionType`,`source line "${e.lineId}" does not contain action "${e.actionType}"`),e.actionType==="dialogue"?((!Array.isArray(e.ignoreFields)||e.ignoreFields.length!==1||e.ignoreFields[0]!=="content")&&q(`${r}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),zt(e.payload,"content")&&q(`${r}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&q(`${r}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),LI(e.actionType,a,e.payload,`${r}.payload`),fp({value:e.payload,validator:AI[e.actionType],path:`${r}.payload`,contract:`the ${e.actionType} presentation-action schema`}),ws(e.payload,`${r}.payload`),jI(e.actionType,e.payload,`${r}.payload`),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:o,patch:e}},MI=(e,r)=>{wi(e,r),e.forEach((n,o)=>{He(n,`${r}[${o}]`),Qe(n,new Set(["text"]),`${r}[${o}]`),Ze(n,["text"],`${r}[${o}]`),dp(n.text,`${r}[${o}].text`)})},qI=({patch:e,path:r,lineIndex:n})=>{Qe(e,EI,r),Ze(e,["type","lineId","payload"],r),ct(e.lineId,`${r}.lineId`),He(e.payload,`${r}.payload`),Qe(e.payload,new Set(["content"]),`${r}.payload`),Ze(e.payload,["content"],`${r}.payload`),MI(e.payload.content,`${r}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&q(`${r}.mode`,'line.dialogue supports only "replace"');let o=mp(n,e.lineId,`${r}.lineId`);return o.line?.actions?.dialogue===void 0&&q(`${r}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:o,patch:e}},VI=({patch:e,path:r,projectData:n})=>(Qe(e,SI,r),Ze(e,["type","mode","sceneId","payload"],r),ct(e.sceneId,`${r}.sceneId`),He(e.payload,`${r}.payload`),Qe(e.payload,new Set(["name"]),`${r}.payload`),Ze(e.payload,["name"],`${r}.payload`),dp(e.payload.name,`${r}.payload.name`),e.mode!=="patch"&&q(`${r}.mode`,'story.scene requires "patch"'),zt(n?.story?.scenes??{},e.sceneId)||q(`${r}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),FI=(e,r,n)=>{He(r,n),["font","image","sound","spritesheet","video"].includes(e)&<(r.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(r.width)||q(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||q(`${n}.height`,"expected an integer")),e==="spritesheet"&&(He(r.jsonData,`${n}.jsonData`),Number.isInteger(r.width)||q(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||q(`${n}.height`,"expected an integer")),e==="color"&&(typeof r.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(r.hex))&&q(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),fp({value:r,validator:kI[e],path:n,contract:`the resource.${e} schema`}),ws(r,n)},UI=({patch:e,path:r,projectData:n,packageFileIds:o,canonicalFileIds:a})=>{Qe(e,RI,r),Ze(e,["type","resourceId","payload"],r),ct(e.resourceId,`${r}.resourceId`);let t=e.type.slice(9),s=wI[t];s||q(`${r}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&q(`${r}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&q(`${r}.operation`,'the only resource operation is "add"'),FI(t,e.payload,`${r}.payload`);let i=n?.resources?.[s]??{},l=zt(i,e.resourceId);e.operation==="add"&&l&&q(`${r}.resourceId`,`cannot add existing ${t} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&q(`${r}.resourceId`,`cannot replace missing ${t} resource "${e.resourceId}"`);for(let c of vs(e.payload))!o.has(c)&&!a.has(c)&&q(`${r}.payload`,`fileId "${c}" is not declared by this package or the canonical project`);return{kind:"resource",key:`${e.type}:${e.resourceId}`,collectionName:s,path:r,patch:e}},pp=({resources:e,collectionName:r,resourceId:n,path:o,label:a})=>{n!==void 0&&(typeof n!="string"||n.length===0||!zt(e?.[r]??{},n))&&q(o,`${a} resource "${n}" was not found`)},BI=(e,r)=>{let n=cr(e);for(let a of r.patches)a.kind==="resource"&&(n.resources[a.collectionName]??={},n.resources[a.collectionName][a.patch.resourceId]=cr(a.patch.payload));let o=n.resources??{};for(let a of r.patches){if(a.patch.type!=="resource.textStyle")continue;let t=a.patch.payload,s=Array.isArray(t.fontId)?t.fontId:[t.fontId];s.forEach((i,l)=>pp({resources:o,collectionName:"fonts",resourceId:i,path:`${a.path}.payload.fontId${s.length>1?`[${l}]`:""}`,label:"font"}));for(let[i,l]of[["colorId",t.colorId],["strokeColorId",t.strokeColorId],["shadow.colorId",t.shadow?.colorId]])pp({resources:o,collectionName:"colors",resourceId:l,path:`${a.path}.payload.${i}`,label:"color"})}},YI=({patch:e,path:r,projectData:n,lineIndex:o,packageFileIds:a,canonicalFileIds:t})=>{if(He(e,r),lt(e.type,`${r}.type`),e.type==="line.action")return TI({patch:e,path:r,lineIndex:o});if(e.type==="line.dialogue")return qI({patch:e,path:r,lineIndex:o});if(e.type==="story.scene")return VI({patch:e,path:r,projectData:n});if(e.type.startsWith("resource."))return UI({patch:e,path:r,projectData:n,packageFileIds:a,canonicalFileIds:t});q(`${r}.type`,`unsupported patch type "${e.type}"`)},zI=(e,r)=>{wi(e,r);let n=new Set;return e.forEach((o,a)=>{let t=`${r}[${a}]`;He(o,t),Qe(o,OI,t),Ze(o,["fileId"],t),NI(o.fileId,`${t}.fileId`),o.mimeType!==void 0&&(typeof o.mimeType!="string"||o.mimeType.length===0)&&q(`${t}.mimeType`,"expected a non-empty string"),n.has(o.fileId)&&q(`${t}.fileId`,`duplicate fileId "${o.fileId}"`),n.add(o.fileId)}),n},GI=({packageId:e,packageData:r,path:n,projectData:o,lineIndex:a,canonicalFileIds:t})=>{He(r,n),Qe(r,PI,n),Ze(r,["language","files","patches"],n),lt(r.language,`${n}.language`);let s=zI(r.files,`${n}.files`);wi(r.patches,`${n}.patches`);let i=new Set,l=r.patches.map((c,u)=>{let p=YI({patch:c,path:`${n}.patches[${u}]`,projectData:o,lineIndex:a,packageFileIds:s,canonicalFileIds:t});return i.has(p.key)&&q(`${n}.patches[${u}]`,`duplicate patch target "${p.key}"`),i.add(p.key),p});return{id:e,data:r,fileIds:s,patches:l}},hp=({projectData:e,l10nData:r})=>{if(r===void 0)return{packages:new Map};He(r,"l10nData"),Qe(r,new Set(["packages"]),"l10nData"),Ze(r,["packages"],"l10nData"),He(r.packages,"l10nData.packages");let n=DI(e),o=vs(e?.resources??{}),a=new Map,t=new Map;for(let[s,i]of Object.entries(r.packages)){ct(s,`l10nData.packages.${s}`);let l=GI({packageId:s,packageData:i,path:`l10nData.packages.${s}`,projectData:e,lineIndex:n,canonicalFileIds:o});for(let c of l.fileIds){o.has(c)&&q(`l10nData.packages.${s}.files`,`fileId "${c}" conflicts with a canonical project file`);let u=t.get(c);u!==void 0&&q(`l10nData.packages.${s}.files`,`fileId "${c}" is already declared by package "${u}"`),t.set(c,s)}BI(e,l),a.set(s,l)}return{packages:a}},HI=(e,r)=>{let{collectionName:n,patch:o}=r;e.resources[n]??={},e.resources[n][o.resourceId]=cr(o.payload)},XI=(e,r)=>{let{patch:n}=r,o=e.story.scenes[n.sceneId];o.name=n.payload.name},WI=(e,r)=>{let{location:n,patch:o}=r,a=yp(e,n);if(o.actionType!=="dialogue"){a.actions[o.actionType]=cr(o.payload);return}let t=cr(n.line.actions.dialogue.content);a.actions.dialogue=cr(o.payload),t!==void 0&&(a.actions.dialogue.content=t)},KI=(e,r)=>{let{location:n,patch:o}=r,a=yp(e,n);a.actions.dialogue.content=cr(o.payload.content)},gp=({projectData:e,l10nData:r})=>{let n=hp({projectData:e,l10nData:r});return[{l10nId:null,language:null},...Array.from(n.packages.values(),o=>({l10nId:o.id,language:o.data.language}))]},As=({projectData:e,l10nData:r,l10nId:n=null})=>{let o=hp({projectData:e,l10nData:r});if(n!==null&&(ct(n,"l10nId"),o.packages.has(n)||q("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=cr(e),t=o.packages.get(n).patches;return t.filter(s=>s.kind==="resource").forEach(s=>HI(a,s)),t.filter(s=>s.kind==="story.scene").forEach(s=>XI(a,s)),t.filter(s=>s.kind==="line.action").forEach(s=>WI(a,s)),t.filter(s=>s.kind==="line.dialogue").forEach(s=>KI(a,s)),a};var JI=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),QI=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),bp="conditional",Ai=Symbol("conditionalAutoContinue"),ZI=new Set(["sectionTransition","resetStoryAtSection"]),e0=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),r0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),t0=new Set(["nextLine","nextLineFromSystem"]),n0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),vi="form",s0=new Set(["submitForm","cancelForm"]),o0="showImageGalleryVariant",i0="playMusicRoomTrack",a0="startSceneReplay",Xe=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),l0=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,ks=e=>e?.type===Ai,Ur=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId;function ki(e){let r=l0(),n,o=0,a=!1,t=0,s=null,i=0,l=!1,c=0,u=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g,h,I=null,{handlePendingEffects:b}=e,x=w=>{if(!a||!n)throw new Error(`RouteEngine ${w} requires an active engine`)},v=(w=new Map,E=Date.now())=>new Map(Array.from(w.entries()).filter(([,R])=>E<R.expiresAt).map(([R,O])=>[R,{animation:structuredClone(O.animation),startedAt:O.startedAt,expiresAt:O.expiresAt}])),k=(w=new Map)=>Array.from(w.values()).map(E=>structuredClone(E.animation)),S=(w=Date.now())=>{d=new Map(Array.from(d.entries()).filter(([,E])=>w<E.expiresAt))},C=()=>{if(a&&!(i>0||l)){l=!0;try{for(;n.selectPendingEffects().length>0;){let w=n.selectCurrentPointer()?.pointer??null,E=[...n.selectPendingEffects()],R=E.map(O=>O.name!=="handleLineActions"?O:{...O,payload:{...O.payload,pointer:structuredClone(w)}});n.clearPendingEffects();try{b(R)}catch(O){throw n.clearPendingEffects(),E.forEach(M=>{n.appendPendingEffect(M)}),O}}}finally{l=!1}}},N=w=>{i+=1;let E=!1;try{let R=w();return E=!0,R}finally{i-=1,E&&C()}},P=({initialState:w,namespace:E})=>{let R=n?.selectSystemState?.()?.global?.audioCommandId??0,{l10nData:O,...M}=w,U=O===void 0?void 0:structuredClone(O),J=structuredClone(w.projectData),Z=gp({projectData:J,l10nData:U}),pe=M.global??{};if(!Xe(pe))throw new Error("Malformed global state.");let Be=pe.runtime??{};if(!Xe(Be))throw new Error("Malformed global.runtime.");let Ee=Be.localizationPackageId;if(Ee!=null&&typeof Ee!="string")throw new Error("localizationPackageId requires a string or null value");let Yr=new Set(Z.map(({l10nId:Es})=>Es).filter(Es=>Es!==null)),zr=typeof Ee=="string"&&Yr.has(Ee)?Ee:null,Yp=As({projectData:J,l10nData:U,l10nId:zr}),zp=Qc({...M,global:{...pe,localizationPackages:Z,runtime:{...Be,localizationPackageId:zr}},projectData:Yp,initialAudioCommandId:R});b.reset?.(),n=zp,o+=1,a=!0,t=0,s=at(E),i=0,l=!1,c=0,u=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g=J,h=U,I=zr,n.appendPendingEffect({name:"handleLineActions"}),C()},T=()=>{a&&(a=!1,o+=1,n?.clearPendingEffects?.(),i=0,l=!1,u=[],p=null,m=null,d=new Map,f=new Map,y=new Map,b.dispose?.())},V=()=>s,le=()=>n.selectPresentationState(),G=()=>n.selectPresentationChanges(),ee=w=>n.selectSectionLineChanges(w),Pe=(w={})=>{x("rendering"),t+=1;let E=Date.now();S(E);let R=f.size>0,O=v(d,E),M=R?v(f,E):new Map,J={...n.selectRenderState({activePersistentAnimations:k(O),restoredPersistentAnimations:k(M)}),id:`render-${r}-${o}-${t}`};return y.set(J.id,{builtAt:E,persistentAnimationSessions:new Map([...M.entries(),...O.entries()]),usedRestoredPersistentAnimationSessions:R}),J},Fe=(w={})=>Pe(w),oe=(w={})=>Pe(w),me=w=>{if(!a||!n)return;let E=typeof w?.id=="string"&&w.id.length>0?w.id:null,R=E?y.get(E):null;E&&y.delete(E);let O=new Map;Qa(w?.animations).forEach(M=>{let U=bn(M);if(!U)return;let J=R?.persistentAnimationSessions?.get(U)??d.get(U),Z=Math.max(0,rl(M)),pe=J?.startedAt??R?.builtAt??Date.now();O.set(U,{animation:structuredClone(M),startedAt:pe,expiresAt:pe+Z})}),d=O,R?.usedRestoredPersistentAnimationSessions&&(f=new Map)},Ae=()=>n.selectSystemState(),ye=()=>n.selectAchievements(),re=w=>n.selectAchievement(w),ce=()=>n.selectSaveSlotMap(),se=w=>n.selectSaveSlot(w),ie=w=>n.selectSaveSlotPage(w),Ue=()=>n.selectImageGallery(),ur=()=>n.selectMusicRoom(),Oe=()=>n.selectSceneReplay(),$=()=>n.selectIsSceneReplayActive(),j=()=>n.selectSkipMode(),F=()=>n.selectAutoMode(),K=()=>n.selectRuntime(),xe=()=>n.selectIsChoiceVisible(),pr=()=>n.selectIsFormVisible(),Ie=()=>n.selectActiveInteraction(),ue=()=>n.selectPendingEffects().some(w=>w?.name==="handleLineActions"||w?.name==="render"),ut=(w,E,R={})=>!Xe(E)||w!=="nextLine"?E:R.bypassChoice===!0?{...E,bypassChoice:!0}:R.interactionSource===vi?{...E,_interactionSource:vi}:E,Br=(w={})=>({type:Ai,payload:ut("nextLine",{_conditionalContinuation:!0},w)}),Ei=(w,E)=>ks(w)?{type:Ai,payload:{...w.payload,...E.payload}}:E,kp=w=>{w.savedCheckpointOccurrences.forEach(E=>{n.markSavedRollbackCheckpointTransient(E)}),w.savedCheckpointOccurrences=[]},Pp=(w,E)=>{let R=p;return p=null,!R||!Ur(R.pointer,w)||R.checkpointIndex!==E?.checkpointIndex||R.checkpointIdentity!==E?.checkpoint?[]:R.savedCheckpointOccurrences},xp=w=>{let E=m;return!E||!Ur(E.pointer,w)?null:(m=null,E)},Ep=({actionType:w,pointerBeforeAction:E,pointerAfterAction:R,cursorBeforeAction:O,cursorAfterAction:M,wasSceneReplayActive:U,isSceneReplayActive:J})=>{!R||!(!Ur(E,R)||O?.checkpoint!==M?.checkpoint||O?.checkpointIndex!==M?.checkpointIndex||w==="jumpToLine")||(m={pointer:R,appendToPrevious:t0.has(w)&&U===J&&E?.sectionId===R.sectionId&&E?.lineId!==R.lineId,reuseExistingOccurrence:n0.has(w),forceNewOccurrence:w==="jumpToLine"})},Si=w=>{w.markCurrentCheckpointTransient&&(n.markRollbackCheckpointTransient({checkpointIndex:w.rollbackCursor?.checkpointIndex,checkpointIdentity:w.rollbackCursor?.checkpoint,sectionId:w.pointer?.sectionId,lineId:w.pointer?.lineId}),kp(w))},Sp=(w,E,R)=>e0.has(w)?w==="resetStoryAtSection"?R?.checkpoint!==E?.checkpoint:R?.checkpoint!==E?.checkpoint&&R?.checkpointIndex>E?.checkpointIndex:!1,Rp=w=>{let E=u.at(-1);if(!E?.markCurrentCheckpointTransient)return;let R=n.selectSaveSlot({slotId:w?.slotId});R&&E.savedCheckpointOccurrences.push({slotId:w.slotId,saveSlotIdentity:R,checkpointIndex:E.rollbackCursor?.checkpointIndex,sectionId:E.pointer?.sectionId,lineId:E.pointer?.lineId})},Op=(w,E,R)=>{let O=u.at(-1);if(!O)return;let M=n.selectCurrentPointer()?.pointer,U=Sp(w,E,R);if(Ur(O.pointer,M)){let J=R?.checkpoint!==E?.checkpoint||R?.checkpointIndex!==E?.checkpointIndex;U||J&&r0.has(w)?(Si(O),O.pointer=M,O.rollbackCursor=R,O.markCurrentCheckpointTransient=U,O.savedCheckpointOccurrences=[]):J&&w==="updateProjectData"&&(O.rollbackCursor=R);return}Si(O),O.pointer=M,O.rollbackCursor=n.selectRollbackCursor?.()??null,O.markCurrentCheckpointTransient=U,O.savedCheckpointOccurrences=[]},Ht=(w,E)=>{if(x(`action "${w}"`),!n[w])return;let R=E,O,M;if(w==="updateProjectData")Ri(E),O=structuredClone(E.projectData),R={...E,projectData:As({projectData:O,l10nData:h,l10nId:I})},Ri(R);else if(w==="updateLocalizationPackage"){if(M=Cp(E),M===I)return;R={l10nId:M,projectData:As({projectData:g,l10nData:h,l10nId:M})}}ZI.has(w)&&(c+=1);let U=n.selectIsSceneReplayActive?.()===!0,J=QI.has(w)?v(d):null,Z=n.selectCurrentPointer()?.pointer??null,pe=n.selectRollbackCursor?.()??null,Be=n[w](R);O!==void 0&&(g=O),M!==void 0&&(I=M),JI.has(w)&&(f=J??new Map,d=new Map);let Ee=n.selectIsSceneReplayActive?.()===!0;U!==Ee&&(d=new Map,f=new Map);let Yr=n.selectCurrentPointer()?.pointer??null,zr=n.selectRollbackCursor?.()??null;return w==="saveSlot"&&Rp(E),Op(w,pe,zr),Ep({actionType:w,pointerBeforeAction:Z,pointerAfterAction:Yr,cursorBeforeAction:pe,cursorAfterAction:zr,wasSceneReplayActive:U,isSceneReplayActive:Ee}),C(),Be},Ri=w=>{if(!Object.prototype.hasOwnProperty.call(w??{},"projectData"))throw new Error("updateProjectData requires projectData");_r(w?.projectData?.resources?.variables??{}),gt(w.projectData),bt(w.projectData),It(w.projectData)},Cp=w=>{if(!Xe(w))throw new Error("updateLocalizationPackage requires an object payload");let E=Object.keys(w);if(E.length!==1||E[0]!=="l10nId")throw new Error("updateLocalizationPackage only accepts l10nId");if(w.l10nId!==null&&(typeof w.l10nId!="string"||w.l10nId.length===0))throw new Error("updateLocalizationPackage requires a non-empty l10nId or null");return w.l10nId},$p=(w,E,R)=>{let O=n.selectCurrentPointer()?.pointer;E!==O||R!==c||(n.appendPendingEffect({name:"clearAutoNextTimer"}),n.appendPendingEffect({name:"clearNextLineConfigTimer"}),Ht("nextLineFromSystem",w.payload))},_p=()=>({renderSequence:t,conditionalRoutingSequence:c,rollbackNavigationContexts:u.slice(),pendingRollbackLineEntrySaveHandoff:p,pendingDialogueHistoryLineEntry:m,persistentAnimationSessions:new Map(d),restoredPersistentAnimationSessions:new Map(f),renderPersistentAnimationMetadata:new Map(y),canonicalProjectData:g,localizationPackageId:I}),jp=w=>{t=w.renderSequence,c=w.conditionalRoutingSequence,u=w.rollbackNavigationContexts.slice(),p=w.pendingRollbackLineEntrySaveHandoff,m=w.pendingDialogueHistoryLineEntry,d=new Map(w.persistentAnimationSessions),f=new Map(w.restoredPersistentAnimationSessions),y=new Map(w.renderPersistentAnimationMetadata),g=w.canonicalProjectData,I=w.localizationPackageId},Oi=(w,E={})=>(x("action batch"),N(()=>{let R=_p();try{return n[Zs](()=>{let O,M=n.selectCurrentPointer()?.pointer??null,U=n.selectRollbackCursor?.()??null,J=c,Z={pointer:M,rollbackCursor:U,markCurrentCheckpointTransient:E.rollbackSource==="line",savedCheckpointOccurrences:E.savedCheckpointOccurrences?.slice()??[]};u.push(Z);try{n.beginRollbackActionBatch({source:E.rollbackSource});try{O=w()}finally{n.endRollbackActionBatch({})}ks(O)&&$p(O,M,J);let pe=n.selectCurrentPointer()?.pointer??null;E.rollbackSource==="line"&&Ur(M,pe)&&n.recordCurrentDialogueHistory({savedCheckpointOccurrences:Z.savedCheckpointOccurrences,appendToPrevious:E.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:E.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:E.dialogueHistoryForceNewOccurrence===!0})}finally{u.pop(),(!Ur(M,Z.pointer)||U?.checkpoint!==Z.rollbackCursor?.checkpoint)&&Z.markCurrentCheckpointTransient&&Z.savedCheckpointOccurrences.length>0&&(p={pointer:Z.pointer,checkpointIndex:Z.rollbackCursor?.checkpointIndex,checkpointIdentity:Z.rollbackCursor?.checkpoint,savedCheckpointOccurrences:Z.savedCheckpointOccurrences})}})}catch(O){throw jp(R),O}})),Ci=(w,E,R,O={})=>{if(w===bp)return Oi(()=>{let M=Ps(R),U=so({[w]:E},M);return $i(U[w],R,O)},O);Ht(w,E)},Np=(w,E)=>{Ci(w,E)},Ps=w=>{if(!w)return{variables:n.selectAllVariables?n.selectAllVariables():void 0,runtime:n.selectRuntime?n.selectRuntime():{}};if(Object.prototype.hasOwnProperty.call(w,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".');let{_event:E,...R}=w,O=n.selectAllVariables?n.selectAllVariables():void 0;return{...R,_event:E,variables:O,runtime:n.selectRuntime?n.selectRuntime():{}}},Dp=w=>{if(!Xe(w))return{templatePayload:w,literalTargetIds:null};let E=n.selectImageGalleryConfig();if(!Array.isArray(E?.groups))return{templatePayload:w,literalTargetIds:null};let R=typeof w.groupId=="string"?E.groups.find(M=>M.id===w.groupId):void 0;if(!R)return{templatePayload:w,literalTargetIds:null};let O=typeof w.variantId=="string"&&R.variants.some(M=>M.id===w.variantId);return{templatePayload:{...w,groupId:null,...O?{variantId:null}:{}},literalTargetIds:{groupId:w.groupId,...O?{variantId:w.variantId}:{}}}},Lp=w=>!Xe(w)||typeof w.trackId!="string"?{templatePayload:w,literalTargetIds:null}:n.selectMusicRoomConfig()?.tracks?.some(O=>O.id===w.trackId)?{templatePayload:{...w,trackId:null},literalTargetIds:{trackId:w.trackId}}:{templatePayload:w,literalTargetIds:null},Tp=w=>!Xe(w)||typeof w.sceneId!="string"?{templatePayload:w,literalTargetIds:null}:n.selectSceneReplayConfig()?.replays?.some(O=>O.sceneId===w.sceneId)?{templatePayload:{...w,sceneId:null},literalTargetIds:{sceneId:w.sceneId}}:{templatePayload:w,literalTargetIds:null},Mp=w=>{if(!Xe(w))throw new Error("conditional action payload must be an object");if(!Array.isArray(w.branches))throw new Error("conditional action requires branches array");if(w.branches.length===0)throw new Error("conditional action requires at least one branch")},qp=(w,E,R)=>{if(!Xe(w))throw new Error(`conditional branch at index ${E} must be an object`);if(!Xe(w.actions))throw new Error(`conditional branch at index ${E} requires actions object`);if(!Object.prototype.hasOwnProperty.call(w,"when")&&E!==R-1)throw new Error("conditional else branch must be the last branch")},$i=(w,E,R)=>{Mp(w);let O=Br(R);for(let M=0;M<w.branches.length;M+=1){let U=w.branches[M];qp(U,M,w.branches.length);let J=Ps(E);if(Object.prototype.hasOwnProperty.call(U,"when")&&!ht(U.when,J))continue;let pe=xs(U.actions,E,R);return ks(pe)?Ei(O,pe):O}return O},Vp=(w,E)=>({...w??{},_form:E}),Fp=(w,E,R,O)=>{let M=Ht(w,E),U=M?.submitted===!0&&M.valid===!0,J=M?.cancelled===!0;if(!(!U&&!J)&&Xe(E.actions))return xs(E.actions,Vp(R,M.form),{...O,interactionSource:vi})},Up=(w,E,R,O)=>{let M=Ps(R),U={templatePayload:E,literalTargetIds:null};w===o0?U=Dp(E):w===i0?U=Lp(E):w===a0&&(U=Tp(E));let{templatePayload:J,literalTargetIds:Z}=U,Be=so({[w]:J},M)[w],Ee=Z?{...Be,...Z}:Be;if(w===bp)return $i(Ee,R,O);let Yr=ut(w,Ee,O);if(s0.has(w))return Fp(w,Yr,R,O);Ht(w,Yr)},xs=(w,E,R)=>{let O;return Object.entries(w).forEach(([M,U])=>{let J=Up(M,U,E,R);ks(J)&&(O=Ei(O,J))}),O},_i=(w,E,R={})=>Oi(()=>xs(w,E,R),R),Bp=w=>{let E=n.selectCurrentPointer()?.pointer;if(w!==E||n.selectActiveInteraction())return;let R=n.selectNextLineConfig();R?.auto?.enabled&&R.auto.trigger==="fromStart"&&n.appendPendingEffect({name:"nextLineConfigTimer",payload:{delay:R.auto.delay}})};return{init:P,dispose:T,handleAction:Ci,handleInternalAction:Np,handleActions:_i,selectRenderState:Fe,prepareRenderState:oe,commitRenderState:me,selectPresentationState:le,selectPresentationChanges:G,selectSectionLineChanges:ee,selectSystemState:Ae,selectAchievements:ye,selectAchievement:re,selectSaveSlotMap:ce,selectSaveSlot:se,selectSaveSlotPage:ie,selectSaveSlots:ce,selectImageGallery:Ue,selectMusicRoom:ur,selectSceneReplay:Oe,selectIsSceneReplayActive:$,selectRuntime:K,selectIsChoiceVisible:xe,selectIsFormVisible:pr,selectActiveInteraction:Ie,selectHasPendingRenderWork:ue,handleLineActions:w=>{x("line action handling");let E=n.selectCurrentPointer()?.pointer;if(w?.pointer&&!Ur(w.pointer,E))return!1;if(typeof w?.sceneReplaySceneId=="string"){let R=n.selectActiveSceneReplayEntry?.();if(R?.sceneId!==w.sceneReplaySceneId||R?.entryId!==w.entryId)return!1}return N(()=>{let R=n.selectCurrentPointer()?.pointer,O=n.selectRollbackCursor?.()??null,M=p,U=m,J=Pp(R,O),Z=xp(R),pe=n.selectCurrentLine(),Be=!1;if(pe?.actions){try{_i(pe.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:J,dialogueHistoryAppendToPrevious:Z?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:Z?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:Z?.forceNewOccurrence===!0})}catch(Ee){throw p=M,m=U,Ee}Be=!0}return Bp(R),Be})},getNamespace:V}}var Pi=()=>{let e=0,r=null;return{getElapsed:()=>e,setElapsed:n=>{e=n},addElapsed:n=>{e+=n},getCallback:()=>r,setCallback:n=>{r=n}}},c0=80,u0="music-room:player",vp=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),Ip=(e,r)=>vp.has(e)&&r?._event?.id===u0,Ap=({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{if(e.selectHasPendingRenderWork?.())return;let s=e.prepareRenderState?.(t)??e.selectRenderState(t);n?.(s),r.render(s),a(o)&&e.commitRenderState?.(s)},p0=({engine:e,routeGraphics:r,trackRenderDispatch:n,getRenderDispatchCount:o,lifecycleGeneration:a,isCurrentLifecycle:t},s)=>{let i=o?.()??0,l=e.handleLineActions(s);(o?.()??0)===i&&Ap({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:a,isCurrentLifecycle:t},s)},xi=({ticker:e,timerState:r,callback:n})=>{e.remove(n),r.getCallback()===n&&(r.setCallback(null),r.setElapsed(0))},d0=({engine:e,ticker:r,autoTimer:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{let s=n.getCallback();s&&r.remove(s),n.setElapsed(0);let i=l=>{if(!a(o)){xi({ticker:r,timerState:n,callback:i});return}n.addElapsed(l.deltaMS);let c=t.delay??1e3;n.getElapsed()>=c&&(r.remove(i),n.setCallback(null),n.setElapsed(0),Gt(e,"nextLineFromSystem",{}))};n.setCallback(i),r.add(i)},f0=({ticker:e,autoTimer:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},m0=({engine:e,ticker:r,skipTimer:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{let s=n.getCallback();s&&r.remove(s),n.setElapsed(0);let i=l=>{if(!a(o)){xi({ticker:r,timerState:n,callback:i});return}n.addElapsed(l.deltaMS);let c=t?.delay??c0;n.getElapsed()>=c&&(n.setElapsed(0),Gt(e,"nextLineFromSystem",{}))};n.setCallback(i),r.add(i)},y0=({ticker:e,skipTimer:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},h0=({engine:e,ticker:r,nextLineConfigTimerState:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{let s=n.getCallback();s&&r.remove(s),n.setElapsed(0);let i=l=>{if(!a(o)){xi({ticker:r,timerState:n,callback:i});return}n.addElapsed(l.deltaMS);let c=t.delay??1e3;n.getElapsed()>=c&&(n.setElapsed(0),Gt(e,"nextLineFromSystem",{}),r.remove(i),n.getCallback()===i&&n.setCallback(null))};n.setCallback(i),r.add(i)},g0=({ticker:e,nextLineConfigTimerState:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},b0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveSlots(r?.saveSlots))},I0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalDeviceVariables(r?.globalDeviceVariables))},w0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalAccountVariables(r?.globalAccountVariables))},v0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalRuntime(r?.globalRuntime))},A0=({enqueuePersistenceWrite:e},r)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(r?.updates)})},wp={render:Ap,saveSlots:b0,saveGlobalDeviceVariables:I0,saveGlobalAccountVariables:w0,saveGlobalRuntime:v0,applyScopedDataUpdates:A0,handleLineActions:p0,startAutoNextTimer:d0,clearAutoNextTimer:f0,startSkipNextTimer:m0,clearSkipNextTimer:y0,nextLineConfigTimer:h0,clearNextLineConfigTimer:g0},k0=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),Gt=(e,r,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(r,n)},P0=(e=[])=>{let r=new Set,n=[];for(let o=e.length-1;o>=0;o-=1){let a=e[o];if(typeof a?.name!="string"||a.name.length===0)throw new Error("Pending effect is missing a valid name.");if(!k0.has(a.name)){n.unshift(a);continue}r.has(a.name)||(r.add(a.name),n.unshift(a))}return n},x0=({getEngine:e,routeGraphics:r,ticker:n,handleUnhandledEffect:o,handlePersistenceError:a,indexedDB:t,persistence:s,namespace:i})=>{let l=Pi(),c=Pi(),u=Pi(),p=new Map,m=Promise.resolve(),d=null,f=null,y=!1,g=0,h=0,I=!0,b=$=>{let j=$.getCallback();j&&n.remove(j),$.setCallback(null),$.setElapsed(0)},x=()=>{b(l),b(c),b(u)},v=()=>{d=null,f=null,y=!1,g=0},k=()=>{h+=1,x(),v(),I=!0},S=()=>{h+=1,I=!1,x(),v()},C=$=>I&&$===h,N=$=>{if(a){a($);return}console.error("RouteEngine persistence write failed.",$)},P=$=>{if(s)return s;let j=at($),F=p.get(j);if(F)return F;let K=bi({indexedDB:t,namespace:j});return p.set(j,K),K},T=$=>{let j=s?null:at(i??e()?.getNamespace?.()),F;m=m.catch(()=>{}).then(()=>(F=P(j),$(F))).catch(K=>{!s&&p.get(j)===F&&p.delete(j),N(K)})},V=$=>{if(!I)return;let j=typeof $?.id=="string"&&$.id.length>0?$.id:null;g+=1,d=j,y=!1},le=()=>g,G=($={})=>{if(!I||$?.aborted===!0)return!1;let j=typeof $?.id=="string"&&$.id.length>0?$.id:null;return j?j!==d||j===f?!1:(f=j,!0):d!==null||y?!1:(y=!0,!0)},ee=($,j={})=>{if(!I)return!1;if(Ip($,j)){let K=vp.get($),xe=e();return Gt(xe,K,j?._event),!0}if($!=="renderComplete"||!G(j))return!1;let F=e();return Gt(F,"markLineCompleted",{}),!0},Pe=new Set(["updateFormField","submitForm","cancelForm"]),Fe=new Set(["updateVariable"]),oe=$=>typeof $?.selectActiveInteraction=="function"?$.selectActiveInteraction():typeof $?.selectIsChoiceVisible=="function"&&$.selectIsChoiceVisible()?{source:"choice"}:null,me=$=>$?._formKey??$?.formKey,Ae=($,j)=>me($)===j?.formKey,ye=($,j)=>!$||typeof $!="object"||Array.isArray($)?!1:$._interactionSource===j?.source,re=($,j)=>ye($,j)?j.source==="form"?Ae($,j):!0:!1,ce=($,j)=>!$||typeof $!="object"||Array.isArray($)||j?.source!=="form"?!1:Ae($,j),se=($={},j)=>Object.keys($).length>0&&Object.entries($).every(([F,K])=>Pe.has(F)?ce(K,j):Fe.has(F)),ie=($={},j)=>{let F=$?.actions;return j?.source==="form"?!F||typeof F!="object"||Array.isArray(F)?!1:se(F,j):re($,j)?!0:!F||typeof F!="object"||Array.isArray(F)?!1:Object.values(F).some(K=>re(K,j))},Ue=($,j={})=>{if(!j?.actions)return!1;let F=oe($);return!F||F.source==="choice"?!1:!ie(j,F)},ur=({preprocessPayload:$,onEvent:j}={})=>async(F,K={})=>{if(!I)return!1;if(Ip(F,K))return ee(F,K),j?.(F,K);let xe=e(),pr=h,Ie=g;if(Ue(xe,K))return j?.(F,K);let ue=await $?.(F,K)??K;if(!C(pr)||e()!==xe||g!==Ie)return!1;if(Ue(xe,ue))return j?.(F,ue);if(ee(F,ue),ue?.actions){let ut=ue?._event?{_event:ue._event}:ue?.event?{_event:ue.event}:void 0,Br;ue?.bypassChoice===!0?Br={bypassChoice:!0}:ue?._interactionSource&&(Br={interactionSource:ue._interactionSource}),Br?xe.handleActions(ue.actions,ut,Br):xe.handleActions(ue.actions,ut)}return j?.(F,ue)},Oe=$=>{if(!I)return;let j=h,F=e(),K=P0($),xe=K.some(Ie=>Ie.name==="handleLineActions");K.forEach(Ie=>{if(!wp[Ie.name]&&!o)throw new Error(`Unhandled pending effect "${Ie.name}".`)});let pr={engine:F,routeGraphics:r,ticker:n,autoTimer:l,skipTimer:c,nextLineConfigTimerState:u,trackRenderDispatch:V,getRenderDispatchCount:le,enqueuePersistenceWrite:T,lifecycleGeneration:h,isCurrentLifecycle:C};for(let Ie of K){if(!C(j))break;if(xe&&Ie.name==="render")continue;let ue=wp[Ie.name];if(ue){ue(pr,Ie.payload);continue}o(Ie,pr)}};return Oe.handleRouteGraphicsEvent=ee,Oe.createRouteGraphicsEventHandler=ur,Oe.reset=k,Oe.dispose=S,Oe},E0=x0;var S0=(e,r={})=>{let{resources:n={}}=r;return _o(e,n)};var uv=ki;export{co as DEFAULT_VISUAL_LAYER,Kr as RENDER_LAYER,er as VISUAL_LAYER,E0 as createEffectsHandler,oI as createIndexedDbPersistence,uv as default,ro as formatDate,gf as resolveComputedVariables,S0 as resolveLayoutReferences};
|
|
1
|
+
var xd=Object.defineProperty;var Ed=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Sd=(e,r)=>{for(var n in r)xd(e,n,{get:r[n],enumerable:!0})};var wu=Ed(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});function Iu(e){let r=e.length,n=0,o=0,a;for(;o<r;)n++,a=e.charCodeAt(o++),a>=55296&&a<=56319&&o<r&&(a=e.charCodeAt(o),(a&64512)===56320&&o++);return n}Si.default=Iu;Iu.code='require("ajv/dist/runtime/ucs2length").default'});var Ji=Symbol.for("immer-nothing"),Gi=Symbol.for("immer-draftable"),Re=Symbol.for("immer-state");function De(e,...r){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Gr=Object.getPrototypeOf;function we(e){return!!e&&!!e[Re]}function Or(e){return e?Qi(e)||Array.isArray(e)||!!e[Gi]||!!e.constructor?.[Gi]||tn(e)||nn(e):!1}var Rd=Object.prototype.constructor.toString();function Qi(e){if(!e||typeof e!="object")return!1;let r=Gr(e);if(r===null)return!0;let n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return n===Object?!0:typeof n=="function"&&Function.toString.call(n)===Rd}function en(e){return we(e)||De(15,e),e[Re].base_}function Jt(e,r){rn(e)===0?Reflect.ownKeys(e).forEach(n=>{r(n,e[n],e)}):e.forEach((n,o)=>r(o,n,e))}function rn(e){let r=e[Re];return r?r.type_:Array.isArray(e)?1:tn(e)?2:nn(e)?3:0}function js(e,r){return rn(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function Zi(e,r,n){let o=rn(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function Od(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function tn(e){return e instanceof Map}function nn(e){return e instanceof Set}function Rr(e){return e.copy_||e.base_}function Ns(e,r){if(tn(e))return new Map(e);if(nn(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=Qi(e);if(r===!0||r==="class_only"&&!n){let o=Object.getOwnPropertyDescriptors(e);delete o[Re];let a=Reflect.ownKeys(o);for(let t=0;t<a.length;t++){let s=a[t],i=o[s];i.writable===!1&&(i.writable=!0,i.configurable=!0),(i.get||i.set)&&(o[s]={configurable:!0,writable:!0,enumerable:i.enumerable,value:e[s]})}return Object.create(Gr(e),o)}else{let o=Gr(e);if(o!==null&&n)return{...e};let a=Object.create(o);return Object.assign(a,e)}}function Vs(e,r=!1){return sn(e)||we(e)||!Or(e)||(rn(e)>1&&(e.set=e.add=e.clear=e.delete=Cd),Object.freeze(e),r&&Object.entries(e).forEach(([n,o])=>Vs(o,!0))),e}function Cd(){De(2)}function sn(e){return Object.isFrozen(e)}var $d={};function Cr(e){let r=$d[e];return r||De(0,e),r}var pt;function ea(){return pt}function _d(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Hi(e,r){r&&(Cr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function Ds(e){Ls(e),e.drafts_.forEach(Td),e.drafts_=null}function Ls(e){e===pt&&(pt=e.parent_)}function Xi(e){return pt=_d(pt,e)}function Td(e){let r=e[Re];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function Wi(e,r){r.unfinalizedDrafts_=r.drafts_.length;let n=r.drafts_[0];return e!==void 0&&e!==n?(n[Re].modified_&&(Ds(r),De(4)),Or(e)&&(e=Qt(r,e),r.parent_||Zt(r,e)),r.patches_&&Cr("Patches").generateReplacementPatches_(n[Re].base_,e,r.patches_,r.inversePatches_)):e=Qt(r,n,[]),Ds(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Ji?e:void 0}function Qt(e,r,n){if(sn(r))return r;let o=r[Re];if(!o)return Jt(r,(a,t)=>Ki(e,o,r,a,t,n)),r;if(o.scope_!==e)return r;if(!o.modified_)return Zt(e,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;let a=o.copy_,t=a,s=!1;o.type_===3&&(t=new Set(a),a.clear(),s=!0),Jt(t,(i,l)=>Ki(e,o,a,i,l,n,s)),Zt(e,a,!1),n&&e.patches_&&Cr("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function Ki(e,r,n,o,a,t,s){if(we(a)){let i=t&&r&&r.type_!==3&&!js(r.assigned_,o)?t.concat(o):void 0,l=Qt(e,a,i);if(Zi(n,o,l),we(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(Or(a)&&!sn(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Qt(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,o)&&Zt(e,a)}}function Zt(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Vs(r,n)}function jd(e,r){let n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:ea(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=o,t=Fs;n&&(a=[o],t=dt);let{revoke:s,proxy:i}=Proxy.revocable(a,t);return o.draft_=i,o.revoke_=s,i}var Fs={get(e,r){if(r===Re)return e;let n=Rr(e);if(!js(n,r))return Nd(e,n,r);let o=n[r];return e.finalized_||!Or(o)?o:o===_s(e.base_,r)?(Ts(e),e.copy_[r]=qs(o,e)):o},has(e,r){return r in Rr(e)},ownKeys(e){return Reflect.ownKeys(Rr(e))},set(e,r,n){let o=ra(Rr(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){let a=_s(Rr(e),r),t=a?.[Re];if(t&&t.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(Od(n,a)&&(n!==void 0||js(e.base_,r)))return!0;Ts(e),Ms(e)}return e.copy_[r]===n&&(n!==void 0||r in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=n,e.assigned_[r]=!0),!0},deleteProperty(e,r){return _s(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,Ts(e),Ms(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){let n=Rr(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){De(11)},getPrototypeOf(e){return Gr(e.base_)},setPrototypeOf(){De(12)}},dt={};Jt(Fs,(e,r)=>{dt[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}});dt.deleteProperty=function(e,r){return dt.set.call(this,e,r,void 0)};dt.set=function(e,r,n){return Fs.set.call(this,e[0],r,n,e[0])};function _s(e,r){let n=e[Re];return(n?Rr(n):e)[r]}function Nd(e,r,n){let o=ra(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function ra(e,r){if(!(r in e))return;let n=Gr(e);for(;n;){let o=Object.getOwnPropertyDescriptor(n,r);if(o)return o;n=Gr(n)}}function Ms(e){e.modified_||(e.modified_=!0,e.parent_&&Ms(e.parent_))}function Ts(e){e.copy_||(e.copy_=Ns(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Dd=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(r,n,o)=>{if(typeof r=="function"&&typeof n!="function"){let t=n;n=r;let s=this;return function(l=t,...u){return s.produce(l,c=>n.call(this,c,...u))}}typeof n!="function"&&De(6),o!==void 0&&typeof o!="function"&&De(7);let a;if(Or(r)){let t=Xi(this),s=qs(r,void 0),i=!0;try{a=n(s),i=!1}finally{i?Ds(t):Ls(t)}return Hi(t,o),Wi(a,t)}else if(!r||typeof r!="object"){if(a=n(r),a===void 0&&(a=r),a===Ji&&(a=void 0),this.autoFreeze_&&Vs(a,!0),o){let t=[],s=[];Cr("Patches").generateReplacementPatches_(r,a,t,s),o(t,s)}return a}else De(1,r)},this.produceWithPatches=(r,n)=>{if(typeof r=="function")return(s,...i)=>this.produceWithPatches(s,l=>r(l,...i));let o,a;return[this.produce(r,n,(s,i)=>{o=s,a=i}),o,a]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){Or(e)||De(8),we(e)&&(e=ur(e));let r=Xi(this),n=qs(e,void 0);return n[Re].isManual_=!0,Ls(r),n}finishDraft(e,r){let n=e&&e[Re];(!n||!n.isManual_)&&De(9);let{scope_:o}=n;return Hi(o,r),Wi(void 0,o)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,r){let n;for(n=r.length-1;n>=0;n--){let a=r[n];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}n>-1&&(r=r.slice(n+1));let o=Cr("Patches").applyPatches_;return we(e)?o(e,r):this.produce(e,a=>o(a,r))}};function qs(e,r){let n=tn(e)?Cr("MapSet").proxyMap_(e,r):nn(e)?Cr("MapSet").proxySet_(e,r):jd(e,r);return(r?r.scope_:ea()).drafts_.push(n),n}function ur(e){return we(e)||De(10,e),ta(e)}function ta(e){if(!Or(e)||sn(e))return e;let r=e[Re],n;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=Ns(e,r.scope_.immer_.useStrictShallowCopy_)}else n=Ns(e,!0);return Jt(n,(o,a)=>{Zi(n,o,ta(a))}),r&&(r.finalized_=!1),n}var Ce=new Dd,on=Ce.produce,I0=Ce.produceWithPatches.bind(Ce),w0=Ce.setAutoFreeze.bind(Ce),k0=Ce.setUseStrictShallowCopy.bind(Ce),v0=Ce.applyPatches.bind(Ce),A0=Ce.createDraft.bind(Ce),P0=Ce.finishDraft.bind(Ce);var P={LITERAL:0,VARIABLE:1,INTERPOLATION:2,FUNCTION:3,BINARY:4,UNARY:5,CONDITIONAL:6,LOOP:7,OBJECT:8,ARRAY:9,PARTIAL:10,PATH_REFERENCE:11},W={EQ:0,NEQ:1,GT:2,LT:3,GTE:4,LTE:5,AND:6,OR:7,IN:8,ADD:10,SUBTRACT:11},Hr={NOT:0};var j=class extends Error{constructor(r){super(`Parse Error: ${r}`),this.name="JemplParseError"}},Ee=class extends Error{constructor(r){super(`Render Error: ${r}`),this.name="JemplRenderError"}};var Us=e=>{if(!e||e.trim()==="")throw new j("Missing condition expression after '$if'");if(e.includes("===")||e.includes("!==")){let n=e.includes("===")?"==":"!=";throw new j(`Invalid comparison operator '${e.includes("===")?"===":"!=="}' - did you mean '${n}'? (got: '${e}')`)}let r=["<",">","<=",">=","==","!="];for(let n of r)if(e.trim().endsWith(n))throw new j(`Incomplete comparison expression - missing right operand (got: '${e}')`)},na=e=>{if(e.trim().endsWith(" in"))throw new j(`Missing iterable expression after 'in' (got: '$for ${e}')`);if(!e.includes(" in "))throw new j(`Invalid loop syntax - missing 'in' keyword (got: '$for ${e}')`);let[r,n]=e.split(" in ");if(!n||n.trim()==="")throw new j(`Missing iterable expression after 'in' (got: '$for ${e}')`);let o=r.includes(",")?r.split(",").map(a=>a.trim()):[r.trim()];for(let a of o){if(!a)throw new j(`Invalid loop variable - variable name cannot be empty (got: '$for ${e}')`);if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(a))throw new j(`Invalid loop syntax (got: '$for ${e}')`)}};var sa=(e,r,n=!1)=>{if(r===null)return new Ee(`Cannot iterate over null value at '$for ${e}'`);if(r===void 0)return new Ee(`Cannot iterate over undefined value at '$for ${e}'`);let o=typeof r;return n?new Ee(`Cannot iterate over non-array value in loop '${e}' - got ${o} instead`):new Ee(`Cannot iterate over non-array value (got: ${o}) at '$for ${e}'`)},oa=(e,r)=>{let n=r&&Object.keys(r).length>0?Object.keys(r).join(", "):"no custom functions provided";return new Ee(`Unknown function '${e}' (${n})`)};var Ld=(e,r,n={})=>{let o={},a={};n&&typeof n=="object"&&(n.functions!==void 0||n.partials!==void 0?(o=n.functions||{},a=n.partials||{}):typeof n=="object"&&(o=n));let s=J(e,{functions:o,partials:a},r,{});return s===void 0?{}:s},J=(e,r,n,o)=>{let a=r.functions||r;if(e.var&&!e.type)return ge(e.var,n,o);if(e.type===P.LITERAL)return e.value;if(e.type===P.VARIABLE)return ge(e.path,n,o);if(e.type===P.INTERPOLATION)return qd(e.parts,r,n,o);switch(e.type){case P.FUNCTION:return aa(e,r,n,o);case P.BINARY:return la(e,r,n,o);case P.UNARY:return ca(e,r,n,o);case P.CONDITIONAL:return Fd(e,r,n,o);case P.LOOP:return Gd(e,r,n,o);case P.OBJECT:return Xd(e,r,n,o);case P.ARRAY:return Wd(e,r,n,o);case P.PARTIAL:return Kd(e,r,n,o);case P.PATH_REFERENCE:return Jd(e,r,n,o);default:throw new Error(`Unknown node type: ${e.type}`)}},ia=new Map,Md=e=>{let r=[],n="",o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(t==="[")n&&(r.push({type:"property",value:n}),n=""),o=!0;else if(t==="]"){if(o&&n){let s=n.trim();if(/^\d+$/.test(s))r.push({type:"index",value:parseInt(s,10)});else if(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")){let i=s.slice(1,-1);r.push({type:"property",value:i})}else r.push({type:"property",value:s});n=""}o=!1}else n+=t}return n&&r.push({type:"property",value:n}),r},ge=(e,r,n)=>{if(!e)return;if(e in n)return n[e];let o=ia.get(e);if(!o){let t=[],s="",i=0;for(let l=0;l<e.length;l++){let u=e[l];u==="["?(i++,s+=u):u==="]"?(i--,s+=u):u==="."&&i===0?s&&(t.push(s),s=""):s+=u}s&&t.push(s),o=[];for(let l of t){let u=Md(l.trim());o.push(...u)}ia.set(e,o)}let a=r;for(let t=0;t<o.length;t++){let s=o[t];if(s.type==="property"&&s.value in n){a=n[s.value];continue}if(a==null)return;(s.type==="property"||s.type==="index")&&(a=a[s.value])}return a},qd=(e,r,n,o)=>{let a=[];for(let t of e)if(typeof t=="string")a.push(t);else{let s=J(t,r,n,o);a.push(s!=null?String(s):"")}return a.join("")},aa=(e,r,n,o)=>{let a=r.functions||r,t=a[e.name];if(!t)throw oa(e.name,a);let s=e.args.map(i=>J(i,r,n,o));return t(...s)},pr=(e,r,n,o)=>{if(e.var&&!e.type)return ge(e.var,n,o);switch(e.type){case P.VARIABLE:return ge(e.path,n,o);case P.LITERAL:return e.value;case P.BINARY:return la(e,r,n,o);case P.UNARY:return ca(e,r,n,o);case P.FUNCTION:return aa(e,r,n,o);default:return J(e,r,n,o)}},la=(e,r,n,o)=>{if(e.op===W.AND||e.op===W.OR){let s=pr(e.left,r,n,o),i=pr(e.right,r,n,o);switch(e.op){case W.AND:return s&&i;case W.OR:return s||i}}let a=J(e.left,r,n,o),t=J(e.right,r,n,o);switch(e.op){case W.EQ:return a==t;case W.NEQ:return a!=t;case W.GT:return a>t;case W.LT:return a<t;case W.GTE:return a>=t;case W.LTE:return a<=t;case W.IN:return Array.isArray(t)?t.includes(a):!1;case W.ADD:if(typeof a!="number"||typeof t!="number")throw new Ee(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof t}`);return a+t;case W.SUBTRACT:if(typeof a!="number"||typeof t!="number")throw new Ee(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof t}`);return a-t;default:throw new Error(`Unknown binary operator: ${e.op}`)}},ca=(e,r,n,o)=>{let a=e.op===Hr.NOT?pr(e.operand,r,n,o):J(e.operand,r,n,o);if(e.op===Hr.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},Vd=(e,r,n,o)=>{if(e.conditions.length===2&&e.conditions[1]===null){let a=e.conditions[0];if(a.type===P.VARIABLE)if(ge(a.path,n,o)){let s=e.bodies[0];if(s.type===P.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let u=l.parsedKey?J(l.parsedKey,r,n,o):l.key,c=l.value;if(c.type===P.LITERAL)i[u]=c.value;else if(c.type===P.VARIABLE)i[u]=ge(c.path,n,o);else if(c.type===P.INTERPOLATION){let p=[];for(let m of c.parts)if(typeof m=="string")p.push(m);else if(m.type===P.VARIABLE){let d=ge(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=J(m,r,n,o);p.push(d!=null?String(d):"")}i[u]=p.join("")}else i[u]=J(c,r,n,o)}return i}}else{let s=e.bodies[1];if(s.type===P.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let u=l.parsedKey?J(l.parsedKey,r,n,o):l.key,c=l.value;if(c.type===P.LITERAL)i[u]=c.value;else if(c.type===P.VARIABLE)i[u]=ge(c.path,n,o);else if(c.type===P.INTERPOLATION){let p=[];for(let m of c.parts)if(typeof m=="string")p.push(m);else if(m.type===P.VARIABLE){let d=ge(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=J(m,r,n,o);p.push(d!=null?String(d):"")}i[u]=p.join("")}else i[u]=J(c,r,n,o)}return i}}}return null},Fd=(e,r,n,o)=>{let a=Vd(e,r,n,o);if(a!==null)return a;for(let t=0;t<e.conditions.length;t++){let s=e.conditions[t];if(s===null||pr(s,r,n,o))return J(e.bodies[t],r,n,o)}return ua},Ud=(e,r)=>{let n=e.body,o=e.itemVar;if(n.type===P.CONDITIONAL&&n.conditions.length===1&&n.conditions[0].type===P.VARIABLE){let a=n.conditions[0].path,t=n.bodies[0];if(a.startsWith(o+".")){let s=a.substring(o.length+1);if(t.type===P.OBJECT&&t.properties.length<=5){for(let l of t.properties)if(l.parsedKey)return null;let i=[];for(let l=0;l<r.length;l++){let u=r[l];if(u[s]){let c={};for(let p of t.properties){let m=p.key,d=p.value;if(d.type===P.LITERAL)c[m]=d.value;else if(d.type===P.VARIABLE){let f=d.path;if(f===o)c[m]=u;else if(f.startsWith(o+".")){let y=f.substring(o.length+1);c[m]=u[y]}else return null}else if(d.type===P.INTERPOLATION){let f=[],y=!0;for(let g of d.parts)if(typeof g=="string")f.push(g);else if(g.type===P.VARIABLE){let h=g.path;if(h===o)f.push(u!=null?String(u):"");else if(h.startsWith(o+".")){let w=h.substring(o.length+1),b=u[w];f.push(b!=null?String(b):"")}else{y=!1;break}}else{y=!1;break}if(!y)return null;c[m]=f.join("")}else return null}i.push(c)}}return i}}}return null},Bd=(e,r)=>{let n=e.body,o=e.itemVar,a=Ud(e,r);if(a!==null)return a;if(n.type===P.OBJECT&&n.properties.length<=5&&!n.whenCondition){for(let i of n.properties)if(i.parsedKey)return null;let t=[],s=!0;for(let i of n.properties){let l=i.key,u=i.value;if(u.type===P.LITERAL)t.push({key:l,type:"literal",value:u.value});else if(u.type===P.VARIABLE){let c=u.path;if(c===o)t.push({key:l,type:"item"});else if(c.startsWith(o+".")){let p=c.substring(o.length+1);if(!p.includes(".")&&!p.includes("["))t.push({key:l,type:"prop",prop:p});else{s=!1;break}}else{s=!1;break}}else if(u.type===P.INTERPOLATION&&u.parts.length===1){let c=u.parts[0];if(c.type===P.VARIABLE){let p=c.path;if(p===o)t.push({key:l,type:"item_string"});else if(p.startsWith(o+".")){let m=p.substring(o.length+1);if(!m.includes(".")&&!m.includes("["))t.push({key:l,type:"prop_string",prop:m});else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}if(s){let i=new Array(r.length);if(t.length===3&&t[0].type==="prop"&&t[0].key==="id"&&t[1].type==="prop_string"&&t[1].key==="title"&&t[2].type==="prop"&&t[2].key==="completed")for(let l=0;l<r.length;l++){let u=r[l];i[l]={id:u.id,title:u.title!=null?String(u.title):"",completed:u.completed}}else for(let l=0;l<r.length;l++){let u=r[l],c={};for(let p of t)if(p.type==="literal")c[p.key]=p.value;else if(p.type==="item")c[p.key]=u;else if(p.type==="prop")c[p.key]=u[p.prop];else if(p.type==="item_string")c[p.key]=u!=null?String(u):"";else if(p.type==="prop_string"){let m=u[p.prop];c[p.key]=m!=null?String(m):""}i[l]=c}return i}}return null},zd=(e,r,n,o,a)=>{let t=[],s=e.body;if(s.type===P.OBJECT&&s.fast!==!1){let i=e.itemVar,l=e.indexVar;for(let u=0;u<a.length;u++){let c=a[u],p={},m={...o,[i]:c,...l&&{[l]:u}};m.__paths__||(m.__paths__=o.__paths__||{});let d=e.iterable.path||"";if(o&&o.__paths__&&d){let f=d.split("."),y=f[0];y in o.__paths__&&(d=o.__paths__[y],f.length>1&&(d+="."+f.slice(1).join(".")))}m.__paths__={...m.__paths__,[i]:`${d}[${u}]`,...l&&{[l]:u}};for(let f of s.properties){let y=f.parsedKey?J(f.parsedKey,r,n,m):f.key,g=f.value;if(g.type===P.LITERAL)p[y]=g.value;else if(g.type===P.VARIABLE){let h=g.path;if(h===i)p[y]=c;else if(h===l)p[y]=u;else if(h.startsWith(i+".")){let w=h.substring(i.length+1);!w.includes(".")&&!w.includes("[")?p[y]=c[w]:p[y]=ge(h,n,{...o,[i]:c,...l&&{[l]:u}})}else p[y]=ge(h,n,{...o,[i]:c,...l&&{[l]:u}})}else if(g.type===P.INTERPOLATION){let h=[];for(let w of g.parts)if(typeof w=="string")h.push(w);else if(w.type===P.VARIABLE){let b=w.path,E;if(b===i)E=c;else if(b===l)E=u;else if(b.startsWith(i+".")){let k=b.substring(i.length+1);!k.includes(".")&&!k.includes("[")?E=c[k]:E=ge(b,n,{...o,[i]:c,...l&&{[l]:u}})}else E=ge(b,n,{...o,[i]:c,...l&&{[l]:u}});h.push(E!=null?String(E):"")}else{let b={...o,[i]:c,...l&&{[l]:u}},E=J(w,r,n,b);h.push(E!=null?String(E):"")}p[y]=h.join("")}else{let h={...o,[i]:c,...l&&{[l]:u}};p[y]=J(g,r,n,h)}}t.push(p)}return t}return null},Yd=(e,r,n)=>{let o=e.body;if(o.type===P.OBJECT&&o.properties.length===1&&o.properties[0].key==="$if item.visible"){let t=o.properties[0].value;if(t.type===P.CONDITIONAL&&t.conditions.length===1&&t.conditions[0].type===P.VARIABLE&&t.conditions[0].path==="item.visible"){let s=t.bodies[0];if(s.type===P.OBJECT&&s.properties.length===2){let i=s.properties[0],l=s.properties[1];if(i.key==="id"&&i.value.type===P.VARIABLE&&i.value.path==="item.id"&&l.key==="$if item.highlighted"&&l.value.type===P.CONDITIONAL){let u=[];for(let c=0;c<r.length;c++){let p=r[c];if(p.visible){let m={id:p.id};p.highlighted?(m.highlight=!0,m.message=`This item is highlighted: ${p.name}`):(m.highlight=!1,m.message=p.name),u.push(m)}}return u}}}}return null},Gd=(e,r,n,o)=>{let a=J(e.iterable,r,n,o);if(!Array.isArray(a)){let u,c=!1;if(e.iterable.type===P.FUNCTION){c=!0;let m=e.iterable.args.map(d=>d.type===P.LITERAL?typeof d.value=="string"?`'${d.value}'`:String(d.value):d.type===P.VARIABLE?d.path:d.type===P.FUNCTION?`${d.name}(...)`:"?").join(", ");u=`${e.iterable.name}(${m})`}else u=e.iterable.path||"undefined";let p=`${e.itemVar}${e.indexVar?`, ${e.indexVar}`:""} in ${u}`;throw sa(p,a,c)}if(!e.indexVar){let u=Yd(e,a,e.itemVar);if(u!==null)return u}if(!e.indexVar){let u=Bd(e,a);if(u!==null)return u}let t=zd(e,r,n,o,a);if(t!==null)return t;let s=[],i=e.iterable.path||"";if(o&&o.__paths__&&i){let u=i.split("."),c=u[0];c in o.__paths__&&(i=o.__paths__[c],u.length>1&&(i+="."+u.slice(1).join(".")))}let l=!1;e.body.type===P.ARRAY&&(e.body.items.length<=1?l=!1:l=e.body._shouldPreserveArray??=e.body.items.some(u=>u.type===P.OBJECT&&u.properties.some(c=>c.key.startsWith("$if ")||c.key.startsWith("$when "))));for(let u=0;u<a.length;u++){let c=e.indexVar?{...o,[e.itemVar]:a[u],[e.indexVar]:u}:{...o,[e.itemVar]:a[u]};c.__paths__||(c.__paths__=o.__paths__||{}),c.__paths__={...c.__paths__,[e.itemVar]:`${i}[${u}]`},e.indexVar&&(c.__paths__[e.indexVar]=u);let p=J(e.body,r,n,c);if(Array.isArray(p)&&p.length===1&&!l){let m=p[0];s.push(m===void 0?{}:m)}else s.push(p===void 0?{}:p)}return s},Hd=(e,r,n,o)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],t=a.parsedKey?J(a.parsedKey,r,n,o):a.key,s=a.value;if(s.type===P.OBJECT&&s.properties.length<=10&&!s.whenCondition){let i={},l={},u=!0;for(let c of s.properties){let p=c.parsedKey?J(c.parsedKey,r,n,o):c.key,m=c.value;if(m.type===P.LITERAL)l[p]=m.value;else if(m.type===P.VARIABLE)l[p]=ge(m.path,n,o);else if(m.type===P.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===P.VARIABLE){let y=ge(f.path,n,o);d.push(y!=null?String(y):"")}else{u=!1;break}if(!u)break;l[p]=d.join("")}else if(m.type===P.OBJECT&&m.properties.length<=5){let d={};for(let f of m.properties){let y=f.key,g=f.value;if(g.type===P.LITERAL)d[y]=g.value;else if(g.type===P.VARIABLE)d[y]=ge(g.path,n,o);else if(g.type===P.INTERPOLATION){let h=[];for(let w of g.parts)if(typeof w=="string")h.push(w);else if(w.type===P.VARIABLE){let b=ge(w.path,n,o);h.push(b!=null?String(b):"")}else{u=!1;break}if(!u)break;d[y]=h.join("")}else{u=!1;break}}if(!u)break;l[p]=d}else{u=!1;break}}if(u)return i[t]=l,i}}return null},Xd=(e,r,n,o)=>{let a=r.functions||r;if(e.whenCondition&&!pr(e.whenCondition,a,n,o))return;let t=Hd(e,r,n,o);if(t!==null)return t;if(e.fast){let u={};for(let c of e.properties){let p=c.parsedKey?J(c.parsedKey,r,n,o):c.key,m=c.value;if(m.type===P.LITERAL)u[p]=m.value;else if(m.type===P.VARIABLE)u[p]=ge(m.path,n,o);else if(m.type===P.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===P.VARIABLE){let y=ge(f.path,n,o);d.push(y!=null?String(y):"")}else{let y=J(f,r,n,o);d.push(y!=null?String(y):"")}u[p]=d.join("")}else u[p]=J(m,r,n,o)}return u}let s={},i=null,l=!1;for(let u of e.properties)if(!u.key.startsWith("$if ")&&!u.key.match(/^\$if\s+\w+.*:?$/)&&!u.key.startsWith("$elif")&&!u.key.startsWith("$else")&&!u.key.startsWith("$for ")){l=!0;break}for(let u of e.properties)if(u.key.startsWith("$if ")||u.key.match(/^\$if\s+\w+.*:?$/)){let c=J(u.value,r,n,o);if(!l&&c!==null&&c!==void 0)return Array.isArray(c)&&c.length===1?c[0]:c;typeof c=="object"&&c!==null&&!Array.isArray(c)&&Object.assign(s,c)}else if(u.key.startsWith("$for ")){if(e.properties.length===1)return J(u.value,r,n,o)}else{let c=u.value;if(c&&c.type===P.OBJECT&&c.properties){let p=c.properties.find(m=>m.key.startsWith("$for "));if(p){let m=J(p.value,r,n,o);m!==void 0&&(s[u.key]=m)}else{let m=J(u.value,r,n,o);m!==void 0&&(s[u.key]=m)}}else{let p=u.parsedKey?J(u.parsedKey,r,n,o):u.key,m=J(u.value,r,n,o);m!==void 0&&(s[p]=m)}}return s},ua={},Wd=(e,r,n,o)=>{let a=[];for(let t of e.items)if(t.type===P.LOOP){let s=J(t,r,n,o);Array.isArray(s)&&t.flatten!==!1?a.push(...s):a.push(s)}else{let s=J(t,r,n,o);s!==ua&&s!==void 0&&a.push(s)}return a},Kd=(e,r,n,o)=>{let{name:a,data:t,whenCondition:s}=e,i=r.partials||{},l=r.functions||r;if(s&&!pr(s,l,n,o))return;if(!i[a])throw new Ee(`Partial '${a}' is not defined`);let u=o._partialStack||[];if(u.includes(a))throw new Ee(`Circular partial reference detected: ${a}`);let c=i[a],p=n,m={...o,_partialStack:[...u,a]};if(o){p={...n};for(let d of Object.keys(o))d.startsWith("_")||(p[d]=o[d])}if(t){let d=J(t,r,n,o);p={...p,...d}}return J(c,r,p,m)},Jd=(e,r,n,o)=>{let{path:a}=e,t=a.split("."),s=t[0],i=t.slice(1);if(!o||!(s in o))throw new Ee(`Path reference '#{${a}}' refers to '${s}' which is not a loop variable in the current scope`);if(o.__paths__||(o.__paths__={}),!(s in o.__paths__))throw new Ee(`Path reference '#{${a}}' cannot be resolved - path tracking may not be initialized properly`);let l=o.__paths__[s];if(typeof l=="number"){if(i.length>0)throw new Ee(`Path reference '#{${a}}' - cannot access properties on index variable '${s}'`);return String(l)}return i.length>0&&(l+="."+i.join(".")),l};var Bs=Ld;var Qd=/\$\{([^}]*)\}/g,Zd=/#\{([^}]*)\}/g,da=(e,r={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,o,a]=n,t=ef(a,r);return{isFunction:!0,type:P.FUNCTION,name:o,args:t}},ef=(e,r={})=>e.trim()?rf(e).map(o=>tf(o.trim(),r)):[],rf=e=>{let r=[],n="",o=0,a=!1,t="";for(let s=0;s<e.length;s++){let i=e[s],l=s>0?e[s-1]:"";!a&&(i==='"'||i==="'")?(a=!0,t=i,n+=i):a&&i===t&&l!=="\\"?(a=!1,t="",n+=i):!a&&i==="("?(o++,n+=i):!a&&i===")"?(o--,n+=i):!a&&i===","&&o===0?(r.push(n),n=""):n+=i}return n&&r.push(n),r},tf=(e,r={})=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:P.LITERAL,value:e.slice(1,-1)};if(/^-?\d+(\.\d+)?$/.test(e))return{type:P.LITERAL,value:parseFloat(e)};if(e==="true")return{type:P.LITERAL,value:!0};if(e==="false")return{type:P.LITERAL,value:!1};if(e==="null")return{type:P.LITERAL,value:null};let n=da(e,r);if(n.isFunction)return{type:n.type,name:n.name,args:n.args};let o=e.trim(),a=[{op:" + ",type:"ADD"},{op:" - ",type:"SUBTRACT"}],t=-1,s=null;for(let{op:i,type:l}of a){let u=0;for(;u<o.length;){let c=$r(o.substring(u),i);if(c===-1)break;let p=u+c;p>t&&(t=p,s={op:i,type:l}),u=p+i.length}}if(t!==-1)try{return ke(o,r)}catch{return{type:P.VARIABLE,path:o}}return{type:P.VARIABLE,path:o}},fa=/^\w+\(.*\)$/,nf=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,sf=e=>{if(!(!e||e.trim()===""||fa.test(e))&&nf.test(e))throw e.includes("?")&&e.includes(":")?new j(`Complex expressions not supported in variable replacements - consider calculating the value in your data instead. Offending expression: "${e}"`):e.includes("||")||e.includes("&&")||e.includes("??")?new j(`Logical operators not supported in variable replacements - consider calculating the value in your data instead (operators like ||, &&, ?? are not supported). Offending expression: "${e}"`):new j(`Arithmetic expressions not supported in variable replacements - consider calculating '${e}' in your data instead (expressions with +, -, *, /, % are not supported). Offending expression: "${e}"`)},pa=e=>{let r=e.trim();if(fa.test(r))throw new j(`Functions are not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("["))throw new j(`Array indices not supported in path references - use simple variable names or properties. Offending expression: "#{${e}}"`);if(/[+\-*/%]/.test(r))throw new j(`Arithmetic expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(/\|\||&&/.test(r))throw new j(`Logical operators not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("?")&&r.includes(":"))throw new j(`Complex expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);return{type:P.PATH_REFERENCE,path:r}},ft=(e,r={})=>{let n=e.trim();sf(n);let o=da(n,r);if(o.isFunction)return{type:o.type,name:o.name,args:o.args};if(n.includes("[")&&!/[\s+\-*/%|&?:]/.test(n)){let a=0;for(let t of n)t==="["?a++:t==="]"&&a--;if(a!==0)throw new Error("Invalid array index syntax")}return{type:P.VARIABLE,path:n}},zs=(e,r={})=>{let n=e,o=[];(e.includes("\\${")||e.includes("\\#{"))&&(n=e.replace(/\\\\(\$\{[^}]*\})/g,"\\DOUBLE_ESC_VAR$1"),n=n.replace(/\\\\(#\{[^}]*\})/g,"\\DOUBLE_ESC_PATH$1"),n=n.replace(/\\(\$\{[^}]*\})/g,(u,c)=>{let p=`__ESCAPED_${o.length}__`;return o.push(c),p}),n=n.replace(/\\(#\{[^}]*\})/g,(u,c)=>{let p=`__ESCAPED_${o.length}__`;return o.push(c),p}),n=n.replace(/\\DOUBLE_ESC_VAR/g,"\\"),n=n.replace(/\\DOUBLE_ESC_PATH/g,"\\"));let a=[...n.matchAll(Qd)],t=[...n.matchAll(Zd)],s=[...a.map(u=>({match:u,type:"variable"})),...t.map(u=>({match:u,type:"pathref"}))].sort((u,c)=>u.match.index-c.match.index);if(s.length===0){let u=n;for(let c=0;c<o.length;c++)u=u.replace(`__ESCAPED_${c}__`,o[c]);return{type:P.LITERAL,value:u}}if(s.length===1&&s[0].match[0]===n&&o.length===0){let{match:u,type:c}=s[0];try{return c==="variable"?ft(u[1],r):pa(u[1])}catch(p){if(p.message==="Invalid array index syntax")return{type:P.LITERAL,value:n};throw p}}let i=[],l=0;for(let{match:u,type:c}of s){let[p,m]=u,d=u.index;if(d>l){let f=n.substring(l,d);for(let y=0;y<o.length;y++)f=f.replace(`__ESCAPED_${y}__`,o[y]);f&&i.push(f)}try{let f;c==="variable"?f=ft(m.trim(),r):f=pa(m.trim()),i.push(f)}catch(f){if(f.message==="Invalid array index syntax")i.push(p);else throw f}l=d+p.length}if(l<n.length){let u=n.substring(l);for(let c=0;c<o.length;c++)u=u.replace(`__ESCAPED_${c}__`,o[c]);u&&i.push(u)}return{type:P.INTERPOLATION,parts:i}};var Hs=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ha=e=>Object.keys(e),xe=e=>e.join("."),dr=(e,r,n)=>{let o=ha(e).filter(a=>!r.has(a));if(o.length>0)throw new j(`Unexpected key '${o[0]}' in condition JSON at '${xe(n)}'`)},fr=(e,r)=>typeof e=="string"?zs(e,r):typeof e=="object"&&e!==null?Array.isArray(e)?af(e,r):lf(e,r):{type:P.LITERAL,value:e},of=e=>{let{$each:r,...n}=e;if(typeof r!="string")throw new j("$each value must be a non-empty string");let o=r.trim();if(o==="")throw new j("$each value must be a non-empty string");if(Object.keys(n).length===0)throw new j("Empty $each body not allowed");if(n.$partial!==void 0)throw new j("Cannot use $partial with $each at the same level. Wrap $partial in a parent object if you need conditionals.");return{[`$for ${o}`]:n}},af=(e,r)=>{let n=[],o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(t.$each!==void 0)try{let l=of(t),u=Object.keys(l);if(u.length===1&&/^\$for(?::\w+)?\s/.test(u[0])){let c=ya(u[0],l[u[0]],r,!0);n.push(c),o=!0;continue}}catch(l){throw l instanceof j?l:new j(l.message)}let i=Object.keys(t);if(i.length===1&&/^\$for(?::\w+)?\s/.test(i[0])){let l=ya(i[0],t[i[0]],r);n.push(l),o=!0;continue}}let s=fr(t,r);n.push(s),(s.type===P.FUNCTION||s.type===P.CONDITIONAL||s.type===P.LOOP||s.type===P.PARTIAL||s.type===P.OBJECT&&!s.fast||s.type===P.ARRAY&&!s.fast)&&(o=!0)}return{type:P.ARRAY,items:n,fast:!o}},lf=(e,r)=>{let n=[],o=!1,a=null,t=Object.entries(e),s=0;if(e.$partial!==void 0){if(typeof e.$partial!="string")throw new j("$partial value must be a string");if(e.$partial.trim()==="")throw new j("$partial value cannot be an empty string");let l=["$if","$elif","$else","$for"],u=[];for(let[h]of t)for(let w of l)if(h===w||h.startsWith(w+" ")||h.startsWith(w+"#")){u.push(w);break}if(u.length>0)throw new j(`Cannot use $partial with ${u.join(", ")} at the same level. Wrap $partial in a parent object if you need conditionals.`);let{$partial:c,$when:p,...m}=e,d={},f=!1;for(let[h,w]of Object.entries(m)){let b=h;(h.startsWith("\\$")||h.startsWith("$$"))&&(b=h.slice(1)),d[b]=w,f=!0}let y=null;if(f&&(y=fr(d,r),y.type===P.OBJECT)){let h=!1;for(let w of y.properties)if(w.value.type===P.VARIABLE||w.value.type===P.INTERPOLATION||w.value.type===P.FUNCTION||w.value.type===P.CONDITIONAL||w.value.type===P.OBJECT&&!w.value.fast||w.value.type===P.ARRAY&&!w.value.fast){h=!0;break}h&&(y.fast=!1)}let g={type:P.PARTIAL,name:c,data:y};return p!==void 0&&(g.whenCondition=ma(p,r)),g}for(let[l,u]of t)if(l==="$when"){if(a!==null)throw new j("Multiple '$when' directives on the same object are not allowed");if(u==null)throw new j("Missing condition expression after '$when'");a=ma(u,r),o=!0}else if(l.startsWith("$when#")||l.startsWith("$when "))throw new j("'$when' does not support ID syntax or inline conditions - use '$when' as a property");for(;s<t.length;){let[l,u]=t[s];if(l==="$when"){s++;continue}if(l==="$each")throw new j("$each can only be used inside arrays");if(l.startsWith("$if ")||l.match(/^\$if#\w+\s/)||l.match(/^\$if\s+\w+.*:$/)){let c=cf(t,s,r);n.push({key:l,value:c.node}),o=!0,s=c.nextIndex}else if(/^\$for(?::\w+)?\s/.test(l)){let c=l.match(/^\$for(?::(\w+))?\s/)?.[1]||"",p=c?`:${c}`:"";throw new j(`$for loops must be inside arrays - use '- $for${p} item in items:' instead of '$for${p} item in items:'. For cleaner object generation syntax, consider using $each.`)}else{if(l.startsWith("$elif ")||l.startsWith("$else"))throw new j(`'${l.split(" ")[0]}' without matching '$if'`);if(l==="$if"||l==="$if:")throw new j("Missing condition expression after '$if'");{let c=fr(u,r);(c.type===P.FUNCTION||c.type===P.CONDITIONAL||c.type===P.PARTIAL||c.type===P.OBJECT&&!c.fast||c.type===P.ARRAY&&!c.fast)&&(o=!0);let p=zs(l,r),m={key:l,value:c};(p.type!==P.LITERAL||p.value!==l)&&(m.parsedKey=p),n.push(m),s++}}}let i={type:P.OBJECT,properties:n,fast:!o};return a&&(i.whenCondition=a),i},cf=(e,r,n={})=>{let o=[],a=[],t=r,[s,i]=e[t],l=null,u;if(s.startsWith("$if#")){let p=s.match(/^\$if#(\w+)\s+(.+)$/);if(p)l=p[1],u=p[2];else throw new j(`Invalid conditional syntax: ${s}`)}else u=s.substring(4),u.endsWith(":")&&(u=u.slice(0,-1).trim());Us(u);let c=ke(u,n);for(o.push(c),a.push(fr(i,n)),t++;t<e.length;){let[p,m]=e[t],d=!1,f;if(l?p.startsWith(`$elif#${l} `)?(f=p.substring(`$elif#${l} `.length),f.endsWith(":")&&(f=f.slice(0,-1).trim()),d=!0):(p===`$else#${l}`||p===`$else#${l}:`)&&(d=!0,f=null):p.startsWith("$elif ")?(f=p.substring(6),f.endsWith(":")&&(f=f.slice(0,-1).trim()),d=!0):(p==="$else"||p==="$else:")&&(d=!0,f=null),d){if(f===null)o.push(null);else{Us(f);let y=ke(f,n);o.push(y)}if(a.push(fr(m,n)),t++,f===null)break}else break}return{node:{type:P.CONDITIONAL,conditions:o,bodies:a,id:l},nextIndex:t}},Ys={eq:W.EQ,neq:W.NEQ,gt:W.GT,gte:W.GTE,lt:W.LT,lte:W.LTE,in:W.IN,add:W.ADD,sub:W.SUBTRACT},Gs={all:W.AND,any:W.OR},uf=new Set(["var","literal","call","not",...Object.keys(Ys),...Object.keys(Gs)]),pf=(e,r,n)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${xe(n)}' requires an array`);if(e.length!==2)throw new j(`Condition JSON operator '${r}' at '${xe(n)}' requires exactly 2 operands`);return e},df=(e,r,n,o,a)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${xe(a)}' requires an array`);if(e.length===0)throw new j(`Condition JSON operator '${r}' at '${xe(a)}' requires at least 1 condition`);return e.map((s,i)=>Oe(s,o,[...a,i])).reduce((s,i)=>({type:P.BINARY,op:n,left:s,right:i}))},ff=(e,r,n)=>{let o,a;if(typeof e.call=="string")o=e.call,a=e.args??[],dr(e,new Set(["call","args"]),n);else if(Hs(e.call))o=e.call.name,a=e.call.args??[],dr(e,new Set(["call"]),n),dr(e.call,new Set(["name","args"]),[...n,"call"]);else throw new j(`Condition JSON call at '${xe(n)}' requires a function name`);if(typeof o!="string"||o.trim()==="")throw new j(`Condition JSON call at '${xe(n)}' requires a non-empty function name`);if(!/^\w+$/.test(o))throw new j(`Invalid condition JSON function name '${o}' at '${xe(n)}'`);if(!Array.isArray(a))throw new j(`Condition JSON call '${o}' at '${xe(n)}' requires args to be an array`);return{type:P.FUNCTION,name:o,args:a.map((t,s)=>Oe(t,r,[...n,"args",s]))}},Oe=(e,r={},n=["$when"])=>{if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null)return{type:P.LITERAL,value:e};if(Array.isArray(e))throw new j(`Condition JSON array at '${xe(n)}' must be wrapped in an operator or { literal: [...] }`);if(!Hs(e))throw new j(`Invalid condition JSON value at '${xe(n)}'`);let o=ha(e);if(o.length===0)throw new j(`Condition JSON object at '${xe(n)}' must contain an operator`);let a=o.filter(s=>uf.has(s));if(a.length===0)throw new j(`Unknown condition JSON operator '${o[0]}' at '${xe(n)}'`);if(a.length>1)throw new j(`Condition JSON at '${xe(n)}' must contain exactly one operator`);let t=a.includes("call")?"call":a[0];if(t==="var"){if(dr(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new j(`Condition JSON var at '${xe(n)}' requires a non-empty path`);return{type:P.VARIABLE,path:e.var}}if(t==="literal")return dr(e,new Set(["literal"]),n),{type:P.LITERAL,value:e.literal};if(t==="call")return ff(e,r,n);if(t==="not")return dr(e,new Set(["not"]),n),{type:P.UNARY,op:Hr.NOT,operand:Oe(e.not,r,[...n,"not"])};if(t in Gs)return dr(e,new Set([t]),n),df(e[t],t,Gs[t],r,[...n,t]);if(t in Ys){dr(e,new Set([t]),n);let s=pf(e[t],t,[...n,t]);return{type:P.BINARY,op:Ys[t],left:Oe(s[0],r,[...n,t,0]),right:Oe(s[1],r,[...n,t,1])}}throw new j(`Unknown condition JSON operator '${t}' at '${xe(n)}'`)},ma=(e,r={})=>{if(e==null)throw new j("Missing condition expression after '$when'");if(typeof e=="string"){if(e.trim()==="")throw new j("Empty condition expression after '$when'");return ke(e,r)}return Hs(e)||Array.isArray(e)?Oe(e,r):{type:P.LITERAL,value:e}},ke=(e,r={})=>{if(e=e.trim(),e.startsWith("(")&&e.endsWith(")")){let u=e.slice(1,-1),c=0,p=!0;for(let m=0;m<u.length;m++)if(u[m]==="("?c++:u[m]===")"&&c--,c<0){p=!1;break}if(p&&c===0)return ke(u,r)}let n=$r(e,"||");if(n!==-1)return{type:P.BINARY,op:W.OR,left:ke(e.substring(0,n).trim(),r),right:ke(e.substring(n+2).trim(),r)};let o=$r(e,"&&");if(o!==-1)return{type:P.BINARY,op:W.AND,left:ke(e.substring(0,o).trim(),r),right:ke(e.substring(o+2).trim(),r)};let a=[{op:">=",type:W.GTE},{op:"<=",type:W.LTE},{op:"==",type:W.EQ},{op:"!=",type:W.NEQ},{op:">",type:W.GT},{op:"<",type:W.LT},{op:" in ",type:W.IN}];for(let{op:u,type:c}of a){let p=$r(e,u);if(p!==-1)return{type:P.BINARY,op:c,left:ke(e.substring(0,p).trim(),r),right:ke(e.substring(p+u.length).trim(),r)}}let t=-1,s=null,i=[{op:" + ",type:W.ADD},{op:" - ",type:W.SUBTRACT}];for(let{op:u,type:c}of i){let p=0;for(;p<e.length;){let m=$r(e.substring(p),u);if(m===-1)break;let d=p+m;d>t&&(t=d,s={op:u,type:c}),p=d+u.length}}if(t!==-1&&s)return{type:P.BINARY,op:s.type,left:ke(e.substring(0,t).trim(),r),right:ke(e.substring(t+s.op.length).trim(),r)};let l=[" * "," / "," % "];for(let u of l)if($r(e,u)!==-1)throw new j(`Arithmetic operations are not allowed in conditionals: "${u}"`);return e.startsWith("!")?{type:P.UNARY,op:Hr.NOT,operand:ke(e.substring(1).trim(),r)}:ga(e,r)},$r=(e,r)=>{let n=0,o=0;for(;o<=e.length-r.length;){if(e[o]==="(")n++;else if(e[o]===")")n--;else if(n===0&&e.substring(o,o+r.length)===r)return o;o++}return-1},mf=e=>{if(e=e.trim(),e==="true")return{type:P.LITERAL,value:!0};if(e==="false")return{type:P.LITERAL,value:!1};if(e==="null")return{type:P.LITERAL,value:null};if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:P.LITERAL,value:e.slice(1,-1)};if(e==='""'||e==="''")return{type:P.LITERAL,value:""};if(e==="{}")return{type:P.LITERAL,value:{}};if(e==="[]")return{type:P.LITERAL,value:[]};let r=Number(e);return!isNaN(r)&&isFinite(r)?{type:P.LITERAL,value:r}:{type:P.VARIABLE,path:e}},ga=(e,r)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return ft(n,r);let a=mf(n);if(a.type===P.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:P.VARIABLE,path:n};try{return ft(n,r)}catch(t){if(t.message&&t.message.includes("not supported"))return a;throw t}},yf=(e,r=!1)=>{let n=r?"$each":"$for";try{na(e)}catch(o){if(o instanceof j&&r){let a=o.message.replace(/\$for/g,"$each");throw new j(a.replace("Parse Error: ",""))}throw o}},ya=(e,r,n,o=!1)=>{let a=/^\$for(?::(\w+))?\s+(.+)$/,t=e.match(a);if(!t){let g=o?"$each":"$for";throw new j(`Invalid loop syntax (got: '${e.replace("$for",g)}')`)}let s=t[1],i=t[2].trim();yf(i,o);let l=i.match(/^(.+?)\s+in\s+(.+)$/);if(!l){let g=o?"$each":"$for";throw new j(`Invalid loop syntax - missing 'in' keyword (got: '${g} ${i}')`)}let u=l[1].trim(),c=l[2].trim(),p,m=null;if(u.includes(",")){let g=u.split(",").map(h=>h.trim());if(g.length!==2)throw new j(`Invalid loop variables: ${u}. Expected format: "item" or "item, index"`);p=g[0],m=g[1]}else p=u;let d=["this","undefined","null","true","false"];if(d.includes(p))throw new j(`Reserved variable name: ${p}`);if(m&&d.includes(m))throw new j(`Reserved variable name: ${m}`);let f=ga(c,n),y=fr(r,n);return{type:P.LOOP,itemVar:p,indexVar:m,iterable:f,body:y,flatten:s!=="nested"}};var hf=(e,r={})=>{let{functions:n={}}=r;return fr(e,n)},an=hf;var mt={};Sd(mt,{now:()=>gf});var gf=()=>Date.now();var bf=(e,r,n={})=>{let{functions:o={},partials:a={}}=n,t={...mt,...o},s=an(e,{functions:t}),i={};for(let[l,u]of Object.entries(a))i[l]=an(u,{functions:t});return Bs(s,r,{functions:t,partials:i})},_r=bf;var If=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",wf=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,kf=(e,r)=>{if(If(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new j("Empty condition expression");return ke(e,r)}return Oe(e,r)},vf=(e,r={},n={})=>{let o=wf(n),a={...mt,...o},t=kf(e,a);return!!pr(t,{functions:a,partials:{}},r,{})},Xs=vf;var no=Symbol("runStoreTransaction"),Qs="__routeEngineConditionComparison",ln=(e,r)=>typeof e=="number"&&typeof r=="number"&&Number.isFinite(e)&&Number.isFinite(r)||typeof e=="string"&&typeof r=="string",mr=Object.freeze({eq:(e,r)=>e===r,neq:(e,r)=>e!==r,gt:(e,r)=>ln(e,r)&&e>r,gte:(e,r)=>ln(e,r)&&e>=r,lt:(e,r)=>ln(e,r)&&e<r,lte:(e,r)=>ln(e,r)&&e<=r}),Pa=Object.freeze(Object.fromEntries(Object.keys(mr).map(e=>[e,`${Qs}${e}`]))),Af=Object.freeze(Object.fromEntries(Object.entries(Pa).map(([e,r])=>[r,mr[e]]))),ba=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Pf=e=>{if(typeof e?.call=="string")return e.call;if(e?.call!==null&&typeof e?.call=="object"&&!Array.isArray(e.call))return e.call.name},cn=e=>{if(Array.isArray(e))return e.map(cn);if(e===null||typeof e!="object"||ba(e,"literal")||ba(e,"var"))return e;if(Pf(e)?.startsWith(Qs))throw new Error(`Condition function names beginning with "${Qs}" are reserved`);let n=Object.entries(e);if(n.length===1){let[[o,a]]=n,t=Pa[o];if(t)return{call:t,args:a.map(cn)}}return Object.fromEntries(n.map(([o,a])=>[o,cn(a)]))},ht=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Oe(e),Xs(cn(e),r,{functions:Af})},xf=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],xa=(e,r,n={})=>{let o={},a={},{transformSelectorFirstArgument:t=y=>y,transformActionFirstArgument:s=y=>y,createTransactionalMetadata:i,updateTransactionalMetadata:l,finalizeTransactionalMetadata:u}=n,c=typeof i=="function",p={state:structuredClone(e),...c?{transactionalMetadata:structuredClone(i())}:{}},m=0,d=(y,g)=>!c||!u?y:on(y,h=>{u({state:h.state,transactionalMetadata:h.transactionalMetadata,previousState:g.state,previousTransactionalMetadata:g.transactionalMetadata})});for(let[y,g]of Object.entries(r))y!=="createInitialState"&&(y.startsWith("select")?o[y]=(...h)=>g(t(p.state,p.transactionalMetadata),...h):a[y]=(...h)=>{let w,b=p,E=on(p,k=>{let v=g(s(k.state,k.transactionalMetadata),...h);w=v!==void 0&&!we(v)?v:void 0,c&&l&&l({actionName:y,args:h,state:k.state,transactionalMetadata:k.transactionalMetadata,previousState:b.state,previousTransactionalMetadata:b.transactionalMetadata})});return m===0&&(E=d(E,b)),p=E,w});let f=y=>{if(typeof y!="function")throw new Error("Store transaction requires a callback");let g=p,h=m===0;m+=1;let w;try{w=y()}catch(b){throw m-=1,p=g,b}if(m-=1,h)try{p=d(p,g)}catch(b){throw p=g,b}return w};return{...o,...a,[no]:f}},fn=(e,r)=>n=>{let o=e(),a=Array.isArray(n)?n:[n];return on(o,t=>{a.forEach(s=>{r.forEach(i=>{i(t,s)})})})};var Ef=(e,r)=>{if(e.default!==void 0)return e.default;let n=["number","boolean","string","object"];if(!n.includes(e.type))throw new Error(`Invalid variable type: ${e.type} for variable ${r}. Expected one of: ${n.join(", ")}`);switch(e.type){case"number":return 0;case"boolean":return!1;case"string":return"";case"object":return{}}},G=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Zs=(e,r,n)=>{Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0})},be=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Sf=new Set(["pageSize","groups"]),Rf=new Set(["id","variants"]),Of=new Set(["id","imageId"]),Cf=new Set(["pageSize","tracks"]),$f=new Set(["id","soundId","title","artist","album","description","coverImageId"]),_f=new Set(["pageSize","replays"]),Tf=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),Tr=(e,r,n)=>{Object.keys(e).forEach(o=>{if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)})},Xr=(e,r)=>{if(typeof e!="string"||e.length===0)throw new Error(`${r} must be a non-empty string`)},gt=(e={})=>{let r=e?.resources?.imageGallery;if(r===void 0)return;if(!be(r))throw new Error("resources.imageGallery must be an object");if(Tr(r,Sf,"resources.imageGallery"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.imageGallery.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.groups))throw new Error("resources.imageGallery.groups must be an array");let n=new Set;for(let[o,a]of r.groups.entries()){let t=`resources.imageGallery.groups[${o}]`;if(!be(a))throw new Error(`${t} must be an object`);if(Tr(a,Rf,t),Xr(a.id,`${t}.id`),n.has(a.id))throw new Error(`Duplicate image gallery group id "${a.id}"`);if(n.add(a.id),!Array.isArray(a.variants)||a.variants.length===0)throw new Error(`${t}.variants must be a non-empty array`);let s=new Set;for(let[i,l]of a.variants.entries()){let u=`${t}.variants[${i}]`;if(!be(l))throw new Error(`${u} must be an object`);if(Tr(l,Of,u),Xr(l.id,`${u}.id`),Xr(l.imageId,`${u}.imageId`),s.has(l.id))throw new Error(`Duplicate image gallery variant id "${l.id}" in group "${a.id}"`);if(s.add(l.id),!G(e?.resources?.images,l.imageId))throw new Error(`Image gallery variant "${a.id}.${l.id}" references unknown image "${l.imageId}"`)}}},bt=(e={})=>{let r=e?.resources?.musicRoom;if(r===void 0)return;if(!be(r))throw new Error("resources.musicRoom must be an object");if(Tr(r,Cf,"resources.musicRoom"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.musicRoom.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.tracks))throw new Error("resources.musicRoom.tracks must be an array");let n=new Set;for(let[o,a]of r.tracks.entries()){let t=`resources.musicRoom.tracks[${o}]`;if(!be(a))throw new Error(`${t} must be an object`);Tr(a,$f,t);for(let l of["id","soundId","title"])Xr(a[l],`${t}.${l}`);for(let l of["artist","album","description","coverImageId"])a[l]!==void 0&&Xr(a[l],`${t}.${l}`);if(n.has(a.id))throw new Error(`Duplicate music room track id "${a.id}"`);n.add(a.id);let s=e?.resources?.sounds?.[a.soundId];if(!G(e?.resources?.sounds,a.soundId))throw new Error(`Music room track "${a.id}" references unknown sound "${a.soundId}"`);if(!be(s))throw new Error(`Music room track "${a.id}" references invalid sound "${a.soundId}"`);if(s.playbackRate!==void 0&&(typeof s.playbackRate!="number"||!Number.isFinite(s.playbackRate)||s.playbackRate<=0))throw new Error(`Music room sound "${a.soundId}" playbackRate must be a finite number greater than 0`);let i=s.startAt??0;if(typeof i!="number"||!Number.isFinite(i)||i<0)throw new Error(`Music room sound "${a.soundId}" startAt must be a finite non-negative number`);if(s.endAt!==void 0&&s.endAt!==null&&(typeof s.endAt!="number"||!Number.isFinite(s.endAt)||s.endAt<=i))throw new Error(`Music room sound "${a.soundId}" endAt must be a finite number greater than startAt`);if(a.coverImageId!==void 0&&!G(e?.resources?.images,a.coverImageId))throw new Error(`Music room track "${a.id}" references unknown cover image "${a.coverImageId}"`)}},jf=(e,r,n)=>{let o=Array.isArray(n)?"array":typeof n;switch(r.type){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Scene replay initial variable "${e}" expected type number, got ${o}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Scene replay initial variable "${e}" expected type boolean, got ${o}`);return;case"string":if(typeof n!="string")throw new Error(`Scene replay initial variable "${e}" expected type string, got ${o}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Scene replay initial variable "${e}" expected type object, got ${o}`);return;default:throw new Error(`Scene replay initial variable "${e}" has invalid variable type "${r.type}"`)}},It=(e={})=>{let r=e?.resources?.sceneReplay;if(r===void 0)return;if(!be(r))throw new Error("resources.sceneReplay must be an object");if(Tr(r,_f,"resources.sceneReplay"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.sceneReplay.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.replays))throw new Error("resources.sceneReplay.replays must be an array");let n=e?.story?.scenes??{},o=new Set;for(let[a,t]of r.replays.entries()){let s=`resources.sceneReplay.replays[${a}]`;if(!be(t))throw new Error(`${s} must be an object`);Tr(t,Tf,s);for(let c of["sceneId","title","thumbnailImageId"])Xr(t[c],`${s}.${c}`);if(o.has(t.sceneId))throw new Error(`Duplicate scene replay sceneId "${t.sceneId}"`);if(o.add(t.sceneId),!G(e?.resources?.images,t.thumbnailImageId))throw new Error(`Scene replay scene "${t.sceneId}" references unknown thumbnail image "${t.thumbnailImageId}"`);let i=n[t.sceneId];if(!i)throw new Error(`Scene replay references unknown scene "${t.sceneId}"`);let l=i.initialSectionId,u=i.sections?.[l];if(!u)throw new Error(`Scene replay scene "${t.sceneId}" references unknown initial section "${l}"`);if(u.initialLineId!==void 0&&!u.lines?.some(c=>c.id===u.initialLineId))throw new Error(`Scene replay scene "${t.sceneId}" initial section "${l}" references unknown initial line "${u.initialLineId}"`);if(t.initialVariables!==void 0){if(!be(t.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[c,p]of Object.entries(t.initialVariables)){let m=e?.resources?.variables?.[c];if(!m)throw new Error(`Scene replay scene "${t.sceneId}" initialVariables references unknown variable "${c}"`);if($e(m))throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize computed variable "${c}"`);if(m.readonly===!0)throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize readonly variable "${c}"`);if(m.scope!=="context")throw new Error(`Scene replay scene "${t.sceneId}" can only initialize context variable "${c}"`);jf(c,m,p)}}}},Ea=e=>{let r=we(e)?ur(e):e;return structuredClone(r)},Nf=({characterId:e,resourceCharacter:r,variables:n={}}={})=>{if(!G(r,"nameVariableId"))return;let o=r.nameVariableId,a=n?.[o];if(typeof a!="string")throw new Error(`Character "${e}" nameVariableId "${o}" must resolve to a string variable`);return a},mn=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0;if(r?.name!==void 0)return r.name;if(n!==void 0)return n;let s=Nf({characterId:e,resourceCharacter:t,variables:a});return s!==void 0?s:t?.name||""},$e=e=>G(e,"computed"),so=(e,r)=>{switch(e?.type){case"number":return typeof r=="number"&&Number.isFinite(r);case"boolean":return typeof r=="boolean";case"string":return typeof r=="string";case"object":return r!==null&&typeof r=="object"&&!Array.isArray(r);default:return!1}},wt=(e={},r={},{allowedScopes:n,preserveUnknown:o=!1}={})=>Object.fromEntries(Object.entries(e??{}).filter(([a,t])=>{let s=r[a];return s===void 0?o:!$e(s)&&(!n||n.includes(s.scope))&&so(s,t)})),Me=(e,r)=>new Error(`${r} has invalid path: ${JSON.stringify(e)}`),Df=(e,r,n)=>{if(e[0]==='"')try{return JSON.parse(e)}catch{throw Me(r,n)}let a="";for(let t=1;t<e.length-1;t+=1){let s=e[t];if(s!=="\\"){if(s.charCodeAt(0)<32)throw Me(r,n);a+=s;continue}if(t+=1,t>=e.length-1)throw Me(r,n);let i=e[t];if(i==="u"){let u=e.slice(t+1,t+5);if(u.length!==4||!/^[0-9a-fA-F]{4}$/.test(u))throw Me(r,n);a+=String.fromCharCode(Number.parseInt(u,16)),t+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
|
|
2
|
+
`,r:"\r",t:" ",b:"\b",f:"\f"};if(!G(l,i))throw Me(r,n);a+=l[i]}return a},Sa=(e,r="Computed expression var")=>{if(typeof e!="string"||e.length===0||e.trim()!==e)throw Me(e,r);let n=[],o=0,a=()=>{let s=o;for(;o<e.length&&e[o]!=="."&&e[o]!=="["&&e[o]!=="]";)o+=1;let i=e.slice(s,o);if(i.length===0||i.trim()!==i||/\s/.test(i))throw Me(e,r);n.push(i)},t=()=>{for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;let s=e[o];if(/\d/.test(s??"")){let c=o;for(;o<e.length&&/\d/.test(e[o]);)o+=1;let p=e.slice(c,o);for(;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]"||p.length>1&&p.startsWith("0"))throw Me(e,r);o+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw Me(e,r);let i=s,l=o;o+=1;let u=!1;for(;o<e.length;){let c=e[o];if(u)u=!1;else if(c==="\\")u=!0;else if(c===i){let p=e.slice(l,o+1);for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]")throw Me(e,r);o+=1,n.push(Df(p,e,r));return}o+=1}if(u||o>=e.length)throw Me(e,r)};for(a();o<e.length;){if(e[o]==="."){o+=1,a();continue}if(e[o]==="["){t();continue}throw Me(e,r)}return n},Ws=(e,r)=>{let n=e;for(let o of r){if(n==null||!G(n,o))return;n=n[o]}return n},Ra=(e,r={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=Sa(e),[o,a,...t]=n;if(o==="variables"){if(!a)return r.variables;let s=typeof r.resolveVariable=="function"?r.resolveVariable(a):r.variables?.[a];return Ws(s,t)}return o==="runtime"?Ws(r.runtime,n.slice(1)):Ws(r,n)},Oa=(e,r,n)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(n!==void 0&&r.length!==n)throw new Error(`Computed expression operator "${e}" requires ${n} operand(s)`)},eo=(e,r)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(r.length===0)throw new Error(`Computed expression operator "${e}" requires at least one operand`)},Lf=(e,r)=>{if(typeof r!="number"||!Number.isFinite(r))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Ue=(e,r,n,o)=>(Oa(e,r,o),r.map(a=>dn(a,n))),Le=(e,r,n,o)=>{let a=Ue(e,r,n,o);return a.forEach(t=>Lf(e,t)),a},Mf=(e,r,n)=>{switch(e){case"var":return Ra(r,n);case"add":{let[o,a]=Le(e,r,n,2);return o+a}case"sub":{let[o,a]=Le(e,r,n,2);return o-a}case"mul":{let[o,a]=Le(e,r,n,2);return o*a}case"div":{let[o,a]=Le(e,r,n,2);return o/a}case"mod":{let[o,a]=Le(e,r,n,2);return o%a}case"neg":{let[o]=Le(e,r,n,1);return-o}case"round":{let[o]=Le(e,r,n,1);return Math.round(o)}case"floor":{let[o]=Le(e,r,n,1);return Math.floor(o)}case"ceil":{let[o]=Le(e,r,n,1);return Math.ceil(o)}case"min":{let[o,a]=Le(e,r,n,2);return Math.min(o,a)}case"max":{let[o,a]=Le(e,r,n,2);return Math.max(o,a)}case"clamp":{let[o,a,t]=Le(e,r,n,3);return Math.min(t,Math.max(a,o))}case"eq":{let[o,a]=Ue(e,r,n,2);return mr.eq(o,a)}case"neq":{let[o,a]=Ue(e,r,n,2);return mr.neq(o,a)}case"gt":{let[o,a]=Ue(e,r,n,2);return mr.gt(o,a)}case"gte":{let[o,a]=Ue(e,r,n,2);return mr.gte(o,a)}case"lt":{let[o,a]=Ue(e,r,n,2);return mr.lt(o,a)}case"lte":{let[o,a]=Ue(e,r,n,2);return mr.lte(o,a)}case"in":{let[o,a]=Ue(e,r,n,2);return Array.isArray(a)?a.includes(o):!1}case"and":case"all":return eo(e,r),r.every(o=>!!dn(o,n));case"or":case"any":return eo(e,r),r.some(o=>!!dn(o,n));case"not":{let[o]=Ue(e,r,n,1);return!o}case"length":{let[o]=Ue(e,r,n,1);return typeof o=="string"||Array.isArray(o)?o.length:be(o)?Object.keys(o).length:0}case"includes":{let[o,a]=Ue(e,r,n,2);return typeof o=="string"?typeof a=="string"&&o.includes(a):Array.isArray(o)?o.includes(a):!1}case"literal":return Ea(r);default:throw new Error(`Unknown computed expression operator: ${e}`)}},dn=(e,r={})=>{if(e===null||typeof e!="object")return e;if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let n=Object.entries(e);if(n.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[o,a]]=n;return Mf(o,a,r)},ro=(e,r)=>{if(e===null||typeof e!="object"||G(e,"literal"))return e;if(G(e,"var"))return{literal:Ra(e.var,r)};if(G(e,"call"))throw new Error("Function calls are not supported in computed-variable conditions");return Object.fromEntries(Object.entries(e).map(([n,o])=>[n,Array.isArray(o)?o.map(a=>ro(a,r)):ro(o,r)]))},qf=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Oe(e),ht(ro(e,r))},Ca=(e,r)=>{if(!be(e))throw new Error(`${r} must be an object`);let n=G(e,"expr"),o=G(e,"value");if(n===o)throw new Error(`${r} must contain exactly one of expr or value`)},Ks=(e,r,n)=>(Ca(e,r),G(e,"value")?Ea(e.value):dn(e.expr,n)),Vf=(e,r={},n="unknown")=>{if(!be(e))throw new Error(`Computed variable "${n}" computed must be an object`);let o=G(e,"expr"),a=G(e,"value");if(G(e,"branches")){if(o||a)throw new Error(`Computed variable "${n}" cannot combine branches with expr or value`);if(!Array.isArray(e.branches))throw new Error(`Computed variable "${n}" branches must be an array`);if(e.branches.length===0)throw new Error(`Computed variable "${n}" branches must not be empty`);if(!be(e.default))throw new Error(`Computed variable "${n}" requires default`);for(let s=0;s<e.branches.length;s+=1){let i=e.branches[s];if(!be(i))throw new Error(`Computed variable "${n}" branch ${s} must be an object`);if(!G(i,"when"))throw new Error(`Computed variable "${n}" branch ${s} requires when`);if(qf(i.when,r))return Ks(i,`Computed variable "${n}" branch ${s}`,r)}return Ks(e.default,`Computed variable "${n}" default`,r)}if(o===a)throw new Error(`Computed variable "${n}" must contain exactly one of expr, value, or branches`);return Ks(e,`Computed variable "${n}"`,r)},$a=(e,r,n)=>{switch(r){case"number":if(typeof n!="number"||!Number.isFinite(n))throw new Error(`Computed variable "${e}" expected type number, got ${Array.isArray(n)?"array":typeof n}`);return;case"boolean":if(typeof n!="boolean")throw new Error(`Computed variable "${e}" expected type boolean, got ${Array.isArray(n)?"array":typeof n}`);return;case"string":if(typeof n!="string")throw new Error(`Computed variable "${e}" expected type string, got ${Array.isArray(n)?"array":typeof n}`);return;case"object":if(n===null||typeof n!="object")throw new Error(`Computed variable "${e}" expected type object, got ${typeof n}`);return;default:throw new Error(`Invalid variable type: ${r} for computed variable ${e}`)}},Ff=Object.freeze({add:2,sub:2,mul:2,div:2,mod:2,neg:1,round:1,floor:1,ceil:1,min:2,max:2,clamp:3,eq:2,neq:2,gt:2,gte:2,lt:2,lte:2,in:2,not:1,length:1,includes:2}),Uf=new Set(["and","or","all","any"]),Bf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),zf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),Yf=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),Gf=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),_a=new WeakMap,Ia=e=>e===null?"null":Array.isArray(e)?"object":typeof e,un=(e,r,n)=>{for(let o of Object.keys(e))if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)},Hf=(e,r,n,o)=>{if(n!==void 0&&n!==r)throw new Error(`Computed variable "${e}" ${o} expected type ${r}, got ${n}`)},Ta=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{let t=`Computed variable "${r}" ${a} var`,[s,i,...l]=Sa(e,t);if(s!=="variables"&&s!=="runtime")throw new Error(`${t} must reference variables.* or runtime.*, got ${JSON.stringify(e)}`);if(!i)throw new Error(`${t} must reference a concrete ${s} member, got ${JSON.stringify(e)}`);if(s==="runtime")return;if(!G(n,i))throw new Error(`Computed variable "${r}" ${a} references unknown variable "${i}"`);let u=n[i];return $e(u)&&o.add(i),l.length===0?u?.type:void 0},ja=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return Ia(e)}if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let t=Object.entries(e);if(t.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[s,i]]=t;if(s==="var"){if(typeof i!="string"||i.trim()==="")throw new Error("Computed expression var requires a non-empty string path");return Ta(i,{variableId:r,variableConfigs:n,dependencies:o,path:a})}if(s==="literal"){if(typeof i=="number"&&!Number.isFinite(i))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return Ia(i)}let l=Ff[s];if(l===void 0&&!Uf.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?eo(s,i):Oa(s,i,l);let u=i.map((c,p)=>ja(c,{variableId:r,variableConfigs:n,dependencies:o,path:`${a}.${s}[${p}]`}));if(zf.has(s)&&u.forEach(c=>{if(c!==void 0&&c!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),Bf.has(s))return"number";if(Yf.has(s))return"boolean"},Xf=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");try{Oe(e)}catch(s){throw new Error(`Computed variable "${r}" ${a} is invalid: ${s.message}`,{cause:s})}let t=(s,i)=>{if(s===null||typeof s!="object"||G(s,"literal"))return;if(G(s,"var")){Ta(s.var,{variableId:r,variableConfigs:n,dependencies:o,path:i});return}if(G(s,"call"))throw new Error(`Computed variable "${r}" ${i} function calls are not supported`);if(G(s,"not")){t(s.not,`${i}.not`);return}let l=Object.keys(s).find(u=>Gf.has(u));s[l].forEach((u,c)=>{t(u,`${i}.${l}[${c}]`)})};t(e,a)},Js=(e,{variableId:r,variableConfig:n,variableConfigs:o,dependencies:a,path:t,allowedKeys:s=new Set(["expr","value"])})=>{if(Ca(e,`Computed variable "${r}" ${t}`),un(e,s,t),G(e,"value")){$a(r,n.type,e.value);return}let i=ja(e.expr,{variableId:r,variableConfigs:o,dependencies:a,path:`${t}.expr`});Hf(r,n.type,i,`${t}.expr`)},Wf=(e,r,n)=>{let o=r.computed;if(!be(o))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,t=G(o,"expr"),s=G(o,"value");if(G(o,"branches")){if(un(o,new Set(["branches","default"]),`Computed variable "${e}" computed`),t||s)throw new Error(`Computed variable "${e}" cannot combine branches with expr or value`);if(!Array.isArray(o.branches))throw new Error(`Computed variable "${e}" branches must be an array`);if(o.branches.length===0)throw new Error(`Computed variable "${e}" branches must not be empty`);if(!be(o.default))throw new Error(`Computed variable "${e}" requires default`);return o.branches.forEach((l,u)=>{if(!be(l))throw new Error(`Computed variable "${e}" branch ${u} must be an object`);if(un(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${u}`),!G(l,"when"))throw new Error(`Computed variable "${e}" branch ${u} requires when`);Xf(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${u}].when`}),Js(l,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:`computed.branches[${u}]`,allowedKeys:new Set(["when","expr","value"])})}),Js(o.default,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(un(o,new Set(["expr","value"]),`Computed variable "${e}" computed`),t===s)throw new Error(`Computed variable "${e}" must contain exactly one of expr, value, or branches`);return Js(o,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed"}),a},jr=(e={})=>{if(!be(e))throw new Error("Variable configs must be an object");if(G(e,"__proto__"))throw new Error('Variable id "__proto__" is reserved');if(G(e,""))throw new Error("Variable ids must not be empty");let r=new Map;Object.entries(e).forEach(([t,s])=>{if($e(s)){if(!be(s))throw new Error(`Computed variable "${t}" must be an object`);if(!G(s,"type"))throw new Error(`Computed variable "${t}" requires type`);if(!G(s,"scope"))throw new Error(`Computed variable "${t}" requires scope`);if(G(s,"default"))throw new Error(`Computed variable "${t}" must not declare a top-level default`);if(kt(s.scope,t),!["number","boolean","string","object"].includes(s.type))throw new Error(`Invalid variable type: ${s.type} for computed variable ${t}`);r.set(t,Wf(t,s,e))}});let n=new Set,o=[];r.forEach((t,s)=>{if(n.has(s))return;let i=[{variableId:s,dependencies:[...r.get(s)??[]],nextDependencyIndex:0}],l=new Map([[s,0]]);for(;i.length>0;){let u=i.at(-1);if(u.nextDependencyIndex>=u.dependencies.length){i.pop(),l.delete(u.variableId),n.add(u.variableId),o.push(u.variableId);continue}let c=u.dependencies[u.nextDependencyIndex];if(u.nextDependencyIndex+=1,n.has(c))continue;let p=l.get(c);if(p!==void 0){let m=[...i.slice(p).map(({variableId:d})=>d),c].join(" -> ");throw new Error(`Computed variable cycle detected: ${m}`)}l.set(c,i.length),i.push({variableId:c,dependencies:[...r.get(c)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(o)});return _a.set(e,a),a},Wr=({variables:e={},runtime:r={},variableConfigs:n={},eager:o=!0}={})=>{let{evaluationOrder:a}=_a.get(n)??jr(n),t=wt(e,n,{preserveUnknown:!0}),s=Object.entries(n).filter(([,g])=>$e(g)).map(([g])=>g),i=Object.create(null),l=[],u=new Map(a.map((g,h)=>[g,h])),c=-1,p=!1,m=g=>{if(G(i,g))return i[g];let h=n[g];if(!$e(h))return G(t,g)?t[g]:void 0;let w=l.indexOf(g);if(w>=0){let b=[...l.slice(w),g].join(" -> ");throw new Error(`Computed variable cycle detected: ${b}`)}l.push(g);try{let b=Vf(h.computed,y,g);return $a(g,h.type,b),Zs(i,g,b),b}finally{l.pop()}},d=g=>{if(G(i,g))return i[g];let h=n[g];if(!$e(h))return G(t,g)?t[g]:void 0;let w=u.get(g);if(o&&!p&&w!==void 0&&w>c){p=!0;try{for(let b=c+1;b<=w;b+=1)m(a[b]),c=b}finally{p=!1}return i[g]}return m(g)},f=new Proxy({},{get:(g,h)=>{if(typeof h=="string")return d(h)},has:(g,h)=>typeof h=="string"&&(G(t,h)||s.includes(h)),ownKeys:()=>[...new Set([...Object.keys(t),...s])],getOwnPropertyDescriptor:(g,h)=>{if(!(typeof h!="string"||!G(t,h)&&!s.includes(h)))return{enumerable:!0,configurable:!0}}}),y={variables:f,runtime:r,resolveVariable:d};return o?(s.forEach(g=>{d(g)}),{...t,...i}):f},Kf=({variables:e={},runtime:r={},variableConfigs:n,projectData:o}={})=>{let a=n??o?.resources?.variables??{};return jr(a),Wr({variables:e,runtime:r,variableConfigs:a,eager:!0})},yn=e=>{let r={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([o,a])=>{if($e(a))return;let t=Ef(a,o);a.scope==="context"?Zs(r,o,t):Zs(n,o,t)}),{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}},kt=(e,r)=>{let n=["context","device","account"];if(!e)throw new Error(`Variable scope is required for variable: ${r}`);if(!n.includes(e))throw new Error(`Invalid variable scope: ${e} for variable ${r}. Expected one of: ${n.join(", ")}`)},vt=(e,r,n)=>{let o={number:["set","increment","decrement","multiply","divide"],boolean:["set","toggle"],string:["set"],object:["set"]},a=o[e];if(!a)throw new Error(`Unknown variable type: ${e} for variable ${n}`);if(!Object.values(o).flat().includes(r))throw new Error(`Unknown operation: ${r}`);if(!a.includes(r))throw new Error(`Operation "${r}" is not valid for variable "${n}" of type "${e}". Valid operations: ${a.join(", ")}`)},Jf=2,wa=12,Na=(e=Jf)=>{if(!Number.isInteger(e)||e<0||e>wa)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${wa}.`);return e},Qf=(e,r)=>{let n=10**r;return Math.round((e+Number.EPSILON)*n)/n},pn=e=>typeof e=="number"&&Number.isFinite(e),hn=(e,r,n,o,a={})=>{if(e==="number"){if(r==="set"&&!pn(n))throw new Error(`Operation "set" requires value to be a number for variable "${o}".`);if(r==="multiply"&&!pn(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${o}".`);if(r==="divide"&&!pn(n))throw new Error(`Operation "divide" requires value to be a number for variable "${o}".`);if(r==="divide"){if(n===0)throw new Error(`Operation "divide" requires value to be a non-zero number for variable "${o}".`);Na(a.roundTo)}}},gn=(e,r,n,o={})=>{let a=(s,i,l)=>{let u=s??i;if(!pn(u))throw new Error(`Operation "${r}" requires ${l} to be a number.`);return u},t=s=>{let i=a(s,void 0,"value");if(i===0)throw new Error(`Operation "${r}" requires value to be a non-zero number.`);return i};switch(r){case"set":return n;case"multiply":return a(e,1,"current value")*a(n,void 0,"value");case"divide":return Qf(a(e,0,"current value")/t(n),Na(o.roundTo));case"increment":return a(e,0,"current value")+a(n,1,"value");case"decrement":return a(e,0,"current value")-a(n,1,"value");case"toggle":return!e;default:throw new Error(`Unknown operation: ${r}`)}};var oo=(e,r="DD/MM/YYYY - HH:mm")=>{if(!e)return"";let n=new Date(e),o=s=>String(s).padStart(2,"0"),a=String(n.getFullYear()),t={DD:o(n.getDate()),MM:o(n.getMonth()+1),MMM:xf[n.getMonth()],YYYY:a,YY:a.slice(-2),HH:o(n.getHours()),mm:o(n.getMinutes()),ss:o(n.getSeconds())};return r.replace(/YYYY|MMM|YY|MM|DD|HH|mm|ss/g,s=>t[s])},Zf=(e,r)=>{let n=t=>t?.ui,o=n(e),a=n(r);return JSON.stringify(o)===JSON.stringify(a)?null:o&&!a?{changeType:"delete",data:e}:a&&!o?{changeType:"add",data:r}:a&&o?{changeType:"update",data:r}:null},yt=e=>!!e?.transformId&&Array.isArray(e.items)&&e.items.length>0,em=(e,r)=>{let n=e?.character?.sprite,o=r?.character?.sprite,a=yt(n)?n:void 0,t=yt(o)?o:void 0;return JSON.stringify(a)===JSON.stringify(t)?null:a&&!t?{changeType:"delete",data:a}:t&&!a?{changeType:"add",data:t}:t&&a?{changeType:"update",data:t}:null},ka=e=>{if(e?.resourceId===void 0)return;let r={resourceId:e.resourceId};e.transformId!==void 0&&(r.transformId=e.transformId);for(let n of["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"])e[n]!==void 0&&(r[n]=e[n]);for(let n of["animationName","animationSpeed","loop"])e[n]!==void 0&&(r[n]=e[n]);return r},va=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},Aa=(e,r)=>r&&!e?{changeType:"add",data:r}:e&&!r?{changeType:"delete",data:e}:e&&r&&JSON.stringify(e)!==JSON.stringify(r)?{changeType:"update",data:r}:null,rm=(e,r)=>{let n={},o=Aa(ka(e),ka(r)),a=Aa(va(e),va(r));return o&&(n.resource=o),a&&(n.color=a),Object.keys(n).length>0?n:null},io=(e={},r={})=>{let n={},o=["sfx","voice"],a=l=>{let u=e[l],c=r[l];c&&!u?n[l]={changeType:"add",data:c}:u&&!c?o.includes(l)||(n[l]={changeType:"delete",data:u}):u&&c&&JSON.stringify(u)!==JSON.stringify(c)&&(n[l]={changeType:"update",data:c})},t=rm(e.background,r.background);t&&(n.background=t),a("screen"),a("bgm"),a("voice");let s=Zf(e.dialogue,r.dialogue);s&&(n.dialogue=s);let i=em(e.dialogue,r.dialogue);return i&&(n.dialogueSprite=i),a("choice"),a("form"),a("layout"),a("animation"),a("control"),a("character"),a("visual"),a("sfx"),n},ao=(e={})=>{let r=structuredClone(e);r.background&&(r.background.animations?.playback?.continuity!=="persistent"&&delete r.background.animations,!r.background.resourceId&&!r.background.colorId&&delete r.background);let n=a=>{r[a]&&(delete r[a].animations,Object.keys(r[a]).length===0&&delete r[a])};n("layout"),n("choice"),n("form"),n("screen"),r.dialogue?.ui&&(delete r.dialogue.ui.animations,Object.keys(r.dialogue.ui).length===0&&delete r.dialogue.ui,Object.keys(r.dialogue).length===0&&delete r.dialogue),r.dialogue?.character?.sprite&&(delete r.dialogue.character.sprite.animations,Object.keys(r.dialogue.character.sprite).length===0&&delete r.dialogue.character.sprite,Object.keys(r.dialogue.character).length===0&&delete r.dialogue.character,Object.keys(r.dialogue).length===0&&delete r.dialogue);let o=(a,t)=>{let s=r[a]?.items;Array.isArray(s)&&(r[a].items=s.map(i=>{let l={...i};return delete l.animations,t(l)?l:null}).filter(Boolean),r[a].items.length===0&&delete r[a])};return o("character",a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId),o("visual",a=>a.resourceId||a.transformId),r},tm=(e,r)=>{if(!e||!r)return;let n=e;for(let o of r.split(".")){if(n==null||!(o in Object(n)))return;n=n[o]}return n},nm=(e,r)=>{if(typeof e!="string")return e;if(e==="_event"){if(r==null)throw new Error('Action template binding "_event" requires event context "_event".');return r}if(!e.startsWith("_event."))return e;if(r==null)throw new Error(`Action template binding "${e}" requires event context "_event".`);let n=e.slice(7),o=tm(r,n);if(o===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "_event".`);return o},sm={conditional:new Set(["branches"]),updateProjectData:new Set(["projectData"]),showConfirmDialog:new Set(["confirmActions","cancelActions"]),form:new Set(["submitActions","cancelActions"]),submitForm:new Set(["actions"]),cancelForm:new Set(["actions"])},om=(e,r)=>{let n=e[e.length-1];return n?sm[n]?.has(r)===!0:!1},to=(e,r,n=[])=>Array.isArray(e)?e.map(o=>to(o,r,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([o,a])=>[o,om(n,o)?a:to(a,r,[...n,o])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?nm(e,r._event):_r(e,r):e,lo=(e,r)=>{if(!r)return e;if(Object.prototype.hasOwnProperty.call(r,"event"))throw new Error('Action template context key "event" is no longer supported. Use "_event".');return to(e,r)};var pe=e=>structuredClone(we(e)?ur(e):e),re=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Da=e=>e?.animations?.playback?.continuity==="persistent",ee=(e,r)=>re(e??{},r)&&e[r]!==void 0,At=(e,r)=>e?!r(e)&&e.animations?{animationsOnly:!0,state:{animations:pe(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},im=e=>ee(e,"opacity")||ee(e,"blur"),Ua=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Ba=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],co=["animationName","animationSpeed","loop"],am=e=>Ua.some(r=>ee(e,r)),za=e=>e?.text&&ee(e.text,"content")&&ee(e.text,"textStyleId"),Ya=e=>ee(e,"text"),lm=(e,r)=>e.resourceId?!0:za(e)?!r?.text:!1,cm=(e,r)=>{let n={...pe(e),...r};return r.text&&e.text&&(n.text={...pe(e.text),...pe(r.text)}),n},um=(e,r)=>{if(Ya(e)){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!za(e)&&!r?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`)}},La=e=>Ba.some(r=>ee(e,r)),Ma=e=>co.some(r=>ee(e,r)),pm=(e,r,{hasAuthoredTransformId:n=!1}={})=>{if(!r)return e;for(let o of Ba)!n&&!ee(e,o)&&ee(r,o)&&(e[o]=r[o]),re(e,o)&&e[o]===void 0&&delete e[o];return e},Ga=(e,r,n)=>{let o=e[n];return o?.id===r?.id?o:e.find(a=>a.id===r?.id)},dm=(e,r)=>{if(!r)return e;for(let n of Ua)!ee(e,n)&&ee(r,n)&&(e[n]=r[n]),re(e,n)&&e[n]===void 0&&delete e[n];return e},fm=(e,r)=>(r&&(!ee(e,"opacity")&&ee(r,"opacity")&&(e.opacity=r.opacity),!ee(e,"blur")&&ee(r,"blur")&&(e.blur=pe(r.blur)),re(e,"opacity")&&e.opacity===void 0&&delete e.opacity,re(e,"blur")&&e.blur===void 0&&delete e.blur),e),Ha=(e,r,n=[],{hasPatchFn:o=()=>!1,mergeItemFn:a}={})=>{if(!e||e.length===0)return{hasValidItems:!1,processedItems:[]};let t=e.map((s,i)=>{let l=Ga(n,s,i),u=r(s,l),c=im(s),p=am(s),m=o(s),d=re(s,"animations"),f=pe(s);return!u&&(c||p||m)&&l&&(f=a?a(l,f):{...pe(l),...f},d||delete f.animations),fm(dm(f,l),l)}).filter(s=>r(s)||s.animations);return{hasValidItems:t.length>0,processedItems:t}},mm=e=>{if(e){if(e.character&&re(e.character,"name"))return e.character.name;if(re(e,"characterName"))return e.characterName}},Xa=e=>!!e?.character&&re(e.character,"sprite"),ym=e=>{let r={},n=!1,o=mm(e);return o!==void 0&&(r.name=o,n=!0),Xa(e)&&(r.sprite=pe(e.character.sprite),n=!0),n?r:void 0},qa=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},Va=({dialogueState:e,dialogueAction:r,persistCharacter:n})=>re(r,"persistSprite")?r.persistSprite===!0:re(e,"persistSprite")?e.persistSprite===!0:n&&!re(r,"characterId"),Fa=({previousCharacter:e,characterFields:r,hasCharacterId:n,persistCharacter:o,persistSprite:a,hasExplicitPersistSprite:t,isAppendingAdvDialogueContent:s})=>{let i={},l=e??{},u=r??{},c=s&&!n,p=c&&!t;return re(u,"name")?i.name=u.name:(o&&!n||c)&&re(l,"name")&&(i.name=pe(l.name)),re(u,"sprite")?i.sprite=pe(u.sprite):(a||p)&&re(l,"sprite")&&(i.sprite=pe(l.sprite)),Object.keys(i).length>0?i:void 0},hm=({dialogueState:e,content:r,append:n=!1})=>{if(!n||!Array.isArray(r)){e.content=r,delete e.initialRevealedContent;return}let o=Array.isArray(e.content)?e.content:[];o.length>0?e.initialRevealedContent=o.map(a=>pe(a)):delete e.initialRevealedContent,e.content=[...o,...r]},gm=()=>({}),bm=(e,r)=>{if(!r.screen)return;let n=ee(r.screen,"opacity"),o=ee(r.screen,"blur"),a=re(r.screen,"animations");if(!n&&!o){a||delete e.screen;return}let t=e.screen,s={};if(n?s.opacity=r.screen.opacity:ee(t,"opacity")&&(s.opacity=t.opacity),o?s.blur=pe(r.screen.blur):ee(t,"blur")&&(s.blur=pe(t.blur)),re(s,"opacity")&&s.opacity===void 0&&delete s.opacity,re(s,"blur")&&s.blur===void 0&&delete s.blur,Object.keys(s).length===0){delete e.screen;return}e.screen=s},Im=(e,r)=>{if(r.background){let n=ee(r.background,"resourceId"),o=ee(r.background,"colorId"),a=ee(r.background,"opacity"),t=ee(r.background,"blur"),s=ee(r.background,"transformId"),i=La(r.background),l=Ma(r.background),{animationsOnly:u,state:c}=At(r.background,d=>ee(d,"resourceId")||ee(d,"colorId")||ee(d,"opacity")||ee(d,"blur")||ee(d,"transformId")||La(d)||Ma(d));if(u){e.background=e.background?{...pe(e.background),...c}:c;return}if(!n&&!o&&!a&&!t&&!s&&!i&&!l){delete e.background;return}let p=e.background,m=pe(r.background);if(!n&&p?.resourceId){m.resourceId=p.resourceId,!re(m,"transformId")&&p.transformId&&(m.transformId=p.transformId);for(let d of co)!ee(m,d)&&ee(p,d)&&(m[d]=p[d])}pm(m,p,{hasAuthoredTransformId:s}),!o&&p?.colorId&&(m.colorId=p.colorId),!a&&ee(p,"opacity")&&(m.opacity=p.opacity),!t&&ee(p,"blur")&&(m.blur=pe(p.blur)),re(m,"resourceId")&&m.resourceId===void 0&&delete m.resourceId,re(m,"colorId")&&m.colorId===void 0&&delete m.colorId,re(m,"animations")&&m.animations===void 0&&delete m.animations,re(m,"transformId")&&m.transformId===void 0&&delete m.transformId,re(m,"opacity")&&m.opacity===void 0&&delete m.opacity,re(m,"blur")&&m.blur===void 0&&delete m.blur;for(let d of co)re(m,d)&&m[d]===void 0&&delete m[d];if(!m.resourceId&&!m.colorId){delete e.background;return}p?.resourceId===m.resourceId&&p?.transformId===m.transformId&&!re(m,"animations")&&Da(p)&&(m.animations=pe(p.animations)),e.background=m}else e.background?.animations&&!Da(e.background)&&(e.background.animations={})},wm=(e,r)=>{if(!r.dialogue){if(e.dialogue&&(qa(e.dialogue),e.dialogue.mode==="adv")){e.dialogue.content=void 0,delete e.dialogue.initialRevealedContent,delete e.dialogue.textSpeed;let c=e.dialogue.persistCharacter===!0,p=Va({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:c});c||delete e.dialogue.characterId,e.dialogue.character=Fa({previousCharacter:e.dialogue.character,characterFields:{},hasCharacterId:!1,persistCharacter:c,persistSprite:p,hasExplicitPersistSprite:!1,isAppendingAdvDialogueContent:!1}),e.dialogue.character||delete e.dialogue.character}return}e.dialogue||(e.dialogue={});let n=e.dialogue.mode;if(r.dialogue.ui){let{animationsOnly:c,state:p}=At(r.dialogue.ui,m=>!!m.resourceId);c?e.dialogue.ui={...e.dialogue.ui,...p}:e.dialogue.ui={...r.dialogue.ui}}else e.dialogue?.ui?.animations&&(e.dialogue.ui.animations={});r.dialogue.mode==="adv"&&(e.dialogue.content=e.dialogue.content||void 0,e.dialogue.characterId=e.dialogue.characterId||void 0,e.dialogue.mode="adv"),r.dialogue.mode==="nvl"&&(e.dialogue?.mode!=="nvl"&&(e.dialogue.lines=[]),e.dialogue.mode="nvl");let o=r.dialogue.append===!0&&n!=="nvl"&&e.dialogue?.mode!=="nvl"&&Array.isArray(r.dialogue.content);r.dialogue.content!==void 0&&hm({dialogueState:e.dialogue,content:r.dialogue.content,append:o}),re(r.dialogue,"textSpeed")?e.dialogue.textSpeed=r.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=re(r.dialogue,"persistCharacter")?r.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let t=Va({dialogueState:e.dialogue,dialogueAction:r.dialogue,persistCharacter:a});re(r.dialogue,"persistSprite")&&(e.dialogue.persistSprite=t);let s=re(r.dialogue,"characterId"),i=ym(r.dialogue),l=Xa(r.dialogue);s?r.dialogue.characterId?e.dialogue.characterId=r.dialogue.characterId:delete e.dialogue.characterId:!a&&!o&&delete e.dialogue.characterId;let u=Fa({previousCharacter:e.dialogue.character,characterFields:i,hasCharacterId:s,persistCharacter:a,persistSprite:t,hasExplicitPersistSprite:re(r.dialogue,"persistSprite"),isAppendingAdvDialogueContent:o});if(u?e.dialogue.character=u:delete e.dialogue.character,l||qa(e.dialogue),r.dialogue.clear){delete e.dialogue;return}if(r.dialogue?.clearPage&&e.dialogue?.mode==="nvl"&&(e.dialogue.lines=[]),e.dialogue?.mode==="nvl"&&r.dialogue.content!==void 0){let c={content:r.dialogue.content,characterId:e.dialogue.characterId??null};e.dialogue.textSpeed!==void 0&&(c.textSpeed=e.dialogue.textSpeed),e.dialogue.character&&(c.character=pe(e.dialogue.character)),e.dialogue.lines.push(c)}},km=(e,r)=>{if(r.sfx){let n=Array.isArray(r.sfx.items)&&r.sfx.items.length>0,o=Array.isArray(r.sfx.channels)&&r.sfx.channels.length>0;if(!n&&!o){delete e.sfx;return}e.sfx=pe(r.sfx)}else e.sfx&&delete e.sfx},vm=(e,r)=>{if(r.bgm){let n=Array.isArray(r.bgm.sounds);if(!r.bgm.resourceId&&!n||n&&r.bgm.sounds.length===0){e.bgm=void 0;return}e.bgm=pe(r.bgm),r.bgm.resourceId&&(e.bgm.loop=r.bgm.loop??!0)}},Am=(e,r)=>{if(r.visual){let n=e.visual?.items||[];r.visual.items?.forEach((t,s)=>{um(t,Ga(n,t,s))});let{hasValidItems:o,processedItems:a}=Ha(r.visual.items,lm,n,{hasPatchFn:Ya,mergeItemFn:cm});o?e.visual={items:a}:delete e.visual}else e.visual?.items&&(e.visual.items=e.visual.items.map(n=>n.animations?{...n,animations:{}}:n))},Pm=(e,r)=>{if(!r.character){e.character?.items&&(e.character.items=e.character.items.map(a=>a.animations?{...a,animations:{}}:a));return}let{hasValidItems:n,processedItems:o}=Ha(r.character.items,a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId,e.character?.items||[]);n?e.character={items:o}:delete e.character},xm=(e,r)=>{r.animation?e.animation=r.animation:e.animation&&delete e.animation},Em=(e,r)=>{if(r.layout){let{animationsOnly:n,state:o}=At(r.layout,a=>!!a.resourceId);if(n){e.layout=o;return}if(!r.layout.resourceId){delete e.layout;return}e.layout=r.layout}else e.layout&&delete e.layout},Sm=(e,r)=>{if(r.choice){let{animationsOnly:n,state:o}=At(r.choice,a=>!!a.resourceId);if(n){e.choice={...e.choice,...o};return}if(!r.choice.resourceId){delete e.choice;return}e.choice=r.choice}else e.choice&&delete e.choice},Rm=(e,r)=>{if(r.form){let{animationsOnly:n,state:o}=At(r.form,a=>!!a.resourceId);if(n){e.form={...e.form,...o};return}if(!r.form.resourceId){delete e.form;return}e.form=pe(r.form)}else e.form&&delete e.form},Om=(e,r)=>{if(r.control){if(!r.control.resourceId){delete e.control;return}e.control=r.control}},Cm=(e,r)=>{if(r.voice){let n=Array.isArray(r.voice.sounds);if(!r.voice.resourceId&&!n||n&&r.voice.sounds.length===0){delete e.voice;return}e.voice=pe(r.voice)}else e.voice&&delete e.voice},$m=(e,r)=>{r.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},Nr=e=>fn(gm,[$m,bm,Im,km,vm,Am,wm,Pm,xm,Em,Sm,Rm,Om,Cm])(e);var Kr=(e,r)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=_r(e,r);return n&&typeof n=="object"?e:n};var _m=Object.freeze({dialogueTextSpeed:{source:"global.dialogueTextSpeed"},autoForwardDelay:{source:"global.autoForwardDelay"},autoForwardSpeed:{source:"global.autoForwardSpeed"},skipUnseenText:{source:"global.skipUnseenText"},skipTransitionsAndAnimations:{source:"global.skipTransitionsAndAnimations"},soundVolume:{source:"global.soundVolume"},musicVolume:{source:"global.musicVolume"},muteAll:{source:"global.muteAll"},localizationPackageId:{source:"global.localizationPackageId"},saveLoadPagination:{source:"context.runtime.saveLoadPagination"},menuPage:{source:"context.runtime.menuPage"},menuEntryPoint:{source:"context.runtime.menuEntryPoint"},autoMode:{source:"global.autoMode"},skipMode:{source:"global.skipMode"},dialogueUIHidden:{source:"global.dialogueUIHidden"},isLineCompleted:{source:"global.isLineCompleted"}}),yr=Object.freeze({dialogueTextSpeed:50,autoForwardDelay:1e3,autoForwardSpeed:50,skipUnseenText:!1,skipTransitionsAndAnimations:!1,soundVolume:50,musicVolume:50,muteAll:!1,localizationPackageId:null,autoMode:!1,skipMode:!1,dialogueUIHidden:!1,isLineCompleted:!1}),Pt=Object.freeze({saveLoadPagination:1,menuPage:"",menuEntryPoint:""}),Tm=Object.freeze({dialogueTextSpeed:"number",autoForwardDelay:"number",autoForwardSpeed:"number",skipUnseenText:"boolean",skipTransitionsAndAnimations:"boolean",soundVolume:"number",musicVolume:"number",muteAll:"boolean",localizationPackageId:"nullableString",saveLoadPagination:"number",menuPage:"string",menuEntryPoint:"string",autoMode:"boolean",skipMode:"boolean",dialogueUIHidden:"boolean",isLineCompleted:"boolean"}),uo=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),Wa=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),po=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),Ka=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),jm=(e,r)=>{let n=Tm[e];if(n==="number"){if(typeof r!="number"||!Number.isFinite(r))throw new Error(`${e} requires a finite numeric value`);return}if(n==="boolean"){if(typeof r!="boolean")throw new Error(`${e} requires a boolean value`);return}if(n==="string"){if(typeof r!="string")throw new Error(`${e} requires a string value`);return}if(n==="nullableString"){if(r!==null&&typeof r!="string")throw new Error(`${e} requires a string or null value`);return}throw new Error(`Unsupported runtime field "${e}"`)},bn=(e,r)=>{if(jm(e,r),e==="autoForwardDelay"&&r<0)throw new Error("autoForwardDelay requires a value greater than or equal to 0");if(["autoForwardSpeed","soundVolume","musicVolume"].includes(e)&&(r<0||r>100))throw new Error(`${e} requires a value between 0 and 100`);return e==="saveLoadPagination"?Math.max(1,Math.trunc(r)):r},fo=(e={})=>{let r=e?.config;if(r===void 0)return{...yr};if(!Ka(r))throw new Error("projectData.config must be an object");let n=Object.keys(r).find(i=>i!=="runtimeDefaults");if(n)throw new Error(`projectData.config contains unsupported field "${n}"`);let o=r.runtimeDefaults;if(o===void 0)return{...yr};if(!Ka(o))throw new Error("projectData.config.runtimeDefaults must be an object");let a=new Set(Wa),t=Object.keys(o).find(i=>!a.has(i));if(t)throw new Error(`projectData.config.runtimeDefaults contains unsupported field "${t}"`);let s={...yr};return Wa.forEach(i=>{o[i]!==void 0&&(s[i]=bn(i,o[i]))}),s},Nm=(e,r)=>{if(r.startsWith("global.")){let n=r.slice(7);return e?.global?.[n]}if(r.startsWith("context.runtime.")){let n=r.slice(16),o=Array.isArray(e?.contexts)?e.contexts:[];return o[o.length-1]?.runtime?.[n]}},hr=e=>Object.fromEntries(Object.entries(_m).map(([r,n])=>{let o=Nm(e,n.source),a=o!==void 0?o:yr[r]??Pt[r];return[r,a]})),He=(e,r)=>hr(e)[r],Ja=(e={})=>Object.fromEntries(uo.map(r=>[r,e[r]??yr[r]]));var Jr=Object.freeze({VISUAL_BEHIND_BACKGROUND:10,BACKGROUND:20,VISUAL_BEHIND_CHARACTER:30,CHARACTER:40,VISUAL_BEHIND_DIALOGUE:50,DIALOGUE:60,VISUAL_BEHIND_CHOICE:70,CHOICE:80,VISUAL_FOREGROUND:90}),er=Object.freeze({BEHIND_BACKGROUND:Jr.VISUAL_BEHIND_BACKGROUND,BEHIND_CHARACTER:Jr.VISUAL_BEHIND_CHARACTER,BEHIND_DIALOGUE:Jr.VISUAL_BEHIND_DIALOGUE,BEHIND_CHOICE:Jr.VISUAL_BEHIND_CHOICE,FOREGROUND:Jr.VISUAL_FOREGROUND}),mo=er.BEHIND_DIALOGUE,yo=Object.freeze(Object.values(er).sort((e,r)=>e-r));var Dm={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([r,n])=>({id:r,...n})),formatDate:oo},Lm=/^\$for\s+([A-Za-z_][A-Za-z0-9_]*)(?:\s*,\s*([A-Za-z_][A-Za-z0-9_]*))?\s+in\s+(.+?)(?::)?$/,xt=e=>Array.isArray(e)?e.map(r=>{if(!r||typeof r!="object"||Array.isArray(r)||Object.keys(r).length!==1)return xt(r);let[n]=Object.keys(r),o=Lm.exec(n);if(!o)return xt(r);let[,a,t,s]=o,i=`$for ${a}${t?`, ${t}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(r[n])?r[n]:[];return{[i]:xt(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([r,n])=>[r,xt(n)])),tr=(e,r)=>{let n={functions:Dm};return _r(xt(e),r,n)},_o=({animationType:e,animationId:r,animationPath:n})=>{if(e!==void 0&&!(e==="update"||e==="transition"))throw new Error(`[${n}] Animation "${r}" has unsupported type "${e}". Use "update" or "transition".`)},Mm=({id:e,targetId:r,animation:n,playback:o,animationPath:a="animation"})=>{let t=structuredClone(n);if(_o({animationType:t.type,animationId:e,animationPath:a}),delete t.name,delete t.playback,t.id=e,t.targetId=r,o!==void 0){let s=Um(o,`${a}.playback`);if(s!==void 0){let i=s.loop===!0?fl(t):null;if(s.loop===!0&&t.type!=="update")throw new Error(`[${a}.playback] playback.loop is only supported for type "update".`);if(s.loop===!0&&t.complete!==void 0)throw new Error(`[${a}.playback] animation.complete is not allowed when playback.loop is true because a loop never completes.`);if(s.loop===!0&&(!Number.isFinite(i)||i<=0))throw new Error(`[${a}.playback] playback.loop requires an animation with a finite duration greater than 0.`);t.playback=s}}return t},qm=(e,{animationId:r="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return _o({animationType:e.type,animationId:r,animationPath:n}),e.type},Vm=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},Fm=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},Um=(e,r="animation.playback")=>{if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`[${r}] playback must be an object.`);if(e.continuity!==void 0&&e.continuity!=="render"&&e.continuity!=="persistent")throw new Error(`[${r}] playback.continuity must be "render" or "persistent".`);if(e.speed!==void 0&&(typeof e.speed!="number"||!Number.isFinite(e.speed)||e.speed<=0))throw new Error(`[${r}] playback.speed must be a finite number greater than 0.`);if(e.loop!==void 0&&typeof e.loop!="boolean")throw new Error(`[${r}] playback.loop must be a boolean.`);let n={};return e.continuity!==void 0&&(n.continuity=e.continuity),e.speed!==void 0&&e.speed!==1&&(n.speed=e.speed),e.loop===!0&&(n.loop=!0),Object.keys(n).length>0?n:void 0},Bm=e=>{let r=e?.playback?.speed;return typeof r=="number"&&Number.isFinite(r)&&r>0?r:1},Dr=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),ul=e=>e?.playback?.continuity==="persistent",Ao=e=>Array.isArray(e)?e.map(Ao):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((r,n)=>(r[n]=Ao(e[n]),r),{}),vn=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let r=structuredClone(e);return r.playback&&(delete r.playback.continuity,r.playback.speed===1&&delete r.playback.speed,Object.keys(r.playback).length===0&&delete r.playback),JSON.stringify(Ao(r))},pl=(e=[])=>e.filter(r=>ul(r)).map(r=>structuredClone(r)),dl=e=>Array.isArray(e?.keyframes)?e.keyframes.reduce((r,n)=>{let o=typeof n?.duration=="number"&&Number.isFinite(n.duration)?n.duration:0;return r+o},0):0,ho=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((r,n)=>Math.max(r,dl(n)),0),fl=e=>Math.max(ho(e?.tween),ho(e?.prev?.tween),ho(e?.next?.tween),dl(e?.mask?.progress)),ml=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:fl(e)/Bm(e),zm=e=>e.some(r=>r?.playback?.loop===!0),Qa=({animationInstances:e,activePersistentAnimations:r})=>{if(!Array.isArray(e)||e.length===0||!Array.isArray(r)||r.length===0)return!1;let n=new Set(r.map(vn).filter(Boolean));return e.some(o=>{if(!ul(o))return!1;let a=vn(o);return a?n.has(a):!1})},Be=({animationInstances:e,isLineCompleted:r,skipTransitionsAndAnimations:n,activePersistentAnimations:o,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:t=!0})=>!Array.isArray(e)||e.length===0||n?!1:zm(e)||t&&!r||Qa({animationInstances:e,activePersistentAnimations:o})?!0:t?!1:Qa({animationInstances:e,activePersistentAnimations:a}),Ym=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(r=>e[r]!==void 0),Gm=(e,r)=>{if(Ym(e))throw new Error(`[${r}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},Hm=({resources:e,animationId:r,playback:n,instanceId:o,targetId:a,animationPath:t="animation"})=>{if(!r||!a)return!1;let s=e?.animations?.[r];return s?Mm({id:o,targetId:a,animation:s,playback:n,animationPath:t}):null},Xm=(e,{defaultTargetId:r,defaultId:n,animationPath:o="animation"}={})=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let a=structuredClone(e);return _o({animationType:a.type,animationId:a.id??n,animationPath:o}),a.id??=n,a.targetId??=r,a},To=({animations:e,transitions:r,defaultTargetId:n,idPrefix:o,animationPathPrefix:a=o})=>{r.forEach((t,s)=>{e.push(Xm(t,{defaultTargetId:n,defaultId:`${o}-transition-${s}`,animationPath:`${a}.transitions[${s}]`}))})},Po=(e,r)=>{if(e===void 0)return[];if(!Array.isArray(e)||e.some(n=>n===null||typeof n!="object"||Array.isArray(n)))throw new Error(`${r} must be an array of objects`);return e},Wm=({content:e,path:r,variables:n})=>Po(e,r).reduce((o,a)=>{let t=Kr(a.text,{variables:n});return o+`${t??""}`.length},0),Za=(e=[])=>{let r=new Map;for(let n of e)n?.id&&r.set(n.id,(r.get(n.id)??0)+1);return new Set(Array.from(r.entries()).filter(([,n])=>n>1).map(([n])=>n))},In=(e,r=0,n=new Set)=>{if(!n.has(e?.id))return`character-container-${e.id}`;let o=e?.sprites?.map(({resourceId:a})=>a)||[];return o.length===0?`character-container-${e.id}`:`character-container-${e.id}-${r}-${o.join("-")}`},Et=(e,r)=>{if(!r.transformId)throw new Error(`Visual item "${r.id}" requires transformId`);let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for visual item "${r.id}"`);return n},Km=(e,r={})=>{if(!r?.transformId)return;let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for background`);return n},Jm=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Qm=(e={})=>Jm.some(r=>Dr(e,r)),yl=(e={},r)=>{if(r){if(e.images?.[r])return"sprite";if(e.videos?.[r])return"video";if(e.spritesheets?.[r])return"spritesheet-animation";if(e.layouts?.[r])return"container"}},kn=({resourceId:e,kind:r})=>{if(e)return r?`bg-cg-background-${r}`:`bg-cg-${e}`},Zm=(e={})=>e.textStyles||{},ey=(e={})=>e.images||{},ry=.5,ty=(e={},r,n)=>{if(r){if(!e.animations?.[r])throw new Error(`Animation '${r}' not found in spritesheet resource '${n}'`);return r}return Object.keys(e.animations??{})[0]},jo=({id:e,resourceId:r,spritesheet:n,animationName:o,animationSpeed:a,loop:t,width:s,height:i,transform:l={}}={})=>{let u=ty(n,o,r),c=u?n.animations?.[u]:void 0;if(!c){console.warn(`Spritesheet animation not found: ${r}`);return}return{id:e,type:"spritesheet-animation",...l,width:s??n.width,height:i??n.height,src:n.fileId,atlas:n.jsonData,playback:{frames:c.frames,animationSpeed:a??c.animationSpeed??ry,loop:t??c.loop??!0}}},hl=({id:e,item:r,resources:n={}}={})=>{let o=n.images?.[r.resourceId];if(o)return{type:"sprite",id:e,src:o.fileId,width:o.width,height:o.height,x:0,y:0};let a=n.spritesheets?.[r.resourceId];if(a)return jo({id:e,resourceId:r.resourceId,spritesheet:a,animationName:r.animationName,animationSpeed:r.animationSpeed,loop:r.loop,transform:{x:0,y:0}});console.warn(`Character sprite resource not found: ${r.resourceId}`)},ny=(e={})=>e.colors||{},sy=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,Rt=(e,r)=>e==="root"?`${r}`:`${e}.${r}`,et=(e,r,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${r}" must resolve to a non-empty string`)},go=(e,r,n)=>{if(e===void 0)return 1;if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);if(e<0||e>1)throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);return e},bo=(e,r,n,o,{minimum:a}={})=>{if(e===void 0)return o;if(typeof e!="number"||!Number.isFinite(e)||a!==void 0&&e<a){let t=a===void 0?"a finite number":`a finite number >= ${a}`;throw new Error(`shadow.${r} for text style "${n}" must be ${t}`)}return e},xn=(e,r)=>{if(typeof e!="string"||!sy.test(e))throw new Error(`${r} must resolve to a hex color`);return e.length===4?`#${e.slice(1).split("").map(n=>n.repeat(2)).join("")}`:e},el=(e,r,n)=>{let o=xn(e,n);if(r===1)return o;let a=Number.parseInt(o.slice(1,3),16),t=Number.parseInt(o.slice(3,5),16),s=Number.parseInt(o.slice(5,7),16);return`rgba(${a}, ${t}, ${s}, ${r})`},oy=(e={},r)=>{let n=Zm(e)?.[r];if(!n)throw new Error(`Text style "${r}" not found`);let a=(Array.isArray(n.fontId)?n.fontId:[n.fontId]).map(l=>{let u=e.fonts?.[l];if(!u)throw new Error(`Font "${l}" not found for text style "${r}"`);return u.fileId}),t=e.colors?.[n.colorId];if(!t)throw new Error(`Color "${n.colorId}" not found for text style "${r}"`);let s=go(n.colorAlpha,"colorAlpha",r),i={fontFamily:Array.isArray(n.fontId)?a.join(", "):a[0],fontSize:n.fontSize??16,fontWeight:n.fontWeight??"400",fontStyle:n.fontStyle??"normal",lineHeight:n.lineHeight??1.2,fill:el(t.hex,s,`Color "${n.colorId}" for text style "${r}"`)};if(n.align!==void 0&&(i.align=n.align),n.wordWrap!==void 0&&(i.wordWrap=n.wordWrap),n.breakWords!==void 0&&(i.breakWords=n.breakWords),n.wordWrapWidth!==void 0&&(i.wordWrapWidth=n.wordWrapWidth),n.strokeColorId){let l=e.colors?.[n.strokeColorId];if(!l)throw new Error(`Stroke color "${n.strokeColorId}" not found for text style "${r}"`);let u=go(n.strokeAlpha,"strokeAlpha",r);i.strokeColor=el(l.hex,u,`Stroke color "${n.strokeColorId}" for text style "${r}"`)}else if(n.strokeAlpha!==void 0)throw new Error(`strokeAlpha for text style "${r}" requires strokeColorId`);if(n.strokeWidth!==void 0&&(i.strokeWidth=n.strokeWidth),n.shadow!==void 0){let l=e.colors?.[n.shadow.colorId];if(!l)throw new Error(`Shadow color "${n.shadow.colorId}" not found for text style "${r}"`);i.shadow={color:xn(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${r}"`),alpha:go(n.shadow.alpha,"shadow.alpha",r),blur:bo(n.shadow.blur,"blur",r,0,{minimum:0}),offsetX:bo(n.shadow.offsetX,"offsetX",r,2),offsetY:bo(n.shadow.offsetY,"offsetY",r,2)}}return i},xo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>xo(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;if(Object.prototype.hasOwnProperty.call(e,"textStyle"))throw new Error(`Inline textStyle is not allowed in layout elements at "${n}". Use textStyleId instead`);let o={};for(let[a,t]of Object.entries(e))a!=="textStyleId"&&(o[a]=xo(t,r,Rt(n,a)));return e.textStyleId!==void 0&&(et(e.textStyleId,n,"textStyleId"),o.textStyle=oy(r,e.textStyleId)),o},No=(e={},r)=>{let n=ny(e)?.[r];if(!n)throw new Error(`Color "${r}" not found`);return xn(n.hex,`Color "${r}"`)},gl=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",Io=(e,r,n)=>{let o=e?.[r];if(!(!o||typeof o!="object"||Array.isArray(o))&&Object.prototype.hasOwnProperty.call(o,"fill"))throw new Error(`Inline ${r}.fill is not allowed in rect layout elements at "${n}". Use ${gl(`${r}.fill`)} instead`)},iy=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ot(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;let o={};for(let[a,t]of Object.entries(e))a!=="colorId"&&(o[a]=Ot(t,r,Rt(n,a)));return e.colorId!==void 0&&(et(e.colorId,n,"colorId"),o.fill=No(r,e.colorId)),o},Ot=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ot(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;if(e.type==="rect"){if(Object.prototype.hasOwnProperty.call(e,"fill"))throw new Error(`Inline fill is not allowed in rect layout elements at "${n}". Use ${gl("fill")} instead`);Io(e,"hover",n),Io(e,"click",n),Io(e,"rightClick",n)}let o={};for(let[a,t]of Object.entries(e))if(!(e.type==="rect"&&a==="colorId")){if(e.type==="rect"&&(a==="hover"||a==="click"||a==="rightClick")){o[a]=iy(t,r,Rt(n,a));continue}o[a]=Ot(t,r,Rt(n,a))}return e.type==="rect"&&e.colorId!==void 0&&(et(e.colorId,n,"colorId"),o.fill=No(r,e.colorId)),o},wo=(e={},r)=>{let n=ey(e)?.[r];return n||null},bl=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",rl=(e,r,n,o)=>{let a=e?.[r];if(!(!a||typeof a!="object"||Array.isArray(a))&&Object.prototype.hasOwnProperty.call(a,o))throw new Error(`Inline ${r}.${o} is not allowed in sprite layout elements at "${n}". Use ${bl(`${r}.${o}`)} instead`)},tl=(e,r,n)=>{let o=e[r];e[r]={...o&&typeof o=="object"&&!Array.isArray(o)?o:{},src:n}},Eo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Eo(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;if(e.type==="sprite"){for(let a of["url","src","hoverUrl","hoverSrc","clickUrl","clickSrc"])if(Object.prototype.hasOwnProperty.call(e,a))throw new Error(`Inline ${a} is not allowed in sprite layout elements at "${n}". Use ${bl(a)} instead`);rl(e,"hover",n,"src"),rl(e,"click",n,"src")}let o={};for(let[a,t]of Object.entries(e))e.type==="sprite"&&(a==="imageId"||a==="hoverImageId"||a==="clickImageId")||(o[a]=Eo(t,r,Rt(n,a)));if(e.type==="sprite"&&e.imageId!==void 0){et(e.imageId,n,"imageId");let a=wo(r,e.imageId),t=a?.fileId??e.imageId;o.src=t,o.width===void 0&&a?.width!==void 0&&(o.width=a.width),o.height===void 0&&a?.height!==void 0&&(o.height=a.height)}return e.type==="sprite"&&e.hoverImageId!==void 0&&(et(e.hoverImageId,n,"hoverImageId"),tl(o,"hover",wo(r,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(et(e.clickImageId,n,"clickImageId"),tl(o,"click",wo(r,e.clickImageId)?.fileId??e.clickImageId)),o},Do=(e,r={},n="root")=>Eo(Ot(xo(e,r,n),r,n),r,n),nr=Do,Lr=(e=[])=>e.find(r=>r.id==="story"),ay="#000000",So="bg-cg-background-color",ly=({resources:e={},background:r={},screen:n})=>r?.colorId===void 0?xn(n?.backgroundColor??ay,"screen.backgroundColor"):No(e,r.colorId),Il=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},cy=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},nl=(e={},{includeDefaultAlpha:r=!1}={})=>{let n=Il(e),o=cy(e),a={};return(r||n!==void 0)&&(a.alpha=n??1),o&&(a.blur=o),a},uy=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},py=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},wl=(e={})=>{let r=uy(e),n=py(e),o={};return r!==void 0&&(o.alpha=r),n&&(o.blur=n),o},Zr=(e={})=>wl(e),rr=(e={},r={})=>{let n={x:r.x??e.x,y:r.y??e.y,anchorX:r.anchorX??e.anchorX,anchorY:r.anchorY??e.anchorY,rotation:r.rotation??e.rotation,scaleX:r.scaleX??e.scaleX,scaleY:r.scaleY??e.scaleY},o=r.originX??e.originX,a=r.originY??e.originY;return o!==void 0&&(n.originX=o),a!==void 0&&(n.originY=a),n},dy=["id","type","resourceId","transformId","x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY","layer","opacity","blur","animations"],Lo=(e={})=>e.text&&Dr(e.text,"content")&&Dr(e.text,"textStyleId"),sl=(e={})=>{if(e.resourceId)return e.resourceId;if(Lo(e))return"text"},ol=(e,r={})=>typeof e=="string"?r.images?.[e]?.fileId??e:!e||typeof e!="object"||Array.isArray(e)?e:e.imageId?r.images?.[e.imageId]?.fileId??e.imageId:Array.isArray(e.items)?{...e,items:e.items.map(n=>{if(typeof n=="string")return r.images?.[n]?.fileId??n;if(!n||typeof n!="object"||Array.isArray(n))return n;if(n.imageId){let{imageId:o,...a}=n;return{...a,src:r.images?.[o]?.fileId??o}}return typeof n.src=="string"?{...n,src:r.images?.[n.src]?.fileId??n.src}:n})}:e,fy=({item:e,particle:r,resources:n})=>{let o=Et(n,e),a=structuredClone(r),t=a.modules?.appearance?.texture;t!==void 0&&(a.modules.appearance.texture=ol(t,n)),a.texture!==void 0&&(a.texture=ol(a.texture,n));let s={id:`visual-${e.id}`,type:"container",children:[{...a,id:`visual-${e.id}-particles`,type:"particles",x:0,y:0}],...rr(o,e)};return Object.assign(s,Zr(e)),s},my=e=>{if(e.text){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!Lo(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);for(let r of dy)if(Dr(e.text,r))throw new Error(`Visual item "${e.id}" text.${r} is reserved for the visual item`)}},yy=({resources:e,background:r,screen:n={width:1920,height:1080},includeOpacity:o=!1})=>{let a={id:So,type:"rect",x:0,y:0,width:n?.width??1920,height:n?.height??1080,fill:ly({resources:e,background:r,screen:n})};if(o){let t=Il(r);t!==void 0&&(a.alpha=t)}return a},hy=(e={},r)=>r?!!(e.images?.[r]||e.videos?.[r]||e.spritesheets?.[r]||e.layouts?.[r]):!1,il=({resources:e={},resourceId:r,colorId:n})=>{let o=yl(e,r);return r&&(o||n===void 0)?{resourceId:r,targetId:kn({resourceId:r,kind:o})}:n!==void 0?{resourceId:So,targetId:So}:{resourceId:void 0,targetId:void 0}},kl=100,gr=kl,gy="channel:bgm",by="channel:music-room",Iy="music-room:player",wy="channel:voice",ky="default",vy=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),St=(...e)=>e.map(vy).join(":"),An=(e,r,n)=>{let o=new Set;e.forEach(({id:a})=>{if(o.has(a)){let t=n?` in ${n}`:"";throw new Error(`Duplicate ${r} id "${a}"${t}.`)}o.add(a)})},Ay=(e,r)=>e*r/kl,vl=(e={},r)=>e?.[r]??yr[r],En=(e={},r,n=gr)=>Ay(n,vl(e,r)),Sn=({id:e,volume:r,muted:n,pan:o,loop:a,playback:t,interruption:s,children:i,runtime:l})=>{let u={id:e,type:"audio-channel",volume:r,muted:!!l?.muteAll||(n??!1),pan:o??0,children:i};return a!==void 0&&(u.loop=a),t!==void 0&&(u.playback=structuredClone(t)),s!==void 0&&(u.interruption=s),u},wn=(e,r,n,o)=>e[n]!==void 0?e[n]:r[n]!==void 0?r[n]:o,Py=["muted","pan","playbackRate","startAt","endAt"],Rn=({id:e,sound:r,resource:n,defaultLoop:o=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:wn(r,n,"loop",o),volume:wn(r,n,"volume",gr),startDelayMs:wn(r,n,"startDelayMs",0)};Py.forEach(s=>{let i=wn(r,n,s,void 0);i!==void 0&&(a[s]=i)}),r.playback!==void 0&&(a.playback=structuredClone(r.playback));let t=a.startAt??0;if(a.endAt!==void 0&&a.endAt!==null&&a.endAt<t)throw new Error(`Sound "${e}" endAt (${a.endAt}) must be greater than or equal to startAt (${t}).`);return a},qe=({variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,runtime:a,saveSlots:t=[],dialogueState:s,includeInactiveAdvDialogue:i=!1,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g=[],characters:h={},dialogueUIHidden:w,skipOnlyViewedLines:b,skipTransitionsAndAnimations:E}={})=>{let k={dialogueTextSpeed:a?.dialogueTextSpeed??50,autoForwardDelay:a?.autoForwardDelay??1e3,autoForwardSpeed:a?.autoForwardSpeed??50,skipUnseenText:a?.skipUnseenText??!1,skipTransitionsAndAnimations:a?.skipTransitionsAndAnimations??!1,soundVolume:a?.soundVolume??50,musicVolume:a?.musicVolume??50,muteAll:a?.muteAll??!1,localizationPackageId:a?.localizationPackageId??null,saveLoadPagination:a?.saveLoadPagination??1,menuPage:a?.menuPage??"",menuEntryPoint:a?.menuEntryPoint??"",autoMode:a?.autoMode??u??!1,skipMode:a?.skipMode??c??!1,dialogueUIHidden:a?.dialogueUIHidden??w??!1,isLineCompleted:a?.isLineCompleted??l??!1},v=Oy({dialogueState:s,includeInactiveAdvDialogue:i,characters:h,variables:e,runtime:k}),x={variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,localizationPackages:a?.localizationPackages??[],localizationPackageId:k.localizationPackageId,runtime:k,saveSlots:t,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g,characters:h};return v&&(x.dialogue=v,x.dialogueLines=v.lines),x},al=100,Pn=(e,r)=>{if(Array.isArray(e))return e.map(o=>Pn(o,r));if(!e||typeof e!="object")return e;let n={...e};return Object.keys(n).forEach(o=>{n[o]=Pn(n[o],r)}),n.type==="text-revealing"?r(n):n},xy=e=>Pn(e,r=>({...r,revealEffect:"none"})),Ey=e=>Pn(e,r=>{let n=Number(r.speed??r.displaySpeed),o=Number.isFinite(n)?Math.max(n,al):al;return{...r,speed:o,...Object.prototype.hasOwnProperty.call(r,"displaySpeed")?{displaySpeed:o}:{}}}),br=(e,{isLineCompleted:r=!1,skipMode:n=!1,skipTransitionsAndAnimations:o=!1}={})=>r||o?xy(e):n?Ey(e):e,Al=({id:e,screen:r={width:1920,height:1080}})=>({id:e,type:"rect",fill:"transparent",width:r.width,height:r.height,x:0,y:0,click:{payload:{actions:{}}}}),Ro=e=>{if(Array.isArray(e))return e.map(Ro);if(!e||typeof e!="object")return e;let r={};for(let[t,s]of Object.entries(e))r[t]=Ro(s);let n=r.click?.payload;if(!n||typeof n!="object"||Array.isArray(n))return r;let o=n.actions,a=o&&typeof o=="object"&&!Array.isArray(o)&&Object.prototype.hasOwnProperty.call(o,"nextLine")?{...o.nextLine,bypassChoice:!0}:void 0;return{...r,click:{...r.click,payload:{...n,bypassChoice:!0,...a?{actions:{...o,nextLine:a}}:{}}}}},Sy=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),ll="submit",ko=(e,r,n={})=>{let o=e?.payload&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:{},a=o.actions&&typeof o.actions=="object"?o.actions:{},t=n.replaceActions===!0?r:{...a,...r};return{...e||{},payload:{...o,actions:t}}},Oo=(e,r,n={})=>{if(Array.isArray(e))return e.map(u=>Oo(u,r,n));if(!e||typeof e!="object")return e;let o=typeof e.type=="string",a=o&&e.formRole===ll,t=o&&n.submitRoleAncestor,s=a||t?{submitRoleAncestor:!0}:{},i={};for(let[u,c]of Object.entries(e))i[u]=Oo(c,r,u==="children"?s:{});let l=i;if(l.type==="input"&&typeof l.field=="string"){let u=r?.fields?.[l.field];if(u){let c={updateFormField:{formKey:r.key,field:u.id,value:"_event.value"}};l={...l,value:u.value,placeholder:l.placeholder===void 0?u.placeholder:l.placeholder,multiline:l.multiline===void 0?u.multiline:l.multiline,...l.maxLength===void 0&&u.maxLength!==void 0?{maxLength:u.maxLength}:{},change:ko(l.change,c),submit:ko(l.submit,r.submitActions)}}}return l.formRole===ll||t?{...l,click:ko(l.click,r.submitActions,{replaceActions:!0})}:l},Co=(e,r)=>{if(Array.isArray(e))return e.map(o=>Co(o,r));if(!e||typeof e!="object")return e;let n={};for(let[o,a]of Object.entries(e))n[o]=Co(a,r);for(let o of Sy){let a=n[o]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[o]={...n[o],payload:{...a,_interactionSource:"form"}})}return n},$o=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0,s=mn({characterId:e,character:r,characterName:n,characters:o,variables:a});return{...t||{},...r||{},name:s}},Pl=(e=[],r={},n={})=>e.map(o=>{let a=$o({characterId:o.characterId,character:o.character,characterName:o.characterName,characters:r,variables:n}),t=typeof o.text=="string"?o.text:Array.isArray(o.content)?o.content.map(s=>s?.text??"").join(""):"";return{...o,text:t,character:a,characterName:a.name}}),Ry=e=>!(!e||e.mode==="adv"&&e.content===void 0),Oy=({dialogueState:e,includeInactiveAdvDialogue:r=!1,characters:n={},variables:o,runtime:a}={})=>{if(!r&&!Ry(e))return;let t=e.content===void 0?[{text:""}]:Po(e.content,"dialogue.content"),s=e.content===void 0?0:Wm({content:e.initialRevealedContent,path:"dialogue.initialRevealedContent",variables:o}),i=a?.dialogueTextSpeed??yr.dialogueTextSpeed,l=e.textSpeed??i,u=(e.lines||[]).map((p,m)=>{let d=Po(p.content,`dialogue.lines[${m}].content`),f=$o({characterId:p.characterId,character:p.character,characterName:p.characterName,characters:n,variables:o});return{...p,textSpeed:p.textSpeed??i,content:d.map(y=>({...y,text:Kr(y.text,{variables:o})})),character:f,characterName:f.name}}),c=$o({characterId:e.characterId,character:e.character,characters:n,variables:o});return{characterId:e.characterId,persistCharacter:e.persistCharacter,persistSprite:e.persistSprite,character:c,textSpeed:l,content:t.map(p=>({...p,text:Kr(p.text,{variables:o})})),initialRevealedCharacters:s,lines:u}},xl=({container:e,resources:r,templateData:n,isLineCompleted:o=!1,skipMode:a=!1,skipTransitionsAndAnimations:t=!1})=>{let s=tr(e,n);return nr(br(s,{isLineCompleted:o,skipMode:a,skipTransitionsAndAnimations:t}),r)},vo=(e,r={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(r),cl=({renderStateKeyboard:e,keyboard:r,phase:n})=>{!r||typeof r!="object"||Array.isArray(r)||Object.entries(r).forEach(([o,a])=>{let t=e[o]??{},s=n==="keydown"?a?.keydown:a?.keyup;if(n==="keydown"&&s&&typeof s=="object"){e[o]={...t,keydown:{payload:vo(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[o].keyup={payload:vo(a.keyup)});return}e[o]={...t,[n]:{payload:vo(a)}}})},Cy=(e={},r={})=>{let n={};return cl({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),cl({renderStateKeyboard:n,keyboard:r,phase:"keyup"}),Object.keys(n).length>0?n:void 0},sr=({animationsDef:e,resources:r,previousResourceId:n,currentResourceId:o,previousTargetId:a,currentTargetId:t,animationPath:s,idPrefix:i})=>{if(!e)return[];let l=[],u=({instanceId:h,targetId:w})=>{let b=Hm({resources:r,animationId:d,playback:f,instanceId:h,targetId:w,animationPath:s});b&&l.push(b)},c=n!=null&&n!==!1,p=o!=null&&o!==!1,m=a&&t&&a===t;Gm(e,s);let d=Vm(e),f=Fm(e),y=r?.animations?.[d],g=qm(y,{animationId:d,animationPath:s});if(g==="update")return p&&t?u({instanceId:`${i}-animation-update`,targetId:t}):c&&a&&u({instanceId:`${i}-animation-update`,targetId:a}),l;if(g==="transition"){let h=`${i}-animation-transition`,w=f?.continuity==="persistent"?h:`${i}-animation-in`;if(c&&p&&m)return u({instanceId:h,targetId:t}),l;c&&u({instanceId:`${i}-animation-out`,targetId:a}),p&&u({instanceId:w,targetId:t})}return l},$y=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),_y=(e,{presentationState:r,previousPresentationState:n,currentLineActions:o,resources:a={},screen:t={width:1920,height:1080},isLineCompleted:s,skipTransitionsAndAnimations:i,variables:l,imageGallery:u,musicRoom:c,sceneReplay:p,runtime:m,activePersistentAnimations:d,restoredPersistentAnimations:f,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:w,canRollback:b,form:E,saveSlots:k=[]})=>{let{elements:v,animations:x}=e;if(r.background){let $=o===void 0?!0:Dr(o?.background??{},"animations"),T=v.find(Q=>Q.id==="story");if(!T)return e;let S=Km(a,r.background),D=S||Qm(r.background),U=n?.background?.resourceId,le=n?.background?.colorId,z=r.background.resourceId??(r.background.animations?U:void 0),ce=r.background.colorId??(r.background.animations?le:void 0),N=hy(a,z),se={...r.background,colorId:ce};if((ce!==void 0||N)&&T.children.push(yy({resources:a,background:se,screen:t,includeOpacity:!N})),z){let{images:Q={},videos:ne={},spritesheets:fe={}}=a,Z=yl(a,z),O;if(Z==="sprite"?O=Q[z]:Z==="video"?O=ne[z]:Z==="spritesheet-animation"&&(O=fe[z]),O){let _=Z==="video",F=Z==="spritesheet-animation",te={x:(t?.width??1920)/2,y:(t?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...S},he={...nl(r.background,{includeDefaultAlpha:!0}),...rr(te,r.background)},Pe;F?Pe=jo({id:kn({resourceId:z,kind:Z}),resourceId:z,spritesheet:O,animationName:r.background.animationName,animationSpeed:r.background.animationSpeed,loop:r.background.loop,transform:he}):Pe={id:kn({resourceId:z,kind:Z}),type:_?"video":"sprite",src:O.fileId,width:O.width,height:O.height,...he},_&&(Pe.loop=r.background.loop??!1,Pe.volume=O.volume??50),Pe&&T.children.push(Pe)}}if(z){let{layouts:Q={}}=a,ne=Q[z];if(ne){let fe={id:kn({resourceId:z,kind:"container"}),type:"container",children:ne.elements,...nl(r.background)};D&&Object.assign(fe,rr({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...S},r.background));let Z=tr(fe,qe({variables:l,imageGallery:u,musicRoom:c,sceneReplay:p,runtime:m,saveSlots:k,dialogueState:r.dialogue,isLineCompleted:s,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:w,canRollback:b,form:E,characters:a.characters||{},skipTransitionsAndAnimations:i}));T.children.push(nr(br(Z,{isLineCompleted:s,skipMode:g,skipTransitionsAndAnimations:i}),a))}}let X=il({resources:a,resourceId:U,colorId:le}),V=il({resources:a,resourceId:z,colorId:ce}),H=sr({animationsDef:r.background.animations,resources:a,previousResourceId:X.resourceId,currentResourceId:V.resourceId,previousTargetId:X.targetId,currentTargetId:V.targetId,animationPath:"background.animations",idPrefix:"bg-cg"});Be({animationInstances:H,isLineCompleted:s,skipTransitionsAndAnimations:i,activePersistentAnimations:d,restoredPersistentAnimations:f,isAuthoredOnCurrentLine:$})&&x.push(...H)}return e},Ty=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{elements:i,animations:l}=e;if(r.character&&o){let u=i.find(f=>f.id==="story");if(!u)return e;let c=r.character.items||[],p=n?.character?.items||[],m=Za(c),d=Za(p);for(let f=0;f<c.length;f++){let y=c[f],{transformId:g,sprites:h}=y,w=p.find(D=>D.id===y.id),b=p.findIndex(D=>D.id===y.id),E=w?.sprites&&w.sprites.length>0,k=h&&h.length>0,v=b>=0?In(w,b,d):void 0,x=sr({animationsDef:y.animations,resources:o,previousResourceId:v,currentResourceId:k?In(y,f,m):void 0,previousTargetId:v,currentTargetId:k?In(y,f,m):void 0,animationPath:`character.items[${f}].animations`,idPrefix:"character"});if(y.animations&&!h&&!g&&E&&Be({animationInstances:x,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})){l.push(...x);continue}if(y.animations&&!h&&!g)continue;if(!h||h.length===0||!g){console.warn("Character item missing sprites or transformId:",y);continue}let $=In(y,f,m),T=o.transforms[g];if(!T){console.warn("Transform not found:",g);continue}let S={type:"container",id:$,...rr(T,y),...Zr(y),children:[]};for(let D of h){let U=hl({id:`${$}-${D.id}`,item:D,resources:o});U&&S.children.push(U)}u.children.push(S),Be({animationInstances:x,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&l.push(...x)}}return e},El=(e,r)=>{if(!yo.includes(e))throw new Error(`${r} must be one of: ${yo.join(", ")}.`)},jy=(e,r)=>{let n=!!e.resourceId||Lo(e),o=e.layer??(n?void 0:r?.layer)??mo;return El(o,`Visual item "${e.id}" layer`),o},Ny=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,variables:s,imageGallery:i,musicRoom:l,sceneReplay:u,runtime:c,activePersistentAnimations:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,saveSlots:w=[],visualLayer:b})=>{let{elements:E,animations:k}=e;if(r.visual&&o){let v=E.find(S=>S.id==="story");if(!v)return e;let x=r.visual.items,$=n?.visual?.items||[],T=qe({variables:s,imageGallery:i,musicRoom:l,sceneReplay:u,runtime:c,saveSlots:w,dialogueState:r.dialogue,isLineCompleted:a,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:t});b!==void 0&&El(b,"visualLayer");for(let S of x){let D=$.find(X=>X.id===S.id),U=jy(S,D);if(b!==void 0&&U!==b)continue;if(my(S),S.text){let X=Et(o,S),V={...structuredClone(S.text),id:`visual-${S.id}`,type:"text",...rr(X,S)};Object.assign(V,Zr(S)),v.children.push(nr(tr(V,T),o))}if(S.resourceId){let{images:X={},videos:V={},spritesheets:H={}}=o,Q=H[S.resourceId];if(Q){let ne=Et(o,S),fe=Zr(S),Z=jo({id:`visual-${S.id}`,resourceId:S.resourceId,spritesheet:Q,animationName:S.animationName,animationSpeed:S.animationSpeed,loop:S.loop,width:S.width,height:S.height,transform:{...rr(ne,S),alpha:fe.alpha??S.alpha??1,...fe.blur?{blur:fe.blur}:{}}});Z&&v.children.push(structuredClone(Z))}else{let ne=X[S.resourceId]||V[S.resourceId];if(ne){let fe=V[S.resourceId]!==void 0,Z=Et(o,S),O={id:`visual-${S.id}`,type:fe?"video":"sprite",src:ne.fileId,width:ne.width,height:ne.height,...rr(Z,S)};Object.assign(O,Zr(S)),fe&&(O.loop=ne.loop??!1,O.volume=ne.volume??50),v.children.push(O)}}}let le=!!(o.spritesheets?.[S.resourceId]||o.images?.[S.resourceId]||o.videos?.[S.resourceId]);if(S.resourceId&&!le){let X=o.particles?.[S.resourceId];X&&v.children.push(fy({item:S,particle:X,resources:o}))}let z=!!o.particles?.[S.resourceId];if(S.resourceId&&!le&&!z){let{layouts:X={}}=o,V=X[S.resourceId];if(V){let H=Et(o,S),Q={id:`visual-${S.id}`,type:"container",children:structuredClone(V.elements),...rr(H,S)};Object.assign(Q,Zr(S));let ne=tr(Q,T);v.children.push(nr(br(ne,{isLineCompleted:a,skipMode:d,skipTransitionsAndAnimations:t}),o))}}let ce=sl(D),N=sl(S),se=sr({animationsDef:S.animations,resources:o,previousResourceId:ce,currentResourceId:N,previousTargetId:ce?`visual-${S.id}`:void 0,currentTargetId:N?`visual-${S.id}`:void 0,animationPath:`visual.items[${S.id}].animations`,idPrefix:S.id});Be({animationInstances:se,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:p})&&k.push(...se)}}return e},Qr="dialogue-character-sprite",Dy=(e,{presentationState:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=Lr(e.elements);if(!l)return e;let u=r.dialogue?.character?.sprite,c=n?.dialogue?.character?.sprite,p=yt(u),m=yt(c),d=sr({animationsDef:u?.animations,resources:o,previousResourceId:m?Qr:void 0,currentResourceId:p?Qr:void 0,previousTargetId:m?Qr:void 0,currentTargetId:p?Qr:void 0,animationPath:"dialogue.character.sprite.animations",idPrefix:"dialogue-character-sprite"});if(!p)return u?.animations&&m&&Be({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e;let f=o.transforms?.[u.transformId];if(!f)return console.warn("Transform not found:",u.transformId),e;let y={type:"container",id:Qr,...rr(f),children:[]};for(let g of u.items){let h=hl({id:`${Qr}-${g.id}`,item:g,resources:o});h&&y.children.push(h)}return l.children.push(y),Be({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e},Ly=(e,{presentationState:r,previousPresentationState:n,resources:o={},dialogueUIHidden:a,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:u,form:c,skipOnlyViewedLines:p,isLineCompleted:m,skipTransitionsAndAnimations:d,variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:w,activePersistentAnimations:b,saveSlots:E=[]})=>{let{elements:k,animations:v}=e;if(!r.dialogue||a)return e;let x=k.find(T=>T.id==="story");if(!x)return e;if(r.dialogue.ui&&r.dialogue.ui.resourceId){let{layouts:T={}}=o,S=T[r.dialogue.ui.resourceId];if(S){let D={elements:S.elements},U=qe({variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:w,saveSlots:E,dialogueState:r.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:m,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:u,form:c,characters:o.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:d}),le=tr(D,U),z=nr(br(le?.elements,{isLineCompleted:m,skipMode:s,skipTransitionsAndAnimations:d}),o);if(Array.isArray(z))for(let ce of z)x.children.push(ce);else z&&x.children.push(z)}}Dy(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b});let $=sr({animationsDef:r.dialogue.ui?.animations,resources:o,previousResourceId:n?.dialogue?.ui?.resourceId,currentResourceId:r.dialogue.ui?.resourceId,previousTargetId:n?.dialogue?.ui?.resourceId?"dialogue-container":void 0,currentTargetId:r.dialogue.ui?.resourceId?"dialogue-container":void 0,animationPath:"dialogue.ui.animations",idPrefix:"dialogue-ui"});return Be({animationInstances:$,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b})&&v.push(...$),e},My=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,activePersistentAnimations:w,saveSlots:b=[]})=>{let{elements:E,animations:k}=e;if(r.choice&&o){let v=Lr(E);if(!v)return e;let x=o?.layouts?.[r.choice.resourceId];if(x&&x.elements){let T={elements:x.elements},S=tr(T,{...qe({variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,saveSlots:b,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:d,isChoiceVisible:f??!!r.choice,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:s}),choice:{items:r.choice?.items??[]}}),D=Ro(nr(br(S?.elements,{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o));if(Array.isArray(D))for(let U of D)v.children.push(U);else D&&v.children.push(D)}let $=sr({animationsDef:r.choice.animations,resources:o,previousResourceId:n?.choice?.resourceId,currentResourceId:r.choice.resourceId,previousTargetId:n?.choice?.resourceId?"choice-container":void 0,currentTargetId:r.choice.resourceId?"choice-container":void 0,animationPath:"choice.animations",idPrefix:"choice"});Be({animationInstances:$,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:w})&&k.push(...$)}return e},qy=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,activePersistentAnimations:h,saveSlots:w=[],form:b})=>{let{elements:E,animations:k}=e;if(!b?.resourceId||!o)return e;let v=Lr(E);if(!v)return e;let x=o?.layouts?.[b.resourceId];if(!x)return console.warn(`Form layout not found: ${b.resourceId}`),e;let $={id:"form-container",type:"container",x:0,y:0,children:x.elements||[]},T={...qe({variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,saveSlots:w,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,characters:o.characters||{},skipTransitionsAndAnimations:s,form:b}),form:b},S=tr($,T),D=Co(nr(br(Oo(S,b),{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o),b);D&&v.children.push(D);let U=sr({animationsDef:b.animations,resources:o,previousResourceId:n?.form?.resourceId,currentResourceId:b.resourceId,previousTargetId:n?.form?.resourceId?"form-container":void 0,currentTargetId:b.resourceId?"form-container":void 0,animationPath:"form.animations",idPrefix:"form"});return Be({animationInstances:U,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:h})&&k.push(...U),e},Vy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,saveSlots:y=[],skipTransitionsAndAnimations:g})=>{if(!r.control?.resourceId)return e;let h=n.controls?.[r.control.resourceId];if(!h)return e;let w=Cy(h.keyboard,h.keyup);if(w&&Object.keys(w).length>0&&(e.global.keyboard=w),!Array.isArray(h.elements)||h.elements.length===0)return e;let b=Lr(e.elements);if(!b)return e;let E={id:`control-${r.control.resourceId}`,type:"container",x:0,y:0,children:h.elements};return b.children.push(xl({container:E,resources:n,templateData:qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:n.characters||{},skipTransitionsAndAnimations:g}),isLineCompleted:l,skipMode:c,skipTransitionsAndAnimations:g})),e},Fy=(e,{presentationState:r,resources:n,runtime:o,variables:a,musicRoomPlayer:t})=>{let{elements:s,audio:i}=e;if(r.bgm&&n){if(!Lr(s))return e;let u=r.bgm,c=!Array.isArray(u.sounds),p=c?u.resourceId?[{id:"default",resourceId:u.resourceId,loop:u.loop??!0,volume:u.volume,startDelayMs:u.startDelayMs??0}]:[]:u.sounds,m=!c&&u.loop===!0,d=[];if(c||An(p,"BGM sound"),m){let y=p.find(g=>g.loop===!0);if(y)throw new Error(`BGM sound "${y.id}" cannot loop inside a looping BGM channel.`)}if(p.forEach(y=>{let g=n.sounds?.[y.resourceId];if(!g)return;let h=m?{...y,loop:y.loop??!1}:y;d.push(Rn({id:St("bgm",c?"default":y.id),sound:h,resource:g,defaultLoop:!m}))}),d.length===0)return e;let f=qe({variables:a,runtime:o}).runtime;i.push(Sn({id:gy,volume:En(f,"musicVolume",c?gr:u.volume??gr),muted:u.muted,pan:u.pan,loop:c?void 0:u.loop,playback:t?.bgmPlayback,interruption:u.interruption,children:d,runtime:f}))}return e},Uy=(e,{resources:r={},runtime:n,variables:o,musicRoomPlayer:a})=>{let t=r.musicRoom;if(!t||!a?.trackId||!a.playback)return e;let s=t.tracks.find(c=>c.id===a.trackId),i=s?r.sounds?.[s.soundId]:void 0;if(!s||!i)return e;let l=qe({variables:o,runtime:n}).runtime,u=Rn({id:Iy,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:i});return e.audio.push(Sn({id:by,volume:En(l,"musicVolume",gr),children:[u],runtime:l})),e},By=(e,{presentationState:r,resources:n,runtime:o})=>{let{audio:a}=e;if(r.sfx&&n){let t=r.sfx,s=!Array.isArray(t.channels),i=s?[{id:ky,sounds:t.items??[]}]:t.channels;s||An(i,"SFX channel"),i.forEach(l=>{let u=!s&&l.loop===!0,c=[];if(s||An(l.sounds,"SFX sound",`SFX channel "${l.id}"`),u){let p=l.sounds.find(m=>m.loop===!0);if(p)throw new Error(`SFX sound "${p.id}" cannot loop inside looping SFX channel "${l.id}".`)}l.sounds.forEach((p,m)=>{let d=n.sounds?.[p.resourceId];if(!d)return;let f=u?{...p,loop:p.loop??!1}:p;c.push(Rn({id:s?St("sfx","default",m,p.id):St("sfx",l.id,p.id),sound:f,resource:d,defaultLoop:u?!1:void 0}))}),c.length!==0&&a.push(Sn({id:St("channel","sfx",l.id),volume:En(o,"soundVolume",l.volume??gr),muted:l.muted,pan:l.pan,loop:s?void 0:l.loop,interruption:s?void 0:l.interruption,children:c,runtime:o}))})}return e},zy=(e,r,n)=>{if(!(!r||!n))return e?.voices?.[r]?.[n]},Yy=(e,{presentationState:r,resources:n,currentSceneId:o,runtime:a,variables:t})=>{let{audio:s}=e;if(!r?.voice)return e;let i=r.voice,l=!Array.isArray(i.sounds),u=l?i.resourceId?[{id:"default",resourceId:i.resourceId,loop:i.loop??!1,volume:gr,startDelayMs:i.startDelayMs??0}]:[]:i.sounds,c=!l&&i.loop===!0,p=[];if(l||An(u,"Voice sound"),c){let d=u.find(f=>f.loop===!0);if(d)throw new Error(`Voice sound "${d.id}" cannot loop inside a looping Voice channel.`)}if(u.forEach(d=>{let f=zy(n,o,d.resourceId);if(!f)return;let y=c?{...d,loop:d.loop??!1}:d;p.push(Rn({id:St("voice",o,l?"default":d.id),sound:y,resource:f,defaultLoop:c?!1:void 0}))}),p.length===0)return e;let m=qe({variables:t,runtime:a}).runtime;return s.push(Sn({id:wy,volume:l?i.volume??vl(m,"soundVolume"):En(m,"soundVolume",i.volume??gr),muted:i.muted,pan:i.pan,loop:l?void 0:i.loop,interruption:i.interruption,children:p,runtime:m})),e},Gy=(e,{presentationState:r,previousPresentationState:n,resources:o={},variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,saveSlots:y=[],isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:w})=>{let{elements:b,animations:E}=e;if(r.layout){let $=Lr(b);if(!$)return e;let T=o.layouts?.[r.layout.resourceId];if(!T)return e;Array.isArray(T.transitions)&&!g&&!h&&To({animations:E,transitions:T.transitions,defaultTargetId:`layout-${r.layout.resourceId}`,idPrefix:`layout-${r.layout.resourceId}`,animationPathPrefix:"layout"});let S={id:`layout-${r.layout.resourceId}`,type:"container",x:0,y:0,children:T.elements||[]};$.children.push(xl({container:S,resources:o,templateData:qe({variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:g,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:o.characters||{},skipTransitionsAndAnimations:h}),isLineCompleted:g,skipMode:c,skipTransitionsAndAnimations:h}))}let k=n?.layout?.resourceId,v=r.layout?.resourceId,x=sr({animationsDef:r.layout?.animations,resources:o,previousResourceId:k,currentResourceId:v,previousTargetId:k?`layout-${k}`:void 0,currentTargetId:v?`layout-${v}`:void 0,animationPath:"layout.animations",idPrefix:"layout"});return Be({animationInstances:x,isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:w})&&E.push(...x),e},Hy=(e,{currentLineActions:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=r?.screen?.animations;if(!l)return e;let u=n!=null,c=sr({animationsDef:l,resources:o,previousResourceId:u?"story":void 0,currentResourceId:"story",previousTargetId:u?"story":void 0,currentTargetId:"story",animationPath:"screen.animations",idPrefix:"screen"});return Be({animationInstances:c,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...c),e},Xy=(e,{presentationState:r})=>{let n=Lr(e.elements);return!n||!r?.screen||Object.assign(n,wl(r.screen)),e},Wy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,autoMode:l,skipMode:u,isChoiceVisible:c,isFormVisible:p,canRollback:m,form:d,overlayStack:f=[],dialogueHistory:y=[],saveSlots:g=[],screen:h,isLineCompleted:w,skipTransitionsAndAnimations:b})=>{let{elements:E,animations:k}=e;return f&&f.length>0&&f.forEach((v,x)=>{let $=n.layouts?.[v.resourceId];if(!$){console.warn(`Overlay layout not found: ${v.resourceId}`);return}Array.isArray($.transitions)&&(b||To({animations:k,transitions:$.transitions,defaultTargetId:`overlayStack-${x}`,idPrefix:`overlayStack-${x}`,animationPathPrefix:`overlayStack[${x}]`}));let T={id:`overlayStack-${x}`,type:"container",x:0,y:0,children:[Al({id:`overlayStack-${x}-blocker`,screen:h}),...$.elements||[]]},S=Pl(y,n.characters,o),D=qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:g,dialogueState:r?.dialogue,isLineCompleted:w,autoMode:l,skipMode:u,isChoiceVisible:c,isFormVisible:p,canRollback:m,form:d,historyDialogue:S,characters:n.characters||{},skipTransitionsAndAnimations:b}),U=tr(T,D),[le,...z]=U.children||[],ce=nr(br({...U,children:z},{isLineCompleted:w,skipMode:u,skipTransitionsAndAnimations:b}),n);E.push({...ce,children:le?[le,...ce.children||[]]:ce.children})}),e},Ky=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l=[],autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,dialogueHistory:g=[],screen:h,isLineCompleted:w,skipTransitionsAndAnimations:b})=>{let{elements:E,animations:k}=e;if(!y?.resourceId)return e;let v=n.layouts?.[y.resourceId];if(!v)return console.warn(`ConfirmDialog layout not found: ${y.resourceId}`),e;Array.isArray(v.transitions)&&!b&&To({animations:k,transitions:v.transitions,defaultTargetId:"confirmDialog",idPrefix:"confirmDialog",animationPathPrefix:"confirmDialog"});let x={id:"confirmDialog",type:"container",x:0,y:0,children:[Al({id:"confirmDialog-blocker",screen:h}),...v.elements||[]]},$=Pl(g,n.characters,o),T=tr(x,qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l,dialogueState:r?.dialogue,isLineCompleted:w,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,historyDialogue:$,characters:n.characters||{},skipTransitionsAndAnimations:b})),[S,...D]=T.children||[],U=nr(br({...T,children:D},{isLineCompleted:w,skipMode:c,skipTransitionsAndAnimations:b}),n);return E.push({...U,children:S?[S,...U.children||[]]:U.children}),e},Ct=e=>(r,n)=>Ny(r,{...n,visualLayer:e}),Jy=Ct(er.BEHIND_BACKGROUND),Qy=Ct(er.BEHIND_CHARACTER),Zy=Ct(er.BEHIND_DIALOGUE),eh=Ct(er.BEHIND_CHOICE),rh=Ct(er.FOREGROUND),Sl=e=>fn($y,[Vy,Jy,_y,Qy,Ty,Zy,Ly,eh,My,qy,Gy,rh,Xy,Hy,Fy,Uy,By,Yy,Wy,Ky])(e);function Rl(e,r=""){let n=[],o=e.length,a=0,t=0,s=-1,i=()=>{let l=0,u=0,c;do c=parseInt(e[a++],36),l+=(c&15)<<u,u+=4;while(c&16);return l};for(;a<o;){let l=s+1+i();s=l+i(),n.push([l,s,r?parseInt(r[t++],36):0])}return n}function Ol(e,r,n){let o=0,a=r.length-1;for(;o<=a;){let t=o+a>>>1,s=n[t];if(e<r[t])a=t-1;else if(e>s>>>5)o=t+1;else return s&31}return 0}var Cl="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",$l="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",_l="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var Tl=65535,Mo=40960,On=126976,Dl=new Uint8Array(12288),Ll=new Uint8Array(3072),Ml=new Uint8Array(2816),ql,Vl;{let e=(a,t,s,i,l)=>{let u=t+a.length-1;for(let c=s<t?t:s,p=i>u?u:i;c<=p;c++)a[c-t]=l},r=new Uint32Array(320),n=new Uint32Array(320),o=0;for(let[a,t,s]of Rl(Cl,$l))e(Dl,0,a,t,s),e(Ll,Mo,a,t,s),e(Ml,On,a,t,s),t>=65040&&!(a>=On&&t<=129791)&&(r[o]=a,n[o++]=t<<5|s);ql=r.slice(0,o),Vl=n.slice(0,o)}function jl(e){return e<12288?Dl[e]:e<Mo?e<12336?e>=12330?3:0:e<12443?e===12336||e===12349?4:e>=12441?3:0:e===12951||e===12953?4:0:e<44032?Ll[e-Mo]:e<55204?(e-44032)%28?8:7:e<57344?e<=55238?e>=55216?13:0:e>=55243&&e<=55291?12:0:e<65024?e===64286?3:0:e<65040?3:e>=On&&e<129792?Ml[e-On]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:Ol(e,ql,Vl)}var Fl=Uint8Array.from(_l,Number);function th(e){return e===2381||e===2509||e===2637||e===2765||e===2893||e===3149||e===3405||e===4153||e===6098||e===6752||e===6980||e===7083||e===43456||e===43766||e===68159||e===69939||e===70608||e===71998||e===72263||e===72345||e===73538}function Nl(e,r,n){switch(r){case 3:return e&24?n===8204?e&6:(e&24)===16||th(n)?e&6|16:e&6|8:e&6;case 4:return 2;case 10:return e&1^1;case 14:return(e&2)<<1|e&24;default:return 8}}function*Ul(e){let r=e.length;if(r===0)return;let n=e.codePointAt(0),o=n>Tl?2:1,a=jl(n),t=50200>>a&1?Nl(0,a,n):0,s=0,i=n,l=a;for(;o<r;){n=e.codePointAt(o);let u=n>Tl?2:1,c=jl(n),p=Fl[a<<4|c],m;p===0?m=!0:p===1?m=!1:p===2?m=!(t&1):p===3?m=!(t&4):m=(t&24)!==16,t=50200>>c&1&&(t!==0||c!==3)?Nl(t,c,n):0,m&&(yield{segment:e.slice(s,o),index:s,input:e,_hd:i,_catBegin:l===15?0:l,_catEnd:a===15?0:a},s=o,i=n,l=c),o+=u,a=c}yield{segment:e.slice(s),index:s,input:e,_hd:i,_catBegin:l===15?0:l,_catEnd:a===15?0:a}}function*Bl(e){for(let r of Ul(e))yield r.segment}{let e=Ul("_");Fl._keep=[e,e.next()]}var zl=1e3,Xl=50,nh=0,Yl=100,Gl=50,sh=60,oh=3,ih=.5,ah=2e4,lh=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,ch=/^\s+$/u,Hl,uh=e=>{let r=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(Bl(r)):(Hl??=new n(void 0,{granularity:"grapheme"}),Array.from(Hl.segment(r),({segment:o})=>o))},ph=e=>uh(e).reduce((r,n)=>ch.test(n)?r+ih:lh.test(n)?r+oh:r+1,0),dh=e=>2**(((Number.isFinite(e)?Math.min(Yl,Math.max(nh,e)):Xl)-Gl)/(Yl-Gl)),qo=({text:e="",baseDelay:r=zl,speed:n=Xl}={})=>{let o=Number.isFinite(r)?Math.max(0,r):zl,a=dh(n),t=ph(e)*sh/a,s=Math.max(o,ah);return Math.min(o+t,s)};var Cn={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},tc=1,Ko=1,tt="choice",wr="form",jt=()=>({manual:{...Cn.manual},auto:{...Cn.auto},applyMode:Cn.applyMode}),Jo=()=>({groupId:null,variantId:null,pageIndex:0}),fh="music-room:player",mh=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),Tn=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),Qo=new Set,yh=new Set(["groupId","variantId"]),hh=new Set(["pageIndex"]),nt=new Set,gh=new Set(["trackId"]),bh=new Set(["positionMs"]),Ih=new Set(["pageIndex"]),Zo=new Set,wh=new Set(["sceneId"]),kh=new Set(["pageIndex"]),ei=()=>({pageIndex:0}),ri=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...jt()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Fo=e=>{e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))},L=e=>{let r=we(e)?ur(e):e;return structuredClone(r)},M=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),jn=e=>{let r=e.global.audioCommandId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal audio command counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Audio command counter is exhausted");return e.global.audioCommandId=r+1,e.global.audioCommandId},nc=e=>{let r=e.global.sceneReplayEntryId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal scene replay entry counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Scene replay entry counter is exhausted");return e.global.sceneReplayEntryId=r+1,e.global.sceneReplayEntryId},Nt=(e,r,n)=>({commandId:jn(e),operation:r,...n===void 0?{}:{positionMs:n}}),ti=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let r=e.global.musicRoomPlayer,n=r.bgmPlayback;r.trackId!==null&&(n={commandId:jn(e),operation:"resume"}),e.global.musicRoomPlayer=Tn({bgmPlayback:n})},sc=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error("Achievement action requires a non-empty resourceId");let n=e.projectData.resources?.achievements?.[r];if(!n)throw new Error(`Achievement resource "${r}" not found`);if(n.type!=="boolean"&&n.type!=="number")throw new Error(`Achievement resource "${r}" has invalid type "${n.type}"`);return n},oc=(e,r)=>{if(e==null||e==="")throw new Error(`${r} requires slotId`);let n=typeof e=="string"&&e.length>0,o=typeof e=="number"&&Number.isFinite(e);if(!n&&!o)throw new Error(`${r} requires a non-empty string or finite number slotId`)},Vr=e=>String(e),ic=()=>({sections:[],resources:[]}),ac=()=>({sceneIds:[]}),vh=e=>M(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):ic(),Ah=e=>M(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):ac(),Ph=e=>Array.isArray(e)?e.map(r=>r?.text??"").join(""):"",xh=({sectionId:e,lineId:r,content:n,dialogueState:o,characterName:a})=>({sectionId:e,lineId:r,content:n,text:Ph(n),characterId:o.characterId,character:{...o.character||{},name:a},characterName:a}),lc=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),Eh=e=>M(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,ni=e=>{if(!M(e?.dialogueHistory))return null;let r=e.dialogueHistory;return!Array.isArray(r.entries)||!Number.isInteger(r.currentLength)||!Array.isArray(r.checkpointLengths)?null:r},Sh=e=>{if(!M(e?.dialogueHistory))return e.dialogueHistory=lc(e?.rollback?.timeline?.length??0),e.dialogueHistory;let r=e.dialogueHistory;return Array.isArray(r.entries)||(r.entries=[]),Number.isInteger(r.currentLength)||(r.currentLength=r.entries.length),Array.isArray(r.checkpointLengths)||(r.checkpointLengths=Array(e?.rollback?.timeline?.length??0).fill(0)),r.currentLength=Math.min(Math.max(r.currentLength,0),r.entries.length),r},si=e=>{let r=ni(e);return r?(r.currentLength<r.entries.length&&(r.entries=r.entries.slice(0,r.currentLength)),r):null},Rh=()=>({resourceId:void 0}),Oh=e=>{if(!M(e))return e;let r={...e};return Object.prototype.hasOwnProperty.call(r,"requireComplete")&&!Object.prototype.hasOwnProperty.call(r,"requireLineCompleted")&&(r.requireLineCompleted=r.requireComplete),delete r.requireComplete,r},Xe=(e,r)=>{let n=e?.story?.scenes??{};for(let[o,a]of Object.entries(n))if(a?.sections?.[r])return{sceneId:o,section:a.sections[r]};return{sceneId:void 0,section:void 0}},cc=e=>{let r=e?.story?.scenes??{},n=new Map;for(let[o,a]of Object.entries(r)){let t=a?.sections??{};for(let s of Object.keys(t)){let i=n.get(s);if(i!==void 0)throw new Error(`Duplicate sectionId "${s}" found in scenes "${i}" and "${o}". Section IDs must be globally unique.`);n.set(s,o)}}},uc=e=>e,pc=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==tc)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},Ch=(e,r={})=>{let n;try{n=pc(r.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let o={...r,formatVersion:n,slotId:uc(r.slotId??r.slotKey??e),savedAt:typeof r.savedAt=="number"?r.savedAt:r.date};return delete o.slotKey,delete o.date,o},$h=(e={})=>Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Ch(r,n)])),_h=(e,r)=>{if(!M(e)||!Array.isArray(e.operations))return null;let n=e.operations.filter(o=>{if(!M(o))return!1;let{variableId:a,op:t,value:s,roundTo:i}=o,l=r?.resources?.variables?.[a];if(!l||$e(l)||l.readonly===!0||l.scope!=="context")return!1;try{return vt(l.type,t,a),hn(l.type,t,s,a,{roundTo:i}),t!=="set"||so(l,s)}catch{return!1}});return n.length>0?{...e,operations:n}:null},dc=(e,r)=>{if(!Array.isArray(e))return;let n=e.flatMap(o=>{if(!M(o)||!gI(o.type))return[];if(o.type!=="updateVariable"||r===void 0)return[o];let a=_h(o.payload,r);return a?[{...o,payload:a}]:[]});return n.length>0?n:void 0},Th=(e,r)=>{!M(e)||!Array.isArray(e.timeline)||(e.returnabilityVersion=Ko,e.timeline.forEach(n=>{if(!M(n))return;typeof n.returnable!="boolean"&&delete n.returnable;let o=dc(n.executedActions,r);if(o){n.executedActions=o;return}delete n.executedActions}))},Wl=(e,r,n,o="viewedRegistry")=>{let a=r==="sections"?"sectionId":"resourceId";if(typeof e=="string"||typeof e=="number")return{[a]:String(e)};if(!M(e))throw new Error(`Malformed ${o}.${r}[${n}] entry.`);if(typeof e[a]!="string"||e[a].length===0)throw new Error(`Malformed ${o}.${r}[${n}] entry: missing ${a}.`);if(r==="sections"){let t={sectionId:e.sectionId};if(e.lastLineId!==void 0&&e.lastLineId!==null&&typeof e.lastLineId!="string")throw new Error(`Malformed ${o}.sections[${n}] entry: invalid lastLineId.`);return typeof e.lastLineId=="string"&&e.lastLineId.length>0&&(t.lastLineId=e.lastLineId),t}return{resourceId:e.resourceId}},jh=(e,r="viewedRegistry")=>{if(e===void 0)return ic();if(!M(e))throw new Error(`Malformed ${r}.`);if(e.sections!==void 0&&!Array.isArray(e.sections))throw new Error(`Malformed ${r}.sections.`);if(e.resources!==void 0&&!Array.isArray(e.resources))throw new Error(`Malformed ${r}.resources.`);let n=e.sections??[],o=e.resources??[];return{sections:Object.values(Object.fromEntries(n.map((a,t)=>{let s=Wl(a,"sections",t,r);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(o.map((a,t)=>{let s=Wl(a,"resources",t,r);return[s.resourceId,s]})))}},Nh=(e,r="accountReplayRegistry")=>{if(e===void 0)return ac();if(!M(e))throw new Error(`Malformed ${r}.`);if(e.sceneIds!==void 0&&!Array.isArray(e.sceneIds))throw new Error(`Malformed ${r}.sceneIds.`);let n=e.sceneIds??[];return{sceneIds:[...new Set(n.map((o,a)=>{if(typeof o!="string"||o.length===0)throw new Error(`Malformed ${r}.sceneIds[${a}] entry.`);return o}))]}},$t=(e,r,n)=>{if(!M(e))throw new Error(`Malformed save slot ${n}.`);let{sectionId:o,lineId:a}=e;if(typeof o!="string"||o.length===0)throw new Error(`Malformed save slot ${n}: missing sectionId.`);if(typeof a!="string"||a.length===0)throw new Error(`Malformed save slot ${n}: missing lineId.`);let{sceneId:t,section:s}=Xe(r,o);if(!s)throw new Error(`Malformed save slot ${n}: section "${o}" does not exist in projectData.`);if(!s.lines?.some(l=>l.id===a))throw new Error(`Malformed save slot ${n}: line "${a}" does not exist in section "${o}".`);return{sceneId:t,sectionId:o,lineId:a}},fc=e=>{let r=e.story.initialSceneId,n=e.story.scenes[r],o=n.initialSectionId,a=n.sections[o];return $t({sceneId:r,sectionId:o,lineId:a.initialLineId??a.lines[0].id},e,"projectData initial pointer")},Dh=e=>{try{return fc(e),!0}catch{return!1}},Lh=(e,r,n)=>{let o=e?.pointers?.read;if(!M(o)||typeof o.sectionId!="string"||o.sectionId.length===0||typeof o.lineId!="string"||o.lineId.length===0)return $t(o,r,n);try{return $t(o,r,n)}catch{let a=Array.isArray(e?.rollback?.timeline)?e.rollback.timeline:[],t=Number.isInteger(e?.rollback?.currentIndex)?Math.min(e.rollback.currentIndex,a.length-1):a.length-1;for(let s=t;s>=0;s-=1)try{return $t(a[s],r,`${n} compatibility checkpoint`)}catch{}return fc(r)}},mc=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,oi=(e,r)=>{let{section:n}=Xe(e,r?.sectionId);return n?.lines?.find(o=>o.id===r?.lineId)},Mh=(e,r,n)=>{if(!M(e))throw new Error(`Malformed save slot ${n}.`);if(!Array.isArray(e.entries))throw new Error(`Malformed save slot ${n}.entries.`);if(!Number.isInteger(e.currentLength))throw new Error(`Malformed save slot ${n}.currentLength.`);if(!Array.isArray(e.checkpointLengths))throw new Error(`Malformed save slot ${n}.checkpointLengths.`);let o=[],a=[0],t=!1;if(e.entries.forEach((i,l)=>{if(!M(i))throw new Error(`Malformed save slot ${n}.entries[${l}].`);if(typeof i.sectionId!="string"||i.sectionId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing sectionId.`);if(typeof i.lineId!="string"||i.lineId.length===0)throw new Error(`Malformed save slot ${n}.entries[${l}]: missing lineId.`);if(i.appendToPrevious!==void 0&&typeof i.appendToPrevious!="boolean")throw new Error(`Malformed save slot ${n}.entries[${l}].appendToPrevious.`);let{section:u}=Xe(r,i.sectionId);if(!u?.lines?.some(p=>p.id===i.lineId)){t=!1,a.push(o.length);return}o.push({sectionId:i.sectionId,lineId:i.lineId,...i.appendToPrevious===!0&&t&&o.length>0?{appendToPrevious:!0}:{}}),t=!0,a.push(o.length)}),e.currentLength<0||e.currentLength>e.entries.length)throw new Error(`Malformed save slot ${n}.currentLength: must reference the retained entries.`);let s=e.checkpointLengths.map((i,l)=>{if(!Number.isInteger(i)||i<0||i>e.entries.length)throw new Error(`Malformed save slot ${n}.checkpointLengths[${l}].`);return a[i]});return{entries:o,currentLength:a[e.currentLength],checkpointLengths:s}},qh=(e,r)=>M(oi(e,r)?.actions?.dialogue),yc=(e,r,n)=>{if(!r||r.sectionId!==n.sectionId)return!1;let{section:o}=Xe(e,n.sectionId),a=o?.lines?.findIndex(s=>s.id===n.lineId);return typeof a!="number"||a<=0?!1:o.lines.slice(0,a).findLast(s=>M(s.actions?.dialogue))?.id===r.lineId},Vh=(e,r)=>{let n=lc();return e.timeline.forEach(o=>{if(o.returnable!==!1&&qh(r,o)){let a=oi(r,o),t=n.entries.at(-1),s=a.actions.dialogue.append===!0&&yc(r,t,o);n.entries.push({sectionId:o.sectionId,lineId:o.lineId,...s?{appendToPrevious:!0}:{}})}n.checkpointLengths.push(n.entries.length)}),n.currentLength=n.checkpointLengths[e.currentIndex]??0,n.entries.length>0?n:null},Fh=(e,r,n,o)=>{if(n.length!==r.timeline.length)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: rollback checkpoint mapping is incomplete.");if(e.checkpointLengths.length!==o)throw new Error("Malformed save slot dialogueHistory.checkpointLengths: expected one length per rollback checkpoint.");e.checkpointLengths=n.map(t=>t===null?e.currentLength:e.checkpointLengths[t]);let a=0;return e.checkpointLengths.forEach((t,s)=>{if(t<a)throw new Error(`Malformed save slot dialogueHistory.checkpointLengths[${s}]: lengths must be chronological.`);a=t}),e},Uh=(e,r)=>{let{section:n}=Xe(e,r?.sectionId),o=n?.lines?.findIndex(t=>t.id===r?.lineId);if(typeof o!="number"||o<0)return null;let a=n.lines[o+1];return a?{sectionId:r.sectionId,lineId:a.id}:null},hc=(e,r,n)=>{if(typeof r?.sectionId!="string")return!1;let{section:o}=Xe(e,r.sectionId);return mc({sectionId:r.sectionId,lineId:o?.lines?.[0]?.id},n)},Bh=new Set(["jumpToLine","rollbackByOffset","rollbackToLine","sectionTransition","resetStoryAtSection"]),rt={always:"always",maybe:"maybe",never:"never"},zh=e=>{if(!Object.prototype.hasOwnProperty.call(e??{},"when"))return rt.always;let r=e.when,n;if(r===null||typeof r=="boolean"||typeof r=="number")n=r;else if(M(r)&&Object.keys(r).length===1&&Object.prototype.hasOwnProperty.call(r,"literal"))n=r.literal;else return rt.maybe;return n?rt.always:rt.never},gc=(e,r)=>{if(!Array.isArray(e?.branches))return!1;for(let n of e.branches){let o=zh(n);if(o!==rt.never){if(r(n))return!0;if(o===rt.always)return!1}}return!1},bc=e=>gc(e,r=>Object.entries(r?.actions??{}).some(([n,o])=>n==="conditional"?bc(o):Bh.has(n))),Ic=(e,r,n)=>gc(r,o=>Object.entries(o?.actions??{}).some(([a,t])=>a==="sectionTransition"?hc(e,t,n):a==="conditional"?Ic(e,t,n):!1)),Yh=(e,r,n)=>{if(!r)return!0;let o=oi(n,e)?.actions;if(!M(o))return!0;if(hc(n,o.sectionTransition,r))return!1;let a=o.conditional;return a?!(Ic(n,a,r)||!(o.choice?.resourceId||o.form?.resourceId)&&!bc(a)&&mc(Uh(n,e),r)):!0},Gh=(e,r,n)=>{if(!M(e)||!Array.isArray(e.timeline))return{rollback:Tt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let o=new WeakSet,a=[],t=e.timeline.flatMap((p,m)=>{if(!M(p))return[];try{let d=$t(p,n,`rollback.timeline[${m}]`),f=_n({sectionId:d.sectionId,lineId:d.lineId,rollbackPolicy:p.rollbackPolicy,returnable:p.returnable});typeof p.returnable=="boolean"&&o.add(f);let y=dc(L(p.executedActions),n);return y&&(f.executedActions=y),a.push(m),[f]}catch{return[]}});if(t.length===0)return{rollback:Tt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};e.returnabilityVersion!==Ko&&t.forEach((p,m)=>{!o.has(p)&&!Yh(p,t[m+1],n)&&(p.returnable=!1)});let i=typeof e.currentIndex=="number"?Math.trunc(e.currentIndex):e.timeline.length-1,l=a.indexOf(i);l<0&&(l=t.length-1);let u=t[l];if(u?.sectionId!==r.sectionId||u?.lineId!==r.lineId){let p=t.findLastIndex(m=>m.sectionId===r.sectionId&&m.lineId===r.lineId);p>=0?l=p:(t.push(_n({sectionId:r.sectionId,lineId:r.lineId})),a.push(null),l=t.length-1)}let c=typeof e.replayStartIndex=="number"?Math.min(Math.max(Math.trunc(e.replayStartIndex),0),l):0;return{rollback:{currentIndex:l,isRestoring:!1,replayStartIndex:c,timeline:t},sourceCheckpointIndexes:a,sourceTimelineLength:e.timeline.length}},wc=(e,r,n)=>{if(!M(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let o=ai(r),a=Lh(e,r,`contexts[${n}].pointers.read`);if(e.variables!==void 0&&!M(e.variables))throw new Error(`Malformed save slot contexts[${n}].variables entry.`);if(e.runtime!==void 0&&!M(e.runtime))throw new Error(`Malformed save slot contexts[${n}].runtime entry.`);let t=e.variables?wt(L(e.variables),r.resources?.variables??{},{allowedScopes:["context"]}):{},s=og({loadedContextRuntime:M(e.runtime)?L(e.runtime):{}}),{rollback:i,sourceCheckpointIndexes:l,sourceTimelineLength:u}=Gh(e.rollback,a,r),c=e.dialogueHistory===void 0?Vh(i,r):Fh(Mh(e.dialogueHistory,r,`contexts[${n}].dialogueHistory`),i,l,u),p={currentPointerMode:"read",pointers:{read:a},configuration:M(e.configuration)?L(e.configuration):{},views:Array.isArray(e.views)?L(e.views):[],bgm:M(e.bgm)?L(e.bgm):{resourceId:void 0},variables:{...o,...t},...c?{dialogueHistory:c}:{},rollback:i};return s&&(p.runtime=s),p},Hh=(e,r)=>{if(!M(e))throw new Error("Malformed save slot state.");if(!Array.isArray(e.contexts)||e.contexts.length===0)throw new Error("Malformed save slot state: contexts must be a non-empty array.");return{contexts:e.contexts.map((n,o)=>wc(n,r,o))}},Xh=(e,r)=>{if(!M(e))throw new Error("Malformed save slot.");let n=pc(e.formatVersion);return{...e,formatVersion:n,state:Hh(e.state,r)}},Kl=(e,r,{required:n=!1}={})=>{if(e===void 0){if(n)throw new Error(`showConfirmDialog requires ${r}`);return{hideConfirmDialog:{}}}if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`showConfirmDialog ${r} must be an action object`);let o=L(e),a=o.hideConfirmDialog??{};return delete o.hideConfirmDialog,{hideConfirmDialog:a,...o}},Wh=(e={})=>{if(!e?.resourceId)throw new Error("showConfirmDialog requires resourceId");return{resourceId:e.resourceId,confirmActions:Kl(e.confirmActions,"confirmActions",{required:!0}),cancelActions:Kl(e.cancelActions,"cancelActions")}},st=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},Kh=e=>(M(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),ot=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},kc=e=>{if(!(!M(e)||!e.animations))return{animations:L(e.animations)}},Jh=(e,r)=>{let n=kc(r);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},Qh=e=>{let r=e?.id??e?.resourceId;return typeof r=="string"&&r.length>0?r:void 0},Zh=(e,r)=>{let n=e?.sectionId,o=e?.lineId;if(!(!n||!o||!r))return`${n}:${o}:${r}`},$n=e=>String(e??""),vc=(e,r)=>{let n=$n(r);return e?.trim===!0?n.trim():n},eg=e=>M(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,r])=>M(r)).map(([r,n])=>[r,{id:r,...L(n)}])):{},rg=(e,r)=>{if(!r||!M(e.global.formDrafts))return;let n=e.global.formDrafts[r];return M(n)?n:void 0},Ac=(e,r)=>{let n=Kh(e);M(n[r])||(n[r]={values:{},touched:{},errors:{},submitted:!1});let o=n[r];return M(o.values)||(o.values={}),M(o.touched)||(o.touched={}),M(o.errors)||(o.errors={}),typeof o.submitted!="boolean"&&(o.submitted=!1),o},ii=(e,r)=>{let n=vc(e,r);return e?.required===!0&&n.length===0?"required":null},tg=({state:e,pointer:r})=>{if(!r?.sectionId||!r?.lineId)return{};let o=ve({state:e},{sectionId:r.sectionId})?.lines||[],a=o.findIndex(t=>t.id===r.lineId);return a<0?{}:Nr(o.slice(0,a+1).map(t=>t.actions||{}))},ng=({state:e,form:r,pointer:n})=>{if(!r?.resourceId)return null;let o=Qh(r),a=Zh(n,o);if(!o||!a)return null;let t=rg(e,a),s=eg(r),i=ki({state:e}),l={},u=[],c={},p=!0;return Object.entries(s).forEach(([m,d])=>{let f=$n(i?.[d.variableId]),y=Object.prototype.hasOwnProperty.call(t?.values??{},m)?$n(t.values[m]):f,g=t?.touched?.[m]===!0,h=ii(d,y),w=t?.submitted||g?h:null,b=typeof d.maxLength=="number"?Math.max(0,Math.round(d.maxLength)):void 0,E={id:m,variableId:d.variableId,value:y,initialValue:f,valid:!h,error:w,touched:g,required:d.required===!0,trim:d.trim===!0,placeholder:d.placeholder===void 0?"":String(d.placeholder),multiline:d.multiline===!0,...b!==void 0?{maxLength:b}:{}};h&&(p=!1),l[m]=E,u.push(E),c[m]=y}),{id:o,key:a,resourceId:r.resourceId,animations:r.animations,valid:p,submitted:t?.submitted===!0,fields:l,fieldList:u,values:c,submitActions:{submitForm:{formKey:a,actions:L(r.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:L(r.cancelActions??{})}}}},Jl="line",Ir="interaction",_n=({sectionId:e,lineId:r,rollbackPolicy:n,returnable:o})=>({sectionId:e,lineId:r,rollbackPolicy:n??"free",...typeof o=="boolean"?{returnable:o}:{}}),ai=e=>{let r=we(e)?ur(e):e,{contextVariableDefaultValues:n}=yn(r??{});return L(n)},Pc=()=>({...L(Pt)}),xc=({loadedRuntime:e,runtimeIds:r,defaults:n={},path:o})=>{if(e===void 0)return{runtimeState:L(n),hasLoadedValues:!1};if(!M(e))throw new Error(`Malformed ${o}.`);let a=L(n),t=!1;return r.forEach(s=>{e[s]!==void 0&&(a[s]=bn(s,L(e[s])),t=!0)}),{runtimeState:a,hasLoadedValues:t}},sg=({projectData:e,loadedGlobalRuntime:r={}})=>xc({loadedRuntime:r,runtimeIds:uo,defaults:fo(e),path:"global.runtime"}).runtimeState,og=({loadedContextRuntime:e={}})=>{let{runtimeState:r,hasLoadedValues:n}=xc({loadedRuntime:e,runtimeIds:po,defaults:Pc(),path:"context.runtime"});return n?r:void 0},vr=e=>{let r=Array.isArray(e?.contexts)?e.contexts:[];return r[r.length-1]},de=e=>{let r=vr(e);return r?.kind==="sceneReplay"&&M(r.sceneReplay)?r:null},Ec=(e,r)=>{let n=r?.sceneReplay?.sceneId,o=e.projectData?.resources?.sceneReplay?.replays?.find(a=>a.sceneId===n);Object.entries(o?.initialVariables??{}).forEach(([a,t])=>{r.variables[a]=L(t)})},ig=e=>({autoMode:e.global.autoMode,skipMode:e.global.skipMode,dialogueUIHidden:e.global.dialogueUIHidden,nextLineConfig:L(e.global.nextLineConfig),overlayStack:L(e.global.overlayStack),confirmDialog:L(e.global.confirmDialog),formDrafts:L(e.global.formDrafts),isLineCompleted:e.global.isLineCompleted,...e.global.isDialogueHistoryShowing===void 0?{}:{isDialogueHistoryShowing:e.global.isDialogueHistoryShowing},...e.global.pendingScreenTransition===void 0?{}:{pendingScreenTransition:L(e.global.pendingScreenTransition)}}),ag=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=jt(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},lg=(e,r)=>{e.global.autoMode=r.autoMode,e.global.skipMode=r.skipMode,e.global.dialogueUIHidden=r.dialogueUIHidden,e.global.nextLineConfig=L(r.nextLineConfig),e.global.overlayStack=L(r.overlayStack),e.global.confirmDialog=L(r.confirmDialog),e.global.formDrafts=L(r.formDrafts),e.global.isLineCompleted=r.isLineCompleted,r.isDialogueHistoryShowing===void 0?delete e.global.isDialogueHistoryShowing:e.global.isDialogueHistoryShowing=r.isDialogueHistoryShowing,r.pendingScreenTransition===void 0?delete e.global.pendingScreenTransition:e.global.pendingScreenTransition=L(r.pendingScreenTransition),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"});let n=Ae({state:e});e.global.autoMode&&e.global.isLineCompleted&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e.global.skipMode&&!n&&e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.nextLineConfig.auto?.enabled&&!n&&(e.global.nextLineConfig.auto.trigger==="fromStart"||e.global.isLineCompleted)&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:e.global.nextLineConfig.auto.delay}})},cg=e=>e.runtime?(po.forEach(r=>{e.runtime[r]===void 0&&(e.runtime[r]=L(Pt[r]))}),e.runtime):(e.runtime=Pc(),e.runtime),ug=e=>Ja(e.global),Sc=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:ug(e)}})},li=(e,r,n)=>{let o=bn(r,n);if(r in Pt){let a=vr(e);if(!a)return o;let t=cg(a);return t[r]=o,o}return e.global[r]=o,o},ci=({pointer:e,projectData:r,kind:n,sceneReplay:o})=>({...n===void 0?{}:{kind:n},...o===void 0?{}:{sceneReplay:L(o)},currentPointerMode:"read",pointers:{read:L(e)},configuration:{},views:[],bgm:Rh(),variables:ai(r),rollback:Tt({pointer:e})}),it=e=>e?(e.currentPointerMode="read",M(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,pg=(e,{queueRender:r=!0}={})=>{let n=e.contexts?.[e.contexts.length-1],o=n?.pointers?.read;if(!n||!o?.sectionId||!o?.lineId)return null;let a=ci({pointer:o,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,dg(e,{queueRender:r}),a},dg=(e,{queueRender:r=!0}={})=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,st(e),ot(e),e.global.nextLineConfig=jt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,ti(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),r&&e.global.pendingEffects.push({name:"render"})},Rc=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},Tt=({pointer:e,replayStartIndex:r=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:r,timeline:n?[_n({sectionId:e.sectionId,lineId:e.lineId})]:[]}},Ar=(e,r={})=>{if(e?.rollback)return Rc(e.rollback),Array.isArray(e.rollback.timeline)||(e.rollback.timeline=[]),typeof e.rollback.currentIndex!="number"&&(e.rollback.currentIndex=e.rollback.timeline.length>0?e.rollback.timeline.length-1:-1),typeof e.rollback.isRestoring!="boolean"&&(e.rollback.isRestoring=!1),typeof e.rollback.replayStartIndex!="number"&&(e.rollback.replayStartIndex=0),e.rollback;let n=e?.pointers?.read;return e.rollback=Tt({pointer:n,replayStartIndex:r.compatibilityAnchor?1:0}),e.rollback},ui=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=Ar(n);if(o.isRestoring)return;let a=si(n);o.currentIndex<o.timeline.length-1&&(o.timeline=o.timeline.slice(0,o.currentIndex+1)),o.timeline.push(_n(r)),o.currentIndex=o.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,o.currentIndex),a.checkpointLengths.push(a.currentLength))},fg=({state:e})=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!Array.isArray(n?.timeline)||typeof n.currentIndex!="number"?null:{checkpointIndex:n.currentIndex,checkpoint:n.timeline[n.currentIndex]??null}},mg=({state:e},r={})=>{let{checkpointIndex:n,checkpointIdentity:o,sectionId:a,lineId:t}=r,i=e.contexts?.[e.contexts.length-1]?.rollback;if(!Number.isInteger(n)||!Array.isArray(i?.timeline)||typeof i.currentIndex!="number")return e;let l=i.timeline[n];return(we(l)?en(l):l)!==o||l?.sectionId!==a||l?.lineId!==t||(l.returnable=!1),e},yg=({state:e},r={})=>{let{slotId:n,saveSlotIdentity:o,checkpointIndex:a,sectionId:t,lineId:s}=r,i=Vr(n),l=e.global.saveSlots?.[i],u=we(l)?en(l):l;if(!l||u!==o)return e;let c=l.state?.contexts,p=Array.isArray(c)?c.at(-1):null,m=p?.rollback,d=m?.timeline?.[a];return!Number.isInteger(a)||m?.currentIndex!==a||p?.pointers?.read?.sectionId!==t||p?.pointers?.read?.lineId!==s||d?.sectionId!==t||d?.lineId!==s||(d.returnable=!1,m.returnabilityVersion=Ko,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},hg=(e,r)=>{let n=e.contexts?.[e.contexts.length-1],o=n?.rollback;if(!o||o.isRestoring||!Array.isArray(o.timeline)||typeof o.currentIndex!="number")return null;let a=r?.at(-1),t=typeof a?.checkpointIndex=="number"?a.checkpointIndex:o.currentIndex;if(t<0||t>=o.timeline.length)return null;if(typeof a?.checkpointIndex!="number"&&t<o.timeline.length-1){o.timeline=o.timeline.slice(0,t+1);let s=si(n);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t+1))}return o.timeline[t]??null},gg=({state:e,rollbackActionBatchStack:r},n={})=>{let o=n?.source===Jl?Jl:Ir,a=e.contexts?.[e.contexts.length-1],t=a?.rollback;if(!t||t.isRestoring||!Array.isArray(t.timeline)||typeof t.currentIndex!="number"||t.currentIndex<0||t.currentIndex>=t.timeline.length)return r.push({checkpointIndex:null,source:o}),e;if(t.currentIndex<t.timeline.length-1){t.timeline=t.timeline.slice(0,t.currentIndex+1);let s=si(a);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t.currentIndex+1))}return r.push({checkpointIndex:t.currentIndex,source:o}),e},bg=({state:e,rollbackActionBatchStack:r})=>(r.pop(),e),We=(e,r,n,o)=>{let t=o?.at(-1)?.source??Ir;if(!bI(r,t))return;let s=hg(e,o);s&&(Array.isArray(s.executedActions)||(s.executedActions=[]),s.executedActions.push({type:r,payload:L(n)}))},Ql=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=r?.operations??[];for(let{variableId:a,op:t,value:s,roundTo:i}of o){let l=e.projectData.resources?.variables?.[a],u=l?.scope,c=l?.type;if($e(l))throw new Error(`Cannot update computed variable: ${a}`);if(l?.readonly===!0)throw new Error(`Cannot update readonly variable: ${a}`);kt(u,a),vt(c,t,a),hn(c,t,s,a,{roundTo:i}),u==="context"&&(n.variables[a]=gn(n.variables[a],t,s,{roundTo:i}))}},Ig=(e,r)=>{Array.isArray(r?.executedActions)&&r.executedActions.forEach(({type:n,payload:o})=>{II(e,n,o)})},wg=(e,r)=>{let{sectionId:n,lineId:o}=r,s=ve({state:e},{sectionId:n})?.lines?.find(i=>i.id===o)?.actions;s&&Object.entries(s).forEach(([i,l])=>{uu(e,i,l)})},Oc=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let o=Ar(n),a=o.timeline[r];if(!a)return e;e.global.autoMode&&qt({state:e}),e.global.skipMode&&kr({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),o.isRestoring=!0,o.currentIndex=r;try{n.variables=ai(e.projectData),n.kind==="sceneReplay"&&(Ec(e,n),n.sceneReplay.finishOnNextAdvance=!1,n.sceneReplay.exitOnLineCompleted=!1),delete n.runtime,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=L(Cn),e.global.overlayStack=[],st(e),ot(e),e.global.isLineCompleted=!0;let t=o.replayStartIndex??0;for(let l=t;l<=r;l++)l>t&&ri(e),wg(e,o.timeline[l]),Ig(e,o.timeline[l]);let s=it(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let i=ni(n);i&&(i.currentLength=Math.min(i.checkpointLengths[r]??0,i.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=nc(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{o.isRestoring=!1}return e},kg=e=>{let{projectData:r}=e,n=e.initialAudioCommandId??0;if(!Number.isSafeInteger(n)||n<0)throw new Error("Internal initial audio command counter is invalid");let o=e.global??{},{saveSlots:a={},variables:t={},runtime:s={},accountViewedRegistry:i={},accountReplayRegistry:l={},localizationPackages:u=[{l10nId:null,language:null}]}=o;cc(r),gt(r),bt(r),It(r),jr(r?.resources?.variables??{});let c=r.story.initialSceneId,p=r.story.scenes[c],m=p.initialSectionId,d=p.sections[m],f={sceneId:c,sectionId:m,lineId:d.initialLineId??d.lines[0].id},{globalVariablesDefaultValues:y}=yn(r),g={...y,...wt(t,r.resources?.variables??{},{allowedScopes:["device","account"],preserveUnknown:!0})};return{projectData:r,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:jh(i,"accountViewedRegistry"),accountReplayRegistry:Nh(l),nextLineConfig:jt(),imageGalleryNavigation:Jo(),sceneReplayNavigation:ei(),sceneReplayEntryId:0,audioCommandId:n,musicRoomPlayer:Tn(),saveSlots:$h(a),localizationPackages:L(u),overlayStack:[],variables:g,...sg({projectData:r,loadedGlobalRuntime:s})},contexts:[ci({pointer:f,projectData:r})]}},vg=({state:e})=>e.global.overlayStack||[],Ag=({state:e})=>e.global.pendingEffects,Cc=({state:e})=>e.global.skipMode,Pg=({state:e})=>e.global.autoMode,$c=({state:e})=>e.global.dialogueUIHidden,_c=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(!n)return[];let o,a=M(n.dialogueHistory)&&Array.isArray(n.dialogueHistory.entries)&&Number.isInteger(n.dialogueHistory.currentLength);if(a)o=n.dialogueHistory.entries.slice(0,n.dialogueHistory.currentLength);else{let{sectionId:u,lineId:c}=n.pointers.read,p=ve({state:e},{sectionId:u});if(!p?.lines||!Array.isArray(p.lines))return[];let m=p.lines.findIndex(d=>d.id===c);o=p.lines.slice(0,m+1).map(d=>({sectionId:u,lineId:d.id}))}let t=[],s=Wr({variables:{...e.global?.variables??{},...vr(e)?.variables??{}},runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),i=new Map,l=u=>{let c=i.get(u.sectionId);if(!c){let m=ve({state:e},{sectionId:u.sectionId}),d=Array.isArray(m?.lines)?m.lines:[];c={lines:d,lineIndexes:new Map(d.map((f,y)=>[f.id,y])),projections:new Map,nextLineIndex:0,presentationState:{}},i.set(u.sectionId,c)}let p=c.lineIndexes.get(u.lineId);if(p===void 0)return null;for(;c.nextLineIndex<=p;){let m=c.lines[c.nextLineIndex],d=m.actions||{};c.presentationState=Nr([c.presentationState,d]),c.projections.set(m.id,{line:m,lineActions:d,dialogueState:c.presentationState.dialogue||{}}),c.nextLineIndex+=1}return c.projections.get(u.lineId)??null};for(let u of o){if(!Eh(u))continue;let c=l(u);if(!c)continue;let{line:p,lineActions:m,dialogueState:d}=c;if(!m.dialogue)continue;let f=mn({characterId:d.characterId,character:d.character,characters:e.projectData.resources?.characters??{},variables:s}),y=xh({sectionId:u.sectionId,lineId:p.id,content:m.dialogue.append===!0?d.content:m.dialogue.content,dialogueState:d,characterName:f}),g=t[t.length-1];if((a?u.appendToPrevious===!0:m.dialogue.append===!0)&&g?.sectionId===u.sectionId){t[t.length-1]={...t[t.length-1],content:y.content,text:y.text,characterId:y.characterId,character:y.character,characterName:y.characterName};continue}t.push(y)}return t},xg=(e,r,n)=>{let o=!1;for(let a of r??[]){let{slotId:t,saveSlotIdentity:s,sectionId:i,lineId:l}=a,u=e.global.saveSlots?.[Vr(t)],c=we(u)?en(u):u,p=u?.state?.contexts?.at(-1);!u||c!==s||p?.pointers?.read?.sectionId!==i||p?.pointers?.read?.lineId!==l||(p.dialogueHistory=L(n),o=!0)}o&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})},Eg=({state:e},r={})=>{let n=vr(e),o=n?.pointers?.read,a=Lt({state:e});if(!n||!M(a?.actions?.dialogue))return e;let t=Ar(n),s=t.timeline?.[t.currentIndex],i=s?.sectionId===o?.sectionId&&s?.lineId===o?.lineId,l=ni(n),u=l?.checkpointLengths?.[t.currentIndex],c=t.currentIndex>0?l?.checkpointLengths?.[t.currentIndex-1]??0:0,p=l?.entries?.[l.currentLength-1];if(r.reuseExistingOccurrence===!0&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId||r.forceNewOccurrence!==!0&&i&&l&&u===l.currentLength&&u>c&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId)return e;let m=Sh(n);m.currentLength<m.entries.length&&(m.entries=m.entries.slice(0,m.currentLength));let d=a.actions.dialogue.append===!0&&r.appendToPrevious===!0&&yc(e.projectData,p,o);if(m.entries.push({sectionId:o.sectionId,lineId:o.lineId,...d?{appendToPrevious:!0}:{}}),m.currentLength=m.entries.length,i){for(;m.checkpointLengths.length<t.timeline.length;)m.checkpointLengths.push(m.checkpointLengths.at(-1)??0);m.checkpointLengths[t.currentIndex]=m.currentLength}return xg(e,r.savedCheckpointOccurrences,m),e},Sg=({state:e})=>e.global.confirmDialog??null,Dt=({state:e},{pointer:r}={})=>{let n=r??_e({state:e})?.pointer,o=tg({state:e,pointer:n});return ng({state:e,form:o.form,pointer:n})},Rg=({state:e},{pointer:r}={})=>!!Dt({state:e},{pointer:r}),Ae=({state:e},{pointer:r}={})=>{let n=Dt({state:e},{pointer:r});if(n)return{source:wr,formId:n.id,formKey:n.key};let o=Mc({state:e,pointer:r});return o?{source:tt,resourceId:o}:null},Og=({state:e,registry:r},n)=>{let{sectionId:o,lineId:a}=n,s=(Array.isArray(r?.sections)?r.sections:[]).find(c=>c.sectionId===o);if(!s)return!1;if(s.lastLineId===void 0||a===void 0)return!0;let i=ve({state:e},{sectionId:o});if(!i||!i.lines||!Array.isArray(i.lines))return s.lastLineId===a;let l=i.lines.findIndex(c=>c.id===s.lastLineId),u=i.lines.findIndex(c=>c.id===a);return l===-1||u===-1?s.lastLineId===a:u<=l},pi=({registry:e},r)=>{let{resourceId:n}=r;return!!(Array.isArray(e?.resources)?e.resources:[]).find(t=>t.resourceId===n)},di=({state:e},r)=>Og({state:e,registry:e.global.accountViewedRegistry},r),Cg=({state:e},r)=>pi({registry:e.global.accountViewedRegistry},r),_t=(e,r)=>!pi({registry:e.global.accountViewedRegistry},{resourceId:r.imageId}),fi=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),mi=(e,r)=>{let n=fi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Uo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!_t(e,r[a]))return r[a]},$g=({state:e})=>{let r=e.projectData?.resources?.imageGallery;return r===void 0?void 0:L(r)},Tc=({state:e})=>{let r=e.projectData?.resources?.imageGallery;if(r===void 0)return null;let n=e.global.imageGalleryNavigation??Jo(),o=fi(r),a=mi(r,n),t=a*r.pageSize,s=r.groups.slice(t,t+r.pageSize).map(l=>({groupId:l.id,locked:_t(e,l.variants[0]),variants:l.variants.map(u=>({variantId:u.id,imageId:u.imageId,locked:_t(e,u)}))})),i=null;if(typeof n.groupId=="string"&&typeof n.variantId=="string"){let l=r.groups.findIndex(d=>d.id===n.groupId),u=r.groups[l],c=u?.variants.findIndex(d=>d.id===n.variantId),p=c===void 0||c<0?void 0:u.variants[c],m=l<0?-1:Math.floor(l/r.pageSize);p&&m===a&&!_t(e,p)&&(i={groupId:u.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:Uo(e,u.variants,c,-1)!==void 0,canMoveToNextVariant:Uo(e,u.variants,c,1)!==void 0})}return{pageGroups:s,selection:i,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},yi=(e,r)=>!pi({registry:e.global.accountViewedRegistry},{resourceId:r.soundId}),hi=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),gi=(e,r)=>{let n=hi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Bo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!yi(e,r[a]))return r[a]},jc=e=>({trackId:e.id,soundId:e.soundId,title:e.title,artist:e.artist??null,album:e.album??null,description:e.description??null,coverImageId:e.coverImageId??null}),_g=(e,r)=>({...jc(r),locked:yi(e,r)}),Zl=e=>{let r=Math.floor(e/1e3),n=r%60,o=Math.floor(r/60);if(o<60)return`${o}:${String(n).padStart(2,"0")}`;let a=Math.floor(o/60),t=o%60;return`${a}:${String(t).padStart(2,"0")}:${String(n).padStart(2,"0")}`},Tg=({state:e})=>{let r=e.projectData?.resources?.musicRoom;return r===void 0?void 0:L(r)},Nc=({state:e})=>{let r=e.projectData?.resources?.musicRoom;if(r===void 0)return null;let n=e.global.musicRoomPlayer??Tn(),o=hi(r),a=gi(r,n),t=a*r.pageSize,s=r.tracks.slice(t,t+r.pageSize).map(c=>_g(e,c)),i=r.tracks.findIndex(c=>c.id===n.trackId),l=r.tracks[i],u=l?{...jc(l),canPlayPreviousTrack:Bo(e,r.tracks,i,-1)!==void 0,canPlayNextTrack:Bo(e,r.tracks,i,1)!==void 0}:null;return{pageTracks:s,selection:u,playback:u?{status:n.status,readiness:n.readiness,positionMs:n.positionMs,durationMs:n.durationMs,positionText:Zl(n.positionMs),durationText:n.durationMs===null?null:Zl(n.durationMs),canPlay:n.status!=="playing",canPause:n.status==="playing",canSeek:n.readiness==="ready"&&n.durationMs!==null}:null,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},bi=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),Ii=(e,r)=>{let n=bi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},jg=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;return r===void 0?void 0:L(r)},Ng=({state:e})=>de(e)!==null,Dg=({state:e})=>{let r=de(e);return r?{sceneId:r.sceneReplay.sceneId,entryId:r.sceneReplay.entryId}:null},Dc=(e,r)=>e.global.accountReplayRegistry?.sceneIds?.includes(r)===!0,Lc=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;if(r===void 0)return null;let n=e.global.sceneReplayNavigation??ei(),o=bi(r),a=Ii(r,n),t=a*r.pageSize,s=r.replays.slice(t,t+r.pageSize).map(l=>({sceneId:l.sceneId,title:l.title,thumbnailImageId:l.thumbnailImageId,locked:!Dc(e,l.sceneId)})),i=de(e);return{isActive:i!==null,activeSceneId:i?.sceneReplay.sceneId??null,pageReplays:s,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Lg=({state:e})=>e.global.nextLineConfig,Mc=({state:e,pointer:r}={})=>{let n=r??_e({state:e})?.pointer;if(!n)return;let o=n?.sectionId,a=n?.lineId,s=ve({state:e},{sectionId:o})?.lines||[],i=s.findIndex(u=>u.id===a);if(i<0)return;let l;for(let u of s.slice(0,i+1)){let c=u?.actions;if(c?.cleanAll&&(l=void 0),!c||!Object.prototype.hasOwnProperty.call(c,"choice")){l=void 0;continue}let p=c.choice;if(p?.resourceId){l=p.resourceId;continue}p?.animations||(l=void 0)}return l},qc=({state:e})=>!!Mc({state:e}),Mg=({state:e})=>structuredClone(e),qg=({state:e})=>L(e.projectData.resources?.achievements??{}),Vg=({state:e},r)=>{let n=e.projectData.resources?.achievements?.[r?.resourceId];return n===void 0?void 0:L(n)},Vc=({state:e})=>e.global.saveSlots,Fg=({state:e},r)=>{let n=r?.slotId,o=Vr(n);return Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0},Fc=({state:e})=>L(e.global.localizationPackages),wi=({state:e})=>hr(e),Ug=({state:e},r)=>He(e,r?.runtimeId),ki=({state:e})=>{let r={...e.global?.variables??{},...vr(e)?.variables??{}};return Wr({variables:r,runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{}})},_e=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(n)return{currentPointerMode:"read",pointer:n.pointers?.read}},ve=({state:e},r)=>{let{sectionId:n}=r;return Xe(e.projectData,n).section},Lt=({state:e})=>{let r=_e({state:e});if(!r?.pointer)return;let{sectionId:n,lineId:o}=r.pointer,a=ve({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(t=>t.id===o)},Uc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=ve({state:e},{sectionId:r})?.lines||[],t=a.findIndex(u=>u.id===n),i=a.slice(0,t+1).map(u=>{let c=u.actions||{},p={};return Object.keys(c).forEach(m=>{p[m]=c[m]}),p});return Nr(i)},Bc=e=>{let r=Lt({state:e})?.actions?.dialogue;if(r?.clear===!0||!Array.isArray(r?.content))return"";let n=Wr({variables:{...e.global?.variables??{},...vr(e)?.variables??{}},runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1});return r.content.map(o=>`${Kr(o?.text,{variables:n})??""}`).join("")},or=({state:e})=>qo({text:Bc(e),baseDelay:He(e,"autoForwardDelay"),speed:He(e,"autoForwardSpeed")}),Bg=({state:e})=>{let r=zc({state:e}),o=Lt({state:e})?.actions??{},a=Nr([r??{},o]);return io(r??{},a??{})},zg=({state:e},{sectionId:r})=>{let n=ve({state:e},{sectionId:r});if(!n?.lines)return[];let o=[],a={};for(let t of n.lines){let s=t.actions||{},i=Nr([a,s]),l=io(a,i);o.push({id:t.id,changes:l,presentationState:i}),a=ao(i)}return o},Yg=({state:e},{sectionId:r,includePresentationState:n=!1})=>{let o=zg({state:e},{sectionId:r});return n?{lines:o}:{lines:o.map(({presentationState:a,...t})=>t)}},zc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=ve({state:e},{sectionId:r})?.lines||[],t=a.findIndex(l=>l.id===n);if(t<=0)return null;let i=a.slice(0,t).map(l=>{let u=l.actions||{},c={};return Object.keys(u).forEach(p=>{c[p]=u[p]}),c});return ao(Nr(i))},vi=({state:e},{slotsPerPage:r=6}={})=>{let a=((wi({state:e}).saveLoadPagination??1)-1)*r+1,t=[];for(let s=0;s<r;s++){let i=a+s,l=e.global.saveSlots&&e.global.saveSlots[Vr(i)]||{};t.push({...l,slotId:i})}return{saveSlots:t}},Gg=Vc,Hg=vi,Xg=e=>{let n=e.contexts?.[e.contexts.length-1]?.rollback;return!n||!Array.isArray(n.timeline)||typeof n.currentIndex!="number"?!1:n.currentIndex>=0&&n.currentIndex<n.timeline.length-1},Wg=({state:e},r={})=>{let n=Uc({state:e}),o=zc({state:e}),a=Lt({state:e})?.actions??{},t=e.global.pendingScreenTransition,s=t?.animations?{...a,screen:L(t)}:a,i=t?.animations&&o===null?{}:o,{sectionId:l}=_e({state:e}).pointer,{sceneId:u}=Xe(e.projectData,l),c={...wi({state:e}),localizationPackages:Fc({state:e})},p=r?.activePersistentAnimations??[],m=r?.restoredPersistentAnimations??[],d=Dt({state:e}),f=qc({state:e}),y=Tc({state:e}),g=Nc({state:e}),h=Lc({state:e}),w=ki({state:e}),{saveSlots:b}=vi({state:e}),E=Xg(e);return Sl({presentationState:n,previousPresentationState:i,currentLineActions:s,resources:e.projectData.resources,currentSceneId:u,screen:e.projectData.screen,dialogueUIHidden:c.dialogueUIHidden,autoMode:c.autoMode,skipMode:c.skipMode,isChoiceVisible:f,isFormVisible:!!d,canRollback:fu({state:e}),skipOnlyViewedLines:!c.skipUnseenText,isLineCompleted:c.isLineCompleted,skipTransitionsAndAnimations:!!c.skipTransitionsAndAnimations||E,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:d,dialogueHistory:_c({state:e}),saveSlots:b,variables:w,runtime:c,activePersistentAnimations:p,restoredPersistentAnimations:m,imageGallery:y,musicRoom:g,sceneReplay:h,musicRoomPlayer:L(e.global.musicRoomPlayer)})},Kg=({state:e},r)=>(e.global.confirmDialog=Wh(r),e.global.pendingEffects.push({name:"render"}),e),Jg=({state:e})=>(e.global.confirmDialog&&(st(e),e.global.pendingEffects.push({name:"render"})),e),Qg=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.push(n),e.global.pendingEffects.push({name:"render"}),We(e,"pushOverlay",n,r),e),Zg=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),We(e,"popOverlay",void 0,r),e),eb=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.length>0&&(e.global.overlayStack[e.global.overlayStack.length-1]=n),e.global.pendingEffects.push({name:"render"}),We(e,"replaceLastOverlay",n,r),e),rb=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack=[],st(e),ot(e),e.global.pendingEffects.push({name:"render"}),We(e,"clearOverlays",void 0,r),e),tb=(e,{activeInteraction:r})=>{e.global.autoMode&&e.global.pendingEffects.push({name:"clearAutoNextTimer"}),r&&e.global.skipMode&&e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.nextLineConfig?.auto?.enabled&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Mt=(e,r,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,Jh(e,n),ot(e);let o=Ae({state:e},{pointer:r}),a=o?.source===tt,t=o?.source===wr;tb(e,{activeInteraction:o});let s=de(e),i={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=nc(e);s.sceneReplay.entryId=l,i.payload={sceneReplaySceneId:s.sceneReplay.sceneId,entryId:l}}return e.global.pendingEffects.push(i),{isChoiceVisible:a,isFormVisible:t,activeInteraction:o}},Nn=(e,r,n)=>{!(r?.source===tt||r?.source===wr)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},Yc=({state:e})=>(Ae({state:e})||(e.global.skipMode&&(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"})),e.global.autoMode=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.isLineCompleted&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e.global.pendingEffects.push({name:"render"})),e),qt=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),nb=({state:e})=>{let r=e.global.autoMode;return Ae({state:e})&&!r||(r?qt({state:e}):Yc({state:e})),e},Gc=({state:e})=>(Ae({state:e})||(e.global.autoMode&&(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"})),e.global.skipMode=!0,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.pendingEffects.push({name:"render"})),e),kr=({state:e})=>(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),sb=({state:e})=>{let r=Cc({state:e});return Ae({state:e})&&!r||(r?kr({state:e}):Gc({state:e})),e},Dn=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),We(e,"showDialogueUI",void 0,r),e),Hc=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),We(e,"hideDialogueUI",void 0,r),e),ob=e=>{let{state:r}=e;return $c({state:r})?Dn(e):Hc(e),r},Pr=(e,r,n)=>(li(e,r,n),Sc(e),e.global.pendingEffects.push({name:"render"}),e),Vt=(e,r,n,o,a)=>{let t=li(e,r,n);return e.global.pendingEffects.push({name:"render"}),We(e,o,{value:t},a),e},ib=({state:e},r)=>Pr(e,"dialogueTextSpeed",r?.value),ab=({state:e},r)=>(Pr(e,"autoForwardDelay",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e),lb=({state:e},r)=>(Pr(e,"autoForwardSpeed",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e),cb=({state:e},r)=>Pr(e,"skipUnseenText",r?.value),ub=({state:e},r)=>Pr(e,"skipTransitionsAndAnimations",r?.value),pb=({state:e},r)=>Pr(e,"soundVolume",r?.value),db=({state:e},r)=>Pr(e,"musicVolume",r?.value),fb=({state:e},r)=>Pr(e,"muteAll",r?.value),zo=({state:e,rollbackActionBatchStack:r},n)=>Vt(e,"saveLoadPagination",n?.value,"setSaveLoadPagination",r),Yo=({state:e,rollbackActionBatchStack:r})=>{let n=He(e,"saveLoadPagination")+1;return Vt(e,"saveLoadPagination",n,"incrementSaveLoadPagination",r),e},Go=({state:e,rollbackActionBatchStack:r})=>{let n=He(e,"saveLoadPagination")-1;return Vt(e,"saveLoadPagination",n,"decrementSaveLoadPagination",r),e},Ho=({state:e,rollbackActionBatchStack:r},n)=>Vt(e,"menuPage",n?.value,"setMenuPage",r),Xo=({state:e,rollbackActionBatchStack:r},n)=>Vt(e,"menuEntryPoint",n?.value,"setMenuEntryPoint",r),mb=({state:e})=>(e.global.pendingEffects=[],e),yb=({state:e},r)=>(e.global.pendingEffects.push(r),e),hb=({state:e},r)=>{if(de(e))return e;let n=r?.resourceId;return sc(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},gb=({state:e},r)=>{if(de(e))return e;let n=r?.resourceId,o=sc(e,n);if(o.type!=="number")throw new Error(`Achievement resource "${n}" does not support numeric progress`);let a=r?.current;if(!Number.isInteger(a)||a<0)throw new Error(`Achievement progress for "${n}" must be a non-negative integer`);if(!Number.isInteger(o.target)||o.target<1)throw new Error(`Achievement resource "${n}" must have a positive integer target`);let t=Math.min(a,o.target);return e.global.pendingEffects.push({name:"setAchievementProgress",payload:{resourceId:n,current:t,target:o.target,completed:t>=o.target}}),e},Xc=e=>e?.lines?.[0],Wc=(e,{sectionId:r,resetStoryState:n=!1,screen:o})=>{let a=!!kc(o),t=ve({state:e},{sectionId:r});if(!t)return console.warn(`Section not found: ${r}`),e;let s=Xc(t);if(!s)return console.warn(`Section ${r} has no lines`),e;if(n&&!pg(e,{queueRender:!a}))return e;let i=Ae({state:e});n&&e.global.skipMode&&kr({state:e});let l=e.contexts?.[e.contexts.length-1];if(l){let c=it(l),p=c.read;n||qr(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||Ar(l,{compatibilityAnchor:!0}),c.read={sectionId:r,lineId:s.id},n?l.rollback=Tt({pointer:c.read}):ui(e,{sectionId:r,lineId:s.id})}let{activeInteraction:u}=Mt(e,l?.pointers?.read,{screenTransition:o});return Nn(e,i,u),e},bb=({state:e},r)=>{if(de(e))throw new Error("Cannot reset the story while a scene replay is active");return Wc(e,{sectionId:r?.sectionId,resetStoryState:!0,screen:r?.screen})},Kc=e=>(e.global.accountViewedRegistry=vh(e.global.accountViewedRegistry),e.global.accountViewedRegistry),Ln=(e,r)=>{!Array.isArray(r)||r.length===0||e.global.pendingEffects.push({name:"applyScopedDataUpdates",payload:{updates:r.map(n=>({scope:n.scope,path:n.path,op:n.op,value:L(n.value)}))}})},Jc=(e,r)=>{Ln(e,[{scope:"account",path:"viewedRegistry",op:"markViewed",value:{sections:(Array.isArray(r?.sections)?r.sections:[]).map(n=>({sectionId:n.sectionId,...n.lastLineId===void 0?{}:{lineId:n.lastLineId}})),resources:Array.isArray(r?.resources)?r.resources:[]}}])},Ib=(e,r,{sectionId:n,lineId:o})=>{if(!n||!o)return!1;let a=M(r)?r:{};Array.isArray(a.sections)||(a.sections=[]);let t=a.sections.find(s=>s.sectionId===n);if(t){if(t.lastLineId===void 0)return!1;let s=ve({state:e},{sectionId:n});if(s?.lines){let i=s.lines.findIndex(u=>u.id===t.lastLineId),l=s.lines.findIndex(u=>u.id===o);if(i===-1||l>i)return t.lastLineId===o?!1:(t.lastLineId=o,!0)}else return t.lastLineId===o?!1:(t.lastLineId=o,!0);return!1}else return a.sections.push({sectionId:n,lastLineId:o}),!0},qr=(e,r)=>{if(de(e)||e.global.accountViewedRegistry===void 0)return;Ib(e,Kc(e),r)&&Jc(e,{sections:[{sectionId:r.sectionId,lastLineId:r.lineId}],resources:[]})},wb=({state:e},r)=>(qr(e,r),e.global.pendingEffects.push({name:"render"}),e),kb=({state:e},r)=>{if(de(e))return e;let{resourceId:n}=r;if(e.global.accountViewedRegistry!==void 0){let o=Kc(e);o.resources.find(t=>t.resourceId===n)||(o.resources.push({resourceId:n}),Jc(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},Ke=(e,r,n)=>{if(!M(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},Wo=(e,r,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${r}`)},Mn=(e,r)=>{let n=e.global.imageGalleryNavigation;n.groupId===r.groupId&&n.variantId===r.variantId&&n.pageIndex===r.pageIndex||(e.global.imageGalleryNavigation=r,e.global.pendingEffects.push({name:"render"}))},vb=({state:e},r)=>{let n="showImageGalleryVariant";Ke(n,r,yh),Wo(n,"groupId",r.groupId),Object.prototype.hasOwnProperty.call(r,"variantId")&&Wo(n,"variantId",r.variantId);let o=e.projectData?.resources?.imageGallery;if(o===void 0)return e;let a=o.groups.findIndex(i=>i.id===r.groupId),t=o.groups[a];if(!t)return e;let s=r.variantId===void 0?t.variants[0]:t.variants.find(i=>i.id===r.variantId);return!s||_t(e,s)||Mn(e,{groupId:t.id,variantId:s.id,pageIndex:Math.floor(a/o.pageSize)}),e},Qc=(e,r,n,o)=>{Ke(o,r,Qo);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let t=e.global.imageGalleryNavigation;if(typeof t.groupId!="string"||typeof t.variantId!="string")return e;let s=a.groups.find(u=>u.id===t.groupId),i=s?.variants.findIndex(u=>u.id===t.variantId);if(!s||i===void 0||i<0)return e;let l=Uo(e,s.variants,i,n);return l&&Mn(e,{...t,variantId:l.id}),e},Ab=({state:e},r)=>Qc(e,r,-1,"moveToPreviousImageGalleryVariant"),Pb=({state:e},r)=>Qc(e,r,1,"moveToNextImageGalleryVariant"),xb=({state:e},r)=>{if(Ke("clearImageGallerySelection",r,Qo),e.projectData?.resources?.imageGallery===void 0)return e;let o=e.global.imageGalleryNavigation;return Mn(e,{groupId:null,variantId:null,pageIndex:o.pageIndex}),e},Zc=(e,r)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let o=fi(n);if(r>=o)return e;let a=e.global.imageGalleryNavigation,t=mi(n,a);return r===t||Mn(e,{groupId:null,variantId:null,pageIndex:r}),e},Eb=({state:e},r)=>{if(Ke("moveToImageGalleryPage",r,hh),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return Zc(e,r.pageIndex)},eu=(e,r,n,o)=>{Ke(o,r,Qo);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=mi(a,e.global.imageGalleryNavigation)+n;return s<0?e:Zc(e,s)},Sb=({state:e},r)=>eu(e,r,1,"moveToNextImageGalleryPage"),Rb=({state:e},r)=>eu(e,r,-1,"moveToPreviousImageGalleryPage"),ir=(e,r,n)=>{if(!M(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},Ob=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error(`${e} requires a non-empty trackId`)},ze=e=>{e.global.pendingEffects.push({name:"render"})},ru=(e,r)=>{let n=e.projectData.resources.musicRoom,o=e.global.musicRoomPlayer,a=o.trackId!==null,t=o.trackId===r.id,s=o.bgmPlayback;a||(s={commandId:jn(e),operation:"pause"});let i=Nt(e,"play",0),l=n.tracks.indexOf(r),u=t?o.durationMs:null;e.global.musicRoomPlayer={trackId:r.id,pageIndex:Math.floor(l/n.pageSize),status:"playing",readiness:u===null?"loading":"ready",positionMs:0,durationMs:u,playback:i,seekFallback:null,bgmPlayback:s},ze(e)},Cb=({state:e},r)=>{let n="playMusicRoomTrack";ir(n,r,gh),Ob(n,r.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(t=>t.id===r.trackId);return!a||yi(e,a)||ru(e,a),e},$b=({state:e},r)=>{ir("playMusicRoom",r,nt);let o=e.global.musicRoomPlayer;if(o.trackId===null||o.status==="playing")return e;let a=o.status==="ended",t=o.readiness==="error",s=o.status==="paused"&&!t?"resume":"play",i=a?0:o.positionMs;return o.playback=Nt(e,s,s==="play"?i:void 0),o.seekFallback=null,o.status="playing",o.positionMs=i,t&&(o.readiness=o.durationMs===null?"loading":"ready"),ze(e),e},_b=({state:e},r)=>{ir("pauseMusicRoom",r,nt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status!=="playing"||(o.playback=Nt(e,"pause"),o.seekFallback=null,o.status="paused",ze(e)),e},Tb=({state:e},r)=>{ir("stopMusicRoom",r,nt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status==="stopped"&&o.positionMs===0||(o.playback=Nt(e,"stop"),o.seekFallback=null,o.status="stopped",o.positionMs=0,ze(e)),e},jb=({state:e},r)=>{if(ir("seekMusicRoom",r,bh),typeof r.positionMs!="number"||!Number.isFinite(r.positionMs)||r.positionMs<0)throw new Error("seekMusicRoom requires a finite non-negative positionMs");let o=e.global.musicRoomPlayer;if(o.trackId===null||o.readiness!=="ready"||o.durationMs===null||r.positionMs>o.durationMs)return e;let a=Nt(e,"seek",r.positionMs);return o.seekFallback={commandId:a.commandId,status:o.status,positionMs:o.positionMs},o.playback=a,o.positionMs=r.positionMs,r.positionMs===o.durationMs?o.status="ended":o.status==="ended"&&(o.status="stopped"),ze(e),e},tu=(e,r,n,o)=>{ir(o,r,nt);let a=e.projectData?.resources?.musicRoom,t=e.global.musicRoomPlayer;if(!a||t.trackId===null)return e;let s=a.tracks.findIndex(l=>l.id===t.trackId);if(s<0)return e;let i=Bo(e,a.tracks,s,n);return i&&ru(e,i),e},Nb=({state:e},r)=>tu(e,r,-1,"playPreviousMusicRoomTrack"),Db=({state:e},r)=>tu(e,r,1,"playNextMusicRoomTrack"),Lb=({state:e},r)=>{ir("clearMusicRoomSelection",r,nt);let o=e.global.musicRoomPlayer;if(o.trackId===null)return e;let a=o.pageIndex,t={commandId:jn(e),operation:"resume"};return e.global.musicRoomPlayer={...Tn({bgmPlayback:t}),pageIndex:a},ze(e),e},nu=(e,r)=>{let n=e.projectData?.resources?.musicRoom;if(!n||r>=hi(n))return e;let o=e.global.musicRoomPlayer,a=gi(n,o);return r===a||(o.pageIndex=r,ze(e)),e},Mb=({state:e},r)=>{if(ir("moveToMusicRoomPage",r,Ih),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return nu(e,r.pageIndex)},su=(e,r,n,o)=>{ir(o,r,nt);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let t=gi(a,e.global.musicRoomPlayer)+n;return t<0?e:nu(e,t)},qb=({state:e},r)=>su(e,r,1,"moveToNextMusicRoomPage"),Vb=({state:e},r)=>su(e,r,-1,"moveToPreviousMusicRoomPage"),Mr=e=>{let r=de(e);if(!r)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=L(r.sceneReplay.returnState),o=r.sceneReplay.sceneId;return e.global.pendingEffects=e.global.pendingEffects.filter(a=>a?.name!=="handleLineActions"||a?.payload?.sceneReplaySceneId!==o),e.contexts.pop(),lg(e,n),e.global.pendingEffects.push({name:"render"}),!0},Fb=({state:e},r)=>{let n="startSceneReplay";if(Ke(n,r,wh),Wo(n,"sceneId",r.sceneId),de(e))throw new Error("Cannot start a scene replay while another replay is active");let a=e.projectData?.resources?.sceneReplay?.replays.find(p=>p.sceneId===r.sceneId);if(!a||!Dc(e,a.sceneId))return e;let t=e.projectData.story.scenes[a.sceneId],s=t?.initialSectionId,i=t?.sections?.[s],l=i?.initialLineId??i?.lines?.[0]?.id;if(!i||!l||!i.lines.some(p=>p.id===l))throw new Error(`Scene replay scene "${a.sceneId}" has an invalid initial section`);let u=ig(e);ag(e);let c=ci({pointer:{sceneId:a.sceneId,sectionId:s,lineId:l},projectData:e.projectData,kind:"sceneReplay",sceneReplay:{sceneId:a.sceneId,entryId:0,finishOnNextAdvance:!1,exitOnLineCompleted:!1,returnState:u}});return Ec(e,c),e.contexts.push(c),Mt(e,c.pointers.read),e},ou=({state:e},r)=>{Ke("finishSceneReplay",r,Zo);let o=de(e);if(o)return o.sceneReplay.finishOnNextAdvance=!0,e;if(vr(e)?.rollback?.isRestoring===!0)return e;let t=_e({state:e})?.pointer,{sceneId:s}=Xe(e.projectData,t?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=Ah(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),Ln(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},Ub=({state:e},r)=>(Ke("exitSceneReplay",r,Zo),Mr(e),e),iu=(e,r)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||r>=bi(n))return e;let o=Ii(n,e.global.sceneReplayNavigation);return r===o||(e.global.sceneReplayNavigation.pageIndex=r,e.global.pendingEffects.push({name:"render"})),e},Bb=({state:e},r)=>{if(Ke("moveToSceneReplayPage",r,kh),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return iu(e,r.pageIndex)},au=(e,r,n,o)=>{Ke(o,r,Zo);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let t=Ii(a,e.global.sceneReplayNavigation)+n;return t<0?e:iu(e,t)},zb=({state:e},r)=>au(e,r,1,"moveToNextSceneReplayPage"),Yb=({state:e},r)=>au(e,r,-1,"moveToPreviousSceneReplayPage"),qn=(e,r)=>{let n=e.global.musicRoomPlayer;return!M(r)||r.id!==fh||n.trackId===null||!n.playback||r.commandId!==n.playback.commandId?null:n},Ai=e=>typeof e.positionMs=="number"&&Number.isFinite(e.positionMs)&&e.positionMs>=0&&typeof e.durationMs=="number"&&Number.isFinite(e.durationMs)&&e.durationMs>0&&e.positionMs<=e.durationMs,lu=(e,r,n,{readiness:o=r.readiness}={})=>((r.readiness!==o||r.positionMs!==n.positionMs||r.durationMs!==n.durationMs||r.seekFallback!==null)&&(r.readiness=o,r.positionMs=n.positionMs,r.durationMs=n.durationMs,r.seekFallback=null,ze(e)),e),Gb=({state:e},r)=>{let n=qn(e,r);return!n||n.readiness!=="loading"||!Ai(r)?e:lu(e,n,r,{readiness:"ready"})},Hb=({state:e},r)=>{let n=qn(e,r);return!n||n.readiness!=="ready"||!Ai(r)||n.status==="stopped"&&r.positionMs!==0||n.status==="ended"&&r.positionMs!==r.durationMs?e:lu(e,n,r)},Xb=({state:e},r)=>{let n=qn(e,r);return!n||n.readiness!=="ready"||n.status!=="playing"||!Ai(r)||r.positionMs!==r.durationMs||(n.status="ended",n.positionMs=r.positionMs,n.durationMs=r.durationMs,n.seekFallback=null,ze(e)),e},Wb=({state:e},r)=>{let n=qn(e,r);if(!n||typeof r.errorCode!="string"||!mh.has(r.errorCode)||n.readiness==="error"&&n.status==="stopped")return e;if(r.errorCode==="invalid-position"){let o=n.seekFallback;if(n.playback.operation!=="seek"||o?.commandId!==r.commandId)return e;let a=n.status!==o.status||n.positionMs!==o.positionMs;return n.status=o.status,n.positionMs=o.positionMs,n.seekFallback=null,a&&ze(e),e}return n.readiness="error",n.status="stopped",n.positionMs=0,n.seekFallback=null,ze(e),e},cu=({state:e,rollbackActionBatchStack:r},n)=>{let o=Oh(n.manual),{auto:a,applyMode:t}=n,s=e.global.nextLineConfig.auto?.enabled,i=e.global.nextLineConfig.auto?.trigger,l=e.global.nextLineConfig.auto?.delay,u=e.global.nextLineConfig?.applyMode,c=e.contexts?.[e.contexts.length-1]?.rollback?.isRestoring===!0;o&&a?(e.global.nextLineConfig={manual:o,auto:a},t!==void 0?e.global.nextLineConfig.applyMode=t:u!==void 0&&(e.global.nextLineConfig.applyMode=u)):(o&&(e.global.nextLineConfig.manual=o),a&&(e.global.nextLineConfig.auto=a),t!==void 0&&(e.global.nextLineConfig.applyMode=t));let p=e.global.nextLineConfig.auto?.enabled,m=e.global.nextLineConfig.auto?.trigger,d=e.global.nextLineConfig.auto?.delay,f=Ae({state:e});return!c&&(a!==void 0&&(p!==s||m!==i||d!==l))&&(!f&&p===!0&&(m==="fromStart"||e.global.isLineCompleted)?e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:d}}):s===!0&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})),e.global.pendingEffects.push({name:"render"}),We(e,"setNextLineConfig",n,r),e},Kb=({state:e},r)=>{if(de(e))throw new Error("Cannot save while a scene replay is active");let n=r?.slotId;oc(n,"saveSlot");let{thumbnailImage:o}=r,a=r?.savedAt,t=Vr(n),s=L(e.contexts);s?.forEach(u=>{it(u),Rc(u.rollback),Th(u.rollback,e.projectData)});let i={contexts:s},l={formatVersion:tc,slotId:uc(n),savedAt:typeof a=="number"?a:Date.now(),image:o,state:i};return e.global.saveSlots[t]=l,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}},{name:"render"}),e},Jb=({state:e},r)=>{if(de(e))throw new Error("Cannot load while a scene replay is active");let n=r?.slotId;oc(n,"loadSlot");let o=Vr(n),a=Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0;if(a){let t=Xh(a,e.projectData);e.contexts=t.state.contexts,e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=jt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,st(e),ot(e),ti(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},Qb=({state:e},r)=>{if(de(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=r;cc(n),gt(n),bt(n),It(n),jr(n?.resources?.variables??{}),fo(n);let o=Dh(n),a=o?e.contexts?.map((t,s)=>wc(L(t),n,s)):void 0;if(e.projectData=n,e.global.imageGalleryNavigation=Jo(),e.global.sceneReplayNavigation=ei(),ti(e),o){let t=n?.resources?.variables??{},{globalVariablesDefaultValues:s}=yn(n??{});Object.prototype.hasOwnProperty.call(e.global??{},"variables")&&(e.global.variables={...s,...wt(e.global.variables,t,{allowedScopes:["device","account"]})}),e.contexts=a}return st(e),ot(e),e.global.pendingEffects.push({name:"render"}),e},Zb=({state:e},r)=>{let{l10nId:n,projectData:o}=r??{};if(n!==null&&(typeof n!="string"||n.length===0))throw new Error("updateLocalizationPackage requires l10nId or null");if(!M(o))throw new Error("updateLocalizationPackage requires resolved projectData internally");return e.projectData=o,li(e,"localizationPackageId",n),Sc(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e.global.pendingEffects.push({name:"render"}),e},eI=({state:e},r)=>{let{sectionId:n,lineId:o}=r;if(!o)return console.warn("jumpToLine requires lineId parameter"),e;let a=e.contexts[e.contexts.length-1];if(!a)return console.warn("No context available for jumpToLine"),e;let t=n||a.pointers.read?.sectionId;if(n&&!ve({state:e},{sectionId:n}))return console.warn(`Section not found: ${n}`),e;let s=ve({state:e},{sectionId:t});if(!s?.lines||!Array.isArray(s.lines))return console.warn(`Section ${t} has no lines`),e;if(!s.lines.find(p=>p.id===o))return console.warn(`Line not found: ${o} in section ${t}`),e;let l=Ae({state:e}),u=it(a);u.read={sectionId:t,lineId:o};let{activeInteraction:c}=Mt(e,u.read);return Nn(e,l,c),e},rI=({state:e,rollbackActionBatchStack:r},n)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return Dn({state:e,rollbackActionBatchStack:r}),e;let o=Ae({state:e});if(o?.source===tt&&n?.bypassChoice!==!0||o?.source===wr&&n?._interactionSource!==wr)return e;if(!e.global.isLineCompleted){if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,de(e)?.sceneReplay.exitOnLineCompleted)return Mr(e),e;let d=_e({state:e})?.pointer,f=d?.sectionId,y=d?.lineId;f&&y&&qr(e,{sectionId:f,lineId:y}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.autoMode&&!o&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}});let g=e.global.nextLineConfig,h=ve({state:e},{sectionId:f});return Array.isArray(h?.lines)&&h.lines.at(-1)?.id===y?Fo(e):g?.auto?.enabled&&!o&&g.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:g.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e}if(de(e)?.sceneReplay.finishOnNextAdvance)return Mr(e),e;let t=_e({state:e})?.pointer,s=t?.sectionId,i=ve({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],u=i?.lines||[],p=u.findIndex(m=>m.id===t?.lineId)+1;if(p<u.length){let m=u[p],d=!He(e,"skipUnseenText");if(e.global.skipMode&&d&&!di({state:e},{sectionId:s,lineId:m.id}))return kr({state:e}),e;if(l&&!l.rollback&&Ar(l,{compatibilityAnchor:!0}),l){let y=it(l),g=y.read?.lineId;g&&s&&qr(e,{sectionId:s,lineId:g}),y.read={sectionId:s,lineId:m.id}}ui(e,{sectionId:s,lineId:m.id}),ri(e);let{activeInteraction:f}=Mt(e,{sectionId:s,lineId:m.id});Nn(e,o,f)}else{if(de(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Mr(e),e;e.global.autoMode&&qt({state:e}),e.global.skipMode&&kr({state:e}),Fo(e)}return e},tI=({state:e})=>{if(e.global.isLineCompleted)return e;if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,de(e)?.sceneReplay.exitOnLineCompleted)return Mr(e),e;let n=Ae({state:e});e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}});let o=_e({state:e})?.pointer,a=o?.sectionId,t=o?.lineId;a&&t&&qr(e,{sectionId:a,lineId:t});let s=e.global.nextLineConfig;return s?.auto?.enabled&&!n&&s.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:s.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e},nI=({state:e},r)=>Wc(e,{sectionId:r?.sectionId,screen:r?.screen}),sI=({state:e,rollbackActionBatchStack:r},n)=>{let o=n?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!o)return Dn({state:e,rollbackActionBatchStack:r}),e.global.autoMode&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e;let a=Ae({state:e});if(a?.source===tt&&n?.bypassChoice!==!0||a?.source===wr&&n?._interactionSource!==wr||a&&a.source!==tt&&a.source!==wr)return e;let t=de(e);if(t?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(Mr(e),e):(t.sceneReplay.exitOnLineCompleted=!0,e);let s=_e({state:e})?.pointer,i=s?.sectionId,l=ve({state:e},{sectionId:i}),u=e.contexts[e.contexts.length-1],c=l?.lines||[],m=c.findIndex(d=>d.id===s?.lineId)+1;if(m<c.length){let d=c[m],f=!He(e,"skipUnseenText");if(e.global.skipMode&&f&&!di({state:e},{sectionId:i,lineId:d.id})&&(kr({state:e}),!o))return e;if(u&&!u.rollback&&Ar(u,{compatibilityAnchor:!0}),u){let g=it(u),h=g.read?.lineId;h&&i&&qr(e,{sectionId:i,lineId:h}),g.read={sectionId:i,lineId:d.id}}ui(e,{sectionId:i,lineId:d.id}),ri(e);let{activeInteraction:y}=Mt(e,{sectionId:i,lineId:d.id});Nn(e,a,y)}else{if(de(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Mr(e),e;e.global.autoMode&&qt({state:e}),e.global.skipMode&&kr({state:e}),Fo(e)}return e},Pi=(e,r={})=>{let n=Dt({state:e});return!n||r.formKey&&r.formKey!==n.key||r.formId&&r.formId!==n.id?null:n},oI=(e,r)=>{if(!r.variableId)throw new Error(`form field "${r.id}" requires variableId`);let n=e.projectData.resources?.variables?.[r.variableId],o=n?.scope,a=n?.type;if($e(n))throw new Error(`Cannot update computed variable: ${r.variableId}`);if(n?.readonly===!0)throw new Error(`Cannot update readonly variable: ${r.variableId}`);if(kt(o,r.variableId),vt(a,"set",r.variableId),de(e)&&o!=="context")throw new Error(`Cannot update ${o}-scoped variable "${r.variableId}" while a scene replay is active`);return{variableConfig:n,scope:o}},iI=(e,r)=>({id:e.id,key:e.key,valid:!0,values:L(r),fields:L(e.fields),fieldList:L(e.fieldList)}),aI=e=>{if(e.global.isLineCompleted)return;e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition;let r=_e({state:e})?.pointer,n=r?.sectionId,o=r?.lineId;n&&o&&qr(e,{sectionId:n,lineId:o})},lI=({state:e},r={})=>{let n=Pi(e,r),o=r.field;if(!n?.fields?.[o])return e;let a=Ac(e,n.key),t=$n(r.value),s=n.fields[o],i=ii(s,t);return a.values[o]=t,a.touched[o]=!0,i?a.errors[o]=i:delete a.errors[o],e.global.pendingEffects.push({name:"render"}),e},cI=({state:e,rollbackActionBatchStack:r},n={})=>{let o=Pi(e,n);if(!o)return{submitted:!1,valid:!1,reason:"inactive"};let a=Ac(e,o.key);a.submitted=!0;let t={},s={};if(Object.entries(o.fields).forEach(([m,d])=>{let f=Object.prototype.hasOwnProperty.call(a.values,m)?a.values[m]:d.value,y=ii(d,f);a.touched[m]=!0,y&&(s[m]=y),t[m]=vc(d,f)}),a.errors=s,Object.keys(s).length>0)return e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!1,errors:L(s),form:{id:o.id,key:o.key,values:L(t)}};let i=e.contexts[e.contexts.length-1];if(i?.rollback?.isRestoring)return{submitted:!1,valid:!1,reason:"restoring"};let l=!1,u=[],c=[];Object.entries(o.fields).forEach(([m,d])=>{let{scope:f}=oI(e,d),y=f==="context"?i.variables:e.global.variables,g=t[m];y[d.variableId]=gn(y[d.variableId],"set",g),f==="context"&&(l=!0,c.push({variableId:d.variableId,op:"set",value:g})),(f==="device"||f==="account")&&u.push({scope:f,path:`variables.${d.variableId}`,op:"set",value:L(y[d.variableId])})}),l&&We(e,"updateVariable",{id:"submitForm",operations:c},r),Ln(e,u);let p=iI(o,t);return aI(e),delete e.global.formDrafts[o.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:p}},uI=({state:e},r={})=>{let n=Pi(e,r);return n?(delete e.global.formDrafts?.[n.key],e.global.pendingEffects.push({name:"render"}),{cancelled:!0,form:{id:n.id,key:n.key,values:L(n.values),fields:L(n.fields),fieldList:L(n.fieldList)}}):{cancelled:!1,reason:"inactive"}},pI=({state:e,rollbackActionBatchStack:r},n)=>{let{id:o,operations:a=[]}=n;if(!o)throw new Error("updateVariable requires an id field");if(typeof o!="string"||!/^[a-zA-Z0-9]+$/.test(o))throw new Error(`updateVariable id must be alphanumeric, got: "${o}"`);let t=e.contexts[e.contexts.length-1];if(t?.rollback?.isRestoring)return e;let s=!1,i=[],l=[];return a.forEach(({variableId:u,op:c,value:p,roundTo:m})=>{let d=e.projectData.resources?.variables?.[u],f=d?.scope,y=d?.type;if($e(d))throw new Error(`Cannot update computed variable: ${u}`);if(d?.readonly===!0)throw new Error(`Cannot update readonly variable: ${u}`);if(kt(f,u),vt(y,c,u),hn(y,c,p,u,{roundTo:m}),de(e)&&f!=="context")throw new Error(`Cannot update ${f}-scoped variable "${u}" while a scene replay is active`);let g=f==="context"?t.variables:e.global.variables;if(f==="context"){s=!0;let h={variableId:u,op:c,value:p};m!==void 0&&(h.roundTo=m),l.push(h)}g[u]=gn(g[u],c,p,{roundTo:m}),(f==="device"||f==="account")&&i.push({scope:f,path:`variables.${u}`,op:"set",value:L(g[u])})}),s&&We(e,"updateVariable",{id:o,operations:l},r),Ln(e,i),e.global.pendingEffects.push({name:"render"}),e},Ve=e=>(r,n)=>e({state:r},n),dI=e=>({variables:Wr({variables:{...e.global?.variables??{},...vr(e)?.variables??{}},runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:hr(e)}),fI=e=>{if(!M(e))throw new Error("conditional action payload must be an object");if(!Array.isArray(e.branches))throw new Error("conditional action requires branches array");if(e.branches.length===0)throw new Error("conditional action requires at least one branch")},mI=(e,r,n)=>{if(!M(e))throw new Error(`conditional branch at index ${r} must be an object`);if(!M(e.actions))throw new Error(`conditional branch at index ${r} requires actions object`);if(!Object.prototype.hasOwnProperty.call(e,"when")&&r!==n-1)throw new Error("conditional else branch must be the last branch")},yI=(e,r)=>{fI(r);for(let n=0;n<r.branches.length;n+=1){let o=r.branches[n];if(mI(o,n,r.branches.length),!(Object.prototype.hasOwnProperty.call(o,"when")&&!ht(o.when,dI(e)))){Object.entries(o.actions).forEach(([t,s])=>{uu(e,t,s)});return}}},hI={conditional:{replayLine:yI},updateVariable:{recordSources:[Ir],replayLine:Ql,replayRecorded:Ql,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Ve(cu)},setSaveLoadPagination:{recordSources:[Ir],replayLine:Ve(zo),replayRecorded:Ve(zo),persistInSaveSlot:!0},incrementSaveLoadPagination:{recordSources:[Ir],replayLine:Ve(Yo),replayRecorded:Ve(Yo),persistInSaveSlot:!0},decrementSaveLoadPagination:{recordSources:[Ir],replayLine:Ve(Go),replayRecorded:Ve(Go),persistInSaveSlot:!0},setMenuPage:{recordSources:[Ir],replayLine:Ve(Ho),replayRecorded:Ve(Ho),persistInSaveSlot:!0},setMenuEntryPoint:{recordSources:[Ir],replayLine:Ve(Xo),replayRecorded:Ve(Xo),persistInSaveSlot:!0},finishSceneReplay:{replayLine:Ve(ou)}},Vn=e=>hI[e]??null,gI=e=>Vn(e)?.persistInSaveSlot===!0,bI=(e,r)=>{let n=Vn(e)?.recordSources;return Array.isArray(n)&&n.includes(r)},II=(e,r,n)=>{Vn(r)?.replayRecorded?.(e,n)},uu=(e,r,n)=>{Vn(r)?.replayLine?.(e,n)},wI=e=>e?.returnable!==!1,pu=(e,r)=>{if(r>=0)return e.currentIndex+r;let n=Math.abs(r);for(let o=e.currentIndex-1;o>=0;o-=1)if(wI(e.timeline[o])&&(n-=1,n===0))return o;return-1},du=({state:e},r)=>{let{offset:n}=r;if(n===void 0||typeof n!="number")return console.warn("selectLineIdByOffset requires a numeric offset"),null;let o=e.contexts[e.contexts.length-1];if(!o)return null;let a=o.rollback;if(!Array.isArray(a?.timeline)||typeof a?.currentIndex!="number")return null;let t=pu(a,n);if(t<0||t>=a.timeline.length)return null;let s=a.timeline[t];return{sectionId:s.sectionId,lineId:s.lineId}},fu=({state:e})=>du({state:e},{offset:-1})!==null,kI=({state:e},r)=>{let{offset:n=-1}=r;if(n>=0)throw new Error("rollbackByOffset requires a negative offset");let o=e.contexts?.[e.contexts.length-1];if(!o)return e;let a=Ar(o,{compatibilityAnchor:!o.rollback}),t=pu(a,n);return t<0||t>=a.timeline.length?e:Oc(e,t)},vI=({state:e},r)=>{let{sectionId:n,lineId:o}=r,a=e.contexts[e.contexts.length-1];if(!a)throw new Error("No context available for rollbackToLine");let t=Ar(a,{compatibilityAnchor:!a.rollback}),i=t.timeline.slice(0,t.currentIndex+1).findLastIndex(l=>l.sectionId===n&&l.lineId===o);if(i===-1)throw new Error(`Line ${o} not found in section ${n} rollback timeline`);return i===t.currentIndex?e:Oc(e,i)},AI=()=>({lineEntryId:1,autoSessionId:0,skipSessionId:0,rollbackAuthoredSuppression:null}),Vo=(e,r)=>{let n=e[r];if(!Number.isSafeInteger(n)||n<0)throw new RangeError(`Internal playback ${r} is invalid`);if(n===Number.MAX_SAFE_INTEGER)throw new RangeError(`Internal playback ${r} is exhausted`);return e[r]=n+1,e[r]},ec=e=>e.contexts?.[e.contexts.length-1]?.pointers?.read??null,rc=e=>{let r=e.contexts?.[e.contexts.length-1];return Number.isInteger(r?.rollback?.currentIndex)?r.rollback.currentIndex:null},PI=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,mu=e=>{let r=e.global?.nextLineConfig?.auto;return r?.enabled!==!0?{enabled:!1}:{enabled:!0,trigger:r.trigger==="fromStart"?"fromStart":"fromComplete",delayMs:r.delay??1e3}},xi=e=>JSON.stringify(mu(e)),xI=({actionName:e,args:r,state:n,previousState:o})=>{let a=ec(o),t=ec(n);if(!PI(a,t)||o.contexts?.length!==n.contexts?.length||(e==="rollbackByOffset"||e==="rollbackToLine")&&rc(o)!==rc(n))return!0;let s=r[0]??{};if(e==="jumpToLine"){let i=s.sectionId??a?.sectionId;return typeof s.lineId=="string"&&t?.sectionId===i&&t?.lineId===s.lineId&&n.global.isLineCompleted===!1}if(e==="sectionTransition"||e==="resetStoryAtSection"){let i=Xe(n.projectData,s.sectionId).section,l=Xc(i)?.id;return typeof l=="string"&&t?.sectionId===s.sectionId&&t?.lineId===l&&n.global.isLineCompleted===!1}if(e==="loadSlot"){let i=s.slotId;return Object.prototype.hasOwnProperty.call(o.global?.saveSlots??{},Vr(i))}return!1},EI=({actionName:e,args:r,state:n,transactionalMetadata:o,previousState:a})=>{if(xI({actionName:e,args:r,state:n,previousState:a})){let c=Vo(o,"lineEntryId");e==="rollbackByOffset"||e==="rollbackToLine"?o.rollbackAuthoredSuppression={lineEntryId:c,configKey:xi(n)}:o.rollbackAuthoredSuppression=null}let s=(a.contexts?.length??0)>(n.contexts?.length??0),i=e==="startAutoMode"||e==="startSkipMode"?Ae({state:a}):null;n.global.autoMode===!0&&(e==="startAutoMode"&&!i||e==="toggleAutoMode"&&a.global.autoMode!==!0||s&&a.global.autoMode!==!0)&&Vo(o,"autoSessionId"),n.global.skipMode===!0&&(e==="startSkipMode"&&!i||e==="toggleSkipMode"&&a.global.skipMode!==!0||s&&a.global.skipMode!==!0)&&Vo(o,"skipSessionId")},SI=({state:e,transactionalMetadata:r})=>{let n=r.rollbackAuthoredSuppression;n&&(n.lineEntryId!==r.lineEntryId||n.configKey!==xi(e))&&(r.rollbackAuthoredSuppression=null)},RI=({state:e,playbackOwnership:r})=>{let n=Ae({state:e}),o=r.lineEntryId,a=!n&&e.global.autoMode===!0&&e.global.isLineCompleted===!0,t=!n&&e.global.skipMode===!0,s=mu(e),i=r.rollbackAuthoredSuppression,l=!n&&s.enabled&&(s.trigger==="fromStart"||e.global.isLineCompleted===!0)&&!(i?.lineEntryId===o&&i.configKey===xi(e)),u=a?Bc(e):null;return{auto:a?{owner:{sessionId:r.autoSessionId,lineEntryId:o},delayMs:qo({text:u,baseDelay:He(e,"autoForwardDelay"),speed:He(e,"autoForwardSpeed")}),contentKey:u}:null,skip:t?{owner:{sessionId:r.skipSessionId},delayMs:80}:null,authored:l?{owner:{lineEntryId:o},delayMs:s.delayMs,trigger:s.trigger}:null}},OI=({playbackOwnership:e})=>e.lineEntryId,yu=(e,r={})=>{let n=kg(e),o=[],a=r.createPlaybackOwnership??AI;if(typeof a!="function")throw new TypeError("createPlaybackOwnership must be a function");return xa(n,{selectPendingEffects:Ag,selectSkipMode:Cc,selectAutoMode:Pg,selectIsChoiceVisible:qc,selectIsFormVisible:Rg,selectActiveInteraction:Ae,selectActiveForm:Dt,selectDialogueUIHidden:$c,selectDialogueHistory:_c,selectConfirmDialog:Sg,selectIsLineAccountViewed:di,selectIsResourceAccountViewed:Cg,selectImageGalleryConfig:$g,selectImageGallery:Tc,selectMusicRoomConfig:Tg,selectMusicRoom:Nc,selectSceneReplayConfig:jg,selectSceneReplay:Lc,selectIsSceneReplayActive:Ng,selectActiveSceneReplayEntry:Dg,selectNextLineConfig:Lg,selectSystemState:Mg,selectAchievements:qg,selectAchievement:Vg,selectSaveSlotMap:Vc,selectSaveSlots:Gg,selectSaveSlot:Fg,selectLocalizationPackages:Fc,selectRuntime:wi,selectRuntimeValue:Ug,selectAllVariables:ki,selectCurrentPointer:_e,selectSection:ve,selectCurrentLine:Lt,selectPresentationState:Uc,selectAutoForwardTimerDelay:or,selectPresentationChanges:Bg,selectSectionLineChanges:Yg,selectSaveSlotPage:vi,selectCurrentPageSlots:Hg,selectRenderState:Wg,selectOverlayStack:vg,selectLineIdByOffset:du,selectCanRollback:fu,selectRollbackCursor:fg,selectDesiredPlaybackTimers:RI,selectPlaybackLineEntryId:OI,startAutoMode:Yc,stopAutoMode:qt,toggleAutoMode:nb,startSkipMode:Gc,stopSkipMode:kr,toggleSkipMode:sb,showDialogueUI:Dn,hideDialogueUI:Hc,toggleDialogueUI:ob,setDialogueTextSpeed:ib,setAutoForwardDelay:ab,setAutoForwardSpeed:lb,setSkipUnseenText:cb,setSkipTransitionsAndAnimations:ub,setSoundVolume:pb,setMusicVolume:db,setMuteAll:fb,setSaveLoadPagination:zo,incrementSaveLoadPagination:Yo,decrementSaveLoadPagination:Go,setMenuPage:Ho,setMenuEntryPoint:Xo,showConfirmDialog:Kg,hideConfirmDialog:Jg,resetStoryAtSection:bb,clearPendingEffects:mb,appendPendingEffect:yb,completeAchievement:hb,setAchievementProgress:gb,beginRollbackActionBatch:gg,endRollbackActionBatch:bg,markRollbackCheckpointTransient:mg,markSavedRollbackCheckpointTransient:yg,recordCurrentDialogueHistory:Eg,addViewedLine:wb,addViewedResource:kb,showImageGalleryVariant:vb,moveToPreviousImageGalleryVariant:Ab,moveToNextImageGalleryVariant:Pb,clearImageGallerySelection:xb,moveToImageGalleryPage:Eb,moveToNextImageGalleryPage:Sb,moveToPreviousImageGalleryPage:Rb,playMusicRoomTrack:Cb,playMusicRoom:$b,pauseMusicRoom:_b,stopMusicRoom:Tb,seekMusicRoom:jb,playPreviousMusicRoomTrack:Nb,playNextMusicRoomTrack:Db,clearMusicRoomSelection:Lb,moveToMusicRoomPage:Mb,moveToNextMusicRoomPage:qb,moveToPreviousMusicRoomPage:Vb,musicRoomSoundReady:Gb,musicRoomSoundProgress:Hb,musicRoomSoundComplete:Xb,musicRoomSoundError:Wb,startSceneReplay:Fb,finishSceneReplay:ou,exitSceneReplay:Ub,moveToSceneReplayPage:Bb,moveToNextSceneReplayPage:zb,moveToPreviousSceneReplayPage:Yb,setNextLineConfig:cu,saveSlot:Kb,loadSlot:Jb,updateProjectData:Qb,updateLocalizationPackage:Zb,sectionTransition:nI,jumpToLine:eI,nextLine:rI,markLineCompleted:tI,rollbackToLine:vI,rollbackByOffset:kI,pushOverlay:Qg,popOverlay:Zg,replaceLastOverlay:eb,clearOverlays:rb,updateFormField:lI,submitForm:cI,cancelForm:uI,updateVariable:pI,nextLineFromSystem:sI},{createTransactionalMetadata:a,updateTransactionalMetadata:EI,finalizeTransactionalMetadata:SI,transformActionFirstArgument:(s,i)=>({state:s,rollbackActionBatchStack:o,playbackOwnership:i}),transformSelectorFirstArgument:(s,i)=>({state:s,playbackOwnership:i})})};var CI="route-engine",$I="projectPersistence";var gu=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),me=e=>Object.prototype.toString.call(e)==="[object Object]",hu="variables.",_I=(e={})=>{let r=me(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!me(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lineId=="string"?{lineId:n.lineId}:{}}).filter(Boolean),resources:(Array.isArray(r.resources)?r.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!me(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},TI=(e={})=>{let r=me(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!me(n)||typeof n.sectionId!="string"||n.sectionId.length===0?null:{sectionId:n.sectionId,...typeof n.lastLineId=="string"?{lastLineId:n.lastLineId}:{}}).filter(Boolean),resources:(Array.isArray(r.resources)?r.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!me(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},jI=(e,r)=>{let n=TI(e),o=_I(r),a=n.sections.map(s=>({...s})),t=n.resources.map(s=>({...s}));return o.sections.forEach(s=>{let i=a.find(l=>l.sectionId===s.sectionId);if(!i){a.push({sectionId:s.sectionId,...s.lineId===void 0?{}:{lastLineId:s.lineId}});return}if(i.lastLineId!==void 0){if(s.lineId===void 0){delete i.lastLineId;return}i.lastLineId=s.lineId}}),o.resources.forEach(s=>{t.find(l=>l.resourceId===s.resourceId)||t.push({...s})}),{sections:a,resources:t}},NI=(e={})=>{let r=me(e)?e:{},n=Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set(n.filter(o=>typeof o=="string"&&o.length>0))]}},DI=(e,r)=>{let n=NI(e),o=me(r)&&Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...o.filter(a=>typeof a=="string"&&a.length>0)])]}},bu=(e={})=>{let r=me(e)?e:{};return{saveSlots:me(r.saveSlots)?r.saveSlots:{},globalDeviceVariables:me(r.globalDeviceVariables)?r.globalDeviceVariables:{},globalAccountVariables:me(r.globalAccountVariables)?r.globalAccountVariables:{},globalRuntime:me(r.globalRuntime)?r.globalRuntime:{},accountViewedRegistry:me(r.accountViewedRegistry)?r.accountViewedRegistry:{},accountReplayRegistry:me(r.accountReplayRegistry)?r.accountReplayRegistry:{}}},LI=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((r,n)=>{if(!me(r))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let o=r.path?.startsWith(hu)?r.path.slice(hu.length):null;if(o!==null){if(!["device","account"].includes(r.scope))throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(o.length===0)throw new Error(`Malformed applyScopedDataUpdates path "${r.path}" at updates[${n}].`);if(r.op!=="set")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return{scope:r.scope,path:r.path,op:r.op,value:r.value,variableId:o}}if(r.path==="viewedRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="markViewed")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return r}if(r.path==="replayRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="unlock")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);if(!me(r.value)||!Array.isArray(r.value.sceneIds)||r.value.sceneIds.length===0||r.value.sceneIds.some(a=>typeof a!="string"||a.length===0))throw new Error(`Malformed applyScopedDataUpdates replayRegistry value at updates[${n}].`);return{...r,value:{sceneIds:[...new Set(r.value.sceneIds)]}}}throw typeof r.path!="string"?new Error(`Malformed applyScopedDataUpdates path at updates[${n}].`):new Error(`Unsupported applyScopedDataUpdates path "${r.path}" at updates[${n}].`)})},MI=(e,r)=>{let n={};return LI(r).forEach(o=>{if(o.path==="viewedRegistry"){n.accountViewedRegistry=jI(n.accountViewedRegistry??e.accountViewedRegistry,o.value);return}if(o.path==="replayRegistry"){n.accountReplayRegistry=DI(n.accountReplayRegistry??e.accountReplayRegistry,o.value);return}let a=o.scope==="device"?"globalDeviceVariables":"globalAccountVariables";n[a]={...e[a],...n[a],[o.variableId]:o.value}}),n},at=e=>{if(typeof e!="string")return null;let r=e.trim();return r.length>0?r:null},qI=e=>{let r=at(e);if(!r)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return r},VI=e=>{let r=e??globalThis.indexedDB;if(!r)throw new Error("IndexedDB is not available in this environment.");return r},FI=({indexedDB:e,databaseName:r,objectStoreName:n})=>new Promise((o,a)=>{let t=e.open(r,1);t.onupgradeneeded=()=>{let s=t.result;s.objectStoreNames.contains(n)||s.createObjectStore(n,{keyPath:"namespace"})},t.onsuccess=()=>{o(t.result)},t.onerror=()=>{a(t.error??new Error(`Failed to open IndexedDB database "${r}".`))}}),UI=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let l=o.transaction(r,"readonly").objectStore(r).get(n);l.onsuccess=()=>{a(l.result??null)},l.onerror=()=>{t(l.error??new Error(`Failed to read persisted namespace "${n}" from IndexedDB.`))}})},Ft=async({databasePromise:e,objectStoreName:r,namespace:n,patch:o})=>{let a=await e;return new Promise((t,s)=>{let i=a.transaction(r,"readwrite"),l=i.objectStore(r),u=l.get(n),c=!1,p=d=>{c||(c=!0,s(d))},m=()=>{c||(c=!0,t())};u.onerror=()=>{p(u.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},u.onsuccess=()=>{let d=bu(u.result),f=typeof o=="function"?o(d):o,y={namespace:n,version:1,...gu(),...d,...f},g=l.put(y);g.onerror=()=>{p(g.error??new Error(`Failed to persist namespace "${n}" to IndexedDB.`))}},i.oncomplete=()=>{m()},i.onerror=()=>{p(i.error??new Error(`IndexedDB transaction failed while updating namespace "${n}".`))},i.onabort=()=>{p(i.error??new Error(`IndexedDB transaction aborted while updating namespace "${n}".`))}})},BI=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let s=o.transaction(r,"readwrite"),l=s.objectStore(r).delete(n),u=!1,c=m=>{u||(u=!0,t(m))},p=()=>{u||(u=!0,a())};l.onerror=()=>{c(l.error??new Error(`Failed to clear persisted namespace "${n}" from IndexedDB.`))},s.oncomplete=()=>{p()},s.onerror=()=>{c(s.error??new Error(`IndexedDB transaction failed while clearing namespace "${n}".`))},s.onabort=()=>{c(s.error??new Error(`IndexedDB transaction aborted while clearing namespace "${n}".`))}})},Ei=(e={})=>{let{indexedDB:r,databaseName:n=CI,objectStoreName:o=$I,namespace:a}=e,t=VI(r),s=qI(a),i=FI({indexedDB:t,databaseName:n,objectStoreName:o});return{namespace:s,load:async()=>{let l=await UI({databasePromise:i,objectStoreName:o,namespace:s});return{...gu(),...bu(l)}},clear:async()=>BI({databasePromise:i,objectStoreName:o,namespace:s}),saveSlots:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{saveSlots:me(l)?l:{}}}),saveGlobalDeviceVariables:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalDeviceVariables:me(l)?l:{}}}),saveGlobalAccountVariables:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalAccountVariables:me(l)?l:{}}}),saveGlobalRuntime:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalRuntime:me(l)?l:{}}}),applyScopedDataUpdates:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:u=>MI(u,l)})}},zI=Ei;var Eu=Su;var YI={type:"object",properties:{resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"},colorId:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},ar=Object.prototype.hasOwnProperty,GI={anyOf:[{type:"null"},{type:"object",properties:{x:{type:"number",minimum:0},y:{type:"number",minimum:0},quality:{type:"number",minimum:1},kernelSize:{type:"integer",enum:[5,7,9,11,13,15]},repeatEdgePixels:{type:"boolean"}},required:["x","y"],additionalProperties:!1}]};function Ne(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=s;if(e!==null){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"null"},message:"must be null"};t===null?t=[p]:t.push(p),s++}var c=u===s;if(l=l||c,!l){let p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.x===void 0){let d={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"x"},message:"must have required property 'x'"};t===null?t=[d]:t.push(d),s++}if(e.y===void 0){let d={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"y"},message:"must have required property 'y'"};t===null?t=[d]:t.push(d),s++}for(let d in e)if(!(d==="x"||d==="y"||d==="quality"||d==="kernelSize"||d==="repeatEdgePixels")){let f={instancePath:r,schemaPath:"#/anyOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(e.x!==void 0){let d=e.x;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.y!==void 0){let d=e.y;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.quality!==void 0){let d=e.quality;if(typeof d=="number"){if(d<1||isNaN(d)){let f={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.kernelSize!==void 0){let d=e.kernelSize;if(!(typeof d=="number"&&!(d%1)&&!isNaN(d))){let f={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[f]:t.push(f),s++}if(!(d===5||d===7||d===9||d===11||d===13||d===15)){let f={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/enum",keyword:"enum",params:{allowedValues:GI.anyOf[1].properties.kernelSize.enum},message:"must be equal to one of the allowed values"};t===null?t=[f]:t.push(f),s++}}if(e.repeatEdgePixels!==void 0&&typeof e.repeatEdgePixels!="boolean"){let d={instancePath:r+"/repeatEdgePixels",schemaPath:"#/anyOf/1/properties/repeatEdgePixels/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}var c=p===s;l=l||c}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return Ne.errors=t,s===0}var HI={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};function Un(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="continuity"||i==="speed"||i==="loop")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.continuity!==void 0){let i=e.continuity;if(typeof i!="string"){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="render"||i==="persistent")){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/enum",keyword:"enum",params:{allowedValues:HI.properties.continuity.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.speed!==void 0){let i=e.speed;if(typeof i=="number"){if(i<=0||isNaN(i)){let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Un.errors=t,s===0}function ie(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="resourceId"||i==="playback")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.playback!==void 0&&(Un(e.playback,{instancePath:r+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(t=t===null?Un.errors:t.concat(Un.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ie.errors=t,s===0}function Bn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!ar.call(YI.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationName!==void 0&&typeof e.animationName!="string"){let i={instancePath:r+"/animationName",schemaPath:"#/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationSpeed!==void 0&&typeof e.animationSpeed!="number"){let i={instancePath:r+"/animationSpeed",schemaPath:"#/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.colorId!==void 0&&typeof e.colorId!="string"){let i={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.transformId!==void 0&&typeof e.transformId!="string"){let i={instancePath:r+"/transformId",schemaPath:"#/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.x!==void 0&&typeof e.x!="number"){let i={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.y!==void 0&&typeof e.y!="number"){let i={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(Ne(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)),e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Bn.errors=t,s===0}function Su(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Bn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Bn.errors:t.concat(Bn.errors),s=t.length),Su.errors=t,s===0}var Ru=Ou;var XI={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0}},allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}}],additionalProperties:!1},ku={type:"object",properties:{id:{type:"string",minLength:1},resourceId:{type:"string",minLength:1},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["id","resourceId"],additionalProperties:!1},je=wu().default;function Te(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[i]:t.push(i),s++}if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!ar.call(ku.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0){let i=e.id;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.resourceId!==void 0){let i=e.resourceId;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:ku.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Te.errors=t,s===0}function zn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let d;if(e.resourceId===void 0&&(d="resourceId")||e.sounds===void 0&&(d="sounds")){let f={};t===null?t=[f]:t.push(f),s++}}var u=l===s;if(u){let d={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=i,t!==null&&(i?t.length=i:t=null);let c=s,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let d;if(e.startDelayMs===void 0&&(d="startDelayMs")||e.sounds===void 0&&(d="sounds")){let f={};t===null?t=[f]:t.push(f),s++}}var m=p===s;if(m){let d={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=c,t!==null&&(c?t.length=c:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let d in e)if(!(d==="sounds"||d==="resourceId"||d==="loop"||d==="interruption"||d==="volume"||d==="muted"||d==="pan"||d==="startDelayMs")){let f={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(e.sounds!==void 0){let d=e.sounds;if(Array.isArray(d)){let f=d.length;for(let y=0;y<f;y++)Te(d[y],{instancePath:r+"/sounds/"+y,parentData:d,parentDataProperty:y,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let f={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let d={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let d={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.interruption!==void 0){let d=e.interruption;if(typeof d!="string"){let f={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(!(d==="immediate"||d==="loopEnd")){let f={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:XI.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[f]:t.push(f),s++}}if(e.volume!==void 0){let d=e.volume;if(typeof d=="number"){if(d>100||isNaN(d)){let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[f]:t.push(f),s++}if(d<0||isNaN(d)){let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let d={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.pan!==void 0){let d=e.pan;if(typeof d=="number"){if(d>1||isNaN(d)){let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[f]:t.push(f),s++}if(d<-1||isNaN(d)){let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.startDelayMs!==void 0){let d=e.startDelayMs;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}}else{let d={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}return zn.errors=t,s===0}function Ou(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return zn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?zn.errors:t.concat(zn.errors),s=t.length),Ou.errors=t,s===0}var Cu=$u;var WI={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},sprites:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{if:{required:["sprites"]},then:{required:["transformId"]}}],additionalProperties:!1}}},additionalProperties:!1};function Yn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let u={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let u=l.length;for(let c=0;c<u;c++){let p=l[c],m=s,d=!0,f=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let y;if(p.sprites===void 0&&(y="sprites")){let g={};t===null?t=[g]:t.push(g),s++}}var i=f===s;if(s=m,t!==null&&(m?t.length=m:t=null),i){let y=s;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.transformId===void 0){let h={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/allOf/0/then/required",keyword:"required",params:{missingProperty:"transformId"},message:"must have required property 'transformId'"};t===null?t=[h]:t.push(h),s++}var i=y===s;d=i}if(!d){let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[y]:t.push(y),s++}if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[y]:t.push(y),s++}for(let y in p)if(!ar.call(WI.properties.items.items.properties,y)){let g={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};t===null?t=[g]:t.push(g),s++}if(p.id!==void 0&&typeof p.id!="string"){let y={instancePath:r+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.transformId!==void 0&&typeof p.transformId!="string"){let y={instancePath:r+"/items/"+c+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.x!==void 0&&typeof p.x!="number"){let y={instancePath:r+"/items/"+c+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.y!==void 0&&typeof p.y!="number"){let y={instancePath:r+"/items/"+c+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let y={instancePath:r+"/items/"+c+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let y={instancePath:r+"/items/"+c+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let y={instancePath:r+"/items/"+c+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let y={instancePath:r+"/items/"+c+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let y={instancePath:r+"/items/"+c+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let y={instancePath:r+"/items/"+c+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let y={instancePath:r+"/items/"+c+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.opacity!==void 0){let y=p.opacity;if(typeof y=="number"){if(y>1||isNaN(y)){let g={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[g]:t.push(g),s++}if(y<0||isNaN(y)){let g={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[g]:t.push(g),s++}}if(p.blur!==void 0&&(Ne(p.blur,{instancePath:r+"/items/"+c+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)),p.sprites!==void 0){let y=p.sprites;if(Array.isArray(y)){let g=y.length;for(let h=0;h<g;h++){let w=y[h];if(w&&typeof w=="object"&&!Array.isArray(w)){for(let b in w)if(!(b==="id"||b==="resourceId"||b==="animationName"||b==="animationSpeed"||b==="loop")){let E={instancePath:r+"/items/"+c+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(w.id!==void 0&&typeof w.id!="string"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/id",schemaPath:"#/properties/items/items/properties/sprites/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.resourceId!==void 0&&typeof w.resourceId!="string"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/resourceId",schemaPath:"#/properties/items/items/properties/sprites/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.animationName!==void 0&&typeof w.animationName!="string"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/animationName",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.animationSpeed!==void 0&&typeof w.animationSpeed!="number"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/animationSpeed",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(w.loop!==void 0&&typeof w.loop!="boolean"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/loop",schemaPath:"#/properties/items/items/properties/sprites/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/items/"+c+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}}}else{let g={instancePath:r+"/items/"+c+"/sprites",schemaPath:"#/properties/items/items/properties/sprites/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[g]:t.push(g),s++}}p.animations!==void 0&&(ie(p.animations,{instancePath:r+"/items/"+c+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[y]:t.push(y),s++}}}else{let u={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return Yn.errors=t,s===0}function $u(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Yn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Yn.errors:t.concat(Yn.errors),s=t.length),$u.errors=t,s===0}var _u=Tu;function Gn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="items"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.items!==void 0){let i=e.items;if(Array.isArray(i)){let l=i.length;for(let u=0;u<l;u++){let c=i[u];if(c&&typeof c=="object"&&!Array.isArray(c)){for(let p in c)if(!(p==="id"||p==="content"||p==="events")){let m={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(c.id!==void 0&&typeof c.id!="string"){let p={instancePath:r+"/items/"+u+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}if(c.content!==void 0&&typeof c.content!="string"){let p={instancePath:r+"/items/"+u+"/content",schemaPath:"#/properties/items/items/properties/content/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}if(c.events!==void 0){let p=c.events;if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.click!==void 0){let m=p.click;if(!(m&&typeof m=="object"&&!Array.isArray(m))){let d={instancePath:r+"/items/"+u+"/events/click",schemaPath:"#/properties/items/items/properties/events/properties/click/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let m={instancePath:r+"/items/"+u+"/events",schemaPath:"#/properties/items/items/properties/events/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Gn.errors=t,s===0}function Tu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Gn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Gn.errors:t.concat(Gn.errors),s=t.length),Tu.errors=t,s===0}var ju=Nu;function Hn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(i!=="mode"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.mode!==void 0&&typeof e.mode!="string"){let i={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Hn.errors=t,s===0}function Nu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Hn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Hn.errors:t.concat(Hn.errors),s=t.length),Nu.errors=t,s===0}var Du=Lu;function Xn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="resourceId"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Xn.errors=t,s===0}function Lu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Xn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Xn.errors:t.concat(Xn.errors),s=t.length),Lu.errors=t,s===0}var Mu=qu;var vu={type:"object",properties:{ui:{type:"object",properties:{resourceId:{type:"string"},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1},mode:{type:"string",enum:["adv","nvl"]},content:{type:"array",items:{type:"object",properties:{text:{type:"string"}}}},textSpeed:{type:"number"},append:{type:"boolean"},characterId:{type:"string"},characterName:{type:"string"},persistCharacter:{type:"boolean"},persistSprite:{type:"boolean"},character:{type:"object",properties:{name:{type:"string"},sprite:{type:"object",properties:{transformId:{type:"string"},items:{type:"array",items:{type:"object",properties:{id:{type:"string"},resourceId:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},loop:{type:"boolean"}},required:["id","resourceId"],additionalProperties:!1}},animations:{$ref:"#/definitions/animationSelection"}},additionalProperties:!1}},additionalProperties:!1},clear:{type:"boolean"},clearPage:{type:"boolean"}},additionalProperties:!1};function Wn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!ar.call(vu.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.ui!==void 0){let i=e.ui;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(!(l==="resourceId"||l==="animations")){let u={instancePath:r+"/ui",schemaPath:"#/properties/ui/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(i.resourceId!==void 0&&typeof i.resourceId!="string"){let l={instancePath:r+"/ui/resourceId",schemaPath:"#/properties/ui/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}i.animations!==void 0&&(ie(i.animations,{instancePath:r+"/ui/animations",parentData:i,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let l={instancePath:r+"/ui",schemaPath:"#/properties/ui/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.mode!==void 0){let i=e.mode;if(typeof i!="string"){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="adv"||i==="nvl")){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:vu.properties.mode.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.content!==void 0){let i=e.content;if(Array.isArray(i)){let l=i.length;for(let u=0;u<l;u++){let c=i[u];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.text!==void 0&&typeof c.text!="string"){let p={instancePath:r+"/content/"+u+"/text",schemaPath:"#/properties/content/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}}else{let p={instancePath:r+"/content/"+u,schemaPath:"#/properties/content/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/content",schemaPath:"#/properties/content/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}if(e.textSpeed!==void 0&&typeof e.textSpeed!="number"){let i={instancePath:r+"/textSpeed",schemaPath:"#/properties/textSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.append!==void 0&&typeof e.append!="boolean"){let i={instancePath:r+"/append",schemaPath:"#/properties/append/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.characterId!==void 0&&typeof e.characterId!="string"){let i={instancePath:r+"/characterId",schemaPath:"#/properties/characterId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.characterName!==void 0&&typeof e.characterName!="string"){let i={instancePath:r+"/characterName",schemaPath:"#/properties/characterName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.persistCharacter!==void 0&&typeof e.persistCharacter!="boolean"){let i={instancePath:r+"/persistCharacter",schemaPath:"#/properties/persistCharacter/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.persistSprite!==void 0&&typeof e.persistSprite!="boolean"){let i={instancePath:r+"/persistSprite",schemaPath:"#/properties/persistSprite/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.character!==void 0){let i=e.character;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(!(l==="name"||l==="sprite")){let u={instancePath:r+"/character",schemaPath:"#/properties/character/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(i.name!==void 0&&typeof i.name!="string"){let l={instancePath:r+"/character/name",schemaPath:"#/properties/character/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(i.sprite!==void 0){let l=i.sprite;if(l&&typeof l=="object"&&!Array.isArray(l)){for(let u in l)if(!(u==="transformId"||u==="items"||u==="animations")){let c={instancePath:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(l.transformId!==void 0&&typeof l.transformId!="string"){let u={instancePath:r+"/character/sprite/transformId",schemaPath:"#/properties/character/properties/sprite/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}if(l.items!==void 0){let u=l.items;if(Array.isArray(u)){let c=u.length;for(let p=0;p<c;p++){let m=u[p];if(m&&typeof m=="object"&&!Array.isArray(m)){if(m.id===void 0){let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[d]:t.push(d),s++}if(m.resourceId===void 0){let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[d]:t.push(d),s++}for(let d in m)if(!(d==="id"||d==="resourceId"||d==="animationName"||d==="animationSpeed"||d==="loop")){let f={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(m.id!==void 0&&typeof m.id!="string"){let d={instancePath:r+"/character/sprite/items/"+p+"/id",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(m.resourceId!==void 0&&typeof m.resourceId!="string"){let d={instancePath:r+"/character/sprite/items/"+p+"/resourceId",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(m.animationName!==void 0&&typeof m.animationName!="string"){let d={instancePath:r+"/character/sprite/items/"+p+"/animationName",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(m.animationSpeed!==void 0&&typeof m.animationSpeed!="number"){let d={instancePath:r+"/character/sprite/items/"+p+"/animationSpeed",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[d]:t.push(d),s++}if(m.loop!==void 0&&typeof m.loop!="boolean"){let d={instancePath:r+"/character/sprite/items/"+p+"/loop",schemaPath:"#/properties/character/properties/sprite/properties/items/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let c={instancePath:r+"/character/sprite/items",schemaPath:"#/properties/character/properties/sprite/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[c]:t.push(c),s++}}l.animations!==void 0&&(ie(l.animations,{instancePath:r+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let u={instancePath:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r+"/character",schemaPath:"#/properties/character/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.clear!==void 0&&typeof e.clear!="boolean"){let i={instancePath:r+"/clear",schemaPath:"#/properties/clear/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.clearPage!==void 0&&typeof e.clearPage!="boolean"){let i={instancePath:r+"/clearPage",schemaPath:"#/properties/clearPage/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Wn.errors=t,s===0}function qu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Wn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Wn.errors:t.concat(Wn.errors),s=t.length),qu.errors=t,s===0}var Vu=Fu;function Kn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="id"||i==="resourceId"||i==="fields"||i==="submitActions"||i==="cancelActions"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0&&typeof e.id!="string"){let i={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fields!==void 0){let i=e.fields;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.variableId===void 0){let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/required",keyword:"required",params:{missingProperty:"variableId"},message:"must have required property 'variableId'"};t===null?t=[c]:t.push(c),s++}for(let c in u)if(!(c==="variableId"||c==="required"||c==="trim"||c==="placeholder"||c==="multiline"||c==="maxLength")){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(u.variableId!==void 0&&typeof u.variableId!="string"){let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/variableId",schemaPath:"#/properties/fields/additionalProperties/properties/variableId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.push(c),s++}if(u.required!==void 0&&typeof u.required!="boolean"){let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/required",schemaPath:"#/properties/fields/additionalProperties/properties/required/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[c]:t.push(c),s++}if(u.trim!==void 0&&typeof u.trim!="boolean"){let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/trim",schemaPath:"#/properties/fields/additionalProperties/properties/trim/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[c]:t.push(c),s++}if(u.placeholder!==void 0&&typeof u.placeholder!="string"){let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/placeholder",schemaPath:"#/properties/fields/additionalProperties/properties/placeholder/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.push(c),s++}if(u.multiline!==void 0&&typeof u.multiline!="boolean"){let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/multiline",schemaPath:"#/properties/fields/additionalProperties/properties/multiline/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[c]:t.push(c),s++}if(u.maxLength!==void 0){let c=u.maxLength;if(!(typeof c=="number"&&!(c%1)&&!isNaN(c))){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[p]:t.push(p),s++}if(typeof c=="number"&&(c<0||isNaN(c))){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/maxLength",schemaPath:"#/properties/fields/additionalProperties/properties/maxLength/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}else{let l={instancePath:r+"/fields",schemaPath:"#/properties/fields/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.submitActions!==void 0){let i=e.submitActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/submitActions",schemaPath:"#/properties/submitActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.cancelActions!==void 0){let i=e.cancelActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/cancelActions",schemaPath:"#/properties/cancelActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Kn.errors=t,s===0}function Fu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Kn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Kn.errors:t.concat(Kn.errors),s=t.length),Fu.errors=t,s===0}var Uu=Bu;function Jn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Jn.errors=t,s===0}function Bu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Jn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Jn.errors:t.concat(Jn.errors),s=t.length),Bu.errors=t,s===0}var zu=Yu;function Qn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="opacity"||i==="blur"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(Ne(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)),e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Qn.errors=t,s===0}function Yu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Qn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Qn.errors:t.concat(Qn.errors),s=t.length),Yu.errors=t,s===0}var Gu=Hu;var KI={type:"object",properties:{items:{type:"array",items:{$ref:"#/definitions/audioSound"}},channels:{type:"array",items:{type:"object",properties:{id:{type:"string",minLength:1},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}}},required:["id","sounds"],additionalProperties:!1}}},allOf:[{not:{required:["items","channels"]}}],additionalProperties:!1};function Zn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let c;if(e.items===void 0&&(c="items")||e.channels===void 0&&(c="channels")){let p={};t===null?t=[p]:t.push(p),s++}}var u=l===s;if(u){let c={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[c]:t.push(c),s++}else s=i,t!==null&&(i?t.length=i:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let c in e)if(!(c==="items"||c==="channels")){let p={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(e.items!==void 0){let c=e.items;if(Array.isArray(c)){let p=c.length;for(let m=0;m<p;m++)Te(c[m],{instancePath:r+"/items/"+m,parentData:c,parentDataProperty:m,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let p={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}if(e.channels!==void 0){let c=e.channels;if(Array.isArray(c)){let p=c.length;for(let m=0;m<p;m++){let d=c[m];if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.id===void 0){let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[f]:t.push(f),s++}if(d.sounds===void 0){let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[f]:t.push(f),s++}for(let f in d)if(!(f==="id"||f==="volume"||f==="muted"||f==="pan"||f==="loop"||f==="interruption"||f==="sounds")){let y={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(d.id!==void 0){let f=d.id;if(typeof f=="string"){if(je(f)<1){let y={instancePath:r+"/channels/"+m+"/id",schemaPath:"#/properties/channels/items/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/id",schemaPath:"#/properties/channels/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}}if(d.volume!==void 0){let f=d.volume;if(typeof f=="number"){if(f>100||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[y]:t.push(y),s++}if(f<0||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.muted!==void 0&&typeof d.muted!="boolean"){let f={instancePath:r+"/channels/"+m+"/muted",schemaPath:"#/properties/channels/items/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(d.pan!==void 0){let f=d.pan;if(typeof f=="number"){if(f>1||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[y]:t.push(y),s++}if(f<-1||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.loop!==void 0&&typeof d.loop!="boolean"){let f={instancePath:r+"/channels/"+m+"/loop",schemaPath:"#/properties/channels/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(d.interruption!==void 0){let f=d.interruption;if(typeof f!="string"){let y={instancePath:r+"/channels/"+m+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(!(f==="immediate"||f==="loopEnd")){let y={instancePath:r+"/channels/"+m+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/enum",keyword:"enum",params:{allowedValues:KI.properties.channels.items.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[y]:t.push(y),s++}}if(d.sounds!==void 0){let f=d.sounds;if(Array.isArray(f)){let y=f.length;for(let g=0;g<y;g++)Te(f[g],{instancePath:r+"/channels/"+m+"/sounds/"+g,parentData:f,parentDataProperty:g,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let y={instancePath:r+"/channels/"+m+"/sounds",schemaPath:"#/properties/channels/items/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[y]:t.push(y),s++}}}else{let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}}}else{let p={instancePath:r+"/channels",schemaPath:"#/properties/channels/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}return Zn.errors=t,s===0}function Hu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Zn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Zn.errors:t.concat(Zn.errors),s=t.length),Hu.errors=t,s===0}var Xu=Wu;var Au={type:"object",properties:{items:{type:"array",items:{type:"object",properties:{id:{type:"string"},animationName:{type:"string"},animationSpeed:{type:"number"},resourceId:{type:"string"},text:{$ref:"#/definitions/visualText"},transformId:{type:"string"},x:{type:"number"},y:{type:"number"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"},layer:{type:"number",enum:[10,30,50,70,90]},opacity:{type:"number",minimum:0,maximum:1},blur:{$ref:"#/definitions/backgroundBlur"},animations:{$ref:"#/definitions/animationSelection"}},required:["id"],allOf:[{not:{required:["resourceId","text"]}}],additionalProperties:!1}}},additionalProperties:!1};function es(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=s;if(typeof e!="string"){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}var c=u===s;if(l=l||c,!l){let p=s;if(Array.isArray(e)){let d=e.length;for(let f=0;f<d;f++){let y=e[f];if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.text!==void 0&&typeof y.text!="string"){let g={instancePath:r+"/"+f+"/text",schemaPath:"#/anyOf/1/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.push(g),s++}if(y.textStyleId!==void 0&&typeof y.textStyleId!="string"){let g={instancePath:r+"/"+f+"/textStyleId",schemaPath:"#/anyOf/1/items/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.push(g),s++}if(y.furigana!==void 0){let g=y.furigana;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.text!==void 0&&typeof g.text!="string"){let h={instancePath:r+"/"+f+"/furigana/text",schemaPath:"#/anyOf/1/items/properties/furigana/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(g.textStyleId!==void 0&&typeof g.textStyleId!="string"){let h={instancePath:r+"/"+f+"/furigana/textStyleId",schemaPath:"#/anyOf/1/items/properties/furigana/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/"+f+"/furigana",schemaPath:"#/anyOf/1/items/properties/furigana/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}}}else{let g={instancePath:r+"/"+f,schemaPath:"#/anyOf/1/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[d]:t.push(d),s++}var c=p===s;l=l||c}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return es.errors=t,s===0}function rs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s,u=s,c=!1,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let w;if(e.id===void 0&&(w="id")){let b={};t===null?t=[b]:t.push(b),s++}}var m=p===s;if(c=c||m,!c){let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.type===void 0&&(E="type")){let k={};t===null?t=[k]:t.push(k),s++}}var m=w===s;if(c=c||m,!c){let E=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let v;if(e.resourceId===void 0&&(v="resourceId")){let x={};t===null?t=[x]:t.push(x),s++}}var m=E===s;if(c=c||m,!c){let v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let $;if(e.transformId===void 0&&($="transformId")){let T={};t===null?t=[T]:t.push(T),s++}}var m=v===s;if(c=c||m,!c){let $=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.x===void 0&&(S="x")){let D={};t===null?t=[D]:t.push(D),s++}}var m=$===s;if(c=c||m,!c){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let U;if(e.y===void 0&&(U="y")){let le={};t===null?t=[le]:t.push(le),s++}}var m=S===s;if(c=c||m,!c){let U=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let z;if(e.anchorX===void 0&&(z="anchorX")){let ce={};t===null?t=[ce]:t.push(ce),s++}}var m=U===s;if(c=c||m,!c){let z=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let N;if(e.anchorY===void 0&&(N="anchorY")){let se={};t===null?t=[se]:t.push(se),s++}}var m=z===s;if(c=c||m,!c){let N=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let X;if(e.scaleX===void 0&&(X="scaleX")){let V={};t===null?t=[V]:t.push(V),s++}}var m=N===s;if(c=c||m,!c){let X=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let H;if(e.scaleY===void 0&&(H="scaleY")){let Q={};t===null?t=[Q]:t.push(Q),s++}}var m=X===s;if(c=c||m,!c){let H=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ne;if(e.rotation===void 0&&(ne="rotation")){let fe={};t===null?t=[fe]:t.push(fe),s++}}var m=H===s;if(c=c||m,!c){let ne=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Z;if(e.originX===void 0&&(Z="originX")){let O={};t===null?t=[O]:t.push(O),s++}}var m=ne===s;if(c=c||m,!c){let Z=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let _;if(e.originY===void 0&&(_="originY")){let F={};t===null?t=[F]:t.push(F),s++}}var m=Z===s;if(c=c||m,!c){let _=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let te;if(e.layer===void 0&&(te="layer")){let he={};t===null?t=[he]:t.push(he),s++}}var m=_===s;if(c=c||m,!c){let te=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Pe;if(e.opacity===void 0&&(Pe="opacity")){let ye={};t===null?t=[ye]:t.push(ye),s++}}var m=te===s;if(c=c||m,!c){let Pe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ue;if(e.blur===void 0&&(ue="blur")){let Er={};t===null?t=[Er]:t.push(Er),s++}}var m=Pe===s;if(c=c||m,!c){let ue=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let cr;if(e.animations===void 0&&(cr="animations")){let Xt={};t===null?t=[Xt]:t.push(Xt),s++}}var m=ue===s;c=c||m}}}}}}}}}}}}}}}}if(c)s=u,t!==null&&(u?t.length=u:t=null);else{let w={};t===null?t=[w]:t.push(w),s++}var d=l===s;if(d){let w={instancePath:r,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[w]:t.push(w),s++}else s=i,t!==null&&(i?t.length=i:t=null);let f=s,y=!1,g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.content===void 0){let w={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};t===null?t=[w]:t.push(w),s++}var h=g===s;if(y=y||h,!y){let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textStyleId===void 0){let E={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};t===null?t=[E]:t.push(E),s++}var h=w===s;y=y||h}if(y)s=f,t!==null&&(f?t.length=f:t=null);else{let w={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[w]:t.push(w),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(es(e.content,{instancePath:r+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(t=t===null?es.errors:t.concat(es.errors),s=t.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let w={instancePath:r+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[w]:t.push(w),s++}if(e.width!==void 0&&typeof e.width!="number"){let w={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}if(e.height!==void 0&&typeof e.height!="number"){let w={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[w]:t.push(w),s++}return rs.errors=t,s===0}function ts(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let u={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let u=l.length;for(let c=0;c<u;c++){let p=l[c],m=s,d=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let f;if(p.resourceId===void 0&&(f="resourceId")||p.text===void 0&&(f="text")){let y={};t===null?t=[y]:t.push(y),s++}}var i=d===s;if(i){let f={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[f]:t.push(f),s++}else s=m,t!==null&&(m?t.length=m:t=null);if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let f={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[f]:t.push(f),s++}for(let f in p)if(!ar.call(Au.properties.items.items.properties,f)){let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(p.id!==void 0&&typeof p.id!="string"){let f={instancePath:r+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.animationName!==void 0&&typeof p.animationName!="string"){let f={instancePath:r+"/items/"+c+"/animationName",schemaPath:"#/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.animationSpeed!==void 0&&typeof p.animationSpeed!="number"){let f={instancePath:r+"/items/"+c+"/animationSpeed",schemaPath:"#/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.resourceId!==void 0&&typeof p.resourceId!="string"){let f={instancePath:r+"/items/"+c+"/resourceId",schemaPath:"#/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.text!==void 0&&(rs(p.text,{instancePath:r+"/items/"+c+"/text",parentData:p,parentDataProperty:"text",rootData:a})||(t=t===null?rs.errors:t.concat(rs.errors),s=t.length)),p.transformId!==void 0&&typeof p.transformId!="string"){let f={instancePath:r+"/items/"+c+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.x!==void 0&&typeof p.x!="number"){let f={instancePath:r+"/items/"+c+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.y!==void 0&&typeof p.y!="number"){let f={instancePath:r+"/items/"+c+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let f={instancePath:r+"/items/"+c+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let f={instancePath:r+"/items/"+c+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let f={instancePath:r+"/items/"+c+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let f={instancePath:r+"/items/"+c+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let f={instancePath:r+"/items/"+c+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let f={instancePath:r+"/items/"+c+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let f={instancePath:r+"/items/"+c+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.layer!==void 0){let f=p.layer;if(typeof f!="number"){let y={instancePath:r+"/items/"+c+"/layer",schemaPath:"#/properties/items/items/properties/layer/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(!(f===10||f===30||f===50||f===70||f===90)){let y={instancePath:r+"/items/"+c+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:Au.properties.items.items.properties.layer.enum},message:"must be equal to one of the allowed values"};t===null?t=[y]:t.push(y),s++}}if(p.opacity!==void 0){let f=p.opacity;if(typeof f=="number"){if(f>1||isNaN(f)){let y={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[y]:t.push(y),s++}if(f<0||isNaN(f)){let y={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}p.blur!==void 0&&(Ne(p.blur,{instancePath:r+"/items/"+c+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)),p.animations!==void 0&&(ie(p.animations,{instancePath:r+"/items/"+c+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let f={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}}}else{let u={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return ts.errors=t,s===0}function Wu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ts(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ts.errors:t.concat(ts.errors),s=t.length),Wu.errors=t,s===0}var Ku=Ju;var JI={type:"object",properties:{sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}},resourceId:{type:"string"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},loop:{type:"boolean"},interruption:{type:"string",enum:["immediate","loopEnd"]},startDelayMs:{type:"number",minimum:0}},anyOf:[{required:["resourceId"]},{required:["sounds"]}],allOf:[{not:{required:["resourceId","sounds"]}},{not:{required:["startDelayMs","sounds"]}}],additionalProperties:!1};function ns(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.resourceId===void 0){let h={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[h]:t.push(h),s++}var c=u===s;if(l=l||c,!l){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.sounds===void 0){let b={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[b]:t.push(b),s++}var c=h===s;l=l||c}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let h={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[h]:t.push(h),s++}let p=s,m=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.resourceId===void 0&&(h="resourceId")||e.sounds===void 0&&(h="sounds")){let w={};t===null?t=[w]:t.push(w),s++}}var d=m===s;if(d){let h={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=p,t!==null&&(p?t.length=p:t=null);let f=s,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let h;if(e.startDelayMs===void 0&&(h="startDelayMs")||e.sounds===void 0&&(h="sounds")){let w={};t===null?t=[w]:t.push(w),s++}}var g=y===s;if(g){let h={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=f,t!==null&&(f?t.length=f:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let h in e)if(!(h==="sounds"||h==="resourceId"||h==="volume"||h==="muted"||h==="pan"||h==="loop"||h==="interruption"||h==="startDelayMs")){let w={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};t===null?t=[w]:t.push(w),s++}if(e.sounds!==void 0){let h=e.sounds;if(Array.isArray(h)){let w=h.length;for(let b=0;b<w;b++)Te(h[b],{instancePath:r+"/sounds/"+b,parentData:h,parentDataProperty:b,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let w={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[w]:t.push(w),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let h={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(e.volume!==void 0){let h=e.volume;if(typeof h=="number"){if(h>100||isNaN(h)){let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[w]:t.push(w),s++}if(h<0||isNaN(h)){let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let h={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.pan!==void 0){let h=e.pan;if(typeof h=="number"){if(h>1||isNaN(h)){let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[w]:t.push(w),s++}if(h<-1||isNaN(h)){let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let h={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.interruption!==void 0){let h=e.interruption;if(typeof h!="string"){let w={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[w]:t.push(w),s++}if(!(h==="immediate"||h==="loopEnd")){let w={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:JI.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[w]:t.push(w),s++}}if(e.startDelayMs!==void 0){let h=e.startDelayMs;if(typeof h=="number"){if(h<0||isNaN(h)){let w={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}}else{let h={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}return ns.errors=t,s===0}function Ju(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ns(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ns.errors:t.concat(ns.errors),s=t.length),Ju.errors=t,s===0}var Qu=Zu;var QI={type:"object",properties:{type:{type:"string",enum:["boolean","number"]},target:{type:"integer",minimum:1},name:{type:"string",minLength:1},description:{type:"string",minLength:1},lockedName:{type:"string",minLength:1},lockedDescription:{type:"string",minLength:1},hidden:{type:"boolean"}},required:["type","name","description"],allOf:[{if:{properties:{type:{const:"number"}}},then:{required:["target"]}},{if:{properties:{type:{const:"boolean"}}},then:{not:{required:["target"]}}}],additionalProperties:!1};function ss(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="number"){let g={};t===null?t=[g]:t.push(g),s++}var c=u===s;if(s=i,t!==null&&(i?t.length=i:t=null),c){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.target===void 0){let w={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};t===null?t=[w]:t.push(w),s++}var c=g===s;l=c}if(!l){let g={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.push(g),s++}let p=s,m=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="boolean"){let g={};t===null?t=[g]:t.push(g),s++}var f=d===s;if(s=p,t!==null&&(p?t.length=p:t=null),f){let g=s,h=s,w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.target===void 0&&(E="target")){let k={};t===null?t=[k]:t.push(k),s++}}var y=w===s;if(y){let E={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[E]:t.push(E),s++}else s=h,t!==null&&(h?t.length=h:t=null);var f=g===s;m=f}if(!m){let g={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[g]:t.push(g),s++}if(e.name===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};t===null?t=[g]:t.push(g),s++}if(e.description===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"description"},message:"must have required property 'description'"};t===null?t=[g]:t.push(g),s++}for(let g in e)if(!(g==="type"||g==="target"||g==="name"||g==="description"||g==="lockedName"||g==="lockedDescription"||g==="hidden")){let h={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};t===null?t=[h]:t.push(h),s++}if(e.type!==void 0){let g=e.type;if(typeof g!="string"){let h={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(!(g==="boolean"||g==="number")){let h={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:QI.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[h]:t.push(h),s++}}if(e.target!==void 0){let g=e.target;if(!(typeof g=="number"&&!(g%1)&&!isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[h]:t.push(h),s++}if(typeof g=="number"&&(g<1||isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[h]:t.push(h),s++}}if(e.name!==void 0){let g=e.name;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.description!==void 0){let g=e.description;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/description",schemaPath:"#/properties/description/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedName!==void 0){let g=e.lockedName;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedDescription!==void 0){let g=e.lockedDescription;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.hidden!==void 0&&typeof e.hidden!="boolean"){let g={instancePath:r+"/hidden",schemaPath:"#/properties/hidden/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}return ss.errors=t,s===0}function Zu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ss(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ss.errors:t.concat(ss.errors),s=t.length),Zu.errors=t,s===0}var ep=rp;var ZI={type:"object",required:["type"],$defs:{keyframe:{type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1},tweenProperty:{type:"object",properties:{initialValue:{type:"number"},keyframes:{type:"array",minItems:1,items:{$ref:"#/$defs/keyframe"}}},required:["keyframes"],additionalProperties:!1},updateTween:{type:"object",properties:{alpha:{$ref:"#/$defs/tweenProperty"},x:{$ref:"#/$defs/tweenProperty"},y:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionTween:{type:"object",properties:{translateX:{$ref:"#/$defs/tweenProperty"},translateY:{$ref:"#/$defs/tweenProperty"},alpha:{$ref:"#/$defs/tweenProperty"},scaleX:{$ref:"#/$defs/tweenProperty"},scaleY:{$ref:"#/$defs/tweenProperty"},rotation:{$ref:"#/$defs/tweenProperty"}},additionalProperties:!1,minProperties:1},transitionSide:{type:"object",required:["tween"],properties:{tween:{$ref:"#/$defs/transitionTween"}},additionalProperties:!1},maskProgress:{$ref:"#/$defs/tweenProperty"},compositeMaskItem:{type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1},mask:{type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]}},properties:{name:{type:"string"},type:{type:"string",enum:["update","transition"]},complete:{type:"object",properties:{payload:{type:"object"}},additionalProperties:!0},tween:{$ref:"#/$defs/updateTween"},prev:{$ref:"#/$defs/transitionSide"},next:{$ref:"#/$defs/transitionSide"},mask:{$ref:"#/$defs/mask"}},allOf:[{if:{properties:{type:{const:"update"}}},then:{required:["tween"],not:{anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}},{if:{properties:{type:{const:"transition"}}},then:{not:{required:["tween"]},anyOf:[{required:["prev"]},{required:["next"]},{required:["mask"]}]}}],additionalProperties:!1,$id:"https://route-engine.runtime/schemas/projectData/animationResource.yaml"};var ew={type:"object",required:["value","duration"],properties:{value:{type:"number"},duration:{type:"number"},easing:{type:"string",enum:["linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easeInElastic","easeOutElastic","easeInOutElastic"]},relative:{type:"boolean"}},additionalProperties:!1};function Ur(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.value===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};t===null?t=[i]:t.push(i),s++}if(e.duration===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="value"||i==="duration"||i==="easing"||i==="relative")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.value!==void 0&&typeof e.value!="number"){let i={instancePath:r+"/value",schemaPath:"#/properties/value/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.duration!==void 0&&typeof e.duration!="number"){let i={instancePath:r+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.easing!==void 0){let i=e.easing;if(typeof i!="string"){let l={instancePath:r+"/easing",schemaPath:"#/properties/easing/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="linear"||i==="easeInQuad"||i==="easeOutQuad"||i==="easeInOutQuad"||i==="easeInCubic"||i==="easeOutCubic"||i==="easeInOutCubic"||i==="easeInQuart"||i==="easeOutQuart"||i==="easeInOutQuart"||i==="easeInQuint"||i==="easeOutQuint"||i==="easeInOutQuint"||i==="easeInSine"||i==="easeOutSine"||i==="easeInOutSine"||i==="easeInExpo"||i==="easeOutExpo"||i==="easeInOutExpo"||i==="easeInCirc"||i==="easeOutCirc"||i==="easeInOutCirc"||i==="easeInBack"||i==="easeOutBack"||i==="easeInOutBack"||i==="easeInBounce"||i==="easeOutBounce"||i==="easeInOutBounce"||i==="easeInElastic"||i==="easeOutElastic"||i==="easeInOutElastic")){let l={instancePath:r+"/easing",schemaPath:"#/properties/easing/enum",keyword:"enum",params:{allowedValues:ew.properties.easing.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.relative!==void 0&&typeof e.relative!="boolean"){let i={instancePath:r+"/relative",schemaPath:"#/properties/relative/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ur.errors=t,s===0}function K(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let u={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[u]:t.push(u),s++}let l=i.length;for(let u=0;u<l;u++)Ur(i[u],{instancePath:r+"/keyframes/"+u,parentData:i,parentDataProperty:u,rootData:a})||(t=t===null?Ur.errors:t.concat(Ur.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return K.errors=t,s===0}function os(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="alpha"||i==="x"||i==="y"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.alpha!==void 0&&(K(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.x!==void 0&&(K(e.x,{instancePath:r+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.y!==void 0&&(K(e.y,{instancePath:r+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleX!==void 0&&(K(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleY!==void 0&&(K(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.rotation!==void 0&&(K(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return os.errors=t,s===0}function is(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="translateX"||i==="translateY"||i==="alpha"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.translateX!==void 0&&(K(e.translateX,{instancePath:r+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.translateY!==void 0&&(K(e.translateY,{instancePath:r+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.alpha!==void 0&&(K(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleX!==void 0&&(K(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleY!==void 0&&(K(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.rotation!==void 0&&(K(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return is.errors=t,s===0}function Fr(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.tween===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="tween"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.tween!==void 0&&(is(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?is.errors:t.concat(is.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Fr.errors=t,s===0}var Fn={type:"object",required:["kind"],properties:{kind:{type:"string",enum:["single","sequence","composite"]},texture:{type:"string"},textures:{type:"array",minItems:1,items:{type:"string"}},items:{type:"array",minItems:1,items:{$ref:"#/$defs/compositeMaskItem"}},combine:{type:"string",enum:["max","min","multiply","add"]},channel:{type:"string",enum:["red","green","blue","alpha"]},softness:{type:"number"},invert:{type:"boolean"},sample:{type:"string"},progress:{$ref:"#/$defs/maskProgress"}},additionalProperties:!1,allOf:[{if:{properties:{kind:{const:"single"}}},then:{required:["texture"]}},{if:{properties:{kind:{const:"sequence"}}},then:{required:["textures"]}},{if:{properties:{kind:{const:"composite"}}},then:{required:["items"]}}]},rw={type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1};function as(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="texture"||i==="channel"||i==="invert")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.texture!==void 0&&typeof e.texture!="string"){let i={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.channel!==void 0){let i=e.channel;if(typeof i!="string"){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="red"||i==="green"||i==="blue"||i==="alpha")){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:rw.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.invert!==void 0&&typeof e.invert!="boolean"){let i={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return as.errors=t,s===0}function ls(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let u={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[u]:t.push(u),s++}let l=i.length;for(let u=0;u<l;u++)Ur(i[u],{instancePath:r+"/keyframes/"+u,parentData:i,parentDataProperty:u,rootData:a})||(t=t===null?Ur.errors:t.concat(Ur.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ls.errors=t,s===0}function cs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="single"){let b={};t===null?t=[b]:t.push(b),s++}var c=u===s;if(s=i,t!==null&&(i?t.length=i:t=null),c){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.texture===void 0){let k={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[k]:t.push(k),s++}var c=b===s;l=c}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let p=s,m=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="sequence"){let b={};t===null?t=[b]:t.push(b),s++}var f=d===s;if(s=p,t!==null&&(p?t.length=p:t=null),f){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textures===void 0){let k={instancePath:r,schemaPath:"#/allOf/1/then/required",keyword:"required",params:{missingProperty:"textures"},message:"must have required property 'textures'"};t===null?t=[k]:t.push(k),s++}var f=b===s;m=f}if(!m){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let y=s,g=!0,h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="composite"){let b={};t===null?t=[b]:t.push(b),s++}var w=h===s;if(s=y,t!==null&&(y?t.length=y:t=null),w){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.items===void 0){let k={instancePath:r,schemaPath:"#/allOf/2/then/required",keyword:"required",params:{missingProperty:"items"},message:"must have required property 'items'"};t===null?t=[k]:t.push(k),s++}var w=b===s;g=w}if(!g){let b={instancePath:r,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.kind===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};t===null?t=[b]:t.push(b),s++}for(let b in e)if(!ar.call(Fn.properties,b)){let E={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(e.kind!==void 0){let b=e.kind;if(typeof b!="string"){let E={instancePath:r+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="single"||b==="sequence"||b==="composite")){let E={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:Fn.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.texture!==void 0&&typeof e.texture!="string"){let b={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.textures!==void 0){let b=e.textures;if(Array.isArray(b)){if(b.length<1){let k={instancePath:r+"/textures",schemaPath:"#/properties/textures/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[k]:t.push(k),s++}let E=b.length;for(let k=0;k<E;k++)if(typeof b[k]!="string"){let v={instancePath:r+"/textures/"+k,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[v]:t.push(v),s++}}else{let E={instancePath:r+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[E]:t.push(E),s++}}if(e.items!==void 0){let b=e.items;if(Array.isArray(b)){if(b.length<1){let k={instancePath:r+"/items",schemaPath:"#/properties/items/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[k]:t.push(k),s++}let E=b.length;for(let k=0;k<E;k++)as(b[k],{instancePath:r+"/items/"+k,parentData:b,parentDataProperty:k,rootData:a})||(t=t===null?as.errors:t.concat(as.errors),s=t.length)}else{let E={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[E]:t.push(E),s++}}if(e.combine!==void 0){let b=e.combine;if(typeof b!="string"){let E={instancePath:r+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="max"||b==="min"||b==="multiply"||b==="add")){let E={instancePath:r+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:Fn.properties.combine.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.channel!==void 0){let b=e.channel;if(typeof b!="string"){let E={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="red"||b==="green"||b==="blue"||b==="alpha")){let E={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:Fn.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.softness!==void 0&&typeof e.softness!="number"){let b={instancePath:r+"/softness",schemaPath:"#/properties/softness/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(e.invert!==void 0&&typeof e.invert!="boolean"){let b={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}if(e.sample!==void 0&&typeof e.sample!="string"){let b={instancePath:r+"/sample",schemaPath:"#/properties/sample/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}e.progress!==void 0&&(ls(e.progress,{instancePath:r+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(t=t===null?ls.errors:t.concat(ls.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return cs.errors=t,s===0}function us(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="update"){let b={};t===null?t=[b]:t.push(b),s++}var c=u===s;if(s=i,t!==null&&(i?t.length=i:t=null),c){let b=s,E=s,k=s,v=s,x=!1,$=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.prev===void 0&&(S="prev")){let D={};t===null?t=[D]:t.push(D),s++}}var p=$===s;if(x=x||p,!x){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let U;if(e.next===void 0&&(U="next")){let le={};t===null?t=[le]:t.push(le),s++}}var p=S===s;if(x=x||p,!x){let U=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let z;if(e.mask===void 0&&(z="mask")){let ce={};t===null?t=[ce]:t.push(ce),s++}}var p=U===s;x=x||p}}if(x)s=v,t!==null&&(v?t.length=v:t=null);else{let S={};t===null?t=[S]:t.push(S),s++}var m=k===s;if(m){let S={instancePath:r,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[S]:t.push(S),s++}else s=E,t!==null&&(E?t.length=E:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let S={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[S]:t.push(S),s++}var c=b===s;l=c}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let d=s,f=!0,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="transition"){let b={};t===null?t=[b]:t.push(b),s++}var g=y===s;if(s=d,t!==null&&(d?t.length=d:t=null),g){let b=s,E=s,k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.tween===void 0&&(S="tween")){let D={};t===null?t=[D]:t.push(D),s++}}var h=k===s;if(h){let S={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[S]:t.push(S),s++}else s=E,t!==null&&(E?t.length=E:t=null);let v=s,x=!1,$=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let S={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};t===null?t=[S]:t.push(S),s++}var w=$===s;if(x=x||w,!x){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let U={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};t===null?t=[U]:t.push(U),s++}var w=S===s;if(x=x||w,!x){let U=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.mask===void 0){let z={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};t===null?t=[z]:t.push(z),s++}var w=U===s;x=x||w}}if(x)s=v,t!==null&&(v?t.length=v:t=null);else{let S={instancePath:r,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[S]:t.push(S),s++}var g=b===s;f=g}if(!f){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[b]:t.push(b),s++}for(let b in e)if(!(b==="name"||b==="type"||b==="complete"||b==="tween"||b==="prev"||b==="next"||b==="mask")){let E={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(e.name!==void 0&&typeof e.name!="string"){let b={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.type!==void 0){let b=e.type;if(typeof b!="string"){let E={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="update"||b==="transition")){let E={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:ZI.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.complete!==void 0){let b=e.complete;if(b&&typeof b=="object"&&!Array.isArray(b)){if(b.payload!==void 0){let E=b.payload;if(!(E&&typeof E=="object"&&!Array.isArray(E))){let k={instancePath:r+"/complete/payload",schemaPath:"#/properties/complete/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}}else{let E={instancePath:r+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}e.tween!==void 0&&(os(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?os.errors:t.concat(os.errors),s=t.length)),e.prev!==void 0&&(Fr(e.prev,{instancePath:r+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.errors),s=t.length)),e.next!==void 0&&(Fr(e.next,{instancePath:r+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.errors),s=t.length)),e.mask!==void 0&&(cs(e.mask,{instancePath:r+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(t=t===null?cs.errors:t.concat(cs.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return us.errors=t,s===0}function rp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return us(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?us.errors:t.concat(us.errors),s=t.length),rp.errors=t,s===0}var tp=np;function ps(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="name"||i==="nameVariableId")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.name!==void 0&&typeof e.name!="string"){let i={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.nameVariableId!==void 0){let i=e.nameVariableId;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ps.errors=t,s===0}function np(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ps(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ps.errors:t.concat(ps.errors),s=t.length),np.errors=t,s===0}var sp=op;var tw=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");function ds(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.hex===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"hex"},message:"must have required property 'hex'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="hex"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.hex!==void 0){let i=e.hex;if(typeof i=="string"){if(!tw.test(i)){let l={instancePath:r+"/hex",schemaPath:"#/properties/hex/pattern",keyword:"pattern",params:{pattern:"^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"},message:'must match pattern "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"'};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/hex",schemaPath:"#/properties/hex/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ds.errors=t,s===0}function op(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ds(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ds.errors:t.concat(ds.errors),s=t.length),op.errors=t,s===0}var ip=ap;function fs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyboard!==void 0){let i=e.keyboard;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.actions!==void 0){let c=u.actions;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyboard/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(u.payload!==void 0){let c=u.payload;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(u.keydown!==void 0){let c=u.keydown;if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.payload!==void 0){let p=c.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let m={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keydown",schemaPath:"#/properties/keyboard/additionalProperties/properties/keydown/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(u.keyup!==void 0){let c=u.keyup;if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.payload!==void 0){let p=c.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let m={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup/payload",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/keyup",schemaPath:"#/properties/keyboard/additionalProperties/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyboard/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}else{let l={instancePath:r+"/keyboard",schemaPath:"#/properties/keyboard/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.keyup!==void 0){let i=e.keyup;if(i&&typeof i=="object"&&!Array.isArray(i))for(let l in i){let u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.actions!==void 0){let c=u.actions;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/actions",schemaPath:"#/properties/keyup/additionalProperties/properties/actions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}if(u.payload!==void 0){let c=u.payload;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/payload",schemaPath:"#/properties/keyup/additionalProperties/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyup/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}else{let l={instancePath:r+"/keyup",schemaPath:"#/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let u=0;u<l;u++){let c=i[u];if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/elements/"+u,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return fs.errors=t,s===0}function ap(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return fs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?fs.errors:t.concat(fs.errors),s=t.length),ap.errors=t,s===0}var lp=cp;function ms(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ms.errors=t,s===0}function cp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ms(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ms.errors:t.concat(ms.errors),s=t.length),cp.errors=t,s===0}var up=pp;function ys(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ys.errors=t,s===0}function pp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ys(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ys.errors:t.concat(ys.errors),s=t.length),pp.errors=t,s===0}var dp=fp;function hs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let u=0;u<l;u++){let c=i[u];if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/elements/"+u,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return hs.errors=t,s===0}function fp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return hs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?hs.errors:t.concat(hs.errors),s=t.length),fp.errors=t,s===0}var mp=yp;function gs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=null,c=s,p=s,m=s,d=s,f=!1,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let k;if(e.count===void 0&&(k="count")){let v={};t===null?t=[v]:t.push(v),s++}}var g=y===s;if(f=f||g,!f){let k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.texture===void 0&&(x="texture")){let $={};t===null?t=[$]:t.push($),s++}}var g=k===s;if(f=f||g,!f){let x=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let T;if(e.behaviors===void 0&&(T="behaviors")){let S={};t===null?t=[S]:t.push(S),s++}}var g=x===s;if(f=f||g,!f){let T=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let D;if(e.emitter===void 0&&(D="emitter")){let U={};t===null?t=[U]:t.push(U),s++}}var g=T===s;f=f||g}}}if(f)s=d,t!==null&&(d?t.length=d:t=null);else{let k={};t===null?t=[k]:t.push(k),s++}var h=m===s;if(h){let k={instancePath:r,schemaPath:"#/oneOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[k]:t.push(k),s++}else s=p,t!==null&&(p?t.length=p:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.modules===void 0){let k={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"modules"},message:"must have required property 'modules'"};t===null?t=[k]:t.push(k),s++}var b=c===s;b&&(l=!0,u=0);let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let k={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[k]:t.push(k),s++}if(e.behaviors===void 0){let k={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"behaviors"},message:"must have required property 'behaviors'"};t===null?t=[k]:t.push(k),s++}if(e.emitter===void 0){let k={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"emitter"},message:"must have required property 'emitter'"};t===null?t=[k]:t.push(k),s++}}var b=w===s;if(b&&l?(l=!1,u=[u,1]):b&&(l=!0,u=1),l)s=i,t!==null&&(i?t.length=i:t=null);else{let k={instancePath:r,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:u},message:"must match exactly one schema in oneOf"};t===null?t=[k]:t.push(k),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.width===void 0){let k={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[k]:t.push(k),s++}if(e.height===void 0){let k={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[k]:t.push(k),s++}for(let k in e)if(!(k==="width"||k==="height"||k==="seed"||k==="modules"||k==="count"||k==="texture"||k==="behaviors"||k==="emitter")){let v={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};t===null?t=[v]:t.push(v),s++}if(e.width!==void 0){let k=e.width;if(typeof k=="number"){if(k<=0||isNaN(k)){let v={instancePath:r+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[v]:t.push(v),s++}}else{let v={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[v]:t.push(v),s++}}if(e.height!==void 0){let k=e.height;if(typeof k=="number"){if(k<=0||isNaN(k)){let v={instancePath:r+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[v]:t.push(v),s++}}else{let v={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[v]:t.push(v),s++}}if(e.seed!==void 0&&typeof e.seed!="number"){let k={instancePath:r+"/seed",schemaPath:"#/properties/seed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(e.modules!==void 0){let k=e.modules;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.emission===void 0){let v={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};t===null?t=[v]:t.push(v),s++}if(k.appearance===void 0){let v={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};t===null?t=[v]:t.push(v),s++}for(let v in k)if(!(v==="emission"||v==="movement"||v==="appearance"||v==="bounds")){let x={instancePath:r+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),s++}if(k.emission!==void 0){let v=k.emission;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}if(k.movement!==void 0){let v=k.movement;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}if(k.appearance!==void 0){let v=k.appearance;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}if(k.bounds!==void 0){let v=k.bounds;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}}else{let v={instancePath:r+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}}if(e.count!==void 0){let k=e.count;if(!(typeof k=="number"&&!(k%1)&&!isNaN(k))){let v={instancePath:r+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[v]:t.push(v),s++}if(typeof k=="number"&&(k<1||isNaN(k))){let v={instancePath:r+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[v]:t.push(v),s++}}if(e.texture!==void 0){let k=e.texture,v=s,x=!1,$=null,T=s;if(typeof k=="string"){if(je(k)<1){let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[D]:t.push(D),s++}}else{let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[D]:t.push(D),s++}var E=T===s;E&&(x=!0,$=0);let S=s;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[D]:t.push(D),s++}var E=S===s;if(E&&x?(x=!1,$=[$,1]):E&&(x=!0,$=1),x)s=v,t!==null&&(v?t.length=v:t=null);else{let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:$},message:"must match exactly one schema in oneOf"};t===null?t=[D]:t.push(D),s++}}if(e.behaviors!==void 0){let k=e.behaviors;if(Array.isArray(k)){if(k.length<1){let x={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[x]:t.push(x),s++}let v=k.length;for(let x=0;x<v;x++){let $=k[x];if($&&typeof $=="object"&&!Array.isArray($)){if($.type===void 0){let T={instancePath:r+"/behaviors/"+x,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[T]:t.push(T),s++}for(let T in $)if(!(T==="type"||T==="config")){let S={instancePath:r+"/behaviors/"+x,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:T},message:"must NOT have additional properties"};t===null?t=[S]:t.push(S),s++}if($.type!==void 0){let T=$.type;if(typeof T=="string"){if(je(T)<1){let S={instancePath:r+"/behaviors/"+x+"/type",schemaPath:"#/properties/behaviors/items/properties/type/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[S]:t.push(S),s++}}else{let S={instancePath:r+"/behaviors/"+x+"/type",schemaPath:"#/properties/behaviors/items/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[S]:t.push(S),s++}}if($.config!==void 0){let T=$.config;if(!(T&&typeof T=="object"&&!Array.isArray(T))){let S={instancePath:r+"/behaviors/"+x+"/config",schemaPath:"#/properties/behaviors/items/properties/config/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}}else{let T={instancePath:r+"/behaviors/"+x,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[T]:t.push(T),s++}}}else{let v={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[v]:t.push(v),s++}}if(e.emitter!==void 0){let k=e.emitter;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.lifetime===void 0){let v={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};t===null?t=[v]:t.push(v),s++}if(k.lifetime!==void 0){let v=k.lifetime;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.min===void 0){let x={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};t===null?t=[x]:t.push(x),s++}if(v.max===void 0){let x={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};t===null?t=[x]:t.push(x),s++}if(v.min!==void 0){let x=v.min;if(typeof x=="number"){if(x<0||isNaN(x)){let $={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[$]:t.push($),s++}}else{let $={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[$]:t.push($),s++}}if(v.max!==void 0){let x=v.max;if(typeof x=="number"){if(x<0||isNaN(x)){let $={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[$]:t.push($),s++}}else{let $={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[$]:t.push($),s++}}}else{let x={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}}else{let v={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}}}else{let k={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}return gs.errors=t,s===0}function yp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return gs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?gs.errors:t.concat(gs.errors),s=t.length),yp.errors=t,s===0}var hp=gp;var Pu={type:"object",properties:{fileId:{type:"string"},fileType:{type:"string"},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["fileId"],additionalProperties:!1};function bs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!ar.call(Pu.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:Pu.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return bs.errors=t,s===0}function gp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return bs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?bs.errors:t.concat(bs.errors),s=t.length),gp.errors=t,s===0}var bp=Ip;var nw=new RegExp("^.+$","u");function Is(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.jsonData===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"jsonData"},message:"must have required property 'jsonData'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="jsonData"||i==="width"||i==="height"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.jsonData!==void 0){let i=e.jsonData;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/jsonData",schemaPath:"#/properties/jsonData/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.animations!==void 0){let i=e.animations;if(i&&typeof i=="object"&&!Array.isArray(i)){for(let l in i)if(nw.test(l)){let u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.frames===void 0){let c={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/required",keyword:"required",params:{missingProperty:"frames"},message:"must have required property 'frames'"};t===null?t=[c]:t.push(c),s++}for(let c in u)if(!(c==="frames"||c==="animationSpeed"||c==="loop")){let p={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(u.frames!==void 0){let c=u.frames;if(Array.isArray(c)){let p=c.length;for(let m=0;m<p;m++)if(typeof c[m]!="number"){let d={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames/"+m,schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/items/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[d]:t.push(d),s++}}else{let p={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}if(u.animationSpeed!==void 0&&typeof u.animationSpeed!="number"){let c={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/animationSpeed",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}if(u.loop!==void 0&&typeof u.loop!="boolean"){let c={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/loop",schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r+"/animations",schemaPath:"#/properties/animations/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Is.errors=t,s===0}function Ip(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Is(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Is.errors:t.concat(Is.errors),s=t.length),Ip.errors=t,s===0}var wp=kp;var xu={type:"object",properties:{fontId:{oneOf:[{type:"string",minLength:1},{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",minLength:1}}]},colorId:{type:"string"},colorAlpha:{type:"number"},fontSize:{type:"number"},fontWeight:{type:"string"},fontStyle:{type:"string",enum:["normal","italic","oblique"]},lineHeight:{type:"number"},align:{type:"string"},wordWrap:{type:"boolean"},breakWords:{type:"boolean"},wordWrapWidth:{type:"number"},strokeColorId:{type:"string"},strokeAlpha:{type:"number"},strokeWidth:{type:"number"},shadow:{type:"object",properties:{colorId:{type:"string",minLength:1},alpha:{type:"number",minimum:0,maximum:1},blur:{type:"number",minimum:0},offsetX:{type:"number"},offsetY:{type:"number"}},required:["colorId"],additionalProperties:!1}},required:["fontId","fontSize","fontWeight","fontStyle","lineHeight","colorId"],additionalProperties:!1};function ws(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fontId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontId"},message:"must have required property 'fontId'"};t===null?t=[l]:t.push(l),s++}if(e.fontSize===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontSize"},message:"must have required property 'fontSize'"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontWeight"},message:"must have required property 'fontWeight'"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontStyle"},message:"must have required property 'fontStyle'"};t===null?t=[l]:t.push(l),s++}if(e.lineHeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"lineHeight"},message:"must have required property 'lineHeight'"};t===null?t=[l]:t.push(l),s++}if(e.colorId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[l]:t.push(l),s++}for(let l in e)if(!ar.call(xu.properties,l)){let u={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(e.fontId!==void 0){let l=e.fontId,u=s,c=!1,p=null,m=s;if(typeof l=="string"){if(je(l)<1){let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}var i=m===s;i&&(c=!0,p=0);let d=s;if(Array.isArray(l)){if(l.length<1){let h={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[h]:t.push(h),s++}let f=l.length;for(let h=0;h<f;h++){let w=l[h];if(typeof w=="string"){if(je(w)<1){let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}}let y=l.length,g;if(y>1){let h={};for(;y--;){let w=l[y];if(typeof w=="string"){if(typeof h[w]=="number"){g=h[w];let b={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/uniqueItems",keyword:"uniqueItems",params:{i:y,j:g},message:"must NOT have duplicate items (items ## "+g+" and "+y+" are identical)"};t===null?t=[b]:t.push(b),s++;break}h[w]=y}}}}else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),s++}var i=d===s;if(i&&c?(c=!1,p=[p,1]):i&&(c=!0,p=1),c)s=u,t!==null&&(u?t.length=u:t=null);else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf",keyword:"oneOf",params:{passingSchemas:p},message:"must match exactly one schema in oneOf"};t===null?t=[f]:t.push(f),s++}}if(e.colorId!==void 0&&typeof e.colorId!="string"){let l={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.colorAlpha!==void 0&&typeof e.colorAlpha!="number"){let l={instancePath:r+"/colorAlpha",schemaPath:"#/properties/colorAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontSize!==void 0&&typeof e.fontSize!="number"){let l={instancePath:r+"/fontSize",schemaPath:"#/properties/fontSize/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight!==void 0&&typeof e.fontWeight!="string"){let l={instancePath:r+"/fontWeight",schemaPath:"#/properties/fontWeight/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle!==void 0){let l=e.fontStyle;if(typeof l!="string"){let u={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}if(!(l==="normal"||l==="italic"||l==="oblique")){let u={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/enum",keyword:"enum",params:{allowedValues:xu.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};t===null?t=[u]:t.push(u),s++}}if(e.lineHeight!==void 0&&typeof e.lineHeight!="number"){let l={instancePath:r+"/lineHeight",schemaPath:"#/properties/lineHeight/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.align!==void 0&&typeof e.align!="string"){let l={instancePath:r+"/align",schemaPath:"#/properties/align/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.wordWrap!==void 0&&typeof e.wordWrap!="boolean"){let l={instancePath:r+"/wordWrap",schemaPath:"#/properties/wordWrap/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.breakWords!==void 0&&typeof e.breakWords!="boolean"){let l={instancePath:r+"/breakWords",schemaPath:"#/properties/breakWords/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.wordWrapWidth!==void 0&&typeof e.wordWrapWidth!="number"){let l={instancePath:r+"/wordWrapWidth",schemaPath:"#/properties/wordWrapWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeColorId!==void 0&&typeof e.strokeColorId!="string"){let l={instancePath:r+"/strokeColorId",schemaPath:"#/properties/strokeColorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.strokeAlpha!==void 0&&typeof e.strokeAlpha!="number"){let l={instancePath:r+"/strokeAlpha",schemaPath:"#/properties/strokeAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeWidth!==void 0&&typeof e.strokeWidth!="number"){let l={instancePath:r+"/strokeWidth",schemaPath:"#/properties/strokeWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.shadow!==void 0){let l=e.shadow;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.colorId===void 0){let u={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[u]:t.push(u),s++}for(let u in l)if(!(u==="colorId"||u==="alpha"||u==="blur"||u==="offsetX"||u==="offsetY")){let c={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(l.colorId!==void 0){let u=l.colorId;if(typeof u=="string"){if(je(u)<1){let c={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.push(c),s++}}if(l.alpha!==void 0){let u=l.alpha;if(typeof u=="number"){if(u>1||isNaN(u)){let c={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[c]:t.push(c),s++}if(u<0||isNaN(u)){let c={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}}if(l.blur!==void 0){let u=l.blur;if(typeof u=="number"){if(u<0||isNaN(u)){let c={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}}if(l.offsetX!==void 0&&typeof l.offsetX!="number"){let u={instancePath:r+"/shadow/offsetX",schemaPath:"#/properties/shadow/properties/offsetX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}if(l.offsetY!==void 0&&typeof l.offsetY!="number"){let u={instancePath:r+"/shadow/offsetY",schemaPath:"#/properties/shadow/properties/offsetY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return ws.errors=t,s===0}function kp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ws(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ws.errors:t.concat(ws.errors),s=t.length),kp.errors=t,s===0}var vp=Ap;var sw={type:"object",properties:{x:{type:"integer"},y:{type:"integer"},anchorX:{type:"number"},anchorY:{type:"number"},scaleX:{type:"number"},scaleY:{type:"number"},rotation:{type:"number"},originX:{type:"number"},originY:{type:"number"}},additionalProperties:!1};function ks(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!ar.call(sw.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.x!==void 0){let i=e.x;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.y!==void 0){let i=e.y;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ks.errors=t,s===0}function Ap(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ks(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ks.errors:t.concat(ks.errors),s=t.length),Ap.errors=t,s===0}var Pp=xp;function vs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return vs.errors=t,s===0}function xp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return vs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?vs.errors:t.concat(vs.errors),s=t.length),xp.errors=t,s===0}var zt=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Bt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),lr=e=>e===void 0?void 0:structuredClone(e),ow=Object.freeze({achievement:"achievements",animation:"animations",character:"characters",color:"colors",control:"controls",font:"fonts",image:"images",layout:"layouts",particle:"particles",sound:"sounds",spritesheet:"spritesheets",textStyle:"textStyles",transform:"transforms",video:"videos"}),iw=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),aw=Object.freeze({background:Eu,bgm:Ru,character:Cu,choice:_u,cleanAll:ju,control:Du,dialogue:Mu,form:Vu,layout:Uu,screen:zu,sfx:Gu,visual:Xu,voice:Ku}),lw=Object.freeze({achievement:Qu,animation:ep,character:tp,color:sp,control:ip,font:lp,image:up,layout:dp,particle:mp,sound:hp,spritesheet:bp,textStyle:wp,transform:vp,video:Pp}),cw=new Set(["files","language","patches"]),uw=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),pw=new Set(["lineId","mode","payload","type"]),dw=new Set(["mode","payload","sceneId","type"]),fw=new Set(["mode","operation","payload","resourceId","type"]),mw=new Set(["fileId","mimeType"]),B=(e,r)=>{throw new Error(`Invalid l10nData at ${e}: ${r}`)},Ye=(e,r)=>{Bt(e)||B(r,"expected an object")},Ri=(e,r)=>{Array.isArray(e)||B(r,"expected an array")},lt=(e,r)=>{(typeof e!="string"||e.length===0)&&B(r,"expected a non-empty string")},Op=(e,r)=>{typeof e!="string"&&B(r,"expected a string")},Qe=(e,r,n)=>{for(let o of Object.keys(e))r.has(o)||B(`${n}.${o}`,"unknown field")},Ze=(e,r,n)=>{for(let o of r)zt(e,o)||B(n,`missing required field "${o}"`)},yw=e=>e.replaceAll("~1","/").replaceAll("~0","~"),hw=(e,r)=>{let n=(r?.instancePath??"").split("/").slice(1).map(yw);return r?.keyword==="required"?n.push(r.params.missingProperty):r?.keyword==="additionalProperties"&&n.push(r.params.additionalProperty),n.reduce((o,a)=>/^\d+$/.test(a)?`${o}[${a}]`:`${o}.${a}`,e)},gw=(e=[])=>e.filter(r=>!["anyOf","if","not","oneOf"].includes(r.keyword)).reduce((r,n)=>{if(r===void 0)return n;let o=n.instancePath.split("/").length,a=r.instancePath.split("/").length;return o>a?n:r},void 0)??e[0],Cp=({value:e,validator:r,path:n,contract:o})=>{if(r(e))return;let a=gw(r.errors);B(hw(n,a),`does not match ${o}: ${a?.message??"schema validation failed"}`)},As=(e,r,n=new WeakSet)=>{if(typeof e=="number"){Number.isFinite(e)||B(r,"expected a finite number");return}if(!(e===null||typeof e!="object"||n.has(e))){if(n.add(e),Array.isArray(e)){e.forEach((o,a)=>As(o,`${r}[${a}]`,n));return}Object.entries(e).forEach(([o,a])=>As(a,`${r}.${o}`,n))}},Je=(e,r)=>{e===""&&B(r,"expected a non-empty resourceId")},bw=(e,r,n)=>{let o=(s,i)=>Je(s?.resourceId,`${i}.resourceId`),a=(s,i)=>(s??[]).forEach((l,u)=>Je(l?.resourceId,`${i}[${u}].resourceId`)),t=(s,i)=>{Je(s?.resourceId,`${i}.resourceId`),a(s?.sounds,`${i}.sounds`)};switch(e){case"background":Je(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"bgm":case"voice":t(r,n);break;case"sfx":a(r.items,`${n}.items`),(r.channels??[]).forEach((s,i)=>a(s?.sounds,`${n}.channels[${i}].sounds`));break;case"character":(r.items??[]).forEach((s,i)=>{(s.sprites??[]).forEach((l,u)=>Je(l?.resourceId,`${n}.items[${i}].sprites[${u}].resourceId`)),o(s.animations,`${n}.items[${i}].animations`)});break;case"choice":case"form":case"layout":Je(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"control":Je(r.resourceId,`${n}.resourceId`);break;case"dialogue":Je(r.ui?.resourceId,`${n}.ui.resourceId`),o(r.ui?.animations,`${n}.ui.animations`),(r.character?.sprite?.items??[]).forEach((s,i)=>Je(s?.resourceId,`${n}.character.sprite.items[${i}].resourceId`)),o(r.character?.sprite?.animations,`${n}.character.sprite.animations`);break;case"screen":o(r.animations,`${n}.animations`);break;case"visual":(r.items??[]).forEach((s,i)=>{Je(s?.resourceId,`${n}.items[${i}].resourceId`),o(s?.animations,`${n}.items[${i}].animations`)});break;default:break}},ct=(e,r)=>{lt(e,r),(e==="__proto__"||e==="constructor"||e==="prototype")&&B(r,`"${e}" is not a safe ID`)},Iw=(e,r)=>{lt(e,r),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&B(r,"must be a safe single filename")},Ut=(e,r)=>{if(Object.is(e,r))return!0;if(Array.isArray(e)||Array.isArray(r))return!Array.isArray(e)||!Array.isArray(r)?!1:e.length===r.length&&e.every((a,t)=>Ut(a,r[t]));if(!Bt(e)||!Bt(r))return!1;let n=Object.keys(e).sort(),o=Object.keys(r).sort();return Ut(n,o)&&n.every(a=>Ut(e[a],r[a]))},Ps=(e,r=new Set,n=new WeakSet)=>{if(Array.isArray(e))return e.forEach(o=>Ps(o,r,n)),r;if(!Bt(e)||n.has(e))return r;n.add(e);for(let[o,a]of Object.entries(e))o==="fileId"&&typeof a=="string"&&r.add(a),Ps(a,r,n);return r},ww=e=>{let r=new Map;for(let[n,o]of Object.entries(e?.story?.scenes??{}))for(let[a,t]of Object.entries(o?.sections??{}))for(let[s,i]of(t?.lines??[]).entries()){if(typeof i?.id!="string")continue;let l=r.get(i.id)??[];l.push({sceneId:n,sectionId:a,lineIndex:s,line:i}),r.set(i.id,l)}return r},$p=(e,r,n)=>{let o=e.get(r)??[];return o.length===0&&B(n,`lineId "${r}" does not exist in projectData`),o.length>1&&B(n,`lineId "${r}" is not globally unique in projectData`),o[0]},_p=(e,r)=>e.story.scenes[r.sceneId].sections[r.sectionId].lines[r.lineIndex],Ep=e=>({items:(e?.items??[]).map(r=>({id:r?.id,events:r?.events}))}),Sp=e=>{let r=lr(e??{});delete r.resourceId,delete r.animations;for(let n of Object.values(r.fields??{}))Bt(n)&&delete n.placeholder;return r},kw=(e,r,n,o)=>{e==="choice"&&!Ut(Ep(r),Ep(n))&&B(o,"choice item IDs and events must remain identical to the source action"),e==="form"&&!Ut(Sp(r),Sp(n))&&B(o,"form behavior must remain identical; only presentation fields and placeholders may change")},vw=({patch:e,path:r,lineIndex:n})=>{Qe(e,uw,r),Ze(e,["type","lineId","actionType","payload"],r),ct(e.lineId,`${r}.lineId`),lt(e.actionType,`${r}.actionType`),Ye(e.payload,`${r}.payload`),e.mode!==void 0&&e.mode!=="replace"&&B(`${r}.mode`,'line.action supports only "replace"'),iw.has(e.actionType)||B(`${r}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let o=$p(n,e.lineId,`${r}.lineId`),a=o.line?.actions?.[e.actionType];return a===void 0&&B(`${r}.actionType`,`source line "${e.lineId}" does not contain action "${e.actionType}"`),e.actionType==="dialogue"?((!Array.isArray(e.ignoreFields)||e.ignoreFields.length!==1||e.ignoreFields[0]!=="content")&&B(`${r}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),zt(e.payload,"content")&&B(`${r}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&B(`${r}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),kw(e.actionType,a,e.payload,`${r}.payload`),Cp({value:e.payload,validator:aw[e.actionType],path:`${r}.payload`,contract:`the ${e.actionType} presentation-action schema`}),As(e.payload,`${r}.payload`),bw(e.actionType,e.payload,`${r}.payload`),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:o,patch:e}},Aw=(e,r)=>{Ri(e,r),e.forEach((n,o)=>{Ye(n,`${r}[${o}]`),Qe(n,new Set(["text"]),`${r}[${o}]`),Ze(n,["text"],`${r}[${o}]`),Op(n.text,`${r}[${o}].text`)})},Pw=({patch:e,path:r,lineIndex:n})=>{Qe(e,pw,r),Ze(e,["type","lineId","payload"],r),ct(e.lineId,`${r}.lineId`),Ye(e.payload,`${r}.payload`),Qe(e.payload,new Set(["content"]),`${r}.payload`),Ze(e.payload,["content"],`${r}.payload`),Aw(e.payload.content,`${r}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&B(`${r}.mode`,'line.dialogue supports only "replace"');let o=$p(n,e.lineId,`${r}.lineId`);return o.line?.actions?.dialogue===void 0&&B(`${r}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:o,patch:e}},xw=({patch:e,path:r,projectData:n})=>(Qe(e,dw,r),Ze(e,["type","mode","sceneId","payload"],r),ct(e.sceneId,`${r}.sceneId`),Ye(e.payload,`${r}.payload`),Qe(e.payload,new Set(["name"]),`${r}.payload`),Ze(e.payload,["name"],`${r}.payload`),Op(e.payload.name,`${r}.payload.name`),e.mode!=="patch"&&B(`${r}.mode`,'story.scene requires "patch"'),zt(n?.story?.scenes??{},e.sceneId)||B(`${r}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),Ew=(e,r,n)=>{Ye(r,n),["font","image","sound","spritesheet","video"].includes(e)&<(r.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(r.width)||B(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||B(`${n}.height`,"expected an integer")),e==="spritesheet"&&(Ye(r.jsonData,`${n}.jsonData`),Number.isInteger(r.width)||B(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||B(`${n}.height`,"expected an integer")),e==="color"&&(typeof r.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(r.hex))&&B(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),Cp({value:r,validator:lw[e],path:n,contract:`the resource.${e} schema`}),As(r,n)},Sw=({patch:e,path:r,projectData:n,packageFileIds:o,canonicalFileIds:a})=>{Qe(e,fw,r),Ze(e,["type","resourceId","payload"],r),ct(e.resourceId,`${r}.resourceId`);let t=e.type.slice(9),s=ow[t];s||B(`${r}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&B(`${r}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&B(`${r}.operation`,'the only resource operation is "add"'),Ew(t,e.payload,`${r}.payload`);let i=n?.resources?.[s]??{},l=zt(i,e.resourceId);e.operation==="add"&&l&&B(`${r}.resourceId`,`cannot add existing ${t} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&B(`${r}.resourceId`,`cannot replace missing ${t} resource "${e.resourceId}"`);for(let u of Ps(e.payload))!o.has(u)&&!a.has(u)&&B(`${r}.payload`,`fileId "${u}" is not declared by this package or the canonical project`);return{kind:"resource",key:`${e.type}:${e.resourceId}`,collectionName:s,path:r,patch:e}},Rp=({resources:e,collectionName:r,resourceId:n,path:o,label:a})=>{n!==void 0&&(typeof n!="string"||n.length===0||!zt(e?.[r]??{},n))&&B(o,`${a} resource "${n}" was not found`)},Rw=(e,r)=>{let n=lr(e);for(let a of r.patches)a.kind==="resource"&&(n.resources[a.collectionName]??={},n.resources[a.collectionName][a.patch.resourceId]=lr(a.patch.payload));let o=n.resources??{};for(let a of r.patches){if(a.patch.type!=="resource.textStyle")continue;let t=a.patch.payload,s=Array.isArray(t.fontId)?t.fontId:[t.fontId];s.forEach((i,l)=>Rp({resources:o,collectionName:"fonts",resourceId:i,path:`${a.path}.payload.fontId${s.length>1?`[${l}]`:""}`,label:"font"}));for(let[i,l]of[["colorId",t.colorId],["strokeColorId",t.strokeColorId],["shadow.colorId",t.shadow?.colorId]])Rp({resources:o,collectionName:"colors",resourceId:l,path:`${a.path}.payload.${i}`,label:"color"})}},Ow=({patch:e,path:r,projectData:n,lineIndex:o,packageFileIds:a,canonicalFileIds:t})=>{if(Ye(e,r),lt(e.type,`${r}.type`),e.type==="line.action")return vw({patch:e,path:r,lineIndex:o});if(e.type==="line.dialogue")return Pw({patch:e,path:r,lineIndex:o});if(e.type==="story.scene")return xw({patch:e,path:r,projectData:n});if(e.type.startsWith("resource."))return Sw({patch:e,path:r,projectData:n,packageFileIds:a,canonicalFileIds:t});B(`${r}.type`,`unsupported patch type "${e.type}"`)},Cw=(e,r)=>{Ri(e,r);let n=new Set;return e.forEach((o,a)=>{let t=`${r}[${a}]`;Ye(o,t),Qe(o,mw,t),Ze(o,["fileId"],t),Iw(o.fileId,`${t}.fileId`),o.mimeType!==void 0&&(typeof o.mimeType!="string"||o.mimeType.length===0)&&B(`${t}.mimeType`,"expected a non-empty string"),n.has(o.fileId)&&B(`${t}.fileId`,`duplicate fileId "${o.fileId}"`),n.add(o.fileId)}),n},$w=({packageId:e,packageData:r,path:n,projectData:o,lineIndex:a,canonicalFileIds:t})=>{Ye(r,n),Qe(r,cw,n),Ze(r,["language","files","patches"],n),lt(r.language,`${n}.language`);let s=Cw(r.files,`${n}.files`);Ri(r.patches,`${n}.patches`);let i=new Set,l=r.patches.map((u,c)=>{let p=Ow({patch:u,path:`${n}.patches[${c}]`,projectData:o,lineIndex:a,packageFileIds:s,canonicalFileIds:t});return i.has(p.key)&&B(`${n}.patches[${c}]`,`duplicate patch target "${p.key}"`),i.add(p.key),p});return{id:e,data:r,fileIds:s,patches:l}},Tp=({projectData:e,l10nData:r})=>{if(r===void 0)return{packages:new Map};Ye(r,"l10nData"),Qe(r,new Set(["packages"]),"l10nData"),Ze(r,["packages"],"l10nData"),Ye(r.packages,"l10nData.packages");let n=ww(e),o=Ps(e?.resources??{}),a=new Map,t=new Map;for(let[s,i]of Object.entries(r.packages)){ct(s,`l10nData.packages.${s}`);let l=$w({packageId:s,packageData:i,path:`l10nData.packages.${s}`,projectData:e,lineIndex:n,canonicalFileIds:o});for(let u of l.fileIds){o.has(u)&&B(`l10nData.packages.${s}.files`,`fileId "${u}" conflicts with a canonical project file`);let c=t.get(u);c!==void 0&&B(`l10nData.packages.${s}.files`,`fileId "${u}" is already declared by package "${c}"`),t.set(u,s)}Rw(e,l),a.set(s,l)}return{packages:a}},_w=(e,r)=>{let{collectionName:n,patch:o}=r;e.resources[n]??={},e.resources[n][o.resourceId]=lr(o.payload)},Tw=(e,r)=>{let{patch:n}=r,o=e.story.scenes[n.sceneId];o.name=n.payload.name},jw=(e,r)=>{let{location:n,patch:o}=r,a=_p(e,n);if(o.actionType!=="dialogue"){a.actions[o.actionType]=lr(o.payload);return}let t=lr(n.line.actions.dialogue.content);a.actions.dialogue=lr(o.payload),t!==void 0&&(a.actions.dialogue.content=t)},Nw=(e,r)=>{let{location:n,patch:o}=r,a=_p(e,n);a.actions.dialogue.content=lr(o.payload.content)},jp=({projectData:e,l10nData:r})=>{let n=Tp({projectData:e,l10nData:r});return[{l10nId:null,language:null},...Array.from(n.packages.values(),o=>({l10nId:o.id,language:o.data.language}))]},xs=({projectData:e,l10nData:r,l10nId:n=null})=>{let o=Tp({projectData:e,l10nData:r});if(n!==null&&(ct(n,"l10nId"),o.packages.has(n)||B("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=lr(e),t=o.packages.get(n).patches;return t.filter(s=>s.kind==="resource").forEach(s=>_w(a,s)),t.filter(s=>s.kind==="story.scene").forEach(s=>Tw(a,s)),t.filter(s=>s.kind==="line.action").forEach(s=>jw(a,s)),t.filter(s=>s.kind==="line.dialogue").forEach(s=>Nw(a,s)),a};var Oi=Object.freeze({auto:1e3,skip:80,authored:1e3}),Ht=new Set(["startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),Np=new WeakMap,Dw=new ArrayBuffer(8),Ci=new DataView(Dw),Lw=e=>{let r=Np.get(e);if(r)return r;let n={dispatchDepth:0};return Np.set(e,n),n},Mw=e=>{if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=Object.getPrototypeOf(e);return r===Object.prototype||r===null},qw=(e,r)=>Object.keys(e).length===r.length&&r.every(o=>Object.prototype.hasOwnProperty.call(e,o)),xr=(e,r,n)=>{if(!Mw(e)||!qw(e,r))throw new TypeError(`${n} has an invalid shape`)},Yt=(e,r)=>{if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${r} must be a non-negative safe integer`)},Gt=(e,r)=>{if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new TypeError(`${r} must be a finite non-negative number`)},Dp=e=>{if(Gt(e,"duration"),e===0)return 0n;Ci.setFloat64(0,e,!1);let r=Ci.getUint32(0,!1),n=Ci.getUint32(4,!1),o=r>>>20&2047,a=BigInt(r&1048575)<<32n|BigInt(n);if(o===0)return a;let t=1n<<52n|a,s=o-1;return t<<BigInt(s)},Vw=e=>structuredClone(e),$i=(e,r)=>e===r?!0:!e||!r||e.mode!==r.mode||e.kind!==r.kind?!1:e.mode==="legacy"?e.instanceToken===r.instanceToken:e.delayMs!==r.delayMs?!1:e.kind==="auto"?e.contentKey===r.contentKey&&e.owner.sessionId===r.owner.sessionId&&e.owner.lineEntryId===r.owner.lineEntryId:e.kind==="skip"?e.owner.sessionId===r.owner.sessionId:e.trigger===r.trigger&&e.owner.lineEntryId===r.owner.lineEntryId,_i=(e,r,n)=>{if(r===null)return null;if(e==="auto"){if(xr(r,["owner","delayMs","contentKey"],"auto timer"),xr(r.owner,["sessionId","lineEntryId"],"auto timer owner"),Yt(r.owner.sessionId,"auto owner sessionId"),Yt(r.owner.lineEntryId,"auto owner lineEntryId"),r.owner.lineEntryId!==n)throw new TypeError("auto owner lineEntryId must match schedule lineEntryId");if(Gt(r.delayMs,"auto delayMs"),typeof r.contentKey!="string")throw new TypeError("auto contentKey must be a string")}else if(e==="skip")xr(r,["owner","delayMs"],"skip timer"),xr(r.owner,["sessionId"],"skip timer owner"),Yt(r.owner.sessionId,"skip owner sessionId"),Gt(r.delayMs,"skip delayMs");else{if(xr(r,["owner","delayMs","trigger"],"authored timer"),xr(r.owner,["lineEntryId"],"authored timer owner"),Yt(r.owner.lineEntryId,"authored owner lineEntryId"),r.owner.lineEntryId!==n)throw new TypeError("authored owner lineEntryId must match schedule lineEntryId");if(Gt(r.delayMs,"authored delayMs"),r.trigger!=="fromStart"&&r.trigger!=="fromComplete")throw new TypeError('authored trigger must be "fromStart" or "fromComplete"')}return{mode:"reconciled",kind:e,...Vw(r)}},Fw=e=>{if(xr(e,["contractVersion","status","lineEntryId","timers"],"playback schedule"),e.contractVersion!==1)throw new TypeError("playback schedule contractVersion must be 1");if(e.status!=="settled"&&e.status!=="unsettled")throw new TypeError('playback schedule status must be "settled" or "unsettled"');if(Yt(e.lineEntryId,"playback schedule lineEntryId"),e.status==="unsettled"){if(e.timers!==null)throw new TypeError("unsettled playback schedule timers must be null");return{contractVersion:1,status:"unsettled",lineEntryId:e.lineEntryId,timers:null}}xr(e.timers,["auto","skip","authored"],"playback schedule timers");let r={auto:_i("auto",e.timers.auto,e.lineEntryId),skip:_i("skip",e.timers.skip,e.lineEntryId),authored:_i("authored",e.timers.authored,e.lineEntryId)};if(r.auto&&r.skip)throw new TypeError("playback schedule cannot enable auto and skip together");return{contractVersion:1,status:"settled",lineEntryId:e.lineEntryId,timers:r}},Ti=e=>({descriptor:e,remainingQuanta:Dp(e.delayMs)}),Es=["auto","skip","authored"],Lp=({ticker:e,dispatchAutomaticAttempt:r,classifyAutomaticAttemptError:n=()=>"preCommit"})=>{if(!e||typeof e.add!="function"||typeof e.remove!="function")throw new TypeError("playback scheduler requires a ticker with add/remove");if(typeof r!="function")throw new TypeError("playback scheduler requires dispatchAutomaticAttempt");let o=Lw(e),a=!0,t={},s={},i=null,l=null,u=null,c=null,p=!1,m=!1,d="legacy",f={auto:null,skip:null,authored:null},y={auto:null,skip:null,authored:null},g={auto:0,skip:0,authored:0},h=()=>Es.some(N=>f[N]),w=()=>{l=null,u=null},b=()=>{p||(p=!0,queueMicrotask(()=>{p=!1;let N=u;if(N){if(o.dispatchDepth>0||m){b();return}a&&t===N.lifecycleToken&&s===N.generationToken&&i===N.callback&&h()&&!c&&(l=N.registrationToken),u===N&&(u=null)}}))},E=()=>{if(!c)return;let N=c;e.remove(N),c===N&&(c=null)},k=()=>{let N=i;N&&(w(),i=null,c=N,e.remove(N),c===N&&(c=null))},v=()=>{f={auto:null,skip:null,authored:null}},x=()=>{v(),s={},m||k()},$=N=>{if(o.dispatchDepth>0||m){u=N,b();return}a&&t===N.lifecycleToken&&s===N.generationToken&&i===N.callback&&h()&&(l=N.registrationToken),u===N&&(u=null)},T=()=>{if(!a||!h()||i)return;E();let N=t,se=s,X={},V=Q=>{if(!a||N!==t||se!==s||X!==l||V!==i||m)return;if(!Q||typeof Q.deltaMS!="number"||!Number.isFinite(Q.deltaMS)||Q.deltaMS<0)throw new TypeError("playback ticker deltaMS must be a finite non-negative number");let ne=Dp(Q.deltaMS);m=!0,o.dispatchDepth+=1;let fe=s,Z=null;try{let O=[];for(let _ of Es){let F=f[_];F&&(F.remainingQuanta<=ne?(O.push({kind:_,descriptor:F.descriptor,revision:g[_]}),f[_]=null):F.remainingQuanta-=ne)}if(O.length>0){try{r({dueKinds:O.map(({kind:_})=>_)})}catch(_){let F=n(_);if(d==="reconciled"&&F==="preCommit")for(let{kind:te,descriptor:he}of O)y[te]=he;else d==="legacy"&&v();throw _}if(d==="legacy")for(let _ of O)_.kind==="skip"&&g.skip===_.revision&&f.skip===null&&(f.skip=Ti(_.descriptor))}}catch(O){Z=O}finally{o.dispatchDepth-=1,m=!1;try{fe===s?h()?T():k():i===V&&!h()&&k()}catch(O){throw Z?new AggregateError([Z,O],"Playback attempt and ticker cleanup both failed"):O}}if(Z)throw Z},H={callback:V,lifecycleToken:N,generationToken:se,registrationToken:X};i=V,u=H;try{e.add(V)}catch(Q){throw i=null,w(),v(),s={},c=V,Q}$(H)},S=N=>{g[N]+=1,f[N]=null,y[N]=null,!h()&&!m&&k()},D=(N,se)=>{Gt(se,`${N} delay`),d="legacy",g[N]+=1,y[N]=null,f[N]=Ti({mode:"legacy",kind:N,instanceToken:{},delayMs:se}),T()};return{handleLegacyEffect:N=>{switch(N.name){case"startAutoNextTimer":return D("auto",N.payload?.delay??Oi.auto),!0;case"clearAutoNextTimer":return S("auto"),!0;case"startSkipNextTimer":return D("skip",N.payload?.delay??Oi.skip),!0;case"clearSkipNextTimer":return S("skip"),!0;case"nextLineConfigTimer":return D("authored",N.payload?.delay??Oi.authored),!0;case"clearNextLineConfigTimer":return S("authored"),!0;default:return!1}},reconcilePlaybackScheduleV1:N=>{let se;try{se=Fw(N)}catch(V){try{x()}catch(H){throw new AggregateError([V,H],"Playback schedule validation and cleanup both failed")}throw V}if(d="reconciled",se.status==="unsettled"){v(),m||k();return}let X={};for(let V of Es){let H=se.timers[V],Q=y[V];if(Q&&(!H||!$i(Q,H))&&(y[V]=null),H&&y[V]&&$i(y[V],H)){X[V]=null;continue}let ne=f[V];X[V]=H&&ne&&$i(ne.descriptor,H)?ne:H?Ti(H):null}f=X,h()?T():m||k()},reset:()=>{let N=[i,c].filter((V,H,Q)=>V&&Q.indexOf(V)===H);t={},s={},w(),i=null,c=null,v(),y={auto:null,skip:null,authored:null};for(let V of Es)g[V]+=1;d="legacy",a=!0;let se=null,X=null;for(let V of N)try{e.remove(V)}catch(H){se??=H,X??=V}if(c=X,se)throw se},dispose:()=>{a=!1,t={},s={},w(),v(),y={auto:null,skip:null,authored:null};let N=[i,c].filter((V,H,Q)=>V&&Q.indexOf(V)===H);i=null,c=null;let se=null,X=null;for(let V of N)try{e.remove(V)}catch(H){se??=H,X??=V}if(c=X,se)throw se}}};var Uw=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),Bw=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),Mp="conditional",Ni=Symbol("conditionalAutoContinue"),zw=new Set(["sectionTransition","resetStoryAtSection"]),Yw=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),Gw=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),Hw=new Set(["nextLine","nextLineFromSystem"]),Xw=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),ji="form",Ww=new Set(["submitForm","cancelForm"]),Kw="showImageGalleryVariant",Jw="playMusicRoomTrack",Qw="startSceneReplay",Zw=new Set(["startAutoMode","stopAutoMode","toggleAutoMode","startSkipMode","stopSkipMode","toggleSkipMode","setAutoForwardDelay","setAutoForwardSpeed","setNextLineConfig","markLineCompleted","nextLine","nextLineFromSystem","jumpToLine","sectionTransition","resetStoryAtSection","loadSlot","rollbackByOffset","rollbackToLine","startSceneReplay","exitSceneReplay","updateProjectData","updateLocalizationPackage","submitForm","cancelForm"]),Ge=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),e0=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,Ss=e=>e?.type===Ni,Br=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,r0=(e,r)=>[...new Set([...Object.keys(e??{}),...Object.keys(r??{})])].some(o=>!Object.is(e?.[o],r?.[o]));function Di(e){let r=e0(),n,o=0,a=!1,t=0,s=null,i=0,l=!1,u=0,c=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g,h,w=null,b=!1,E=!1,k=0,v=new Map,{handlePendingEffects:x}=e;if(typeof x!="function")throw new TypeError("RouteEngine requires handlePendingEffects");let $=x.bind(x),T=typeof x.reconcilePlaybackScheduleV1=="function"?x.reconcilePlaybackScheduleV1.bind(x):null,S=typeof x.reset=="function"?x.reset.bind(x):null,D=typeof x.dispose=="function"?x.dispose.bind(x):null;if(T&&(!S||!D))throw new TypeError("reconcilePlaybackScheduleV1 requires reset and dispose capabilities");let U=I=>{if(E)throw new Error(`RouteEngine cannot ${I} during playback reconciliation`)},le=I=>{if(U(I),!a||!n)throw new Error(`RouteEngine ${I} requires an active engine`)},z=(I,A)=>{if(k===0)return;let R={preCommit:0,postCommitUnsettled:1,reconcileFailed:2},C=v.get(I);(C===void 0||R[A]>R[C])&&v.set(I,A)},ce=I=>{let A=v.get(I)??"preCommit";return v.delete(I),A},N=I=>{if(T){E=!0;try{let A=T(structuredClone(I));if(A!==null&&(typeof A=="object"||typeof A=="function")&&typeof A.then=="function")throw new TypeError("reconcilePlaybackScheduleV1 must complete synchronously")}finally{E=!1}}},se=()=>({contractVersion:1,status:"unsettled",lineEntryId:n?.selectPlaybackLineEntryId?.()??0,timers:null}),X=I=>{if(!(!T||!a||!n)){b=!0;try{N(se())}catch(A){if(I){let R=new AggregateError([I,A],"Playback work and schedule invalidation both failed");throw v.delete(I),z(R,"reconcileFailed"),R}throw z(A,"reconcileFailed"),A}}},V=()=>{if(!T||!b||!a||!n||i>0||l)return;let I;try{I=n.selectDesiredPlaybackTimers()}catch(A){throw z(A,"reconcileFailed"),X(A),A}try{N({contractVersion:1,status:"settled",lineEntryId:n.selectPlaybackLineEntryId(),timers:I})}catch(A){throw z(A,"reconcileFailed"),X(A),A}b=!1},H=(I=new Map,A=Date.now())=>new Map(Array.from(I.entries()).filter(([,R])=>A<R.expiresAt).map(([R,C])=>[R,{animation:structuredClone(C.animation),startedAt:C.startedAt,expiresAt:C.expiresAt}])),Q=(I=new Map)=>Array.from(I.values()).map(A=>structuredClone(A.animation)),ne=(I=Date.now())=>{d=new Map(Array.from(d.entries()).filter(([,A])=>I<A.expiresAt))},fe=()=>{if(a&&!(i>0||l)){l=!0;try{for(;n.selectPendingEffects().length>0;){let I=n.selectCurrentPointer()?.pointer??null,A=[...n.selectPendingEffects()],R=A.map(C=>C.name!=="handleLineActions"?C:{...C,payload:{...C.payload,pointer:structuredClone(I)}});n.clearPendingEffects();try{let C=T?R.filter(q=>!Ht.has(q.name)):R;C.length>0&&$(C)}catch(C){throw n.clearPendingEffects(),A.forEach(q=>{n.appendPendingEffect(q)}),z(C,"postCommitUnsettled"),X(C),C}}}finally{l=!1}V()}},Z=I=>{i+=1;let A=!1;try{let R=I();return A=!0,R}finally{i-=1,A&&fe()}},O=({initialState:I,namespace:A})=>{U("initialize");let R=n?.selectSystemState?.()?.global?.audioCommandId??0,{l10nData:C,...q}=I,Y=C===void 0?void 0:structuredClone(C),oe=structuredClone(I.projectData),ae=jp({projectData:oe,l10nData:Y}),Ie=q.global??{};if(!Ge(Ie))throw new Error("Malformed global state.");let Fe=Ie.runtime??{};if(!Ge(Fe))throw new Error("Malformed global.runtime.");let Se=Fe.localizationPackageId;if(Se!=null&&typeof Se!="string")throw new Error("localizationPackageId requires a string or null value");let Sr=new Set(ae.map(({l10nId:Yr})=>Yr).filter(Yr=>Yr!==null)),zr=typeof Se=="string"&&Sr.has(Se)?Se:null,Kt=xs({projectData:oe,l10nData:Y,l10nId:zr}),$s=yu({...q,global:{...Ie,localizationPackages:ae,runtime:{...Fe,localizationPackageId:zr}},projectData:Kt,initialAudioCommandId:R});S?.(),n=$s,o+=1,a=!0,t=0,s=at(A),i=0,l=!1,u=0,c=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g=oe,h=Y,w=zr,b=!0,E=!1,k=0,v.clear(),n.appendPendingEffect({name:"handleLineActions"}),fe()},_=()=>{U("dispose"),a&&(a=!1,o+=1,n?.clearPendingEffects?.(),i=0,l=!1,c=[],p=null,m=null,d=new Map,f=new Map,y=new Map,b=!1,v.clear(),D?.())},F=()=>s,te=()=>n.selectPresentationState(),he=()=>n.selectPresentationChanges(),Pe=I=>n.selectSectionLineChanges(I),ye=(I={})=>{le("rendering"),t+=1;let A=Date.now();ne(A);let R=f.size>0,C=H(d,A),q=R?H(f,A):new Map,oe={...n.selectRenderState({activePersistentAnimations:Q(C),restoredPersistentAnimations:Q(q)}),id:`render-${r}-${o}-${t}`};return y.set(oe.id,{builtAt:A,persistentAnimationSessions:new Map([...q.entries(),...C.entries()]),usedRestoredPersistentAnimationSessions:R}),oe},ue=(I={})=>ye(I),Er=(I={})=>ye(I),cr=I=>{if(!a||!n)return;let A=typeof I?.id=="string"&&I.id.length>0?I.id:null,R=A?y.get(A):null;A&&y.delete(A);let C=new Map;pl(I?.animations).forEach(q=>{let Y=vn(q);if(!Y)return;let oe=R?.persistentAnimationSessions?.get(Y)??d.get(Y),ae=Math.max(0,ml(q)),Ie=oe?.startedAt??R?.builtAt??Date.now();C.set(Y,{animation:structuredClone(q),startedAt:Ie,expiresAt:Ie+ae})}),d=C,R?.usedRestoredPersistentAnimationSessions&&(f=new Map)},Xt=()=>n.selectSystemState(),Bp=()=>n.selectAchievements(),zp=I=>n.selectAchievement(I),Mi=()=>n.selectSaveSlotMap(),Yp=I=>n.selectSaveSlot(I),Gp=I=>n.selectSaveSlotPage(I),Hp=()=>n.selectImageGallery(),Xp=()=>n.selectMusicRoom(),Wp=()=>n.selectSceneReplay(),Kp=()=>n.selectIsSceneReplayActive(),m0=()=>n.selectSkipMode(),y0=()=>n.selectAutoMode(),Jp=()=>n.selectRuntime(),Qp=()=>n.selectIsChoiceVisible(),Zp=()=>n.selectIsFormVisible(),ed=()=>n.selectActiveInteraction(),rd=()=>n.selectPendingEffects().some(I=>I?.name==="handleLineActions"||I?.name==="render"),qi=(I,A,R={})=>!Ge(A)||I!=="nextLine"?A:R.bypassChoice===!0?{...A,bypassChoice:!0}:R.interactionSource===ji?{...A,_interactionSource:ji}:A,td=(I={})=>({type:Ni,payload:qi("nextLine",{_conditionalContinuation:!0},I)}),Vi=(I,A)=>Ss(I)?{type:Ni,payload:{...I.payload,...A.payload}}:A,nd=I=>{I.savedCheckpointOccurrences.forEach(A=>{n.markSavedRollbackCheckpointTransient(A)}),I.savedCheckpointOccurrences=[]},sd=(I,A)=>{let R=p;return p=null,!R||!Br(R.pointer,I)||R.checkpointIndex!==A?.checkpointIndex||R.checkpointIdentity!==A?.checkpoint?[]:R.savedCheckpointOccurrences},od=I=>{let A=m;return!A||!Br(A.pointer,I)?null:(m=null,A)},id=({actionType:I,pointerBeforeAction:A,pointerAfterAction:R,cursorBeforeAction:C,cursorAfterAction:q,wasSceneReplayActive:Y,isSceneReplayActive:oe})=>{!R||!(!Br(A,R)||C?.checkpoint!==q?.checkpoint||C?.checkpointIndex!==q?.checkpointIndex||I==="jumpToLine")||(m={pointer:R,appendToPrevious:Hw.has(I)&&Y===oe&&A?.sectionId===R.sectionId&&A?.lineId!==R.lineId,reuseExistingOccurrence:Xw.has(I),forceNewOccurrence:I==="jumpToLine"})},Fi=I=>{I.markCurrentCheckpointTransient&&(n.markRollbackCheckpointTransient({checkpointIndex:I.rollbackCursor?.checkpointIndex,checkpointIdentity:I.rollbackCursor?.checkpoint,sectionId:I.pointer?.sectionId,lineId:I.pointer?.lineId}),nd(I))},ad=(I,A,R)=>Yw.has(I)?I==="resetStoryAtSection"?R?.checkpoint!==A?.checkpoint:R?.checkpoint!==A?.checkpoint&&R?.checkpointIndex>A?.checkpointIndex:!1,ld=I=>{let A=c.at(-1);if(!A?.markCurrentCheckpointTransient)return;let R=n.selectSaveSlot({slotId:I?.slotId});R&&A.savedCheckpointOccurrences.push({slotId:I.slotId,saveSlotIdentity:R,checkpointIndex:A.rollbackCursor?.checkpointIndex,sectionId:A.pointer?.sectionId,lineId:A.pointer?.lineId})},cd=(I,A,R)=>{let C=c.at(-1);if(!C)return;let q=n.selectCurrentPointer()?.pointer,Y=ad(I,A,R);if(Br(C.pointer,q)){let oe=R?.checkpoint!==A?.checkpoint||R?.checkpointIndex!==A?.checkpointIndex;Y||oe&&Gw.has(I)?(Fi(C),C.pointer=q,C.rollbackCursor=R,C.markCurrentCheckpointTransient=Y,C.savedCheckpointOccurrences=[]):oe&&I==="updateProjectData"&&(C.rollbackCursor=R);return}Fi(C),C.pointer=q,C.rollbackCursor=n.selectRollbackCursor?.()??null,C.markCurrentCheckpointTransient=Y,C.savedCheckpointOccurrences=[]},Wt=(I,A)=>{if(le(`action "${I}"`),!n[I])return;let R=A,C,q;if(I==="updateProjectData")Ui(A),C=structuredClone(A.projectData),R={...A,projectData:xs({projectData:C,l10nData:h,l10nId:w})},Ui(R);else if(I==="updateLocalizationPackage"){if(q=ud(A),q===w)return;R={l10nId:q,projectData:xs({projectData:g,l10nData:h,l10nId:q})}}zw.has(I)&&(u+=1);let Y=n.selectAutoMode(),oe=Y?n.selectRuntime():null,ae=n.selectIsSceneReplayActive?.()===!0,Ie=Bw.has(I)?H(d):null,Fe=n.selectCurrentPointer()?.pointer??null,Se=n.selectRollbackCursor?.()??null,Sr=!1,zr;try{zr=n[I](R),Sr=!0}catch(ut){throw z(ut,"preCommit"),ut}C!==void 0&&(g=C),q!==void 0&&(w=q),Uw.has(I)&&(f=Ie??new Map,d=new Map);let Kt=n.selectIsSceneReplayActive?.()===!0;ae!==Kt&&(d=new Map,f=new Map);let $s=n.selectCurrentPointer()?.pointer??null,Yr=n.selectRollbackCursor?.()??null;I==="saveSlot"&&ld(A),cd(I,Se,Yr),id({actionType:I,pointerBeforeAction:Fe,pointerAfterAction:$s,cursorBeforeAction:Se,cursorAfterAction:Yr,wasSceneReplayActive:ae,isSceneReplayActive:Kt});let Pd=n.selectAutoMode()&&(I==="updateVariable"||Y&&r0(oe,n.selectRuntime()));(Zw.has(I)||Pd)&&(b=!0);try{fe()}catch(ut){throw Sr&&z(ut,"postCommitUnsettled"),ut}return zr},Ui=I=>{if(!Object.prototype.hasOwnProperty.call(I??{},"projectData"))throw new Error("updateProjectData requires projectData");jr(I?.projectData?.resources?.variables??{}),gt(I.projectData),bt(I.projectData),It(I.projectData)},ud=I=>{if(!Ge(I))throw new Error("updateLocalizationPackage requires an object payload");let A=Object.keys(I);if(A.length!==1||A[0]!=="l10nId")throw new Error("updateLocalizationPackage only accepts l10nId");if(I.l10nId!==null&&(typeof I.l10nId!="string"||I.l10nId.length===0))throw new Error("updateLocalizationPackage requires a non-empty l10nId or null");return I.l10nId},pd=(I,A,R)=>{let C=n.selectCurrentPointer()?.pointer;A!==C||R!==u||(n.appendPendingEffect({name:"clearAutoNextTimer"}),n.appendPendingEffect({name:"clearNextLineConfigTimer"}),Wt("nextLineFromSystem",I.payload))},dd=()=>({renderSequence:t,conditionalRoutingSequence:u,rollbackNavigationContexts:c.slice(),pendingRollbackLineEntrySaveHandoff:p,pendingDialogueHistoryLineEntry:m,persistentAnimationSessions:new Map(d),restoredPersistentAnimationSessions:new Map(f),renderPersistentAnimationMetadata:new Map(y),canonicalProjectData:g,localizationPackageId:w,playbackScheduleDirty:b}),fd=I=>{t=I.renderSequence,u=I.conditionalRoutingSequence,c=I.rollbackNavigationContexts.slice(),p=I.pendingRollbackLineEntrySaveHandoff,m=I.pendingDialogueHistoryLineEntry,d=new Map(I.persistentAnimationSessions),f=new Map(I.restoredPersistentAnimationSessions),y=new Map(I.renderPersistentAnimationMetadata),g=I.canonicalProjectData,w=I.localizationPackageId,b=I.playbackScheduleDirty},Bi=(I,A={})=>(le("action batch"),Z(()=>{let R=dd();try{return n[no](()=>{let C,q=n.selectCurrentPointer()?.pointer??null,Y=n.selectRollbackCursor?.()??null,oe=u,ae={pointer:q,rollbackCursor:Y,markCurrentCheckpointTransient:A.rollbackSource==="line",savedCheckpointOccurrences:A.savedCheckpointOccurrences?.slice()??[]};c.push(ae);try{n.beginRollbackActionBatch({source:A.rollbackSource});try{C=I()}finally{n.endRollbackActionBatch({})}Ss(C)&&pd(C,q,oe);let Ie=n.selectCurrentPointer()?.pointer??null;A.rollbackSource==="line"&&Br(q,Ie)&&n.recordCurrentDialogueHistory({savedCheckpointOccurrences:ae.savedCheckpointOccurrences,appendToPrevious:A.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:A.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:A.dialogueHistoryForceNewOccurrence===!0})}finally{c.pop(),(!Br(q,ae.pointer)||Y?.checkpoint!==ae.rollbackCursor?.checkpoint)&&ae.markCurrentCheckpointTransient&&ae.savedCheckpointOccurrences.length>0&&(p={pointer:ae.pointer,checkpointIndex:ae.rollbackCursor?.checkpointIndex,checkpointIdentity:ae.rollbackCursor?.checkpoint,savedCheckpointOccurrences:ae.savedCheckpointOccurrences})}})}catch(C){throw fd(R),C}})),Rs=(I,A,R,C={})=>{if(I===Mp)return Bi(()=>{let q=Os(R),Y=lo({[I]:A},q);return zi(Y[I],R,C)},C);Wt(I,A)},md=(I,A)=>{if(I!=="nextLineFromSystem")return Rs(I,A);k+=1;try{return Rs(I,A)}finally{k=Math.max(0,k-1)}},Os=I=>{if(!I)return{variables:n.selectAllVariables?n.selectAllVariables():void 0,runtime:n.selectRuntime?n.selectRuntime():{}};if(Object.prototype.hasOwnProperty.call(I,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".');let{_event:A,...R}=I,C=n.selectAllVariables?n.selectAllVariables():void 0;return{...R,_event:A,variables:C,runtime:n.selectRuntime?n.selectRuntime():{}}},yd=I=>{if(!Ge(I))return{templatePayload:I,literalTargetIds:null};let A=n.selectImageGalleryConfig();if(!Array.isArray(A?.groups))return{templatePayload:I,literalTargetIds:null};let R=typeof I.groupId=="string"?A.groups.find(q=>q.id===I.groupId):void 0;if(!R)return{templatePayload:I,literalTargetIds:null};let C=typeof I.variantId=="string"&&R.variants.some(q=>q.id===I.variantId);return{templatePayload:{...I,groupId:null,...C?{variantId:null}:{}},literalTargetIds:{groupId:I.groupId,...C?{variantId:I.variantId}:{}}}},hd=I=>!Ge(I)||typeof I.trackId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectMusicRoomConfig()?.tracks?.some(C=>C.id===I.trackId)?{templatePayload:{...I,trackId:null},literalTargetIds:{trackId:I.trackId}}:{templatePayload:I,literalTargetIds:null},gd=I=>!Ge(I)||typeof I.sceneId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectSceneReplayConfig()?.replays?.some(C=>C.sceneId===I.sceneId)?{templatePayload:{...I,sceneId:null},literalTargetIds:{sceneId:I.sceneId}}:{templatePayload:I,literalTargetIds:null},bd=I=>{if(!Ge(I))throw new Error("conditional action payload must be an object");if(!Array.isArray(I.branches))throw new Error("conditional action requires branches array");if(I.branches.length===0)throw new Error("conditional action requires at least one branch")},Id=(I,A,R)=>{if(!Ge(I))throw new Error(`conditional branch at index ${A} must be an object`);if(!Ge(I.actions))throw new Error(`conditional branch at index ${A} requires actions object`);if(!Object.prototype.hasOwnProperty.call(I,"when")&&A!==R-1)throw new Error("conditional else branch must be the last branch")},zi=(I,A,R)=>{bd(I);let C=td(R);for(let q=0;q<I.branches.length;q+=1){let Y=I.branches[q];Id(Y,q,I.branches.length);let oe=Os(A);if(Object.prototype.hasOwnProperty.call(Y,"when")&&!ht(Y.when,oe))continue;let Ie=Cs(Y.actions,A,R);return Ss(Ie)?Vi(C,Ie):C}return C},wd=(I,A)=>({...I??{},_form:A}),kd=(I,A,R,C)=>{let q=Wt(I,A),Y=q?.submitted===!0&&q.valid===!0,oe=q?.cancelled===!0;if(!(!Y&&!oe)&&Ge(A.actions))return Cs(A.actions,wd(R,q.form),{...C,interactionSource:ji})},vd=(I,A,R,C)=>{let q=Os(R),Y={templatePayload:A,literalTargetIds:null};I===Kw?Y=yd(A):I===Jw?Y=hd(A):I===Qw&&(Y=gd(A));let{templatePayload:oe,literalTargetIds:ae}=Y,Fe=lo({[I]:oe},q)[I],Se=ae?{...Fe,...ae}:Fe;if(I===Mp)return zi(Se,R,C);let Sr=qi(I,Se,C);if(Ww.has(I))return kd(I,Sr,R,C);Wt(I,Sr)},Cs=(I,A,R)=>{let C;return Object.entries(I).forEach(([q,Y])=>{let oe=vd(q,Y,A,R);Ss(oe)&&(C=Vi(C,oe))}),C},Yi=(I,A,R={})=>Bi(()=>Cs(I,A,R),R),Ad=I=>{let A=n.selectCurrentPointer()?.pointer;if(I!==A||n.selectActiveInteraction())return;let R=n.selectNextLineConfig();R?.auto?.enabled&&R.auto.trigger==="fromStart"&&n.appendPendingEffect({name:"nextLineConfigTimer",payload:{delay:R.auto.delay}})};return{init:O,dispose:_,handleAction:Rs,handleInternalAction:md,handleActions:Yi,selectRenderState:ue,prepareRenderState:Er,commitRenderState:cr,selectPresentationState:te,selectPresentationChanges:he,selectSectionLineChanges:Pe,selectSystemState:Xt,selectAchievements:Bp,selectAchievement:zp,selectSaveSlotMap:Mi,selectSaveSlot:Yp,selectSaveSlotPage:Gp,selectSaveSlots:Mi,selectImageGallery:Hp,selectMusicRoom:Xp,selectSceneReplay:Wp,selectIsSceneReplayActive:Kp,selectRuntime:Jp,selectIsChoiceVisible:Qp,selectIsFormVisible:Zp,selectActiveInteraction:ed,selectHasPendingRenderWork:rd,handleLineActions:I=>{le("line action handling");let A=n.selectCurrentPointer()?.pointer;if(I?.pointer&&!Br(I.pointer,A))return!1;if(typeof I?.sceneReplaySceneId=="string"){let R=n.selectActiveSceneReplayEntry?.();if(R?.sceneId!==I.sceneReplaySceneId||R?.entryId!==I.entryId)return!1}return Z(()=>{let R=n.selectCurrentPointer()?.pointer,C=n.selectRollbackCursor?.()??null,q=p,Y=m,oe=sd(R,C),ae=od(R),Ie=n.selectCurrentLine(),Fe=!1;if(Ie?.actions){try{Yi(Ie.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:oe,dialogueHistoryAppendToPrevious:ae?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:ae?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:ae?.forceNewOccurrence===!0})}catch(Se){throw p=q,m=Y,Se}Fe=!0}return Ad(R),Fe})},getNamespace:F,classifyAutomaticAttemptError:ce}}var t0="music-room:player",Fp=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),qp=(e,r)=>Fp.has(e)&&r?._event?.id===t0,Up=({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{if(e.selectHasPendingRenderWork?.())return;let s=e.prepareRenderState?.(t)??e.selectRenderState(t);n?.(s),r.render(s),a(o)&&e.commitRenderState?.(s)},n0=({engine:e,routeGraphics:r,trackRenderDispatch:n,getRenderDispatchCount:o,lifecycleGeneration:a,isCurrentLifecycle:t},s)=>{let i=o?.()??0,l=e.handleLineActions(s);(o?.()??0)===i&&Up({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:a,isCurrentLifecycle:t},s)},s0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveSlots(r?.saveSlots))},o0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalDeviceVariables(r?.globalDeviceVariables))},i0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalAccountVariables(r?.globalAccountVariables))},a0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalRuntime(r?.globalRuntime))},l0=({enqueuePersistenceWrite:e},r)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(r?.updates)})},Vp={render:Up,saveSlots:s0,saveGlobalDeviceVariables:o0,saveGlobalAccountVariables:i0,saveGlobalRuntime:a0,applyScopedDataUpdates:l0,handleLineActions:n0},c0=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),Li=(e,r,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(r,n)},u0=(e=[])=>{let r=new Set,n=[];for(let o=e.length-1;o>=0;o-=1){let a=e[o];if(typeof a?.name!="string"||a.name.length===0)throw new Error("Pending effect is missing a valid name.");if(!c0.has(a.name)){n.unshift(a);continue}r.has(a.name)||(r.add(a.name),n.unshift(a))}return n},p0=({getEngine:e,routeGraphics:r,ticker:n,handleUnhandledEffect:o,handlePersistenceError:a,indexedDB:t,persistence:s,namespace:i})=>{let l=new Map,u=Promise.resolve(),c=null,p=null,m=!1,d=0,f=0,y=!0,g=Lp({ticker:n,dispatchAutomaticAttempt:()=>Li(e(),"nextLineFromSystem",{}),classifyAutomaticAttemptError:O=>e()?.classifyAutomaticAttemptError?.(O)??"preCommit"}),h=()=>{c=null,p=null,m=!1,d=0},w=()=>{g.reset(),f+=1,h(),y=!0},b=()=>{f+=1,y=!1,h(),g.dispose()},E=O=>y&&O===f,k=O=>{if(a){a(O);return}console.error("RouteEngine persistence write failed.",O)},v=O=>{if(s)return s;let _=at(O),F=l.get(_);if(F)return F;let te=Ei({indexedDB:t,namespace:_});return l.set(_,te),te},x=O=>{let _=s?null:at(i??e()?.getNamespace?.()),F;u=u.catch(()=>{}).then(()=>(F=v(_),O(F))).catch(te=>{!s&&l.get(_)===F&&l.delete(_),k(te)})},$=O=>{if(!y)return;let _=typeof O?.id=="string"&&O.id.length>0?O.id:null;d+=1,c=_,m=!1},T=()=>d,S=(O={})=>{if(!y||O?.aborted===!0)return!1;let _=typeof O?.id=="string"&&O.id.length>0?O.id:null;return _?_!==c||_===p?!1:(p=_,!0):c!==null||m?!1:(m=!0,!0)},D=(O,_={})=>{if(!y)return!1;if(qp(O,_)){let te=Fp.get(O),he=e();return Li(he,te,_?._event),!0}if(O!=="renderComplete"||!S(_))return!1;let F=e();return Li(F,"markLineCompleted",{}),!0},U=new Set(["updateFormField","submitForm","cancelForm"]),le=new Set(["updateVariable"]),z=O=>typeof O?.selectActiveInteraction=="function"?O.selectActiveInteraction():typeof O?.selectIsChoiceVisible=="function"&&O.selectIsChoiceVisible()?{source:"choice"}:null,ce=O=>O?._formKey??O?.formKey,N=(O,_)=>ce(O)===_?.formKey,se=(O,_)=>!O||typeof O!="object"||Array.isArray(O)?!1:O._interactionSource===_?.source,X=(O,_)=>se(O,_)?_.source==="form"?N(O,_):!0:!1,V=(O,_)=>!O||typeof O!="object"||Array.isArray(O)||_?.source!=="form"?!1:N(O,_),H=(O={},_)=>Object.keys(O).length>0&&Object.entries(O).every(([F,te])=>U.has(F)?V(te,_):le.has(F)),Q=(O={},_)=>{let F=O?.actions;return _?.source==="form"?!F||typeof F!="object"||Array.isArray(F)?!1:H(F,_):X(O,_)?!0:!F||typeof F!="object"||Array.isArray(F)?!1:Object.values(F).some(te=>X(te,_))},ne=(O,_={})=>{if(!_?.actions)return!1;let F=z(O);return!F||F.source==="choice"?!1:!Q(_,F)},fe=({preprocessPayload:O,onEvent:_}={})=>async(F,te={})=>{if(!y)return!1;if(qp(F,te))return D(F,te),_?.(F,te);let he=e(),Pe=f,ye=d;if(ne(he,te))return _?.(F,te);let ue=await O?.(F,te)??te;if(!E(Pe)||e()!==he||d!==ye)return!1;if(ne(he,ue))return _?.(F,ue);if(D(F,ue),ue?.actions){let Er=ue?._event?{_event:ue._event}:ue?.event?{_event:ue.event}:void 0,cr;ue?.bypassChoice===!0?cr={bypassChoice:!0}:ue?._interactionSource&&(cr={interactionSource:ue._interactionSource}),cr?he.handleActions(ue.actions,Er,cr):he.handleActions(ue.actions,Er)}return _?.(F,ue)},Z=O=>{if(!y)return;let _=f,F=e(),te=u0(O),he=te.some(ye=>ye.name==="handleLineActions");te.forEach(ye=>{if(!Vp[ye.name]&&!Ht.has(ye.name)&&!o)throw new Error(`Unhandled pending effect "${ye.name}".`)});let Pe={engine:F,routeGraphics:r,ticker:n,trackRenderDispatch:$,getRenderDispatchCount:T,enqueuePersistenceWrite:x,lifecycleGeneration:f,isCurrentLifecycle:E};for(let ye of te){if(!E(_))break;if(he&&ye.name==="render")continue;if(Ht.has(ye.name)){g.handleLegacyEffect(ye);continue}let ue=Vp[ye.name];if(ue){ue(Pe,ye.payload);continue}o(ye,Pe)}};return Z.handleRouteGraphicsEvent=D,Z.createRouteGraphicsEventHandler=fe,Z.reset=w,Z.dispose=b,Z.reconcilePlaybackScheduleV1=O=>g.reconcilePlaybackScheduleV1(O),Z},d0=p0;var f0=(e,r={})=>{let{resources:n={}}=r;return Do(e,n)};var tv=Di;export{mo as DEFAULT_VISUAL_LAYER,Jr as RENDER_LAYER,er as VISUAL_LAYER,d0 as createEffectsHandler,zI as createIndexedDbPersistence,tv as default,oo as formatDate,Kf as resolveComputedVariables,f0 as resolveLayoutReferences};
|