From 507a56ef9ada8116b3a2bf0ab2bcb9e85799567a Mon Sep 17 00:00:00 2001 From: Serafina Cordero Date: Thu, 31 Jan 2019 14:52:30 -0500 Subject: [PATCH] InitialTest --- .DS_Store | Bin 0 -> 6148 bytes Platformer template/.DS_Store | Bin 0 -> 6148 bytes Platformer template/Template.c3p | Bin 0 -> 180759 bytes Platformer template/appmanifest.json | 36 + Platformer template/data.json | 1 + Platformer template/icons/icon-114.png | Bin 0 -> 23749 bytes Platformer template/icons/icon-128.png | Bin 0 -> 32223 bytes Platformer template/icons/icon-16.png | Bin 0 -> 944 bytes Platformer template/icons/icon-256.png | Bin 0 -> 93172 bytes Platformer template/icons/icon-32.png | Bin 0 -> 2830 bytes Platformer template/icons/loading-logo.png | Bin 0 -> 9150 bytes .../images/backgroundtile-sheet0.png | Bin 0 -> 117 bytes .../images/jumpthrutile-sheet0.png | Bin 0 -> 113 bytes .../images/shared-0-sheet0.png | Bin 0 -> 154 bytes .../images/solidtile-sheet0.png | Bin 0 -> 105 bytes Platformer template/index.html | 31 + Platformer template/offline.json | 1 + Platformer template/scripts/c3runtime.js | 630 ++++++++++++++++++ Platformer template/scripts/dispatchWorker.js | 1 + Platformer template/scripts/jobWorker.js | 1 + Platformer template/scripts/main.js | 11 + Platformer template/scripts/offlineClient.js | 1 + Platformer template/scripts/register-sw.js | 1 + Platformer template/scripts/supportCheck.js | 1 + Platformer template/style.css | 34 + Platformer template/sw.js | 1 + 26 files changed, 750 insertions(+) create mode 100644 .DS_Store create mode 100644 Platformer template/.DS_Store create mode 100644 Platformer template/Template.c3p create mode 100755 Platformer template/appmanifest.json create mode 100755 Platformer template/data.json create mode 100755 Platformer template/icons/icon-114.png create mode 100755 Platformer template/icons/icon-128.png create mode 100755 Platformer template/icons/icon-16.png create mode 100755 Platformer template/icons/icon-256.png create mode 100755 Platformer template/icons/icon-32.png create mode 100755 Platformer template/icons/loading-logo.png create mode 100755 Platformer template/images/backgroundtile-sheet0.png create mode 100755 Platformer template/images/jumpthrutile-sheet0.png create mode 100755 Platformer template/images/shared-0-sheet0.png create mode 100755 Platformer template/images/solidtile-sheet0.png create mode 100755 Platformer template/index.html create mode 100755 Platformer template/offline.json create mode 100755 Platformer template/scripts/c3runtime.js create mode 100755 Platformer template/scripts/dispatchWorker.js create mode 100755 Platformer template/scripts/jobWorker.js create mode 100755 Platformer template/scripts/main.js create mode 100755 Platformer template/scripts/offlineClient.js create mode 100755 Platformer template/scripts/register-sw.js create mode 100755 Platformer template/scripts/supportCheck.js create mode 100755 Platformer template/style.css create mode 100755 Platformer template/sw.js diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b82b2c12d9220f151c0ad314d0911b92d9bf5236 GIT binary patch literal 6148 zcmeHK&5qMB5FT&4kQNY?Kw^(MfZ$M2+7(m?A!WPmVGl?vvVsGk-J}U^q%@A&lnP2w z-heZ_0gnMUo`4hY!3{qDu-d4A;8FqdRO4?v_Kcm+vRxAq>(0U!QG7?WqBo$dL?N-hhv@m7d077%&X{jSPsrTcsN`q?q#3{;f2`rax{Q^Ik7VcmSXE z`tz6W2ljra+#de2JsX`k8#cvxLzk&X_n>XMNe+J3>3|}dQZB7Iai9m!gnW96`K7>J zcqbG}FUPzGv`yJw!UuY8BJmyQwXagdFm!?TDM4(GEFyX=qixh9*qLsN%30W1L|*;# zEWv!5>A8FivLv47j`N9aRH~b&PFq&ps-LSr@kV^^<$gY!cKyjCQQP3bz#4@@@y(!U1$O77F2kFck_^p-ew9mFkl!cGf+|0hPeOxKY#z1gG|jZU>NwX7+}?&*X!bw^xeAhapJDEp+`_5 pqF^bu{6Y0yaknlHd`1#S7V_N9*FrPAZaj#VPLHcd;>%ms$c*B literal 0 HcmV?d00001 diff --git a/Platformer template/.DS_Store b/Platformer template/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b1818b973362c7a39b11e28224b66008e1e04e25 GIT binary patch literal 6148 zcmeHKyG{c!5FCdDl8_=Dlvh$AAxfH46bfqi0Fq0>Lzjn05YS!2Kky5DA0Gg-Yb&`p zq(umJPxhRBJNEAQbUp)coyWlm&<0Rv5v(*=ePi-m%7#@!Pm}0$j2&#tg>5;_i~mH zP7*K;Sa{?Un)6hmr@C;&aGuWoB>1HP3y+=-7Y-jT%aUWW&c0le*Rx4S<4hK1^$!*uG+oqc9>GwTQ`!Ey*6RFW)Ty=!sC*{8{LZOD_ij) biyHeAxgn+j3y&--m{?QZ?Mdskh-T}dT5lPi^^ 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

d*qGs2OXG_z~}TNeSxWgAp#F@}!B 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 COh-xp literal 0 HcmV?d00001 diff --git a/Platformer template/appmanifest.json b/Platformer template/appmanifest.json new file mode 100755 index 0000000..863720d --- /dev/null +++ b/Platformer template/appmanifest.json @@ -0,0 +1,36 @@ +{ + "name": "Platformer template", + "short_name": "Platformer template", + "description": "", + "start_url": "index.html", + "display": "fullscreen", + "orientation": "any", + "background_color": "#ffffff", + "icons": [ + { + "src": "icons/icon-16.png", + "sizes": "16x16", + "type": "image/png" + }, + { + "src": "icons/icon-32.png", + "sizes": "32x32", + "type": "image/png" + }, + { + "src": "icons/icon-114.png", + "sizes": "114x114", + "type": "image/png" + }, + { + "src": "icons/icon-128.png", + "sizes": "128x128", + "type": "image/png" + }, + { + "src": "icons/icon-256.png", + "sizes": "256x256", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/Platformer template/data.json b/Platformer template/data.json new file mode 100755 index 0000000..d9142ec --- /dev/null +++ b/Platformer template/data.json @@ -0,0 +1 @@ +{"project":["Platformer template",null,[[0,false,true,true,true,true,true,true,true,true],[1,false,true,true,true,true,true,true,true,false],[7,true,false,false,false,false,false,false,false,false],[8,false,true,true,true,true,true,true,true,false]],[["BackgroundTile",0,false,[],0,0,["images/backgroundtile-sheet0.png",125,0,0,0,32,32],null,[],false,false,689896111384873,[],null],["Player",1,false,[],2,0,null,[["Default",5,false,1,0,false,734810610482486,[["images/shared-0-sheet0.png",209,0,0,32,32,1,0.5,1,[],[],0]]]],[["Platform",2,102058207846856],["ScrollTo",3,280961176510301]],false,false,826610325620297,[],null],["SolidTile",0,false,[],1,0,["images/solidtile-sheet0.png",123,0,0,0,32,32],null,[["Solid",4,605929759072641]],false,false,463285828161762,[],null],["MovingSolidTile",0,false,[],2,0,["images/solidtile-sheet0.png",123,0,0,0,32,32],null,[["Solid",4,475853687276520],["Sine",5,406072062097919]],false,false,885053456940033,[],null],["JumpThruTile",0,false,[],1,0,["images/jumpthrutile-sheet0.png",120,0,0,0,32,32],null,[["Jumpthru",6,609014660854342]],false,false,515236225826519,[],null],["Keyboard",7,false,[],0,0,null,null,[],false,false,372854524738558,[],null,[]],["Text",8,false,[],0,0,null,null,[],false,false,395520036116606,[],null]],[],[["Layout 1",1280,1024,false,"Event sheet 1",195586522291231,[["Background",0,835917738008775,true,[255,255,255],false,0.5,0.5,1,false,false,1,0,0,[[[0,0,0,1280,1024,0,0,[1,1,1,1],0,0,0,0,[]],0,0,[],[],[true,0,0,0,1,1,0]]],[]],["Game",1,628603958392595,true,[255,255,255],true,1,1,1,false,false,1,0,0,[[[164,756,0,104,104,0,0,[1,1,1,1],0.5,1,0,0,[]],1,1,[],[[330,1500,1500,650,1500,1000,false,0,true,true],[true]],[true,"Default",0,true]],[[64,768,0,320,128,0,0,[1,1,1,1],0,0,0,0,[]],2,2,[],[[true,""]],[true,0,0,0,1,1,0]],[[864,800,0,96,32,0,0,[1,1,1,1],0,0,0,0,[]],2,3,[],[[true,""]],[true,0,0,0,1,1,0]],[[1088,736,0,96,32,0,0,[1,1,1,1],0,0,0,0,[]],2,4,[],[[true,""]],[true,0,0,0,1,1,0]],[[992,928,0,128,32,0,0,[1,1,1,1],0,0,0,0,[]],2,5,[],[[true,""]],[true,0,0,0,1,1,0]],[[544,800,0,128,32,0,0,[1,1,1,1],0,0,0,0,[]],3,6,[],[[true,""],[0,0,4,0,0,0,50,0,true]],[true,0,0,0,1,1,0]],[[1056,624,0,160,16,0,0,[1,1,1,0.800000012],0,0,0,0,[]],4,7,[],[[true]],[true,0,0,0,1,1,0]],[[1056,528,0,160,16,0,0,[1,1,1,0.800000012],0,0,0,0,[]],4,8,[],[[true]],[true,0,0,0,1,1,0]],[[624.159057617,432.067077637,0,372.034545898,32,0,0.17453292,[1,1,1,1],0,0,0,0,[]],2,9,[],[[true,""]],[true,0,0,0,1,1,0]],[[528,432,0,96,32,0,0,[1,1,1,1],0,0,0,0,[]],2,10,[],[[true,""]],[true,0,0,0,1,1,0]],[[346,339,0,219,32,0,0.453596234,[1,1,1,1],0,0,0,0,[]],2,11,[],[[true,""]],[true,0,0,0,1,1,0]],[[160,224,0,96,16,0,0,[1,1,1,0.800000012],0,0,0,0,[]],4,12,[],[[true]],[true,0,0,0,1,1,0]],[[160,336,0,96,32,0,0,[1,1,1,1],0,0,0,0,[]],2,13,[],[[true,""]],[true,0,0,0,1,1,0]],[[320,160,0,96,16,0,0,[1,1,1,0.800000012],0,0,0,0,[]],4,14,[],[[true]],[true,0,0,0,1,1,0]],[[512,128,0,96,16,0,0,[1,1,1,0.800000012],0,0,0,0,[]],4,15,[],[[true]],[true,0,0,0,1,1,0]],[[752,160,0,128,32,0,0,[1,1,1,1],0,0,0,0,[]],3,16,[],[[true,""],[0,0,4,0,0,0,50,0,true]],[true,0,0,0,1,1,0]],[[1056,192,0,96,16,0,0,[1,1,1,0.800000012],0,0,0,0,[]],4,17,[],[[true]],[true,0,0,0,1,1,0]],[[928,288,0,96,16,0,0,[1,1,1,1],0,0,0,0,[]],3,18,[],[[true,""],[1,0,4,0,0,0,50,0,true]],[true,0,0,0,1,1,0]],[[65,900,0,352,32,0,0,[1,1,1,1],0,0,0,0,[]],6,19,[],[],["Arrow keys or WASD to move",false,"Arial",12,0,false,false,[0,0,0],0,0,0,true,0]]],[]]],[],[]]],[["Event sheet 1",[[0,null,false,null,128459781631962,[[5,9,null,1,false,false,false,305389046261418,null,[[9,40]]]],[[1,10,"Platform",892367029867673,null]]],[0,null,false,null,645292426100724,[[5,11,null,0,false,false,false,632243729452326,null,[[9,87]]]],[[1,12,"Platform",920742090584576,null,[[3,2]]]]],[0,null,false,null,242167283932481,[[5,11,null,0,false,false,false,483950024948899,null,[[9,65]]]],[[1,12,"Platform",775074611847897,null,[[3,0]]]]],[0,null,false,null,539757104898646,[[5,11,null,0,false,false,false,606056445084855,null,[[9,83]]]],[[1,10,"Platform",704843732518047,null]]],[0,null,false,null,591315574743711,[[5,11,null,0,false,false,false,248839217420683,null,[[9,68]]]],[[1,12,"Platform",700473221744042,null,[[3,1]]]]],[0,null,true,null,636041846004128,[[5,9,null,1,false,false,false,528722391729597,null,[[9,37]]],[5,9,null,1,false,false,false,146542714002785,null,[[9,65]]]],[[1,13,null,132393308998210,null,[[3,0]]]]],[0,null,true,null,141520300585655,[[5,9,null,1,false,false,false,711168855441086,null,[[9,39]]],[5,9,null,1,false,false,false,981994648819837,null,[[9,68]]]],[[1,13,null,834972848466442,null,[[3,1]]]]],[0,null,false,null,301769199928821,[[1,14,null,0,false,false,false,564820914778219,null,[[8,4],[0,[0,[4,15]]]]]],[[-1,16,null,541417716131689,null]]]]]],[],"media/",false,640,480,4,true,true,true,"1.0",true,false,4,0,22,false,true,1,true,false,[],"icons/",[],true,"jmuqhzg0uup","fonts/",[],"high-performance"]} \ No newline at end of file diff --git a/Platformer template/icons/icon-114.png b/Platformer template/icons/icon-114.png new file mode 100755 index 0000000000000000000000000000000000000000..42b1a39be40f2fd388ffcfaa5454e893b149c44c GIT binary patch literal 23749 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 A`2YX_ literal 0 HcmV?d00001 diff --git a/Platformer template/icons/icon-128.png b/Platformer template/icons/icon-128.png new file mode 100755 index 0000000000000000000000000000000000000000..e782d9073ea8d51d8db3579a33e14677d566d291 GIT binary patch literal 32223 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 literal 0 HcmV?d00001 diff --git a/Platformer template/icons/icon-256.png b/Platformer template/icons/icon-256.png new file mode 100755 index 0000000000000000000000000000000000000000..fe22ecc08ce1ddb55648d6b13f32c0387379e88d GIT binary patch literal 93172 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

vG)&L&N1` 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 literal 0 HcmV?d00001 diff --git a/Platformer template/icons/icon-32.png b/Platformer template/icons/icon-32.png new file mode 100755 index 0000000000000000000000000000000000000000..4300c36596c544c663c23038e15bf4bb5a1ff1d8 GIT binary patch literal 2830 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 literal 0 HcmV?d00001 diff --git a/Platformer template/icons/loading-logo.png b/Platformer template/icons/loading-logo.png new file mode 100755 index 0000000000000000000000000000000000000000..434c22e9cb07165e03707d3ebad82ada7c226c6c GIT binary patch literal 9150 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 IM6N<$f|TvNiU0rr literal 0 HcmV?d00001 diff --git a/Platformer template/images/backgroundtile-sheet0.png b/Platformer template/images/backgroundtile-sheet0.png new file mode 100755 index 0000000000000000000000000000000000000000..081b1e01898814a5660eca87239f42d4b31a08be GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz8&4ObP0l+XkK Dr3xV1 literal 0 HcmV?d00001 diff --git a/Platformer template/images/jumpthrutile-sheet0.png b/Platformer template/images/jumpthrutile-sheet0.png new file mode 100755 index 0000000000000000000000000000000000000000..13d75860a42d68690b0583992de9398daec3b727 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz3r`ovkO=p;=Qi>(2#ByA_;0n= zSG6si)3EhfUX%BEyRRo#MG6X_fDFm|Oy^lIvE(YQSbOL+&IRRr3W^YA2_|ghxt9jp1uXsnG39%=J6eP#ZhI=a9EJ}A%loJ&lKhdeG(q* z4YGzw&IwPRHBF2b>brBRV2h*CtA;>!f%grJM;N>{Z^SGXwblSy#^CAd=d#Wzp$P!N C9yLG! literal 0 HcmV?d00001 diff --git a/Platformer template/images/solidtile-sheet0.png b/Platformer template/images/solidtile-sheet0.png new file mode 100755 index 0000000000000000000000000000000000000000..ecde66a2661ce18a22d306afd897e74166df6546 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W3_M*NLp+YZJ?qHHV8Fw&!D`1X ziJqU+&4u6UPpE&jXSe!XAr2O%Mh67}4whg?tJQWt=6_ceU3k*Q literal 0 HcmV?d00001 diff --git a/Platformer template/index.html b/Platformer template/index.html new file mode 100755 index 0000000..33dfc23 --- /dev/null +++ b/Platformer template/index.html @@ -0,0 +1,31 @@ + + + + +Platformer template + + + + + + + + + + + + +

+ + + + + + + + \ No newline at end of file diff --git a/Platformer template/offline.json b/Platformer template/offline.json new file mode 100755 index 0000000..605b3b4 --- /dev/null +++ b/Platformer template/offline.json @@ -0,0 +1 @@ +{"version":1548964134518,"fileList":["scripts/c3runtime.js","data.json","style.css","scripts/offlineClient.js","images/shared-0-sheet0.png","images/backgroundtile-sheet0.png","images/solidtile-sheet0.png","images/jumpthrutile-sheet0.png","scripts/main.js","scripts/dispatchWorker.js","scripts/jobWorker.js","scripts/supportCheck.js","icons/icon-16.png","icons/icon-32.png","icons/loading-logo.png","icons/icon-114.png","icons/icon-256.png","icons/icon-128.png","scripts/register-sw.js"]} \ No newline at end of file diff --git a/Platformer template/scripts/c3runtime.js b/Platformer template/scripts/c3runtime.js new file mode 100755 index 0000000..5e7ee8a --- /dev/null +++ b/Platformer template/scripts/c3runtime.js @@ -0,0 +1,630 @@ +// Generated by Construct 3, the game and app creator :: https://www.construct.net +"use strict"; +// c3/3rdparty/glmatrix.js +(function(e,t){if('object'==typeof exports&&'object'==typeof module)module.exports=t();else if('function'==typeof define&&define.amd)define([],t);else{var r=t();for(var a in r)('object'==typeof exports?exports:e)[a]=r[a]}})(this,function(){var e=Math.acos,t=Math.round,r=Math.min,o=Math.floor,l=Math.ceil,n=Math.sqrt,s=Math.pow,d=Math.cos,u=Math.sin,i=Math.max,m=Math.abs,c=Math.PI;return function(e){function t(r){if(a[r])return a[r].exports;var o=a[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var a={};return t.m=e,t.c=a,t.d=function(e,a,r){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var a=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(a,'a',a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='',t(t.s=4)}([function(e,t){'use strict';Object.defineProperty(t,'__esModule',{value:!0}),t.setMatrixArrayType=function(e){t.ARRAY_TYPE=a=e},t.toRadian=function(e){return e*l},t.equals=function(e,t){return m(e-t)<=r*i(1,m(e),m(t))};var r=t.EPSILON=1e-6,a=t.ARRAY_TYPE='undefined'==typeof Float32Array?Array:Float32Array,o=t.RANDOM=Math.random,l=c/180},function(e,t,a){'use strict';function r(e,t,a){var r=t[0],o=t[1],l=t[2],s=t[3],n=t[4],d=t[5],u=t[6],i=t[7],c=t[8],m=a[0],f=a[1],P=a[2],p=a[3],E=a[4],y=a[5],A=a[6],O=a[7],R=a[8];return e[0]=m*r+f*s+P*u,e[1]=m*o+f*n+P*i,e[2]=m*l+f*d+P*c,e[3]=p*r+E*s+y*u,e[4]=p*o+E*n+y*i,e[5]=p*l+E*d+y*c,e[6]=A*r+O*s+R*u,e[7]=A*o+O*n+R*i,e[8]=A*l+O*d+R*c,e}function o(e,t,a){return e[0]=t[0]-a[0],e[1]=t[1]-a[1],e[2]=t[2]-a[2],e[3]=t[3]-a[3],e[4]=t[4]-a[4],e[5]=t[5]-a[5],e[6]=t[6]-a[6],e[7]=t[7]-a[7],e[8]=t[8]-a[8],e}Object.defineProperty(t,'__esModule',{value:!0}),t.sub=t.mul=void 0,t.create=function(){var e=new c.ARRAY_TYPE(9);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.fromMat4=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e},t.clone=function(e){var t=new c.ARRAY_TYPE(9);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t},t.copy=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e},t.fromValues=function(e,t,a,r,o,l,s,n,d){var u=new c.ARRAY_TYPE(9);return u[0]=e,u[1]=t,u[2]=a,u[3]=r,u[4]=o,u[5]=l,u[6]=s,u[7]=n,u[8]=d,u},t.set=function(e,t,a,r,o,l,s,n,d,u){return e[0]=t,e[1]=a,e[2]=r,e[3]=o,e[4]=l,e[5]=s,e[6]=n,e[7]=d,e[8]=u,e},t.identity=function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.transpose=function(e,t){if(e===t){var a=t[1],r=t[2],o=t[5];e[1]=t[3],e[2]=t[6],e[3]=a,e[5]=t[7],e[6]=r,e[7]=o}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e},t.invert=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=t[4],n=t[5],d=t[6],u=t[7],i=t[8],c=i*s-n*u,m=-i*l+n*d,f=u*l-s*d,P=a*c+r*m+o*f;return P?(P=1/P,e[0]=c*P,e[1]=(-i*r+o*u)*P,e[2]=(n*r-o*s)*P,e[3]=m*P,e[4]=(i*a-o*d)*P,e[5]=(-n*a+o*l)*P,e[6]=f*P,e[7]=(-u*a+r*d)*P,e[8]=(s*a-r*l)*P,e):null},t.adjoint=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=t[4],n=t[5],d=t[6],u=t[7],i=t[8];return e[0]=s*i-n*u,e[1]=o*u-r*i,e[2]=r*n-o*s,e[3]=n*d-l*i,e[4]=a*i-o*d,e[5]=o*l-a*n,e[6]=l*u-s*d,e[7]=r*d-a*u,e[8]=a*s-r*l,e},t.determinant=function(e){var t=e[0],a=e[1],r=e[2],o=e[3],l=e[4],s=e[5],n=e[6],d=e[7],u=e[8];return t*(u*l-s*d)+a*(-u*o+s*n)+r*(d*o-l*n)},t.multiply=r,t.translate=function(e,t,a){var r=t[0],o=t[1],l=t[2],s=t[3],n=t[4],d=t[5],u=t[6],i=t[7],c=t[8],m=a[0],f=a[1];return e[0]=r,e[1]=o,e[2]=l,e[3]=s,e[4]=n,e[5]=d,e[6]=m*r+f*s+u,e[7]=m*o+f*n+i,e[8]=m*l+f*d+c,e},t.rotate=function(e,t,a){var r=t[0],o=t[1],l=t[2],n=t[3],i=t[4],m=t[5],f=t[6],P=t[7],p=t[8],E=u(a),s=d(a);return e[0]=s*r+E*n,e[1]=s*o+E*i,e[2]=s*l+E*m,e[3]=s*n-E*r,e[4]=s*i-E*o,e[5]=s*m-E*l,e[6]=f,e[7]=P,e[8]=p,e},t.scale=function(e,t,a){var r=a[0],o=a[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=o*t[3],e[4]=o*t[4],e[5]=o*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e},t.fromTranslation=function(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=t[0],e[7]=t[1],e[8]=1,e},t.fromRotation=function(e,t){var a=u(t),r=d(t);return e[0]=r,e[1]=a,e[2]=0,e[3]=-a,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.fromScaling=function(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=t[1],e[5]=0,e[6]=0,e[7]=0,e[8]=1,e},t.fromMat2d=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=0,e[3]=t[2],e[4]=t[3],e[5]=0,e[6]=t[4],e[7]=t[5],e[8]=1,e},t.fromQuat=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=a+a,n=r+r,d=o+o,u=a*s,i=r*s,c=r*n,m=o*s,f=o*n,P=o*d,p=l*s,E=l*n,y=l*d;return e[0]=1-c-P,e[3]=i-y,e[6]=m+E,e[1]=i+y,e[4]=1-u-P,e[7]=f-p,e[2]=m-E,e[5]=f+p,e[8]=1-u-c,e},t.normalFromMat4=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=t[4],n=t[5],d=t[6],u=t[7],i=t[8],c=t[9],m=t[10],f=t[11],P=t[12],p=t[13],E=t[14],y=t[15],A=a*n-r*s,O=a*d-o*s,R=a*u-l*s,L=r*d-o*n,S=r*u-l*n,_=o*u-l*d,N=i*p-c*P,I=i*E-m*P,Y=i*y-f*P,q=c*E-m*p,g=c*y-f*p,M=m*y-f*E,v=A*M-O*g+R*q+L*Y-S*I+_*N;return v?(v=1/v,e[0]=(n*M-d*g+u*q)*v,e[1]=(d*Y-s*M-u*I)*v,e[2]=(s*g-n*Y+u*N)*v,e[3]=(o*g-r*M-l*q)*v,e[4]=(a*M-o*Y+l*I)*v,e[5]=(r*Y-a*g-l*N)*v,e[6]=(p*_-E*S+y*L)*v,e[7]=(E*R-P*_-y*O)*v,e[8]=(P*S-p*R+y*A)*v,e):null},t.projection=function(e,t,a){return e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/a,e[5]=0,e[6]=-1,e[7]=1,e[8]=1,e},t.str=function(e){return'mat3('+e[0]+', '+e[1]+', '+e[2]+', '+e[3]+', '+e[4]+', '+e[5]+', '+e[6]+', '+e[7]+', '+e[8]+')'},t.frob=function(e){return n(s(e[0],2)+s(e[1],2)+s(e[2],2)+s(e[3],2)+s(e[4],2)+s(e[5],2)+s(e[6],2)+s(e[7],2)+s(e[8],2))},t.add=function(e,t,a){return e[0]=t[0]+a[0],e[1]=t[1]+a[1],e[2]=t[2]+a[2],e[3]=t[3]+a[3],e[4]=t[4]+a[4],e[5]=t[5]+a[5],e[6]=t[6]+a[6],e[7]=t[7]+a[7],e[8]=t[8]+a[8],e},t.subtract=o,t.multiplyScalar=function(e,t,a){return e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e[3]=t[3]*a,e[4]=t[4]*a,e[5]=t[5]*a,e[6]=t[6]*a,e[7]=t[7]*a,e[8]=t[8]*a,e},t.multiplyScalarAndAdd=function(e,t,a,r){return e[0]=t[0]+a[0]*r,e[1]=t[1]+a[1]*r,e[2]=t[2]+a[2]*r,e[3]=t[3]+a[3]*r,e[4]=t[4]+a[4]*r,e[5]=t[5]+a[5]*r,e[6]=t[6]+a[6]*r,e[7]=t[7]+a[7]*r,e[8]=t[8]+a[8]*r,e},t.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]},t.equals=function(e,t){var a=e[0],r=e[1],o=e[2],l=e[3],s=e[4],n=e[5],d=e[6],u=e[7],f=e[8],P=t[0],p=t[1],E=t[2],y=t[3],A=t[4],O=t[5],R=t[6],L=t[7],S=t[8];return m(a-P)<=c.EPSILON*i(1,m(a),m(P))&&m(r-p)<=c.EPSILON*i(1,m(r),m(p))&&m(o-E)<=c.EPSILON*i(1,m(o),m(E))&&m(l-y)<=c.EPSILON*i(1,m(l),m(y))&&m(s-A)<=c.EPSILON*i(1,m(s),m(A))&&m(n-O)<=c.EPSILON*i(1,m(n),m(O))&&m(d-R)<=c.EPSILON*i(1,m(d),m(R))&&m(u-L)<=c.EPSILON*i(1,m(u),m(L))&&m(f-S)<=c.EPSILON*i(1,m(f),m(S))};var l=a(0),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(l);var f=t.mul=r,P=t.sub=o},function(a,s,f){'use strict';function P(){var e=new Y.ARRAY_TYPE(3);return e[0]=0,e[1]=0,e[2]=0,e}function p(e){var t=e[0],a=e[1],r=e[2];return n(t*t+a*a+r*r)}function E(e,t,a){var r=new Y.ARRAY_TYPE(3);return r[0]=e,r[1]=t,r[2]=a,r}function y(e,t,a){return e[0]=t[0]-a[0],e[1]=t[1]-a[1],e[2]=t[2]-a[2],e}function A(e,t,a){return e[0]=t[0]*a[0],e[1]=t[1]*a[1],e[2]=t[2]*a[2],e}function O(e,t,a){return e[0]=t[0]/a[0],e[1]=t[1]/a[1],e[2]=t[2]/a[2],e}function R(e,t){var a=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return n(a*a+r*r+o*o)}function L(e,t){var a=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return a*a+r*r+o*o}function S(e){var t=e[0],a=e[1],r=e[2];return t*t+a*a+r*r}function _(e,t){var a=t[0],r=t[1],o=t[2],l=a*a+r*r+o*o;return 0l?c:e(l)},s.str=function(e){return'vec3('+e[0]+', '+e[1]+', '+e[2]+')'},s.exactEquals=function(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]},s.equals=function(e,t){var a=e[0],r=e[1],o=e[2],l=t[0],s=t[1],n=t[2];return m(a-l)<=Y.EPSILON*i(1,m(a),m(l))&&m(r-s)<=Y.EPSILON*i(1,m(r),m(s))&&m(o-n)<=Y.EPSILON*i(1,m(o),m(n))};var I=f(0),Y=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(I),q=s.sub=y,g=s.mul=A,M=s.div=O,v=s.dist=R,h=s.sqrDist=L,T=s.len=p,b=s.sqrLen=S,x=s.forEach=function(){var e=P();return function(t,a,o,s,n,d){var u,i;for(a||(a=3),o||(o=0),i=s?r(s*a+o,t.length):t.length,u=o;ut[5]&t[0]>t[10]?(r=2*n(1+t[0]-t[5]-t[10]),e[3]=(t[6]-t[9])/r,e[0]=.25*r,e[1]=(t[1]+t[4])/r,e[2]=(t[8]+t[2])/r):t[5]>t[10]?(r=2*n(1+t[5]-t[0]-t[10]),e[3]=(t[8]-t[2])/r,e[0]=(t[1]+t[4])/r,e[1]=.25*r,e[2]=(t[6]+t[9])/r):(r=2*n(1+t[10]-t[0]-t[5]),e[3]=(t[1]-t[4])/r,e[0]=(t[8]+t[2])/r,e[1]=(t[6]+t[9])/r,e[2]=.25*r),e},t.fromRotationTranslationScale=function(e,t,a,r){var o=t[0],l=t[1],s=t[2],n=t[3],d=o+o,u=l+l,i=s+s,c=o*d,m=o*u,f=o*i,P=l*u,p=l*i,E=s*i,y=n*d,A=n*u,O=n*i,R=r[0],L=r[1],S=r[2];return e[0]=(1-(P+E))*R,e[1]=(m+O)*R,e[2]=(f-A)*R,e[3]=0,e[4]=(m-O)*L,e[5]=(1-(c+E))*L,e[6]=(p+y)*L,e[7]=0,e[8]=(f+A)*S,e[9]=(p-y)*S,e[10]=(1-(c+P))*S,e[11]=0,e[12]=a[0],e[13]=a[1],e[14]=a[2],e[15]=1,e},t.fromRotationTranslationScaleOrigin=function(e,t,a,r,l){var o=t[0],s=t[1],n=t[2],d=t[3],u=o+o,i=s+s,c=n+n,m=o*u,f=o*i,P=o*c,p=s*i,E=s*c,y=n*c,A=d*u,O=d*i,R=d*c,L=r[0],S=r[1],_=r[2],N=l[0],I=l[1],Y=l[2];return e[0]=(1-(p+y))*L,e[1]=(f+R)*L,e[2]=(P-O)*L,e[3]=0,e[4]=(f-R)*S,e[5]=(1-(m+y))*S,e[6]=(E+A)*S,e[7]=0,e[8]=(P+O)*_,e[9]=(E-A)*_,e[10]=(1-(m+p))*_,e[11]=0,e[12]=a[0]+N-(e[0]*N+e[4]*I+e[8]*Y),e[13]=a[1]+I-(e[1]*N+e[5]*I+e[9]*Y),e[14]=a[2]+Y-(e[2]*N+e[6]*I+e[10]*Y),e[15]=1,e},t.fromQuat=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=a+a,n=r+r,d=o+o,u=a*s,i=r*s,c=r*n,m=o*s,f=o*n,P=o*d,p=l*s,E=l*n,y=l*d;return e[0]=1-c-P,e[1]=i+y,e[2]=m-E,e[3]=0,e[4]=i-y,e[5]=1-u-P,e[6]=f+p,e[7]=0,e[8]=m+E,e[9]=f-p,e[10]=1-u-c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e},t.frustum=function(e,t,a,r,o,l,s){var n=1/(a-t),d=1/(o-r),u=1/(l-s);return e[0]=2*l*n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*l*d,e[6]=0,e[7]=0,e[8]=(a+t)*n,e[9]=(o+r)*d,e[10]=(s+l)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*(s*l)*u,e[15]=0,e},t.perspective=function(e,t,a,r,o){var s=1/l(t/2),n=1/(r-o);return e[0]=s/a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(o+r)*n,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*o*r*n,e[15]=0,e},t.perspectiveFromFieldOfView=function(e,t,a,r){var o=l(t.upDegrees*c/180),s=l(t.downDegrees*c/180),n=l(t.leftDegrees*c/180),d=l(t.rightDegrees*c/180),u=2/(n+d),i=2/(o+s);return e[0]=u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=-(.5*((n-d)*u)),e[9]=.5*((o-s)*i),e[10]=r/(a-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*a/(a-r),e[15]=0,e},t.ortho=function(e,t,a,r,o,l,s){var n=1/(t-a),d=1/(r-o),u=1/(l-s);return e[0]=-2*n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+a)*n,e[13]=(o+r)*d,e[14]=(s+l)*u,e[15]=1,e},t.lookAt=function(e,t,a,r){var o=void 0,l=void 0,s=void 0,d=void 0,u=void 0,i=void 0,c=void 0,f=void 0,p=void 0,E=void 0,y=t[0],A=t[1],O=t[2],R=r[0],L=r[1],S=r[2],_=a[0],N=a[1],I=a[2];return m(y-_)p&&(p=-p,i=-i,c=-c,m=-m,f=-f),1e-6<1-p?(P=e(p),E=u(P),y=u((1-l)*P)/E,A=u(l*P)/E):(y=1-l,A=l),r[0]=y*t+A*i,r[1]=y*s+A*c,r[2]=y*n+A*m,r[3]=y*d+A*f,r}function P(e,t){var a=t[0]+t[4]+t[8],r=void 0;if(0t[0]&&(o=1),t[8]>t[3*o+o]&&(o=2);var l=(o+1)%3,s=(o+2)%3;r=n(t[3*o+o]-t[3*l+l]-t[3*s+s]+1),e[o]=.5*r,r=.5/r,e[3]=(t[3*l+s]-t[3*s+l])*r,e[l]=(t[3*l+o]+t[3*o+l])*r,e[s]=(t[3*s+o]+t[3*o+s])*r}return e}Object.defineProperty(a,'__esModule',{value:!0}),a.setAxes=a.sqlerp=a.rotationTo=a.equals=a.exactEquals=a.normalize=a.sqrLen=a.squaredLength=a.len=a.length=a.lerp=a.dot=a.scale=a.mul=a.add=a.set=a.copy=a.fromValues=a.clone=void 0,a.create=l,a.identity=function(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e},a.setAxisAngle=s,a.getAxisAngle=function(t,a){var r=2*e(a[3]),o=u(r/2);return 0==o?(t[0]=1,t[1]=0,t[2]=0):(t[0]=a[0]/o,t[1]=a[1]/o,t[2]=a[2]/o),r},a.multiply=i,a.rotateX=function(e,t,a){a*=.5;var r=t[0],o=t[1],l=t[2],s=t[3],n=u(a),i=d(a);return e[0]=r*i+s*n,e[1]=o*i+l*n,e[2]=l*i-o*n,e[3]=s*i-r*n,e},a.rotateY=function(e,t,a){a*=.5;var r=t[0],o=t[1],l=t[2],s=t[3],n=u(a),i=d(a);return e[0]=r*i-l*n,e[1]=o*i+s*n,e[2]=l*i+r*n,e[3]=s*i-o*n,e},a.rotateZ=function(e,t,a){a*=.5;var r=t[0],o=t[1],l=t[2],s=t[3],n=u(a),i=d(a);return e[0]=r*i+o*n,e[1]=o*i-r*n,e[2]=l*i+s*n,e[3]=s*i-l*n,e},a.calculateW=function(e,t){var a=t[0],r=t[1],o=t[2];return e[0]=a,e[1]=r,e[2]=o,e[3]=n(m(1-a*a-r*r-o*o)),e},a.slerp=f,a.invert=function(e,t){var a=t[0],r=t[1],o=t[2],l=t[3],s=a*a+r*r+o*o+l*l,n=s?1/s:0;return e[0]=-a*n,e[1]=-r*n,e[2]=-o*n,e[3]=l*n,e},a.conjugate=function(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e},a.fromMat3=P,a.fromEuler=function(e,t,a,r){var o=.5*c/180;t*=o,a*=o,r*=o;var l=u(t),s=d(t),n=u(a),i=d(a),m=u(r),f=d(r);return e[0]=l*i*f-s*n*m,e[1]=s*n*f+l*i*m,e[2]=s*i*m-l*n*f,e[3]=s*i*f+l*n*m,e},a.str=function(e){return'quat('+e[0]+', '+e[1]+', '+e[2]+', '+e[3]+')'};var p=r(0),E=o(p),y=r(1),A=o(y),O=r(2),R=o(O),L=r(3),S=o(L),_=a.clone=S.clone,N=a.fromValues=S.fromValues,I=a.copy=S.copy,Y=a.set=S.set,q=a.add=S.add,g=a.mul=i,M=a.scale=S.scale,v=a.dot=S.dot,h=a.lerp=S.lerp,T=a.length=S.length,b=a.len=T,x=a.squaredLength=S.squaredLength,D=a.sqrLen=x,k=a.normalize=S.normalize,w=a.exactEquals=S.exactEquals,V=a.equals=S.equals,j=a.rotationTo=function(){var e=R.create(),t=R.fromValues(1,0,0),r=R.fromValues(0,1,0);return function(o,l,a){var n=R.dot(l,a);return-.999999>n?(R.cross(e,t,l),1e-6>R.len(e)&&R.cross(e,r,l),R.normalize(e,e),s(o,e,Math.PI),o):.999999=i&&0<=j&&1>=j}function e(d,a,b){return(a[0]-d[0])*(b[1]-d[1])-(b[0]-d[0])*(a[1]-d[1])}function a(d,a,b){return 0e(d,a,b)}function g(d,a,b){return 0>=e(d,a,b)}function h(d,a,b,c){var f=Math.sqrt;if(!c)return 0===e(d,a,b);var g=tmpPoint1,h=tmpPoint2;g[0]=a[0]-d[0],g[1]=a[1]-d[1],h[0]=b[0]-a[0],h[1]=b[1]-a[1];var i=g[0]*h[0]+g[1]*h[1],j=f(g[0]*g[0]+g[1]*g[1]),k=f(h[0]*h[0]+h[1]*h[1]),l=Math.acos(i/(j*k));return lb?b%c+c:b%c]}function m(a){a.length=0}function n(a,b,c,d){for(var e=c;eJ.length)return e;if(w++,w>s)return console.warn("quickDecomp: max level ("+s+") reached."),e;for(var v=0;vD&&(D+=c.length),d=x,Dd[c][0])&&(c=e);return!a(l(b,c-1),l(b,c),l(b,c+1))&&(j(b),!0)}}} + +// c3/3rdparty/localforage.js +!function(c){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=c();else if("function"==typeof define&&define.amd)define([],c);else{var a;a="undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?this:self:global:window,a.localforage=c()}}(function(){return function l(m,a,b){function d(e,f){if(!a[e]){if(!m[e]){var g="function"==typeof require&&require;if(!f&&g)return g(e,!0);if(c)return c(e,!0);var i=new Error("Cannot find module '"+e+"'");throw i.code="MODULE_NOT_FOUND",i}var j=a[e]={exports:{}};m[e][0].call(j.exports,function(b){var a=m[e][1][b];return d(a||b)},j,j.exports,l,m,a,b)}return a[e].exports}for(var c="function"==typeof require&&require,e=0;e=a.oldVersion&&b.createObjectStore(O)}catch(b){if("ConstraintError"!==b.name)throw b;console.warn("The database \""+g.name+"\" has been upgraded from version "+a.oldVersion+" to version "+a.newVersion+", but the storage \""+g.storeName+"\" already exists.")}}),e.onerror=function(b){b.preventDefault(),c(e.error)},e.onsuccess=function(){h(e.result),k(g)}})}function n(b){return m(b,!1)}function o(b){return m(b,!0)}function p(g,a){if(!g.db)return!0;var b=!g.db.objectStoreNames.contains(g.storeName),c=g.versiong.db.version;if(c&&(g.version!==a&&console.warn("The database \""+g.name+"\" can't be downgraded from version "+g.db.version+" to version "+g.version+"."),g.version=g.db.version),d||b){if(b){var e=g.db.version+1;e>g.version&&(g.version=e)}return!0}return!1}function q(e){return new N(function(a,b){var c=new FileReader;c.onerror=b,c.onloadend=function(b){var c=btoa(b.target.result||"");a({__local_forage_encoded_blob:!0,data:c,type:e.type})},c.readAsBinaryString(e)})}function r(b){return e([d(atob(b.data))],{type:b.type})}function s(b){return b&&b.__local_forage_encoded_blob}function t(d){var e=this,a=e._initReady().then(function(){var b=M[e._dbInfo.name];if(b&&b.dbReady)return b.dbReady});return B(a,d,d),a}function u(e){j(e);for(var a=M[e.name],f=a.forages,b=0;b>4,j[h++]=(15&c)<<4|d>>2,j[h++]=(3&d)<<6|63&e;return i}function y(e){var a,b=new Uint8Array(e),c="";for(a=0;a>2],c+=T[(3&b[a])<<4|b[a+1]>>4],c+=T[(15&b[a+1])<<2|b[a+2]>>6],c+=T[63&b[a+2]];return 2==b.length%3?c=c.substring(0,c.length-1)+"=":1==b.length%3&&(c=c.substring(0,c.length-2)+"=="),c}function z(j,a,i,c){var d=this;j=h(j);var b=new N(function(e,f){d.ready().then(function(){void 0===a&&(a=null);var g=a,h=d._dbInfo;h.serializer.serialize(a,function(a,b){b?f(b):h.db.transaction(function(b){b.executeSql("INSERT OR REPLACE INTO "+h.storeName+" (key, value) VALUES (?, ?)",[j,a],function(){e(g)},function(c,a){f(a)})},function(a){if(a.code===a.QUOTA_ERR){if(0e?void a(null):void j.ready().then(function(){v(j._dbInfo,Q,function(c,d){if(c)return b(c);try{var f=d.objectStore(j._dbInfo.storeName),g=!1,h=f.openCursor();h.onsuccess=function(){var b=h.result;return b?void(0===e?a(b.key):g?a(b.key):(g=!0,b.advance(e))):void a(null)},h.onerror=function(){b(h.error)}}catch(c){b(c)}})}).catch(b)});return g(b,a),b},keys:function(d){var i=this,a=new N(function(d,b){i.ready().then(function(){v(i._dbInfo,Q,function(a,c){if(a)return b(a);try{var e=c.objectStore(i._dbInfo.storeName),f=e.openCursor(),g=[];f.onsuccess=function(){var a=f.result;return a?void(g.push(a.key),a.continue()):void d(g)},f.onerror=function(){b(f.error)}}catch(c){b(c)}})}).catch(b)});return g(a,d),a}},T="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",U=/^~~local_forage_type~([^~]+)~/,V="__lfsc__:",W="__lfsc__:".length,X="arbf",Y="blob",Z="si08",$="ui08",_="uic8",aa="si16",ba="si32",ca="ur16",da="ui32",ea="fl32",fa="fl64",ga=9+"arbf".length,ha=Object.prototype.toString,ia={serialize:function(g,a){var b="";if(g&&(b=ha.call(g)),g&&("[object ArrayBuffer]"===b||g.buffer&&"[object ArrayBuffer]"===ha.call(g.buffer))){var c,d=V;g instanceof ArrayBuffer?(c=g,d+=X):(c=g.buffer,"[object Int8Array]"===b?d+=Z:"[object Uint8Array]"===b?d+=$:"[object Uint8ClampedArray]"===b?d+=_:"[object Int16Array]"===b?d+=aa:"[object Uint16Array]"===b?d+=ca:"[object Int32Array]"===b?d+=ba:"[object Uint32Array]"===b?d+=da:"[object Float32Array]"===b?d+=ea:"[object Float64Array]"===b?d+=fa:a(new Error("Failed to get type for BinaryArray"))),a(d+y(c))}else if("[object Blob]"===b){var e=new FileReader;e.onload=function(){var b="~~local_forage_type~"+g.type+"~"+y(this.result);a(V+Y+b)},e.readAsArrayBuffer(g)}else try{a(JSON.stringify(g))}catch(b){console.error("Couldn't convert value into a JSON string: ",g),a(null,b)}},deserialize:function(g){if(g.substring(0,W)!==V)return JSON.parse(g);var a,h=g.substring(ga),c=g.substring(W,ga);if(c===Y&&U.test(h)){var d=h.match(U);a=d[1],h=h.substring(d[0].length)}var i=x(h);switch(c){case X:return i;case Y:return e([i],{type:a});case Z:return new Int8Array(i);case $:return new Uint8Array(i);case _:return new Uint8ClampedArray(i);case aa:return new Int16Array(i);case ca:return new Uint16Array(i);case ba:return new Int32Array(i);case da:return new Uint32Array(i);case ea:return new Float32Array(i);case fa:return new Float64Array(i);default:throw new Error("Unkown type: "+c);}},stringToBuffer:x,bufferToString:y},ja={_driver:"webSQLStorage",_initStorage:function(f){var g=this,b={db:null};if(f)for(var a in f)b[a]="string"==typeof f[a]?f[a]:f[a].toString();var c=new N(function(c,e){try{b.db=openDatabase(b.name,b.version+"",b.description,b.size)}catch(b){return e(b)}b.db.transaction(function(a){a.executeSql("CREATE TABLE IF NOT EXISTS "+b.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],function(){g._dbInfo=b,c()},function(c,a){e(a)})})});return b.serializer=ia,c},_support:function(){return"function"==typeof openDatabase}(),iterate:function(k,a){var f=this,b=new N(function(a,c){f.ready().then(function(){var b=f._dbInfo;b.db.transaction(function(d){d.executeSql("SELECT * FROM "+b.storeName,[],function(e,c){for(var d=c.rows,f=d.length,g=0;g{e="Windows";const b=a.split(" ")[2];b&&("5.0"===b?f="2000":"5.1"===b?f="XP":"5.2"===b?f="XP":"6.0"===b?f="Vista":"6.1"===b?f="7":"6.2"===b?f="8":"6.3"===b?f="8.1":"10.0"===b?f="10":void 0)}),a("isOSX",d.OSX,(a)=>{e="Mac OS X";const b=a.split(" ")[3];b&&(f=b.replace("_","."))}),a("isLinux",c.linux,()=>{e="Linux"}),a("isChromeOS",c.chromeOS,()=>{e="Chrome OS"}),a("isAndroid",!c.windowsTizen&&d.android,(a)=>{e="Android";const b=a.split(" ")[1];b&&(f=b)}),a("isTizen",d.tizen,(a)=>{e="Tizen";const b=a.split(" ")[1];b&&(f=b)}),a("isIPhone",!c.windowsTizen&&d.iphone,(a)=>{e="iOS";const b=a.split(" ")[2];b&&(f=b.replace("_","."))}),a("isIPad",!c.windowsTizen&&d.ipad,(a)=>{e="iOS";const b=a.split(" ")[3];b&&(f=b.replace("_","."))}),a("isWindowsPhone",d.winPhone,(a)=>{e="Windows Phone";const b=a.split(" ")[2];b&&(f=b)}),a("isWindowsPhoneOS",d.winPhoneOS,(a)=>{e="Windows Phone";const b=a.split(" ")[3];b&&(f=b)}),a("isBlackberry",c.blackberry,()=>{e="Blackberry",f="10",h="stock",k="webkit"}),a("isChrome",!c.edge&&!c.opera&&d.chrome,(a)=>{h="Chrome",k="Blink";const b=a.split("/")[1];b&&(i=b)}),a("isOpera",d.opera,(a)=>{h="Opera",k="Blink";const b=a.split("/")[1];b&&(i=b)}),a("isChromium",d.chromium,(a)=>{h="Chromium",k="Blink";const b=a.split("/")[1];b&&(i=b)}),a("isFirefox",d.firefox,(a)=>{h="Firefox",k="Gecko";const b=a.split("/")[1];b&&(i=b)}),a("isInternetExplorer",d.ie,(a)=>{h="Internet Explorer",k="Trident";const b=a.split(" ")[1];b&&(i=b)}),a("isTrident","Internet Explorer"!=h&&c.trident,()=>{k="Trident";const a=/rv:[0-9.]+/i.exec(b);if(a&&a.length){h="Internet Explorer";const b=a[0].split(":")[1];b&&(i=b)}}),a("isEdge",d.edge,(a)=>{h="Edge",k="Edge";const b=a.split("/")[1];b&&(i=b)}),a("isSafari",c.safari&&!c.nokia&&!c.chrome&&!c.chromium&&!c.genericIE&&!c.blackberry,()=>{h="Safari",k="WebKit";const a=/version\/[0-9.]+/i.exec(b),c=/crios\/[0-9.]+/i.exec(b),d=/fxios\/[0-9.]+/i.exec(b);if(a&&a.length){const b=a[0].split("/")[1];b&&(i=b)}if(c&&c.length){h="Chrome for iOS";const a=c[0].split("/")[1];a&&(i=a)}if(d&&d.length){h="Firefox for iOS";const a=d[0].split("/")[1];a&&(i=a)}}),a("isSilk",d.silk,(a)=>{h="Silk";const b=a.split("/")[1];b&&(i=b)}),a("isCrosswalk",c.crosswalk,()=>l="crosswalk"),a("isCordova",self["device"]&&(self["device"]["cordova"]||self["device"]["phonegap"]),()=>l="cordova"),a("isNWJS",d.nwjs,(a)=>{l="nwjs",h="NW.js",k="Chromium";const b=a.split("/")[1];b&&(i=b)}),a("isAmazonWebApp",c.amazonwebapp,()=>l="webapp"),a("isHomeScreenWebApp","nwjs"!=l&&"undefined"!=typeof window&&(window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches||navigator["standalone"]),()=>l="webapp"),a("isFalseSafari","Safari"==h&&("Android"==e||"Tizen"==e||"Blackberry"==e),()=>h="stock"),a("isAndroidWebview","Chrome"==h&&"browser"==l&&c.webview,()=>l="webview"),a("isFirefoxOS","Firefox"==h&&e=="(unknown)",()=>e="Firefox OS"),a("isAndroidFallback",e=="(unknown)"&&!c.windowsTizen&&c.android,()=>e="Android"),a("isTridentFallback",e=="(unknown)"&&c.trident,()=>k="Trident"),a("isWebkitFallback",e=="(unknown)"&&c.webkit,()=>k="WebKit"),a("is64Bit",((a)=>a.test(b)||a.test(navigator.platform)||"x64"===navigator.cpuClass)(/x86_64|x86-64|win64|x64;|x64\)|x64_|amd64|wow64|ia64|arm64|arch64|sparc64|ppc64|irix64/i),()=>g="64-bit"),a("is32Bit",((a)=>a.test(b)||a.test(navigator.platform)||"x86"===navigator.cpuClass)(/x86;|x86\)|i86|i386|i486|i586|i686|armv1|armv2|armv3|armv4|armv5|armv6|armv7/i),()=>g="32-bit"),a("is64BitFallback",g=="(unknown)"&&"Mac OS X"==e&&10.7<=parseFloat(f),()=>g="64-bit"),a("is32BitFallback",g=="(unknown)"&&"Windows"==e||"Android"==e&&5>parseFloat(f),()=>g="32-bit"),a("is32BitBrowser","32-bit"==g||/wow64/i.test(b),()=>j="32-bit"),a("is64BitBrowser",/win64/i.test(b),()=>j="64-bit"),a("isDesktop",(()=>"Windows"==e||"Mac OS X"==e||"Linux"==e||"Chrome OS"==e||"nwjs"==l)(),()=>m=!0),"Edge"==k&&"undefined"!=typeof Windows&&"undefined"!=typeof Windows["System"]&&(l="windows-store"),n="nwjs"==l||"windows-store"==l,C3.Platform={OS:e,OSVersion:f,OSArchitecture:g,Browser:h,BrowserVersion:i,BrowserVersionNumber:parseFloat(i),BrowserArchitecture:j,BrowserEngine:k,Context:l,IsDesktop:m,IsMobile:!m,IsDesktopApp:n,IsChromeWebStore:!!(self["chrome"]&&self["chrome"]["runtime"]&&self["chrome"]["runtime"]["id"]),IsAppleOS:"Mac OS X"==e||"iOS"==e}} + +// ../lib/misc/supports.js +"use strict";{if(C3.Supports={},C3.Supports.WebAnimations=(()=>{try{if("undefined"==typeof document)return!1;const a=document.createElement("div");if("undefined"==typeof a.animate)return!1;const b=a.animate([{opacity:"0"},{opacity:"1"}],1e3);return"undefined"!=typeof b.reverse}catch(a){return!1}})(),C3.Supports.DialogElement="undefined"!=typeof HTMLDialogElement,C3.Supports.RequestIdleCallback=!!self.requestIdleCallback,C3.Supports.ImageBitmap="Safari"!==C3.Platform.Browser&&"Firefox"!==C3.Platform.Browser&&!!self.createImageBitmap,C3.Supports.ImageBitmapOptions=!1,C3.Supports.ImageBitmap)try{self.createImageBitmap(new ImageData(32,32),{premultiplyAlpha:"none"}).then(()=>{C3.Supports.ImageBitmapOptions=!0}).catch(()=>{C3.Supports.ImageBitmapOptions=!1})}catch(a){C3.Supports.ImageBitmapOptions=!1}C3.Supports.ClipboardReadText=!!(navigator["clipboard"]&&navigator["clipboard"]["readText"]&&"Firefox"!==C3.Platform.Browser),C3.Supports.Proxies="undefined"!=typeof Proxy,C3.Supports.DownloadAttribute=(()=>{if("undefined"==typeof document)return!1;const b=document.createElement("a");return"undefined"!=typeof b.download})(),C3.Supports.CanvasToBlob=(()=>"undefined"!=typeof HTMLCanvasElement&&HTMLCanvasElement.prototype.toBlob)(),C3.Supports.CSSElement="undefined"!=typeof CSS&&CSS.supports("background","element(#test)"),C3.Supports.Fetch="function"==typeof fetch,C3.Supports.PersistentStorage=!!(self.isSecureContext&&"Opera"!==C3.Platform.Browser&&navigator["storage"]&&navigator["storage"]["persist"]),C3.Supports.StorageQuotaEstimate=!!(self.isSecureContext&&navigator["storage"]&&navigator["storage"]["estimate"]),C3.Supports.Fullscreen=()=>{if("undefined"==typeof document)return!1;const a=document.documentElement;return!!(a.requestFullscreen||a.msRequestFullscreen||a.mozRequestFullScreen||a.webkitRequestFullscreen)};const a=[{name:"A",value:12},{name:"B",value:13},{name:"C",value:13},{name:"D",value:13},{name:"E",value:13},{name:"F",value:13},{name:"G",value:14},{name:"H",value:12},{name:"I",value:12},{name:"J",value:13},{name:"K",value:14}],b=Math.ceil(496/a.length),c=(b+"").length,d=[];for(const e of a)for(let a=0;a<=b;a++)d.push({name:e.name+(a+"")["padStart"](c,"0"),value:e.value});d.sort((c,a)=>a.value-c.value);const e=d.reduce((a,b)=>{const c=b.name.slice(0,1),d=a.slice(-1);return d===c?a:a+c},"");C3.Supports.ArraySortProbablyStable="GKBCDEFJAHI"===e} + +// ../lib/misc/polyfills.js +"use strict";{if(!String.prototype.trimStart){const a=/^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*/;String.prototype.trimStart=function(){return this.replace(a,"")}}if(!String.prototype.trimEnd){const a=/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*$/;String.prototype.trimEnd=function(){return this.replace(a,"")}}if(Array.prototype.values||(Array.prototype.values=function*(){for(const a of this)yield a}),!Array.prototype.flat){function a(b,c){return b.reduce((b,d)=>0navigator["webkitTemporaryStorage"]["queryUsageAndQuota"]((b,c)=>a({"usage":b,"quota":c}),b))}),"undefined"==typeof HTMLCollection||HTMLCollection.prototype[Symbol.iterator]||(HTMLCollection.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}});"undefined"==typeof NodeList||NodeList.prototype[Symbol.iterator]||(NodeList.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}});"undefined"==typeof DOMTokenList||DOMTokenList.prototype[Symbol.iterator]||(DOMTokenList.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}});if("undefined"==typeof FileList||FileList.prototype[Symbol.iterator]||(FileList.prototype[Symbol.iterator]=function(){let a=0;return{next:()=>a>=this.length?{done:!0}:{value:this.item(a++),done:!1}}}),"undefined"==typeof TextEncoder&&(self.TextEncoder=class{constructor(){Object.defineProperty(this,"encoding",{"value":"utf-8","writable":!1})}encode(a){for(var b=a.length,c=-1,d=new Uint8Array(3*b),e=0,f=0,g=0;g!==b;){if(e=a.charCodeAt(g),g+=1,55296<=e&&56319>=e){if(g===b){d[c+=1]=239,d[c+=1]=191,d[c+=1]=189;break}if(f=a.charCodeAt(g),!(56320<=f&&57343>=f)){d[c+=1]=239,d[c+=1]=191,d[c+=1]=189;continue}else if(e=1024*(e-55296)+f-56320+65536,g+=1,65535>>18,d[c+=1]=128|63&e>>>12,d[c+=1]=128|63&e>>>6,d[c+=1]=128|63&e;continue}}127>=e?d[c+=1]=0|e:2047>=e?(d[c+=1]=192|e>>>6,d[c+=1]=128|63&e):(d[c+=1]=224|e>>>12,d[c+=1]=128|63&e>>>6,d[c+=1]=128|63&e)}return new Uint8Array(d.buffer.slice(0,c+1))}toString(){return"[object TextEncoder]"}},TextEncoder[Symbol.toStringTag]="TextEncoder"),"undefined"==typeof TextDecoder){function a(a){const b=a[Symbol.iterator]();return{next:()=>b.next(),[Symbol.iterator](){return this}}}function b(a){const b=a.next();if(b.done)throw new Error("unexpected end of input");if(0!=(128^192&b.value))throw new Error("invalid byte");return 63&b.value}const c=new Map;c.set("utf-8",(c,d)=>{let e;if(c.buffer)e=new Uint8Array(c.buffer,c.byteOffset,c.byteLength);else if(e instanceof ArrayBuffer)e=new Uint8Array(c);else throw new Error("Invalid parameter");const f=a(e),g=[];try{for(const a of f){let c;if(127>a)c=127&a;else if(223>a)c=(31&a)<<6|b(f);else if(239>a)c=(15&a)<<12|b(f)<<6|b(f);else if(247>a)c=(7&a)<<18|b(f)<<12|b(f)<<6|b(f);else throw new Error("Invalid character");g.push(String.fromCodePoint(c))}}catch(a){if(d)throw a;g.push("\uFFFD")}return g.join("")}),c.set("utf8",c.get("utf-8")),c.set("utf-16le",()=>{throw new Error("utf-16le decoder not implemented")}),self.TextDecoder=class{constructor(a="utf-8",b={}){const d=c.get(a);if(!d)throw new Error(`TextDecoder polyfill does not support "${a}"`);Object.defineProperty(this,"fatal",{"value":!0===b["fatal"],"writable":!1}),Object.defineProperty(this,"_decoder",{"value":d,"writable":!1}),Object.defineProperty(this,"encoding",{"value":a,"writable":!1})}decode(a){return this["_decoder"](a,this["fatal"])}toString(){return"[object TextDecoder]"}},TextDecoder[Symbol.toStringTag]="TextDecoder"}"undefined"==typeof self.isSecureContext&&(self.isSecureContext="https:"===location.protocol)} + +// c3/lib/misc/assert.js +"use strict";{function a(a){let b=C3.GetCallStack();console.error("Assertion failure: "+a+"\n\nStack trace:\n"+b)}self.assert=function(b,c){b||a(c)}} + +// ../lib/misc/typeChecks.js +"use strict";C3.IsNumber=function(a){return"number"==typeof a},C3.IsFiniteNumber=function(a){return C3.IsNumber(a)&&isFinite(a)},C3.RequireNumber=function(a){if(!C3.IsNumber(a))throw new TypeError("expected number")},C3.RequireOptionalNumber=function(a){C3.IsNullOrUndefined(a)},C3.RequireNumberInRange=function(a,b,c){if(!C3.IsNumber(a)||isNaN(a)||b>a||cC3.getName(a))),b=[...a].join(",");console.warn(`An object derived from DefendedBase was not protected with debugDefend(). This will disable some checks. See the coding guidelines! Possible affected class names: ${b}`),f.clear(),g.clear()}}function d(a){let b=new Set;for(let c in a)b.add(c);return b}function e(a,b){let c=d(b),e=l.get(a);if(e){let b=[];for(let a of e.values())c.has(a)?c.delete(a):b.push(a);C3.appendArray(b,[...c]),b.length&&console.warn(`[Defence] '${C3.getName(a)}' constructor creates inconsistent properties: ${b.join(", ")}`)}else l.set(a,c)}C3.GetCallStack=function(){return new Error().stack},C3.Debugger=function(){debugger},C3.cast=function(a,b){return a&&a instanceof b?a:null},C3.getName=function(a){return"undefined"==typeof a?"undefined":null===a?"null":"boolean"==typeof a?"":C3.IsNumber(a)?"":C3.IsString(a)?"":C3.IsArray(a)?"":"symbol"==typeof a?"<"+a.toString()+">":C3.IsFunction(a)?a.name&&"Function"!==a.name?a.name:"":"object"==typeof a?a.constructor&&a.constructor.name&&"Object"!==a.constructor.name?a.constructor.name:"":""},C3.getType=function(a){return null===a?"null":Array.isArray(a)?"array":typeof a};let f=new Map,g=new Map,h=new WeakMap,i=new WeakMap;C3.DefendHandler={};const j=new Set(["then","splice"]);C3.DefendHandler.get=function(a,c){return c in a||"symbol"==typeof c||j.has(c)||b(`Accessed missing property '${c}' from defended object '${C3.getName(a)}', returning undefined`),i.has(a)&&"symbol"!=typeof c&&!j.has(c)&&b(`Accessed property '${c}' on a released object '${C3.getName(a)}'\nObject was originally released at: ${i.get(a)})\nCall stack at access: `),a[c]},C3.DefendHandler.set=function(c,d,e){return d in c||f.has(c)||b(`Set non-existent property '${d}' to '${e}' on defended object '${C3.getName(c)}'`),a(c[d],e)||f.has(c)||b(`Set '${C3.getType(c[d])}' property '${d}' to type '${C3.getType(e)}' on defended object '${C3.getName(c)}'`),i.has(c)&&b(`Set property '${d}' on a released object '${C3.getName(c)}'\nObject was originally released at: ${i.get(c)})\nCall stack at access: `),c[d]=e,!0},C3.DefendHandler.deleteProperty=function(a,b){throw new ReferenceError(`Cannot delete property '${b}' from defended object '${C3.getName(a)}'`)},C3.DefendHandler.defineProperty=function(a,b){throw new ReferenceError(`Cannot define property '${b}' on defended object '${C3.getName(a)}'`)},C3.DefendHandler.enumerate=function(a){throw new ReferenceError(`Cannot enumerate defended object '${C3.getName(a)}'`)};let k=-1;C3.DefendedBase=class{constructor(){if(C3.isDebugDefend&&C3.Supports.Proxies){let a=new.target,b=Object.create(a.prototype),d=new Proxy(b,C3.DefendHandler);return f.set(b,d),g.set(d,b),h.set(d,b),-1===k&&(k=requestAnimationFrame(c)),d}}},C3.debugDefend=function(a){if(C3.isDebugDefend&&C3.Supports.Proxies&&a instanceof C3.DefendedBase){if(!g.has(a))return a;let b=g.get(a);return g.delete(a),f.delete(b),a}return C3.isDebug?Object.seal(a):a},C3.New=function(a,...b){let c;try{c=new a(...b)}catch(a){throw g.clear(),f.clear(),a}return C3.isDebugDefend&&e(a,c),C3.debugDefend(c)},C3.Release=function(a){let b=h.get(a);b&&i.set(b,C3.GetCallStack())},C3.WasReleased=function(a){let b=h.get(a);return!!b&&!!i.get(b)};let l=new Map} + +// ../lib/misc/mathutil.js +"use strict";{function a(a){return 0===a&&0>1/a}const b=2*Math.PI,c=Math.PI/180,d=180/Math.PI;C3.wrap=function(a,b,c){var d=Math.floor;if(a=d(a),b=d(b),c=d(c),aa?a:c},C3.clampAngle=function(c){return c%=b,0>c&&(c+=b),c},C3.toRadians=function(a){return a*c},C3.toDegrees=function(a){return a*d},C3.distanceTo=function(a,b,c,d){return Math.hypot(c-a,d-b)},C3.distanceSquared=function(a,b,c,d){const e=c-a,f=d-b;return e*e+f*f},C3.angleTo=function(a,b,c,d){return Math.atan2(d-b,c-a)},C3.angleDiff=function(a,b){var c=Math.cos,d=Math.sin;if(a===b)return 0;let e=d(a),f=c(a),g=d(b),h=c(b),i=e*g+f*h;return 1<=i?0:-1>=i?Math.PI:Math.acos(i)},C3.angleRotate=function(a,b,c){var d=Math.cos,e=Math.sin;let f=e(a),g=d(a),h=e(b),i=d(b);return Math.acos(f*h+g*i)>c?0=f*g-e*h},C3.angleLerp=function(c,a,b){let d=C3.angleDiff(c,a);return C3.angleClockwise(a,c)?C3.clampAngle(c+d*b):C3.clampAngle(c-d*b)},C3.lerp=function(c,a,b){return c+b*(a-c)},C3.unlerp=function(c,a,b){return c===a?0:(b-c)/(a-c)},C3.relerp=function(e,a,b,f,c){return C3.lerp(f,c,C3.unlerp(e,a,b))},C3.qarp=function(d,a,b,c){return C3.lerp(C3.lerp(d,a,c),C3.lerp(a,b,c),c)},C3.cubic=function(e,a,b,c,d){return C3.lerp(C3.qarp(e,a,b,d),C3.qarp(a,b,c,d),d)},C3.cosp=function(c,a,b){return(c+a+(c-a)*Math.cos(b*Math.PI))/2},C3.isPOT=function(a){return 0b;b<<=1)a|=a>>b;return a+1},C3.roundToNearestFraction=function(a,b){return Math.round(a*b)/b},C3.floorToNearestFraction=function(a,b){return Math.floor(a*b)/b},C3.round6dp=function(a){return Math.round(1e6*a)/1e6},C3.toFixed=function(a,b){let c=a.toFixed(b),d=c.length-1;for(;0<=d&&"0"===c.charAt(d);--d);return 0<=d&&"."===c.charAt(d)&&--d,0>d?c:c.substr(0,d+1)},C3.PackRGB=function(a,b,c){return C3.clamp(a,0,255)|C3.clamp(b,0,255)<<8|C3.clamp(c,0,255)<<16};const e=1024;C3.PackRGBAEx=function(a,b,c,d){var f=Math.floor;return a=C3.clamp(f(1024*a),-8192,8191),b=C3.clamp(f(1024*b),-8192,8191),c=C3.clamp(f(1024*c),-8192,8191),d=C3.clamp(f(1023*d),0,1023),0>a&&(a+=16384),0>b&&(b+=16384),0>c&&(c+=16384),-(16384*(16384*a)*e+16384*b*e+c*e+d)},C3.PackRGBEx=function(a,b,c){return C3.PackRGBAEx(a,b,c,1)},C3.GetRValue=function(a){if(0<=a)return(255&a)/255;else{let b=Math.floor(-a/274877906944);return 8191>8)/255;else{let b=Math.floor(-a%274877906944/16777216);return 8191>16)/255;else{let b=Math.floor(-a%16777216/e);return 8191c(b-e))return d.slice(0);if(e=a/d[1]*d[0],1>c(b-e))return[d[1],d[0]]}let e=C3.greatestCommonDivisor(a,b);return[a/e,b/e]},C3.segmentsIntersect=function(a,b,c,e,f,g,h,i){var j=Math.abs;let k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(ao)return!1;if(bq)return!1;let s=f-a+h-c,t=g-b+i-e,u=c-a,v=e-b,w=h-f,x=i-g,y=j(v*w-x*u);if(j(w*t-x*s)>y)return!1;return j(u*t-v*s)<=y},C3.segmentsIntersectPreCalc=function(a,b,c,e,f,g,h,i,j,k,l,m){var n=Math.abs;let o=0,p=0,q=0,r=0;if(jo)return!1;if(kq)return!1;let s=j-a+l-c,t=k-b+m-e,u=c-a,v=e-b,w=l-j,x=m-k,y=n(v*w-x*u);if(n(w*t-x*s)>y)return!1;return n(u*t-v*s)<=y},C3.segmentIntersectsQuad=function(a,b,c,d,e){let f=0,g=0,h=0,i=0;ab?"":a.substr(b)},C3.GetFileNamePart=function(a){let b=a.lastIndexOf(".");return 1>b?a:a.substr(0,b)},C3.NormalizeFileSeparator=function(a){return a.replace(/\\/g,"/")},C3.ParseFilePath=function(a){a=C3.NormalizeFileSeparator(a);let b=/^\w\:\//.exec(a);b?(b=b[0],a=a.slice(3)):b="";const c=a.lastIndexOf("/")+1;let d,e="",f=a,g="";0!=c&&(e=a.slice(0,c-1),f=a.slice(c)),d=f;const h=f.lastIndexOf(".");return 0{self.setTimeout(c,a,b)})},C3.swallowException=function(a){try{a()}catch(a){C3.isDebug&&console.warn("Swallowed exception: ",a)}},C3.noop=function(){},C3.equalsNoCase=function(c,d){return"string"==typeof c&&"string"==typeof d&&!(c.length!==d.length)&&(!(c!==d)||c.toLowerCase()===d.toLowerCase())},C3.stableSort=function(a,c){const b=a.map((a,b)=>[a,b]);b.sort((d,a)=>{const b=c(d[0],a[0]);return 0===b?d[1]-a[1]:b});for(let d=0,e=a.length;dd&&C3.extendArray(a,b,c)},C3.shallowAssignArray=function(a,b){C3.clearArray(a),C3.appendArray(a,b)},C3.appendArray=function(c,a){for(let b=0,d=a.length;bb||b>=a.length)){let c=a.length-1;for(let d=b;dc:!(5!=b)&&a>=c},C3.hasAnyOwnProperty=function(a){for(let b in a)if(a.hasOwnProperty(b))return!0;return!1},C3.PromiseAllWithProgress=function(a,b){return a.length?new Promise((c,d)=>{const e=[];let f=0,g=!1;for(let h=0,i=a.length;h{g||(e[h]=d,++f,f===a.length?c(e):b(f,a.length))}).catch((a)=>{g=!0,d(a)})}):Promise.resolve([])};let c=[];C3.AddLibraryMemoryCallback=function(a){c.push(a)},C3.GetEstimatedLibraryMemoryUsage=function(){let a=0;for(let b of c){let c=b();a+=c}return Math.floor(a)}} + +// c3/lib/misc/runtimeutil.js +"use strict";C3.IsAbsoluteURL=function(a){return /^(?:[a-z]+:)?\/\//.test(a)||"data:"===a.substr(0,5)||"blob:"===a.substr(0,5)},C3.IsRelativeURL=function(a){return!C3.IsAbsoluteURL(a)},C3.ThrowIfNotOk=function(a){if(!a.ok)throw new Error(`fetch '${a.url}' response returned ${a.status} ${a.statusText}`)},C3.FetchOk=function(a,b){return fetch(a,b).then((a)=>(C3.ThrowIfNotOk(a),a))},C3.FetchText=function(a){return C3.FetchOk(a).then((a)=>a.text())},C3.FetchJson=function(a){return C3.FetchOk(a).then((a)=>a.json())},C3.FetchBlob=function(a){return C3.FetchOk(a).then((a)=>a.blob())},C3.FetchArrayBuffer=function(a){return C3.FetchOk(a).then((a)=>a.arrayBuffer())},C3.FetchImage=function(a){return new Promise((b,c)=>{const d=new Image;d.onload=()=>b(d),d.onerror=(a)=>c(a),d.src=a})},C3.BlobToArrayBuffer=function(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=()=>b(d.result),d.onerror=()=>c(d.error),d.readAsArrayBuffer(a)})},C3.BlobToString=function(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=()=>b(d.result),d.onerror=()=>c(d.error),d.readAsText(a)})},C3.BlobToJson=function(a){return C3.BlobToString(a).then((a)=>JSON.parse(a))},C3.BlobToImage=async function(a,b){let c=URL.createObjectURL(a);try{const a=await C3.FetchImage(c);return URL.revokeObjectURL(c),c="",b&&"function"==typeof a["decode"]&&(await a["decode"]()),a}finally{c&&URL.revokeObjectURL(c)}},C3.CreateCanvas=function(a,b){if("undefined"!=typeof document&&"function"==typeof document.createElement){const c=document.createElement("canvas");return c.width=a,c.height=b,c}return new OffscreenCanvas(a,b)},C3.CanvasToBlob=function(a,b,c){return"number"!=typeof c&&(c=1),b=b||"image/png",c=C3.clamp(c,0,1),a.toBlob?new Promise((d)=>a.toBlob(d,b,c)):a["convertToBlob"]?a["convertToBlob"]({"type":b,"quality":c}):C3.Asyncify(()=>C3.CanvasToBlobSync(a,b,c))},C3.CanvasToBlobSync=function(a,b,c){return"number"!=typeof c&&(c=1),b=b||"image/png",c=C3.clamp(c,0,1),C3.DataURIToBinaryBlob(a.toDataURL(b,c))},C3.DataURIToBinaryBlob=function(a){const b=C3.ParseDataURI(a);return C3.BinaryStringToBlob(b.data,b.mime_type)},C3.ParseDataURI=function(a){if("data:"!==a.substr(0,5))throw new URIError("expected data: uri");let b=a.indexOf(",");if(0>b)throw new URIError("expected comma in data: uri");let c,d=a.substring(5,b),e=a.substring(b+1),f=d.split(";"),g=f[0]||"",h=f[1],i=f[2];return c="base64"===h||"base64"===i?atob(e):decodeURIComponent(e),{mime_type:g,data:c}},C3.BinaryStringToBlob=function(a,b){let c,d,e=a.length,f=e>>2,g=new Uint8Array(e),h=new Uint32Array(g.buffer,0,f);for(c=0,d=0;cC3.DrawableToBlob(a,b,c));if(C3.Supports.ImageBitmap)return createImageBitmap(a).then((a)=>C3.DrawableToBlob(a,b,c));else{const d=C3.CreateCanvas(a.width,a.height),e=d.getContext("2d");return e.putImageData(a,0,0),C3.CanvasToBlob(d,b,c)}},C3.CopySet=function(a,b){a.clear();for(const c of b)a.add(c)},C3.MapToObject=function(a){const b=Object.create(null);for(const[c,d]of a.entries())b[c]=d;return b},C3.ObjectToMap=function(a,b){b.clear();for(const[c,d]of Object.entries(a))b.set(c,d)},C3.ToSuperJSON=function a(b){if("object"==typeof b&&null!==b){if(b instanceof Set)return{"_c3type_":"set","data":[...b].map((b)=>a(b))};if(b instanceof Map)return{"_c3type_":"map","data":[...b].map((b)=>[b[0],a(b[1])])};else{const c=Object.create(null);for(const[d,e]of Object.entries(b))c[d]=a(e);return c}}return b},C3.FromSuperJSON=function a(b){if("object"==typeof b&null!==b){if("set"===b["_c3type_"])return new Set(b["data"].map((b)=>a(b)));if("map"===b["_c3type_"])return new Map(b["data"].map((b)=>[b[0],a(b[1])]));else{const c=Object.create(null);for(const[d,e]of Object.entries(b))c[d]=a(e);return c}}return b},C3.CSSToCamelCase=function(a){let b="",c=!1;for(const d of a)"-"===d?c=!0:c?(b+=d.toUpperCase(),c=!1):b+=d;return b},C3.IsIterator=function(a){return"object"==typeof a&&"function"==typeof a.next}; + +// ../lib/misc/color.js +"use strict";{function a(a){return 0===a.length?"00":1===a.length?"0"+a:a}function c(a,b,c){return 0>c&&(c+=1),1b.length)return!1;const c=parseInt(b[0].trim(),10)/255,d=parseInt(b[1].trim(),10)/255,e=parseInt(b[2].trim(),10)/255;return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),this.setA(1),!0}parseCommaSeparatedPercentageRgb(a){if("string"!=typeof a)return!1;a=a.replace(/^rgb\(|\)|%/,"");const b=a.split(",");if(3>b.length)return!1;const c=parseInt(b[0].trim(),10)/100,d=parseInt(b[1].trim(),10)/100,e=parseInt(b[2].trim(),10)/100;return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),this.setA(1),!0}parseCommaSeparatedRgba(a){if("string"!=typeof a)return!1;a=a.replace(/^rgba\(|\)|%/,"");const b=a.split(",");if(4>b.length)return!1;const c=parseInt(b[0].trim(),10)/255,d=parseInt(b[1].trim(),10)/255,e=parseInt(b[2].trim(),10)/255,f=parseFloat(b[3].trim());return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),isFinite(f)&&this.setA(f),!0}parseCommaSeparatedPercentageRgba(a){if("string"!=typeof a)return!1;a=a.replace(/^rgba\(|\)|%/,"");const b=a.split(",");if(4>b.length)return!1;const c=parseInt(b[0].trim(),10)/100,d=parseInt(b[1].trim(),10)/100,e=parseInt(b[2].trim(),10)/100,f=parseFloat(b[3].trim());return isFinite(c)&&this.setR(c),isFinite(d)&&this.setG(d),isFinite(e)&&this.setB(e),isFinite(f)&&this.setA(f),!0}parseString(a){if("string"!=typeof a)return!1;if(a=a.replace(/\s+/,""),a.includes(",")){if(a.startsWith("rgb("))return a.includes("%")?this.parseCommaSeparatedPercentageRgb(a):this.parseCommaSeparatedRgb(a);if(a.startsWith("rgba("))return a.includes("%")?this.parseCommaSeparatedPercentageRgba(a):this.parseCommaSeparatedRgba(a);if(a.startsWith("hsl(")||a.startsWith("hsla("))return this.parseHSLString(a);else{const b=a.split(",");return a.includes("%")?3===b.length?this.parseCommaSeparatedPercentageRgb(a):4===b.length&&this.parseCommaSeparatedPercentageRgba(a):3===b.length?this.parseCommaSeparatedRgb(a):4===b.length&&this.parseCommaSeparatedRgba(a)}}else return this.parseHexString(a)}toJSON(){return[this._r,this._g,this._b,this._a]}setFromHSLA(d,e,f,h){let a,i,g;if(d%=360,e=C3.clamp(e,0,100),f=C3.clamp(f,0,100),h=C3.clamp(h,0,1),d/=360,e/=100,f/=100,0===e)a=i=g=f;else{const b=.5>f?f*(1+e):f+e-f*e,h=2*f-b;a=c(h,b,d+1/3),i=c(h,b,d),g=c(h,b,d-1/3)}return this.setR(a),this.setG(i),this.setB(g),this.setA(h),this}parseHSLString(a){const c=a.replace(/ |hsl|hsla|\(|\)|;/gi,""),e=b.exec(c),f=d.exec(c);return e&&4===e.length?(this.setFromHSLA(+e[1],+e[2],+e[3],1),!0):!!(f&&5===f.length)&&(this.setFromHSLA(+e[1],+e[2],+e[3],+e[4]),!0)}toHSLAString(){var c=Math.round;const e=this._r,f=this._g,g=this._b,b=this._a,a=Math.max(e,f,g),i=Math.min(e,f,g);let j,h,k=(a+i)/2;if(a===i)j=h=0;else{const b=a-i;h=.5a.length||(this._r=a[0],this._g=a[1],this._b=a[2],this._a=4<=a.length?a[3]:1)}set r(a){this.setR(a)}get r(){return this.getR()}set g(a){this.setG(a)}get g(){return this.getG()}set b(a){this.setB(a)}get b(){return this.getB()}set a(b){this.setA(b)}get a(){return this.getA()}setAtIndex(a,b){switch(a){case 0:this.setR(b);break;case 1:this.setG(b);break;case 2:this.setB(b);break;case 3:this.setA(b);break;default:throw new RangeError("invalid color index");}}getAtIndex(a){switch(a){case 0:return this.getR();case 1:return this.getG();case 2:return this.getB();case 3:return this.getA();default:throw new RangeError("invalid color index");}}static Diff(a,b){var c=Math.min,d=Math.max;const e=new C3.Color;return e.setR(d(a._r,b._r)-c(a._r,b._r)),e.setG(d(a._g,b._g)-c(a._g,b._g)),e.setB(d(a._b,b._b)-c(a._b,b._b)),e.setA(d(a._a,b._a)-c(a._a,b._a)),e}},C3.Color.White=Object.freeze(C3.New(C3.Color,1,1,1,1)),C3.Color.Black=Object.freeze(C3.New(C3.Color,0,0,0,1)),C3.Color.TransparentBlack=Object.freeze(C3.New(C3.Color,0,0,0,0))} + +// ../lib/misc/vector2.js +"use strict";C3.Vector2=class{constructor(a,b){this._x=0,this._y=0,a instanceof C3.Vector2?this.copy(a):this.set(a||0,b||0)}set(a,b){this._x=+a,this._y=+b}copy(a){this._x=a._x,this._y=a._y}equals(a){return this._x===a._x&&this._y===a._y}setX(a){this._x=+a}getX(){return this._x}setY(a){this._y=+a}getY(){return this._y}toArray(){return[this._x,this._y]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(a,b){a[b++]=this._x,a[b]=this._y}offset(a,b){this._x+=+a,this._y+=+b}scale(a,b){this._x*=a,this._y*=b}round(){var a=Math.round;this._x=a(this._x),this._y=a(this._y)}floor(){var a=Math.floor;this._x=a(this._x),this._y=a(this._y)}ceil(){var a=Math.ceil;this._x=a(this._x),this._y=a(this._y)}angle(){return C3.angleTo(0,0,this._x,this._y)}lengthSquared(){return this._x*this._x+this._y*this._y}length(){return Math.sqrt(this.lengthSquared())}rotatePrecalc(a,b){const c=this._x*b-this._y*a;this._y=this._y*b+this._x*a,this._x=c}rotate(b){0===b||this.rotatePrecalc(Math.sin(b),Math.cos(b))}rotateAbout(b,a,c){0===b||a===this._x&&c===this._y||(this._x-=a,this._y-=c,this.rotatePrecalc(Math.sin(b),Math.cos(b)),this._x+=+a,this._y+=+c)}move(b,a){0===a||(this._x+=Math.cos(b)*a,this._y+=Math.sin(b)*a)}normalize(){const a=this.length();0!==a&&1!==a&&(this._x/=a,this._y/=a)}clamp(a,b){this._x=C3.clamp(this._x,a,b),this._y=C3.clamp(this._y,a,b)}}; + +// ../lib/misc/rect.js +"use strict";C3.Rect=class{constructor(a,b,c,d){this._left=0,this._top=0,this._right=0,this._bottom=0,a instanceof C3.Rect?this.copy(a):this.set(a||0,b||0,c||0,d||0)}set(a,b,c,d){this._left=+a,this._top=+b,this._right=+c,this._bottom=+d}setWH(a,b,c,d){a=+a,b=+b,this._left=a,this._top=b,this._right=a+ +c,this._bottom=b+ +d}copy(a){this._left=+a._left,this._top=+a._top,this._right=+a._right,this._bottom=+a._bottom}clone(){return new C3.Rect(this._left,this._top,this._right,this._bottom)}static Merge(a,b){var c=Math.max,d=Math.min;const e=new C3.Rect;return e.setLeft(d(a._left,b._left)),e.setTop(d(a._top,b._top)),e.setRight(c(a._right,b._right)),e.setBottom(c(a._bottom,b._bottom)),e}static FromObject(a){return new C3.Rect(a.left,a.top,a.right,a.bottom)}equals(a){return this._left===a._left&&this._top===a._top&&this._right===a._right&&this._bottom===a._bottom}setLeft(a){this._left=+a}getLeft(){return this._left}setTop(a){this._top=+a}getTop(){return this._top}setRight(a){this._right=+a}getRight(){return this._right}setBottom(a){this._bottom=+a}getBottom(){return this._bottom}toArray(){return[this._left,this._top,this._right,this._bottom]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(a,b){a[b++]=this._left,a[b++]=this._top,a[b++]=this._right,a[b]=this._bottom}writeAsQuadToTypedArray(a,b){a[b++]=this._left,a[b++]=this._top,a[b++]=this._right,a[b++]=this._top,a[b++]=this._right,a[b++]=this._bottom,a[b++]=this._left,a[b]=this._bottom}width(){return this._right-this._left}height(){return this._bottom-this._top}midX(){return(this._left+this._right)/2}midY(){return(this._top+this._bottom)/2}offset(a,b){this._left+=+a,this._top+=+b,this._right+=+a,this._bottom+=+b}offsetLeft(a){this._left+=+a}offsetTop(a){this._top+=+a}offsetRight(a){this._right+=+a}offsetBottom(a){this._bottom+=+a}toSquare(a){if("x"!==a)throw new Error("invalid axis, only 'x' supported");this._bottom=this._topd&&(this._right=+d),this._bottom>e&&(this._bottom=+e)}clampFlipped(a,c,d,e){this._leftc&&(this._top=+c),this._right>d&&(this._right=+d),this._bottomthis._right&&this.swapLeftRight(),this._top>this._bottom&&this.swapTopBottom()}intersectsRect(a){return!(a._rightthis._right||a._top>this._bottom)}intersectsRectOffset(a,b,c){return!(a._right+bthis._right||a._top+c>this._bottom)}containsPoint(a,b){return a>=this._left&&a<=this._right&&b>=this._top&&b<=this._bottom}containsRect(a){return a._left>=this._left&&a._top>=this._top&&a._right<=this._right&&a._bottom<=this._bottom}expandToContain(a){a._leftthis._right&&(this._right=+a._right),a._bottom>this._bottom&&(this._bottom=+a._bottom)}lerpInto(a){this._left=C3.lerp(a._left,a._right,this._left),this._top=C3.lerp(a._top,a._bottom,this._top),this._right=C3.lerp(a._left,a._right,this._right),this._bottom=C3.lerp(a._top,a._bottom,this._bottom)}}; + +// ../lib/misc/quad.js +"use strict";{function a(g,a,b,c){gc?a:c):(e=gb?a:b):bc?g:c):(e=ab?g:b)}let e=0,f=0;C3.Quad=class{constructor(a,b,c,d,e,f,g,h){this._tlx=0,this._tly=0,this._trx=0,this._try=0,this._brx=0,this._bry=0,this._blx=0,this._bly=0,a instanceof C3.Quad?this.copy(a):this.set(a||0,b||0,c||0,d||0,e||0,f||0,g||0,h||0)}set(a,b,c,d,e,f,g,h){this._tlx=+a,this._tly=+b,this._trx=+c,this._try=+d,this._brx=+e,this._bry=+f,this._blx=+g,this._bly=+h}setRect(a,b,c,d){this.set(a,b,c,b,c,d,a,d)}copy(a){this._tlx=a._tlx,this._tly=a._tly,this._trx=a._trx,this._try=a._try,this._brx=a._brx,this._bry=a._bry,this._blx=a._blx,this._bly=a._bly}equals(a){return this._tlx===a._tlx&&this._tly===a._tly&&this._trx===a._trx&&this._try===a._try&&this._brx===a._brx&&this._bry===a._bry&&this._blx===a._blx&&this._bly===a._bly}setTlx(a){this._tlx=+a}getTlx(){return this._tlx}setTly(a){this._tly=+a}getTly(){return this._tly}setTrx(a){this._trx=+a}getTrx(){return this._trx}setTry(a){this._try=+a}getTry(){return this._try}setBrx(a){this._brx=+a}getBrx(){return this._brx}setBry(a){this._bry=+a}getBry(){return this._bry}setBlx(a){this._blx=+a}getBlx(){return this._blx}setBly(a){this._bly=+a}getBly(){return this._bly}toArray(){return[this._tlx,this._tly,this._trx,this._try,this._brx,this._bry,this._blx,this._bly]}toTypedArray(){return new Float64Array(this.toArray())}writeToTypedArray(a,b){a[b++]=this._tlx,a[b++]=this._tly,a[b++]=this._trx,a[b++]=this._try,a[b++]=this._brx,a[b++]=this._bry,a[b++]=this._blx,a[b]=this._bly}writeToTypedArray3D(a,b,c){a[b++]=this._tlx,a[b++]=this._tly,a[b++]=c,a[b++]=this._trx,a[b++]=this._try,a[b++]=c,a[b++]=this._brx,a[b++]=this._bry,a[b++]=c,a[b++]=this._blx,a[b++]=this._bly,a[b]=c}offset(a,b){this._tlx+=+a,this._tly+=+b,this._trx+=+a,this._try+=+b,this._brx+=+a,this._bry+=+b,this._blx+=+a,this._bly+=+b}round(){var a=Math.round;this._tlx=a(this._tlx),this._tly=a(this._tly),this._trx=a(this._trx),this._try=a(this._try),this._brx=a(this._brx),this._bry=a(this._bry),this._blx=a(this._blx),this._bly=a(this._bly)}floor(){var a=Math.floor;this._tlx=a(this._tlx),this._tly=a(this._tly),this._trx=a(this._trx),this._try=a(this._try),this._brx=a(this._brx),this._bry=a(this._bry),this._blx=a(this._blx),this._bly=a(this._bly)}ceil(){var a=Math.ceil;this._tlx=a(this._tlx),this._tly=a(this._tly),this._trx=a(this._trx),this._try=a(this._try),this._brx=a(this._brx),this._bry=a(this._bry),this._blx=a(this._blx),this._bly=a(this._bly)}setFromRect(a){this._tlx=a._left,this._tly=a._top,this._trx=a._right,this._try=a._top,this._brx=a._right,this._bry=a._bottom,this._blx=a._left,this._bly=a._bottom}setFromRotatedRect(b,c){0===c?this.setFromRect(b):this.setFromRotatedRectPrecalc(b,Math.sin(c),Math.cos(c))}setFromRotatedRectPrecalc(a,b,c){const d=a._left*b,e=a._top*b,f=a._right*b,g=a._bottom*b,h=a._left*c,i=a._top*c,j=a._right*c,k=a._bottom*c;this._tlx=h-e,this._tly=i+d,this._trx=j-e,this._try=i+f,this._brx=j-g,this._bry=k+f,this._blx=h-g,this._bly=k+d}getBoundingBox(b){a(this._tlx,this._trx,this._brx,this._blx),b._left=e,b._right=f,a(this._tly,this._try,this._bry,this._bly),b._top=e,b._bottom=f}containsPoint(a,b){let c=this._trx-this._tlx,d=this._try-this._tly;const e=this._brx-this._tlx,f=this._bry-this._tly,g=a-this._tlx,h=b-this._tly;let i=c*c+d*d,j=c*e+d*f,k=c*g+d*h;const l=e*e+f*f,m=e*g+f*h;let n=1/(i*l-j*j),o=(l*k-j*m)*n,p=(i*m-j*k)*n;return!!(0<=o&&0o+p)||(c=this._blx-this._tlx,d=this._bly-this._tly,i=c*c+d*d,j=c*e+d*f,k=c*g+d*h,n=1/(i*l-j*j),o=(l*k-j*m)*n,p=(i*m-j*k)*n,0<=o&&0o+p)}midX(){return(this._tlx+this._trx+this._brx+this._blx)/4}midY(){return(this._tly+this._try+this._bry+this._bly)/4}intersectsSegment(a,b,c,d){return!!(this.containsPoint(a,b)||this.containsPoint(c,d))||C3.segmentIntersectsQuad(a,b,c,d,this)}intersectsQuad(a){let b=a.midX(),c=a.midY();if(this.containsPoint(b,c))return!0;if(b=this.midX(),c=this.midY(),a.containsPoint(b,c))return!0;const d=this._tlx,e=this._tly,f=this._trx,g=this._try,h=this._brx,i=this._bry,j=this._blx,k=this._bly;return C3.segmentIntersectsQuad(d,e,f,g,a)||C3.segmentIntersectsQuad(f,g,h,i,a)||C3.segmentIntersectsQuad(h,i,j,k,a)||C3.segmentIntersectsQuad(j,k,d,e,a)}mirror(){this._swap(0,2),this._swap(1,3),this._swap(6,4),this._swap(7,5)}flip(){this._swap(0,6),this._swap(1,7),this._swap(2,4),this._swap(3,5)}diag(){this._swap(2,6),this._swap(3,7)}_swap(a,b){const c=this._getAtIndex(a);this._setAtIndex(a,this._getAtIndex(b)),this._setAtIndex(b,c)}_getAtIndex(a){switch(a){case 0:return this._tlx;case 1:return this._tly;case 2:return this._trx;case 3:return this._try;case 4:return this._brx;case 5:return this._bry;case 6:return this._blx;case 7:return this._bly;default:throw new RangeError("invalid quad point index");}}_setAtIndex(a,b){switch(b=+b,a){case 0:this._tlx=b;break;case 1:this._tly=b;break;case 2:this._trx=b;break;case 3:this._try=b;break;case 4:this._brx=b;break;case 5:this._bry=b;break;case 6:this._blx=b;break;case 7:this._bly=b;break;default:throw new RangeError("invalid quad point index");}}}} + +// c3/lib/misc/collisionPoly.js +"use strict";{const a=[0,0,1,0,1,1,0,1],b=C3.New(C3.Quad);C3.CollisionPoly=class extends C3.DefendedBase{constructor(b){super(),b||(b=a);this._ptsArr=Float64Array.from(b),this._bbox=new C3.Rect,this._isBboxChanged=!0}Release(){}pointsArr(){return this._ptsArr}pointCount(){return this._ptsArr.length/2}setPoints(a){this._ptsArr.length===a.length?this._ptsArr.set(a):this._ptsArr=Float64Array.from(a),this._isBboxChanged=!0}copy(a){this.setPoints(a._ptsArr)}setBboxChanged(){this._isBboxChanged=!0}_updateBbox(){if(!this._isBboxChanged)return;const a=this._ptsArr;let b=a[0],c=a[1],d=b,e=c;for(let f=0,g=a.length;fd&&(d=g),he&&(e=h)}this._bbox.set(b,c,d,e),this._isBboxChanged=!1}setFromRect(a,b,c){let d=this._ptsArr;8!==d.length&&(d=new Float64Array(8),this._ptsArr=d),d[0]=a.getLeft()-b,d[1]=a.getTop()-c,d[2]=a.getRight()-b,d[3]=a.getTop()-c,d[4]=a.getRight()-b,d[5]=a.getBottom()-c,d[6]=a.getLeft()-b,d[7]=a.getBottom()-c,this._bbox.copy(a),(0!==b||0!==c)&&this._bbox.offset(-b,-c),this._isBboxChanged=!1}setFromQuad(a,c,d){b.copy(a),b.offset(c,d),this.setPoints(b.toArray()),this._isBboxChanged=!0}transform(b,c,d){let a=0,e=1;0!==d&&(a=Math.sin(d),e=Math.cos(d)),this.transformPrecalc(b,c,a,e)}transformPrecalc(a,b,c,d){const e=this._ptsArr;for(let f=0,g=e.length;f(a/=f/2)?b/2*a*a+e:-b/2*(--a*(a-2)-1)+e}static EaseInCubic(a,e,b,c){return b*(a/=c)*a*a+e}static EaseOutCubic(a,e,b,c){return b*((a=a/c-1)*a*a+1)+e}static EaseInOutCubic(a,e,b,c){return 1>(a/=c/2)?b/2*a*a*a+e:b/2*((a-=2)*a*a+2)+e}static EaseInQuart(a,e,b,c){return b*(a/=c)*a*a*a+e}static EaseOutQuart(a,e,b,f){return-b*((a=a/f-1)*a*a*a-1)+e}static EaseInOutQuart(a,e,b,f){return 1>(a/=f/2)?b/2*a*a*a*a+e:-b/2*((a-=2)*a*a*a-2)+e}static EaseInQuint(a,e,b,c){return b*(a/=c)*a*a*a*a+e}static EaseOutQuint(a,e,b,c){return b*((a=a/c-1)*a*a*a*a+1)+e}static EaseInOutQuint(a,e,b,c){return 1>(a/=c/2)?b/2*a*a*a*a*a+e:b/2*((a-=2)*a*a*a*a+2)+e}static EaseInSine(a,e,b,f){return-b*i(a/f*(j/2))+b+e}static EaseOutSine(a,e,b,c){return b*h(a/c*(j/2))+e}static EaseInOutSine(a,e,b,f){return-b/2*(i(j*a/f)-1)+e}static EaseInExpo(a,e,b,c){return 0===a?e:b*g(2,10*(a/c-1))+e}static EaseOutExpo(a,e,b,c){return a===c?e+b:b*(-g(2,-10*a/c)+1)+e}static EaseInOutExpo(a,e,b,c){return 0===a?e:a===c?e+b:1>(a/=c/2)?b/2*g(2,10*(a-1))+e:b/2*(-g(2,-10*--a)+2)+e}static EaseInCirc(e,f,b,g){return-b*(a(1-(e/=g)*e)-1)+f}static EaseOutCirc(e,f,b,c){return b*a(1-(e=e/c-1)*e)+f}static EaseInOutCirc(e,f,b,g){return 1>(e/=g/2)?-b/2*(a(1-e*e)-1)+f:b/2*(a(1-(e-=2)*e)+1)+f}static EaseInElastic(i,k,b,c){let d=1.70158,l=0,m=b;return 0===i?k:1===(i/=c)?k+b:(l||(l=.3*c),mi?-.5*(m*g(2,10*(i-=1))*h((i*c-d)*(2*j)/l))+k:.5*(m*g(2,-10*(i-=1))*h((i*c-d)*(2*j)/l))+b+k)}static EaseInBack(a,e,b,c,d){return void 0===d&&(d=1.70158),b*(a/=c)*a*((d+1)*a-d)+e}static EaseOutBack(a,e,b,c,d){return void 0===d&&(d=1.70158),b*((a=a/c-1)*a*((d+1)*a+d)+1)+e}static EaseInOutBack(a,e,b,c,d){return void 0===d&&(d=1.70158),1>(a/=c/2)?b/2*(a*a*(((d*=1.525)+1)*a-d))+e:b/2*((a-=2)*a*(((d*=1.525)+1)*a+d)+2)+e}static EaseInBounce(a,e,b,c){return b-k.EaseOutBounce(c-a,0,b,c)+e}static EaseOutBounce(a,e,b,c){return(a/=c)<1/2.75?b*(7.5625*a*a)+e:a<2/2.75?b*(7.5625*(a-=1.5/2.75)*a+.75)+e:a<2.5/2.75?b*(7.5625*(a-=2.25/2.75)*a+.9375)+e:b*(7.5625*(a-=2.625/2.75)*a+.984375)+e}static EaseInOutBounce(a,e,b,c){return ac(a)));for(let c,d=0,e=this._listeners.length;dc(a)));return Promise.all(b).then(()=>!a.defaultPrevented)}async _FireAndWaitAsync(a){const b=[];this._IncreaseFireDepth();for(let c=0,d=this._captureListeners.length;c(h.push({func:b,resolve:e,reject:f,stack:d}),k?void c(h.pop()):void(-1===i&&a(16))))},C3.Asyncify.SetHighThroughputMode=function(a){if(a)++j;else if(--j,0>j)throw new Error("already turned off high throughput mode")}} + +// ../lib/util/idleTimeout.js +"use strict";{function a(){e=-1}function b(){f=-1,g=-1;let a=Date.now();for(let b of h)if(b._CheckTimeout(a)){let a=b._GetDeadline();(-1===g||aa+c&&(self.clearTimeout(f),g=this._deadline,f=self.setTimeout(b,this._timeout+100))}_CheckTimeout(a){return!(a>=this._deadline)||(this._callback()?(this._deadline=a+this._timeout,!0):(this._isActive=!1,!1))}_GetDeadline(){return this._deadline}Cancel(){this._isActive&&(h.delete(this),this._isActive=!1,0===h.size&&-1!==f&&(self.clearTimeout(f),f=-1,g=-1))}Release(){this.Cancel(),this._callback=null}}} + +// ../lib/util/disposable.js +"use strict";C3.Disposable=class a{constructor(a){this._disposed=!1,this._disposeAction=a}Dispose(){this._disposed||(this._disposed=!0,this._disposeAction&&(this._disposeAction(),this._disposeAction=null))}IsDisposed(){return this._disposed}Release(){this.Dispose()}static Release(b){return new a(()=>b.Release())}static From(a,b,c,d,e){if("undefined"==typeof d||null===d)d=!1;else if("boolean"!=typeof d&&"object"!=typeof d)throw new TypeError("invalid event listener options");if(e&&(c=c.bind(e)),b.includes(" ")){b=b.split(" ");const e=new C3.CompositeDisposable;for(let f of b)a.addEventListener(f,c,d),e.Add(C3.New(C3.Disposable,()=>a.removeEventListener(f,c,d)));return e}return a.addEventListener(b,c,d),C3.New(C3.Disposable,()=>a.removeEventListener(b,c,d))}},C3.StubDisposable=class extends C3.Disposable{SetAction(a){this._disposeAction=a}},C3.CompositeDisposable=class extends C3.Disposable{constructor(...a){super(),this._disposables=new Set;for(let b of a)this.Add(b)}Add(...a){if(this._disposed)throw new Error("already disposed");for(let b of a)this._disposables.add(b)}Remove(a){if(this._disposed)throw new Error("already disposed");this._disposables.delete(a)}RemoveAll(){if(this._disposed)throw new Error("already disposed");if(this._disposables){for(let a of this._disposables)a.Dispose();this._disposables.clear()}}IsDisposed(){return this._disposed}Dispose(){if(this._disposed)throw new Error("already disposed");this._disposed=!0;for(let a of this._disposables)a.Dispose();this._disposables.clear(),this._disposables=null}Release(){this.Dispose()}}; + +// c3/lib/util/kahanSum.js +"use strict";C3.KahanSum=class extends C3.DefendedBase{constructor(){super(),this._c=0,this._y=0,this._t=0,this._sum=0}Add(a){a=+a,this._y=a-this._c,this._t=this._sum+this._y,this._c=this._t-this._sum-this._y,this._sum=this._t}Subtract(a){this._sum-=+a}Get(){return this._sum}Reset(){this._c=0,this._y=0,this._t=0,this._sum=0}Set(a){this._c=0,this._y=0,this._t=0,this._sum=+a}Release(){}}; + +// c3/lib/util/redblackset.js +"use strict";{const a={};a.RBnode=function(a){this.tree=a,this.right=this.tree.sentinel,this.left=this.tree.sentinel,this.parent=null,this.color=!1,this.key=null},a.RedBlackSet=function(b){this.size=0,this.sentinel=new a.RBnode(this),this.sentinel.color=!1,this.root=this.sentinel,this.root.parent=this.sentinel,this.compare=b||this.default_compare},a.RedBlackSet.prototype.default_compare=function(c,a){return cthis.compare(c.key,e.key)?e.left:e.right;c.parent=d,d==this.sentinel?this.root=c:0>this.compare(c.key,d.key)?d.left=c:d.right=c,c.left=this.sentinel,c.right=this.sentinel,c.color=!0,this.insertFixup(c),this.size++}else{var f=this.get_(b);f.key=b}},a.RedBlackSet.prototype.insertFixup=function(a){for(;a!=this.sentinel&&a!=this.root&&a.parent.color==!0;)if(a.parent==a.parent.parent.left){var b=a.parent.parent.right;b.color==!0?(a.parent.color=!1,b.color=!1,a.parent.parent.color=!0,a=a.parent.parent):(a==a.parent.right&&(a=a.parent,this.leftRotate(a)),a.parent.color=!1,a.parent.parent.color=!0,a.parent.parent!=this.sentinel&&this.rightRotate(a.parent.parent))}else{var b=a.parent.parent.left;b.color==!0?(a.parent.color=!1,b.color=!1,a.parent.parent.color=!0,a=a.parent.parent):(a==a.parent.left&&(a=a.parent,this.rightRotate(a)),a.parent.color=!1,a.parent.parent.color=!0,a.parent.parent!=this.sentinel&&this.leftRotate(a.parent.parent))}this.root.color=!1},a.RedBlackSet.prototype.delete_=function(a){var b,c;b=a.left==this.sentinel||a.right==this.sentinel?a:this.successor_(a),c=b.left==this.sentinel?b.right:b.left,c.parent=b.parent,b.parent==this.sentinel?this.root=c:b==b.parent.left?b.parent.left=c:b.parent.right=c,b!=a&&(a.key=b.key),b.color==!1&&this.deleteFixup(c),this.size--},a.RedBlackSet.prototype.deleteFixup=function(a){for(;a!=this.root&&a.color==!1;)if(a==a.parent.left){var b=a.parent.right;b.color==!0&&(b.color=!1,a.parent.color=!0,this.leftRotate(a.parent),b=a.parent.right),b.left.color==!1&&b.right.color==!1?(b.color=!0,a=a.parent):(b.right.color==!1&&(b.left.color=!1,b.color=!0,this.rightRotate(b),b=a.parent.right),b.color=a.parent.color,a.parent.color=!1,b.right.color=!1,this.leftRotate(a.parent),a=this.root)}else{var b=a.parent.left;b.color==!0&&(b.color=!1,a.parent.color=!0,this.rightRotate(a.parent),b=a.parent.left),b.right.color==!1&&b.left.color==!1?(b.color=!0,a=a.parent):(b.left.color==!1&&(b.right.color=!1,b.color=!0,this.leftRotate(b),b=a.parent.left),b.color=a.parent.color,a.parent.color=!1,b.left.color=!1,this.rightRotate(a.parent),a=this.root)}a.color=!1},a.RedBlackSet.prototype.remove=function(a){var b=this.get_(a);if(b!=this.sentinel){var c=b.key;return this.delete_(b),c}return null},a.RedBlackSet.prototype.removeSwapped=function(a,b){this.remove(b)},a.RedBlackSet.prototype.min=function(a){for(;a.left!=this.sentinel;)a=a.left;return a},a.RedBlackSet.prototype.max=function(a){for(;a.right!=this.sentinel;)a=a.right;return a},a.RedBlackSet.prototype.successor_=function(a){if(a.right!=this.sentinel)return this.min(a.right);for(var b=a.parent;b!=this.sentinel&&a==b.right;)a=b,b=b.parent;return b},a.RedBlackSet.prototype.predeccessor_=function(a){if(a.left!=this.sentinel)return this.max(a.left);for(var b=a.parent;b!=this.sentinel&&a==b.left;)a=b,b=b.parent;return b},a.RedBlackSet.prototype.successor=function(a){if(0this.compare(a,b.key)?b.left:b.right;return b},a.RedBlackSet.prototype.contains=function(a){return null!=this.get_(a).key},a.RedBlackSet.prototype.getValues=function(){var a=[];return this.forEach(function(b){a.push(b)}),a},a.RedBlackSet.prototype.insertAll=function(b){if("array"==a.typeOf(b))for(var c=0;cc)return!1;var d=0;if(this.isEmpty())return!0;for(var e=this.min(this.root);e!=this.sentinel;e=this.successor_(e))a.contains.call(b,b,e.key)&&d++;return d==this.getCount()},a.RedBlackSet.prototype.intersection=function(b){var c=new a.RedBlackSet(this.compare);if(this.isEmpty())return c;for(var d=this.min(this.root);d!=this.sentinel;d=this.successor_(d))b.contains.call(b,d.key,d.key,this)&&c.insert(d.key);return c},C3.RedBlackSet=class extends C3.DefendedBase{constructor(b){super();this._rbSet=new a.RedBlackSet(b)}Add(a){this._rbSet.insert(a)}Remove(a){this._rbSet.remove(a)}Has(a){return this._rbSet.contains(a)}Clear(){this._rbSet.clear()}toArray(){return this._rbSet.getValues()}GetSize(){return this._rbSet.getCount()}IsEmpty(){return this._rbSet.isEmpty()}ForEach(a){this._rbSet.forEach(a)}Front(){if(this.IsEmpty())throw new Error("empty set");const a=this._rbSet,b=a.min(a.root);return b.key}Shift(){if(this.IsEmpty())throw new Error("empty set");const a=this.Front();return this.Remove(a),a}*values(){if(!this.IsEmpty()){const a=this._rbSet;for(let b=a.min(a.root);b!=a.sentinel;b=a.successor_(b))yield b.key}}[Symbol.iterator](){return this.values()}}} + +// ../lib/util/promiseThrottle.js +"use strict";C3.PromiseThrottle=class{constructor(a=C3.hardwareConcurrency){this._maxParallel=a,this._queue=[],this._activeCount=0}Add(a){return new Promise((b,c)=>{this._queue.push({func:a,resolve:b,reject:c}),this._MaybeStartNext()})}_FindInQueue(a){for(let b=0,c=this._queue.length;b=this._maxParallel)return;this._activeCount++;const a=this._queue.shift();a.func().then((b)=>{a.resolve(b),this._activeCount--,this._MaybeStartNext()}).catch((b)=>{a.reject(b),this._activeCount--,this._MaybeStartNext()})}static async Batch(a,b){const c=[];let d=!1;const e=async()=>{for(let a;a=b.pop();){if(d)return;try{c.push((await a()))}catch(a){throw d=!0,a}}},f=[];for(;a--;)f.push(e());return await Promise.all(f),c}}; + +// ../lib/util/rateLimiter.js +"use strict";C3.RateLimiter=class{constructor(a,b,c){this._callback=a,this._interval=b,this._intervalOnBattery=c||2*b,this._timerId=-1,this._lastCallTime=-Infinity,this._timerCallFunc=()=>this._OnTimer(),this._ignoreReset=!1,this._canRunImmediate=!1,this._callbackArguments=null}SetCanRunImmediate(a){this._canRunImmediate=!!a}_GetInterval(){return"undefined"!=typeof C3.Battery&&C3.Battery.IsOnBatteryPower()?this._intervalOnBattery:this._interval}Call(...a){if(-1===this._timerId){this._callbackArguments=a;let b=C3.FastGetDateNow(),c=b-this._lastCallTime,d=this._GetInterval();c>=d&&this._canRunImmediate?(this._lastCallTime=b,this._RunCallback()):this._timerId=self.setTimeout(this._timerCallFunc,Math.max(d-c,4))}}_RunCallback(){this._ignoreReset=!0,this._callback(...this._callbackArguments),this._ignoreReset=!1}Reset(){this._ignoreReset||(this._CancelTimer(),this._lastCallTime=C3.FastGetDateNow())}_OnTimer(){this._timerId=-1,this._lastCallTime=C3.FastGetDateNow(),this._RunCallback()}_CancelTimer(){-1!==this._timerId&&(self.clearTimeout(this._timerId),this._timerId=-1)}Release(){this._CancelTimer(),this._callback=null,this._callbackArguments=null,this._timerCallFunc=null}}; + +// ../lib/str/str.js +"use strict";{function a(a){return e.get(a)}C3.UTF8_BOM="\uFEFF";const b=new Set([..."0123456789"]);C3.IsNumericChar=function(a){return b.has(a)};const d=new Set([..." \t\n\r\xA0\x85\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u2028\u2029\u202F\u205F\u3000"]);C3.IsWhitespaceChar=function(a){return d.has(a)},C3.FilterWhitespace=function(a){return[...a].filter((a)=>!C3.IsWhitespaceChar(a)).join("")},C3.IsStringAllWhitespace=function(a){for(const b of a)if(!C3.IsWhitespaceChar(b))return!1;return!0},C3.IsUnprintableChar=function(a){return 1===a.length&&32>a.charCodeAt(0)},C3.FilterUnprintableChars=function(a){return[...a].filter((a)=>!C3.IsUnprintableChar(a)).join("")};const c=new Set([..."0123456789.+-e"]);C3.IsStringNumber=function(a){if(a=a.trim(),!a.length)return!1;let d=a.charAt(0);if("-"!==d&&!b.has(d))return!1;for(let b of a)if(!c.has(b))return!1;return!0},C3.RemoveTrailingDigits=function(a){let b=a.length;for(;0",">"],["\"","""],["'","'"]]);const f=/[&<>"']/g;C3.EscapeHTML=function(b){return b.replace(f,a)},C3.EscapeJS=function(a){let b=C3.ReplaceAll(a,"\\","\\\\");return b=C3.ReplaceAll(b,"\"","\\\""),b=C3.ReplaceAll(b,"\t","\\t"),b=C3.ReplaceAll(b,"\r",""),C3.ReplaceAll(b,"\n","\\n")},C3.EscapeXML=function(a){let b=C3.ReplaceAll(a,"&","&");return b=C3.ReplaceAll(b,"<","<"),b=C3.ReplaceAll(b,">",">"),C3.ReplaceAll(b,"\"",""")};const g=/[-[\]{}()*+?.,\\^$|#\s]/g;C3.EscapeRegex=function(a){return a.replace(g,"\\$&")},C3.FindAll=function(a,b,c=!1){if(!b)return[];c||(a=a.toLowerCase(),b=b.toLowerCase());const d=b.length;let e=0,f=0,g=[];for(;-1<(f=a.indexOf(b,e));)g.push(f),e=f+d;return g},C3.ReplaceAll=function(a,b,c){return a.replace(new RegExp(C3.EscapeRegex(b),"g"),c)},C3.ReplaceAllCaseInsensitive=function(a,b,c){return a.replace(new RegExp(C3.EscapeRegex(b),"gi"),c)};let h=new WeakMap;C3.SetElementContent=function(a,b,c){let d=h.get(a);if("string"==typeof b){if(!c&&b===d)return;a.textContent=b,h.set(a,b)}else{if(!c&&b.equals(d))return;if(b.isPlainText()){let c=b.toString();a.textContent=c,h.set(a,c)}else a.innerHTML=b.toHTML(),b instanceof C3.BBString&&b.attachLinkHandlers(a),h.set(a,b.toString())}},C3.StringLikeEquals=function(c,a){return c instanceof C3.HtmlString||c instanceof C3.BBString?c.equals(a):a instanceof C3.HtmlString||a instanceof C3.BBString?a.equals(c):c===a},C3.StringSubstitute=function(a,...b){let c=a;for(let d=0,e=b.length;dd?1:ba){let b=a/i;return b=10>b?c(10*b)/10:c(b),langSub(d+"kilobytes",b)}if(1073741824>a){let b=a/1048576;return b=10>b?c(10*b)/10:c(b),langSub(d+"megabytes",b)}if(1099511627776>a){let b=a/1073741824;return b=10>b?c(10*b)/10:c(b),langSub(d+"gigabytes",b)}else{let b=a/1099511627776;return b=10>b?c(10*b)/10:c(b),langSub(d+"terabytes",b)}};const j={approximate:!1,days:!0,hours:!0,minutes:!0,seconds:!0};C3.FormatTime=function(a,b){var c=Math.floor;b=Object.assign({},j,b),C3.Lang.PushContext("common.time");const d=[];if(b.days){const b=c(a/86400);0a?"-":"";a=Math.abs(a);let d=a.toString(),e=b-d.length;for(let d=0;da.toUpperCase())},C3.CompareVersionStrings=function(a,b){let c=a.split(".").map((a)=>a.trim()),d=b.split(".").map((a)=>a.trim());C3.resizeArray(c,4,"0"),C3.resizeArray(d,4,"0"),c=c.map((a)=>parseInt(a,10)),d=d.map((a)=>parseInt(a,10));for(let e=0;4>e;++e){const a=c[e]-d[e];if(0!=a)return 0>a?-1:1}return 0},C3.CreateGUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(a)=>{const b=Math.floor(16*Math.random()),c="x"===a?b:8|3&b;return c.toString(16)})},C3.StringHammingDistance=function(c,a){if(c.length!==a.length)throw new Error("strings must be same length");let b=0;for(let d=0,e=c.length;d":`<${a} class="${b}">`}}else if("a"===f&&!c){const a=parseInt(d.substring(1),10)-1;if(0>a||a>=e.length)throw new Error("invalid bbcode link substitution");const b=e[a];if("string"==typeof b)return``;if("function"==typeof b)return``;throw new TypeError("invalid bbcode link action")}else return"<"+c+f+">"}const b=new Map([["b","strong"],["i","em"],["s","s"],["u","u"],["sub","sub"],["sup","sup"],["small","small"],["mark","mark"],["a1","a"],["a2","a"],["a3","a"],["a4","a"],["a5","a"],["a6","a"],["a7","a"],["a8","a"],["a9","a"],["bad",["span","bbCodeBad"]],["good",["span","bbCodeGood"]],["info",["span","bbCodeInfo"]],["h1",["span","bbCodeH1"]],["h2",["span","bbCodeH2"]],["h3",["span","bbCodeH3"]],["h4",["span","bbCodeH4"]],["item",["span","bbCodeItem"]]]),c=/\[(\/?)([a-zA-Z0-9]+)\]/g,d=/\[(\/?)(.*?)\]/g;let e=null;const f=/\n/g;C3.BBString=class{constructor(a,b){if(this._bbstr=b&&b.noEscape?a:C3.EscapeHTML(a),this._htmlstr="",this._convertLineBreaks=!1,this._linkActions=[],b&&(this._convertLineBreaks=!!b.convertLineBreaks,b.links)){if(9")),this._htmlstr=b}return this._htmlstr}attachLinkHandlers(a){if(this._linkActions.length)for(let b=0,c=this._linkActions.length;bc)return;if(1===a.length){const d=a[0],e=d.text,f=d.styles;if(100>=e.length&&!e.includes("\n")){const a=b(e,f);if(a.width<=c){const b=[];return this._AddFrag(b,e,f,a.width,a.height),void this._AddLine(b,a.width,a.height)}}}let e;e="word"===d?a.map((a)=>({words:this._TokeniseWords(a.text),styles:a.styles})):a.map((a)=>({words:[...a.text],styles:a.styles})),this._WrapText(e,b,c)}_TokeniseWords(a){const b=[...a],c=[];let d="",e=!1;for(const f of b)if("\n"===f)d&&c.push(d),c.push("\n"),d="";else if(!d)d=f,e=C3.IsWhitespaceChar(f);else{const a=C3.IsWhitespaceChar(f);a===e?d+=f:(c.push(d),d=f,e=a)}return d&&c.push(d),c}_WrapText(a,b,c){var d=Math.max;let e="",f=0,g=0,h=0,i=0,j=[];for(const k of a){const a=k.styles,l=k.words;for(const k of l){if("\n"===k){0===h&&(h=b(" ",a).height),e&&this._AddFrag(j,e,a,f,g||h),this._AddLine(j,i+f,h),j=[],e="",f=0,g=0,i=0,h=0;continue}const l=e+k,m=b(l,a),n=m.width,o=m.height;if(!(i+n>=c))e=l,f=n,g=d(g,o),h=d(h,o);else if(e&&this._AddFrag(j,e,a,f,g),j.length&&(this._AddLine(j,i+f,h),j=[]),i=0,C3.IsStringAllWhitespace(k))e="",f=0,g=0,h=0;else{e=k;const c=b(k,a);f=c.width,g=c.height,h=c.height}}e&&(this._AddFrag(j,e,a,f,g),i+=f,e="",f=0,g=0)}j.length&&this._AddLine(j,i+f,h);for(const d of this._lines){const a=d.fragments;if(!a.length)continue;const c=a[a.length-1],e=c.text,f=e.trimEnd();if(!f)d.width-=c.width,a.pop();else if(f.length=this._width||0>=this._height)throw new Error("invalid texture data size");if(g.isSvg){const a=document.createElement("canvas");a.width=this._width,a.height=this._height;const b=a.getContext("2d");b.drawImage(e,0,0,this._width,this._height),e=a}const h=C3.isPOT(this._width)&&C3.isPOT(this._height),i=this._renderer.GetMaxTextureSize();if(this._width>i||this._height>i)throw new Error("texture data exceeds maximum texture size");const j=this._renderer.GetContext(),k=this._renderer.GetWebGLVersionNumber();this._texture=j.createTexture(),j.bindTexture(j.TEXTURE_2D,this._texture),j.pixelStorei(j["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],g.premultiplyAlpha);const l=a(this._pixelFormat,j);if(!this._renderer.SupportsNPOTTextures()&&!h&&this._isTiled){if(null===e)throw new Error("cannot pass null data when creating a NPOT tiled texture without NPOT support");if(e instanceof ArrayBuffer&&(e=new ImageData(new Uint8ClampedArray(e),this._width,this._height)),e instanceof ImageData){const a=document.createElement("canvas");a.width=this._width,a.height=this._height;const b=a.getContext("2d");b.putImageData(e,0,0),e=a}const a=document.createElement("canvas");a.width=C3.nextHighestPowerOfTwo(this._width),a.height=C3.nextHighestPowerOfTwo(this._height);const b=a.getContext("2d");b.imageSmoothingEnabled=this._isLinearSampling,b.drawImage(e,0,0,this._width,this._height,0,0,a.width,a.height),j.texImage2D(j.TEXTURE_2D,0,l.internalformat,l.format,l.type,a)}else if(2<=k){let a;a=this._isMipMapped?Math.floor(Math.log2(Math.max(this._width,this._height))+1):1,j.texStorage2D(j.TEXTURE_2D,a,l.sizedinternalformat,this._width,this._height),e instanceof ArrayBuffer?j.texSubImage2D(j.TEXTURE_2D,0,0,0,this._width,this._height,l.format,l.type,new Uint8Array(e)):null!==e&&j.texSubImage2D(j.TEXTURE_2D,0,0,0,l.format,l.type,e)}else e instanceof ArrayBuffer?j.texImage2D(j.TEXTURE_2D,0,l.internalformat,this._width,this._height,0,l.format,l.type,new Uint8Array(e)):null===e?j.texImage2D(j.TEXTURE_2D,0,l.internalformat,this._width,this._height,0,l.format,l.type,null):j.texImage2D(j.TEXTURE_2D,0,l.internalformat,l.format,l.type,e);null!==e&&this._SetTextureParameters(j),j.bindTexture(j.TEXTURE_2D,null),this._renderer._ResetLastTexture(),this._refCount=1,f.add(this)}_CreateDynamic(c,e,g){var h=Math.floor;if(g=Object.assign({},d,g),this._texture)throw new Error("already created texture");if(this._isTiled=!!g.isTiled,this._tileType=g.tileType,this._isLinearSampling=!!g.linearSampling,this._pixelFormat=g.pixelFormat,this._isMipMapped=!!g.mipMap,!b.has(this._pixelFormat))throw new Error("invalid pixel format");this._isStatic=!1,this._width=h(c),this._height=h(e);const i=C3.isPOT(this._width)&&C3.isPOT(this._height),j=this._renderer.GetMaxTextureSize();if(0>=this._width||0>=this._height)throw new Error("invalid texture size");if(this._width>j||this._height>j)throw new Error("texture exceeds maximum texture size");if(!this._renderer.SupportsNPOTTextures()&&this._isTiled&&!i)throw new Error("non-power-of-two tiled textures not supported");const k=this._renderer.GetContext(),l=this._renderer.GetWebGLVersionNumber();this._texture=k.createTexture(),k.bindTexture(k.TEXTURE_2D,this._texture),k.pixelStorei(k["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],g.premultiplyAlpha);const m=a(this._pixelFormat,k),n=2<=l?m.sizedinternalformat:m.internalformat;k.texImage2D(k.TEXTURE_2D,0,n,this._width,this._height,0,m.format,m.type,null),this._SetTextureParameters(k),k.bindTexture(k.TEXTURE_2D,null),this._renderer._ResetLastTexture(),this._refCount=1,f.add(this)}_GetMipMapHint(a){if("default"===this._mipMapQuality)return this._isStatic?a.NICEST:a.FASTEST;if("low"===this._mipMapQuality)return a.FASTEST;if("high"===this._mipMapQuality)return a.NICEST;throw new Error("invalid mipmap quality")}_SetTextureParameters(a){const b=C3.isPOT(this._width)&&C3.isPOT(this._height);if(!this._isTiled)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);else if("repeat-x"===this._tileType)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.REPEAT),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE);else if("repeat-y"===this._tileType)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.REPEAT);else if("repeat"===this._tileType)a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.REPEAT),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.REPEAT);else throw new Error("invalid tile type");this._isLinearSampling?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR),(b||this._renderer.SupportsNPOTTextures())&&this._isMipMapped?(a.hint(a.GENERATE_MIPMAP_HINT,this._GetMipMapHint(a)),a.generateMipmap(a.TEXTURE_2D),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,this._renderer.HasMajorPerformanceCaveat()?a.LINEAR_MIPMAP_NEAREST:a.LINEAR_MIPMAP_LINEAR)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),this._isMipMapped=!1)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),this._isMipMapped=!1)}_Update(b,c){if(("undefined"==typeof HTMLImageElement||!(b instanceof HTMLImageElement))&&("undefined"==typeof HTMLVideoElement||!(b instanceof HTMLVideoElement))&&("undefined"==typeof HTMLCanvasElement||!(b instanceof HTMLCanvasElement))&&("undefined"==typeof ImageBitmap||!(b instanceof ImageBitmap))&&("undefined"==typeof OffscreenCanvas||!(b instanceof OffscreenCanvas))&&!(b instanceof ImageData))throw new Error("invalid texture source");if(!this._texture||0>=this._refCount)throw new Error("texture not created");if(this._isStatic)throw new Error("cannot update static texture");c=Object.assign({},e,c);const d=b.width||b.videoWidth,f=b.height||b.videoHeight,g=this._renderer.GetWebGLVersionNumber(),h=this._renderer.GetContext();h.bindTexture(h.TEXTURE_2D,this._texture),h.pixelStorei(h["UNPACK_PREMULTIPLY_ALPHA_WEBGL"],c.premultiplyAlpha);const i=a(this._pixelFormat,h),j=2<=g?i.sizedinternalformat:i.internalformat;try{if(this._width===d&&this._height===f){const a=C3.isPOT(this._width)&&C3.isPOT(this._height);h.texSubImage2D(h.TEXTURE_2D,0,0,0,i.format,i.type,b),(a||this._renderer.SupportsNPOTTextures())&&this._isMipMapped&&(h.hint(h.GENERATE_MIPMAP_HINT,this._GetMipMapHint(h)),h.generateMipmap(h.TEXTURE_2D))}else{this._width=d,this._height=f;const a=C3.isPOT(this._width)&&C3.isPOT(this._height);if(!this._renderer.SupportsNPOTTextures()&&this._isTiled&&!a)throw new Error("non-power-of-two tiled textures not supported");h.texImage2D(h.TEXTURE_2D,0,j,i.format,i.type,b),(a||this._renderer.SupportsNPOTTextures())&&this._isMipMapped&&(h.hint(h.GENERATE_MIPMAP_HINT,this._GetMipMapHint(h)),h.generateMipmap(h.TEXTURE_2D))}}catch(a){console.error("Error updating WebGL texture: ",a)}h.bindTexture(h.TEXTURE_2D,null),this._renderer._ResetLastTexture()}_Delete(){if(0=this._refCount)throw new Error("no more references");this._refCount--}GetReferenceCount(){return this._refCount}GetWidth(){return this._width}GetHeight(){return this._height}IsStatic(){return this._isStatic}GetEstimatedMemoryUsage(){let a=this._width*this._height;switch(this._pixelFormat){case"rgba8":a*=4;break;case"rgb8":a*=3;break;case"rgba4":case"rgb5_a1":case"rgb565":a*=2;}return this._isMipMapped&&(a+=Math.floor(a/3)),a}static OnContextLost(){f.clear()}static allTextures(){return f.values()}}} + +// ../lib/gfx/renderTarget.js +"use strict";{const a={linearSampling:!0,alpha:!0,readback:!0,isDefaultSize:!0,multisampling:0},b=new Set;C3.Gfx.WebGLRenderTarget=class{constructor(a){this._renderer=a,this._frameBuffer=null,this._texture=null,this._renderBuffer=null,this._width=0,this._height=0,this._isDefaultSize=!0,this._isLinearSampling=!0,this._alpha=!0,this._readback=!0,this._multisampling=0}_Create(c,d,e){e=Object.assign({},a,e);const f=this._renderer.GetWebGLVersionNumber();if(this._texture||this._renderBuffer)throw new Error("already created render target");if(this._isLinearSampling=!!e.linearSampling,this._alpha=!!e.alpha,this._readback=!!e.readback,this._isDefaultSize=!!e.isDefaultSize,this._multisampling=e.multisampling,0f||this._readback))throw new Error("invalid use of multisampling");if(2>f&&(this._readback=!0),this._width=c,this._height=d,0>=this._width||0>=this._height)throw new Error("invalid render target size");const g=this._renderer.GetContext();if(this._frameBuffer=g.createFramebuffer(),g.bindFramebuffer(g.FRAMEBUFFER,this._frameBuffer),this._readback){this._texture=this._renderer.CreateDynamicTexture(this._width,this._height,{linearSampling:this._isLinearSampling,pixelFormat:this._alpha?"rgba8":"rgb8",mipMap:!1});const a=this._texture._GetTexture();g.framebufferTexture2D(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,g.TEXTURE_2D,a,0)}else{this._renderBuffer=g.createRenderbuffer(),g.bindRenderbuffer(g.RENDERBUFFER,this._renderBuffer);const a=this._alpha?g.RGBA8:g.RGB8;if(0a&&(this._multisampling=a)}else this._multisampling=0}0===this._multisampling?g.renderbufferStorage(g.RENDERBUFFER,a,this._width,this._height):g.renderbufferStorageMultisample(g.RENDERBUFFER,this._multisampling,a,this._width,this._height),g.framebufferRenderbuffer(g.FRAMEBUFFER,g.COLOR_ATTACHMENT0,g.RENDERBUFFER,this._renderBuffer),g.bindRenderbuffer(g.RENDERBUFFER,null)}g.bindFramebuffer(g.FRAMEBUFFER,null),b.add(this)}_Resize(a,b){if(this._width!==a||this._height!==b){this._width=a,this._height=b;const c=this._renderer.GetContext();c.bindFramebuffer(c.FRAMEBUFFER,this._frameBuffer),this._texture?this._texture._Update(new ImageData(this._width,this._height)):(c.bindRenderbuffer(c.RENDERBUFFER,this._renderBuffer),c.renderbufferStorage(c.RENDERBUFFER,this._alpha?c.RGBA8:c.RGB8,this._width,this._height),c.bindRenderbuffer(c.RENDERBUFFER,null)),c.bindFramebuffer(c.FRAMEBUFFER,null)}}_Delete(){if(!this._texture&&!this._renderBuffer)throw new Error("already deleted render target");b.delete(this);const a=this._renderer.GetContext();a.bindFramebuffer(a.FRAMEBUFFER,this._frameBuffer),this._texture?(a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,null,0),this._renderer.DeleteTexture(this._texture),this._texture=null):this._renderBuffer&&(a.framebufferRenderbuffer(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.RENDERBUFFER,null),a.deleteRenderbuffer(this._renderBuffer),this._renderBuffer=null),a.bindFramebuffer(a.FRAMEBUFFER,null),2<=this._renderer.GetWebGLVersionNumber()&&(a.bindFramebuffer(a.READ_FRAMEBUFFER,null),a.bindFramebuffer(a.DRAW_FRAMEBUFFER,null)),a.deleteFramebuffer(this._frameBuffer),this._renderer.GetBatchState().currentFramebuffer=null,this._frameBuffer=null}_GetFramebuffer(){return this._frameBuffer}GetWebGLRenderer(){return this._renderer}GetTexture(){return this._texture}IsLinearSampling(){return this._isLinearSampling}HasAlpha(){return this._alpha}IsReadback(){return this._readback}GetWidth(){return this._width}GetHeight(){return this._height}IsDefaultSize(){return this._isDefaultSize}GetMultisampling(){return this._multisampling}GetOptions(){const a={linearSampling:this._isLinearSampling,alpha:this._alpha,readback:this._readback};return this._isDefaultSize||(a.width=this._width,a.height=this._height),a}IsCompatibleWithOptions(b){return b=Object.assign({},a,b),!!b.linearSampling===this.IsLinearSampling()&&!!b.alpha===this.HasAlpha()&&!(2<=this._renderer.GetWebGLVersionNumber()&&!!b.readback!==this.IsReadback())&&("number"==typeof b.width||"number"==typeof b.height?!this.IsDefaultSize()&&this.GetWidth()===b.width&&this.GetHeight()===b.height:this.IsDefaultSize())}_GetWebGLTexture(){return this._texture?this._texture._GetTexture():null}GetEstimatedMemoryUsage(){return this._texture?this._texture.GetEstimatedMemoryUsage():this._width*this._height*(this._alpha?4:3)}static async DebugReadPixelsToBlob(a,b){const c=await a.ReadBackRenderTargetToImageData(b,!0);return await C3.ImageDataToBlob(c)}static OnContextLost(){b.clear()}static allRenderTargets(){return b.values()}static ResizeAll(a,c){for(const d of b)d.IsDefaultSize()&&d._Resize(a,c)}}} + +// ../lib/gfx/shaderProgram.js +"use strict";C3.Gfx.WebGLShaderProgram=class{static async Compile(a,b,c,d){const e=a.GetContext(),f=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(f,b),e.compileShader(f);const g=e.createShader(e.VERTEX_SHADER);e.shaderSource(g,c),e.compileShader(g);const h=e.createProgram();e.attachShader(h,f),e.attachShader(h,g),e.bindAttribLocation(h,0,"aPos"),e.bindAttribLocation(h,1,"aTex"),e.bindAttribLocation(h,2,"aPoints"),e.linkProgram(h);const i=a._GetParallelShaderCompileExtension();if(i?await a._WaitForObjectReady(()=>e.getProgramParameter(h,i["COMPLETION_STATUS_KHR"])):await C3.Wait(5),!e.getShaderParameter(f,e.COMPILE_STATUS)){const a=e.getShaderInfoLog(f);throw e.deleteShader(f),e.deleteShader(g),e.deleteProgram(h),new Error("Error compiling fragment shader: ",a)}if(!e.getShaderParameter(g,e.COMPILE_STATUS)){const a=e.getShaderInfoLog(g);throw e.deleteShader(f),e.deleteShader(g),e.deleteProgram(h),new Error("Error compiling vertex shader: ",a)}if(!e.getProgramParameter(h,e.LINK_STATUS)){const a=e.getProgramInfoLog(h);throw e.deleteShader(f),e.deleteShader(g),e.deleteProgram(h),new Error("Error linking shader program: ",a)}const j=C3.FilterUnprintableChars(e.getProgramInfoLog(h)||"").trim();return j&&!C3.IsStringAllWhitespace(j)&&console.info(`[WebGL] Shader program '${d}' compilation log: `,j),e.deleteShader(f),e.deleteShader(g),h}static async Create(a,b,c,d){const e=await C3.Gfx.WebGLShaderProgram.Compile(a,b.src,c,d);return new C3.Gfx.WebGLShaderProgram(a,e,b,d)}constructor(a,b,c,d){const e=a.GetContext(),f=a.GetBatchState();a.EndBatch(),e.useProgram(b),this._gl=e,this._renderer=a,this._name=d,this._shaderProgram=b,this._isDeviceTransform=""===d;const g=e.getAttribLocation(b,"aPos"),h=e.getAttribLocation(b,"aTex"),i=e.getAttribLocation(b,"aPoints");-1!==g&&(e.bindBuffer(e.ARRAY_BUFFER,a._vertexBuffer),e.vertexAttribPointer(g,a.GetNumVertexComponents(),e.FLOAT,!1,0,0),e.enableVertexAttribArray(g)),-1!==h&&(e.bindBuffer(e.ARRAY_BUFFER,a._texcoordBuffer),e.vertexAttribPointer(h,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(h)),-1!==i&&(e.bindBuffer(e.ARRAY_BUFFER,a._pointBuffer),e.vertexAttribPointer(i,4,e.FLOAT,!1,0,0),e.enableVertexAttribArray(i)),e.bindBuffer(e.ARRAY_BUFFER,null),this._uMatP=new C3.Gfx.WebGLShaderUniform(this,"matP","mat4"),this._uMatMV=new C3.Gfx.WebGLShaderUniform(this,"matMV","mat4"),this._uColor=new C3.Gfx.WebGLShaderUniform(this,"color","vec4"),this._uSamplerFront=new C3.Gfx.WebGLShaderUniform(this,"samplerFront","sampler"),this._uPointTexStart=new C3.Gfx.WebGLShaderUniform(this,"pointTexStart","vec2"),this._uPointTexEnd=new C3.Gfx.WebGLShaderUniform(this,"pointTexEnd","vec2"),this._uTileSize=new C3.Gfx.WebGLShaderUniform(this,"tileSize","vec2"),this._uTileSpacing=new C3.Gfx.WebGLShaderUniform(this,"tileSpacing","vec2"),this._uColor2=new C3.Gfx.WebGLShaderUniform(this,"color2","vec4"),this._uOutlineThickness=new C3.Gfx.WebGLShaderUniform(this,"outlineThickness","float"),this._uSamplerBack=new C3.Gfx.WebGLShaderUniform(this,"samplerBack","sampler"),this._uDestStart=new C3.Gfx.WebGLShaderUniform(this,"destStart","vec2"),this._uDestEnd=new C3.Gfx.WebGLShaderUniform(this,"destEnd","vec2"),this._uSrcStart=new C3.Gfx.WebGLShaderUniform(this,"srcStart","vec2"),this._uSrcEnd=new C3.Gfx.WebGLShaderUniform(this,"srcEnd","vec2"),this._uSrcOriginStart=new C3.Gfx.WebGLShaderUniform(this,"srcOriginStart","vec2"),this._uSrcOriginEnd=new C3.Gfx.WebGLShaderUniform(this,"srcOriginEnd","vec2"),this._uPixelSize=new C3.Gfx.WebGLShaderUniform(this,"pixelSize","vec2"),this._uSeconds=new C3.Gfx.WebGLShaderUniform(this,"seconds","float"),this._uLayerScale=new C3.Gfx.WebGLShaderUniform(this,"layerScale","float"),this._uLayerAngle=new C3.Gfx.WebGLShaderUniform(this,"layerAngle","float"),this._uLayoutStart=new C3.Gfx.WebGLShaderUniform(this,"layoutStart","vec2"),this._uLayoutEnd=new C3.Gfx.WebGLShaderUniform(this,"layoutEnd","vec2"),this._hasAnyOptionalUniforms=!!(this._uPixelSize.IsUsed()||this._uSeconds.IsUsed()||this._uSamplerBack.IsUsed()||this._uDestStart.IsUsed()||this._uDestEnd.IsUsed()||this._uSrcStart.IsUsed()||this._uSrcEnd.IsUsed()||this._uSrcOriginStart.IsUsed()||this._uSrcOriginEnd.IsUsed()||this._uLayerScale.IsUsed()||this._uLayerAngle.IsUsed()||this._uLayoutStart.IsUsed()||this._uLayoutEnd.IsUsed()),this._extendBoxHorizontal=c.extendBoxHorizontal||0,this._extendBoxVertical=c.extendBoxVertical||0,this._crossSampling=!!c.crossSampling,this._mustPreDraw=!!c.mustPreDraw,this._preservesOpaqueness=!!c.preservesOpaqueness,this._animated=!!c.animated;const j=c.parameters||[];this._uCustomParameters=[],this._usesDest=this._uDestStart.IsUsed()||this._uDestEnd.IsUsed(),this._usesAnySrcRectOrPixelSize=this._uPixelSize.IsUsed()||this._uSrcStart.IsUsed()||this._uSrcEnd.IsUsed()||this._uSrcOriginStart.IsUsed()||this._uSrcOriginEnd.IsUsed(),this._needsPostDrawOrExtendBox=this._crossSampling||this._usesDest||0!==this._extendBoxHorizontal||0!==this._extendBoxVertical,this._hasCurrentMatP=!1,this._hasCurrentMatMV=!1,this._uColor.Init4f(1,1,1,1),this._uColor2.Init4f(1,1,1,1),this._uSamplerFront.Init1i(0),this._uSamplerBack.Init1i(1),this._uPointTexStart.Init2f(0,0),this._uPointTexEnd.Init2f(1,1),this._uTileSize.Init2f(0,0),this._uTileSpacing.Init2f(0,0),this._uDestStart.Init2f(0,0),this._uDestEnd.Init2f(1,1),this._uSrcStart.Init2f(0,0),this._uSrcEnd.Init2f(0,0),this._uSrcOriginStart.Init2f(0,0),this._uSrcOriginEnd.Init2f(0,0),this._uPixelSize.Init2f(0,0),this._uLayerScale.Init1f(1),this._uLayerAngle.Init1f(0),this._uSeconds.Init1f(0),this._uLayoutStart.Init2f(0,0),this._uLayoutEnd.Init2f(0,0),this._uOutlineThickness.Init1f(1);for(const e of j){const a=e[0],b=e[2],c=new C3.Gfx.WebGLShaderUniform(this,a,b);"color"===b?c.Init3f(0,0,0):c.Init1f(0),this._uCustomParameters.push(c)}this._isDeviceTransform?this._UpdateDeviceTransformUniforms(f.currentMatP):(this.UpdateMatP(f.currentMatP,!0),this.UpdateMatMV(f.currentMV,!0));const k=f.currentShader;e.useProgram(k?k._shaderProgram:null)}Release(){this._gl.deleteProgram(this._shaderProgram),this._shaderProgram=null,this._renderer._RemoveShaderProgram(this),this._gl=null,this._renderer=null}GetName(){return this._name}GetWebGLContext(){return this._gl}GetShaderProgram(){return this._shaderProgram}UsesDest(){return this._usesDest}UsesCrossSampling(){return this._crossSampling}MustPreDraw(){return this._mustPreDraw}PreservesOpaqueness(){return this._preservesOpaqueness}ExtendsBox(){return 0!==this._extendBoxHorizontal||0!==this._extendBoxVertical}GetBoxExtendHorizontal(){return this._extendBoxHorizontal}GetBoxExtendVertical(){return this._extendBoxVertical}UsesAnySrcRectOrPixelSize(){return this._usesAnySrcRectOrPixelSize}NeedsPostDrawOrExtendsBox(){return this._needsPostDrawOrExtendBox}GetParameterCount(){return this._uCustomParameters.length}GetParameterType(a){return this._uCustomParameters[a].GetType()}AreCustomParametersAlreadySetInBatch(a){for(let b=0,c=a.length;b{const b=a.font.GetName();for(const c of i)(c.IsBBCodeEnabled()||C3.equalsNoCase(c.GetFontName(),b))&&c._SetTextChanged()}),C3.Gfx.WebGLText=class{constructor(a,b){b=Object.assign({},d,b),this._renderer=a,this._fontName="Arial",this._fontSize=16,this._lineHeight=0,this._isBold=!1,this._isItalic=!1,this._colorStr="black",this._isBBcodeEnabled=!1,this.onloadfont=null,this._alreadyLoadedFonts=new Set,this._horizontalAlign="left",this._verticalAlign="top",this._text="",this._bbString=null,this._wrappedText=C3.New(C3.WordWrap),this._wrapMode="word",this._textChanged=!1,this._isUpdating=!1,this._isAsync=!0,this._drawMaxCharCount=-1,this._drawCharCount=0,this._cssWidth=0,this._cssHeight=0,this._width=0,this._height=0,this._zoom=1,this._changed=!1,this._textCanvas=null,this._textContext=null,this._measureContext=null,this._lastCanvasWidth=-1,this._lastCanvasHeight=-1,this._lastTextCanvasFont="",this._lastMeasureCanvasFont="",this._lastTextCanvasFillStyle="",this._lastTextCanvasOpacity=1,this._lastTextCanvasLineWidth=1,this._measureTextCallback=(a,b)=>this._MeasureText(a,b),this._texture=null,this._textureWidth=0,this._textureHeight=0,this._rcTex=new C3.Rect,this._scaleFactor=1,this._needToRecreateTexture=!1,this._textureTimeout=new C3.IdleTimeout(()=>{this.ReleaseTexture(),this._SetTextCanvasSize(8,8)},b.timeout),this.ontextureupdate=null,this._wasReleased=!1,i.add(this)}Release(){this.onloadfont=null,this._alreadyLoadedFonts.clear(),this._bbString=null,this._textCanvas=null,this._textContext=null,this._measureContext=null,this._measureTextCallback=null,this._textureTimeout.Release(),this.ontextureupdate=null,this.ReleaseTexture(),this._wrappedText.Clear(),this._wrappedText=null,this._renderer=null,this._wasReleased=!0,i.delete(this)}_SetChanged(){this._changed=!0}_SetTextChanged(){this._SetChanged(),this._wrappedText.Clear(),this._textChanged=!0}SetIsAsync(b){this._isAsync=!!b}IsAsync(){return this._isAsync}SetBBCodeEnabled(a){a=!!a;this._isBBcodeEnabled===a||(this._isBBcodeEnabled=a,this._textContext&&(this._textContext.textBaseline=this._isBBcodeEnabled?"alphabetic":"top"),this._SetTextChanged())}IsBBCodeEnabled(){return this._isBBcodeEnabled}SetFontName(a){a||(a="serif");this._fontName===a||(this._fontName=a,this._SetTextChanged())}GetFontName(){return this._fontName}SetFontSize(a){.1>a&&(a=.1);this._fontSize===a||(this._fontSize=a,this._SetTextChanged())}SetLineHeight(a){this._lineHeight===a||(this._lineHeight=a,this._SetChanged())}SetBold(a){a=!!a;this._isBold===a||(this._isBold=a,this._SetTextChanged())}SetItalic(a){a=!!a;this._isItalic===a||(this._isItalic=a,this._SetTextChanged())}SetDrawMaxCharacterCount(a){a=Math.floor(a);this._drawMaxCharCount===a||(this._drawMaxCharCount=a,this._SetChanged())}GetDrawMaxCharacterCount(){return this._drawMaxCharCount}_GetStyleTag(a,b){for(let c=a.length-1;0<=c;--c){const d=a[c];if(d.tag===b)return d}return null}_HasStyleTag(a,b){return!!this._GetStyleTag(a,b)}_GetFontString(a,b){let c="";(this._isBold||this._HasStyleTag(b,"b"))&&(c+="bold"),(this._isItalic||this._HasStyleTag(b,"i"))&&(c+=" italic");const d=this._GetStyleTag(b,"size"),e=d?parseFloat(d.param):this._fontSize;c+=a?" "+e+"pt":" "+e*this._scaleFactor*this._zoom*self.devicePixelRatio+"pt";let f=this._fontName;const g=this._GetStyleTag(b,"font");return g&&g.param&&(f=g.param,this.onloadfont&&!this._alreadyLoadedFonts.has(f)&&(this.onloadfont(f),this._alreadyLoadedFonts.add(f))),f&&(c+=" \""+f+"\""),c}SetColor(a){a instanceof C3.Color&&(a=a.getCssRgb());this._colorStr===a||(this._colorStr=a,this._SetChanged())}SetColorRgb(a,c,d){e.setRgb(a,c,d),this.SetColor(e)}SetHorizontalAlignment(a){if(!f.has(a))throw new Error("invalid horizontal alignment");this._horizontalAlign===a||(this._horizontalAlign=a,this._SetChanged())}SetVerticalAlignment(a){if(!g.has(a))throw new Error("invalid vertical alignment");this._verticalAlign===a||(this._verticalAlign=a,this._SetChanged())}SetWordWrapMode(a){if(!h.has(a))throw new Error("invalid word wrap mode");this._wrapMode===a||(this._wrapMode=a,this._SetTextChanged())}SetText(a){this._text===a||(this._text=a,this._SetTextChanged())}SetSize(a,b,c){var d=Math.min;if("undefined"==typeof c&&(c=1),0>=a||0>=a)return;if(this._cssWidth===a&&this._cssHeight===b&&this._zoom===c)return;1===this._zoom!=(1===c)&&(this._needToRecreateTexture=!0);const e=this._cssWidth,f=this._zoom;this._cssWidth=a,this._cssHeight=b,this._zoom=c;const g=self.devicePixelRatio;this._width=this._cssWidth*this._zoom*g,this._height=this._cssHeight*this._zoom*g;const h=Math.max(this._width,this._height),i=d(this._renderer.GetMaxTextureSize(),2048);let j=1;h>i&&(j=i/h,this._width=d(this._width*j,i),this._height=d(this._height*j,i)),this._scaleFactor=j,0=this._width||0>=this._height||(this._changed=!1,this._isUpdating=!0,this._isAsync?C3.Asyncify(()=>this._DoUpdate()):this._DoUpdate())}_DoUpdate(){var a=Math.ceil;this._wasReleased||(this._SetTextCanvasSize(a(this._width),a(this._height)),this._MaybeWrapText(),this._DrawTextToCanvas(),this._UpdateTexture(),this._textureTimeout.Reset(),this._isUpdating=!1)}_SetTextCanvasSize(a,b){this._textCanvas||(this._textCanvas=C3.CreateCanvas(16,16));let c=!1;(this._lastCanvasWidth!==a||this._lastCanvasHeight!==b)&&(this._lastCanvasWidth=a,this._lastCanvasHeight=b,this._textCanvas.width=a,this._textCanvas.height=b,c=!0),this._textContext||(this._textContext=this._textCanvas.getContext("2d"),c=!0),c?(this._textContext.textBaseline=this._isBBcodeEnabled?"alphabetic":"top",this._textContext.font=this._lastTextCanvasFont,this._textContext.fillStyle=this._lastTextCanvasFillStyle,this._textContext.strokeStyle=this._lastTextCanvasFillStyle):this._textContext.clearRect(0,0,a,b)}_MaybeCreateMeasureContext(){this._measureContext||(this._measureContext=C3.CreateCanvas(16,16).getContext("2d"))}_SetMeasureFontString(a){this._lastMeasureCanvasFont===a||(this._lastMeasureCanvasFont=a,this._measureContext.font=a)}_MaybeWrapText(){this._textChanged&&(this._MaybeCreateMeasureContext(),this._isBBcodeEnabled&&(!this._bbString||this._bbString.toString()!==this._text)&&(this._bbString=new C3.BBString(this._text,{noEscape:!0})),this._wrappedText.WordWrap(this._isBBcodeEnabled?this._bbString.toFragmentList():this._text,this._measureTextCallback,this._cssWidth,this._wrapMode),this._textChanged=!1)}_MeasureText(a,b){this._SetMeasureFontString(this._GetFontString(!0,b));const d=this._GetStyleTag(b,"size"),e=d?parseFloat(d.param):this._fontSize;return{width:this._measureContext.measureText(a).width,height:c(e)}}_SetDrawFontString(a){this._lastTextCanvasFont===a||(this._lastTextCanvasFont=a,this._textContext.font=a)}_SetDrawCanvasColor(a){this._lastTextCanvasFillStyle===a||(this._lastTextCanvasFillStyle=a,this._textContext.fillStyle=a,this._textContext.strokeStyle=a)}_SetDrawCanvasOpacity(a){this._lastTextCanvasOpacity===a||(this._lastTextCanvasOpacity=a,this._textContext.globalAlpha=a)}_SetDrawCanvasLineWith(a){this._lastTextCanvasLineWidth===a||(this._lastTextCanvasLineWidth=a,this._textContext.lineWidth=a)}_DrawTextToCanvas(){var a=Math.max;this._drawCharCount=0;const b=this._scaleFactor*this._zoom*self.devicePixelRatio,d=c(this._fontSize)*b,e=(4+this._lineHeight)*b,f=d+e;let g=0;const h=this._wrappedText.GetLines();"center"===this._verticalAlign?g=a(this._height/2-h.length*f/2,0):"bottom"===this._verticalAlign&&(g=a(this._height-h.length*f-2,0));for(let a=0,c=h.length;athis._height-e)break;}else if(0=this._height-(d+e))break;let f=0;"center"===this._horizontalAlign?f=(this._width-c.width*b)/2:"right"===this._horizontalAlign&&(f=this._width-c.width*b),this._DrawTextLine(c,f,g,b),this._isBBcodeEnabled||(g+=d),g+=e}}_DrawTextLine(a,b,c,d){for(const e of a.fragments)this._DrawTextFragment(e,b,c,d,a.height),b+=e.width*d}_DrawTextFragment(c,d,e,f,g){const h=this._textContext,i=g/16;let j=c.width*f;const k=c.height*f,l=c.height/16,m=(4+this._lineHeight)*f,n=c.styles;let o=c.text;if(-1!==this._drawMaxCharCount){if(this._drawCharCount>=this._drawMaxCharCount)return;this._drawCharCount+o.length>this._drawMaxCharCount&&(o=o.substr(0,this._drawMaxCharCount-this._drawCharCount),j=this._MeasureText(o,n).width*f),this._drawCharCount+=o.length}const p=this._GetStyleTag(n,"background"),q=this._HasStyleTag(n,"u"),r=this._HasStyleTag(n,"s");if((!C3.IsStringAllWhitespace(o)||p||q||r)&&!this._HasStyleTag(n,"hide")){const c=this._GetStyleTag(n,"offsetx");d+=c?parseFloat(c.param)*f:0;const g=this._GetStyleTag(n,"offsety");e+=g?parseFloat(g.param)*f:0,p&&(this._SetDrawCanvasColor(p.param),h.fillRect(d,e-k,j,k+m));const s=this._GetStyleTag(n,"color");this._SetDrawCanvasColor(s?s.param:this._colorStr);const t=this._GetStyleTag(n,"opacity");this._SetDrawCanvasOpacity(t?parseFloat(t.param)/100:1);const u=this._HasStyleTag(n,"stroke");if(u&&this._SetDrawCanvasLineWith(l*this._scaleFactor*this._zoom),q&&b(h,u,d,e+f*i,j,f*i),r&&b(h,u,d,e-k/4,j,f*l),this._SetDrawFontString(this._GetFontString(!1,n)),a(h,u,o,d,e,j),!u){this._SetDrawCanvasLineWith(l*this._scaleFactor*this._zoom);const b=this._GetStyleTag(n,"outline");b&&(this._SetDrawCanvasColor(b.param),a(h,!0,o,d,e,j))}}}_UpdateTexture(){var a=Math.ceil;this._renderer.IsContextLost()||(this._textureWidth=a(this._width),this._textureHeight=a(this._height),this._rcTex.set(0,0,this._width/this._textureWidth,this._height/this._textureHeight),this._needToRecreateTexture&&(this.ReleaseTexture(),this._needToRecreateTexture=!1),!this._texture&&(this._texture=this._renderer.CreateDynamicTexture(this._textureWidth,this._textureHeight,{mipMap:1===this._zoom,mipMapQuality:"high"})),this._renderer.UpdateTexture(this._textCanvas,this._texture),this.ontextureupdate&&this.ontextureupdate())}GetTexRect(){return this._rcTex}ReleaseTexture(){this._texture&&(!this._renderer.IsContextLost()&&this._renderer.DeleteTexture(this._texture),this._texture=null)}static OnContextLost(){for(const a of i)a.ReleaseTexture()}static GetAll(){return i.values()}}} + +// ../lib/gfx/query.js +"use strict";{class a{constructor(a){this._gl=a.GetContext(),this._version=a.GetWebGLVersionNumber(),this._timerExt=a._GetDisjointTimerQueryExtension(),this._query=null,this._isActive=!1,this._hasResult=!1,this._result=0,this._query=1===this._version?this._timerExt["createQueryEXT"]():this._gl["createQuery"]()}Release(){this._DeleteQueryObject(),this._gl=null,this._timerExt=null,this._hasResult=!1}_DeleteQueryObject(){this._query&&(1===this._version?this._timerExt["deleteQueryEXT"](this._query):this._gl["deleteQuery"](this._query),this._query=null)}BeginTimeElapsed(){if(this._isActive)throw new Error("query already active");1===this._version?this._timerExt["beginQueryEXT"](this._timerExt["TIME_ELAPSED_EXT"],this._query):this._gl["beginQuery"](this._timerExt["TIME_ELAPSED_EXT"],this._query),this._isActive=!0}EndTimeElapsed(){if(!this._isActive)throw new Error("query not active");1===this._version?this._timerExt["endQueryEXT"](this._timerExt["TIME_ELAPSED_EXT"]):this._gl["endQuery"](this._timerExt["TIME_ELAPSED_EXT"]),this._isActive=!1}CheckForResult(){if(!this._query||this._hasResult||this._isActive)return;let a=!1;a=1===this._version?this._timerExt["getQueryObjectEXT"](this._query,this._timerExt["QUERY_RESULT_AVAILABLE_EXT"]):this._gl["getQueryParameter"](this._query,this._gl["QUERY_RESULT_AVAILABLE"]);const b=this._gl.getParameter(this._timerExt["GPU_DISJOINT_EXT"]);a&&!b&&(this._result=1===this._version?this._timerExt["getQueryObjectEXT"](this._query,this._timerExt["QUERY_RESULT_EXT"]):this._gl["getQueryParameter"](this._query,this._gl["QUERY_RESULT"]),this._result/=1e9,this._hasResult=!0),(a||b)&&this._DeleteQueryObject()}HasResult(){return this._hasResult}GetResult(){if(!this._hasResult)throw new Error("no result available");return this._result}}C3.Gfx.WebGLTimeElapsedQuery=class{constructor(a){this._renderer=a,this._frameNumber=a.GetFrameNumber(),this._isActive=!1,this._parentQuery=null,this._isNested=!1,this._realQuery=null,this._queries=[]}Release(){for(const b of this._queries)b instanceof a&&b.Release();C3.clearArray(this._queries),this._parentQuery=null,this._realQuery=null,this._renderer=null}BeginTimeElapsed(){if(this._isActive)throw new Error("query already active");const a=this._renderer._GetTimeQueryStack();0a.HasResult())}GetResult(){return this._queries.reduce((b,a)=>b+a.GetResult(),0)}GetFrameNumber(){return this._frameNumber}}} + +// ../lib/gfx/queryResultBuffer.js +"use strict";C3.Gfx.WebGLQueryResultBuffer=class{constructor(a,b=1e3){this._renderer=a,this._maxQueries=b,this._buffer=[],this._renderer._AddQueryResultBuffer(this)}Release(){this.Clear(),this._renderer._RemoveQueryResultBuffer(this),this._renderer=null}Clear(){for(const a of this._buffer)a.Release();C3.clearArray(this._buffer)}AddTimeElapsedQuery(){const a=new C3.Gfx.WebGLTimeElapsedQuery(this._renderer);if(this._buffer.push(a),this._buffer.length>this._maxQueries){const a=this._buffer.shift();a.Release()}return a}CheckForResults(a){for(const b of this._buffer){if(b.GetFrameNumber()>=a)return;if(b.IsNested())return;b.CheckForResult()}}GetFrameRangeResultSum(a,b){if(b<=a)return NaN;let c=0;for(const d of this._buffer){if(d.GetFrameNumber()>=b)break;if(!(d.GetFrameNumber()"],[l.GetTextureFillFragmentShaderSource(),o,""],[l.GetPointFragmentShaderSource(),l.GetPointVertexShaderSource(),""],[l.GetColorFillFragmentShaderSource(),o,""],[l.GetLinearGradientFillFragmentShaderSource(),o,""],[l.GetHardEllipseFillFragmentShaderSource(),o,""],[l.GetHardEllipseOutlineFragmentShaderSource(),o,""],[l.GetSmoothEllipseFillFragmentShaderSource(),o,""],[l.GetSmoothEllipseOutlineFragmentShaderSource(),o,""],[l.GetSmoothLineFillFragmentShaderSource(),o,""],[l.GetTilemapFragmentShaderSource(),l.GetDefaultVertexShaderSource(this._is3d,!0),""]],d=await Promise.all(s.map((e)=>this.CreateShaderProgram({src:e[0]},e[1],e[2])));this._spTextureFill=d[0],this._spDeviceTransformTextureFill=d[1],this._spPoints=d[2],this._spColorFill=d[3],this._spLinearGradientFill=d[4],this._spHardEllipseFill=d[5],this._spHardEllipseOutline=d[6],this._spSmoothEllipseFill=d[7],this._spSmoothEllipseOutline=d[8],this._spSmoothLineFill=d[9],this._spTilemapFill=d[10],this._stateGroups.clear(),this._currentStateGroup=null,this.SetTextureFillMode()}FillIndexBufferData(){const e=this._indexData;for(let t=0,r=0;t<12000;)e[t++]=r,e[t++]=r+1,e[t++]=r+2,e[t++]=r,e[t++]=r+2,e[t++]=r+3,r+=4}GetNumVertexComponents(){return this._is3d?3:2}SetCurrentZ(e){this._currentZ=e,this._currentStateGroup=null}GetCurrentZ(){return this._currentZ}async CreateShaderProgram(e,t,r){const a=await C3.Gfx.WebGLShaderProgram.Create(this,e,t,r);return this._shaderPrograms.push(a),this._shaderProgramsByName.set(a.GetName(),a),a}GetShaderProgramByName(e){return this._shaderProgramsByName.get(e)||null}GetTextureFillShaderProgram(){return this._spTextureFill}ResetLastProgram(){this._lastProgram=null}_RemoveShaderProgram(e){const t=this._shaderPrograms.indexOf(e);-1!==t&&this._shaderPrograms.splice(t,1),this._shaderProgramsByName.delete(e.GetName())}Project(e,t,r,a,i){const n=this._matMV,l=this._matP;for(let n=0,l=_.length;n=this._lastVertexPtr&&(this.EndBatch(),e=0),1===this._topOfBatch)this._batch[this._batchPtr-1]._indexCount+=6;else{const t=this.PushBatch();t.InitQuad(this._is3d?e:3*(e/2),6),this._topOfBatch=1}}_WriteQuadToVertexBuffer(e){e.writeToTypedArray3D(this._vertexData,this._vertexPtr,this._currentZ),this._vertexPtr+=12}Quad(e){this._ExtendQuadBatch(),this._WriteQuadToVertexBuffer(e),n.writeToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}Quad2(e,t,r,a,i,_,l,o){this._ExtendQuadBatch();const s=this._vertexData;let d=this._vertexPtr;const u=this._currentZ;this._is3d?(s[d++]=e,s[d++]=t,s[d++]=u,s[d++]=r,s[d++]=a,s[d++]=u,s[d++]=i,s[d++]=_,s[d++]=u,s[d++]=l,s[d++]=o,s[d++]=u):(s[d++]=e,s[d++]=t,s[d++]=r,s[d++]=a,s[d++]=i,s[d++]=_,s[d++]=l,s[d++]=o),this._vertexPtr=d,n.writeToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}Quad3(e,t){this._ExtendQuadBatch(),this._WriteQuadToVertexBuffer(e),t.writeAsQuadToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}Quad4(e,t){this._ExtendQuadBatch(),this._WriteQuadToVertexBuffer(e),t.writeToTypedArray(this._texcoordData,this._texPtr),this._texPtr+=8}FullscreenQuad(e,t){var r=Math.max,a=Math.min;if(mat4.copy(s,this._lastMV),vec3.copy(l,this._cam),vec3.copy(o,this._look),this._cam[0]=0,this._cam[1]=0,this._cam[2]=100*self.devicePixelRatio,this._look[0]=0,this._look[1]=0,this._look[2]=0,this.ResetModelView(),this.UpdateModelView(),this._isScissorViewport){const e=this._viewportScissorWidth/2,t=this._viewportScissorHeight/2;c.set(-e,t,-e+this._viewportScissorWidth,t-this._viewportScissorHeight),d.setFromRect(c),c.set(0,0,this._viewportScissorWidth/this._width,this._viewportScissorHeight/this._height),this.Quad3(d,c)}else if("crop"===e&&this._currentRenderTarget&&t){const e=this._width/2,i=this._height/2,n=t.GetWidth(),_=t.GetHeight(),l=this._currentRenderTarget.GetWidth(),o=this._currentRenderTarget.GetHeight(),s=a(l,n),u=a(o,_),p=r(_-o,0),f=r(o-_,0);c.set(-e,i-f,-e+s,i-u-f),d.setFromRect(c),c.set(0,p,s,u+p),c.divide(n,_),this.Quad3(d,c)}else{let[e,t]=this.GetRenderTargetSize(this._currentRenderTarget);const r=e/2,a=t/2;this.Rect2(-r,a,r,-a)}mat4.copy(this._matMV,s),vec3.copy(this._cam,l),vec3.copy(this._look,o),this.UpdateModelView()}ConvexPoly(e){const t=e.length/2;if(3>t)throw new Error("need at least 3 points");const r=t-2,a=e[0],n=e[1];for(let t=0;t=this._lineWidthStack.length)throw new Error("cannot pop last line width - check push/pop pairs");this._lineWidthStack.pop(),this._lineWidth=this._lineWidthStack[this._lineWidthStack.length-1]}SetLineCapButt(){this._lineCap=0,this._lineCapStack[this._lineCapStack.length-1]=0}SetLineCapSquare(){this._lineCap=1,this._lineCapStack[this._lineCapStack.length-1]=0}SetLineCapZag(){this._lineCap=2,this._lineCapStack[this._lineCapStack.length-1]=0}PushLineCap(e){if("butt"===e)this.PushLineCapButt();else if("square"===e)this.PushLineCapSquare();else if("zag"===e)this.PushLineCapZag();else throw new Error("invalid line cap")}PushLineCapButt(){if(100<=this._lineCapStack.length)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(0),this._lineCap=0}PushLineCapSquare(){if(100<=this._lineCapStack.length)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(1),this._lineCap=1}PushLineCapZag(){if(100<=this._lineCapStack.length)throw new Error("pushed too many line caps - check push/pop pairs");this._lineCapStack.push(2),this._lineCap=2}PopLineCap(){if(1>=this._lineCapStack.length)throw new Error("cannot pop last line cap - check push/pop pairs");this._lineCapStack.pop(),this._lineCap=this._lineCapStack[this._lineCapStack.length-1]}SetLineOffset(e){this._lineOffset=e,this._lineOffsetStack[this._lineOffsetStack.length-1]=e}GetLineOffset(){return this._lineOffset}PushLineOffset(e){if(100<=this._lineOffsetStack.length)throw new Error("pushed too many line offsets - check push/pop pairs");this._lineOffsetStack.push(e),this._lineOffset=e}PopLineOffset(){if(1>=this._lineOffsetStack.length)throw new Error("cannot pop last line offset - check push/pop pairs");this._lineOffsetStack.pop(),this._lineOffset=this._lineOffsetStack[this._lineOffsetStack.length-1]}SetPointTextureCoords(e){if(!this._lastPointTexCoords.equals(e)){this._lastPointTexCoords.copy(e);const t=this.PushBatch();t.InitSetPointTexCoords(e),this._topOfBatch=0}}Point(e,t,r,a){this._pointPtr>=7996&&this.EndBatch();let i=this._pointPtr;if(2===this._topOfBatch)this._batch[this._batchPtr-1]._indexCount++;else{const e=this.PushBatch();e.InitPoints(i),this._topOfBatch=2}const n=this._pointData;n[i++]=e,n[i++]=t,n[i++]=r,n[i++]=a,this._pointPtr=i}SetProgram(e){if(this._lastProgram!==e){const t=this.PushBatch();t.InitSetProgram(e),this._lastProgram=e,this._topOfBatch=0,this._currentStateGroup=null}}SetTextureFillMode(){this.SetProgram(this._spTextureFill)}SetDeviceTransformTextureFillMode(){this.SetProgram(this._spDeviceTransformTextureFill)}SetColorFillMode(){this.SetProgram(this._spColorFill)}SetLinearGradientFillMode(){this.SetProgram(this._spLinearGradientFill)}SetGradientColor(e){const t=this.PushBatch();t.InitSetGradientColor(e),this._topOfBatch=0}SetHardEllipseFillMode(){this.SetProgram(this._spHardEllipseFill)}SetHardEllipseOutlineMode(){this.SetProgram(this._spHardEllipseOutline)}SetSmoothEllipseFillMode(){this.SetProgram(this._spSmoothEllipseFill)}SetSmoothEllipseOutlineMode(){this.SetProgram(this._spSmoothEllipseOutline)}SetEllipseParams(e,t,r=1){const a=this.PushBatch();a.InitSetEllipseParams(e,t,r),this._topOfBatch=0}SetSmoothLineFillMode(){this.SetProgram(this._spSmoothLineFill)}SetTilemapFillMode(){this.SetProgram(this._spTilemapFill)}SetTilemapInfo(e,t,r,a,i,n,_){if(this._lastProgram!==this._spTilemapFill)throw new Error("must set tilemap fill mode first");const l=this.PushBatch();l.InitSetTilemapInfo(e,t,r,a,i,n,_),this._topOfBatch=0}SetProgramParameters(e,t,r,a,i,n,_,l,o,d,u){const c=this._lastProgram,s=c._hasAnyOptionalUniforms,p=!!u.length;if(s&&!c.AreOptionalUniformsAlreadySetInBatch(t,r,a,i,n,_,l,o,d)||p&&!c.AreCustomParametersAlreadySetInBatch(u)){const f=this.PushBatch();if(f.InitSetProgramParameters(),s){c.SetOptionalUniformsInBatch(t,r,a,i,n,_,l,o,d);const s=f._mat4param;s[0]=n,s[1]=_,t.writeToTypedArray(s,2),s[6]=l,s[7]=o,r.writeToTypedArray(s,12);const u=f._colorParam;i.writeToTypedArray(u,0);const p=u[1];u[1]=u[3],u[3]=p,a.writeToTypedArray(f._srcOriginRect,0),f._startIndex=d,f._texParam=c._uSamplerBack.IsUsed()?e?e.GetTexture():null:null}p&&(c.SetCustomParametersInBatch(u),C3.shallowAssignArray(f._shaderParams,u)),this._topOfBatch=0}}ClearRgba(e,t,r,i){const a=this.PushBatch();a.InitClearSurface2(e,t,r,i),this._topOfBatch=0}Clear(e){const t=this.PushBatch();t.InitClearSurface(e),this._topOfBatch=0}ClearRect(e,t,r,a){this.ClearRect4(e,t,r,a,0,0,0,0)}ClearRect2(e){this.ClearRect4(e.getLeft(),e.getTop(),e.width(),e.height(),0,0,0,0)}ClearRect3(e,t){this.ClearRect4(e.getLeft(),e.getTop(),e.width(),e.height(),t.getR(),t.getG(),t.getB(),t.getA())}ClearRect4(e,t,i,n,_,r,l,o){if(!(0>i||0>n)){const a=this.PushBatch();a.InitClearRect(e,t,i,n,_,r,l,o),this._topOfBatch=0}}Finish(){this.EndBatch(),this._gl.flush(),this._frameNumber++}CheckForQueryResults(){for(const e of this._allQueryResultBuffers)e.CheckForResults(this._frameNumber)}IsContextLost(){return!this._gl||this._gl.isContextLost()||this._isInitialisingAfterContextRestored}OnContextLost(){C3.Gfx.WebGLRendererTexture.OnContextLost(),C3.Gfx.WebGLRenderTarget.OnContextLost(),C3.Gfx.WebGLText.OnContextLost();for(const e of this._allQueryResultBuffers)e.Clear();this._extensions=[],this._timerExt=null,this._parallelShaderCompileExt=null,this._unmaskedVendor="(unavailable)",this._unmaskedRenderer="(unavailable)",this._lastProgram=null,this._spTextureFill=null,this._spDeviceTransformTextureFill=null,this._spColorFill=null,this._spLinearGradientFill=null,this._spHardEllipseFill=null,this._spHardEllipseOutline=null,this._spSmoothEllipseFill=null,this._spSmoothEllipseOutline=null,this._spSmoothLineFill=null,this._spPoints=null,this._spTilemapFill=null;for(const e of this._shaderPrograms)e.Release();C3.clearArray(this._shaderPrograms),this._shaderProgramsByName.clear()}async OnContextRestored(){this._isInitialisingAfterContextRestored=!0,await this.InitState(),this._isInitialisingAfterContextRestored=!1,this.SetSize(this._width,this._height,!0)}CreateStaticTexture(e,t){if(this.IsContextLost())throw new Error("context lost");this.EndBatch();const r=C3.New(C3.Gfx.WebGLRendererTexture,this);return r._CreateStatic(e,t),r}CreateStaticTextureAsync(e,t){return this.IsContextLost()?Promise.reject("context lost"):(t=Object.assign({},t),C3.Supports.ImageBitmapOptions&&(this.SupportsNPOTTextures()||!t.isTiled)?(t.premultiplyAlpha=!1,createImageBitmap(e,{"premultiplyAlpha":"premultiply"}).then((e)=>C3.Asyncify(()=>this.CreateStaticTexture(e,t)))):C3.Supports.ImageBitmap?createImageBitmap(e).then((e)=>C3.Asyncify(()=>this.CreateStaticTexture(e,t))):e instanceof Blob?C3.BlobToImage(e,!0).then((e)=>this.CreateStaticTextureAsync(e,t)):"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement&&"function"==typeof e["decode"]?e["decode"]().then(()=>C3.Asyncify(()=>this.CreateStaticTexture(e,t))):C3.Asyncify(()=>this.CreateStaticTexture(e,t)))}CreateDynamicTexture(e,t,r){this.EndBatch();const a=C3.New(C3.Gfx.WebGLRendererTexture,this);return a._CreateDynamic(e,t,r),a}UpdateTexture(e,t,r){this.EndBatch(),t._Update(e,r)}DeleteTexture(e){e&&(e.SubtractReference(),0=t||0>=r)throw new Error("invalid size");this.EndBatch();const i=C3.New(C3.Gfx.WebGLRenderTarget,this);return i._Create(t,r,Object.assign({isDefaultSize:a},e)),this._currentRenderTarget=null,this._batchState.currentFramebuffer=null,i}SetRenderTarget(e){if(e===this._currentRenderTarget)return;let t,r,a,i;e?(e.IsDefaultSize()&&e._Resize(this._width,this._height),a=e.GetWidth(),i=e.GetHeight(),t=a,r=i):(a=this._width,i=this._height,t=this.GetScissoredViewportWidth(),r=this.GetScissoredViewportHeight());const n=this._lastBackbufferWidth!==a||this._lastBackbufferHeight!==i;n&&this._UpdateViewportRenderer(t,r,a,i);const _=this.PushBatch();_.InitSetRenderTarget(e,n,this._matP),this._currentRenderTarget=e,this._topOfBatch=0}GetRenderTarget(){return this._currentRenderTarget}GetRenderTargetSize(e){return e?[e.GetWidth(),e.GetHeight()]:[this._width,this._height]}CopyRenderTarget(e,t="stretch"){if(2>this._version||this._currentRenderTarget&&0this._version)){const t=this.PushBatch();t.InitInvalidateFramebuffer(e._GetFramebuffer()),this._topOfBatch=0}}DeleteRenderTarget(e){this.SetRenderTarget(null),this.EndBatch();const t=e.GetTexture();t===this._lastTexture0&&(this._gl.bindTexture(this._gl.TEXTURE_2D,null),this._lastTexture0=null),t===this._lastTexture1&&(this._gl.activeTexture(this._gl.TEXTURE1),this._gl.bindTexture(this._gl.TEXTURE_2D,null),this._gl.activeTexture(this._gl.TEXTURE0),this._lastTexture1=null),e._Delete()}async ReadBackRenderTargetToImageData(e,t){this.EndBatch();const r=this._currentRenderTarget;let a,i,n;e?(a=e.GetWidth(),i=e.GetHeight(),n=e._GetFramebuffer()):(a=this.GetWidth(),i=this.GetHeight(),n=null);const _=this._gl;_.bindFramebuffer(_.FRAMEBUFFER,n);const l=()=>{_.bindFramebuffer(_.FRAMEBUFFER,null),this._currentRenderTarget=null,this._batchState.currentFramebuffer=null,this.SetRenderTarget(r)};let o;if(!t&&2<=this.GetWebGLVersionNumber()){_.bindFramebuffer(_.READ_FRAMEBUFFER,n);const e=_.createBuffer(),t=4*(a*i),r=_["PIXEL_PACK_BUFFER"];_.bindBuffer(r,e),_.bufferData(r,t,_["STREAM_READ"]),_.readPixels(0,0,a,i,_.RGBA,_.UNSIGNED_BYTE,0),_.bindFramebuffer(_.READ_FRAMEBUFFER,null),_.bindBuffer(r,null),l();const s=_["fenceSync"](_["SYNC_GPU_COMMANDS_COMPLETE"],0);await this._WaitForObjectReady(()=>_["getSyncParameter"](s,_["SYNC_STATUS"])===_["SIGNALED"]),_["deleteSync"](s),o=new ImageData(a,i),_.bindBuffer(r,e),_["getBufferSubData"](r,0,new Uint8Array(o.data.buffer),0,t),_.bindBuffer(r,null),_.deleteBuffer(e)}else o=new ImageData(a,i),_.readPixels(0,0,a,i,_.RGBA,_.UNSIGNED_BYTE,new Uint8Array(o.data.buffer)),l();return o}StartQuery(e){if(this.SupportsGPUProfiling()){const t=this.PushBatch();t.InitStartQuery(e),this._topOfBatch=0}}EndQuery(e){if(this.SupportsGPUProfiling()){const t=this.PushBatch();t.InitEndQuery(e),this._topOfBatch=0}}_WaitForObjectReady(e){const r=new Promise((t)=>p.add({resolve:t,checkFunc:e}));return-1===f&&(f=self.requestAnimationFrame(t)),r}GetEstimatedBackBufferMemoryUsage(){return this._width*this._height*(this._attribs["alpha"]?4:3)}GetEstimatedRenderBufferMemoryUsage(){let e=0;for(const r of C3.Gfx.WebGLRenderTarget.allRenderTargets())r.GetTexture()||(e+=r.GetEstimatedMemoryUsage());return e}GetEstimatedTextureMemoryUsage(){let e=0;for(const r of C3.Gfx.WebGLRendererTexture.allTextures())e+=r.GetEstimatedMemoryUsage();return e}GetEstimatedTotalMemoryUsage(){return this.GetEstimatedBackBufferMemoryUsage()+this.GetEstimatedRenderBufferMemoryUsage()+this.GetEstimatedTextureMemoryUsage()}GetWebGLVersionString(){return this._versionString}GetWebGLVersionNumber(){return this._version}SupportsNPOTTextures(){return 2<=this.GetWebGLVersionNumber()}GetMaxTextureSize(){return this._maxTextureSize}GetMinPointSize(){return this._minPointSize}GetMaxPointSize(){return this._maxPointSize}SupportsHighP(){return 0!==this._highpPrecision}GetHighPPrecision(){return this._highpPrecision}GetUnmaskedVendor(){return this._unmaskedVendor}GetUnmaskedRenderer(){return this._unmaskedRenderer}GetExtensions(){return this._extensions}HasMajorPerformanceCaveat(){return this._hasMajorPerformanceCaveat}SupportsGPUProfiling(){return!!this._timerExt}_GetDisjointTimerQueryExtension(){return this._timerExt}_GetParallelShaderCompileExtension(){return this._parallelShaderCompileExt}_AddQueryResultBuffer(e){this._allQueryResultBuffers.add(e)}_RemoveQueryResultBuffer(e){this._allQueryResultBuffers.delete(e)}_GetTimeQueryStack(){return this._timeQueryStack}GetFrameNumber(){return this._frameNumber}IncrementFrameNumber(){this._frameNumber++}GetContext(){return this._gl}GetNamedBlend(e){const t=this._gl;let r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;switch(e){case"normal":r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;break;case"additive":r=t.ONE,a=t.ONE;break;case"copy":r=t.ONE,a=t.ZERO;break;case"destination-over":r=t.ONE_MINUS_DST_ALPHA,a=t.ONE;break;case"source-in":r=t.DST_ALPHA,a=t.ZERO;break;case"destination-in":r=t.ZERO,a=t.SRC_ALPHA;break;case"source-out":r=t.ONE_MINUS_DST_ALPHA,a=t.ZERO;break;case"destination-out":r=t.ZERO,a=t.ONE_MINUS_SRC_ALPHA;break;case"source-atop":r=t.DST_ALPHA,a=t.ONE_MINUS_SRC_ALPHA;break;case"destination-atop":r=t.ONE_MINUS_DST_ALPHA,a=t.SRC_ALPHA;break;default:throw new Error("invalid blend name");}return{srcBlend:r,destBlend:a}}GetBlendByIndex(e){const t=this._gl;let r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;switch(e){case 0:r=t.ONE,a=t.ONE_MINUS_SRC_ALPHA;break;case 1:r=t.ONE,a=t.ONE;break;case 3:r=t.ONE,a=t.ZERO;break;case 4:r=t.ONE_MINUS_DST_ALPHA,a=t.ONE;break;case 5:r=t.DST_ALPHA,a=t.ZERO;break;case 6:r=t.ZERO,a=t.SRC_ALPHA;break;case 7:r=t.ONE_MINUS_DST_ALPHA,a=t.ZERO;break;case 8:r=t.ZERO,a=t.ONE_MINUS_SRC_ALPHA;break;case 9:r=t.DST_ALPHA,a=t.ONE_MINUS_SRC_ALPHA;break;case 10:r=t.ONE_MINUS_DST_ALPHA,a=t.SRC_ALPHA;break;default:throw new Error("invalid blend index");}return{srcBlend:r,destBlend:a}}CreateWebGLText(){return C3.New(C3.Gfx.WebGLText,this)}}} + +// c3/assets/assetManager.js +"use strict";{const a=new Set(["local","remote"]);C3.AssetManager=class extends C3.DefendedBase{constructor(b,c){if(super(),!a.has(c.defaultLoadPolicy))throw new Error("invalid load policy");if(this._runtime=b,this._localUrlBlobs=new Map,this._localBlobUrlCache=new Map,this._isCordova=!!c.isCordova,this._isWKWebView=!!c.isWKWebView,this._supportedAudioFormats=c.supportedAudioFormats||{},this._audioFiles=new Map,this._preloadSounds=!1,this._mediaSubfolder="",this._fontsSubfolder="",this._iconsSubfolder="",this._defaultLoadPolicy=c.defaultLoadPolicy,this._allAssets=[],this._assetsByUrl=new Map,this._webFonts=[],this._loadPromises=[],this._hasFinishedInitialLoad=!1,this._totalAssetSizeToLoad=0,this._assetSizeLoaded=0,this._lastLoadProgress=0,this._hasHadErrorLoading=!1,this._loadingRateLimiter=C3.New(C3.RateLimiter,()=>this._FireLoadingProgressEvent(),50),this._promiseThrottle=new C3.PromiseThrottle(Math.max(C3.hardwareConcurrency,8)),c.localUrlBlobs)for(const[a,b]of Object.entries(c.localUrlBlobs))this._localUrlBlobs.set(a,b)}Release(){this._localUrlBlobs.clear();for(const a of this._localBlobUrlCache.values())URL.revokeObjectURL(a);this._localBlobUrlCache.clear();for(const a of this._allAssets)a.Release();C3.clearArray(this._allAssets),this._assetsByUrl.clear(),C3.clearArray(this._loadPromises),this._runtime=null}GetRuntime(){return this._runtime}_SetMediaSubfolder(a){this._mediaSubfolder=a}GetMediaSubfolder(){return this._mediaSubfolder}_SetFontsSubfolder(a){this._fontsSubfolder=a}GetFontsSubfolder(){return this._fontsSubfolder}_SetIconsSubfolder(a){this._iconsSubfolder=a}GetIconsSubfolder(){return this._iconsSubfolder}FetchJson(a){return this.FetchBlob(a,this._defaultLoadPolicy).then((a)=>C3.BlobToJson(a))}FetchBlob(a,b){b=b||this._defaultLoadPolicy;const c=this._localUrlBlobs.get(a);return c?Promise.resolve(c):this._isCordova&&C3.IsRelativeURL(a)?this.CordovaFetchLocalFileAsBlob(a):"local"===b?this._promiseThrottle.Add(()=>C3.FetchBlob(a)):C3.FetchBlob(a)}_HasLocalURLBlob(a){return this._localUrlBlobs.has(a)}_CordovaFetchLocalFileAs(a,b){return this._runtime.PostComponentMessageToDOMAsync("runtime","cordova-fetch-local-file",{"filename":a,"as":b})}CordovaFetchLocalFileAsText(a){return this._CordovaFetchLocalFileAs(a,"text")}CordovaFetchLocalFileAsBlob(a){return this._CordovaFetchLocalFileAs(a,"blob")}CordovaFetchLocalFileAsBlobURL(a){return this._CordovaFetchLocalFileAs(a,"blob-url")}CordovaFetchLocalFileAsArrayBuffer(a){return this._CordovaFetchLocalFileAs(a,"buffer")}GetLocalUrlAsBlobUrl(a){const b=this._localUrlBlobs.get(a);if(!b)return a;let c=this._localBlobUrlCache.get(b);return c||(c=URL.createObjectURL(b),this._localBlobUrlCache.set(b,c)),c}GetMediaFileUrl(a){return this._runtime.IsPreview()?this.GetLocalUrlAsBlobUrl(a.toLowerCase()):this._mediaSubfolder+a}GetProjectFileUrl(a){return this._runtime.IsPreview()?this.GetLocalUrlAsBlobUrl(a.toLowerCase()):a}LoadProjectFileUrl(a){return this._runtime.IsPreview()?Promise.resolve(this.GetLocalUrlAsBlobUrl(a.toLowerCase())):this._isCordova?this.CordovaFetchLocalFileAsBlobURL(a.toLowerCase()):Promise.resolve(a.toLowerCase())}LoadImage(b){if(b.loadPolicy&&!a.has(b.loadPolicy))throw new Error("invalid load policy");let c=this._assetsByUrl.get(b.url);return c?c:(c=C3.New(C3.ImageAsset,this,{url:b.url,size:b.size||0,loadPolicy:b.loadPolicy||this._defaultLoadPolicy}),this._allAssets.push(c),this._assetsByUrl.set(c.GetURL(),c),this._hasFinishedInitialLoad||(this._totalAssetSizeToLoad+=c.GetSize(),this._loadPromises.push(c.Load().then(()=>this._AddLoadedSize(c.GetSize())))),c)}async WaitForAllToLoad(){try{await Promise.all(this._loadPromises),this._lastLoadProgress=1}catch(a){console.error("Error loading: ",a),this._hasHadErrorLoading=!0,this._FireLoadingProgressEvent()}}SetInitialLoadFinished(){this._hasFinishedInitialLoad=!0}HasHadErrorLoading(){return this._hasHadErrorLoading}_AddLoadedSize(a){this._assetSizeLoaded+=a,this._loadingRateLimiter.Call()}_FireLoadingProgressEvent(){const a=C3.New(C3.Event,"loadingprogress");this._lastLoadProgress=C3.clamp(this._assetSizeLoaded/this._totalAssetSizeToLoad,0,1),a.progress=this._lastLoadProgress,this._runtime.Dispatcher().dispatchEvent(a)}GetLoadProgress(){return this._lastLoadProgress}_SetWebFonts(a){C3.shallowAssignArray(this._webFonts,a),this._webFonts.length&&this._loadPromises.push(this._LoadWebFonts())}_LoadWebFonts(){const a=[];for(const[b,c,d]of this._webFonts)this._totalAssetSizeToLoad+=d,a.push(this._LoadWebFont(b,c).then(()=>this._AddLoadedSize(d)));return Promise.all(a)}async _LoadWebFont(a,b){const c=await this.LoadProjectFileUrl(this._fontsSubfolder+b),d=new FontFace(a,`url(${c})`);this._runtime.IsInWorker()?self.fonts.add(d):document.fonts.add(d),await d.load()}IsAudioFormatSupported(a){return!!this._supportedAudioFormats[a]}_SetAudioFiles(a,b){this._preloadSounds=!!b;for(const[c,d,e]of a)this._audioFiles.set(c,{fileName:c,formats:d.map((a)=>({type:a[0],fileExtension:a[1],fullName:c+a[1],fileSize:a[2]})),isMusic:e})}GetPreferredAudioFile(a){const b=this._audioFiles.get(a.toLowerCase());if(!b)return null;let c=null;for(const d of b.formats)if(c||"audio/webm; codecs=opus"!==d.type||(c=d),this.IsAudioFormatSupported(d.type))return d;return c}GetProjectAudioFileUrl(a){const b=this.GetPreferredAudioFile(a);return b?{url:this.GetMediaFileUrl(b.fullName),type:b.type}:null}GetAudioToPreload(){if(this._preloadSounds){const a=[];for(const b of this._audioFiles.values()){if(b.isMusic)continue;const c=this.GetPreferredAudioFile(b.fileName);c&&a.push({originalUrl:b.fileName,url:this.GetMediaFileUrl(c.fullName),type:c.type,fileSize:c.fileSize})}return a}return[]}}} + +// c3/assets/asset.js +"use strict";C3.Asset=class extends C3.DefendedBase{constructor(a,b){super(),this._assetManager=a,this._runtime=a.GetRuntime(),this._url=b.url,this._size=b.size,this._loadPolicy=b.loadPolicy,this._blob=null,this._isLoaded=!1,this._loadPromise=null}Release(){this._loadPromise=null,this._assetManager=null,this._runtime=null,this._blob=null}GetURL(){return this._url}GetSize(){return this._size}Load(){return"local"===this._loadPolicy||this._blob?(this._isLoaded=!0,Promise.resolve()):this._loadPromise?this._loadPromise:(this._loadPromise=this._assetManager.FetchBlob(this._url,this._loadPolicy).then((a)=>{this._isLoaded=!0,this._loadPromise=null,this._blob=a}).catch((a)=>console.error("Error loading resource: ",a)),this._loadPromise)}IsLoaded(){return this._isLoaded}GetBlob(){return this._blob?Promise.resolve(this._blob):this._assetManager.FetchBlob(this._url,this._loadPolicy)}}; + +// c3/assets/imageAsset.js +"use strict";{const a=new C3.PromiseThrottle,b=new Set;C3.ImageAsset=class extends C3.Asset{constructor(a,c){super(a,c),this._texturePromise=null,this._webglTexture=null,this._refCount=0,this._imageWidth=-1,this._imageHeight=-1,b.add(this)}Release(){if(this.ReleaseTexture(),0!==this._refCount)throw new Error("released image asset which still has texture references");this._texturePromise=null,b.delete(this),super.Release()}static OnWebGLContextLost(){for(const a of b)a._texturePromise=null,a._webglTexture=null,a._refCount=0}LoadStaticTexture(b,c){return(this._refCount++,this._webglTexture)?Promise.resolve(this._webglTexture):this._texturePromise?this._texturePromise:(this._texturePromise=this.GetBlob().then((d)=>a.Add(()=>b.CreateStaticTextureAsync(d,c).then((a)=>(this._texturePromise=null,0===this._refCount)?(b.DeleteTexture(a),null):(this._webglTexture=a,this._imageWidth=a.GetWidth(),this._imageHeight=a.GetHeight(),this._webglTexture)))).catch((a)=>{throw console.error("Failed to load texture: ",a),a}),this._texturePromise)}ReleaseTexture(){if(0>=this._refCount)throw new Error("texture released too many times");if(this._refCount--,0===this._refCount&&this._webglTexture){const a=this._webglTexture.GetRenderer();a.DeleteTexture(this._webglTexture),this._webglTexture=null}}GetTexture(){return this._webglTexture}GetWidth(){return this._imageWidth}GetHeight(){return this._imageHeight}async LoadToDrawable(){const a=await this.GetBlob();return C3.Supports.ImageBitmapOptions?await createImageBitmap(a,{"premultiplyAlpha":"none"}):C3.Supports.ImageBitmap?await createImageBitmap(a):await C3.BlobToImage(a)}}} + +// c3/layouts/renderCell.js +"use strict";{function a(c,a){return c.GetWorldInfo()._GetLastCachedZIndex()-a.GetWorldInfo()._GetLastCachedZIndex()}C3.RenderCell=class extends C3.DefendedBase{constructor(a,b,c){super(),this._grid=a,this._x=b,this._y=c,this._instances=[],this._isSorted=!0,this._pendingRemoval=new Set,this._isAnyPendingRemoval=!1}Release(){C3.clearArray(this._instances),this._pendingRemoval.clear(),this._grid=null}Reset(){C3.clearArray(this._instances),this._isSorted=!0,this._pendingRemoval.clear(),this._isAnyPendingRemoval=!1}SetChanged(){this._isSorted=!1}IsEmpty(){return!this._instances.length||!(this._instances.length>this._pendingRemoval.size)&&(this._FlushPending(),!0)}Insert(a){return this._pendingRemoval.has(a)?(this._pendingRemoval.delete(a),void(0===this._pendingRemoval.size&&(this._isAnyPendingRemoval=!1))):void(this._instances.push(a),this._isSorted=1===this._instances.length)}Remove(a){this._pendingRemoval.add(a),this._isAnyPendingRemoval=!0,50<=this._pendingRemoval.size&&this._FlushPending()}_FlushPending(){return this._isAnyPendingRemoval?this._instances.length===this._pendingRemoval.size?void this.Reset():void(C3.arrayRemoveAllInSet(this._instances,this._pendingRemoval),this._pendingRemoval.clear(),this._isAnyPendingRemoval=!1):void 0}_EnsureSorted(){this._isSorted||(this._instances.sort(a),this._isSorted=!0)}Dump(a){this._FlushPending(),this._EnsureSorted(),this._instances.length&&a.push(this._instances)}}} + +// c3/layouts/renderGrid.js +"use strict";C3.RenderGrid=class extends C3.DefendedBase{constructor(a,b){super(),this._cellWidth=a,this._cellHeight=b,this._cells=C3.New(C3.PairMap)}Release(){this._cells.Release(),this._cells=null}GetCell(a,b,c){let d=this._cells.Get(a,b);return d?d:c?(d=C3.New(C3.RenderCell,this,a,b),this._cells.Set(a,b,d),d):null}XToCell(a){return Math.floor(a/this._cellWidth)}YToCell(a){return Math.floor(a/this._cellHeight)}Update(a,b,c){if(b)for(let d=b.getLeft(),e=b.getRight();d<=e;++d)for(let e=b.getTop(),f=b.getBottom();e<=f;++e){if(c&&c.containsPoint(d,e))continue;const b=this.GetCell(d,e,!1);b&&(b.Remove(a),b.IsEmpty()&&this._cells.Delete(d,e))}if(c)for(let d=c.getLeft(),e=c.getRight();d<=e;++d)for(let e=c.getTop(),f=c.getBottom();e<=f;++e)b&&b.containsPoint(d,e)||this.GetCell(d,e,!0).Insert(a)}QueryRange(a,b){let c=this.XToCell(a.getLeft());for(const d=this.YToCell(a.getTop()),e=this.XToCell(a.getRight()),f=this.YToCell(a.getBottom());c<=e;++c)for(let a=d;a<=f;++a){const d=this.GetCell(c,a,!1);d&&d.Dump(b)}}MarkRangeChanged(a){let b=a.getLeft();for(const c=a.getTop(),d=a.getRight(),e=a.getBottom();b<=d;++b)for(let a=c;a<=e;++a){const c=this.GetCell(b,a,!1);c&&c.SetChanged()}}}; + +// c3/layouts/layer.js +"use strict";{function a(c,a){return c.GetWorldInfo()._GetLastCachedZIndex()-a.GetWorldInfo()._GetLastCachedZIndex()}const b=new C3.Rect,c=new C3.Quad,d=[],e=new C3.Rect,f=new C3.Rect;C3.Layer=class extends C3.DefendedBase{constructor(a,b,c){super(),this._layout=a,this._runtime=a.GetRuntime(),this._name=c[0],this._index=b,this._sid=c[2],this._isVisible=!!c[3],this._backgroundColor=C3.New(C3.Color),this._backgroundColor.setFromJSON(c[4].map((a)=>a/255)),this._isTransparent=!!c[5],this._parallaxX=c[6],this._parallaxY=c[7],this._color=C3.New(C3.Color,1,1,1,c[8]),this._premultipliedColor=C3.New(C3.Color),this._isForceOwnTexture=c[9],this._useRenderCells=c[10],this._scaleRate=c[11],this._blendMode=c[12],this._srcBlend=0,this._destBlend=0,this._curRenderTarget=null,this._scale=1,this._zElevation=0,this._angle=0,this._isAngleEnabled=!0,this._viewport=C3.New(C3.Rect),this._startupInitialInstances=[],this._initialInstances=[],this._createdGlobalUids=[],this._instances=[],this._areZIndicesStale=!1,this._zIndicesStaleFrom=-1,this._effectList=C3.New(C3.EffectList,this,c[15]),this._renderGrid=null,this._lastRenderList=[],this._isRenderListStale=!0,this._lastRenderCells=C3.New(C3.Rect,0,0,-1,-1),this._curRenderCells=C3.New(C3.Rect,0,0,-1,-1),this._UpdatePremultipliedColor(),this._useRenderCells&&(this._renderGrid=C3.New(C3.RenderGrid,this._runtime.GetOriginalViewportWidth(),this._runtime.GetOriginalViewportHeight()));for(const d of c[14]){const a=this._runtime.GetObjectClassByIndex(d[1]);this._layout._AddInitialObjectClass(a),a.GetDefaultInstanceData()||(a.SetDefaultInstanceData(d),a._SetDefaultLayerIndex(this._index)),this._initialInstances.push(d)}C3.shallowAssignArray(this._startupInitialInstances,this._initialInstances)}static Create(a,b,c){return C3.New(C3.Layer,a,b,c)}Release(){this._layout=null,this._runtime=null}CreateInitialInstances(a){const b=this._layout.IsFirstVisit();let c=0;const d=this._initialInstances;for(let e=0,f=d.length;ec||(b&&this._useRenderCells&&a.GetWorldInfo()._RemoveFromRenderCells(),c===this._instances.length-1?this._instances.pop():(this._instances.splice(c,1),this._SetZIndicesStaleFrom(c)),this._isRenderListStale=!0)}_SortInstancesByLastCachedZIndex(){this._instances.sort(a)}_Start(){this.SetBlendMode(this.GetBlendMode(),!0)}_End(){for(const a of this._instances)a.GetObjectClass().IsGlobal()||this._runtime.DestroyInstance(a);this._runtime.FlushPendingInstances(),C3.clearArray(this._instances),this._SetZIndicesStaleFrom(0)}RecreateInitialObjects(a,b){const c=this._runtime.GetEventSheetManager(),d=this._runtime.GetAllObjectClasses(),e=a.IsFamily();for(const f of this._initialInstances){const g=f[0],h=g[0],i=g[1];if(!b.containsPoint(h,i))continue;const j=d[f[1]];if(j!==a)if(!e)continue;else if(!a.FamilyHasMember(j))continue;const k=this._runtime.CreateInstanceFromData(f,this,!1);if(c.BlockFlushingInstances(!0),k._TriggerOnCreated(),k.IsInContainer())for(const a of k.siblings())a._TriggerOnCreated();c.BlockFlushingInstances(!1)}}GetInstanceCount(){return this._instances.length}GetLayout(){return this._layout}GetName(){return this._name}GetIndex(){return this._index}GetSID(){return this._sid}GetRuntime(){return this._runtime}GetEffectList(){return this._effectList}UsesRenderCells(){return this._useRenderCells}GetRenderGrid(){return this._renderGrid}SetRenderListStale(){this._isRenderListStale=!0}IsVisible(){return this._isVisible}SetVisible(a){a=!!a;this._isVisible===a||(this._isVisible=a,this._runtime.UpdateRender())}GetViewport(){return this._viewport}GetOpacity(){return this._color.getA()}SetOpacity(a){a=C3.clamp(a,0,1);this._color.getA()===a||(this._color.setA(a),this._UpdatePremultipliedColor(),this._runtime.UpdateRender())}_UpdatePremultipliedColor(){this._premultipliedColor.copy(this._color),this._premultipliedColor.premultiply()}GetPremultipliedColor(){return this._premultipliedColor}HasDefaultColor(){return this._color.equalsRgba(1,1,1,1)}GetScaleRate(){return this._scaleRate}SetScaleRate(a){this._scaleRate===a||(this._scaleRate=a,this._runtime.UpdateRender())}GetParallaxX(){return this._parallaxX}GetParallaxY(){return this._parallaxY}SetParallax(a,b){if((this._parallaxX!==a||this._parallaxY!==b)&&(this._parallaxX=a,this._parallaxY=b,this._runtime.UpdateRender(),1!==this._parallaxX||1!==this._parallaxY))for(const a of this._instances)a.GetObjectClass()._SetAnyInstanceParallaxed(!0)}SetParallaxX(a){this.SetParallax(a,this.GetParallaxY())}SetParallaxY(a){this.SetParallax(this.GetParallaxX(),a)}SetZElevation(a){this._zElevation=+a}GetZElevation(){return this._zElevation}SetAngle(b){this._angle=C3.clampAngle(b)}GetAngle(){return this._isAngleEnabled?C3.clampAngle(this._layout.GetAngle()+this._angle):0}GetOwnAngle(){return this._angle}HasInstances(){return 0this._width-b&&(a=this._width-b),athis._height-b&&(a=this._height-b),aa||(this._width=a)}GetHeight(){return this._height}SetHeight(a){!isFinite(a)||1>a||(this._height=a)}GetEventSheet(){return this._eventSheet}GetLayers(){return this._layers}GetLayerCount(){return this._layers.length}GetLayer(a){return"number"==typeof a?this.GetLayerByIndex(a):this.GetLayerByName(a.toString())}GetLayerByIndex(a){return a=C3.clamp(Math.floor(a),0,this._layers.length-1),this._layers[a]}GetLayerByName(a){return this._layersByName.get(a.toLowerCase())||null}GetLayerBySID(a){return this._layersBySid.get(a)||null}HasOpaqueBottomLayer(){for(const a of this._layers)if(a.ShouldDraw())return a._IsOpaque();return!1}IsFirstVisit(){return this._isFirstVisit}_GetInitialObjectClasses(){return[...this._initialObjectClasses]}_AddInitialObjectClass(a){if(a.IsInContainer())for(const b of a.GetContainer().GetObjectTypes())this._initialObjectClasses.add(b);else this._initialObjectClasses.add(a)}_GetTextureLoadedObjectTypes(){return[...this._textureLoadedTypes]}_Load(a,b){if(a===this||!b)return Promise.resolve();a&&(C3.CopySet(this._textureLoadedTypes,a._textureLoadedTypes),a._textureLoadedTypes.clear());const c=[];for(const d of this._initialObjectClasses)this._textureLoadedTypes.has(d)||(c.push(d.LoadTextures(b)),this._textureLoadedTypes.add(d));return Promise.all(c)}async MaybeLoadTexturesFor(a){if(a.IsFamily())throw new Error("cannot load textures for family");const b=this._runtime.GetWebGLRenderer();!b||this._textureLoadedTypes.has(a)||(this._textureLoadedTypes.add(a),await a.LoadTextures(b),a.OnDynamicTextureLoadComplete(),this._runtime.UpdateRender())}MaybeUnloadTexturesFor(a){if(a.IsFamily()||0d)b._AddSibling(f[d]);else{let d;d=c?this._runtime.CreateInstanceFromData(e,c.GetLayer(),!0,c.GetX(),c.GetY(),!0):this._runtime.CreateInstanceFromData(e,null,!0,0,0,!0),this._runtime.FlushPendingInstances(),e._UpdateIIDs(),b._AddSibling(d),a.push(d)}}}}_CreateInitialNonWorldInstances(){for(const a of this._initialNonWorld){const b=this._runtime.GetObjectClassByIndex(a[1]);b.IsInContainer()||this._runtime.CreateInstanceFromData(a,null,!0)}}_CreateGlobalNonWorlds(){const a=[],b=this._initialNonWorld;let c=0;for(let d=0,e=b.length;d=this._isEndingLayout)throw new Error("already unset");this._isEndingLayout--}}IsEndingLayout(){return 0=b||b>=this._totalTime)&&(this._complete=!0)}IsComplete(){return this._complete}IsReleased(){return this._released}SetMarkedForRemoval(a){this._markedForRemoval=a}IsMarkedForRemoval(){return this._markedForRemoval}SetLastTick(a){this._lastTick=a}IsLastTick(){return this._lastTick}InitialStateSet(){return this._initialStateSet}GetPropertyTrack(a){for(const b of this._tracks)for(const c of b.GetPropertyTracks())if(c.GetPropertyName()===a)return c}Trigger(a){const b=this._timelineManager.GetPluginInstance();this.GetRuntime().Trigger(a,b)}SetStartedTriggers(a){this._startedTriggers=a}SetFinishedTriggers(a){this._finishedTriggers=a}GetTime(){return this._playheadTime}SetTime(a){if(this._playheadTime=a,0>this._playheadTime&&(this._playheadTime=0),this._playheadTime>=this._totalTime&&(this._playheadTime=this._totalTime),!this.IsPlaying()&&!this.IsScheduled()&&this._initialStateSet)this.SetComplete(!1);else if(!this.IsPlaying()&&!this.IsScheduled()&&!this._initialStateSet){this._initialStateSet=!0;for(const a of this._tracks)a.SetInitialState()}else this.IsPlaying()?this.Stop():this.IsScheduled()&&(this._timelineManager.DeScheduleTimeline(this),this.SetComplete(!1));let b=!1;for(const c of this._tracks){c.SetResumeState();const a=c.Interpolate(this._playheadTime);!b&&a&&(b=!0)}b&&this.GetRuntime().UpdateRender()}SetResultMode(a){this._resultMode=a;for(const b of this._tracks)b.SetResultMode(a)}SetEase(a){this._ease=a;for(const b of this._tracks)b.SetEase(resultMode)}SetPlaybackRate(a){return this._playbackRate=a}IsForwardPlayBack(){return 0=this._totalTime)return;}else if(0>=this._playheadTime)return;this.Play()}}Play(){this.IsReleased()||this.IsScheduled()||this.IsPlaying()||this._timelineManager.ScheduleTimeline(this)}Stop(a=!1){this.IsReleased()||(this.SetComplete(a),this._timelineManager.CompleteTimeline(this))}Reset(){if(this.IsReleased())return;if(!this.IsPlaying()&&this.IsScheduled())return this._timelineManager.DeScheduleTimeline(this);this.Stop(!0),this._playheadTime=0;let a=!1;for(const b of this._tracks){const c=b.Interpolate(this._playheadTime);!a&&c&&(a=!0)}a&&this.GetRuntime().UpdateRender()}SetInitialState(){if(this.SetPlaying(!0),this.SetScheduled(!1),this.OnStarted(),this.IsComplete()){this._initialStateSet=!0,this._playheadTime=this.IsForwardPlayBack()?0:this._totalTime;for(const a of this._tracks)a.SetInitialState()}else for(const a of this._tracks)a.SetResumeState()}Tick(a,b){if(this.IsLastTick())return this.Stop(!0),void this.OnCompleted();this._playheadTime+=a*b*this._playbackRate;let c;if(c=this.IsForwardPlayBack()?this._playheadTime>=this._totalTime:0>=this._playheadTime,c){this._playheadTime=this.IsForwardPlayBack()?this._totalTime:0;for(const a of this._tracks)a.SetEndState();return this.SetLastTick(!0),!0}else{let a=!1;for(const b of this._tracks){const c=b.Interpolate(this._playheadTime);!a&&c&&(a=!0)}return a}}}} + +// c3/timelines/track.js +"use strict";{const a=0;C3.Track=class extends C3.DefendedBase{constructor(b,c){super(),this._timeline=b,this._instanceUid=c[a][2],this._interpolationMode=c[1],this._resultMode=c[2],this._enabled=!!c[3],this._keyframes=[];for(const a of c[4]){const b=C3.Keyframe.Create(this,a);this._IsKeyFrameEnabled(b)&&this._keyframes.push(b)}this._propertyTracks=[];for(const a of c[5]){const b=C3.PropertyTrack.Create(this,a);b.GetEnable()&&this._propertyTracks.push(b)}this._instance=null,this._worldInfo=null,this._lastPositionSet=!1}static Create(a,b){return C3.New(C3.Track,a,b)}static CreateEmpty(b){const c=[];return c[a]=[],c[a][2]=-1,c[1]="default",c[2]="default",c[3]=1,c[4]=[],c[5]=[],this.Create(b,c)}Release(){this._timeline=null,this._instance=null,this._worldInfo=null;for(const a of this._keyframes)a.Release();C3.clearArray(this._keyframes),this._keyframes=null;for(const a of this._propertyTracks)a.Release();C3.clearArray(this._propertyTracks),this._propertyTracks=null}GetTimeline(){return this._timeline}GetRuntime(){return this._timeline.GetRuntime()}MaybeGetInstance(){this._instance||this.GetInstance()}IsInstanceValid(){return!!this._instance&&!this._instance.IsDestroyed()}SetInstanceUID(a){this._instanceUid=a}GetInstance(){return this._instance&&this.IsInstanceValid()?this._instance:(this._instance=this.GetRuntime().GetInstanceByUID(this._instanceUid),this._instance)}GetWorldInfo(){return this._worldInfo&&this.IsInstanceValid()?this._worldInfo:(this._worldInfo=this.GetInstance().GetWorldInfo(),this._worldInfo)}SetInterpolationMode(a){this._interpolationMode=a}GetInterpolationMode(){return this._interpolationMode}SetResultMode(a){this._resultMode=a;for(const b of this._propertyTracks)b.SetResultMode(a)}GetResultMode(){return this._resultMode}SetEase(){for(const a of this._keyframes)a.SetEase(resultMode);for(const a of this._propertyTracks)a.SetEase(resultMode)}SetEnable(a){this._enabled=!!a}GetEnable(){return this._enabled}AddKeyframe(){const a=C3.Keyframe.CreateEmpty(this);return this._keyframes.push(a),a}GetKeyframes(){return this._keyframes}SortKeyframes(){this._keyframes.sort((c,a)=>c.GetTime()-a.GetTime())}AddPropertyTrack(a){const b=C3.PropertyTrack.CreateEmpty(this,a);return this._propertyTracks.push(b),b}GetPropertyTracks(){return this._propertyTracks}SetInitialState(){if(this.MaybeGetInstance(),!!this.IsInstanceValid()){this._lastPositionSet=!1;for(const a of this._propertyTracks)a.SetInitialState();this.GetTimeline().IsForwardPlayBack()?this.Interpolate(0):this.Interpolate(this.GetTimeline().GetTotalTime())}}SetResumeState(){if(this.MaybeGetInstance(),!!this.IsInstanceValid())for(const a of this._propertyTracks)a.SetResumeState()}SetEndState(){if((this.MaybeGetInstance(),!!this.IsInstanceValid())&&!this._lastPositionSet){this._lastPositionSet=!0;const a=this._timeline.GetTime(),b=this._timeline.GetTotalTime();a>=b?this.Interpolate(b):0>=a&&this.Interpolate(0)}}DeleteKeyframes(a){for(const b of this._keyframes){if(!a(b))continue;const c=this._keyframes.indexOf(b);-1!==c&&(b.Release(),this._keyframes.splice(c,1))}this.SortKeyframes()}DeletePropertyKeyframes(a){for(const b of this._propertyTracks)b.DeletePropertyKeyframes(a)}Interpolate(a){if(this.MaybeGetInstance(),!this.IsInstanceValid())return!1;let b=!1,c=!1;for(const d of this._propertyTracks){const e=d.Interpolate(a);b||0==(e&C3.Timeline.WORLD_INSTANCE_BOX_CHANGE)||(b=!0),c||0==(e&C3.Timeline.LAYOUT_RENDER_CHANGE)||(c=!0)}return b&&this.GetWorldInfo().SetBboxChanged(),c}SaveState(){for(const a of this._propertyTracks)a.SaveState()}CompareInitialStateWithCurrent(){if(this.MaybeGetInstance(),!!this.IsInstanceValid())for(const a of this._propertyTracks)a.CompareInitialStateWithCurrent()}CompareSaveStateWithCurrent(){if(this.MaybeGetInstance(),!this.IsInstanceValid())return;let a=!1;for(const b of this._propertyTracks){const c=b.CompareSaveStateWithCurrent();!a&&c&&(a=!0)}if(a){const a=this.AddKeyframe();a.SetTime(this.GetTimeline().GetTime()),a.SetEase("noease"),a.SetEnable(!0)}}_IsKeyFrameEnabled(a){return!!this.GetEnable()&&!!a.GetEnable()}}} + +// c3/timelines/keyframe.js +"use strict";{const a=0;C3.Keyframe=class extends C3.DefendedBase{constructor(b,c){super(),this._track=b,this._time=c[a],this._ease=c[1],this._enable=!!c[2]}static Create(a,b){return C3.New(C3.Keyframe,a,b)}static CreateEmpty(b){const c=[];return c[a]=0,c[1]="linear",c[2]=1,this.Create(b,c)}Release(){this._track=null}GetRuntime(){return this._track.GetRuntime()}SetTime(a){this._time=a,this._track.SortKeyframes()}GetTime(){return this._time}SetEase(a){this._ease=a}GetEase(){return this._ease}SetEnable(a){this._enable=!!a}GetEnable(){return this._enable}}} + +// c3/timelines/propertyTrack.js +"use strict";{const a=0;C3.PropertyTrack=class extends C3.DefendedBase{constructor(b,c){super(),this._track=b,this._sourceAdapter=C3.PropertyTrack.CreateSourceAdapter(this,c[a]),this._property=c[1],this._type=c[2],this._min=c[3],this._max=c[4],this._interpolationMode=c[5],this._resultMode=c[6],this._enabled=!!c[7],this._propertyKeyframes=[];for(const a of c[8]){const b=C3.PropertyKeyframe.Create(this,a);this._IsPropertyKeyFrameEnabled(b)&&this._propertyKeyframes.push(b)}this._BuildPropertyKeyframeTimeMap()}static Create(a,b){return C3.New(C3.PropertyTrack,a,b)}static CreateEmpty(b,c){const d=[];return d[a]=[],d[a][0]=c,d[1]="",d[2]="",d[3]=NaN,d[4]=NaN,d[5]="default",d[6]="default",d[7]=1,d[8]=[],this.Create(b,d)}static CreateSourceAdapter(a,b){const c=b[0];return"behavior"===c?C3.New(C3.PropertyTrack.BehaviorSourceAdapter,a,b):"effect"===c?C3.New(C3.PropertyTrack.EffectSourceAdapter,a,b):"instance-variable"===c?C3.New(C3.PropertyTrack.InstanceVariableSourceAdapter,a,b):"plugin"===c?C3.New(C3.PropertyTrack.PluginSourceAdapter,a,b):"world-instance"===c?C3.New(C3.PropertyTrack.WorldInstanceSourceAdapter,a,b):"value"===c?C3.New(C3.PropertyTrack.ValueSourceAdapter,a,b):void 0}Release(){this._track=null,this._sourceAdapter.Release(),this._sourceAdapter=null;for(const a of this._propertyKeyframes)a.Release();C3.clearArray(this._propertyKeyframes),this._propertyKeyframes=null,this._propertyKeyframeTimeMap.clear(),this._propertyKeyframeTimeMap=null}GetTrack(){return this._track}GetTimeline(){return this._track.GetTimeline()}GetRuntime(){return this._track.GetRuntime()}GetSourceAdapter(){return this._sourceAdapter}GetSourceAdapterValue(){return this._sourceAdapter.GetValue()}SetPropertyName(a){this._property=a}GetPropertyName(){return this._property}SetPropertyType(a){this._type=a}GetPropertyType(){return this._type}GetPropertyKeyframeType(){return this._GetFirstKeyframe().GetType()}SetMin(a){this._min=a}GetMin(){return this._min}SetMax(a){this._max=a}GetMax(){return this._max}SetEnable(a){this._enabled=!!a}GetEnable(){return this._enabled}SetInterpolationMode(a){this._interpolationMode=a}GetInterpolationMode(){return this._interpolationMode}SetResultMode(a){this._resultMode=a}GetResultMode(){return this._resultMode}SetEase(a){for(const b of this._propertyKeyframes)b.SetEase(a)}AddPropertyKeyframe(){const a=C3.PropertyKeyframe.CreateEmpty(this);return this._propertyKeyframes.push(a),this._BuildPropertyKeyframeTimeMap(),a}GetPropertyKeyframes(){return this._propertyKeyframes}_BuildPropertyKeyframeTimeMap(){this._propertyKeyframeTimeMap||(this._propertyKeyframeTimeMap=new Map),this.SortPropertyKeyFrames();for(const a of this._track.GetKeyframes()){const b=a.GetTime(),c=this._GetKeyFrameAtTime(b);c&&this._propertyKeyframeTimeMap.set(b,c)}}SortPropertyKeyFrames(){this._propertyKeyframes.sort((c,a)=>c.GetTime()-a.GetTime())}_IsPropertyKeyFrameEnabled(a){if(!this.GetEnable())return!1;if(!a.GetEnable())return!1;const b=a.GetMasterKeyframe();if(!b)return!1;const c=this.GetTrack();return!!c._IsKeyFrameEnabled(b)}_GetKeyFrameAtTime(a){for(const b of this._propertyKeyframes)if(b.GetTime()===a)return b}_GetKeyFrameAtTimeFromCache(a){return this._propertyKeyframeTimeMap.get(a)}_GetFirstKeyframe(){return this._propertyKeyframes[0]}_GetLastKeyframe(){return this._propertyKeyframes[this._propertyKeyframes.length-1]}_GetFirstKeyFrameHigherThan(a){for(const b of this._propertyKeyframes)if(b.GetTime()>a)return b}_GetFirstKeyFrameHigherOrEqualThan(a){for(const b of this._propertyKeyframes)if(b.GetTime()>=a)return b}_GetFirstKeyFrameLowerOrEqualThan(a){for(let b=this._propertyKeyframes.length-1;0<=b;b--){const c=this._propertyKeyframes[b];if(c.GetTime()<=a)return c}}SetInitialState(){this._sourceAdapter.SetInitialState()}SetResumeState(){this._sourceAdapter.SetResumeState()}GetStartPropertyKeyframeForTime(a){let b=this._GetKeyFrameAtTimeFromCache(a);return b||(b=this._GetFirstKeyFrameLowerOrEqualThan(a)),b}GetEndPropertyKeyframeForTime(a){const b=this._GetKeyFrameAtTimeFromCache(a);return b?this._GetFirstKeyFrameHigherThan(a):this._GetFirstKeyFrameHigherOrEqualThan(a)}Interpolate(a){let b,c=this._GetKeyFrameAtTimeFromCache(a);return c?b=this._GetFirstKeyFrameHigherThan(a):(c=this._GetFirstKeyFrameLowerOrEqualThan(a),b=this._GetFirstKeyFrameHigherOrEqualThan(a)),this._sourceAdapter.Interpolate(a,c,b)}DeletePropertyKeyframes(a){for(const b of this._propertyKeyframes){if(!a(b))continue;const c=this._propertyKeyframes.indexOf(b);-1!==c&&(b.Release(),this._propertyKeyframes.splice(c,1))}this.SortPropertyKeyFrames()}SaveState(){this._sourceAdapter.SaveState()}CompareInitialStateWithCurrent(){const a=this._sourceAdapter.CompareInitialStateWithCurrent();if(a){const a=this._GetFirstKeyframe(),b=this._sourceAdapter.GetCurrentState();a.SetAbsoluteValue(b)}}CompareSaveStateWithCurrent(){const a=this._sourceAdapter.CompareSaveStateWithCurrent();return a&&this.AddPropertyKeyframeAtCurrentTime(),this._sourceAdapter.ClearSaveState(),a}AddPropertyKeyframeAtCurrentTime(){const a=this.GetTimeline().GetTime(),b=this.GetStartPropertyKeyframeForTime(a),c=this.AddPropertyKeyframe(),d=this.GetSourceAdapter();c.SetValue(d.GetValueAtTime()),c.SetAbsoluteValue(d.GetCurrentState()),c.SetType(b.GetType()),c.SetTime(a),c.SetEase(b.GetEase()),c.SetEnable(!0)}}} + +// c3/timelines/propertyKeyframe.js +"use strict";{const a=0;C3.PropertyKeyframe=class extends C3.DefendedBase{constructor(b,c){super(),this._propertyTrack=b,this._value=c[a][0],this._aValue=c[a][1],this._type=c[a][2],this._time=c[1],this._ease=c[2],this._enable=!!c[3],this._masterKeyframe=null;for(let a of this._propertyTrack.GetTrack().GetKeyframes())if(a.GetTime()===this._time){this._masterKeyframe=a;break}}static Create(a,b){return C3.New(C3.PropertyKeyframe,a,b)}static CreateEmpty(b){const c=[];return c[a]=[],c[a][0]=0,c[a][1]=0,c[a][2]="",c[1]=0,c[2]="linear",c[3]=1,this.Create(b,c)}Release(){this._propertyTrack=null,this._masterKeyframe=null}GetRuntime(){return this._propertyTrack.GetRuntime()}SetTime(a){this._time=a,this._propertyTrack._BuildPropertyKeyframeTimeMap()}GetTime(){return this._time}SetValue(a){"color"===this._type&&C3.IsFiniteNumber(a)?(this._value[0]=C3.GetRValue(a),this._value[1]=C3.GetGValue(a),this._value[2]=C3.GetBValue(a)):this._value=a}GetValue(){return this._value}SetAbsoluteValue(a){"color"===this._type&&C3.IsFiniteNumber(a)?(this._aValue[0]=C3.GetRValue(a),this._aValue[1]=C3.GetGValue(a),this._aValue[2]=C3.GetBValue(a)):this._aValue=a}GetAbsoluteValue(){return this._aValue}GetValueWithResultMode(){const a=this._propertyTrack.GetResultMode();if("relative"===a)return this.GetValue();return"absolute"===a?this.GetAbsoluteValue():void 0}SetEase(a){this._ease=a}GetEase(){return this._ease}SetEnable(a){this._enable=!!a}GetEnable(){return this._enable}SetType(a){this._type=a}GetType(){return this._type}GetMasterKeyframe(){return this._masterKeyframe}}} + +// c3/timelines/timelineManager.js +"use strict";C3.TimelineManager=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a,this._pluginInstance=null,this._timelines=[],this._timelinesByName=new Map,this._scheduledTimelines=[],this._playingTimelines=[],this._hasRuntimeListeners=!1,this._changingLayout=!1,this._isTickingTimelines=!1,this._preTickFunc=()=>this._OnPreTick(),this._beforeLayoutChange=()=>this._OnBeforeChangeLayout(),this._layoutChange=()=>this._OnAfterChangeLayout()}Release(){this._runtime.Dispatcher().removeEventListener("pretick",this._preTickFunc),this._preTickFunc=null,this._runtime.Dispatcher().removeEventListener("beforelayoutchange",this._beforeLayoutChange),this._beforeLayoutChange=null,this._runtime.Dispatcher().removeEventListener("layoutchange",this._layoutChange),this._layoutChange=null,this._runtime=null;for(const a of this._timelines)a.Stop(),a.Release();C3.clearArray(this._timelines),this._timelines=null,C3.clearArray(this._scheduledTimelines),this._scheduledTimelines=null,C3.clearArray(this._playingTimelines),this._playingTimelines=null,this._timelinesByName.clear(),this._timelinesByName=null}Create(a){this.Add(C3.Timeline.Create(a,this))}Add(a){this._timelines.push(a),this._timelinesByName.set(a.GetName(),a)}GetRuntime(){return this._runtime}SetPluginInstance(a){this._pluginInstance=a}GetPluginInstance(){return this._pluginInstance}GetTimelines(){return this._timelines}GetTimelineByIndex(a){const b=C3.clamp(Math.floor(a),0,this._timelines.length-1);return this._timelines[b]?this._timelines[b]:void 0}GetTimelineByName(a){return this._timelinesByName.has(a)?this._timelinesByName.get(a):void 0}ScheduleTimeline(a){a.SetPlaying(!1),a.SetScheduled(!0),a.SetMarkedForRemoval(!1),this._scheduledTimelines.push(a),this._MaybeAddRuntimeListeners()}DeScheduleTimeline(a){const b=this._scheduledTimelines.indexOf(a);a.SetPlaying(!1),a.SetScheduled(!1);-1===b||(this._scheduledTimelines.splice(b,1),this._MaybeRemoveRuntimeListeners())}CompleteTimeline(a){a.SetPlaying(!1),a.SetScheduled(!1),a.SetMarkedForRemoval(!0)}_OnPreTick(){if(this._changingLayout)return;const a=this._runtime.GetDt(),b=this._runtime.GetTimeScale();let c=!1;this._isTickingTimelines=!0;for(const d of this._playingTimelines){if(d.IsMarkedForRemoval())continue;const e=d.Tick(a,b);!c&&e&&(c=!0)}for(this._isTickingTimelines=!1,c&&this.GetRuntime().UpdateRender();this._scheduledTimelines.length;){const a=this._scheduledTimelines.pop();a.SetInitialState(),this._playingTimelines.push(a)}for(const a of this._playingTimelines){if(!a.IsMarkedForRemoval())continue;const b=this._playingTimelines.indexOf(a);-1===b||this._playingTimelines.splice(b,1)}this._MaybeRemoveRuntimeListeners()}_MaybeAddRuntimeListeners(){if(!this._hasRuntimeListeners){const a=this._runtime.Dispatcher();a.addEventListener("pretick",this._preTickFunc),a.addEventListener("beforelayoutchange",this._beforeLayoutChange),a.addEventListener("layoutchange",this._layoutChange),this._hasRuntimeListeners=!0}}_MaybeRemoveRuntimeListeners(){if(!this._playingTimelines.length&&!this._scheduledTimelines.length&&!this._isTickingTimelines){const a=this._runtime.Dispatcher();a.removeEventListener("pretick",this._preTickFunc),a.removeEventListener("beforelayoutchange",this._beforeLayoutChange),a.removeEventListener("layoutchange",this._layoutChange),this._hasRuntimeListeners=!1}}_OnBeforeChangeLayout(){this._changingLayout=!0}_OnAfterChangeLayout(){this._changingLayout=!1}}; + +// c3/timelines/propertySourceAdapters/propertySourceAdapter.js +"use strict";C3.PropertyTrack.PropertySourceAdapter=class{constructor(){}static GetValueAtTime(a){const b=a.GetTrack(),c=b.GetTimeline().GetTime(),d=a.GetStartPropertyKeyframeForTime(c),e=a.GetEndPropertyKeyframeForTime(c),f=C3.PropertyTrack.PropertySourceAdapter,g=f.GetInterpolateFunc(a);return g(c,d,e,a)}static GetValue(a,b,c){let d=a.GetResultMode();return"combo"===a.GetPropertyType()&&(d="absolute"),"relative"===d?b+c:"absolute"===d?c:void 0}static GetInterpolateFunc(a){const b=a.GetPropertyKeyframeType();return"numeric"===b?C3.PropertyTrack.NumericTypeAdapter.Interpolate:"angle"===b?C3.PropertyTrack.AngleTypeAdapter.Interpolate:"boolean"===b?C3.PropertyTrack.BooleanTypeAdapter.Interpolate:"color"===b?C3.PropertyTrack.ColorTypeAdapter.Interpolate:"text"===b?C3.PropertyTrack.TextTypeAdapter.Interpolate:void 0}static GetWillChangeFunc(a){const b=a.GetPropertyKeyframeType();return"numeric"===b?C3.PropertyTrack.NumericTypeAdapter.WillChange:"angle"===b?C3.PropertyTrack.AngleTypeAdapter.WillChange:"boolean"===b?C3.PropertyTrack.BooleanTypeAdapter.WillChange:"color"===b?C3.PropertyTrack.ColorTypeAdapter.WillChange:"text"===b?C3.PropertyTrack.TextTypeAdapter.WillChange:void 0}}; + +// c3/timelines/propertySourceAdapters/behaviorSourceAdapter.js +"use strict";{const a=C3.New(C3.Color),b=[0,0,0];C3.PropertyTrack.BehaviorSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._sid=b[1],this._index=b[2],this._initialValue=null,this._initialValueType="",this._behaviorSdkInstance=null}Release(){this._propertyTrack=null,this._track=null,this._behaviorSdkInstance=null,this._initialValue=null}SetInitialState(){var b=Math.floor;const c=this._GetSdkBehaviourInstance(),d=this._propertyTrack.GetPropertyKeyframeType(),e=this._propertyTrack.GetResultMode();let f;"relative"===e?f=c.GetPropertyValueByIndex(this._index):"absolute"===e&&(f=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue()),"color"===d?f instanceof C3.Color?(this._initialValue=[],this._initialValue[0]=b(255*f.getR()),this._initialValue[1]=b(255*f.getG()),this._initialValue[2]=b(255*f.getB()),this._initialValueType="color-object"):Array.isArray(f)?(this._initialValue[0]=b(255*f[0]),this._initialValue[1]=b(255*f[1]),this._initialValue[2]=b(255*f[2]),this._initialValueType="color-object"):(a.parseCommaSeparatedRgb(f),this._initialValue=[],this._initialValue[0]=b(255*a.getR()),this._initialValue[1]=b(255*a.getG()),this._initialValue[2]=b(255*a.getB()),this._initialValueType="color-string"):(this._initialValue=f,this._initialValueType="other")}SetResumeState(){}Interpolate(c,d,e){const f=this._GetSdkBehaviourInstance(),g=this._propertyTrack.GetPropertyKeyframeType(),h=C3.PropertyTrack.PropertySourceAdapter,i=h.GetValue,j=h.GetInterpolateFunc(this._propertyTrack),k=h.GetWillChangeFunc(this._propertyTrack);let l;switch(g){case"numeric":if(l=j(c,d,e,this._propertyTrack),l=i(this._propertyTrack,this._initialValue,l),!k(this._index,f,l))return;f.SetPropertyValueByIndex(this._index,l);break;case"boolean":if(l=j(c,d,e,this._propertyTrack),!k(this._index,f,l))return;f.SetPropertyValueByIndex(this._index,l);break;case"color":if(l=j(c,d,e,this._propertyTrack),b[0]=i(this._propertyTrack,this._initialValue[0],l[0]),b[1]=i(this._propertyTrack,this._initialValue[1],l[1]),b[2]=i(this._propertyTrack,this._initialValue[2],l[2]),!k(this._index,f,b))return;switch(this._initialValueType){case"color-object":f.SetPropertyValueByIndex(this._index,b);break;case"color-string":a.setRgb(b[0],b[1],b[2]);const c=`rgb(${a.toCommaSeparatedRgb()})`;f.SetPropertyValueByIndex(this._index,c);}break;case"text":if(l=j(c,d,e,this._propertyTrack),!k(this._index,f,l))return;f.SetPropertyValueByIndex(this._index,l);}}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}_GetSdkBehaviourInstance(){if(this._behaviorSdkInstance)return this._behaviorSdkInstance;const a=this._track.GetInstance(),b=a.GetBehaviorIndexBySID(this._sid),c=a.GetBehaviorInstances()[b];return this._behaviorSdkInstance=c.GetSdkInstance(),this._behaviorSdkInstance}}} + +// c3/timelines/propertySourceAdapters/effectSourceAdapter.js +"use strict";C3.PropertyTrack.EffectSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._name=b[1],this._index=b[2],this._initialValue=null,this._effectParams=null}Release(){this._propertyTrack=null,this._track=null,this._initialValue=null,this._effectParams=null}SetInitialState(){const a=this._GetEffectParameters(),b=this._propertyTrack.GetPropertyKeyframeType(),c=this._propertyTrack.GetResultMode();let d;"relative"===c?d=a[this._index]:"absolute"===c&&(d=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue()),"color"===b?d instanceof C3.Color?this._initialValue=d.clone():Array.isArray(d)&&(this._initialValue=new C3.Color,this._initialValue.setR(d[0]),this._initialValue.setG(d[1]),this._initialValue.setB(d[2])):this._initialValue=d}SetResumeState(){}Interpolate(a,b,c){const d=this._propertyTrack.GetPropertyKeyframeType(),e=this._GetEffectParameters();if(!e)return;const f=C3.PropertyTrack.PropertySourceAdapter,g=f.GetValue,h=f.GetInterpolateFunc(this._propertyTrack);let i;return"numeric"===d?(i=h(a,b,c,this._propertyTrack),i=g(this._propertyTrack,this._initialValue,i),e[this._index]=i,C3.Timeline.LAYOUT_RENDER_CHANGE):"boolean"===d?(i=h(a,b,c,this._propertyTrack),e[this._index]=i,C3.Timeline.LAYOUT_RENDER_CHANGE):"color"===d?(i=h(a,b,c,this._propertyTrack),e[this._index].setRgb(g(this._propertyTrack,this._initialValue.getR(),i[0]),g(this._propertyTrack,this._initialValue.getG(),i[1]),g(this._propertyTrack,this._initialValue.getB(),i[2])),C3.Timeline.LAYOUT_RENDER_CHANGE):"text"===d?(i=h(a,b,c,this._propertyTrack),e[this._index]=i,C3.Timeline.LAYOUT_RENDER_CHANGE):void 0}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}_GetEffectParameters(){if(this._effectParams)return this._effectParams;const a=this._track.GetWorldInfo(),b=a.GetInstanceEffectList(),c=b.GetEffectList(),d=c.GetEffectTypeByName(this._name),e=d.GetIndex();return this._effectParams=b.IsEffectIndexActive(e)?b.GetEffectParametersForIndex(e):null,this._effectParams}}; + +// c3/timelines/propertySourceAdapters/instanceVariableSourceAdapter.js +"use strict";C3.PropertyTrack.InstanceVariableSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=a.GetTrack(),this._index=b[1],this._initialValue}Release(){this._propertyTrack=null,this._track=null}SetInitialState(){const a=this._propertyTrack.GetResultMode();if("relative"===a){const a=this._track.GetInstance();this._initialValue=a.GetInstanceVariableValue(this._index)}else"absolute"===a&&(this._initialValue=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue())}SetResumeState(){}Interpolate(a,b,c){const d=this._track.GetInstance(),e=this._propertyTrack.GetPropertyKeyframeType(),f=C3.PropertyTrack.PropertySourceAdapter,g=f.GetValue,h=f.GetInterpolateFunc(this._propertyTrack);let i;"numeric"===e?(i=h(a,b,c,this._propertyTrack),i=g(this._propertyTrack,this._initialValue,i),d.SetInstanceVariableValue(this._index,i)):"boolean"===e?(i=h(a,b,c,this._propertyTrack),d.SetInstanceVariableValue(this._index,i)):"text"===e?(i=h(a,b,c,this._propertyTrack),d.SetInstanceVariableValue(this._index,i)):void 0}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}}; + +// c3/timelines/propertySourceAdapters/pluginSourceAdapter.js +"use strict";{const a=[0,0,0];C3.PropertyTrack.PluginSourceAdapter=class{constructor(a,b){this._propertyTrack=a,this._track=this._propertyTrack.GetTrack(),this._index=b[1],this._initialValue,this._pluginSdkInstance=null}Release(){this._propertyTrack=null,this._track=null,this._initialValue=null,this._pluginSdkInstance=null}SetInitialState(){const a=this._GetSdkPluginInstance(),b=this._propertyTrack.GetPropertyKeyframeType(),c=this._propertyTrack.GetResultMode();let d;"relative"===c?d=a.GetPropertyValueByIndex(this._index):"absolute"===c&&(d=this._propertyTrack._GetFirstKeyframe().GetAbsoluteValue()),"color"===b?(this._initialValue=[],this._initialValue[0]=d[0],this._initialValue[1]=d[1],this._initialValue[2]=d[2]):this._initialValue=d}SetResumeState(){}Interpolate(b,c,d){const e=this._GetSdkPluginInstance(),f=this._propertyTrack.GetPropertyKeyframeType(),g=C3.PropertyTrack.PropertySourceAdapter,h=g.GetValue,i=g.GetInterpolateFunc(this._propertyTrack),j=g.GetWillChangeFunc(this._propertyTrack);let k;return"numeric"===f?(k=i(b,c,d,this._propertyTrack),k=h(this._propertyTrack,this._initialValue,k),!j(this._index,e,k))?void 0:(e.SetPropertyValueByIndex(this._index,k),C3.Timeline.LAYOUT_RENDER_CHANGE):"boolean"===f?(k=i(b,c,d,this._propertyTrack),!j(this._index,e,k))?void 0:(e.SetPropertyValueByIndex(this._index,k),C3.Timeline.LAYOUT_RENDER_CHANGE):"color"===f?(k=i(b,c,d,this._propertyTrack),a[0]=h(this._propertyTrack,this._initialValue[0],k[0]),a[1]=h(this._propertyTrack,this._initialValue[1],k[1]),a[2]=h(this._propertyTrack,this._initialValue[2],k[2]),!j(this._index,e,a))?void 0:(e.SetPropertyValueByIndex(this._index,a),C3.Timeline.LAYOUT_RENDER_CHANGE):"text"===f?(k=i(b,c,d,this._propertyTrack),!j(this._index,e,k))?void 0:(e.SetPropertyValueByIndex(this._index,k),C3.Timeline.LAYOUT_RENDER_CHANGE):void 0}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}_GetSdkPluginInstance(){if(this._pluginSdkInstance)return this._pluginSdkInstance;else{const a=this._track.GetInstance();return this._pluginSdkInstance=a.GetSdkInstance(),this._pluginSdkInstance}}}} + +// c3/timelines/propertySourceAdapters/worldInstanceSourceAdapter.js +"use strict";const NAMESPACE=C3.PropertyTrack.WorldInstanceSourceAdapter=class{constructor(a){this._propertyTrack=a,this._track=a.GetTrack(),this._propertyAdapter=null}Release(){this._propertyAdapter&&(this._propertyAdapter.Release(),this._propertyAdapter=null),this._propertyTrack=null,this._track=null}GetPropertyAdapter(){if(this._propertyAdapter)return this._propertyAdapter;const a=this._propertyTrack.GetPropertyName();return this._propertyAdapter="offsetColor"===a?C3.New(NAMESPACE.ColorPropertyAdapter,this._propertyTrack):C3.New(NAMESPACE.NumericPropertyAdapter,this._propertyTrack),this._propertyAdapter}SetInitialState(){this.GetPropertyAdapter().SetInitialState()}SetResumeState(){this.GetPropertyAdapter().SetResumeState()}Interpolate(a,b,c){const d=C3.PropertyTrack.PropertySourceAdapter,e=d.GetInterpolateFunc(this._propertyTrack),f=e(a,b,c,this._propertyTrack);return this.GetPropertyAdapter().ChangeProperty(f)}SaveState(){this.GetPropertyAdapter().SetSaveState()}ClearSaveState(){this.GetPropertyAdapter().ClearSaveState()}GetCurrentState(){return this.GetPropertyAdapter().GetCurrentState()}CompareInitialStateWithCurrent(){return this.GetPropertyAdapter().CompareInitialStateWithCurrent()}CompareSaveStateWithCurrent(){return this.GetPropertyAdapter().CompareSaveStateWithCurrent()}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}}; + +// c3/timelines/propertySourceAdapters/propertyAdapter.js +"use strict";C3.PropertyTrack.PropertyAdapter=class{constructor(a){this._propertyTrack=a,this._worldInfo=a.GetTrack().GetWorldInfo(),this._property=a.GetPropertyName(),this._firstAbsoluteUpdate=!1,this._saveState=null}Release(){this._worldInfo=null,this._propertyTrack=null,this._saveState=null}SetFirstAbsoluteUpdate(a){this._firstAbsoluteUpdate=!!a}GetFirstAbsoluteUpdate(){return this._firstAbsoluteUpdate}SetInitialState(){}SetResumeState(){}SetSaveState(){}ClearSaveState(){this._saveState=null}GetCurrentState(){}CompareInitialStateWithCurrent(){}CompareSaveStateWithCurrent(){}ChangeProperty(){}_FirstKeyframeGetter(){const a=this._PickTimelinePlaybackMode(()=>this._propertyTrack._GetFirstKeyframe(),()=>this._propertyTrack._GetLastKeyframe());return a.GetAbsoluteValue()}_CurrentKeyframeGetter(){const a=this._propertyTrack.GetTimeline(),b=a.GetTime(),c=this._PickTimelinePlaybackMode(()=>this._propertyTrack._GetFirstKeyFrameLowerOrEqualThan(b),()=>this._propertyTrack._GetFirstKeyFrameHigherOrEqualThan(b));return c.GetAbsoluteValue()}_PickTimelinePlaybackMode(a,b){const c=this._propertyTrack.GetTimeline();return c.IsForwardPlayBack()?a():b()}_PickResultMode(a,b){const c=this._propertyTrack.GetResultMode();return"relative"===c?a():b()}_PickFirstAbsoluteUpdate(a,b){return this.GetFirstAbsoluteUpdate()?(this.SetFirstAbsoluteUpdate(!1),a()):b()}_GetAbsoluteInitialValue(){}}; + +// c3/timelines/propertySourceAdapters/worldInstanceSourceAdapterProperties/numericPropertyAdapter.js +"use strict";{const a=new Map,b=(b,c,d)=>a.set(b,{setter:c,getter:d});b("offsetX",(a,b)=>a.OffsetX(b),(a)=>a.GetX()),b("offsetY",(a,b)=>a.OffsetY(b),(a)=>a.GetY()),b("offsetWidth",(a,b)=>a.OffsetWidth(b),(a)=>a.GetWidth()),b("offsetHeight",(a,b)=>a.OffsetHeight(b),(a)=>a.GetHeight()),b("offsetAngle",(a,b)=>a.OffsetAngle(b),(a)=>a.GetAngle()),b("offsetOpacity",(a,b)=>a.OffsetOpacity(b),(a)=>a.GetOpacity()),b("offsetOriginX",(a,b)=>a.OffsetOriginX(b),(a)=>a.GetOriginX()),b("offsetOriginY",(a,b)=>a.OffsetOriginY(b),(a)=>a.GetOriginY());class c extends C3.PropertyTrack.PropertyAdapter{constructor(b){super(b);const c=b.GetPropertyName();this._getter=a.get(c).getter,this._setter=a.get(c).setter,this._lastValue=0,this._deltaIncreaseDirection=!0}Release(){super.Release(),this._getter=null,this._setter=null}SetInitialState(){this._lastValue=this._PickResultMode(()=>this._PickTimelinePlaybackMode(()=>0,()=>C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)),()=>(this.SetFirstAbsoluteUpdate(!0),this._GetAbsoluteInitialValue(this._FirstKeyframeGetter())))}SetResumeState(){this._FirstKeyframeGetter()===this._CurrentKeyframeGetter()||this._PickResultMode(()=>{},()=>{this.SetFirstAbsoluteUpdate(!0),this._lastValue=this._GetAbsoluteInitialValue(this._CurrentKeyframeGetter())})}SetSaveState(){this._saveState=this.GetCurrentState()}GetCurrentState(){return this._getter(this._worldInfo)}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return a!==this.GetCurrentState()}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&this._saveState!==this.GetCurrentState()}ChangeProperty(a){const b=this._lastValue;return this._PickResultMode(()=>this._setter(this._worldInfo,a-b),()=>{this._PickFirstAbsoluteUpdate(()=>this._setter(this._worldInfo,b),()=>this._setter(this._worldInfo,a-b))}),this._lastValue=a,C3.Timeline.WORLD_INSTANCE_BOX_CHANGE}_GetAbsoluteInitialValue(a){return a-this.GetCurrentState()}}C3.PropertyTrack.WorldInstanceSourceAdapter.NumericPropertyAdapter=c} + +// c3/timelines/propertySourceAdapters/worldInstanceSourceAdapterProperties/colorPropertyAdapter.js +"use strict";{const a=0;class b extends C3.PropertyTrack.PropertyAdapter{constructor(a){super(a),this._lastValueR=0,this._lastValueG=0,this._lastValueB=0}Release(){super.Release()}SetInitialState(){const a=this._PickResultMode(()=>{const a=this._PickTimelinePlaybackMode(()=>[0,0,0],()=>C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack));return this._GetColorFromArray(a)},()=>(this.SetFirstAbsoluteUpdate(!0),this._GetAbsoluteInitialValue(this._FirstKeyframeGetter())));this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()}SetResumeState(){this._CompareColors(this._FirstKeyframeGetter(),this._CurrentKeyframeGetter())||this._PickResultMode(()=>{},()=>{this.SetFirstAbsoluteUpdate(!0);const a=this._GetAbsoluteInitialValue(this._CurrentKeyframeGetter());this._lastValueR=a.getR(),this._lastValueG=a.getG(),this._lastValueB=a.getB()})}SetSaveState(){this._saveState=this._Getter()}GetCurrentState(){return this._Getter().toArray().slice(0,3)}CompareInitialStateWithCurrent(){const a=this._FirstKeyframeGetter();return!this._CompareColors(a,this._Getter())}CompareSaveStateWithCurrent(){return!C3.IsNullOrUndefined(this._saveState)&&!this._CompareColors(this._saveState,this._Getter())}ChangeProperty(c){const d=c[a],e=c[1],f=c[2],b=this._lastValueR,g=this._lastValueG,h=this._lastValueB;return this._PickResultMode(()=>this._Setter(b-d,g-e,h-f),()=>{this._PickFirstAbsoluteUpdate(()=>this._Setter(-b,-g,-h),()=>this._Setter(-b+d,-g+e,-h+f))}),this._lastValueR=d,this._lastValueG=e,this._lastValueB=f,C3.Timeline.LAYOUT_RENDER_CHANGE}_Getter(){return this._worldInfo.GetUnpremultipliedColor().clone()}_Setter(a,c,d){this._worldInfo.OffsetUnpremultipliedColorRGB(a,c,d)}_CompareColors(a,b){return a.equalsIgnoringAlpha(b)}_FirstKeyframeGetter(){const a=super._FirstKeyframeGetter();return this._GetColorFromArray(a)}_CurrentKeyframeGetter(){const a=super._CurrentKeyframeGetter();return this._GetColorFromArray(a)}_GetAbsoluteInitialValue(a){const b=this._GetColorFromArray(a);return C3.Color.Diff(b,this._Getter())}_GetColorFromArray(b){return C3.IsInstanceOf(b,C3.Color)?b:new C3.Color(b[a],b[1],b[2])}}C3.PropertyTrack.WorldInstanceSourceAdapter.ColorPropertyAdapter=b} + +// c3/timelines/propertySourceAdapters/valueSourceAdapter.js +"use strict";C3.PropertyTrack.ValueSourceAdapter=class{constructor(a){this._propertyTrack=a,this._track=a.GetTrack(),this._value=0}Release(){this._propertyTrack=null,this._track=null}SetInitialState(){this._value=this._propertyTrack._GetFirstKeyframe().GetValueWithResultMode()}SetResumeState(){}GetValue(){return this._value}Interpolate(a,b,c){const d=C3.PropertyTrack.NumericTypeAdapter.Interpolate;this._value=d(a,b,c,this._propertyTrack)}SaveState(){}ClearSaveState(){}GetCurrentState(){return this._value}CompareInitialStateWithCurrent(){return!1}CompareSaveStateWithCurrent(){return!1}GetValueAtTime(){return C3.PropertyTrack.PropertySourceAdapter.GetValueAtTime(this._propertyTrack)}}; + +// c3/timelines/propertyTypeAdapters/numericTypeAdapter.js +"use strict";C3.PropertyTrack.NumericTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){var f=Math.floor;if(!c)return d._GetLastKeyframe().GetValueWithResultMode();let g=d.GetInterpolationMode();if("default"===g&&(g="continuous"),"combo"===d.GetPropertyType()&&(g="discrete"),"discrete"===g)return b.GetValueWithResultMode();if("continuous"===g||"step"===g){if("step"===g){const b=1/d.GetTimeline().GetStep();a=f(a*b)/b}const h=b.GetTime(),i=c.GetTime(),j=b.GetValueWithResultMode(),k=c.GetValueWithResultMode();if(j===k)return j;const l=C3.normalize(a,h,i),m=b.GetEase(),e=Ease.GetEase(m)((i-h)*l,j,k-j,i-h);return"integer"===d.GetPropertyType()?f(e):e}}}; + +// c3/timelines/propertyTypeAdapters/angleTypeAdapter.js +"use strict";C3.PropertyTrack.AngleTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){if(!c)return d._GetLastKeyframe().GetValueWithResultMode();let e=d.GetInterpolationMode();if("default"===e&&(e="continuous"),"combo"===d.GetPropertyType()&&(e="discrete"),"discrete"===e)return b.GetValueWithResultMode();if("continuous"===e||"step"===e){if("step"===e){const b=1/d.GetTimeline().GetStep();a=Math.floor(a*b)/b}const f=b.GetTime(),g=c.GetTime(),h=b.GetValueWithResultMode(),i=c.GetValueWithResultMode();if(h===i)return h;let j=C3.normalize(a,f,g);const k=Ease.GetEase(b.GetEase());return C3.angleLerp(h,i,k(j,0,1,1))}}}; + +// c3/timelines/propertyTypeAdapters/booleanTypeAdapter.js +"use strict";C3.PropertyTrack.BooleanTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){return c?b.GetValueWithResultMode()?1:0:d._GetLastKeyframe().GetValueWithResultMode()?1:0}}; + +// c3/timelines/propertyTypeAdapters/colorTypeAdapter.js +"use strict";{const a=[0,0,0],b=[0,0,0];C3.PropertyTrack.ColorTypeAdapter=class{constructor(){}static WillChange(c,d,e){var f=Math.floor;const g=d.GetPropertyValueByIndex(c);return Array.isArray(e)?(a[0]=e[0],a[1]=e[1],a[2]=e[2]):(TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(e),a[0]=f(255*TEMP_COLOR_ARRAY_3.getR()),a[1]=f(255*TEMP_COLOR_ARRAY_3.getG()),a[2]=f(255*TEMP_COLOR_ARRAY_3.getB())),Array.isArray(g)?(b[0]=g[0],b[1]=g[1],b[2]=g[2]):(TEMP_COLOR_ARRAY_3.parseCommaSeparatedRgb(g),b[0]=f(255*TEMP_COLOR_ARRAY_3.getR()),b[1]=f(255*TEMP_COLOR_ARRAY_3.getG()),b[2]=f(255*TEMP_COLOR_ARRAY_3.getB())),a[0]!==b[0]||a[1]!==b[1]||a[2]!==b[2]}static Interpolate(b,c,f,d){if(!f){const b=d._GetLastKeyframe().GetValueWithResultMode();return a[0]=b[0],a[1]=b[1],a[2]=b[2],a}let g=d.GetInterpolationMode();if("default"===g&&(g="continuous"),"discrete"===g){const b=c.GetValueWithResultMode();return a[0]=b[0],a[1]=b[1],a[2]=b[2],a}if("continuous"===g||"step"===g){if("step"===g){const a=1/d.GetTimeline().GetStep();b=Math.floor(b*a)/a}const h=c.GetTime(),i=f.GetTime(),j=c.GetValueWithResultMode(),k=f.GetValueWithResultMode(),l=C3.normalize(b,h,i),m=c.GetEase(),e=j[0],n=j[1],o=j[2],p=k[0],q=k[1],r=k[2],s=Ease.GetEase(m),t=i-h,u=t*l;return a[0]=e===p?e:s(u,e,p-e,t),a[1]=n===q?n:s(u,n,q-n,t),a[2]=o===r?o:s(u,o,r-o,t),a}}}} + +// c3/timelines/propertyTypeAdapters/textTypeAdapter.js +"use strict";C3.PropertyTrack.TextTypeAdapter=class{constructor(){}static WillChange(a,b,c){const d=b.GetPropertyValueByIndex(a);return d!==c}static Interpolate(a,b,c,d){return c?b.GetValueWithResultMode():d._GetLastKeyframe().GetValueWithResultMode()}}; + +// c3/timelines/tweens/tween.js +"use strict";{C3.Tween=class a extends C3.Timeline{constructor(a,b){super(a,b),this._tags=[""],this._stringTags="",this._tagsChanged=!1,this._destroyInstanceOnComplete=!1,this._initialValueMode="start-value",this.SetStep(0),this.SetInterpolationMode("default"),this.SetStartedTriggers(null),this.SetFinishedTriggers(null)}Release(){C3.clearArray(this._tags),this._tags=null,super.Release()}SetStartValue(a,b){for(const c of this._tracks)for(const d of c._propertyTracks){if(d.GetPropertyName()!==b)continue;const c=d._GetFirstKeyframe();c.SetValue(a),c.SetAbsoluteValue(a)}}SetEndValue(a,b){for(const c of this._tracks)for(const d of c._propertyTracks){if(d.GetPropertyName()!==b)continue;const c=d._GetLastKeyframe();c.SetValue(a),c.SetAbsoluteValue(a),(this.IsPlaying()||!this.IsComplete())&&d.AddPropertyKeyframeAtCurrentTime()}}HasTags(b){if(!this._tags)return!1;if(!this._tags.length)return!1;const c=a._GetTagArray(b);return!!c&&!!c.length&&c.every(a._HasTag,this)}SetTags(b){this._tags=a._GetTagArray(b),this._tagsChanged=!0}GetTags(){return this._tags}GetStringTags(){return this._tagsChanged&&(this._stringTags=this._tags.join(" ")),this._tagsChanged=!1,this._stringTags}SetInitialValueMode(a){this._initialValueMode=a}GetInitialValueMode(){return this._initialValueMode}SetDestroyInstanceOnComplete(a){this._destroyInstanceOnComplete=a}GetDestroyInstanceOnComplete(){return this._destroyInstanceOnComplete}OnStarted(){if(super.OnStarted(),!this.IsComplete())for(const a of this._tracks)a.CompareSaveStateWithCurrent()}SetTime(a){this._DeleteIntermediateKeyframes(),super.SetTime(a)}SetInitialState(){if(!this.InitialStateSet()&&this.GetInitialValueMode()==="current-state")for(const a of this._tracks)a.CompareInitialStateWithCurrent();super.SetInitialState()}Stop(a=!1){if(super.Stop(a),!this.IsComplete())for(const a of this._tracks)a.SaveState()}Reset(){this._DeleteIntermediateKeyframes(),super.Reset()}_DeleteIntermediateKeyframes(){for(const a of this._tracks){const b=(a)=>{const b=a.GetTime(),c=this.GetTotalTime();return 0!==b&&b!==c};a.DeleteKeyframes(b),a.DeletePropertyKeyframes(b)}}static IsPlaying(a){return a.IsPlaying()}static _HasTag(a){const b=this.GetTags();return""===a?1===b.length&&""===b[0]:b.includes(a)}static _GetTagArray(a){return C3.IsArray(a)?a.slice(0):C3.IsString(a)?a.split(" "):void 0}static Build(a){const b=C3.Timeline.GetDefaultInitData(),c=a.runtime.GetTimelineManager(),d=C3.New(C3.Tween,b,c);C3.IsArray(a.propertyTracksConfig)||(a.propertyTracksConfig=[a.propertyTracksConfig]),d.SetTags(a.tags),d.SetInitialValueMode(a.initialValueMode),d.SetTotalTime(a.time),d.SetResultMode(a.propertyTracksConfig[0].resultMode),d.SetDestroyInstanceOnComplete(a.releaseOnComplete);const e=d.AddTrack();e.SetInstanceUID(a.instance.GetUID()),e.SetInterpolationMode("default"),e.SetResultMode(a.propertyTracksConfig[0].resultMode),e.SetEnable(!0);const f=e.AddKeyframe();f.SetTime(0),f.SetEase("noease"),f.SetEnable(!0);const g=e.AddKeyframe();g.SetTime(a.time),g.SetEase("noease"),g.SetEnable(!0);for(const b of a.propertyTracksConfig){const c=e.AddPropertyTrack(b.sourceId);c.SetPropertyName(b.property),c.SetPropertyType(b.type),c.SetMin(NaN),c.SetMax(NaN),c.SetInterpolationMode("default"),c.SetResultMode(b.resultMode),c.SetEnable(!0);const d=c.AddPropertyKeyframe();d.SetValue(b.startValue),d.SetAbsoluteValue(b.startValue),d.SetType(b.valueType),d.SetTime(0),d.SetEase(b.ease),d.SetEnable(!0);const f=c.AddPropertyKeyframe();f.SetValue(b.endValue),f.SetAbsoluteValue(b.endValue),f.SetType(b.valueType),f.SetTime(a.time),f.SetEase(b.ease),f.SetEnable(!0)}return d}}} + +// c3/events/stacks/solStack.js +"use strict";C3.SolStack=class extends C3.DefendedBase{constructor(a){super(),this._objectClass=a,this._stack=[],this._stack.push(C3.New(C3.Sol,this)),this._index=0}Release(){for(const a of this._stack)a.Release();C3.clearArray(this._stack),this._objectClass=null}GetObjectClass(){return this._objectClass}GetCurrentSol(){return this._stack[this._index]}Clear(){this.GetCurrentSol().Clear()}PushClean(){const a=this._stack,b=++this._index;b===a.length?a.push(C3.New(C3.Sol,this)):a[b].Reset()}PushCopy(){const a=this._stack,b=++this._index;b===a.length&&a.push(C3.New(C3.Sol,this)),a[b].Copy(a[b-1])}Pop(){--this._index}}; + +// c3/events/stacks/sol.js +"use strict";C3.Sol=class extends C3.DefendedBase{constructor(a){super(),this._stack=a,this._objectClass=this._stack.GetObjectClass(),this._eventStack=this._objectClass.GetRuntime().GetEventStack(),this._selectAll=!0,this._instances=[],this._elseInstances=[]}Release(){this.ClearArrays(),this._stack=null,this._objectClass=null,this._eventStack=null}ClearArrays(){C3.clearArray(this._instances),C3.clearArray(this._elseInstances)}GetObjectClass(){return this._objectClass}IsSelectAll(){return this._selectAll}HasAnyInstances(){return this._selectAll?!!this._objectClass.GetInstanceCount():!!this._instances.length}GetInstances(){return this._selectAll?this._objectClass.GetInstances():this._instances}HasAnyElseInstances(){return!!this._elseInstances.length}GetElseInstances(){return this._elseInstances}GetExpressionInstances(){const a=this.GetInstances();return a.length?a:this._elseInstances}Reset(){this._selectAll=!0,C3.clearArray(this._elseInstances)}Clear(){this._selectAll=!0}Copy(a){a.IsSelectAll()?this.Reset():(this._selectAll=!1,C3.shallowAssignArray(this._instances,a._instances),C3.clearArray(this._elseInstances))}_PushInstance(a){this._instances.push(a)}_PushElseInstance(a){this._elseInstances.push(a)}_SetSelectAll(a){this._selectAll=!!a}_GetOwnInstances(){return this._instances}_GetOwnElseInstances(){return this._elseInstances}SetSinglePicked(a){this._selectAll=!1,C3.clearArray(this._instances),this._instances.push(a)}SetArrayPicked(a){this._selectAll=!1,C3.shallowAssignArray(this._instances,a)}PickOne(a){if(a)if(this._eventStack.GetCurrentStackFrame().GetCurrentEvent().IsOrBlock()){this.IsSelectAll()&&(C3.clearArray(this._instances),C3.shallowAssignArray(this._elseInstances,a.GetObjectClass().GetInstances()),this._selectAll=!1);const b=this._elseInstances.indexOf(a);-1!==b&&(this._instances.push(this._elseInstances[b]),this._elseInstances.splice(b,1))}else this.SetSinglePicked(a)}}; + +// c3/events/stacks/eventStack.js +"use strict";C3.EventStack=class extends C3.DefendedBase{constructor(a){super(),this._eventSheetManager=a,this._runtime=this._eventSheetManager.GetRuntime(),this._stack=[],this._stack.push(C3.New(C3.EventStackFrame,this,null)),this._index=0}Release(){for(const a of this._stack)a.Release();C3.clearArray(this._stack),this._eventSheetManager=null,this._runtime=null}GetEventSheetManager(){return this._eventSheetManager}GetRuntime(){return this._runtime}GetCurrentStackFrame(){return this._stack[this._index]}Push(a){const b=this._stack,c=++this._index;if(c===b.length){const c=C3.New(C3.EventStackFrame,this,a);return b.push(c),c}else{const d=b[c];return d.Reset(a),d}}Pop(){--this._index}}; + +// c3/events/stacks/eventStackFrame.js +"use strict";C3.EventStackFrame=class extends C3.DefendedBase{constructor(a,b){super(),this._stack=a,this._runtime=this._stack.GetRuntime(),this._currentEvent=b,this._cndIndex=0,this._actIndex=0,this._lastEventTrue=!1,this._elseBranchRan=!1,this._expressionObjectClass=null}Release(){this.Reset(null),this._stack=null,this._runtime=null}Reset(a){this._currentEvent=a,this._cndIndex=0,this._actIndex=0,this._lastEventTrue=!1,this._elseBranchRan=!1}_Restore(a,b){this._currentEvent=a,this._cndIndex=0,this._actIndex=b}ResetQuick(){this._cndIndex=0,this._actIndex=0}GetCurrentEvent(){return this._currentEvent}SetCurrentEvent(a){this._currentEvent=a}GetConditionIndex(){return this._cndIndex}SetConditionIndex(a){this._cndIndex=a}GetActionIndex(){return this._actIndex}SetActionIndex(a){this._actIndex=a}SetLastEventTrue(a){this._lastEventTrue=!!a}GetLastEventTrue(){return this._lastEventTrue}SetElseBranchRan(a){this._elseBranchRan=!!a}GetElseBranchRan(){return this._elseBranchRan}SetExpressionObjectClass(a){this._expressionObjectClass=a}GetExpressionObjectClass(){return this._expressionObjectClass}IsSolModifierAfterCnds(){const a=this._currentEvent;return!!a.IsSolWriterAfterCnds()||!!(this._cndIndexc=a);return this._queuedDebugTriggers.push([a,b,c]),d}*_RunQueuedDebugTriggersGen(){if(this._runtime.HitBreakpoint())throw new Error("should not be in breakpoint");for(const a=this._runtime.GetLayoutManager();this._queuedDebugTriggers.length;){const[b,c,d]=this._queuedDebugTriggers.shift(),e=yield*this._DebugTrigger(a,b,c);d(e)}}async RunQueuedDebugTriggersAsync(){for(const a of this._RunQueuedDebugTriggersGen())await this._runtime.DebugBreak(a)}_FastTrigger(a,b,c,d){let e=!1;const f=a.GetMainRunningLayout(),g=f.GetEventSheet();if(g){this._executingTriggerDepth++,this._runtime.PushCurrentLayout(f);const a=g.deepIncludes();for(let f=0,g=a.length;fa.ShouldRelease());for(const b of a)b.Release()}ClearAllScheduledWaits(){for(const a of this._scheduledWaits)a.Release();C3.clearArray(this._scheduledWaits)}RemoveInstancesFromScheduledWaits(a){for(const b of this._scheduledWaits)b.RemoveInstances(a)}_SaveToJson(){return{"groups":this._SaveGroupsToJson(),"cnds":this._SaveCndsToJson(),"acts":this._SaveActsToJson(),"vars":this._SaveVarsToJson(),"waits":this._SaveScheduledWaitsToJson()}}_LoadFromJson(a){this._LoadGroupsFromJson(a["groups"]),this._LoadCndsFromJson(a["cnds"]),this._LoadActsFromJson(a["acts"]),this._LoadVarsFromJson(a["vars"]),this._LoadScheduledWaitsFromJson(a["waits"])}_SaveGroupsToJson(){const a={};for(const b of this.GetAllGroups())a[b.GetSID().toString()]=b.IsGroupActive();return a}_LoadGroupsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetEventGroupBySID(a);d&&d.SetGroupActive(c)}}_SaveCndsToJson(){const a={};for(const[b,c]of this._cndsBySid){const d=c._SaveToJson();d&&(a[b.toString()]=d)}return a}_LoadCndsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetConditionBySID(a);d&&d._LoadFromJson(c)}}_SaveActsToJson(){const a={};for(const[b,c]of this._actsBySid){const d=c._SaveToJson();d&&(a[b.toString()]=d)}return a}_LoadActsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetActionBySID(a);d&&d._LoadFromJson(c)}}_SaveVarsToJson(){const a={};for(const[b,c]of this._eventVarsBySid)!c.IsConstant()&&(c.IsGlobal()||c.IsStatic())&&(a[b.toString()]=c.GetValue());return a}_LoadVarsFromJson(a){for(const[b,c]of Object.entries(a)){const a=parseInt(b,10),d=this.GetEventVariableBySID(a);d&&d.SetValue(c)}}_SaveScheduledWaitsToJson(){return this._scheduledWaits.map((a)=>a._SaveToJson())}_LoadScheduledWaitsFromJson(a){this.ClearAllScheduledWaits();for(const b of a){const a=C3.ScheduledWait._CreateFromJson(this,b);a&&this._scheduledWaits.push(a)}}_GetPerfRecords(){return[...this._runtime.GetLayoutManager().runningLayouts()].map((a)=>a.GetEventSheet()).filter((a)=>a).map((a)=>a._GetPerfRecord())}}} + +// c3/events/eventSheet.js +"use strict";C3.EventSheet=class extends C3.DefendedBase{constructor(a,b){super(),this._eventSheetManager=a,this._runtime=a.GetRuntime(),this._name=b[0],this._events=[],this._triggers=new Map,this._fastTriggers=new Map,this._eventsByDisplayNumber=new Map,this._hasRun=!1,this._shallowIncludes=[],this._deepIncludes=[],this._alreadyIncludedSheets=new Set;for(const c of b[1])this._CreateEvent(c,null,this._events);this._perfRecord=this._runtime.IsDebug()?{type:"sheet",name:this._name,totalTimeCounter:0,children:[]}:null}Release(){this._eventSheetManager=null,this._runtime=null}_CreateEvent(a,b,c){switch(a[0]){case 0:this._CreateEventBlock(a,b,c);break;case 1:this._CreateEventVariable(a,b,c);break;case 2:this._CreateInclude(a,b,c);break;default:throw new Error("invalid event type");}}_CreateEventBlock(a,b,c){const d=C3.EventBlock.Create(this,b,a);if(d.IsOrBlock()){c.push(d);const a=d.GetConditions();for(let b=0,c=a.length;ba.DebugCanRunFast()),a.canRunAllActionsFast=this._actions.every((b)=>b.DebugCanRunFast()),a.canRunAllSubEventsFast=this._subEvents.every((a)=>a.DebugCanRunFast()),a.canRunSelfFast=a.canRunAllConditionsFast&&a.canRunAllActionsFast&&a.canRunAllSubEventsFast}_UpdateCanRunFastRecursive(){let a=this;do a._UpdateCanRunFast(),a=a.GetParent();while(a)}_IdentifyTopLevelGroup(){if(!this.IsGroup())return;let a=this.GetParent();for(this._isTopLevelGroup=!0;a;){if(!a.IsGroup()){this._isTopLevelGroup=!1;break}a=a.GetParent()}}_IdentifySolModifiersIncludingParents(){const a=this._runtime.GetAllObjectClasses();if(this._solModifiers===a)this._solModifiersIncludingParents=a;else{this._solModifiersIncludingParents=C3.cloneArray(this._solModifiers);for(let a=this.GetParent();a;){for(const b of a._solModifiers)this._AddParentSolModifier(b);a=a.GetParent()}const a=this.GetEventSheetManager();this._solModifiers=a._DeduplicateSolModifierList(this._solModifiers),this._solModifiersIncludingParents=a._DeduplicateSolModifierList(this._solModifiersIncludingParents)}}_IdentifyTriggerParents(){if(this.HasAnyTriggeredCondition()){this._triggerParents=[];for(let a=this.GetParent();a;)this._triggerParents.push(a),a=a.GetParent();this._triggerParents.reverse()}}SetSolWriterAfterCnds(){this._isSolWriterAfterCnds=!0,this._parent&&this._parent.SetSolWriterAfterCnds()}IsSolWriterAfterCnds(){return this._isSolWriterAfterCnds}GetSolModifiers(){return this._solModifiers}GetSolModifiersIncludingParents(){return this._solModifiersIncludingParents}HasSolModifier(a){return this._solModifiers.includes(a)}GetTriggerParents(){return this._triggerParents}GetEventSheet(){return this._eventSheet}GetEventSheetManager(){return this._eventSheet.GetEventSheetManager()}GetRuntime(){return this._runtime}GetParent(){return this._parent}GetDebugDisplayNumber(){return this._debugData?this._debugData.displayNumber:-1}IsDebugBreakable(){return this._debugData&&this._debugData.isBreakable}IsDebugBreakpoint(){return this.IsDebugBreakable()&&this._debugData.isBreakpoint}_SetDebugBreakpoint(a){this._debugData.isBreakpoint=!!a,this._UpdateCanRunFastRecursive()}IsGroup(){return this._isGroup}IsTopLevelGroup(){return this._isTopLevelGroup}IsElseBlock(){return this._isElseBlock}HasElseBlock(){return this._hasElseBlock}GetGroupName(){return this._groupName}IsGroupActive(){return this._isGroupActive}ResetInitialActivation(){this.SetGroupActive(this._isInitiallyActive)}SetGroupActive(b){if(b=!!b,!this._isGroup)throw new Error("not a group");if(this._isGroupActive!==b){this._isGroupActive=b;for(const a of this._containedIncludes)a.UpdateActive();if(this._containedIncludes.length){const a=this._runtime.GetCurrentLayout(),b=a.GetEventSheet();b&&b._UpdateDeepIncludes()}}}GetSID(){return this._sid}IsOrBlock(){return this._isOrBlock}IsTrigger(){return this._conditions.length&&this._conditions[0].IsTrigger()}HasAnyTriggeredCondition(){return this._conditions.some((a)=>a.IsTrigger())}GetConditions(){return this._conditions}GetConditionCount(){return this._conditions.length}GetConditionAt(a){if(a=Math.floor(a),0>a||a>=this._conditions.length)throw new RangeError("invalid condition index");return this._conditions[a]}IsFirstConditionOfType(a){let b=a.GetIndex();if(0===b)return!0;for(;0<=b;--b)if(this._conditions[b].GetObjectClass()===a.GetObjectClass())return!1;return!0}GetActions(){return this._actions}GetActionCount(){return this._actions.length}GetActionAt(a){if(a=Math.floor(a),0>a||a>=this._actions.length)throw new RangeError("invalid action index");return this._actions[a]}_HasActionIndex(a){return a=Math.floor(a),0<=a&&a=a.length?this._initialValue:a[b]}GetTypedValue(){let a=this.GetValue();return this.IsBoolean()&&(a=!!a),a}ResetToInitialValue(){this._value=this._initialValue}}} + +// c3/events/eventInclude.js +"use strict";{const a=[];C3.EventInclude=class extends C3.DefendedBase{constructor(a,b,c){super();const d=a.GetEventSheetManager();this._eventSheet=a,this._eventSheetManager=d,this._runtime=a.GetRuntime(),this._parent=b,this._includeSheet=null,this._includeSheetName=c[1],this._isActive=!0}static Create(a,b,c){return C3.New(C3.EventInclude,a,b,c)}Release(){}_PostInit(){this._includeSheet=this._eventSheetManager.GetEventSheetByName(this._includeSheetName);this._eventSheet._AddShallowInclude(this);for(let a=this.GetParent();a;)a instanceof C3.EventBlock&&a.IsGroup()&&a._AddContainedInclude(this),a=a.GetParent();this.UpdateActive(),this._runtime.IsDebug()&&this._eventSheet._GetPerfRecord().children.push(this._includeSheet._GetPerfRecord())}GetParent(){return this._parent}GetSolModifiers(){return a}GetIncludeSheet(){return this._includeSheet}Run(){const a=!!this.GetParent(),b=this._runtime.GetAllObjectClasses();a&&this._eventSheetManager.PushCleanSol(b),this._includeSheet.Run(),a&&this._eventSheetManager.PopSol(b)}*DebugRun(){const a=!!this.GetParent(),b=this._runtime.GetAllObjectClasses();a&&this._eventSheetManager.PushCleanSol(b),yield*this._includeSheet.DebugRun(),a&&this._eventSheetManager.PopSol(b)}DebugCanRunFast(){return!1}IsActive(){return this._isActive}UpdateActive(){for(let a=this.GetParent();a;){if(a instanceof C3.EventBlock&&a.IsGroup()&&!a.IsGroupActive())return void(this._isActive=!1);a=a.GetParent()}this._isActive=!0}}} + +// c3/events/expNode.js +"use strict";{function a(a,b){return a>=b?a%b:0>a?(a<=-b&&(a%=b),0>a&&(a+=b),a):a}C3.ExpNode=class extends C3.DefendedBase{constructor(a){super(),this._owner=a,this._runtime=a.GetRuntime()}_PostInit(){}static CreateNode(a,g){const h=g[0];return C3.New([e,c,d,f,b][h],a,g)}};class b extends C3.ExpNode{constructor(a,b){super(a),this._systemPlugin=this._runtime.GetSystemPlugin(),this._func=this._runtime.GetObjectReference(b[1]);(this._func===C3.Plugins.System.Exps.random||this._func===C3.Plugins.System.Exps.choose)&&this._owner.SetVariesPerInstance()}GetBoundMethod(){return this._systemPlugin._GetBoundACEMethod(this._func,this._systemPlugin)}}class c extends C3.ExpNode{constructor(a,b){super(a),this._objectClass=this._runtime.GetObjectClassByIndex(b[1]),this._func=this._runtime.GetObjectReference(b[2]);this._returnsString=!!b[3],this._eventStack=this._runtime.GetEventSheetManager().GetEventStack(),this._owner._MaybeVaryFor(this._objectClass)}GetBoundMethod(){return this._objectClass.GetPlugin()._GetBoundACEMethod(this._func,this._objectClass.GetSingleGlobalInstance().GetSdkInstance())}ExpObject(...b){const c=this._objectClass,d=c.GetCurrentSol().GetExpressionInstances(),e=d.length;if(0===e)return this._returnsString?"":0;const f=a(this._owner.GetSolIndex(),e);return this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(c),this._func.apply(d[f].GetSdkInstance(),b)}ExpObject_InstExpr(b,...c){const d=this._objectClass,e=d.GetInstances(),f=e.length;if(0===f)return this._returnsString?"":0;const g=a(b,f);return this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(d),this._func.apply(e[g].GetSdkInstance(),c)}}class d extends C3.ExpNode{constructor(a,b){super(a),this._objectClass=this._runtime.GetObjectClassByIndex(b[1]),this._varIndex=b[3],this._returnsString=!!b[2],this._owner._MaybeVaryFor(this._objectClass)}ExpInstVar(){const b=this._objectClass.GetCurrentSol().GetExpressionInstances(),c=b.length;if(0===c)return this._returnsString?"":0;const d=a(this._owner.GetSolIndex(),c);return b[d]._GetInstanceVariableValueUnchecked(this._varIndex)}ExpInstVar_Family(){const b=this._objectClass,c=b.GetCurrentSol().GetExpressionInstances(),d=c.length;if(0===d)return this._returnsString?"":0;const e=a(this._owner.GetSolIndex(),d),f=c[e],g=f.GetObjectClass().GetFamilyInstanceVariableOffset(b.GetFamilyIndex());return f._GetInstanceVariableValueUnchecked(this._varIndex+g)}ExpInstVar_InstExpr(b){const c=this._objectClass,d=c.GetInstances(),e=d.length;if(0===e)return this._returnsString?"":0;const f=a(b,e),g=d[f];let h=0;return c.IsFamily()&&(h=g.GetObjectClass().GetFamilyInstanceVariableOffset(c.GetFamilyIndex())),g._GetInstanceVariableValueUnchecked(this._varIndex+h)}}class e extends C3.ExpNode{constructor(a,b){super(a),this._objectClass=this._runtime.GetObjectClassByIndex(b[1]),this._behaviorType=this._objectClass.GetBehaviorTypeByName(b[2]),this._behaviorIndex=this._objectClass.GetBehaviorIndexByName(b[2]),this._func=this._runtime.GetObjectReference(b[3]);this._returnsString=!!b[4],this._eventStack=this._runtime.GetEventSheetManager().GetEventStack(),this._owner._MaybeVaryFor(this._objectClass)}ExpBehavior(...b){const c=this._objectClass,d=c.GetCurrentSol().GetExpressionInstances(),e=d.length;if(0===e)return this._returnsString?"":0;const f=a(this._owner.GetSolIndex(),e);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(c);const g=d[f];let h=0;return c.IsFamily()&&(h=g.GetObjectClass().GetFamilyBehaviorOffset(c.GetFamilyIndex())),this._func.apply(g.GetBehaviorInstances()[this._behaviorIndex+h].GetSdkInstance(),b)}ExpBehavior_InstExpr(b,...c){const d=this._objectClass,e=d.GetInstances(),f=e.length;if(0===f)return this._returnsString?"":0;const g=a(b,f);this._eventStack.GetCurrentStackFrame().SetExpressionObjectClass(d);const h=e[g];let i=0;return d.IsFamily()&&(i=h.GetObjectClass().GetFamilyBehaviorOffset(d.GetFamilyIndex())),this._func.apply(h.GetBehaviorInstances()[this._behaviorIndex+i].GetSdkInstance(),c)}}class f extends C3.ExpNode{constructor(a,b){super(a),this._eventVar=null,this._eventVarName=b[1]}_PostInit(){this._eventVar=this._runtime.GetEventSheetManager().GetEventVariableByName(this._eventVarName,this._owner.GetEventBlock().GetParent());this._eventVarName=null}GetVar(){return this._eventVar}}} + +// c3/events/parameter.js +"use strict";{function a(a){const b=self.C3_ExpressionFuncs[a];if(!b)throw new Error("invalid expression number");return b}C3.Parameter=class extends C3.DefendedBase{constructor(a,b,c){super(),this._owner=a,this._index=c,this._type=b,this.Get=null,this._variesPerInstance=!1,this._isConstant=!1}static Create(a,m,n){const o=m[0];return C3.New([b,c,i,e,f,d,g,b,e,e,j,k,i,l,c,h][o],a,o,n,m)}_PostInit(){}SetVariesPerInstance(){this._variesPerInstance=!0}_MaybeVaryFor(a){!this._variesPerInstance&&a&&(a.GetPlugin().IsSingleGlobal()||(this._variesPerInstance=!0))}VariesPerInstance(){return this._variesPerInstance}GetIndex(){return this._index}GetRuntime(){return this._owner.GetRuntime()}GetEventBlock(){return this._owner.GetEventBlock()}IsConstant(){return this._isConstant}};class b extends C3.Parameter{constructor(b,c,d,e){super(b,c,d),this._solIndex=0;const f=e[1];this._expressionNumber=f[0],this._numberedNodes=[],this._expressionFunc=null;for(let a=1,g=f.length;aa||a>=this._numberedNodes.length)throw new RangeError("invalid numbered node");return this._numberedNodes[a]}_PostInit(){for(const a of this._numberedNodes)a._PostInit();const b=a(this._expressionNumber);this._expressionFunc=this._numberedNodes.length?b(this):b}GetSolIndex(){return this._solIndex}GetExpression(a){return this._solIndex=a,this._expressionFunc()}}class c extends b{constructor(a,b,c,d){super(a,b,c,d),this.Get=this.GetStringExpression,14===b&&(this.GetEventBlock().SetAllSolModifiers(),this._owner instanceof C3.Action&&this.GetEventBlock().SetSolWriterAfterCnds())}GetStringExpression(a){this._solIndex=a;const b=this._expressionFunc();return"string"==typeof b?b:""}_GetFastTriggerValue(){return a(this._expressionNumber)()}}class d extends b{constructor(a,b,c,d){super(a,b,c,d),this.Get=this.GetLayer,this._isConstant=!1}GetLayer(a){this._solIndex=a;const b=this._expressionFunc(),c=this.GetRuntime().GetCurrentLayout();return c.GetLayer(b)}}class e extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._combo=d[1],this.Get=this.GetCombo,this._isConstant=!0}GetCombo(){return this._combo}}class f extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._objectClass=this.GetRuntime().GetObjectClassByIndex(d[1]);this.Get=this.GetObjectClass;const e=this.GetEventBlock();e._AddSolModifier(this._objectClass),this._owner instanceof C3.Action?e.SetSolWriterAfterCnds():e.GetParent()&&e.GetParent().SetSolWriterAfterCnds(),this._isConstant=!0}GetObjectClass(){return this._objectClass}}class g extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._layout=this.GetRuntime().GetLayoutManager().GetLayoutByName(d[1]),this.Get=this.GetLayout,this._isConstant=!0}GetLayout(){return this._layout}}class h extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._timeline=this.GetRuntime().GetTimelineManager().GetTimelineByName(d[1]),this.Get=this.GetTimeline,this._isConstant=!0}GetTimeline(){return this._timeline}}class i extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._fileInfo=d[1],this.Get=this.GetFile,this._isConstant=!0}GetFile(){return this._fileInfo}}class j extends C3.Parameter{constructor(a,b,c,d){super(a,b,c),this._instVarIndex=d[1];const e=this._owner.GetObjectClass();e&&e.IsFamily()?(this.Get=this.GetFamilyInstanceVariable,this.SetVariesPerInstance()):(this.Get=this.GetInstanceVariable,this._isConstant=!0)}GetInstanceVariable(){return this._instVarIndex}GetFamilyInstanceVariable(a){a=a||0;const b=this._owner.GetObjectClass(),c=b.GetCurrentSol(),d=c.GetInstances();let e=null;if(d.length)e=d[a%d.length].GetObjectClass();else if(c.HasAnyElseInstances()){const b=c.GetElseInstances();e=b[a%b.length].GetObjectClass()}else if(0[a[0].GetUID(),a[1].GetUID(),a[2]])),a[b]=d}return{"ex":a}}_LoadFromJson(a){const b=this._runtime,c=a["ex"];if(c){const a=this.GetSavedDataMap();a.clear();for(const[d,e]of Object.entries(c)){let c=e;"collmemory"===d&&(c=C3.New(C3.PairMap,e.map((a)=>[b.GetInstanceByUID(a[0]),b.GetInstanceByUID(a[1]),a[2]]).filter((a)=>a[0]&&a[1]))),a.set(d,c)}}else this._savedData&&(this._savedData.clear(),this._savedData=null)}}} + +// c3/events/action.js +"use strict";{function a(a,b){for(let c=0,d=a.length;ca.VariesPerInstance())?(this.Run=this._RunObject_AllParamsVary,this.DebugRun=this._DebugRunObject_AllParamsVary):this._anyParamVariesPerInstance?(this.Run=this._RunObject_SomeParamsVary,this.DebugRun=this._DebugRunObject_SomeParamsVary):this._parameters.every((a)=>a.IsConstant())?(a(this._parameters,this._results),this.Run=this._RunObject_ParamsConst,this.DebugRun=this._DebugRunObject_ParamsConst):(this.Run=this._RunObject_ParamsDontVary,this.DebugRun=this._DebugRunObject_ParamsDontVary):(this.Run=this._RunObject_ParamsConst,this.DebugRun=this._DebugRunObject_ParamsConst)}_SetSystemRunMethod(){const a=this._systemPlugin,b=this._systemPlugin;this._SetRunMethodForBoundFunc(a,b,this._RunSystem)}_SetSingleGlobalRunMethod(){const a=this._objectClass.GetPlugin(),b=this._objectClass.GetSingleGlobalInstance().GetSdkInstance();this._SetRunMethodForBoundFunc(a,b,this._RunSingleGlobal)}_SetRunMethodForBoundFunc(a,b,c){const d=this._func,e=this._parameters;if(0===e.length)this.Run=a._GetBoundACEMethod(d,b);else if(1===e.length){const c=e[0];if(c.IsConstant())this.Run=a._GetBoundACEMethod_1param(d,b,c.Get(0));else{const e=a._GetBoundACEMethod(d,b);this.Run=function(){return e(c.Get(0))}}}else if(2===e.length){const c=e[0],f=e[1];if(c.IsConstant()&&f.IsConstant())this.Run=a._GetBoundACEMethod_2params(d,b,c.Get(0),f.Get(0));else{const e=a._GetBoundACEMethod(d,b);this.Run=function(){return e(c.Get(0),f.Get(0))}}}else if(3===e.length){const c=e[0],f=e[1],g=e[2];if(c.IsConstant()&&f.IsConstant()&&g.IsConstant())this.Run=a._GetBoundACEMethod_3params(d,b,c.Get(0),f.Get(0),g.Get(0));else{const e=a._GetBoundACEMethod(d,b);this.Run=function(){return e(c.Get(0),f.Get(0),g.Get(0))}}}else this.Run=c}GetSID(){return this._sid}GetObjectClass(){return this._objectClass}GetEventBlock(){return this._eventBlock}GetRuntime(){return this._runtime}GetIndex(){return this._index}IsBreakpoint(){return this._debugData.isBreakpoint}_SetBreakpoint(a){this._debugData.isBreakpoint=!!a,this._eventBlock._UpdateCanRunFastRecursive()}_DebugReturnsGenerator(){return this._debugData.canDebug}DebugCanRunFast(){return!this.IsBreakpoint()&&!this._runtime.DebugBreakNext()&&!this._DebugReturnsGenerator()}GetSavedDataMap(){return this._savedData||(this._savedData=new Map),this._savedData}GetUnsavedDataMap(){return this._unsavedData||(this._unsavedData=new Map),this._unsavedData}_RunSystem(){const b=this._results;return a(this._parameters,b),this._func.apply(this._systemPlugin,b)}*_DebugRunSystem(){if((this.IsBreakpoint()||this._runtime.DebugBreakNext())&&(yield this),this._DebugReturnsGenerator()){const b=this._results;a(this._parameters,b);const c=yield*this._func.apply(this._systemPlugin,b);return c}return this.Run()}_RunSingleGlobal(){const b=this._results;return a(this._parameters,b),this._func.apply(this._objectClass.GetSingleGlobalInstance().GetSdkInstance(),b)}*_DebugRunSingleGlobal(){if((this.IsBreakpoint()||this._runtime.DebugBreakNext())&&(yield this),this._DebugReturnsGenerator()){const b=this._results;a(this._parameters,b);const c=yield*this._func.apply(this._objectClass.GetSingleGlobalInstance().GetSdkInstance(),b);return c}return this.Run()}_RunObject_ParamsConst(){const a=this._results,b=this._objectClass.GetCurrentSol().GetInstances();for(let c=0,d=b.length;cc.getRight()||0>c.getBottom()||c.getLeft()>b.GetWidth()||c.getTop()>b.GetHeight()}function e(a,b,c){const d=this.GetCurrentSol(),e=d.GetInstances();if(!e.length)return!1;let f=e[0],g=f.GetWorldInfo(),h=f,j=C3.distanceSquared(g.GetX(),g.GetY(),b,c);for(let d=1,i=e.length;dj)&&(j=i,h=f)}return d.PickOne(h),!0}function f(a){const b=this.GetWorldInfo();b.GetX()===a||(b.SetX(a),b.SetBboxChanged())}function g(a){const b=this.GetWorldInfo();b.GetY()===a||(b.SetY(a),b.SetBboxChanged())}function h(a,b){const c=this.GetWorldInfo();c.EqualsXY(a,b)||(c.SetXY(a,b),c.SetBboxChanged())}function i(a,b){if(a){const c=a.GetPairedInstance(this._inst);if(c){const[a,d]=c.GetImagePoint(b),e=this.GetWorldInfo();e.GetX()===a&&e.GetY()===d||(e.SetXY(a,d),e.SetBboxChanged())}}}function j(a){if(0!==a){const b=this.GetWorldInfo();b.OffsetXY(b.GetCosAngle()*a,b.GetSinAngle()*a),b.SetBboxChanged()}}function k(b,a){if(0!==a){const c=this.GetWorldInfo();b=C3.toRadians(b),c.OffsetXY(Math.cos(b)*a,Math.sin(b)*a),c.SetBboxChanged()}}function l(){return this.GetWorldInfo().GetX()}function m(){return this.GetWorldInfo().GetY()}function n(){return this._runtime.GetDt(this._inst)}function o(a,b){return C3.compare(this.GetWorldInfo().GetWidth(),a,b)}function p(a,b){return C3.compare(this.GetWorldInfo().GetHeight(),a,b)}function q(a){const b=this.GetWorldInfo();b.GetWidth()===a||(b.SetWidth(a),b.SetBboxChanged())}function r(a){const b=this.GetWorldInfo();b.GetHeight()===a||(b.SetHeight(a),b.SetBboxChanged())}function s(a,b){const c=this.GetWorldInfo();c.GetWidth()===a&&c.GetHeight()===b||(c.SetSize(a,b),c.SetBboxChanged())}function t(){return this.GetWorldInfo().GetWidth()}function u(){return this.GetWorldInfo().GetHeight()}function v(){return this.GetWorldInfo().GetBoundingBox().getLeft()}function w(){return this.GetWorldInfo().GetBoundingBox().getTop()}function x(){return this.GetWorldInfo().GetBoundingBox().getRight()}function y(){return this.GetWorldInfo().GetBoundingBox().getBottom()}function z(b,c){return C3.angleDiff(this.GetWorldInfo().GetAngle(),C3.toRadians(c))<=C3.toRadians(b)}function A(b){return C3.angleClockwise(this.GetWorldInfo().GetAngle(),C3.toRadians(b))}function B(c,a){const b=C3.toRadians(c),d=C3.toRadians(a),e=this.GetWorldInfo().GetAngle(),f=!C3.angleClockwise(d,b);return f?C3.angleClockwise(e,b)||!C3.angleClockwise(e,d):C3.angleClockwise(e,b)&&!C3.angleClockwise(e,d)}function C(b){const a=this.GetWorldInfo(),c=C3.clampAngle(C3.toRadians(b));isNaN(c)||a.GetAngle()===c||(a.SetAngle(c),a.SetBboxChanged())}function D(b){if(!(isNaN(b)||0===b)){const a=this.GetWorldInfo();a.SetAngle(a.GetAngle()+C3.toRadians(b)),a.SetBboxChanged()}}function E(b){if(!(isNaN(b)||0===b)){const a=this.GetWorldInfo();a.SetAngle(a.GetAngle()-C3.toRadians(b)),a.SetBboxChanged()}}function F(b,c){const d=this.GetWorldInfo(),e=d.GetAngle(),a=C3.angleRotate(e,C3.toRadians(c),C3.toRadians(b));isNaN(a)||e===a||(d.SetAngle(a),d.SetBboxChanged())}function G(b,c,d){const e=this.GetWorldInfo(),f=e.GetAngle(),a=c-e.GetX(),g=d-e.GetY(),h=Math.atan2(g,a),i=C3.angleRotate(f,h,C3.toRadians(b));isNaN(i)||f===i||(e.SetAngle(i),e.SetBboxChanged())}function H(b,c){const d=this.GetWorldInfo(),e=d.GetAngle(),a=b-d.GetX(),f=c-d.GetY(),g=Math.atan2(f,a);isNaN(g)||e===g||(d.SetAngle(g),d.SetBboxChanged())}function I(){return C3.toDegrees(this.GetWorldInfo().GetAngle())}function J(a,b){return C3.compare(C3.round6dp(100*this.GetWorldInfo().GetOpacity()),a,b)}function K(){return this.GetWorldInfo().IsVisible()}function L(a){a=!!a;const b=this.GetWorldInfo();b.IsVisible()===a||(b.SetVisible(a),this._runtime.UpdateRender())}function M(a){const b=C3.clamp(a/100,0,1),c=this.GetWorldInfo();c.GetOpacity()===b||(c.SetOpacity(b),this._runtime.UpdateRender())}function N(a){sa.setFromRgbValue(a);const b=this.GetWorldInfo();b.GetUnpremultipliedColor().equalsIgnoringAlpha(sa)||(b.SetUnpremultipliedColor(sa),this._runtime.UpdateRender())}function O(){return C3.round6dp(100*this.GetWorldInfo().GetOpacity())}function P(a){return!!a&&this.GetWorldInfo().GetLayer()===a}function Q(a){const b=this.GetCurrentSol(),c=b.GetInstances();if(!c.length)return!1;let d=c[0],e=d;for(let b=1,d=c.length;bi||h===i&&f.GetZIndex()>g.GetZIndex())&&(e=d):(hb||b>=f.length)){const g=d.GetShaderProgram().GetParameterType(b);if("color"===g){sa.setFromRgbValue(c);const a=f[b];if(sa.equalsIgnoringAlpha(a))return;a.copyRgb(sa)}else{if("percent"===g&&(c/=100),f[b]===c)return;f[b]=c}e.IsEffectIndexActive(a)&&this._runtime.UpdateRender()}}}function $(a,b,c){return C3.compare(this.GetInstance().GetInstanceVariableValue(a),b,c)}function _(a){return!!this.GetInstance().GetInstanceVariableValue(a)}function aa(a,b){const c=this.GetCurrentSol(),d=c.GetInstances();if(!d.length)return!1;let e=d[0],f=e,g=e.GetInstanceVariableValue(b);for(let c=1,h=d.length;cg)&&(g=h,f=e)}return c.PickOne(f),!0}function ba(a){return this._runtime.GetCurrentCondition().IsInverted()?da(this,a):ca(this,a)}function ca(a,b){const c=a.GetRuntime().GetInstanceByUID(b);if(!c)return!1;const d=a.GetCurrentSol();if(!d.IsSelectAll()&&!d._GetOwnInstances().includes(c))return!1;if(a.IsFamily()){if(c.GetObjectClass().BelongsToFamily(a))return d.PickOne(c),a.ApplySolToContainer(),!0;}else if(c.GetObjectClass()===a)return d.PickOne(c),a.ApplySolToContainer(),!0;return!1}function da(a,b){const c=a.GetCurrentSol();if(c.IsSelectAll()){c._SetSelectAll(!1),c.ClearArrays();const d=a.GetInstances();for(let a=0,e=d.length;athis._eventSheetManager.GetRuntime().GetGameTime())return!1;return!0}_Run(a){a._Restore(this._event,this._actIndex);for(const[b,c]of this._sols.entries()){const a=b.GetCurrentSol();c._Restore(a)}this._event._ResumeActionsAndSubEvents(a),this._eventSheetManager.ClearSol(this._solModifiers),this._shouldRelease=!0}async _DebugRun(a){a._Restore(this._event,this._actIndex);for(const[b,c]of this._sols.entries()){const a=b.GetCurrentSol();c._Restore(a)}for(const b of this._event._DebugResumeActionsAndSubEvents(a))await this._eventSheetManager.GetRuntime().DebugBreak(b);this._eventSheetManager.ClearSol(this._solModifiers),this._shouldRelease=!0}ShouldRelease(){return this._shouldRelease}RemoveInstances(a){for(const b of this._sols.values())b.RemoveInstances(a)}_SaveToJson(){const a={},b={"t":this._time,"st":this._signalTag,"s":this._isSignalled,"ev":this._event.GetSID(),"sm":this._solModifiers.map((a)=>a.GetSID()),"sols":a};this._event._HasActionIndex(this._actIndex)&&(b["act"]=this._event.GetActionAt(this._actIndex).GetSID());for(const[b,c]of this._sols)a[b.GetSID().toString()]=c._SaveToJson();return b}static _CreateFromJson(a,b){const c=a.GetRuntime(),d=a.GetEventBlockBySID(b["ev"]);if(!d)return null;let e=0;if(b.hasOwnProperty("act")){const c=a.GetActionBySID(b["act"]);if(!c)return null;e=c.GetIndex()}const f=C3.New(C3.ScheduledWait,a);f._time=b["t"],f._signalTag=b["st"],f._isSignalled=b["s"],f._event=d,f._actIndex=e;for(const d of b["sm"]){const a=c.GetObjectClassBySID(d);a&&f._solModifiers.push(a)}for(const[d,e]of Object.entries(b["sols"])){const b=parseInt(d,10),g=c.GetObjectClassBySID(b);if(!g)continue;const h=C3.New(C3.SolState,null);h._LoadFromJson(a,e),f._sols.set(g,h)}return f}}; + +// c3/events/solState.js +"use strict";C3.SolState=class extends C3.DefendedBase{constructor(a){super(),this._objectClass=null,this._isSelectAll=!0,this._instances=[],a&&(this._objectClass=a.GetObjectClass(),this._isSelectAll=a.IsSelectAll(),C3.shallowAssignArray(this._instances,a._GetOwnInstances()))}Release(){this._objectClass=null,C3.clearArray(this._instances)}_Restore(a){a._SetSelectAll(this._isSelectAll),C3.shallowAssignArray(a._GetOwnInstances(),this._instances)}RemoveInstances(a){C3.arrayRemoveAllInSet(this._instances,a)}_SaveToJson(){return{"sa":this._isSelectAll,"insts":this._instances.map((a)=>a.GetUID())}}_LoadFromJson(a,b){const c=a.GetRuntime();this._isSelectAll=!!b["sa"],C3.clearArray(this._instances);for(const d of b["insts"]){const a=c.GetInstanceByUID(d);a&&this._instances.push(a)}}}; + +// c3/sdk/sdkPluginBase.js +"use strict";{function a(a,b){let c=a.get(b);return c||(c=new Map,a.set(b,c)),c}C3.SDKPluginBase=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.runtime,this._isSingleGlobal=!!a.isSingleGlobal,this._isWorldType=!!a.isWorld,this._isRotatable=!!a.isRotatable,this._mustPredraw=!!a.mustPredraw,this._hasEffects=!!a.hasEffects,this._singleGlobalObjectClass=null,this._boundACEMethodCache=new Map,this._boundACEMethodCache_1param=new Map,this._boundACEMethodCache_2params=new Map,this._boundACEMethodCache_3params=new Map}Release(){this._runtime=null}GetRuntime(){return this._runtime}OnCreate(){}IsSingleGlobal(){return this._isSingleGlobal}IsWorldType(){return this._isWorldType}IsRotatable(){return this._isRotatable}MustPreDraw(){return this._mustPredraw}HasEffects(){return this._hasEffects}_GetBoundACEMethod(a,b){if(!b)throw new Error("missing 'this' binding");let c=this._boundACEMethodCache.get(a);return c?c:(c=a.bind(b),this._boundACEMethodCache.set(a,c),c)}_GetBoundACEMethod_1param(b,c,d){if(!c)throw new Error("missing 'this' binding");const e=a(this._boundACEMethodCache_1param,b);let f=e.get(d);return f?f:(f=b.bind(c,d),e.set(d,f),f)}_GetBoundACEMethod_2params(b,c,d,e){if(!c)throw new Error("missing 'this' binding");const f=a(this._boundACEMethodCache_2params,b),g=a(f,d);let h=g.get(e);return h?h:(h=b.bind(c,d,e),g.set(e,h),h)}_GetBoundACEMethod_3params(b,c,d,e,f){if(!c)throw new Error("missing 'this' binding");const g=a(this._boundACEMethodCache_3params,b),h=a(g,d),i=a(h,e);let j=i.get(f);return j?j:(j=b.bind(c,d,e,f),i.set(f,j),j)}_SetSingleGlobalObjectClass(a){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");this._singleGlobalObjectClass=a}GetSingleGlobalObjectClass(){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");return this._singleGlobalObjectClass}GetSingleGlobalInstance(){if(!this.IsSingleGlobal())throw new Error("must be single-global plugin");return this._singleGlobalObjectClass.GetSingleGlobalInstance()}}} + +// c3/sdk/sdkDOMPluginBase.js +"use strict";C3.SDKDOMPluginBase=class extends C3.SDKPluginBase{constructor(a,b){super(a),this._domComponentId=b,this._nextElementId=0,this._instMap=new Map}Release(){super.Release()}_AddElement(a){const b=this._nextElementId++;return this._instMap.set(b,a),b}_RemoveElement(a){this._instMap.delete(a)}AddElementMessageHandler(a,b){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,a,(a)=>{const c=this._instMap.get(a["elementId"]);b(c,a)})}}; + +// c3/sdk/sdkTypeBase.js +"use strict";C3.SDKTypeBase=class extends C3.DefendedBase{constructor(a){super(),this._objectClass=a,this._runtime=a.GetRuntime(),this._plugin=a.GetPlugin()}Release(){this._objectClass=null,this._runtime=null,this._plugin=null}GetObjectClass(){return this._objectClass}GetRuntime(){return this._runtime}GetPlugin(){return this._plugin}GetImageInfo(){return this._objectClass.GetImageInfo()}FinishCondition(){}LoadTextures(){}ReleaseTextures(){}OnDynamicTextureLoadComplete(){}LoadTilePolyData(){}}; + +// c3/sdk/sdkInstanceBase.js +"use strict";C3.SDKInstanceBase=class extends C3.DefendedBase{constructor(a,b){super(),this._inst=a,this._domComponentId=b,this._runtime=a.GetRuntime(),this._objectClass=this._inst.GetObjectClass(),this._sdkType=this._objectClass.GetSdkType(),this._tickFunc=null,this._tick2Func=null,this._isTicking=!1,this._isTicking2=!1,this._disposables=null,this._wasReleased=!1}Release(){this._wasReleased=!0,this._StopTicking(),this._StopTicking2(),this._tickFunc=null,this._tick2Func=null,this._disposables&&(this._disposables.Release(),this._disposables=null),this._inst=null,this._runtime=null,this._objectClass=null,this._sdkType=null}WasReleased(){return this._wasReleased}GetInstance(){return this._inst}GetRuntime(){return this._runtime}GetObjectClass(){return this._objectClass}GetPlugin(){return this._sdkType.GetPlugin()}GetSdkType(){return this._sdkType}Trigger(a){return this._runtime.Trigger(a,this._inst)}DebugTrigger(a){return this._runtime.DebugTrigger(a,this._inst)}TriggerAsync(a){return this._runtime.TriggerAsync(a,this._inst)}FastTrigger(a,b){return this._runtime.FastTrigger(a,this._inst,b)}DebugFastTrigger(a,b){return this._runtime.DebugFastTrigger(a,this._inst,b)}AddDOMMessageHandler(a,b){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,a,b)}AddDOMMessageHandlers(a){for(const[b,c]of a)this.AddDOMMessageHandler(b,c)}PostToDOM(a,b){this._runtime.PostComponentMessageToDOM(this._domComponentId,a,b)}PostToDOMAsync(a,b){return this._runtime.PostComponentMessageToDOMAsync(this._domComponentId,a,b)}_PostToDOMMaybeSync(a,b){this._runtime.IsInWorker()?this.PostToDOM(a,b):window["c3_runtimeInterface"]["_OnMessageFromRuntime"]({"type":"event","component":this._domComponentId,"handler":a,"data":b,"responseId":null})}GetCurrentImageInfo(){return null}GetImagePoint(){const a=this._inst.GetWorldInfo();return[a.GetX(),a.GetY()]}Tick(){}Tick2(){}_StartTicking(){this._isTicking||(!this._tickFunc&&(this._tickFunc=()=>this.Tick()),this._runtime.Dispatcher().addEventListener("tick",this._tickFunc),this._isTicking=!0)}_StopTicking(){this._isTicking&&(this._runtime.Dispatcher().removeEventListener("tick",this._tickFunc),this._isTicking=!1)}IsTicking(){return this._isTicking}_StartTicking2(){this._isTicking2||(!this._tick2Func&&(this._tick2Func=()=>this.Tick2()),this._runtime.Dispatcher().addEventListener("tick2",this._tick2Func),this._isTicking2=!0)}_StopTicking2(){this._isTicking2&&(this._runtime.Dispatcher().removeEventListener("tick2",this._tick2Func),this._isTicking2=!1)}IsTicking2(){return this._isTicking2}GetDebuggerProperties(){return[]}SaveToJson(){return null}LoadFromJson(){}LoadTilemapData(){}TestPointOverlapTile(){}GetPropertyValueByIndex(){}SetPropertyValueByIndex(){}CallAction(a,...b){a.call(this,...b)}CallExpression(a,...b){return a.call(this,...b)}}; + +// c3/sdk/sdkWorldInstanceBase.js +"use strict";C3.SDKWorldInstanceBase=class extends C3.SDKInstanceBase{constructor(a,b){super(a,b),this._worldInfo=a.GetWorldInfo(),this._webglcontextlost_handler=null,this._webglcontextrestored_handler=null}Release(){if(this._webglcontextlost_handler){const a=this._runtime.Dispatcher();a.removeEventListener("webglcontextlost",this._webglcontextlost_handler),a.removeEventListener("webglcontextrestored",this._webglcontextrestored_handler),this._webglcontextlost_handler=null,this._webglcontextrestored_handler=null}this._worldInfo=null,super.Release()}HandleWebGLContextLoss(){if(!this._webglcontextlost_handler){this._webglcontextlost_handler=()=>this.OnWebGLContextLost(),this._webglcontextrestored_handler=()=>this.OnWebGLContextRestored();const a=this._runtime.Dispatcher();a.addEventListener("webglcontextlost",this._webglcontextlost_handler),a.addEventListener("webglcontextrestored",this._webglcontextrestored_handler)}}OnWebGLContextLost(){}OnWebGLContextRestored(){}GetWorldInfo(){return this._worldInfo}}; + +// c3/sdk/sdkDOMInstanceBase.js +"use strict";{const a=C3.New(C3.Rect);C3.SDKDOMInstanceBase=class extends C3.SDKWorldInstanceBase{constructor(a,b){super(a,b),this._elementId=this.GetPlugin()._AddElement(this),this._isElementShowing=!0,this._autoFontSize=!1,this._lastRect=C3.New(C3.Rect,0,0,-1,-1);const c=this._runtime.GetCanvasManager();this._lastWindowWidth=c.GetLastWidth(),this._lastWindowHeight=c.GetLastHeight(),this._isPendingUpdateState=!1,this._StartTicking()}Release(){this.GetPlugin()._RemoveElement(this._elementId),this.PostToDOMElement("destroy"),this._elementId=-1,super.Release()}PostToDOMElement(a,b){b||(b={}),b["elementId"]=this._elementId,this.PostToDOM(a,b)}PostToDOMElementAsync(a,b){return b||(b={}),b["elementId"]=this._elementId,this.PostToDOMAsync(a,b)}CreateElement(a){a||(a={});const b=this.GetWorldInfo().IsVisible();a["elementId"]=this._elementId,a["isVisible"]=b,Object.assign(a,this.GetElementState()),this._isElementShowing=!!a["isVisible"],this.PostToDOM("create",a),this._UpdatePosition(!0)}SetElementVisible(a){a=!!a;this._isElementShowing===a||(this._isElementShowing=a,this.PostToDOMElement("set-visible",{"isVisible":a}))}Tick(){this._UpdatePosition(!1)}_UpdatePosition(b){var c=Math.round;const d=this.GetWorldInfo(),e=d.GetLayer(),f=d.GetX(),g=d.GetY();let[h,i]=e.LayerToCanvasCss(f,g),[j,k]=e.LayerToCanvasCss(f+d.GetWidth(),g+d.GetHeight());const l=this._runtime.GetCanvasManager(),m=l.GetCssWidth(),n=l.GetCssHeight();if(!d.IsVisible()||!e.IsVisible()||0>=j||0>=k||h>=m||i>=n)return void this.SetElementVisible(!1);1>h&&(h=1),1>i&&(i=1),j>=m&&(j=m-1),k>=n&&(k=n-1),a.set(h,i,j,k);const o=l.GetLastWidth(),p=l.GetLastHeight();if(!b&&a.equals(this._lastRect)&&this._lastWindowWidth===o&&this._lastWindowHeight===p)return void this.SetElementVisible(!0);this._lastRect.copy(a),this._lastWindowWidth=o,this._lastWindowHeight=p,this.SetElementVisible(!0);let q=null;this._autoFontSize&&(q=e.GetDisplayScale()-.2),this.PostToDOMElement("update-position",{"left":c(this._lastRect.getLeft())+l.GetCanvasClientX(),"top":c(this._lastRect.getTop())+l.GetCanvasClientY(),"width":c(this._lastRect.width()),"height":c(this._lastRect.height()),"fontSize":q})}FocusElement(){this.PostToDOMElement("focus",{"focus":!0})}BlurElement(){this.PostToDOMElement("focus",{"focus":!1})}SetElementCSSStyle(a,b){this.PostToDOMElement("set-css-style",{"prop":C3.CSSToCamelCase(a),"val":b})}UpdateElementState(){this._isPendingUpdateState||(this._isPendingUpdateState=!0,Promise.resolve().then(()=>{this._isPendingUpdateState=!1,this.PostToDOMElement("update-state",this.GetElementState())}))}GetElementState(){}GetElementId(){return this._elementId}}} + +// c3/sdk/sdkBehaviorBase.js +"use strict";C3.SDKBehaviorBase=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.runtime,this._myObjectClasses=C3.New(C3.ArraySet),this._myInstances=C3.New(C3.ArraySet)}Release(){this._myInstances.Release(),this._myObjectClasses.Release(),this._runtime=null}GetRuntime(){return this._runtime}OnCreate(){}_AddObjectClass(a){this._myObjectClasses.Add(a)}GetObjectClasses(){return this._myObjectClasses.GetArray()}_AddInstance(a){this._myInstances.Add(a)}_RemoveInstance(a){this._myInstances.Delete(a)}GetInstances(){return this._myInstances.GetArray()}}; + +// c3/sdk/sdkBehaviorTypeBase.js +"use strict";C3.SDKBehaviorTypeBase=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.GetRuntime(),this._behaviorType=a,this._objectClass=a.GetObjectClass(),this._behavior=a.GetBehavior(),this._behavior._AddObjectClass(this._objectClass)}Release(){this._runtime=null,this._behaviorType=null,this._objectClass=null,this._behavior=null}GetBehaviorType(){return this._behaviorType}GetObjectClass(){return this._objectClass}GetRuntime(){return this._runtime}GetBehavior(){return this._behavior}}; + +// c3/sdk/sdkBehaviorInstanceBase.js +"use strict";C3.SDKBehaviorInstanceBase=class extends C3.DefendedBase{constructor(a,b){super(),this._behInst=a,this._domComponentId=b,this._inst=a.GetObjectInstance(),this._runtime=a.GetRuntime(),this._behaviorType=a.GetBehaviorType(),this._sdkType=this._behaviorType.GetSdkType(),this._isTicking=!1,this._isTicking2=!1,this._isPostTicking=!1,this._disposables=null}Release(){this._StopTicking(),this._StopTicking2(),this._StopPostTicking(),this._disposables&&(this._disposables.Release(),this._disposables=null),this._behInst=null,this._inst=null,this._runtime=null,this._behaviorType=null,this._sdkType=null}GetBehavior(){return this._behaviorType.GetBehavior()}GetBehaviorInstance(){return this._behInst}GetObjectInstance(){return this._inst}GetObjectClass(){return this._inst.GetObjectClass()}GetWorldInfo(){return this._inst.GetWorldInfo()}GetRuntime(){return this._runtime}GetBehaviorType(){return this._behaviorType}GetSdkType(){return this._sdkType}Trigger(a){return this._runtime.Trigger(a,this._inst)}DebugTrigger(a){return this._runtime.DebugTrigger(a,this._inst)}TriggerAsync(a){return this._runtime.TriggerAsync(a,this._inst)}PostCreate(){}Tick(){}Tick2(){}PostTick(){}_StartTicking(){this._isTicking||(this._runtime._AddBehInstToTick(this),this._isTicking=!0)}_StopTicking(){this._isTicking&&(this._runtime._RemoveBehInstToTick(this),this._isTicking=!1)}IsTicking(){return this._isTicking}_StartTicking2(){this._isTicking2||(this._runtime._AddBehInstToTick2(this),this._isTicking2=!0)}_StopTicking2(){this._isTicking2&&(this._runtime._RemoveBehInstToTick2(this),this._isTicking2=!1)}IsTicking2(){return this._isTicking2}_StartPostTicking(){this._isPostTicking||(this._runtime._AddBehInstToPostTick(this),this._isPostTicking=!0)}_StopPostTicking(){this._isPostTicking&&(this._runtime._RemoveBehInstToPostTick(this),this._isPostTicking=!1)}IsPostTicking(){return this._isPostTicking}GetDebuggerProperties(){return[]}AddDOMMessageHandler(a,b){this._runtime.AddDOMComponentMessageHandler(this._domComponentId,a,b)}OnSpriteFrameChanged(){}SaveToJson(){return null}LoadFromJson(){}GetPropertyValueByIndex(){}SetPropertyValueByIndex(){}CallAction(a,...b){a.call(this,...b)}CallExpression(a,...b){return a.call(this,...b)}}; + +// c3/objects/pluginManager.js +"use strict";C3.Plugins={},C3.Behaviors={},C3.PluginManager=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a,this._allPlugins=[],this._pluginsByCtor=new Map,this._systemPlugin=null,this._allBehaviors=[],this._behaviorsByCtor=new Map,this._solidBehavior=null,this._jumpthruBehavior=null}CreatePlugin(a){const b=this._runtime.GetObjectReference(a[0]);if(!b)throw new Error("missing plugin");C3.AddCommonACEs(a,b);const c=C3.New(b,{runtime:this._runtime,isSingleGlobal:a[1],isWorld:a[2],isRotatable:a[5],hasEffects:a[8],mustPredraw:a[9]});c.OnCreate(),this._allPlugins.push(c),this._pluginsByCtor.set(b,c)}CreateSystemPlugin(){this._systemPlugin=C3.New(C3.Plugins.System,{runtime:this._runtime,isSingleGlobal:!0}),this._systemPlugin.OnCreate()}CreateBehavior(a){const b=this._runtime.GetObjectReference(a[1]);if(!b)throw new Error("missing behavior");const c=C3.New(b,{runtime:this._runtime});c.OnCreate(),this._allBehaviors.push(c),this._behaviorsByCtor.set(b,c),!this._solidBehavior&&C3.Behaviors.solid&&c instanceof C3.Behaviors.solid?this._solidBehavior=c:!this._jumpthruBehavior&&C3.Behaviors.jumpthru&&c instanceof C3.Behaviors.jumpthru&&(this._jumpthruBehavior=c)}GetPluginByConstructorFunction(a){return this._pluginsByCtor.get(a)||null}HasBehaviorByConstructorFunction(a){return this._behaviorsByCtor.has(a)}GetBehaviorByConstructorFunction(a){return this._behaviorsByCtor.get(a)||null}GetSystemPlugin(){return this._systemPlugin}GetSolidBehavior(){return this._solidBehavior}GetJumpthruBehavior(){return this._jumpthruBehavior}}; + +// c3/objects/imageInfo.js +"use strict";{const a=new Set;C3.ImageInfo=class extends C3.DefendedBase{constructor(){super(),this._url="",this._size=0,this._pixelFormat=0,this._offsetX=0,this._offsetY=0,this._width=0,this._height=0,this._hasMetaData=!1,this._imageAsset=null,this._textureState="",this._rcTex=C3.New(C3.Rect),a.add(this)}Release(){this.ReleaseTexture(),this._imageAsset=null,a.delete(this)}static OnWebGLContextLost(){for(const b of a)b._textureState="",b._rcTex.set(0,0,0,0)}LoadData(a){this._url=a[0],this._size=a[1],this._pixelFormat=a[2],this._offsetX=a[3],this._offsetY=a[4],this._width=a[5],this._height=a[6],this._hasMetaData=!0}LoadAnimationFrameData(a){this._url=a[0],this._size=a[1],this._offsetX=a[2],this._offsetY=a[3],this._width=a[4],this._height=a[5],this._pixelFormat=a[11],this._hasMetaData=!0}LoadDynamicAsset(a,b){if(this._imageAsset)throw new Error("already loaded asset");this._url=b;const c={};return C3.IsAbsoluteURL(b)&&(c.loadPolicy="remote"),this.LoadAsset(a,c),this._imageAsset.Load()}ReplaceWith(a){if(a===this)throw new Error("cannot replace with self");this.ReleaseTexture(),this._url=a._url,this._size=a._size,this._pixelFormat=a._pixelFormat,this._offsetX=a._offsetX,this._offsetY=a._offsetY,this._width=a._width,this._height=a._height,this._hasMetaData=a._hasMetaData,this._imageAsset=a._imageAsset,this._textureState=a._textureState,this._rcTex=a._rcTex}GetURL(){return this._url}GetSize(){return this._size}GetPixelFormat(){return this._pixelFormat}GetOffsetX(){return this._offsetX}GetOffsetY(){return this._offsetY}GetWidth(){return this._width}GetHeight(){return this._height}GetSheetWidth(){return this._imageAsset.GetWidth()}GetSheetHeight(){return this._imageAsset.GetHeight()}LoadAsset(a,b){if(this._imageAsset)throw new Error("already got asset");b=Object.assign({},b,{url:this.GetURL(),size:this.GetSize()}),this._imageAsset=a.LoadImage(b)}async LoadStaticTexture(a,b){if(!this._imageAsset)throw new Error("no asset");if(this._textureState)throw new Error("already loaded texture");this._textureState="loading";const c=await this._imageAsset.LoadStaticTexture(a,b);return c?(this._textureState="loaded",this._hasMetaData||(this._width=c.GetWidth(),this._height=c.GetHeight(),this._hasMetaData=!0),this._rcTex.set(this._offsetX,this._offsetY,this._offsetX+this._width,this._offsetY+this._height),this._rcTex.divide(c.GetWidth(),c.GetHeight()),c):(this._textureState="",null)}ReleaseTexture(){this._textureState&&(this._imageAsset&&this._imageAsset.ReleaseTexture(),this._textureState="",this._rcTex.set(0,0,0,0))}GetTexture(){return this._imageAsset?this._imageAsset.GetTexture():null}GetTexRect(){return this._rcTex}async ExtractImageToCanvas(){const a=await this._imageAsset.LoadToDrawable(),b=C3.CreateCanvas(this._width,this._height),c=b.getContext("2d");return c.drawImage(a,this._offsetX,this._offsetY,this._width,this._height,0,0,this._width,this._height),b}}} + +// c3/objects/animationInfo.js +"use strict";C3.AnimationInfo=class extends C3.DefendedBase{constructor(a){super(),this._name=a[0],this._speed=a[1],this._isLooping=!!a[2],this._repeatCount=a[3],this._repeatTo=a[4],this._isPingPong=!!a[5],this._sid=a[6],this._frames=a[7].map((a)=>C3.New(C3.AnimationFrameInfo,a))}Release(){for(const a of this._frames)a.Release();C3.clearArray(this._frames)}LoadAllAssets(a){for(const b of this._frames)b.GetImageInfo().LoadAsset(a)}LoadAllTextures(a,b){return Promise.all(this._frames.map((c)=>c.GetImageInfo().LoadStaticTexture(a,b)))}ReleaseAllTextures(){for(const a of this._frames)a.GetImageInfo().ReleaseTexture()}GetName(){return this._name}GetSID(){return this._sid}GetFrameCount(){return this._frames.length}GetFrames(){return this._frames}GetFrameAt(a){if(a=Math.floor(a),0>a||a>=this._frames.length)throw new RangeError("invalid frame");return this._frames[a]}GetSpeed(){return this._speed}IsLooping(){return this._isLooping}GetRepeatCount(){return this._repeatCount}GetRepeatTo(){return this._repeatTo}IsPingPong(){return this._isPingPong}}; + +// c3/objects/animationFrameInfo.js +"use strict";C3.AnimationFrameInfo=class extends C3.DefendedBase{constructor(a){super(),this._imageInfo=C3.New(C3.ImageInfo),this._imageInfo.LoadAnimationFrameData(a),this._duration=a[6],this._origin=C3.New(C3.Vector2,a[7],a[8]),this._imagePoints=a[9].map((a)=>C3.New(C3.ImagePoint,this,a)),this._imagePointsByName=new Map;for(const b of this._imagePoints)this._imagePointsByName.set(b.GetName().toLowerCase(),b);this._collisionPoly=null;const b=a[10];6<=b.length&&(this._collisionPoly=C3.New(C3.CollisionPoly,b))}Release(){this._collisionPoly&&(this._collisionPoly.Release(),this._collisionPoly=null),this._imageInfo.Release(),this._imageInfo=null}GetImageInfo(){return this._imageInfo}GetDuration(){return this._duration}GetOriginX(){return this._origin.getX()}GetOriginY(){return this._origin.getY()}GetCollisionPoly(){return this._collisionPoly}GetImagePointByName(a){return this._imagePointsByName.get(a.toLowerCase())||null}GetImagePointByIndex(a){return a=Math.floor(a),0>a||a>=this._imagePoints.length?null:this._imagePoints[a]}GetImagePointCount(){return this._imagePoints.length}}; + +// c3/objects/imagePoint.js +"use strict";C3.ImagePoint=class extends C3.DefendedBase{constructor(a,b){super(),this._afi=a,this._name=b[0],this._pos=C3.New(C3.Vector2,b[1],b[2])}Release(){}GetName(){return this._name}GetX(){return this._pos.getX()}GetY(){return this._pos.getY()}GetVec2(){return this._pos}}; + +// c3/objects/objectClass.js +"use strict";C3.ObjectClass=class extends C3.DefendedBase{constructor(a,b,c){super();const d=a.GetObjectReference(c[1]);if(this._runtime=a,this._plugin=a.GetPluginManager().GetPluginByConstructorFunction(d),this._sdkType=null,this._instSdkCtor=d.Instance,this._index=b,this._sid=c[11],this._name=c[0],this._isGlobal=!!c[9],this._isFamily=!!c[2],this._isOnLoaderLayout=!!c[10],this._instVarSids=c[3].map((a)=>a[0]),this._instVarTypes=c[3].map((a)=>a[1]),this._behaviorsCount=c[4],this._effectsCount=c[5],this._isWorldType=this._plugin.IsWorldType(),this._effectList=null,this._collisionGrid=C3.New(C3.SparseGrid,a.GetOriginalViewportWidth(),a.GetOriginalViewportHeight()),this._anyCollisionCellChanged=!0,this._anyInstanceParallaxed=!1,this._familyMembers=null,this._familyMembersSet=null,this._familyIndex=-1,this._families=null,this._familiesSet=null,this._familyInstVarMap=null,this._familyBehaviorMap=null,this._familyEffectMap=null,this._isInContainer=!1,this._container=null,this._behaviorTypes=c[8].map((a)=>C3.BehaviorType.Create(this,a)),this._behaviorTypesIncludingInherited=[],this._behaviorsByName=new Map,this._behaviorNameToIndex=new Map,this._usedBehaviorCtors=new Set,this._solStack=C3.New(C3.SolStack,this),this._defaultInstanceData=null,this._defaultLayerIndex=0,this._isContained=!1,this._container=null,this._imageInfo=null,this._animations=null,this._animationsByName=null,this._animationsBySid=null,this._textureRefCount=0,this._savedData=new Map,this._unsavedData=new Map,this._instances=[],this._iidsStale=!0,this._plugin.HasEffects()&&(this._effectList=C3.New(C3.EffectList,this,c[12])),c[6]&&(this._imageInfo=C3.New(C3.ImageInfo),this._imageInfo.LoadData(c[6])),c[7]){this._animations=c[7].map((a)=>C3.New(C3.AnimationInfo,a)),this._animationsByName=new Map,this._animationsBySid=new Map;for(const a of this._animations)this._animationsByName.set(a.GetName().toLowerCase(),a),this._animationsBySid.set(a.GetSID(),a)}this._isFamily?(this._familyMembers=[],this._familyMembersSet=new Set,this._familyIndex=this._runtime._GetNextFamilyIndex()):(this._families=[],this._familiesSet=new Set,this._familyInstVarMap=[],this._familyBehaviorMap=[],this._familyEffectMap=[]),this._sdkType=C3.New(d.Type,this),c[13]&&c[13].length&&this._sdkType.LoadTilePolyData(c[13]),(!this._runtime.UsesLoaderLayout()||this._isFamily||this._isOnLoaderLayout||!this._isWorldType)&&this.OnCreate(),this._plugin.IsSingleGlobal()&&(this._plugin._SetSingleGlobalObjectClass(this),this._CreateSingleGlobalInstance(c))}static Create(a,b,c){return C3.New(C3.ObjectClass,a,b,c)}Release(){if(this._imageInfo&&(this._imageInfo.Release(),this._imageInfo=null),this._animations){for(const b of this._animations)b.Release();C3.clearArray(this._animations),this._animationsByName.clear(),this._animationsBySid.clear()}this._solStack.Release(),this._solStack=null,this._savedData.clear(),this._unsavedData.clear(),this._container=null,this._runtime=null}_LoadFamily(a){for(let b=1,c=a.length;bthis._textureRefCount)throw new Error("released textures too many times");0===this._textureRefCount&&this._sdkType.ReleaseTextures()}}OnDynamicTextureLoadComplete(){if(this._isFamily)throw new Error("not applicable to family");this._sdkType.OnDynamicTextureLoadComplete()}GetRuntime(){return this._runtime}GetPlugin(){return this._plugin}GetInstanceSdkCtor(){return this._instSdkCtor}GetName(){return this._name}GetIndex(){return this._index}GetSID(){return this._sid}IsFamily(){return this._isFamily}IsGlobal(){return this._isGlobal}IsWorldType(){return this._isWorldType}GetFamilyIndex(){return this._familyIndex}GetBehaviorTypes(){return this._behaviorTypes}GetBehaviorTypesCount(){return this._behaviorsCount}UsesBehaviorByCtor(a){return a&&this._usedBehaviorCtors.has(a)}GetInstanceVariablesCount(){return this._instVarSids.length}GetInstanceVariableSIDs(){return this._instVarSids}GetInstanceVariableIndexBySID(a){return this._instVarSids.indexOf(a)}GetInstanceVariableType(a){if(a=Math.floor(a),0>a||a>=this._instVarTypes.length)throw new RangeError("invalid instance variable index");return this._instVarTypes[a]}GetEffectTypesCount(){return this._effectsCount}GetBehaviorTypesIncludingInherited(){return this._behaviorTypesIncludingInherited}GetBehaviorTypeByName(a){return this._behaviorsByName.get(a.toLowerCase())||null}GetBehaviorIndexByName(a){const b=this._behaviorNameToIndex.get(a.toLowerCase());return"undefined"==typeof b?-1:b}GetEffectList(){return this._effectList}HasEffects(){return this._plugin.HasEffects()}GetSolStack(){return this._solStack}GetCurrentSol(){return this._solStack.GetCurrentSol()}GetImageInfo(){return this._imageInfo}SetDefaultInstanceData(a){this._defaultInstanceData=a}GetDefaultInstanceData(){return this._defaultInstanceData}_SetDefaultLayerIndex(a){this._defaultLayerIndex=a}GetDefaultLayerIndex(){return this._defaultLayerIndex}GetAnimations(){return this._animations}GetAnimationCount(){return this._animations.length}GetFamilies(){return this._families}BelongsToFamily(a){return this._familiesSet.has(a)}GetFamilyMembers(){return this._familyMembers}FamilyHasMember(a){return this._familyMembersSet.has(a)}GetFamilyBehaviorOffset(a){return this._familyBehaviorMap[a]}GetFamilyInstanceVariableOffset(a){return this._familyInstVarMap[a]}GetAnimationByName(a){if(!this._animations)throw new Error("no animations");return this._animationsByName.get(a.toLowerCase())||null}GetAnimationBySID(a){if(!this._animations)throw new Error("no animations");return this._animationsBySid.get(a)||null}GetFirstAnimationFrame(){if(!this._animations)throw new Error("no animations");return this._animations[0].GetFrameAt(0)}GetDefaultInstanceSize(){if(this._animations){const a=this.GetFirstAnimationFrame().GetImageInfo();return[a.GetWidth(),a.GetHeight()]}return this._imageInfo?[this._imageInfo.GetWidth(),this._imageInfo.GetHeight()]:[100,100]}GetSingleGlobalInstance(){if(!this._plugin.IsSingleGlobal())throw new Error("not a single-global plugin");return this._instances[0]}GetInstances(){return this._instances}GetInstanceCount(){return this._instances.length}_AddInstance(a){this._instances.push(a)}_SetIIDsStale(){this._iidsStale=!0}_UpdateIIDs(){if(this._iidsStale&&!this._isFamily){const a=this._instances;let b=0;for(let c=a.length;ba.SaveToJson())};return this._savedData&&this._savedData.size&&(a["ex"]=C3.ToSuperJSON(this._savedData)),a}_LoadFromJson(a){this._savedData&&(this._savedData.clear(),this._savedData=null);const b=a["ex"];b&&(this._savedData=C3.FromSuperJSON(b));const c=this._instances,d=a["instances"];for(let b=0,e=Math.min(c.length,d.length);ba.IsWorldType())}}; + +// c3/objects/instance.js +"use strict";{let a=0;C3.Instance=class extends C3.DefendedBase{constructor(b){if(super(),this._runtime=b.runtime,this._objectType=b.objectType,this._plugin=this._objectType.GetPlugin(),this._mustPreDraw=this._plugin.MustPreDraw(),this._iid=0,this._uid=b.uid,this._puid=0,this._sequenceId=a++,this._isDestroyed=!1,this._instVarValues=[],this._instVarNames=null,this._behaviorInstances=this._objectType.GetBehaviorTypesIncludingInherited().map((a,b)=>C3.New(C3.BehaviorInstance,{runtime:this._runtime,behaviorType:a,instance:this,index:b})),this._worldInfo=null,this._timeScale=-1,this._sdkInst=null,this._savedData=null,this._unsavedData=null,this._hasTilemap=!1,this._isInContainer=this._objectType.IsInContainer(),this._siblings=this._isInContainer?[]:null,this._dispatcher=null,this._plugin.IsWorldType())if(this._worldInfo=C3.New(C3.WorldInfo,this,b.layer),b.worldData)this._worldInfo.Init(b.worldData);else{const[a,b]=this._objectType.GetDefaultInstanceSize();this._worldInfo.SetSize(a,b),this._worldInfo.GetInstanceEffectList().LoadDefaultEffectParameters()}b.instVarData?this._LoadInstanceVariableData(b.instVarData):this._LoadDefaultInstanceVariables()}Release(){for(const a of this._behaviorInstances)a.Release();C3.clearArray(this._behaviorInstances),this._sdkInst.Release(),this._sdkInst=null,this._savedData&&this._savedData.clear(),this._unsavedData&&this._unsavedData.clear(),this._siblings&&C3.clearArray(this._siblings),this._dispatcher&&(this._dispatcher.Release(),this._dispatcher=null),this._runtime=null,this._objectType=null,this._plugin=null,C3.clearArray(this._instVarValues),this._worldInfo&&(this._worldInfo.Release(),this._worldInfo=null)}_LoadInstanceVariableData(a){if(this._runtime.IsPreview()){this._instVarNames=[];for(const b of a)this._instVarNames.push(b[1])}for(const b of a)this._instVarValues.push(b[0])}_LoadDefaultInstanceVariables(){const a=[!1,0,""];for(let b=0,c=this._objectType.GetInstanceVariablesCount();ba||!isFinite(a))&&(a=0),this._timeScale=a}RestoreTimeScale(){this._timeScale=-1}MustPreDraw(){return this._mustPreDraw}Dispatcher(){return this._dispatcher||(this._dispatcher=C3.New(C3.Event.Dispatcher)),this._dispatcher}Draw(a){this._sdkInst.Draw(a)}OnCreate(a){this._sdkInst.OnCreate(a)}_SetHasTilemap(){this._hasTilemap=!0}HasTilemap(){return this._hasTilemap}GetCurrentImageInfo(){return this._sdkInst.GetCurrentImageInfo()}GetImagePoint(a){return this._sdkInst.GetImagePoint(a)}GetObjectClass(){return this._objectType}BelongsToObjectClass(a){return a.IsFamily()?a.FamilyHasMember(this.GetObjectClass()):this.GetObjectClass()===a}IsInContainer(){return this._isInContainer}_AddSibling(a){this._siblings.push(a)}GetSiblings(){return this._siblings}siblings(){return this._siblings}SetSiblingsSinglePicked(){for(const a of this.siblings())a.GetObjectClass().GetCurrentSol().SetSinglePicked(a)}_PushSiblingsToSolInstances(){for(const a of this.siblings())a.GetObjectClass().GetCurrentSol()._PushInstance(a)}_SetSiblingsToSolInstancesIndex(a){for(const b of this.siblings())b.GetObjectClass().GetCurrentSol()._GetOwnInstances()[a]=b}_PushSiblingsToSolElseInstances(){for(const a of this.siblings())a.GetObjectClass().GetCurrentSol()._PushElseInstance(a)}_SetSiblingsToSolElseInstancesIndex(a){for(const b of this.siblings())b.GetObjectClass().GetCurrentSol()._GetOwnElseInstances()[a]=b}GetPlugin(){return this._plugin}_SetIID(a){this._iid=a}GetIID(){return this._objectType._UpdateIIDs(),this._iid}GetUID(){return this._uid}_GetSequenceID(){return this._sequenceId}GetBehaviorInstances(){return this._behaviorInstances}GetBehaviorInstanceFromCtor(a){if(!a)return null;for(const b of this._behaviorInstances)if(b.GetBehavior()instanceof a)return b;return null}GetBehaviorSdkInstanceFromCtor(a){if(!a)return null;const b=this.GetBehaviorInstanceFromCtor(a);return b?b.GetSdkInstance():null}GetBehaviorIndexBySID(a){const b=this._behaviorInstances;for(let c=0,d=b.length;ca||a>=b.length)throw new RangeError("invalid instance variable");return b[a]}_GetInstanceVariableValueUnchecked(a){return this._instVarValues[a]}SetInstanceVariableValue(a,b){a|=0;const c=this._instVarValues;if(0>a||a>=c.length)throw new RangeError("invalid instance variable");const d=c[a];if("number"==typeof d)c[a]="number"==typeof b?b:parseFloat(b);else if("string"==typeof d)c[a]="string"==typeof b?b:b.toString();else throw new Error("unknown instance variable type")}GetSavedDataMap(){return this._savedData||(this._savedData=new Map),this._savedData}GetUnsavedDataMap(){return this._unsavedData||(this._unsavedData=new Map),this._unsavedData}_TriggerOnCreated(){this._runtime.Trigger(this.GetPlugin().constructor.Cnds.OnCreated,this)}_TriggerOnDestroyed(){this._runtime.Trigger(this.GetPlugin().constructor.Cnds.OnDestroyed,this)}_MarkDestroyed(){this._isDestroyed=!0}IsDestroyed(){return this._isDestroyed}_GetDebuggerProperties(){return this._sdkInst.GetDebuggerProperties()}SaveToJson(a){const b={};if(a?b["c3"]=!0:b["uid"]=this.GetUID(),this._savedData&&this._savedData.size&&(b["ex"]=C3.ToSuperJSON(this._savedData)),-1!==this.GetTimeScale()&&(b["mts"]=this.GetTimeScale()),0d||d>=this._instVarValues.length)continue;let e=b;null===e&&(e=NaN),this._instVarValues[d]=e}if(this._plugin.IsWorldType()){const c=a["w"],d=c["l"];if(this._worldInfo.GetLayer().GetSID()!==d){const a=this._worldInfo.GetLayer(),c=a.GetLayout().GetLayerBySID(d);c?(this._worldInfo._SetLayer(c),a._RemoveInstance(this,!0),c._AddInstance(this,!0),c._SetZIndicesStaleFrom(0),this._worldInfo.SetBboxChanged()):!b&&this._runtime.DestroyInstance(this)}this._worldInfo._LoadFromJson(c)}const e=a["behs"];if(e)for(const[a,b]of Object.entries(e)){const c=parseInt(a,10),d=this.GetBehaviorIndexBySID(c);0>d||d>=this._behaviorInstances.length||this._behaviorInstances[d].LoadFromJson(b)}const f=a["data"];f&&this._sdkInst.LoadFromJson(f)}}} + +// c3/objects/worldInfo.js +"use strict";{const a=C3.New(C3.Rect),b=C3.New(C3.Event,"bboxchange",!1);C3.WorldInfo=class extends C3.DefendedBase{constructor(a,b){super(),this._inst=a,this._objectClass=a.GetObjectClass(),this._runtime=a.GetRuntime(),this._layer=b,this._zIndex=-1,this._isVisible=!0,this._x=0,this._y=0,this._zElevation=0,this._w=0,this._h=0,this._a=0,this._sinA=0,this._cosA=1,this._ox=0,this._oy=0,this._bboxChanged=!0,this._boundingBox=new C3.Rect,this._boundingQuad=new C3.Quad,this._enableBboxChangeEvent=!1,this._isCollisionEnabled=!0,this._isCollisionCellChanged=!0,this._collisionCells=C3.New(C3.Rect,0,0,-1,-1),this._renderCells=C3.New(C3.Rect,0,0,-1,-1),this._sourceCollisionPoly=null,this._transformedCollisionPoly=C3.New(C3.CollisionPoly),this._polyWidth=-1,this._polyHeight=-1,this._polyAngle=0,this._solidFilterInclusive=!1,this._solidFilterTags=null,this._color=C3.New(C3.Color,1,1,1,1),this._colorPremultiplied=C3.New(C3.Color,1,1,1,1),this._hasDefaultColor=!0,this._blendMode=-1,this._srcBlend=0,this._destBlend=0,this._stateGroup=null,this._instanceEffectList=null,this._hasAnyActiveEffect=!1,this._inst.GetObjectClass().HasEffects()&&(this._instanceEffectList=C3.New(C3.InstanceEffectList,this._inst,this)),this.SetBlendMode(0)}Release(){this._stateGroup&&(this._runtime.GetWebGLRenderer().ReleaseStateGroup(this._stateGroup),this._stateGroup=null),this._sourceCollisionPoly=null,this._transformedCollisionPoly.Release(),this._transformedCollisionPoly=null,this._solidFilterTags&&(this._solidFilterTags.clear(),this._solidFilterTags=null),this._inst=null,this._objectClass=null,this._runtime=null,this._layer=null}Init(a){this.SetX(a[0]),this.SetY(a[1]),this.SetWidth(a[3]),this.SetHeight(a[4]),this.SetAngle(a[6]),this._color.setFromJSON(a[7]),this.SetOriginX(a[8]),this.SetOriginY(a[9]),this.SetBlendMode(a[10]),this._instanceEffectList&&this._instanceEffectList._LoadEffectParameters(a[12]),this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup()}GetInstance(){return this._inst}SetX(a){this._x=+a}OffsetX(a){this._x+=+a}GetX(){return this._x}SetY(a){this._y=+a}OffsetY(a){this._y+=+a}GetY(){return this._y}SetXY(a,b){this._x=+a,this._y=+b}OffsetXY(a,b){this._x+=+a,this._y+=+b}EqualsXY(a,b){return this._x===a&&this._y===b}SetZElevation(a){a=+a;this._zElevation===a||(this._zElevation=a,this._UpdateWebGLStateGroup())}GetZElevation(){return this._zElevation}SetWidth(a){this._w=+a}OffsetWidth(a){this._w+=+a}GetWidth(){return this._w}SetHeight(a){this._h=+a}OffsetHeight(a){this._h+=+a}GetHeight(){return this._h}SetSize(a,b){this._w=+a,this._h=+b}SetAngle(b){b=C3.clampAngle(+b);this._a===b||(this._a=b,this._sinA=Math.sin(b),this._cosA=Math.cos(b))}OffsetAngle(b){b=+b;0===b||this.SetAngle(this._a+b)}GetAngle(){return this._a}GetSinAngle(){return this._sinA}GetCosAngle(){return this._cosA}SetOriginX(a){this._ox=+a}OffsetOriginX(a){this._ox+=+a}GetOriginX(){return this._ox}SetOriginY(a){this._oy=+a}OffsetOriginY(a){this._oy+=+a}GetOriginY(){return this._oy}SetOpacity(a){a=C3.clamp(a,0,1);this._color.a===a||(this._color.a=a,this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}OffsetOpacity(a){if(0!==a){const b=this._color.a;this._color.a+=a,this._color.a===b||(this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}}GetOpacity(){return this._color.a}SetUnpremultipliedColor(a){this._color.equalsIgnoringAlpha(a)||(this._color.copyRgb(a),this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}SetUnpremultipliedColorRGB(a,c,d){const b=this._color;b.r===a&&b.g===c&&b.b===d||(b.r=a,b.g=c,b.b=d,this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}OffsetUnpremultipliedColorRGB(a,c,d){if(0!==a||0!==c||0!==d){const b=this._color,e=b.r,f=b.g,g=b.b;b.r+=a,b.g+=c,b.b+=d,b.r===e&&b.g===f&&b.b===g||(this._UpdatePremultipliedColor(),this._UpdateWebGLStateGroup())}}GetUnpremultipliedColor(){return this._color}_UpdatePremultipliedColor(){const a=this._color,b=this._colorPremultiplied;this._hasDefaultColor=a.equalsRgba(1,1,1,1),b.set(a),b.premultiply()}GetPremultipliedColor(){return this._colorPremultiplied}_UpdateWebGLStateGroup(){}GetWebGLStateGroup(){return this._stateGroup}HasDefaultColor(){return this._hasDefaultColor}SetBlendMode(a){if(this._blendMode!==a){this._blendMode=a;const b=this._runtime.GetWebGLRenderer();if(b){const c=b.GetBlendByIndex(a);this._srcBlend=c.srcBlend,this._destBlend=c.destBlend}this._UpdateWebGLStateGroup()}}GetBlendMode(){return this._blendMode}GetSrcBlend(){return this._srcBlend}GetDestBlend(){return this._destBlend}_SetLayer(a){this._layer=a}GetLayer(){return this._layer}GetLayout(){return this.GetLayer().GetLayout()}_SetZIndex(a){this._zIndex=0|a}GetZIndex(){return this._layer._UpdateZIndices(),this._zIndex}_GetLastCachedZIndex(){return this._zIndex}IsVisible(){return this._isVisible}SetVisible(a){this._isVisible=!!a}IsCollisionEnabled(){return this._isCollisionEnabled}SetCollisionEnabled(a){a=!!a;this._isCollisionEnabled===a||(this._isCollisionEnabled=a,a?this.SetBboxChanged():this._RemoveFromCollisionCells())}SetSolidCollisionFilter(a,b){if(this._solidFilterInclusive=!!a,this._solidFilterTags&&this._solidFilterTags.clear(),!b.trim())return void(this._solidFilterTags=null);this._solidFilterTags||(this._solidFilterTags=new Set);for(const c of b.split(" "))c&&this._solidFilterTags.add(c.toLowerCase())}IsSolidCollisionAllowed(a){const b=this._solidFilterInclusive,c=this._solidFilterTags;if(!a||!c)return!b;for(const d of c)if(a.has(d))return b;return!b}SetBboxChanged(){this._bboxChanged=!0,this._isCollisionCellChanged=!0,this._objectClass._SetAnyCollisionCellChanged(!0),this._runtime.UpdateRender(),this._layer.UsesRenderCells()&&(this._CalculateBbox(),this._UpdateRenderCell()),this._enableBboxChangeEvent&&this._inst.Dispatcher().dispatchEvent(b)}_CalculateBbox(){const a=this._boundingBox,b=this._boundingQuad,c=this._x,d=this._y,e=this._w,f=this._h;a.setWH(c-this._ox*e,d-this._oy*f,e,f),0===this._a?b.setFromRect(a):(a.offset(-c,-d),b.setFromRotatedRectPrecalc(a,this._sinA,this._cosA),b.offset(c,d),b.getBoundingBox(a)),a.normalize(),this._bboxChanged=!1}_UpdateBbox(){this._bboxChanged&&this._CalculateBbox()}GetBoundingBox(){return this._UpdateBbox(),this._boundingBox}GetBoundingQuad(){return this._UpdateBbox(),this._boundingQuad}OverwriteBoundingBox(a){this._boundingBox.copy(a),this._boundingQuad.setFromRect(this._boundingBox),this._bboxChanged=!1,this._UpdateCollisionCell(),this._UpdateRenderCell()}SetBboxChangeEventEnabled(a){this._enableBboxChangeEvent=!!a}IsBboxChangeEventEnabled(){return this._enableBboxChangeEvent}SetSourceCollisionPoly(a){this._sourceCollisionPoly=a,this._polyWidth=-1,this._polyHeight=-1,this._polyAngle=0}GetSourceCollisionPoly(){return this._sourceCollisionPoly}HasOwnCollisionPoly(){return!!this._sourceCollisionPoly}GetTransformedCollisionPoly(){return this._GetCustomTransformedCollisionPolyPrecalc(this.GetWidth(),this.GetHeight(),this.GetAngle(),this.GetSinAngle(),this.GetCosAngle())}GetCustomTransformedCollisionPoly(b,c,d){let a=0,e=1;return 0!==d&&(a=Math.sin(d),e=Math.cos(d)),this._GetCustomTransformedCollisionPolyPrecalc(b,c,d,a,e)}_GetCustomTransformedCollisionPolyPrecalc(b,c,d,a,e){return this._polyWidth===b&&this._polyHeight===c&&this._polyAngle===d?this._transformedCollisionPoly:(this._sourceCollisionPoly?(this._transformedCollisionPoly.copy(this._sourceCollisionPoly),this._transformedCollisionPoly.transformPrecalc(b,c,a,e)):this._transformedCollisionPoly.setFromQuad(this.GetBoundingQuad(),-this.GetX(),-this.GetY()),this._polyWidth=b,this._polyHeight=c,this._polyAngle=d,this._transformedCollisionPoly)}HasTilemap(){return this._inst.HasTilemap()}ContainsPoint(a,b){return!!this.GetBoundingBox().containsPoint(a,b)&&!!this.GetBoundingQuad().containsPoint(a,b)&&(this.HasTilemap()?this._inst.GetSdkInstance().TestPointOverlapTile(a,b):!this.HasOwnCollisionPoly()||this.GetTransformedCollisionPoly().containsPoint(a-this.GetX(),b-this.GetY()))}_UpdateCollisionCell(){if(this._isCollisionCellChanged&&this._isCollisionEnabled){const b=this.GetBoundingBox(),c=this._objectClass._GetCollisionCellGrid(),d=this._collisionCells;if(a.set(c.XToCell(b.getLeft()),c.YToCell(b.getTop()),c.XToCell(b.getRight()),c.YToCell(b.getBottom())),!d.equals(a)){const b=this._inst;d.getRight()=this._renderCells.getLeft()}GetRenderCellRange(){return this._renderCells}GetInstanceEffectList(){return this._instanceEffectList}_SetHasAnyActiveEffect(a){this._hasAnyActiveEffect=!!a}HasAnyActiveEffect(){return this._hasAnyActiveEffect}SaveGeometryState(){this._UpdateBbox();const a=this._boundingBox,b=this._boundingQuad;return[this._x,this._y,this._w,this._h,this._a,this._ox,this._oy,a.getLeft(),a.getTop(),a.getRight(),a.getBottom(),b.getTlx(),b.getTly(),b.getTrx(),b.getTry(),b.getBrx(),b.getBry(),b.getBlx(),b.getBly()]}RestoreGeometryState(a){this._x=a[0],this._y=a[1],this._w=a[2],this._h=a[3],this.SetAngle(a[4]),this._ox=a[5],this._oy=a[6],this._boundingBox.set(a[7],a[8],a[9],a[10]),this._boundingQuad.set(a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18]),this._bboxChanged=!1}_SaveToJson(){const a={"x":this.GetX(),"y":this.GetY(),"w":this.GetWidth(),"h":this.GetHeight(),"l":this.GetLayer().GetSID(),"zi":this.GetZIndex()};return 0!==this.GetZElevation()&&(a["ze"]=this.GetZElevation()),0!==this.GetAngle()&&(a["a"]=this.GetAngle()),1!==this.GetOpacity()&&(a["o"]=this.GetOpacity()),.5!==this.GetOriginX()&&(a["oX"]=this.GetOriginX()),.5!==this.GetOriginY()&&(a["oY"]=this.GetOriginY()),0!==this.GetBlendMode()&&(a["bm"]=this.GetBlendMode()),this.IsVisible()||(a["v"]=this.IsVisible()),this.IsCollisionEnabled()||(a["ce"]=this.IsCollisionEnabled()),this.IsBboxChangeEventEnabled()&&(a["be"]=this.IsBboxChangeEventEnabled()),this._instanceEffectList&&(a["fx"]=this._instanceEffectList._SaveToJson()),this._solidFilterInclusive&&(a["sfi"]=this._solidFilterInclusive),this._solidFilterTags&&(a["sft"]=[...this._solidFilterTags].join(" ")),a}_LoadFromJson(a){this.SetX(a["x"]),this.SetY(a["y"]),this.SetWidth(a["w"]),this.SetHeight(a["h"]),this._SetZIndex(a["zi"]),this.SetZElevation(a.hasOwnProperty("ze")?a["ze"]:0),this.SetAngle(a.hasOwnProperty("a")?a["a"]:0),this.SetOpacity(a.hasOwnProperty("o")?a["o"]:1),this.SetOriginX(a.hasOwnProperty("oX")?a["oX"]:.5),this.SetOriginY(a.hasOwnProperty("oY")?a["oY"]:.5),this.SetBlendMode(a.hasOwnProperty("bm")?a["bm"]:0),this.SetVisible(!a.hasOwnProperty("v")||a["v"]),this.SetCollisionEnabled(!a.hasOwnProperty("ce")||a["ce"]),this.SetBboxChangeEventEnabled(!!a.hasOwnProperty("be")&&a["be"]),this.SetSolidCollisionFilter(!!a.hasOwnProperty("sfi")&&a["sfi"],a.hasOwnProperty("sft")?a["sft"]:""),this._instanceEffectList&&a.hasOwnProperty("fx")&&this._instanceEffectList._LoadFromJson(a["fx"]),this.SetBboxChanged()}}} + +// c3/objects/behaviorType.js +"use strict";C3.BehaviorType=class extends C3.DefendedBase{constructor(a,b){super();const c=a.GetRuntime(),d=c.GetPluginManager(),e=c.GetObjectReference(b[1]);d.HasBehaviorByConstructorFunction(e)||d.CreateBehavior(b),this._runtime=c,this._objectClass=a,this._behavior=d.GetBehaviorByConstructorFunction(e),this._sdkType=null,this._instSdkCtor=e.Instance,this._sid=b[2],this._name=b[0],this._sdkType=C3.New(e.Type,this);this.OnCreate()}static Create(a,b){return C3.New(C3.BehaviorType,a,b)}Release(){this._runtime=null,this._behavior=null,this._sdkType.Release(),this._sdkType=null,this._instSdkCtor=null}GetSdkType(){return this._sdkType}OnCreate(){this._sdkType.OnCreate()}GetRuntime(){return this._runtime}GetObjectClass(){return this._objectClass}GetBehavior(){return this._behavior}GetInstanceSdkCtor(){return this._instSdkCtor}GetName(){return this._name}GetSID(){return this._sid}}; + +// c3/objects/behaviorInstance.js +"use strict";C3.BehaviorInstance=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a.runtime,this._behaviorType=a.behaviorType,this._behavior=this._behaviorType.GetBehavior(),this._inst=a.instance,this._index=a.index,this._sdkInst=null,this._behavior._AddInstance(this._inst)}Release(){this._behavior._RemoveInstance(this._inst),this._sdkInst.Release(),this._sdkInst=null,this._runtime=null,this._behaviorType=null,this._behavior=null,this._inst=null}_CreateSdkInstance(a){if(this._sdkInst)throw new Error("already got sdk instance");this._sdkInst=C3.New(this._behaviorType.GetInstanceSdkCtor(),this,a)}GetSdkInstance(){return this._sdkInst}GetObjectInstance(){return this._inst}GetRuntime(){return this._runtime}GetBehaviorType(){return this._behaviorType}GetBehavior(){return this._behavior}_GetIndex(){return this._index}PostCreate(){this._sdkInst.PostCreate()}OnSpriteFrameChanged(a,b){this._sdkInst.OnSpriteFrameChanged(a,b)}_GetDebuggerProperties(){return this._sdkInst.GetDebuggerProperties()}SaveToJson(){return this._sdkInst.SaveToJson()}LoadFromJson(a){return this._sdkInst.LoadFromJson(a)}static SortByTickSequence(c,a){const b=c.GetObjectInstance(),d=a.GetObjectInstance(),e=b.GetObjectClass().GetIndex(),f=d.GetObjectClass().GetIndex();if(e!==f)return e-f;const g=b._GetSequenceID(),h=d._GetSequenceID();return g===h?c.GetBehaviorInstance()._GetIndex()-a.GetBehaviorInstance()._GetIndex():g-h}}; + +// c3/objects/effectList.js +"use strict";C3.EffectList=class extends C3.DefendedBase{constructor(a,b){super(),this._owner=a,this._allEffectTypes=[],this._activeEffectTypes=[],this._effectTypesByName=new Map,this._effectParams=[],this._preservesOpaqueness=!0;for(const c of b){const a=C3.New(C3.EffectType,this,c,this._allEffectTypes.length);this._allEffectTypes.push(a),this._effectTypesByName.set(a.GetName().toLowerCase(),a),3<=c.length&&this._effectParams.push(this._LoadSingleEffectParameters(c[2]))}this.GetRuntime()._AddEffectList(this)}Release(){C3.clearArray(this._allEffectTypes),C3.clearArray(this._activeEffectTypes),this._effectTypesByName.clear(),C3.clearArray(this._effectParams),this._owner=null}PrependEffectTypes(a){if(a.length){this._allEffectTypes=a.concat(this._allEffectTypes);for(const b of a)this._effectTypesByName.set(b.GetName().toLowerCase(),b);for(let a=0,b=this._allEffectTypes.length;a({"name":a.GetName(),"active":a.IsActive(),"params":C3.EffectList.SaveFxParamsToJson(this._effectParams[a.GetIndex()])}))}LoadFromJson(a){for(const b of a){const a=this.GetEffectTypeByName(b["name"]);a&&(a.SetActive(b["active"]),this._effectParams[a.GetIndex()]=C3.EffectList.LoadFxParamsFromJson(b["params"]))}this.UpdateActiveEffects()}}; + +// c3/objects/effectType.js +"use strict";C3.EffectType=class extends C3.DefendedBase{constructor(a,b,c){super(),this._effectList=a,this._id=b[0],this._name=b[1],this._index=c,this._shaderProgram=null,this._isActive=!0}Release(){this._effectList=null,this._shaderProgram=null}Clone(a){const b=C3.New(C3.EffectType,a,[this._id,this._name],-1);return b._shaderProgram=this._shaderProgram,b._isActive=this._isActive,b}_InitRenderer(a){const b=a.GetShaderProgramByName(this._id);if(!b)throw new Error("failed to find shader program '"+this._id+"'");this._shaderProgram=b}GetEffectList(){return this._effectList}GetName(){return this._name}_SetIndex(a){this._index=a}GetIndex(){return this._index}GetOwner(){return this._effectList.GetOwner()}GetRuntime(){return this._effectList.GetRuntime()}SetActive(b){this._isActive=!!b}IsActive(){return this._isActive}GetShaderProgram(){return this._shaderProgram}GetDefaultParameterValues(){const a=[];for(let b=0,c=this._shaderProgram.GetParameterCount();ba.GetShaderProgram().UsesDest())}IsEffectIndexActive(a){return this._activeEffectFlags[a]}SetEffectIndexActive(a,b){this._activeEffectFlags[a]=!!b}_SaveToJson(){return this._effectList.GetAllEffectTypes().map((a)=>({"name":a.GetName(),"active":this._activeEffectFlags[a.GetIndex()],"params":C3.EffectList.SaveFxParamsToJson(this._effectParams[a.GetIndex()])}))}_LoadFromJson(a){for(const b of a){const a=this._effectList.GetEffectTypeByName(b["name"]);a&&(this._activeEffectFlags[a.GetIndex()]=b["active"],this._effectParams[a.GetIndex()]=C3.EffectList.LoadFxParamsFromJson(b["params"]))}this.UpdateActiveEffects()}}; + +// c3/collisions/collisionEngine.js +"use strict";{const a=[],b=[],c=[],d=C3.New(C3.CollisionPoly),e=C3.New(C3.CollisionPoly),f=C3.New(C3.Quad),g=C3.New(C3.Rect),h=C3.New(C3.Rect);C3.CollisionEngine=class extends C3.DefendedBase{constructor(a){super(),this._runtime=a,this._registeredCollisions=[],this._collisionCheckCount=0,this._collisionCheckSec=0,this._polyCheckCount=0,this._polyCheckSec=0}Release(){this._runtime=null}_Update1sStats(){this._collisionCheckSec=this._collisionCheckCount,this._collisionCheckCount=0,this._polyCheckSec=this._polyCheckCount,this._polyCheckCount=0}Get1secCollisionChecks(){return this._collisionCheckSec}Get1secPolyChecks(){return this._polyCheckSec}RegisterCollision(c,a){const b=c.GetWorldInfo(),d=a.GetWorldInfo();b&&d&&b.IsCollisionEnabled()&&d.IsCollisionEnabled()&&this._registeredCollisions.push([c,a])}AddRegisteredCollisionCandidates(c,d,e){for(const[f,a]of this._registeredCollisions){let b=null;if(c===f)b=a;else if(c===a)b=f;else continue;b.BelongsToObjectClass(d)&&!e.includes(b)&&e.push(b)}}CheckRegisteredCollision(e,a){if(!this._registeredCollisions.length)return!1;for(const[b,c]of this._registeredCollisions)if(e===b&&a===c||e===c&&a===b)return!0;return!1}ClearRegisteredCollisions(){C3.clearArray(this._registeredCollisions)}TestOverlap(c,d){if(!c||!d||c===d)return!1;const e=c.GetWorldInfo(),f=d.GetWorldInfo();if(!e.IsCollisionEnabled()||!f.IsCollisionEnabled())return!1;this._collisionCheckCount++;const g=e.GetLayer(),h=f.GetLayer(),i=g!==h&&!g._IsCollisionCompatibleWith(h);return i?this._TestOverlap_DifferentLayers(e,f):this._TestOverlap_SameLayers(e,f)}_TestOverlap_SameLayers(a,b){if(!a.GetBoundingBox().intersectsRect(b.GetBoundingBox()))return!1;if(this._polyCheckCount++,!a.GetBoundingQuad().intersectsQuad(b.GetBoundingQuad()))return!1;if(a.HasTilemap()&&b.HasTilemap())return!1;if(a.HasTilemap())return this.TestTilemapOverlap(a,b);if(b.HasTilemap())return this.TestTilemapOverlap(b,a);if(!a.HasOwnCollisionPoly()&&!b.HasOwnCollisionPoly())return!0;const c=a.GetTransformedCollisionPoly(),d=b.GetTransformedCollisionPoly();return c.intersectsPoly(d,b.GetX()-a.GetX(),b.GetY()-a.GetY())}_TestOverlap_DifferentLayers(a,b){const c=a.GetLayer(),f=b.GetLayer();d.copy(a.GetTransformedCollisionPoly()),e.copy(b.GetTransformedCollisionPoly());const g=d.pointsArr();for(let d=0,e=g.length;dd;++d){const i=2*d-1;if(e.SetXY(f+b*k*i,g+c*k*i),e.SetBboxChanged(),!this.TestOverlap(a,h))if(h=this.TestOverlapSolid(a),h)j=h;else return j&&this.PushInFractional(a,b*i,c*i,j,16),!0}return e.SetXY(f,g),e.SetBboxChanged(),!1}PushInFractional(a,b,c,d,e){let f=2,g=!1,h=!1;const i=a.GetWorldInfo();let j=i.GetX(),k=i.GetY();for(;f<=e;){const e=1/f;f*=2,i.OffsetXY(b*e*(g?1:-1),c*e*(g?1:-1)),i.SetBboxChanged(),this.TestOverlap(a,d)?(g=!0,h=!0):(g=!1,h=!1,j=i.GetX(),k=i.GetY())}h&&(i.SetXY(j,k),i.SetBboxChanged())}PushOutSolidNearest(a,b=100){var c=Math.floor;let d=0;const e=a.GetWorldInfo(),f=e.GetX(),g=e.GetY();let h=0,i=this.TestOverlapSolid(a);if(!i)return!0;for(;d<=b;){let b=0,j=0;if(0==h?(b=0,j=-1,d++):1==h?(b=1,j=-1):2==h?(b=1,j=0):3==h?(b=1,j=1):4==h?(b=0,j=1):5==h?(b=-1,j=1):6==h?(b=-1,j=0):7==h?(b=-1,j=-1):void 0,h=(h+1)%8,e.SetXY(c(f+b*d),c(g+j*d)),e.SetBboxChanged(),!this.TestOverlap(a,i)&&(i=this.TestOverlapSolid(a),!i))return!0}return e.SetXY(f,g),e.SetBboxChanged(),!1}CalculateBounceAngle(a,b,c,d){var e=Math.sin,f=Math.cos,g=Math.PI;const h=a.GetWorldInfo(),j=h.GetX(),k=h.GetY(),l=Math.max(10,C3.distanceTo(b,c,j,k)),m=C3.angleTo(b,c,j,k),n=d||this.TestOverlapSolid(a);if(!n)return C3.clampAngle(m+g);let o=n,p=0,q=0;const r=C3.toRadians(5);let s;for(s=1;36>s;++s){const g=m-s*r;if(h.SetXY(b+f(g)*l,c+e(g)*l),h.SetBboxChanged(),!this.TestOverlap(a,o)&&(o=d?null:this.TestOverlapSolid(a),!o)){p=g;break}}for(36===s&&(p=C3.clampAngle(m+g)),o=n,s=1;36>s;++s){const g=m+s*r;if(h.SetXY(b+f(g)*l,c+e(g)*l),h.SetBboxChanged(),!this.TestOverlap(a,o)&&(o=d?null:this.TestOverlapSolid(a),!o)){q=g;break}}if(36===s&&(q=C3.clampAngle(m+g)),h.SetXY(j,k),h.SetBboxChanged(),q===p)return q;const i=C3.angleDiff(q,p)/2;let t=C3.angleClockwise(q,p)?C3.clampAngle(p+i+g):C3.clampAngle(q+i);const u=f(m),v=e(m),w=f(t),x=e(t),y=u*w+v*x;return C3.angleTo(0,0,u-2*y*w,v-2*y*x)}TestSegmentOverlap(a,b,c,d,e){var f=Math.min,h=Math.max;if(!e)return!1;const i=e.GetWorldInfo();if(!i.IsCollisionEnabled())return!1;if(this._collisionCheckCount++,g.set(f(a,c),f(b,d),h(a,c),h(b,d)),!i.GetBoundingBox().intersectsRect(g))return!1;if(e.HasTilemap())return this._TestSegmentOverlapTilemap(a,b,c,d,e,i);if(this._polyCheckCount++,!i.GetBoundingQuad().intersectsSegment(a,b,c,d))return!1;if(!i.HasOwnCollisionPoly())return!0;const j=i.GetTransformedCollisionPoly();return j.intersectsSegment(i.GetX(),i.GetY(),a,b,c,d)}_TestSegmentOverlapTilemap(a,d,e,j,c,i){const k=i.GetX(),l=i.GetY(),m=c.GetSdkInstance(),n=b;h.set(a,d,e,j),h.normalize(),m.GetCollisionRectCandidates(h,n);for(let b=0,h=n.length;bthis._loadingProgress=a.progress,this._webglPercentText=null,this._loadingLogoAsset=null,this._splashTextures={logo:null,powered:null,website:null},this._splashFrameNumber=0,this._splashFadeInFinishTime=0,this._splashFadeOutStartTime=0,this._splashState="fade-in",this._splashDoneResolve=null,this._splashDonePromise=new Promise((a)=>this._splashDoneResolve=a)}_SetGPUPowerPreference(a){this._gpuPreference=a}async CreateCanvas(a){this._canvas=a["canvas"],this._canvas.addEventListener("webglcontextlost",(a)=>this._OnWebGLContextLost(a)),this._canvas.addEventListener("webglcontextrestored",(a)=>this._OnWebGLContextRestored(a)),this._webglRenderer=C3.New(C3.Gfx.WebGLRenderer,this._canvas,{powerPreference:this._gpuPreference,enableGpuProfiling:!0,alpha:!0}),await this._webglRenderer.InitState(),this._webglRenderer.SupportsGPUProfiling()||(this._gpuLastUtilisation=NaN),this._runtime.AddDOMComponentMessageHandler("runtime","window-resize",(a)=>this._OnWindowResize(a)),this._runtime.AddDOMComponentMessageHandler("runtime","fullscreenchange",(a)=>this._OnFullscreenChange(a)),this._runtime.AddDOMComponentMessageHandler("runtime","fullscreenerror",(a)=>this._OnFullscreenError(a)),this._isDocumentFullscreen=!!a["isFullscreen"],this.SetSize(a["windowInnerWidth"],a["windowInnerHeight"],!0),this._shaderData=a["shaders"]||self["C3_Shaders"],await this._LoadShaderPrograms();let b=!1;for(const c of this._runtime._GetAllEffectLists()){for(const a of c.GetAllEffectTypes())a._InitRenderer(this._webglRenderer),a.GetShaderProgram().UsesDest()&&(b=!0);c.UpdateActiveEffects()}this._runtime._SetUsesAnyBackgroundBlending(b),this._webglRenderer.SupportsGPUProfiling()&&(this._gpuFrameTimingsBuffer=C3.New(C3.Gfx.WebGLQueryResultBuffer,this._webglRenderer))}async _LoadShaderPrograms(){if(this._shaderData){const a=[];for(const[b,c]of Object.entries(this._shaderData))a.push(this._webglRenderer.CreateShaderProgram(c,C3.Gfx.WebGLShaderProgram.GetDefaultVertexShaderSource(),b));await Promise.all(a),this._webglRenderer.ResetLastProgram(),this._webglRenderer.SetTextureFillMode()}}Release(){this._runtime=null,this._webglRenderer=null,this._canvas=null}_OnWindowResize(a){this._runtime.IsInWorker()&&(self.devicePixelRatio=a["devicePixelRatio"]),this.SetSize(a["innerWidth"],a["innerHeight"]),this._runtime.UpdateRender()}_OnFullscreenChange(a){this._isDocumentFullscreen=!!a["isFullscreen"],this.SetSize(a["innerWidth"],a["innerHeight"],!0),this._runtime.UpdateRender()}_OnFullscreenError(a){this._isDocumentFullscreen=!!a["isFullscreen"],this.SetSize(a["innerWidth"],a["innerHeight"],!0),this._runtime.UpdateRender()}SetSize(a,b,c=!1){var d=Math.floor;if(a=d(a),b=d(b),0>=a||0>=b)throw new Error("invalid size");if(this._windowInnerWidth!==a||this._windowInnerHeight!==b||c){this._windowInnerWidth=a,this._windowInnerHeight=b;const c=this.GetCurrentFullscreenMode();"letterbox-scale"===c?this._CalculateLetterboxScale(a,b):"letterbox-integer-scale"===c?this._CalculateLetterboxIntegerScale(a,b):"off"===c?this._CalculateFixedSizeCanvas(a,b):this._CalculateFullsizeCanvas(a,b),this._UpdateFullscreenScalingQuality(c),this._canvas.width=this._canvasDeviceWidth,this._canvas.height=this._canvasDeviceHeight,this._runtime.PostComponentMessageToDOM("canvas","update-size",{"marginLeft":this._canvasCssOffsetX,"marginTop":this._canvasCssOffsetY,"styleWidth":this._canvasCssWidth,"styleHeight":this._canvasCssHeight}),this._webglRenderer.SetSize(this._canvasDeviceWidth,this._canvasDeviceHeight,!0)}}_CalculateLetterboxScale(a,b){var c=Math.round,d=Math.floor;const e=self.devicePixelRatio,f=this._runtime.GetOriginalViewportWidth(),g=this._runtime.GetOriginalViewportHeight(),h=f/g;if(a/b>h){this._canvasCssWidth=c(b*h),this._canvasCssHeight=b,this._canvasCssOffsetX=d((a-this._canvasCssWidth)/2),this._canvasCssOffsetY=0}else{this._canvasCssWidth=a,this._canvasCssHeight=c(a/h),this._canvasCssOffsetX=0,this._canvasCssOffsetY=d((b-this._canvasCssHeight)/2)}this._canvasDeviceWidth=c(this._canvasCssWidth*e),this._canvasDeviceHeight=c(this._canvasCssHeight*e),this._runtime.SetViewportSize(f,g)}_CalculateLetterboxIntegerScale(a,b){var c=Math.max,d=Math.round,e=Math.floor;const f=self.devicePixelRatio;1!==f&&(a+=1,b+=1);const g=this._runtime.GetOriginalViewportWidth(),h=this._runtime.GetOriginalViewportHeight(),i=g/h,j=a/b;let k;if(j>i){const a=b*i;k=a*f/g}else{const b=a/i;k=b*f/h}1k&&(k=1/Math.ceil(1/k)),this._canvasDeviceWidth=d(g*k),this._canvasDeviceHeight=d(h*k),this._canvasCssWidth=this._canvasDeviceWidth/f,this._canvasCssHeight=this._canvasDeviceHeight/f,this._canvasCssOffsetX=c(e((a-this._canvasCssWidth)/2),0),this._canvasCssOffsetY=c(e((b-this._canvasCssHeight)/2),0),this._runtime.SetViewportSize(g,h)}_CalculateFullsizeCanvas(a,b){var c=Math.round;const d=self.devicePixelRatio;this._canvasCssWidth=a,this._canvasCssHeight=b,this._canvasDeviceWidth=c(this._canvasCssWidth*d),this._canvasDeviceHeight=c(this._canvasCssHeight*d),this._canvasCssOffsetX=0,this._canvasCssOffsetY=0;const e=this.GetDisplayScale();this._runtime.SetViewportSize(this._canvasCssWidth/e,this._canvasCssHeight/e)}_CalculateFixedSizeCanvas(a,b){var c=Math.round,d=Math.floor;const e=self.devicePixelRatio;this._canvasCssWidth=this._runtime.GetViewportWidth(),this._canvasCssHeight=this._runtime.GetViewportHeight(),this._canvasDeviceWidth=c(this._canvasCssWidth*e),this._canvasDeviceHeight=c(this._canvasCssHeight*e),this.IsDocumentFullscreen()?(this._canvasCssOffsetX=d((a-this._canvasCssWidth)/2),this._canvasCssOffsetY=d((b-this._canvasCssHeight)/2)):(this._canvasCssOffsetX=0,this._canvasCssOffsetY=0),this._runtime.SetViewportSize(this._runtime.GetViewportWidth(),this._runtime.GetViewportHeight())}_UpdateFullscreenScalingQuality(a){if("high"===this._wantFullscreenScalingQuality)this._drawWidth=this._canvasDeviceWidth,this._drawHeight=this._canvasDeviceHeight,this._fullscreenScalingQuality="high";else{let b,c;if("off"===this.GetCurrentFullscreenMode()?(b=this._runtime.GetViewportWidth(),c=this._runtime.GetViewportHeight()):(b=this._runtime.GetOriginalViewportWidth(),c=this._runtime.GetOriginalViewportHeight()),this._canvasDeviceWidtha&&(this._drawHeight=this._drawWidth/d)}else if("scale-outer"===a){const a=b/c,d=this._windowInnerWidth/this._windowInnerHeight;d>a?this._drawWidth=this._drawHeight*d:dd||"scale-inner"===a&&eb.IsCompatibleWithOptions(a));let d;return-1===c?d=this._webglRenderer.CreateRenderTarget(a):(d=b[c],b.splice(c,1)),this._usedAdditionalRenderTargets.add(d),d}ReleaseAdditionalRenderTarget(a){if(!this._usedAdditionalRenderTargets.has(a))throw new Error("render target not in use");this._usedAdditionalRenderTargets.delete(a),this._availableAdditionalRenderTargets.push(a)}*activeLayersGpuProfiles(){for(const a of this._runtime.GetLayoutManager().runningLayouts())for(const b of a.GetLayers()){const a=this._layersGpuProfile.get(b);a&&(yield a)}}GetLayerTimingsBuffer(a){if(!this._webglRenderer.SupportsGPUProfiling())return null;let b=this._layersGpuProfile.get(a);return b||(b={name:a.GetName(),timingsBuffer:C3.New(C3.Gfx.WebGLQueryResultBuffer,this._webglRenderer),curUtilisation:0,lastUtilisation:0},this._layersGpuProfile.set(a,b)),b.timingsBuffer}_Update1sFrameRange(){if(this._webglRenderer.SupportsGPUProfiling()&&0===this._gpuTimeEndFrame){this._gpuTimeEndFrame=this._webglRenderer.GetFrameNumber(),this._gpuCurUtilisation=NaN;for(const a of this.activeLayersGpuProfiles())a.curUtilisation=NaN}}_UpdateTick(){var a=Math.min;if(this._webglRenderer.SupportsGPUProfiling()&&isNaN(this._gpuCurUtilisation)&&(this._gpuCurUtilisation=this._gpuFrameTimingsBuffer.GetFrameRangeResultSum(this._gpuTimeStartFrame,this._gpuTimeEndFrame),!isNaN(this._gpuCurUtilisation))){if(this._runtime.IsDebug())for(const a of this.activeLayersGpuProfiles())if(a.curUtilisation=a.timingsBuffer.GetFrameRangeResultSum(this._gpuTimeStartFrame,this._gpuTimeEndFrame),isNaN(a.curUtilisation))return;if(this._gpuFrameTimingsBuffer.DeleteAllBeforeFrameNumber(this._gpuTimeEndFrame),this._gpuLastUtilisation=a(this._gpuCurUtilisation,1),this._runtime.IsDebug()){for(const b of this.activeLayersGpuProfiles())b.timingsBuffer.DeleteAllBeforeFrameNumber(this._gpuTimeEndFrame),b.lastUtilisation=a(b.curUtilisation,1);C3Debugger.UpdateGPUProfile(this._gpuLastUtilisation,[...this.activeLayersGpuProfiles()])}this._gpuTimeStartFrame=this._gpuTimeEndFrame,this._gpuTimeEndFrame=0}}GetGPUFrameTimingsBuffer(){return this._gpuFrameTimingsBuffer}GetGPUUtilisation(){return this._gpuLastUtilisation}SnapshotCanvas(a,b){return(this._snapshotFormat=a,this._snapshotQuality=b,this._snapshotPromise)?this._snapshotPromise:(this._snapshotPromise=new Promise((a)=>{this._snapshotResolve=a}),this._snapshotPromise)}_MaybeTakeSnapshot(){this._snapshotFormat&&(C3.CanvasToBlob(this._canvas,this._snapshotFormat,this._snapshotQuality).then((a)=>{this._snapshotUrl=URL.createObjectURL(a),this._snapshotPromise=null,this._snapshotResolve(this._snapshotUrl)}),this._snapshotFormat="",this._snapshotQuality=1)}GetCanvasSnapshotUrl(){return this._snapshotUrl}InitLoadingScreen(a){if(2===a)this._webglPercentText=C3.New(C3.Gfx.WebGLText,this._webglRenderer),this._webglPercentText.SetIsAsync(!1),this._webglPercentText.SetFontName("Arial"),this._webglPercentText.SetFontSize(16),this._webglPercentText.SetHorizontalAlignment("center"),this._webglPercentText.SetVerticalAlignment("center"),this._webglPercentText.SetSize(300,200);else if(0===a){const a=this._runtime.GetAssetManager();let b;if(this._runtime.IsPreview()){if(!a._HasLocalURLBlob("loading-logo.png"))return;b=a.GetLocalUrlAsBlobUrl("loading-logo.png")}else b=a.GetIconsSubfolder()+"loading-logo.png";this._loadingLogoAsset=a.LoadImage({url:b}),this._loadingLogoAsset.LoadStaticTexture(this._webglRenderer).catch(()=>console.warn(`[C3 runtime] Failed to load 'loading-logo.png' for loading screen. Check the project has an icon with that name.`))}else 4===a&&(this._LoadSvgSplashImage("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHdpZHRoPSIxNzAwLjc5MDA0cHgiIGhlaWdodD0iMTcwMC43OTAwNHB4IiB2aWV3Qm94PSIyODcgMzE3IDExMjUgMTEyNSINCgkgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTcwMC43OTAwNCAxNzAwLjc5MDA0IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJsb2dvIj4NCgk8Zz4NCgkJPGc+DQoJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0ZGRkZGRiIgZD0iTTM1NC45Nzc1NCwxMTk1LjYyMzA1DQoJCQkJYzExLjM4NDc3LDAsMjIuMDEyNywzLjIzNzMsMzEuMDE3NTgsOC44Mzc4OWMxLjk0NjI5LDEuMjEwOTQsMi41ODQ5NiwzLjc0OTAyLDEuNDM4NDgsNS43MzQzOGwtNC45MzI2Miw4LjU0MTk5DQoJCQkJYy0zLjI3ODMyLDUuNjc5NjktMTAuMDMzMiw4LjM3Njk1LTE2LjMxNzM4LDYuNTAwOThjLTIuNzY0NjUtMC44MjUyLTUuNjkzMzYtMS4yNjg1NS04LjcyNjU2LTEuMjY4NTUNCgkJCQljLTE2LjgyOTEsMC0zMC40NzI2NiwxMy42NDM1NS0zMC40NzI2NiwzMC40NzI2NmMwLDE2LjgyODEzLDEzLjY0MzU1LDMwLjQ3MjY2LDMwLjQ3MjY2LDMwLjQ3MjY2DQoJCQkJYzMuMDMzMiwwLDUuOTYxOTEtMC40NDMzNiw4LjcyNjU2LTEuMjY4NTVjNi4yOTQ5Mi0xLjg3OTg4LDEzLjAzMzIsMC44MTE1MiwxNi4zMTczOCw2LjUwMDk4bDQuOTMxNjQsOC41NDE5OQ0KCQkJCWMxLjE0NzQ2LDEuOTg4MjgsMC41MTA3NCw0LjUyMzQ0LTEuNDM4NDgsNS43MzQzOGMtOS4wMDM5MSw1LjYwMTU2LTE5LjYzMTg0LDguODM3ODktMzEuMDE2Niw4LjgzNzg5DQoJCQkJYy0zMi40ODUzNSwwLTU4LjgxOTM0LTI2LjMzNDk2LTU4LjgxOTM0LTU4LjgxOTM0QzI5Ni4xNTgyLDEyMjEuOTU3MDMsMzIyLjQ5MjE5LDExOTUuNjIzMDUsMzU0Ljk3NzU0LDExOTUuNjIzMDUNCgkJCQlMMzU0Ljk3NzU0LDExOTUuNjIzMDV6IE03MDMuMjE0ODQsMTI1OS4xNzU3OGMtMTQuNTU5NTctOS44MTczOC0yMC4yMDMxMy0yMC4wMzIyMy0yMC4yMDMxMy0zMy4wODAwOA0KCQkJCWMwLTE4LjQ4OTI2LDE1LjcxNDg0LTI5Ljc2MzY3LDM4LjI2NjYtMjkuNzYzNjdjOS42NTcyMywwLDE4LjcyMTY4LDIuNTQyOTcsMjYuNTU5NTcsNi45OTQxNA0KCQkJCWMyLjA0OTgsMS4xNjQwNiwyLjc2MTcyLDMuNzgzMiwxLjU4MzAxLDUuODI0MjJsLTMuNDE3OTcsNS45MTk5MmMtMy4yNDcwNyw1LjYyNDAyLTkuOTA4Miw4LjMzMTA1LTE2LjE1MzMyLDYuNTQ4ODMNCgkJCQljLTIuNzIzNjMtMC43NzYzNy01LjU5ODYzLTEuMTkyMzgtOC41NzEyOS0xLjE5MjM4Yy0xMC40OTAyMywwLTExLjU5ODYzLDkuNTc2MTctNC44NTc0MiwxNC4xMjMwNWwyMy42ODY1MiwxNS45NzY1Ng0KCQkJCWM5Ljk5MDIzLDYuNzM4MjgsMTUuODk1NTEsMTcuMDY2NDEsMTUuODk1NTEsMjguNzE4NzVjMCwxOC43ODYxMy0xNS4wMDY4NCwzMy4zMDc2Mi0zOC4yNjc1OCwzMy4zMDc2Mg0KCQkJCWMtOS41MjI0NiwwLTE4LjU4Nzg5LTEuOTU3MDMtMjYuODE1NDMtNS40OTAyM2MtNy43ODEyNS0zLjMzOTg0LTEwLjkzMzU5LTEyLjc4MjIzLTYuNjk3MjctMjAuMTE4MTZsMy40ODczLTYuMDQxOTkNCgkJCQljMS4yMTM4Ny0yLjA5OTYxLDMuOTMxNjQtMi43NTk3Nyw1Ljk3NDYxLTEuNDU2MDVjNi44NTkzOCw0LjM4MjgxLDE2LjQ5MDIzLDcuNTk0NzMsMjQuNzU4NzksNy41OTQ3Mw0KCQkJCWMxMC41NDU5LDAsMTEuMzI4MTMtOS45NTg5OCwzLjc2NzU4LTE1LjA1NzYyTDcwMy4yMTQ4NCwxMjU5LjE3NTc4TDcwMy4yMTQ4NCwxMjU5LjE3NTc4eiBNOTg0LjYzMDg2LDEyMDIuMDAwOTgNCgkJCQljMC0yLjM0NzY2LDEuOTAzMzItNC4yNTE5NSw0LjI1MTk1LTQuMjUxOTVoOS45MjE4OGM3LjgyNzE1LDAsMTQuMTcyODUsNi4zNDU3LDE0LjE3Mjg1LDE0LjE3MzgzdjU3LjQwMTM3DQoJCQkJYzAsOC42MTAzNSw2Ljk4MDQ3LDE1LjU5MDgyLDE1LjU5MDgyLDE1LjU5MDgyczE1LjU5MDgyLTYuOTgwNDcsMTUuNTkwODItMTUuNTkwODJ2LTU3LjQwMTM3DQoJCQkJYzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTcyODUtMTQuMTczODNoOS45MjA5YzIuMzQ4NjMsMCw0LjI1MTk1LDEuOTA0Myw0LjI1MTk1LDQuMjUxOTV2NjcuMzIzMjQNCgkJCQljMCwyNC4yNjU2My0xOS42NzA5LDQzLjkzNzUtNDMuOTM2NTIsNDMuOTM3NXMtNDMuOTM3NS0xOS42NzE4OC00My45Mzc1LTQzLjkzNzVWMTIwMi4wMDA5OEw5ODQuNjMwODYsMTIwMi4wMDA5OHoNCgkJCQkgTTQ2Ni44NjkxNCwxMTk1LjYyMzA1YzMyLjQ4NDM4LDAsNTguODE4MzYsMjYuMzMzOTgsNTguODE4MzYsNTguODE5MzRjMCwzMi40ODQzOC0yNi4zMzM5OCw1OC44MTkzNC01OC44MTgzNiw1OC44MTkzNA0KCQkJCWMtMzIuNDg2MzMsMC01OC44MTkzNC0yNi4zMzQ5Ni01OC44MTkzNC01OC44MTkzNEM0MDguMDQ5OCwxMjIxLjk1NzAzLDQzNC4zODI4MSwxMTk1LjYyMzA1LDQ2Ni44NjkxNCwxMTk1LjYyMzA1DQoJCQkJTDQ2Ni44NjkxNCwxMTk1LjYyMzA1eiBNNDY2Ljg2OTE0LDEyMjUuMDMzMmMtMTYuMjQzMTYsMC0yOS40MTAxNiwxMy4xNjY5OS0yOS40MTAxNiwyOS40MDkxOA0KCQkJCXMxMy4xNjY5OSwyOS40MDgyLDI5LjQxMDE2LDI5LjQwODJjMTYuMjQxMjEsMCwyOS40MDgyLTEzLjE2NjAyLDI5LjQwODItMjkuNDA4MlM0ODMuMTEwMzUsMTIyNS4wMzMyLDQ2Ni44NjkxNCwxMjI1LjAzMzINCgkJCQlMNDY2Ljg2OTE0LDEyMjUuMDMzMnogTTU1Ni43MzI0MiwxMzExLjEzNDc3Yy0yLjM0NzY2LDAtNC4yNTE5NS0xLjkwMjM0LTQuMjUxOTUtNC4yNXYtOTQuOTYxOTENCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzM4My0xNC4xNzM4M2gzLjk1ODk4YzQuNjI1LDAsOC45NTg5OCwyLjI1Njg0LDExLjYxMTMzLDYuMDQ1OWw0MS4xMjIwNyw1OC43NDcwN3YtNTAuNjE5MTQNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2g5LjkyMTg4YzIuMzQ3NjYsMCw0LjI1MTk1LDEuOTA0Myw0LjI1MTk1LDQuMjUxOTV2OTQuOTYwOTQNCgkJCQljMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3MzgzLDE0LjE3Mjg1aC0zLjk1ODk4Yy00LjYyNSwwLTguOTU4OTgtMi4yNTU4Ni0xMS42MTEzMy02LjA0NDkybC00MS4xMjIwNy01OC43NDYwOXY1MC42MTgxNg0KCQkJCWMwLDcuODI5MS02LjM0NTcsMTQuMTcyODUtMTQuMTcyODUsMTQuMTcyODVINTU2LjczMjQyTDU1Ni43MzI0MiwxMzExLjEzNDc3eiBNMTIxNS4wMjA1MSwxMjExLjkyMjg1DQoJCQkJYzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTcyODUtMTQuMTczODNoNTAuMzE1NDNjMi4zNDg2MywwLDQuMjUxOTUsMS45MDQzLDQuMjUxOTUsNC4yNTE5NXY1LjY2OTkyDQoJCQkJYzAsNy44MjcxNS02LjM0NTcsMTQuMTcyODUtMTQuMTcyODUsMTQuMTcyODVoLTYuMDI0NDF2NzUuMTE4MTZjMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3Mjg1LDE0LjE3Mjg1aC05LjkyMTg4DQoJCQkJYy0yLjM0ODYzLDAtNC4yNTE5NS0xLjkwMjM0LTQuMjUxOTUtNC4yNXYtODUuMDQxMDJoLTE1Ljk0NDM0Yy0yLjM0ODYzLDAtNC4yNTE5NS0xLjkwMzMyLTQuMjUxOTUtNC4yNTE5NVYxMjExLjkyMjg1DQoJCQkJTDEyMTUuMDIwNTEsMTIxMS45MjI4NXogTTc3Ni40NDkyMiwxMjExLjkyMjg1YzAtNy44MjgxMyw2LjM0NTctMTQuMTczODMsMTQuMTczODMtMTQuMTczODNoNTAuMzE0NDUNCgkJCQljMi4zNDk2MSwwLDQuMjUxOTUsMS45MDQzLDQuMjUxOTUsNC4yNTE5NXY1LjY2OTkyYzAsNy44MjcxNS02LjM0NTcsMTQuMTcyODUtMTQuMTcxODgsMTQuMTcyODVoLTYuMDI1Mzl2NzUuMTE4MTYNCgkJCQljMCw3LjgyOTEtNi4zNDU3LDE0LjE3Mjg1LTE0LjE3Mjg1LDE0LjE3Mjg1aC05LjkyMDljLTIuMzQ5NjEsMC00LjI1MTk1LTEuOTAyMzQtNC4yNTE5NS00LjI1di04NS4wNDEwMmgtMTUuOTQ1MzENCgkJCQljLTIuMzQ3NjYsMC00LjI1MTk1LTEuOTAzMzItNC4yNTE5NS00LjI1MTk1VjEyMTEuOTIyODVMNzc2LjQ0OTIyLDEyMTEuOTIyODV6IE05MjkuNjA0NDksMTI3Mi4wMjI0NmwyNi45NTgwMSwzMi4xMjc5Mw0KCQkJCWMyLjMxNDQ1LDIuNzU3ODEsMC4zNDM3NSw2Ljk4NDM4LTMuMjU2ODQsNi45ODQzOGgtMTkuNzA1MDhjLTQuMTg5NDUsMC04LjE2NTA0LTEuODUxNTYtMTAuODU3NDItNS4wNjA1NWwtMjIuNjgxNjQtMjcuMDMxMjUNCgkJCQl2MjcuODQxOGMwLDIuMzQ3NjYtMS45MDMzMiw0LjI1LTQuMjUxOTUsNC4yNWgtOS45MjA5Yy03LjgyNzE1LDAtMTQuMTcyODUtNi4zNDM3NS0xNC4xNzI4NS0xNC4xNzI4NXYtODUuMDM5MDYNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2gyOS43NjM2N2MyMi43MDAyLDAsNDEuMTAyNTQsMTcuMTMzNzksNDEuMTAyNTQsMzguMjY4NTUNCgkJCQlDOTU2Ljc1NDg4LDEyNTIuNTkwODIsOTQ1LjQzNjUyLDEyNjYuNzAyMTUsOTI5LjYwNDQ5LDEyNzIuMDIyNDZMOTI5LjYwNDQ5LDEyNzIuMDIyNDZ6IE05MDAuMDYxNTIsMTIyMS44NDM3NXYzMi41OTg2M2g4LjUwMzkxDQoJCQkJYzEwLjk1ODk4LDAsMTkuODQyNzctNy4yOTc4NSwxOS44NDI3Ny0xNi4yOTg4M2MwLTkuMDAxOTUtOC44ODM3OS0xNi4yOTk4LTE5Ljg0Mjc3LTE2LjI5OThIOTAwLjA2MTUyTDkwMC4wNjE1MiwxMjIxLjg0Mzc1eg0KCQkJCSBNMTE1OC4zNTkzOCwxMTk1LjYyMzA1YzExLjM4NDc3LDAsMjIuMDEyNywzLjIzNzMsMzEuMDE3NTgsOC44Mzc4OWMxLjk0NzI3LDEuMjEwOTQsMi41ODQ5NiwzLjc0OTAyLDEuNDM4NDgsNS43MzQzOA0KCQkJCWwtNC45MzI2Miw4LjU0MTk5Yy0zLjI3ODMyLDUuNjc5NjktMTAuMDMzMiw4LjM3Njk1LTE2LjMxNzM4LDYuNTAwOThjLTIuNzY0NjUtMC44MjUyLTUuNjkzMzYtMS4yNjg1NS04LjcyNTU5LTEuMjY4NTUNCgkJCQljLTE2LjgyOTEsMC0zMC40NzI2NiwxMy42NDM1NS0zMC40NzI2NiwzMC40NzI2NmMwLDE2LjgyODEzLDEzLjY0MzU1LDMwLjQ3MjY2LDMwLjQ3MjY2LDMwLjQ3MjY2DQoJCQkJYzMuMDMyMjMsMCw1Ljk2MDk0LTAuNDQzMzYsOC43MjU1OS0xLjI2ODU1YzYuMjk1OS0xLjg3OTg4LDEzLjAzMzIsMC44MTE1MiwxNi4zMTgzNiw2LjUwMDk4bDQuOTMwNjYsOC41NDE5OQ0KCQkJCWMxLjE0NzQ2LDEuOTg4MjgsMC41MTA3NCw0LjUyMzQ0LTEuNDM3NSw1LjczNDM4Yy05LjAwNDg4LDUuNjAxNTYtMTkuNjMyODEsOC44Mzc4OS0zMS4wMTc1OCw4LjgzNzg5DQoJCQkJYy0zMi40ODUzNSwwLTU4LjgxOTM0LTI2LjMzNDk2LTU4LjgxOTM0LTU4LjgxOTM0QzEwOTkuNTQwMDQsMTIyMS45NTcwMywxMTI1Ljg3NDAyLDExOTUuNjIzMDUsMTE1OC4zNTkzOCwxMTk1LjYyMzA1eiIvPg0KCQkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiMwMEZGREEiIGQ9Ik0xMzE4LjE5NzI3LDEyMDYuMDMyMjMNCgkJCQljMC03LjgyODEzLDYuMzQ1Ny0xNC4xNzM4MywxNC4xNzI4NS0xNC4xNzM4M2MyMC42NTYyNSwwLDQxLjMxMjUsMCw2MS45Njg3NSwwYzMuNDI5NjksMCw1LjQ1MDIsMy44ODA4NiwzLjQ4MzQsNi42OTA0Mw0KCQkJCWwtMTkuMjk2ODgsMjcuNTY3MzhjMTUuNTQyOTcsOC4zNzU5OCwyNi4xMDY0NSwyNC44MDA3OCwyNi4xMDY0NSw0My42OTUzMWMwLDI3LjM5NzQ2LTIyLjIwODk4LDQ5LjYwNjQ1LTQ5LjYwNjQ1LDQ5LjYwNjQ1DQoJCQkJYy0xNi42ODg0OCwwLTMxLjQ1MTE3LTguMjQwMjMtNDAuNDQzMzYtMjAuODc1OThjLTEuNDUwMi0yLjAzOTA2LTAuODMxMDUtNC44OTk0MSwxLjMzNTk0LTYuMTUyMzRsMTAuOTc3NTQtNi4zMzc4OQ0KCQkJCWM0Ljg4MTg0LTIuODE4MzYsMTAuOTc5NDktMi40NzU1OSwxNS41MTQ2NSwwLjg3MzA1YzMuNTI4MzIsMi42MDU0Nyw3Ljg5MTYsNC4xNDY0OCwxMi42MTUyMyw0LjE0NjQ4DQoJCQkJYzExLjc0MjE5LDAsMjEuMjU5NzctOS41MTg1NSwyMS4yNTk3Ny0yMS4yNTk3N3MtOS41MTc1OC0yMS4yNTk3Ny0yMS4yNTk3Ny0yMS4yNTk3N2gtMTUuMjE3NzcNCgkJCQljLTMuNDI5NjksMC01LjQ1MDItMy44ODA4Ni0zLjQ4NDM4LTYuNjkwNDNsMTguMTM1NzQtMjUuOTA4MmgtMzIuMDA5NzdjLTIuMzQ4NjMsMC00LjI1MTk1LTEuOTAzMzItNC4yNTE5NS00LjI1MTk1VjEyMDYuMDMyMjN6DQoJCQkJIi8+DQoJCTwvZz4NCgkJPGc+DQoJCQk8Zz4NCgkJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iI0RBRThGNyIgZD0iTTg1MC4zOTU1MSw4NTcuNTkxOA0KCQkJCQljLTUwLjM1NjQ1LDAtOTQuMzI1Mi0yNy4zNTY0NS0xMTcuODUyNTQtNjguMDIwNTFsLTgwLjAzMDI3LDQ2LjIwNDFjLTQuNjU1MjcsMi42ODk0NS02LjEzMTg0LDguNzE4NzUtMy4yNDkwMiwxMy4yNTU4Ng0KCQkJCQljNDIuMjM3Myw2Ni40ODYzMywxMTYuNTMzMiwxMTAuNjA3NDIsMjAxLjEzMTg0LDExMC42MDc0MmM4OC4xMjU5OCwwLDE2NS4wNzEyOS00Ny44NzUsMjA2LjI0MzE2LTExOS4wMzYxM2wtODAuNDg3My00Ni40Njk3Mw0KCQkJCQljLTQuMzEzNDgtMi40OTAyMy05LjgwMTc2LTEuMjA1MDgtMTIuNTcwMzEsMi45MzU1NUM5MzkuMTc1NzgsODMzLjU2MjUsODk3LjU5MTgsODU3LjU5MTgsODUwLjM5NTUxLDg1Ny41OTE4DQoJCQkJCUw4NTAuMzk1NTEsODU3LjU5MTh6IE0xMTM2LjcyMTY4LDU1Ni4yMTc3N2M0LjYxNDI2LTIuNjYzMDksNi4xMTAzNS04LjYxOTE0LDMuMzEyNS0xMy4xNTEzNw0KCQkJCQljLTU5LjkxNTA0LTk3LjAzMDI3LTE2Ny4yMjQ2MS0xNjEuNjk0MzQtMjg5LjYzODY3LTE2MS42OTQzNGMtMTI1Ljg5MzU1LDAtMjM1LjgxMzQ4LDY4LjM5MjU4LTI5NC42MzM3OSwxNzAuMDQ5OA0KCQkJCQlsODAuMzc2OTUsNDYuNDA2MjVjNC4zOTc0NiwyLjUzOTA2LDEwLjAwMTk1LDEuMTQ5NDEsMTIuNzEwOTQtMy4xNDU1MQ0KCQkJCQljNDIuMTY0MDYtNjYuODUxNTYsMTE2LjY2ODk1LTExMS4yNjM2NywyMDEuNTQ1OS0xMTEuMjYzNjdjODguMTI1OTgsMCwxNjUuMDcxMjksNDcuODc1OTgsMjA2LjI0MzE2LDExOS4wMzYxMw0KCQkJCQlMMTEzNi43MjE2OCw1NTYuMjE3Nzd6Ii8+DQoJCQkJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiNBNUJBQzgiIGQ9Ik04NTAuMzk1NTEsOTU5LjYzODY3DQoJCQkJCWMtODQuNTk4NjMsMC0xNTguODk0NTMtNDQuMTIxMDktMjAxLjEzMTg0LTExMC42MDc0MmMtMi44NzY5NS00LjUzMDI3LTEuMzk5NDEtMTAuNTcwMzEsMy4yNDkwMi0xMy4yNTU4Nmw4MC4wMzAyNy00Ni4yMDQxDQoJCQkJCWMtMTEuNTgxMDUtMjAuMDE2Ni0xOC4yMDk5Ni00My4yNTQ4OC0xOC4yMDk5Ni02OC4wNDE5OWMwLTc0Ljc4NTE2LDYwLjU1NzYyLTEzNi4wNjI1LDEzNi4wNjI1LTEzNi4wNjI1DQoJCQkJCWM0Ny4xOTYyOSwwLDg4Ljc4MDI3LDI0LjAyOTMsMTEzLjE4NTU1LDYwLjUyMjQ2YzIuNzY0NjUsNC4xMzM3OSw4LjI2MzY3LDUuNDIxODgsMTIuNTcwMzEsMi45MzU1NWw4MC40ODczLTQ2LjQ2OTczDQoJCQkJCWMtNDEuMTcxODgtNzEuMTYwMTYtMTE4LjExNzE5LTExOS4wMzYxMy0yMDYuMjQzMTYtMTE5LjAzNjEzYy04NC44NzY5NSwwLTE1OS4zODE4NCw0NC40MTIxMS0yMDEuNTQ1OSwxMTEuMjYzNjcNCgkJCQkJYy0yLjcwNjA1LDQuMjkxMDItOC4zMTgzNiw1LjY4MTY0LTEyLjcxMDk0LDMuMTQ1NTFsLTgwLjM3Njk1LTQ2LjQwNjI1DQoJCQkJCWMtMjguOTUyMTUsNTAuMDQwMDQtNDUuNTIzNDQsMTA4LjEzOTY1LTQ1LjUyMzQ0LDE3MC4xMDc0MmMwLDE4Ni45NjM4NywxNTEuMzk0NTMsMzQwLjE1NzIzLDM0MC4xNTcyMywzNDAuMTU3MjMNCgkJCQkJYzEyMi40MTQwNiwwLDIyOS43MjM2My02NC42NjQwNiwyODkuNjM4NjctMTYxLjY5NTMxYzIuNzk0OTItNC41MjYzNywxLjI5NDkyLTEwLjQ5MDIzLTMuMzEyNS0xMy4xNTEzN2wtODAuMDgzMDEtNDYuMjM3Mw0KCQkJCQlDMTAxNS40NjY4LDkxMS43NjM2Nyw5MzguNTIxNDgsOTU5LjYzODY3LDg1MC4zOTU1MSw5NTkuNjM4Njd6Ii8+DQoJCQk8L2c+DQoJCQk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzAwRkZEQSIgZD0iTTExMzcuMTg1NTUsNzU4LjExMzI4di03My4xNjc5N2wtNjMuMzY1MjMsMzYuNTgzOTgNCgkJCQlMMTEzNy4xODU1NSw3NTguMTEzMjhMMTEzNy4xODU1NSw3NTguMTEzMjh6IE0xMDI2LjU3NjE3LDcwNS4xNjQwNmwxMjAuMDU4NTktNjkuMzE2NDENCgkJCQljMTIuNTY4MzYtNy4yNTU4NiwyOC4zNDQ3MywxLjg1MjU0LDI4LjM0NTcsMTYuMzY2MjF2MTM4LjYzMDg2Yy0wLjAwMDk4LDE0LjUxMjctMTUuNzc3MzQsMjMuNjIyMDctMjguMzQ1NywxNi4zNjYyMQ0KCQkJCWwtMTIwLjA1ODU5LTY5LjMxNjQxQzEwMTQuMDI4MzIsNzMwLjY0OTQxLDEwMTQuMDI4MzIsNzEyLjQwOTE4LDEwMjYuNTc2MTcsNzA1LjE2NDA2eiIvPg0KCQk8L2c+DQoJPC9nPg0KPC9nPg0KPC9zdmc+DQo=").then((a)=>{"done"===this._splashState?this._webglRenderer.DeleteTexture(a):this._splashTextures.logo=a}).catch((a)=>console.warn("Failed to load splash image: ",a)),this._LoadBitmapSplashImage("data:image/png;base64,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").then((a)=>{"done"===this._splashState?this._webglRenderer.DeleteTexture(a):this._splashTextures.powered=a}).catch((a)=>console.warn("Failed to load splash image: ",a)),this._LoadBitmapSplashImage("data:image/png;base64,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").then((a)=>{"done"===this._splashState?this._webglRenderer.DeleteTexture(a):this._splashTextures.website=a}).catch((a)=>console.warn("Failed to load splash image: ",a)))}async _LoadSvgSplashImage(a){a=new URL(a,this._runtime.GetBaseURL()).toString();const b=await C3.FetchBlob(a),c=await this._runtime.RasterSvgImage(b,2048,2048);return await this._webglRenderer.CreateStaticTextureAsync(c,{mipMapQuality:"high"})}async _LoadBitmapSplashImage(a){a=new URL(a,this._runtime.GetBaseURL()).toString();const b=await C3.FetchBlob(a);return await this._webglRenderer.CreateStaticTextureAsync(b,{mipMapQuality:"high"})}StartLoadingScreen(){this._loaderStartTime=Date.now(),this._runtime.Dispatcher().addEventListener("loadingprogress",this._loadingprogress_handler),this._DrawLoadingScreen(),this._rafId=requestAnimationFrame(()=>this._DrawLoadingScreen())}async EndLoadingScreen(){this._loadingProgress=1,4===this._runtime.GetLoaderStyle()&&(await this._splashDonePromise),this._splashDoneResolve=null,this._splashDonePromise=null,-1!==this._rafId&&(cancelAnimationFrame(this._rafId),this._rafId=-1),this._runtime.Dispatcher().removeEventListener("loadingprogress",this._loadingprogress_handler),this._loadingprogress_handler=null,this._webglPercentText&&(this._webglPercentText.Release(),this._webglPercentText=null),this._loadingLogoAsset&&(this._loadingLogoAsset.Release(),this._loadingLogoAsset=null),this._splashTextures.logo&&(this._webglRenderer.DeleteTexture(this._splashTextures.logo),this._splashTextures.logo=null),this._splashTextures.powered&&(this._webglRenderer.DeleteTexture(this._splashTextures.powered),this._splashTextures.powered=null),this._splashTextures.website&&(this._webglRenderer.DeleteTexture(this._splashTextures.website),this._splashTextures.website=null),this._webglRenderer.ClearRgba(0,0,0,0),this._webglRenderer.Finish(),this._splashState="done",this._gpuTimeStartFrame=this._webglRenderer.GetFrameNumber()}_DrawLoadingScreen(){if(-1!==this._rafId){const a=this._webglRenderer;this._rafId=-1;const b=this._runtime.GetAssetManager().HasHadErrorLoading(),c=this._runtime.GetLoaderStyle();if(3!==c&&(this.SetCssTransform(a),a.ClearRgba(0,0,0,0),a.ResetColor(),a.SetTextureFillMode(),a.SetTexture(null)),0===c)this._DrawProgressBarAndLogoLoadingScreen(b);else if(1===c)this._DrawProgressBarLoadingScreen(b,120,0);else if(2===c)this._DrawPercentTextLoadingScreen(b);else if(3===c)C3.noop();else if(4===c)this._DrawSplashLoadingScreen(b);else throw new Error("invalid loader style");a.Finish(),this._rafId=requestAnimationFrame(()=>this._DrawLoadingScreen())}}_DrawPercentTextLoadingScreen(a){a?this._webglPercentText.SetColorRgb(1,0,0):this._webglPercentText.SetColorRgb(.6,.6,.6),this._webglPercentText.SetText(Math.round(100*this._loadingProgress)+"%");const b=this._canvasCssWidth/2,d=this._canvasCssHeight/2;c.setRect(b-150,d-100,b+150,d+100),this._webglRenderer.SetTexture(this._webglPercentText.GetTexture()),this._webglRenderer.Quad3(c,this._webglPercentText.GetTexRect())}_DrawProgressBarLoadingScreen(a,b,c){const e=this._webglRenderer;e.SetColorFillMode(),a?e.SetColorRgba(1,0,0,1):e.SetColorRgba(.118,.565,1,1);const f=this._canvasCssWidth/2,g=this._canvasCssHeight/2,h=b/2;d.setWH(f-h,g-4+c,Math.floor(b*this._loadingProgress),8),e.Rect(d),d.setWH(f-h,g-4+c,b,8),d.offset(-.5,-.5),d.inflate(.5,.5),e.SetColorRgba(0,0,0,1),e.LineRect2(d),d.inflate(1,1),e.SetColorRgba(1,1,1,1),e.LineRect2(d)}_DrawProgressBarAndLogoLoadingScreen(a){if(!this._loadingLogoAsset)return void this._DrawProgressBarLoadingScreen(a,120,0);const b=this._loadingLogoAsset.GetTexture();if(!b)return void this._DrawProgressBarLoadingScreen(a,120,0);const d=b.GetWidth(),e=b.GetHeight(),f=this._canvasCssWidth/2,g=this._canvasCssHeight/2,h=d/2,i=e/2;c.setRect(f-h,g-i,f+h,g+i),this._webglRenderer.SetTexture(b),this._webglRenderer.Quad(c),this._DrawProgressBarLoadingScreen(a,d,i+16)}_DrawSplashLoadingScreen(b){var c=Math.min,e=Math.max,f=Math.ceil;const g=this._webglRenderer,i=this._splashTextures.logo,j=this._splashTextures.powered,k=this._splashTextures.website,l=Date.now();0===this._splashFrameNumber&&(this._loaderStartTime=l);const m=this._runtime.IsPreview()||this._runtime.IsFBInstantAvailable()&&!this._runtime.IsCordova(),n=m?0:200,o=m?0:3000;let p=1;"fade-in"===this._splashState?p=c((l-this._loaderStartTime)/300,1):"fade-out"===this._splashState&&(p=e(1-(l-this._splashFadeOutStartTime)/300,0)),g.SetColorFillMode(),g.SetColorRgba(.231*p,.251*p,.271*p,p),d.set(0,0,this._canvasCssWidth,this._canvasCssHeight),g.Rect(d);const a=f(this._canvasCssWidth),q=f(this._canvasCssHeight);let h,r;256=300&&2<=this._splashFrameNumber&&(this._splashState="wait",this._splashFadeInFinishTime=l),"wait"===this._splashState&&l-this._splashFadeInFinishTime>=o&&1<=this._loadingProgress&&(this._splashState="fade-out",this._splashFadeOutStartTime=l),("fade-out"===this._splashState&&l-this._splashFadeOutStartTime>=300+n||m&&1<=this._loadingProgress&&500>l-this._loaderStartTime)&&this._splashDoneResolve()}}} + +// c3/runtime.js +"use strict";{const e={"messagePort":null,"baseUrl":"","headless":!1,"hasDom":!0,"isInWorker":!1,"useAudio":!0,"projectData":"","exportType":""};let a=!0;C3.Runtime=class extends C3.DefendedBase{constructor(n){n=Object.assign({},e,n);super(),this._messagePort=n["messagePort"],this._baseUrl=n["baseUrl"],this._isHeadless=!!n["headless"],this._hasDom=!!n["hasDom"],this._isInWorker=!!n["isInWorker"],a=n["ife"],this._useAudio=!!n["useAudio"],this._exportType=n["exportType"],this._isWKWebView=!!n["isWKWebView"],this._isFBInstantAvailable=!!n["isFBInstantAvailable"],this._opusWasmScriptUrl=n["opusWasmScriptUrl"],this._opusWasmBinaryUrl=n["opusWasmBinaryUrl"],this._dataJsonFilename="data.json",this._isDebug=!!("preview"===this._exportType&&n["isDebug"]),this._breakpointsEnabled=this._isDebug,this._isDebugging=this._isDebug,this._debuggingDisabled=0;const t=n["previewImageBlobs"],s=n["previewProjectFileBlobs"];s&&Object.assign(t,s);const i=n["projectData"];i&&(t[this._dataJsonFilename]=i),this._additionalLoadPromises=[],this._projectName="",this._projectVersion="",this._projectUniqueId="",this._originalViewportWidth=0,this._originalViewportHeight=0,this._parallaxXorigin=0,this._parallaxYorigin=0,this._viewportWidth=0,this._viewportHeight=0,this._loaderStyle=0,this._usesLoaderLayout=!1,this._isLoading=!0,this._usesAnyBackgroundBlending=!1;const r="html5"===this._exportType||"scirra-arcade"===this._exportType;this._assetManager=C3.New(C3.AssetManager,this,{defaultLoadPolicy:r?"remote":"local",localUrlBlobs:t,isCordova:"cordova"===this._exportType,isWKWebView:this._isWKWebView,supportedAudioFormats:n["supportedAudioFormats"]}),this._layoutManager=C3.New(C3.LayoutManager,this),this._eventSheetManager=C3.New(C3.EventSheetManager,this),this._pluginManager=C3.New(C3.PluginManager,this),this._collisionEngine=C3.New(C3.CollisionEngine,this),this._timelineManager=C3.New(C3.TimelineManager,this),this._allObjectClasses=[],this._objectClassesByName=new Map,this._objectClassesBySid=new Map,this._familyCount=0,this._allContainers=[],this._allEffectLists=[],this._currentLayoutStack=[],this._instancesPendingCreate=[],this._instancesPendingDestroy=new Map,this._hasPendingInstances=!1,this._isFlushingPendingInstances=!1,this._objectCount=0,this._nextUid=0,this._instancesByUid=new Map,this._instancesToReleaseAtEndOfTick=new Set,this._objectReferenceTable=[],this._canvasManager=null,this._isLinearSampling=!0,this._isPixelRoundingEnabled=!1,this._needRender=!0,this._pauseOnBlur=!1,this._isPausedOnBlur=!1,this._tickCallback=(e)=>this.Tick(e),this._rafId=-1,this._tickCount=0,this._tickCountNoSave=0,this._execCount=0,this._hasStarted=!1,this._isInTick=!1,this._hasStartedTicking=!1,this._isLayoutFirstTick=!0,this._suspendCount=0,this._randomNumberCallback=()=>Math.random(),this._startTime=0,this._lastTickTime=0,this._dt1=0,this._dt=0,this._timeScale=1,this._minimumFramerate=30,this._gameTime=C3.New(C3.KahanSum),this._wallTime=C3.New(C3.KahanSum),this._fpsFrameCount=-1,this._fpsLastTime=0,this._fps=0,this._mainThreadTimeCounter=0,this._mainThreadTime=0,this._isLoadingState=!1,this._saveToSlotName="",this._loadFromSlotName="",this._loadFromJson=null,this._lastSaveJson="",this._triggerOnCreateAfterLoad=[],this._savegamesStorage=null,this._dispatcher=C3.New(C3.Event.Dispatcher),this._domEventHandlers=new Map,this._pendingResponsePromises=new Map,this._nextDomResponseId=0,this._isReadyToHandleEvents=!1,this._waitingToHandleEvents=[],this._eventObjects={"pretick":C3.New(C3.Event,"pretick",!1),"tick":C3.New(C3.Event,"tick",!1),"tick2":C3.New(C3.Event,"tick2",!1),"instancedestroy":C3.New(C3.Event,"instancedestroy",!1),"beforelayoutchange":C3.New(C3.Event,"beforelayoutchange",!1),"layoutchange":C3.New(C3.Event,"layoutchange",!1)},this._eventObjects["instancedestroy"].instance=null,this._behInstsToTick=C3.New(C3.RedBlackSet,C3.BehaviorInstance.SortByTickSequence),this._behInstsToPostTick=C3.New(C3.RedBlackSet,C3.BehaviorInstance.SortByTickSequence),this._behInstsToTick2=C3.New(C3.RedBlackSet,C3.BehaviorInstance.SortByTickSequence),this._jobScheduler=C3.New(C3.JobSchedulerRuntime,this,n["jobScheduler"]),n["canvas"]&&(this._canvasManager=C3.New(C3.CanvasManager,this)),this._messagePort.onmessage=(a)=>this["_OnMessageFromDOM"](a.data),this.AddDOMComponentMessageHandler("runtime","visibilitychange",(a)=>this._OnVisibilityChange(a)),this.AddDOMComponentMessageHandler("runtime","opus-decode",(a)=>this._WasmDecodeWebMOpus(a["arrayBuffer"])),this._dispatcher.addEventListener("window-blur",(a)=>this._OnWindowBlur(a)),this._dispatcher.addEventListener("window-focus",()=>this._OnWindowFocus())}static Create(e){return C3.New(C3.Runtime,e)}Release(){C3.clearArray(this._allObjectClasses),this._objectClassesByName.clear(),this._objectClassesBySid.clear(),this._layoutManager.Release(),this._layoutManager=null,this._eventSheetManager.Release(),this._eventSheetManager=null,this._pluginManager.Release(),this._pluginManager=null,this._assetManager.Release(),this._assetManager=null,this._collisionEngine.Release(),this._collisionEngine=null,this._timelineManager.Release(),this._timelineManager=null,this._canvasManager&&(this._canvasManager.Release(),this._canvasManager=null),this._dispatcher.Release(),this._dispatcher=null,this._tickEvent=null,this._tickCallback=null}["_OnMessageFromDOM"](e){const a=e["type"];if("event"===a)this._OnEventFromDOM(e);else if("result"===a)this._OnResultFromDOM(e);else throw new Error(`unknown message '${a}'`)}_OnEventFromDOM(a){if(!this._isReadyToHandleEvents)return void this._waitingToHandleEvents.push(a);const e=a["component"],n=a["handler"],t=a["data"],s=a["dispatchRuntimeEvent"],i=a["responseId"];if("runtime"===e&&s){const e=new C3.Event(n);e.data=t,this._dispatcher.dispatchEventAndWaitAsyncSequential(e)}const r=this._domEventHandlers.get(e);if(!r)return void(s||console.warn(`[Runtime] No DOM event handlers for component '${e}'`));const o=r.get(n);if(!o)return void(s||console.warn(`[Runtime] No DOM handler '${n}' for component '${e}'`));let d=null;try{d=o(t)}catch(a){return console.error(`Exception in '${e}' handler '${n}':`,a),void(null!==i&&this._PostResultToDOM(i,!1,a.toString()))}null!==i&&(d&&d.then?d.then((e)=>this._PostResultToDOM(i,!0,e)).catch((a)=>{console.error(`Rejection from '${e}' handler '${n}':`,a),this._PostResultToDOM(i,!1,a.toString())}):this._PostResultToDOM(i,!0,d))}_PostResultToDOM(e,a,n){this._messagePort.postMessage({"type":"result","responseId":e,"isOk":a,"result":n})}_OnResultFromDOM(e){const a=e["responseId"],n=e["isOk"],t=e["result"],s=this._pendingResponsePromises.get(a);n?s.resolve(t):s.reject(t),this._pendingResponsePromises.delete(a)}AddDOMComponentMessageHandler(e,a,n){let t=this._domEventHandlers.get(e);if(t||(t=new Map,this._domEventHandlers.set(e,t)),t.has(a))throw new Error(`[Runtime] Component '${e}' already has handler '${a}'`);t.set(a,n)}PostComponentMessageToDOM(e,a,n){this._messagePort.postMessage({"type":"event","component":e,"handler":a,"data":n,"responseId":null})}PostComponentMessageToDOMAsync(e,a,n){const t=this._nextDomResponseId++,s=new Promise((e,a)=>{this._pendingResponsePromises.set(t,{resolve:e,reject:a})});return this._messagePort.postMessage({"type":"event","component":e,"handler":a,"data":n,"responseId":t}),s}PostToDebugger(e){if(!this.IsDebug())throw new Error("not in debug mode");this.PostComponentMessageToDOM("runtime","post-to-debugger",e)}async Init(e){this.IsDebug()&&C3Debugger.Init(this);const[a]=await Promise.all([this._assetManager.FetchJson(this._dataJsonFilename),this._MaybeLoadOpusDecoder(),this._jobScheduler.Init()]);this._LoadDataJson(a),await this._InitialiseCanvas(e),this.IsPreview()||console.info("Made with Construct 3, the game and app creator :: https://www.construct.net");const n=this.GetWebGLRenderer();n?(console.info(`[C3 runtime] Hosted in ${this.IsInWorker()?"worker":"DOM"}, rendering with WebGL ${n.GetWebGLVersionNumber()} [${n.GetUnmaskedRenderer()}]`),n.HasMajorPerformanceCaveat()&&console.warn("[C3 runtime] WebGL indicates a major performance caveat. Software rendering may be in use. This can result in significantly degraded performance.")):console.info(`[C3 runtime] Hosted in ${this.IsInWorker()?"worker":"DOM"}, headless`),this._isReadyToHandleEvents=!0;for(const a of this._waitingToHandleEvents)this._OnEventFromDOM(a);if(C3.clearArray(this._waitingToHandleEvents),this._canvasManager&&this._canvasManager.StartLoadingScreen(),await Promise.all([this._assetManager.WaitForAllToLoad(),...this._additionalLoadPromises]),!this._assetManager.HasHadErrorLoading())return this._canvasManager&&(await this._canvasManager.EndLoadingScreen()),await this._dispatcher.dispatchEventAndWaitAsync(new C3.Event("beforeruntimestart")),await this.Start(),this._messagePort.postMessage({"type":"runtime-ready"}),this}_LoadDataJson(e){const a=e["project"];this._projectName=a[0],this._projectVersion=a[16],this._projectUniqueId=a[31],this._isPixelRoundingEnabled=!!a[9],this._originalViewportWidth=this._viewportWidth=a[10],this._originalViewportHeight=this._viewportHeight=a[11],this._parallaxXorigin=this._originalViewportWidth/2,this._parallaxYorigin=this._originalViewportHeight/2,this._isLinearSampling=!!a[14],this._usesLoaderLayout=!!a[18],this._loaderStyle=a[19],this._nextUid=a[21],this._pauseOnBlur=a[22],this._assetManager._SetAudioFiles(a[7],a[25]),this._assetManager._SetMediaSubfolder(a[8]),this._assetManager._SetFontsSubfolder(a[32]),this._assetManager._SetIconsSubfolder(a[28]),this._assetManager._SetWebFonts(a[29]),this._canvasManager&&(this._canvasManager.SetFullscreenMode(C3.CanvasManager._FullscreenModeNumberToString(a[12])),this._canvasManager.SetFullscreenScalingQuality(a[23]?"high":"low"),this._canvasManager.SetClearBackground(a[15]),this._canvasManager._SetGPUPowerPreference(a[34])),this._pluginManager.CreateSystemPlugin(),this._objectReferenceTable=self.C3_GetObjectRefTable();for(const n of a[2])this._pluginManager.CreatePlugin(n);this._objectReferenceTable=self.C3_GetObjectRefTable();for(const n of a[3]){const e=C3.ObjectClass.Create(this,this._allObjectClasses.length,n);this._allObjectClasses.push(e),this._objectClassesByName.set(e.GetName().toLowerCase(),e),this._objectClassesBySid.set(e.GetSID(),e)}for(const n of a[4]){const e=this._allObjectClasses[n[0]];e._LoadFamily(n)}for(const n of a[27]){const e=n.map((e)=>this._allObjectClasses[e]);this._allContainers.push(C3.New(C3.Container,this,e))}for(const a of this._allObjectClasses)a._OnAfterCreate();for(const n of a[5])this._layoutManager.Create(n);const n=a[1];if(n){const e=this._layoutManager.GetLayoutByName(n);e&&this._layoutManager.SetFirstLayout(e)}for(const n of a[33])this._timelineManager.Create(n);for(const n of a[6])this._eventSheetManager.Create(n);this._eventSheetManager._PostInit(),C3.clearArray(this._objectReferenceTable),this.FlushPendingInstances();let t="any";const s=a[20];1===s?t="portrait":2===s&&(t="landscape"),this.PostComponentMessageToDOM("runtime","set-target-orientation",{"targetOrientation":t})}GetLoaderStyle(){return this._loaderStyle}IsFBInstantAvailable(){return this._isFBInstantAvailable}IsLoading(){return this._isLoading}AddLoadPromise(e){this._additionalLoadPromises.push(e)}_GetNextFamilyIndex(){return this._familyCount++}GetFamilyCount(){return this._familyCount}_AddEffectList(e){this._allEffectLists.push(e)}_GetAllEffectLists(){return this._allEffectLists}async _InitialiseCanvas(e){this._canvasManager&&(await this._canvasManager.CreateCanvas(e),this._canvasManager.InitLoadingScreen(this._loaderStyle))}async _MaybeLoadOpusDecoder(){if(this._assetManager.IsAudioFormatSupported("audio/webm; codecs=opus"))return;let e=null,a=null;try{this.IsWKWebView()?a=await this._assetManager.CordovaFetchLocalFileAsArrayBuffer(this._opusWasmBinaryUrl):e=await this._assetManager.FetchBlob(this._opusWasmBinaryUrl)}catch(e){return void console.info("Failed to fetch Opus decoder WASM; assuming project has no Opus audio.",e)}a?this.AddJobWorkerBuffer(a,"opus-decoder-wasm"):this.AddJobWorkerBlob(e,"opus-decoder-wasm"),await this.AddJobWorkerScripts([this._opusWasmScriptUrl])}async _WasmDecodeWebMOpus(e){const a=await this.AddJob("OpusDecode",{"arrayBuffer":e},[e]);return a}async Start(){if(this._hasStarted=!0,this._startTime=Date.now(),this._usesLoaderLayout){for(const e of this._allObjectClasses)e.IsFamily()||e.IsOnLoaderLayout()||!e.IsWorldType()||e.OnCreate();this._assetManager.WaitForAllToLoad().then(()=>{this._isLoading=!1,this._OnLoadFinished()})}else this._isLoading=!1;this._assetManager.SetInitialLoadFinished(),this.IsDebug()&&C3Debugger.RuntimeInit(a);for(const e of this._layoutManager.GetAllLayouts())e._CreateGlobalNonWorlds();const e=this._layoutManager.GetFirstLayout();await e._Load(null,this.GetWebGLRenderer()),await e._StartRunning(!0),this._fpsLastTime=performance.now(),this._usesLoaderLayout||this._OnLoadFinished();const n=await this.PostComponentMessageToDOMAsync("runtime","before-start-ticking");n["isSuspended"]?this._suspendCount++:this.Tick()}_OnLoadFinished(){this.Trigger(C3.Plugins.System.Cnds.OnLoadFinished,null),this.PostComponentMessageToDOM("runtime","register-sw")}GetObjectReference(e){if(e=Math.floor(e),0>e||e>=this._objectReferenceTable.length)throw new Error("invalid object reference");return this._objectReferenceTable[e]}HasDOM(){return this._hasDom}IsHeadless(){return this._isHeadless}IsInWorker(){return this._isInWorker}GetBaseURL(){return this._baseUrl}GetEventSheetManager(){return this._eventSheetManager}GetEventStack(){return this._eventSheetManager.GetEventStack()}GetCurrentEventStackFrame(){return this._eventSheetManager.GetCurrentEventStackFrame()}GetCurrentEvent(){return this._eventSheetManager.GetCurrentEvent()}GetCurrentCondition(){return this._eventSheetManager.GetCurrentCondition()}IsCurrentConditionFirst(){return 0===this.GetCurrentEventStackFrame().GetConditionIndex()}GetCurrentAction(){return this._eventSheetManager.GetCurrentAction()}GetPluginManager(){return this._pluginManager}GetSystemPlugin(){return this._pluginManager.GetSystemPlugin()}GetObjectClassByIndex(e){if(e=Math.floor(e),0>e||e>=this._allObjectClasses.length)throw new RangeError("invalid index");return this._allObjectClasses[e]}GetObjectClassByName(e){return this._objectClassesByName.get(e.toLowerCase())||null}GetObjectClassBySID(e){return this._objectClassesBySid.get(e)||null}GetSingleGlobalObjectClassByCtor(e){const a=this._pluginManager.GetPluginByConstructorFunction(e);return a?a.GetSingleGlobalObjectClass():null}GetAllObjectClasses(){return this._allObjectClasses}Dispatcher(){return this._dispatcher}GetOriginalViewportWidth(){return this._originalViewportWidth}GetOriginalViewportHeight(){return this._originalViewportHeight}SetOriginalViewportSize(e,a){this._originalViewportWidth=e,this._originalViewportHeight=a}GetViewportWidth(){return this._viewportWidth}GetViewportHeight(){return this._viewportHeight}SetViewportSize(e,a){this._viewportWidth=e,this._viewportHeight=a}GetParallaxXOrigin(){return this._parallaxXorigin}GetParallaxYOrigin(){return this._parallaxYorigin}GetCanvasManager(){return this._canvasManager}GetDrawWidth(){return this._canvasManager?this._canvasManager.GetDrawWidth():this._viewportWidth}GetDrawHeight(){return this._canvasManager?this._canvasManager.GetDrawHeight():this._viewportHeight}GetRenderScale(){return this._canvasManager?this._canvasManager.GetRenderScale():1}GetDisplayScale(){return this._canvasManager?this._canvasManager.GetDisplayScale():1}GetCanvasClientX(){return this._canvasManager?this._canvasManager.GetCanvasClientX():0}GetCanvasClientY(){return this._canvasManager?this._canvasManager.GetCanvasClientY():0}GetCanvasCssWidth(){return this._canvasManager?this._canvasManager.GetCssWidth():0}GetCanvasCssHeight(){return this._canvasManager?this._canvasManager.GetCssHeight():0}GetFullscreenMode(){return this._canvasManager?this._canvasManager.GetFullscreenMode():"off"}GetAdditionalRenderTarget(e){return this._canvasManager?this._canvasManager.GetAdditionalRenderTarget(e):null}ReleaseAdditionalRenderTarget(e){this._canvasManager&&this._canvasManager.ReleaseAdditionalRenderTarget(e)}_SetUsesAnyBackgroundBlending(e){this._usesAnyBackgroundBlending=!!e}UsesAnyBackgroundBlending(){return this._usesAnyBackgroundBlending}GetGPUUtilisation(){return this._canvasManager?this._canvasManager.GetGPUUtilisation():NaN}IsLinearSampling(){return this._isLinearSampling}UsesLoaderLayout(){return this._usesLoaderLayout}GetLayoutManager(){return this._layoutManager}GetMainRunningLayout(){return this._layoutManager.GetMainRunningLayout()}GetTimelineManager(){return this._timelineManager}GetAssetManager(){return this._assetManager}LoadImage(e){return this._assetManager.LoadImage(e)}CreateInstance(e,a,n,t){return this.CreateInstanceFromData(e,a,!1,n,t)}CreateInstanceFromData(e,a,n,t,s,i){let r=null,o=null;if(e instanceof C3.ObjectClass){if(o=e,o.IsFamily()){const e=o.GetFamilyMembers(),a=Math.floor(this.Random()*e.length);o=e[a]}r=o.GetDefaultInstanceData()}else r=e,o=this.GetObjectClassByIndex(r[1]);const d=o.GetPlugin().IsWorldType();if(this._isLoading&&d&&!o.IsOnLoaderLayout())return null;const _=a;d||(a=null);let l=n&&!i&&r&&!this._instancesByUid.has(r[2])?r[2]:this._nextUid++;const g=r?r[0]:null,u=C3.New(C3.Instance,{runtime:this,objectType:o,layer:a,worldData:g,instVarData:r?r[3]:null,uid:l});this._instancesByUid.set(l,u);let c=null;if(d&&(c=u.GetWorldInfo(),"undefined"!=typeof t&&"undefined"!=typeof s&&(c.SetX(t),c.SetY(s)),o._SetAnyCollisionCellChanged(!0)),a&&(a._AddInstance(u,!0),(1!==a.GetParallaxX()||1!==a.GetParallaxY())&&o._SetAnyInstanceParallaxed(!0),a.GetLayout().MaybeLoadTexturesFor(o)),(this._objectCount++,o.IsInContainer()&&!n&&!i)){for(const e of o.GetContainer().objectTypes()){if(e===o)continue;const a=this.CreateInstanceFromData(e,_,!1,c?c.GetX():t,c?c.GetY():s,!0);u._AddSibling(a)}for(const e of u.siblings()){e._AddSibling(u);for(const a of u.siblings())e!==a&&e._AddSibling(a)}}o._SetIIDsStale();const m=r?C3.cloneArray(r[5]):null,p=r?r[4].map((e)=>C3.cloneArray(e)):null;if(u._CreateSdkInstance(m,p),d&&g&&14===g.length){const e=g[13];u._SetHasTilemap(),u.GetSdkInstance().LoadTilemapData(e[2],e[0],e[1])}return this._instancesPendingCreate.push(u),this._hasPendingInstances=!0,this.IsDebug()&&C3Debugger.InstanceCreated(u),u}DestroyInstance(e){if(this._instancesToReleaseAtEndOfTick.has(e))return;const a=e.GetObjectClass();let n=this._instancesPendingDestroy.get(a);if(n){if(n.has(e))return;n.add(e)}else n=new Set,n.add(e),this._instancesPendingDestroy.set(a,n);if(this.IsDebug()&&C3Debugger.InstanceDestroyed(e),e._MarkDestroyed(),this._hasPendingInstances=!0,e.IsInContainer())for(const a of e.siblings())this.DestroyInstance(a);if(this._isFlushingPendingInstances&&C3.NotYetImplemented(),!this._layoutManager.IsEndingLayout()){const a=this.GetEventSheetManager();a.BlockFlushingInstances(!0),e._TriggerOnDestroyed(),a.BlockFlushingInstances(!1)}}FlushPendingInstances(){this._hasPendingInstances&&(this._isFlushingPendingInstances=!0,this._FlushInstancesPendingCreate(),this._FlushInstancesPendingDestroy(),this._isFlushingPendingInstances=!1,this._hasPendingInstances=!1,this.UpdateRender())}_FlushInstancesPendingCreate(){for(const e of this._instancesPendingCreate){const a=e.GetObjectClass();a._AddInstance(e);for(const n of a.GetFamilies())n._AddInstance(e),n._SetIIDsStale()}C3.clearArray(this._instancesPendingCreate)}_FlushInstancesPendingDestroy(){this._dispatcher.SetDelayRemoveEventsEnabled(!0);for(const[e,a]of this._instancesPendingDestroy.entries())this._FlushInstancesPendingDestroyForObjectClass(e,a),a.clear();this._instancesPendingDestroy.clear(),this._dispatcher.SetDelayRemoveEventsEnabled(!1)}_FlushInstancesPendingDestroyForObjectClass(e,a){C3.arrayRemoveAllInSet(e.GetInstances(),a),e._SetIIDsStale(),0===e.GetInstances().length&&e._SetAnyInstanceParallaxed(!1);for(const n of e.GetFamilies())C3.arrayRemoveAllInSet(n.GetInstances(),a),n._SetIIDsStale();if(e.GetPlugin().IsWorldType()){const e=new Set([...a].map((e)=>e.GetWorldInfo().GetLayer()));for(const n of e)n._RemoveAllInstancesInSet(a)}for(const n of a){const e=this._eventObjects["instancedestroy"];e.instance=n,this._dispatcher.dispatchEvent(e),this._instancesByUid.delete(n.GetUID());const a=n.GetWorldInfo();a&&(a._RemoveFromCollisionCells(),a._RemoveFromRenderCells()),this._instancesToReleaseAtEndOfTick.add(n),this._objectCount--}}_GetInstancesPendingCreate(){return this._instancesPendingCreate}_GetNewUID(){return this._nextUid++}_MapInstanceByUID(e,a){this._instancesByUid.set(e,a)}_OnWebGLContextLost(){this._dispatcher.dispatchEvent(C3.New(C3.Event,"webglcontextlost")),this.SetSuspended(!0);for(const e of this._allObjectClasses)!e.IsFamily()&&e.HasLoadedTextures()&&e.ReleaseTextures();this.GetMainRunningLayout()._OnWebGLContextLost(),C3.ImageInfo.OnWebGLContextLost(),C3.ImageAsset.OnWebGLContextLost()}async _OnWebGLContextRestored(){await this.GetMainRunningLayout()._Load(null,this.GetWebGLRenderer()),this._dispatcher.dispatchEvent(C3.New(C3.Event,"webglcontextrestored")),this.SetSuspended(!1),this.UpdateRender()}_OnVisibilityChange(a){this.SetSuspended(a["hidden"])}_OnWindowBlur(a){this.IsPreview()&&this._pauseOnBlur&&!C3.Platform.IsMobile&&(a.data["parentHasFocus"]||(this.SetSuspended(!0),this._isPausedOnBlur=!0))}_OnWindowFocus(){this._isPausedOnBlur&&(this.SetSuspended(!1),this._isPausedOnBlur=!1)}IsSuspended(){return 0this._suspendCount&&(this._suspendCount=0),!a&&n)console.log("[Construct 3] Suspending"),-1!==this._rafId&&(cancelAnimationFrame(this._rafId),this._rafId=-1),this._dispatcher.dispatchEvent(C3.New(C3.Event,"suspend")),this.Trigger(C3.Plugins.System.Cnds.OnSuspend,null);else if(a&&!n){console.log("[Construct 3] Resuming");const e=performance.now();this._lastTickTime=e,this._fpsLastTime=e,this._fpsFrameCount=0,this._fps=0,this._mainThreadTime=0,this._mainThreadTimeCounter=0,this._dispatcher.dispatchEvent(C3.New(C3.Event,"resume")),this.Trigger(C3.Plugins.System.Cnds.OnResume,null),this.HitBreakpoint()||this.Tick(e)}}_AddBehInstToTick(e){this._behInstsToTick.Add(e)}_AddBehInstToPostTick(e){this._behInstsToPostTick.Add(e)}_AddBehInstToTick2(e){this._behInstsToTick2.Add(e)}_RemoveBehInstToTick(e){this._behInstsToTick.Remove(e)}_RemoveBehInstToPostTick(e){this._behInstsToPostTick.Remove(e)}_RemoveBehInstToTick2(e){this._behInstsToTick2.Remove(e)}_BehaviorTick(){for(const e of this._behInstsToTick)e.Tick()}_BehaviorPostTick(){for(const e of this._behInstsToPostTick)e.PostTick()}_BehaviorTick2(){for(const e of this._behInstsToTick2)e.Tick2()}*_DebugBehaviorTick(){for(const e of this._behInstsToTick){const a=e.Tick();C3.IsIterator(a)&&(yield*a)}}*_DebugBehaviorPostTick(){for(const e of this._behInstsToPostTick){const a=e.PostTick();C3.IsIterator(a)&&(yield*a)}}*_DebugBehaviorTick2(){for(const e of this._behInstsToTick2){const a=e.Tick2();C3.IsIterator(a)&&(yield*a)}}async Tick(e,a){if(this._rafId=-1,this._hasStartedTicking=!0,this._hasStarted&&(!this.IsSuspended()||a)){const a=performance.now();this._isInTick=!0,e||(e=a),await this.Step(e),this.Render(),this.IsSuspended()||(this._rafId=self.requestAnimationFrame(this._tickCallback)),this._tickCount++,this._tickCountNoSave++,this._execCount++,this._isInTick=!1,this._mainThreadTimeCounter+=performance.now()-a}}async Step(e){const a=this._eventSheetManager,n=this._dispatcher,t=this._eventObjects,s=this.IsDebug(),i=this.IsDebugging();if(this._MeasureDt(e),this.FlushPendingInstances(),a.BlockFlushingInstances(!0),this.PushCurrentLayout(this.GetMainRunningLayout()),s&&C3Debugger.StartMeasuringTime(),i?await a.DebugRunScheduledWaits():a.RunScheduledWaits(),s&&C3Debugger.AddEventsTime(),this.PopCurrentLayout(),a.BlockFlushingInstances(!1),this.FlushPendingInstances(),a.BlockFlushingInstances(!0),await n.dispatchEventAndWaitAsync(t["pretick"]),s&&C3Debugger.StartMeasuringTime(),i?await this.DebugIterateAndBreak(this._DebugBehaviorTick()):this._BehaviorTick(),i?await this.DebugIterateAndBreak(this._DebugBehaviorPostTick()):this._BehaviorPostTick(),s&&C3Debugger.AddBehaviorTickTime(),s&&C3Debugger.StartMeasuringTime(),i?await this.DebugFireGeneratorEventAndBreak(t["tick"]):n.dispatchEvent(t["tick"]),s&&C3Debugger.AddPluginTickTime(),a.BlockFlushingInstances(!1),this._NeedsHandleSaveOrLoad()&&(await this._HandleSaveOrLoad()),this.GetLayoutManager().IsPendingChangeMainLayout()&&(await this._MaybeChangeLayout()),s&&C3Debugger.StartMeasuringTime(),i?await a.DebugRunEvents(this._layoutManager):a.RunEvents(this._layoutManager),s&&C3Debugger.AddEventsTime(),this._collisionEngine.ClearRegisteredCollisions(),0a++;)await this._DoChangeLayout(e.GetPendingChangeMainLayout())}_MeasureDt(e){if(0!==this._lastTickTime){const a=Math.max(e-this._lastTickTime,0);this._dt1=a/1e3;const n=1/this._minimumFramerate;.5n&&(this._dt1=n)}this._lastTickTime=e,this._dt=this._dt1*this._timeScale,this._gameTime.Add(this._dt),this._wallTime.Add(this._dt1),this._canvasManager&&this._canvasManager._UpdateTick(),1e3<=e-this._fpsLastTime&&(this._fpsLastTime+=1e3,1e3<=e-this._fpsLastTime&&(this._fpsLastTime=e),this._fps=this._fpsFrameCount,this._fpsFrameCount=0,this._mainThreadTime=Math.min(this._mainThreadTimeCounter/1e3,1),this._mainThreadTimeCounter=0,this._canvasManager&&this._canvasManager._Update1sFrameRange(),this._collisionEngine._Update1sStats(),this.IsDebug()&&C3Debugger.Update1sPerfStats()),this._fpsFrameCount++}async _DoChangeLayout(e){const a=this._dispatcher,n=this.GetLayoutManager(),t=n.GetMainRunningLayout();await t._StopRunning(),t._Unload(e,this.GetWebGLRenderer()),t===e&&this._eventSheetManager.ClearAllScheduledWaits(),this._collisionEngine.ClearRegisteredCollisions(),a.dispatchEvent(this._eventObjects["beforelayoutchange"]),await e._Load(t,this.GetWebGLRenderer()),await e._StartRunning(!1),a.dispatchEvent(this._eventObjects["layoutchange"]),this.UpdateRender(),this._isLayoutFirstTick=!0,this.FlushPendingInstances()}UpdateRender(){this._needRender=!0}GetWebGLRenderer(){return this._canvasManager?this._canvasManager.GetWebGLRenderer():null}Render(){if(!this._canvasManager||this._canvasManager.IsWebGLContextLost())return;const e=this.GetWebGLRenderer();if(e.CheckForQueryResults(),!this._needRender)return void e.IncrementFrameNumber();const a=this.IsDebug();a&&C3Debugger.StartMeasuringTime(),this._needRender=!1;let n=null;e.SupportsGPUProfiling()&&(n=this._canvasManager.GetGPUFrameTimingsBuffer().AddTimeElapsedQuery(),e.StartQuery(n)),e.SetTextureFillMode(),e.SetAlphaBlend(),e.SetColorRgba(1,1,1,1),e.SetRenderTarget(null),e.SetTexture(null);const t=this._layoutManager.GetMainRunningLayout();t.Draw(e),n&&e.EndQuery(n),e.Finish(),a&&(C3Debugger.AddDrawCallsTime(),C3Debugger.UpdateInspectHighlight()),this._canvasManager&&this._canvasManager._MaybeTakeSnapshot()}Trigger(e,a){if(!this._hasStarted)return!1;const n=!this._isInTick&&!this._eventSheetManager.IsInTrigger();let t=0;n&&(t=performance.now());const s=this.IsDebug();s&&this.SetDebuggingEnabled(!1);const i=this._eventSheetManager._Trigger(this._layoutManager,e,a);if(n){const e=performance.now()-t;this._mainThreadTimeCounter+=e,s&&C3Debugger.AddTriggersTime(e)}return s&&this.SetDebuggingEnabled(!0),i}DebugTrigger(e,a){if(!this.IsDebug())return this.Trigger(e,a);if(this.HitBreakpoint())throw new Error("called DebugTrigger() while stopped on breakpoint");if(!this._isInTick&&!this._eventSheetManager.IsInTrigger())throw new Error("called DebugTrigger() outside of event code - use TriggerAsync() instead");return this._eventSheetManager._DebugTrigger(this._layoutManager,e,a)}async TriggerAsync(e,a){if(!this.IsDebugging())return this.Trigger(e,a);if(!this._hasStarted)return!1;if(this.HitBreakpoint())return this._eventSheetManager.QueueDebugTrigger(e,a);if(!this.GetMainRunningLayout())return this._eventSheetManager.QueueTrigger(e,a);const n=performance.now(),t=this._eventSheetManager._DebugTrigger(this._layoutManager,e,a);let s=t.next();for(;!s.done;)await this.DebugBreak(s.value),s=t.next();return this.IsSuspended()||this._eventSheetManager.IsInTrigger()||(await this._eventSheetManager.RunQueuedDebugTriggersAsync(),this._hasStartedTicking&&-1===this._rafId&&!this._isInTick&&(this._rafId=self.requestAnimationFrame(this._tickCallback))),this._mainThreadTimeCounter+=performance.now()-n,s.value}FastTrigger(e,a,n){const t=this.IsDebug();t&&this.SetDebuggingEnabled(!1);const s=this._eventSheetManager._FastTrigger(this._layoutManager,e,a,n);return t&&this.SetDebuggingEnabled(!0),s}DebugFastTrigger(e,a,n){return this._eventSheetManager._DebugFastTrigger(this._layoutManager,e,a,n)}PushCurrentLayout(e){this._currentLayoutStack.push(e)}PopCurrentLayout(){if(!this._currentLayoutStack.length)throw new Error("layout stack empty");this._currentLayoutStack.pop()}GetCurrentLayout(){if(!this._currentLayoutStack.length)throw new Error("no current layout");return this._currentLayoutStack[this._currentLayoutStack.length-1]}GetDt(e){return e&&-1!==e.GetTimeScale()?this._dt1*e.GetTimeScale():this._dt}_GetDtFast(){return this._dt}GetDt1(){return this._dt1}GetTimeScale(){return this._timeScale}SetTimeScale(e){(isNaN(e)||0>e)&&(e=0),this._timeScale=e}SetMinimumFramerate(e){this._minimumFramerate=C3.clamp(e,1,120)}GetMinimumFramerate(){return this._minimumFramerate}GetFPS(){return this._fps}GetMainThreadTime(){return this._mainThreadTime}GetStartTime(){return this._startTime}GetGameTime(){return this._gameTime.Get()}GetWallTime(){return this._wallTime.Get()}GetTickCount(){return this._tickCount}GetTickCountNoSave(){return this._tickCountNoSave}IncrementExecCount(){++this._execCount}GetExecCount(){return this._execCount}GetObjectCount(){return this._objectCount}GetProjectName(){return this._projectName}GetProjectVersion(){return this._projectVersion}GetProjectUniqueId(){return this._projectUniqueId}GetInstanceByUID(e){if(this._isLoadingState)throw new Error("cannot call while loading state - wait until afterload event");return this._instancesByUid.get(e)||null}_RefreshUidMap(){this._instancesByUid.clear();for(const e of this._allObjectClasses)if(!e.IsFamily())for(const a of e.GetInstances())this._instancesByUid.set(a.GetUID(),a)}IsPreview(){return"preview"===this._exportType}IsDebug(){return this._isDebug}GetExportType(){return this._exportType}IsCordova(){return"cordova"===this._exportType}IsWKWebView(){return this._isWKWebView}GetCollisionEngine(){return this._collisionEngine}GetSolidBehavior(){return this._pluginManager.GetSolidBehavior()}GetJumpthruBehavior(){return this._pluginManager.GetJumpthruBehavior()}IsLayoutFirstTick(){return this._isLayoutFirstTick}SetPixelRoundingEnabled(a){a=!!a;this._isPixelRoundingEnabled===a||(this._isPixelRoundingEnabled=a,this.UpdateRender())}IsPixelRoundingEnabled(){return this._isPixelRoundingEnabled}SaveToSlot(e){this._saveToSlotName=e}LoadFromSlot(e){this._loadFromSlotName=e}LoadFromJsonString(e){this._loadFromJson=e}GetLastSaveJsonString(){return this._lastSaveJson}_NeedsHandleSaveOrLoad(){return!!(this._saveToSlotName||this._loadFromSlotName||null!==this._loadFromJson)}async _HandleSaveOrLoad(){if(this._saveToSlotName&&(this.FlushPendingInstances(),await this._DoSaveToSlot(this._saveToSlotName),this._ClearSaveOrLoad()),this._loadFromSlotName&&(await this._DoLoadFromSlot(this._loadFromSlotName),this._ClearSaveOrLoad(),this.IsDebug()&&C3Debugger.StepIfPausedInDebugger()),null!==this._loadFromJson){this.FlushPendingInstances();try{await this._DoLoadFromJsonString(this._loadFromJson),this._lastSaveJson=this._loadFromJson,await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadComplete,null),this._lastSaveJson=""}catch(e){console.error("[Construct 3] Failed to load state from JSON string: ",e),await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadFailed,null)}this._ClearSaveOrLoad()}}_ClearSaveOrLoad(){this._saveToSlotName="",this._loadFromSlotName="",this._loadFromJson=null}_GetSavegamesStorage(){return this._savegamesStorage||(this._savegamesStorage=localforage.createInstance({name:"c3-savegames-"+this.GetProjectUniqueId(),description:this.GetProjectName()})),this._savegamesStorage}async _DoSaveToSlot(e){const a=this._SaveToJsonString();try{await this._GetSavegamesStorage().setItem(e,a),console.log("[Construct 3] Saved state to storage ("+a.length+" chars)"),this._lastSaveJson=a,await this.TriggerAsync(C3.Plugins.System.Cnds.OnSaveComplete,null),this._lastSaveJson=""}catch(e){console.error("[Construct 3] Failed to save state to storage: ",e),await this.TriggerAsync(C3.Plugins.System.Cnds.OnSaveFailed,null)}}async _DoLoadFromSlot(e){try{const a=await this._GetSavegamesStorage().getItem(e);if(!a)throw new Error("empty slot");console.log("[Construct 3] Loaded state from storage ("+a.length+" chars)"),await this._DoLoadFromJsonString(a),this._lastSaveJson=a,await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadComplete,null),this._lastSaveJson=""}catch(e){console.error("[Construct 3] Failed to load state from storage: ",e),await this.TriggerAsync(C3.Plugins.System.Cnds.OnLoadFailed,null)}}_SaveToJsonString(){const e={"c3save":!0,"version":1,"rt":{"time":this.GetGameTime(),"walltime":this.GetWallTime(),"timescale":this.GetTimeScale(),"tickcount":this.GetTickCount(),"execcount":this.GetExecCount(),"next_uid":this._nextUid,"running_layout":this.GetMainRunningLayout().GetSID(),"start_time_offset":Date.now()-this._startTime},"types":{},"layouts":{},"events":this._eventSheetManager._SaveToJson()};for(const a of this._allObjectClasses)a.IsFamily()||a.HasNoSaveBehavior()||(e["types"][a.GetSID().toString()]=a._SaveToJson());for(const a of this._layoutManager.GetAllLayouts())e["layouts"][a.GetSID().toString()]=a._SaveToJson();return JSON.stringify(e)}IsLoadingState(){return this._isLoadingState}_TriggerOnCreateAfterLoad(e){C3.shallowAssignArray(this._triggerOnCreateAfterLoad,e)}async _DoLoadFromJsonString(e){const a=JSON.parse(e);if(a["c2save"])throw new Error("C2 saves are incompatible with C3 runtime");if(!a["c3save"])throw new Error("not valid C3 save data");if(1n||n>=s.length)throw new Error("missing sibling instance");e._AddSibling(s[n])}}this._dispatcher.dispatchEvent(C3.New(C3.Event,"afterload")),this.UpdateRender()}async AddJobWorkerScripts(e){const a=await Promise.all(e.map((e)=>this._assetManager.FetchBlob(e))),n=a.map((e)=>URL.createObjectURL(e));this._jobScheduler.ImportScriptsToJobWorkers(n)}AddJobWorkerBlob(e,a){this._jobScheduler.SendBlobToJobWorkers(e,a)}AddJobWorkerBuffer(e,a){this._jobScheduler.SendBufferToJobWorkers(e,a)}AddJob(e,a,n){return this._jobScheduler.AddJob(e,a,n)}BroadcastJob(e,a,n){return this._jobScheduler.BroadcastJob(e,a,n)}InvokeDownload(e,a){this.PostComponentMessageToDOM("runtime","invoke-download",{"url":e,"filename":a})}async RasterSvgImage(e,a,n){if(this.IsInWorker())return await this.PostComponentMessageToDOMAsync("runtime","raster-svg-image",{"blob":e,"width":a,"height":n});else{const t=await C3.BlobToImage(e);return await self["C3_RasterSvgImage"](t,a,n)}}Random(){return this._randomNumberCallback()}SetRandomNumberGeneratorCallback(e){this._randomNumberCallback=e}HitBreakpoint(){return!!this.IsDebug()&&C3Debugger.HitBreakpoint()}DebugBreak(e){return this.IsDebugging()?C3Debugger.DebugBreak(e):Promise.resolve()}DebugBreakNext(){return!!this.IsDebugging()&&C3Debugger.BreakNext()}SetDebugBreakpointsEnabled(a){this._breakpointsEnabled=!!a,this._UpdateDebuggingFlag()}AreDebugBreakpointsEnabled(){return this._breakpointsEnabled}IsDebugging(){return this._isDebugging}SetDebuggingEnabled(e){e?this._debuggingDisabled--:this._debuggingDisabled++,this._UpdateDebuggingFlag()}_UpdateDebuggingFlag(){this._isDebugging=this.IsDebug()&&this._breakpointsEnabled&&0===this._debuggingDisabled}IsCPUProfiling(){return this.IsDebug()&&C3Debugger.IsCPUProfiling()}IsGPUProfiling(){return this.IsDebug()&&this.GetWebGLRenderer().SupportsGPUProfiling()&&C3Debugger.IsGPUProfiling()}async DebugIterateAndBreak(e){if(e)for(const a of e)await this.DebugBreak(a)}DebugFireGeneratorEventAndBreak(e){return this.DebugIterateAndBreak(this._dispatcher.dispatchGeneratorEvent(e))}},self["C3_CreateRuntime"]=C3.Runtime.Create,self["C3_InitRuntime"]=(e,a)=>e.Init(a)} + +// c3/workers/jobSchedulerRuntime.js +"use strict";C3.JobSchedulerRuntime=class extends C3.DefendedBase{constructor(a,b){super(),this._runtime=a,this._jobPromises=new Map,this._nextJobId=0,this._inputPort=b["inputPort"],b["outputPort"].onmessage=(a)=>this._OnJobWorkerMessage(a),this._maxNumWorkers=b["maxNumWorkers"],this._jobWorkerCount=1,this._isCreatingWorker=!1,this._hadErrorCreatingWorker=!1,this._isBroken=!1,this._testOkResolve=null}async Init(){await this._TestMessageChannelWorks()}ImportScriptsToJobWorkers(a){this._isBroken||this._inputPort.postMessage({"type":"_import_scripts","scripts":a})}SendBlobToJobWorkers(a,b){this._isBroken||this._inputPort.postMessage({"type":"_send_blob","blob":a,"id":b})}SendBufferToJobWorkers(a,b){this._isBroken||this._inputPort.postMessage({"type":"_send_buffer","buffer":a,"id":b},[a])}AddJob(a,b,c,d,e){if(this._isBroken)return Promise.reject("messagechannels broken");c||(c=[]);const f=this._nextJobId++,g={"type":a,"isBroadcast":!1,"jobId":f,"params":b,"transferables":c},h=new Promise((a,b)=>{this._jobPromises.set(f,{resolve:a,progress:d,reject:b,cancelled:!1})});return e&&e.SetAction(()=>this._CancelJob(f)),this._inputPort.postMessage(g,c),this._MaybeCreateExtraWorker(),h}BroadcastJob(a,b,c){if(!this._isBroken){c||(c=[]);const d=this._nextJobId++,e={"type":a,"isBroadcast":!0,"jobId":d,"params":b,"transferables":c};this._inputPort.postMessage(e,c)}}_CancelJob(a){const b=this._jobPromises.get(a);b&&(b.cancelled=!0,b.resolve=null,b.progress=null,b.reject=null,this._inputPort.postMessage({"type":"_cancel","jobId":a}))}_OnJobWorkerMessage(a){const b=a.data,c=b["type"],d=b["jobId"];switch(c){case"result":this._OnJobResult(d,b["result"]);break;case"progress":this._OnJobProgress(d,b["progress"]);break;case"error":this._OnJobError(d,b["error"]);break;case"ready":this._OnJobWorkerReady();break;case"_testMessageChannelOk":this._OnTestMessageChannelOk();break;default:throw new Error(`unknown message from worker '${c}'`);}}_OnJobResult(a,b){const c=this._jobPromises.get(a);if(!c)throw new Error("invalid job ID");c.cancelled||c.resolve(b),this._jobPromises.delete(a)}_OnJobProgress(a,b){const c=this._jobPromises.get(a);if(!c)throw new Error("invalid job ID");!c.cancelled&&c.progress&&c.progress(b)}_OnJobError(a,b){const c=this._jobPromises.get(a);if(!c)throw new Error("invalid job ID");c.cancelled||c.reject(b),this._jobPromises.delete(a)}_OnJobWorkerReady(){this._isCreatingWorker&&(this._isCreatingWorker=!1,this._jobWorkerCount++,this._jobWorkerCount=this._maxNumWorkers||this._isCreatingWorker||this._hadErrorCreatingWorker||this._jobPromises.size<=this._jobWorkerCount))try{this._isCreatingWorker=!0;const a=await this._runtime.PostComponentMessageToDOMAsync("runtime","create-job-worker");a["outputPort"].onmessage=(a)=>this._OnJobWorkerMessage(a)}catch(a){this._hadErrorCreatingWorker=!0,this._isCreatingWorker=!1,console.error(`[Construct 3] Failed to create job worker; stopping creating any more (created ${this._jobWorkerCount} so far)`,a)}}_TestMessageChannelWorks(){return this._inputPort.postMessage({"type":"_testMessageChannel"}),self.setTimeout(()=>this._CheckMessageChannelTestTimedOut(),2e3),new Promise((a)=>this._testOkResolve=a)}_OnTestMessageChannelOk(){this._testOkResolve(),this._testOkResolve=null}_CheckMessageChannelTestTimedOut(){this._testOkResolve&&(console.warn("MessageChannel determined to be broken. Job scheduler disabled."),this._isBroken=!0,this._testOkResolve(),this._testOkResolve=null)}}; + +self["C3_Shaders"] = {}; + + +"use strict";{function a(c,a){const b=c[1],d=a[1];if("number"==typeof b&&"number"==typeof d)return b-d;else{const a=""+b,c=""+d;return ac?1:0}}let b=null,c="",d="",e=[],f="",g="",h="";const i=C3.New(C3.ArrayStack);C3.Plugins.System=class extends C3.SDKPluginBase{constructor(a){super(a),this._loopStack=this._runtime.GetEventSheetManager().GetLoopStack(),this._imagesLoadingTotal=0,this._imagesLoadingComplete=0}Release(){super.Release()}UpdateRender(){this._runtime.UpdateRender()}Trigger(a){this._runtime.Trigger(a,null)}GetRegex(a,e){return b&&a===c&&e===d||(b=new RegExp(a,e),c=a,d=e),b.lastIndex=0,b}GetRegexMatches(a,b,c){if(a===f&&b===g&&c===h)return e;const d=this.GetRegex(b,c);return e=a.match(d),f=a,g=b,h=c,e}async _LoadTexturesForObjectClasses(a,b){if(b.length){this._imagesLoadingTotal+=b.length;const c=[];for(const d of b)c.push(a.MaybeLoadTexturesFor(d));await C3.PromiseAllWithProgress(c,()=>{this._imagesLoadingComplete++}),this._imagesLoadingComplete++,this._imagesLoadingComplete===this._imagesLoadingTotal&&(this._runtime.Trigger(C3.Plugins.System.Cnds.OnImageLoadingComplete,null),this._imagesLoadingComplete=0,this._imagesLoadingTotal=0)}}_UnloadTexturesForObjectClasses(a,b){for(const c of b)0===c.GetInstanceCount()&&a.MaybeUnloadTexturesFor(c)}_GetForEachStack(){return i}_Repeat(a){const b=this._runtime.GetEventSheetManager(),c=b.GetEventStack(),d=c.GetCurrentStackFrame(),e=d.GetCurrentEvent(),f=e.GetSolModifiers(),g=d.IsSolModifierAfterCnds(),h=c.Push(e),i=b.GetLoopStack(),j=i.Push();if(j.SetEnd(a),g)for(let c=0;c=c&&!l.IsStopped();--a)d.PushCopySol(h),l.SetIndex(a),g.Retrigger(f,j),d.PopSol(h);else for(let a=b;a>=c&&!l.IsStopped();--a)l.SetIndex(a),g.Retrigger(f,j);}else if(i)for(let a=b;a<=c&&!l.IsStopped();++a)d.PushCopySol(h),l.SetIndex(a),g.Retrigger(f,j),d.PopSol(h);else for(let a=b;a<=c&&!l.IsStopped();++a)l.SetIndex(a),g.Retrigger(f,j);return e.Pop(),k.Pop(),!1}*_DebugFor(a,b,c){const d=this._runtime.GetEventSheetManager(),e=d.GetEventStack(),f=e.GetCurrentStackFrame(),g=f.GetCurrentEvent(),h=g.GetSolModifiers(),i=f.IsSolModifierAfterCnds(),j=e.Push(g),k=d.GetLoopStack(),l=k.Push();if(l.SetName(a),l.SetEnd(c),c=c&&!l.IsStopped();--a)d.PushCopySol(h),l.SetIndex(a),yield*g.DebugRetrigger(f,j),d.PopSol(h);else for(let a=b;a>=c&&!l.IsStopped();--a)l.SetIndex(a),yield*g.DebugRetrigger(f,j);}else if(i)for(let a=b;a<=c&&!l.IsStopped();++a)d.PushCopySol(h),l.SetIndex(a),yield*g.DebugRetrigger(f,j),d.PopSol(h);else for(let a=b;a<=c&&!l.IsStopped();++a)l.SetIndex(a),yield*g.DebugRetrigger(f,j);return e.Pop(),k.Pop(),!1}_ForEach(a){const b=this._runtime.GetEventSheetManager(),c=b.GetEventStack(),d=c.GetCurrentStackFrame(),e=d.GetCurrentEvent(),f=e.GetSolModifiers(),g=d.IsSolModifierAfterCnds(),h=c.Push(e),j=b.GetLoopStack(),k=j.Push(),l=a.IsInContainer(),m=a.GetCurrentSol(),n=i.Push();if(C3.shallowAssignArray(n,m.GetInstances()),k.SetEnd(n.length),g)for(let c=0,g=n.length;c=d+f?(c.set("Every_lastTime",d+f),e>=c.get("Every_lastTime")+.04&&c.set("Every_lastTime",e),c.set("Every_seconds",a),!0):(e=d&&c<=a},CompareVar(a,b,c){return C3.compare(a.GetValue(),b,c)},CompareBoolVar(a){return!!a.GetValue()},CompareTime(a,b){const c=this._runtime.GetGameTime();if(0===a){const a=this._runtime.GetCurrentCondition(),d=a.GetSavedDataMap();return!(d.get("CompareTime_executed")||!(c>=b))&&(d.set("CompareTime_executed",!0),!0)}return C3.compare(c,a,b)},IsNaN(a){return isNaN(a)},AngleWithin(a,b,c){return C3.angleDiff(C3.toRadians(a),C3.toRadians(c))<=C3.toRadians(b)},IsClockwiseFrom(a,b){return C3.angleClockwise(C3.toRadians(a),C3.toRadians(b))},IsBetweenAngles(b,a,c){let d=C3.toRadians(b),e=C3.toRadians(a),f=C3.toRadians(c),g=!C3.angleClockwise(f,e);return g?C3.angleClockwise(d,e)||!C3.angleClockwise(d,f):C3.angleClockwise(d,e)&&!C3.angleClockwise(d,f)},IsValueType(a,b){return"number"==typeof a?0===b:1===b},PickByComparison(a,b,c,d){if(!a)return!1;const e=this._GetForEachStack(),f=e.Push(),g=a.GetCurrentSol();C3.shallowAssignArray(f,g.GetInstances()),g.IsSelectAll()&&C3.clearArray(g._GetOwnElseInstances());const h=this._runtime.GetCurrentCondition();let j=0;for(let e=0,i=f.length;e=d.length)return!1;const e=d[b];return c.PickOne(e),a.ApplySolToContainer(),!0},PickRandom(a){if(!a)return!1;const b=a.GetCurrentSol(),c=b.GetInstances(),d=Math.floor(this._runtime.Random()*c.length);if(d>=c.length)return!1;const e=c[d];return b.PickOne(e),a.ApplySolToContainer(),!0},PickAll(a){if(!a)return!1;if(!a.GetInstanceCount())return!1;const b=a.GetCurrentSol();return b._SetSelectAll(!0),a.ApplySolToContainer(),!0},PickOverlappingPoint(b,c,d){if(!b)return!1;const e=b.GetCurrentSol(),f=e.GetInstances(),g=this._runtime.GetCurrentEvent(),h=g.IsOrBlock(),j=this._runtime.GetCurrentCondition().IsInverted();e.IsSelectAll()?(C3.shallowAssignArray(a,f),e.ClearArrays(),e._SetSelectAll(!1)):h?(C3.shallowAssignArray(a,e._GetOwnElseInstances()),C3.clearArray(e._GetOwnElseInstances())):(C3.shallowAssignArray(a,e._GetOwnInstances()),C3.clearArray(e._GetOwnInstances()));for(let f=0,g=a.length;fb&&(b=0),!!a){const c=a.GetCurrentSol(),d=c.GetInstances();for(const a of d)a.SetTimeScale(b)}},RestoreObjectTimescale(a){if(a){const b=a.GetCurrentSol(),c=b.GetInstances();for(const a of c)a.RestoreTimeScale()}},Wait(a){if(!(0>a))return this._runtime.GetEventSheetManager().AddScheduledWait().InitTimer(a),!0},WaitForSignal(a){return this._runtime.GetEventSheetManager().AddScheduledWait().InitSignal(a),!0},Signal(a){const b=a.toLowerCase();for(const c of this._runtime.GetEventSheetManager().scheduledWaits())c.IsSignal()&&c.GetSignalTag()===b&&c.SetSignalled()},SnapshotCanvas(a,b){const c=this._runtime.GetCanvasManager();c&&(c.SnapshotCanvas(0===a?"image/png":"image/jpeg",b/100).then(()=>this._runtime.TriggerAsync(C3.Plugins.System.Cnds.OnCanvasSnapshot,null)),this.UpdateRender())},SetCanvasSize(a,b){if(!(0>=a||0>=b)){this._runtime.SetViewportSize(a,b);const c=this._runtime.GetCanvasManager();c&&("off"===c.GetCurrentFullscreenMode()?c.SetSize(c.GetLastWidth(),c.GetLastHeight(),!0):(this._runtime.SetOriginalViewportSize(a,b),c.SetSize(c.GetLastWidth(),c.GetLastHeight(),!0)),this._runtime.UpdateRender())}},SetFullscreenQuality(a){const b=this._runtime.GetCanvasManager();b&&"off"!==b.GetCurrentFullscreenMode()&&(b.SetFullscreenScalingQuality(0===a?"low":"high"),b.SetSize(b.GetLastWidth(),b.GetLastHeight(),!0))},SaveState(a){this._runtime.SaveToSlot(a)},LoadState(a){this._runtime.LoadFromSlot(a)},LoadStateJSON(a){this._runtime.LoadFromJsonString(a)},SetHalfFramerateMode(){},ResetPersisted(){for(const a of this._runtime.GetLayoutManager().GetAllLayouts())a.ResetPersistData()},SetPixelRounding(a){this._runtime.SetPixelRoundingEnabled(0!==a)},SetMinimumFramerate(a){this._runtime.SetMinimumFramerate(a)},SortZOrderByInstVar(e,f){if(e){const g=e.GetCurrentSol(),h=g.GetInstances(),j=c,k=d,l=this._runtime.GetCurrentLayout(),m=e.IsFamily(),n=e.GetFamilyIndex();for(let a=0,b=h.length;ac||c>=b.length)){const a=g.GetShaderProgram().GetParameterType(c);if("color"===a){e.setFromRgbValue(d);const a=b[c];if(e.equalsIgnoringAlpha(a))return;a.copyRgb(e)}else{if("percent"===a&&(d/=100),b[c]===d)return;b[c]=d}g.IsActive()&&this._runtime.UpdateRender()}}}},SetLayerForceOwnTexture(a,b){a&&(b=!!b,a.IsForceOwnTexture()===b||(a.SetForceOwnTexture(b),this.UpdateRender()))},SetLayoutScale(a){const b=this._runtime.GetCurrentLayout();b.GetScale()===a||(b.SetScale(a),this.UpdateRender())},SetLayoutAngle(b){b=C3.clampAngle(C3.toRadians(+b));const c=this._runtime.GetCurrentLayout();c.GetAngle()===b||(c.SetAngle(b),this.UpdateRender())},SetLayoutEffectEnabled(a,b){const c=this._runtime.GetCurrentLayout(),d=c.GetEffectList(),f=d.GetEffectTypeByName(b);if(f){const b=1===a;f.IsActive()===b||(f.SetActive(b),d.UpdateActiveEffects(),this._runtime.UpdateRender())}},SetLayoutEffectParam(a,b,c){const d=this._runtime.GetCurrentLayout(),f=d.GetEffectList(),g=f.GetEffectTypeByName(a);if(g){const a=g.GetIndex(),d=f.GetEffectParametersForIndex(a);if(b=Math.floor(b),!(0>b||b>=d.length)){const a=g.GetShaderProgram().GetParameterType(b);if("color"===a){e.setFromRgbValue(c);const a=d[b];if(e.equalsIgnoringAlpha(a))return;a.copyRgb(e)}else{if("percent"===a&&(c/=100),d[b]===c)return;d[b]=c}g.IsActive()&&this._runtime.UpdateRender()}}},ScrollX(a){const b=this._runtime.GetCurrentLayout();b.SetScrollX(a)},ScrollY(a){const b=this._runtime.GetCurrentLayout();b.SetScrollY(a)},Scroll(a,b){const c=this._runtime.GetCurrentLayout();c.SetScrollX(a),c.SetScrollY(b)},ScrollToObject(a){if(a){const b=a.GetFirstPicked();if(b){const a=b.GetWorldInfo();if(a){const b=this._runtime.GetCurrentLayout();b.SetScrollX(a.GetX()),b.SetScrollY(a.GetY())}}}},LoadObjectTextures(a){const b=this._runtime.GetMainRunningLayout();if(b&&a&&!this._runtime.IsLoading()){const c=a.IsFamily()?a.GetFamilyMembers():[a];this._LoadTexturesForObjectClasses(b,c)}},LoadObjectTexturesByName(a){C3.Plugins.System.Acts.LoadObjectTextures.call(this,this._runtime.GetObjectClassByName(a))},UnloadObjectTextures(a){const b=this._runtime.GetMainRunningLayout();if(b&&a){const c=a.IsFamily()?a.GetFamilyMembers():[a];this._UnloadTexturesForObjectClasses(b,c)}},UnloadObjectTexturesByName(a){C3.Plugins.System.Acts.UnloadObjectTexturesByName.call(this,this._runtime.GetObjectClassByName(a))},UnloadUnusedTextures(){const a=this._runtime.GetMainRunningLayout();if(a){const b=a._GetTextureLoadedObjectTypes();this._UnloadTexturesForObjectClasses(a,b)}},LoadLayoutTextures(a){const b=this._runtime.GetMainRunningLayout();a&&b&&!this._runtime.IsLoading()&&this._LoadTexturesForObjectClasses(b,a._GetInitialObjectClasses())},LoadLayoutTexturesByName(a){const b=this._runtime.GetMainRunningLayout(),c=this._runtime.GetLayoutManager().GetLayoutByName(a);c&&b&&!this._runtime.IsLoading()&&this._LoadTexturesForObjectClasses(b,c._GetInitialObjectClasses())}}} + +"use strict";C3.Plugins.System.Exps={int:function(a){return"string"==typeof a&&(a=parseInt(a,10),isNaN(a)&&(a=0)),Math.floor(a)},float:function(a){return"string"==typeof a&&(a=parseFloat(a),isNaN(a)&&(a=0)),a},str(a){return a.toString()},len(a){return"string"==typeof a?a.length:0},random(c,a){return"undefined"==typeof a?this._runtime.Random()*c:this._runtime.Random()*(a-c)+c},choose(...a){const b=Math.floor(this._runtime.Random()*a.length);return a[b]},pi(){return Math.PI},infinity(){return 1/0},sqrt(a){return Math.sqrt(a)},abs(a){return Math.abs(a)},round(a){return Math.round(a)},floor(a){return Math.floor(a)},ceil(a){return Math.ceil(a)},sign(a){return Math.sign(a)},sin(a){return Math.sin(C3.toRadians(a))},cos(a){return Math.cos(C3.toRadians(a))},tan(a){return Math.tan(C3.toRadians(a))},asin(a){return C3.toDegrees(Math.asin(a))},acos(a){return C3.toDegrees(Math.acos(a))},atan(a){return C3.toDegrees(Math.atan(a))},exp(a){return Math.exp(a)},ln(a){return Math.log(a)},log10(a){return Math.log(a)/Math.LN10},max(...a){let b=a[0];"number"!=typeof b&&(b=0);for(let c,d=1,e=a.length;dc&&(b=c);return b},clamp(a,b,c){return C3.clamp(a,b,c)},distance(a,b,c,d){return C3.distanceTo(a,b,c,d)},angle(a,b,c,d){return C3.toDegrees(C3.angleTo(a,b,c,d))},lerp(c,a,b){return C3.lerp(c,a,b)},unlerp(c,a,b){return C3.unlerp(c,a,b)},qarp(d,a,b,c){return C3.qarp(d,a,b,c)},cubic(e,a,b,c,d){return C3.cubic(e,a,b,c,d)},cosp(c,a,b){return C3.cosp(c,a,b)},anglediff(c,a){return C3.toDegrees(C3.angleDiff(C3.toRadians(c),C3.toRadians(a)))},anglelerp(c,a,b){return C3.toDegrees(C3.angleLerp(C3.toRadians(c),C3.toRadians(a),b))},anglerotate(d,a,b){return C3.toDegrees(C3.angleRotate(C3.toRadians(d),C3.toRadians(a),C3.toRadians(b)))},setbit(a,c,b){return a|=0,c|=0,b=0===b?0:1,a&~(1<b||b>=d.length?"":d[b]},tokencount(a,b){return"string"==typeof a&&"string"==typeof b&&a.length?a.split(b).length:0},find(a,b){return"string"==typeof a&&"string"==typeof b?a.search(new RegExp(C3.EscapeRegex(b),"i")):-1},findcase(a,b){return"string"==typeof a&&"string"==typeof b?a.search(new RegExp(C3.EscapeRegex(b),"")):-1},replace(a,b,c){return"string"==typeof a&&"string"==typeof b&&"string"==typeof c?a.replace(new RegExp(C3.EscapeRegex(b),"gi"),c):"string"==typeof a?a:""},regexsearch(a,b,c){const d=this.GetRegex(b,c);return a?a.search(d):-1},regexreplace(a,b,c,d){const e=this.GetRegex(b,c);return a?a.replace(e,d):""},regexmatchcount(a,b,c){const d=this.GetRegexMatches(a.toString(),b,c);return d?d.length:0},regexmatchat(a,b,c,d){d=Math.floor(d);const e=this.GetRegexMatches(a.toString(),b,c);return!e||0>d||d>=e.length?"":e[d]},zeropad(a,b){let c=0>a?"-":"";0>a&&(a=-a);const d=b-a.toString().length;return c+="0".repeat(Math.max(d,0)),c+a.toString()},urlencode(a){return encodeURIComponent(a)},urldecode(a){return decodeURIComponent(a)},dt(){return this._runtime._GetDtFast()},timescale(){return this._runtime.GetTimeScale()},wallclocktime(){return(Date.now()-this._runtime.GetStartTime())/1e3},unixtime(){return Date.now()},time(){return this._runtime.GetGameTime()},tickcount(){return this._runtime.GetTickCount()},objectcount(){return this._runtime.GetObjectCount()},fps(){return this._runtime.GetFPS()},cpuutilisation(){return this._runtime.GetMainThreadTime()},gpuutilisation(){return this._runtime.GetGPUUtilisation()},windowwidth(){return this._runtime.GetCanvasManager().GetDeviceWidth()},windowheight(){return this._runtime.GetCanvasManager().GetDeviceHeight()},originalwindowwidth(){return this._runtime.GetOriginalViewportWidth()},originalwindowheight(){return this._runtime.GetOriginalViewportHeight()},originalviewportwidth(){return this._runtime.GetOriginalViewportWidth()},originalviewportheight(){return this._runtime.GetOriginalViewportHeight()},scrollx(){return this._runtime.GetCurrentLayout().GetScrollX()},scrolly(){return this._runtime.GetCurrentLayout().GetScrollY()},layoutname(){return this._runtime.GetCurrentLayout().GetName()},layoutscale(){return this._runtime.GetCurrentLayout().GetScale()},layoutangle(){return C3.toDegrees(this._runtime.GetCurrentLayout().GetAngle())},layoutwidth(){return this._runtime.GetCurrentLayout().GetWidth()},layoutheight(){return this._runtime.GetCurrentLayout().GetHeight()},viewportleft(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getLeft():0},viewporttop(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getTop():0},viewportright(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getRight():0},viewportbottom(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().getBottom():0},viewportwidth(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().width():0},viewportheight(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetViewport().height():0},canvastolayerx(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.CanvasCssToLayer(b,c)[0]:0},canvastolayery(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.CanvasCssToLayer(b,c)[1]:0},layertocanvasx(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.LayerToCanvasCss(b,c)[0]:0},layertocanvasy(a,b,c){const d=this._runtime.GetCurrentLayout().GetLayer(a);return d?d.LayerToCanvasCss(b,c)[1]:0},layerscale(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetOwnScale():0},layerangle(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?C3.toDegrees(b.GetOwnAngle()):0},layeropacity(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?100*b.GetOpacity():0},layerscalerate(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetScaleRate():0},layerparallaxx(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?100*b.GetParallaxX():0},layerparallaxy(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?100*b.GetParallaxY():0},layerindex(a){const b=this._runtime.GetCurrentLayout().GetLayer(a);return b?b.GetIndex():-1},canvassnapshot(){const a=this._runtime.GetCanvasManager();return a?a.GetCanvasSnapshotUrl():""},loopindex(a){const b=this._loopStack;if(!b.IsInLoop())return 0;if(a){const c=b.FindByName(a);return c?c.GetIndex():0}return b.GetCurrent().GetIndex()},savestatejson(){return this._runtime.GetLastSaveJsonString()},loadingprogress(){return this._runtime.GetAssetManager().GetLoadProgress()},imageloadingprogress(){return 0===this._imagesLoadingTotal?1:this._imagesLoadingComplete/this._imagesLoadingTotal},renderer(){return"webgl"},rendererdetail(){return this._runtime.GetWebGLRenderer().GetUnmaskedRenderer()},imagememoryusage(){let a=this._runtime.GetWebGLRenderer().GetEstimatedTextureMemoryUsage();return Math.round(100*a/1048576)/100},rgb(a,c,d){return C3.PackRGB(a,c,d)},rgbex(a,c,d){return C3.PackRGBEx(a/100,c/100,d/100)},rgba(c,d,e,b){return C3.PackRGBAEx(c/100,d/100,e/100,b/100)},rgbex255(a,c,d){return C3.PackRGBEx(a/255,c/255,d/255)},rgba255(c,d,e,b){return C3.PackRGBAEx(c/255,d/255,e/255,b/255)},projectname(){return this._runtime.GetProjectName()},projectversion(){return this._runtime.GetProjectVersion()}}; + +"use strict";C3.Plugins.TiledBg=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.TiledBg.Type=class extends C3.SDKTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){this.GetImageInfo().LoadAsset(this._runtime)}LoadTextures(a){return this.GetImageInfo().LoadStaticTexture(a,{linearSampling:this._runtime.IsLinearSampling(),isTiled:!0})}ReleaseTextures(){this.GetImageInfo().ReleaseTexture()}}; + +"use strict";{const a=C3.New(C3.Quad),b=C3.New(C3.Rect),c=C3.New(C3.Quad);C3.Plugins.TiledBg.Instance=class extends C3.SDKWorldInstanceBase{constructor(a,b){super(a),this._imageOffsetX=0,this._imageOffsetY=0,this._imageScaleX=1,this._imageScaleY=1,this._imageAngle=0,this._ownImageInfo=null,b&&(this.GetWorldInfo().SetVisible(!!b[0]),this._imageOffsetX=b[2],this._imageOffsetY=b[3],this._imageScaleX=b[4],this._imageScaleY=b[5],this._imageAngle=C3.toRadians(b[6]))}Release(){this._ReleaseOwnImage(),super.Release()}_ReleaseOwnImage(){this._ownImageInfo&&(this._ownImageInfo.Release(),this._ownImageInfo=null)}Draw(d){var e=Math.round;const f=this.GetCurrentImageInfo(),g=f.GetTexture();if(!g)return;const h=this.GetWorldInfo();let i=h.GetBoundingQuad();d.SetTexture(g);const j=f.GetWidth(),k=f.GetHeight(),l=this._imageOffsetX/j,m=this._imageOffsetY/k;if(b.set(0,0,h.GetWidth()/(j*this._imageScaleX),h.GetHeight()/(k*this._imageScaleY)),b.offset(-l,-m),this._runtime.IsPixelRoundingEnabled()){const b=e(h.GetX())-h.GetX(),c=e(h.GetY())-h.GetY();a.copy(i),a.offset(b,c),i=a}0===this._imageAngle?d.Quad3(i,b):(c.setFromRotatedRect(b,-this._imageAngle),d.Quad4(i,c))}GetCurrentImageInfo(){return this._ownImageInfo||this._objectClass.GetImageInfo()}}} + +"use strict";C3.Plugins.TiledBg.Cnds={OnURLLoaded(){return!0}}; + +"use strict";C3.Plugins.TiledBg.Acts={SetImageOffsetX(a){this._imageOffsetX===a||(this._imageOffsetX=a,this._runtime.UpdateRender())},SetImageOffsetY(a){this._imageOffsetY===a||(this._imageOffsetY=a,this._runtime.UpdateRender())},SetImageScaleX(a){a/=100;this._imageScaleX===a||(this._imageScaleX=a,this._runtime.UpdateRender())},SetImageScaleY(a){a/=100;this._imageScaleY===a||(this._imageScaleY=a,this._runtime.UpdateRender())},SetImageAngle(b){b=C3.toRadians(b);this._imageAngle===b||(this._imageAngle=b,this._runtime.UpdateRender())},SetEffect(a){this.GetWorldInfo().SetBlendMode(a),this._runtime.UpdateRender()},LoadURL(a){this._ownImageInfo&&this._ownImageInfo.GetURL()===a||(async()=>{const b=this._runtime,c=C3.New(C3.ImageInfo);if(await c.LoadDynamicAsset(b,a),this.WasReleased())return c.Release(),null;const d=await c.LoadStaticTexture(b.GetWebGLRenderer(),{linearSampling:b.IsLinearSampling(),isTiled:!0});return d?this.WasReleased()?void c.Release():void(this._ReleaseOwnImage(),this._ownImageInfo=c,b.UpdateRender(),await this.TriggerAsync(C3.Plugins.TiledBg.Cnds.OnURLLoaded)):void 0})()}}; + +"use strict";C3.Plugins.TiledBg.Exps={ImageWidth(){return this.GetCurrentImageInfo().GetWidth()},ImageHeight(){return this.GetCurrentImageInfo().GetHeight()},ImageOffsetX(){return this._imageOffsetX},ImageOffsetY(){return this._imageOffsetY},ImageScaleX(){return 100*this._imageScaleX},ImageScaleY(){return 100*this._imageScaleY},ImageAngle(){return C3.toDegrees(this._imageAngle)}}; + +"use strict";C3.Plugins.Sprite=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.Sprite.Type=class extends C3.SDKTypeBase{constructor(a){super(a),this._animations=a.GetAnimations()}Release(){C3.clearArray(this._animations),super.Release()}OnCreate(){for(const b of this._animations)b.LoadAllAssets(this._runtime)}LoadTextures(b){const c={linearSampling:this._runtime.IsLinearSampling()};return Promise.all(this._animations.map((d)=>d.LoadAllTextures(b,c)))}ReleaseTextures(){for(const b of this._animations)b.ReleaseAllTextures()}OnDynamicTextureLoadComplete(){this._UpdateAllCurrentTexture()}_UpdateAllCurrentTexture(){for(const a of this._objectClass.GetInstances())a.GetSdkInstance()._UpdateCurrentTexture()}FinishCondition(a){C3.Plugins.Sprite._FinishCondition(this,a)}}; + +"use strict";{const a=C3.New(C3.Quad),b=C3.New(C3.Vector2);C3.Plugins.Sprite.Instance=class extends C3.SDKWorldInstanceBase{constructor(a,b){super(a);let c=!0,d="",e=0,f=!0;b&&(c=!!b[0],d=b[1],e=b[2],f=b[3]),this._currentAnimation=this._objectClass.GetAnimationByName(d)||this._objectClass.GetAnimations()[0],this._currentFrameIndex=C3.clamp(e,0,this._currentAnimation.GetFrameCount()-1),this._currentAnimationFrame=this._currentAnimation.GetFrameAt(this._currentFrameIndex);const g=this._currentAnimationFrame.GetImageInfo();this._currentTexture=g.GetTexture(),this._currentRcTex=g.GetTexRect(),this.HandleWebGLContextLoss(),this._isPlayingForwards=0<=this._currentAnimation.GetSpeed(),this._currentAnimationSpeed=Math.abs(this._currentAnimation.GetSpeed()),this._currentAnimationRepeatTo=this._currentAnimation.GetRepeatTo(),this._animationTimer=C3.New(C3.KahanSum),this._frameStartTime=0,this._isAnimationPlaying=!0,this._animationRepeats=0,this._animTriggerName="",this._isInAnimTrigger=!1,this._changeAnimFrameIndex=-1,this._changeAnimationName="",this._changeAnimationFrom=0;const h=this.GetWorldInfo();this._bquadRef=h.GetBoundingQuad(),h.SetVisible(c),h.SetCollisionEnabled(f),h.SetOriginX(this._currentAnimationFrame.GetOriginX()),h.SetOriginY(this._currentAnimationFrame.GetOriginY()),h.SetSourceCollisionPoly(this._currentAnimationFrame.GetCollisionPoly()),(1!==this._objectClass.GetAnimationCount()||1!==this._objectClass.GetAnimations()[0].GetFrameCount())&&0!==this._currentAnimationSpeed&&this._StartTicking()}Release(){this._currentAnimation=null,this._currentAnimationFrame=null,this._currentTexture=null,this._animationTimer=null,super.Release()}GetCurrentImageInfo(){return this._currentAnimationFrame.GetImageInfo()}OnWebGLContextLost(){this._currentTexture=null}OnWebGLContextRestored(){this._UpdateCurrentTexture()}Draw(b){var c=Math.round;const d=this._currentTexture;if(null!==d){const e=this._bquadRef,f=this._currentRcTex;if(b.SetTexture(d),this._runtime.IsPixelRoundingEnabled()){const d=this.GetWorldInfo(),g=c(d.GetX())-d.GetX(),h=c(d.GetY())-d.GetY();a.copy(e),a.offset(g,h),b.Quad3(a,f)}else b.Quad3(e,f)}}_DrawCollisionPoly(a){const b=this.GetWorldInfo(),c=b.GetTransformedCollisionPoly();a.SetColorFillMode(),a.SetColorRgba(1,0,0,1);const d=c.pointsArr(),e=b.GetX(),f=b.GetY();for(let b=0,c=d.length;b=g&&(j?(this._isPlayingForwards=!1,this._currentFrameIndex=g-2):i?this._currentFrameIndex=f:(this._animationRepeats++,this._animationRepeats>=h?this._FinishAnimation(!1):this._currentFrameIndex=f)),0>this._currentFrameIndex&&(j?(this._currentFrameIndex=1,this._isPlayingForwards=!0,!i&&(this._animationRepeats++,this._animationRepeats>=h&&this._FinishAnimation(!0))):i?this._currentFrameIndex=f:(this._animationRepeats++,this._animationRepeats>=h?this._FinishAnimation(!0):this._currentFrameIndex=f)),this._currentFrameIndex=C3.clamp(this._currentFrameIndex,0,g-1);const k=b.GetFrameAt(this._currentFrameIndex);c>this._frameStartTime+k.GetDuration()/a&&(this._frameStartTime=c),this._OnFrameChanged(d,k)}}_FinishAnimation(a){this._currentFrameIndex=a?0:this._currentAnimation.GetFrameCount()-1,this._isAnimationPlaying=!1,this._animTriggerName=this._currentAnimation.GetName(),this._isInAnimTrigger=!0,this.Trigger(C3.Plugins.Sprite.Cnds.OnAnyAnimFinished),this.Trigger(C3.Plugins.Sprite.Cnds.OnAnimFinished),this._isInAnimTrigger=!1,this._animationRepeats=0}_OnFrameChanged(a,b){const c=this.GetWorldInfo(),d=a.GetImageInfo(),e=b.GetImageInfo(),f=d.GetWidth(),g=d.GetHeight(),h=e.GetWidth(),i=e.GetHeight();f!==h&&c.SetWidth(c.GetWidth()*(h/f)),g!==i&&c.SetHeight(c.GetHeight()*(i/g)),c.SetOriginX(b.GetOriginX()),c.SetOriginY(b.GetOriginY()),c.SetSourceCollisionPoly(b.GetCollisionPoly()),c.SetBboxChanged(),this._currentAnimationFrame=b,this._currentTexture=e.GetTexture(),this._currentRcTex=e.GetTexRect();const j=this.GetInstance().GetBehaviorInstances();for(let c=0,d=j.length;cthis.CallAction(a.SetAnim,b,0)},{name:"plugins.sprite.debugger.animation-properties.current-frame",value:this._currentFrameIndex,onedit:(b)=>this.CallAction(a.SetAnimFrame,b)},{name:"plugins.sprite.debugger.animation-properties.is-playing",value:this._isAnimationPlaying,onedit:(b)=>b?this.CallAction(a.StartAnim,0):this.CallAction(a.StopAnim)},{name:"plugins.sprite.debugger.animation-properties.speed",value:this._currentAnimationSpeed,onedit:(b)=>this.CallAction(a.SetAnimSpeed,b)},{name:"plugins.sprite.debugger.animation-properties.repeats",value:this._animationRepeats,onedit:(a)=>this._animationRepeats=a}]}]}SaveToJson(){const a={"a":this._currentAnimation.GetSID()};0!==this._frameStartTime&&(a["fs"]=this._frameStartTime);const b=this.GetAnimationTime();0!==b&&(a["at"]=b),0!==this._currentFrameIndex&&(a["f"]=this._currentFrameIndex),0!==this._currentAnimationSpeed&&(a["cas"]=this._currentAnimationSpeed),1!==this._animationRepeats&&(a["ar"]=this._animationRepeats),0!==this._currentAnimationRepeatTo&&(a["rt"]=this._currentAnimationRepeatTo),this._isAnimationPlaying||(a["ap"]=this._isAnimationPlaying),this._isPlayingForwards||(a["af"]=this._isPlayingForwards);const c=this.GetWorldInfo();return c.IsCollisionEnabled()&&(a["ce"]=c.IsCollisionEnabled()),a}LoadFromJson(a){const b=this.GetObjectClass().GetAnimationBySID(a["a"]);b&&(this._currentAnimation=b),this._frameStartTime=a.hasOwnProperty("fs")?a["fs"]:0,this._animationTimer.Set(a.hasOwnProperty("at")?a["at"]:0);const c=a.hasOwnProperty("f")?a["f"]:0;this._currentFrameIndex=C3.clamp(c,0,this._currentAnimation.GetFrameCount()-1),this._currentAnimationSpeed=a.hasOwnProperty("cas")?a["cas"]:0,this._animationRepeats=a.hasOwnProperty("ar")?a["ar"]:1;const d=a.hasOwnProperty("rt")?a["rt"]:0;this._currentAnimationRepeatTo=C3.clamp(d,0,this._currentAnimation.GetFrameCount()-1),this._isAnimationPlaying=!a.hasOwnProperty("ap")||!!a["ap"],this._isPlayingForwards=!a.hasOwnProperty("af")||!!a["af"];const e=this._currentAnimation.GetFrameAt(this._currentFrameIndex),f=e.GetImageInfo();this._currentAnimationFrame=e,this._currentTexture=f.GetTexture(),this._currentRcTex=f.GetTexRect();const g=this.GetWorldInfo();g.SetOriginX(e.GetOriginX()),g.SetOriginY(e.GetOriginY()),g.SetSourceCollisionPoly(e.GetCollisionPoly()),g.SetCollisionEnabled(!!a["ce"])}GetPropertyValueByIndex(a){const b=this.GetWorldInfo();return 3===a?b.IsCollisionEnabled():void 0}SetPropertyValueByIndex(a,b){const c=this.GetWorldInfo();3===a?c.SetCollisionEnabled(!!b):void 0}}} + +"use strict";{function a(c,d,a,b){const e=d.GetUID(),f=a.GetUID();ec(t,a.instance)));const u=q.GetCurrentSol(),v=e.GetCurrentSol(),w=u.GetInstances();let x=null;for(let c=0;cc(t,a.instance)));const u=q.GetCurrentSol(),v=e.GetCurrentSol(),w=u.GetInstances();let x=null;for(let c=0;cthis.GetWorldInfo().GetWidth()},IsFlipped(){return 0>this.GetWorldInfo().GetHeight()},OnURLLoaded(){return!0},IsCollisionEnabled(){return this.GetWorldInfo().IsCollisionEnabled()}}} + +"use strict";C3.Plugins.Sprite.Acts={Spawn(a,b,c){if(!a||!b)return;const[d,e]=this.GetImagePoint(c),f=this._runtime.CreateInstance(a,b,d,e);if(!f)return;if(a.GetPlugin().IsRotatable()){const a=f.GetWorldInfo();a.SetAngle(this.GetWorldInfo().GetAngle()),a.SetBboxChanged()}const g=this._runtime.GetEventSheetManager();if(g.BlockFlushingInstances(!0),f._TriggerOnCreated(),f.IsInContainer())for(const a of f.siblings())a._TriggerOnCreated();g.BlockFlushingInstances(!1);const h=this._runtime.GetCurrentAction(),i=h.GetSavedDataMap();let j=!1;if((!i.has("Spawn_LastExec")||i.get("Spawn_LastExec")d.GetWidth()?-1:1,f=0>d.GetHeight()?-1:1,g=c.GetWidth()*a*e,h=c.GetHeight()*a*f;(d.GetWidth()!==g||d.GetHeight()!==h)&&(d.SetSize(g,h),d.SetBboxChanged())},LoadURL(a,b){const c=this._currentAnimationFrame,d=c.GetImageInfo(),e=this.GetWorldInfo(),f=this._runtime;return d.GetURL()===a?(0===b&&(e.SetSize(d.GetWidth(),d.GetHeight()),e.SetBboxChanged()),void this.Trigger(C3.Plugins.Sprite.Cnds.OnURLLoaded)):void(async()=>{const c=C3.New(C3.ImageInfo);await c.LoadDynamicAsset(f,a),await c.LoadStaticTexture(f.GetWebGLRenderer(),{linearSampling:f.IsLinearSampling()}),d.ReplaceWith(c),this._sdkType._UpdateAllCurrentTexture(),this.WasReleased()||0!==b||(e.SetSize(d.GetWidth(),d.GetHeight()),e.SetBboxChanged()),f.UpdateRender(),this.WasReleased()||(await this.TriggerAsync(C3.Plugins.Sprite.Cnds.OnURLLoaded))})()},SetCollisions(a){this.GetWorldInfo().SetCollisionEnabled(a)},SetSolidCollisionFilter(a,b){this.GetWorldInfo().SetSolidCollisionFilter(0===a,b)},SetEffect(a){this.GetWorldInfo().SetBlendMode(a),this._runtime.UpdateRender()}}; + +"use strict";C3.Plugins.Sprite.Exps={AnimationFrame(){return this._currentFrameIndex},AnimationFrameCount(){return this._currentAnimation.GetFrameCount()},AnimationName(){return this._currentAnimation.GetName()},AnimationSpeed(){return this._isPlayingForwards?this._currentAnimationSpeed:-this._currentAnimationSpeed},ImagePointX(a){return this.GetImagePoint(a)[0]},ImagePointY(a){return this.GetImagePoint(a)[1]},ImagePointCount(){return this._currentAnimationFrame.GetImagePointCount()},ImageWidth(){return this.GetCurrentImageInfo().GetWidth()},ImageHeight(){return this.GetCurrentImageInfo().GetHeight()}}; + +"use strict";C3.Plugins.Keyboard=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.Keyboard.Type=class extends C3.SDKTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";C3.Plugins.Keyboard.Instance=class extends C3.SDKInstanceBase{constructor(a){super(a),this._keyMap=Array(256),this._typedKeyMap=Array(256),this._triggerKey=0;const b=this.GetRuntime().Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(b,"keydown",(a)=>this._OnKeyDown(a.data)),C3.Disposable.From(b,"keyup",(a)=>this._OnKeyUp(a.data)),C3.Disposable.From(b,"window-blur",()=>this._OnWindowBlur()))}Release(){super.Release()}async _OnKeyDown(a){const b=a["which"];this._keyMap[b]||(this._keyMap[b]=!0,this._typedKeyMap[b]=a["key"],this._triggerKey=b,await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnAnyKey),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKey),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKeyCode))}async _OnKeyUp(a){const b=a["which"];this._keyMap[b]=!1,this._typedKeyMap[b]=a["key"],this._triggerKey=b,await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnAnyKeyReleased),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKeyReleased),await this.TriggerAsync(C3.Plugins.Keyboard.Cnds.OnKeyCodeReleased)}async _OnWindowBlur(){for(let a=0,b=this._keyMap.length;aa||a>=this._keyMap.length)&&!!this._keyMap[a]},OnKeyCode(a){return this._triggerKey===a},OnKeyCodeReleased(a){return this._triggerKey===a}}; + +"use strict";C3.Plugins.Keyboard.Acts={}; + +"use strict";{function a(a){return a=Math.floor(a),8===a?"backspace":9===a?"tab":13===a?"enter":16===a?"shift":17===a?"control":18===a?"alt":19===a?"pause":20===a?"capslock":27===a?"esc":33===a?"pageup":34===a?"pagedown":35===a?"end":36===a?"home":37===a?"\u2190":38===a?"\u2191":39===a?"\u2192":40===a?"\u2193":45===a?"insert":46===a?"del":91===a?"left window key":92===a?"right window key":93===a?"select":96===a?"numpad 0":97===a?"numpad 1":98===a?"numpad 2":99===a?"numpad 3":100===a?"numpad 4":101===a?"numpad 5":102===a?"numpad 6":103===a?"numpad 7":104===a?"numpad 8":105===a?"numpad 9":106===a?"numpad *":107===a?"numpad +":109===a?"numpad -":110===a?"numpad .":111===a?"numpad /":112===a?"F1":113===a?"F2":114===a?"F3":115===a?"F4":116===a?"F5":117===a?"F6":118===a?"F7":119===a?"F8":120===a?"F9":121===a?"F10":122===a?"F11":123===a?"F12":144===a?"numlock":145===a?"scroll lock":186===a?";":187===a?"=":188===a?",":189===a?"-":190===a?".":191===a?"/":192===a?"'":219===a?"[":220===a?"\\":221===a?"]":222===a?"#":223===a?"`":String.fromCharCode(a)}C3.Plugins.Keyboard.Exps={LastKeyCode(){return this._triggerKey},StringFromKeyCode(b){return a(b)},TypedKey(){return this._typedKeyMap[this._triggerKey]||""}}} + +"use strict";C3.Plugins.Text=class extends C3.SDKPluginBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Plugins.Text.Type=class extends C3.SDKTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}LoadTextures(){}ReleaseTextures(){}}; + +"use strict";{const a=[0,0,0],b=["left","center","right"],c=["top","center","bottom"],d=new C3.Rect,e=new C3.Quad;C3.Plugins.Text.Instance=class extends C3.SDKWorldInstanceBase{constructor(a,b){if(super(a),this._text="",this._enableBBcode=!0,this._faceName="Arial",this._ptSize=12,this._lineHeightOffset=0,this._isBold=!1,this._isItalic=!1,this._color=C3.New(C3.Color),this._horizontalAlign=0,this._verticalAlign=0,this._wrapByWord=!0,this._typewriterStartTime=-1,this._typewriterEndTime=-1,this._typewriterLength=0,this._webglText=C3.New(C3.Gfx.WebGLText,this._runtime.GetWebGLRenderer(),{timeout:5}),this._webglText.ontextureupdate=()=>this._runtime.UpdateRender(),this._webglText.SetIsAsync(!1),b){this._text=b[0],this._enableBBcode=!!b[1],this._faceName=b[2],this._ptSize=b[3],this._lineHeightOffset=b[4],this._isBold=!!b[5],this._isItalic=!!b[6],this._horizontalAlign=b[8],this._verticalAlign=b[9],this._wrapByWord=0===b[10];const a=b[7];this._color.setRgb(a[0],a[1],a[2]),this.GetWorldInfo().SetVisible(b[11])}this._UpdateTextSettings()}Release(){this._CancelTypewriter(),this._webglText.Release(),this._webglText=null,super.Release()}_UpdateTextSettings(){const a=this._webglText;a.SetText(this._text),a.SetBBCodeEnabled(this._enableBBcode),a.SetFontName(this._faceName),a.SetFontSize(this._ptSize),a.SetLineHeight(this._lineHeightOffset),a.SetBold(this._isBold),a.SetItalic(this._isItalic),a.SetColor(this._color),a.SetHorizontalAlignment(b[this._horizontalAlign]),a.SetVerticalAlignment(c[this._verticalAlign]),a.SetWordWrapMode(this._wrapByWord?"word":"character")}_UpdateTextSize(){const a=this.GetWorldInfo(),b=a.GetLayer().GetRenderScale();this._webglText.SetSize(a.GetWidth(),a.GetHeight(),b)}Draw(a){var b=Math.round;const c=this.GetWorldInfo();this._UpdateTextSize();const f=this._webglText.GetTexture();if(!f)return;const g=c.GetLayer();let h=c.GetBoundingQuad();if(0===c.GetAngle()&&0===c.GetLayer().GetAngle()){const[c,i]=g.LayerToDrawSurface(h.getTlx(),h.getTly()),[j,k]=g.LayerToDrawSurface(h.getBrx(),h.getBry()),l=c-b(c),m=i-b(i);d.set(c,i,j,k),d.offset(-l,-m),e.setFromRect(d);const[n,o]=a.GetRenderTargetSize(a.GetRenderTarget());this._runtime.GetCanvasManager().SetDeviceTransform(a,n,o),a.SetTexture(f),a.Quad3(e,this._webglText.GetTexRect()),g._SetTransform(a)}else{let c=0,d=0;this._runtime.IsPixelRoundingEnabled()&&(c=h.getTlx()-b(h.getTlx()),d=h.getTly()-b(h.getTly())),(0!=c||0!=d)&&(e.copy(h),e.offset(-c,-d),h=e),a.SetTexture(f),a.Quad3(h,this._webglText.GetTexRect())}}SaveToJson(){const a={"t":this._text,"c":this._color.toJSON(),"fn":this._faceName,"ps":this._ptSize};return this._enableBBcode&&(a["bbc"]=this._enableBBcode),0!==this._horizontalAlign&&(a["ha"]=this._horizontalAlign),0!==this._verticalAlign&&(a["va"]=this._verticalAlign),this._wrapByWord||(a["wr"]=this._wrapByWord),0!==this._lineHeightOffset&&(a["lho"]=this._lineHeightOffset),this._isBold&&(a["b"]=this._isBold),this._isItalic&&(a["i"]=this._isItalic),-1!==this._typewriterEndTime&&(a["tw"]={"st":this._typewriterStartTime,"en":this._typewriterEndTime,"l":this._typewriterLength}),a}LoadFromJson(a){if(this._CancelTypewriter(),this._text=a["t"],this._color.setFromJSON(a["c"]),this._faceName=a["fn"],this._ptSize=a["ps"],this._enableBBcode=!!a.hasOwnProperty("bbc")&&a["bbc"],this._horizontalAlign=a.hasOwnProperty("ha")?a["ha"]:0,this._verticalAlign=a.hasOwnProperty("va")?a["va"]:0,this._wrapByWord=!a.hasOwnProperty("wr")||a["wr"],this._lineHeightOffset=a.hasOwnProperty("lho")?a["lho"]:0,this._isBold=!!a.hasOwnProperty("b")&&a["b"],this._isItalic=!!a.hasOwnProperty("i")&&a["i"],a.hasOwnProperty("tw")){const b=a["tw"];this._typewriterStartTime=b["st"],this._typewriterEndTime=b["en"],this._typewriterLength=b["l"]}this._UpdateTextSettings(),-1!==this._typewriterEndTime&&this._StartTicking()}GetPropertyValueByIndex(b){return 0===b?this._text:1===b?this._enableBBcode:2===b?this._faceName:3===b?this._ptSize:4===b?this._lineHeightOffset:5===b?this._isBold:6===b?this._isItalic:7===b?(a[0]=this._color.getR(),a[1]=this._color.getG(),a[2]=this._color.getB(),a):8===b?this._horizontalAlign:9===b?this._verticalAlign:10===b?this._wrapByWord?1:0:void 0}SetPropertyValueByIndex(a,b){switch(a){case 0:if(this._text===b)return;this._text=b,this._UpdateTextSettings();break;case 1:if(this._enableBBcode===!!b)return;this._enableBBcode=!!b,this._UpdateTextSettings();break;case 2:if(this._faceName===b)return;this._faceName=b,this._UpdateTextSettings();break;case 3:if(this._ptSize===b)return;this._ptSize=b,this._UpdateTextSettings();break;case 4:if(this._lineHeightOffset===b)return;this._lineHeightOffset=b,this._UpdateTextSettings();break;case 5:if(this._isBold===!!b)return;this._isBold=!!b,this._UpdateTextSettings();break;case 6:if(this._isItalic===!!b)return;this._isItalic=!!b,this._UpdateTextSettings();break;case 7:const d=this._color,c=b;if(d.getR()===c[0]&&d.getG()===c[1]&&d.getB()===c[2])return;this._color.setRgb(c[0],c[1],c[2]),this._UpdateTextSettings();break;case 8:if(this._horizontalAlign===b)return;this._horizontalAlign=b,this._UpdateTextSettings();break;case 9:if(this._verticalAlign===b)return;this._verticalAlign=b,this._UpdateTextSettings();break;case 10:if(this._wrapByWord===(b===0))return;this._wrapByWord=b===0,this._UpdateTextSettings();}}_SetText(a){this._text===a||(this._text=a,this._webglText.SetText(a),this._runtime.UpdateRender())}_StartTypewriter(a,b){this._SetText(a),this._typewriterStartTime=this._runtime.GetGameTime(),this._typewriterEndTime=this._typewriterStartTime+b,this._typewriterLength=C3.BBString.StripAnyTags(a).length,this._webglText.SetDrawMaxCharacterCount(0),this._StartTicking()}_CancelTypewriter(){this._typewriterStartTime=-1,this._typewriterEndTime=-1,this._typewriterLength=0,this._webglText.SetDrawMaxCharacterCount(-1),this._StopTicking()}Tick(){const a=this._runtime.GetGameTime();if(a>=this._typewriterEndTime)this._CancelTypewriter(),this.Trigger(C3.Plugins.Text.Cnds.OnTypewriterTextFinished),this._runtime.UpdateRender();else{let b=C3.relerp(this._typewriterStartTime,this._typewriterEndTime,a,0,this._typewriterLength);b=Math.floor(b),b!==this._webglText.GetDrawMaxCharacterCount()&&(this._webglText.SetDrawMaxCharacterCount(b),this._runtime.UpdateRender())}}GetDebuggerProperties(){return[{title:"plugins.text.name",properties:[{name:"plugins.text.properties.text.name",value:this._text,onedit:(a)=>this._SetText(a)}]}]}}} + +"use strict";C3.Plugins.Text.Cnds={CompareText(a,b){return b?this._text===a:C3.equalsNoCase(this._text,a)},IsRunningTypewriterText(){return-1!==this._typewriterEndTime},OnTypewriterTextFinished(){return!0}}; + +"use strict";{const a=C3.New(C3.Color);C3.Plugins.Text.Acts={SetText(a){this._CancelTypewriter(),"number"==typeof a&&1e9>a&&(a=Math.round(1e10*a)/1e10),this._SetText(a.toString())},AppendText(a){this._CancelTypewriter(),"number"==typeof a&&1e9>a&&(a=Math.round(1e10*a)/1e10),a=a.toString();a&&this._SetText(this._text+a)},TypewriterText(a,b){this._CancelTypewriter(),"number"==typeof a&&1e9>a&&(a=Math.round(1e10*a)/1e10),this._StartTypewriter(a.toString(),b)},SetFontFace(a,b){let c=!1,d=!1;if(1===b?c=!0:2===b?d=!0:3===b?(c=!0,d=!0):void 0,a===this._faceName&&c===this._isBold&&d===this._isItalic)return!1;this._faceName=a,this._isBold=c,this._isItalic=d;const e=this._webglText;e.SetFontName(this._faceName),e.SetBold(this._isBold),e.SetItalic(this._isItalic),this._runtime.UpdateRender()},SetFontSize(a){this._ptSize===a||(this._ptSize=a,this._webglText.SetFontSize(this._ptSize),this._runtime.UpdateRender())},SetFontColor(b){a.setFromRgbValue(b),a.clamp();this._color.equalsIgnoringAlpha(a)||(this._color.copyRgb(a),this._webglText.SetColor(this._color),this._runtime.UpdateRender())},SetWebFont(){console.warn("[Text] 'Set web font' action is deprecated and no longer has any effect")},SetEffect(a){this.GetWorldInfo().SetBlendMode(a),this._runtime.UpdateRender()},TypewriterFinish(){-1===this._typewriterEndTime||(this._CancelTypewriter(),this.Trigger(C3.Plugins.Text.Cnds.OnTypewriterTextFinished),this._runtime.UpdateRender())}}} + +"use strict";C3.Plugins.Text.Exps={Text(){return this._text},PlainText(){return C3.BBString.StripAnyTags(this._text)},FaceName(){return this._faceName},FaceSize(){return this._ptSize},TextWidth(){return this._UpdateTextSize(),this._webglText.GetTextWidth()},TextHeight(){return this._UpdateTextSize(),this._webglText.GetTextHeight()}}; + +"use strict";C3.Behaviors.Platform=class extends C3.SDKBehaviorBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Behaviors.Platform.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{function a(a,b,c,d,e){return C3.clamp(a*e+.5*d*e*e,b*e,c*e)}const b=0;C3.Behaviors.Platform.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(a,c){super(a),this._keyboardDisposables=null,this._leftKey=!1,this._rightKey=!1,this._jumpKey=!1,this._jumped=!1,this._doubleJumped=!1,this._canDoubleJump=!1,this._ignoreInput=!1,this._simLeft=!1,this._simRight=!1,this._simJump=!1,this._lastFloorObject=null,this._loadFloorUid=-1,this._lastFloorX=0,this._lastFloorY=0,this._floorIsJumpthru=!1,this._wasOnFloor=!1,this._wasOverJumpthru=!!this._runtime.GetCollisionEngine().TestOverlapJumpthru(this._inst),this._loadJumpthruUid=-1,this._animMode="stopped",this._fallThrough=0,this._isFirstTick=!0,this._dx=0,this._dy=0,this._downX=0,this._downY=0,this._rightX=0,this._rightY=0,this._g=0,this._g1=0,this._ga=C3.toRadians(90),this._maxSpeed=330,this._acc=1500,this._dec=1500,this._jumpStrength=650,this._maxFall=1e3,this._enableDoubleJump=!1,this._jumpSustain=0,this._sustainTime=0,this._defaultControls=!0,this._ceilingCollisionMode=0,this._isEnabled=!0,c&&(this._maxSpeed=c[b],this._acc=c[1],this._dec=c[2],this._jumpStrength=c[3],this._g=c[4],this._maxFall=c[5],this._enableDoubleJump=!!c[6],this._jumpSustain=c[7]/1e3,this._defaultControls=!!c[8],this._isEnabled=!!c[9]);const d=this._runtime.Dispatcher();this._disposables=new C3.CompositeDisposable(C3.Disposable.From(d,"instancedestroy",(a)=>this._OnInstanceDestroyed(a.instance)),C3.Disposable.From(d,"afterload",()=>this._OnAfterLoad())),this._defaultControls&&this._BindEvents(),this._isEnabled&&this._StartPostTicking(),this._UpdateGravity(),this._inst.GetUnsavedDataMap().set("isPlatformBehavior",!0)}Release(){this._keyboardDisposables&&(this._keyboardDisposables.Release(),this._keyboardDisposables=null),this._lastFloorObject=null,this._wasOverJumpthru=null,super.Release()}_BindEvents(){if(!this._keyboardDisposables){const a=this._runtime.Dispatcher();this._keyboardDisposables=new C3.CompositeDisposable(C3.Disposable.From(a,"keydown",(a)=>this._OnKeyDown(a.data)),C3.Disposable.From(a,"keyup",(a)=>this._OnKeyUp(a.data)),C3.Disposable.From(a,"window-blur",()=>this._OnWindowBlur()))}}_UnBindEvents(){this._keyboardDisposables&&(this._keyboardDisposables.Release(),this._keyboardDisposables=null)}_OnInstanceDestroyed(a){this._lastFloorObject===a&&(this._lastFloorObject=null),this._wasOverJumpthru===a&&(this._wasOverJumpthru=null)}_OnKeyDown(a){switch(a["key"]){case"ArrowLeft":this._leftKey=!0;break;case"ArrowRight":this._rightKey=!0;break;case"ArrowUp":this._jumpKey=!0;}}_OnKeyUp(a){switch(a["key"]){case"ArrowLeft":this._leftKey=!1;break;case"ArrowRight":this._rightKey=!1;break;case"ArrowUp":this._jumpKey=!1,this._jumped=!1;}}_OnWindowBlur(){this._leftKey=!1,this._rightKey=!1,this._jumpKey=!1,this._jumped=!1}SaveToJson(){return{"ii":this._ignoreInput,"lfx":this._lastFloorX,"lfy":this._lastFloorY,"lfo":this._lastFloorObject?this._lastFloorObject.GetUID():-1,"am":this._animMode,"en":this._isEnabled,"fall":this._fallThrough,"ft":this._isFirstTick,"dx":this._dx,"dy":this._dy,"ms":this._maxSpeed,"acc":this._acc,"dec":this._dec,"js":this._jumpStrength,"g":this._g,"g1":this._g1,"mf":this._maxFall,"wof":this._wasOnFloor,"woj":this._wasOverJumpthru?this._wasOverJumpthru.GetUID():-1,"ga":this._ga,"edj":this._enableDoubleJump,"cdj":this._canDoubleJump,"dj":this._doubleJumped,"sus":this._jumpSustain,"dc":this._defaultControls,"cc":this._ceilingCollisionMode}}LoadFromJson(a){this._ignoreInput=a["ii"],this._lastFloorX=a["lfx"],this._lastFloorY=a["lfy"],this._loadFloorUid=a["lfo"],this._animMode=a["am"];const b=a["en"];this._fallThrough=a["fall"],this._isFirstTick=a["ft"],this._dx=a["dx"],this._dy=a["dy"],this._maxSpeed=a["ms"],this._acc=a["acc"],this._dec=a["dec"],this._jumpStrength=a["js"],this._g=a["g"],this._g1=a["g1"],this._maxFall=a["mf"],this._wasOnFloor=a["wof"],this._loadJumpthruUid=a["woj"],this._ga=a["ga"],this._enableDoubleJump=a["edj"],this._canDoubleJump=a["cdj"],this._doubleJumped=a["dj"],this._jumpSustain=a["sus"],this._defaultControls=a["dc"],this._ceilingCollisionMode=a["cc"]||0,this._leftKey=!1,this._rightKey=!1,this._jumpKey=!1,this._jumped=!1,this._simLeft=!1,this._simRight=!1,this._simJump=!1,this._sustainTime=0,this._defaultControls?this._BindEvents():this._UnBindEvents(),this._SetEnabled(b),this._UpdateGravity()}_OnAfterLoad(){this._lastFloorObject=-1===this._loadFloorUid?null:this._runtime.GetInstanceByUID(this._loadFloorUid),this._wasOverJumpthru=-1===this._loadJumpthruUid?null:this._runtime.GetInstanceByUID(this._loadJumpthruUid)}_UpdateGravity(){var a=Math.PI,b=Math.sin,c=Math.cos;this._downX=c(this._ga),this._downY=b(this._ga),this._rightX=c(this._ga-a/2),this._rightY=b(this._ga-a/2),this._downX=C3.round6dp(this._downX),this._downY=C3.round6dp(this._downY),this._rightX=C3.round6dp(this._rightX),this._rightY=C3.round6dp(this._rightY),this._g1=this._g,0>this._g&&(this._downX*=-1,this._downY*=-1,this._g=Math.abs(this._g))}_GetGDir(){return 0>this._g?-1:1}_IsOnFloor(){const a=this._inst.GetWorldInfo(),b=this._runtime.GetCollisionEngine(),c=this._inst,d=this._lastFloorObject,e=a.GetX(),f=a.GetY();if(a.OffsetXY(this._downX,this._downY),a.SetBboxChanged(),d&&b.TestOverlap(c,d)&&(!d.GetObjectClass().HasSolidBehavior()||b.IsSolidCollisionAllowed(d,c)))return a.SetXY(e,f),a.SetBboxChanged(),d;else{let d=b.TestOverlapSolid(c),g=null;if(d||0!==this._fallThrough||(g=b.TestOverlapJumpthru(c,!0)),a.SetXY(e,f),a.SetBboxChanged(),d)return b.TestOverlap(c,d)?null:(this._floorIsJumpthru=!1,d);if(g&&g.length){let a=0;for(let d=0,e=g.length;dthis._maxFall&&(this._dy=this._maxFall)),a&&(this._jumped=!0)}_ApplyHorizontalAcceleration(a,b,c){const d=this._acc,e=this._dec;a===b&&(0>this._dx?(this._dx+=e*c,0this._dx&&(this._dx=0)));let f=0;return a&&!b&&(0this._dx?f=d+e:f=d),this._dx+=f*c,this._dx=C3.clamp(this._dx,-this._maxSpeed,this._maxSpeed),f}_HandleHorizontalMovement(b,c,d,e){var f=Math.abs;const g=this._inst,h=g.GetWorldInfo(),i=this._runtime.GetCollisionEngine(),j=this._downX,k=this._downY,l=this._rightX,m=this._rightY,n=this._maxSpeed;let o=!1,p=h.GetX(),q=h.GetY();const r=a(this._dx,-n,n,c,b)*l,s=a(this._dx,-n,n,c,b)*m;h.OffsetXY(l*(1this._dx?1:-1),m*(0>this._dx?1:-1),a,!1)?d&&!t&&!this._floorIsJumpthru&&(p=h.GetX(),q=h.GetY(),h.OffsetXY(j,k),i.TestOverlapSolid(g)?!i.PushOutSolid(g,-j,-k,3,!1)&&(h.SetXY(p,q),h.SetBboxChanged()):(h.SetXY(p,q),h.SetBboxChanged())):(h.SetXY(p,q),h.SetBboxChanged()),!t&&(this._dx=0)):!u&&!e&&f(this._dy)this._dy?1:-1),i*(0>this._dy?1:-1),a,p,o))f.SetXY(k,l),f.SetBboxChanged(),this._wasOnFloor=!0,p||(this._dy=0);else{this._lastFloorObject=o;const a=o.GetWorldInfo();this._lastFloorX=a.GetX(),this._lastFloorY=a.GetY(),this._floorIsJumpthru=p,p&&(j=!0),(0this._dy&&1===this._ceilingCollisionMode&&g.PushInFractional(e,h,i,o,32)}}return j}_HandleAnimationTriggers(a,b,c){"falling"!==this._animMode&&0this._dx=a},{name:"behaviors.platform.debugger.vector-y",value:this._dy,onedit:(a)=>this._dy=a},{name:"behaviors.platform.properties.max-speed.name",value:this._maxSpeed,onedit:(a)=>this._maxSpeed=a},{name:"behaviors.platform.properties.acceleration.name",value:this._acc,onedit:(a)=>this._acc=a},{name:"behaviors.platform.properties.deceleration.name",value:this._dec,onedit:(a)=>this._dec=a},{name:"behaviors.platform.properties.jump-strength.name",value:this._jumpStrength,onedit:(a)=>this._jumpStrength=a},{name:"behaviors.platform.properties.gravity.name",value:this._g,onedit:(a)=>this._g=a},{name:"behaviors.platform.debugger.gravity-angle",value:C3.toDegrees(this._ga),onedit:(a)=>this._ga=C3.toRadians(a)},{name:"behaviors.platform.properties.max-fall-speed.name",value:this._maxFall,onedit:(a)=>this._maxFall=a},{name:"behaviors.platform.debugger.animation-mode",value:["behaviors.platform.debugger.anim-"+this._animMode]},{name:"behaviors.platform.properties.enabled.name",value:this._isEnabled,onedit:(a)=>this._SetEnabled(a)}]}]}}} + +"use strict";C3.Behaviors.Platform.Cnds={IsMoving(){return 0!==this._dx||0!==this._dy},CompareSpeed(a,b){return C3.compare(Math.hypot(this._dx,this._dy),a,b)},IsOnFloor(){if(0!==this._dy)return!1;const a=this._inst,b=this.GetWorldInfo(),c=this._runtime.GetCollisionEngine(),d=b.GetX(),e=b.GetY();b.OffsetXY(this._downX,this._downY),b.SetBboxChanged();const f=c.TestOverlapSolid(a);let g=null;if(f||0!==this._fallThrough||(g=c.TestOverlapJumpthru(a,!0)),b.SetXY(d,e),b.SetBboxChanged(),f)return!c.TestOverlap(a,f);if(g&&g.length){let b=0;for(let d=0,e=g.length;dthis._dy},IsFalling(){return 0=b.GetShakeStart()&&hthis.SetEnabled(a)}]}]}}} + +"use strict";C3.Behaviors.solid.Cnds={IsEnabled(){return this.IsEnabled()}}; + +"use strict";C3.Behaviors.solid.Acts={SetEnabled(a){this.SetEnabled(a)}}; + +"use strict";C3.Behaviors.solid.Exps={}; + +"use strict";C3.Behaviors.Sin=class extends C3.SDKBehaviorBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Behaviors.Sin.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{const a=2*Math.PI,b=Math.PI/2,c=3*Math.PI/2,d=[0,1,8,3,4,2,5,6,7];C3.Behaviors.Sin.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(b,c){super(b),this._i=0,this._movement=0,this._wave=0,this._period=0,this._mag=0,this._isEnabled=!0,this._initialValue=0,this._initialValue2=0,this._lastKnownValue=0,this._lastKnownValue2=0,this._ratio=0,c&&(this._movement=d[c[0]],this._wave=c[1],this._period=c[2],this._period+=this._runtime.Random()*c[3],0!==this._period&&(this._i=c[4]/this._period*a,this._i+=this._runtime.Random()*c[5]/this._period*a),this._mag=c[6],this._mag+=this._runtime.Random()*c[7],this._isEnabled=!!c[8]),5===this._movement&&(this._mag=C3.toRadians(this._mag)),this.Init(),this._isEnabled&&this._StartTicking()}Release(){super.Release()}SaveToJson(){return{"i":this._i,"e":this._isEnabled,"mv":this._movement,"w":this._wave,"p":this._period,"mag":this._mag,"iv":this._initialValue,"iv2":this._initialValue2,"r":this._ratio,"lkv":this._lastKnownValue,"lkv2":this._lastKnownValue2}}LoadFromJson(a){this._i=a["i"],this._SetEnabled(a["e"]),this._movement=a["mv"],this._wave=a["w"],this._period=a["p"],this._mag=a["mag"],this._initialValue=a["iv"],this._initialValue2=a["iv2"],this._ratio=a["r"],this._lastKnownValue=a["lkv"],this._lastKnownValue2=a["lkv2"]}Init(){const a=this._inst.GetWorldInfo();switch(this._movement){case 0:this._initialValue=a.GetX();break;case 1:this._initialValue=a.GetY();break;case 2:this._initialValue=a.GetWidth(),this._ratio=a.GetHeight()/a.GetWidth();break;case 3:this._initialValue=a.GetWidth();break;case 4:this._initialValue=a.GetHeight();break;case 5:this._initialValue=a.GetAngle();break;case 6:this._initialValue=a.GetOpacity();break;case 7:this._initialValue=0;break;case 8:this._initialValue=a.GetX(),this._initialValue2=a.GetY();break;default:;}this._lastKnownValue=this._initialValue,this._lastKnownValue2=this._initialValue2}WaveFunc(d){var e=Math.PI;switch(d%=a,this._wave){case 0:return Math.sin(d);case 1:return d<=b?d/b:d<=c?1-2*(d-b)/e:(d-c)/b-1;case 2:return 2*d/a-1;case 3:return-2*d/a+1;case 4:return dthis._SetEnabled(a)},{name:"behaviors.sin.properties.period.name",value:this._period,onedit:(a)=>this._period=a},{name:"behaviors.sin.properties.magnitude.name",value:this._mag,onedit:(a)=>this._mag=a},{name:"behaviors.sin.debugger.value",value:this.WaveFunc(this._i)*this._mag}]}]}}} + +"use strict";C3.Behaviors.Sin.Cnds={IsEnabled(){return this._isEnabled},CompareMovement(a){return this._movement===a},ComparePeriod(a,b){return C3.compare(this._period,a,b)},CompareMagnitude(a,b){return 5===this._movement?C3.compare(this._mag,a,C3.toRadians(b)):C3.compare(this._mag,a,b)},CompareWave(a){return this._wave===a}}; + +"use strict";C3.Behaviors.Sin.Acts={SetEnabled(a){this._SetEnabled(0!==a)},SetPeriod(a){this._period=a},SetMagnitude(a){this._mag=a,5===this._movement&&(this._mag=C3.toRadians(this._mag))},SetMovement(a){5===this._movement&&5!==a&&(this._mag=C3.toDegrees(this._mag)),this._movement=a,this.Init()},SetWave(a){this._wave=a},SetPhase(a){const b=2*Math.PI;this._i=a*b%b,this._UpdateFromPhase()},UpdateInitialState(){this.Init()}}; + +"use strict";C3.Behaviors.Sin.Exps={CyclePosition(){return this._i/(2*Math.PI)},Period(){return this._period},Magnitude(){return 5===this._movement?C3.toDegrees(this._mag):this._mag},Value(){return this.WaveFunc(this._i)*this._mag}}; + +"use strict";C3.Behaviors.jumpthru=class extends C3.SDKBehaviorBase{constructor(a){super(a)}Release(){super.Release()}}; + +"use strict";C3.Behaviors.jumpthru.Type=class extends C3.SDKBehaviorTypeBase{constructor(a){super(a)}Release(){super.Release()}OnCreate(){}}; + +"use strict";{C3.Behaviors.jumpthru.Instance=class extends C3.SDKBehaviorInstanceBase{constructor(a,b){super(a),this.SetEnabled(!0),b&&this.SetEnabled(b[0])}Release(){super.Release()}SetEnabled(a){this._inst.GetSavedDataMap().set("jumpthruEnabled",!!a)}IsEnabled(){return this._inst.GetSavedDataMap().get("jumpthruEnabled")}SaveToJson(){return{"e":this.IsEnabled()}}LoadFromJson(a){this.SetEnabled(a["e"])}GetPropertyValueByIndex(a){return a===0?this.IsEnabled():void 0}SetPropertyValueByIndex(a,b){a===0?this.SetEnabled(b):void 0}GetDebuggerProperties(){return[{title:"$"+this.GetBehaviorType().GetName(),properties:[{name:"behaviors.jumpthru.properties.enabled.name",value:this.IsEnabled(),onedit:(a)=>this.SetEnabled(a)}]}]}}} + +"use strict";C3.Behaviors.jumpthru.Cnds={IsEnabled(){return this.IsEnabled()}}; + +"use strict";C3.Behaviors.jumpthru.Acts={SetEnabled(a){this.SetEnabled(a)}}; + +"use strict";C3.Behaviors.jumpthru.Exps={}; + +"use strict" +self.C3_GetObjectRefTable = function () { + return [ + C3.Plugins.TiledBg, + C3.Plugins.Sprite, + C3.Behaviors.Platform, + C3.Behaviors.scrollto, + C3.Behaviors.solid, + C3.Behaviors.Sin, + C3.Behaviors.jumpthru, + C3.Plugins.Keyboard, + C3.Plugins.Text, + C3.Plugins.Keyboard.Cnds.OnKey, + C3.Behaviors.Platform.Acts.FallThrough, + C3.Plugins.Keyboard.Cnds.IsKeyDown, + C3.Behaviors.Platform.Acts.SimulateControl, + C3.Plugins.Sprite.Acts.SetMirrored, + C3.Plugins.Sprite.Cnds.CompareY, + C3.Plugins.System.Exps.layoutheight, + C3.Plugins.System.Acts.RestartLayout + ]; +}; + +"use strict"; + +{ + function unaryminus(n) + { + return (typeof n === "number" ? -n : n); + } + + function bothNumbers(a, b) + { + return typeof a === "number" && typeof b === "number"; + } + + function add(l, r) + { + if (bothNumbers(l, r)) + return l + r; + else + return l; + } + + function subtract(l, r) + { + if (bothNumbers(l, r)) + return l - r; + else + return l; + } + + function multiply(l, r) + { + if (bothNumbers(l, r)) + return l * r; + else + return l; + } + + function divide(l, r) + { + if (bothNumbers(l, r)) + return l / r; + else + return l; + } + + function mod(l, r) + { + if (bothNumbers(l, r)) + return l % r; + else + return l; + } + + function pow(l, r) + { + if (bothNumbers(l, r)) + return Math.pow(l, r); + else + return l; + } + + function and(l, r) + { + if (typeof l === "string" || typeof r === "string") + { + // & with either side string does string concatenation + let lstr, rstr; + + if (typeof l === "number") + lstr = (Math.round(l * 1e10) / 1e10).toString(); + else + lstr = l; + + if (typeof r === "number") + rstr = (Math.round(r * 1e10) / 1e10).toString(); + else + rstr = r; + + return lstr + rstr; + } + else + { + // & with neither side a string does logical AND + return (l && r ? 1 : 0); + } + } + + function or(l, r) + { + if (bothNumbers(l, r)) + return (l || r ? 1 : 0); + else + return l; + } + + self.C3_ExpressionFuncs = [ + p => { +const f0 = p._GetNode(0).GetBoundMethod(); +return () => f0(); +} + ]; +} + + diff --git a/Platformer template/scripts/dispatchWorker.js b/Platformer template/scripts/dispatchWorker.js new file mode 100755 index 0000000..8f92f7b --- /dev/null +++ b/Platformer template/scripts/dispatchWorker.js @@ -0,0 +1 @@ +"use strict";self.inputPort=null,self.jobQueue=[],self.jobWorkers=[],self.sentBlobs=[],self.sentBuffers=[],self.importedScripts=[],self.lastBroadcasts=new Map;class JobWorker{constructor(a,b){this._port=a,this._number=b,this._isReady=!1,this._isBusy=!1,this._port.onmessage=(a)=>this._OnMessage(a.data)}ImportScripts(a){this._port.postMessage({"type":"_import_scripts","scripts":a})}SendBlob(a,b){this._port.postMessage({"type":"_send_blob","blob":a,"id":b})}SendBuffer(a,b){this._port.postMessage({"type":"_send_buffer","buffer":a,"id":b})}SendJob(a){if(this._isBusy||!this._isReady)throw new Error("cannot take job");this._isBusy=!0,this._port.postMessage(a,a["transferables"])}_InitBroadcast(a){this._port.postMessage(a,a["transferables"])}SendReady(){this._port.postMessage({"type":"_ready"})}IsReady(){return this._isReady}_OnReady(){this._isReady=!0,this.MaybeStartNextJob()}IsBusy(){return this._isBusy}GetNumber(){return this._number}_OnMessage(a){const b=a["type"];return"ready"===b?void this._OnReady():"done"===b?void this._OnJobDone():void console.error("unknown message from worker '"+b+"'")}_OnJobDone(){this._isBusy=!1,this.MaybeStartNextJob()}MaybeStartNextJob(){if(!this._isBusy&&this._isReady){const a=this._FindAvailableJob();if(-1!==a){const b=self.jobQueue[a],c=b["isBroadcast"];c?(b["doneFlags"][this._number]=!0,b["doneFlags"].every((a)=>a)&&self.jobQueue.splice(a,1)):self.jobQueue.splice(a,1),this.SendJob(b)}}}_FindAvailableJob(){for(let a=0,b=self.jobQueue.length;a{const b=a.data,c=b["type"];"_init"===c?(self.inputPort=b["in-port"],self.inputPort.onmessage=OnInputPortMessage):"_addJobWorker"===c&&AddJobWorker(b["port"])});function OnInputPortMessage(a){const b=a.data,c=b["type"];if("_cancel"===c)return void CancelJob(b.jobId);if("_import_scripts"===c){const a=b["scripts"];for(const b of self.jobWorkers)b.ImportScripts(a);return void self.importedScripts.push(a)}if("_send_blob"===c){const a=b["blob"],c=b["id"];for(const b of self.jobWorkers)b.SendBlob(a,c);return void self.sentBlobs.push([a,c])}if("_send_buffer"===c){const a=b["buffer"],c=b["id"];for(const b of self.jobWorkers)b.SendBuffer(a,c);return void self.sentBuffers.push([a,c])}if("_no_more_workers"===c)return self.sentBlobs.length=0,self.sentBuffers.length=0,self.importedScripts.length=0,void self.lastBroadcasts.clear();if("_testMessageChannel"===c)return void self.jobWorkers[0].TestMessageChannel();self.jobQueue.push(b),b["isBroadcast"]&&(b["doneFlags"]=Array(self.jobWorkers.length).fill(!1),b["transferables"]=[],self.lastBroadcasts.set(b["type"],b));for(const b of self.jobWorkers)b.MaybeStartNextJob()} \ No newline at end of file diff --git a/Platformer template/scripts/jobWorker.js b/Platformer template/scripts/jobWorker.js new file mode 100755 index 0000000..936a7ef --- /dev/null +++ b/Platformer template/scripts/jobWorker.js @@ -0,0 +1 @@ +"use strict";self.dispatchPort=null,self.outputPort=null,self.workerNumber=-1,self.activeJobId=null,self.sentBlobs=new Map,self.sentBuffers=new Map,self.JobHandlers={};function FlipImageData(a,b,c){const d=4*b,e=new Uint8Array(d),f=a.buffer;for(let g=0,h=Math.floor(c/2);g{const b=a.data,c=b["type"];return"init"===c?(self.workerNumber=b["number"],self.dispatchPort=b["dispatch-port"],self.dispatchPort.onmessage=OnDispatchWorkerMessage,void(self.outputPort=b["output-port"])):"terminate"===c?void self.close():void console.error("unknown message '"+c+"'")});function SendReady(){self.dispatchPort.postMessage({"type":"ready"}),self.outputPort.postMessage({"type":"ready"})}function SendError(a,b){a||self.outputPort.postMessage({"type":"error","jobId":self.activeJobId,"error":b.toString()}),SendDone()}function SendResult(a,b){if(!a){const a=b.transferables||[];self.outputPort.postMessage({"type":"result","jobId":self.activeJobId,"result":b.result},a)}SendDone()}function SendDone(){self.activeJobId=null,self.dispatchPort.postMessage({"type":"done"})}function SendProgress(a){self.outputPort.postMessage({"type":"progress","jobId":self.activeJobId,"progress":a})}function OnDispatchWorkerMessage(a){const b=a.data,c=b["type"];if("_import_scripts"===c)return void importScripts(...b["scripts"]);if("_send_blob"===c)return void self.sentBlobs.set(b["id"],b["blob"]);if("_send_buffer"===c)return void self.sentBuffers.set(b["id"],b["buffer"]);if("_testMessageChannel"===c)return void self.outputPort.postMessage({"type":"_testMessageChannelOk"});if("_ready"===c)return void SendReady();const d=b["jobId"],f=b["isBroadcast"],e=b["params"];let g;if(self.activeJobId=d,!self.JobHandlers.hasOwnProperty(c))return void console.error(`no handler for message type '${c}'`);try{g=self.JobHandlers[c](e)}catch(a){return void SendError(f,"Exception in job handler: "+a)}g&&g.then?g.then((a)=>SendResult(f,a)).catch((a)=>SendError(f,"Rejection in job handler: "+a)):SendResult(f,g)} \ No newline at end of file diff --git a/Platformer template/scripts/main.js b/Platformer template/scripts/main.js new file mode 100755 index 0000000..91e476a --- /dev/null +++ b/Platformer template/scripts/main.js @@ -0,0 +1,11 @@ +"use strict";window.DOMHandler=class{constructor(a,b){this._iRuntime=a,this._componentId=b,this._hasTickCallback=!1,this._tickCallback=()=>this.Tick()}Attach(){}PostToRuntime(a,b,c,d){this._iRuntime.PostToRuntimeComponent(this._componentId,a,b,!!c,d)}PostToRuntimeAsync(a,b,c,d){return this._iRuntime.PostToRuntimeComponentAsync(this._componentId,a,b,!!c,d)}_PostToRuntimeMaybeSync(a,b,c){this._iRuntime.UsesWorker()?this.PostToRuntime(a,b,c):this._iRuntime._GetLocalRuntime()["_OnMessageFromDOM"]({"type":"event","component":this._componentId,"handler":a,"dispatchRuntimeEvent":c,"data":b,"responseId":null})}AddRuntimeMessageHandler(a,b){this._iRuntime.AddRuntimeComponentMessageHandler(this._componentId,a,b)}AddRuntimeMessageHandlers(a){for(const[b,c]of a)this.AddRuntimeMessageHandler(b,c)}GetRuntimeInterface(){return this._iRuntime}GetComponentID(){return this._componentId}_StartTicking(){this._hasTickCallback||(this._iRuntime._AddRAFCallback(this._tickCallback),this._hasTickCallback=!0)}_StopTicking(){this._hasTickCallback&&(this._iRuntime._RemoveRAFCallback(this._tickCallback),this._hasTickCallback=!1)}Tick(){}}; + +"use strict";window.DOMElementHandler=class extends DOMHandler{constructor(a,b){super(a,b),this._elementMap=new Map,this._autoAttach=!0,this.AddRuntimeMessageHandler("create",(a)=>this._OnCreate(a)),this.AddRuntimeMessageHandler("destroy",(a)=>this._OnDestroy(a)),this.AddRuntimeMessageHandler("set-visible",(a)=>this._OnSetVisible(a)),this.AddRuntimeMessageHandler("update-position",(a)=>this._OnUpdatePosition(a)),this.AddRuntimeMessageHandler("update-state",(a)=>this._OnUpdateState(a)),this.AddRuntimeMessageHandler("focus",(a)=>this._OnSetFocus(a)),this.AddRuntimeMessageHandler("set-css-style",(a)=>this._OnSetCssStyle(a))}SetAutoAttach(a){this._autoAttach=!!a}AddDOMElementMessageHandler(a,b){this.AddRuntimeMessageHandler(a,(a)=>{const c=a["elementId"],d=this._elementMap.get(c);return b(d,a)})}_OnCreate(a){const b=a["elementId"],c=this.CreateElement(b,a);this._elementMap.set(b,c),this._autoAttach&&document.body.appendChild(c)}CreateElement(){throw new Error("required override")}DestroyElement(){}_OnDestroy(a){const b=a["elementId"],c=this._elementMap.get(b);this.DestroyElement(c),this._autoAttach&&c.parentElement.removeChild(c),this._elementMap.delete(b)}PostToRuntimeElement(a,b,c){c||(c={}),c["elementId"]=b,this.PostToRuntime(a,c)}_PostToRuntimeElementMaybeSync(a,b,c){c||(c={}),c["elementId"]=b,this._PostToRuntimeMaybeSync(a,c)}_OnSetVisible(a){if(this._autoAttach){const b=this._elementMap.get(a["elementId"]);b.style.display=a["isVisible"]?"":"none"}}_OnUpdatePosition(a){if(this._autoAttach){const b=this._elementMap.get(a["elementId"]);b.style.left=a["left"]+"px",b.style.top=a["top"]+"px",b.style.width=a["width"]+"px",b.style.height=a["height"]+"px";const c=a["fontSize"];null!==c&&(b.style.fontSize=c+"em")}}_OnUpdateState(a){const b=this._elementMap.get(a["elementId"]);this.UpdateState(b,a)}UpdateState(){throw new Error("required override")}_OnSetFocus(a){const b=this._elementMap.get(a["elementId"]);a["focus"]?b.focus():b.blur()}_OnSetCssStyle(a){const b=this._elementMap.get(a["elementId"]);b.style[a["prop"]]=a["val"]}GetElementById(a){return this._elementMap.get(a)}}; + +"use strict";{function a(a){return new Promise((b,c)=>{const d=document.createElement("script");d.onload=b,d.onerror=c,d.async=!1,d.src=a,document.head.appendChild(d)})}function b(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=(a)=>b(a.target.result),d.onerror=(a)=>c(a),d.readAsText(a)})}function c(a){return new Promise((b,c)=>{const d=new FileReader;d.onload=(a)=>b(a.target.result),d.onerror=(a)=>c(a),d.readAsArrayBuffer(a)})}function d(a){if(!a)return"";const b=a.split(".");if(2>b.length)return"";const c=b[b.length-1].toLowerCase();return k.get(c)||""}const e=/(iphone|ipod|ipad)/i.test(navigator.userAgent);let f=new Audio;const g={"audio/webm; codecs=opus":!!f.canPlayType("audio/webm; codecs=opus"),"audio/ogg; codecs=opus":!!f.canPlayType("audio/ogg; codecs=opus"),"audio/webm; codecs=vorbis":!!f.canPlayType("audio/webm; codecs=vorbis"),"audio/ogg; codecs=vorbis":!!f.canPlayType("audio/ogg; codecs=vorbis"),"audio/mp4":!!f.canPlayType("audio/mp4"),"audio/mpeg":!!f.canPlayType("audio/mpeg")};f=null;const h=[];let i=0;const j=Math.max(navigator.hardwareConcurrency||0,8),k=new Map([["mp4","video/mp4"],["webm","video/webm"],["m4a","audio/mp4"],["mp3","audio/mpeg"],["js","application/javascript"],["wasm","application/wasm"]]),l=[],m=new Map,n=new Map;let o=0;window.RuntimeInterface=class f{constructor(a){this._useWorker=a.useWorker,this._messageChannelPort=null,this._baseUrl="",this._workerScriptBlobURLs={},this._worker=null,this._localRuntime=null,this._domHandlers=[],this._runtimeDomHandler=null,this._canvas=null,this._jobScheduler=null,this._rafId=-1,this._rafFunc=()=>this._OnRAFCallback(),this._rafCallbacks=[],this._exportType=a.exportType,this._transferablesBroken=!1,"html5"===this._exportType&&"file"===location.protocol.substr(0,4)&&alert("Exported games won't work until you upload them. (When running on the file: protocol, browsers block many features from working for security reasons.)"),this.AddRuntimeComponentMessageHandler("runtime","cordova-fetch-local-file",(a)=>this._OnCordovaFetchLocalFile(a)),this.AddRuntimeComponentMessageHandler("runtime","create-job-worker",(a)=>this._OnCreateJobWorker(a)),"cordova"===this._exportType?document.addEventListener("deviceready",()=>this._Init(a)):this._Init(a)}Release(){this._CancelAnimationFrame(),this._messageChannelPort&&(this._messageChannelPort.onmessage=null,this._messageChannelPort=null),this._worker&&(this._worker.terminate(),this._worker=null),this._localRuntime&&(this._localRuntime.Release(),this._localRuntime=null),this._canvas&&(this._canvas.parentElement.removeChild(this._canvas),this._canvas=null)}GetCanvas(){return this._canvas}GetBaseURL(){return this._baseUrl}UsesWorker(){return this._useWorker}GetExportType(){return this._exportType}IsWKWebView(){return"cordova"===this._exportType&&e}IsiPhoneX(){if(!this.IsWKWebView())return!1;const a=window["devicePixelRatio"],b=window["screen"]["width"]*a,c=window["screen"]["height"]*a;return 1125==b&&2436==c}async _Init(a){if(a.baseUrl)this._baseUrl=a.baseUrl;else{this._baseUrl=location.origin+location.pathname;const a=this._baseUrl.lastIndexOf("/");-1!==a&&(this._baseUrl=this._baseUrl.substr(0,a+1))}if(a.workerScripts)for(const[b,c]of Object.entries(a.workerScripts))this._workerScriptBlobURLs[b]=URL.createObjectURL(c);const b=new MessageChannel;this._messageChannelPort=b.port1,this._messageChannelPort.onmessage=(a)=>this["_OnMessageFromRuntime"](a.data),window["c3_addPortMessageHandler"]&&window["c3_addPortMessageHandler"]((a)=>this._OnMessageFromDebugger(a)),this._jobScheduler=new self.JobSchedulerDOM(this),await this._jobScheduler.Init(),this.MaybeForceBodySize(),"object"==typeof window["StatusBar"]&&window["StatusBar"]["hide"](),await this._TestTransferablesWork(),this._useWorker?await this._InitWorker(a,b.port2):await this._InitDOM(a,b.port2)}_GetWorkerURL(a){return this._workerScriptBlobURLs.hasOwnProperty(a)?this._workerScriptBlobURLs[a]:a}async CreateWorker(a,b,c){if(a.startsWith("blob:"))return new Worker(a,c);if(this.IsWKWebView()){const b=await this.CordovaFetchLocalFileAsBlob("scripts/"+a);return new Worker(URL.createObjectURL(b),c)}const d=new URL(a,b),e=location.origin!==d.origin;if(e){const a=await fetch(d);if(!a.ok)throw new Error("failed to fetch worker script");const b=await a.blob();return new Worker(URL.createObjectURL(b),c)}return new Worker(d,c)}MaybeForceBodySize(){if(this.IsiPhoneX()){const a=window.innerWidth>window.innerHeight,b=document["documentElement"].style,c=document["body"].style;a?(c["height"]=b["height"]="375px",c["width"]=b["width"]="812px"):(c["width"]=b["width"]="375px",c["height"]=b["height"]="812px")}}_GetCommonRuntimeOptions(a){return{"baseUrl":this._baseUrl,"windowInnerWidth":window.innerWidth,"windowInnerHeight":window.innerHeight,"devicePixelRatio":window.devicePixelRatio,"isFullscreen":f.IsDocumentFullscreen(),"projectData":a.projectData,"previewImageBlobs":window["cr_previewImageBlobs"],"previewProjectFileBlobs":window["cr_previewProjectFileBlobs"],"shaders":self["C3_Shaders"],"exportType":a.exportType,"isDebug":-1new a(this)),this._FindRuntimeDOMHandler()}async _InitDOM(b,c){this._canvas=document.createElement("canvas"),this._canvas.style.display="none",document.body.appendChild(this._canvas),this._domHandlers=l.map((a)=>new a(this)),this._FindRuntimeDOMHandler();const d=b.engineScripts.map((a)=>new URL(a,this._baseUrl).toString());await Promise.all(d.map((b)=>a(b)));const e=Object.assign(this._GetCommonRuntimeOptions(b),{"isInWorker":!1,"messagePort":c,"canvas":this._canvas});this._localRuntime=self["C3_CreateRuntime"](e),await self["C3_InitRuntime"](this._localRuntime,e)}async _OnCreateJobWorker(){const a=await this._jobScheduler._CreateJobWorker();return{"outputPort":a,"transferables":[a]}}_GetLocalRuntime(){if(this._useWorker)throw new Error("not available in worker mode");return this._localRuntime}PostToRuntimeComponent(a,b,c,d,e){this._messageChannelPort.postMessage({"type":"event","component":a,"handler":b,"dispatchRuntimeEvent":d,"data":c,"responseId":null},this._transferablesBroken?void 0:e)}PostToRuntimeComponentAsync(a,b,c,d,e){const f=o++,g=new Promise((a,b)=>{n.set(f,{resolve:a,reject:b})});return this._messageChannelPort.postMessage({"type":"event","component":a,"handler":b,"dispatchRuntimeEvent":d,"data":c,"responseId":f},this._transferablesBroken?void 0:e),g}["_OnMessageFromRuntime"](a){const b=a["type"];if("event"===b)this._OnEventFromRuntime(a);else if("result"===b)this._OnResultFromRuntime(a);else if("runtime-ready"===b)this._OnRuntimeReady();else throw new Error(`unknown message '${b}'`)}_OnEventFromRuntime(a){const b=a["component"],c=a["handler"],d=a["data"],e=a["responseId"],f=m.get(b);if(!f)return void console.warn(`[DOM] No event handlers for component '${b}'`);const g=f.get(c);if(!g)return void console.warn(`[DOM] No handler '${c}' for component '${b}'`);let h=null;try{h=g(d)}catch(a){return console.error(`Exception in '${b}' handler '${c}':`,a),void(null!==e&&this._PostResultToRuntime(e,!1,a.toString()))}null!==e&&(h&&h.then?h.then((a)=>this._PostResultToRuntime(e,!0,a)).catch((a)=>{console.error(`Rejection from '${b}' handler '${c}':`,a),this._PostResultToRuntime(e,!1,a.toString())}):this._PostResultToRuntime(e,!0,h))}_PostResultToRuntime(a,b,c){let d;c&&c["transferables"]&&(d=c["transferables"]),this._messageChannelPort.postMessage({"type":"result","responseId":a,"isOk":b,"result":c},d)}_OnResultFromRuntime(a){const b=a["responseId"],c=a["isOk"],d=a["result"],e=n.get(b);c?e.resolve(d):e.reject(d),n.delete(b)}AddRuntimeComponentMessageHandler(a,b,c){let d=m.get(a);if(d||(d=new Map,m.set(a,d)),d.has(b))throw new Error(`[DOM] Component '${a}' already has handler '${b}'`);d.set(b,c)}static AddDOMHandlerClass(a){if(l.includes(a))throw new Error("DOM handler already added");l.push(a)}_FindRuntimeDOMHandler(){for(const a of this._domHandlers)if("runtime"===a.GetComponentID())return void(this._runtimeDomHandler=a);throw new Error("cannot find runtime DOM handler")}_OnMessageFromDebugger(a){this.PostToRuntimeComponent("debugger","message",a)}_OnRuntimeReady(){for(const a of this._domHandlers)a.Attach()}static IsDocumentFullscreen(){return!!(document["fullscreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"])}_AddRAFCallback(a){this._rafCallbacks.push(a),this._RequestAnimationFrame()}_RemoveRAFCallback(a){const b=this._rafCallbacks.indexOf(a);if(-1===b)throw new Error("invalid callback");this._rafCallbacks.splice(b,1),this._rafCallbacks.length||this._CancelAnimationFrame()}_RequestAnimationFrame(){-1===this._rafId&&this._rafCallbacks.length&&(this._rafId=requestAnimationFrame(this._rafFunc))}_CancelAnimationFrame(){-1!==this._rafId&&(cancelAnimationFrame(this._rafId),this._rafId=-1)}_OnRAFCallback(){this._rafId=-1;for(const a of this._rafCallbacks)a();this._RequestAnimationFrame()}TryPlayMedia(a){this._runtimeDomHandler.TryPlayMedia(a)}RemovePendingPlay(a){this._runtimeDomHandler.RemovePendingPlay(a)}_PlayPendingMedia(){this._runtimeDomHandler._PlayPendingMedia()}SetSilent(a){this._runtimeDomHandler.SetSilent(a)}IsAudioFormatSupported(a){return!!g[a]}async _WasmDecodeWebMOpus(a){const b=await this.PostToRuntimeComponentAsync("runtime","opus-decode",{"arrayBuffer":a},!1,[a]);return new Float32Array(b)}IsAbsoluteURL(a){return /^(?:[a-z]+:)?\/\//.test(a)||"data:"===a.substr(0,5)||"blob:"===a.substr(0,5)}IsRelativeURL(a){return!this.IsAbsoluteURL(a)}async _OnCordovaFetchLocalFile(a){const b=a["filename"];switch(a["as"]){case"text":return await this.CordovaFetchLocalFileAsText(b);case"blob":return await this.CordovaFetchLocalFileAsBlob(b);case"blob-url":return await this.CordovaFetchLocalFileAsURL(b);case"buffer":return await this.CordovaFetchLocalFileAsArrayBuffer(b);default:throw new Error("unsupported type");}}CordovaFetchLocalFile(a){const b=window["cordova"]["file"]["applicationDirectory"]+"www/"+a;return new Promise((a,c)=>{window["resolveLocalFileSystemURL"](b,(b)=>{b["file"](a,c)},c)})}async CordovaFetchLocalFileAsText(a){const c=await this.CordovaFetchLocalFile(a);return await b(c)}_CordovaMaybeStartNextArrayBufferRead(){if(h.length&&!(i>=j)){i++;const a=h.shift();this._CordovaDoFetchLocalFileAsAsArrayBuffer(a.filename,a.successCallback,a.errorCallback)}}CordovaFetchLocalFileAsArrayBuffer(a){return new Promise((b,c)=>{h.push({filename:a,successCallback:(a)=>{i--,this._CordovaMaybeStartNextArrayBufferRead(),b(a)},errorCallback:(a)=>{i--,this._CordovaMaybeStartNextArrayBufferRead(),c(a)}}),this._CordovaMaybeStartNextArrayBufferRead()})}async _CordovaDoFetchLocalFileAsAsArrayBuffer(a,b,d){try{const d=await this.CordovaFetchLocalFile(a),e=await c(d);b(e)}catch(a){d(a)}}async CordovaFetchLocalFileAsBlob(a,b){b||(b=d(a));const c=await this.CordovaFetchLocalFileAsArrayBuffer(a);return new Blob([c],{type:b})}async CordovaFetchLocalFileAsURL(a){const b=await this.CordovaFetchLocalFileAsBlob(a);return URL.createObjectURL(b)}_TestTransferablesWork(){let a=null;const b=new Promise((b)=>a=b),c=new ArrayBuffer(1),d=new MessageChannel;return d.port2.onmessage=(b)=>{b.data&&b.data["arrayBuffer"]||(this._transferablesBroken=!0,console.warn("MessageChannel transfers determined to be broken. Disabling transferables.")),a()},d.port1.postMessage({"arrayBuffer":c},[c]),b}}} + +"use strict";{function a(a){return a["sourceCapabilities"]&&a["sourceCapabilities"]["firesTouchEvents"]||a["originalEvent"]&&a["originalEvent"]["sourceCapabilities"]&&a["originalEvent"]["sourceCapabilities"]["firesTouchEvents"]}function b(a){return new Promise((b,c)=>{const d=new Image;d.onload=()=>b(d),d.onerror=(a)=>c(a),d.src=a})}async function c(a){const c=URL.createObjectURL(a);try{return await b(c)}finally{URL.revokeObjectURL(c)}}function d(){return window.parent&&window.parent.document.hasFocus()}self["C3_RasterSvgImage"]=async function(a,b,c){const d=document.createElement("canvas");d.width=b,d.height=c;const e=d.getContext("2d");return e.drawImage(a,0,0,b,c),d};let e=!1;document.addEventListener("pause",()=>e=!0),document.addEventListener("resume",()=>e=!1);const f=class extends DOMHandler{constructor(a){super(a,"runtime"),this._isFirstSizeUpdate=!0,this._targetOrientation="any",this._debugHighlightElem=null,a.AddRuntimeComponentMessageHandler("canvas","update-size",(a)=>this._OnUpdateCanvasSize(a)),a.AddRuntimeComponentMessageHandler("runtime","invoke-download",(a)=>this._OnInvokeDownload(a)),a.AddRuntimeComponentMessageHandler("runtime","raster-svg-image",(a)=>this._OnRasterSvgImage(a)),a.AddRuntimeComponentMessageHandler("runtime","set-target-orientation",(a)=>this._OnSetTargetOrientation(a)),a.AddRuntimeComponentMessageHandler("runtime","register-sw",()=>this._OnRegisterSW()),a.AddRuntimeComponentMessageHandler("runtime","post-to-debugger",(a)=>this._OnPostToDebugger(a)),a.AddRuntimeComponentMessageHandler("runtime","before-start-ticking",()=>this._OnBeforeStartTicking()),a.AddRuntimeComponentMessageHandler("runtime","debug-highlight",(a)=>this._OnDebugHighlight(a));const b=a.GetCanvas();b.addEventListener("contextmenu",(a)=>a.preventDefault()),b.addEventListener("selectstart",(a)=>a.preventDefault()),b.addEventListener("gesturehold",(a)=>a.preventDefault()),b.addEventListener("touchstart",(a)=>a.preventDefault()),window.addEventListener("mousedown",(a)=>{1===a.button&&a.preventDefault()}),window.addEventListener("resize",()=>this._OnWindowResize()),this._mediaPendingPlay=new Set,this._mediaRemovedPendingPlay=new WeakSet,this._isSilent=!1}_OnBeforeStartTicking(){return window.addEventListener("visibilitychange",()=>this._OnVisibilityChange(document.hidden)),document.addEventListener("pause",()=>this._OnVisibilityChange(!0)),document.addEventListener("resume",()=>this._OnVisibilityChange(!1)),{"isSuspended":!!(document.hidden||e)}}Attach(){window.addEventListener("focus",()=>this._PostRuntimeEvent("window-focus")),window.addEventListener("blur",()=>this._PostRuntimeEvent("window-blur",{"parentHasFocus":d()})),window.addEventListener("fullscreenchange",()=>this._OnFullscreenChange()),window.addEventListener("webkitfullscreenchange",()=>this._OnFullscreenChange()),window.addEventListener("mozfullscreenchange",()=>this._OnFullscreenChange()),window.addEventListener("fullscreenerror",(a)=>this._OnFullscreenError(a)),window.addEventListener("webkitfullscreenerror",(a)=>this._OnFullscreenError(a)),window.addEventListener("mozfullscreenerror",(a)=>this._OnFullscreenError(a)),window.addEventListener("keydown",(a)=>this._OnKeyEvent("keydown",a)),window.addEventListener("keyup",(a)=>this._OnKeyEvent("keyup",a)),window.addEventListener("mousemove",(a)=>this._OnMouseEvent("mousemove",a)),window.addEventListener("mousedown",(a)=>this._OnMouseEvent("mousedown",a)),window.addEventListener("mouseup",(a)=>this._OnMouseEvent("mouseup",a)),window.addEventListener("dblclick",(a)=>this._OnMouseEvent("dblclick",a)),window.addEventListener("wheel",(a)=>this._OnMouseWheelEvent("wheel",a)),"undefined"==typeof PointerEvent?(window.addEventListener("touchstart",(a)=>this._OnTouchEvent("pointerdown",a)),window.addEventListener("touchmove",(a)=>this._OnTouchEvent("pointermove",a)),window.addEventListener("touchend",(a)=>this._OnTouchEvent("pointerup",a)),window.addEventListener("touchcancel",(a)=>this._OnTouchEvent("pointercancel",a))):(window.addEventListener("pointerdown",(a)=>this._OnPointerEvent("pointerdown",a)),window.addEventListener("pointermove",(a)=>this._OnPointerEvent("pointermove",a)),window.addEventListener("pointerup",(a)=>this._OnPointerEvent("pointerup",a)),window.addEventListener("pointercancel",(a)=>this._OnPointerEvent("pointercancel",a))),window.addEventListener("deviceorientation",(a)=>this._OnDeviceOrientation(a)),window.addEventListener("devicemotion",(a)=>this._OnDeviceMotion(a));const a=()=>this._PlayPendingMedia();window.addEventListener("pointerup",a,!0),window.addEventListener("touchend",a,!0),window.addEventListener("click",a,!0),window.addEventListener("keydown",a,!0),window.addEventListener("gamepadconnected",a,!0)}_PostRuntimeEvent(a,b){this.PostToRuntime(a,b||null,!0)}_OnWindowResize(){this.PostToRuntime("window-resize",{"innerWidth":window.innerWidth,"innerHeight":window.innerHeight,"devicePixelRatio":window.devicePixelRatio},!0)}_OnSetTargetOrientation(a){this._targetOrientation=a["targetOrientation"]}_TrySetTargetOrientation(){const a=this._targetOrientation;if(screen["orientation"]&&screen["orientation"]["lock"])screen["orientation"]["lock"](a).catch((a)=>console.warn("[Construct 3] Failed to lock orientation: ",a));else try{let b=!1;screen["lockOrientation"]?b=screen["lockOrientation"](a):screen["webkitLockOrientation"]?b=screen["webkitLockOrientation"](a):screen["mozLockOrientation"]?b=screen["mozLockOrientation"](a):screen["msLockOrientation"]&&(b=screen["msLockOrientation"](a)),b||console.warn("[Construct 3] Failed to lock orientation")}catch(a){console.warn("[Construct 3] Failed to lock orientation: ",a)}}_OnFullscreenChange(){const a=RuntimeInterface.IsDocumentFullscreen();a&&"any"!==this._targetOrientation&&this._TrySetTargetOrientation(),this.PostToRuntime("fullscreenchange",{"isFullscreen":a,"innerWidth":window.innerWidth,"innerHeight":window.innerHeight})}_OnFullscreenError(a){console.warn("[Construct 3] Fullscreen request failed: ",a),this.PostToRuntime("fullscreenerror",{"isFullscreen":RuntimeInterface.IsDocumentFullscreen(),"innerWidth":window.innerWidth,"innerHeight":window.innerHeight})}_OnVisibilityChange(a){a?this._iRuntime._CancelAnimationFrame():this._iRuntime._RequestAnimationFrame(),this.PostToRuntime("visibilitychange",{"hidden":a})}_OnKeyEvent(a,b){this._PostToRuntimeMaybeSync(a,{"code":b.code,"key":b.key,"which":b.which,"repeat":b.repeat,"altKey":b.altKey,"ctrlKey":b.ctrlKey,"metaKey":b.metaKey,"shiftKey":b.shiftKey,"timeStamp":b.timeStamp},!0)}_OnMouseEvent(b,c){a(c)||("mousedown"===b&&window!==window.top&&window.focus(),this._PostToRuntimeMaybeSync(b,{"button":c.button,"clientX":c.clientX,"clientY":c.clientY,"timeStamp":c.timeStamp},!0))}_OnMouseWheelEvent(a,b){this.PostToRuntime(a,{"clientX":b.clientX,"clientY":b.clientY,"deltaX":b.deltaX,"deltaY":b.deltaY,"deltaZ":b.deltaZ,"deltaMode":b.deltaMode,"timeStamp":b.timeStamp},!0)}_OnPointerEvent(a,b){"pointerdown"===a&&window!==window.top&&window.focus(),this._PostToRuntimeMaybeSync(a,{"pointerId":b.pointerId,"pointerType":b.pointerType,"clientX":b.clientX,"clientY":b.clientY,"width":b.width||0,"height":b.height||0,"pressure":b.pressure||0,"tangentialPressure":b["tangentialPressure"]||0,"tiltX":b.tiltX||0,"tiltY":b.tiltY||0,"twist":b["twist"]||0,"timeStamp":b.timeStamp},!0)}_OnTouchEvent(a,b){"pointerdown"===a&&window!==window.top&&window.focus();for(let c=0,d=b.changedTouches.length;c{this._mediaRemovedPendingPlay.has(b)||this._mediaPendingPlay.add(b)})}}TryPlayMedia(a){if("function"!=typeof a.play)throw new Error("missing play function");this._mediaRemovedPendingPlay.delete(a);let b;try{b=a.play()}catch(b){return void this._mediaPendingPlay.add(a)}b&&b.catch(()=>{this._mediaRemovedPendingPlay.has(a)||this._mediaPendingPlay.add(a)})}RemovePendingPlay(a){this._mediaPendingPlay.delete(a),this._mediaRemovedPendingPlay.add(a)}SetSilent(a){this._isSilent=!!a}_OnDebugHighlight(a){const b=a["show"];if(!b)return void(this._debugHighlightElem&&(this._debugHighlightElem.style.display="none"));this._debugHighlightElem||(this._debugHighlightElem=document.createElement("div"),this._debugHighlightElem.id="inspectOutline",document.body.appendChild(this._debugHighlightElem));const c=this._debugHighlightElem;c.style.display="",c.style.left=a["left"]-1+"px",c.style.top=a["top"]-1+"px",c.style.width=a["width"]+2+"px",c.style.height=a["height"]+2+"px",c.textContent=a["name"]}_OnRegisterSW(){window["C3_RegisterSW"]&&window["C3_RegisterSW"]()}_OnPostToDebugger(a){window["c3_postToMessagePort"]&&(a["from"]="runtime",window["c3_postToMessagePort"](a))}};RuntimeInterface.AddDOMHandlerClass(f)} + +"use strict";{const a=document.currentScript.src;self.JobSchedulerDOM=class{constructor(b){this._runtimeInterface=b,this._baseUrl=a.substr(0,a.lastIndexOf("/")+1),this._maxNumWorkers=Math.min(navigator.hardwareConcurrency||2,16),this._dispatchWorker=null,this._jobWorkers=[],this._inputPort=null,this._outputPort=null}async Init(){if(this._hasInitialised)throw new Error("already initialised");this._hasInitialised=!0;const a=this._runtimeInterface._GetWorkerURL("dispatchWorker.js");this._dispatchWorker=await this._runtimeInterface.CreateWorker(a,this._baseUrl,{name:"DispatchWorker"});const b=new MessageChannel;this._inputPort=b.port1,this._dispatchWorker.postMessage({"type":"_init","in-port":b.port2},[b.port2]),this._outputPort=await this._CreateJobWorker()}async _CreateJobWorker(){const a=this._jobWorkers.length,b=this._runtimeInterface._GetWorkerURL("jobWorker.js"),c=await this._runtimeInterface.CreateWorker(b,this._baseUrl,{name:"JobWorker"+a}),d=new MessageChannel,e=new MessageChannel;return this._dispatchWorker.postMessage({"type":"_addJobWorker","port":d.port1},[d.port1]),c.postMessage({"type":"init","number":a,"dispatch-port":d.port2,"output-port":e.port2},[d.port2,e.port2]),this._jobWorkers.push(c),e.port1}GetPortData(){return{"inputPort":this._inputPort,"outputPort":this._outputPort,"maxNumWorkers":this._maxNumWorkers}}GetPortTransferables(){return[this._inputPort,this._outputPort]}}} + +"use strict";if(window["C3_IsSupported"]){const a=false,b="undefined"!=typeof OffscreenCanvas;window["c3_runtimeInterface"]=new RuntimeInterface({useWorker:a&&b,workerMainUrl:"workerMain.js",engineScripts:["scripts/c3runtime.js"],exportType:"html5"})} \ No newline at end of file diff --git a/Platformer template/scripts/offlineClient.js b/Platformer template/scripts/offlineClient.js new file mode 100755 index 0000000..d8c3274 --- /dev/null +++ b/Platformer template/scripts/offlineClient.js @@ -0,0 +1 @@ +"use strict";{window.OfflineClientInfo=new class{constructor(){if(this._broadcastChannel="undefined"==typeof BroadcastChannel?null:new BroadcastChannel("offline"),this._queuedMessages=[],this._onMessageCallback=null,this._broadcastChannel){var a=this;this._broadcastChannel.onmessage=function(b){a._OnBroadcastChannelMessage(b)}}}_OnBroadcastChannelMessage(a){return this._onMessageCallback?void this._onMessageCallback(a):void this._queuedMessages.push(a)}SetMessageCallback(a){this._onMessageCallback=a;for(let b of this._queuedMessages)this._onMessageCallback(b);this._queuedMessages.length=0}}} \ No newline at end of file diff --git a/Platformer template/scripts/register-sw.js b/Platformer template/scripts/register-sw.js new file mode 100755 index 0000000..aeb70f5 --- /dev/null +++ b/Platformer template/scripts/register-sw.js @@ -0,0 +1 @@ +"use strict";window.C3_RegisterSW=async function(){if(navigator.serviceWorker)try{const a=await navigator.serviceWorker.register("sw.js",{scope:"./"});console.info("Registered service worker on "+a.scope)}catch(a){console.warn("Failed to register service worker: ",a)}}; \ No newline at end of file diff --git a/Platformer template/scripts/supportCheck.js b/Platformer template/scripts/supportCheck.js new file mode 100755 index 0000000..0a3ae9d --- /dev/null +++ b/Platformer template/scripts/supportCheck.js @@ -0,0 +1 @@ +"use strict";(function(){var a=document.createElement("canvas"),b=!!(a.getContext("webgl")||a.getContext("experimental-webgl")),c=[];if(b||c.push("WebGL"),"undefined"==typeof WebAssembly&&c.push("WebAssembly"),0===c.length)window["C3_IsSupported"]=!0;else{var d=document.createElement("div");d.id="notSupportedWrap",document.body.appendChild(d);var e=document.createElement("h2");e.id="notSupportedTitle",e.textContent="Software update needed",d.appendChild(e);var f=document.createElement("p");f.id="notSupportedMessage";var g="This content is not supported because your device's software is out-of-date. Try installing any available software updates. Alternatively try on a different device.",h=navigator.userAgent;/android/i.test(h)?g+="

On Android, make sure the Android System Webview and Chrome apps have updates enabled and are up-to-date.":/iphone|ipad|ipod/i.test(h)&&(g+="

Note: the iOS simulator is not currently supported due to an
Apple bug. If you are using the simulator, try testing on a real device instead."),g+="

Missing features: "+c.join(", ")+"",f.innerHTML=g,d.appendChild(f)}})(); \ No newline at end of file diff --git a/Platformer template/style.css b/Platformer template/style.css new file mode 100755 index 0000000..4fd3df5 --- /dev/null +++ b/Platformer template/style.css @@ -0,0 +1,34 @@ +html, body { + padding: 0; + margin: 0; + overflow: hidden; + + background: #000000; + color: white; +} + +html, body, canvas { + touch-action: none; + touch-action-delay: none; +} + +#notSupportedWrap { + margin: 2em auto 1em auto; + width: 75%; + max-width: 45em; + border: 2px solid #aaa; + border-radius: 1em; + padding: 2em; + background-color: #f0f0f0; + font-family: "Segoe UI", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; + color: black; +} + +#notSupportedTitle { + font-size: 1.8em; +} + +#notSupportedMessage { + font-size: 1.2em; +} + diff --git a/Platformer template/sw.js b/Platformer template/sw.js new file mode 100755 index 0000000..4366997 --- /dev/null +++ b/Platformer template/sw.js @@ -0,0 +1 @@ +"use strict";const OFFLINE_DATA_FILE="offline.json",CACHE_NAME_PREFIX="c3offline",BROADCASTCHANNEL_NAME="offline",CONSOLE_PREFIX="[SW] ",LAZYLOAD_KEYNAME="",broadcastChannel="undefined"==typeof BroadcastChannel?null:new BroadcastChannel("offline");function PostBroadcastMessage(a){broadcastChannel&&setTimeout(()=>broadcastChannel.postMessage(a),3e3)}function Broadcast(a){PostBroadcastMessage({"type":a})}function BroadcastDownloadingUpdate(a){PostBroadcastMessage({"type":"downloading-update","version":a})}function BroadcastUpdateReady(a){PostBroadcastMessage({"type":"update-ready","version":a})}function IsUrlInLazyLoadList(a,b){if(!b)return!1;try{for(const c of b)if(new RegExp(c).test(a))return!0}catch(a){console.error("[SW] Error matching in lazy-load list: ",a)}return!1}function WriteLazyLoadListToStorage(a){return"undefined"==typeof localforage?Promise.resolve():localforage.setItem(LAZYLOAD_KEYNAME,a)}function ReadLazyLoadListFromStorage(){return"undefined"==typeof localforage?Promise.resolve([]):localforage.getItem(LAZYLOAD_KEYNAME)}function GetCacheBaseName(){return"c3offline-"+self.registration.scope}function GetCacheVersionName(a){return GetCacheBaseName()+"-v"+a}async function GetAvailableCacheNames(){const a=await caches.keys(),b=GetCacheBaseName();return a.filter((a)=>a.startsWith(b))}async function IsUpdatePending(){const a=await GetAvailableCacheNames();return 2<=a.length}async function GetMainPageUrl(){const a=await clients.matchAll({includeUncontrolled:!0,type:"window"});for(const b of a){let a=b.url;if(a.startsWith(self.registration.scope)&&(a=a.substring(self.registration.scope.length)),a&&"/"!==a)return a.startsWith("?")&&(a="/"+a),a}return""}function fetchWithBypass(a,b){return"string"==typeof a&&(a=new Request(a)),b?fetch(a.url,{headers:a.headers,mode:a.mode,credentials:a.credentials,redirect:a.redirect,cache:"no-store"}):fetch(a)}async function CreateCacheFromFileList(a,b,c){const d=await Promise.all(b.map((a)=>fetchWithBypass(a,c)));let e=!0;for(const f of d)f.ok||(e=!1,console.error("[SW] Error fetching '"+f.url+"' ("+f.status+" "+f.statusText+")"));if(!e)throw new Error("not all resources were fetched successfully");const f=await caches.open(a);try{return await Promise.all(d.map((a,c)=>f.put(b[c],a)))}catch(b){throw console.error("[SW] Error writing cache entries: ",b),caches.delete(a),b}}async function UpdateCheck(a){try{const b=await fetchWithBypass(OFFLINE_DATA_FILE,!0);if(!b.ok)throw new Error("offline.json responded with "+b.status+" "+b.statusText);const c=await b.json(),d=c.version,e=c.fileList,f=c.lazyLoad,g=GetCacheVersionName(d),h=await caches.has(g);if(h){const a=await IsUpdatePending();return void(a?(console.log("[SW] Update pending"),Broadcast("update-pending")):(console.log("[SW] Up to date"),Broadcast("up-to-date")))}const i=await GetMainPageUrl();e.unshift("./"),i&&-1===e.indexOf(i)&&e.unshift(i),console.log("[SW] Caching "+e.length+" files for offline use"),a?Broadcast("downloading"):BroadcastDownloadingUpdate(d),f&&(await WriteLazyLoadListToStorage(f)),await CreateCacheFromFileList(g,e,!a);const j=await IsUpdatePending();j?(console.log("[SW] All resources saved, update ready"),BroadcastUpdateReady(d)):(console.log("[SW] All resources saved, offline support ready"),Broadcast("offline-ready"))}catch(a){console.warn("[SW] Update check failed: ",a)}}self.addEventListener("install",(a)=>{a.waitUntil(UpdateCheck(!0).catch(()=>null))});async function GetCacheNameToUse(a,b){if(1===a.length||!b)return a[0];const c=await clients.matchAll();if(1caches.delete(a))),d}async function HandleFetch(a,b){const c=await GetAvailableCacheNames();if(!c.length)return fetch(a.request);const d=await GetCacheNameToUse(c,b),e=await caches.open(d),f=await e.match(a.request);if(f)return f;const g=await Promise.all([fetch(a.request),ReadLazyLoadListFromStorage()]),h=g[0],i=g[1];if(IsUrlInLazyLoadList(a.request.url,i))try{await e.put(a.request,h.clone())}catch(b){console.warn("[SW] Error caching '"+a.request.url+"': ",b)}return h}self.addEventListener("fetch",(a)=>{if(new URL(a.request.url).origin===location.origin){const b="navigate"===a.request.mode,c=HandleFetch(a,b);b&&a.waitUntil(c.then(()=>UpdateCheck(!1))),a.respondWith(c)}}); \ No newline at end of file